Какую глубину получило изображение от Kinect

Когда я запустил этот код Matlab для получения изображения глубины, я получил матрицу 480x640. Минимальное значение элемента равно 0, а максимальное значение элемента равно 2711. Что означает 2711? Это расстояние от камеры до самой дальней части изображения. Но что такое единица измерения 2711. Это метр метров или??

2 ответа

Решение

Я не знаю, что именно делает код Matlab для глубины, но он, вероятно, выполняет некоторую обработку, потому что глубина, отправляемая Kinect, составляет 11 бит, поэтому она не должна быть выше, чем 2048. Попробуйте выяснить, что это так, или чтобы получить доступ к необработанным данным, отправленным Kinect.

Данные, отправляемые Kinect, не являются надлежащим расстоянием (это "несоответствие"), поэтому вам нужно выполнить некоторые математические вычисления, чтобы преобразовать их в полезные единицы.

Из вики проекта OpenKinect (который содержит полезную информацию о Kinect):

Исходя из их данных, базовое приближение первого порядка для преобразования необработанного 11-разрядного значения диспаратности в значение глубины в сантиметрах составляет: 100/(-0,00307 * rawDisparity + 3,33). Это приближение составляет приблизительно 10 см на расстоянии 4 м и менее 2 см на расстоянии 2,5 м.

Лучшее приближение дает Стефан Магненат в этом посте: расстояние = 0,1236 * tan(rawDisparity / 2842,5 + 1,1863) в метрах. Добавление окончательного смещения -0,037 центрирует исходные данные ROS. Приближение загара имеет разницу в квадрате 0,33 см, в то время как приближение 1/x составляет около 1,7 см.

Если у вас есть расстояние с использованием приведенного выше измерения, хорошим приближением для преобразования (i, j, z) в (x,y,z) будет:

x = (i - w / 2) * (z + minDistance) * scaleFactor * (w/h)
y = (j - h / 2) * (z + minDistance) * scaleFactor
z = z
Where
minDistance = -10
scaleFactor = .0021.
These values were found by hand.

Вы можете найти более подробную информацию о глубине камеры Kinect и ее калибровке на веб-сайте ROS (и многих других!).

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

Другие вопросы по тегам