数字图像处理与MATLAB实现.docx
- 文档编号:11941846
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:29
- 大小:74.63KB
数字图像处理与MATLAB实现.docx
《数字图像处理与MATLAB实现.docx》由会员分享,可在线阅读,更多相关《数字图像处理与MATLAB实现.docx(29页珍藏版)》请在冰豆网上搜索。
数字图像处理与MATLAB实现
MATLAB数字图像处理
i概述
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)灰度图到索引图,门限l/n,2/n,---,(n-l)/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,icojpg,png,cur,pcx,xwd和tifc读取(imread):
[1]A=imread(filename,fmt)
[2][X,map]=imread(filename,fmt)
[3][-•^imreadtfilename)
⑷[…]=imwad(URL,…)
说明:
filename是图像文件名,如果不在搜索路径下应是图像的全路径,fmt是图像文件扩展名字符串。
前者可读入二值图、灰度图、彩图(主要是RGB);第二个读入索引图,map为索引图对应的Colormap,即其相关联的颜色映射表,若不是索引图则map为空。
URL表示引自IntemetURL中的图像。
写入(imwrite):
[1]R=imwrite(A,filename,fmt);
[2]R=imwrite(X,map,filename,fmt);
[3]R=imwrite(…,filename);
[4]R=imwrite(…,Param1,Vai1,Param2,Val2)
说明:
针对第四个,该语句用干指定HDF,JPEG,PBM,PGM,PNG,PPM,TIFF等类型输出文件的不同参数。
例如HDF的Quality,Compression,Wt让小lode;JPEG的BitDeptli,Comment:
Emptyornot,Mode:
lossyorlossless,Quality等。
2.2图像的显示
方法1:
使用ImageViewer(图像浏览器),即运用imview函数。
同时显示多帧图像的所有帧,可用到montage函数。
改变显示大小:
imview(X,map/IntialMagnificatition1/fit'),IntialMagnUicatition默认值为100,即100%显示,设直为fit则全屏显示。
关闭:
imviewcloseallo
ImageViewer还提供了三个工具:
全最査看窗口(导航功能)、像素区域工具、图像信息窗口。
方法2:
使用图形图像视窗,即运用imshow函数。
调用truesize函数来设定图像到屏幕像点的映射关系。
可以运用getimage函数来将当前显示的图像赋值给一个变量。
调用格式:
[1]imshow(I,n);\\n为灰度级
⑵imsiiow(I,[low,liigli]);\\指定I的数据围
⑶imshow(BW);\\显示二值图像BW,0为黒色,1为白色
⑷imshow(X,map);\\索引图像
[5]imshow(RGB);
[6]imshow(---,display_option);\\显示图像的方式,选择 [8]imshowfilename; ⑼h=imshow(---)\\li表示被显示图像的句柄 2.3图像的代数运算 [1]相加(imadd): Z=imadd(X,Y)\\存为8位;Z=imadd(X,Y/uint16')\\存为16位。 [2]求补(imcomplement): IM2=imcomplement(IM1)o [3]减法(imsubtract或者imabsdiff): Z=imsubtract(X,Y)\\差值结果小于0的赋值为0;Z=imabsdiff(X,Y)\\差值结果取绝对值。 ⑷乘法(immultiply): Z=immultiply(X,Y)° [5]除法(imdivide): Z=imdivide(X,Y)0 2.4点运算 灰度变换函数GST: B(x,y)=f[A(x,y)]o其中有: [1]线性点运算B=f(A)=aA+0; [2]非线性点运算; [3]宜方图修正。 2.5图像的集合运算 改变大小imresize: Y=imresize(X,M,method),其中M为放大的倍数,method有如下几种插值方式nearest,bilinear,bicubic0也可以规定输出图像大小,[heng,zonglo图像旋转imrotate: Y=imrotate(X,angle,method,'crop9),angle表示逆时针旋转,method同imresize的用法,crop表示将旋转以后的图像取与原图像大小相同的中心部分取出。 比例缩放imresize: 同改变大小。 空间变换imtransform: B=imtransform(A,TFORM,param1,val1,param2,val2),其中TFORM为makeform或者cp2tform产生的结果。 如TFORM=makelorm(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,Pl,P2,…)\\可以传递参数P1,P2,…给函数fun; ⑶B=nlfilter(A/indexed,)\\把图像作为索引色图像处理,double填补1,uintS补0。 而且fun可以是一个函数句柄或是一个朕函数,返回类型由fun决定。 但是nlfilter处理时可能需要很长时间,这时可是考虑使用快速处理函数colfllt。 用法类似,多一个参数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 允许或者不允许进行放大操作 Ginput 用光标获取图像中点的坐标 Patch 填充二维或三维坐标中的二维图像 FU1 填充二维坐标中的二维图像 3.2绘图选项 常用的绘图选项: 线形: ・・•一: 颜色: rgbcmykw 点标记: +o*.xsdhp> 坐标轴标注: axis([xminxmax,yminymax]),axisauto/square/xy/ij/normal/off/on等用法。 图形窗口保持: holdon-••holdoff。 给坐标加边框: boxon…boxoff。 图形缩放: zoomon--zoomout-•-zoomoffc 快速绘图: fplot("fun',[xminxmax,yminymax])o 打印: printffilename][-device][-options|,其中device决定打印机的类型c 3.3特殊坐标二维图形 Bar/bar3 长条图 Comet 彗星流动图 Semilogx 对数坐标图形 Errorbar 图形加上误差围 Fplot 较精确的函数图形 Polar 极坐标绘图 Hist 累计图(直方图) Plotyy 双y轴图形 Rose 极坐标累计图(玫瑰) Plot 插入表格 Stairs 阶梯图 Stem 针状图 FiU 实心图 Feather 羽毛图 Compass 罗盘图 Quiver 向量场图 说明: plotyy(xl,y1,x2,y2,funl,fun2),即可以用funl和fun2来指定不同的绘图函数,也可缺省,如funl可以是plot等等。 Plot⑵绘制負数z的实部与虚部的图形。 3.4二维图形处理 图形标注: title,xlabel,ylabel,zlabel,text,gtext,legendo 图形窗口的分割: subplot(m,n,p)。 坐标系设定: axes,也可事后用gca(getcurrentaxes)获得当前坐标系的句柄。 通过get和set函数获取和设宣坐标轴对象的有关属性值。 用法如: 属性值=get(句柄,属性)或者set佝柄,属性1,属性值1,属性2,属性值2,…)。 3.5三维图形的绘制 Plot3 三维线条图 Surfc 建立带基本等高线的表面图 Mesh 建立网格图 Surfl 建立带指定方向照明的表面图 Meshc 建立具有基本等高线的网格图 Surface 建立表面图对象的低级函数 Meshz 建立具有基准平面的网格图 FU13 填充三维多边形 Surf 建立表面图 Pcolor 二维伪彩色绘图,surf的俯视 说明: [1]改变网格属性: set(axes_handle,9XGrid,/on9)grid函数显示网格。 [2]网格图中用到函数hiddenon和hiddenoff来显示或者不显示被遮住部分。 ⑶waterfall函数在x轴方向产生水流效果。 [4]meshgrid函数产生一个x・y平面的网格,[x,y|=meshgrid(-3: 0.1: 3,-2: 0.1: 2)o⑸绘制球面的函数是sphere,如: spiiere(n)或者[x,y,z]=sphere(n)。 也可以是函数 cylinder,用法: cylinder(R,n)或者[x,y,z]=cylinder(R,n)0n为面数,R为一函数。 [6]colorbar命令的作用是在三维曲面图旁边绘制一个可以指示亮度的彩色条。 ⑺去除图中的黑线条,并对颜色做平滑和插值处理,用到shading函数,用法如下表: Shadingflat 去掉各片连接处的线条,平涓颜色 Shadinginterp 去掉连接线条,使颜色均匀过渡 Shadingfaceted 默认值 ⑻三维等值线图: contour3o多一个指定等值线数目的参数N。 contour为其俯视图。 ⑼quiver函数在等值线图上画出方向或速度箭头: quiver(X,Y,DX,DY)0求导: gradiento [10]fiU3用法类似干fill,对三维图形进行填充。 [lljclabel函数: 添加等高线。 [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)o控制光照light: 参数有color,style(infinit和local)和positiono函数lightangle添加光照,并指定其方位角和仰角,可是使用函数shading增强表面。 3.7动画 提供以下函数来制作: Moviein 产生一个矩阵来存放动画中的帧 Getframe 对当前的图形进行快照 Movie 按顺序回放各帧 不断在屏幕上对图形进行erase和redraw,而每次redraw时对对象的某个参数进行 增量变化,需要用到对象的EraseMode属性。 4MATLAB图像增强 4.1原理、方法及体系结构 三个阶段: 图像预处理、特征抽取阶段、识别分析阶段。 目的: 改善图像的视觉效果,提高图像成分的清晰度;是图像变得有利干计算机处理。 方法: 空间域增强方法、频域增强方法。 体系: 图像增强: 空间域、频率域、彩色增强 空间域: 像素点处理(图像灰度变换、直方图修正(中值滤波、均值滤波))、领域处理(图像平滑滤波、图像锐化滤波) 频率域: 低通滤波、髙通滤波、同态滤波 彩色处理: 直彩色处理、伪彩色处理(灰度分层法、灰度变换法、频域伪彩色) 4.2对比度増强 N-n 线性变换: g(x,y)=—[/(X,y)-/»]+«o其中功能是把函数的灰度值f(x.y)从 M-m 围[m,M]变为[n,N]。 非线性变换: 分为对数变换和Gamma变换。 前者表达式为 g(x,y)=clog[/(x,y)+l],其中c为常数。 后者表达式为f=crrtr为CCD图像传感 器或胶片等的入射光的强度,为常数,灰度与光强成正比,则有g=kr=k(^Y,k为常 C 数通常为1,l/i■取0.4~0.8。 我们可以用一个函数imadjust函数来实现: J=imadjust(I); J=imadjust(I,[lowJn;highJn]」low_out;liigh_out]); J=imadjust(I,[lowJn;highJn],[low_out;high_out],gamma)。 其中灰度围用归一化灰度值,围[0,1]。 整个图像的[low_in;highjn]可以用函数stretch函数来获得。 MATLABimagetoolbox5.4还提供一个手动调节的控制面板,调用函数imconstrasto 4.3空域变换増强 分为基干像素点和基干模板的两类方法。 像素选择: pixval和impixel。 用法如下: Pixval('on/off');pixval;pixval(fig,option); [C,R,P]=impixei(X,MAP)o 说明: MAP仅仅当是索引图的时候采用此参数。 C为像素的颜色,R,P为像素的坐标。 Pixval可以得到更多的像素信息,impixel可以返回指定像素的颜色值。 强度描述图: improfUe,用以描述图像一条线段或多条线段的强度值。 格式: C=improfiUe(I,xi,yi)o参数xi,yi是两个向量,用以指定线段的端点。 图像轮廓图: imcontrour,自动设置坐标轴,使输出图像在其方向和纵轴比上能够与显示的图像吻合。 直方图匹配乞/幺訥}=乞巧(加)。 从而可以得到直方图均衡化的公式如下: wt-lm-1 g=(gnux—gmin)D(/)+gmin。 在MATLAB中提供函数histep来实现。 用法histeP(I,n)o 4.4图像锐化 边界提合锐化: 边界提取函数edge,以及fspecial(建预定义的二维过滤器),再者函 数imfUter(N-D过滤的多维影像)。 锐化滤波器: 分为拉普拉斯(Laplacian)算子和WaUis算子。 拉普拉斯算于具有各向同性和平移不变性,有时称为边界提取算于。 其卷积模板为: ・0 -a 0' -a -a -a 四领域 l+4a -a 八领域 _a l+2a -a 0 -a 0 -a -a 一a 规定Q的大小后,可设直卷积模板为向量h,并用函数imfilter(I,h)即可。 Wallis算于是一种改进的Laplacian算于,有如下公式: 皿沪⑷孑+ (一)閃)]+[皿)-閃)]硕念 式中: f(i.j)是原始图像,它的局部均值和局部标准偏差分别为了亿J)和b(iJ),叫和6表示设计的平均值和标准偏差,A为增益系数,&是控制增强图像中边缘和背景组成的比例常数,g(i,j)为增强后的图像。 空间域图像锐化: 空域高通滤波法、梯度法图像锐化、利用Sobel算子对图像滤波、利用拉普拉斯算于对模糊图像进行增强。 梯度法的5种方法如下: [1]S(iJ)=Gaf(iJ)])=Vf(iJ); [2] ・f(ij)其他 [3] I"J) \G[f(iJ)]\>T 其他 L&为固定灰度代替【2】中小于阈值T时仍选 用原图像的像素点值; 卩G[“J)]I\G[f(iJ)]\>T ■Lr其他 其他 频率域图像锐化: 傅里叶变换等等。 4.5图像伪色彩増强 图像伪色彩是指将黑白图像转化为彩色图像,或者是将单色图像变换成给定彩色分布的图像。 可以利用不同色彩变现不同灰度,还可以表示不同的频率成分。 彩色增强分为: 假彩色増强(将一幅彩色图像映射为另一幅彩色图像)、伪彩色增强(将一幅黑白图像不同灰度级映射为一幅彩色)。 伪彩色处理的三种方法: 灰度分戻法(grayslice)、灰度变换法(对比度调整函数imadjust).频域伪彩色处理(先做IFFT,再做进一步处理,最后将它们作为三基色分量分 别加到彩色显示器的红绿蓝通道)。 J-imadjust(I,[low,high],[bottom,top],gamma),返回图像I经过宜方图调整后的图像J,[low,high]为原始中要变换的灰度围,[bottom,top]指定变换后的灰度围,两者默认为[0,1]。 Gamma为矫正值,等于1为线性变换;小于1对图像的像素值加权,使输出像素灰度值比原来大;大于1灰度值比原来小。 4.6图像频域増强 4・6・1低通滤波 理想低通滤波器Hg)=. D(w,v)<£)0 其他 2)为截止频率。 Butterworth低通滤波器H(u.v)=,n为正数,越大误差速度 1+(>/m+v2/D0)2zr 越大。 指数低通滤波器(高斯低通滤波器)/7(//,v)=exp—卩吕12,不矣带来振铃效应。 2b(「 梯形低通滤波器日("川)=〈 D-D、 D d. D>D\ 4.6.2高通滤波4.6.3同态滤波 这是一种在频率域中同时将图像亮度围进行压缩和将图像对比度增强的方法,基本思想是将非线性问题转化为线性问题处理。 其处理流程图为: /(x,y)=>D=>H(x,y)=>D~l=>g(x,y)。 常用的设计如: /(x,y)=>In=>FFT=>H(x、y)=>IFFT=>exp=>g(x,y) 可以得到S(“*)=0・5/(“*)+2R(“*),其中I、R分别为照射分量和反射分量。 5MATLAB图像分割技术 图像分割就是按照一定的原则将一幅图像或最物分为若干特定的、具有独特性质的部分或子集,并提取出感兴趣的目标的技术和过程。 5.1图像分割概述 依据是建立在图像上像素间的“相似性”和“非连续性”两个概念之上。 比较正式的定义如下。 令集合R代表整个图像区域,对R的图像分割可以看作是将R分成N个满足以下条件的非空子集吃,•••,©。 (1)0尺=心 (2)J^i=l2...,N、P(RJ=TRUE° (3)对Pi、jZj、有RgH0。 (4)对Pij&j,P(R2R)=FALSE。 (5)对i=时连通的区域。 图像分割分类: 相似性分割(阈值分割、区域分裂与合并),非连续性分割(边缘检测、边缘跟踪);结构分割方法(阈值分割、区域生长、边缘检测、纹理分析等),非结构分割方法(统计模式识别、神经网络方法、其他利用最物的先验知识实现的方法)。 5.2边缘检测 边缘检测是所有基于边界分割方法最基本的处理。 图像的边缘是图像的最基本特征。 常见的边缘分为阶跃型、房顶型和凸缘型。 边缘检测方法: 空域微分算于、拟合曲面、小波多尺度边缘检测、基于数学形态学的边缘检测。 常见的微分算子: (1)Robert算子。 (2)Sobel算子。 (3)Prewitt算于。 用卷积模板来描述如下式 ■-1or ■iii' G(/;j)=IPvl+IPy1= -101 + 000 -101 -1-1-1 其中前者为水平模板,后者为垂直模板。 (4)Kirsch算子。 使用八个模板来确定梯度的幅值和方向,又称为方向算于。 则边缘饿梯度大小为: G(i,j)=max[l,max(l5»-4.I: R=0,1,27)] 式中: Sk=代+如+心+2 4=(lk+3+ak+4+Clk+S+"k+6+色+? 下标超过7就用8去除取余作为下标。 其中的八个模板如下: (5)LOG(Laplacian-Gauss)算于。 先用高斯函数对图像进行平涓,然后再用拉普拉斯算子进行运算,这就是LOG算子,它使用一个墨西哥草帽函数的形式。 LOG(x,y)= (d2d2} + 1 qv门 (*>9\ 旷+ _1' c*>CAP k2(r2J 2如4_ 2 ? 2旷+ 常见的LOG算子模板为5*5的模板: -2 -4 -4 -4 -2 -4 -4 -4 -2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 MATLAB 实现