Я пытаюсь исправить эхо в изображении. Изображение - 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, почему? и что я делаю неправильно?
Я не уверен в фильтрации. Но строка: 'filter = Hs/(Hs * H + lambda)' кажется мне проблематичной, потому что деление есть деление матрицы с сингулярной матрицей. Либо вам нужно использовать точечный '. /' Или использовать 'diag (256) * lambda' (я думаю, это первый). – bdecaf
Сначала, если «эхо» означает повторяющийся шаблон, тогда инверсная фильтрация не является вашим решением, так как вы не можете теперь частоту повторения. Напротив, типичная фильтрация Фурье-домена работает очень хорошо - это такие случаи! Возьмите БПФ шумового изображения и проверьте, где вы получаете большое значение. Это высокое значение - это частота, которая соответствует шаблону. Отмените это значение (и, возможно, некоторые значения вокруг него) и введите iFFT. Ваше изображение должно быть очищено от шума. – sepdek
Я имею в виду эхо, имеет двойное изображение того же изображения, что центр первого (0,0), а второй - (0,20), например. –