一种快速准确的细化算法
- 格式:pdf
- 大小:144.55 KB
- 文档页数:3
网格细化方案概述网格细化是指在数值计算中将初始网格进行进一步细分,以提高数值模拟的准确性和精度的一种方法。
通过合理地细化网格,可以更好地捕捉复杂的几何形状和物理过程。
本文将介绍几种常见的网格细化方案,并探讨它们的优缺点和适用场景。
1. 均匀网格细化均匀网格细化是最简单的网格细化策略之一。
它按照固定的步长将初始网格划分为更小的网格单元。
这种方法的优点是简单易实现,且计算效率较高。
然而,它存在的问题是无法适应复杂的几何形状和物理过程,对于一些细节变化较大的区域,无法提供足够的分辨率。
因此,均匀网格细化主要适用于处理简单的几何形状和物理过程。
2. 自适应网格细化自适应网格细化是一种根据问题需要动态调整网格的方法。
它根据初始网格上的解的特点,通过一定的误差估计准则来判断是否需要进行网格细化。
这种方法的优点是可以根据问题的要求精确地捕捉局部细节,提高计算的准确性。
然而,自适应网格细化也存在一些问题,如在复杂的区域和物理过程中,调整网格的复杂度较高,计算时间较长。
因此,自适应网格细化主要适用于需要高精度解或处理复杂几何形状和物理过程的问题。
3. 多重网格细化多重网格细化是一种层次结构的网格细化方法。
它将问题划分为多个层次的网格,通过在不同层次的网格上进行迭代计算来逐渐提高解的精度。
多重网格细化的优点是可以在保持计算效率的同时提高解的精度。
然而,多重网格细化的实现较为复杂,需要进行网格层次间的数据交换和差值操作。
因此,多重网格细化主要适用于需要高精度解且计算时间要求较高的问题。
4. 网格细化方案的选择选择合适的网格细化方案取决于具体问题的特点和要求。
在实际应用中,需要根据问题的复杂程度、几何形状的复杂度、精度要求和计算效率等因素综合考虑。
对于简单的几何形状和物理过程,均匀网格细化是一种简单而有效的选择。
对于需要高精度解或处理复杂几何形状和物理过程的问题,自适应网格细化和多重网格细化是更合适的选择。
结论网格细化是提高数值模拟准确性和精度的重要方法之一。
Zhang快速并行细化算法最近的研究涉及获取二值图像骨架(图象的中轴线),网上找到许多方法,Zhang快速并行细化算法是出现次数最多的算法,看了几篇博客,又下载了提出这个算法的文献,感觉这个方法很容易理解,编程也容易,其实最后也没花多少时间就成功了,VB6.0编写的程序,用到了函数库MatrixVB,这里分享一下心得。
1.算法简介图1 8邻域系统图1表示以P1为中心的8邻域系统,P2~P9代表与P1相邻的8个像素点,1.1 细化步骤1删除同时满足下列条件的边界点:①2≤N(P1)≤6;②S(P1)=1;③P2×P4×P6=0;④P4×P6×P8=0;其中:N(P1)是P1的非零邻点的个数,S(P1)是以P2,P3,…,P9,P2为序时这些点的值从0到1变化的次数。
1.2 细化步骤2删除同时满足下列条件的边界点:①2≤N(P1)≤6;②S(P1)=1;③P2×P4×P8=0;④P2×P6×P8=0;以上两步操作构成一次迭代,直至没有点再满足标记条件,这时剩下的点组成区域即为细化后骨架。
2.程序及细化结果用VB6.0编写的程序,用到了函数库MatrixVB(需要的话可以到网上去搜,很老的东西了)。
2.1 模块部分这部分包括自定义数据类型(相当于C语言里的结构体),定义了一些函数。
Option ExplicitType necessary_conditions '4个条件N_P1 As IntegerS_P1 As IntegerMult_P2P4P6 As IntegerMult_P4P6P8 As IntegerMult_P2P4P8 As IntegerMult_P2P6P8 As IntegerEnd TypeType positionx As Integery As IntegerEnd Type'**************************************************************'计算4个条件的值'输入:P1点的坐标,待处理的二值图binary_image'输出:4个条件的值'************************************************************** Function obtain_necessary_conditions_value(x%, y%, binary_image) As necessary_conditionsDim i%, cnt1%, cnt2%, neighbor8%(9)'--------------------条件1---------------------If binary_image(x - 1, y) = 1 Then neighbor8(2) = 1If binary_image(x - 1, y + 1) = 1 Then neighbor8(3) = 1If binary_image(x, y + 1) = 1 Then neighbor8(4) = 1If binary_image(x + 1, y + 1) = 1 Then neighbor8(5) = 1If binary_image(x + 1, y) = 1 Then neighbor8(6) = 1If binary_image(x + 1, y - 1) = 1 Then neighbor8(7) = 1If binary_image(x, y - 1) = 1 Then neighbor8(8) = 1If binary_image(x - 1, y - 1) = 1 Then neighbor8(9) = 1cnt1 = 0cnt2 = 0'--------------------条件2---------------------For i = 2 To 9If neighbor8(i) = 1 Then cnt1 = cnt1 + 1Next i'--------------------条件3---------------------For i = 2 To 9 - 1If neighbor8(i) - neighbor8(i + 1) = -1 Then cnt2 = cnt2 + 1Next iIf neighbor8(9) - neighbor8(2) = -1 Then cnt2 = cnt2 + 1'--------------------条件4---------------------obtain_necessary_conditions_value.N_P1 = cnt1obtain_necessary_conditions_value.S_P1 = cnt2obtain_necessary_conditions_value.Mult_P2P4P6 = neighbor8(2) * neighbor8(4) * neighbor8(6)obtain_necessary_conditions_value.Mult_P2P4P8 = neighbor8(2) * neighbor8(4) * neighbor8(8)obtain_necessary_conditions_value.Mult_P2P6P8 = neighbor8(2) * neighbor8(6) * neighbor8(8)obtain_necessary_conditions_value.Mult_P4P6P8 = neighbor8(4) * neighbor8(6) * neighbor8(8)End Function'******************************************************************'Zhang快速并行细化算法'输入:待处理的二值图binary_image_buf'输出:细化后的二值图binary_image_buf'***************************************************************** Function Zhang_thinning_method(binary_image_buf)Dim rows%, cols%, delete_cnt%Dim i%, j%, k%Dim sign(5000) As position, n1%, n2%, n3%, n4%, n5%, n6%rows = UBound(binary_image_buf, 1)cols = UBound(binary_image_buf, 2)For k = 1 To 800'--------------------迭代的前半部分------------------------For i = 1 To rowsFor j = 1 To colsIf binary_image_buf(i, j) = 1 Thenn1 = obtain_necessary_conditions_value(i, j, binary_image_buf).N_P1n2 = obtain_necessary_conditions_value(i, j, binary_image_buf).S_P1n3 = obtain_necessary_conditions_value(i, j, binary_image_buf).Mult_P2P4P6n4 = obtain_necessary_conditions_value(i, j, binary_image_buf).Mult_P4P6P8If (n1 >= 2 And n1 <= 6) And n2 = 1 And n3 = 0 And n4 = 0 Thendelete_cnt = delete_cnt + 1sign(delete_cnt).x = isign(delete_cnt).y = jEnd IfEnd IfNext jNext iIf delete_cnt = 0 Then GoTo finishFor i = 1 To delete_cntbinary_image_buf(sign(i).x, sign(i).y) = 0Next idelete_cnt = 0'-------------迭代的后半部分--------------------------------For i = 1 To rowsFor j = 1 To colsIf binary_image_buf(i, j) = 1 Thenn1 = obtain_necessary_conditions_value(i, j, binary_image_buf).N_P1n2 = obtain_necessary_conditions_value(i, j, binary_image_buf).S_P1n3 = obtain_necessary_conditions_value(i, j, binary_image_buf).Mult_P2P4P8n4 = obtain_necessary_conditions_value(i, j, binary_image_buf).Mult_P2P6P8If (n1 >= 2 And n1 <= 6) And n2 = 1 And n3 = 0 And n4 = 0 Thendelete_cnt = delete_cnt + 1sign(delete_cnt).x = isign(delete_cnt).y = jEnd IfEnd IfNext jNext iIf delete_cnt = 0 Then GoTo finishFor i = 1 To delete_cntbinary_image_buf(sign(i).x, sign(i).y) = 0Next idelete_cnt = 0Next kfinish:End Function2.2 窗体部分Option ExplicitPrivate Sub Command1_Click()Dim bin, x1, y1, x2, y2, cnt1%, cnt2%Dim binary_image_buf%(), rows%, cols%Dim i%, j%Set x1 = zeros(5000, 1)Set y1 = zeros(5000, 1)Set x2 = zeros(5000, 1)Set y2 = zeros(5000, 1)bin = vbload(App.Path & "\bin4.txt")’导入二值图rows = Size(bin).r1(1)cols = Size(bin).r1(2)ReDim binary_image_buf(rows, cols), binary_3D_buf(rows, cols, 6)For i = 1 To rowsFor j = 1 To colsbinary_image_buf(i, j) = bin(i, j).r1(1)Next jNext iCall Zhang_thinning_method(binary_image_buf)’调用Zhang快速并行细化算法For i = 1 To rowsFor j = 1 To colsIf binary_image_buf(i, j) = 1 Then’找出骨架像素点的坐标cnt1 = cnt1 + 1x1(cnt1) = iy1(cnt1) = cols + 1 - jEnd IfIf bin(i, j).r1(1) = 1 Then’找出原二值图为1的点的坐标cnt2 = cnt2 + 1x2(cnt2) = iy2(cnt2) = cols + 1 - jEnd IfNext jNext ix1 = x1(linspace(1, cnt1, cnt1))y1 = y1(linspace(1, cnt1, cnt1))x2 = x2(linspace(1, cnt2, cnt2))y2 = y2(linspace(1, cnt2, cnt2))plot x2, y2, "k.", "markersize", 1’绘制原二值图hold "on"plot x1, y1, "r*", "markersize", 1’绘制骨架mset gca, "color", "w"End Sub3.运行结果。
一种简便准确的指纹图像细化算法
陈铁;刁婷婷
【期刊名称】《自动化与仪器仪表》
【年(卷),期】2005()1
【摘要】细化广泛应用于图像处理和模式识别。
在自动指纹识别系统中,细化占有重要的地位。
本文讨论了一种新的形态学细化算法,从原理上分析了算子应用顺序对细化效果的影响,结合试验分析出效果最好的细化算法。
【总页数】4页(P63-65)
【关键词】细化算法;指纹图像;自动指纹识别系统;模式识别;图像处理;算子;顺序;形态学;效果;影响
【作者】陈铁;刁婷婷
【作者单位】武汉大学电气工程学院
【正文语种】中文
【中图分类】TH21;TP391.41
【相关文献】
1.一种改进的指纹图像细化后算法 [J], 赵磊;焦铬;谢新华;李琳
2.一种有效的指纹图像细化算法 [J], 何晶;范九伦
3.一种新的指纹图像快速细化算法 [J], 廖开阳;张学东;章明珠
4.一种改进的指纹图像细化算法 [J], 肖晓丽;王珂铃;李振
5.一种改进的指纹图像细化及特征提取算法 [J], 郝俊杰;郭宏
因版权原因,仅展示原文概要,查看原文内容请购买。
骨架线算法-概述说明以及解释1.引言1.1 概述概述:骨架线算法(Skeletonization algorithm)是一种用于提取物体或图像形状中主要特征的计算方法。
它通过将图像或物体的边界区域简化为其主要骨架,从而实现对形状的抽象和表示。
骨架线算法在图像处理、模式识别、计算机视觉等领域具有广泛的应用。
骨架线算法的主要思想是通过去除图像中的冗余信息,保留物体或形状的主要结构和特征。
这种算法可以有效地减少数据量,简化图像表示,同时保持重要的拓扑关系和形状特征。
通过提取物体的骨架线,我们可以得到物体的主轴或中心线,从而更好地理解和分析对象的形态、结构和特征。
骨架线算法的原理通常基于图像的连通性和几何形状的局部特征。
常见的骨架线算法包括细化算法、距离变换算法、分水岭算法等。
这些算法可以根据不同的需求和应用场景选择合适的方法进行骨架线提取。
骨架线算法在许多领域都有广泛的应用。
在医学影像中,骨架线算法可以用于血管或神经的提取和分析,有助于辅助诊断和手术规划。
在图像识别和模式分类中,骨架线算法可以用于特征提取和形状匹配,提高图像的分类准确率。
此外,骨架线算法还在工程设计、地质勘探、数字艺术等方面具有重要的应用价值。
本文将介绍骨架线算法的定义、原理和应用。
通过对骨架线算法的深入讨论,我们可以更好地理解和应用这一算法,为相关领域的研究和应用提供指导和参考。
文章结构部分的内容可以按照如下方式撰写:1.2 文章结构本文按照以下结构进行组织和阐述:1. 引言在引言部分,我们将对骨架线算法进行一个概述,介绍其背景和基本概念。
我们将讨论骨架线算法在图像处理领域中的重要性和应用前景。
2. 正文正文部分主要分为三个部分进行论述。
2.1 骨架线算法的定义首先,我们将详细介绍骨架线算法的定义,并解释其核心思想和基本原理。
我们将探讨骨架线算法的起源以及它与其他相关算法的关系。
2.2 骨架线算法的原理在本部分,我们将深入讨论骨架线算法的原理。
一种快速的扫描铅笔稿图细化算法
彭京亮
【期刊名称】《中国图象图形学报》
【年(卷),期】2000(005)005
【摘要】二维动画计算机辅助制作系统中,在对扫描铅笔稿图进行矢量化后,可以大大提高描线上色的效率,并且能够提取线条和闭包,以便于自动上色和中间帧生成等更高级功能的实现.扫描铅笔稿图的细化是矢量化的第一步,在比较了大量现存的图象细化算法后,提出了一种改进的非迭代线跟踪细化算法.该算法效率较高,只需对图象进行一遍扫描加两遍轮廓跟踪,就能较好地满足二维动画计算机辅助制作系统对细化效率的要求.该文还对算法的时间复杂性进行了详尽分析,并提出对于两类图象噪声和冗余分支的消除方法.
【总页数】6页(P434-439)
【作者】彭京亮
【作者单位】北京大学计算机科学技术研究所文字信息处理技术国家重点实验室,北京,100871
【正文语种】中文
【中图分类】TP391
【相关文献】
1.一种新的图件扫描影像细化算法 [J], 许捍卫;潘松庆
2.一种改进的基于方向图的指纹细化算法 [J], 陶建林;李楠
3.一种适用于工程图的快速细化算法 [J], 谭柏珠;叶邦彦
4.一种地形图快速扫描矢量化方法 [J], 周海燕;郑新奇
5.一种快速的一次扫描细化算法(OSSTA) [J], 吴晓芸;张太怡
因版权原因,仅展示原文概要,查看原文内容请购买。
一种有效的指纹图像细化算法何晶;范九伦【摘要】OPTA方法是一个经典的指纹图像细化方法,针对OPTA法的不足提出改进的OPTA方法能够得到完全细化的指纹图像,细化后图像纹线扭曲小.但是改进的OPTA方法还存在细化后的图像容易产生毛刺的不足,为此提出一组改进模板,即在改进的OPTA模板的基础上增加一组去除毛刺的模板.实验表明,通过该算法得到的细化指纹图像在保持连通性的基础上光滑无毛刺,取得了更为理想的细化结果.【期刊名称】《现代电子技术》【年(卷),期】2008(031)018【总页数】4页(P143-145,148)【关键词】图像处理;细化;模板;毛刺【作者】何晶;范九伦【作者单位】西安邮电学院,陕西,西安,710061;西安邮电学院,陕西,西安,710061【正文语种】中文【中图分类】TP391.41 引言迄今为止,生物特征识别技术已经成为最为方便与安全的识别技术[1]。
由于指纹具有惟一性、稳定性、可采集性、与主体永不分离性等优点,指纹识别成为生物特征识别中关注度很高,应用较多的主要技术[2,3]。
自动指纹识别系统(AFIS)是个人身份认定的一种重要手段。
一个完整的指纹识别系统主要包括:指纹图像采集、滤除图像噪声、对图像进行二值化处理、细化图像、特征点提取和特征点比对等几个部分。
其中,细化是指纹图像预处理中耗时最长、要求最高的一部分。
指纹细化又称骨架化,是自动指纹识别系统中重要的预处理组成部分,细化结果的好坏直接影响特征点提取的有效性。
研究人员已经提出了很多细化方法,按迭代方式可分为串行算法、并行算法和串并行混合算法。
串行细化算法是指每次迭代的结果依赖于像素处理的先后顺序,因而某一像素点的删除或保留与处理顺序有关。
并行细化算法进行细化时可以把相同的判定条件应用于所有的像素点,与处理顺序无关,所以从原理上将优于串行细化算法。
而串并行混合算法就是串行和并行混合的方法。
已经提出的并行细化方法有很多:OPTA细化算法、Hall细化算法、Rosedfeld细化算法、ZR细化算法等[4-7]。
Hilditch细化算法是一种用于二值图像细化(或骨架化)的算法。
以下是一个简单的Python实现:
def hilditch(image):
# 获取图像的宽度和高度
width, height = image.shape
# 创建一个与原图大小相同的掩模,所有值初始化为1
mask = image.copy()
# 遍历原图像
for y in range(height):
for x in range(width):
# 如果当前像素是1,则进行细化操作
if image[x][y] == 1:
# 判断上下左右四个方向是否为0
if (x > 0 and image[x-1][y] == 0) or (x < width-1 and image[x+1][y] == 0):
mask[x][y] = 0
if (y > 0 and image[x][y-1] == 0) or (y < height-1 and image[x][y+1] == 0):
mask[x][y] = 0
# 返回细化后的图像
return mask
这个函数接受一个二值图像作为输入,并返回一个细化后的图像。
在函数中,我们首先创建一个与原图大小相同的掩模,并将所有值初始化为1。
然后,我们遍历原图像中的每个像素,如果当前像素是1,则检查其上下左右四个方向是否为0。
如果是,则将当前像素的值设置为0,表示该像素应该被细化掉。
最后,我们返回细化后的图像。
收稿日期:2002206208 基金项目:国家“九五”重中之重科技攻关资助项目(962B02203) 作者简介:吴丹(19802),女,江西南昌人,中国地质大学(武汉)信息工程学院硕士研究生,研究方向:GIS ,图像处理。
文章编号:100622475(2003)0120006202一种快速准确的细化算法吴 丹(中国地质大学信息工程学院,湖北武汉 430074)摘要:细化广泛应用于图像处理与模式识别。
从细化得到的骨架不但保持了原图像的几何和拓扑特征,而且更重要的是减少了图像的冗余。
细化算法多种多样,本文介绍了一种简单但却具备其它算法优势的细化算法。
本算法仅使用几条简单的规则来决定是否删除像素点,以达到细化的目的。
经计算机模拟该算法对汉字的处理过程,证实其快速且易于实现。
关键词:细化;骨架;相邻像素点;0~1模式数中图分类号:TP391 文献标识码:AA F ast and Accurate Thinning AlgorithmW U Dan(In formation Engineering Faculty ,China University of G eosciences ,Wuhan 430074,China )Abstract :Thinning is widely used in image processing and pattern recognition.The skeleton obtained from thinning not only maintains the geometric and topologic features of the original image ,but als o substantially reduces its redundancy.There are all kinds of thinning alg orithms.This paper introduces a thinning alg orithm ,which is simple yet can maintain the same advantages of other key alg orithms.This alg orithm only uses a very small set of rules of criteria for deleting pixels ,it is faster and easier to implement.K eyw ords :thinning ;skeleton ;neighbor pixel ;0~1pattern number0 引 言细化,也被称之为骨架化,是广泛应用于图像处理与模式识别的一个重要的图像预处理过程。
寻找图像的细化结构是图像处理的一个基本问题,对不同形状的图像目标,如何快速地获得其非畸变骨架,是进行图像目标的形状分析、信息压缩、特征提取、模式识别等应用的前提。
例如在文字识别、地质构造识别、工业零件形状识别或理解中,先要对被处理的图像做细化处理,这样有助于突出形状特点并减少冗余的信息量。
细化算法许许多多,目前依据是否使用迭代运算将其分成两类:第一类是非迭代算法,一次即产生骨架,如基于距离变换的方法、游程长度编码细化等。
第二类是迭代算法,即重复删除图像边缘满足一定条件的像素,最终得到单像素宽骨架。
这类方法依据其检查像素的方法又可再分成串行算法和并行算法,在串行算法中,是否删除像素在每次迭代的执行中是顺序固定的,它不仅仅取决于前次迭代的结果,也取决于本次迭代中已处理过像素的分布情况,而在并行算法中,像素的删除与否与像素在图像中的顺序无关,仅取决于前次迭代的结果。
在经典图像细化算法发展的同时,起源于图像集合运算的形态学细化算法也相应得到发展。
1 骨架的定义一个图像的骨架,是指图像目标中央的骨骼部分,正如动物的骨骼决定了动物的外形一样,图像的骨架描述了图像目标几何及拓扑性质等重要特征。
骨架有以下几种定义方法:定义1:骨架可以用中轴来表示。
设想在t =0时刻,将目标边界各处同时点燃,火的前沿以匀速向目标内部蔓延,当前沿相交时火焰熄灭,火焰熄灭点的集合就构成了中轴(即骨架)。
定义2:在欧氏二值图像的内部任意给定一点,以该点为圆心存在一个最大的圆盘,其整个盘体都在图像的内部,且至少有两点与目标边界相切,则该点便是骨架上的点,所有最大圆盘的圆心构成了图像的骨架(中轴)。
定义3:影响区骨架(SKIZ )。
2 像素点特征像素点是构成图像的基本单元,也是对图像实施各种运算的基本操作单元。
图像目标的形状特征在 2003年第1期计 算 机 与 现 代 化J IS UAN J I Y U XI ANDAIH UA 总第89期很大程度上要取决于其所包含的各像素点的特征以及像素点间的关系。
像素点的特征可由图像值和相邻像素来描述。
2.1 图像值在二值图像上,任一像素(i ,j )的图像值有以下两种可能的取值:{P (i ,j )=0P (i ,j )=1通常情况下,图像值为0表示该像素为背景点,图像值为1表示该像素为前景点。
2.2 非零相邻像素数图像上各像素均有如图1所示的八个相邻像素,各相邻像素及其自身在x 和y 方向上的坐标增量分别为:bi[]={0,0,21,21,21,0,1,1,1}bj[]={0,21,21,0,1,1,1,0,21}则像素(i ,j )的非零像素数为:u (i ,j )=∑8k =1P (i +bi[k ],j +bj[k ])P2P (i -1,j -1)P1P (i ,j -1)P8P (i +1,j -1)P3P (i 21,j )P0P (i ,j )P7P (i +1,j )P4P (i -1,j +1)P5P (i ,j +1)P6P (i +1,j +1)图1 相邻像素及其编号2.3 相邻像素0~1模式数相邻像素0~1模式数是指某像素的相邻像素中沿规定方向(不妨设为逆时针方向)运行一周其相邻像素的图像值从0变为1的次数。
求取相邻像素0~1模式数v (i ,j )的算法如下:v =0;for (k =0;k <9;k ++){a =P (i +bi[k %8],j +bj[k %8]);if (k ==0) a0=a ;if (a !=a0) {v ++;a0=a ;}}v =v Π2;2.4 边界点图像区域的边界点在二值图像的分析和处理中有着特别重要的作用,它是图像区域与背景的分界点。
边界点应满足如下两个条件:{P (i ,j )=1P (i +1,j )=0或{P (i ,j )=1;P (i -1,j )=0或{P (i ,j)=1P (i ,j +1)=0或{P (i ,j )=1;P (i ,j -1)=03 算法对于连通目标来说,细化后最终所剩的骨架应满足以下几个条件:(1)不改变图像中各分量的拓扑邻接关系;(2)保证骨架连通性及单像素宽度;(3)基于“棋盘”或“街区”距离测度;(4)基于(3)的距离关系逼近图像的中轴线。
简而言之,细化就是从原来的图中去掉一些点,但仍要保持原来的形状。
实际上,是保持原图的骨架。
那么怎样判断一个点是否能去掉呢?显然,要根据它的八个相邻点的情况来判断,下面我们举几个例子。
图2 根据某点的八个相邻点的情况来判断该点是否能删除如图2所示,①不能删,因为它是个内部点,我们要求的是骨架,如果连内部点也删了,骨架也会被掏空的;②不能删,和①是同样的道理;③不能删;④不能删,因为删掉后,原来相连的部分断开了;⑤不能删,这样的点是直线的相交点,删掉后会改变原图像拓扑结构;⑥不能删,因为它是直线的端点,如果这样的点删了,那么最后整个直线也被删了,剩不下什么;⑦不能删,因为孤立点的骨架就是它自身。
总结一下,为保证细化图像不改变原图像的几何和拓扑特征,满足以上所列骨架的条件,具备以下特征的前景像素点不删除:(1)填充区域内部点 u (i ,j )Ε7;(2)孤立点 u (i ,j )=0;(3)直线端点 u (i ,j )=1 并且 v (i ,j )=1;(4)直线中间点 u (i ,j )Ε2 并且 v (i ,j )Ε2;(5)填充区域边界点 u (i ,j )Ε2 并且 u (i ,j )Φ8 并且 v (i ,j )=1;(6)填充区域边界交叉点 u (i ,j )>2 并且 v (i ,j )=2。
因此具体算法如下:一幅图像中的一个333区域,如果像素点q =1,下面四个条件如果同时满足,则删除q 。
(1)2Φu (i ,j )Φ6;(2)v (i ,j )=1;(3)v (i -1,j )≠1或者P13P33P7=0;(4)v (i ,j -1)≠1或者P13P33P5=0。
对图像中的每一个点重复这一步骤,直到所有的点都不可删除为止。
即得到目标图像细化骨架。
4 实验结果和结论利用计算机编程实现该算法,对一幅由不同字体组成的汉字图像进行细化处理。
如图3所示,(a )为原图像,(b )为细化后图像。
(下转第10页)72003年第1期 吴丹:一种快速准确的细化算法假设我们要实现这样的功能:在MapCaf é上新加了一个按钮,当用户单击该按钮后,弹出一对话框,允许用户输入街道地址,ArcView 将在图上定位该地址并能亮显它,那么我们就需要编写Avenue 脚本来实现该功能:’获得Web Link 对象wlink =Web Link.The …’检查所需的信息for each i in 0…(self.count 21)key =self.get (i ).get (0).ucase val =self.G et (i ).G et (1)…’检查调色板SafetyOn =truefor each t in viwTheView.G etActiveThemes …’准备地图并将结果传给Map Caf étheFN =viwTheView.ExportT oG if (vr ,xsize ,ysize ,nil ,Safe 2tyOn )Ftype =av.Run (″AVI NET MP.ReturnImageT ype ″,theFN )av.run (″AVI NET MP.K illT oc ″,nil )av.run (″AVI NET MP.MakeT oc ″,viwTheView )Fname =″Map.″+Ftype C onT ype =″image Π″+FtypemapScale =msmx =vr.G etLeft.AsS tring +″,″+vr.G et 2Bottom.AsS tring +″,″+vr.G etRight.AsS tring +″,″+vr.G et 2T op.AsS tringCacheUrl =av.run (″AVI NET MP.WriteCache ″,{theFN ,Fname ,C onT ype})if (CacheUrl <>nil )then scaleS tr =av.run (″AVI NET MP.FloatS tring ″,{mapScale ,15}) wlink.WriteS tring (″Map Load ″++CacheUrl ++mx.quote ++scaleS tr.Quote ++CR +N L )endfile.delete (theFN )viwTheView.G etG raphics.Rem oveG raphic (g )viwTheView.G etG raphics.Rem oveG raphic (brg )viwTheView.G etG raphics.Rem oveG raphic (gt )return true可以根据实际需要按同样的方法添加更多的按钮和功能。