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

How to measure image coincidence in an optical rangefinder

我有几个 USB 网络摄像头(固定焦距)设置作为一个简单的 stereoscopic rangefinder, spaced N mm apart with each rotated by M degrees towards the centerline, and I've calibrated the cameras 以确保对齐。

调整角度时,如何测量图像之间的重合度(最好在 Python/PIL/OpenCV 中)以了解相机何时聚焦在物体上?是不是简单到在每幅图像中选择一段像素(A行B列),然后计算像素之间的差值之和?

问题是你不能假设相机像素完美对齐

所以假设 x 轴是视差偏移轴并且 y 轴对齐。你需要识别x轴图像distortion/shift来检测视差对齐,即使你尽可能对齐。 abs 差异的结果不能保证在 min/max 中,因此不是减去单个像素而是减去该像素附近区域的平均颜色 radius/size 大于 y-axis 中的对齐误差。让我们将此半径或大小称为 r,这样对齐后产生的差异应该很小。

近似搜索

您甚至可以通过 r

加快该过程
  1. select大r
  2. 扫描整个 x 范围,例如 0.25*r
  3. 选择最低的差异 x 位置 (x0)
  4. r改为一半
  5. 转到项目符号 2(但这次整个 x 范围正好在 <x0-2.0*r,x0+2.0r>
  6. 之间
  7. 如果 r 小于几个像素则停止

这样您就可以在 O(log2(n)) 而不是 O(n)

中搜索

计算机视觉方法

这应该会更快:

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

这样你就可以避免检查整个 x 范围,因为对齐距离是直接获得的......你只需要将它转换为角度或任何你用来对齐视差的东西

[备注]

您不需要对整个图像区域执行此操作,只需 select 沿着图像的几条水平线并扫描其附近区域即可。

还有另一种检测对齐的方法,例如对于短距离,倾斜是对齐的重要标志,因此请比较相机左右两侧的物体高度...如果接近相同,则如果bigger/smaller 你没有对齐并且知道转向哪条路......