搜档网
当前位置:搜档网 › 数字图像处理与MATLAB实现

数字图像处理与MATLAB实现

数字图像处理与MATLAB实现
数字图像处理与MATLAB实现

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 函数。

改变显示大小: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]。

图像旋转imrotate:Y=imrotate(X,angle,method,’crop’),angle表示逆时针旋转,method同imresize的用法,crop表示将旋转以后的图像取与原图像大小相同的中心部分取出。

比例缩放imresize:同改变大小。

空间变换imtransform:B=imtransform(A,TFORM,param1,val1,param2,val2),其中TFORM为makeform或者cp2tform产生的结果。如

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,表示块的移动方式,有distinc t和sliding两个取值,前者表示分离块操作,后者表示滑动块操作。而且有[mblock nblock]表示图像块的大小。

分离块操作是将图像划分为大小相同的矩形区域,不同图像块在图像中无重叠排列,其顺序从左上角开始,不足的地方可以在右下角补0。函数为blkproe,调用格式和nlfilter 类似。

2.7 几何畸形校正和图像配准

用到函数imtransform。

3 MATLAB二维与三维图形绘制及动画

3.1 基本绘图命令

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 特殊坐标二维图形

数,也可缺省,如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 三维图形的绘制

说明:

[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命令的作用是在三维曲面图旁边绘制一个可以指示亮度的彩色条。

[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 动画

增量变化,需要用到对象的EraseMode属性。

4 MATLAB图像增强

4.1 原理、方法及体系结构

三个阶段:图像预处理、特征抽取阶段、识别分析阶段。

目的:改善图像的视觉效果,提高图像成分的清晰度;是图像变得有利于计算机处理。

方法:空间域增强方法、频域增强方法。

体系:

图像增强:空间域、频率域、彩色增强

空间域:像素点处理(图像灰度变换、直方图修正(中值滤波、均值滤波))、领域处理(图像平滑滤波、图像锐化滤波)

频率域:低通滤波、高通滤波、同态滤波

彩色处理:真彩色处理、伪彩色处理(灰度分层法、灰度变换法、频域伪彩色)

4.2 对比度增强

线性变换:(,)[(,)]N n

g x y f x y m n M m

-=

-+-。其中功能是把函数的灰度值(,)f x y 从

围[m,M]变为[n,N]。 非线性变换:分为对数变换和Gamma 变换。前者表达式为

(,)log[(,)1]g x y c f x y =+,其中c 为常数。后者表达式为r f cr =,r 为CCD 图像传感器或胶片等的入射光的强度,为常数,灰度与光强成正比,则有1

()r f g kr k c

==,k 为常

数通常为1,1/r 取0.4~0.8。 我们可以用一个函数imadjust 函数来实现: J=imadjust(I);

J=imadjust(I,[low_in;high_in],[low_out;high_out]);

J=imadjust(I,[low_in;high_in],[low_out;high_out],gamma)。 其中灰度围用归一化灰度值,围[0,1]。整个图像的[low_in;high_in]可以用函数stretch 函数来获得。 MATLAB image toolbox5.4还提供一个手动调节的控制面板,调用函数imconstrast 。

4.3 空域变换增强

分为基于像素点和基于模板的两类方法。 像素选择:pixval 和impixel 。用法如下: Pixval(‘on/off ’);pixval ;pixval(fig,option); [C,R,P]=impixel(X,MAP)。 说明:MAP 仅仅当是索引图的时候采用此参数。C 为像素的颜色,R,P 为像素的坐标。Pixval 可以得到更多的像素信息,impixel 可以返回指定像素的颜色值。 强度描述图:improfile ,用以描述图像一条线段或多条线段的强度值。格式:C=improfille(I,xi,yi)。参数xi ,yi 是两个向量,用以指定线段的端点。 图像轮廓图:imcontrour ,自动设置坐标轴,使输出图像在其方向和纵轴比上能够与显示的图像吻合。

直方图匹配

1

1

{}()c

c

R n

n F m m P g

b H m ====∑∑。从而可以得到直方图均衡化的公式如下:

max min min ()()f g g g p f g =-+。在MATLAB 中提供函数histep 来实现。用法histep(I,n)。

4.4 图像锐化

边界撮合锐化:边界提取函数edge ,以及fspecial (建预定义的二维过滤器),再者函

数imfilter (N-D 过滤的多维影像)。 锐化滤波器:分为拉普拉斯(Laplacian )算子和Wallis 算子。 拉普拉斯算子具有各向同性和平移不变性,有时称为边界提取算子。其卷积模板为:

四领域0

01400ααααα-????-+-????-?? 八领域12α

αααααααα---??

??-+-????---??

规定α的大小后,可设置卷积模板为向量h ,并用函数imfilter (I,h )即可。

Wallis 算子是一种改进的Laplacian 算子,有如下公式:

(,)[(1)(,)][(,)(,)]

(,)d

d d

A g i j am f i j f i j f i j A i j σασσ=+-+-+

式中:(,)f i j 是原始图像,它的局部均值和局部标准偏差分别为(,)f i j 和(,)i j σ,

d m 和d σ表示设计的平均值和标准偏差,A 为增益系数,α是控制增强图像中边缘和背景组成的比例常数,(,)g i j 为增强后的图像。

空间域图像锐化:空域高通滤波法、梯度法图像锐化、利用Sobel 算子对图像滤波、

利用拉普拉斯算子对模糊图像进行增强。 梯度法的5种方法如下: 【1】(,)([(,)])(,)g i j G f i j f i j ==?; 【2】|[(,)]||[(,)]|(,)(,)

G f i j G f i j T

g i j f i j ≥?=?

?其他;

【3】L |[(,)]|(,)(,)G

G f i j T g i j f i j ≥?=??

其他,L G 为固定灰度代替【2】中小于阈值T 时仍选

用原图像的像素点值; 【4】|[(,)]||[(,)]|(,)B

G f i j G f i j T

g i j L ≥?=?

?其他;

【5】|[(,)]|(,)G B

L G f i j T

g i j L ≥?=??其他。

频率域图像锐化:傅里叶变换等等。

4.5 图像伪色彩增强

图像伪色彩是指将黑白图像转化为彩色图像,或者是将单色图像变换成给定彩色分布的

图像。可以利用不同色彩变现不同灰度,还可以表示不同的频率成分。 彩色增强分为:假彩色增强(将一幅彩色图像映射为另一幅彩色图像)、伪彩色增强(将一幅黑白图像不同灰度级映射为一幅彩色)。 伪彩色处理的三种方法:灰度分层法(grayslice )、灰度变换法(对比度调整函数imadjust )、频域伪彩色处理(先做IFFT ,再做进一步处理,最后将它们作为三基色分量分

相关主题