2

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

相机传输规格:

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

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

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

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

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

4

1 回答 1

2

正如您所认识的,两张图像中的对象大小非常相似,因此该算法似乎停止了特定的对象分辨率。

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

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

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

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

ratioX = fx1/fx2
ratioY = fy1/fy2

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

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

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

于 2015-03-05T11:24:10.550 回答