MATLAB:如何将SURF特征描述符转换为SIFT特征描述符?

时间:2019-05-27 07:02:35

标签: matlab sift matlab-cvst surf descriptor

我正在使用SURF特征检测器和描述符来使用MATLAB查找图像中的特征点。我想在另一个program中使用这些特征点和特征描述符,该here仅接受Lowe ASCII格式的特征点和描述符。我发现SIFT特征描述符被标准化为512,我需要对MATLAB中的SURF特征描述符进行相同的操作,但是我没有得到它。我尝试了没有运气/成功的规范功能。这是我的实现方式,但我没有得到想要的东西。

I = imread('cameraman.tif');
[r, c, p] = size(I);
if p > 1
    I = rgb2gray(I);
end
points = detectSURFFeatures(I);
[features, vldPoints] = extractFeatures(I, points, 'FeatureSize', 128,...
    'Method', 'SURF');
% imshow(I); hold on;
% plot(points);
for ii = 1:size(features,1)
    v = features(ii,:);
    normFeatures(ii,:) = round(v/norm(v) * 512);
end

有关该问题的更多信息,请参见PIC

编辑:我尝试了相同的过程来规范化在MATLAB中使用原始sift二进制文件找到的SIFT特征描述符,并且它起作用了(我匹配了Lowe在sift文件夹中提供的temp.key文件,功能文件,并且两者相同)。这意味着SURF的“特征”不是正确的标准化数据。 请指导我有关MATLAB中找到的SURF功能的信息。我的意思是它们与筛选功能描述符有何不同?

1 个答案:

答案 0 :(得分:1)

这是SURF论文的合著者赫伯特。不幸的是,由于基础数学不同,因此无法将SURF特征转换为SIFT特征。因此,无法将SURF特征与SIFT特征进行匹配。如果您只想标准化功能,请参考原始源代码以更好地了解https://github.com/herbertbay/SURF。希望这会有所帮助...