在立体视觉中将一个图像的像素映射到另一个图像

问题描述 投票:0回答:3

现在我有两个摄像头并完成了立体校准步骤以获取内部和外部参数。我在左相机中提取了几个特征点,想知道有什么方法可以将它们映射到右图像上。有人可以帮忙吗?

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

随着

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

opencv image-processing stereo-3d
3个回答
0
投票

旋转和平移矩阵将世界坐标系中的 3D 坐标映射到相机局部 3D 坐标 为了找到 2D-2D 转换,我建议您使用单应性:

https://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html?highlight=findhomography#findhomography


0
投票

Results From function

通过“findHomography”计算点映射关系只适用于棋盘的平面(我从棋盘的角落得到关系)。然而,当我通过 H 计算前景/背景点时,结果如上所示。

问题应该是“矩阵 H 在 2-D 坐标系上工作(或平面上的物体,如上面的棋盘,这就是为什么如果我将棋盘点反射到另一个图像,它会起作用),前景/背景的对象坐标是在映射到图像上的 3-D 坐标系上,这意味着矩阵工作失败(实际上我认为它没有工作失败,它将点映射到棋盘的扩展位置)“

为了解决上述问题,我认为的想法是“将图像点重新投影到 3d 坐标系(可能借助 ToF 相机或其他方式),调用‘solvePnP’函数来获取左侧世界点和世界点之间的姿势关系 R、T右相机。选择左图像上的任意点,重新投影回 3D 坐标系,并通过 R,T"

反投影到右图像

0
投票

你有没有让这个工作? 如果是的话,你能分享一下吗?

我也想达到同样的目的

© www.soinside.com 2019 - 2024. All rights reserved.