【摘要】MATLAB是目前流行的数字计算软件,其具有强大的图像处理能力,并且界面简单,易于操作,是设计图像处理系统的理想工具。本文将以MATLAB的图形用户界面(即GUI)平台对图像处理系统进行设计。其中大部分的图像处理算法都可以通过MATLAB的图像处理工具箱进行实现,这大大节省了研究成本和时间。
[1]该系统支持索引图像、灰度图像、RGB图像等图像类型的文件格式的读,写和处理。这些功能在生活中有很多的运用价值,同样的,对于运算量大、过程复杂的功能,利用MATLAB也可以快速得到所需结果。因为篇幅有限,本文将着重阐述图像边缘检测以及对比度增强的实现。
【关键词】MATLAB数字图像处理GUI 边缘检测
图像处理的绝大部分操作都是基于图形用户界面(GUI)进行的,GUI的作用是为用户提供一个直观的可编辑的界面,并可以通过该界面实现自己设定的功能,这大大降低了程序员的编辑工作。同样我们也不必了解每一步的程序语句,只需建立简单的内在联系的程序语言即可。
1、图像的边缘检测
边缘检测技术作用于图像的局部线性结构。目前多数的检测技术都是应用一些已有形式的梯度算子或者直接归一化阈值分割。边缘检测广泛应用于图像的分割、分类、配准等,实际生活中,边缘检测主要被用作一个局部滤波运算完成的。
1.1阈值分割
灰度阈值的目的是把图像的灰度分成不同的等级,然后自己设定一个灰度阈值来确定需要得到的区域或想要分割开的边界,该方法最常用的处理办法是二值化的阈值分割。程序中先通过函数rgb2gray即将所有类型图像转换为灰度图像,再通过循环语句for读取每个点的灰度值,然后基于已设定的阈值将图像转化为二值图像。
1.2梯度分割
梯度分割即利用某些算子对图像进行边缘检测,边缘勾画出物体的边缘部分,使我们能够看清物体的轮廓。同时边缘所携带的大量信息,是图像识别中抽取图像特征的重要属性。梯度分割常用的几个边缘检测算子有Robert,Sobel以及Canny。这些算子都是基于函数的导数进行分类的。函数的导数可以反映图像的灰度变化幅度,一阶导的极大极小值或者二阶导的零点值都是图像灰度变化最明显的地方,因此把这些地方作为图像的边缘有其合理的依据。
1.2.1Robert交叉算子
Robert算子是一种利用局部差分算子寻找边缘的算子,两个卷积为x=[1,0;0,-1],y=[0,1;-1,0],x和y线性相加得到其灰度的衡量标准,在程序中,我们同样需要rgb2gray函数对图像进行灰度转换,再通过函数edge(
,'Robert')
直接调用Robert算子即可,因为工具箱自带了该函数,所有操作起来相当简单。
1.2.2Sobel算子
与Robert类似,两个卷积为x=[-1,0,1;-2,0,2;-1,0,1],y=[1,2,1;0,0,0;-1,-2,-1],程序操作也相同,其中sobel算子对灰度渐变和噪点多的图像处理效果更为优秀。
1.2.3Canny算子
Canny算子的方法是利用高斯滤波器计算导数,然后利用导数极大值和极小值来寻找图像的梯度。该算子使用两个阈值来分别检测图像的强边缘和弱边缘。这种方法对于噪声较多的图像处理效果较为出色。程序中通过函数edge(,'Canny')直接调用Canny算子即可。
2、图像的对比度增强
对比度的增强在图像处理也是很重要的一种技术,该技术也是基于点的逐个处理,修改图像的每一个像素的灰度值,依次达到癌变图像的动态范围。
2.1线性变换
线性变换的方法是将原图像的灰度值线性的压缩或者拉伸,比如原来的灰度范围是[a,A],改变后的灰度范围是[b,B],但在实际生活中,单纯的线性变换并不能得到较好的效果,我们可以设计多段的分段变换对不同区间的灰度值分别进行处理,从而利用线性变换最大限度的提高图像的对比度。
2.2非线性变换
在有些情况下,线性变换并不能满足处理的要求,此时我们可以利用非线性变换来处理图像,通常使用的是对数变换和Gamma校正。对数变换的公式如下:g(x,y)=Clog(f(x,y)+1),这段函数可以拓宽灰度低值,同时降低高值灰度。
Gamma校正的公式如下:g=kr=k(f/c)^(1/r),其中k为常数,默认为1,1/r取值范围通常在0.4~0.8。
MATLAB中,线性变换和非线性变换都可以用imadjust实现,只不过调用格式略有不同,若为线性变换,函数为T=imadjust(I),若为非线性变换,则为T=imadjust(I,gamma)。
除了上述的功能,MATLAB还具备很多其他的图像处理能力,例如图像的变换,旋转,图像锐化,平滑,编码压缩及恢复。还有更多的功能等待开发,篇幅有限,在这就不再累述了。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删