频域增强.docx
- 文档编号:8225359
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:17
- 大小:910.21KB
频域增强.docx
《频域增强.docx》由会员分享,可在线阅读,更多相关《频域增强.docx(17页珍藏版)》请在冰豆网上搜索。
频域增强
频域增强
1、低通滤波
A、理想低通滤波器
B、巴特沃斯低通滤波器
C、指数低通滤波器
2、高通滤波
A、理想高通滤波器
B、巴特沃斯高通滤波器
C、指数高通滤波器
3、同态滤波
实例操作:
例1低通滤波器
clearall
I=imread('testpat1.png');
J=imnoise(I,'gaussian');
J=double(J);
%分别设置4种不同的滤波半径
D1=15;D2=30;D3=50;D4=80;
%傅里叶变换并中心化
Fuv=fftshift(fft2(J));
[M,N]=size(Fuv)
%确定傅里叶变换的原点
xo=floor(M/2);yo=floor(N/2);
%分别求4个不同滤波半径的ILPF
fori=1:
M
forj=1:
N
D=sqrt((i-xo)^2+(j-yo)^2);
if(D>=D1)
h1(i,j)=0;
else
h1(i,j)=1;
end
if(D>=D2)
h2(i,j)=0;
else
h2(i,j)=1;
end
if(D>=D3)
h3(i,j)=0;
else
h3(i,j)=1;
end
if(D>=D4)
h4(i,j)=0;
else
h4(i,j)=1;
end
end
end
%滤波矩阵点乘
Guv1=h1.*Fuv;
Guv2=h2.*Fuv;
Guv3=h3.*Fuv;
Guv4=h4.*Fuv;
%傅里叶逆变换
g1=ifftshift(Guv1);
g1=uint8(real(ifft2(g1)));
g2=ifftshift(Guv2);
g2=uint8(real(ifft2(g2)));
g3=ifftshift(Guv3);
g3=uint8(real(ifft2(g3)));
g4=ifftshift(Guv4);
g4=uint8(real(ifft2(g4)));
%分别显示各个图像
subplot(2,3,1);
imshow(I);title('原始图像');
subplot(2,3,2);
imshow(J,[]);title('加入高斯噪声图像');
subplot(2,3,3);
imshow(g1);title('ILPFD0=15');
subplot(2,3,4);
imshow(g2);title('ILPFD0=30');
subplot(2,3,5);
imshow(g3);title('ILPFD0=50');
subplot(2,3,6);
imshow(g4);title('ILPFD0=80');
例2巴特沃斯低通滤波器
clearall
I=imread('testpat1.png');
J=imnoise(I,'gaussian');
J=double(J);
%分别设置4种不同的滤波半径
D1=15;D2=30;D3=50;D4=80;
n=2;%滤波器阶数
%傅里叶变换并中心化
Fuv=fftshift(fft2(J));
[M,N]=size(Fuv)
%确定傅里叶变换的原点
xo=floor(M/2);yo=floor(N/2);
%分别求4个不同滤波半径的ILPF
fori=1:
M
forj=1:
N
D=sqrt((i-xo)^2+(j-yo)^2);
h1(i,j)=1/(1+(D/D1)^(2*n));
h2(i,j)=1/(1+(D/D2)^(2*n));
h3(i,j)=1/(1+(D/D3)^(2*n));
h4(i,j)=1/(1+(D/D4)^(2*n));
end
end
%滤波矩阵点乘
Guv1=h1.*Fuv;
Guv2=h2.*Fuv;
Guv3=h3.*Fuv;
Guv4=h4.*Fuv;
%傅里叶逆变换
g1=ifftshift(Guv1);g1=uint8(real(ifft2(g1)));
g2=ifftshift(Guv2);g2=uint8(real(ifft2(g2)));
g3=ifftshift(Guv3);g3=uint8(real(ifft2(g3)));
g4=ifftshift(Guv4);g4=uint8(real(ifft2(g4)));
%分别显示各个图像
subplot(2,3,1);
imshow(I);title('原始图像');
subplot(2,3,2);
imshow(J,[]);title('加入高斯噪声图像');
subplot(2,3,3);
imshow(g1);title('BLPFD0=15');
subplot(2,3,4);
imshow(g2);title('BLPFD0=30');
subplot(2,3,5);
imshow(g3);title('BLPFD0=50');
subplot(2,3,6);
imshow(g4);title('BLPFD0=80');
例3指数低通滤波器
clearall
I=imread('testpat1.png');
J=imnoise(I,'gaussian');
J=double(J);
%分别设置3种不同的滤波半径
D1=20;D2=40;D3=80;
n1=2;n2=8%滤波器阶数
%傅里叶变换并中心化
Fuv=fftshift(fft2(J));
[M,N]=size(Fuv)
%确定傅里叶变换的原点
xo=floor(M/2);yo=floor(N/2);
%分别求4个不同滤波半径的ELPF
fori=1:
M
forj=1:
N
D=sqrt((i-xo)^2+(j-yo)^2);
h1(i,j)=exp(-(D/D1)^n1);
h2(i,j)=exp(-(D/D2)^n1);
h3(i,j)=exp(-(D/D3)^n1);
h4(i,j)=exp(-(D/D1)^n2);
h5(i,j)=exp(-(D/D2)^n2);
h6(i,j)=exp(-(D/D3)^n2);
end
end
%滤波矩阵点乘
Guv1=h1.*Fuv;
Guv2=h2.*Fuv;
Guv3=h3.*Fuv;
Guv4=h4.*Fuv;
Guv5=h5.*Fuv;
Guv6=h6.*Fuv;
%傅里叶逆变换
g1=ifftshift(Guv1);g1=uint8(real(ifft2(g1)));
g2=ifftshift(Guv2);g2=uint8(real(ifft2(g2)));
g3=ifftshift(Guv3);g3=uint8(real(ifft2(g3)));
g4=ifftshift(Guv4);g4=uint8(real(ifft2(g4)));
g5=ifftshift(Guv5);g5=uint8(real(ifft2(g5)));
g6=ifftshift(Guv6);g6=uint8(real(ifft2(g6)));
%分别显示各个图像
subplot(2,3,1);
imshow(g1);title('2阶ELPFD0=20');
subplot(2,3,2);
imshow(g2);title('2阶ELPFD0=40');
subplot(2,3,3);
imshow(g3);title('2阶ELPFD0=80');
subplot(2,3,4);
imshow(g4);title('8阶ELPFD0=20');
subplot(2,3,5);
imshow(g5);title('8阶ELPFD0=40');
subplot(2,3,6);
imshow(g5);title('8阶ELPFD0=80');
例4理想高通滤波器
clearall
I=imread('testpat1.png');
J=double(I);
%分别设置4种不同的滤波半径
D1=15;D2=30;D3=50;
%傅里叶变换并中心化
Fuv=fftshift(fft2(J));
[M,N]=size(Fuv)
%确定傅里叶变换的原点
xo=floor(M/2);yo=floor(N/2);
%分别求3个不同滤波半径的IHPF
fori=1:
M
forj=1:
N
D=sqrt((i-xo)^2+(j-yo)^2);
if(D>=D1)
h1(i,j)=0;
else
h1(i,j)=1;
end
if(D>=D2)
h2(i,j)=0;
else
h2(i,j)=1;
end
if(D>=D3)
h3(i,j)=0;
else
h3(i,j)=1;
end
end
end
%滤波矩阵点乘
Guv1=h1.*Fuv;
Guv2=h2.*Fuv;
Guv3=h3.*Fuv;
%傅里叶逆变换
g1=ifftshift(Guv1);
g1=uint8(real(ifft2(g1)));
g2=ifftshift(Guv2);
g2=uint8(real(ifft2(g2)));
g3=ifftshift(Guv3);
g3=uint8(real(ifft2(g3)));
%分别显示各个图像
subplot(1,3,1);
imshow(g1);title('IHPFD0=15');
subplot(1,3,2);
imshow(g2);title('ILPFD0=30');
subplot(1,3,3);
imshow(g1);title('IHPFD0=50');
例2巴特沃斯高通滤波器
clearall
I=imread('testpat1.png');
J=double(I);
%分别设置4种不同的滤波半径
D1=15;D2=30;D3=50;
n1=2;n2=4;%滤波器阶数
%傅里叶变换并中心化
Fuv=fftshift(fft2(J));
[M,N]=size(Fuv)
%确定傅里叶变换的原点
xo=floor(M/2);yo=floor(N/2);
%分别求4个不同滤波半径的ILPF
fori=1:
M
forj=1:
N
D=sqrt((i-xo)^2+(j-yo)^2);
ifD==0
h1(i,j)=0;
h2(i,j)=0;
h3(i,j)=0;
h4(i,j)=0;
h5(i,j)=0
h6(i,j)=0
else
h1(i,j)=1/(1+(D1/D)^(2*n1));
h2(i,j)=1/(1+(D2/D)^(2*n1));
h3(i,j)=1/(1+(D3/D)^(2*n1));
h4(i,j)=1/(1+(D1/D)^(2*n2));
h5(i,j)=1/(1+(D2/D)^(2*n2));
h6(i,j)=1/(1+(D3/D)^(2*n2));
end
end
end
%滤波矩阵点乘
Guv1=h1.*Fuv;
Guv2=h2.*Fuv;
Guv3=h3.*Fuv;
Guv4=h4.*Fuv;
Guv5=h5.*Fuv;
Guv6=h6.*Fuv;
%傅里叶逆变换
g1=ifftshift(Guv1);g1=uint8(real(ifft2(g1)));
g2=ifftshift(Guv2);g2=uint8(real(ifft2(g2)));
g3=ifftshift(Guv3);g3=uint8(real(ifft2(g3)));
g4=ifftshift(Guv4);g4=uint8(real(ifft2(g4)));
g5=ifftshift(Guv5);g5=uint8(real(ifft2(g5)));
g6=ifftshift(Guv6);g6=uint8(real(ifft2(g6)));
%分别显示各个图像
subplot(2,3,1);
imshow(g1);title('2阶IHPFD0=15');
subplot(2,3,2);
imshow(g2);title('2阶IHPFD0=30');
subplot(2,3,3);
imshow(g3);title('2阶IHPFD0=50');
subplot(2,3,4);
imshow(g4);title('4阶IHPFD0=15');
subplot(2,3,5);
imshow(g5);title('4阶IHPFD0=30');
subplot(2,3,6);
imshow(g6);title('4阶IHPFD0=50');
例6指数低通滤波器
clearall
I=imread('testpat1.png');
J=double(I);
%分别设置3种不同的滤波半径
D1=20;D2=40;D3=50;
n1=2;n2=8;%滤波器阶数
%傅里叶变换并中心化
Fuv=fftshift(fft2(J));
[M,N]=size(Fuv)
%确定傅里叶变换的原点
xo=floor(M/2);yo=floor(N/2);
%分别求3个不同滤波半径的EHPF
fori=1:
M
forj=1:
N
D=sqrt((i-xo)^2+(j-yo)^2);
ifD==0
h1(i,j)=0;
h2(i,j)=0;
h3(i,j)=0;
h4(i,j)=0;
h5(i,j)=0
h6(i,j)=0
else
h1(i,j)=exp(-(D/D1)^n1);
h2(i,j)=exp(-(D/D2)^n1);
h3(i,j)=exp(-(D/D3)^n1);
h4(i,j)=exp(-(D/D1)^n2);
h5(i,j)=exp(-(D/D2)^n2);
h6(i,j)=exp(-(D/D3)^n2);
end
end
end
%滤波矩阵点乘
Guv1=h1.*Fuv;
Guv2=h2.*Fuv;
Guv3=h3.*Fuv;
Guv4=h4.*Fuv;
Guv5=h5.*Fuv;
Guv6=h6.*Fuv;
%傅里叶逆变换
g1=ifftshift(Guv1);g1=uint8(real(ifft2(g1)));
g2=ifftshift(Guv2);g2=uint8(real(ifft2(g2)));
g3=ifftshift(Guv3);g3=uint8(real(ifft2(g3)));
g4=ifftshift(Guv4);g4=uint8(real(ifft2(g4)));
g5=ifftshift(Guv5);g5=uint8(real(ifft2(g5)));
g6=ifftshift(Guv6);g6=uint8(real(ifft2(g6)));
%分别显示各个图像
subplot(2,3,1);
imshow(g1);title('2阶EHPFD0=20');
subplot(2,3,2);
imshow(g2);title('2阶EHPFD0=40');
subplot(2,3,3);
imshow(g3);title('2阶EHPFD0=80');
subplot(2,3,4);
imshow(g4);title('4阶EHPFD0=20');
subplot(2,3,5);
imshow(g5);title('4阶EHPFD0=40');
subplot(2,3,6);
imshow(g5);title('4阶EHPFD0=80');
例7同态滤波器
clearall
I=imread('testpat1.png');
subplot(1,2,1);
imshow(I);title('原始图像');
I=im2double(I);
lni=log(I+0.000001);%求对数
Fi=fftshift(fft2(lni));
[M,N]=size(Fi);
xo=floor(M/2);yo=floor(N/2);%确定傅里叶变换的原点
%同态滤波器参数设置
Hh=2;Hl=0.5;c=1.5;D0=80;
%求H(u,v)
fori=1:
M
forj=1:
N
D=(i-xo)^2+(j-yo)^2;
h(i,j)=(Hh-Hl)*(1-exp(-c*(D/D0^2)))+Hl;
end
end
Gi=h.*Fi;%滤波矩阵点乘
flno=ifftshift(Gi);go=real(ifft2(flno));%傅里叶逆变换
go=exp(go);
gxy=im2uint8(go);
subplot(1,2,2);
imshow(gxy);title('同态滤波结果');
figure
(2);
mesh(h);colormap(jet);title('同态滤波器特性曲线');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 增强