【发布时间】:2016-12-12 00:25:23
【问题描述】:
我有两张图片(见下文)。这些图像代表了一对电缆的轮廓,并使用基于激光的 3D 三角测量法捕获。第一张图像是用左相机拍摄的,而第二张是用右相机拍摄的。可以看出,这些图像部分重叠。第一张图像的左侧部分对应于第二张图像的左侧部分。右侧部分也是如此。我想将这两个图像合并为一个图像,以便相应的部分重叠。
在这些图片旁边,我还可以使用以下信息:
- 左右摄像头的 3x3 单应矩阵
H - 左右摄像头的内在摄像头参数
K - 左右摄像头畸变系数
D(共9个) - 左右摄像头偏移
O
此数据在下面指定。
在 Halcon 中,我尝试使用镶嵌来做到这一点:
- 使用 Harris 提取两幅图像中的特征点
- 使用 Ransac 计算从一幅图像到另一幅图像的投影变换矩阵。
- 应用找到的投影变换矩阵。
但这种方法并不成功。我正在 OpenCV 或 Halcon 中寻找类似的方法或一种方法(也在 OpenCV 或 Halcon 中),该方法利用我可以使用的校准数据,例如单应矩阵和相机矩阵。
如果可能,请提供充分的解释,因为我只是从机器视觉开始。
Hl := [0.00175186, 4.73083e-05, -0.00108921,
0.000780817, -0.00145615, 0.00118631,
0.0534139, -0.030823, 1.0 ]
Kl := [4578.21, -5.05144, 759.766,
0.0, 4576.87, 568.223,
0.0, 0.0, 1.0 ]
Dl := [-0.12573, 0.0533453, -0.575361, -0.0130272, 0.00348033, 0.00852617, -0.0271142, 0.0176706, -0.00575124]
Ol := [0.0, 150.0]
Hr := [0.00173883, -2.94597e-05, 0.00109873,
-0.00077676, -0.0014687, 0.00121393,
-0.0653829, -0.0443924, 1.0 ]
Kr := [4591.96, -4.55317, 1284.74,
0.0, 4591.19, 534.317,
0.0, 0.0, 1.0 ]
Dr := [-0.110751, -0.349716, 3.86535, 0.017393, -0.00364957, -0.00633656, 0.0338833, -0.0212222, 0.00543694]
Or := [0.0, 100.0]
【问题讨论】:
-
您是否可以访问像素的 3d 点位置,相对于激光扫描仪。? (“使用基于激光的 3D 三角测量”)
-
不,我不这么认为。我可以使用我可用的数据(例如单应性或相机矩阵)来计算吗?
-
所以图像不是用激光扫描仪等 3D 三角测量设备捕获的吗?这些设备通常捕获 3d 点云网格
-
不幸的是,我无法访问图像的捕获方式或该设备的直接输出。我唯一可用的输入是问题中指定的图像和校准数据。
-
H是相机之间的3d刚性变换,还是图像之间的单应性?还是相机的外在参数?
标签: opencv image-processing alignment