2017-01-29 8 views
1

나는 불일치지도가 있습니다. '왼쪽 이미지'디스플레이에 유혹 격차지도를 바탕으로 ReprojectImageTo3D 이미지의 해당 픽셀 (스테레오 비전)

:

X 이미지의 y, 그래서 난에 올려 놓으면 왼쪽 상단 대부분이 표시됩니다 x:0, y:0

다음 단계는 내가 stereoRectify

에서 Q있어 reprojectImageTo3D(disp, Q)

와 함께 할 것을 시도 할 것이다, 내 인생을 쉽게하기 위해, 특정 픽셀의 거리를 표시하는 것입니다

, reprojectImageTo3D, 파이썬에서는 n by 3 행렬을 반환합니다.

그래서 볼 수 있듯이 좌표는 x y z입니다. 이 좌표가 어느 픽셀에 해당하는지 어떻게 알 수 있습니까?

내가 numpy.savetxt

BTW

http://pastebin.com/wwDCYwjA

를 사용하여 저장된 3D 점의 샘플입니다 : 나는 파이썬의 모든 일을 해요,하지만 GUI는 자바에서, 나는 시간이 없어 파이썬에서 GUI를 공부하십시오.

답변

1

불일치 맵을 올바르게 계산할 경우 (n1, n2,1) 차원 배열을 가져와야합니다. 여기서 n1, n2 - 축별 이미지 픽셀 수, 1 - 채널 수 (단일 채널, 거리를 포함) 왼쪽 및 오른쪽 이미지에서 해당 픽셀 사이의 픽셀). 입력란에 disp.shape을 입력하여 확인해야합니다. 그 후에 당신의 불일치지도의 ndarray를 reprojectImageTo3D 함수에 전달하고 (n1, n2,3) 모양을 가진 ndarray를 얻는다. (3 차원은 3D 점의 X, Y, Z 좌표를 포함한다.)

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

그리고를 마지막으로, 당신은 왼쪽 이미지에 따라 상이지도를 만든 이후, 왼쪽 이미지 (또는 디스 패리티 맵)에 좌표의 X, Y가있는 각 픽셀은, threeDImage [에 해당 : 당신은 입력하여 확인 할 수 있습니다 x] [y] 3D 점. 그 행 : 0, 열 : 0은 opencv 처리 이미지를 기반으로 행렬의 왼쪽 위 요소입니다.

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

안녕하세요, 맞아요, 제가 잘못 생각한 것을 깨달았습니다. . 파이썬 예제에서, 불일치를 필터링하기위한 마스크가 있었고, 포인트를 n 행렬로 3 행렬로 재구성했습니다. 원래 reprojectImageTo3D가 이미지와 동일한 모양을 반환한다는 것을 알았습니다. D – Wreigh