ORB是否取决于图像分辨率?

时间:2018-10-07 14:09:57

标签: opencv sift surf orb

我正在尝试使用OpenCV从图像中检测和提取ORB功能。

但是,我获取的图像未进行归一化(大小不同,分辨率不同等)。

我想知道是否需要在提取ORB功能以使其在图像之间匹配之前对图像进行规范化?

我知道特征检测是尺度不变的,但是我不确定这对图像分辨率有什么意义(例如,两张相同大小的图像,其中一个物体靠近,而另一个物体远,则应该导致匹配,即使它们在图像上的比例不同,但是如果图像的尺寸不一样怎么办?)。

我应该根据图像大小来调整ORB中的patchSize吗(例如,如果我有800px的图像,而patchSize为20px,对于400px的图像,我应该为10px的patchSize吗?)。 / p>

谢谢。

更新: 我用高分辨率和低分辨率的图像测试了不同的算法(ORB,SURF和SIFT),以了解它们的行为。在此图像中,对象大小相同,但是图像分辨率不同:

enter image description here

我们可以看到,尽管SIFT具有很少的功能,但它相当稳定。 SURF在关键点和功能范围方面也相当稳定。因此,我的猜测是,通过SIFT和SURF可以在低分辨率和高分辨率图像之间进行特征匹配,但是ORB在低分辨率中具有更大的功能,因此描述符与高分辨率图像中的描述符不匹配。

(在高和低分辨率特征提取之间使用了相同的参数)。

所以我的猜测是,如果我们想在具有不同分辨率的图像之间进行匹配,那么对SIFT或SURF会更好。

1 个答案:

答案 0 :(得分:0)

根据OpenCV documentation,ORB还使用金字塔生成多尺度特征。尽管此页面上的细节尚不清楚。
如果我们查看ORB paper itself,则在第6.1节中提到使用了五个不同比例的图像。但是我们仍然不确定是否需要手动计算具有不同比例的图像上的描述符,或者它已经在OpenCV ORB中实现。
最终,from source code(在我写此答案时的第1063行)中,我们看到计算出不同分辨率的图像用于关键点/描述符提取。如果跟踪变量,则会看到可以使用getScaleFactor方法访问的ORB类的比例因子。

简而言之,ORB会尝试以不同的比例进行匹配。