我有几个 USB 网络摄像头(固定焦距)设置作为简单的 stereoscopic rangefinder ,间隔 N 毫米,每个朝中心线旋转 M 度,我已经 calibrated the cameras以确保对齐。
调整角度时,如何测量图像之间的重合度(最好在 Python/PIL/OpenCV 中)以了解相机何时聚焦在物体上?是否像在每个图像中选择一部分像素(A 行×B 列)并计算像素之间的差异之和一样简单?
最佳答案
问题是你不能假设相机的像素完美对齐
所以假设 x
-axis 是视差移动轴,y
- 轴已对齐。即使您尽可能地对齐,您也需要识别 x 轴图像失真/移位来检测视差对齐。不保证abs差异的结果在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 范围,因为对齐距离是直接获得的...您只需将其转换为角度或用于对齐视差的任何内容
[注释]
您不需要在整个图像区域上执行此操作,只需沿着图像选择几条水平线并扫描其附近的区域即可。
还有另一种方法来检测对齐,例如对于短距离,倾斜是对齐的重要标志,因此比较相机之间物体左侧和右侧的高度...如果接近相同,如果更大/则对齐较小的你没有对齐并且知道转向哪个方向......
关于python - 如何在光学测距仪中测量图像重合度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32428612/