ReprojectImageTo3D corresponding pixel in image (Stereo Vision)

守給你的承諾、 提交于 2019-12-11 07:55:14

问题


I have a disparity map.

Based on the disparity map, hovering on the 'left image' displays:

X and y of the image, So if i hover on the top-left most, it will display x:0, y:0

The next step is to display distance of the specific pixel,to make my life easy, I will try to do it with reprojectImageTo3D(disp, Q)

I got Q from stereoRectify

now, reprojectImageTo3D in python, returns an n by 3 matrix.

So I can see, it is a row of x y z coordinates. Wondering, how can I know which pixel are these coordinates correspond to?

This is a sample of the 3D points that I saved using numpy.savetxt

http://pastebin.com/wwDCYwjA

BTW: I'm doing everything in python, but GUI in Java, I don't have time to study GUI in python.


回答1:


If you correctly calculate your disparity map, you should get (n1,n2,1) dimensional array, where n1,n2 - number of image's pixels by axes, 1 - number of chanels (single channel, which contain distance in pixels between correspondent pixels from left and right images). You should check that by typing disp.shape. After that you should pass your disparity map's ndarray to reprojectImageTo3D function and get ndarray, which has (n1,n2,3) shape (third dimension contains X,Y,Z coords of 3D point). You can check that by typing:

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

And finally, since you made your disparity map based on left image, each pixel, which has coords x,y on left image (or disparity map), corresponds to threeDImage[x][y] 3D point. Keep in mind, that row:0, column:0 is the top-left element of the matrix, based on opencv handling images:

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


来源:https://stackoverflow.com/questions/41923645/reprojectimageto3d-corresponding-pixel-in-image-stereo-vision

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!