Цель состоит в том, чтобы отобразить человека на другом фоне (или удаление фона).
Я использую Kinect с Microsoft Beta Kinect SDK для этого. С помощью глубины фон фильтруется, и мы получаем только изображение человека.
Это довольно просто сделать, и мы можем найти код, который делает это везде в Интернете. Однако сигнал глубины зашумлен, и мы получаем пиксели, которые не принадлежат отображаемому человеку.
Я применил детектор краев, чтобы посмотреть, был ли он полезен, и в настоящее время я получаю это:
Вот еще одно без определения края:
Мой вопрос: каким образом я могу избавиться от этих шумных белых пикселей вокруг человека?
Я пробовал морфологические операции, но некоторые части тела стираются и все еще оставляют белые пиксели позади.
Алгоритм не должен быть в режиме реального времени, я могу просто применить его, когда нажимаю кнопку «Сохранить изображение».
Редактировать 1:
Я только что попытался сделать фоновое вычитание с ближайшими кадрами на границе фигуры. Одиночные пиксели, которые вы видите, мерцают, это означает, что это шум, и я могу легко избавиться от них.
Редактировать 2:
Проект завершен, и вот что мы сделали: ручная калибровка Kinect с помощью драйвера OpenNI, который обеспечивает прямое инфракрасное изображение. Результат действительно хороший, но каждая калибровка специфична для каждого Kinect.
Затем мы применили немного прозрачности к границам, и результат выглядит действительно хорошо! Однако я не могу предоставить фотографии.