如何在光学测距仪中测量图像重合


问题内容

我有几个USB网络摄像头(固定焦距)设置为简单的立体测距仪,彼此间隔N毫米,每个镜头向中心线旋转M度,并且已经校准了相机以确保对齐。

调整角度时,如何测量图像之间的重合度(最好在Python / PIL /
OpenCV中),以了解相机何时聚焦在物体上?选择每个图像中的一部分像素(A行×B列)并计算像素之间的差之和就这么简单吗?


问题答案:

问题是您不能假设摄像机的像素完美对齐

因此,假设x-axis是视差位移轴,并且y-轴对齐。您需要识别x轴图像的失真/偏移,以检测视差对齐,即使您已尽可能对齐。绝对不能保证吸收绝对差的结果,min/max因此不是减去单个像素,而是减去半径/尺寸大于的对准误差的那个像素附近区域的平均颜色y-axis。以r这种方式称呼此半径或大小,对齐后所得的差异应最小。

近似搜索

您甚至可以通过以下方式加快流程 r

  1. 选择大 r
  2. 例如,用步骤扫描整个x范围 0.25*r
  3. 选择最低的差异x位置(x0
  4. 变成r一半
  5. 转到项目符号2(但这次整个x范围介于 <x0-2.0*r,x0+2.0r>
  6. 如果r小于或小于几个像素则停止

这样您可以搜索O(log2(n))而不是O(n)

计算机视觉方法

这应该更快:

  1. 检测兴趣点(在展位图片中)
    • 梯度的具体变化等
  2. 交叉匹配图像之间的兴趣点
  3. 计算交叉匹配点之间的平均x距离
  4. 通过找到的点距离更改视差对齐
  5. 转到项目符号1,直到x距离足够小

这样,您就可以避免检查整个x范围,因为可以直接获得对齐距离…您只需要将其转换为角度或用于对齐视差的内容即可

[笔记]

您无需在整个图像区域上执行此操作,只需在图像上选择几条水平线并扫描其附近区域即可。

还有其他检测对齐方式的方法,例如,对于短距离而言,偏斜是对齐的重要标志,因此,请比较相机之间其左侧和右侧的对象高度…如果接近,则对齐,如果更大或更小,则对齐不结盟,知道转弯的方向…