如何在光学测距仪中测量图像重合
问题内容:
我有几个USB网络摄像头(固定焦距)设置为简单的立体测距仪,彼此间隔N毫米,每个镜头向中心线旋转M度,并且已经校准了相机以确保对齐。
调整角度时,如何测量图像之间的重合度(最好在Python / PIL /
OpenCV中),以了解相机何时聚焦在物体上?选择每个图像中的一部分像素(A行×B列)并计算像素之间的差之和就这么简单吗?
问题答案:
问题是您不能假设摄像机的像素完美对齐
因此,假设x
-axis是视差位移轴,并且y
-轴对齐。您需要识别x轴图像的失真/偏移,以检测视差对齐,即使您已尽可能对齐。绝对不能保证吸收绝对差的结果,min/max
因此不是减去单个像素,而是减去半径/尺寸大于的对准误差的那个像素附近区域的平均颜色y-axis
。以r
这种方式称呼此半径或大小,对齐后所得的差异应最小。
近似搜索
您甚至可以通过以下方式加快流程 r
- 选择大
r
- 例如,用步骤扫描整个x范围
0.25*r
- 选择最低的差异x位置(
x0
) - 变成
r
一半 - 转到项目符号2(但这次整个x范围介于
<x0-2.0*r,x0+2.0r>
- 如果
r
小于或小于几个像素则停止
这样您可以搜索O(log2(n))
而不是O(n)
计算机视觉方法
这应该更快:
- 检测兴趣点(在展位图片中)
- 梯度的具体变化等
- 交叉匹配图像之间的兴趣点
- 计算交叉匹配点之间的平均x距离
- 通过找到的点距离更改视差对齐
- 转到项目符号1,直到x距离足够小
这样,您就可以避免检查整个x范围,因为可以直接获得对齐距离…您只需要将其转换为角度或用于对齐视差的内容即可
[笔记]
您无需在整个图像区域上执行此操作,只需在图像上选择几条水平线并扫描其附近区域即可。
还有其他检测对齐方式的方法,例如,对于短距离而言,偏斜是对齐的重要标志,因此,请比较相机之间其左侧和右侧的对象高度…如果接近,则对齐,如果更大或更小,则对齐不结盟,知道转弯的方向…