目 录
摘 要 ................................................................. III Abstract ............................................................... IV 第一章 绪 论 .......................................................... 1
1.1 图像与数字图像 .................................................... 1 1.2 数字图像处理技术内容与发展现状 .................................... 2 1.3 灰度图像二值化原理及意义 .......................................... 4
第二章 软件工具——MATLAB ............................................ 6
2.1 MATLAB概述 ....................................................... 6 2.2 MATLAB的工作环境 ................................................. 6 2.3 MATLAB图像处理工具箱 ............................................. 8 2.4 工具箱实现的常用功能 .............................................. 9
第三章 图像二值化方法 ................................................ 11
3.1 课题研究对象 ..................................................... 11 3.2 二值化方法研究动态 ............................................... 13 3.3 全局阈值法 ....................................................... 18 3.4 局部阈值法 ....................................................... 18
第四章 Otsu方法和Bernsen方法 ...................................... 20
4.1 Otsu算法分析 .................................................... 20 4.2 Otsu方法流程图 .................................................. 22 4.3 Bernsen算法分析 ................................................. 23 4.4 Bernsen方法流程图 ............................................... 23
第五章 Otsu方法和Bernsen方法实验比较 ............................ 25
5.1 Otsu方法实验结果分析 ............................................ 25
I
灰度图像二值化方法研究
5.2 Bernsen方法结果分析 ............................................. 27 5.3 0tsu方法和Bernsen方法实验结果比较 .............................. 28 5.4 结论 ............................................................. 29
结束语 ................................................................. 31 参考文献 ............................................................... 32 致 谢 ................................................................. 33 附录:源代码 .......................................................... 34
II
灰度图像二值化方法研究
摘 要
在人类获取的信息中,视觉信息约占60%,听觉约占20%,其它约占20%。由此可见,视觉信息对人类非常重要。同时,图像是人类获取视觉信息的主要途径。图像二值化是图像预处理中的一项重要技术,在模式识别、光学字符识别、医学成像等方面都有重要应用。论文介绍了图像及数字图像处理技术的一些概念和相关知识;对Matlab7.0 软件的发展和软件在图像处理中的应用做了简要介绍;还介绍了灰度图像二值化方法以及利用Matlab7.0软件工具进行算法的实现。课题重点实现了图像分割技术中灰度图像二值化方法,如Otsu算法、Bernsen算法,并对这些算法运行的实验结果进行分析与比较。
关键词:图像处理,二值化,Matlab,Otsu算法,Bernsen算法
III
灰度图像二值化方法研究
Abstract
Human beings obtain a lot of information, among which the visual information is about 60%, the sense of hearing about 20%, and others about 20%. Therefore, the visual information is very important for human beings. Moreover, the images are the primary way, by which a lot of information is obtained. Image binarization, as an important technology in image pre-processing, is widely-employed in pattern recognition, optical character recognition, medical imaging and so forth. In this paper, some notions and relative knowledge in digital image processing technology are introduced; then, the development of Matlab7.0 and its application in image processing briefly introduced; in addition, the method of grayscale image binarization and how to implement these algorithms based on Matlab7.0 are presented. This paper mainly implements the grayscale image binarization method in image segmentation technology, such as Otsu algorithm and Bernsen algorithm, and analyzes and compares the experimental results of the above algorithms.
Keywords: Image processing, Binarization, Matlab, Otsu algorithm, Bernsen algorithm
IV
灰度图像二值化方法研究
第一章 绪 论
1.1 图像与数字图像
图像就是用各种观测系统观测客观世界获得的且可以直接或间接作用与人眼而产生视觉的实体。视觉是人类从大自然中获取信息的最主要的手段。拒统计,在人类获取的信息中,视觉信息约占60%,听觉信息约占20%,其他方式加起来才约占20%。由此可见,视觉信息对人类非常重要。同时,图像又是人类获取视觉信息的主要途径,是人类能体验的最重要、最丰富、信息量最大的信息源。通常,客观事物在空间上都是三维的(3D)的,但是从客观景物获得的图像却是属于二维(2D)平面的。
图像存在方式多种多样,可以是可视的或者非可视的,抽象的或者实际的,适于计算机处理的和不适于计算机处理的。但就其本质来说,可以将图像分为以下两大类。
模拟图像。包括光学图像、照相图像、电视图像等。比如人在显微镜下看到的图像就是一幅光学模拟图像。对模拟图像的处理速度快,但精度和灵活性差,不易查找和判断。
数字图像。数字图像是将连续的模拟图像经过离散化处理后得到的计算机能够辨识的点阵图像。在严格意义上讲,数字图像是经过等距离矩形网格采样,对幅度进行等间隔量化的二维函数。因此,数字图像实际上就是被量化的二维采样数组。
一幅数字图像都是由若干个数据点组成的,每个数据点称为像素(pixel)。比如一幅256×400,就是指该图像是由水平方向上256列像素和垂直方向上400行像素组成的矩形图。每一个像素具有自己的属性,如颜色(color)、灰度(gray scale)等,颜色和灰度是决定一幅图像表现里的关键因素。其中颜色量化等级包括单色、四色、16色、256色、24位真彩色等,量化等级越高,则量化误差越小,图像的颜色表现力越强。同样,灰度是单色图像中像素亮度的表征,量化等级越高,表现力越强。但是随着量化等级的增加,数据量将大大增加,使得图像处理的计算量和复杂度相应的增加。
与模拟图像相比,数字图像具有以下显著优点:
(1) 精度高。目前的计算机技术可以将一幅模拟图像数字化为任意的二维数组,即
1
灰度图像二值化方法研究
数字图像可以由无限个像素组成,每个像素的亮度可以量化为12位(即4096个灰度级),这样的精度是数字图像处理与彩色照片的效果相差无几。
(2) 处理方便。数字图像在本质上是一组数据,所以可以用计算机对他进行任意方式的修改,如放大、缩小、改变颜色、复制和删除某一部分等。
(3) 重复性好。模拟图像,如照片,即便是使用非常好的底片和相纸,也会随着时间的流逝而褪色、发黄,而数字图像可以存储在光盘中,上百年后再用计算机重现也不会有丝毫的改变。
1.2 数字图像处理技术内容与发展现状
数字图像处理就是采用一定的算法对数字图像进行处理,以获得人眼视觉或者某种接受系统所需要的图像处理过程。图像处理的基础是数字,主要任务是进行各种算法设计和算法实现。
目前,图像处理技术已经在许多不同的应用领域中得到重视,并取得了巨大成就。根据应用领域要求的不同,数字图像处理技术可以分为许多分支技术。重要的分支技术有:
(1) 图像变换。图像阵列很大时,若直接在空域中处理,计算量将很大。为此,通常采用各种图像变换方法,如傅立叶变换、沃尔什变换、离散余弦变换、小波变换等间接处理技术,将空域处理转换到变换域处理,这样可以有效地减少计算量,提高处理性能。
(2) 图像增强与复原。主要目的是增强图像中的有用信心,削弱干扰和噪声,使图像更加清晰,或者将其转换为更适合人或机器分析的形式。图像增强并不是要求真实地反映原始图像,而图像复原则要求尽量消除或减少获取图像过程中所产生的某些退化,使图像能够反映原始图像的真实面貌。
(3) 图像压缩编码。在满足一定保真度条件下,对图像信息进行编码,可以压缩图像信息量,简化图像的边式,从而大大压缩图像描述的数据量,以便存储和传输;图像压缩在不同应用背景下可以采用不失真压缩和失真压缩。
(4) 图像分割。图像分割是数字图像处理中的关键技术之一,是为了将图像中有意义的特征提取出来。它是进一步进行图像识别、分析和理解的基础。图像的有意义特征
2
灰度图像二值化方法研究
包括图像的边缘、区域等。
(5) 图像分析。对图像中的不同对象进行分割、分类、识别、描述和解释。 (6) 图像识别。图像识别属于模式识别的范畴,起主要内容是在图像经过某些预处理(增强、复原、压缩)后,进行图像分割和提取,从而进行判别分类。图像分类常用的经典识别方法有统计模式分类和句法模式分类。近年来,新发展起来的模糊模式识别和人工神经网络模式分类在图像识别中越来越受到重视。
(7) 图像隐藏。是指媒体信息的相互隐藏,常见的有数字水印和图像的信息伪装等。 以上图像处理内容也并非孤立存在的,往往相互联系,而一个实用的图像处理系统通常需要将几种图像处理技术结合起来,才能得到所需要的结果。例如,图像变换是图像编码技术的基础,而图像增强与复原一般又是图像处理的最终目的,也可以作为进一步图像处理工作的准备;通过图像分割得到的图像特征既可以作为最后结果,也可以作为下一步图像分析的基础。
不同的图像处理技术应用与不同的领域,发展出不同的分支学科,如遥感图像处理、医学图像处理等,其他如计算机图形学、模式识别、人工智能和机器人视觉等学科领域也与图像处理有着密切的关系。
图像处理技术的发展大致经历了初创期、发展期、普及期和实用化期4个阶段。初创期开始与20世纪60年代,当时的图像采用像素型光栅进行少秒显示,大多采用中、大型机对其处理。在这一时期,由于图像存储成本高、处理设备昂贵,其应用面很窄。进入20世纪70年代的发展期,开始大量采用中、小型机进行处理,图像处理也逐渐改用光栅扫描方式,特别是CT和卫星遥感图像的出现,对图像处理技术的发展起到了很好的推动作用。到了20世纪80年代,图像处理技术进入普及期,此时的微机已经能够担当起图形图像处理的任务。超大规模集成电路(Very Large Scale Integration, VLSI)的出现更使处理速度大大提高,设备造价也进一步降低,极大地促进了图形图像系统的普及和应用。20世纪90年代是图像处理技术的实用化时期,图像处理的信息量巨大,对处理速度的要求极高。
针对现有的实际应用,数字图像处理具有以下特点。
(1) 信息量大,要求处理速度比较快。目前,数字图像处理的信息大多是二维信息,处理信息量很大。比如一幅256×256低分辨率的黑白图像,要求64Kbit的数据量;对
3
灰度图像二值化方法研究
高分辨率彩色512×512图像,则要求256Kbit数据量;如果要处理30帧/s的视频图像,则每秒要求处理500Kbit~22.5Mbit数据量。因此对计算机的计算速度、存储容量等要求较高。
(2) 占用频带较宽。与语音信息相比,数字图像占用的频带要大几个数量级。如电视图像的带宽约56MHz,而语音带宽仅为4KHz左右。所以数字图像在成像、传输、存储、处理、显示等各个环节的实现上,技术难度较大,成本高,且对频带压缩技术提出了更高的要求。
(3) 数字图像中各个像素间的相关性强,压缩潜力大。在图像画面上,经常有很多像素有相同或接近的灰度。就电视画面而言,同一行中相邻两个像素或相邻两行间的像素,其相关系数可达0.9以上。一般而言,相邻两帧之间的相关性比帧内相关性还要大。因此,图像处理中的信息压缩潜力巨大。
(4) 图像质量评价受主观因素影响。数字图像处理后的图像一般需要给人观察和评价,而人的视觉系统很复杂,受环境条件、视觉性能、人的情绪、爱好以及知识状况影响很大,因此评价结果受人的主观因素影响较大。为此,如何客观评价图像质量还有待进一步深入的研究。另外,计算机视觉是模仿人的视觉,人类的感知原理必然严重影响计算机视觉的研究。
(5) 图像处理技术综合性强。数字图像处理技术中设计的基础知识和专业技术相当广泛,通常涉及通信技术、计算机技术、电子技术、电视技术以及更多的数学、物理等方面的基础知识。例如,图像编码的理论基础是信息论和抽象数学的结合,而图像识别则需要掌握随机过程和信号处理方面的知识。此外,不少课题还需要更加专业的知识,如小波变换、神经网络、分形理论等。
另外,图像处理是一门应用性很强的学问,必须与计算机技术的发展相适应。随着电子技术和计算机技术的不断提高和普及,数字图像处理技术进入高速发展时期。
1.3 灰度图像二值化原理及意义
灰度图像是指只含亮度信息,不含色彩信息的图像。将彩色图像转化成为灰度图像的过程称为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255种值可取,这样一个像素点可以有1600多万的颜色的变化范围。而
4
灰度图像二值化方法研究
灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,一个像素点的变化范围为255种,所以在数字图像处理中一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。图像的灰度化处理可先求出每个像素点的R、G、B三个分量的平均值,然后将这个平均值赋予给这个像素的三个分量。
图像的二值化处理就是将图像上的点的灰度置为0或255,也就是使整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。
在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素的值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。二值图像在图像分析中应用非常广泛,二值图像就是指只有两个灰度级的图像,二值图像具有存储空间小,处理速度快,可以方便地对图像进行布尔逻辑运算等特点。更重要的是,在二值图像的基础上,还可以进一步对图像处理,获得该图像的一些几何特征或者其他更多特征。
5
灰度图像二值化方法研究
第二章 软件工具——MATLAB
2.1 MATLAB概述
MATLAB是Matrix Laboratory的缩写,是由美国MathWorks公司推出的计算机软件,经过多年的逐步发展与不断完善,现已成为国际公认的最优秀的科学计算与数学应用软件之一,是近几年来在国内外广泛流行的一种可视化科学计算软件。它集数值分析,矩阵运算,信号处理和图形显示于一体,构成了一个方便的,界面友好的用户环境,而且还具有可扩展性特征。MathWorks公司针对不同领域的应用,推出了信号处理,控制系统,神经网络,图像处理,小波分析,鲁棒控制,非线性系统控制设计,系统辨识,优化设计,统计分析,财政金融,样条,通信等30多个具有专门功能的工具箱,这些工具箱是由该领域内的学术水平较高的专家编写的,无需用户自己编写所用的专业基础程序,可直接对工具箱进行运用。同时,工具箱内的函数源程序也是开放性的,多为M文件,用户可以查看这些文件的代码并进行更改,MALAB支持用户对其函数进行二次开发,用户的应用程序也可以作为新的函数添加到相应的工具箱中。MATLAB中的数字图像是以矩阵形式表示的,这意味着MATLAB强大的矩阵运算能力用于图像处理非常有利,矩阵运算的语法对MATLAB中的数字图像同样适用。本文对MATLAB图像处理工具箱进行探索及应用,实验证明该软件功能强大,语言简洁易学,人机界面友好,工具箱具有丰富的技术支持并集成了该领域专家的智慧,应用简单而效果良好。
2.2 MATLAB的工作环境
MATLAB的工作环境简单明了,易于操作,使用的MATLAB软件一般是6.x版本。其工作环境包括五个部分:命令窗口(Command Window),MATLAB的主窗口用户可以直接在此窗口输入命令,系统将自动显示信息;启动平台(Launch Pad),当用户需要启动某个工具箱的应用程序时,可以在启动平台中实现。工作空间(Workspace),MATLAB工作空间作为一个独立的窗口,其操作相当方便。它包含着用户已建立的变量,而且变量在工作空间中是以矩阵的形式存储;命令历史记录(Command History),主要显示在命
6
灰度图像二值化方法研究
令中已执行过的命令;当前路径窗口(Current Directory),主要显示当前工作在什么路径下进行,包括M文件的打开路径,双击M文件名打开该文件进行编辑。如图2.1所示。
图2.1 MATLAB6.X
论文中使用的MATLAB软件为7.0版本,如图2.2所示。
图2.2 MATLAB7.0
7
灰度图像二值化方法研究
MATLAB7.0针对编程环境、代码效率、数据可视化、数学计算、文件I/O操作等方面都有进行不断升级、增加了新功能。为此、相对于以前的版本,也具有一些新的特性。就起开发环境方面来说:
(1) 重新设计的桌面环境,针对多文档界面提供了简便的管理和访问方法,允许用户自定义桌面外貌,创建常用命令的快捷方式。
(2) 增强数组编辑器(Array Editor)和工作空间浏览器(Workspace Browser)功能,用于数据的显示、编辑和处理。
(3) 在当前目录浏览器(Current Directory Browser)工具中,增加了代码效率分析、覆盖度的分析等功能。
(4) 增加了M-Lint编码分析,能辅助用户完成程序性能分析,提高程序执行效率。 (5) 对M文件编辑器(M-Editor)进行了功能增强,可以支持多种格式的源代码文件可视化编辑,如C/C++、HTML、Java等。
2.3 MATLAB图像处理工具箱
数字图像处理工具箱函数包括以下15类: (1) 图像显示函数;
(2) 图像文件输入、输出函数; (3) 图像几何操作函数; (4) 图像像素值及统计函数; (5) 图像分析函数; (6) 图像增强函数; (7) 线性滤波函数;
(8) 二维线性滤波器设计函数; (9) 图像变换函数;
(10) 图像邻域及块操作函数; (11) 二值图像操作函数; (12) 基于区域的图像处理函数; (13) 颜色图操作函数;
8
灰度图像二值化方法研究
(14) 颜色空间转换函数; (15) 图像类型和类型转换函数。
MATLAB图像处理工具箱支持四种图像类型,分别为真彩色图像、索引图像、灰度图像、二值图像,由于有的函数对图像类型有限制,这四种类型可以用工具箱的类型转换函数相互转换。MATLAB可操作的图像文件包括BMP、HDF、JPEG、PCX、TIFF、XWD等格式。
2.4 工具箱实现的常用功能
就图像处理的基本过程讨论工具箱所实现的常用功能。 (1) 常用图像操作:
图像的读写与显示操作:用imread()读取图像,imwrite()输出图像,把图像显示于屏幕有imshow(),image()等函数。imcrop()对图像进行剪裁,图像的插值缩放可用imresize()函数实现,旋转用imrotate()实现。
(2) 图像增强功能:
图像增强是数字图像处理过程中常用的一种方法,目的是采用一系列技术去改善图像的视觉效果或将图像转换成一种更适合于人眼观察和机器自动分析的形式。常用的图像增强方法有以下几种:
灰度直方图均衡化。均匀量化的自然图像的灰度直方图通常在低灰度区间上频率较大,似的图像中较暗区域中细节看不清楚,采用直方图修整可使原图灰度集中的区域拉开或使灰度分布均匀,从而增大反差,使图像的细节清晰,达到增强目的。直方图均衡化可用histeq()函数实现。
灰度变换法。照片或电子方法得到的图像,常表现出低对比度即整个图像较亮或较暗,为此需要对图像中的每一像素的灰度级进行标度变换,扩大图像灰度范围,以达到改善图像质量的目的。这一灰度调整过程可用imadjust()函数实现
平滑与锐化滤波。平滑技术用于平滑图像中的噪声基本采用在空间域上的求平均值或中值。或在频域上采取低通滤波,因在灰度连续变化的图像中,我们通常认为与相邻像素灰度相差很大的突变点为噪声点,灰度突变代表了一种高频分量,低通滤波则可以削弱图像的高频成分,平滑了图像信号,但也可能使图像目标区域的边界变得模糊。而
9
灰度图像二值化方法研究
锐化技术采用的是频域上的高通滤波方法,通过增强高频成分而减少图像中的模糊,特别是模糊的边缘部分得到了增强,但同时也放大了图像的噪声。在MATLAB中,各种滤波方法都是在空间域中通过不同的军纪模板即滤波算子实现,可用fspecial()函数创建预定义的滤波算子,然后用filter2()或conv2()函数在实现卷积运算的基础上进行滤波。
(3) 边缘检测和图像分割功能
边缘检测是一种重要的区域处理方法,边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。如果一个像素落在边界上,那么它的邻域将成为一个灰度级变化的带。对这种变化最有用的两个特征就是灰度的变化率和方向。边缘检测算子可以检查每个像素的邻域并对灰度变化率进行量化,也包括对方向的确定,其中大多数是基于方向倒数掩模求卷积的方法。MATLAB工具箱提供的edge()函数可针对sobel算子、prewitt算子、Roberts算子、log算子和canny算子实现边缘检测的功能。基于灰度的图像分割方法也可以用简单的MATLAB代码实现。
(4) 图像变换功能
图像变换技术是图像处理的重要工具,常运用于图像压缩、滤波、编码和后续的特征抽取或信息分析过程。MATLAB工具箱提供了常用的变换函数,如fft2()与ifft2()函数分别实现二维快速傅立叶变换与其逆变换,dct2()与idct2()函数实现二维离散余弦变换与其逆变换,Radon()与iradon()函数实现Radon变换与逆Radon变换。
除以上基本图像处理功能,MATLAB还提供了如二值图像的膨胀运算dilate()函数、腐蚀运算erode()函数等基本数学形态学与二值图像的操作函数。
10
灰度图像二值化方法研究
第三章 图像二值化方法
3.1 课题研究对象
论文主要研究BMP格式的灰度图像文件。BMP(Bitmap Picture)文件格式是Windows系统交换图形、图像数据的一种标准格式。BMP图像的数据由四个部分组成,如表3.1所示。
表3.1 BMP图像文件结构
文件部分 属 性 bfType BITMAPFILEHEADER (位图文件头) bfSize bfReservered1 bfReservered2 bfOffBits biSize biWidth biHeight biplanes biBitCount BITMAPINFOHEADER (位图信息头) biCompression biSizeImage biXPelsPerMeter biYPelsPerMeter biClrUsed biClrImportant rgbBlue Palette (调色板) rgbGreen rgbRed rgbReserved ImageData (位图数据) 按像素按行优先顺序排序,每一行的字节数必须是4的整倍数 说 明 文件类型,必须是0x424D,即字符串 “BM” 指定文件大小,包括这14个字节 保留字,不用考虑 保留字,不用考虑 从文件头到实际位图数据的偏移字节数 该结构长度,为40 图像的宽度,单位是像素 图像的高度,单位是像素 位平面数,必须是1,不用考虑 指定颜色位数,1为二值,4为16色,8为256色,16,24、32为真彩色 指定是否压缩,有效的值为BI_RGB,BI_RLE8,BI_RLE4,BI_BITFIELDS 实际的位图数据占用的字节数 目标设备水平分辨率,单位是每米的像素数 目标设备垂直分辨率,单位是每米的像素数 实际使用的颜色数,若该值为0,则使用颜色数为2的biBitCount次方种 图像中重要的颜色数,若该值为0,则所有的颜色都是重要的 该颜色的蓝色分量 该颜色的绿色分量 该颜色的红色分量 保留字 11
灰度图像二值化方法研究
第一部分为位图文件头BITMAPFILEHEADER,它是个结构提,其定义如下: typedef struct tagBITMAPFILEHEADER { WORD
bfType;
DWORD bfSize; WORD WORD DWORD
bfReserved1; bfReserved2; bfOffBits;
} BITMAPFILEHEADER;
这个结构的长度是固定的,为14个字节(WORD为无符号16位二进制整数,DWORD为无符号32位二进制整数)。
第二部分为位图信息头BITMAPINFOHEADER,也是一个结构,其定义如下: typedef struct tagBITMAPINFOHEADER { DWORD biSize; LONG LONG WORD WORD
biWidth; biHeight; biPlanes; biBitCount;
DWORD biCompression; DWORD LONG LONG
biSizeImage; biXPelsPerMeter; biYPelsPerMeter;
DWORD biClrUsed; DWORD biClrImportant; } BITMAPINFOHEADER;
这个结构的长度是固定的,为40个字节(LONG为32位二进制整数)。其中,biCompression的有效值为BI_RGB、BI_RLE8、BI_RLE4、BI_BITFIELDS,这都是一些Windows定义好的常量。由于RLE4和RLE8的压缩格式用的不多,一般仅讨论biCompression的有效值为BI_RGB,即不压缩的情况。
第三部分为调色板(Palette),当然,这里是对那些需要调色板的位图文件而言的。
12
灰度图像二值化方法研究
真彩色图像是不需要调色板的,BITMAPINFOHEADER后直接是位图数据。调色板实际上是一个数组,共有biClrUsed个元素(如果该值为零,则有2的biBitCount次方个元素)。数组中每个元素的类型是一个RGBQUAD结构,占4个字节,其定义如下:
typedef struct tagRGBQUAD { BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; } RGBQUAD;
第四部分就是实际的图像数据。对于用到调色板的位图,图像数据就是该像素颜色在调色板中的索引值,对于真彩色图像,图像数据就是实际的R、G、B值。下面就2色、16色、256色和真彩色位图分别介绍。
对于2色位图,用1位就可以表示该像素的颜色(一般0表示黑色,1表示白色),所以一个字节可以表示8个像素。对于16色位图,用4位就可以表示一个像素的颜色,所以一个字节可以表示2个像素。对于256色位图,一个字节刚好可以表示1个像素。
下面有两点值得注意:
(1) 每一行的字节数必须是4的整倍数,如果不是,则需要补齐。
(2) BMP文件的数据存放是从下到上,从左到右的,也就是说,从文件中最先读到的是图像最下面的一行的左边的第一个像素,然后是左边的第二个像素,接下来是倒数第二行左边第一个像素,左边第二个像素。依次类推,最后得到的是最上面的最右边的一个像素。
DIB(Device Independent Bitmap)图像格式是设备无关位图文件,描述图像能力基本与BMP相同,并且能够运行多种硬件平台,只是文件格式较大。
3.2 二值化方法研究动态
作为一种高效智能的人机交互手段,身份证的快速识别技术可以广泛的应用于公民身份核查、暂住人口调查、旅店业登记核查、罪犯追逃等公安业务当中,大大提高了工作人员的录入速度,减少了用户的等待时间,提高了工作效率。由于身份证图像背景复
13
灰度图像二值化方法研究
杂,由激光防伪阴影网格线及各种版面噪声构成;且因激光防伪标志和打印条件的千差万别,再加上身份证图像质量偏差,给身份证的字符识别带来了很大的困难。必须经过预处理,除去大量的噪声信号,才能更好的进行字符的定位、分割,以及识别。而二值化是预处理中非常重要的一步,也是最为关键的一步,它直接影响到OCR 系统的性能。研究者在分析和讨论了多种图像二值化的优缺点后,在吸取各种方法优点的基础上,提出了一种新的身份证扫描图像的二值化方法——嵌入式多阈值动态自适应的二值化方法。
图像二值化是图像处理中的一项基本技术,也是很多图像处理技术的预处理过程。在颗粒分析、模式识别技术、光学字符识别(OCR)、医学数据可视化中的切片配准等应用中,图像二值化是它们进行数据预处理的重要技术。由于图像二值化过程将会损失原图像的许多有用信息,因此在进行二值化预处理过程中,能否保留原图的主要特征非常关键。在不同的应用中,图像二值化时阈值的选择是不同的。因此,自适应图像阈值的选取方法非常值得研究。研究者对图像二值化方法进行了讨论,在此基础上提出了一个新的图像二值化算法。该算法基于数学形态学理论,较好地保留了图像二值化时原图的边缘特征。
激光雕刻中图像处理的二值化处理激光雕刻是近十几年随着激光技术的发展而产生的一种新的雕刻技术,它与计算机图形学、图像处理等学科的结合,应用在各种材料上进行文字、图案加工。如何能得到光滑且能真实反映原图像的雕刻图像是其中的主要问题,但是激光器的开关只有两种状态,因此,图像的二值化处理就成为了关键性技术,其中阈值的选取是决定二值化图像好坏的因素。现实世界中黑白二值图像很少用,大多数图像都是灰度图像或是彩色图像。要使这些图像适用于激光雕刻中,就需要对其进行二值化处,研究者针对激光雕刻总结了适用于雕刻的二值化处理,然而没有一种方法适合于所有图像雕刻的,因而实际中要选择一种合适的二值化方法,使得得到的二值图像效果最好。
在信息社会中人的身份识别得到广泛关注。指纹识别技术除了在传统的法律公安上得到应用之外,还有更广阔的应用前景,如计算机用户的确认、访问网络资源的口令、银行ATM 机和信用卡的使用、各类智能IC 卡的双重确认,以及雇员证明、海关身份鉴定、家用电子门锁等一个完整的自动指纹识别系统(AFIS) 包括指纹采集、指纹图像
14
灰度图像二值化方法研究
预处理、指纹特征提取和比对等几个模块。在自动指纹识别系统中,指纹图像的预处理是正确进行特征提取、比对等操作的基础,而二值化是指纹图像预处理中必不可少的一步。目前,国内外学者在这方面已经做了大量的工作,常用的二值化方法有固定阈值法、自适应阈值法、局部自适应阈值法等。由于指纹图像是一种方向性很强的图像,这些方法仅仅利用了指纹图像的灰度信息,而忽略了指纹图像的方向信息,因此这些方法对指纹图像的二值化效果并不十分理想。尔后提出了一种改进的二值化方法:利用梯度法求取块方向图,将其量化成8个标准方向,以块方向代替点方向并利用灰度信息对指纹图像进行二值化。最后将该的方法和局部自适应阈值二值化方法及改进前的方法进行比较,可以发现:采用该方法二值化效果有了明显提高,对于不同质量的指纹图像有着令人满意的处理效果。
结合Canny 算子的图像二值化方法,对经典的二值化方法Otsu 算法和Bernsen 算法中存在的缺点进行了分析后提出图像二值化方法,该方法综合考虑了边缘信息和灰度信息,通过边缘附近种子点在高阈值二值化图像中的填充和低阈值图像对它的修补而得到二值化结果图像,较好地解决了经典二值化方法中存在的抗噪能力差、边缘粗糙、伪影现象等缺点,实验结果证明,该方法能够较好地解决低对比度图像和目标像素灰度不均匀图像的二值化问题。
采用信号匹配的支票图像二值化提出了一种基于信号匹配的低信噪比图像的信号提取方法,解决类似支票日期域的这种既有复杂背景,又有印章噪声干扰的图像二值化问题。这种二值化方法完全不同于传统的方法,它从信号处理的角度出发,利用了部分先验知识和理想状态下的投影轮廓信号,再通过用不同阈值分割的投影信号与之匹配,匹配度最大时的阈值即为图像分割的最佳阈值。 本方法比其他的传统的二值化方法更具有自适应性和鲁棒性,通过大量的实验数据,以及与常用的其他算法进行的比较得到了验证。
基于灰度的车牌图像二值化算法不均匀光照下的图像二值化是数字图像处理中的一个难题,汽车牌照自动识别系统工作在复杂的光照环境下,经常会出现车牌光照不均的现象,给图像二值化带来困难。为此,研究者提出一种解决办法,首先使用同态滤波去掉车牌图像的不均匀光照的影响,然后使用改进的Bernsen 算法对车牌图像进行二值化。实验表明,使用该算法能有效地克服不均匀光照的影响,二值化效果良好,车牌识
15
灰度图像二值化方法研究
别率得到显著的提高;针对常用车牌识别二值化算法存在的问题,提出了基于分形维数的二值化的方法。根据分形维数反映图像复杂程度的定义,通过计算两次突变的分维数,来确定图像的灰度值范围,并利用该灰度值范围确定阈值。并通过实验,表明利用分形维数所得到的阈值进行二值化处理较传统方法有较大改进,且该方法解决了在自然光和不同光照背景下对车牌识别的干扰问题,也可以从复杂背景中提取出倾斜的车牌;偏白或泛白背景的车牌图像二值化方法,在车辆牌照识别系统中,由于摄像机畸变、动态范围太窄、车辆牌照被污染等原因,灰度化的车辆牌照图像背景变得模糊,接近于字体的灰度或者动态范围不高,使得前景字体跟背景难以分开。该文采用高帽与低帽形态滤波增强车牌图像中的字体,去除背景对图像的影响,使用基于迭代的图像分块二值化算法进行二值化。实验表明,该算法可有效克服偏暗或泛白背景的影响,二值化效果良好。
基于自组织特征映射(SOFM)神经网络的图像融合二值化方法介绍了SOFM 神经网络的特点及学习算法,根据SOFM 的聚类确定图像第一阈值作为循环迭代的初始值,对整幅图像进行循环迭代得到第二阈值,使用第二阈值对原始图像进行二值化,得到第一幅待融合图像;通过改进的Bernsen方法对原始图像进行二值化,得到第二幅待融合图像;最后根据图像灰度值选小的原则作为图像融合方法,得到最终的二值化图像。该方法既能有效地消除伪影,又能较好地分离字符和文字。模拟实验结果表明,该方法的二值化效果明显优于Bernsen方法和Otsu方法,且具有良好的适应性。
基于贝叶斯算法的二值化算法。针对在图像二值化过程中动态选取阈值难的问题,在分析了全局阈值法和局部阈值法各自优缺点的基础上。提出了一种基于贝叶斯算法的全局阈值法和局部阈值法相结合的二值化方法。经实验证明,该方法既能够有效地消除光照不均匀对图像的影响,较好地保留目标图像的细节,又能够有效地消除伪影,提高处理速度。
在模式识别中,二值化效果的好坏直接影响着识别效果,首先通过改进的Bernsen方法对原始图像进行二值化,得到第一幅源图像;然后根据自组织神经网络计算阈值,对图像进行二值化,得到第二幅源图像;再根据灰度值最小的原则作为图像融合方法,得到最终的二值化图像,最后给出模拟实验,实验结果表明该方法是有效的。提出了一种新的图像二值化方法。
图像的带参数的二值化方法。该方法不仅在实现传统的黑白二值化方面。有强于
16
灰度图像二值化方法研究
Windows的绘图软件的黑白二值化功能。而且可以实现任意灰度间隔的二值化。因此该方法除能用于任意灰度起点的一般意义上的二值化外.特别适宜于图像的挖掘和隐藏。
图像处理中阈值法计算简单,具有较高的运算效率,是图像分割中广泛采用的方法,主要分为全局阈值法和局部阈值法。针对颗粒图像,提出了一种基于形态学的最大类间方差Otsu二值化算法,实验证明,该算法这一算法能较好地保留原图像中的特征,二值化后的图像效果不错。
数码管图像的目标和背景分离不明显,直方图分布较复杂。针对该问题,提出基于拉普拉斯高斯(Laplacian of Gaussian,LOG)算子边缘检测的全局二值化方法对其进行处理,该方法通过提取图像边缘部份的像素灰度获得图像二值化的阈值。处理结果表明,与传统的几种方法相比,该方法能够快速选取良好的二值化阈值,较好地区分目标和背景,在相当大模板宽度内图像二值化的结果都令人满意。
遗传算法是当前许多科学实验领域广泛应用的一种非线性并行算法。一种基于遗传算法的灰度图二值化方法研究了遗传算法在数字图像的灰度图二值化中的应用,提出了一种新的灰度图二值化方法。该方法通过对每个子群体的优化计算和动态改进的适应度函数,确定新的分割阈值。实验验证该方法对于噪声干扰的一般质量图像有着良好的效果。
基于边缘特征的二值化阈值选取方法,阈值选取是图象处理与分析的基础。针对几种常用的图像二值化自动选取阈值方法,通过计算机仿真对实验结果进行了比较研究。在此基础上,提出了一种新的图像二值化算法。该算法着重于在图像二值化时保留图像的边缘特征。实验结果表明,这个基于边缘特征检测算子的算法能很好地保留原图的边缘特征,并能处理低质量的图像。
图像二值化是指用灰度变换来研究灰度图像的一种常用方法,即设定某一阈值将灰度图像的像素分成大于阈值的像素群和小于阈值的像素群两部分。例如输人灰度图像函数为f(x,y),输出二值图像函数为g(x,y),则
0 f(x,y)Thresholdg(x , y)A f(x, y)Threshold (1)
阈值(threshold )是把目标和背景区分开的标尺,选取适当的阈值就是既要尽可能保存图像信息,又要尽可能减少背景和噪声的干扰,这是选择阈值的原则。
灰度图像的二值化处理有很多种方法,主要分为全局阈值法和局部阈值法。
17
灰度图像二值化方法研究
3.3 全局阈值法
全局阈值法是指在二值化过程中只使用一个全局阈值T的方法。它将图像的每个像素的灰度值与T进行比较,若大于T,则取为前景色(白色);否则,取为背景色。根据文本图像的直方图或灰度空间分布确定一个阈值,以此实现灰度文本图像到二值图像的转化。其中全局阈值法又可分为基于点的阈值法和基于区域的阈值法。阈值分割法的结果很大程度上依赖于对阈值的选择,因此该方法的关键是如何选择合适的阈值。
典型的全局阈值方法包括Otsu方法、最大熵方法等。全局阈值法算法简单,对于目标和背景明显分离、直方图分布呈双峰的图像效果良好,但对于由于光照不均匀、噪声干扰较大等原因使直方图分布不呈双峰的图像,二值化效果明显变差。
为了满足图像处理应用系统自动化及实时性要求,图像二值化的阈值的选择最好由计算机自动来完成。下面列举几个阈值的自动选择算法:
(1) 平均灰度值法:以图像中所有像素灰度值的平均值为阈值。
(2) 大津法:又称最大类间差法,是基于整幅图像的统计特性,实现阈值的自动选取。其原理是把图像直方图用某一灰度值分割成两类,分别计算这两类的像素点数和灰度平均值,然后计算它们的类间方差。当被分割成的两类类间方差最大时,此灰度值就作为图像二值化处理的阈值。大津法的使用范围比较广,不论图像的直方图有无明显的双峰,都能得到较满意的结果,在很多领域得到了应用和发展。但此方法依然存在一些不足,主要表现在:若目标与背景之间灰度差不明显,可能出现大块黑色区域,甚至丢失整幅图像的信息;仅利用一维灰度直方图分布,没有结合图像的空间相关信息,处理效果不好;当图像中有断裂现象或者背景有一定噪声时,无法得到预期效果。
(3) 边缘算子法:采用Laplace算子、Robert算子、Sober算子等对像素点进行灰度级增强或减弱的变换。对于灰度均匀分布的区域内的像素点,这些算子对其进行灰度减弱;对于在边缘附近的像素点,这些算子对其进行灰度增强。
3.4 局部阈值法
由当前像素灰度值与该像素周围点局部灰度特征来确定像素的阈值。例如可以将原图像划分为一些不相交的小块,将各块图像的灰度均值作为该部块图像的阈值,在局部
18
灰度图像二值化方法研究
上采用上面的整体阈值法。
对于目标和背景比较清楚的图像,全局阈值化方法可以取得较好结果。但是如果图像的背景不均匀,或目标灰度变化率比较大,全局方法便不再适用。局部阈值法是用像素灰度值和此像素邻域的局部灰度特性来确定该像素的阈值的。当照明不均匀、有突发噪声,或者背景灰度变化较大时,局部阈值确定技术必须根据像素的坐标位置关系自动确定不同阈值,实施动态的自适应二值化处理。局部阈值选取一般将图像划分为若干子图像,在每个子图像区域上使用整体阈值法,从而可以构成整幅图像的局部阈值法(根据每个子图像确定相应的阈值,具体的阈值确定方法同全局阈值的确定类似)。用这种方法分割后的图像在不同子图像的边界处有灰度的不连续分布,因此必须采用平滑技术来消除灰度的不连续性。
局部阈值法一般用于识别干扰比较严重、品质较差的图像,相对整体阈值方法有更广泛的应用,但也存在缺点和问题,如实现速度慢、不能保证字符笔画连通性以及容易出现伪影现象(即在背景域受到噪音干扰得到笔画结果)等。比较典型的局部二值化算法有Bernsen方法、多阈值的梯度强度法、基于纹理图像的方法、最大方差法等。
19
灰度图像二值化方法研究
第四章 Otsu方法和Bernsen方法
4.1 Otsu算法分析
Otsu 在1979 年提出的最大类间方差法(有时也称之为大津法),该方法的基本思想是:设阈值将图像分割成两组,一组灰度对应目标,另一组灰度对应背景,则这两组灰度值的类内方差最小,两组的类间方差最大。对图像Image,记t为目标与背景的分割阈值,目标像素数占图像比例为0,平均灰度为0;背景像素数占图像比例为1,平均灰度为1。图像的总平均灰度为:0(t)0(t)1(t)1(t)。从最小灰度值到最大灰度值遍历t,当t使得值g0(0)21(1)2 最大时t即为分割的最佳阈值。对大津法可作如下理解:该式实际上就是类间方差值,阈值t分割出的目标和背景两部分构成了整幅图像,而目标取值0,概率为 0,背景取值1,概率为1,总均值为,根据方差的定义即得该式。因方差是灰度分布均匀性的一种度量,方差值越大说明构成图像的两部分差别越大,当部分目标点错分为背景或部分背景点错分为目标点都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小。
记f(i,j)为NM图像(i,j)点处的灰度值,灰度级为,不妨假设f(i,j)取值
[0,m1]。记p(k)为灰度值为k的频率,则有:
p(k)1MNf(i,j)k1
(2)
假设用灰度值t为阈值分割出的目标与背景分别为:{f(i,j)t}和{f(i,j)t},于是目标部分比例:
0(t)目标部分点数:
0itp(i), (3)
N0(t)MN p(i) (4)
0it 20
灰度图像二值化方法研究
背景部分比例:
1(t)背景部分点数:
tim1p(i) (5) P(i) (6)
0N1(t)MN目标均值:
tim10(t)背景均值:
0itip(i)/(t) (7)
ip(i)/(t) (8)
11(t)总均值:
tim10(t)0(t)1(t)1(t) (9)
大津法指出求图像最佳阈值g的公式为:
gArg Max[0(t)(0(t))21(t)(1(t))2] (10)
0tm-1该式右边括号内实际上就是类间方差值,阈值g分割出的目标和背景两部分构成了整幅图像,而目标值0(t),概率为1(t),背景取值1(t),概率为0(t),总均值为,根据方差的定义即得该式。因方差是灰度分布均匀性的一种度量,方差值越大,说明构成图像的两部分差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小,这便是大津法的真正含义。其实,换一种思想也能很好的理解大津方法。0(t)和1(t),可以分别代表目标和背景的中心灰度,则代表整幅图像的中心灰度,要使目标和背景得到最好的分割,当然希望分割出的目标尽量远离图像中心,即(0(t))2或|0(t)|尽量大,背景也尽量远离中心,即(1(t))2或|1(t)|尽量大,由于希望两者都大,于是有:
(1) 两者之加权和最大:
gArg Max[0(t)(0(t))21(t)(1(t))2]
0tm-1(2) 两者之积最大:
21
灰度图像二值化方法研究
gArg Max[(0(t))2(1(t))2] (11)
0tm-1 注意到有0(t)0(t)1(t)1(t),且0(t)1(t),因此有:
0(t)(0(t))21(t)(1(t))2(0(t))2(1(t))2。可见是二者等价的。
4.2 Otsu方法流程图
Otsu方法流程图如图4.1所示。
开 始 读入灰度图像I 求t的范围 记录t对应的g 求max(g)时t的取值 N f(i,j)t Y b(i,j)0 b(i,j)1 显示二值图像 结 束 图4.1 Otsu方法流程图
22
灰度图像二值化方法研究
4.3 Bernsen算法分析
局部阈值法把灰度阈值选取为随像素位置变化而变化的函数,它是一种动态选择阈值的自适应方法。
设图像在像素点(i,j)处的灰度值为f(i,j),考虑以像素点(i,j)为中心的
(21)(21)窗口,(21表示窗口的边长),则Bernsen算法可以描述如下:
计算图像中各个像素点(i,j)的阈值T(i,j)
T(i,j)0.5(maxf(im,jn)minf(im,jn))mnmn (12)
对图像中各像素点(i,j)用b(i,j)值逐点进行二值化。
0 b(i,j)1f(i,j)T(i,j) (13) f(i,j)T(i,j)用I存储灰度图像的值,设I为NM,把I边界扩展成N2M2 extend矩阵。
4.4 Bernsen方法流程图
首先读取原图像I的大小为NM。由于I中的元素不是每个都是在33窗口的中心,所以需要对灰度图像I进行扩展。首先创建一个(N2)(M2)的矩阵extend,把矩阵I中的像素extend(i1,j1)I(i,j),而第一行和最后一行,第一列和最后一列的填充依据是以它靠近的行或列为对称轴进行填充。遍历从extend(2,2)到
extend(N1,M1)的像素,并取以当前像素为中心的33窗口的最大像素max和最小
像素min,依据公式t0.5(maxmin)求出阈值t。把灰度图像矩阵I赋值于另一矩阵
B,以免改变当前得到的灰度图像矩阵。遍历该矩阵B,对当前灰度值与t比较,如果大于赋予1,判为目标像素类,否则赋予0,作为背景像素类。显示得到的二值图像B。
Bernsen方法流程图如图4.2所示。
23
灰度图像二值化方法研究
开 始 读入灰度图像I 以I的边界为对称轴扩展为N+2,M+2的extend矩阵 求出以extend(i,j)为中心的33窗口的max和min 依公式t=0.5(max + min)求出当前窗口的阈值t extend(i,j)t N Y b(i-1,j-1)0b(i-1,j-1)1 显示二值图像 结 束 图4.2 Bernsen方法流程图
24
灰度图像二值化方法研究
第五章 Otsu方法和Bernsen方法实验比较
本设计只是对于bmp格式灰度图像进行研究。用Otsu方法和Bernsen方法对图像进行二值化处理,以下为研究对象的几张原始图像如图5.1所示。
(a) (b) (c)
(d) (e) (f)
图5.1 原图
(a) lenna原始图像(256×256);(b)barbara原始图像(256×256);(c)peppers原始图像(256×256); (d) lenna原始图像(512×512);(e)barbara原始图像(512×512); (f)peppers原始图像(512×512)
5.1 Otsu方法实验结果分析
对图5.1这六幅图像都采用Otsu算法进行图像二值化处理。其结果如图所示。lenna(256×256)、lenna(512×512)原始图像通过Otsu方法二值化后的所得到的二值图像如图5.2所示。barbara(256×256)、barbara(512×512)原始图像通过Otsu方法二值化后的所得到的二值图像如图5.3所示。peppers(256×256)、peppers(512×512)原始图像通过Otsu方法二值化后的所得到的二值图像如图5.4所示。
25
灰度图像二值化方法研究
(a) (b)
图5.2 Otsu方法二值化lenna图像
(a)二值lenna图像(256×256); (b)二值lenna图像(512×512)
(a) (b)
图5.3 Otsu方法二值化barbara图像
(a)二值barbara图像(256×256); (b)二值barbara图像(512×512)
(a) (b)
图5.4 Otsu方法二值化barbara图像
(a) 二值peppers图像(256×256); (b)二值peppers图像(512×512)
实验结果分析如表5.1。
26
灰度图像二值化方法研究
表5.1 Otsu方法处理不同像素的不同图像
性能指标 阈值(T) 时间(S)/s 熵值(H) 图5.2a 109 1.0940 0.9993 图5.2b 129 3.8750 1.0000 图5.3a 114 1.1870 0.9997 图5.3b 118 3.6720 0.9944 图5.4a 96 1.0470 0.9356 图5.4b 106 3.7810 0.9998 图(a)为256×256的图像,图(b)为512×512的图像。以图5.2为例,lenna512×512的图像时间为3.8750,阈值为129;lenna256×256的时间为1.0940,阈值为109。可知,512×512 图像的执行时间要比256×256图像的时间要长,说明图像越大,用Otsu方法对其进行二值化处理所需时间越长;大图像的阈值也比小图像要大。熵值是衡量图像有序化程度的一个度量,熵值越低图像越有序,图5.2b即lenna(512×512)在进行比较的图像中是最混乱的。
5.2 Bernsen方法结果分析
对图5.1这六幅图像都采用Bernsen算法进行图像二值化处理。其结果如图所示。lenna(256×256)、lenna(512×512)原始图像通过Bernsen方法二值化后的所得到的二值图像如图5.5所示。barbara(256×256)、barbara(512×512)原始图像通过Bernsen方法二值化后的所得到的二值图像如图5.6所示。peppers(256×256)、peppers(512×512)原始图像通过Bernsen方法二值化后的所得到的二值图像如图5.7所示。
(a)
(b)
图5.5 Bernsen方法二值化lenna图像
(a)二值lenna图像(256×256); (b)二值lenna图像(512×512)
27
灰度图像二值化方法研究
(a)
(b)
图5.6 Bernsen方法二值化barbara图像
(a)二值barbara图像(256×256); (b)二值barbara图像(512×512)
(a)
(b)
图5.7 Bernsen方法二值化peppers图像
(a)二值peppers图像(256×256); (b)二值peppers图像(512×512)
实验结果分析如表5.2。
表5.2 Bernsen方法处理不同像素的不同图像
性能指标 阈值(T) 时间(S)/s 熵值(H) 图5.5a 4.2032 0.9131 图5.5b 8.7500 0.8533 图5.6a 2.2970 0.9339 图5.6b 8.5940 0.9238 图5.7a 3.1870 0.8715 图5.7b 8.8440 0.8922 因为Bernsen方法不存在预取阈值,得到的都是局部阈值,随像素的变化而变化,所以没有固定的阈值。图像越大用Bernsen算法对其进行二值化处理的时间越长。
5.3 0tsu方法和Bernsen方法实验结果比较
28
灰度图像二值化方法研究
在表中用一些变量保存了有用的实验数据。T表示Otsu方法、Bernsen方法的运行时间,单位为秒。H表示由Otsu方法、Bernsen方法处理得到的二值图像的熵值,单位为比特/符号。熵值的定义为:
H(x)i1Mp(xi)log21/pxi (14)
图像的熵值反映了整幅图像的效果。信息熵是信息论中用于度量信息量的一个概念。一幅图像越是有序,信息熵就越低;反之,一幅图像越是混乱,信息熵就越高。所以,信息熵也可以说是衡量图像有序化程度的一个度量。程序的运行时间代表算法运行效率,也是算法的一项性能指数。
表5.3 两种方法性能比较
二值化方法 性能指标 256×256 lenna 512×512 256×256 barbara 512×512 256×256 peppers 512×512 106 3.7810 0.9998 8.8440 0.8922 118 96 3.6720 1.0470 0.9944 0.9356 8.5940 3.1870 0.9238 0.8715 129 114 3.8750 1.1870 1.0000 0.9997 8.7500 2.2970 0.8533 0.9339 阈值(T) 109 Otsu方法 时间(S)/s 1.0940 熵值(H) 0.9993 Bernsen方法 时间(S)/s 4.2032 熵值(H) 0.9131 Bernsen方法由于不存在预取阈值,得到的都是局部阈值,随像素的变化而变化,没有固定的阈值。
程序运行时间T:T(Bernsen)>T(Otsu),可见Bernsen算法要寻找局部极大、极小值,因此速度较慢;TOtsu(256×256)< TOtsu(512×512) ,TBernsen(256×256)< TBernsen(512×512),可见图像越大,二值化程序运行所需时间就越长。二值图像的熵值:H(Otsu)>H(Bernsen),可以见Otsu方法对于光照不均、噪声干扰大的图像,其二值化效果较差,其反映了整个图像的整体灰度分布情况。
5.4 结论
Otsu 是经典的非参数、无监督自适应阈值方法,是一种直方图技术。理想情况下,
29
灰度图像二值化方法研究
在直方图上代表物体和背景的两个峰之间有一个明显的谷,谷底就是最优阈值。但在一些实际图像中谷很平,很宽,并且受噪声干扰严重,或是两个峰的高度相差较大。这时寻找最佳阈值很困难。Otsu 法就是针对这种情况提出的,并且它不需要其它的先验知识,至今仍是最常用的二值化方法之一。Otsu方法实现简单,对于具有明显双峰直方图的图像效果明显,但对于低对比度和光照不均匀的图像效果不佳,抗噪声能力差,因而应用范围受到极大限制。
Bernsen方法虽然能够根据局部灰度特性来自适应地选取阀值,有较大的灵活性,但是仍然存在缺点和问题:
(1)实现速度慢。由于Bernsen算法要寻找局部极大、极小值,因此速度较慢。如果每次比较运算耗时一个单元时间,则处理NM图像耗时由NM(21)(21)决定。当局部窗口增大时,对时间消耗的影响与窗口尺寸成平方关系。
(2)有伪影现象。采用Bernsen算法时,常常在背景区域出现伪笔画,这叫做伪影现象。出现这种现象是因为Bernsen算法以局部窗口内极大、极小值作为考察点的邻域,当考察窗口内无目标点时,个别噪声点将引起阈值的突变,背景灰度的非均匀性也将影响局部阈值的变化,从而使得本应是背景的点被二值化为目标点。
(3)有笔画断裂现象。 Bernsen算法考察窗口内均为目标点时,局部阈值被拉升,于是部分目标点被二值化为背景,致使信息丢失,从而出现笔画断裂现象。
30
灰度图像二值化方法研究
结束语
在两个多月的毕业设计中,通过广泛查阅与课题有关的内容,我掌握了许多与计算机有关的东西,更重要的是使我对7.0软件功能应用和图像处理知识有了一定的了解。为此,我对用MATLAB7.0进行图像处理的步骤、方法及思路有了一个全新的认识。这加深了我对计算机软件MATLAB7.0的熟悉,同时也了解到数字图像处理如在模式识别,医学,军事等方面都有广泛运用,我受益非浅。
通过这次的毕业设计,我不仅拓宽了自己的知识面,还在实践过程中巩固和加深了自己所学的理论知识,使自己的技术素质和实践能力有了进一步的提高。
在图像处理方面也累积了不少经验,特别是在对软件开发工具和图像处理不很熟悉的情况下,通过自己的学习和导师的指导完成了设计任务。并在设计过程中,自己分析问题和解决问题的能力都得到了锻炼和提高,完善了自己的知识结构,加深了对知识的理解。
这次毕业设计完成后,体会颇多,在学与做的过程中,取长补短,不断学习新的知识,吸取经验,达到进步的目的。在学与做的过程中老师的指导以及相关图书资料的帮助,我顺利完成了这次论文。在这次的毕业设计中我学习到不少MATLAB.0软件和图像处理知识,但由于自己的理论知识水平有限,实践知识和设计经验不足,在设计过程中难免存在一些不足,甚至错误。恳请老师批评指正,致使我在以后的工作和实践中加以改进和提高。
31
灰度图像二值化方法研究
参考文献
[1] Liu Jieping,Yu Yinglin.A flexible method for image noise removal[J].Joural of South China University
Technology,2000,28(2):60~63.
[2] A Piva, M Barni,F Bartolini, V Cappellini. DCT-based watermark recovering without resorting to the
uncorrupted original image[A].Proceedings of 4th IEEE International Conference on Image Processing ICIP’97[C].Santa Barbara,CA,USA:ICIP,1997.
[3] Zhong wei.Image watermarking using Legendre array[J].Journal of china institute of
communications,2001,22(1):1~6.
[4] 潘梅森,荣秋生.SOFM神经网络的图像融合的二值化方法[J].光学精密工程,2007,15(3):99~104. [5] 潘梅森,易明.一种基于人类视觉的自适应均值滤波算法[J].计算机工程与应用,2006,42(10):62~64. [6] 王建卫.彩色图像的中值滤波算法的改进与应用[J].哈尔滨商业大学大学报:自然科学
版.2006,22(4):67~69.
[7] 李文举,梁德群,王新年.质量退化的车牌字符分割方法[J].计算机辅助设计与图形学学
报,2004,16(5):697~700.
[8] 郝永杰,刘文耀,路烁.畸变汽车牌照图像的空间校正[J].西南交通大学学报,2002, 4(37): 417~420. [9] 陈丹,张蜂,贺贵明.一种改进的文本图像二值化算法[J].计算机工程,2003,29(13):85~86.
[10] 黄志斌.面向车辆牌照的L快速二值化算法[J].华侨大学学报(自然科学版),2002,23(4):427~430. [11] A Hashizume, P S Yeh, A Rosenfeld. A Method of Detecting the Orientation of Aligned
Components[J]. Pattern Recognition Letters, 1986,4:125~132.
[12] L.O’Gorman. The Document Spectrum for Page Layout Analysis. IEEE Transactions. PAMI,
Vol.15,No.11, 1993:pp.1162~1173.
[13] 郑咸义,张颖豪.一个改进的LBG算法[J].计算机辅助设计与图形学学报,1997,9(4):335~338.
32
灰度图像二值化方法研究
致 谢
毕业即将完成,本次毕业设计我最想感谢,最应该感谢的人是潘老师。严肃的科学态度,严谨的治学精神,精益求精的工作作风,这是别人用来形容潘老师的,一点都不错。但是词真是官方,我自己应该想不出来,当然与自己文学水平也有关系。总之,如果不是潘老师有计划按步骤的催促我们交东西,我想自己现在连开题报告都可能还没完成;如果不是潘老师看重的设计过程中知识的学习,我想自己一开始就会说老师,给我一个模板吧!图像处理太难了,我不会做;如果不是老师耐心的讲解,我想我会说老师你给我程序吧,虽然到最后还是向老师开口了。如果不是老师有标准有要求,我想我应该会很混乱,也不会发现原来这些烦琐复杂的过程中也会许多收获。
更重要的是对比潘老师的认真负责、专业强势。反观自己大学四年又做或学了些什么呢?什么都没有,有得是碰到课程设计、程序就抓耳挠腮,学了这么多语言没有真正的掌握好一门。逃避退缩不敢面对放弃,宁愿相信自己比人笨,也不愿一步一步地积累知识的。逝者已矣,不想去追悔什么。
从潘老师身上学到的更是一种对生活对工作的态度,令我受益非浅。 此次毕业设计可能没有达到老师的要求,但是我自己还是很有收获的。 感谢潘老师! 感谢和我一起共同走过大学四年的同学,老师!
33
灰度图像二值化方法研究
附录:源代码
Otsu算法代码:
time=now; %取当前时间
I=imread('lena256.bmp');%读取图像 imshow(I);
[N,M]=size(I);%用N,M分别存储图像数组的行数和列数 length=N*M; %取得图像数组的像素点个数 L=256;%设定图像的灰度为256
count=0; %用来记录出现灰度值相同的个数 for k=0:L-1 for i=1:N for j=1:M if I(i,j)==k
count=count+1; %个数加一 end end
end %求出每个像素出现的次数
P(k+1)=count/length;%记录像素值为K出现的概率 count=0; %再次赋予0进入下一个像素的个数记录 end for i=1:L if P(i)~=0
first=i;%找出第一个概率不连续为0的像素 break end end
34
灰度图像二值化方法研究
for i=L:-1:1 if P(i)~=0
last=i;%找出最后一个出现概率不连续为0的像素 break end end
entropy1=0; %记录灰度图像的熵值 for i=first:last if (P(i)~=0)
entropy1=entropy1+P(i)*log2(1/P(i)); %求取熵值的公式 end end
ep=0;%用来记录每个灰度级的概率 averF=0; %记录目标均值的叠加值 averB=0; %记录背景均值的叠加值 for t=0:L
y=t+1;%好做标记
if (y>first)&&(y w1(y)=1-w0(y); %总概率为1 for i=1:t ep=averF+(i)*P(i)/w0(y); %求出目标均值 end u0(y)=averF; %赋予目标均值 for i=t:L 35 灰度图像二值化方法研究 averB=averB+(i)*P(i)/w1(y);% 求出背景均值 end u1(y)=averB; u=w0(y)*u0(y)+w1(y)*u1(y); %总均值 arg(y)=w0(y)*(u0(y)-u)*(u0(y)-u)+w1(y)*(u1(y)-u)*(u1(y)-u); %算出每一个t对应的方差值 end ep=0; averF=0; averB=0; %用完一次需赋0,以保证进入下一个t的计算的正确性 end high=arg(1); for i=2:last-first-3 %因为first t=x-1;%记录t是从下标1开始的,此时的t就是我们所求的阈值 I0=0; I1=0; for i=1:N for j=1:M if (I(i,j)>=t) y1(i,j)=255; I1=I1+1;%统计目标像素点的个数 else y1(i,j)=0; I0=I0+1;%统计背景像素点的个数 36 灰度图像二值化方法研究 end end end figure,imshow(y1); %显示二值化图像 entropy1; %求出二值化图像的熵值 back=(I0/(N*M))*log2(N*M/I0); %求出背景像素的熵值 fore=(I1/(N*M))*log2(N*M/I1); %求出目标像素的熵值 entropy2=back+fore %求出二值化图像的熵值 exetime=second(now-time) %求得程序运行所需时间,并转化成秒显示 t %阈值显示 Bernsen算法代码: time=now; %取当前时间 I=imread('lena256.bmp'); %读取图像 imshow(I); %显示图像 [N,M]=size(I); %计算图像大小,matlab中图像以二维矩阵形式存储 for i=1:N for j=1:M extend(i+1,j+1)=I(i,j);%把I数组的灰度赋给extend数组 end end extend(N+2,M+2)=0; %扩展为N+2,M+2 for i=1:N+1:N+2 %因只需填充第一行和最后一行,所以i的步长为N+1 for j=2:M+1 if i==1 extend(i,j)=extend(i+2,j); %以第二行做坐标轴,填充第一行 end if i==N+2 %以倒数第二行做坐标轴,填充最后一行 37 灰度图像二值化方法研究 extend(i,j)=extend(i-2,j); end %先填充行 end end for i=1:N+2 for j=1:M+1:M+2 %因只需填充第一列和最后一列,所以j的步长为M+1 if j==1 extend(i,j)=extend(i,j+2); %填充第一列 end if j==M+2 extend(i,j)=extend(i,j-2); %填充最后一列 end end end % 再填充列 ,填充完毕 %extend=double(extend);%6.5中必须要强制转化 for i=2:N+1 for j=2:M+1 high=max(max(extend(i-1:i+1,j-1:j+1))); %求出3*3矩阵的最大值 low=min(min(extend(i-1:i+1,j-1:j+1))); %求出3*3矩阵的最小值 t=0.5*(high+low); % 依据公式算出局部阈值 if extend(i,j) b(i-1,j-1)=255; %大于阈值的为目标像素 end end end 38 灰度图像二值化方法研究 figure,imshow(b); I0=0; I1=0; for i=1:N for j=1:M if b(i,j)==0 I0=I0+1; else I1=I1+1; end end end back=(I0/(N*M))*log2(N*M/I0);%求出背景像素的熵值 fore=(I1/(N*M))*log2(N*M/I1);%求出目标像素熵值 entropy=back+fore %求出二值化图像熵值 exetime=second(now-time) %求得程序运行所需时间,并转化成秒显示 39 因篇幅问题不能全部显示,请点此查看更多更全内容