一、实验目的
(1)了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学的图像增强的理论知识和相关算法。
(2)熟练掌握低通、高通、带通、同态滤波器的使用方法,明确不同性质的滤波器对图像的影响和作用。
二、实验内容
(1)选择合适的灰度图像,添加随机噪声
(2)对图像进行低通滤波,观察滤波效果
(3)选择一灰度图像,进行高通滤波,观察滤波效果
(4)选择合适的灰度图像,进行带通滤波,观察滤波效果
(5)选择合适的数字图像,进行同态滤波,观察滤波效果
三、实验代码及结果、分析
(1)选择合适的灰度图像,添加随机噪声
- 代码:
I=imread('E:\大三课件\大三下\数字图像处理\实验\实验四\shiyan4.jpg');
I1=rgb2gray(I);
I2=imnoise(I1,'gaussian',0.03); %加均值为0,方差为0.03的高斯噪声
I3=double(I2);
fft_I=fft2(I2); % 二维离散傅立叶变换
shift_I=fftshift(fft_I); % 直流分量移到频谱中心
[M,N]=size(shift_I);
m=floor(M/2);
n=floor(N/2);
figure(1)
subplot(1,3,1),imshow(I),title('原图像');
subplot(1,3,2),imshow(I1),title('灰度图像');
subplot(1,3,3),imshow(I2),title('加入高斯噪声'); %显示有高斯噪声图像
- 结果:
- 分析:
- 用imnoise()函数给图像添加噪声,简单的噪声有以下5种类型:’gaussian’(高斯白噪声),‘localvar’ (与图象灰度值有关的零均值高斯白噪声),’poisson’(泊松噪声), ‘salt & pepper’(椒盐噪声)、’speckle’(斑点噪声)。本题中加入高斯噪声
(2)选择一灰度图像,进行低通滤波,观察滤波效果
- 代码
%低通滤波
level=4;%2级巴特沃斯滤波器 2时接近高斯,5时接近理想,但是数值更大时会有模糊效应
d1=20;
d2=50;%截止半径
d3=300;
%巴特沃斯低通滤波
for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h11=1/(1+0.414*(d/d1)^(2*level));
h12=1/(1+0.414*(d/d2)^(2*level));
h13=1/(1+0.414*(d/d3)^(2*level));
result11(i,j)=h11*shift_I(i,j);
result12(i,j)=h12*shift_I(i,j);
result13(i,j)=h13*shift_I(i,j);
end
end
result111=uint8(real(ifft2(ifftshift(result11))));
result112=uint8(real(ifft2(ifftshift(result12))));
result113=uint8(real(ifft2(ifftshift(result13))));
%高斯低通滤波
for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h21=exp(-1/2*(d^2/d1^2));
h22=exp(-1/2*(d^2/d2^2));
h23=exp(-1/2*(d^2/d3^2));
result21(i,j)=h21*shift_I(i,j);
result22(i,j)=h22*shift_I(i,j);
result23(i,j)=h23*shift_I(i,j);
end
end
result121=uint8(real(ifft2(ifftshift(result21))));
result122=uint8(real(ifft2(ifftshift(result22))));
result123=uint8(real(ifft2(ifftshift(result23))));
figure(2)
subplot(2,3,1),imshow(result111),title('巴特沃斯低通滤波d=20');
subplot(2,3,2),imshow(result112),title('巴特沃斯低通滤波d=50');
subplot(2,3,3),imshow(result113),title('巴特沃斯低通滤波d=300');
subplot(2,3,4),imshow(result121),title('高斯低通滤波d=20');
subplot(2,3,5),imshow(result122),title('高斯低通滤波d=50');
subplot(2,3,6),imshow(result123),title('高斯低通滤波d=300');
- 结果:
- 分析:
1.巴特沃斯低通滤波器的传递函数为:h=1/(1+0.414*(d/d0)^(2*level));
高斯低通滤波器的传递函数为 :h=exp(-1/2*(d^2/d0^2));
(d0为截止半径,level为巴特沃斯低通滤波器的阶数)
- 滤波器的半径不同时,对应的滤波效果也不同,半径越小,平滑效果越明显,但是半径过小,会使得图像变得模糊不清
- %巴特沃斯滤波器 2阶时接近高斯,5时接近理想,但是数值更大时会有模糊效应
(3)选择一灰度图像,进行高通滤波,观察滤波效果
- 代码:
%高通滤波
level=4;%2级巴特沃斯滤波器 2时接近高斯,5时接近理想,但是数值更大时会有模糊效应
d1=2;
d2=4;%截止半径
d3=8;
%巴特沃斯高通滤波
for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h11=1/(1+0.414*(d1/d)^(2*level));
h12=1/(1+0.414*(d2/d)^(2*level));
h13=1/(1+0.414*(d3/d)^(2*level));
result11(i,j)=h11*shift_I(i,j);
result12(i,j)=h12*shift_I(i,j);
result13(i,j)=h13*shift_I(i,j);
end
end
result111=uint8(real(ifft2(ifftshift(result11))));
result112=uint8(real(ifft2(ifftshift(result12))));
result113=uint8(real(ifft2(ifftshift(result13))));
%高斯高通滤波
for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h21=1-exp(-1/2*(d^2/d1^2));
h22=1-exp(-1/2*(d^2/d2^2));
h23=1-exp(-1/2*(d^2/d3^2));
result21(i,j)=h21*shift_I(i,j);
result22(i,j)=h22*shift_I(i,j);
result23(i,j)=h23*shift_I(i,j);
end
end
result121=uint8(real(ifft2(ifftshift(result21))));
result122=uint8(real(ifft2(ifftshift(result22))));
result123=uint8(real(ifft2(ifftshift(result23))));
figure(1)
subplot(1,3,1),imshow(I),title('原图像');
subplot(1,3,2),imshow(I1),title('灰度图像');
subplot(1,3,3),imshow(I2),title('加入高斯噪声'); %显示有高斯噪声图像
figure(2)
subplot(2,3,1),imshow(result111),title('巴特沃斯高通滤波d=20');
subplot(2,3,2),imshow(result112),title('巴特沃斯高通滤波d=50');
subplot(2,3,3),imshow(result113),title('巴特沃斯高通滤波d=300');
subplot(2,3,4),imshow(result121),title('高斯高通滤波d=20');
subplot(2,3,5),imshow(result122),title('高斯高通滤波d=50');
subplot(2,3,6),imshow(result123),title('高斯高通滤波d=300');
- 结果:
- 分析:
1、巴特沃斯高通滤波器的传递函数为:h=1/(1+0.414*(d0/d)^(2*level));
高斯高通滤波器的传递函数为 :h=1-exp(-1/2*(d^2/d0^2));
2、图像的大部分能量集中在低频分量,高通滤波会将很多低频分量滤除,导致增强图中边缘得到加强,但光滑区域灰度减弱变暗甚至接近黑色
3、截止半径越大,图像越接近黑色,导致图像的轮廓也不太清晰
(4)选择合适的灰度图像,进行带通滤波,观察滤波效果
- 代码:
%带通滤波
dl=0.5;
dh=50;%截止半径
for i=1:M
for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
if d<=dl || d>=dh
h=0;
else
h=1;
end
result(i,j)=h*shift_I(i,j);
end
end
result1=uint8(real(ifft2(ifftshift(result))));
figure(2)
subplot(1,2,1),imshow(I2),title('高斯噪声图像');
subplot(1,2,2),imshow(result1),title('带通滤波后图像');
- 结果:
- 分析:
1、带通滤波器的传递函数为H=1 (dl<d<dh), H=0(d=其他)
2、带通滤波器可增强既不是图像中的高频成分也不是低频成分
(5)选择合适的灰度图像,进行同态滤波,观察滤波效果
- 代码:
P = 2*M; Q = 2*N;
I2 = zeros(P,Q);
for i = 1:M
for j =1:N
I2(i,j) = I(i,j); %对图像进行填充
end
end
I2=log(I2+1); %取对数
FI=fft2(I2); %傅里叶变换
rL=1.0; %rl越靠近1,越亮
rH=1.1; % 可根据需要效果调整参数 ,rh越大,背景越亮
c=100; %锐化参数,越大,锐化程度越大
D0=1; %D0越小,越亮
for u=1:P
for v=1:Q
D(u,v)=sqrt(((u-M).^2+(v-N).^2)); %频率域中点(u,v)与频率矩形中心的距离
H(u,v)=(rH-rL).*(1-exp(-c.*(D(u,v)^2./D0^2)))+rL; %高斯同态滤波
end
end
H=ifftshift(H); %对H做反中心化
I3=ifft2(H.*FI); %傅里叶逆变换
I4=real(I3);
result =exp(I4(1:M, 1:N))-1; %截取一部分,,取指数
figure(1)
subplot(1,3,1),imshow(im),title('灰度图像');
subplot(1,3,2),imshow(In),title('高斯噪声图像');
subplot(1,3,3),imshow(result),title('同态滤波图像');
- 结果:
- 分析: