-5

Я хотел бы знать, какие значения в матрице Фурье ответственны за изменение размера, вращения, трансляции и т. Д. Изображения.сделать результат Фурье инвариантным относительно поворота, масштаб, трансляцию

Я закодировал двухмерную функцию DFT, которая выводит матрицу dft комплексных чисел.

Как можно удалить значения, отвечающие на масштабирование, перевод, и вращение изображения, таким образом, что, когда у меня есть 2 изображения, например:

image1

Изображение2 = Image1 вращаемый 90degree

Как только мы сравним матрицу DFT обоих изображений, мы обнаружим, что они равны.

вот код функции ДПФ, что у меня есть:

%---------------------------------------------------------------- 
function [Xk] = dft1(xn) 
N=length(xn); 
n = 0:1:N-1; % row vector for n 
k = 0:1:N-1; % row vecor for k 
WN = exp(-1j*2*pi/N); % Twiddle factor (w) 
nk = n'*k; % creates a N by N matrix of nk values 
WNnk = WN .^ nk; % DFT matrix 
Xk = (WNnk*xn); 
%---------------------------------------------------------------- 

%---------------------------------------------------------------- 
function out=dft2(x) 

y=zeros(size(x)); 
y1=y; 
C=size(x,2); %number of columns 
for c=1:C 
y(:,c)=dft1(x(:,c)); 
end 
R=size(x,1); %number of rows 
for r=1:R 
y1(r,:)=dft1(y(r,:).'); 
end 
out=y1; 
%---------------------------------------------------------------- 
+0

Этот вопрос не о программировании. Это более уместно либо на http://dsp.stackexchange.com/, либо, может быть, на http://math.stackexchange.com/ –

ответ

5

Предполагая, что ваш образ бесконечно (потому что мы не хотим, краевые эффекты Помутнение теорию здесь).

Изменение размера/масштаба изображения приводит к соответствующему масштабу в домене Фурье, масштабируя изображение в s, масштабируя частотную область на 1/s. Для конечных изображений это означает, что если вы масштабируете свое изображение на 2, вы теряете верхнюю половину частотной области - это высокие частоты и детали изображения.

Поворот изображения соответствует аналогичному вращению в частотной области.

Перевод изображения может меняться в фазе коэффициентов Фурье: при переводе на x пикселей в частотной области (до некоторого const-масштабирования) получается коэффициент exp(-j pi x).

Сводная информация об этих свойствах преобразования Фурье может быть найдена here.


Теперь, хотя теория предполагает хорошей и четкие условия, при которых ДПФ двух сигналов может быть совпадающими несмотря на масштабировании/вращение/перевод на практике это не всегда так просто.
Рассмотрим, например, случай перевода: свойства преобразования Фурье позволяют предположить, что два сигнала, которые отличаются только сдвигом, их ДПФ отличается только модуляцией, таким образом, идеальное разделение ДПФ этих двух сигналов даст только компонент модуляции и не выявит только то, что сигналы идентичны с переводом, но также и количеством трансляции между двумя сигналами.
Однако на практике это не так. Для конечных сигналов перевод одного сигнала вызывает краевой эффект: некоторые пиксели теряются (транслируются «вне» видимого сигнала), в то время как появляются некоторые новые пиксели. Поскольку DFT является глобальным (то есть каждое значение преобразованного сигнала зависит от всех значений исходного сигнала), эти граничные эффекты заставляют все значения преобразованных переведенных сигналов отличаться не только желаемой модуляцией, но и совсем другой, что делает соотношение между двумя сигналами вполне произвольно.
То же самое касается масштабирования и вращения.

+0

. Я не мог понять объяснения, которые вы предоставили специально, так как это первый раз, когда я занимаюсь DFT , Не могли бы вы подробнее рассказать? , потому что я действительно хочу: Я хотел бы знать, как я могу удалить значения, ответственные за масштабирование, перевод и поворот изображения из его матрицы DFT, например, когда у меня есть 2 изображения, например: Image1 Image2 = Image1, повернутый на 90 градусов Как только мы сравним матрицу DFT обоих изображений, мы обнаружим, что они равны. Я бы очень признателен, если вы ответите мне> Спасибо – Alladin

+0

@Alladinsaoudi см. Мое редактирование. – Shai

+0

Итак, что я могу сделать, чтобы я мог устранить или, по крайней мере, ограничить уровень изменения, чтобы оба DFT могли быть одинаковыми или хотя бы иметь небольшую разницу? – Alladin

-1

Возьмите величину своего ДПФ, преобразуйте его в логполярные координаты, возьмите БПФ, затем возьмите величину.Это даст вам перевод, вращение и масштабную инвариантность, но это не даст вам устойчивости к другим преобразованиям.

+0

, почему? можете ли вы привести пример? – Shai

+2

Не могли бы вы объяснить больше?, Было бы намного лучше, если бы продемонстрировал пример. спасибо – Alladin