当前位置:文档之家› 数字图像处理及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,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 ====∑∑。从而可以得到直方图均衡化的公式如下:

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 ,再做进一步处理,最后将它们作为三基色分量分别加到彩色显示器的红绿蓝通道)。 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(,)(,)0D 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

(,)0

D 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 TT 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 算子。用卷积模板来描述如下式

101111(,)||||101000101111x 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去除取余作为下标。其中的八个模板如下:

555355335333303305305305333333335355333333533553303503503503555553533333

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

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

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

22222222222242211

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

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

????

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

244

42408044824844

080424442-----????--????--?

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

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

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

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

|()()|

w w G x h x dx SNR --=

()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的区域分为两个部分。分别对图像中的每一像素点进行卷积和操作。如下:

101011111011101101000101101110111110---????????????????---????????????????------????????

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

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

(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(()()()))),213min(,,)/()

()/3

max(,,)min(,,)

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()3

1cos()24()33

1()4cos()31cos(5/3)()1()

S H R I H B I I S H G R B S H G I H RGB 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 =-≤≤-≤≤-, 那么均方误差为112

00

1

(,)M N mse

i j e e i j MN

--===∑∑

,或均方根误差rms

e

=。

信噪比:[]11

2

00

11

200(,)10lg (,)(,)M N i j M N i j a i j SNR a i j a i j --==--==??????=?

?-??

??

∑∑∑∑

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

1

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

--===

∑∑,则

[][]11200

11

200(,)(,)10lg (,)(,)M N i j m M N i j a i j a i j SMR a i j a i j --==--==??

-????=??

-??

??

∑∑∑∑

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

max 11

20010lg (,)(,)M N i j MNa PSNR a i j a i j --==??

????=?

?-??

??

∑∑ ,max 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基本图像处理程序

图像读入 ●从图形文件中读入图像 imread Syntax: A = imread(filename, fmt) filename:指定的灰度或彩色图像文件的完整路径和文件名。 fmt:指定图形文件的格式所对应的标准扩展名。如果imread没有找到filename所制定的文件,会尝试查找一个名为filename.fmt的文件。 A:包含图像矩阵的矩阵。对于灰度图像,它是一个M行N列的矩阵。如果文件包含 RGB真彩图像,则是m*n*3的矩阵。 ●对于索引图像,格式[X, map] = imread(filename, fmt) X:图像数据矩阵。 MAP:颜色索引表 图像的显示 ●imshow函数:显示工作区或图像文件中的图像 ●Syntax: imshow(I) %I是要现实的灰度图像矩阵 imshow(I,[low high],param1, val1, param2, val2,...) %I是要现实的灰度图像矩阵,指定要显示的灰度范围,后面的参数指定显示图像的特定参数 imshow(RGB) imshow(BW) imshow(X,map) %map颜色索引表 imshow(filename) himage = imshow(...) ●操作:读取并显示图像 I=imread('C:\Users\fanjinfei\Desktop\baby.bmp');%读取图像数据 imshow(I);%显示原图像 图像增强 一.图像的全局描述 直方图(Histogram):是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。 图像直方图(Image Histogram):是表示数字图像中亮度分布的直方图,用来描述图象灰度值,标绘了图像中每个亮度值的像素数。 灰度直方图:是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图 像中某种灰度出现的频率。描述了一幅图像的灰度级统计信息。是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。 归一化直方图:直接反应不同灰度级出现的比率。纵坐标表示具有各个灰度级别的像

数字图像处理实验程序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.doczj.com/doc/9d13158552.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程序实例

程序实例 1旋转: x=imread('d:\MATLAB7\work\flower.jpg'); y=imrotate(x,200,'bilinear','crop'); subplot(1,2,1); imshow(x); subplot(1,2,2); imshow(y) 2.图像的rgb clear [x,map]=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shh1.jpg');y=x(90:95,90:95);imshow(y)R=x(90:95,90:95,1);G=x(90:95,90:95,2);B=x(90:95,90:95,3);R,G,B 3.加法运算clear I=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shh3.jpg');J=imnoise(I,'gaussian',0,0.02);%向图片加入高斯噪声subplot(1,2,1),imshow(I);%显示图片subplot(1,2,2),imshow(J);K=zeros(242,308);%产生全零的矩阵,大小与图片的大小一样for i=1:100%循环100加入噪声J=imnoise(I,'gaussian',0,0.02);J1=im2double(J);K=K+J1;end K=K/100; figure,imshow(K);save

4.减法 clear I=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao.jpg'); J=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao1.jpg'); K=imsubtract(I,J);%实现两幅图相减 K1=255-K;%将图片求反显示 figure;imshow(I); title('有噪声的图'); figure;imshow(J); title('原图'); figure;imshow(K1); title('提取的噪声'); save 5.图像的乘法 H=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao.jpg'); I=immultiply(H,1.2);将此图片乘以1.2 J=immultiply(H,2); subplot(1,3,1),imshow(H); title('原图'); subplot(1,3,2),imshow(I); title('·放大1.2'); subplot(1,3,3),imshow(J); title('放大2倍'); 6除法运算 moon=imread('moon.tif'); I=double(moon); J=I*0.43+90; K=I*0.1+90; L=I*0.01+90; moon2=uint8(J); moon3=uint8(K); moon4=uint8(L); J=imdivide(moon,moon2); K=imdivide(moon,moon3); L=imdivide(moon,moon4); subplot(2,2,1),imshow(moon); subplot(2,2,2),imshow(J,[]); subplot(2,2,3),imshow(K,[]); subplot(2,2,4),imshow(L,[]);

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实现

rice=imread(‘rice.png’); % 读入图像 I=double(rice); % 数据类型转换 J=I*0.43+60; % 像素点算术运算 rice2=uint8(J) % 数据类型转换subplot(1,2,1),imshow(rice); % 原图绘制subplot(1,2,2),imshow(rice2); % 计算后图像绘制

X = uint8([ 255 10 75; 44 225 100]); Y = uint8([ 50 20 50; 50 50 50 ]); Z = imdivide(X,Y)

I = imread('rice.png'); % 读入图像background = imopen(I,strel('disk',15)); % 图像开运算Ip = imdivide(I,background); % 图像除法运算imshow(Ip,[]) % 显示运算后的图像

I = imread('rice.png'); % 读入图像 J = imdivide(I,2); % 图像除以一个常数subplot(1,2,1), imshow(I) % 显示原始图像subplot(1,2,2), imshow(J) % 显示运算后的图像

I = imread('cameraman.tif'); % 读入图像J = imlincomb(2,I); % 灰度值放大imshow(J) % 显示运算后的图像

I = imread('cameraman.tif'); % 读入图像 J = uint8(filter2(fspecial('gaussian'), I)); % 图像滤波 K = imlincomb(1,I,-1,J,128); % K(r,c) = I(r,c) - J(r,c) + 128 % 图像相减后加上一个常数figure, imshow(K) % 显示运算后的图像

基于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实现 1.数字图像处理的简单介绍 所谓数字图像就是把传统图像的画面分割成为像素的小的离散点,各像素的灰度值也是用离散值来表示的。 数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。 2.图像的显示与运算 2.1图像的显示 Matlab显示语句 imshow(I,[lowhigh])%图像正常显示 I为要显示的图像矩阵。,[lowhigh]为指定显示灰度图像的灰度范围。高于high的像素被显示成白色;低于low的像素被显示成黑色;介于high和low之间的像素被按比例拉伸后显示为各种等级的灰色。 subplot(m,n,p) 打开一个有m行n列图像位置的窗口,并将焦点位于第p个位置上。 2.2图像的运算 灰度化将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。图像的灰度化处理可用两种方法来实现。

第一种方法使求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。 第二种方法是根据YUV的颜色空间中,Y的分量的物理意义是点的亮度,由该值反映亮度等级,根据RGB和YUV颜色空间的变化关系可建立亮度Y与R、G、B三个颜色分量的对应:Y=0.3R+0.59G+0.11B,以这个亮度值表达图像的灰度值。 灰度是灰度级的函数,它表示图象中具有每种灰度级的象素的个数,反映图象中每种灰度出现的频率。 图像增强的目标是改进图片的质量,例如增加对比度,去掉模糊和噪声,修正几何畸变等;图像复原是在假定已知模糊或噪声的模型时,试图估计原图像的一种技术。 Matlab图像格式转换语句 rgb2gray(I) %从RGB图创建灰度图 imhist(I) %画灰度直方图 图像的线性变换 D B=f(D A)=f A*D A+f B Matlab源代码: I1=imread('F:\图片2.jpg'); subplot(2,2,1);imshow(I1);title('原图'); I2=rgb2gray(I1); %灰度化图像 subplot(2,2,2);imshow(I2);title('灰度化后图'); [M,N]=size(I2); subplot(2,2,3) [counts,x]=imhist(I2,60); %画灰度直方图 counts=counts/M/N; stem(x,counts);title('灰度直方图'); g=zeros(M,N);%图像增强

图像处理的matlab实现

成绩: 数字图像处理实验报告实验二:图像处理的matlab的实现 学号:0967118225 姓名:洪旭浩 同组人: 电脑编号: 实验时间:2010年6月4日星期一

数字图像处理实验报告 一、实验名称 图像处理的matlab 的实现 二、实验目的 1、了解Matlab 及其工具箱的基本使用方法 2、掌握使用Matlab 打开各种图像文件的方法 3、掌握使用Matlab 进行简单图像处理的方法 三、实验平台 Windows XP,Matlab 7.8.0(R2009a) 四、实验内容 一、直方图均衡化 直方图均衡化处理可将图像的灰度范围拉开,让灰度直方图在较大的动态范围内趋于一致。用图像),(y x f 的直方图代替灰度的分布密度函数)(f p f ,则直方图均衡化后的图像g 为: ?==f f du u p f T g 0)(][对于数字图像,设原图像的像素总数为N,灰度级的个数为L,第k 个灰度级出现的频数为k n 。若原图像),(y x f 在像素点),(y x 处的灰度为k r ,则直方图均衡化后的图像),(y x g 在),(y x 处的灰度k s 为: ∑===k l l k k N n r T s 0][MATLAB 图像处理工具箱提供了用于直方图均衡化的函数histep。histep 函数的语法格式为: J=histep(I,hgram) J=histep(I,n) [J,T]=histep(I,…) newmap=histep(X,map,hgram) newmap=histep(X,map) [newmap,T]=histep(X,…) 其中J=histep(I,hgram)将原始图像I 的直方图变成用户指定的向量hgram,hgram 中的各元素值域为[0,1]。 J=histep(I,n)指定直方图均衡化后的灰度级数n,默认值为64。 [J,T]=histep(I,…)返回能将图像I 的灰度直方图变换成图像J 的直方图的变换T。 newmap=histep(X ,map ,hgram)、newmap=histep(X ,map)和[newmap ,T]=histep(X,…)是针对索引色图像调色板的直方图均衡化。 1、使用以上语句,实现选定图像的直方图均衡化; 2、修改部分参数,观察不同参数下直方图均衡化的变化规律;

数字图像处理 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)。以在图像类和类型间进行转化。

相关主题
文本预览
相关文档 最新文档