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表示引自Internet URL中的图像。
写入(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:Emptyor not,Mode:lossy orlossless,Quality等。
2.2 图像的显示方法1:使用Image Viewer(图像浏览器),即运用imview函数。
同时显示多帧图像的所有帧,可用到m ontage 函数。
改变显示大小:im view(X,map,’I nti alMagni fica tit ion ’,’f it ’), Inti alMagni fi catit ion 默认值为100,即100%显示,设置为fit 则全屏显示。
关闭:imv iew c lose all 。
I mage Vie we r还提供了三个工具:全景查看窗口(导航功能)、像素区域工具、图像信息窗口。
方法2:使用图形图像视窗,即运用ims ho w函数。
ﻩ调用true size 函数来设定图像到屏幕像点的映射关系。
ﻩ可以运用g etimage 函数来将当前显示的图像赋值给一个变量。
ﻩ调用格式:[1] ims how(I,n);\\n为灰度级 [2] i ms how (I,[low,high]);\\指定I 的数据范围[3] imsh ow(BW);\\显示二值图像BW,0为黑色,1为白色 [4] imsh ow(X,m ap);\\索引图像 [5] i ms ho w(RGB);[6] imshow (…,disp lay_option);\\显示图像的方式,选择‘notruesize ’或者‘ture size ’[7] imshow (x,y,A ,…);\\x,y 建立非默认的空间坐标系统 [8] imsh ow filen ame;[9] h=imsho w(…)\\h 表示被显示图像的句柄2.3 图像的代数运算[1] 相加(ima dd): Z=im add(X,Y)\\存为8位;Z=imadd(X,Y,’ui nt 16’)\\存为16位。
ﻩ[2] 求补(im comp lem ent ): IM 2=imc ompleme nt(IM1)。
ﻩ[3] 减法(i ms ubtract 或者imabsdif f):Z=imsubtract (X,Y)\\差值结果小于0的赋值为0; Z=imabsdiff(X,Y)\\ 差值结果取绝对值。
ﻩ[4] 乘法(imm ult iply): Z=i mmult ip ly(X,Y)。
ﻩ[5] 除法(imdivide ): Z =imd ivi de(X,Y)。
2.4 点运算ﻩ灰度变换函数GST :B(x,y)=f[A(x,y)]。
其中有: [1]线性点运算B ()f A A αβ==+; [2]非线性点运算; [3]直方图修正。
2.5 图像的集合运算ﻩ改变大小imresize:Y=imresize(X,M,method),其中M为放大的倍数,method有如下几种插值方式nearest,bilinear,bicubic。
也可以规定输出图像大小,[heng,zong]。
图像旋转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(tMA TLAB中还提供了很多空间变换的工具,如:fliptform,fgormfwd,tforminv,findou nds,makereample,tformarray,imtransform等。
2.6图像的领域和块操作ﻩ领域操作分为滑动领域和分离领域两类。
滑动领域函数nlfilter,用法如下:[1] B=nlfilter(A,[m n],fun)\\[m n]表示滑动领域m*n,fun为图像领域上的处理函数;[2] B=nlfilter(A,[m n],fun,P1,P2,…)\\可以传递参数P1,P2,…给函数fun;[3]B=nlfilter(A,’indexed’)\\把图像作为索引色图像处理,double填补1,uint8补0。
而且fun可以是一个函数句柄或是一个内联函数,返回类型由fun决定。
但是nlfilt er处理时可能需要很长时间,这时可是考虑使用快速处理函数colfilt。
用法类似,多一个参数bldck_tpye,表示块的移动方式,有distinct和sliding两个取值,前者表示分离块操作,后者表示滑动块操作。
而且有[mblock nblock]表示图像块的大小。
分离块操作是将图像划分为大小相同的矩形区域,不同图像块在图像中无重叠排列,其顺序从左上角开始,不足的地方可以在右下角补0。
函数为blkproe,调用格式和nlfilter 类似。
2.7 几何畸形校正和图像配准用到函数imtransform。
3MATLAB二维与三维图形绘制及动画3.1 基本绘图命令3.2绘图选项常用的绘图选项:线形:- -. -- :颜色:r g b c m y k w点标记:+ o * . x s d h p > <^ v坐标轴标注:axis([xmin xmax,yminymax]),axisauto/square/xy/ij/normal/off/on等用法。
图形窗口保持:holdon…holdoff。
ﻩ给坐标加边框:box on…box off。
图形缩放:zoomon…zoom out…zoomoff。
ﻩ快速绘图:fplot(‘fun’,[xmin xmax,yminymax])。
ﻩ打印:print[filename][-device][-options],其中device决定打印机的类型。
3.3特殊坐标二维图形图函数,也可缺省,如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 三维图形的绘制说明:[1]改变网格属性:set(axes_handle,’XGrid’,’on’)grid函数显示网格。
ﻩ[2]网格图中用到函数hidden on和hidden off来显示或者不显示被遮住部分。
[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命令的作用是在三维曲面图旁边绘制一个可以指示亮度的彩色条。
[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]火柴杆图和瀑布图:stem,stem3和waterfall。
3.6三维图形的控制ﻩ视角view:仰角(与z轴的夹角)el和方位角(与x轴的夹角)az,即view(az,el)。