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

2024-09-29 11:26:59 发布

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

我有两个USB网络摄像头(固定焦距)设置为一个简单的stereoscopic rangefinder,间距为N毫米,每个摄像头向中心线旋转M度,我已经calibrated the cameras以确保对齐。在

当调整角度时,我如何测量图像之间的重合度(最好是Python/PIL/OpenCV)以知道相机何时聚焦在一个物体上?它是否简单到在每个图像中选择一部分像素(a行乘以B列)并计算像素之间的差值之和?在


Tags: the图像网络pil像素usb焦距摄像头
1条回答
网友
1楼 · 发布于 2024-09-29 11:26:59

问题是您无法假设相机的像素完美对齐

假设x-轴是视差位移轴,y-轴对齐。您需要识别x轴图像失真/偏移,以检测视差对齐,即使您已尽可能对齐。abs差分的结果不一定在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. 转到bullet 1直到x距离足够小

这种方法可以避免检查整个x范围,因为对齐距离是直接获得的。。。你只需要把它转换成角度或者任何你用来校准视差的东西

[注意事项]

你不需要在整个图像区域上这样做,只需沿图像选择几条水平线并扫描它们附近的区域。在

还有另一种方法来检测对齐,例如对于短距离,倾斜是对齐的重要标记,因此比较相机之间对象在其左右两侧的高度。。。如果在同一个地方你被排成一条直线如果大/小你没有对齐并且知道该往哪边转。。。在

相关问题 更多 >