收藏 分销(赏)

数字图像处理 第2章.ppt

上传人:pc****0 文档编号:13748158 上传时间:2026-04-09 格式:PPT 页数:49 大小:1.10MB 下载积分:10 金币
下载 相关 举报
数字图像处理 第2章.ppt_第1页
第1页 / 共49页
数字图像处理 第2章.ppt_第2页
第2页 / 共49页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Digital Image Processing,*,第,*,页,2.1,数字图像的表示,第二章 基本原理,图像,表示为一个二维函数,f,(,x,y,),其中,x,y,R,表示空间,(,平面,),坐标,坐标,(,x,y,),处的幅值,f,R,称为图像在该处的,幅值,灰度图像,:,二维灰度函数,f,(,x,y,),灰度,(gray level),或,强度,(intensity),彩色图像,:,三个二维强度函数组成,f,(,x,y,),如,RGB,HSV,YUV,Lab,不同颜色空间,x,y,f(x,y),4/9/2026,1,数字图像,:,坐标和幅值离散化的图像,(,灰度,),数字图像,:,表示为一个二维函数,f,(,x,y,),其中,x,y,N,表示空间坐标,而在坐标,(,x,y,),处的幅值,f,N,称为图像在该处的,灰度,(gray level),或强度。图像有高度,H,、,宽度,W,和灰度级。,彩色数字图像,:,表示为三个二维灰度数字图像,.,x,y,0,16,23,60,4,8,60,232,232,232,233 234 235 236,236,230,230,231 233 234,234,233 234,221 223 226 228 229 227 226 228,197,197,196 195 198 195,195,205,187 181 178 175,175,168 170 180,Pixel(,像素,),:,(pixel=,pic,ture,el,ement),4/9/2026,2,图像取样和量化,数字图像是模拟图像经取样、量化、编码获得,图像取样,:,图像空间离散化,确定图像空间分辨率,图像量化,:,图像幅度离散化,确定图像幅度分辨率,图像编码,:,用较少的,bit,表示量化后的图像,(JPEG),4/9/2026,3,数字图像的质量很大程度上取决于取样和量化过程中所用的取样数和灰度级,图像内容是确定这两个参数的重要因素,图像取样和量化,4/9/2026,4,数字图像用,M,N,维矩阵表示,M,和,N,分别表示图像行、列的取样点数,(,确定,空间分辨率,),灰度级总数为,L,(,确定,灰度分辨率,),起始位置为,f,(0,0),灰度级范围为,0,L,-1,M,、,N,和,L,通常取,2,的整数次幂,如果,L,=2,k,则该图是,k,比特图,4/9/2026,5,2.1.1,坐标约定:,对图像取样和量化的结果是一个实数矩阵。,主要采用的坐标系:,4/9/2026,6,2.1.2,图像的矩阵表示,该数组的每一个元素都称为,像元,、图元或,像素,。,一副数字图像在,MATLAB,中可以表示成矩阵:,在约定的坐标系下,数字化图像函数的表示:,其中,f(1,1)=,f(0,0),,,罗马斜体字母表示数字表达式,等宽字体用来表示,MATLAB,中的量。,4/9/2026,7,2.2,读取图像,使用函数,imread,可以将图像读人,MATLAB,环境,,imread,的语法为:,Imread(filename,);,其中,filename,是一个含有图像文件全名的字符串(包括扩展名),如:,F=,imread(lena.jpg,);,F,imread(D:myimageslena.jpg,);,I=,imread(c:lena.bmp,);,4/9/2026,8,size(I),ans,=,256 256,M,N=size(I);,whos,I,Name Size Bytes Class,I 256x256 65536 uint8 array,Grand total is 65536 elements using 65536 bytes,4/9/2026,9,2.3,显示图像,在,MATLAB,桌面上一般使用函数,imshow,来显示,该函数的基本语法为:,imshow(f,,,G),,,f,为图像数组,,G,为图像的灰度级数。若将省略,则,G,默认为,256,imshow(f,),imshow(f,low,high),imshow(f,),(,在显示一副动态范围较小的图像或者既有正值又有负值的图像时非常有用),4/9/2026,10,当用,imshow,显示另一副图像时,,MATLAB,会在屏幕上用新图像替换旧图像。为保持一副图像并同时显示第二副图像,可以用,figure,函数:,figure,imshow(I,),如:,imshow(f),figure,imshow(g,),可以同时显示两幅图像。,假设我们读入一副动态范围很小的图像并用,imshow(h,),显示,同时,可以用,imshow(h,),显示并修正显示结果。,4/9/2026,11,函数,impixelinfo,会在上次显示的图像上显示光标,交互地显示单个像素的亮度值。,当按住鼠标左键不放,则,impixelinfo,将显示光标初始位置和当前位置间的欧几里德距离。,4/9/2026,12,2.4,保存图像,imwirte,函数可以将图像写到磁盘上,语法:,imwrite(f,filename,),,,filename,中包含的字符串必须是一种可识别的文件格式扩展名(见表,2.1,)。下面的命令可将图像,h,写为,TIFF,格式,且名为,xray,。,imwrite(f,xray,tif,),或者,imwrite(f,xray.tif,),若,filename,中不包含路径信息,则,imwrite,会将文件保存到当前的工作目录中。,4/9/2026,13,一种常用但只适用于,JPEG,图像的函数是,imwrite,,,语法为,Imwrite,(,f,filename.jpg,quality,q,),q,为,0,到,100,之间的整数,,q,越小,图像退化越严重。,4/9/2026,14,imfinfo,bubble.jpg,ans,=,Filename:,bubble.jpg,FileModDate,:11-Jul-2011 11:33:33,FileSize,:10947,Format:jpg,FormatVersion,:,Width:720,Height:688,BitDepth,:8,ColorType,:grayscale,FormatSignature,:,Comment:,imfinfo,函数:显示图像文件的压缩方式以及其他详细信息,语法:,imfinfo,filename,其中,filename,为存储到磁盘中的图像的全名,4/9/2026,15,例如计算图像,bubbles.jpg,的压缩比:,K=,imfinfo(bubbles.jpg,);,image_bytes=K.Width*K.Height*K.BitDepth/8;,compressed_bytes=,K.FilesSize,;,compression_ratio=image_bytes/compressed_bytes;,Compression_ratio=35.1612,也可以让函数,imfinfo,显示的信息域捕获至所谓的结构变量中,以便后续计算。如:,K,imfinfo(bubbles.jpg,);,则图像文件的信息存入了结构变量,K,之中。,注意:命令函数,imfinfo,有两种用法。一种是直接在命令行键入,imfinfo,文件名,,在屏幕显示图像文件详细信息,第二种是键入,K,imfinfo,(,文件名),将图像文件信息存入结构变量,K,中。,命令函数的二元性,4/9/2026,16,imwrite,函数另外一种常用但只适用于,tif,格式的图像语法为:,imwrite(g,filename.tif,compression,parameter,resolution,colres,rowres,),g:,一个图像数组,filename:,存储到磁盘的文件全名,parameter:none,无压缩,,packbite,比特压缩(非二值图像的默认参数),,ccitt,表示,ccitt,压缩(二值图像的默认参数),colres,rowres,:,分别表示垂直方向和水平方向上每英寸的点(像素)数(,dpi,)。,4/9/2026,17,例,2.3,:下图是一块电路板的,X,光,图像,格式为,JPG,,,分辨率为,200dpi,,,图像大小为,450450,象素,尺寸为,2.252.25,英寸。想将其以,TIF,格式存储为无压缩的名为,sf,的,图像,并将尺寸减小到,1.51.5,英寸,但像素数仍保持保持为,450450,。,res,=round(450/1.5);,imwrite(f,sf.tif,compression,none,resolution,res,);,4/9/2026,18,MATLAB,图形窗口的内容输出到磁盘:,图形窗口的下拉菜单,File-Export,,,用户可以选择保存路径,文件名,以及文件格式。,使用,Print,命令,设置更多输出参数。,print,f,no,d,fileformat,r,resno,filename,其中:,no,图形窗口的图形编号,,fileformat,是保存格式,,resno,是分辨率,,filename,为文件指定的文件名。,若在命令行简单键入,print,,则,MATLAB,会打印上一个显示的图形窗口的内容。,4/9/2026,19,2.5,数据类(型),MATLAB,中的像素值本身并不是整数。表,2.2,中列出了,MATLAB,和,IPT,为表示像素值所支持的各种数据类。表中的前,8,项称为数值数据类,第,9,项称为字符类,最后一项称为逻辑数据类。,MATLAB,中所有的数值计算都可用,double,类,来进行,所以它也是图像处理应用中最常使用的数据类。,uint8,数据类也是一种频繁使用的数据类,尤其是在从存储设备中读取数据时,因为,8,比特图像是实际中最常用的图像。,logical,类和使用较少的,uint16,类构成了本书集中讨论的基础数据类。,4/9/2026,20,4/9/2026,21,2.6,图像类型,工具箱支持以下,4,种图像类型,:,亮度图像,(Intensity images),二值图像,(Binary images),索引图像,(Indexed images),RGB,图像,(RGB images),大多数单色图像的处理运算是通过二值图像或亮度图像来进行的,所以我们首先重点研究这两种图像。索引图像和,RGB,图像将在第,6,章中讨论。,4/9/2026,22,2.6.1,亮度图像,一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。,若亮度图像的像素都是,uint8,类或,uint16,类,则它们的整数值范围分别是,0,255,和,0,65535,若图像是,double,类,则图像取值就是浮点数。规定双精度型归一化亮度图像的取值范围是,0,1,。,4/9/2026,23,2.6.2,二值图像,二值图像在,MATLAB,中具有非常特殊的意义。一幅二值图像是一个取值只有,0,和,1,的逻辑数组。因而,一个取值只包含,0,和,1,的,uint8,类,数组,在,MATLAB,中并不认为是二值图像。,使用,logical,函数可以把数值数组转换为二值数组。因此,若,A,是一个由,0,和,1,构成的数值数组,则可使用如下语句创建一个逻辑数组,B:,B=logical(A),若,A,中含有除了,0,和,1,之外的其他元素,则使用,logical,函数就可以将所有非零的量变换为逻辑,1,而将所有的,0,值变换为逻辑,0,。,使用关系和逻辑运算符也可以创建逻辑数组,(,见,2.10.2,节,),。,4/9/2026,24,要侧试一个数组是否为逻辑数组,可以使用函数,islogical,:,islogical(c,),若,C,是逻辑数组,则该函数返回,1;,否则,返回,0,。使用,2.7.1,节所讨论的数据类转换函数,可将逻辑数组转换为数值数组。,4/9/2026,25,2.7,类型转换,在,IPT,应用中,数据类与图像类型间的转换是非常频繁的操作。,数据类间的转换相当直接,通用的语法为:,B=data _class_name(A),其中,,data_,cJ.ass_name,可以是表,2.2,中第一列的任何一项。,例如,假设,A,是一个,uint8,类数组,则命令,B=double(A),会产生一个双精度数组,B,。,这种转换贯穿全书,因为,MATLAB,希望数值计算中的所有操作数都是双精度浮点数,double,类,。,4/9/2026,26,假设,C,是一个取值范围为,0,255),很有可能包含小数,),的,double,类数组,则命令,D=uint8(C),可将其转换为一个,uint8,类数组。,若一个,double,类数组包含有区间,0,255,之外的值,则在使用上述方法将其转换成,uint8,类数组时,,MATLAB,会将所有小于,0,的值转换为,0,,所有大于,255,的值转换为,255,,而在,0,和,255,之间的值将全部舍去小数部分转换为整数;,因此,在将,double,类数组转换成,uint8,类数组之前,有必要先对其进行适当的缩放,以使其元素的取值尽量在区间,0,255,内。如,2.6.2,节中提到的那样,在将任何数值数据类转换为,logical,类时,数组中的所有非,0,值将转换为逻辑,1,0,值将转换为逻辑,0,。,4/9/2026,27,2.7.2,图像类和类型间的转换,例如:考虑下面这个,double,类,22,图像,f,,,它可以是中间计算的结果:,函数,im2uint8,将输入中所有小于,0,的值设置为,0,,而将输人中所有大于,1,的值设置为,255,,再将所有的其他值乘以,255,。将得到的结果四舍五入为最接近的整数后,就完成了转换。,注意,,im2uint8,的舍入行为与前一节中讨论的数据类转换函数,uint8,是不一样的,后者只是简单地将小数部分全部舍去。,4/9/2026,28,要把一个,double,类的任意数组转换成取值范围为,0,1,的归一化,double,类数组,可以通过函数,mat2gray,完成,其基本语法为,:g=mat2gray(A,Amin,Amax),将矩阵,A,中小于,Amin,的值转换为,0,,将,A,中大于,Amax,的值转换为,1,。,g=mat2gray(A),,将,A,中实际的最小值和最大值分别赋给,Amin,和,Amax,。,4/9/2026,29,im2double,和,mat2gray,的区别:,im2double,可以将输入为,uint8,uint16,,,logical,类以及输入范围在,0,1,之间的,double,类数组转换为范围为,0,1,间的,double,类;,im2double,对取值范围超过,0,1,的,double,类数组不会产生任何效果;,mat2gray,却可以将任意值的,double,类输入数组转换为取值范围为,0,1,的,double,类数组。,例如,考虑一幅,uint8,类图像,h=uint8(25 50;128 200);,g=im2double(h);,结果为:,g=,0.0980 0.1961,0.5020 0.7843,输入为,uint8,类数据时,将输入数组的每个值除以,255,输入为,uint16,类数组时,则将输入数组的每个值除以,65535,4/9/2026,30,im2bw,语法,g=im2bw(f,t),该函数通过阈值处理,将一幅亮度图像,f,转换为一幅二值图像,g,。,t,为阈值,范围在,0,1,之间;没有指定,t,值,则默认为,0.5,;,输出自动声明为一个,logical,数组。,输入数据为任意数据类。若输入为,uint8,类,则,im2bw,函数会将该图像所有像素点除以,255,再用阈值处理;若输入为,uint16,类,数据,则将所有像素点除以,65535,再阈值处理;若输入是,double,类,直接用阈值处理;若输入为,logical,类,则输出与输入相同。,4/9/2026,31,例,2.4,图像类和类型间的转换,double,类图像,f,f=1 2;3,4,f=,1 2,3 4,g=mat2gray(f),g=,0 0.3333,0.6667 1.0000,gb,=im2bw(g,0.6),gb,=,0 0,1 1,gb,=im2bw(g,0.6),gb,=,0 0,1 1,可以简化为:,gb,=f2,gb,=,0 0,1 1,gbv,=,islogical(gb,),gbv,=,1,MATLAB,支持嵌套:,gbd,=im2double(im2bw(mat2gray(f),0.6);,4/9/2026,32,假设输入是,uint8,类数组,h=uint8(0 0;1 1),h=,0 0,1 1,gbd,=im2double(h),gbd,=,0 0,0.0039 0.0039,gdb,=double(h),gdb,=,0 0,1 1,4/9/2026,33,2.8.1,向量索引,MATLAB,中向量的元素使用方括号括起,并用空格和逗号隔开。,v=1 3 5 7 9,v=,1 3 5 7 9,v(2),ans,=,3,转置运算符(,.,)可以将行向量转为列向量:,w=v.,w=,1,3,5,7,9,2.8,数组索引,4/9/2026,34,存取元素的数据块,例如存取,V,的前三个元素,可使用语句:,存取第二个到第四个元素,存取第三个到最后一个元素,v(1:3),ans,=,1 3 5,v(2:4),ans,=,3 5 7,v(3:end),ans,=,5 7 9,4/9/2026,35,end,表示向量中最后一个元素。若,v,是一个向量,则下面命令分别产生一个列向量和一个行向量:,v(:),ans,=,1,3,5,7,9,v(1:end),ans,=,1 3 5 7 9,4/9/2026,36,索引不限于连续的元素:,v(1:2:end),ans,=,1 5 9,v(end:-2:1),ans,=,9 5 1,一个向量也可以作为另一个向量的索引,v(1 4 5),ans,=,1 7 9,4/9/2026,37,x=linspace(1,2,5),x=,1.0000 1.2500 1.5000 1.7500 2.0000,linspace(1,2,6),ans,=,1.0000 1.2000 1.4000 1.6000 1.8000 2.0000,x=linspace(1,2,7),x=,1.0000 1.1667 1.3333 1.5000 1.6667 1.8333 2.0000,函数,linspace,语法:,x=,linspace(a,b,n,),该语句产生一个含有,n,个元素的行向量,x,,这,n,个元素线性地隔开并且包含,a,与,b,4/9/2026,38,2.8.2,矩阵索引,A=1 2 3;4 5 6;7 8 9,A=,1 2 3,4 5 6,7 8 9,MATLAB,中矩阵可以用一列被方括号括起,并用分号隔开的行向量表示。,矩阵索引和向量索引一样,但是矩阵索引需要两个索引号,分别确定行的位置和列的位置,4/9/2026,39,例如:,A(2,3),ans,=,6,C3=A(:,3),C3=,3,6,9,r2=A(2,:),r2=,4 5 6,T2=A(1:2,1:3),T2=,1 2 3,4 5 6,B=A;,B(:,3)=0,B=,1 2 0,4 5 0,7 8 0,E=A(1 3,2,3),E=,2 3,8 9,A(end,end),ans,=,9,A(end,end-2),ans,=,7,A(2:end,end:-2:1),ans,=,6 4,9 7,4/9/2026,40,使用索引矩阵寻址,D=logical(1 0 0;0 0 1;0 0 0),D=,1 0 0,0 0 1,0 0 0,A(D),ans,=,1,6,MATLAB,将,每个数组都作为列向量来存储,而不管数组的维数是多少。这个列由数组列首尾相连而成。如矩阵,A,在,MATLAB,中存储为:,1,4,7,2,5,8,3,6,9,4/9/2026,41,V=A(:),V=,1,4,7,2,5,8,3,6,9,如果要求一个矩阵所有元素之和,可以使用语句:,s=sum(A(:),s=,45,sum,(,v,),函数会将输入向量,v,的所有元素的值都相加。,若,输入是一个矩阵,,则输出是一个行向量,该行向量包含输入数组的每一列的和,s1=sum(A),s1=,12 15 18,sum(sum(A),ans,=,45,A(5),ans,=,5,A(8),ans,=,6,4/9/2026,42,例题,2.5,f=imread(Fig0206(a)(rose-original).tif);,fp,=f(end:-1:1,:);%,fp,是图像,f,垂直翻转的图像,fc,=f(257:768,257:768);%,fc,是图像,f,的一部分,fs,=f(1:2:end,1:2:end);%,fs,是二次取样后的图像,subplot(2,2,1),imshow(f),title(flower);,subplot(2,2,2),imshow(fp),title(fp);,subplot(2,2,3),imshow(fc),title(fc);,subplot(2,2,4),imshow(fs),title(fs);,plot(f(512,:),title(scanline);,4/9/2026,43,4/9/2026,44,2.8.3,选择数组的维数,row=size(f,1),沿矩阵,f,的第一维数(垂直方向)给出,f,的大小,即行数,row=,1024,line=size(f,2),沿矩阵,f,的第二维数(水平方向)给出,f,的大小,即列数,line=,1024,m,n=size(f),求得矩阵,f,的行列数,分别保存到,m,n,中,d=,ndims(f,),它将给出数组,A,的维数,一般不小于,2,,即使是标量也认为是,11,的二维数组,4/9/2026,45,2.9,一些重要的标准数组,zeros(M,N),生成一个大小为,M*N,的,double,类矩阵,其元素均为,0,。,ones(M,N),生或一个大小为,M X N,的,dpuble,类矩阵,其元素均为,1,。,ture(M,N,生成一个大小为,M x N,的,logical,类矩阵,其元素为,l,。,false(M,N),生成一个大小为,M*N,的,logical,类矩阵,其元素为,0,。,magic(M),生成一个大小为,M*M,的“魔术方阵”。在该方阵中,每一行中的元素之和、每一列中的元素之和以及主对角线中的元素之和均相等。魔术方阵可用于侧试目的,因为它们易于生成,且其元素均为整数。,rand(M,N),生成一个大小为,MxN,的矩阵,矩阵中的元素都是在区间,0,,,1,中均匀分布的随机数。,randn,(M,N),生成一个大小为,M*N,的矩阵,矩阵中的元素是正态分布,(,如高斯分布,),的随机数,随机数的均值为,0,,方差为,1,。,4/9/2026,46,4/9/2026,47,2.10 M,函数编程简介(略),4/9/2026,48,小 结,本章的内容是后续讨论的基础。能顺利的从磁盘上检索一幅图像,通过简单的操作对其进行处理,显示结果并存盘。,本章的重点在于如何结合,MATLAB,和,IPT,函数以及编程构造来扩展这些函数的功能。事实上,这只是如何在后续章节组织内容的铺垫。通过组合标准的函数与新代码,我们展示了数字图像处理中众多问题的典型解决方法。,4/9/2026,49,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服