图像Ch3.3-4.3-4.ppt_第1页
图像Ch3.3-4.3-4.ppt_第2页
图像Ch3.3-4.3-4.ppt_第3页
图像Ch3.3-4.3-4.ppt_第4页
图像Ch3.3-4.3-4.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

3.3图像的显示,图像的显示过程是将数字图像从一组离散数据还原为一幅可见的图像的过程。严格地说,图像的显示在图像处理,尤其是图像分析过程中并不是必需的。但是图像的显示是提高图像处理分析性能非常有用的一个手段,通过图像的显示,可以监视图像处理过程,并可交互控制处理分析过程。图像显示最重要的特性是图像的大小、光度分辨率、灰度线性、平坦能力和噪声特性等。本节主要介绍MATLAB软件图像显示工具。,Matlab显示图像的主要方法是调用image函数(MATLAB的函数);此外,还提供了与image函数类似的imagesc函数,利用该函数,可以实现对输入图像数据的自动缩放。同时,还包含了一个附加的显示函数imshow(ImageProcessingToolbox中的函数)。,3.3.1标准图像显示技术,loadclownimage(X)colormap(map),1、image函数,image是MATLAB本身提供的最原始的图像显示函数.,文件clown.mat在MATLAB6p1toolboxmatlabdemos中,2、imagesc函数,loadclownimagesc(X)colormap(gray),loadclownclims=2040;imagesc(X,clims)colormap(gray),3、imshow函数,(1)显示索引图像imshow(X,map)对于图像的数据矩阵X中的每个像素,imshow都将其显示为存储在map映射表矩阵的相应的行所对应的颜色。,(2)显示灰度图像imshow(I)imshow(I,N)(obsoletesyntaxinMatlab7)其中I为灰度图像的数据矩阵,N为整数,用于指定对应于灰度颜色映射表中的索引数。,(3)显示二进制位图imshow(BW),(4)显示RGB图像RGB图像即真彩图像。RGB图像直接表征像素颜色,而不是像其他图像那样通过颜色映射表来指定像素颜色。显示RGB图像的语法如下:imshow(RGB),(5)显示图形文件中的图像imshowfilename;,imshowkids.tif;,(6)显示非图像数据在MATLAB中以灰度图形显示有些非图像数据。这里所说的非图像数据,是指其数据矩阵的元素值落在“合法”范围之外。对于double数组来说,该范围是0,1;对于uint8数组来说,该范围是0,255;对于uint16来说,该范围是0,65535。,imshow(I,lowhigh),imshow(I,lowhigh)displaysIasagrayscaleintensityimage,specifyingthedatarangeforI.Thevaluelow(andanyvaluelessthanlow)displaysasblack,thevaluehigh(andanyvaluegreaterthanhigh)displaysaswhite,andvaluesinbetweendisplayasintermediateshadesofgray.Ifyouuseanemptymatrix()forlowhigh,imshowusesmin(I(:)max(I(:);theminimumvalueinIdisplaysasblack,andthemaximumvaluedisplaysaswhite.,下面的代码首先读取testpat1.tif图形文件,然后对其进行过滤操作,再将结果数据显示出来:I=imread(testpat1.tif);J=filter2(12;-1-2,I);imshow(I);figure,imshow(J,);,3.3.2特殊图像显示技术,(1)添加颜色条可以利用colorbar函数将颜色条添加到坐标轴对象中。添加的颜色条将指示出该图像中不同颜色的数据值。I=imread(saturn.tif);h=121;000;-1-2-1;imshow(I,);colorbar;J=filter2(h,I);figure,imshow(J,);colorbar;,imshow(I)=,(2)显示多帧图像阵列多帧图像是一个包含多个图像的图像文件。MATLAB支持的多帧图像的文件格式包括HDF和TIFF两种。文件一旦被读入MATLAB,多帧图像的显示帧数由矩阵的第四维数值来决定。在多阵列中查看图像,有下面几种方式:独立显示每一帧,调用imshow函数;同时显示所有的帧,调用montage函数;将多帧阵列转换为动画电影,调用immovie函数。,(3)图像上的区域缩放利用zoom命令可实现图像上的任意区域的缩放。zoomon回车执行后,matlab的图形窗口对象进入区域缩放状态。此时,按下鼠标左键,拖动鼠标指示,则图形窗口中将出现以虚框表示的选择矩形。松开鼠标键后,则该选中的区域将被放大到整个图形窗口的显示空间。在放大区域中单击鼠标右键可将刚刚放大的图形恢复到原来的状态。zoomoff则可关闭图形窗口的缩放功能。,(4)纹理映射在Matlab中,专门提供了一个对图像进行纹理映射处理的函数warp,使之显示在三维空间中。在Matlab中,纹理映射是利用双线性渐变算法将图像映射到某个表面栅格上。,I=imread(flowers.tif);x,y,z=cylinder;warp(x,y,z,I);,x,y,z=sphere;warp(x,y,z,I);,(5)显示多幅图像MATLAB没有对用户想要同时显示的图像数目进行限制,然而,由于受到计算机硬件配置的影响,图像显示数目通常会存在一些系统限制。imshow函数总是在当前窗口中显示一幅图像,如果想同时显示两幅图像,那么第二幅图像就会替代第一幅图像。为了避免图像在当前窗口中的覆盖现象,在调imshow函数显示下一幅图像之前可使用figure命令来创建一个新的空图形窗口。imshow(I)figure,imshow(I2)figure,imshow(I3),这种格式将图形窗口划分为mn个矩形显示区域,并激活第p个显示区域。例如:如果希望并排显示两幅图像,可使用以下语句:X1,map1=imread(forest.tif);X2,map2=imread(trees.tif);subplot(1,2,1),imshow(X1,map1);subplot(1,2,2),imshow(X2,map2);,可以采用两种方法将多幅图像显示在同一个单独的图形窗口中。其方法之一是:联合使用imshow函数和subplot函数;subplot函数将一个图形窗口划分为多个显示区域:subplot(m,n,p),X1,map1=imread(forest.tif);X2,map2=imread(trees.tif);subplot(1,2,2),imshow(X2,map2);subplot(1,2,1),imshow(X1,map1);,也可以使用subimage函数来显示,subimage函数在显示图像之前首先将图像转换为RGB图像,因此不会出现调色板问题。X1,map1=imread(forest.tif);X2,map2=imread(trees.tif);subplot(1,2,1),subimage(X1,map1);subplot(1,2,2),subimage(X2,map2);,采用的是映射后包含所有图像调色板信息的一个新调色板,3.4图像运算,3.4.1图像的点运算点运算,是一种通过对图像中的每个像素(即像素点上的灰度值)进行计算,从而改善图像显示效果的操作。点运算常用于改变图像的灰度范围及分布,是图像数字化及图像显示的重要工具。在真正进行图像处理之前,有时可以用点运算来克服图像数字化设备的局限性。,典型的点运算应用包括:光度学标定:补偿图像传感器的非线性特性;对比度增强:调整图像的亮度、对比度;显示标定:突出用户感兴趣的特征;图像分割:为图像添加轮廓线;,MATLAB图像处理工具箱没有提供对图像进行直接点运算的函数,而是将图像的点运算过程直接集成在某些图像处理函数组中。如果用户仅仅是希望对图像进行点运算处理,那么可充分利用MATLAB强大的矩阵运算能力,对图像数据矩阵调用各种MATLAB计算函数进行处理。,使用灰度变换函数进行线性点运算的程序清单:rice=imread(rice.tif);I=double(rice);J=I*0.43+60;rice2=uint8(J);subplot(1,2,1),imshow(rice);subplot(1,2,2),imshow(rice2);,图像的代数运算是基本代数运算在图像上的实现,最直接的方法是直接使用Matlab的代数运算符来实现图像代数运算,但这样做之前必须将图像转换为与基本代数运算符类型相容的双精度浮点类型。而图像处理工具箱为用户提供了适合所有非稀疏数值类型的代数运算的函数。,3.4.2图像的代数运算,imcomplement,(1)图像的加法运算图像相加一般用于对同一场景的多幅图像求平均效果,以便有效地降低具有叠加性质的随机噪声。MATLAB中的imadd函数用于进行两幅图像的加法或给一幅图像加上一个常数。该函数将某一幅输入图像的每一个像素值与另一幅图像相应的像素值相加,返回相应的像素之和作为输出图像。其调用格式为:Z=imadd(X,Y),两幅图像的像素值相加时产生的结果很可能超过图像数据类型所支持的最大值(称为溢出),当数据发生溢出时,该函数将数据截取为数据类型所支持的最大值,这种截取效果称之为饱和,为了避免这种现象出现,最好将图像类型转换为一种数据范围较宽的数据类型。,I=imread(rice.tif);J=imread(cameraman.tif);subplot(1,3,1),imshow(I);subplot(1,3,2),imshow(J);K=imadd(I,J);subplot(1,3,3),imshow(K);,X=uint8(255075;44225100);Y=uint8(505050;505050);Z=imadd(X,Y)Z=2555012594255150,若不是两幅图像相加,而是给图像的每一个像素加上一个常数(使图像的亮度增加),同样可以采用imadd函数。下面是RGB图像增加亮度的程序清单:RGB1=imread(flowers.tif);RGB2=imadd(RGB1,100);subplot(1,2,1),imshow(RGB1);subplot(1,2,2),imshow(RGB2);,(2)图像的减法运算图像减法也称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。imsubtract函数用来将一幅图像从另一幅图像中减去或从一幅图像中减去一个常数。该函数的调用格式为:Z=imsubtract(X,Y)其中,Z是输入图像X与输入图像Y相减的结果。减法操作时有时会导致某些像素值变为一个负数,此时,该函数自动将这些负数截取为0。,下面是一个根据原始图像生成其背景亮度图像,然后再从原始图像中将背景亮度图像减去的程序清单:rice=imread(rice.tif);background=imopen(rice,strel(disk,15);rice2=imsubtract(rice,background);subplot(1,2,1),imshow(rice);subplot(1,2,2),imshow(rice2);,(3)图像的乘法运算在MATLAB中,使用immultiply函数实现两幅图像或一幅图像与一个常数的乘法。I=imread(moon.tif);J=immultiply(I,1.2);subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);,(4)图像的除法运算在MATLAB中,使用imdivide函数实现两幅图像的除法。该函数的调用格式为:Z=imdivide(X,Y)其中,Z=X/Y。下面将前面所示的rice.tif的两幅图像进行除法运算的程序清单:rice=imread(rice.tif);background=imopen(rice,strel(disk,15);rice2=imsubtract(rice,background);subplot(1,3,1),imshow(rice);subplot(1,3,2),imshow(rice2);Ip=imdivide(rice,rice2);subplot(1,3,3),imshow(Ip);,(5)图像的四则代数运算执行该操作较好的一个方法是使用函数imlincomb,该函数的调用格式为:Z=imlincomb(A,X,B,Y,C)其中,Z=A*X+B*Y+C,(1)图像的插值插值是常用的数学运算,通常是利用曲线拟合的方法,通过离散的采样点建立一个连续函数来逼近真实曲线,用这个重建的函数便可求出任意的函数值。设已知函数值为,则未知点x的函数值通过插值可以表达为:其中h为该插值核函数,为权系数。,3.4.3图像几何运算,Matlab提供的图像几何操作函数是数字图像处理工具箱中的基本工具之一,这些函数包括图像尺寸大小变化、旋转、剪裁、删除等。,MATLAB图像处理工具箱提供了三种插值方法:最近邻插值(Nearestneighborinterpolation)双线性插值(Bilinearinterpolation)双立方插值(Bicubicinterpolation),最近邻插值是最简单的插值,在这种算法中,每一个插值输出像素的值就是在输入图像中与其最临近的采样点的值。这种插值方法的运算量非常小。适用于索引图像。双线性插值的输出像素值是它在输入图像中22邻域采样点的平均值,它根据某像素周围4个像素的灰度值在水平和垂直两个方向上对其进行插值。适用于索引图像?双立方插值使用三次插值函数,选择44的邻域采样点,取得的效果比较好,但相应的计算量较大。,(2)图像大小调整利用imresize函数通过一种特定的插值方法可实现图像大小的调整。该函数的语法如下:B=imresize(A,m,method)B=imresize(A,mrowsncols,method)B=imresize(,method,n)B=imresize(,method,h)这里参数method用于指定插值的方法,可选的值为nearest、bilinear、bicubic。缺省时为nearest。,下面是使用不同的插值方法对图像进行放大的程序清单:loadwoman2imshow(X,map);X1=imresize(X,4,nearest);figure,imshow(X1,);X2=imresize(X,4,bilinear);figure,imshow(X2,);X3=imresize(X,4,bicubic);figure,imshow(X3,);,(3)图像旋转函数imrotate可用上述三种方法对图像进行插值旋转,其语法格式为:B=imrotate(A,angle,method)为了使返回的图像与原来图像大小相同,可采用如下的格式:B=imrotate(A,angle,method,crop)其功能是:通过指定crop参数对旋转后的图像进行剪切(取图像的中间部分),把图像进行angle角度旋转,然后返回和原图大小相同的中间部分。,下面是将flowers.tif图像插值旋转35的程序清单:I=imread(flowers.tif);J=imrotate(I,35,bilinear);subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);,(4)图像剪裁工具箱中的imcrop函数将图像剪裁成指定矩形区域。其语法格式为:I2=imcrop(I)X2=imcrop(X,map)RGB2=imcrop(RGB)I2=imcrop(I,rect)X2=imcrop(X,map,rect)RGB2=imcrop(RGB,rect)=imcrop(x,y,)A,rect=imcrop()x,y,A,rect=imcrop(),3.4.4图像邻域和块操作,输出图像中的每个像素值都是由对应的输入像素及其某个邻域内的像素共同决定的,这种图像运算称为邻域运算。通常邻域是指一个远远小于图像尺寸的形状规则的像素块,例如,22、33、44的正方形,或用来近似表示圆及椭圆等形状的多边形。邻域运算与点运算一起形成了最基本、最重要的图像处理方法,尤其是滑动邻域操作,经常被用于图像的线性滤波和二值形态操作。领域操作包括滑动邻域操作和分离邻域操作(图像块操作)两种类型。在进行滑动邻域操作时,输入图像将以像素为单位进行处理,分离邻域操作是基于像素邻域的数值进行的。,(1)滑动邻域操作在MATLAB中,滑动邻域是一个像素集,像素集包含的元素由中心像素的位置决定。滑动邻域操作一次只处理一个图像像素。当操作从图像矩阵的一个位置移动到另一个位置时,滑动邻域也以相同的方向运动,其示意图如图340所示。,图中的滑动邻域为一个23的矩形块,黑点表示滑动邻域的中心像素。通常,对于mn的滑动邻域来说,中心像素的计算方法如下:floor(m,n+1)/2)floor(x):小于x的最近整数例如,上面图340中滑动邻域的中心像素为(1,2),即滑动邻域中的第一行第二列。,MATLAB提供的几种邻域操作函数:1)colfilt函数B=colfilt(A,mn,block_type,fun)实现快速的邻域操作,A是图像,块的尺寸为mn,block_type为指定块的移动方式,即:当为distinct时,图像块不重叠;当为sliding时,图像块滑动。fun为运算函数。,对图像alumgrns.tif进行滑动平均操作:I=imread(alumgrns.tif);I2=colfilt(I,55,sliding,mean);imshow(I);figure,imshow(I2,);,2)nlfilter函数B=nlfilter(A,mn,fun)它是一个通用的滑动窗操作,其中,A表示输入图像,mn指定邻域大小,fun是一个返回值为标量的计算函数。返回值B是一个与输入图像相同大小的图像矩阵。I=imread(tire.tif);f=inline(max(x(:);J=nlfilter(I,33,f);subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);,可以将用户函数指定为一个嵌入式函数(即inline函数)。在这种情况下,出现在nlfilter函数中的嵌入式函数不能带有任何引用标记。,(2)图像块操作图像块操作是将图像的数据矩阵划分为同样大小的矩形区域的操作,它是图像分析和图像压缩的基础。MATLAB中的图像块操作是将图像数据矩阵分别为mn部分的矩阵区域,如图346所示。图中的灰线为数据矩阵(1530),而黑色的矩阵则为显示块(48)。,MATLAB进行图像块操作的函数有:1)blkproc函数该函数能够将每个显示块从影像中提取出来,然后将其作为参数传递给任何用户函数量(即用户指定的函数)。此外,blkproc函数还将由用

温馨提示

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

评论

0/150

提交评论