非常全非常详细的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,V al1,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产生的结果。如TFORM=makeform(transformtype,…),

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

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

不断在屏幕上对图形进行erase和redraw,而每次redraw时对对象的某个参数进行增量变化,需要用到对象的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 ====

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

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

4.4 图像锐化

边界撮合锐化:边界提取函数edge ,以及fspecial (建预定义的二维过滤器),再者函数imfilter (N-D 过滤的多维影像)。 锐化滤波器:分为拉普拉斯(Laplacian )算子和Wallis 算子。 拉普拉斯算子具有各向同性和平移不变性,有时称为边界提取算子。其卷积模板为:

四领域00140

0αα

ααα

-???

?-+-????-?? 八领域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 ,再做进一步处理,最后将它们作为三基色分量分别加到彩色显示器的红绿蓝通道)。 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低通滤波

理想低通滤波器0

1

(,)(,)0

D u v D H u v ≤?=?

?其他

,(,)D u v =

,0D 为截止频率。

Butterworth

低通滤波器(,)H u v =n 为正数,越大误差速度越大。

指数低通滤波器(高斯低通滤波器) 22

0(,)(,)exp 2D u v H u v σ??

=-????,不会带来振铃效应。

梯形低通滤波器01

01

011

1

(,)0D D D D H u v D D D D D D D ?

-?=≤≤?

-??>?

,0D 、1D 预先给定。

4.6.2 高通滤波

4.6.3 同态滤波

这是一种在频率域中同时将图像亮度范围进行压缩和将图像对比度增强的方法,基本思想是将非线性问题转化为线性问题处理。 其处理流程图为:

1

(,)(,)(,)f x y D H x y D

g x y -????。

常用的设计如:

(,)ln (,)exp (,)f x y FFT H x y IFFT g x y ??????

可以得到(,)0.5(,)2(,)S u v I u v R u v =+,其中I 、R 分别为照射分量和反射分量。

5 MATLAB 图像分割技术

图像分割就是按照一定的原则将一幅图像或景物分为若干特定的、具有独特性质的部分或子集,并提取出感兴趣的目标的技术和过程。

5.1 图像分割概述

依据是建立在图像上像素间的“相似性”和“非连续性”两个概念之上。比较正式的定义如下。 令集合R 代表整个图像区域,对R 的图像分割可以看作是将R 分成N 个满足以下条件的非空子集12,...,N T T T 。

(1)1

N

i i R R == 。

(2)对1,2,...,,()i i N P R TRUE ==。 (3)对,,,i j i j i j R R ?≠≠? 有。 (4)对,,,()i j i j i j P R R FALSE ?≠= 。

(5)对1,2,...,,i i N R =时连通的区域。

图像分割分类:相似性分割(阈值分割、区域分裂与合并),非连续性分割(边缘检测、边缘跟踪);结构分割方法(阈值分割、区域生长、边缘检测、纹理分析等),非结构分割方法(统计模式识别、神经网络方法、其他利用景物的先验知识实现的方法)。

5.2 边缘检测

边缘检测是所有基于边界分割方法最基本的处理。图像的边缘是图像的最基本特征。常见的边缘分为阶跃型、房顶型和凸缘型。 边缘检测方法:空域微分算子、拟合曲面、小波多尺度边缘检测、基于数学形态学的边缘检测。 常见的微分算子: (1) Robert 算子。 (2) Sobel 算子。

(3) Prewitt 算子。用卷积模板来描述如下式

1011

11(,)||||1

010001

11

1

1x y G i j P P -????

?

???=+=-+????????----????

其中前者为水平模板,后者为垂直模板。

(4) Kirsch 算子。使用八个模板来确定梯度的幅值和方向,又称为方向算子。

则边缘饿梯度大小为:

(,)max[1,max(|54|:0,1,2,...,7)]k k G i j s t k =-=

式中:

12k k k k s a a a ++=++

34567k k k k k k t a a a a a +++++=++++

下标超过7就用8去除取余作为下标。其中的八个模板如下:

5553553353333033053053053333333353553333335335533035035035035

5

5

5

5

35

3

33

3

3

----------------------------------------

(5) LOG (Laplacian-Gauss)算子。先用高斯函数对图像进行平滑,然后再用拉普拉斯算子

进行运算,这就是LOG 算子,它使用一个墨西哥草帽函数的形式。

22

2222

22222

2

4

2

2

1

1

(,)exp 2exp 2222x y x y x y LOG x y x y πσ

σπσσσ????????

??+++=+-=--- ?

? ?????????

????

常见的LOG 算子模板为5*5的模板:

2

444240804

4824844080424442-----??

??

--??

??--??

--????-----?

?

(6) Canny (坎尼)算子。好的边缘检测算子有三个指标,即低失误率、高位置精度和对每

一个边缘点有唯一的响应得到单像素宽度的边缘。 John Canny 提出边缘检测算子的三个推测

① 信噪比(SNR)准则。信噪比越大,提取的质量越高。定义如下:

|()()|

w w

G x h x dx SN R --=

()G x -代表边缘函数,()h x 代表宽度为w 的滤波器的脉冲响应,σ代表高斯噪声的均方差。 ② 定位精度准则。定义如下:

''

|()()|

w

w

G x h x dx L --=

③ 单边缘响应准则。检测算子的脉冲响应导数的零交叉点平均距离满足:

1

2

'2

'

''

|()|()()w w h x dx D f h x dx π∞-∞+-????

=?

????

?

??

Canny 设计的边缘检测算法步骤如下:

(1) 首先用2D 高斯滤波模板进行卷积以平滑图像。

(2) 利用微分算子(如Prewitt 、Sobel 等),计算梯度的幅值和方向。 (3) 对梯度幅值进行非极大值抑制,即遍历图像,找出非边缘。 (4) 使用双阈值算法检测和连接边缘。

边缘的特征:灰度突变、不同区域的边界、具有方向性。

四个卷积模板,分别按0

、45、90、135,以(,)i j 点位中心将3*3的区域分为两个部分。分别对图像中的每一像素点进行卷积和操作。如下:

1010

111

110

111011010001011

11

1

01

1

11

1

0---????????

????????---????????????????------????????

边界(轮廓)跟踪实质上就是沿着图像的外部边缘“走”一圈,也称为边缘点连接,是一

种基于梯度的图像分割方法,是指从梯度的一个边界点出发,依次通过对前一个边界点的考察而逐步确定下一个新的边界点,并将它们连接进而逐步检测出边界的方法。常用的轮廓跟踪技术有两种——探测法和梯度法。 简单的边界跟踪法的步骤如下。

(1) 根据光栅扫描所示,发现像素从0开始变为1的像素p 0时,存储它的坐标(i,j)。 (2) 从像素(i,j-1)开始反时针方向研究8-邻接像素,当第一次出现像素值为1像素记为

p k ,开始k=1,也同样存储p 1的坐标。

(3) 同上,反时针方向从p k-1以前的像素研究p k 的8-邻接像素,把最先发现像素值为1

的像素记为p k+1。

(4) 当p k =p 0而且p k+1=p 1时,跟踪结束,其他情况重复(3)。

MATLAB 实现:edge 函数。调用格式[g,t]=edge(I,’method ’,parameters)。其中method 如下表。输出的g 为一个逻辑数组(在I 中检测到边缘的位置为I ,否则为0)。参数t 为可选,

特殊参数说明:thresh ——敏感度阈值,默认自动选择Roberts 算子处理;direction ——在所指定的方向direction 上进行边缘检测,可取horizontal 、vertical 和both ;sigma ——标准偏差,默认时为2,若滤波器为n*n 维,则n=ceil(sigma*3)*2-1。

5.3 基于阈值选取的图像分割方法 5.3.1 灰度阈值分割

假设:每个区域是由许多灰度值和相近的像素构成的,物体和背景之间或不同物体之间的灰度值有明显的差别,可以通过取阈值来区分。 灰度图像二值化:大于阈值为255(归一化值为1),小于为0。

多区域分割:0

0101

1211

(,)(,)(,)(,)(,)n n n n

n g f i j T g T f i j T g i j g T f i j T g f i j T T ----≤??<≤??

=??<≤??>>?

5.3.2 直方图阈值

当灰度图像中画面比较简单且对象物的灰度分布比较有规律时,背景和对象物在图像的

灰度直方图上各自形成一个峰值,两个峰值之间有一个波谷,以此为阈值,可将两个区域分离。——阈值双峰法。

5.3.3 最大熵阈值

是选择的阈值t 分割图像目标区域、背景区域两部分灰度统计的信息最大。熵函数定义:

01

()max [()]t L t t φφ<<-=

其中有目标区域O 和背景区域B 熵的定义分别为:

()(0,2,,)

()(1,2,,1)

t

O O O i B B B H t P lbP i L t H t P lbP i t t L ==-==-=++-∑∑

P 为灰度的概率。

5.3.4 二维直方图阈值

由点灰度值、区域灰度均值两个灰度值组成的灰度平面及一系列垂直于灰度平面的线段构成。 阈值为(s,t),目标A 和背景B 的熵为

1

1

00

11

(ln ),(ln )s

t

L L A ij

ij B ij ij i j i s j t H p

p H p p --===+=+=-=-

∑∑∑∑

定义熵的判别函数为:(,)()()s t H A H B ?=+,

C 区和

D 区包含关于噪声和边缘的信息,概率小可忽略,所以有

11

00

1,,(ln )L L B A B L A L ij

ij i j P P H H H H p

p --===-=-=-∑∑

所以有:

(,)()()ln[(1)]1A L A A A A

A

H H H s t H A H B P P P P ?-=+=-+

+

-

选取的最佳阈值向量满足:**

(,)max{(,)}s t s t ??=

5.3.5 局部阈值法

原始图像被分为几个小的子图像,再对每个图像分别求出最优分割阈值。分割后边界处可能产生灰度级的不连续性,需要用平滑技术进行排除。

5.4 基于区域的图像分割方法

阈值分割——由大到小拆分,区域生长——由小到大合并,结合在一起叫做分裂-合并法。 区域生长法,也称为区域增长,将具有相似性质的像素集合起来构成一个区域。具有以下三个步骤:

(1) 确定选择一组能正确代表所需区域的起始点种子像素;

(2) 确定在生长过程中将相邻像素包括进来的(相似性判别生长)准则; (3) 确定区域生长过程停止的条件或规则。

分裂-合并分割方法(Split-merge-Algorithm)指从事的某一层开始,按照某种区域属性的一致性测度,对应该合并的相邻块合并,对应该进一步划分的块再进行划分的分割方法。基本的数据结构:树结构、图像四叉树结构、金字塔数据结构。

分裂-合并算法是借助金字塔数据结构进行分裂和合并运算的典型算法,利用四叉树进行分开合并算法的主要方法:分裂、合并、把各个小块区域进行总合并。

J=qtsetblk(I,S,dim,vals)

5.5 彩色图像分割

色彩空间:RGB 和CMY 。 HIS 空间:色度、饱和度和亮度。其中H 表示不同的颜色,I 表示颜色的明暗程度,S 表示颜色的深浅。I 分量与彩色信息无关,H 和S 分量与人感受彩色的方式紧密相连。 从RGB 到HIS 的转换关系:

arccos((2)/(2(()()()))),213m in(,,)/()()/3

m ax(,,)m in(,,)

H R G B sqrt sqrt R G R B G B B G H pi H

S R G B R G B I R G B S R G B R G B =---+-->=-=-++=++=-

还有如YIQ 、YUV 、YcbCr 等色彩系统。

从HIS 到RGB 变换取决于要转换的点落在原始色所分割的哪个扇区。如下。

cos 1cos(/3)2()03

1()

2cos()31cos()24()3

3

1()4cos()3

1cos(5/3)()1()

S H

R I H B I I S H G R B S H G I H R G B R I I S H B R G S H B I H G I I S R G B ππππππππ???=+

?

??-?

???

=-≤≤

??=-+???

???-?

??=+???-???????=-≤<

?

?=-+????

?

??

?-???=+?

??-?

?????

?=-??=-+???423

H ππ

?????

????

??

??

????

?

??????????????

??

?

??

???

彩色分割策略:直方图、阈值法、区域生长法、边缘检测法、模糊集合法和神经网络法

都可以用。

5.6 基于边缘检测的图像分割

Hough 变换原理,是一种线描述方法。它可以将图像空间中用直角坐标表示的直线变换为极坐标空间中的点,一般称为线-点变换。利用Hough 变换提取直线的基本原理是,把直线上点的坐标变换到过点的直线的系数域,通过利用共线和直线相交的关系,使直线的提取问题转化为计数问题。主要优点是受直线的间隙和噪声影响较小。 直角坐标中过点(x,y)的直线可表示为y ax b =+,则Hough 变换的形式为b ax y =-+。 极坐标中Hough 变换cos sin ,x y ρθθρ=+代表原点距直线的法线距离。

Hough 变换的性质:

(1) 通过xy 平面域上一点的一簇直线变换到极坐标变换域ρθ平面时,将形成一条类似

正弦状的正弦曲线。

(2) ρθ平面上极坐标变换域中的一点对应于xy 域中的一条直线。

(3) xy 平面域中一条直线上的n 个点对应ρθ平面极坐标变换域中经过一个公共点的n

条曲线。

提取直线的Hough 变换可以概括为:

(1) 在ρ和θ合适的最大值和最小值之间建立一个离散的参数空间。 (2) 建立一个累加器(,)A ρθ,并置每个元素为0。

(3) 在ρθ参数空间,对每个点做Hough 变换,计算出网格上所有点的(,)ρθ值,并在

响应的累加器加1,即(,)(,)1A A ρθρθ=+。

(4) 累加结束后,(,)A ρθ的值就是在(,)ρθ处共线点的个数。

6 MATLAB 图像编码与压缩

6.1 图像编码压缩概述

分类:

从信息论角度出发:

(1) 冗余度压缩方法,也称无损压缩、信息保持编码或熵编码。可逆运算。哈夫曼

编码、算术编码、行程编码、Lempel zev 编码。

(2) 信息量压缩方法,也称有损压缩、失真度编码或熵压缩编码。不可逆,有失真。

预测编码(DPCM 、运行补偿)、频率域方法(正交变换、子带编码)、空间域方法(统计分块编码)、模型方法(分开编码、模型编码)、基于重要性(滤波、子采样、比特分配、矢量量化)。

按压缩技术所依据和使用的数学理论和计算方法进行分类:

(1) 统计编码。主要针对无记忆信源。用短码来表示出现概率较大的码字,用长码

表示出现概率较小的码字。常用行程编码、哈夫曼编码和算术编码三种。

(2) 预测编码。传输图像像素与预测值的差值,简单、经济且效率高。典型的包括

DPCM ,增量调制编码等。

(3) 变换编码。利用图像块中像素之间的相关性把图像变换到一组新的基(一般为频

率域)上,再进行压缩。两步——变换和统计编码。常用的有离散余弦变换(DCT)、整数DCT 、小波变换等。

根据质量:

(1) 有损压缩。 (2) 无损压缩。 根据作用域:

(1) 空间编码。 (2) 变换编码。 (3) 混合编码。

根据自适应分:

(1) 自适应性编码。 (2) 非自适应性编码。

图像编码质量的评价:客观准则和主观准则。

客观:原始图像为{(,),01,01}a i j i M j N ≤≤-≤≤-, 响应的压缩后的还原图像为^{(,),01,01}a i j i M j N ≤≤-≤≤-, 误差图像^{(,)(,)(,),01,01}e i j a i j a i j i M j N =-≤≤-≤≤-, 那么均方误差为11

2

1(,)M N m se i j e e

i j M N

--===

∑∑

,或均方根误差rm s e =。

信噪比:[]11

2

00

11

200

(,)10lg (,)(,)M N i j M N i j a i j SN R a i j a i j --==--==???

???=?

?-?

???

∑∑∑∑ 另一种首先对原始图像去均值11

1(,)(,)M N i j a i j a i j M N

--===

∑∑,则

[][]112

00

11

200

(,)(,)10lg (,)(,)M N i j m M N i j a i j a i j SM R a i j a i j --==--==??-????=?

?-????

∑∑∑∑

更常用的峰值信噪比:[]2

m a x

11

200

10lg (,)(,)M N i j M N a PSN R a i j a i j --==??????=?

?-?

???

∑∑ ,m ax 21K

a =-,K 为表示一个像素点用的二进制。 主观:采用打分制度,从5到1分别对应最好到最差。

6.2 统计编码 6.2.1 哈夫曼编码

这是一种可变长编码方式,是二叉树的一种特殊化转化形式。将使用次数多的代码转换成长度较短的代码,而使用次数少的可以使用较长的编码,并且保持编码的唯一可解性。其最根本的原则是:累积的(字符的统计数字*字符的编码长度)最小,也就是权值的和最小。 基本步骤如下。

(1) 从左到右把信源符号概率按从小到大的顺序排列。

(2) 将两个最小的概率进行组合相加,并继续这种步骤,始终将较高的频率分支放在上

部,直到概率达到1.0为止。

(3) 对每对组合中上边的一个都指定为1,下边的都指定为0,或者相反。

(4) 画出由每次信源符号到达概率为1.0处的路径,记下沿路径遇到的各个1或0。 (5) 对于每个信源符号都写出1和0的序列,则最后便得到了哈夫曼编码。

具有以下特点。

(1) 哈夫曼编码不是唯一的。

(2) 对不同信源的编码效率是不同的。

(3) 结果不等长,硬件实现困难,另外编码传播困难。

(4) 一般情况下,哈夫曼编码的效率要比其他编码方法的效率高,是最佳变长码。

变量HufData 在MA TLAB 中定义的一个结构体,包含四个域:value 、code 、left 和right ,分别表示信源符号概率、哈夫曼编码、哈夫曼树节点的左孩子和右孩子。

HuffmanCode(n)——哈夫曼函数。

6.2.2 算术编码

信息用0到1之间的实数进行编码,有两个基本参数:符号概率和编码间隔。信源符号的概率决定压缩编码的效率,也决定编码过程中信源符号的间隔,而这些间隔包含在0到1之间。编码过程中的间隔决定了符号压缩后的输出。 基本原理——将编码的信心表示成实数0到1之间的一个间隔,信心越长,编码表示它的间隔越小,表示这一间隔所需的二进制位就越多。 基本步骤如下。

(1) 计算信源中每一个符号的出现频率,并求出符号的累计概率值。 (2) 令回合记数0i =,初始编码区间定为()(0)0[,][0,1]l u =,代表上下限。 (3)

i ++

,()()(1)(1)(1)(1)(1)(1)[,][()*(1),()*()]i i i i i i i i l u l u l C k l u l C k ------=+--+-,其中()C k 为k

S 个信源符号的累计概率值。

(4) 重复(3),每次读入一个输入符号,并根据该符号适当地调整编码区间,一直到所

有输入符号都处理完为止。 特点:

(1) 不必预先定义概率模型,自适应模式具有独特的优点。

(2) 信源符号概率接近时,建议使用算术编码,此时效率高于哈夫曼编码。

(3) 算术编码绕过了用一个特定的代码替代一个输入符号的想法,用一个浮点数糊树脂

代替一个符号流的输入。

6.2.3 行程编码

又称“运行长度编码”或“游程编码”,是一种统计编码,该编码属于无损压缩编码,对于二值图像有效,行程编码的特点主要有:

(1) 对于有大面积色块的图像,压缩效果很好。

(2) 对于纷杂的图像,压缩效果不好,最坏情况下,会加倍图像数据量。

6.3 预测编码

DPCM 编码(差分脉冲编码):线性预测编码。在编码过程中加入预测器。需要知道N 个预测系数。能满足这些条件的表达式称为N 阶自回归模式或ARM 模式(Auto-Regressive Model)。 运用补偿是一种描述相邻帧(编码上的相邻)差别的方法。

非常全非常详细的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,V al1,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函数。

数字图像处理实验程序MATLAB.

实验一 内容(一) (1)彩色图像变灰度图像 A=imread('1.jpg'); B=rgb2gray(A); figure subplot(1,2,1), imshow(A) title('原图') subplot(1,2,2), imshow(B) title('原图灰度图像') (2)彩色图像变索引图像 A=imread('1.jpg'); figure subplot(1,2,1), imshow(A) title('原图') [X,map]=rgb2ind(A,128); subplot(1,2,2), imshow(X,map) title('原图索引图像') (3)彩色图像变二值图像 A=imread('1.jpg'); figure subplot(1,2,1), imshow(A) title('原图') C=im2bw(A,0.2); subplot(1,2,2), imshow(C) title('原图二值图像') (4)灰度图像变索引图像(一) A=imread('1.jpg'); figure B=rgb2gray(A); subplot(1,2,1), imshow(B) title('灰度图像') C=grayslice(B,39); subplot(1,2,2), imshow(C) title('灰度变索引图像')

(5)灰度图像变索引图像(二) A=imread('1.jpg'); figure B=rgb2gray(A); subplot(1,2,1), imshow(B) title('灰度图像') [X,map]=gray2ind(B,63); subplot(1,2,2), imshow(X,map) title('灰度变索引图像') (6)灰度图像变彩色图像 A=imread('1.jpg'); figure B=rgb2gray(A); subplot(1,2,1), imshow(B) title('灰度图像') C=gray2rgb(B,map); subplot(1,2,2), imshow(C) title('灰度变彩色图像') 内容(二) (1)灰度平均值 A=imread('1.jpg'); figure B=rgb2gray(A); subplot(1,2,1), imshow(B) title('灰度图像') B=double(B); [m,n]=size(B); sumg=0.0; for i=1:m; for j=1:n; sumg=sumg+B(i,j); end end avg=sumg/(m*n) % 均值 maxg=max(max(B)) % 区域最大灰度ming=min(min(B)) % 区域最小灰度 (2)彩色平均值

用Matlab进行数字图像处理实验1

实验报告 专业:信息与计算科学班级:07级(1)班指导老师:汪太月老师姓名:刘莲学号:0641210224 实验室:K7-407 实验名称:Matlab图像工具箱的使用时间:2010.6.13 一、实验目的及要求 (一)实验目的 1、掌握MATLAB中常用的图像处理语句; 2、掌握图像的读入,信息查询以及显示; 3、掌握采用不同的模板对图像进行滤波; 4、掌握图像显示的调用格式; (二)实验要求 1、练习MATLAB中常用的图像处理语句; 2、练习图像的读入,信息查询以及显示; 3、练习采用不同的模板对图像进行滤波; 4、练习图像显示的调用格式; 二、实验设备(环境)及要求 1、支持Intel Pentium Ⅲ及其以上CPU,内存256MB以上、硬盘1GB以上容量的微机;软件配有 Windows98/2000/XP操作系统及MATLAB软件; 2、实验过程中,务必分析实验结果,按要求写出实验报告。(建议同时网上提交电子版实验报告: yw6895@https://www.360docs.net/doc/031335975.html,) 三、实验内容与步骤 1、练习MATLAB中常用的图像处理语句 Matlab中为用户提供了一些特殊的函数,用于从图像格式的文件中读写图像。其中:a、读取图形文件格式的图像需要用imread函数; b、写入一个图形文件格式的图像需要调用imwrite函数; c、获取图形文件格式的图像的信息需要调用imfinfo、ind2rgb函数; d、以Mat文件加载或保存矩阵数据用load、save函数; e、显示加载到Matlab中的图像用image、imagesc. 此外,Matlab工具箱中还提供了图像转化函数,可以对图像类型进行转化,以达到某些图像处理工作的要求。 下面,我们将分别对这些常用的图像处理语句在Matlab中进行练习,并观察其输出结果: (1)在Matlab中读入一个灰度图像,并利用相关函数进行图像处理,并显示结果。 Matlab程序如下: I=imread('lena.bmp'); %读入原图像文件 imshow(I) %图像文件的显示 imwrite(I,'lena1.bmp'); %将原图像重命名为lena1.bmp,并保存图像 figure,imhist(I,225) %显示原图像的直方图,225为指定的灰度级数目 X=grayslice(I,64); %将原图像I均匀量化成64个等级,然后转化成索引色图像X figure,imshow(X,pink(64)) %显示索引色图像,pink(64)产生一个64×3的调色板,色度为粉红运行结果如下: 500 1000 1500 2000 2500 3000 3500 050100150200250 (2)练习图像的读入,信息查询以及显示 Matlab程序如下: load trees image(50,80,X) %显示加载到Matlab中的图像 imwrite(X,map,'trees.tif'); %将图像以tif格式保存 inf=imfinfo('trees.tif') %图像文件信息的查询 BW=im2bw(X,map,0.4); %将索引图像转化成二值图像 figure,imshow(X,map) %显示图像 figure,imshow(BW) 运行结果如下: 50100150200250300350 100 150 200 250 300 %显示从Matlab中加载的图像文件的信息 inf = Filename: 'trees.tif' FileModDate: '18-六月-2010 19:41:48' FileSize: 75764 Format: 'tif' FormatVersion: [] Width: 350 Height: 258 BitDepth: 8 ColorType: 'indexed' FormatSignature: [73 73 42 0] ByteOrder: 'little-endian' NewSubFileType: 0 BitsPerSample: 8 Compression: 'PackBits'

非常全非常详细的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:Emptyor not,Mode:lossy orlossless,Quality等。 2.2 图像的显示 方法1:使用Image Viewer(图像浏览器),即运用imview函数。

用matlab数字图像处理四个实验

数字图像处理 实验指导书

目录 实验一MATLAB数字图像处理初步实验二图像的代数运算 实验三图像增强-空间滤波 实验四图像分割 3

实验一 MATLAB数字图像处理初步 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像间如何转化。 二、实验原理及知识点 1、数字图像的表示和类别 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。 图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。 图1 图像的采样和量化 根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类: ?亮度图像(Intensity images)

(完整版)数字图像处理MATLAB程序【完整版】

第一部分数字图像处理

实验一图像的点运算 实验1.1 直方图 一.实验目的 1.熟悉matlab图像处理工具箱及直方图函数的使用; 2.理解和掌握直方图原理和方法; 二.实验设备 1.PC机一台; 2.软件matlab。 三.程序设计 在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(1,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(1,2,2),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察图像matlab环境下的直方图分布。 (a)原始图像 (b)原始图像直方图 六.实验报告要求 1、给出实验原理过程及实现代码; 2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。

实验1.2 灰度均衡 一.实验目的 1.熟悉matlab图像处理工具箱中灰度均衡函数的使用; 2.理解和掌握灰度均衡原理和实现方法; 二.实验设备 1.PC机一台; 2.软件matlab; 三.程序设计 在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(2,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(2,2,3),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 a=histeq(I,256); %直方图均衡化,灰度级为256 subplot(2,2,2),imshow(a) %输出均衡化后图像 title('均衡化后图像') %在均衡化后图像中加标题 subplot(2,2,4),imhist(a) %输出均衡化后直方图 title('均衡化后图像直方图') %在均衡化后直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的灰度均衡函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察matlab环境下图像灰度均衡结果及直方图分布。 (a)原始图像 (b)均衡化后图像

matlab数字图像处理源代码

数字图像去噪典型算法及matlab实现 希望得到大家的指点和帮助 图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响 到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等; 目前比较经典的图像去噪算法主要有以下三种: 均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度 的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊, 可以对其进行改进,主要避开对景物边缘的平滑处理。 中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。 Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。 实验一:均值滤波对高斯噪声的效果 l=imread('C:\Documents and 桌面\1.gif');% 读取图像

J=imnoise(l,'gaussian',0,0.005);% 加入均值为0 ,方差为 0.005 的高斯噪声subplot(2,3,1);imshow(l); title(' 原始图像'); subplot(2,3,2); imshow(J); ti tle('加入高斯噪声之后的图像’); %采用MATLAB 中的函数filter2 对受噪声干扰的图像进行均值滤波 K1=filter2(fspecial('average',3),J)/255; % 模板尺寸为3 K2=filter2(fspecial('average',5),J)/255;% 模板尺寸为5 K3=filter2(fspecial('average',7),J)/255; % 模板尺寸为7 K4= filter2(fspecial('average',9),J)/255; % 模板尺寸为9 subplot(2,3,3);imshow(K1); ti tle(' 改进后的图像1'); subplot(2,3,4); imshow(K2); title(' 改进后的图像2'); subplot(2,3,5);imshow(K3); title(' 改进后的图像3'); subplot(2,3,6);imshow(K4); title(' 改进后的图像4');

MATLAB数字图像处理技术

MATLAB 数字图像处理技术 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 ,用以描述图像一条线段或多条线段的强度值。格式:

基于Matlab的数字图像处理系统设计设计

论文(设计)题目: 基于MATLAB的数字图像处理系统设计

基于MATLAB的数字图像处理系统设计 摘要 MATLAB 作为国内外流行的数字计算软件,具有强大的图像处理功能,界面简洁,操作直观,容易上手,而且是图像处理系统的理想开发工具。矚慫润厲钐瘗睞枥庑赖。 笔者阐述了一种基于MATLAB的数字图像处理系统设计,其中包括图像处理领域的大部分算法,运用MATLAB 的图像处理工具箱对算法进行了实现,论述了利用系统进行图像显示、图形表换及图像处理过程,系统支持索引图像、灰度图像、二值图像、RGB 图像等图像类型;支持BMP、GIF、JPEG、TIFF、PNG 等图像文件格式的读,写和显示。聞創沟燴鐺險爱氇谴净。 上述功能均是在MA TLAB 语言的基础上,编写代码实现的。这些功能在日常生活中有很强的应用价值,对于运算量大、过程复杂、速度慢的功能,利用MATLAB 可以既能快速得到数据结果,又能得到比较直观的图示。残骛楼諍锩瀨濟溆塹籟。 关键词:MATLAB 数字图像处理图像处理工具箱图像变换

第一章绪论 1.1 研究目的及意义 图像信息是人类获得外界信息的主要来源,近代科学研究、军事技术、工农业生产、医学、气象及天文学等领域中,人们越来越多地利用图像信息来认识和判断事物,解决实际问题,由此可见图像信息的重要性,数字图像处理技术将会伴随着未来信息领域技术的发展,更加深入到生产和科研活动中,成为人类生产和生活中必不可少的内容。酽锕极額閉镇桧猪訣锥。 MATLAB 软件不断吸收各学科领域权威人士所编写的实用程序,经过多年的逐步发展与不断完善,是近几年来在国内外广泛流行的一种可视化科学计算软件。MATLAB 语言是一种面向科学与工程计算的高级语言,允许用数学形式的语言来编写程序,比Basic、Fortan、C 等高级语言更加接近我们书写计算公式的思维方式,用MATLAB 编写程序犹如在演算纸上排列出公式与求解问题一样。它编写简单、编程效率高并且通俗易懂。彈贸摄尔霁毙攬砖卤庑。 1.2 国内外研究现状 1.2.1 国内研究现状 国内在此领域的研究中具有代表性的是清华大学研制的数字图像处理实验开发系统TDB-IDK 和南京东大互联技术有限公司研制的数字图像采集传输与处理实验软件。謀荞抟箧飆鐸怼类蒋薔。 TDB-IDK 系列产品是一款基于TMS320C6000 DSP 数字信号处理器的高级视频和图像系统,也是一套DSP 的完整的视频、图像解决方案,该系统适合院校、研究所和企业进行视频、图像方面的实验与开发。该软件能够完成图像采集输入程序、图像输出程序、图像基本算法程序。可实现对图像信号的实时分析,图像数据相对DSP独立方便开发人员对图像进行处理,该产品融合DSP 和FPGA/CPLD 两个高端技术,可以根据用户的具体需求合理改动,可以分析黑白和彩色信号,可以完成图形显示功能。厦礴恳蹒骈時盡继價骚。 南京东大互联技术有限公司研制的数字图像采集传输与处理实验软件可实现数字图像的采集、传输与处理。可利用软件及图像采集与传输设备,采集图像并实现点对点的数字图像传输,可以观察理解多种图像处理技术的效果和差别,

数字图像处理 matlab代码

MATLAB实用源代码 图像读取及灰度变换 I=imread('cameraman.tif');%读取图像 subplot(1,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(1,2,2),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 图像旋转 I = imread('cameraman.tif'); figure,imshow(I); theta = 30; K = imrotate(I,theta); % Try varying the angle, theta. figure, imshow(K) 边缘检测 I = imread('cameraman.tif'); J1=edge(I,'sobel'); J2=edge(I,'prewitt'); J3=edge(I,'log'); subplot(1,4,1),imshow(I); subplot(1,4,2),imshow(J1); subplot(1,4,3),imshow(J2); subplot(1,4,4),imshow(J3); 1.图像反转 MATLAB 程序实现如下: I=imread('xian.bmp'); J=double(I); J=-J+(256-1); %图像反转线性变换 H=uint8(J); subplot(1,2,1),imshow(I); subplot(1,2,2),imshow(H); 2.灰度线性变换 MATLAB 程序实现如下: I=imread('xian.bmp'); subplot(2,2,1),imshow(I); title('原始图像'); axis([50,250,50,200]); axis on; %显示坐标系 I1=rgb2gray(I); subplot(2,2,2),imshow(I1); title('灰度图像'); axis([50,250,50,200]);

(整理)实验一 MATLAB数字图像处理初步.

实验一 MATLAB数字图像处理初步 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像间如何转化。 6. 了解图像的算术运算在数字图像处理中的初步应用。 7.体会图像算术运算处理的过程和处理前后图像的变化。 二、实验原理及知识点 1、数字图像的表示和类别 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。 图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。

图1 图像的采样和量化 根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类: 亮度图像(Intensity images) 二值图像(Binary images) 索引图像(Indexed images) RGB图像(RGB images) (1) 亮度图像 一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。若图像是double类,则像素取值就是浮点数。规定双精度型归一化亮度图像的取值范围是[0,1] (2) 二值图像 一幅二值图像是一个取值只有0和1的逻辑数组。而一幅取值只包含0和1的uint8类数组,在MA TLAB中并不认为是二值图像。使用logical函数可以把数值数组转化为二值数组或逻辑数组。创建一个逻辑图像,其语法为: B=logical(A) 其中,B是由0和1构成的数值数组。 要测试一个数组是否为逻辑数组,可以使用函数: islogical(c) 若C是逻辑数组,则该函数返回1;否则,返回0。 (3) 索引图像 索引颜色通常也称为映射颜色,在这种模式下,颜色都是预先定义的,并且可供选用的一组颜色也很有限,索引颜色的图像最多只能显示256种颜色。 一幅索引颜色图像在图像文件里定义,当打开该文件时,构成该图像具体颜色的索引值就被读入程序里,然后根据索引值找到最终的颜色。 (4) RGB图像 一幅RGB图像就是彩色像素的一个M×N×3数组,其中每一个彩色相似点都是在特定空间位置的彩色图像相对应的红、绿、蓝三个分量。按照惯例,形成一幅RGB彩色图像的三个图像常称为红、绿或蓝分量图像。 令fR,fG和fB分别代表三种RGB分量图像。一幅RGB图像就利用cat(级联)操作将这些分量图像组合成彩色图像: rgb_image=cat(3,fR,fG,fB) 在操作中,图像按顺序放置。 2、数据类和图像类型间的转化 表1中列出了MATLAB和IPT为表示像素所支持的各种数据类。表中的前8项称为数值数据类,第9项称为字符类,最后一项称为逻辑数据类。 工具箱中提供了执行必要缩放的函数(见表2)。以在图像类和类型间进行转化。

Matlab数字图像处理技术 最终版

Matlab数字图像处理技术 一、数字图像处理基础 1、图形和图像的区别 图形(矢量图):以几何数学为基础,图形由点、线、圆等图元组成,图形文件仅记录点的坐标和绘图命令。 图像(点阵图):用像素来描述的图,图像文件中记录每个像素的颜色和亮度。 2、四邻域和八邻域: 4-邻域:设像素p(x,y),它有4个水平和垂直相邻的像素:(x-1,y)(x+1,y) (x,y-1)(x,y+1),这4个点组成p的4-邻域。 对角邻域:像素p(x,y)的4个对角临近像素:(x-1,y-1)(x+1,y-1) (x-1,y+1)(x+1,y+1),这4个点组成p的对角邻域。 8-邻域:像素p的4-邻域和对角邻域合起来组成p的8-邻域。 3、彩色模型 (1)RGB模型 8种颜色配比(归一化): (2)HIS模型:H(色度),S(饱和度),(I)亮度。 (3)二值模型:0—黑色,1—白色。 (4)灰度模型:白—黑有256个灰度级来显示图像,0—黑色,255—白色。 (5)几种图像的颜色数: 二值图像:2种像素值 灰度图像:256种灰度级 彩色图像:256 * 256 * 256 = 2^24种 索引彩色: 4、图像处理中常用的输入设备:数码相机、数码摄像机、扫描仪; 图像处理中常用的输出设备:显示器、打印机、绘图仪。 5、图像的存储: 空间分辨率:M * N 幅度分辨率:G = 2^K 存储一幅图像所需位数(bit):b = M * N * K。

二、图像的基本运算 1、图像点运算 F为输入点的灰度值,G为输出点的灰度值, a) b = 0时,a>1,图像对比度增大;00,灰度值上移,亮度增加;b<0,灰度值下移,亮度降低。 c) a = 1,b = 255,图像反相。 Matlab中图像线性变换: Y = imlincomb(a,x,b); %Y=a*X+b 2、图像的加法运算 C(x,y) = A(x,y) + B(x,y) 图像的叠加方法: g(x,y) = a*f(x,y)+ b*h(x,y);a+b = 1 matlab中: A = imread(‘第一幅图’); B = imread(‘第二幅图’); C = 0.5*A + 0.5*B; Imshow(c); 3、减法运算 主要检测同一场景两幅图像之间的变化 G(x,y) = T2(x,y)- T1(x,y) Matlab中: A = imread(‘第一幅图’); B = imread(‘第二幅图’); C = A - B; Imshow(c); 4、乘法运算 用二值图像与原图像做乘法,得到需要的子图像。 Z = X .* Y; 要求X和Y的大小、数组元素相同。 Matlab中: X = imread(‘被点乘的图像’); Y = zeros(M,N); Y (70:120, 120:380) = 1; X = im2double(X); Z = X.*Y;

数字图像处理(MATLAB版)

数字图像处理(MATLAB版) 实验指导书 (试用版) 本实验指导书配合教材和课堂笔记中的例题使用 姚天曙编写 安徽农业大学工学院 2009年4月试行 目录 实验一、数字图像获取和格式转换 2 实验二、图像亮度变换和空间滤波 6 实验三、频域处理7 实验四、图像复原9 实验五、彩色图像处理10 实验六、图像压缩11 实验七、图像分割13 教材与参考文献14 《数字图像处理》实验指导书 实验一、数字图像获取和格式转换 一、实验目的 1掌握使用扫描仪、数码相机、数码摄像级机、电脑摄像头等数字化设备以及计算机获取数字图像的方法; 2修改图像的存储格式;并比较不同压缩格式图像的数据量的大小。 二、实验原理 数字图像获取设备的主要性能指标有x、y方向的分辨率、色彩分辨率(色彩位数)、扫描幅面和接口方式等。各类设备都标明了它的光学分辨率和最大分辨率。分辨率的单位是dpi,dpi是英文Dot Per Inch的缩写,意思是每英寸的像素点数。 扫描仪扫描图像的步骤是:首先将欲扫描的原稿正面朝下铺在扫描仪的玻璃板上,原稿可以是文字稿件或者

图纸照片;然后启动扫描仪驱动程序后,安装在扫描仪内部的可移动光源开始扫描原稿。为了均匀照亮稿件,扫描仪光源为长条形,并沿y方向扫过整个原稿;照射到原稿上的光线经反射后穿过一个很窄的缝隙,形成沿x 方向的光带,又经过一组反光镜,由光学透镜聚焦并进入分光镜,经过棱镜和红绿蓝三色滤色镜得到的RGB三条彩色光带分别照到各自的CCD上,CCD将RGB光带转变为模拟电子信号,此信号又被A/D变换器转变为数字电子信号。至此,反映原稿图像的光信号转变为计算机能够接受的二进制数字电子信号,最后通过串行或者并行等接口送至计算机。扫描仪每扫一行就得到原稿x方向一行的图像信息,随着沿y方向的移动,在计算机内部逐步形成原稿的全图。扫描仪工作原理见图1.1。 图1.1扫描仪的工作原理 在扫描仪的工作过程中,有两个元件起到了关键的作用。一个是CCD,它将光信号转换成为电信号;另一个是A/D变换器,它将模拟电信号变为数字电信号。CCD是Charge Couple Device的缩写,称为电荷耦合器件,它是利用微电子技术制成的表面光电器件,可以实现光电转换功能。CCD在摄像机、数码相机和扫描仪中应用广泛,只不过摄像机中使用的是点阵CCD,即包括x、y两个方向用于摄取平面图像,而扫描仪中使用的是线性CCD,它只有x一个方向,y方向扫描由扫描仪的机械装置来完成。CCD芯片上有许多光敏单元,它们可以将不同的光线转换成不同的电荷,从而形成对应原稿光图像的电荷图像。 数码相机的系统结构(见图1.2)数码相机的许多特殊部件,如图像传感器(CCD或CMOS)、模/数转换器(A/D)、数字信号处理单元(DSP)、图像存储器、液晶显示器(LCD)以及输出控制单元(连接端口)等是传统胶片相机所没有的。 仔细分析一下数码相机的原理方框图,我们不难发现,数码相机的系统工作过程就是把光信号转化为数字信号的过程。数码相机使用CCD电荷耦合器件这种光敏元件代代替胶卷感光成像。光线通过透镜系统和滤色器(滤光器)投射到CCD光敏元件上,CCD元件将其光强和色彩转换为电信号记录到数码相机的存储器中,形成计算机可以处理的数字信号。 数码相机除了光学透镜系统外,其余几乎全由电子电路控制。基本的信号处理过程非常简单。由CCD送来的电信号通过A/D转换器转换为数字信号,然后送入具有信号处理能力的DSP(数字信号处理器)。DSP处理工作量很大,一般都设计成专用的硬件。信号进一步送给离散余弦变换部件DCT进行JPEG压缩,然后通过接口电路记录到位于最后一级的存储器。 图1.2 数码相机原理图 数码摄像机的感光器件也即数码摄像机感光成像的部件,能把光线转变成电荷,通过模数转换器芯片转换成数字信号。目前数码摄像机的核心成像部件有两种:一种是广泛使用的CCD(电荷藕合)元件;另一种是CMOS (互补金属氧化物导体)器件。电荷藕合器件图像传感器CCD(Charge Coupled Device),它使用一种高感光度的半导体材料制成,能把光线转变成电荷,通过模数转换器芯片转换成数字信号,数字信号经过压缩以后由相机内部的闪速存储器或内置硬盘卡保存,因而可以轻而易举地把数据传输给计算机,并借助于计算机的处理手段,根据需要和想像来修改图像。CCD由许多感光单位组成,通常以百万像素为单位。当CCD表面受到光线照射时,每个感光单位会将电荷反映在组件上,所有的感光单位所产生的信号加在一起,就构成了一幅完整的画面。互补性氧化金属半导体CMOS(Complementary Metal-Oxide Semiconductor)和CCD一样同为在数码相机中可记录光线变化的半导体。CMOS的制造技术和一般计算机芯片没什么差别,主要是利用硅和锗这两种元素所做成的半导体,使其在CMOS上共存着带N(带–电)和 P(带+电)级的半导体,这两个互补效应所产生的电流即可被处理芯片纪录和解读成影像。然而,CMOS的缺点就是太容易出现杂点, 这主要是因为早期的设计使CMOS在处理快速变化的影像时,由于电流变化过于频繁而会产生过热的现象。由两种感光器件的工作原理可以看出,CCD的优势在于成像质量好,但是由于制造工艺复杂,只有少数的厂商能够掌握,所以导致制造成本居高不下,特别是大型CCD,价格非常高昂。在相同分辨率下,CMOS价格比CCD便宜,但是CMOS器件产生的图像质量相比CCD来说要低一些。到目前为止,市面上绝大多数的消费级别以及高端数码相机都使用CCD作为感应器;CMOS感应器则作为低端产品应用于一些摄像头上,是否具有CCD感应器变成了人们判断数码相机档次的标准之一。

MATLAB在数字图像处理上的应用

MATLAB在数字图像增强处理上的应用 姓名: 学号: 专业: 班级: 学院: 完成日期:

MATLAB在图像增强处理中的应用 (姓名学号年级班级) [摘要]数字图像增强处理是一门新兴技术,随着计算机硬件的发展,数字增强图像的实时处理已经成为可能,由于数字图像增强处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务。数字增强图像处理是一种通过计算机采用一定的算法对图形图像进行增强处理的技术。数字图像增强处理技术已经在各个领域上都有了比较广泛的应用。图像增强处理的信息量很大,对处理速度的要求也比较高。 MATLAB语言因具有功能强、效率高、简单易学等特点,在许多领域得到广泛应用。MATLAB强大的运算和图形展示功能,使图像增强处理变得更加的简单和直观。本文介绍了MATLAB 语言的特点,基于MATLAB的数字图像处理环境,介绍了如何利用MATLAB进行数字图像增强处理,并通过一些例子来说明利用MATLAB进行图像增强处理的方法,重点分析了MATLAB在图象增强处理中的应用。通过实例验证了该语言具有强大图形处理能力, 是一种简洁易学, 可读性强、功能强大的应用软件。 [关键词]MATLAB语言、数字图像处理、图像增强

Abstract Digital image processing is an emerging technology, with the development of computer hardware, real-time digital image processing has become possible due to digital image processing algorithms to appear, making it faster and faster processing speed, better for People services .Digital image processing is used by some algorithms computer graphics image processing technology. Digital image processing technology has been in various areas have a relatively wide range of applications. Image processing large amount of information on the processing speed requirement is relatively high. MATLAB powerful computing and graphics display capabilities, so that image processing becomes more simple and intuitive. This paper introduces characteristics of MATLAB language and this MATLAB-based digital image processing environment, describes how to use the MATLAB Image Processing Toolbox for its digital image processing, and through some examples to illustrate the use of MATLAB Image Processing Toolbox for image processing method. Mainly discusses the use of MATLAB for image enhancement and other image processing technologies. Keywords: MATLAB, digital image processing, image enhancement.

相关文档
最新文档