【问题标题】:ORB - object needs to be very close to cameraORB - 物体需要非常靠近相机
【发布时间】:2015-05-05 17:08:36
【问题描述】:

我有一个从 RSTP 获取视频源并检查对象的程序。唯一的问题是物体需要距离相机大约 6 英寸,但当我使用有线网络摄像头时,物体可能在几英尺之外。两个相机都以相同的分辨率传输,是什么导致了这个问题?

相机传输规格:

    Resolution: 640 * 480 
    FPS: 20 
    Bitrate: 500000
    Focal Length: 2.8mm

编辑: 我使用的算法是 OpenCV ORB 算法,但我之前在 OpenCV 中使用 Haar 分类器方法时也看到了这种行为。

以下是网络摄像头无法再检测到对象的限制。 (约 66 像素)

以下是 Glass 无法再检测到对象的限制。 (约 68 像素)

查看图像,它看起来距离相似,但距离至少是网络摄像头图像中的两倍,在我看来,这是导致此问题的相机属性?如果是这样,相机的哪个部分会造成这种情况?

【问题讨论】:

  • 噪音?亮度设置?相机/镜头属性?可能一些精明/阈值/其他东西不适用于两种设置之一。不知道算法或相机就不可能猜到!也许给 2 个示例图像,每个相机一个,其范围只是不起作用。
  • 我明天在办公室时会获取示例图像,OpenCV ORB 算法中的算法。两个测试的场景/对象和环境光也是相同的。
  • 我在原帖中添加了额外的信息和图片。
  • 这是一种视觉错觉,还是两张图像中以像素为单位测量的纸张尺寸几乎相同?所以它们因相同的像素大小而失败是完全合理的??!?
  • 这就是我在图片下方的最后一段文字中所指的内容,但我不确定相机规格是什么。这意味着尽管距离更大,但图像的像素大小相同。

标签: opencv camera computer-vision object-recognition orb


【解决方案1】:

如您所见,两幅图像中的对象大小非常相似,因此算法似乎会在某个对象分辨率下停止。

两个相机之间的距离差异(对于相同的物体大小)来自相机的内在参数,例如焦距(来自镜头物镜)和传感器芯片的大小。

根据您用于检测对象的方法,您可以调整(放大)第二张图像的大小,除非这会导致过多的插值伪影(您的检测方法可能无法处理)。

对于许多直接来自训练数据或训练窗口大小的最小对象大小的检测器来说,放大图像是可以的。升级可能会导致额外的(显着)速度性能提升。

如果两个相机的内在参数已知并且图像已经没有失真,您可以计算两个图像之间的比例因子,即:

ratioX = fx1/fx2
ratioY = fy1/fy2

如果要放大第二张图像,fx1,fy1 是第一张图像的焦距值。 之后您可以裁剪放大的图像,以主要点为中心。之后,两个图像区域应该匹配得很好。

希望这会有所帮助,祝你好运。

编辑:您可以使用 cv::undistort 函数让图像看起来像有另一个相机矩阵,以进行测试。

【讨论】:

    猜你喜欢
    • 2018-07-28
    • 1970-01-01
    • 2014-11-11
    • 2018-01-01
    • 2018-04-10
    • 1970-01-01
    • 2014-05-14
    • 2014-10-14
    • 1970-01-01
    相关资源
    最近更新 更多