2017-10-17 56 views
0

现在我有两台摄像机并完成立体声校准步骤,以抓取内在和外在参数。我在左侧相机中提取了几个特征点,并想知道如何将它们映射到正确的图像上。任何人都可以帮忙吗?在立体视觉中将像素从一个图像映射到另一个图像

我试图通过每个相机的旋转和平移矩阵来计算它们。

随着SolvePnP功能在openCV,我得到R1 T1左摄像头和R2 T2右摄像头。

同是天涯点[X,Y,Z],我可以得到

[x1,y1,z1] = R1[X,Y,Z]+T1 

[x2,y2,z2] = R2[X,Y,Z]+T2 

摄像头在自己的坐标系中的坐标。

当我尝试映射[X1,Y1,Z1]和[X2,Y2,Z2]由

R2*inv(R1)[x1,x2,x3]+(T2-R2*inv(R1)*T1) = [x2,y2,z2] 

我得到这个结果。

左边的图像是通过上面的方法从左图像映射棋盘角的结果;上右图是正确的图像运算的角落通过findChessBoardCorner: image on left is result of mapping chessboard corner from left image by method above; image on right is corners of right image computing by findChessBoardCorner

+0

有一个非常好的教程,你可以找到[这里](http://mccormickml.com/2014/01/10/stereo-vision-tutorial-part-i/) –

回答

0

Results From function "findHomography"

计算点“findHomography”的映射关系只能在棋盘的平面上运行(我从棋盘上的角落获得关系)。但是当我用H计算前景/背景点时,结果如上所示。

问题应该是:“矩阵H是在二维坐标系统上工作的(或者像上面棋盘这样的平面上的物体,这就是为什么它如果我反射一个棋盘指向另一个图像) /背景它们的坐标是在一个三维坐标系上映射的图像,这意味着矩阵失败的工作(实际上我认为它没有失败的工作,它映射点在棋盘的延伸位置)“

解决所提到的问题,我认为的想法是“reproject图像指向一个三维坐标系统(也许在ToF相机或其他方式的帮助下),调用'solvePnP'函数获得世界点在左右相机之间的姿态关系R,T。选择左侧图像上的任意点,在3D坐标系上重新投影,然后将其投影到右侧图像由R,T“

相关问题