谁能帮我完善一下这个同态滤波器?
% 实现同态滤波clear;
close all;
F = imread('pout.tif');
= size(F);
figure,imhist(F)
%取对数并做傅立叶变换
I = log(double(F));
X = fft2(double(I));
B = fftshift(X);
imshow(log(1+abs(B),[])
%设计同态滤波函数,并滤波
H = ones(M,N);
D0 = 25;
n = 2;
for i = 1:M
for j = 1:N
D(i,j) = sqrt((i-round(M/2))^2+(j-round(N/2))^2);
H(i,j) = 1/(1+(D0/D(i,j))^(2*n))+0.5;
end
end
hp = B.*H;
%作傅立叶反变换并作指数运算
P=ifft2(hp);
G=exp(abs(P));
W=uint8(abs(G));;
figure,
subplot(1,2,1),imshow(F)
subplot(1,2,2),imshow(W)
自己编的程序,处理后图象亮度明显偏暗,用直方图均匀化处理后,效果依旧不怎么好。我看了一下直方图,发现图象做对数变换后实现图象动态范围压缩,后来作指数变换并没有恢复。
谁能帮我看看问题出在哪吗?谢谢! 效果不好,肯定是滤波器的问题。要先搞清楚同态滤波器的功能以及能否处理你遇到的问题,许多时候需要附加其他的滤波手段
回复 #2 花如月 的帖子
滤波器应该没问题吧 我设计的是二阶巴特沃斯滤波器对低频部分进行抑制,高频部分进行加强你可以看得到滤波器的形状的
mesh(H)
[ 本帖最后由 wander1984 于 2007-8-20 15:56 编辑 ] 同态滤波可以消除乘性噪声,但是应用还是非常有限的。你的程序原理上肯定是没有问题的,对于造成的图像变暗。从计算过程上进行一下分析和改进看是否可行,有资料就多参考些别人的做法。要是没有资料就得自己慢慢摸索了
页:
[1]