Удалить тень глубины Kinect - PullRequest
27 голосов
/ 31 января 2011

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

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

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

Ответы [ 6 ]

3 голосов
/ 27 февраля 2011

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

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

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

3 голосов
/ 04 февраля 2011

Всегда ли тень глубины получается чёрной?

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

2 голосов
/ 23 февраля 2011

Я не знаю, как обстоят дела с c #, но в openni c ++ есть функция под названием xnSetViewPoint (), единственная проблема в том, что вы теряете 20 или около того строк изображений в результате преобразования.

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

0 голосов
/ 16 сентября 2015

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

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

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

0 голосов
/ 03 июня 2013

Метод Kinect - MapDepthFrametoColorFrame

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

0 голосов
/ 28 августа 2011

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

...