数字图像处理matlab代码(共25页).doc

上传人:飞****2 文档编号:13560320 上传时间:2022-04-30 格式:DOC 页数:25 大小:1.77MB
返回 下载 相关 举报
数字图像处理matlab代码(共25页).doc_第1页
第1页 / 共25页
数字图像处理matlab代码(共25页).doc_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《数字图像处理matlab代码(共25页).doc》由会员分享,可在线阅读,更多相关《数字图像处理matlab代码(共25页).doc(25页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上一、编写程序完成不同滤波器的图像频域降噪和边缘增强的算法并进行比较,得出结论。1、不同滤波器的频域降噪1.1 理想低通滤波器(ILPF)和二阶巴特沃斯低通滤波器(BLPF)clc;clear all;close all;I1=imread(me.jpg);I1=rgb2gray(I1);subplot(2,2,1),imshow(I1),title(原始图像);I2=imnoise(I1,salt & pepper);subplot(2,2,2),imshow(I2),title(噪声图像);F=double(I2);g = fft2(F);g = fftshift(

2、g);M, N=size(g);result1=zeros(M,N);result2=zeros(M,N);nn = 2;d0 =50;m = fix(M/2);n = fix(N/2);for i = 1:M for j = 2:N d = sqrt(i-m)2+(j-n)2); h = 1/(1+0.414*(d/d0)(2*nn); result1(i,j) = h*g(i,j); if(g(i,j) 50) result2(i,j) = 0; else result2(i,j) =g(i,j); end endendresult1 = ifftshift(result1);result

3、2 = ifftshift(result2);J2 = ifft2(result1);J3 = uint8(real(J2);subplot(2, 2, 3),imshow(J3,),title(巴特沃斯低通滤波结果);J4 = ifft2(result2);J5 = uint8(real(J4);subplot(2, 2, 4),imshow(J5,),title(理想低通滤波结果);实验结果: 1.2 指数型低通滤波器(ELPF) clc;clear all;close all;I1=imread(me.jpg);I1=rgb2gray(I1);I2=im2double(I1);I3=im

4、noise(I2,gaussian,0.01);I4=imnoise(I3,salt & pepper,0.01);subplot(1,3,1),imshow(I2), title(原始图像); %显示原始图像subplot(1,3,2),imshow(I4),title(加入混合躁声后图像 ); s=fftshift(fft2(I4);%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心M,N=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=40; for i=1:M

5、 for j=1:N d=sqrt(i-n1)2+(j-n2)2); %点(i,j)到傅立叶变换中心的距离 h=exp(log(1/sqrt(2)*(d/d0)2); s(i,j)=h*s(i,j); %ILPF滤波后的频域表示 end end s=ifftshift(s); %对s进行反FFT移动 s=im2uint8(real(ifft2(s); subplot(1,3,3),imshow(s),title(ELPF滤波后的图像(d=40)); 运行结果: 1.3 梯形低通滤波器(TLPF)clc;clear all;close all;I1=imread(me.jpg);I1=rgb2g

6、ray(I1); %读取图像I2=im2double(I1);I3=imnoise(I2,gaussian,0.01);I4=imnoise(I3,salt & pepper,0.01);subplot(1,3,1),imshow(I2),title(原始图像); %显示原始图像 subplot(1,3,2),imshow(I4),title(加噪后的图像); s=fftshift(fft2(I4);%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心M,N=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor

7、(N/2); %对N/2进行取整d0=10;d1=160; for i=1:M for j=1:N d=sqrt(i-n1)2+(j-n2)2); %点(i,j)到傅立叶变换中心的距离 if (d=d0) h=1; else if (d0=d1) h=(d-d1)/(d0-d1); else h=0; end end s(i,j)=h*s(i,j); %ILPF滤波后的频域表示 end end s=ifftshift(s); %对s进行反FFT移动 s=im2uint8(real(ifft2(s); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1

8、,3,3),imshow(s),title(TLPF滤波后的图像);运行结果:1.4 高斯低通滤波器(GLPF)clear all;clc;close all;I1=imread(me.jpg);I1=rgb2gray(I1);I2=im2double(I1);I3=imnoise(I2,gaussian,0.01);I4=imnoise(I3,salt & pepper,0.01);subplot(1,3,1),imshow(I2),title(原始图像);subplot(1,3,2),imshow(I4),title(加噪后的图像);s=fftshift(fft2(I4);%将灰度图像的二

9、维不连续Fourier 变换的零频率成分移到频谱的中心M,N=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=40; for i=1:M for j=1:N d=sqrt(i-n1)2+(j-n2)2); %点(i,j)到傅立叶变换中心的距离 h=1*exp(-1/2*(d2/d02); %GLPF滤波函数 s(i,j)=h*s(i,j); %ILPF滤波后的频域表示 end ends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s);

10、%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3),imshow(s),title(GLPF滤波后的图像(d=40));运行结果: 1.5 维纳滤波器clc;clear all;close all;I=imread(me.jpg); %读取图像 I=rgb2gray(I); I1=im2double(I);I2=imnoise(I1,gaussian,0.01);I3=imnoise(I2,salt & pepper,0.01);I4=wiener2(I3);subplot(1,3,1),imshow(I1),title(原始图像); %显

11、示原始图像 subplot(1,3,2),imshow(I3),title(加入混合躁声后图像); I4=wiener2(I3);subplot(1,3,3),imshow(I4),title(wiener滤波后的图像); 运行结果:结 论:理想低通滤波器,虽然有陡峭的截止频率,却不能产生良好的效果,图像由于高频分量的滤除而变得模糊,同时还产生振铃效应。 巴特沃斯滤波器通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。在振幅的对数对角频率的波得图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大。由于转移特性曲线的尾部保留较多的高频,所以对噪声的平滑效

12、果不如ILPE。 指数型低通滤波器具有较平滑的过滤带,经此平滑后的图像没有“振铃”现象,而与巴沃特斯滤波相比,它具有更快的衰减特性,处理图像稍微模糊一些。梯形低通滤波器的性能介于巴沃特斯与完全平滑滤波器之间,对图像具有一定的模糊和振铃效应。高斯低通滤波器其原理就是RC电路具有使低频信号较易通过而抑制较高频率信号的作用,可以有效地去除服从正态分布的噪声。维纳滤波在处理光学传递函数在零点附近的噪声方法问题比较有效,通过选择适当参数,可以有效地消除或抑制噪声和“振铃效应”。2、边缘增强2.1 Robert 算子边缘检测clc;clear all;close all;I=imread(me.jpg);

13、I=rgb2gray(I);subplot(1,3,1),imshow(I),title(原始图像); %显示原始图像 BW1 = edge(I,robert); subplot(1,3,2),imshow(BW1),title(robert算子检测结果(T默认)); BW2 = edge(I,robert,0.04); %T取0.04subplot(1,3,3),imshow(BW2),title(robert算子检测结果(T=0.04)); 运行结果:2.2 Sobel 算子边缘检测clc;clear all;close all;I=imread(me.jpg);I=rgb2gray(I)

14、; %读取图像subplot(1,3,1),imshow(I),title(原始图像); %显示原始图像 BW1 = edge(I,sobel); %阈值默认subplot(1,3,2),imshow(BW1),title(sobel算子(T默认));BW2=edge(I,sobel,0.04); %阈值取0.04subplot(1,3,3),imshow(BW2),title(sobel算子(T=0.04));运行结果:2.3 Prewitt算子边缘检测clc;clear all;close all;I=imread(me.jpg);I=rgb2gray(I);subplot(1,3,1),

15、imshow(I),title(原始图像); %显示原始图像 BW1 = edge(I,Prewitt); %阈值默认subplot(1,3,2),imshow(BW1),title(Prewitt算子(T默认));BW2 = edge(I,Prewitt,0.04); %T取0.04subplot(1,3,3),imshow(BW2),title(Prewitt算子(T=0.04)); %阈值越小,检测出的边缘越丰富运行结果:2.4 LoG(laplacian of gaussian)算子边缘检测clc;clear all;close all;I=imread(me.jpg);I=rgb2g

16、ray(I);subplot(1,3,1),imshow(I),title(原始图像); %显示原始图像 BW1 = edge(I,log,0.003); %T=0.003,sigma默认2subplot(1,3,2),imshow(BW1),title( LoG 算子(sigma=2);BW2 = edge(I,log,0.003,2.20); %T=0.003,sigma=2.20subplot(1,3,3),imshow(BW2),title( LoG 算子(sigma=2.20);运行结果:2.5 Canny算子边缘检测clc;clear all;close all;I=imread(

17、me.jpg);I=rgb2gray(I);subplot(1,3,1),imshow(I),title(原始图像); %显示原始图像 BW1 = edge(I,canny); %sigma默认1subplot(1,3,2),imshow(BW1),title(canny算子(sigma=1);BW2 = edge(I,canny,0.04 0.10,1.3); %T取0.04 0.10sigma=1.3subplot(1,3,3),imshow(BW2),title(canny算子(sigma=1.3);运行结果:结 论:Roberts算子定位比较精确,但由于不包括平滑,所以对噪声比较敏感。

18、该算子对具有陡峭边缘且噪声低的图像效果较好。Prewitt算子和Sobel算子都是一阶的微分算子,而前者是平均滤波,后者是加权平均滤波且检测的图像边缘可能大于2个像素。这两者对灰度渐变低噪声的图像有较好的检测效果,但是对于混合多复杂噪声的图像,处理效果就不理想了。LOG滤波器中的正比于低通滤波器的宽度,越大,平滑作用越显著,去除噪声越好,但图像的细节也损失越大,边缘精度也就越低。所以在边缘定位精度和消除噪声级间存在着矛盾,应该根据具体问题对噪声水平和边缘点定位精度要求适当选取。而且LOG方法没有解决如何组织不同尺度滤波器输出的边缘图为单一的、正确的边缘图的具体方法。Canny方法则以一阶导数为

19、基础来判断边缘点。它是一阶传统微分中检测阶跃型边缘效果最好的算子之一。它比Roberts算子、Sobel算子和Prewitt算子极小值算法的去噪能力都要强,但它也容易平滑掉一些边缘信息。二、编写程序完成不同锐化方法的图像锐化的算法并进行比较,得出结论。1、微分1.1 基于一阶微分的图像锐化-梯度法clc;clear all;close all;I=imread(me.jpg);I=rgb2gray(I);subplot(1,2,1),imshow(I),title(原始图像); %显示原始图像 I=double(I);IX,IY=gradient(I); %返回梯度值OUT1=sqrt(IX.

20、*IX+IY.*IY);subplot(1,2,2),imshow(OUT1),title(梯度值图像 ); 运行结果:2、高通滤波法2.1 理想高通滤波(IHPF)clc;clear all;close all;I1=imread(me.jpg);I1=rgb2gray(I1);I2=im2double(I1);subplot(1,2,1),imshow(I1),title(原始图像); %显示原始图像 s=fftshift(fft2(I2); M,N=size(s); %分别返回s的行数到M中,列数到N中n=2; %对n赋初值n1=floor(M/2); %对M/2进行取整n2=floor

21、(N/2); %对N/2进行取整d0=10; %初始化d0 for i=1:Mfor j=1:Nd=sqrt(i-n1)2+(j-n2)2); %点(i,j)到傅立叶变换中心的距离 if d=d0 h=0; else h=1; end s(i,j)=h*s(i,j); %IHPF滤波后的频域表示 endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,2,2),imshow(s),title(IHPF滤波后的图像(d=10) ); 运行结

22、果:2.2 巴特沃斯高通滤波(BHPF)clc;clear all;close all;I1=imread(me.jpg);I1=rgb2gray(I1); %读取图像I2=im2double(I1);subplot(1,2,1),imshow(I1),title(原始图像); %显示原始图像 s=fftshift(fft2(I2);%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心M,N=size(s); %分别返回s的行数到M中,列数到N中n=2; %对n赋初值n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=10;

23、%初始化d0 for i=1:M for j=1:N d=sqrt(i-n1)2+(j-n2)2); %点(i,j)到傅立叶变换中心的距离 if (d=0) h=0; else h=1/(1+0.5*(d0/d)(2*n); %BHPF滤波函数 end s(i,j)=h*s(i,j); %BHPF滤波后的频域表示 end end s=ifftshift(s); %对s进行反FFT移动 s=im2uint8(real(ifft2(s); subplot(1,2,2),imshow(s),title(BHPF滤波后的图像(d=10));运行结果:2.3 指数型高通滤波(EHPF)clc;clear

24、 all;close all;I1=imread(me.jpg);I1=rgb2gray(I1);I2=im2double(I1);subplot(1,2,1),imshow(I1),title(原始图像); %显示原始图像 s=fftshift(fft2(I2);%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心M,N=size(s); %分别返回s的行数到M中,列数到N中n=2; %对n赋初值n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=10; %初始化d0 for i=1:M for j=1:N d=sqrt(i

25、-n1)2+(j-n2)2); %点(i,j)到傅立叶变换中心的距离 if (d=0) h=0; else h=exp(log(1/sqrt(2)*(d0/d)2);%EHPF滤波函数 end s(i,j)=h*s(i,j); %EHPF滤波后的频域表示 end end s=ifftshift(s); %对s进行反FFT移动 s=im2uint8(real(ifft2(s); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,2,2),imshow(s),title(EHPF滤波后的图像(d=10)); 运行结果:2.4 梯形高通滤波(THPF)c

26、lc;clear all;close all;I1=imread(me.jpg);I1=rgb2gray(I1); %读取图像I2=im2double(I1);subplot(1,2,1),imshow(I1),title(原始图像); %显示原始图像 s=fftshift(fft2(I2); %将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心M,N=size(s); %分别返回s的行数到M中,列数到N中n=2; %对n赋初值n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=5; d1=10; %初始化d0 for i=1

27、:M for j=1:N d=sqrt(i-n1)2+(j-n2)2); %点(i,j)到傅立叶变换中心的距离 if (d=d0) h=0; else if (d0=d1) h=(d-d1)/(d0-d1); else h=1; end end s(i,j)=h*s(i,j); %THPF滤波后的频域表示 endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,2,2),imshow(s),title(THPF滤波后的图像); 运行结果:

28、2.5 高斯型高通滤波(GHPF)clc;clear all;close all;I1=imread(me.jpg);I1=rgb2gray(I1);I2=im2double(I1);subplot(1,2,1),imshow(I1),title(原始图像); %显示原始图像 s=fftshift(fft2(I2); %将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心M,N=size(s); %分别返回s的行数到M中,列数到N中n=2; %对n赋初值n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=10; %初始化d0 f

29、or i=1:M for j=1:N d=sqrt(i-n1)2+(j-n2)2); %点(i,j)到傅立叶变换中心的距离 h=1*exp(1-1/2*(d2/d02); %GHPF滤波函数 s(i,j)=h*s(i,j); %GHPF滤波后的频域表示 endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,2,2),imshow(s),title(GHPF滤波后的图像(d=10) ); 运行结果:3、反锐化掩模法clc;clear al

30、l;close all;I1=imread(me.jpg);I1=rgb2gray(I1);subplot(1,2,1),imshow(I1),title(原始图像); %显示原始图像 I=im2double(I1);M=1 1 1;1 1 1;1 1 1/9;J2=filter2(M,I);J3=I-J2;subplot(1,2,2),imshow(J3),title(反锐化掩模法);运行结果:结 论:图像平滑往往使图像中的边界、轮廓变的模糊,为了减少这类不利效果的影响,这就需要利用图像锐化技术,使图像的边缘变的清晰。图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变的清晰,经过平

31、滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变的清晰。微分运算是求信号的变化率,有加强高频分量的作用,从而使图像轮廓清晰。因此需要对图像的某种导数运算是各向同性的,梯度运算符合上述条件。此法的缺点是增强后的图像仅显示灰度变换比较剧烈的边缘轮廓,而灰度变化平缓的区域呈现一片黑色,大量信息丢失。从频率域来考虑,图像模糊的实质是因为其高频分量被衰减,因此可以用高通滤波器来使图像清晰。图像中的边缘与图像频谱中的高频分量相对应,所以采用高通滤波让高频分量顺利通过,而对低频分量限制,从而实现图像的锐化。掩模法是指将原始图像乘以一个放大系数,然后

32、减去低通图像构成一幅高频增强图像,这样的图像恢复了部分高通滤波时丢失的低频成分,使得最终结果与原始图像更为接近。三、 编写程序完成不同分割方法的图像分割的算法并进行比较,得出结论。图像分割是图像处理的重要领域,是计算机进一步处理的基础。笔者完成了 两个比较有代表性的图像分割算法,一个是基于灰度的阈值分割,一个是基于边 缘信息的分割,分水岭算法进行的图像分割。 1. Otsu 法阈值分割图像clc;clear all;close all;I=imread(me.jpg);I=rgb2gray(I);subplot(1,2,1),imshow(I),title(原始图像); %显示原始图像 lev

33、el=graythresh(I); %确定灰度阈值 BW=im2bw(I,level); subplot(1,2,2),imshow(BW),title(Otsu 法阈值分割图像);运行结果: 可以看出,Otsu 法阈值分割图像对于前景目标和背景灰度差别 较大、目标灰度范围较小,的情况下可以实现较为理想的分割。在一定的领域具 有重要应用。但对背景和目标灰度分布不明显的情况下分割效果不理想。 2. 分水岭算法图像分割。 clc;clear all;close all;I=imread(me.jpg);I=rgb2gray(I);f=double(I); hv=fspecial(prewitt);

34、 hh=hv.; gv=abs(imfilter(f,hv,replicate); gh=abs(imfilter(f,hh,replicate); g=sqrt(gv.2+gh.2);%计算梯度 df=bwdist(f);%计算到最近不为0的点的距离 L1=watershed(df); %分水岭算法 em=L1=0; im=imextendedmax(f,20);%计算大于某阈值的极大值g2=imimposemin(g,im|em);%使用形态重构修改强度图像 g,使得它在 im|em 非零的地方只有区域极小值。 L2=watershed(g2); wr2=L2=0; f(wr2)=255;

35、 subplot(1,2,1),imshow(I),title(原始图像); subplot(1,2,2),imshow(uint8(f),title(分割结果);运行结果: 可以看出,分水岭算法可以较好的实现图像的分割。分水岭算法 是图像分割的一种重要方法, 但是此方法对噪声比较敏感, 容易造成过分割现象。 需要进行一定的预处理。 本程序在进行自动标记后效果明显, 分割效果比较理想。四、 编写程序完成不同压缩方法的图像压缩的算法并进行比较,得出结论。图像压缩算法有有损压缩和无损压缩两大类。无损编码主要是熵编码,典型 的有哈夫曼编码,还有利用图像空间冗余的游程编码。有损编码主要是变换域编 码,

36、如 DCT 变换编码,小波压缩编码等。1.T 变换压缩 clc;clear all;close all;X=imread(me.jpg); X=rgb2gray(X); subplot(221),imshow(X),title(原始图像); %对图像用小波进行层小波分解 c,s=wavedec2(X,2,bior3.7); %提取小波分解结构中的一层的低频系数和高频系数 cal=appcoef2(c,s,bior3.7,1); ch1=detcoef2(h,c,s,1); %水平方向 cv1=detcoef2(v,c,s,1); %垂直方向 cd1=detcoef2(d,c,s,1); %斜线

37、方向 %各频率成份重构 a1=wrcoef2(a,c,s,bior3.7,1); h1=wrcoef2(h,c,s,bior3.7,1); v1=wrcoef2(v,c,s,bior3.7,1); d1=wrcoef2(d,c,s,bior3.7,1); c1=a1,h1;v1,d1; %进行图像压缩 %保留小波分解第一层低频信息 %首先对第一层信息进行量化编码 ca1=appcoef2(c,s,bior3.7,1); ca1=wcodemat(ca1,440,mat,0); %改变图像高度并显示 ca1=0.5*ca1; subplot(222);imshow(cal,); title(第一次压缩图像); %保留小波分解第二层低频信息进行压缩 ca2=appcoef2(c,s,bi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com