MSER特征的匹配算法?

3
以下内容如何工作?
我正在寻找MSER特征点,然后使用matchFeatures函数将它们配对。
% file1 = 'roofs1.jpg';
% file2 = 'roofs2.jpg';

file1 = 'cameraman.tif';


I1 = imread(file1);

%I2 = imread(file2);
I2 = imrotate(I1, 45);

% I1 = rgb2gray(I1);
% I2 = rgb2gray(I2);

% %Find the SURF features.
% points1 = detectSURFFeatures(I1);
% points2 = detectSURFFeatures(I2); 

points1 = detectMSERFeatures(I1);
points2 = detectMSERFeatures(I2); 

%Extract the features.
[f1, vpts1] = extractFeatures(I1, points1);
[f2, vpts2] = extractFeatures(I2, points2);

%Retrieve the locations of matched points. The SURF featurevectors are already normalized.
indexPairs = matchFeatures(f1, f2, 'Prenormalized', true) ;
matched_pts1 = vpts1(indexPairs(:, 1));
matched_pts2 = vpts2(indexPairs(:, 2));


figure; showMatchedFeatures(I1,I2,matched_pts1,matched_pts2,'montage');
legend('matched points 1','matched points 2');

显然它工作正常

enter image description here

但是它怎么可能呢?MSERRegions仅包含椭圆形。它们如何匹配呢?显然这并不足够信息!

更新

我发现extractFeatures函数从MSER点返回SURF特征向量。因此,它会比较64维的SURF向量。

1个回答

3
在这种情况下,MSER区域的质心被简单地用作提取SURF描述符的兴趣点。默认情况下,如果将MSERRegions传递到extractFeatures中,则会返回SURF描述符。但是,MSER区域可以用于其他用途,例如在图像中检测文本。

1
此外,使用SURF描述符来处理MSER“关键点”是没有意义的。实际上,可以认为SURF旨在提高描述性能,在这些点上表现相当糟糕,因为它们位于一个相当同质化的区域中。 - DrPepperJo
1
我不同意。MSER区域不一定是没有纹理的紧凑斑点。你可以有一个奇形怪状的MSER区域,比如一个字母或数字,如果你在它的中心计算一个SURF描述符,它很可能是独特的。 - Dima
1
我猜“可能”是关键词。我不明白为什么要使用MSER位置来提取点描述符。 - DrPepperJo
不同意使用SURF作为较低尺度局部描述符的匹配方式,这种方法行不通。我个人正在考虑使用HOG描述符(使用MSER的边界框或多边形作为输入),并以此进行匹配。 - InKodeWeTrust

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接