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:Empty or not,Mode:lossy or lossless,Quality等。
2.2 图像的显示
方法1:使用Image Viewer(图像浏览器),即运用imview函数。 同时显示多帧图像的所有帧,可用到montage函数。
- 1 -
改变显示大小:imview(X,map,’IntialMagnificatition’,’fit’), IntialMagnificatition默认值为100,即100%显示,设置为fit则全屏显示。
关闭:imview close all。
Image Viewer还提供了三个工具:全景查看窗口(导航功能)、像素区域工具、图像信息窗口。
方法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] imshow filename;
[9] h=imshow(…)\\\\h表示被显示图像的句柄
2.3 图像的代数运算
[1] 相加(imadd): Z=imadd(X,Y)\\\\存为8位;
Z=imadd(X,Y,’uint 16’)\\\\存为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?f(A)??A??; [2]非线性点运算; [3]直方图修正。
2.5 图像的集合运算
改变大小imresize:Y=imresize(X,M,method),其中M为放大的倍数,method有如下几种插值方式nearest,bilinear,bicubic。也可以规定输出图像大小,[heng,zong]。
- 2 -
图像旋转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 Projective Custom Box Composite 描述 二维或N维仿真变换 二维或N维投影变换 用户自定义变换 各维独立变换的放射变换 两种或多种变换的组合变换 MATLAB中还提供了很多空间变换的工具,如:fliptform,fgormfwd,tforminv,findounds,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决定。但是nlfilter处理时可能需要很长时间,这时可是考虑使用快速处理函数colfilt。用法类似,多一个参数bldck_tpye,表示块的移动方式,有distinct和sliding两个取值,前者表示分离块操作,后者表示滑动块操作。而且有[mblock nblock]表示图像块的大小。
分离块操作是将图像划分为大小相同的矩形区域,不同图像块在图像中无重叠排列,其顺序从左上角开始,不足的地方可以在右下角补0。函数为blkproe,调用格式和nlfilter类似。
2.7 几何畸形校正和图像配准
用到函数imtransform。
3 MATLAB二维与三维图形绘制及动画
3.1 基本绘图命令
函 数 Plot Semilogx Semilogx Loglog Plotyy Polar Grid Zoom
功 能 二维,x,y都是线性坐标 二维,x为对数坐标,y为线性 二维,x为线性坐标,y为对数 二维,都为对数坐标 二维,左右各一个y轴 极坐标图 添加(grid on)或者去掉(grid off)网格 允许或者不允许进行放大操作 - 3 -
Ginput Patch Fill 用光标获取图像中点的坐标 填充二维或三维坐标中的二维图像 填充二维坐标中的二维图像 3.2 绘图选项
常用的绘图选项: 线形:- -. -- : 颜色:r g b c m y k w
点标记:+ o * . x s d h p > < ^ v 坐标轴标注:axis([xmin xmax,ymin ymax]),axis auto/square/xy/ij/normal/off/on等用法。 图形窗口保持:hold on…hold off。 给坐标加边框:box on…box off。 图形缩放:zoom on…zoom out…zoom off。 快速绘图:fplot(‘fun’,[ xmin xmax,ymin ymax])。 打印:print[filename][-device][-options],其中device决定打印机的类型。
3.3 特殊坐标二维图形
Bar/bar3 Semilogx Fplot Hist Rose Stairs Fill Compass 长条图 对数坐标图形 较精确的函数图形 累计图(直方图) 极坐标累计图(玫瑰) 阶梯图 实心图 罗盘图 Comet Errorbar Polar Plotyy Plot Stem Feather Quiver 彗星流动图 图形加上误差范围 极坐标绘图 双y轴图形 插入表格 针状图 羽毛图 向量场图 说明: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(get current axes)获得当前坐标系的句柄。通过get和set函数获取和设置坐标轴对象的有关属性值。用法如: 属性值=get(句柄,属性)或者set(句柄,属性1,属性值1,属性2,属性值2,…)。
3.5 三维图形的绘制
Plot3 Mesh Meshc Meshz Surf
三维线条图 建立网格图 建立具有基本等高线的网格图 建立具有基准平面的网格图 建立表面图 Surfc Surfl Surface Fill3 Pcolor 建立带基本等高线的表面图 建立带指定方向照明的表面图 建立表面图对象的低级函数 填充三维多边形 二维伪彩色绘图,surf的俯视 说明: [1]改变网格属性:set(axes_handle,’XGrid’,’on’) grid函数显示网格。
[2]网格图中用到函数hidden on和hidden off来显示或者不显示被遮住部分。
- 4 -
[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函数,用法如下表: Shading flat Shading interp Shading faceted 去掉各片连接处的线条,平滑颜色 去掉连接线条,使颜色均匀过渡 默认值 [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)。 控制光照light:参数有color,style(infinit和local)和position。函数lightangle添加光照,并指定其方位角和仰角,可是使用函数shading增强表面。
3.7 动画
提供以下函数来制作: Moviein Getframe Movie 产生一个矩阵来存放动画中的帧 对当前的图形进行快照 按顺序回放各帧 不断在屏幕上对图形进行erase和redraw,而每次redraw时对对象的某个参数进行增量变化,需要用到对象的EraseMode属性。
4 MATLAB图像增强
4.1 原理、方法及体系结构
三个阶段:图像预处理、特征抽取阶段、识别分析阶段。 目的:改善图像的视觉效果,提高图像成分的清晰度;是图像变得有利于计算机处理。 方法:空间域增强方法、频域增强方法。 体系:
图像增强:空间域、频率域、彩色增强
空间域:像素点处理(图像灰度变换、直方图修正(中值滤波、均值滤波))、领域处理(图像平滑滤波、图像锐化滤波)
频率域:低通滤波、高通滤波、同态滤波
彩色处理:真彩色处理、伪彩色处理(灰度分层法、灰度变换法、频域伪彩色)
- 5 -
百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典教育范文非常全非常详细的MATLAB数字图像处理技术在线全文阅读。
相关推荐: