电信19-2 翁大弟
摘要
图像信息是人类获取信息的重要来源及利用信息的重要手段,数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是广泛的农牧业、环境、军事、工业等方面的应用需求的增长。MATLAB强大的运算和图形展示功能,使图像处理变得更加的简单和直观。基于MATLAB的数字图像处理环境,介绍了如何利用MATLAB及其图像处理工具箱进行数字图像处理。主要论述了利用MATLAB的GUI实现直方图均衡化、阀值化、加噪、锐化以及存储等图像处理。
关键词:MATLAB 数字图像处理 GUI 二值图像
Image information is an important source of human information and an Image information is an important source for human beings to obtain information and an important means to use information. The emergence and rapid development of digital image processing are mainly affected by three factors: first, the development of computer; Second, the demand for a wide range of applications in agriculture and animal husbandry, environment, military and industry has increased.Matlab's powerful operation and graphic display functions make image processing more simple and intuitive. Based on the digital image processing environment of MATLAB, this paper introduces how to use MATLAB and its image processing toolbox for digital image processing. This paper mainly discusses the use of Matlab GUI to realize image processing such as histogram equalization, threshold, noise addition, sharpening and storage.
Keywords: MATLAB digital image processing GUI binary image
1.1课题研究背景和意义
图像信息是人类获得外界信息的主要来源,因为大约有70%的信息是通过人眼获得的,而人眼获得的都是图像信息。人们越来越多地利用图像信息来认识和判断事物,解决实际问题。例如:由于空间技术的发展,人造卫星拍摄了大量的地面和空间的照片,人们可以利用照片获得地球资源、全球气象和污染情况等;在工厂,技术人员可以利用电视图像管理生产,由此可见图像信息的重要性。获得图像信息非常重要,但目的不仅仅是为了获得图像,而更重要的是将图像信息进行处理,在大量复杂的图像中找出我们所需要的信息。
1.2国内外研究现状
国外研究现状,随着计算机辅助设计的日益提高和成熟,用于学习与研究的软件也越来越多.如美国Southern开发的CVlPtools计算机视觉与图像处理实验软件就是专门针对图像处理技术的实验软件
1.3本文研究的主要内容
MATLAB采用的是用一组有序的灰度或彩色数据元素构成图像,数组的每一个元素对应于图像的一个像素值。这样MATLAB就可以利用其强大的矩阵计算功能实现对图像的数字处理。本次设计的系统主要是利用MATLAB所提供的图形用户界面(GUI),实现一个可视的面向对象的操作界面。
我们先整体设计一个界面,确定它需要的功能,查找完成各个功能所调用的函数,然后实现各个模块的布局,设置模块的Tag值和模块名(String),就能分别调用选择的函数去实现各个模块的功能。比如这个实验需要实现数字图像的均衡化、阀值化、加噪、去噪、锐化以及读取和存储等操作。
第2章 数字图像处理系统设计
由于要实现的功能不算太多,所以在排版时,选择把每个模块的功能介绍都安排在以下的目录中,并附带对应的操作截图,以此来为读者创造一个更加易于理解的条件。接下来,我会详细地为大家介绍该项目的具体情况。
图像处理,主要是对已有的图像进行处理,然后再存储起来,并不是无中生有,创造出一幅图像。因此,图像的读取和存储显得比较重要。
imread是读取图像的函数。pout.tif文件是matlab内置的图像,不管在什么程序内都可以直接读取。在这里,我们选择本机的绝对定位的路径,以此为其提供图片文件,实现图片的显示。软件效果图如图所示:
同样,imwrite也有相对路径和绝对路径的存储,以及连续的存储方法。
需要注明的是,存储所选择的文件夹,如果是已经建立好。那么在选择文件时需要用mkdir函数。例如:mkdir(‘image\1’);这里是绝对路径文件夹的建立。创建之后,在Matlab文件夹内。这样就能够节省很多的人力。当文件比较多的情况下,人工去建立的话,还容易出错。软件效果图如图所示:
图像的平移很简单,平移前后的坐标分别为(x,y)和(x’,y’),则满足的关系式,其中Tx与Ty分别为对应的偏移量。
x’= x +Tx;
y’= y +Ty;
那么上述的关系怎么用一个矩阵来表示,可以使用变换矩阵T[1],并且对于二维坐标下的点,一般转化为笛卡尔坐标系下进行计算,用一个三维点表示二维的,只不过把最后一项值置为1,这样一个二维坐标(x,y)就变为 (x,y,1)了。在把上述的平移等式关系转化为矩阵形式为:
软件效果图如图所示:
对于某个点,在坐标系中的变换为(旋转角度为θ,并且逆时针旋转为正),具体的公式如下所示:
软件效果图如图所示:
关于对称变换,对称变换比较简单,还是以点的变换为例,比如变换前的点P(x,y)和变换后的点P’=(x’,y’),那么对称变换包括点关于x轴、y轴、原点、y=x、y=-x等等,点的变换可以自己推导下,这样也就可以得到对应的变换矩阵T了。
比如,关于x对称的话,T=[1,0,0;0,-1,0;0,0,1],关于原点对称的话,T=[-1,0,0;0,-1,0;0,0,1];关于y=x对称的话,T=[0,1,0;1,0,0;0,0,1];
关于复合变换,因为有的变换不是简单的初等变换,但是有一点需要明确的是任何复合变换都可以用初等变换一步步变换而来。比如前面的旋转变换,旋转点选取的是原点,这样才有的那个公式。这里就要把这个复合变换化成为3个简单的初等变换,具体步骤为:首先把s点平移操作至原点(这个过程中,相当于所有的点都按照一定的方向平移了),然后相当于在原点对平移后的P点进行旋转变换,变换完后再把这个店反平移回去,这样是不是就相当于完成了那个复合变换。此时的变换矩阵为T,则T可以看出是两次平移矩阵T1、T2和一次旋转矩阵T3相乘的组合,即T=T1*T3*T2。软件效果图如图所示:
阀值化又叫二值化,将256个亮度等级的灰度图像通过适当的阀值选取,所有的灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。软件效果图如图所示:
在许多图像处理系统中,对图像进行归一化都是必备的预处理过程[2]。一般而言,对于灰度图像(或彩色通道的每个颜色分量)进行灰度归一化就是:使其像素的灰度值分布在0~255之间,避免图像对比度不足(图像像素亮度分布不平衡)从而对后续处理带来干扰。对于图像而言,灰度化处理就是使彩色的R,G,B分量值相等的过程。软件效果图如图所示:
高斯噪声也是现实生活中极为常见的。根据中心极限定理,在自然界中,一些现象受到许多相互独立的随机因素的影响,如果每个因素所产生的影响都很微小,那么总的影响可以看作是服从正态分布的。
软件效果图如图所示:
椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。盐和胡椒噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值[3]。
软件效果图如图所示:
均值滤波主要思想为邻域平均法,对图像的任一像素点以其为中心取M×M窗口 ,即用几个像素灰度的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理。该方法运算简单,对高斯噪声具有良好的去噪能力。
软件效果如图所示:
中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。
软件效果如图所示:
通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。
软件效果如图所示:
用结构元素作为模板在原始二值图像种平滑一遍,扫描图像的每一个像素,用结构元素中的每一个元素与其覆盖的二值图像做“与”操作(假设结构元素都为1),如果结果都为1,则二值图像中对应结构元素原点位置的像素值为1,否则为0
软件效果如图所示:
对原图中像素值为0的点分析可以看出,只有F(1,1),F(1,2),F(1,3)这三个点可以进行遍历操作,因为其他像素值为0的点无法完全包容结构元素。且这三个点在结构元素范围内都至少有一个像素值为1的点,因此像素值得到膨胀变为1。合并目标物周围的背景点,是目标边界向外部扩张。
软件效果如图所示:
2.7提示部分
灰度阈值分割就是把图像灰度分成不同的等级,然后确定灰度,门阈值的方法。灰度阈值分割其实就是二值化处理[4],即:选择一个阈值,将图像转化为黑白二值图像,用于图像分割以及边缘提取。
显然,图像阈值化处理是一种阶梯函数,属于图像灰度级的非线性运算,该变换函数曲线如图所示。它的功能是由用户指定一个阈值, 如果图像中某个像素的灰度值大于该阈值,则将该像素的灰度值置为255,否则将其灰度值置为0。
软件效果如图所示:
边缘即图像中灰度发生急剧变化的区域边界。边缘检测的实质是采用某种算法来提取图像中对象与背景间的交界线。图像灰度的变化情况可以用图像灰度分布的梯度来反应,因此可以用局部图像微分技术来获得边缘检测算子。经典的边缘检测方法是对原始图像中像素的某小邻域来构造边缘检测算子[5]。常采用差分、梯度、拉普拉斯算子及各种高通滤波处理方法对图像边缘进行检测。检测的方法有:梯度算子、拉普拉斯算子、方向算子、Canny算子等。软件效果如图所示:
第3章 系统软件编写
基于上述所研究的内容,利用GUI界面编写了算法的软件。整个软件界面如图所示:
当选择了一个具体的图片文件之后,对其进行具体的分析,软件实现的具体界面如下图所示:
第4章 项目总结与心得
在学习和完成本课程设计的这段时间里,我的能力都得到了极大的锻炼,学会了MATLAB的使用,实现了图像的平移和镜像,知晓了我们日常生活的图像噪音是如何用算法来改善的,从而实现图片的平滑,明白了图像的腐蚀和膨胀等形态学处理操作,收获颇丰。
此次数字图像处理的项目虽然已经完成,但是我们所完成的项目毕竟是很小的成果,将来还有很多东西要学习。通过这次课程设计,也让我对于MATLAB的热爱更进一步,我体会到了算法的魅力,相信今后会对我的发展有指向性的作用。
搜索
复制