图像处理英文文献翻译 第3页
分形算法的分析与设计
研究了分形图像的分析过程,提出合理的分形图像提取流程.利用Visual C++完成了基于Windows平台的分形维数计算程序(Fractal Dimension Calculation Program: FDCP)的设计,并以直线、康托尔三分点集、科赫曲线等分形图形对其进行了标定.
分形理论[1~4]的广泛应用依赖于分形图像的提取、处理与分形维数的计算.现实中存在的分形几乎都是无规分形,其维数的计算比有规分形的维数复杂得多,而且有许多不同的计算方法,它们都需要进行大量的图像分析与统计运算.因此编制计算机程序来完成图像分析、处理与分形维数计算等工作是解决上述问题的有效办法.Visual C++是目前最为流行的程序设计语言,它具有面向对象编程、支持Windows所有特性、可移植性好等优点.本文采用Visual C++设计基于Windows平台的FDCP程序.
1 分形图像分析
材料科学领域的许多过程都存在着大量的无规分形,如材料的断裂,液态金属的凝固,薄膜的生长,材料的氧化、烧结与侵蚀等.但材料的初始图像(金相照片、岩相照片、SEM与TEM的形貌像等)一般都是模拟信号,必须首先完成数字化过程,然后将其他干挠信息去除,从而提取出分形图形.显然,这是一个很复杂的过程.分形图形提取流程如图1所示.首先获得材料试样的形貌像,作为原始图像;利用扫描仪等设备将原始的SEM(或TEM等)形貌像输入计算机中并以一定的灰度图像文件格式(如:TIFF,BMP,PCX)保存;去除噪音信号后,对图像进行细致处理使图像具有合适的对比度;在最佳的对比度状态下进行分形特征的提取,得到相应的分形图像(或图形).
由于Windows操作系统被广泛使用,BMP图像格式得到几乎所有基于Windows平台图像软件的支持,因此分形图像分析程序采用BMP格式进行数据存贮,而且通用的图像处理软件一般都能完成不同图像格式之间的转换.BMP格式的图像文件由3个部分组成:位图文件头(BITMAPFILEHEADER)数据结构、位图信息(BITMAPINFO)数据结构和位图阵列信息.分析位图文件头与位图信息数据结构之后,才能正确地利用位图阵列中的信息.
分形图像分析与分维计算程序采用Visual C++语言编程,以Windows为工作平台.位图阵列信息记录了图像的每一个像素值.在生成图像时,Windows从图像的左下角开始逐行扫描图像,即从左到右、从下到上,将图像的像素值一一记录下来.这些字节组成了位图阵列信息,其记录顺序如图2所示.
分形图像的原始图像一般都是灰度图像(彩色图像可处理成灰度图像),分形特征提取主要是根据其灰度分布情况来判断.不同的图像具有不同的灰度分布,可能出现1个或多个灰度峰值.根据峰值个数以及处理过程的不同,可以用不同的方法完成灰度图像的二值化过程.图像的二值化是指通过设定某个阈值,并以该阈值为门限,把具有多灰度级的图像变换成二灰度级图像(即黑白图),即所有的像素分别置为黑(像素值为0)和白(像素值为1).不同的阈值设定方法形成了不同的二值化处理过程,常用的二值化处理有以下几种方法:(1)固定阈值法. 对于灰度图像集F,将其小于等于(或大于等于)某阈值θ的像素F[i][j]置为0;大于(或小于)θ的像素值全部置为1;其中,不同的图像根据灰度分布峰值的不同可以选择不同的θ值.(2)双固定阈值法. 对于灰度分布存在双峰值的图像集F,可以设定2个不同的阈值θ1与θ2(θ1<θ2).当某个像素F[i][j]的像素值小于等于θ1或大于等于θ2时,将其置为0;当θ1<F[i][j]<θ2时,将其置为1,反之亦然.(3)各自像素阈值法. 对于灰度图像集F,设置图像数组同样大小的阈值数组θ,用阈值θ[i][j]对像素F[i][j]进行二值化,若F[i][j]<θ[i][j],则F[i][j]=0;若F[i][j]≥θ[i][j],则F[i][j]=1.图3(a)是单晶Si在一定条件下,其氧化膜生成的枝状晶的SEM形貌像;3(b)是其灰度分布曲线;3(c)是二值化后的黑白图像;3(d)是在此基础上建立的边界.不同的研究领域对分形特征的要求是不一样的.如果研究的对象是枝状晶,则图3(c)可以作为分形图像;如果研究的对象是枝晶的边界或其他类海岸线,则需要建立其边界,即图3(d).将二值化图像的各种滤波(空间邻域处理方法)结合模糊数学,以保证精确建立图像的边界,如颗粒材料的边界、晶粒边界、氧化界面、扩散界面等,然后可以对建立的边界进行各种测量,得到需要的信息.
2 分形维数计算程序设计毕业论文http://www.751com.cn/ 论文网http://www.lwfree.com/
FDCP的设计需要涉及到大内存分配、回归分析、多窗口、数据共享与位运算等诸多内容,因此采用面向对象编程(OOP)的Visual C++作为FDCP的程序设计语言.图4是分形维数计算程序各功能模块之间的关系示意图.主控模块控制整个程序的窗口框架与子窗口的用户区的刷新、消息传递与处理以及各个功能子模块的衔接;图像显示模块负责完成在子窗口用户区内显示分形图像以及计算结果;计算模块又包括4个不同计算方法的功能子模块,它们分别是周长面积法、盒计数法、半径法与变量法,这些计算子模块用不同的方法对分形图像的维数进行计算;数据交换模块主要用于与其他Windows程序或软件进行数据交换.本程序采用2种不同的方法,即利用剪贴板和WMF图片文件与数据文件利用可视化编程语言Visual C++的基本类库(Microsoft Foundation Class: MFC)进行编程,可以充分利用C++语言面向对象编程的优点,能够提高代码的执行效率,保证程序易于扩充、维护、移植,代码紧凑,效率高等优点,同时又充分利用了Windows平台支持多任务的特点,容易实现不同应用程序间的数据交换.另外还可以根据需要,对计算模块作相应的补充,使得增加新的计算方法简单易行.程序提供非常友好的用户界面.图5是FDCP显示了5级科赫曲线的主窗口界面.它有“File”,“View”,“Fractal”,“Window”与“Help”等菜单以及各自的下拉菜单组成.其中,图像显示模块采用MFC与SDK混合编程,程序框架利用MFC完成.但由于MFC所带的CBitmap类的显示速度较慢,为加速图像显示过程,采用MFC的框架调用SDK函数来实现显示功能.由于该程序需要支持多个图像文件同时处理,因此FDCP程序必须采用MDI窗口格式进行设计.
为验证程序的可靠性,分别用直线、正方形、科赫曲线、康托尔三分点集这4种有规分形图形对FDCP的计算结果进行了验证.其中,直线、正方形与康托尔三分点集的分形维数计算结果与理论值严格相等.用FDCP的盒计数法模块计算了第5级科赫曲线的分形维数,结果如图6所示.从图6可以得出,FDCP计算的科赫曲线分形维数为1.2166.科赫曲线的理论分形维数为DKoch=ln4/ln3=1.2619,而由于无穷级的科赫曲线是不可得的,因此标定采用第5级科赫曲线,计算结果表明FDCP用于计算分维是可靠的.文献[5~8]用本文程序成功地对Mo/β'-Sialon与Ta/β'-Sialon梯度功能材料中存在的界面分形维数进行了研究.
用FDCP程序的盒计数法计算了图3(c)的枝晶的维数为1.694;图3(d)的枝晶边界维数为1.388,结果如图7所示.由此可见,不同的研究对象所构成的分形维数是显然不同的,因此,必须正确选取研究的分形对象与选择合适的计算方法.
3 结论
结合图像分析与处理技术,利用可视化编程语言Visual C++设计了基于Windows平台的分形维数计算程序(FDCP).程序具有易于维护,可扩充性好、界面友好、时间效率与空间效率高、数据共享性好等优点.用直线、正方形、科赫曲线、康托尔三分点集等有规分形图形对FDCP进行了标定,结果表明FDCP用于计算分形维数是可靠的.