数字图像处理matlab代码_第1页
数字图像处理matlab代码_第2页
数字图像处理matlab代码_第3页
数字图像处理matlab代码_第4页
数字图像处理matlab代码_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、编写程序完成不同滤波器的图像频域降噪和边缘增强的算法弁进行比较,得出结论。1、不同滤波器的频域降噪1.1 理想低通滤波器(ILPF)I1=imread();%读取图像eighthI2=im2double(I1);I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I2)%显示灰度图像title(' 原始图像');%为图像添加标题subplot(1,3,2);imshow(I4)%加入混合躁声后显示

2、图像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;%初始化d0for i=1:Mfor j=1:Nd=sqrt(i-n1)A2+(j-n2)A2); %点(i,j )到傅立叶变换中心的跑离if d<=d0%点(i,j )在通带内的情况h=1;%通带及换图数else%点(i,j )在阻带内的情况h=0;%阻带变换函数e

3、nd滤波后的频域表示s(i,j)=h*s(i,j);%ILPFend ends=ifftshift(s);%对s进行反FFT移动s=im2uint8(real(ifft2(s);数的实部转化为无符号%对s8位整数进行二维反离散的 Fourier艾换后,取复subplot(1,3,3);%创建图形图像对象imshow(s);%显示ILPF滤波后的图像title('ILPF 滤波后的图像(d=40)');运行结果:.显示灰度图像为图像添加标题加入混合躁声后显示图像s=fftshift(fft2(I4);%移到频谱的中心M,N=size(s);%赋初值n对n=2;n1=floor(M

4、/2);%n2=floor(N/2);%d0=40;%for i=1:Mfor j=1:Nd=sqrt(i-n1)A2+(j-n2)A2);%h=1/(1+(d/d0)A(2*n); %BLPF s(i,j尸h*s(i,j); %ILPFendends=ifftshift(s);%分别返回s的行数到M中,列数到N中%.对M/2进行取整对N/2进行取整初始化d0点(i,j )到傅立叶变换中心的距离滤波函数滤波后的频域表示对s进行反FFT移动1.2 二阶巴特沃斯低通滤波器(BLPF)I1=imread();%读取图像eight.tif' I2=im2double(I1);I3=imnois

5、e(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I2)%title('原始图像');%subplot(1,3,2); imshow(I4)%title(' 加噪后的图像');将灰度图像的二维不连续Fourier变换的零频率成分对s进行二维反离散的Fourier变换后,取I2=im2double(I1);显示灰度图像为图像添加标题加入混合躁声后显示图像s=im2uint8(real(ifft2(s);

6、 %复数的实部转化为无符号8位整数subplot(1,3,3);%创建图形图像对象imshow(s);%显示ILPF滤波后的图像title('BLPF 滤波后的图像(d=40)');实验结果:1.3 指数型低通滤波器(ELPF)I1=imread();%读取图像eight.tif'I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01); figure,subplot(1,3,1); imshow(I2)%title('原始图像');%su

7、bplot(1,3,2); imshow(I4)%title(' 加噪后的图像');s=fftshift(fft2(I4);%将灰度图像的二维不连续Fourier变换的零频率成分移到频谱的中心M,N=size(s);%n1=floor(M/2);%n2=floor(N/2);%d0=40;for i=1:Mfor j=1:N d=sqrt(i-n1)A2+(j-n2)A2); %h=exp(log(1/sqrt(2)*(d/d0)A2);分别返回s的行数到M中,列数到N中对M/2进行取整对N/2进行取整s(i,j尸h*s(i,j);%ILPFend end s=ifftshif

8、t(s);%s=im2uint8(real(ifft2(s); %复数的实部转化为无符号8位整数subplot(1,3,3);%imshow(s);%点(i,j )到傅立叶变换中心的距离滤波后的频域表示title('ELPF 滤波后的图像(d=40)对s进行反FFT移动对s进行二维反离散的Fourier变换后,取创建图形图像对象显示ILPF滤波后的图像);运行结果:原始图傀加瞟后的图像BLPF滤波后的图傀Cd=4O>1.4 梯形低通滤波器(TLPF)I1=imread();读取图像'eight.tif'I2=im2double(I1);figure,subplot

9、(1,3,1);imshow(I2) title('原始图像');subplot(1,3,2);imshow(I4) title(' 加噪后的图像'); s=fftshift(fft2(I4);% 移到频谱的中心 M,N=size(s);n1=floor(M/2);n2=floor(N/2);I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);%显示灰度图像%为图像添加标题%加入混合躁声后显示图像将灰度图像的二维不连续Fourier变换的零频

10、率成分%分别返回s的行数到M中,列数到N中% 对M/2进行取整% 对N/2进行取整d0=10;d1=160;for i=1:Mfor j=1:Nd=sqrt(i-n1)A2+(j-n2)A2); %if (d<=d0)h=1;else if (d0<=d1) h=(d-d1)/(d0-d1);else h=0;endend点(i,j )到傅立叶变换中心的距离s(i,j)=h*s(i,j);%ILPFend end s=ifftshift(s);%s=im2uint8(real(ifft2(s); % 复数的实部转化为无符号8位整数 subplot(1,3,3);%imshow(s)

11、;%title('TLPF滤波后的图像');滤波后的频域表示对s进行反FFT移动对s进行二维反离散的Fourier变换后,取创建图形图像对象显示ILPF滤波后的图像%为图像添加标题运行结果:1.5高斯低通滤波器(GLPF)I1=imread();%读取图像 eight.tif' I2=im2double(I1);I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I2)%title('

12、原始图像');%subplot(1,3,2); imshow(I4)%title(' 加噪后的图像');显示灰度图像为图像添加标题加入混合躁声后显示图像s=fftshift(fft2(I4);%移到频谱的中心将灰度图像的二维不连续Fourier变换的零频率成分M,N=size(s);%n1=floor(M/2);%进行取整 N/2 对 n2=floor(N/2);d0=40;for i=1:M分别返回s的行数到M中,列数到N中对M/2进行取整%.for j=1:Nd=sqrt(i-n1)A2+(j-n2)A2); %点(i,jh=1*exp(-1/2*(dA2/d0A2

13、); %GLPFs(i,j)=h*s(i,j);%ILPF到傅立叶变换中心的距离 滤波函数滤波后的频域表示endends=ifftshift(s);%对 s 进行反 FFT移动s=im2uint8(real(ifft2(s); %对 s 进行二维反离散的 Fourier 变换后,取复数的实部转化为无符号8位整数subplot(1,3,3);%创建图形图像对象imshow(s);%显示ILPF滤波后的图像title('GLPF 滤波后的图像(d=40)');运行结果:1.6维纳滤波器B,Cmap=imread(); % 读取 MATLABN勺名为 eight 的图像'ei

14、ght.tif' I1=im2double(B);I2=imnoise(I1,'gaussian',0.01);I3=imnoise(I2,'salt & pepper',0.01);显示灰度图像为图像添加标题figure,subplot(1,3,1);imshow(I1)%title('原始图像');% subplot(1,3,2);imshow(I3) %加入混合躁声后显示图像 title('加噪后的图像');I4=wiener2(I3);subplot(1,3,3);imshow(I4); title(

15、9;wiener%显示wiener滤波后的图像滤波后的图像');原始图像加嗓后的图像 7LPF凌波后的图像运行结果:结论:理想低通滤波器,虽然有陡峭的截止频率,却不能产生良好的效果,图像由于高 频分量的滤除而变得模糊,同时还产生振铃效应。ILPE巴特沃斯滤波器通频带内的频率响应曲线最大限度平坦, 没有起伏,而在阻 频带则逐渐下降为零。在振幅的对数对角频率的波得图上, 从某一边界角频率开 始,振幅随着角频率的增加而逐步减少, 趋向负无穷大。由于转移特性曲线的尾 部保留较多的高频,所以对噪声的平滑效果不如指数型低通滤波器具有较平滑的过滤带,经此平滑后的图像没有“振铃”现象,而与巴沃特斯滤波

16、相比,它具有更快的衰减特性,处理图像稍微模糊一些。 梯形低通滤波器的性能介于巴沃特斯与完全平滑滤波器之间,对图像具有一定的模糊和振铃效应。高斯低通滤波器其原理就是RC电路具有使低频信号较易通过而抑制较高频率信 号的作用,可以有效地去除服从正态分布的噪声。维纳滤波在处理光学传递函数在零点附近的噪声方法问题比较有效,通过选择适当参数,可以有效地消除或抑制噪声和“振铃效应”。2、边缘增强算子边缘检测2.1 RobertI = imread(); 'eight.tif' figure,subplot(1,3,1);imshow(I);title('原始图像');BW1

17、= edge(I,'robert');%阈值默认subplot(1,3,2);imshow(BWI);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算子边缘检测I = imread();%读取图像'eight.tif' figure,subplot(1,3

18、,1); imshow(I); title(' 原始图像'); BW1 = edge(I,'sobel');%阈值默认subplot(1,3,2); imshow(BWI); title('sobel 算子(T 默认)');BW2=edge(I,'sobel',0.04);%阈值取 0.04subplot(1,3,3); imshow(BW2); title('sobel 算子(T=0.04)');原始图獴加嗓后的图像>vi ener®波后的图像:运行结果:2.3 Prewitt算子边缘检测I =

19、imread(); 'eight.tif' figure,subplot(1,3,1); imshow(I);title('原始图像');阈值默认取 0.04阈值越小,检测出的边缘越丰富BW1 = edge(I,'Prewitt'); % subplot(1,3,2); imshow(BWI);title('Prewitt 算子(T 默认)');BW2 = edge(I,'Prewitt',0.04); %T subplot(1,3,3);imshow(BW2);title('Prewitt 算子(T=0.

20、04) ');%运行结果:.2.4 LoG (laplacian of gaussian )算子边缘检测 I = imread();'eight.tif'figure,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

21、=0.003, sigma=2.20subplot(1,3,3);imshow(BW2);title(' LoG 算子(sigma=2.20)');原始图像cMrt罩子(T默认)robert算子(T=0 04)运行结果:2.5 Canny算子边缘检测I = imread( 'eight.tif );figure,subplot(1,3,1);imshow(I);title('原始图像');BW1 = edge(I,'canny');%sigma默认 1subplot(1,3,2);imshow(BWI);title('canny

22、算子(sigma=1)');BW2 = edge(I,'canny',0.04 0.10,1.3); %T 取 0.04 0.10sigma=1.3 subplot(1,3,3);imshow(BW2);title('canny 算子(sigma=1.3)');原始圈像soMI篁子(丁默认)£口皿1篁子(T二口口运行结果:结论:Roberts算子定位比较精确,但由于不包括平滑,所以对噪声比较敏感。该算子 对具有陡峭边缘且噪声低的图像效果较好。Prewitt算子和Sobel算子都是一阶的微分算子,而前者是平均滤波,后者是加权 平均滤波且检测的图像

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

24、算法的去噪能力都要强,但它也容易平滑掉一些边缘信息。二、编写程序完成不同锐化方法的图像锐化的算法弁进行比较,得出结论。1、微分1.1基于一阶微分的图像锐化-梯度法I,map=imread(); 'eight.tif' subplot(2,2,1),imshow(I,map););原始图像title('I=double(I);IX,IY=gradient(I);%GM=sqrt(IX.*IX+IY.*IY);OUT1=GM;subplot(2,2,2),imshow(OUT1,map);title(' 梯度值图像)OUT2=I;J=find(GM>=15);

25、OUT2(J尸GM(J);subplot(2,2,3),imshow(OUT2,map);title('加阈值的梯度值图像)OUT3=I;J=find(GM>=20);OUT5(J)=200;Q=find(GM<20);OUT5(Q)=20;subplot(2,2,4),imshow(OUT2,map);');%title('返回梯度值%直接梯度值输出%加阈梯度值输出二值图像二值图像 运行结果:2、高通滤波法2.1 理想高通滤波(IHPF)I1=imread();%读取图像eight.tif' I2=im2double(I1);figure,subp

26、lot(1,2,1);imshow(I2); title(原始图像');s=fftshift(fft2(I2);M,N=size(s);%分别返回s的行数到M中,列数到N中n=2;%n1=floor(M/2);%n2=floor(N/2);%d0=10;% for i=1:Mfor j=1:N d=sqrt(i-n1)A2+(j-n2)A2);%if d<=d0对n赋初值对M/2进行取整对N/2进行取整 初始化d0点(i,j )到傅立叶变换中心的距离h=0; else h=1; ends(i,j)=h*s(i,j);%IHPF滤波后的频域表示endends=ifftshift(s

27、);%对 s 进行反 FFT移动s=im2uint8(real(ifft2(s); % 对s进行二维反离散的 Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,2,2);%创建图形图像对象imshow(s);%显示IHPF滤波后的图像title('IHPF 滤波后的图像(d=10) '); %为图像添加标题运行结果:.2.2 巴特沃斯图通滤波(BHPFI1=imread();%读取图像eight.tif' I2=im2double(I1);figure,subplot(1,2,1);imshow(I2);title(' 原始图像'

28、);s=fftshift(fft2(I2);%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心中N中,列数到M的行数到s分别返回M,N=size(s);%n=2;%对n赋初值n1=floor(M/2);%n2=floor(N/2);%d0=10;%for i=1:M for j=1:N d=sqrt(i-n1)A2+(j-n2)A2); % if (d=0) h=0; else h=1/(1+0.5*(d0/d)A(2*n); %BHPF end对M/2进行取整 对N/2进行取整初始化d0点(i,j )到傅立叶变换中心的距离滤波函数滤波后的频域表示对s进行反FFT移动创建图

29、形图像对象显示ILPF滤波后的图像%为图像添加标题)EHPF旨数型高通滤波(2.3s(i,j尸h*s(i,j);%ILPFendends=ifftshift(s);%s=im2uint8(real(ifft2(s);subplot(1,2,2);%imshow(s);%title('BHPF 滤波后的图像(d=10)');运行结果:读取图像figure,subplot(1,2,1); imshow(I2); title(' s=fftshift(fft2(I2);% 移到频谱的中心 M,N=size(s);n=2;n1=floor(M/2); n2=floor(N/2)

30、; d0=10;for i=1:Mfor j=1:N原始图像');将灰度图像的二维不连续Fourier变换的零频率成分%分别返回s的行数到M中,列数到N中对n赋初值对M/2进行取整对N/2进行取整初始化d0I1=imread();%'eight.tif' I2=im2double(I1);点(i,j )到傅立叶变换中心的距离d=sqrt(i-n1)A2+(j-n2)A2);%if (d=0)h=0;else滤波函数h=exp(log(1/sqrt(2)*(d0/d)A2);%BLPFends(i,j)=h*s(i,j);endends=ifftshift(s);s=im

31、2uint8(real(ifft2(s); %ILPF滤波后的频域表示对s进行反FFT移动对s进行二维反离散的Fourier变换后,取8位整数%创建图形图像对象显示ILPF滤波后的图像 为图像添加标题复数的实部转化为无符号subplot(1,2,2);imshow(s);title('EHPF 滤波后的图像(d=10)');原始图像梯度俏图像运行结果:加成值的梯度值图儡2.4 梯形高通滤波(THPFI1=imread();%读取图像eighthI2=im2double(I1);figure,subplot(1,2,1);imshow(I2);title('原始图像

32、9;);s=fftshift(fft2(I2);%等灰度图像的二维不连续 Fourier变换的零频率成分移到频谱的中心M,N=size(s);%n=2;%n1=floor(M/2);%n2=floor(N/2);%d0=5;d1=10;%for i=1:M for j=1:Nd=sqrt(i-n1)A2+(j-n2)A2); %if (d<=d0)h=0;else if (d0<=d1)h=(d-d1)/(d0-d1);else h=1; end ends(i,j尸h*s(i,j);%THPFend分别返回s的行数到M中,列数到N中对n赋初值对M/2进行取整对N/2进行取整初始化d

33、0点(i,j )到傅立叶变换中心的距离滤波后的频域表示ends=ifftshift(s);%对 s 进行反 FFT移动s=im2uint8(real(ifft2(s); % 对s进行二维反离散的 Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,2,2);%imshow(s);%title('THPF 滤波后的图像');%创建图形图像对象显示THPF滤波后的图像为图像添加标题运行结果:原始图像IHPF滤液后的图像(d=10)2.5 局斯型局通滤波(GHPFI1=imread();%读取图像eight.tif' I2=im2double(I1);f

34、igure,subplot(1,2,1);imshow(I2); title('原始图像');s=fftshift(fft2(I2);%等灰度图像的二维不连续 Fourier变换的零频率成分分别返回s的行数到M中,列数到N中对n赋初值对M/2进行取整%.初始化d0移到频谱的中心M,N=size(s);%n=2;%n1=floor(M/2);%进行取整 N/2 对 n2=floor(N/2);d0=10;%for i=1:M到傅立叶变换中心的距离 滤波函数滤波后的频域表示for j=1:Nd=sqrt(i-n1)A2+(j-n2)A2); %点(i,jh=1*exp(1-1/2*

35、(dA2/d0A2);%GHPFs(i,j)=h*s(i,j);%GHPFend ends=ifftshift(s);%对 s 进行反 FFT移动s=im2uint8(real(ifft2(s); % 对s进行二维反离散的Fourier变换后,取复创建图形图像对象显示GHPFfi波后的图像 为图像添加标题数的实部转化为无符号8位整数subplot(1,2,2);%imshow(s);%title('GHPF滤波后的图像(d=10) ');%运行结果:3、反锐化掩模法O,Cmap=imread(); % 读取 MATLA呻的名为 eight 的图像'eight.tif&#

36、39; I=im2double(O);figure , subplot(1,2,1);imshow(I); title(' 原始图像');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(' 反锐化掩模法');运行结果:.结论:图像平滑往往使图像中的边界、轮廓变的模糊,为了减少这类不利效果的影响, 这就需要利用图像锐化技术,使图像的边缘变的清晰。图像锐化处理的目的是为 了使图像的边缘、轮廓线以及图像的细节变的清晰,经过平滑的图像变得模糊的 根本原因是因为图像

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

38、频增强使得最终结果与原始这样的图像恢复了部分高通滤波时丢失的低频成分,图像更为接近。编写程序完成同态滤波的算法,得出结论。三、 I=imread();%读取图像'eight.tif' figure,subplot(2,2,1);imshow(I);%显示图像title(' 原始图像');I=double(I);f=fft2(I);%计算图像I 的傅里叶变换g=fftshift(f);%将图像频谱中心从矩阵原点移到矩阵的中心M,N=size(f);n1=floor(M/2);n2=floor(N/2);%计算频率原点设置低通滤波截断频率计算各个点到频率原点的距离%低通滤波d0=35;%for i=1:Mfor j=1:Nd=sqrt(i-n1)A2+(j-n2)A2);%if d<=d0h1=1;elseh1=0;endg1(i,j)=h1*g(i,j);endendg1=i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论