%同态滤波实现%%%%%%
clc;clear all;
img=imread('cc.jpg');
img=rgb2gray(img);
figure(1);
imshow(img),title('原始图片');
img=im2double(img);%将图片 img 转换成 double 型
lnimg=log(img);%取对数
Fimg=fft2(lnimg);%傅里叶变换
P=fftshift(Fimg);%将频域原点移到图像中心;
[M,N]=size(P);
figure(2);
imshow(uint8(abs(P)),[]),title('滤波前的频谱图像');%绘制源图像的频谱
的幅度谱
x0=floor(M/2);%向下取整数
y0=floor(N/2);
%同态滤波参数设置
D0=100;
c=1.50;
Hh=2;Hl=0.5;%Hh>1,Hl<1
for u=1:M
for v=1:N
D(u,v)=(u-x0)^2+(v-y0)^2;
H(u,v)=(Hh-Hl)*(1-exp(-c*(D(u,v)^2/D0^2)))+Hl;%同态滤波器函数
end
end
hImg=Fimg.*H;%滤波,矩阵点乘
Q=fftshift(hImg);%傅里叶逆变换