MATLAB Answers


How to convert SURF feature descriptor to SIFT feature descriptor?

Asked by jhz
on 29 May 2019
I am using SURF feature detector and descriptor to find feature points in images using MATLAB. I want to use these feature points and feature descriptors in another program but that program only accepts feature points and descriptors in Lowe's ASCII format. I found that SIFT feature descriptors are normalized to 512 and I tried to do the same (normalize) to SURF 'features' but the output matrix (features matrix) does not look like the SIFT feature descriptor (after normalizing SURF features descriptor has negative values too). Here is my code:
I = imread('cameraman.tif');
[r, c, p] = size(I);
if p > 1
I = rgb2gray(I);
points = detectSURFFeatures(I);
[features, vldPoints] = extractFeatures(I, points, 'FeatureSize', 128,...
'Method', 'SURF');
normFeatures = zeros(size(features));
for ii = 1:size(features,1)
v = features(ii,:);
normFeatures(ii,:) = round(v/norm(v) * 512);
Later I tried the same process to normalize the SIFT feature descriptors found using the original sift binary in MATLAB and it worked (I matched temp.key file provided by Lowe in the sift folder and my features files and both are same). It means the SURF 'features' are not the right data to normalize. Please guide me on the SURF features found in MATLAB. I mean how they are different to SIFT feature descriptors?


Sign in to comment.

0 Answers