我正在尝试使用OpenCV来检测和提取图像中的ORB特征。
然而,我得到的图像并没有被标准化(大小不同,分辨率不同等)。
我想知道在提取ORB特征之前是否需要对图像进行标准化,以便能够在图像之间进行匹配?
我知道特征检测是尺度不变的,但我不确定这对于图像分辨率意味着什么(例如,两个大小相同的图像,在另一个上接近或远离1个对象应该会产生匹配,即使它们在图像上具有不同的比例,但如果图像大小不同怎么办?)。
我是否应该根据图像大小调整ORB中的patchSize(例如,如果我有一个800px的图像,并且取一个20px的patchSize,则对于400px的图像,我应该取一个10px的patchSize)?
谢谢。
更新: 我使用高分辨率和低分辨率的不同算法(ORB、SURF和SIFT)来测试它们的行为。在这张图片中,物体的大小都一样,但图像的分辨率不同:
我们可以看到SIFT非常稳定,虽然它的特征很少。SURF在关键点和特征尺度方面也相当稳定。因此,我的猜测是,在低分辨率和高分辨率图像之间进行特征匹配时,使用SIFT和SURF会起作用,但是ORB在低分辨率下具有更大的特征,因此描述符将无法与高分辨率图像中的描述符匹配。
(在高和低分辨率特征提取之间使用了相同的参数)。
因此,如果我们要对不同分辨率的图像进行匹配,使用SIFT或SURF会更好。