2014-12-17 4 views
0

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

Но я не думаю, что это сработало, как я ожидал. Результат меняется, если я изменяю направление или масштаб одного и того же изображения.

Я был в ловушке этого вопроса в течение нескольких дней. Я буду благодарен за любое предложение, спасибо всем заблаговременно!

+1

Обратите внимание, что преобразование Фурье сохраняет эвклидовое расстояние ... –

+0

@OliverCharlesworth Спасибо за ваш ответ. Что вы подразумеваете под словом «Преобразование Фурье сохраняет евклидово расстояние»? Означает ли этот вопрос мою ошибку? –

+0

Вы говорите, что пытаетесь вычислить эвклидово расстояние в области Фурье. Я говорю, что это значение будет одинаковым в не-преобразованном домене. –

ответ

0

Я рекомендую вам прочитать «Извлечение и обработка изображений для компьютерного зрения» от Nixon и Aguado. Вы найдете там то, что ищете