ORB - 对象需要非常接近相机

时间:2015-03-04 16:02:20

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

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

相机传输规格:

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

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

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

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

查看图像看起来距离相似,但距离至少是网络摄像头图像的两倍,这对我来说就像是相机属性造成了这个问题?如果是这样,相机的哪一部分会造成这种情况?

1 个答案:

答案 0 :(得分:2)

正如您已经认识到的那样,两个图像中的对象大小非常相似,因此算法似乎停止了某个对象分辨率。

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

根据您用于检测对象的方法,您可以调整(升级)第二个图像的大小,除非这会导致太多的插值瑕疵(检测方法可能无法处理)。

对于许多具有最小物体尺寸的探测器,直接来自训练数据或训练窗口大小,可以对图像进行升级。提升可能会导致额外(急剧)速度提升。

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

ratioX = fx1/fx2
ratioY = fy1/fy2

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

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

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