2017-01-29 8 views
1

У меня есть карта несоответствия.ReprojectImageTo3D соответствующий пиксель в изображении (Stereo Vision)

Основываясь на карте несоответствием, парящий на дисплеях «Левое изображение»:

X и y изображения, поэтому если я парить на верхнем левом углу большинства, он будет отображать x:0, y:0

следующий шаг будет отображать расстояние от конкретного пикселя, чтобы сделать свою жизнь проще, я буду стараться делать это с reprojectImageTo3D(disp, Q)

Я получил Q от stereoRectify

сейчас, reprojectImageTo3D в python, возвращает матрицу n by 3.

Итак, я вижу, это ряд координат x y z. Интересно, как я могу узнать, какой пиксель соответствуют этим координатам?

Это образец 3D-очков, которые я сэкономил, используя numpy.savetxt

http://pastebin.com/wwDCYwjA

BTW: Я делаю все, что в Python, но GUI в Java, у меня нет времени, чтобы изучить GUI в python.

ответ

1

Если вы правильно вычислили свою карту несоответствия, вы должны получить (n1, n2,1) мерный массив, где n1, n2 - количество пикселей изображения по осям, 1 - количество каналов (один канал, который содержит расстояние в пикселей между соответствующими пикселями от левого и правого изображений). Вы должны это проверить, набрав disp.shape. После этого вы должны передать ndarray вашей карты несоответствия функции reprojectImageTo3D и получить ndarray, который имеет форму (n1, n2,3) (третий размер содержит координаты X, Y, Z точки 3D). Вы можете проверить, что, набрав:

threeDImage = reprojectImageTo3D(disp, Q) 
print threeDImage.shape 

И, наконец, так как вы сделали свои несоответствия карты основаны на лев изображения, каждый пиксель, который имеет COORDS х, у на изображение слева (или картах несоответствий), соответствует threeDImage [ x] [y] 3D-точка. Имейте в виду, что ряд: 0, столбец: 0 является левый верхний элемент матрицы, основанный на обработке OpenCV изображений:

0/0---column---> 
| 
| 
row 
| 
| 
v 
+0

привет, спасибо, вы правы, я понял, я делаю что-то неправильно , в примере на python была создана маска для фильтрации несоответствия, и она изменила точки на n на 3 матрицы. я узнал, изначально, reprojectImageTo3D возвращает ту же форму, что и изображение: D – Wreigh