2014-01-07 7 views
1

Я пытаюсь исправить эхо в изображении. Изображение - 256X256 пикселей. Я использовал инверсную фильтрацию.Matlab исправить эхо на изображении

Это код:

img=readImage('house'); 

lambda=0.001; 
delta=zeros(256); 
delta(1,1)=1/2; 
delta(1,20)=1/2; % delta is The echo function used on real image 
        % I checked the axes and it is echoed 20 pixels to the right 

G=fft2(img); % Fourier Transform of echoed image 

H=fft2(delta); % Fourier transform of delta 
Hs=conj(H); % H* 

filter=Hs/(Hs*H+lambda) 
cleanim=filter*G; 
cleanim=ifft2(cleanim); 

imshow(cleanim,[]); 

Матрица фильтра представляет собой матрицу NaN, почему? и что я делаю неправильно?

+0

Я не уверен в фильтрации. Но строка: 'filter = Hs/(Hs * H + lambda)' кажется мне проблематичной, потому что деление есть деление матрицы с сингулярной матрицей. Либо вам нужно использовать точечный '. /' Или использовать 'diag (256) * lambda' (я думаю, это первый). – bdecaf

+0

Сначала, если «эхо» означает повторяющийся шаблон, тогда инверсная фильтрация не является вашим решением, так как вы не можете теперь частоту повторения. Напротив, типичная фильтрация Фурье-домена работает очень хорошо - это такие случаи! Возьмите БПФ шумового изображения и проверьте, где вы получаете большое значение. Это высокое значение - это частота, которая соответствует шаблону. Отмените это значение (и, возможно, некоторые значения вокруг него) и введите iFFT. Ваше изображение должно быть очищено от шума. – sepdek

+0

Я имею в виду эхо, имеет двойное изображение того же изображения, что центр первого (0,0), а второй - (0,20), например. –

ответ

1

Использование

filter=Hs./(Hs*H+lambda); 
... 
G=fftshift(fft2(img)); 
... 
cleanim=filter.*G; 
cleanim=ifft2(fftshift(cleanim)); 
imshow(real(cleanim),[]); 

вместо этого.

+0

Пробовал, что теперь матрица фильтра не NaN. cleanim = ifft2 (cleanim); => cleanim - это в основном нули, дает неправильное изображение ... Я пытаюсь выяснить это –

+0

обновить свой ответ немного, спасибо – lennon310

+0

Знаете ли вы, что фильтр? если да, можете ли вы рассказать мне, почему все записи каждого столбца «cleanim» одинаковы? –

Смежные вопросы