Я пытаюсь различить форму для изображений в Matlab с помощью дескриптора Фурье. Я хочу сделать следующее: 1. Сгенерировать дескрипторы Фурье для каждого изображения; 2. Рассчитайте эвклидово расстояние между этими дескрипторами Фурье для сравнения форм.Как сделать результат дескриптора Фурье нечувствительным?
Моя проблема: я не могу сделать результат вычисления Дескриптора Фурье нечувствительным к геометрическому преобразованию (например, вращение & Масштабирование).
Код, который я использую сейчас, является «версией Gonzales matlab», которая находится в этом link. Я попытался нормализовать результат, выполнив следующие действия:
% Normalization
DC = f(1);
f = f(2:11); % getting the first 20 & deleting the dc component
f = abs(f) ; % use magnitudes to be invariant to translation & rotation
f = f/DC; % devide the fourier coeffients by the DC-coefficient to be invariant to scale
Но я не думаю, что это сработало, как я ожидал. Результат меняется, если я изменяю направление или масштаб одного и того же изображения.
Я был в ловушке этого вопроса в течение нескольких дней. Я буду благодарен за любое предложение, спасибо всем заблаговременно!
Обратите внимание, что преобразование Фурье сохраняет эвклидовое расстояние ... –
@OliverCharlesworth Спасибо за ваш ответ. Что вы подразумеваете под словом «Преобразование Фурье сохраняет евклидово расстояние»? Означает ли этот вопрос мою ошибку? –
Вы говорите, что пытаетесь вычислить эвклидово расстояние в области Фурье. Я говорю, что это значение будет одинаковым в не-преобразованном домене. –