为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于VB的图像预处理

2018-01-12 50页 doc 573KB 19阅读

用户头像

is_353097

暂无简介

举报
基于VB的图像预处理基于VB的图像预处理 哈尔滨理工大学学士学位论文 VB全称为Visual Basic,它是Windows环境下最受欢迎的程序设计工具之 一。利用计算机来进行图像处理,称为数字图像处理。数字图像处理是许多领 域最具有挑战性的研究课题之一,利用VB进行数字图像处理比其它语言进行 处理,具有简单易学、用法比较灵活、编程效率较高等特点。 本文介绍了VB程序设计的开发环境,数字图像处理的基本原理,同时也 分析了VB设计语言的设计特点。设计了一套基于VB的数字图像处理的程序,该程序包括了界面设计和程序设计两方面:界面设计方面包括菜单...
基于VB的图像预处理
基于VB的图像预处理 哈尔滨理工大学学士学位论文 VB全称为Visual Basic,它是Windows环境下最受欢迎的程序设计工具之 一。利用计算机来进行图像处理,称为数字图像处理。数字图像处理是许多领 域最具有挑战性的研究课题之一,利用VB进行数字图像处理比其它语言进行 处理,具有简单易学、用法比较灵活、编程效率较高等特点。 本文介绍了VB程序设计的开发环境,数字图像处理的基本原理,同时也 分析了VB设计语言的设计特点。设计了一套基于VB的数字图像处理的程序,该程序包括了界面设计和程序设计两方面:界面设计方面包括菜单栏、工 具栏、图片栏以及其它控件设计部分;程序设计方面包括图像的读取、灰度 化、直方图、二值化以及一些常用图像处理的算法程序。最后通过实例应用说 明了VB源程序的调用以及实现的数字图像处理效果。本设计在界面设计 上较为简单,软件程序易于接受,同时在进行设计过程中可以灵活多变,可以 改变部分程序实现其他的图像处理功能。此项设计满足大众的基本图像处理要 求,同时为那些对图像需要进行特殊处理的专业要求提供了方便的渠道。 VB;灰度化;直方图;二值化 - I - 哈尔滨理工大学学士学位论文 Image Pre-processing based on VB Abstract The full name of VB is Visual Basic, which is one of the most popular programming tools under the Window environment. Digital manage processing refers to the processing of images by using the computer. This technique is one of the most challenging researches in many technical area. It would be much easier, more flexible, and efficient to process images by using VB, than any other language. This paper introduced the environment of development of VB, and the basic principle of digital image processing. Meanwhile, it also analysis the design features of VB. It also designs a program based on VB digital image processing, including interface design and programming: The inter faces contains the menu bar, tool bar, image field, as well as other design of the control part. The design of the program includes reading images, gray, the histogram, binary as well as some algorithms programs of common image processing. At last, through the examples, it describes the methods of calling the VB source code, and the results achieved by digital image processing. This program is relatively simple on the interface design, and meanwhile can be flexible during the design progress, and also can change other procedure to fulfill other image processing function. This design can be used to meet publics’ basic requirement of image processing. It also provides convenient channel for those who need the special treatment to images. Keywords VB; Gray; Gradation; Binaryzation - II - 哈尔滨理工大学学士学位论文 摘要…… .......................................................................................................... I Abstract ............................................................................................................ II 第1章 绪论 ................................................................................................... 1 1.1 图像预处理的概述 ............................................................................... 1 1.1.1 图像预处理的目的......................................................................... 1 1.1.2 图像预处理的基本理论 ................................................................. 1 1.1.3 图像预处理的重要性 ..................................................................... 1 1.2 图像预处理在研究中的应用领域 ........................................................ 2 1.3 本课题研究内容介绍 ........................................................................... 3 第2章 图像的读取 ........................................................................................ 5 2.1 读取图像的界面设计 ........................................................................... 5 2.1.1 Visual Basic6.0的开发环境 ............................................................ 5 2.1.2 界面设计 ........................................................................................ 9 2.2 读取图像文件的程序设计 .................................................................. 10 2.2.1 数字图像文件格式....................................................................... 10 2.2.2 BMP文件格式 .............................................................................. 11 2.2.3 图像的读取 .................................................................................. 13 第3章 图像预处理 ...................................................................................... 16 3.1 彩色图像灰度化 ................................................................................. 16 3.1.1 彩色图像灰度化的方法 ............................................................... 16 3.1.2 灰度图像处理程序....................................................................... 17 3.2 灰度图像平滑处理 ............................................................................. 21 3.2.1 噪声的分类 .................................................................................. 21 3.2.2 模板操作和卷积运算 ................................................................... 22 3.2.3 中值滤波法去噪 .......................................................................... 22 3.3 直方图................................................................................................. 27 3.3.1 直方图的基本概念....................................................................... 27 3.3.2 直方图的性质 .............................................................................. 27 3.3.3 直方图的计算与简单绘制 ........................................................... 28 3.4 灰度图像二值化处理 ......................................................................... 29 结论 ............................................................................................................... 33 致谢 ............................................................................................................... 34 参考文献 ....................................................................................................... 35 附录A ........................................................................................................... 36 附录B ........................................................................................................... 44 - III - 哈尔滨理工大学学士学位论文 1 1.1 1.1.1 图像预处理是为数字图像处理做的初级处理阶段,为以后的图像处理服务 的。它的目的是通过对原始图像进行一系列的数学运算,最终得到一幅失真最 小、目标信号和背景信号完全分离的图像。如对图像进行灰度化处理,去除图 像中的噪声,二值化处理等,从而改善图像的质量,以达到或真实的、或清晰 的、或色彩丰富的、或意想不到的艺术效果。图像预处理的主要目的是消除图 像中无关的信息,恢复有用的真实信息,增强有关信息的可性和最大限度 [1]地简化数据,从而改进特征抽取、图像分割、匹配和识别的可靠性。 1.1.2 图像预处理主要是对采集的图像进行一系列处理,如去除采集时由于光照 不匀或传输等因素引入的噪声,其目的是改善图像的视觉效果,使图像更容易 分析,或将图像转变为一种更适合于人或机器识别的形式。 在研究图像时,首先要对获得的图像信息进行预处理以通过灰度化,过滤 干扰噪声,二值化处理等。有时由于信息微弱,无法辨认识别,还得进行增 强。增强的作用,在于提供一个满足一定要求的图像,或对图像进行变换,以 便人、机分析。并且为了从图像中找到需要识别的东西,还得对图像进行分 割,也就是定位和分离,以区分出不同的东西。为了给观察者以清晰的图像, 还要对图像进行改善,即进行复原处理。它是把已经退化了的图像加以重建或 恢复的过程,以改进图像的保真度。在实际处理中,由于图像信息量非常大, 在存储及传输时,还要对图像信息进行压缩。以上所述都属于图像预处理的范 畴。因此,图像预处理包括图像编码、图像增强、图像压缩、图像复原等内 容。对图像处理环节来说,输入是图像,输出有时是图像,也就是处理后的图 像。由图像处理的内容可见,处理的目的,主要在于解决两个问题:一是判断图 像中有无需要的信息;另外是确定这些信息是什么。对图像进行预处理的作用 [2]在于改善图像质量和进行图像识别。 1.1.3 在任何图像处理系统中,图像的预处理极为重要,其效果好坏会严重地影 响其它模块的工作。特别是先对图像进行的灰度化,然后进行的二值化效果的 好坏,对识别效果以及其后的一切处理都有相当大的影响。原因之一是,任何 物理传感输入都是需要灰度图像的。图像的二值化是数字图像预处理中重要的 基本问题。 - 1 - 哈尔滨理工大学学士学位论文 本文首先介绍通过VB软件进行图像预处理的设计界面和图片文件格式, 然后将重点放在灰度化,直方图,二值化处理问题上,是用直方图的直观方式 观察其最佳阈值化方法来实现二值化的。 1.2 随着计算机技术的飞速发展,图像处理技术己经应用于越来越多的行业, 它的优点在于能够快速、直观地反映二维的信息体。所谓图像处理,就是指利 用数字计算机及其他有关数字技术,对图像施加某种运算和处理,从而达到某 种预想的目的。其起源于20世纪20年代,经过大半个世纪的发展,目前已广泛地应用于科学研究、工农业生产、医疗保健、航空航天、军事等各个领域, 在国民经济中发挥着越来越大的作用。随着计算机技术的飞速发展,计算机运 算速度的大大提高,高速的CPU已经开始推广应用,这些都推动着数字图像处理技术的飞速发展。 在数字图像处理系统中,目前研究的重点是“图像预处理”部分。它在图 像处理研究中的应用是十分基础且重要的环节,并且应用的领域十分广泛,如 下面几项研究都是用到了图像预处理: 1.裂缝图像预处理是通过对裂缝图像光学特性的分析,给出了在裂缝图像 预处理中应采用的方法和所需注意的事项。 图像采集过程中,由于输入转换器件及周围环境的影响等,如光强度的波 动,传送带的轻微抖动,裂缝周围的污物等,常使获得的数字图像上含有各种 各样的噪声和失真,为了便于后续的图像分析和理解,必须对图像进行预处 理,矫正失真,消除噪声或将图像变换为易于后续处理的形式。 图像预处理是图像分析前的重要工作,其目的是为了提高图像的质量,内 容包括图像增强(灰度变换、对比度增强、平滑、锐化等)和图像恢复。图像恢复 的任务是使退化了的图像,去掉退化因素,以最大的保真度恢复成原来的图 像。它通过研究退化源,建立退化模型,然后施加相反的过程,恢复原始图 像。 图像增强是裂缝图像预处理的重要内容,从增强处理的作用域出发可分为 两大类:(1)空间域处理:直接面对图像灰度级作运算。(2)频率域处理:对图像的 变换系数进行修正,然后通过逆变换获得增强图像。本文所采用的增强算法均 是在空间域中对图像进行处理的,因此,下面先介绍空间域的一些常用的处理 方法,然后重点介绍一种新的增强处理算法,它对裂缝图像有较好的处理效果 [3]。 2. 在基于数字图像处理技术的自动报靶系统的研究中,需要应用到图像预 处理的。自动报靶系统的报靶精度能够达到目前比赛的要求,而且使用的是普 通靶纸,普通的摄像镜头,在价格上有很大优势。因而系统既能够应用于正规 的比赛场合,又可以应用于平时的射击训练,还可以用于娱乐场所。 对靶纸数字图像的处理分为两个阶段,图像预处理阶段和图像识别阶段。 其中,图像预处理阶段是极为重要的,如果这阶段处理不好,后面的工作根本- 2 - 哈尔滨理工大学学士学位论文 无法展开。在预处理过程中,重点做了图像灰度化。在实际应用中,我们的系 统获取的原始图像不是完美的,例如对于系统获取的原始图像,由于噪声、光 照等原因,图像的质量不高,所以需要进行预处理,以有利于提取我们感兴趣 的信息。 3. 在基于MATLAB神经网络的工业现场数字字符识别的课题研究中,也包 含十分重要的图像预处理过程。从现场采集到的图像包含了背景信息和噪声, 需要对之进行预处理才能够用来识别。预处理是本文研究问题中的一个关键阶 段, 它的处理结果的好坏直接影响到字符识别性能。本课题的预处理包括:图 像灰度化,去噪,二值化,定位,分割,归一化等。 (1)图像的灰度化:图像采集卡获取的数字图像是彩色图像(RGB 图)。在字 符识别的过程中,识别算法不需要关心图像的彩色信息。因此,需要将彩色图 像转化为灰度图像。 (2)去噪:图像由于光照、天气、成像设备等因素的影响使得图像会存在有 噪声、模糊等干扰,会使得图像质量下降。为了抑制噪声、改善图像质量需对 图像进行平滑或者去噪。在图像处理中一般使用滤波技术去除嗓声干扰,比较 常用的几种滤波器是邻域平均法、低通滤波、中值滤波等。本系统使用中值滤 波进行去噪。 (3)二值化:经过以上两个步骤处理后的图像中还包含有背景信息。因此, 我们还得进一步处理,将背景噪声屏蔽掉,突显出字符轮廓信息。二值化处理 就能够将其中的字符显现出来,并将背景去除掉。 (4)连通域去噪:二值化后的图像中往往含有背景图像二值化后的噪声,这 样就对后面的定位处理带了不便。此时, 需要将二值化后的图像进行再次去噪。由于这时的图像为二值图,在去噪的方法上可以采用连通域去噪, 即计算 出每个连通区域像素个数,当它少于某个设定的阈值时,则认定它为噪声,然 后,再将它去除掉。经过这样的处理,使得图像的处理效果更好。 (5)定位、分割和归一化:经过以上处理后,图像中就只剩下字符信息了。 由于图片中的字符可能是单个的字符,也有可能是粘连的字符串,这就需要定 位算法能够判定这两种情况并采用不同的定位算法将字符进行定位。 1.3 我们得到的数字图像包含了背景信息和噪声,需要对之进行预处理才能够 用来识别。预处理是本课题研究问题中的一个重点问题,它的处理结果的好坏 直接影响到数字图像处理性能。图像的预处理包括:图像的灰度化,去噪,二 值化等。 1.图像的灰度化 获取的数字图像是彩色图像(BMP位图)。本论文在后面的数字图像处理的过程中,识别算法不需要关心图像的彩色信息。因此,需要将彩色图像转化为 灰度图像。 2.去噪 - 3 - 哈尔滨理工大学学士学位论文 图像由于光照、天气、成像设备等因素的影响使得图像会存在有噪声、模 糊等干扰,会使得图像质量下降。为了抑制噪声、改善图像质量需对图像进行 平滑或者去噪。在图像处理中一般使用滤波技术去除嗓声干扰,比较常用的几 种滤波器是邻域平均法、低通滤波、中值滤波等。本课题使用中值滤波进行去 噪。 3.二值化 经过图像的灰度和去噪处理后的图像中还包含有背景信息。因此,我们还 得进一步处理,将背景噪声屏蔽掉,突显出字符轮廓信息。二值化处理就能够 将其中的字符显现出来,并将背景去除掉。本课题采用了通过直方图的直观特 性来确定阈值的方法。 - 4 - 哈尔滨理工大学学士学位论文 2 2.1 2.1.1 Visual Basic6.0 主窗口又称设计窗口。启动Visual Basic6.0后,主窗口位于集成开发环境的顶部,该窗口由标题栏、菜单栏和工具栏组成。 1.标题栏和菜单栏 标题栏是屏幕顶部的水平条,他显示的是应用程序的名字。启动Visual Basic6.0后,标题栏中显示的信息是“工程1-Microsoft Visual Basic[设计]”,[设 计]表明当前的工作状态是“设计阶段”。 菜单栏位于标题栏的下面,菜单栏中的菜单命令提供了开发、调试、保存 应用程序所需要的工具。菜单中包含了所有的Visual Basic提供的功能的选项,而其中一些常用的功能或操作选项则被提取出来放在了“便捷工具按钮”中。 如下图2-1: 图2-1 标题栏示意图 2.工具栏 工具栏位于菜单栏的下面,它以图标的形式提供了部分常用菜单命令的功 能,通过鼠标点击这些快捷按钮可以加快程序开发的速度。Visual Basic 6.0提 供了4种工具栏,包括编辑、、窗体编辑器和调试,并可根据需要定义用 户自己的工具栏。下图2-2标出了常见的工具按钮的作用: 图2-2 工具栏示意图 3.窗体设计器 窗体设计器窗口简称窗体(Form),是应用程序最终面向用户的窗口。他对 应于应用程序的运行结果,各种图形、图像、数据等都是通过窗体或窗体中的 控件显示出来的。当打开一个新的工程文件时,Visual Basic建立一个空的窗体,并命名为FormX(X=1,2,3...)。 在Visual Basic中,窗体(Form)就是一个自定义的窗口,在这个窗口上创建 程序的用户界面。在运行程序时,窗体就是你看到的、正在运行的那个窗口。 - 5 - 哈尔滨理工大学学士学位论文 窗体中可以包括菜单按钮、列表框、滚动条以及其它一些界面元素,在典型的 Windows程序中你会看到这些元素。 启动了Visual Basic开发环境后,一个名称Form1的窗体作为缺省窗体显示在屏幕上。这个窗体上有标准的网格线(由小点组成),它用于对齐程序用户界面中的元素。使用鼠标可以调整窗体的大小;窗体既可以只占屏幕的一部分, 也可以占据整个屏幕空间。通过在“Project(工程)”菜单中单击“Add Form(添 加窗体)”菜单项,可以增加新的窗体。 注:每个窗体都是用户界面中的一个窗口。如果窗体的一部分被编程工具 覆盖,你既可以关闭编程工具,也可以把编程工具所占空间缩小,还可以单击 窗体的标题条并拖曳窗体,直到窗体的隐藏部分呈现在你面前为止。在开发环 境的屏幕上移动窗体并不影响程序运行时的窗体位置。这类运行时的特性由窗 体布局窗口控制。要设置新窗体的起始位置,只需要在窗体布局窗口中拖曳小 [4]的预览窗体到所需位置即可。 4.工程管理器 用来管理开发一个VB程序所需要的各种类型的窗体和模块,含有建立一 个应用程序所需要的文件的清单。在工程管理窗口中还有【查看代码】【查看对 象】和【切换文件夹】三个按钮。当我们点击【添加窗体】便捷工具按钮后, 左图的“VB工程管理器”中就会显示出新添加的窗体,这也就是“VB工程管 理器”的功能,它使我们从总体上把握程序开发的各个部分。 如下图是一个工程所包含的东西,窗体是一个程序表现在外面的界面、模 块是程序内部使用的代码。1.查看代码,单击【查看代码】按钮,则响应文件 的代码将在代码窗口中显示出来。2. 查看对象,单击【查看对象】按钮, Visual Basic 将显示相应的窗体。3.切换文件夹,单击【切换文件夹】按钮,则可显示各类文件所在的文件夹。如下图2-3: 图2-3 工程管理器示意图 5.属性窗口 在属性(Properties)窗口中你可以改变窗体上用户界面元素的特性,或称作属 - 6 - 哈尔滨理工大学学士学位论文 性。属性是用户界面中对象性质的描述。 在创建用户界面时,可以使用“Properties(属性)”窗口修改属性值;也可以通过在“Code(代码)”窗口中编写代码,在程序运行时修改一个或多个属性值。 “Properties(属性)”窗口中包含了一个对象下拉列表框,这个列表框列出了窗体 上的所有用户界面元素(对象)。“Properties(属性)”窗口中还列出了每个对象所有可以修改的属性(你可以单击两个标签之一,按字母顺序或按分类方式查看属 性)。现在你可以练习一下改变StepUp程序中“End”按钮“组件属性窗口”:用来显示组件的属性,并允许我们修改,设定这些属性的值,我们在窗体设计 区域的窗体上选中一个组件,以按钮为例,则在“属性窗口”中会列出它的属 性,我们可以看到常用的“Name”、“Capition”、“Font”等等属性,试着把“Capition”属性改为“是一个按钮”,然后看看“窗体设计区域”的按钮上显 [5]示的文字是不是改变了。如下图2-4: 图2-4 属性窗口示意图 6.窗体布局窗口 调整程序运行时,程序窗体在屏幕中的初始位置,把鼠标移到左图屏幕中 的窗体上,这时鼠标会变成移动形状,拖动窗体,就设置好了运行时此窗体的 位置。 7.工具箱 工具箱实际上是一个窗口,称为工具箱窗口,可以通过单击其右上角的 “X”关闭,如果想打开工具箱,则可以执行【视图】菜单中的【工具箱】命令 或单击标准工具栏中的【工具箱】按钮。如下图2-4: 通过运用工具箱中的工具(或称作控件)来向窗体上添加用户界面元素。想打开工具箱时,单击工具条上的ToolBox(工具箱)按钮。典型情况下,工具箱放置在屏幕的左部。工具箱中包含了可以添加到用户界面中的各种控件:图片、标 签、按钮、列表框、滚动条、菜单以及几何图形等。添加到窗体上的每个控件 都变成了应用程序中的对象,或称作可编程用户界面元素。在程序运行时用户 就会看到这些界面元素,并能够像其它Windows应用程序中的标准对象那样进 - 7 - 哈尔滨理工大学学士学位论文 行操作。注 你可以把工具箱移动到其它位置,方法是单击工具箱的标题,然后 拖曳工具箱。工具箱还包含了一些特殊控件,利用它们可以在Visual Basic程序中创建执行特殊“后台”操作的对象。这些功能强大的对象完成非常有用的功 能,但程序运行时用户并不能在界面中看到它们。这些对象包括:操作数据库 信息的对象、协同Windows应用程序工作的对象、跟踪程序运行时间的对象 等。通过把鼠标指针放置在工具箱中控件上并稍微停留,系统就会显示相应控 [6]件的名称。 图2-5 工具箱示意图 8.程序代码窗口 代码程序窗口是专门用来进行程序设计的窗口,显示和编辑程序代码,如 下图所示。用户可以打开多个代码窗口,查看不同窗体、标准模块中的代码, 并可在各个窗口间复制代码。打开代码窗口有以下三种方法: 1.从工程窗口中选择一个窗体或标准模块,并选择【查看代码】按钮; 2.从窗体窗口中打开代码窗口,双击一个控件或窗体本身; 3.从【视图】菜单中选择【代码窗口】命令。 代码窗口只要包括: 1.【对象列表】显示所选对象的名称。可以单击邮编的下拉按钮,来显示 此窗体中的对象名。其中【通用】表示与特定对象无关的通用代码,一般在此 声明模块级变量或用户编写自定义过程。 2.【过程列表框】列出所有对应于【对象列表框】对象的事件过程名称(还 可以显示用户自定义过程名)。在【对象列表框】中选择对象名,在【过程列表 框】中选择时间过程名,即可以构成选中对象的事件过程模板。用户可在该模 - 8 - 哈尔滨理工大学学士学位论文 板内输入代码。其中【声明】表示声明模板级变量。 3.【代码】输入程序代码。 4.【过程查看按钮】只能显示所选的一个过程。 5.【全模板查看按钮】显示木块中全部过程。 2.1.2 根据需要在窗体上配置必要的控件: 第一步,启动Visual Basic6.0,选择【标准EXE】创建新工程。 第二步,通过工具箱,在Form1中创建一个【PictureBox】控件,创建四个CommandButton控件,分别是【Command1】、【Command2】、【Command3】、【Command4】,并且在【菜单栏】点击【工程】选择【部件】,添加一个 【CommonDialog】控件,将其添加到Form1中。 第三步,分别将【Command1】、【Command2】、【Command3】、【Command4】四个命令按钮通过属性窗口的【Caption】改成【选取文件】、【读图像】、【显示】、【退出】。 第四步,在【属性窗口】中选择【PictureBox1】,然后将其【ScaleMode】 [7]改成【Pixel】。 读取BMP图像文件窗体格式的界面设计图像如下图2-6: 图2-6 界面设计示意图 图片框(PictureBox控件)用于显示图像,命令按扭Command1【选择文件】用于选择指定图像文件,命令按扭Command2【读图像】用于读入图像数据并 存入数组,命令按钮Command3【显示】将图像显示在图片框中,命令按扭 [8]Command4【退出】用于退出该窗体。 - 9 - 哈尔滨理工大学学士学位论文 2.2 2.2.1 数字图像(以下简称图像)有多种存储格式,每种格式一般由不同的开发商支 持。随着信息技术的发展和图像应用领域的不断拓宽,还会出现新的图像格 式。因此,要进行图像处理,必须了解图像文件的格式,即图像文件的数据构 成。每一种图像文件均有一个文件头,在文件头之后才是图像数据。文件头的 内容制作该图像文件的公司决定,一般包括文件类型、文件制作者、制作时 间、版本号、文件大小等内容。各种图像文件的制作还涉及到图像文件的压缩 方式和存储效率等等。 2.2.1.1 一幅图像由许多像素点表示,每个像素具有颜色属性和位置属性。根据图 像像素的颜色分类,可将图像分为如下四种类型: 1.单色图像 每个像素点只有黑白两种灰度值,因此一个像素仅占1bit,0表示黑,1表 示白,或相反。常把单色图像称为1位图像,或二值图像。在图像处理过程 中,常把图像转为二值图像后进行各种分析。 2.灰度图像 每个像素点有256级灰度值,因此一个像素占8 bit,其值范围从0到255, 表示256种不同的灰度值。 3.索引图像 在这种模式下,颜色表都是预先定义的,并且可供选用的一组颜色也很有 限,索引颜色的图像最多只能显示256种颜色。 因此一个像素占8 bit,但这8 bit的值不是颜色值,而是颜色表中的索引值,根据索引值在颜色表中找到最终 的RGB颜色值。 4.真彩色图像 在真彩色图像中,每一个像素由红、绿和蓝三个字节组成, 每个字节为8 bit,表示0到255之间的不同的亮度值,这三个字节组合可以产生1670万种不 同的颜色。本教材重点介绍BMP真彩色图像的处理技术。 2.2.1.2 一般的图像文件结构都包含有文件头和文件体两部分。 文件头的主要内容包括产生或编辑该图像文件的软件的信息以及图像本身 的参数。这些参数必须完整地描述图像数据的所有特征,因此是图像文件中的 关键数据。当然,根据不同的文件,有的参数是可选的,如压缩算法,有的文 件无压缩,有的文件可选择多种方法压缩。 文件体主要包括图像数据以及颜色变换查找表或调色板数据。这部分是文 件的主体,对文件容量的大小起决定作用。如果是真彩色图像,则无颜色变 换。 - 10 - 哈尔滨理工大学学士学位论文 查找表或调色板数据,对于256色的调色板,每种颜色值用24 bit表示,则调色板的数据长度为256×3(Byte)。 目前还没有非常统一的图像文件格式。但大多数图像处理软件都与数种图 像文件格式相兼容,也即可读取多种不同格式的图像文件。这样,不同的图像 格式间可相互转换。当然,还有专门的图像格式转换软件,用于各种图像格式 间的转换。 2.2.2 BMP bmp文件可用每像素1、4、8、16或24位来编码颜色信息,这个位数称作 图像的颜色深度,它决定了图像所含的最大颜色数。一幅1-bpp(位每像素,bitperpixel)的图像只能有两种颜色。而一幅24-bpp的图像可以有超过16兆多种不同的颜色。 bmp文件的位图数据格式依赖于编码每个像素颜色所用的位数。对于一个 256色的图像来说,每个像素占用文件中位图数据部分的一个字节。像素的值 不是rgb颜色值,而是文件中色表的一个索引。所以在色表中如果第一个r/g/b值是255/0/0,那么像素值为0表示它是鲜红色,像素值按从左到右的顺序存 储,通常从最后一行开始。所以在一个256色的文件中,位图数据中第一个字 节就是图像左下角的像素的颜色索引,第二个就是它右边的那个像素的颜色索 引。如果位图数据中每行的字节数是奇数,就要在每行都加一个附加的字节来 调整位图数据边界为16位的整数倍。 并不是所有的bmp文件结构都像表中所列的那样,例如16和24-bpp,文件就没有色表,像素值直接表示rgb值,另外文件私有部分的内部存储格式也 是可以变化的。例如,在16和256色.bmp文件中的位图数据采用rle算法来压缩,这种算法用颜色加像素个数来取代一串颜色相同的序列,而且,windows还支持os/2下的.bmp文件,尽管它使用了不同的位图信息头和色表格式。 位图文件(Bitmap-File,BMP)格式是Windows采用的图像文件存储格式, 在Windows环境下运行的所有图像处理软件都支持这种格式。Windows 3.0以前的BMP位图文件格式与显示设备有关,因此把它称为设备相关位图(device-dependent bitmap,DDB)文件格式。Windows 3.0以后的BMP位图文件格式与显示设备无关,因此把这种BMP位图文件格式称为设备无关位图(device-independent bitmap,DIB)格式,目的是为了让Windows能够在任何类型的显示 设备上显示BMP位图文件。BMP位图文件默认的文件扩展名是BMP或者bmp。 位图文件可看成由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、颜色表(color table)和位图数据。 1.位图文件头 文件头的信息主要包括与位图文件相关的信息,如文件类型、文件大小 等,该部分信息共占14个字节。具体结构如表2-1: - 11 - 哈尔滨理工大学学士学位论文 表2-1 位图文件头结构 起始字节 所占节数 具体内容 标识 bfType 1 2 文件类型(windows位图为“BMP”) bfSize 3 4 文件大小 bfReserved 7 4 保留 bfOffBits 第一个位图数据的开始字节位置 11 4 2.位图信息头 位图信息头的主要内容为与图像相关的信息,如位图的高度与宽度,位图的大 小等,该部分信息共占40个字节。具体结构如表2-2: 表2-2 位图信息头结构 起始字节 所占节数 具体内容 标识 biSize 位图信息头的长度(一般为40) 15 4 biWidth 位图的宽度 19 4 biHeight 位图的高度 23 4 biPlanes 位图的位面数(=1) 27 2 biBitCount 每个像素所占位数(1,4,8,24等) 29 2 biCompression 位图压缩类型 ( 0或BI_RGB——未压缩, 1或BI_RLE8——RLE8压缩 31 4 2或BI_RLE4——RLE4压缩 3 或BI_BITFIELDS) biSizeImage 35 4 图像的大小(以字节为单位,必须是4的倍 数) biXPelsPerMeter 39 4 位图水平分辩率(像素/米) biYPelsPerMeter 43 4 位图垂直分辩率(像素/米) biClrUsed 47 4 位图实际使用的颜色数(=0使用所有颜色) biClrImportant 51 4 指定重要的颜色数(=0 都重要) 3.颜色表 该部分含有多个表项,每个表项的占4个字节。对于24位真彩图像是没有这部分内容。具体结构如表2-3: 表2-3 颜色表中的第1个表项的结构 起始字节 所占节数 具体内容 标识 rgbBlue 蓝色的亮度值 56 1 rgbGreen 绿色的亮度值 57 1 rgbRed 红色的亮度值 58 1 rgbReserved 保留 59 1 - 12 - 哈尔滨理工大学学士学位论文 4.位图数据 该部分的大小取决于压缩方法,它包含所有的位图数据,这些数据的值取决于 biBitCount的值。具体结构如图表2-4: 表2-4 位图数据结构 biBitCount 颜色表项数 说明 像素值为0时,使用第一项颜色,为1时使用第二项颜色。 1 1 若点阵位图数据中某个字节为OX1F,则该字节代表2个像4 16 素。第一个像素用第2项颜色,第二个像素用第16项。 点阵位图中每一个字节表示一个像素。 8 256 无颜色表。位图数据中三个字节表示一个像素的红、绿、24 0 蓝值。 biBitCount=1 表示位图最多有两种颜色,黑色和白色。图像数据中的 每一位(0或1)表示一个像素(黑色或白色)。 biBitCount=4 表示位图最多有16种颜色。每个像素用4位表示,并用这4位作为颜色表的表项来查找该像素的颜色。例如,如果位图中的第 一个字节的十六进制数为1F,它表示两个像素,第一像素的颜色就在颜色 表的第2表项中查找,第二个像素的颜色在颜色表的第16表项中查找。 biBitCount=8 表示位图最多有256种颜色。每个像素用8位表示,并用这8位作为颜色表的表项来查找该像素的颜色。例如,如果位图中的第 一个字节的十六进制数为1F,这个像素的颜色就在颜色表的第32表项中查找。 biBitCount=24 表示位图最多有224=16777216种颜色。颜色表为空。每3个字节代表一个像素,每个字节分别表示R、G、B三分量的值。 位图数据的存放顺序是从图像中的最后一行到第一行,每一行的顺序 是从左到右。值得一提的是,每一行像素所占的字节数必须是4的整倍数,如果实际像素所占字节数不足4的倍数,则需要补齐,下一行像素值 [9]也是从4的倍数字节处后开始存放。 2.2.3 基于VB 的图像处理基本方法是首先获得一个像素点的颜色值,然后根据颜色分解算法分解出图像中像素的红、绿、蓝3 色值,其后再分别对每 一种颜色值根据不同的算法进行相应运算,处理后的颜色值赋给当前像素 [10]点,最后在指定的位置画出该像素点。 在VB 软件环境中提供一个Pset ( ) #函数#,可在指定的位置画一个指 定颜色的点,格式为object.PSet (i ,j),RGB ( red,green ,blue)。 VB 显示一幅图片的方法有多种,可利用图片框控件PictureBox来显示一幅图像,VB 的PictureBox控件具有很强的识别图像功能,几乎可以显示所有的图形文件,如:.MP,.JPG,.GIF,.PCX,.ICO 等,也可以利用这种方式。 - 13 - 哈尔滨理工大学学士学位论文 实现从其他图形格式向BMP 格式的转化。方法1:选择PictureBox 控件属性中Picture属性为磁盘上某一路径图形文件,运行时图像即可在图 片框内显示。方法2:使用LoadPicture的方法将图像文件在对象内打开, 如在Picture1中打开一幅文件名为Girl.BMP 的文件时,语句写为Picture1. Picture = LoadPicture (“Girl . BMP”)。此方法可以采用一种按钮控件(或菜单) 和CommonDialog控件配合使用的对话框方式打开图像操作灵活方 便。 可以从任意路径下读取图像文件. 单击按钮(或菜单) 的过程如下: Private Sub Open_Click () On Error Go To Err_Handle CommonDialog1. Show Open Picture1. Picture = LoadPicture (CommonDialog1. FileName) Err_Handle : End Sub 运行此程序即可以在图片框内显示任意路径下的图片文件。 由于位图以像素为基本单位,这就要求首先能够正确的从BMP文件中读出每一个像素,然后才能采用特定的算法对图像数据进行直接处理, 以满足图像与处理的具体要求。在BMP文件中,像素的读取操作与像素 的存储格式密切相关。由于在每像素1位和4位的位图数据文件中,每个 像素只占一个字节的一部分,因此需要正确找出数据代码的移位数和掩 码。读取2色、16色、256色或真彩色图像数据时,只要改变相应掩码和 左移位数就可以。 对于Visual Basic6.0读取BMP位图文件时,读取图像数据的命令按钮 响应的是单击事件程序。在程序代码窗口输入读取图像的程序如下: '以二进制的方式打开文件对话框中用户选择的BMP图像文件 Open CDlg1.FileName For Binary As #1 Get #1, 1, b1 Get #1, 2, b2 If b1 = 66 And b2 = 77 Then '确定图像是否为BMP图像 Get #1, 29, bc If bc = 24 Then '确定图像是否为24位真彩图 Get #1, 19, w '获取图像的宽度 Get #1, 23, h '获取图像的高度 Seek #1, 55 '将文件定位在第一个像素的颜色数据位置上 For j = h - 1 To 0 Step -1 For i = 0 To w - 1 For k = 2 To 0 Step -1 Get #1, , pic(i, j, k) '获取像素的每个颜色分量值 Next k Next i If (w * 3) Mod 4<>0 Then - 14 - 哈尔滨理工大学学士学位论文 For k = 1 To 4 - ((w * 3) Mod 4) Get #1, , pix '跳过无效的数据 Next k End If Next j - 15 - 哈尔滨理工大学学士学位论文 3 3.1 在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图 像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这 个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰 度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两 种颜色;灰度图像在黑色与白色之间还有许多级的颜色深度。但是,在数 字图像领域之外,“黑白图像”也表示“灰度图像”,例如灰度的照片通常 叫做“黑白照片”。在一些关于数字图像的文章中单色图像等同于灰度图 像,在另外一些文章中又等同于黑白图像。灰度图像经常是在单个电磁波 [11]频谱如可见光内测量每个像素的亮度得到的。 用于显示的灰度图像通常用每个采样像素8位的非线性尺度来保存,这样可以有 256 级灰度。这种精度刚刚能够避免可见的条带失真,并且 非常易于编程。在医学图像与遥感图像这些技术应用中经常采用更多的级 数以充分利用每个采样10或12位的传感器精度,并且避免计算时的近似 误差。在这样的应用领域每个采样16位即 65536级得到流行。 在计算机图形学与图像处理中,数字图像的灰度是进行图像识别与处 理的基础。我们往往需要先读取数字图像的灰度,然后对其进行分析与处 理,如生成灰度直方图、灰度修正、提取图像特征、图像锐化等。 彩色图像包含大量的颜色信息,不仅存储量大而且处理速度也受影 响。在图像处理的许多方面,并不要求使用图像的三个不同颜色分量,因 此常将彩色图像转化为灰度图像(常称彩色图像灰度化),以便加快处理速 [12]度及效率。 3.1.1 在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值 (又称强度值、亮度值),灰度范围为0-255。一般有以下四种方法对彩色图像进行灰度化: 1.分量法 将彩色图像中的三分量的亮度作为三个灰度图像的灰度值,可根据应 用需要选取一种灰度图像。 f1(i,j),R(i,j) f2(i,j),G(i,j) f3(i,j),B(i,j) - 16 - 哈尔滨理工大学学士学位论文 其中为转换后的灰度图像在处的灰度值。 fk(i,j),(k,1,2,3)(i,j) 2.最大值法 将彩色图像中的三分量亮度的最大值作为灰度图的灰度值。 f(i,j),max(R(i,j),G(i,j),B(i,j)) 3.平均值法 将彩色图像中的三分量亮度求平均值得到一个灰度图。 f(i,j),(R(i,j),G(i,j),B(i,j))/3 4.加权平均法 根据重要性及其它指标,将三个分量以不同的权值进行加权平均。由 于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对RGB三分量 进行加权平均能得到较合理的灰度图像。 f(i,j),0.11R(i,j),0.59G(i,j),0.3B(i,j) 3.1.2 数字图像在计算机上以位图(bitmap)的形式存在,位图是一个矩形点阵,其中每一点称为像素(pixel),像素是数字图像中的基本单位。一幅 m×n大小的图像,是由m×n个明暗度不等的像素组成的。数字图像中各个 像素所具有的明暗程度由灰度值(gray level)所标识。一般将白色的灰度值定义为255,黑色灰度值定义为0,而由黑到白之间的明暗度均匀地划分为 256个等级。对于黑白图像,每个像素用一个字节数据来表示,而在彩色 图像中,每个像素需用三个字节数据来表述。彩色图像可以分解成红(R)、 绿(G)、蓝(B)三个单色图像,任何一种颜色都可以由这三种颜色混合构 成。在图像处理中,彩色图像的处理通常是通过对其三个单色图像分别处 [13]理而得到的。 在Visual Basic6.0中建立程序的界面,如第二章介绍的界面设计方 法,设计界面如下图3-1: 界面中各命令按钮和其相对应的操作方式与执行作用分别对应结果如 下: 【Command1】对应【打开文件】按钮,点击【打开文件】按钮,选择需要 图像文件,打开相应的图像文件; 【Command2】对应【读取图像】按钮,点击【读取图像】按钮,程序执行 读取,载入图像文件; 【Command3】对应【灰度】按钮,点击【灰度】按钮,对图像进行灰度操 作; 【Command4】对应【清屏】按钮,点击【清屏】按钮,退出运行程序,清 除图片。 通过分量法对图像进行三种分量的灰度处理。 - 17 - 哈尔滨理工大学学士学位论文 图3-1 灰度化界面设计示意图 在程序代码中输入程序如下: Dim pic(0 To 5000, 0 To 5000, 4) As Byte Dim pix As Byte Dim h As Integer Dim w As Integer Private Sub Command1_Click() CommonDialog1.DialogTitle = ―打开文件‖ CommonDialog1.Filter = ―pictures(*.bmp)|*.bmp‖ CommonDialog1.ShowOpen End Sub Private Sub Command2_Click() Open CommonDialog1.FileName For Binary As #1 Get #1, 19, w Get #1, 23, h Seek #1, 55 For j = h – 1 To 0 Step -1 For i = 0 To w – 1 For k = 2 To 0 Step -1 Get #1, pic(i, j, k) Next k Next i If (w * 3) Mod 4 <> 0 Then - 18 - 哈尔滨理工大学学士学位论文 For k = 1 To 4 – ((w * 3) Mod 4) Get #1 , pix Next k End If Next j Close #1 For j = 0 To h – 1 For I = 0 To w – 1 Picture1.Pset (i, j), RGB(pic(i, j, 0), pic(i, j, 1), pic(i, j, 2)) Next i Next j End Sub Private Sub Command3_Click() For j = 0 To h – 1 For I = 0 To w – 1 Picture2.Pset (I, j), RGB(pic(i, j, 0), pic(i, j, 0), pic(i, j, 0)) Next i Next j End Sub Private Sub Command4_Click() Picture1.Picture = LoadPicture(―‖) Picture2.Picture = LoadPicture(―‖) End Sub 点击命令按钮【灰度】进行操作,实现灰度处理,效果图如下图3-2: 图3-2 灰度处理R分量效果图 - 19 - 哈尔滨理工大学学士学位论文 彩色图像根据三个分量的不同,显示的灰度效果图是不一样的,改变主程 序的分量,得出另外两种效果图,另外两个主程序代码如下: 其一: Private Sub Command3_Click() For j = 0 To h - 1 For i = 0 To w - 1 Picture2.PSet (i, j), RGB(pic(i, j, 1), pic(i, j, 1), pic(i, j, 1)) Next i Next j End Sub 效果图3-3: 图3-3 灰度处理G分量示意图 其二: Private Sub Command3_Click() For j = 0 To h - 1 For i = 0 To w - 1 Picture2.PSet (i, j), RGB(pic(i, j, 2), pic(i, j, 2), pic(i, j, 2)) Next i Next j End Sub 效果图3-4: 图3-4 灰度处理B分量示意图 - 20 - 哈尔滨理工大学学士学位论文 3.2 图像的平滑处理主要是为了去除图像中称为噪声的干扰信息。噪声可以理 解为“妨碍人们感觉器官对所接受的信源信息理解的因素”。噪声在理论上可以 定义为“不可预测,只能用概率统计方法来认识的随机误差”。描述噪声的方法 可以借用随机过程及其概率分布函数的概率密度函数。但这种描述方法很复 杂,甚至不可能完成,而且实际应用往往也不必要。通常数字特征,即均值方 [14]差、相关函数等对噪声进行处理。 3.2.1 1.图像噪声按其产生的原因可以分为: 外部噪声,即指系统外部干扰以电磁波或经电源串进系统内部而引起 的噪声。如电气设备,天体放电现象等引起的噪声。 内部噪声:一般又可分为以下四种: (1)由光和电的基本性质所引起的噪声。如电流的产生是由电子或空穴 粒子的集合所形成。因这些粒子运动的随机性而形成的散粒噪声;导体中 自由电子运动所形成的热噪声;根据光的粒子性,图像是由光量子所传 输,而光量子密度随时间和空间变化所形成的光量子噪声等。 (2)电器的机械运动产生的噪声。如各种接头因抖动引起电流变化所产 生的噪声;磁头、磁带等抖动一起的抖动等。 (3)器材材料本身引起的噪声。如正片和负片的表面颗粒性和磁带磁盘 表面缺陷所产生的噪声。随着材料科学的发展,这些噪声有望不断减少, 但在目前来讲,还是不可避免的。 (4)系统内部设备电路所引起的噪声。如电源引入的交流声;偏转系统 和箝位电路所引起的噪声等。 2.图像噪声从统计理论观点可以分为平稳和非平稳噪声两种。在实际 应用中,不去追究严格的数学定义,这两种噪声可以理解为:其统计特性 不随时间变化的噪声称其为平稳噪声。其统计特性随时间变化而变化的称 其为非平稳噪声。 3.还可以按噪声幅度分布形状来定义,如其幅度分布是按高斯分布的 就称其为高斯噪声,而按雷利分布的就称其为雷利噪声。 4.当然也有按噪声频谱形状来命名的。如频谱均匀分布的噪声称为白 噪声;频谱与频率成反比的称为噪声;而与频率平方成正比的称为三角噪 声等等。 5.另外,按噪声和信号之间关系可分为加性噪声和乘性噪声:假定信 s(t)n(t)s(t),n(t)号为,噪声为,如果混合迭加波形是形式,则称此类噪声 s(t)[1,n(t)]为加性噪声;如果迭加波形为形式,则称其为乘性噪声。前者如放大器噪声等。每一个像素的噪声不管输入信号大小,噪声总是分别加 到信号上。后者如光量子噪声,胶片颗粒噪声等。由于载送每一个像素信 - 21 - 哈尔滨理工大学学士学位论文 息的载体的变化而产生的噪声受信息本身调制。在某些情况下,如信号变 化很小,噪声也不大。为了分析处理方便,常常将乘性噪声近似认为是加 [12]性噪声,而且总是假定信号和噪声是互相统计独立。 6.此外根据经常影响图像质量的噪声源又可分成三类。首先,是记录 在感光片上的图像会受到感光颗粒噪声的影响;其次,图像从光学到电子 形式的转换是一个统计过程(因为每个图像元素接收到的光子数目是有限 的)。 3.2.2 模板操作是数字图像处理中常用的一种运算方式,图像的平滑、锐化等效 果都要用到模板操作。例如,有一种常见的平滑算法是源图中的一个像素的灰 度值和它周围临近的8个像素的灰度值相加,然后将球得的平均值作为新图像 中该像素的灰度值。可用如下方法来显示该操作: 111,,1,, 11*1,,9,,111,, 上式有点类似矩阵,通常称之为模板,带星号的数据表示该元素为中心元 [15]素,即这个元素是将要处理的元素。 模板操作实现了一种领域运算,可用卷积来完成各种处理变换,卷积运算中的 卷积核就是模板运算中的模板,卷积就是作加权系数求和的过程。领域中的每 个像素(假定领域为3*3大小,卷积核大小与领域相同),分别是卷积核中的每一个元素相乘,乘积求和所得到结果即为中心像素的新值。卷积核中的元素称作 加权系数(亦称为卷积系数),卷积核中的系数大小及排列顺序,决定了对图像进 行区处理的类型。改变卷积核中的加权系数,会影响到总和的数值与符号,从 而影响到所求像素的新值。 3.2.3 所谓中值滤波,是指把以某点(x,y)为中心的小窗口内的所有像素的灰度按从大到小的顺序排列,将中间值作为(x,y)处的灰度值(若窗口中有偶数个像素,则取两个中间值的平均)。它的目的是保护图像边缘的同时去除噪声。 如图3-5中,当小窗口(3×3)在左上角时,窗口内的像素灰度按从小到大的 顺序排列后为:1、1、2、3、3、4、6、6、6中值为3,当小窗口在图像中移动时,按类似方法计算,得出处理后的图像如图3-6: 从图3-7中可以看出,中值滤波法处理结果平滑效果不如邻域平均法,但 它能去除噪声点并保持图像边界,如图3-8所示。 在Visual Basic6.0中建立程序的界面,如第二章介绍的界面设计方法,设 计界面如下图3-9: - 22 - 哈尔滨理工大学学士学位论文 1*1 1*2 1*3 4 5 1*6 1*4 1*3 2 2 1*1 1*6 1*6 4 6 4 4 5 6 6 1 4 6 2 2 图3-5 源图像 3 4 4 4 4 56 4 6 6 图3-6 中值滤波处理后结果 1 1 7 7 7 1 1 7 7 7 1 1 7 0 7 7 5 7 7 7 1 1 7 7 7 图3-7 源图像 1 7 7 1 7 7 1 7 7 图3-8 中值滤波处理后图像 - 23 - 哈尔滨理工大学学士学位论文 图3-9 去噪处理界面设计示意图 界面中的三个显示图片的控件,分别显示彩色的噪声图像,灰度化图像, 去噪后图像,即中值滤波法的整个程序设计代码如下: Option Explicit Dim pic() As Byte '存放原始颜色数据 Dim pix As Byte Dim a() As Integer Dim Size As Long Dim h As Integer Dim w As Integer Dim f() As Integer '存放灰度图数据 Dim g() As Integer '存放去噪后数据 Private Declare Function SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long Private Sub Command1_Click() CommonDialog1.DialogTitle = "打开文件" CommonDialog1.Filter = "pictures(*.bmp)|*.bmp" CommonDialog1.ShowOpen End Sub Private Sub Command2_Click() Dim i As Long, j As Long, k As Long Open CommonDialog1.FileName For Binary As #1 Get #1, 19, w Get #1, 23, h Seek #1, 55 ReDim pic(w - 1, h - 1, 4) For j = h - 1 To 0 Step -1 - 24 - 哈尔滨理工大学学士学位论文 For i = 0 To w - 1 For k = 2 To 0 Step -1 Get #1, , pic(i, j, k) Next k Next i If (w * 3) Mod 4 <> 0 Then For k = 1 To 4 - ((w * 3) Mod 4) Get #1, , pix Next k End If Next j Close #1 For j = 0 To h - 1 For i = 0 To w - 1 SetPixelV Picture1.hdc, i, j, RGB(pic(i, j, 0), pic(i, j, 1), pic(i, j, 2)) 'Picture1.PSet (i, j), RGB(pic(i, j, 0), pic(i, j, 1), pic(i, j, 2)) Next i Next j End Sub Private Sub Command3_Click() Dim i As Long, j As Long ReDim f(w - 1, h - 1) For j = 0 To h - 1 For i = 0 To w - 1 f(i, j) = pic(i, j, 0) SetPixelV Picture2.hdc, i, j, RGB(pic(i, j, 0), pic(i, j, 0), pic(i, j, 0)) 'Picture2.PSet (i, j), RGB(pic(i, j, 0), pic(i, j, 0), pic(i, j, 0)) Next i Next j End Sub Private Sub Command4_Click() Dim i As Long, j As Long, k As Long Dim m As Long, n As Long Dim t As Long Dim k As Integer 1 Dim k As Integer 2Dim num As Long Dim a() As Integer ReDim g(w - 1, h - 1) Size = Val(Text1): num = (Size + 1) * (Size + 1) ReDim a(num) For j = Fix(Size \ 2) To h - 1 - Fix(Size \ 2) For i = Fix(Size \ 2) To w - 1 - Fix(Size \ 2) k = 0 For k1 = -Fix(Size \ 2) To Fix(Size \ 2) For k2 = -Fix(Size \ 2) To Fix(Size \ 2) - 25 - 哈尔滨理工大学学士学位论文 a(k) = f(i + k, j + k): k = k + 1 12 Next k 2 Next k 1 For m = 0 To num - 1 k = m For n = m + 1 To num - 2 If a(n) < a(k) Then k = n Next n If m <> k Then t = a(k): a(k) = a(m): a(m) = t End If Next m g(i, j) = a(Fix(num \ 2)) 'Picture3.PSet (i, j), RGB(g(i, j), g(i, j), g(i, j)) SetPixelV Picture3.hdc, i, j, RGB(g(i, j), g(i, j), g(i, j)) Next i Next j End Sub Private Sub Command5_Click() Picture1.Picture = LoadPicture("") Picture2.Picture = LoadPicture("") End Sub 图3-10 去噪前效果图 界面中各命令按钮和其相对应的操作方式分别对应结果如下: 【Command1】对应【打开文件】按钮,点击【打开文件】按钮,选择需要 图像文件,打开相应的图像文件; 【Command2】对应【读取图像】按钮,点击【读取图像】按钮,程序执行 读取,载入图像文件; 【Command3】对应【灰度】按钮,点击【灰度】按钮,对图像进行灰度操 作; 【Command4】对应【去噪】按钮,点击【去噪】按钮,对图像进行去噪操- 26 - 哈尔滨理工大学学士学位论文 作; 【Command5】对应【清屏】按钮,点击【清屏】按钮,退出运行程序。 点击【灰度】按钮,对程序执行结果操作,得出去噪前效果图3-10如上: 点击【去噪】按钮,对程序执行结果操作,得出去噪后效果图3-11如下: 图3-11 去噪后效果图 3.3 3.3.1 直方图是针对灰度图像进行描述和处理的。什么是灰度级的直方图?简单 的说,灰度直方图是灰度级的函数,它表示图像中具有某种灰度级的像素的个 数,反映或统计了图像中每种灰度出现的频率。同时灰度级的直方图给出了对 图像概貌的总的概述。我们从直方图上可以看出图像的许多特性。因此,灰度 直方图描述了一幅图像的概貌,是研究图像灰度分布的手段,是数字图像处理 [11]中一个非常有用的工具。 3.3.2 由直方图的基本概念得到,图像的直方图具有以下三个重要的性质。 1.脂肪图只反映了该图像中某个灰度的像素出现的次数(或频率),而丢失了其所在位置的信息。 2.任何一幅图像,都能唯一地确定出一副与它对应的直方图,但是不同的 图像,可能有相同的直方图。 3.由于直方图是对具有相同灰度值的像素统计得到的。因此,一幅图像各 个区的直方图之和就等于该图像全图的直方图。 - 27 - 哈尔滨理工大学学士学位论文 3.3.3 简单地说,灰度级的直方图就是反映一幅图像中的灰度级与出现这种灰度 的概率之间的关系的图形。直方图的横坐标是灰度,用r来表示;纵坐标是灰度值像素的个数,用H表示。直方图的纵坐标也可以用图像灰度概率密度函数 pr(r)表示,它等于具有r灰度级的像素个数与图像总像素个数之比。在离散形式 下,灰度直方图的计算如下: nkp(r), rkn rp(r)式中:代表离散灰度级,代表概率密度函数,表示原始图像的灰krk nrn度分布,为图像中出现级灰度的像素数,是图像像素总数。 kk rp(r)在直角坐标系中做出与关系的二维图形,即称为该图像的直方krk 图。具体计算与绘制直方图的算法如下: 1.获取彩色图像每个像素某一颜色分量的灰度值存入数组pic(x,y)中; 2.获取整个图像的高度h和宽度w; 3.计算每级灰度的像素个数存入hd(i)数组中,数组下标值i为灰度值; 4.绘制直方图,每级灰度的像素个数用垂直线表示。 在给出如下图3-11的灰度图像,绘制其直方图: 图3-12 灰度图像 主要的Visual Basic程序代码如下: For j = 1 To h - 1 - 28 - 哈尔滨理工大学学士学位论文 For i = 1 To w - 1 k = pic(i, j, 0) hd(k) = hd(k) + 1 Next i Next j hmax = hd(0) For i = 1 To 255 If hd(i) > hmax Then hmax = hd(i) Next i s = Picture2.ScaleTop / hmax * 0.8 For i = 0 To 2 * 255 Step 2 X = (i + 100): Y = hd(i \ 2) * s + 10 Next i 绘制直方图效果图3-12如下: 图3-12 直方图 3.4 灰度图像转换成二值图像称为图像的二值化,图像的二值化处理就是常用 的阈值化处理,即选择一个阈值,将图像转换为黑白二值图像。 阈值法是一种最常用的二值化方法,实质就是使用阈值进行图像分割,也 是一种区域分割技术。阈值法必须先找出阈值T,然后才能用设置灰度门限的方法确定有意义的区域或欲分割的物体的边界。图像的二值化处理的变换函数 表达式为: - 29 - 哈尔滨理工大学学士学位论文 0f(x,y),T, g(x,y),,255f(x,y),T, 因此图像的二值化处理的关键是求出阈值T。如图3-12所示,其直方图是双峰型的,也即两个尖峰对应于物体内部和外部较多数目的点,两峰间的谷对 应于物体边缘附近相对较少数目的点。因此,一种很可靠的方法是把阈值T设 在相对于两峰之间的某个固定位置,如中间位置上,这两个峰分别代表物体内 部和外部点典型(出现最频繁)的灰度值。一般情况下,对这些参数的估计比对最 [14]少出现的灰度值,即直方图的谷的估计更可靠。由此阈值T可确定为75。 通过阈值T=75时,在代码窗口中输入只要程序代码如下: For j = 0 To h - 1 For i = 0 To w - 1 If pic(i, j, 1) >=75 Then Picture2.PSet (i, j), RGB(255, 255, 255) Else Picture2.PSet (i, j), RGB(0, 0, 0) End If Next i Next j 得出效果图3-13如下: 图3-13 T=75的二值效果图 - 30 - 哈尔滨理工大学学士学位论文 由图3-13可知,所取的阈值为最佳阈值,因为得到的效果图十分清晰,没 有任何噪声,为了能够得到更清晰的对比,我们再分别做出阈值为50和110的 二值效果图。 当阈值T=50时,在代码窗口中输入只要程序代码如下: For j = 0 To h - 1 For i = 0 To w - 1 If pic(i, j, 1) >=50 Then Picture2.PSet (i, j), RGB(255, 255, 255) Else Picture2.PSet (i, j), RGB(0, 0, 0) End If Next i Next j 得出效果图3-14如下: 图3-14 T=50的二值效果图 当阈值T=110时,在代码窗口中输入只要程序代码如下: For j = 0 To h - 1 For i = 0 To w - 1 If pic(i, j, 1) >=110 Then Picture2.PSet (i, j), RGB(255, 255, 255) Else Picture2.PSet (i, j), RGB(0, 0, 0) End If - 31 - 哈尔滨理工大学学士学位论文 Next i Next j 得出效果图3-15如下: 图3-15 T=110的二值效果图 图像的二值化处理就是将图像上的像素点的灰度值设置为0或255, [15]也就是将整个图像呈现出明显的黑白效果。将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。 在数字图像处理中,二值图像占有非常重要的地位,首先,图像的二值化有利 于图像的进一步处理,使图像变得简单,而且数据量减小,能突显出感兴趣的 目标的轮廓。其次,要进行二值图像的处理与分析,首先要把灰度图像二值 化,得到二值化图像。所有灰度大于或等于阀值的像素被判定为属于特定物 体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为 [16]0,表示背景或者例外的物体区域。 - 32 - 哈尔滨理工大学学士学位论文 通过对Visual Basic6.0软件语言的掌握,对图像的预处理进行了程序的编 写与执行。在图像预处理的领域,通过VB语言的操作简单灵活,易于理解接受,处理进度高,再现性好,处理结果一目了然。 在本课题中,我对图像的预处理研究做了概述性的讨论和实际操作,并对 其图像进行了图像的读取,灰度化,二值化,通过直方图的直观方法确定阈值 后二值处理的操作。对Visual Basic6.0软件语言进行学习,借助此语言为图像的预处理编写程序,同时得到相应的执行结果。 图像的预处理是为图像的处理做准备工作,所以对于要求上十分严格,因 为作为图像处理的基础,应该注重每一个环节和细微过程,在程序的编写上应 当严谨慎重。保质保量的完成本地课题研究。 - 33 - 哈尔滨理工大学学士学位论文 本文是在导师黄玲讲师的悉心指导和严格要求下完成的。在撰写 期间,黄老师在课题学习和研究上给了我很大帮助。黄老师严谨的治学态度、 科学的思维方法深深影响了我,也将成为我今后科研工作的准则和方向。 四年的哈尔滨理工大学学习过程中还有太多让我的心中充满温暖谢意的 人: 感谢哈尔滨理工大学自动化专业教授课业的诸位老师,感谢他们的传道、 授业、解惑,感谢他们的无私的奉献。 感谢我可爱的室友们在生活中给予我的帮助和关心,感谢和我同一导师的 所有同学在论文完成过程中给予我的帮助与支持,感谢所有05级自动化6班的 全体同学们,我四年同窗的日子因为他们而充满阳光。 感谢我的朋友刘鸣、刘日、曹宇,他给了我最大的支持与鼓励,使我能够 全身心投入到学习和研究工作中。 感谢辛苦抚育我成人的父母,我一点一滴的进步都是他们的骄傲,都离不 开他们在背后默默的鼓励、支持和无私奉献。 感谢百忙之中抽出时间审阅本文的每一个人。 - 34 - 哈尔滨理工大学学士学位论文 1 张云海.基于VB的灰度图像平滑方法及应用.山东理工大学报.2003.17(5) :21-45 2 孙即祥.图像处理.科学出版社.2004:19-29 3 曹茂永.数字图像处理.北京大学出版社.2007:88-99 4 赵建敏,郭庆.Visual Basic 6.0编程指南.航空工业出版社.1999:126-151 5 李兰友.Visual Basic 6.0图像处理开发与实例.电子工业出版社.2000:8-9 6 刘建华.Visual Basic程序设计.重庆大学出版社.2002:146-233 7 邓文新.Visual Basic程序设计方法.北京航天航空大学出版社.2005:119-130 8 卢毅.Visual Basic实例教程.科学出版社.2002:22-56 9 Kenneth R.Castleman.Digital Image Processing.Publishing House of Electronics Industry.2002:56-69 10 陆玲.数字图像处理.中国电力出版社.2007:29-30 11 James D.Foxall.Visual Basic programming standards.Machinery Industry Press.2000:211-231 12 王桥.数字图像处理.科学出版社.2009:99-132 13 许录平.数字图像处理.科学出版社.2007.12-16 14 蒋勇.数字图像处理技术在煤矸石自动分选中的应用.西安科技大 学.2004:18 -19 15 吐热尼古丽.阿木提.基于VB的数字图像处理方法研究.新疆师范大学学报 (1).2006:198-200 16 Rafael C.Gonzalez.Digital Image Processing.Publishing House of Electronics Industry.2007:263-276 - 35 - 哈尔滨理工大学学士学位论文 A IMAGE PRE-PROCESSING FOR BAR CODE DETECTION IN MOBILE DEVICES Multimedia Technologies Laboratory Nokia Research Center ABSTRACT In this paper we present an image pre-processing procedure for bar code detection in mobile devices. The goal of our method is to improve the quality of the input image, thus making bar code detection and decoding possible even in difficult situations. The implementation details and the results obtained with the proposed method on real images taken with a camera phone, are discussed. 1. INTRODUCTION In the near future there will be more and more demand for mobile devices, such as camera phones, equipped with bar code detection facility. Usually, the devices utilized for bar code detection are using laser beams (for example, the dedicated devices used in supermarkets and stores). Another alternative is to use a digital camera for bar code reading. Since many mobile devices are already equipped with digital cameras,they can incorporate this kind of application as well. The physical dimension of the bar codes to be detected have a wide variety of ranges. In fact, one major reason why the bar codes are widely used today and they keep developing is their high scanning reliability and the possibility to include high quantity of information in a very small printed area. Illustrative examples are given, e.g., in Bar codes that have low information density printed on a large area can be detected easily with a normal camera phone. This is because for such bar codes, the distance between the printed bar code and the lens of the camera phone must be large in order to include the complete bar code in the viewfinder. In this case the image containing the bar code is situated in the in-focus range of the camera, and a good - 36 - 哈尔滨理工大学学士学位论文 enough quality for detection and correct decoding is obtained. For the bar codes printed on small areas and with high information density, their resolution comes close to the maximum resolution of the optical system.In order to deal with this problem the bar code is captured at a distance that is much smaller than the focal distance of the digital camera, and the captured image is highly influenced by the distortions of the optical system and sensor of the camera(out of focus). Typically, the captured image is distorted by sensor noise, optical blur and optical vignetting. An example of such image obtained with a camera phone for a small distance between the camera and the printed bar code is depicted in Fig. 1 a). It is clear that bar code decoding applied directly to this image will fail due to the amount of blurring, therefore image preprocessing becomes a necessary step. Fig. 1. A bar code captured with a camera phone: a) at out of focus distance, b) at in-focus distance. We must also specify that other ways to improve the quality of the captured image, for small bar codes, exists. A second solution (which replaces to some point the need of preprocessing) is to use macro lenses with a very small focal distance that introduce very little blur in the captured image.The same image as in Fig. 1 a) captured with a camera phone equipped with macro lens is depicted in Fig. 1 b). However,the use of such lens requires additional external attachments to the mobile phones that can cause discomfort to the users and add more costs. A third solution can be to use an imaging mobile phone equipped with auto-focus. In this paper we will consider the images obtained with imaging phones that are not equipped with macro-lenses and without auto-focus. Due to the miniaturization of - 37 - 哈尔滨理工大学学士学位论文 the digital camera module, the optics is a limiting factor in the mobile devices industry. The captured image will always be blurred and suffer from high noise content. Due to these realities,there will always be need for image pre-processing in order to obtain robust bar code detection. Previous research work has shown that this problem is very difficult. Different de-blurring techniques for bar code application than the ones we are using are presented in.The only similarity between our methods is the estimation of the point- spread function (psf) in the observed image. How-ever, the used estimation method in is based on the derivative of the observed image while we are using the mean squared error. In, a partial de-blurring is performed first, followed by signal’s peak detection. A bi-level bar code is blurred and fitted to the input line in. The psf is assumed to be gaussian with unknown parameters and the positions of the bar code edges are assumed to be unknown. The maximum likelihood approach is used to find the position of the bar code edges. Neural networks are used in, and mathematical morphology in.In this paper we describe a pre-processing method applied to the captured image in order to reduce the different distortions introduced by the sensor and the optical system. The pre-processing is tailored for the use in a system for bar code detection and decoding with severe blurring and noise when close-up capture shots are needed. Moreover, the proposed olution can be implemented for raw data images as well as for interpolated ones. Our algorithms are adaptive such that the user does not have to set the value of any parameter (i.e.,the psf or vignetting functions are automatically computed from the input image). 2. PROPOSED APPROACH In this section we describe in detail the proposed method,whose main steps are illustrated in Fig. 2. Image capturing: The algorithm described in this paper was applied to one of the green component of the camera raw image. It is also possible to use the gray scale image or the color image from the output of the camera chain. Crop the image: just a small part of the input image is retained in order to - 38 - 哈尔滨理工大学学士学位论文 increase the processing speed. For instance,several adjacent lines from one of the image components are retained (in our experiments we have used 20 adjacent lines around the line of interest). We have done this for the following reasons. First, the next step of de-noising can be implemented in several different ways using algorithms that necessitate more input data. Secondly we are trying to retainas much information as possible in order to obtain good denoising performances. De-noising: a noise reduction algorithm is applied to the cropped image. The de-noising method in has been used. Just the filtered line of interest is passed further through the next processing steps. Vignetting elimination: the process of vignetting introduced by the optical system of the camera is inverted. First,the white borders of the bar code are detected. Some local averages at the beginning and at the end of the selected line are computed. From the computed averages we select the larger ones that corresponds to the white areas surrounding the bar code. If the white borders are detected successfully, the next steps of the algorithm are executed. Otherwise, the whole process is skipped and a new input image is captured. An example of a selected line containing a bar code is depicted in Fig. 3. Here we can clearly see the presence of the white border. The algorithm calculate two local mean values at the left of the bar code (denoted as A and respectively B in Fig. 3) and one mean value at the right side of the code (denoted as C in Fig. 3). We assume that the vignetting function can be modelled as a polynomial of second order: 2y(x),Dx,Ex,F (1) where x is the horizontal pixel coordinate and D, E and F are constant coefficients. The following system of equations is formed using the three above computed averages: 2,A,Dx,Ex,F12,2 (2) B,Dx,Ex,F,22,2C,Dx,Ex,F33, where x1, x2 and x3 are the coordinates of the three local averages A, B and - 39 - 哈尔滨理工大学学士学位论文 respectively C. The above system of equations is solved for D, E and F and the selected line is corrected dividing it by the vignetting function from (1). Fig 3 shows also the estimated vignetting function with dotted line and the corrected image line with dashed line. Detect the start and the ending points of the bar code:From the experiments we made, we realized that one reliable way to detect the start and ending structures of a bar code is to detect a succession of large white area followed by a sharp transition to black. When considering the line we are processing, this is done by filtering with a window of length 15. The used one-dimensional filter is a difference between the maximum and minimum values of the signal inside the filter’s window. The minimums of the filtered values closest to the both endings of the signal are considered to belong to the white areas of the corresponding image. First large transitions after these points in both directions (from left to right, and right to left), give the coordinates we are looking for. This algorithm can also be used to detect the white borders of the bar code in the previous step. Fig. 3. The selected line, the corrected line, the estimated vignetting function and the three points used in vignetting estimation. - 40 - 哈尔滨理工大学学士学位论文 Point spread function (psf) estimation: the psf is estimated from the selected line based on the starting and ending points of the bar code using some a-priori known information related to the bar code we are trying to decode. All existing bar codes, 1D or 2D, have embedded known lines or shapes in a- priori known positions related to the bar code structure. Let us consider as example the 1D bar code EAN13. There is a fixed and known number of bars composing the EAN13 bar code. The bar code structure starts, is centered, and ends with a group of 5 lines with equal width that are arranged as follows: WHITE LINE, BLACK LINE, WHITE LINE, BLACK LINE and WHITE LINE. This group of 5 lines are clearly seen in Fig. 1. They are longer than the rest of the lines and are situated at the beginning, center and ending parts of the code. Having this information we detect the psf as follows: 1. Compute the length of one bar code line: x,x21L (3) ,T where x and x are the coordinates of the beginning and ending points of the bar 12 code and T is the total number of bars (T = 97 in our experiments). 2. Knowing that every bar code starts with the above mentioned set of 5 lines, each of length L, we cut from the processed line the part that corresponds to the first 5 bars. We denote this part of the processed line as Y. 3. We assume that the psf, denoted as P, have a Gaussian shape with length equal to 5L and variance σ. We generate the ideal clean line V, corresponding to Y 2 (theline containing 5 bars that was blurred by the optical system to obtain Y). We blur the ideal line V with generated psf’s P for several values of σ (we first start with a 2 small σ for instance 0.1 and we increase its value at every iteration). At each 2 iteration, we compute the mean squared error between the blurred line and the input line Y. For the first iterations the mean squared error decreases. When the variance becomes too large (it goes over the optimum), the mean squared error starts to increase. At this point the iterative process is stopped and the last good value of σ is 2 - 41 - 哈尔滨理工大学学士学位论文 retained. 4. We repeat 2. and 3. for the central and ending areas of the bar code. The obtained values of σ will linearly establish the used variance along the bar-code 2structure. Finally, we have an estimation of the psf that is Gaussian shaped, with length equal to 5L and variance computed as in the above algorithm. Line de-blurring: the selected line after vignetting elimination is restored (de-blurred) using the estimated psf. This process can be done by several algorithms that exist in the open literature. In our pre-processing chain we have used the approach from. 3. EXPERIMENTAL RESULTS Extensive experimental work was done in order to test the performances of our proposed pre-processing method. We have implemented this method in Symbian and installed it on a camera phone. The system equipped with our pre-processing method was able to correctly decode the more difficult captured bar codes that otherwise failed with our decoder (see for instance Fig. 1 a)). Fig. 4. The restored bar code image. In Fig. 4 we show an example of a restored image using our proposed approach (for input image shown Fig. 1 a)). The image in this figure is obtained repeating the de-blurred line 100 times (the lines from Fig. 4 are all identical). We have chosen to - 42 - 哈尔滨理工大学学士学位论文 plot the restored line in this way just to have a more clear illustration of the achieved processing results. In Fig. 5 the result after segmentation is presented. We notice the fact that all bars are present into the image and their sizes are correct. Since each step from the proposed method, except de-noising, processes only one line from the image, the whole process is very fast(the delay is not annoying to the phone’s user). 4. CONCLUSIONS In this paper we have proposed a practical approach of image pre-processing for bar code detection in mobile devices. Our proposed method shown good performances in restoring bar code images. A real bar code detection system, implemented in Symbian on a Nokia 6630 camera phone and usingour method, successfully decoded difficult bar codes that otherwisefailed to be decoded. Moreover the complete system is able to operate in real time. Fig. 5. The detected bar code after segmentation of the restored image. - 43 - 哈尔滨理工大学学士学位论文 B 多媒体技术实验室 诺基亚研究中心 本论文中我们提出了移动设备中条形码检测图像预处理,我们的目标是改 善图像输入技术,使条码检测和解码即使是在困难的情况下也成为可能。细节 和结果的获得是通过相机手机的真实图像所获得的,会作具体的讨论。 1. 在不久的将来,对移动设备的需求将会越来越大比如有条码检测的相机通 常情况下,条码检测设备是用于激光束(如,用于超市和商场)。另一种是数码相机中的条形码阅读。既然许多移动设备已经载入数码相机中,那么它同样也可 以运用到此技术中。 条形码检测的使用范围已经很广了。事实上今天条形码被广泛使用和不断 发展的一个主要原因是其高度的可靠性和在很小的印刷范围能隐含高品质信 息。举例如下:e.g.,在大面积的低信息条形码用普通相机就能很容易检测出 来。这是因为,这种条形码,为了完整的条形码中的取景器,条形码距离和相 机镜头必须大。在这种情况下,载有条形码的图像位于相机焦点范围内,获得 一个足够好的质量检测和正确的解码。对于印于小范围高信息密度的条形码, 他们的解决方法和在最高分辨率的光学系统的解决方法相接近。 为了解决这个问题,条形码获得距离远小于数码相机的焦距,它捕获的距离受扭曲的光学系 统和相机传感器(焦距)的影响很大。通常情况下,捕获图像受传感器噪声,光学 和光学模糊渐晕而变得扭曲。这种用相机手机获得的图像的一个例子是描绘小 型摄像机之间和印刷条形码之间的距离。a)很显然,条码解码直接适用于这种形象将会因数额模糊而失败,因此图像预处理成为一个必要的步骤。 - 44 - 哈尔滨理工大学学士学位论文 图1 相机获得了一个条形码 :a)在焦点以外 b) 在焦点内 我们必须说明,这里还存在其他方法能改进小条形码的图像。另一种方法 就是使用模糊度非常小的微距镜头,将其焦距调小进行拍照。与图一a)相同用 在图一b)中描述的配备微距镜头的照相手机拍照。但是,使用这种镜头的同 时,手机需要一些其他的配件,这就导致二额外的花销。第三种方法就是使用 一个配备对焦的影像手机。 本文所考虑的是既没有微距镜头,也不配备对焦的影像手机拍下的照片。 由于小型化的数码相机模块。在手机设备行业中,光学式一个限制因素。受到 高噪音的影响,拍到的照片总是模糊的。由于这些实际困难的存在,想获得强 有力的条码检测,就需要图像的预处理。 之前的研究表明,这个方向有一定的困难。在中采用的去模糊技术比我们 现在的更加先进。 与我们的方法唯一个相似之处,就是观察图像上评估点扩展函数。然而, 根据我们使用普通的方形错误。起初有一部分变得清晰,随着信号的输入,一 个双层条形码变模糊和输入的相符合。重量比假定为未知参数,条形码边缘位 置假定为未知。 最大概拟法通常用来找出条形码边缘位置。中枢网络用于,数 学形态学用于。在本论文中,为了减少由传感器和光学系统引起的不同的扭 曲,我们描述了用于捕获图像的预处理方法。用于条形码检测和解码的预处理 是量身定做的,当需要特写镜头时有严格的模糊和噪音。而且,之前用于原始 数据图像的解决方法也同样用于内差值替换。我们的运算法则使用于使用者没 有设置任何参数的价值。(i,e 重量比或者小插图功能自动从输入图像中计算出来)。 2. 图像获得:次论文描述的运算法则用于相机原始图像的一个绿色组成部分 中。当然使灰色图像或相机系统输出的颜色图像也是可能的。 获得图像:为了增加处理速率仅保留输入图像的一小部分。例如,其中一 个图像成分的几个临近的线路被保留(在我们的实验中,我们用了20临近线)。 出于以下理由我们做了此实验。首先,消除噪音的下一步可以用于不同方法使 用运算法则需要更多的输入数据。其次,为了保留很好的去噪性能。我们要保 留尽可能多的信息。 去噪:噪音降低用于裁剪不正的图像。噪声消除方法在图中被运用。通过 接下来的处理步骤重要的过滤线通过了。 消除小插图:小插图过程引进相机光学系统是相反的。首先,条形码白色 边缘被检测。一些地方的平均数和选择线的最后被载入电脑。 渐晕消除:相机的光学系统引发的渐晕过程是倒转的。第一:删除条形码 的白色边界。在选定界限的开始和结束的地方时计算好的。通过计算平均数, 我们选择更大的对应着围绕在条形码的白色部分。如果白色边界选择成功,就 - 45 - 哈尔滨理工大学学士学位论文 进行下一个运算步骤。否则就跳过这个过程拍摄新的照片。 在图三中描述了选择包括条形码的白线的例子。这里我们可以很清楚的看 到当前的白色边界。运算法则在剩下的条形码部分计算当前平均值(指分别为A 和B的图)一个平均值在右侧的代码(图三中的C)。我们假设渐晕功能可以仿照做二阶多项式。 2y(x),Dx,Ex,F (1) 其中x是水平像素协调D , E和F是常系数。 下面的方程组用来计算上述三个平均数 2,A,Dx,Ex,F12,2 (2) B,Dx,Ex,F,22,2C,Dx,Ex,F33, 其中x,x和x与ABC匹配。上述方程组求解的D,E,F和选定的线是通123 过图三(1)正确分配的。 检测开始和结束点的条形码:通过实验我们了解到,检测开始和结束结构 的有效方法是,检测白色过度到黑色的连贯性。考虑到我们处理的线,这通过 长度15的窗口过滤。在过滤窗口里的数据是有最大值和最小值之分的。里信 号两端最近的最小值被认为是属于相应照片的白色部分。在这两个方向的点的 一个转换(从左至右,从右至左)提供我们所寻找的坐标。这个算法也可用于检 测上一步的白色边境的运算码。 点扩散函数估计:点扩散函数从选定线的出发点和落脚点的条形码估计, 条形码使用的是我们正尝试解码的一个先验已知信息。 所有现行的条形码,一维或二维的,有关条形码结构的嵌入式的已知线或 图形在一个事先已知的地方。我们考虑,例如一条条形码为EAN13,有一个固 定的已知的条形组成EAN13条形码。这个条形码结构已一组5条线相等宽度的横线组成,并已这5条线开始和结束,它们分别是:白线,黑线,白线,黑 线,白线。这5条线能在图1中清楚地显示出。它们比其他的线都长并且位于 代码的前、中和后部分。 我们所检测到的点扩散函数的信息如下: 1、计算出一个条形码线的长度: xx,21L,(3) T x 和 x分别是这个条形码开始和结束部分的坐标,T是这个条形的总数。12 (实验规定T = 97) 2、已知每条形码已以上提到的5条线开始,每个长度L,我们切掉的这个 加工线部分对应5个条码。标示经处理加工的部分为Y。 - 46 - 哈尔滨理工大学学士学位论文 图3 选定线,纠正线,渐晕函数的估计和3分用于渐晕估计。 3、假设点扩散函数为P,高斯形状长度等于5L方差σ。我们画出一条明2显的线V,对应着Y。(为获得Y,光学系统把5个条形的线模糊了)。为了算出σ的一些价值,我们使已生成的点扩散函数的P的那条清晰的V线2 变模糊了,(首先已一个小σ比如0.1,然后在以后的每次循环中增加其2 值)。在每一次循环中,我们计算出模糊线和输入线Y的均方误差。因为在第一个循环是均方误差就减少。当这个方差变数太大时(超出了最大数),均方误差开始增长。这时循环过程停止同时最终的σ值保留。 2 4、为条形码的中间和结束部分,我们重复2.and3.。最终保留的σ值将会2沿条形码的结构最终线性地确定出已使用的方差。 5、最终,我们拥有了点函数的估计,就是已上的运算法则计算出的高斯形 状长度等于5L和方差。线去模糊:选定线在渐晕消除后被储存(去模糊)使用估计的点扩散函数。这个过程可以通过公开文献里的一些运算法则中实 现。在预处理链中我们已经从使用了这个方法。 3. 大量的实验工作 是为了测试我们提出的预处理方法的可行性。我们已经在 辛比亚公司实施了这套并把它安装在相机手机上。拥有我们预处理方法的 系统能够正确地解码更难抓获的条形码,否则,我们的解码器失败(看图1 a) - 47 - 哈尔滨理工大学学士学位论文 图4:还原的条码图像 在图4中我们展示了使用我们方法的一个恢复图像(输入图像显示在图 1 a)。这个图像重复去模糊线100次。(图四的线是完全相同的)。为了得出更清晰的论证,我们选择用这样的方式绘制这条还原线。 在图5中显示分割后的结果。我们注意到所有纳入图像和它们大小的条形 都是正确的。因为每一步都来自提出的方法,出去噪,过程中只有一条线来自 图像,整个过程都是非常快速的(手机用户不会因为延误而烦恼)。 图5 条码检测分割后的恢复图像 - 48 - 哈尔滨理工大学学士学位论文 4. 在本文中,为移动设备的条形码检测,我们提出了一个切实可行的方法— 图像预处理。我们提出的方法在恢复条形码过程中表现出良好的性能。一个真 正的条形码检测系统,在诺基亚6630的相机手机中和我们的方法中得到了完美的实施,成功地破译了较困难的条形码,否则很难被破译。此外,这套完整的 系统能实时地实施。 - 49 -
/
本文档为【基于VB的图像预处理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索