【发布时间】:2014-10-09 21:42:32
【问题描述】:
我正在检测 BRISK 和 SURF 特征点。我有以下检测代码。
im = imread('hammer.png');
pointsBRISK = detectBRISKFeatures(im, 'NumOctaves', 3);
pointsSURF = detectSURFFeatures(im, 'NumOctaves', 3);
这是我的原图:
这是 BRISK 积分:
这是SURF积分:
我使用以下代码绘制这些点:
figure; imshow(im); hold on; plot(pointsBRISK); title('pointsBRISK');
figure; imshow(im); hold on; plot(pointsSURF); title('pointsSURF');
这些点没有错。但是,当我查看点的比例时,我得到的 BRISK 和 SURF 比例完全不同,但从图像中我可以说比例应该是相似的。
以下是 BRISK 点和 SURF 点的比例:
BRISK SURF
11.9173 2.9333
11.9381 2.9333
12.3887 2.9333
12.4036 2.9333
12.5329 2.9333
26.8478 2.9333
31.8943 2.9333
36.0000 2.9333
48.0000 3.0667
72.0000 3.0667
72.0000 4.1333
72.0000 4.2667
72.0000 4.2667
72.0000 4.2667
72.0000 4.2667
4.2667
4.4000
4.4000
4.4000
6.1333
8.6667
8.8000
8.9333
11.6000
12.1333
12.2667
12.2667
数值越大,代表图像中的圆圈越大。
看起来他们在完全不同的领域。我怎样才能将它们带到同一个域?或者如果问题再次出现,我该如何解决?
[编辑]
好吧,我查看了extractFeatures 函数。它使用 BRISKPoints 或 SURFPoints 来提取特征。函数内部有转换函数,如pointsToBRISKPoints 或parseSURFInputs。在这些函数中,比例被转换。但是还是有问题的部分。
当 BRISK 点转换为 SURF 点时,BRISK 比例被除以 6。另一方面,当 SURF 点转换为 BRISK 点时,SURF 比例乘以 10!我也觉得应该是6!为什么不是6?
[编辑]
谢谢!
【问题讨论】:
标签: matlab computer-vision feature-detection surf matlab-cvst