如何在基于激光的立体相机中匹配激光点?

2024-05-16 23:26:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用激光扫描一个物体来提取3D点云。我的设置中有2个摄像头和1个激光器。我所做的是给OpenCV的triangulatePoints函数作为projPoints arg提供掩码中的非零点。因为对于triangulatePoints函数,两个点的数量必须相同,并且有两个遮罩,如果一个遮罩比另一个有更多的非零点,我基本上会通过这样做将其缩小到其他遮罩的大小:

l1 = len(pts1)
l2 = len(pts2)
newPts1 = pts1[0:l2]

有没有一种很好的方法来匹配左右帧的非零点

Stereo Pain


Tags: 函数lenargopencv物体摄像头激光掩码
1条回答
网友
1楼 · 发布于 2024-05-16 23:26:18

首先,如果你的图像通常是这样的,那么你的传感器已经饱和了,因此你的3D范围要么毫无价值,要么比它们可能的精确得多

第二,您的目标应该是在对的每个图像上的每个校正扫描线上匹配一个点,而不是一组点。使用激光条纹的整个想法是在尽可能小的光点或光带上获得聚焦良好的光束,这样你就可以详细探测表面

为了获得最佳精度,峰值查找应在原始(畸变和未校正)图像的每条扫描线上独立完成,因此不受不畸变和立体校正程序使用的插值的影响。相反,您可以使用几何不失真和立体校正变换将原始图像中检测到的峰值映射到校正后的峰值

有几种基于激光条纹的三角测量方法的峰值查找的经典算法,您可能会发现this other answer of mine很有用

最后,如果您的设置如图所示,除了感兴趣的对象外,激光条纹还照亮两个正交平面,然后,您根本不需要使用立体:您可以求解激光条纹投影仪所跨越的3D平面,并通过将该平面与每条光线相交,将激光条纹图像的峰值反向投影到对象上,从而进行三角形化。这类似于J.Y.Bouguet在他以前的博士论文中使用的方法之一。关于桌面摄影的论文(这里是S.Seitz的a summary)。使用激光剥离器的一个实现在this patent中详细说明。这种方法的精确度出人意料地高:1999年,我们用一台小巧的640x480 CCD摄像机在一立方英尺的体积内获得了约0.2毫米的精确度。专利已经过期,所以你可以自由享受它

相关问题 更多 >