当前位置:文档之家› 图像二值化算法研究与实现

图像二值化算法研究与实现

图像二值化算法研究与实现摘要:图像二值化是图像预处理中的一项重要技术,在模式识别、光学字符识别、医学成像等方面都有重要应用。

论文介绍了图像及数字图像处理技术的一些概念和相关知识;对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 图像二值化原理及意义图像二值化是指用灰度变换来研究灰度图像的一种常用方法,即设定某一阈值将灰度图像的像素分成大于阈值的像素群和小于阈值的像素群两部分。

例如输人灰度图像函数为),(y x f ,输出二值图像函数为),(y x g ,则⎩⎨⎧≥<=Thresholdy x f Thresholdy x f y x g ) ,( 255),( 0) , ( (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 该结构长度,为40biWidth 图像的宽度,单位是像素biHeight 图像的高度,单位是像素biplanes 位平面数,必须是1,不用考虑biBitCount指定颜色位数,1为二值,4为16色,8为256色,16,24、32为真彩色biCompression指定是否压缩,有效的值为BI_RGB,BI_RLE8,BI_RLE4,BI_BITFIELDStypedef 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),当然,这里是对那些需要调色板的位图文件而言的。

相关主题