Я использую детектор и дескриптор функции SURF, чтобы найти характерные точки на изображениях с помощью MATLAB. Я хочу использовать эти характерные точки и дескрипторы функций в другой программе , которая принимает характерные точки и дескрипторы только в формате Lowe ASCII. Я обнаружил, что дескрипторы функций SIFT нормализованы до 512, и мне нужно сделать то же самое с дескриптором функций SURF в MATLAB, но я не получил его. Я попробовал функцию нормы без удачи / успеха. Вот как я это реализовал, но я не смог получить то, что хочу.
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
Подробнее о вопросе можно узнать здесь .
РЕДАКТИРОВАТЬ: Я попытался тот же процесс нормализовать дескрипторы функции SIFT, найденные с использованием исходного двоичного файла sift в MATLAB, и это сработало (я сопоставил файл temp.key, предоставленный Lowe в папке sift, и мои функции файлы и то же самое). Это означает, что «особенности» SURF не являются правильными данными для нормализации.
Пожалуйста, расскажите мне о возможностях SURF, найденных в MATLAB. Я имею в виду, чем они отличаются, чтобы просеивать дескрипторы функций?