基于MATLAB的数字图像处理
王 磊
1 数字图像处理技术及处理过程
图像处理就是按特定的目标,用一系列的特定操作来对图像信息进行加工.数字图像处理是指利用
数字计算机或者其他数字硬件,对从图像信息转换而得到的数字电信号进行某些数学运算或处理,以期提高图像的质量或达到人们所预期的结果[1].通常来说,数字图像处理的研究内容有:图像变换、图像增
强、图像复原、图像分割、图像描述、图像压缩编码、图像识别.
1.1 图像类型的转换
MATLAB支持多种图像类型,如索引图像、灰度图像、二进制图像、RGB图像等.但是在某些图像
操作中,对图像的类型有所要求,所以要对涉及到的图像类型进行转换.MATLAB图像处理工具箱中
提供了不同图像类型相互转换的函数,常用的如rgb2gray()函数转换真彩色图像或彩色图像为灰度图
像,gray2ind()函数将灰度图像或二值图像转换成索引图像.在图像类型进行转换的时候,经常会遇到
数据类型不匹配的情况,针对这种情况,MATLAB工具箱中还提供了各种数据类型之间的转换函数,如
double( )就是把数据转换为双精度类型的函数.
1.2 图像增强
图像增强[2]的作用主要是突出图像中重要的信息,同时减弱或者去除不需要的信息.图像增强技术
不考虑图像降质的原因,衰减掉不需要的图像信息.图像增强的方法主要有两大类[3]:空间域法和频率
域法.空间域法主要是在空间域直接对图像的灰度系数进行处理;频率域法是在图像的某种变换域内,
对图像的变换系数值进行某种修正,然后通过逆变换获得增强图像.频率域法属于间接增强的方法,低
通滤波、同态图像增强均属于该类.空间域法属于直接增强的方法,它又可分为灰度级校正、灰度变换和
直方图修正,直方图均衡属于空间域单点增强的直方图修正法.
1.3 图像分析
图像分析主要是对图像进行描述,即用一组数或符号表示图像中目标区的特征、性质和相互间的关
系,为模式识别提供基础.边缘检测是图像分析中的重要内容,数字图像的边缘检测是图像分割、目标区
域识别、区域形状提取等图像分析领域十分重要的基础,也是图像识 别中提取图像特征的一个重要属性.
边缘检测方法最基本的就是基于边缘提取的方法,通过边缘提取的方法进行边缘检测,一般包括边
缘检测和边缘连接两个独立的阶段.边缘检测实质上是一种像素特性不连续性影像分割,因为边缘的存
在是像素灰度值不连续的结果,这种不连续可以利用求一阶或二阶导数的方法[4]检测到,经典的边缘检
测方法就是对原始图像按像素的某邻域考察灰度的阶跃变化,根据边缘邻近一阶或二阶导数变化方向
的思想,构造边缘检测算子.因而,边缘检测的目标就是检测边缘模型的一、二阶导数的极值点或零点,
导数可用微分算子来计算,根据数字影像的特点,实际上数字图像中求导数是利用差分近似微分来进
行的[5],总称微分算子边缘检测,其总体上也分为两类:过零点检测和局部极值检测.常用的算子包括:
Robert算子、Sobel算子、Prewitt算子、Laplacian算子、Canny算子、LOG算子等.
2 图像处理功能的Matlab实例
本文通过运用图像处理工具箱的有关
函数对一运动车辆的真彩色图像进行处理.
2.1 图像类型的转换
因后面的图像增强,边缘检测都是针对
灰度图像进行的,而原图是RGB图像,所以
首先要对原图类型进行转换.转换后的灰度图
像的效果如图1所示.
2.2 图像增强
2.2.1 灰度图像直方图均衡化
通过比较原图和直方图均衡化后的图像可见,图像变得更清晰,而且均衡化修正后,图像直方图灰
度间隔被拉大了,从而有利于图像的进一步分析和识别.该部分的程序代码如下:
I=imread ('1.bmp');
J=histeq(I) ;
subplot(221) ;imshow(I); %原图像
subplot(222) ;imhist(I, 64) ; %原图像直方图
subplot(223) ;imshow(J) ; %直方图均衡化所得图像
subplot(224) ;imhist(J, 64) ; %均衡化后的直方图
执行后的效果图如图2所示.
2.2.2 图像平滑
中值滤波是一种很好的非线性图像平滑方法,由于它在实际运算过程中并不需要图像的统计特性,
所以使用比较方便.对图像进行中值滤波,结果如图3所示.功能实现代码如下:
I = imread('1.bmp');
J=histeq(I)
K = imnoise(J,'salt &pepper',0.02);
L = medfilt2(K);
subplot(2,3,1);imshow(J); %原始图像;
subplot(2,3,2);imshow(K); %加椒盐噪声后图像;
subplot(2,3,3);imshow(L); %中值滤波后图像;
执行后的效果图如图2所示.
2.2.2 图像平滑
中值滤波是一种很好的非线性图像平滑方法,由于它在实际运算过程中并不需要图像的统计特性,
所以使用比较方便.对图像进行中值滤波,结果如图3所示.功能实现代码如下:
I = imread('1.bmp');
J=histeq(I)
K = imnoise(J,'salt &pepper',0.02);
L = medfilt2(K);
subplot(2,3,1);imshow(J); %原始图像;
subplot(2,3,2);imshow(K); %加椒盐噪声后图像;
subplot(2,3,3);imshow(L); %中值滤波后图像;
2.3 图像分析
MATLAB图像处理工具箱提供了edge()函数实现边缘检测,还有各种方法算子供选择,在本实例
中采用了Sobel算子来进行边缘检测,结果如图4所示.
I=imread('1.bmp' );
J=edge(I,'sobel' );
K=edge(I,'sobel',0.035,'horizontal' );
M=edge(I,'sobel',0.035,'vertical' );
N=edge(I,'sobel',0.035,'both');
subplot(221),imshow(J); %自动阈值的sobel算子
……
subplot(224),imshow(N); %水平垂直叠加sobel算子
3 结 论
利用MATLAB语言及其所提供的函数进行数字图像处理,编程简单、操作方便、可靠性强,能够达
到预期的效果.MATLAB工具箱功能非常强大,简化了繁琐的数学计算工作,有效地促进了数字图像处
理相关的研究开发工作.
参考文献:
[1] 景晓军. 图像处理技术及其应用[M]. 北京:国防工业出版社,2005.
[2] 张洪刚. 图像处理与识别[M]. 北京:北京邮电大学出版社,2006.
[3] 冈萨雷斯. 数字图像处理[M]. 阮秋琦,译.北京:电子工业出版社,2003:78-126.
[4] 章毓晋. 图象处理和分析[M]. 北京:清华大学出版社,1999.
[5] 张泽旭,李金宗,李宁宁,等. 基于光流场分割和Canny边缘提取融合算法的运动目标检测[J].电子学报,2003,31(9):1299-1302.
(责任编辑:尚 丽)
主要算法:
1.图像类型的转换:如索引图像、灰度图像、二进制图像、RGB图像等
2.图像增强:灰度直方图均衡化
3.图像平滑:加椒盐噪声、中值滤波去噪
4.图像分析:用edge()函数实现边缘检测,包括自动阀值的sobel算子、各个方向的sobel算子的求取
该论文中的算法基本上是课上所学过的,但是“
J=histeq(I)
”不熟悉;边缘检测中水平、垂直方向及水平垂直叠加的sobel算子的求取也不熟悉
没有给出各种类型图像之间转换的例子;
该论文中的算法简捷