Matlab图像处理精讲.ppt
第五篇 Matlab图像处理数字图像的概念下标表示了当前像素点在图像中的位置;表示了图像当前位置的亮度或灰度;数字图像的形成一幅数字图像由许多个像素组成,像素也是数字图像的单位之一;胶片(模拟)图像的单位为长度,如寸、毫米等等,1英寸证明照的尺寸为3.6cm2.7cm;2英寸证明照的尺寸是3.5cm5.3cm;5英寸照片的尺寸为12.7cm8.9cm;数字图像的生成就是为每个像素填上需要的颜色值。数码相机、摄像机、扫描仪等设备。n图像处理是对数字图像进行各种操作,如亮度、对比度调整,去噪、边缘检测、压缩、分割和目标识别等工作;nRGB彩色图像是由三幅独立的红、蓝、绿分量图像组成,对彩色图像的处理可以转化为对三基色分量图像的处理;1、Matlab图像处理工具箱常用命令1)图像读取I=Imread(pathorname)I,map=Imread(pathorname)2)显示图像Imshow(I)Imshow(I,map)Imshow(I,low,high)Imshow(I,)格式描述后缀TIFF标签图像文件格式.tif.tiffJPEG联合图像专家组.jpg.jpegGIF图形交换格式(imwriteunuse).gifPNG可移植网络图形.pngBMPWindows位图.bmpXWDXWindows转储.xwdI待显示图像矩阵map灰度级别,默认为256low,high为灰度最大、最小值,小于为0,大于为255;将low设置为矩阵I的最小值,high设置为I的最大值;3)pixval交互显示单个像素的亮度值;显示欧几里得距离;4)imfinfo获得图像文件信息;5)size(I)获得图像矩阵大小;6)保存图像imwrite(I,filename,fmt)imwrite(I,map,filename,fmt)I待保存的图像矩阵;filename图像保存路径;fmt图像保存格式;7)改变图像大小B=imresize(I,scale)B=imresize(I,mrowsncols)B,newmap=imresize(I,map,scale)实例:5-1.m2、图像分类1)灰度图像(亮度)灰度图像可分为8位和16位两种,像素数据类型为uint8和uint16,分别对应0255、0655352)二值图像像素取值只能为0或1;逻辑矩阵;B=logical(A)非零为1;Islogical判断是否为逻辑矩阵;Sample:5*5大小矩阵,按图像显示3)索引图像索引图像包括调色板和图像数据两部分,是把颜色进行排列、编号,图像数据对应为该点像素的颜色序号而非颜色本身;调色板为m3矩阵,每一行代表一种颜色,各元素的值介于0,1之间,乘以255来表示实际值;实例:5-2.m4)真彩(RGB)图像由三基色RGB组合各种颜色值,每一幅真彩图像由三个基色分量图组合而成。真彩图像灰度图像近似平均R=G=B=(R+G+B)/3亮度方程三基色与白光之间的数学关系,即三基色按什么比例组合可以生成白光;R=G=B=0.3R+0.59G+0.11B实例:5-3.m红蓝紫红绿黄蓝绿青黄红橙黄蓝绿红蓝绿白3、图像类型转换根据需求,将图像在不同类型间进行转换;索引图像,无法直接滤波;1)dither通过抖动算法转换图像类型;X=dither(RGB,map)抖动算法将RGB图像按指定的调色板map转换为索引图像X;BW=dither(I)将灰度图像通过抖动算法转换为二值图像;2)im2bw通过设置亮度阈值,把真彩图像、索引图像以及灰度图像转换为二值图像;BW=im2bw(I,level)灰度图-二值图BW=im2bw(X,map,level)索引图-二值图BW=im2bw(RGB,level)真彩图-二值图3)ind2gray将索引图转换为灰度图像,命令去除了索引图像的色度和饱和度信息,而仅保留了亮度信息;I=ind2gray(X,map)4)ind2rgb将索引图转换为真彩图像,命令把调色板中的颜色值赋给了图像矩阵;I=ind2rgb(X,map)5)mat2gray将数据矩阵转换为灰度图像;I=mat2gray(A,aminamax)I=mat2gray(A)6)gray2indX,map=gray2ind(I,n)灰度图-索引图X,map=gray2ind(BW,n)二值图-索引图7)grayslice通过设定阈值将灰度图像转换为索引色图;X=grayslice(I,n)把灰度图像均匀量化为n个等级,然后转换为伪彩色图像;8)rgb2gray真彩图像转换为灰度图像,或将彩色调色板转换为灰度调色板;X=rgb2gray(A)9)rgb2ind真彩图像转换为索引图像;X,map=rgb2ind(RGB,n)调色板含n中颜色X=rgb2ind(RGB,map)实例:5-4.m4、颜色空间颜色空间是表示颜色的一种数学方法,人们用它来指定和产生颜色,使颜色形象化。颜色空间中的颜色通常使用代表三个参数的三维坐标来指定,这些参数描述的是颜色在颜色空间中的位置。被描述的颜色对象本身是客观的,不同颜色空间只是从不同的角度去衡量同一个对象。颜色空间按基本结构可分为两大类:1)基色颜色空间;其典型结构有RGB,还包括HSI,HSL和HSV等,计算机图形显示就属于这类颜色空间;2)色、亮分离颜色空间;其典型结构包括YCC/YUV、Lab等,主要用于电视广播系统,其目的是通过压缩色度信息以有效地播送彩色电视图像。CIEXYZ是由国际照明委员会定义的颜色空间,通常作为国际性的颜色空间标准,用作颜色的基本度量方法。CIE定义一切颜色空间的基准,它即属于基色颜色空间,也属于色、亮分离颜色空间,是贯穿两者的枢纽。常用的颜色空间亮度(lightnessorintensityorluminance):亮度是光作用于人眼所引起的明亮程度的感觉,它与被观察物体的发光强度有关,主要表现光的强和弱;色调(hue):色调是当人眼看一种或多种波长的光时所产生的色彩感觉,它反映颜色的种类,是决定颜色的基本特征;饱和度(saturation):饱和度是指颜色的纯度即掺入白光的程度,表示颜色深浅的程度;1)RGB 用于计算机图形学中,采用红、绿和蓝来生成目标颜色;结构简单,但存储较费带宽;微软和惠普曾推出一个叫standardRGB的色域标准(sRGB),是一个基于32位PC机的标准。sRGB只是人眼能辨别的色彩空间的一部分,而很多色彩都无法显示。但这个标准还是被广泛接受。我们现在在使用的显示器、扫描仪、打印机、数码相机,许多都使用这个标准。03年,微软又推出了scRGB色域标准,它拓展了色域范围,全部复盖人眼可见的色域范围其16位的精度也大大超过8位的sRGB。2)YUV颜色空间主要用于视频系统中,其中Y代表亮度,UV代表色度。亮度是通过RGB输入信号来建立的,它将RGB信号的特定部分叠加到一起。色度则定义了颜色的两个方面,饱和度(saturation)与色调(hue),分别用Cr和Cb来表示。其中,Cr反映了RGB输入信号红色部分与RGB信号亮度值之间的差异。而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度值之同的差异。gamma校准的RGB与YUV颜色空间的转换:Y=0.299R+0.587G+0.114BU=-0.147R-0.289G+0.436BV=0.615R-0.515G-0.100BR=Y+1.140VG=Y-0.395U-0.581VB=Y+2.032U3)CMYK颜色空间主要用于彩色打印,也称印刷色彩模式,CMY是3种印刷油墨名称的首字母:青色Cyan、洋红色Magenta、黄色Yellow,而K取的是black最后一个字母。RGB模式是一种发光的色彩模式,CMYK则是一种依靠反光的色彩模式。Matlab的颜色空间转换指令rgb2ntscntsc2rgbrgb2hsvhsv2rgbrgb2YcbcrYcbcr2rgb5、其它图像显示相关命令1)imageimage(I),colormap(map)image命令用于显示I矩阵表示的图像,索引图像必须使用调色板;2)montage多帧图像,四维,HDF、TIFF;实例:5-6.m,创建一个四帧图像,并在一幅图中显示;3)immovie以动画方式显示图像各帧,既将各帧图片转换为matlab动画格式;只能用索引图像;mov=immovie(X,map)实例:5-7.m4)subimagesubplot以子图方式在一个图像窗口中显示多幅图像,但整个图像窗口采用一个调色板,subimage可以在各个子图中采用各自的调色板;实例:5-8.m5)zoom缩放图像zoomon,zoomoff打开或关闭缩放功能zoomout恢复图像的原始尺寸zoomreset以当前图像尺寸作为缩放起点zoomxon,zoomyon设置X或Y轴缩放功能6)warp纹理映射imshow显示的图像在二维平面上,纹理映射可以把图像显示在其他类型的表面,如柱面、球面等等;warp(x,y,z,I)把图像I显示在平面(x,y,z)实例:5-9.m图像的几何操作图像的缩放、旋转、分割、剪切都属于几何操作。图像插值缩放等操作时的像素取法1、图像插值运算1)最近邻插值nearestneighborinterpolation每个插值输出像素的值就是输入图像中与其最近的采样点的值;它是matlab图像处理工具箱默认的插值方法,计算量小、速度快,对索引图像来说是唯一的方法。但当图像中含有较多高频分量时,会造成放大后的块状效应;2)双线性插值bilinearinterpolation其输出像素值是它在输入图像位置上22邻域内四个像素的平均值,即由某个像素周围四个像素的灰度值在水平和垂直两个方向进行插值;3)双三次插值bicubicinterpolation其输出像素值是它在输入图像位置上44邻域内16个像素的平均值;插值效果的提升带来了大量的计算,插值算法是目前研究的一项内容;2、imresize图像插值缩放B=imresize(A,scale)输入图像A可以是灰度图、二值图或RGB真彩图,scale是缩放比例,大于0;B=imresize(A,mrowsncols)mrowsncols用于指定目标图像的尺寸,如果希望保持长宽比缩放,可以只指定一个参数,另一置为NaN;Ynewmap=imresize(X,map,scale/mrowsncols)输入图像A是索引图,缩放比例或尺寸采用上两种均可;.=imresize(.,method)method用来指定缩放插值方法,nearest、bilinear、bicubic;实例:5-10.m3、imrotate图像插值旋转B=imrotate(A,angle,method)旋转后图像超过原图像的部分默认置为0,method用来指定缩放插值方法,nearest、bilinear、bicubic;B=imrotate(A,angle,method,crop)可以采用crop参数对旋转后图像进行剪切,实例:5-11.m4、imcrop图像的剪切从原始图像中剪切一个矩形子图,指定矩形顶点的坐标及长宽,或鼠标选取;B=imrotate(A,angle,method)旋转后图像超过原图像的部分默认置为0,method用来指定缩放插值方法,nearest、bilinear、bicubic;B=imrotate(A,angle,method,crop)可以采用crop参数对旋转后图像进行剪切,实例:5-12.m图像邻域和块操作1、滑块邻域操作滑块邻域是一组像素,操作对象为邻域中心的像素。对于mn的滑块邻域,其中心像素的位置为:floor(m,n+1)/2)m=2,n=3floor(2,3+1)/2)=floor(3,4/2)=1,2滑动邻域操作的步骤:1)选择像素;2)确定滑动邻域的大小;3)根据需要,选择函数对邻域内像素操作;4)计算结果作为输出图像的该点像素值;5)按1-4遍历原图像中的所有像素;邻域操作函数1)colfilt快速邻域操作,为每一个像素建立一个列向量,向量元素对应于该像素邻域的元素;B=colfilt(A,mn,block_type,fun)B=colfilt(A,mn,mblockblock,block_type,fun)m,n滑块大小block_typedistinct图像块不重叠sliding图像块滑动fun块运算函数实例:5-13.m2)nlfilter通用滑动窗操作函数,为每一个像素建立一个列向量,向量元素对应于该像素邻域的元素;B=nlfilter(A,mn,fun)m,n滑块大小fun块运算函数实例:5-14.m2、图像块操作把图像矩阵分成同样大小的子块(子矩阵),图像操作转化为矩阵运算,提高处理速度。图像压缩图像分析图像块相关函数1)bestblk块尺寸选择函数siz=bestblk(mn,k)mb,nb=bestblk(mn,k)返回mn维图像的块划分值siz,或mb,nb为划分图像块的行数和列数,k图像块长度或宽度的最大值;nsiz=bestblk(1024768,16)nsiz=1616nm,n=bestblk(1024,768,10)nm=8nn=82)blkproc块操作函数B=blkproc(A,mn,fun)B=blkproc(A,mn,mbordernborder,fun)以mn大小的图像块划分对图像矩阵A做函数fun运算;mbordernborder为扩展边界,实际图像块大小为m+2mbordern+2nborder;实例:5-15.m3)col2im把列向量排列成图像块A=col2im(B,mn,mmnn,block_type)把图像B的每一列重新排列成mn的图像块,按排列类型最终形成一个mmnn的图像;block_typedistinct图像块不重叠sliding图像块滑动4)im2col把图像块排列成列向量B=im2col(A,mn,block_type)把图像A的每一个mn的图像块,重新组合成图像B;实例:5-16.m3、图像区域划分二值掩膜处理1)roipoly多边形区域选择BW=roipoly(I)BW=roipoly(I,c,r)实例:5-17.m2)roicolor按灰度选择区域BW=roicolor(A,low,high)BW=roicolor(A,v)按指定的灰度范围,low-high来分割图像,logical或按照向量v中指定的灰度值来选择区域;实例:5-18.m4、特定区域滤波roifilt2J=roifilt2(h,I,BW)J=roifilt2(I,BW,fun)I为输入图像,BW为指定区域,h为滤波器,或采用指定运算函数fun进行滤波;Matlab预定义的二维滤波器h=fspecial(type,parameters)type意义可选参数average均值滤波size-模板尺寸,默认为3,3disk圆形区域均值滤波 radius-区域半径,默认值为5gaussian高斯低通滤波器两个参数,size-模板尺寸3,3,sigma-滤波器标准差,默认值为0.5laplacian拉普拉斯算子33模板,alpha-控制算子形状,0,1间,默认0.2log拉普拉斯高斯算子size-模板尺寸,默认5,5,sigma为滤波器标准差,默认值为0.5motion运动模糊算子参数表示对象按逆时针方向以theta角度运动了a个像素,a默认9,角度默认0type意义可选参数prewitt无参数,h为33模板,水平边缘,垂直要用hsobel无参数,h为33模板,水平边缘,垂直要用hunsharp对比度增强滤波器33模板,alpha-控制算子形状,0,1间,默认0.2实例:5-19.m5-20.m5、特定区域填充roifillJ=roifill(I)J=roifill(I,c,r)I为输入图像,向量c、r用来指定多边形坐标,或手动标定;利用多边形边界上点的灰度平滑插值来代替多边形内部的点的像素;J=roifill(I,BW)BW是一个与I同样大小的二值图,在BW中像素不为零的地方进行填充;实例:5-21.m