我在修复图像中的回声。 图片为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
首先,如果通过“回声”表示重复模式,那么逆滤波不是您的解决方案,因为您现在可能不是重复的频率。相反,典型的傅立叶域滤波非常适用于这种情况!对噪声图像进行FFT处理,并检查您获得某些高价值的位置。这个高值是对应于模式的频率。取消这个值(可能还有一些值),然后进入iFFT。应该清除你的图像的噪音。 – sepdek
我的意思是回声,有相同图像的双重图像,第一个中心是(0,0),第二个是(0,20)。 –