APP下载

数字图像处理系统的开发与研究

2011-11-24张秀荣孟和达来

湖南师范大学自然科学学报 2011年6期
关键词:二值图像处理灰度

张秀荣 孟和达来

(内蒙古民族大学传媒学院, 中国 通辽 028043)

据研究表明,人们所获取的全部信息中,有70%以上来源于视觉.跟语音或文字信息相比,图像包含的信息量更大、更直观、更确切,具有更高的使用效率和更广泛的适用性.图像处理已经成为众多领域中,研究视觉感知的有效工具.随着时代的发展,图像处理技术已被广泛的应用于工程学、医学、军事、遥感、气象等众多领域.数字图像具有便于计算机处理和分析、图像信息损失低、图像抽象性强及图像保存方便等特点.目前国内外有很多关于图像处理和遥感图像处理的通用软件,但是由于各个软件的应用目的和侧重点不同,这些软件在实际运用的时候都会产生这样或那样的问题.比如有些软件的界面不够友好,交互性差,用户无法调整算法参数;不具备可扩展性,软件一旦完成,不容易修改或添加新内容等.而且图像处理的算法是千变万化的,它的发展也是日新月异的,而图像处理系统软件的开发是相对滞后的.因此有些软件的内容不全或陈旧,没有涉及图像处理领域较新的成果.所以,在实际中,常常需要开发自己的图像处理软件,来方便某一领域的研究和学习.本文设计的可视化图像处理程序是以Window XP作为操作平台,采用Microsoft公司推出的开发Win32环境程序,通过Visual C++实现系统框架,实现了对图像的基本处理,如图像增强、正交变换、边缘与轮廓、二值形态学变换、图像分割、图像复原、图像压缩和编码等.

1 系统的总体设计及主要模块实现

决定系统功能的软件设计主要在PC机中实现,是整个系统设计的核心[1].系统采用VisualC++可视化编程软件[2-3],使整个系统变得完整且能协同工作,同时面向对象的编程使软件成本降低且易于升级.

本软件系统的基本功能应包括文件处理、图像特技显示、图像几何变换、颜色处理和图像处理等几个方面,如图1所示.下面分别说明.

图1 数字图像处理系统的基本功能

1.1 文件处理

本系统软件应能新建、打开、存储和关闭不同格式的位图文件,而且在文件操作时,能方便地选择不同的格式,包括DIB位图、PCX、GIF、JPEG、TIFF.能同时支持打印、预览及打印机设置.

用VC++实现显示位图

借助于CDib类,用Visual C++编制位图显示的步骤如下:

(1)使用Appwizard生成一个基于多文档的项目ImagePro;

(2)将ClmageProview类的基类设为CScrollView类,使ImagePro显示时支持滚动条;

(3)将前面介绍的DIBAPI.H和DIBAPI.CPP,以及CDib的接口和实现文件—DIB.H和DIB.CPP增加到ImagePro项目中;

(4)在CImageProDoc类中增加一个表示CDib对象指针公共数据成员:CDib

*m_pDib;

(5)在CImageProDoc类的构造函数中初始化m_pDib;

(6)在ClmageProDoc类重载的成员函数Serialize中,用CDib的串行化来实现ClmageProDoc文档的串行化;

(7)当从文档类中装入DIB文件时,CImageProView类的OnInitialUpdate函数将首先调用.因此,在该函数中编写从文档类获取用来显示DIB的信息,主要获取的是图形显示的尺寸区域;

(8)在CImageProView::onDraw函数中调用CDib::Display函数显示DIB;

(9)协调调色板

1.2 图像特技显示

VisualC++并未提供图像特技显示方法,因此,必须自己编制图像特技显示的有关模块[4-5],包括:扫描、移动、百叶窗:水平、垂直、栅条、马赛克等.

1.3 图像变换

本软件系统支持常见的图像几何变换操作,包括:旋转、水平镜像、垂直镜像、图像的缩放、图像像框的缩放.

1.4 颜色处理

颜色处理是主要的图像处理方法之一,可以满足对不同颜色效果的要求.本软件支持的颜色处理方法如下:彩色图像的灰度化、图形的亮度和对比度调整、颜色分离,可以获取R,G,B分量的单色图、滤色,可以滤除图像中的R,G,B颜色分量、Gamma校正、底片效果、曝光效果等.

1.5 图像处理

图像处理方法是本软件的核心和重要组成部分[6],几乎包括了图像处理的各种基本方法,包括:图像增强、边缘检测、轮廓提取与轮廓跟踪、种子填充、图像复原、图像的正交变换、图像的二值形态学变换、图像阐值分割、投影检测、差影检测、模板匹配、图像编码等.

图像增强包括点运算[7],空间运算和伪彩色增强.

1.5.1 点运算 点运算是单独地对图像的像素点进行运算[8],而不考虑图像的邻域.主要针对的是灰度图,包括灰度的线性变换,灰度的闽值变换,灰度的窗日变换,灰度拉伸和直方图均衡化.

(1)灰度的线性变换.灰度的线性变换是将图像中所有点的灰度按照线性灰度变换函数进行变换.

(2)灰度的阐值变换.它的思想就是图像的二值化,即把灰度图像转换为黑白二值图像.取一阈值T,当图像的灰度值小于此阈值时,像素值取为0,当图像的灰度值大于或等于此阈值时,像素值取为255.

(3)灰度的窗口变换.灰度的窗口变换和灰度的阈值变换相似,它限定一个窗口范围,该窗口中的灰度值保持不变,小于该窗口下限的灰度值直接设置为0,大于该窗口上限的灰度值直接设置为255.

(4)灰度拉伸.灰度拉伸是分段进行线性变换.可以灵活的控制输出灰度直方图的分布,有选择的拉伸某段灰度区间以改善输出图像.

(5)直方图均衡化.直方图均衡化方法的基本原理[8]是:对在图像中像素个数多的灰度值(即对画面起主要作用的灰度值)进行展宽,而对像素个数少的灰度值(即对画面不起主要作用的灰度值)进行归并,从而达到清晰图像的目的.

1.5.2 空间运算 空间运算不仅考虑对应的像素点,而且考虑像素点周围的邻点,即对其某个邻域进行运算,得到的值即为相应像素点的值.包括滤波和锐化,滤波包括均值滤波和中值滤波,锐化包括一阶梯度锐化和拉普拉斯锐化.

(1)均值滤波.均值滤波方法是,对待处理的当前像素,选择一个模板,该模板为其近邻的若干像素组成,用模板中像素的均值来代替像素值的方法.

(2)中值滤波.中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术.在一维形式下,一维中值滤波器含有奇数个数据的滑动模板,对模板中的数据由小到大排序,取排在中间位置上的数据作为最终的处理结果.

(3)一阶梯度锐化.图像中的细节是指画面中的灰度变化情况,反映数据变化的数学手段可以采用微分算子.从数学的微分含义来看,“一阶微分”是描述“数据变化率”,“二阶微分”是描述“数据变化率的变化率”.无论哪种形式,通过一阶微分或者是二阶微分,都可以进行细节的增强与检测.

(4)拉普拉斯锐化.拉普拉斯是一种微分算子,它的应用强调图像中灰度的突变及降低灰度慢变换的区域.

1.5.3 伪彩色增强 伪彩色增强也是基于调色板操作的,按照伪彩色编码表来更改当前图像的调色板.在VC++中实现以上伪彩色增强[3].

1.6 软件界面设计

考虑到图像处理的方便,系统采用多文档(MDI)界面[4,9].根据Windows的界面标准和本软件的功能设计,软件的主菜单中包括文件、编辑、查看、特技显示、几何变换、正交变换、颜色处理、图像增强、边缘与轮廓、图像复原、图像分析、二值形态学变换和图像编码等菜单项.同时,通过对话框操作可实现图像的交互处理.

本软件界面友好,凡是需要确定参数的算法都有设置参数的对话框,使用者可以方便的输入不同的参数,便于比较不同参数条件下的图像处理效果,从而理解有关参数变化对处理结果的影响.友好的界面使得对该软件的使用极为简单.而且,当用户使用不当时也会有相应的提示(如在针对二值图像处理的算法中输入了非二值图像[10],系统即会提示“本处理只针对二值图像,请输入一幅二值图像”),使用者根据提示即可方便的使用该软件.

2 系统实现中的关键技术

2.1 代码可重用性设计

本系统采用Visual C++6.0为编程环境[11].以代码的高可重用性、代码的精简性为目标.将系统中通用函数,如获取图像信息、通用模板函数设计为通用模块[7],可以在全局范围内被灵活调用,符合代码重用性的“一次编码,多次使用”特点.

2.2 图像处理后像原值超限的处理技术

常规数字图像都是unsigned char数据类型,像素值范围是0~255.由此产生了图像处理后像素值可能超出数据范围的问题.如:某像元处理后为752,很明显752超出了unsigned char的数值范围.有两种方法可以处理这个问题:舍去法和拉伸法.

舍去法是把超出图像像素范围上限的值设为255,超出下限的像素值设为0.这种方法比较简单,在对图像质量要求不高时使用.拉伸法相对来说比较复杂,对处理后的像素值,提取它的最小值,把它的负值加到所有的像素值上,然后求出这些像素值的最大值,用255除以这个最大值去乘所有的像素点,则所有的像素点都被拉伸在(0~255)之间.

美国的ERDAS遥感图像处理软件和Photoshop软件都采用的是舍去法.根据舍去法,系统将752存储为255.这种方法只保存了处在目标数据类型范围内的图像数据[12],对像元值超界的像元不能进行分辨,导致图像细节丢失.而采用拉伸的方法能够很好地保存图像的细节[13].本软件系统采用的就是拉伸法.

3 结论

本文设计的可视化图像处理程序能打开、存储、关闭不同格式的图像文件,而且在文件操作时,能方便地选择不同的格式,包括DIB位图、PCX、GIF、JPEG、TIFF等格式.软件界面友好,凡是需要确定参数的算法都有设置参数的对话框.而且,当用户使用不当时都会有相应的提示,使用者根据提示即可方便地使用该软件.图像处理算法内容丰富,涵盖了图像处理领域大部分算法,能够满足基本的图像处理要求,且具有很强的可移植性和可扩展性,可以较方便地增加新的内容.

但是在系统方面,处理后的图像覆盖了处理前的图像,不能同时显示处理前和处理后的图像,不便于直观地比较处理效果.并且在算法方面,数字图像处理的算法还应继续完善.

参考文献:

[1] 吕凤军.数字图像处理编程入门[M].北京:清华大学出版社,2000.

[2] 周长发.精通Visual C++图像编程[M].北京:电子工业出版社,2000.

[3] 伍俊良.VC++课程设计与系统开发[M].北京:清华大学出版社,2002.

[4] 周长发.多媒体计算机技术开发与应用[M].北京:电子工业出版社,1995.

[5] 杨淑莹. VC++图像处理程序设计[M].边奠英主审.北京:清华大学出版社、北方交通大学出版社,2003.

[6] 陈江婷.图形组态的数字图像处理实验系统的设计[J].科技广场,2010(3): 102-105.

[7] 杨 靖,李捍东.基于ARM和CPLD的嵌入式数字图像处理系统[J].机械与电子,2010(s1): 203-205.

[8] 白 羽,索丽敏.基于MATLAB的数字图像处理分析及应用[J].黑龙江科技信息,2009(32):84.

[9] 张 锐,吴婉兰.DM642在数字图像处理系统中的应用[J].计算机应用与软件,2008(1):211-212,246.

[10] 张卫国,王 斌.基于数字图像处理技术的实况视频图像处理系统设计[J].长春理工大学学报:自然科学版,2011(3):93-95,106.

[11] 赵 兆. Visual C++在数字图像处理中的应用[J].现代计算机:专业版,2011(11):57-58,62.

[12] 杨淑莹,张 桦.“数字图像处理”教学软件的开发设计[J].天津师范大学学报:自然科学版,2009(4):76-80.

[13] 舒世昌.基于DEMD与多尺度几何分析的图像压缩方法[J].湖南师范大学自然科学学报,2009,32(4):18-22.

猜你喜欢

二值图像处理灰度
采用改进导重法的拓扑结构灰度单元过滤技术
基于灰度拉伸的图像水位识别方法研究
支持CNN与LSTM的二值权重神经网络芯片
基于图像处理的机器人精确抓取的设计与实现
基于二值形态学算子的轨道图像分割新算法
机器学习在图像处理中的应用
基于稀疏表示的二值图像超分辨率重建算法
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于曲率局部二值模式的深度图像手势特征提取
基于灰度线性建模的亚像素图像抖动量计算