Подтвердить что ты не робот

Удаление тени глубины Kinect

Недавно я начал взламывать свой Kinect, и я хочу удалить тень глубины. Тень вызвана тем, что ИК-излучатель расположен немного в стороне камеры, поэтому любой близкий объект получит большую тень и отдаленный объект меньше или не будет тени.

Длина тени связана с расстоянием между ближайшим и самым дальним местом на каждой стороне тени.

Моя цель - правильно отображать цветное изображение на глубину. Это не работает без обработки тени, как показано на рисунке:
введите описание изображения здесь

4b9b3361

Ответ 1

Метод Kinect - MapDepthFrametoColorFrame

Получить позиции [x,y] в кадре глубины и использовать этот метод для заполнения

Ответ 2

Является ли тень глубины всегда черной?

Если это так, вы можете использовать простой метод, такой как временная медиана для вычисления фона изображения (подробнее здесь: http://www.roborealm.com/help/Temporal_Median.php) а затем всякий раз, когда пиксель черный, установите его в фоновое значение в этом месте пикселя.

Ответ 3

Несколько недель назад я сделал предварительную работу над этой проблемой. Мой код работает непосредственно с WriteableBitmap, а не с данными глубины, но если вы только занимаетесь обработкой изображений, он должен работать. Алгоритм не идеален и принесет пользу с некоторой дополнительной настройкой. Если вы вообще обновите код, дайте мне знать; Мне было бы очень интересно посмотреть, что вы делаете!

Исходный код размещен в моем блоге:

http://richardpianka.com/2011/02/trackingni-depth-correction/

Ответ 4

Я не знаю, как это происходит с С#, но openni С++ имеет функцию xnSetViewPoint(), единственной проблемой является то, что вы теряете первые 20 строк из imagedata из-за преобразования.

причина связана с использованием двух разных датчиков, которые расположены рядом друг с другом, но не точно в одном и том же положении.

Ответ 5

Прошу прощения, но эта тень вызвана тем, что ваше тело блокирует намеченные точки от попадания в это место комнаты, чтобы создать черное пятно. Ничего нельзя сделать, но изменить базовый фон на другой цвет кроме черного, поэтому это не будет заметной тень.

Ответ 6

Цветная камера и камера глубины kinect не имеют одинаковых размеров, а происхождение инфракрасных точек - не от одного и того же кулачка, его ИК-проектор на несколько см от него (поскольку это смещение используется для расчета глубины).

Однако решение швов легко здесь, теневые данные находятся на левой стороне. поэтому вам нужно продлить последние известные цветовые данные до того, как они станут черными.

И чтобы лучше поместить его, переведите данные цветовой камеры вправо.