|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
% 实现同态滤波
clear;
close all;
F = imread('pout.tif');
[M,N] = 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)
自己编的程序,处理后图象亮度明显偏暗,用直方图均匀化处理后,效果依旧不怎么好。我看了一下直方图,发现图象做对数变换后实现图象动态范围压缩,后来作指数变换并没有恢复。
谁能帮我看看问题出在哪吗?谢谢! |
|