资源描述
图像二值化算法研究与实现
摘 要:图像二值化是图像预处理中的一项重要技术,在模式识别、光学字符识别、医学成像等方面都有重要应用。论文介绍了图像及数字图像处理技术的一些概念和相关知识;对VC++ 软件的发展和软件在图像处理中的应用做了简要介绍;还介绍了图像二值化算法以及利用VC++软件工具进行算法的实现。论文重点实现了图像分割技术中常用灰度图像二值化算法,如Otsu算法、Bernsen算法,并对这些算法运行的实验结果进行分析与比较。
关键词:图像处理;二值化;VC++;
1. 引言
1.1 图像与数字图像
图像就是用各种观测系统观测客观世界获得的且可以直接或间接作用与人眼而产生视觉的实体。视觉是人类从大自然中获取信息的最主要的手段。拒统计,在人类获取的信息中,视觉信息约占60%,听觉信息约占20%,其他方式加起来才约占20%。由此可见,视觉信息对人类非常重要。同时,图像又是人类获取视觉信息的主要途径,是人类能体验的最重要、最丰富、信息量最大的信息源。通常,客观事物在空间上都是三维的(3D)的,但是从客观景物获得的图像却是属于二维(2D)平面的。
数字图像:数字图像是将连续的模拟图像经过离散化处理后得到的计算机能够辨识的点阵图像。在严格意义上讲,数字图像是经过等距离矩形网格采样,对幅度进行等间隔量化的二维函数。因此,数字图像实际上就是被量化的二维采样数组。
1.2 数字图像处理技术内容与发展现状
数字图像处理就是采用一定的算法对数字图像进行处理,以获得人眼视觉或者某种接受系统所需要的图像处理过程。图像处理的基础是数字,主要任务是进行各种算法设计和算法实现。
图像处理技术的发展大致经历了初创期、发展期、普及期和实用化期4个阶段。初创期开始与20世纪60年代,当时的图像采用像素型光栅进行少秒显示,大多采用中、大型机对其处理。在这一时期,由于图像存储成本高、处理设备昂贵,其应用面很窄。进入20世纪70年代的发展期,开始大量采用中、小型机进行处理,图像处理也逐渐改用光栅扫描方式,特别是CT和卫星遥感图像的出现,对图像处理技术的发展起到了很好的推动作用。到了20世纪80年代,图像处理技术进入普及期,此时的微机已经能够担当起图形图像处理的任务。超大规模集成电路(Very Large Scale Integration, VLSI)的出现更使处理速度大大提高,设备造价也进一步降低,极大地促进了图形图像系统的普及和应用。20世纪90年代是图像处理技术的实用化时期,图像处理的信息量巨大,对处理速度的要求极高。
1.3 图像二值化原理及意义
图像二值化是指用灰度变换来研究灰度图像的一种常用方法,即设定某一阈值将灰度图像的像素分成大于阈值的像素群和小于阈值的像素群两部分。例如输人灰度图像函数为,输出二值图像函数为,则
(1)
阈值(threshold )是把目标和背景区分开的标尺,选取适当的阈值就是既要尽可能保存图像信息,又要尽可能减少背景和噪声的干扰,这是选择阈值的原则。
图像的二值化处理就是将图像上的点的灰度置为0或255,也就是使整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。
在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素的值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。二值图像在图像分析中应用非常广泛,二值图像就是指只有两个灰度级的图像,二值图像具有存储空间小,处理速度快,可以方便地对图像进行布尔逻辑运算等特点。更重要的是,在二值图像的基础上,还可以进一步对图像处理,获得该图像的一些几何特征或者其他更多特征。
2. 软件工具—VC++
2.1 软件概述
Microsoft Visual C++是 Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2、WinSock网络、控制界面。它以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。
VC++由C++语言 、MFC的封装类、IDE构成。
MFC(microsoft foundation classes, 微软基础类库)是微软为Windows程序员提供的一个面向对象的Windows编程接口,它大大简化了Windows编程工作。
• MFC提供了一个标准化的结构
• 提供了大量的代码,指导用户编程时实现某些技术和功能。
VC在单个工具中,能完成如下功能,因此被称为IDE(Integreted Development Enviroment, 集成开发环境):
• 生成不同编写代码的起始应用程序
• 通过许多不同方法查看项目文件
• 编辑源文件和包含文件
• 建立应用程序的可视界面
• 编译及链接
• 运行及调试应用程序
2.2 VC++开发环境
Visual C++的集成开发环境Visual Studio提供了大量的实用工具以支持可视化编程特性,它们包括: 项目工作区、ClassWizard、AppWizard、WizardBar等。下面对它们作逐一介绍。Visual C++的用户界面如图1所示。
调试区
工具条
菜单条
向导栏
图1 Visual C++的用户界面
工作区
项目工作区
图1 Visual C++的用户界面
2.2.1 项目工作区
Visual C++使用项目工作区来组织项目、元素以及项目信息在屏幕上出现的方式。在桌面上,工作区以窗口方式组织项目、文件和项目设置。每个项目视图都有一个相应的文件夹,包含了关于该项目的各种元素。展开该文件夹可以显示该视图方式下工作区的详细信息。项目视图区包含三个选项卡,单击各选项卡,可以在其间切换。这三个选项卡从左到右依次是:ClassView、ResourceView、FileView。
(1) ClassView(类视图)
显示项目中定义的C++类,展开文件夹显示工程中所定义的所有类,展开类可查看类的数据成员和成员函数以及全局变量、函数和类型定义。ClassView显示所有已定义的类以及这些类中的数据成员、成员变量。
(2) ResourceView(资源视图)
显示项目中所包含的资源文件。展开文件夹可显示所有的资源类型,如图3。
图2 类视图 图3 资源视图
(3) FileView(文件视图)
显示所创建的工程。展开文件夹可以查看工程中所包含的文件,如图4。
图4 文件视图
2.2.2 向导栏
图5 向导栏
WizardBar会自动跟踪用户程序的上下文——比如,当文本编辑器中的光标从一个函数移动到另一个函数时,Wizard的显示会自动更新。
WizardBar工具条包含了三个相关的下拉列表框: 类(Class)、过滤器(Filter)和成员(Member)
WizardBar最右边是一个Action Control下拉选项,单击Action Control 的向下箭头符号会弹出一个菜单,用于执行跳到函数定义、增加消息处理函数等操作。
3. 图像二值化的算法及实现
3.1 论文研究对象
论文主要研究BMP格式的灰度图像文件。BMP(Bitmap Picture)文件格式是Windows系统交换图形、图像数据的一种标准格式。BMP图像的数据由四个部分组成,如表1所示。
表1 BMP图像文件结构
文件部分
属 性
说 明
BITMAPFILEHEADER
(位图文件头)
bfType
文件类型,必须是0x424D,即字符串 “BM”
bfSize
指定文件大小,包括这14个字节
bfReservered1
保留字,不用考虑
bfReservered2
保留字,不用考虑
bfOffBits
从文件头到实际位图数据的偏移字节数
BITMAPINFOHEADER
(位图信息头)
biSize
该结构长度,为40
biWidth
图像的宽度,单位是像素
biHeight
图像的高度,单位是像素
biplanes
位平面数,必须是1,不用考虑
biBitCount
指定颜色位数,1为二值,4为16色,8为256色,16,24、32为真彩色
biCompression
指定是否压缩,有效的值为BI_RGB,BI_RLE8,BI_RLE4,BI_BITFIELDS
biSizeImage
实际的位图数据占用的字节数
biXPelsPerMeter
目标设备水平分辨率,单位是每米的像素数
biYPelsPerMeter
目标设备垂直分辨率,单位是每米的像素数
biClrUsed
实际使用的颜色数,若该值为0,则使用颜色数为2的biBitCount次方种
biClrImportant
图像中重要的颜色数,若该值为0,则所有的颜色都是重要的
Palette
(调色板)
rgbBlue
该颜色的蓝色分量
rgbGreen
该颜色的绿色分量
rgbRed
该颜色的红色分量
rgbReserved
保留字
ImageData
(位图数据)
按像素按行优先顺序排序,每一行的字节数必须是4的整倍数
第一部分为位图文件头BITMAPFILEHEADER,它是个结构体,其定义如下:
typedef struct tagBITMAPFILEHEADER {
WORD bfType;
DWORD bfSize;
WORD bfReserved1;
WORD bfReserved2;
DWORD bfOffBits;
} BITMAPFILEHEADER;
这个结构的长度是固定的,为14个字节(WORD为无符号16位二进制整数,DWORD为无符号32位二进制整数)。
第二部分为位图信息头BITMAPINFOHEADER,也是一个结构,其定义如下:
typedef struct tagBITMAPINFOHEADER {
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG 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),当然,这里是对那些需要调色板的位图文件而言的。真彩色图像是不需要调色板的,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文件的数据存放是从下到上,从左到右的,也就是说,从文件中最先读到的是图像最下面的一行的左边的第一个像素,然后是左边的第二个像素,接下来是倒数第二行左边第一个像素,左边第二个像素。依次类推,最后得到的是最上面的最右边的一个像素。
3.2 灰度变换
黑白图片的黑白变换叫灰度变换,彩色图片的色彩变换也叫灰度变换。一幅彩色图像的象素矩阵中每个象素由RGB 3种颜色按一定的比例混合形成一种颜色来表示,比如黑色使RGB(0,0,0) ,纯红色是RGB(0,1,0)...。在处理相片时,有时可能因为环境光源太暗,使RGB色的值偏小,就会使图形太暗看不清,如果环境光源太光,又使图像泛白,通过灰度变换,就可以使RGB值调和到合适的程度,使相片变得漂亮。
灰度变换原理:首先提取一幅图像的一个象素,在BMP格式中一个象素由8位红色亮度值,8位绿色亮度值和8位蓝色亮度值组成,只要按一定的变换函数去变换。
灰度变换公式: GRAY=0.11*R+0.59*G+0.3*B (2)
3.3 图像二值化常用算法
3.3.1 简单阈值
通过直接对图像的灰度直方图曲线进行分析,判断极小值所在的灰度级,再对所有极小值点进行相应的分类合并来最终确定阈值的位置,避免出现过分割的现象。在预处理阶段本文采用了基于各向异性扩散的平滑方法对图像进行滤波,以消除噪声,同时还可以使图像的灰度直方图曲线更为连续,从而加速算法的执行效率。
简单阈值是指用灰度变换来研究灰度图像的一种常用方法,即设定某一阈值将灰度图像的像素分成大于阈值的像素群和小于阈值的像素群两部分。例如输人灰度图像函数为 ,输出二值图像函数为 ,则
Threshold=127 (3)
阈值(threshold )是把目标和背景区分开的标尺,选取适当的阈值就是既要尽可能保存图像信息,又要尽可能减少背景和噪声的干扰,这是选择阈值的原则。
图6 简单阈值效果图像
由于简单阈值法过于简单,丢失部分信息。随着时代的发展人们对于图像的要求也越来越高,这种简单的方法已经不能够满足人们的要求。
3.3.2 Bernsen法
局部阈值法把灰度阈值选取为随像素位置变化而变化的函数,它是一种动态选择阈值的自适应方法。
设图像在像素点处的灰度值为,考虑以像素点为中心的窗口,(表示窗口的边长),则Bernsen算法可以描述如下:
计算图像中各个像素点的阈值
(4)
对图像中各像素点用值逐点进行二值化。
(5)
用存储灰度图像的值,设为,把边界扩展成extend矩阵。
首先读取原图像的大小为。由于中的元素不是每个都是在窗口的中心,所以需要对灰度图像进行扩展。首先创建一个的矩阵extend,把矩阵中的像素,而第一行和最后一行,第一列和最后一列的填充依据是以它靠近的行或列为对称轴进行填充。遍历从到的像素,并取以当前像素为中心的窗口的最大像素max和最小像素min,依据公式求出阈值。把灰度图像矩阵赋值于另一矩阵,以免改变当前得到的灰度图像矩阵。遍历该矩阵,对当前灰度值与比较,如果大于赋予1,判为目标像素类,否则赋予0,作为背景像素类。显示得到的二值图像。
Bernsen方法流程图如图7所示。
读入灰度图像
以的边界为对称轴扩展为N+2,M+2的矩阵
N+2,M+2的extend矩阵
求出以为中心的33窗口的max和min
依公式t=0.5(max + min)求出当前窗口的阈值
开 始
显示二值图像
结 束
N
Y
图7 Bernsen方法流程图
3.3.2.1 Bernsen方法结果分析
Bernsen方法对图像进行二值化处理,以下为研究对象的几张原始图像,图8所示。
(a) (b) (c)
(d) (e) (f)
图8 原图
(a) lenna原始图像(256×256);(b)barbara原始图像(256×256);(c)peppers原始图像(256×256);
(d) lenna原始图像(512×512);(e)barbara原始图像(512×512); (f)peppers原始图像(512×512)
通过调研参考文献可知,对图8这六幅图像都采用Bernsen算法进行图像二值化处理。其结果如图所示。lenna(256×256)、lenna(512×512)原始图像通过Bernsen方法二值化后的所得到的二值图像如9所示。barbara(256×256)、barbara(512×512)原始图像通过Bernsen方法二值化后的所得到的二值图像如图10所示。peppers(256×256)、peppers(512×512)原始图像通过Bernsen方法二值化后的所得到的二值图像如图11所示。
(a) (b)
图9 Bernsen方法二值化lenna图像
(a)二值lenna图像(256×256); (b)二值lenna图像(512×512)
(a) (b)
图10 Bernsen方法二值化barbara图像
(a)二值barbara图像(256×256); (b)二值barbara图像(512×512)
(a) (b)
图11 Bernsen方法二值化peppers图像
(a)二值peppers图像(256×256); (b)二值peppers图像(512×512)
实验结果分析如表【12】2。
表2 Bernsen方法处理不同像素的不同图像
性能指标
图9a
图9b
图10a
图10b
图11a
图11b
阈值(T)
时间(S)/s
4.2032
8.7500
2.2970
8.5940
3.1870
8.8440
熵值(H)
0.9131
0.8533
0.9339
0.9238
0.8715
0.8922
因为Bernsen方法不存在预取阈值,得到的都是局部阈值,随像素的变化而变化,所以没有固定的阈值。图像越大用Bernsen算法对其进行二值化处理的时间越长。
3.3.3 Otsu法
Otsu 在1979 年提出的最大类间方差法(有时也称之为大津法),该方法的基本思想是:设阈值将图像分割成两组,一组灰度对应目标,另一组灰度对应背景,则这两组灰度值的类内方差最小,两组的类间方差最大。对图像Image,记为目标与背景的分割阈值,目标像素数占图像比例为,平均灰度为;背景像素数占图像比例为,平均灰度为。图像的总平均灰度为:。从最小灰度值到最大灰度值遍历,当使得值 最大时即为分割的最佳阈值。对大津法可作如下理解:该式实际上就是类间方差值,阈值分割出的目标和背景两部分构成了整幅图像,而目标取值,概率为 ,背景取值,概率为,总均值为,根据方差的定义即得该式。因方差是灰度分布均匀性的一种度量,方差值越大说明构成图像的两部分差别越大,当部分目标点错分为背景或部分背景点错分为目标点都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小。
记为图像点处的灰度值,灰度级为,不妨假设取值。记为灰度值为k的频率,则有:
(6)
假设用灰度值t为阈值分割出的目标与背景分别为:和,于是目标部分比例:
(7)
目标部分点数:
(8)
背景部分比例:
(9)
背景部分点数:
(10)
目标均值:
(11)
背景均值:
(12)
总均值:
(13)
大津法指出求图像最佳阈值g的公式为:
(14)
该式右边括号内实际上就是类间方差值,阈值g分割出的目标和背景两部分构成了整幅图像,而目标值,概率为,背景取值,概率为,总均值为,根据方差的定义即得该式。因方差是灰度分布均匀性的一种度量,方差值越大,说明构成图像的两部分差别越大,当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小,这便是大津法的真正含义。其实,换一种思想也能很好的理解大津方法。和,可以分别代表目标和背景的中心灰度,则代表整幅图像的中心灰度,要使目标和背景得到最好的分割,当然希望分割出的目标尽量远离图像中心,即或尽量大,背景也尽量远离中心,即或尽量大,由于希望两者都大,于是有:
(1) 两者之加权和最大:
(15)
(2) 两者之积最大:
(16)
注意到有,且,因此有: 。可见是二者等价的。
Otsu方法流程图如图7所示。
图12 Otsu方法流程图
开 始
读入灰度图像I
求的范围
记录对应的
求时的取值
显示二值图像
N
Y
结 束
3.3.3.1 Otsu方法实验结果分析
对图8这六幅图像都采用Otsu算法进行图像二值化处理。其结果如图所示。lenna(256×256)、lenna(512×512)原始图像通过Otsu方法二值化后的所得到的二值图像如图13所示。barbara(256×256)、barbara(512×512)原始图像通过Otsu方法二值化后的所得到的二值图像如图14所示。peppers(256×256)、peppers(512×512)原始图像通过Otsu方法二值化后的所得到的二值图像如图15所示。
(a) (b)
图13 Otsu方法二值化lenna图像
(a)二值lenna图像(256×256); (b)二值lenna图像(512×512)
(a) (b)
图14 Otsu方法二值化barbara图像
(a)二值barbara图像(256×256); (b)二值barbara图像(512×512)
(a) (b)
图15 Otsu方法二值化barbara图像
(a) 二值peppers图像(256×256); (b)二值peppers图像(512×512)
实验结果分析如表3。
表3 Otsu方法处理不同像素的不同图像
性能指标
图13a
图13b
图14a
图14b
图15a
图15b
阈值(T)
109
129
114
118
96
106
时间(S)/s
1.0940
3.8750
1.1870
3.6720
1.0470
3.7810
熵值(H)
0.9993
1.0000
0.9997
0.9944
0.9356
0.9998
图(a)为256×256的图像,图(b)为512×512的图像。以图13为例,lenna512×512的图像时间为3.8750,阈值为129;lenna256×256的时间为1.0940,阈值为109。可知,512×512 图像的执行时间要比256×256图像的时间要长,说明图像越大,用Otsu方法对其进行二值化处理所需时间越长;大图像的阈值也比小图像要大。熵值是衡量图像有序化程度的一个度量,熵值越低图像越有序,图13b即lenna(512×512)在进行比较的图像中是最混乱的。
3.3.3.2 0tsu方法和Bernsen方法实验结果比较
比较其它参考文献可知,在表中用一些变量保存了有用的实验数据,T表示Otsu方法、Bernsen方法的运行时间,单位为秒。H表示由Otsu方法、Bernsen方法处理得到的二值图像的熵值,单位为比特/符号。熵值的定义为:
(17)
图像的熵值反映了整幅图像的效果。信息熵是信息论中用于度量信息量的一个概念。一幅图像越是有序,信息熵就越低;反之,一幅图像越是混乱,信息熵就越高。所以,信息熵也可以说是衡量图像有序化程度的一个度量。程序的运行时间代表算法运行效率,也是算法的一项性能指数。
两种性能比较如表4所示【12】
表4 两种方法性能比较
二值化算法
Otsu方法
Bernsen方法
性能指标
阈值(T)
时间(S)/s
熵值(H)
时间(S)/s
熵值(H)
lenna
256×256
109
1.0940
0.9993
4.2032
0.9131
512×512
129
3.8750
1.0000
8.7500
0.8533
barbara
256×256
114
1.1870
0.9997
2.2970
0.9339
512×512
118
3.6720
0.9944
8.5940
0.9238
peppers
256×256
96
1.0470
0.9356
3.1870
0.8715
512×512
106
3.7810
0.9998
8.8440
0.8922
Bernsen方法由于不存在预取阈值,得到的都是局部阈值,随像素的变化而变化,没有固定的阈值。
程序运行时间T:T(Bernsen)>T(Otsu),可见Bernsen算法要寻找局部极大、极小值,因此速度较慢;TOtsu(256×256)< TOtsu(512×512) ,TBernsen(256×256)< TBernsen(512×512),可见图像越大,二值化程序运行所需时间就越长。二值图像的熵值:H(Otsu)>H(Bernsen),可以见Otsu方法对于光照不均、噪声干扰大的图像,其二值化效果较差,其反映了整个图像的整体灰度分布情况。
3.3.4 迭代法
迭代法是另外一种全局二值化方法,它要求图像分割阈值的算法是基于逼近的思想,首先选择一个近似阈值作为估计值的初始值,然后进行分割,产生子图像,并根据子图像的特性来选取新的阈值,再利用新的阈值分割图像,经过几次循环,使错误分割的图像像素点降到最少。这样做的效果好于用初始阈值直接分割图像的效果。具体算法步骤如下所述:
(1)求出图像中的最小灰度值和最大灰度值,分别记为Zmin和Zmax,则阈值初值T0为:
(18)
(2)根据阈值TK将图像分割成目标和背景两部分,求出两部分的平均灰度值Z0和ZG:
(19)
(20)
式中z(i,j)为图像上(i,j)点的灰度值;N(i,j)为(i,j)点的权重系数,一般N(i,j)为z(i,j)的个数。
(3) 利用下式求出新阈值:
(21)
(4)如果TK=TK+1,则结束,否则K=K+1,转向(2)。
经实验测试发现,对于直方图双峰明显、谷底较深的图像,迭代法可以较快地获得满意结果;但是对于直方图双峰不明显或图像目标和背景比例差异悬殊,迭代法所选取的阈值不如OTSU法。
迭代法算法实现如图16示。
图16 迭代法算法实现
图17 迭代法效果图像
对某些特定图像,某些微小的变化却会引起分割效果的巨大变化,两者数据只是稍有变化,但分割效果却反差极大,其中原因还有待进一步研究。
4. 总结
Bernsen法虽然能够根据局部灰度特性来自适应地选取阀值,有较大的灵活性,但是仍然存在缺点和问题:实现速度慢、有伪影现象、有笔画断裂现象。简单阈值法能减少背景和噪声的干扰迭代所得的阀值分割的图像效果不好,丢失部分图像信息,所以我主要采用Otsu法和迭代法。Otsu 法是经典的非参数、无监督自适应阈值方法,是一种直方图技术。Otsu法实现简单,对于具有明显双峰直方图的图像效果明显,但对于低对比度和光照不均匀的图像效果不佳,抗噪声能力差,因而应用范围受到极大限制。对于直方图双峰明显、谷底较深的图像,迭代法可以较快地获得满意结果;但是对于直方图双峰不明显或图像目标和背景比例差异悬殊,迭代法所选取的阈值不如OTSU法。几种常用的图像二值化算法各有优缺点,由于时间的问题本次设计没有逐一研究。
参考文献
[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] 王建卫.彩色图像的中值滤波算法的改进与应用[J].哈尔滨商业大学大学报:自然科学版.2006,22(4):67~69.
[5] 陈丹,张蜂,贺贵明.一种改进的文本图像二值化算法[J].计算机工程,2003,29(13):85~86.
[6] A Hashizume, P S Yeh, A Rosenfeld. A Method of Detecting the Orientation of Aligned Components[J]. Pattern Recognition Letters, 1986,4:125~132.
[7] L.O’Gorman. The Document Spectrum for Page Layout Analysis. IEEE Transactions. PAMI, Vol.15,No.11, 1993:pp.1162~1173.
[8] 郑咸义,张颖豪.一个改进的LBG算法[J].计算机辅助设计与图形学学报,1997,9(4):335~338.
[9] 张爱华,余胜生,周敬利 . 一种基于边缘检测的阈值分割[J]. 661~663 算法,小型微型计算机系统,2003,24(.4)
[10] 冯国进,顾国华,陈钱 . 基于形态学的红外图像边缘增强[J]. 453~454 激光与红外,2003,33(6)
[11] 章毓晋 , 图像理解与计算机视觉[J],北京: 清华大学出版社, 1999, 4
[12] 吕俊哲,图像二值化算法的研究与实现.科技情报与经济,2004,54~55
The Research on the Binary Image Algorithm and Its Realization
Abstract: 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 VC++ and its application in image processing briefly introduced; in addition, the method of grayscale image binarization and how to implement these algorithms based on VC++ are
展开阅读全文