您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 非常全非常详细的MATLAB数字图像处理技术
-1-MATLAB数字图像处理1概述BW=dither(I)灰度转成二值图;X=dither(RGB,map)RGB转成灰度图,用户需要提供一个Colormap;[X,map]=gray2ind(I,n)灰度到索引;[X,map]=gray2ind(BW,n)二值图到索引,map可由gray(n)产生。灰度图n默认64,二值图默认2;X=graylice(I,n)灰度图到索引图,门限1/n,2/n,…,(n-1)/n,X=graylice(I,v)给定门限向量v;BW=im2bw(I,level)灰度图I到二值图;BW=im2bw(X,map,level)索引图X到二值图;level是阈值门限,超过像素为1,其余置0,level在[0,1]之间。BW=im2bw(RGB,level)RGB到二值图;I=ind2gray(X,map)索引图到灰度图;RGB=ind2rgb(X,map)索引图到RGB;I=rgb2gray(RGB)RGB到灰度图。2图像运算2.1图像的读写MATLAB支持的图像格式有bmp,gif,ico,jpg,png,cur,pcx,xwd和tif。读取(imread):[1]A=imread(filename,fmt)[2][X,map]=imread(filename,fmt)[3][…]=imread(filename)[4][…]=imread(URL,…)说明:filename是图像文件名,如果不在搜索路径下应是图像的全路径,fmt是图像文件扩展名字符串。前者可读入二值图、灰度图、彩图(主要是RGB);第二个读入索引图,map为索引图对应的Colormap,即其相关联的颜色映射表,若不是索引图则map为空。URL表示引自InternetURL中的图像。写入(imwrite):[1]R=imwrite(A,filename,fmt);[2]R=imwrite(X,map,filename,fmt);[3]R=imwrite(…,filename);[4]R=imwrite(…,Param1,Val1,Param2,Val2)说明:针对第四个,该语句用于指定HDF,JPEG,PBM,PGM,PNG,PPM,TIFF等类型输出文件的不同参数。例如HDF的Quality,Compression,WriteMode;JPEG的BitDepth,Comment:Emptyornot,Mode:lossyorlossless,Quality等。2.2图像的显示方法1:使用ImageViewer(图像浏览器),即运用imview函数。同时显示多帧图像的所有帧,可用到montage函数。-2-改变显示大小:imview(X,map,’IntialMagnificatition’,’fit’),IntialMagnificatition默认值为100,即100%显示,设置为fit则全屏显示。关闭:imviewcloseall。ImageViewer还提供了三个工具:全景查看窗口(导航功能)、像素区域工具、图像信息窗口。方法2:使用图形图像视窗,即运用imshow函数。调用truesize函数来设定图像到屏幕像点的映射关系。可以运用getimage函数来将当前显示的图像赋值给一个变量。调用格式:[1]imshow(I,n);\\n为灰度级[2]imshow(I,[low,high]);\\指定I的数据范围[3]imshow(BW);\\显示二值图像BW,0为黑色,1为白色[4]imshow(X,map);\\索引图像[5]imshow(RGB);[6]imshow(…,display_option);\\显示图像的方式,选择‘notruesize’或者‘turesize’[7]imshow(x,y,A,…);\\x,y建立非默认的空间坐标系统[8]imshowfilename;[9]h=imshow(…)\\h表示被显示图像的句柄2.3图像的代数运算[1]相加(imadd):Z=imadd(X,Y)\\存为8位;Z=imadd(X,Y,’uint16’)\\存为16位。[2]求补(imcomplement):IM2=imcomplement(IM1)。[3]减法(imsubtract或者imabsdiff):Z=imsubtract(X,Y)\\差值结果小于0的赋值为0;Z=imabsdiff(X,Y)\\差值结果取绝对值。[4]乘法(immultiply):Z=immultiply(X,Y)。[5]除法(imdivide):Z=imdivide(X,Y)。2.4点运算灰度变换函数GST:B(x,y)=f[A(x,y)]。其中有:[1]线性点运算B()fAA;[2]非线性点运算;[3]直方图修正。2.5图像的集合运算改变大小imresize:Y=imresize(X,M,method),其中M为放大的倍数,method有如下几种插值方式nearest,bilinear,bicubic。也可以规定输出图像大小,[heng,zong]。-3-图像旋转imrotate:Y=imrotate(X,angle,method,’crop’),angle表示逆时针旋转,method同imresize的用法,crop表示将旋转以后的图像取与原图像大小相同的中心部分取出。比例缩放imresize:同改变大小。空间变换imtransform:B=imtransform(A,TFORM,param1,val1,param2,val2),其中TFORM为makeform或者cp2tform产生的结果。如TFORM=makeform(transformtype,…),transform为变换类型,如下:转换类型描述Affine二维或N维仿真变换Projective二维或N维投影变换Custom用户自定义变换Box各维独立变换的放射变换Composite两种或多种变换的组合变换MATLAB中还提供了很多空间变换的工具,如:fliptform,fgormfwd,tforminv,findounds,makereample,tformarray,imtransform等。2.6图像的领域和块操作领域操作分为滑动领域和分离领域两类。滑动领域函数nlfilter,用法如下:[1]B=nlfilter(A,[mn],fun)\\[mn]表示滑动领域m*n,fun为图像领域上的处理函数;[2]B=nlfilter(A,[mn],fun,P1,P2,…)\\可以传递参数P1,P2,…给函数fun;[3]B=nlfilter(A,’indexed’)\\把图像作为索引色图像处理,double填补1,uint8补0。而且fun可以是一个函数句柄或是一个内联函数,返回类型由fun决定。但是nlfilter处理时可能需要很长时间,这时可是考虑使用快速处理函数colfilt。用法类似,多一个参数bldck_tpye,表示块的移动方式,有distinct和sliding两个取值,前者表示分离块操作,后者表示滑动块操作。而且有[mblocknblock]表示图像块的大小。分离块操作是将图像划分为大小相同的矩形区域,不同图像块在图像中无重叠排列,其顺序从左上角开始,不足的地方可以在右下角补0。函数为blkproe,调用格式和nlfilter类似。2.7几何畸形校正和图像配准用到函数imtransform。3MATLAB二维与三维图形绘制及动画3.1基本绘图命令函数功能Plot二维,x,y都是线性坐标Semilogx二维,x为对数坐标,y为线性Semilogx二维,x为线性坐标,y为对数Loglog二维,都为对数坐标Plotyy二维,左右各一个y轴Polar极坐标图Grid添加(gridon)或者去掉(gridoff)网格Zoom允许或者不允许进行放大操作-4-Ginput用光标获取图像中点的坐标Patch填充二维或三维坐标中的二维图像Fill填充二维坐标中的二维图像3.2绘图选项常用的绘图选项:线形:--.--:颜色:rgbcmykw点标记:+o*.xsdhp^v坐标轴标注:axis([xminxmax,yminymax]),axisauto/square/xy/ij/normal/off/on等用法。图形窗口保持:holdon…holdoff。给坐标加边框:boxon…boxoff。图形缩放:zoomon…zoomout…zoomoff。快速绘图:fplot(‘fun’,[xminxmax,yminymax])。打印:print[filename][-device][-options],其中device决定打印机的类型。3.3特殊坐标二维图形Bar/bar3长条图Comet彗星流动图Semilogx对数坐标图形Errorbar图形加上误差范围Fplot较精确的函数图形Polar极坐标绘图Hist累计图(直方图)Plotyy双y轴图形Rose极坐标累计图(玫瑰)Plot插入表格Stairs阶梯图Stem针状图Fill实心图Feather羽毛图Compass罗盘图Quiver向量场图说明:plotyy(x1,y1,x2,y2,fun1,fun2),即可以用fun1和fun2来指定不同的绘图函数,也可缺省,如fun1可以是plot等等。Plot(z)绘制复数z的实部与虚部的图形。3.4二维图形处理图形标注:title,xlabel,ylabel,zlabel,text,gtext,legend。图形窗口的分割:subplot(m,n,p)。坐标系设定:axes,也可事后用gca(getcurrentaxes)获得当前坐标系的句柄。通过get和set函数获取和设置坐标轴对象的有关属性值。用法如:属性值=get(句柄,属性)或者set(句柄,属性1,属性值1,属性2,属性值2,…)。3.5三维图形的绘制Plot3三维线条图Surfc建立带基本等高线的表面图Mesh建立网格图Surfl建立带指定方向照明的表面图Meshc建立具有基本等高线的网格图Surface建立表面图对象的低级函数Meshz建立具有基准平面的网格图Fill3填充三维多边形Surf建立表面图Pcolor二维伪彩色绘图,surf的俯视说明:[1]改变网格属性:set(axes_handle,’XGrid’,’on’)grid函数显示网格。[2]网格图中用到函数hiddenon和hiddenoff来显示或者不显示被遮住部分。-5-[3]waterfall函数在x轴方向产生水流效果。[4]meshgrid函数产生一个x-y平面的网格,如:[x,y]=meshgrid(-3:0.1:3,-2:0.1:2)。[5]绘制球面的函数是sphere,如:sphere(n)或者[x,y,z]=sphere(n)。也可以是函数cylinder,用法:cylinder(R,n)或者[x,y,z]=cylinder(R,n)。n为面数,R为一函数。[6]colorbar命令的作用是在三维曲面图旁边绘制一个可以指示亮度的彩色条。[7]去除图中的黑线条,并对颜色做平滑和插值处理,用到shading函数,用法如下表:Shadingflat去掉各片连接处的线条,平滑颜色Shadinginterp去掉连接线条,使颜色均匀过渡Shadingfaceted默认值[8]三维等值线图:contour3。多一个指定等值线数目的参数N。contour为其俯视图。[9]quiver函数在等值线图上画出方向或速度箭头:quiver(X,Y,DX,DY)。求导:gradient。[10]fill3用法类似于fill,对三维图形进行填充。[11]clabel函数:添加等高线。[12]bar和bar3参数说明:group同一行数据的方条靠一起,stack画在一个方条上。[13]饼形图pie和pie3:参数explode指定某些片是否和整个图脱开,与x的维数相同的向量,其中非0的那一片脱离整体。加上标注如{属性1,属性2,…}。[14]火柴杆图和
本文标题:非常全非常详细的MATLAB数字图像处理技术
链接地址:https://www.777doc.com/doc-4400689 .html