MATLAB: Как преобразовать дескриптор функции SURF в дескриптор функции SIFT? - PullRequest
0 голосов
/ 27 мая 2019

Я использую детектор и дескриптор функции 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. Я имею в виду, чем они отличаются, чтобы просеивать дескрипторы функций?

1 Ответ

1 голос
/ 18 июня 2019

Это Герберт, соавтор статьи SURF.К сожалению, невозможно преобразовать функции SURF в функции SIFT, поскольку основная математика отличается.Поэтому невозможно сопоставить функции SURF с функциями SIFT.Если вы хотите только нормализовать функции, пожалуйста, обратитесь к исходному коду для лучшего понимания https://github.com/herbertbay/SURF. Надеюсь, это поможет ...

...