图像处理.docx
- 文档编号:8616451
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:25
- 大小:1.29MB
图像处理.docx
《图像处理.docx》由会员分享,可在线阅读,更多相关《图像处理.docx(25页珍藏版)》请在冰豆网上搜索。
图像处理
图像处理实验
实验一:
直接灰度变换和直方图均衡
1.实验目的
1)掌握图像数据与信息的读取方法。
2)理解图像灰度变换处理在图像增强的作用。
3)掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方法。
2.实验原理
1.灰度变换
灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。
1)图像反转
灰度级范围为[0,L-1]的图像反转可由下式获得
2)对数运算:
有时原图的动态范围太大,超出某些显示设备的允许动态范围,如直接使用原图,则一部分细节可能丢失。
解决的方法是对原图进行灰度压缩,如对数变换:
s=clog(1+r),c为常数,r≥0
3)幂次变换:
4)对比拉伸:
在实际应用中,为了突出图像中感兴趣的研究对象,常常要求局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸:
其对应的数学表达式为:
2.直方图均衡化
灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频度,它是图像最基本的统计特征。
依据定义,在离散形式下,用rk代表离散灰度级,用pr(rk)代表pr(r),并且有下式成立:
式中:
nk为图像中出现rk级灰度的像素数,n是图像像素总数,而nk/n即为频数。
直方图均衡化处理是以累积分布函数变换法为基础的直方图修正法。
假定变换函数为
(a)Lena图像(b)Lena图像的直方图
图1.2Lena图像及直方图
当灰度级是离散值时,可用频数近似代替概率值,即
式中:
l是灰度级的总数目,pr(rk)是取第k级灰度值的概率,nk是图像中出现第k级灰度的次数,n是图像中像素总数。
所以积分可以表示为下列累计分布函数(cumulativedistributionfunction,CDF)
3、实验内容与要求
1.自学MATLAB语言中对图像数据读取,显示等基本函数
特别需要熟悉下列命令:
熟悉imread()函数、imwrite()函数、size()函数、Subplot()函数、Figure函数。
2.图像灰度变换处理在图像增强的作用
读入不同情况的图像,请自己编程或调用Matlab函数用常用灰度变换函数(如imadjust())对输入灰度图像(可以自己从网上下载,或将彩色图像变换为灰度图像可用rgb2gray()函数完成)进行灰度变换,比较相应的处理效果。
需要完成的变换包括
1)线性变换
img=imread('d.jpg');
gray_img=rgb2gray(img);
k=2;
d=10;
new=gray_img*k+d;
subplot(2,2,1)
imshow(gray_img)
title('原图像')
subplot(2,2,2)
imshow(new)
title('线性变换后的图像y=2x+10')
2)分段线性变换
img=imread('d.jpg');
gray_img=rgb2gray(img);
w=size(gray_img,1);
h=size(gray_img,2);
new=gray_img;
x1=-100;
y1=20;
x2=100;
y2=180;
k1=y1/x1;
dk1=(y2-y1)/(x2-x1);
dk2=(255-y2)/(255-x2);
fori=1:
w
forj=1:
h
x=new(i,j);
ifx new(i,j)=k1*x; elseifx new(i,j)=dk1*(x-x1)+y1; else new(i,j)=dk2*(x-x2)+y2; end end end subplot(2,2,3) imshow(new) title('分段线性变换后的图像') 3)对数变换 img=imread('d.jpg'); gray_img=rgb2gray(img); x1=double(gray_img)+1; x2=log(x1); y=uint8(x2)-1; t=im2uint8(mat2gray(y)); subplot(2,2,4) imshow(t); title('对数变换后的图像') 5)指数变换 img=imread('d.jpg'); gray_img=rgb2gray(img); I=double(gray_img); J=exp(I)-1; subplot(212); imshow(J,[]); title('指数变换后图像'); 3.绘制图像灰度直方图的方法,对图像进行均衡化处理 请自己编程或调用Matlab函数完成如下实验。 1)显示输入图像及灰度直方图,可以发现其灰度值集中在一段区域,用imadjust函 数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰度直方图与原灰度直方图的区别。 img=imread('d2.png'); gray_img=rgb2gray(img); subplot(2,2,1) imshow(gray_img) subplot(2,2,2) imhist(gray_img) K=imadjust(gray_img); subplot(2,2,3) imshow(K) subplot(2,2,4) imhist(gray_img) 2)对输入图像进行直方图均衡化处理,试比较与源图的异同。 输入图像(直方图均衡化前) img=imread('d2.png'); gray_img=rgb2gray(img); figure subplot(221); imshow(gray_img); title('原图像') L=256; M=zeros(256,1); p=zeros(256,1); c=zeros(256,1); [mn]=size(gray_img); fori=1: m forj=1: n M(gray_img(i,j)+1)=M(gray_img(i,j)+1)+1; end end fori=1: 256; p(i)=M(i)/(m*n); end subplot(222); bar(p); title('原图像的直方图') fori=1: 256 forj=1: i c(i)=c(i)+p(j); end end max=0; min=0; fori=1: m forj=1: n if(max max=gray_img(i,j); elseif(min>gray_img(i,j)) min=gray_img(i,j); end end end end fori=1: m forj=1: n K(i,j)=c(gray_img(i,j)+1)*(max-min)+min; end end subplot(223); imshow(K); title('均衡化后图像') fori=1: m forj=1: n M(gray_img(i,j)+1)=M(gray_img(i,j)+1)+1; end end fori=1: 256; p(i)=M(i)/(m*n); end subplot(224); bar(p); title('均衡化后图像的直方图') 实验二: 数字图像的空间域滤波和频域滤波 1.实验目的 1.掌握图像滤波的基本定义及目的。 2.理解空间域滤波的基本原理及方法。 3.掌握进行图像的空域滤波的方法。 4.掌握傅立叶变换及逆变换的基本原理方法。 5.理解频域滤波的基本原理及方法。 6.掌握进行图像的频域滤波的方法。 2.实验基本原理 1.空间域增强 空间域滤波是在图像空间中借助模板对图像进行领域操作,处理图像每一个像素的取值都是根据模板对输入像素相应领域内的像素值进行计算得到的。 空域滤波基本上是让图像在频域空间内某个范围的分量受到抑制,同时保证其他分量不变,从而改变输出图像的频率分布,达到增强图像的目的。 空域滤波一般分为线性滤波和非线性滤波两类。 线性滤波器的设计常基于对傅立叶变换 的分析,非线性空域滤波器则一般直接对领域进行操作。 各种空域滤波器根据功能主要分为 平滑滤波器和锐化滤波器。 平滑可用低通来实现,平滑的目的可分为两类: 一类是模糊,目 的是在提取较大的目标前去除太小的细节或将目标内的小肩端连接起来;另一类是消除噪 声。 锐化可用高通滤波来实现,锐化的目的是为了增强被模糊的细节。 结合这两种分类方法, 可将空间滤波增强分为四类: 线性平滑滤波器(低通) 非线性平滑滤波器(低通) 线性锐化滤波器(高通) 非线性锐化滤波器(高通) 空间滤波器都是基于模板卷积,其主要工作步骤是: 1)将模板在图中移动,并将模板中心与图中某个像素位置重合; 2)将模板上的系数与模板下对应的像素相乘; 3)将所有乘积相加; 4)将和(模板的输出响应)赋给图中对应模板中心位置的像素。 2.平滑滤波器 1)线性平滑滤波器 线性低通平滑滤波器也称为均值滤波器,这种滤波器的所有系数都是正数,对3×3 的模板来说,最简单的是取所有系数为1,为了保持输出图像任然在原来图像的灰度值范围 内,模板与象素邻域的乘积都要除以9。 MATLAB提供了fspecial函数生成滤波时所用的模板,并提供filter2函数用指定的滤 波器模板对图像进行运算。 函数fspecial的语法格式为: h=fspecial(type); h=fspecial(type,parameters); 其中参数type指定滤波器的种类,parameters是与滤波器种类有关的具体参数。 表2.1MATLAB中预定义的滤波器种类 MATLAB提供了一个函数imnoise来给图像增添噪声,其语法格式为: J=imnoise(I,type); J=imnoise(I,type,parameters); 参数type指定噪声的种类,parameters是与噪声种类有关的具体参数。 参数的种类见 表2.2。 表2.2噪声种类及参数说明 2)非线性平滑滤波器 中值滤波器是一种常用的非线性平滑滤波器,其滤波原理与均值滤波器方法类似,但计 算的非加权求和,而是把领域中的图像的象素按灰度级进行排序,然后选择改组的中间值作为输出象素值。 MATLAB提供了medfilt2函数来实现中值滤波,其语法格式为: B=medfilt2(A,[mn]); B=medfilt2(A); 其中,A是原图象,B是中值滤波后输出的图像。 [mn]指定滤波模板的大小,默认模 板为3×3。 3.锐化滤波器 图像平滑往往使图像中的边界、轮廓变得模糊,为了减少这类不利效果的影响,需要利 用图像锐化技术,使图像的边缘变得清晰。 1)线性锐化滤波器 线性高通滤波器是最常用的线性锐化滤波器。 这种滤波器的中心系数都是正的,而周围 的系数都是负的,所有的系数之和为0。 对3×3的模板来说,典型的系数取值为: [-1-1-1; -18-1; -1-1-1] 事实上这是拉普拉斯算子。 语句h=-fspecial(‘laplacian’,0.5)得到的拉普拉斯算子为: h=-0.3333-0.3333-0.3333 -0.33332.6667-0.3333 -0.3333-0.3333-0.3333 2)非线性锐化滤波 邻域平均可以模糊图像,因为平均对应积分,所以利用微分可以锐化图像。 图像处理中 最常用的微分方法是利用梯度。 常用的空域非线性锐化滤波微分算子有sobel算子、prewitt算子、log算子等。 3.实验内容与要求 1.平滑空间滤波: 1)读入一幅灰度图像,给这幅图像分别加入椒盐噪声和高斯噪声后并显示。 I=imread('d.jpg');imshow(I); J=imnoise(I,'salt&pepper',0.05);%noisedensity=0.05 K=imnoise(I,'gaussian',0.01,0.01); subplot(3,1,1),imshow(I),title('原图像') subplot(3,1,2),imshow(J),title('椒盐噪声后的图像') subplot(3,1,3),imshow(K),title('高斯噪声后的图像') 2)对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果, 要求在同一窗口中显示。 I=imread('d.jpg') H=fspecial('sobel'); subplot(2,2,1) imshow(I); title('原图像'); Sobel=imfilter(I,H,'replicate'); subplot(2,2,2) imshow(Sobel); title('SobelImage') H=fspecial('laplacian',0.4); lap=imfilter(I,H,'replicate'); subplot(2,2,3) imshow(lap); title('LaplacianImage') H=fspecial('gaussian',[33],0.5); gaussian=imfilter(I,H,'replicate'); subplot(2,2,4) imshow(gaussian); title('GaussianImage') 3)使用函数imfilter时,分别采用不同的填充方法(或边界选项,如零填 充、’replicate’、’symmetric’、’circular’)进行低通滤波,显示处理后的图像。 figure(3) originalRGB=imread('d.jpg'); subplot(3,2,1) imshow(originalRGB); title('原图像'); h=fspecial('motion',50,45); %motionblurred filteredRGB=imfilter(originalRGB,h); subplot(3,2,2) imshow(filteredRGB); title('MotionBlurredImage'); boundaryReplicateRGB=imfilter(originalRGB,h,'replicate'); subplot(3,2,3) imshow(boundaryReplicateRGB); title('0-Padding'); boundary0RGB=imfilter(originalRGB,h,0); subplot(3,2,4) imshow(boundary0RGB); title('Replicate'); boundarysymmetricRGB=imfilter(originalRGB,h,'symmetric'); subplot(3,2,5) imshow(boundarysymmetricRGB); title('Symmetric'); boundarycircularRGB=imfilter(originalRGB,h,'circular'); subplot(3,2,6) imshow(boundarycircularRGB); title('Circular'); 4)对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处 理,要求在同一窗口中显示结果。 figure(4) I=imread('dd3.png'); J=imnoise(I,'salt&pepper',0.05); subplot(1,3,1) imshow(J); title('椒盐噪声后的图像'); h=fspecial('average');%AveragingFilteringJ1=imfilter(J,h);fori=1: 10 J1=imfilter(J,h); subplot(1,3,2) imshow(J1); title('均值滤波后图像'); subplot(1,3,3) J2=medfilt2(J);%Median Filtering subplot(1,3,3) imshow(J2); imshow(J2); title('中值滤波后图像'); 5)自己设计平滑空间滤波器,并将其对噪声图像进行处理,显示处理后的图像。 用于加噪声和图像平滑的源图像(作为输入) figure(5) I=imread('dd4.png'); domain=[00800; 00800; 88888; 00800; 08000]; J=imnoise(I,'salt&pepper',0.05); J=rgb2gray(J); subplot(1,2,1) imshow(J); title('原图像'); K1=ordfilt2(J,5,domain); subplot(1,2,2) imshow(K1); title('5*5平滑滤波后的图像'); 2.锐化空间滤波 1)读入一幅图像,采用3×3的拉普拉斯算子w=[1,1,1;1–81;1,1, 1]对其进行滤波。 I=imread('dd6.png'); I=rgb2gray(I); T=double(I); subplot(1,2,1) imshow(T,[]); title('原图像'); subplot(1,2,2), w=[1,1,1;1,-8,1;1,1,1]; K=conv2(T,w,'same'); imshow(K,[]); title('拉普拉斯算子滤波后的图像'); 2)编写函数w=genlaplacian(n),自动产生任一奇数尺寸n的拉普拉斯算子,如5×5 的拉普拉斯算子 w=[11111 11111 11-2411 11111 11111] functionw=genlaplacian(n)%ComputestheLaplacianoperator w=ones(n); x=ceil(n/2); w(x,x)=-1*(n*n-1); 3)分别采用5×5,9×9,15×15和25×25大小的拉普拉斯算子对图像进行锐化滤波,并利用式 完成图像的锐化增强,观察其有何不同,要求在同一窗口中显示。 I=imread('dd6.png'); I=rgb2gray(I); w1=genlaplacian(5); w2=genlaplacian(9); w3=genlaplacian(15); w4=genlaplacian(25); T=double(I); subplot(231),imshow(T,[]); title('OriginalImage'); K1=conv2(T,w1,'same'); subplot(232),imshow(K1); title('laplacianoperator5*5'); K2=conv2(T,w2,'same'); subplot(233),imshow(K2); title('laplacianoperator9*9'); K3=conv2(T,w3,'same'); subplot(234),imshow(K3); title('laplacianoperator15*15'); K4=conv2(T,w4,'same'); subplot(235),imshow(K4);title('laplacianoperator25*25'); 4)自己设计锐化空间滤波器,并将其对噪声图像进行处理,显示处理后的图像; 用于锐化的源图像(作为输入) I=imread('dd6.png'); I=rgb2gray(I); w=[-2-2-2; -216-2; -2-2-2]; T=double(I); subplot(1,2,1) imshow(I); title('原图像'); K2=conv2(T,w,'same'); subplot(1,2,2) imshow(K2); title('自己设计的锐化空间滤波器');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 处理