骨架提取算法
opencv contrib的提取骨架方法

一、介绍Opencv contrib是Opencv计算机视觉库的扩展版本,其中包含了许多额外的功能和算法。
在Opencv contrib中,提取图像的骨架是一个常见的应用,它可以用于图像处理、模式识别等领域。
本文将介绍Opencv contrib中提取图像骨架的方法,并对其进行详细的讲解和分析。
二、Opencv contrib的骨架提取方法Opencv contrib提供了多种提取图像骨架的方法,常用的有以下几种:1. Zhang-Suen算法2. Guo-Hall算法3. Thinning算法4. 应用深度学习的骨架提取方法三、Zhang-Suen算法Zhang-Suen算法是一种基于二值图像的骨架提取算法,它是一种迭代算法,通过反复对图像进行细化的操作,最终得到图像的骨架。
这种算法的优点是实现简单,效果稳定,适用于各种形状和尺寸的图像。
但是在某些情况下,Zhang-Suen算法可能会产生一些不完美的骨架,需要结合其他方法进行改进。
四、Guo-Hall算法Guo-Hall算法是另一种常用的骨架提取算法,在实际应用中具有一定的优势。
它通过对图像进行多次腐蚀和膨胀的操作,最终得到图像的骨架。
相比于Zhang-Suen算法,Guo-Hall算法在一些情况下可以得到更为准确的结果,但是其计算复杂度较高,效率相对较低。
五、Thinning算法Thinning算法是一种基于边界概念的骨架提取方法,它通过不断删除图像边界上的像素点,最终得到图像的骨架。
这种方法的特点是不依赖于特定的形态学操作,适用于各种类型的图像。
但是Thinning算法对图像的选择和参数设置较为敏感,需要根据具体的应用场景进行调整。
六、应用深度学习的骨架提取方法近年来,随着深度学习技术的发展,越来越多的研究开始将深度学习应用于图像骨架提取领域。
利用深度学习网络结构,可以更加精确地提取图像的骨架,并且适用于复杂的图像场景。
这种方法的优势在于其对复杂图像具有良好的鲁棒性和稳定性,但是需要大量的训练数据和计算资源,且对算法的调整和优化具有一定的难度。
多边形骨架提取算法 python

多边形骨架提取算法 python
多边形骨架提取算法在计算机视觉和图像处理领域中被广泛应用,用于提取多边形的中轴线或骨架结构。
在Python中,有几种常
见的算法和库可以用来实现多边形骨架提取,下面我将从多个角度
介绍几种常见的方法。
1. Medial Axis Transform (MAT),中轴变换是一种常见的多
边形骨架提取算法。
在Python中,你可以使用scikit-image库来
实现MAT。
该库提供了medial_axis函数,可以直接对多边形进行
中轴变换处理。
2. Voronoi Diagram,沃罗诺伊图也可以用于多边形骨架提取。
你可以使用SciPy库中的spatial模块来计算Voronoi图,然后从Voronoi图中提取多边形的骨架结构。
3. Distance Transform,距离变换也是一种常见的多边形骨架
提取方法。
你可以使用OpenCV库或者scikit-image库中的
distance_transform_edt函数来计算多边形的距离变换,然后从中
提取骨架。
4. Skeletonization Algorithms,还有一些专门用于骨架提取的算法,比如Zhang-Suen算法、Guo-Hall算法等。
你可以在Python中实现这些算法,或者使用一些开源的图像处理库中已经实现好的算法。
在实际应用中,选择哪种算法取决于你的具体需求和多边形的特征。
每种算法都有自己的优缺点,需要根据具体情况进行选择。
希望以上信息能够帮助到你,如果有更多问题,欢迎继续提问。
保持特征的平面形状近似骨架的抽取算法

保持特征的平面形状近似骨架的抽取算法1. 引言:介绍问题背景与研究动机- 介绍骨架抽取的意义和应用- 阐述目前存在的问题2. 相关工作:综述骨架抽取算法的发展和应用现状- 介绍骨架抽取常用的技术和方法- 比较并分析不同算法的优缺点3. 提出的算法:详细介绍保持特征的平面形状近似骨架的抽取算法- 描述算法的基本流程和方法- 阐述算法中的关键技术- 提供具体实验数据和结果分析4. 实验结果分析:对比实验结果,验证算法性能- 与其他骨架抽取算法进行对比实验- 分析不同参数设置对算法效果的影响- 展示实验结果并说明结论5. 总结与展望:总结论文研究内容,提出未来研究方向- 回顾论文的研究内容和成果- 分析算法的局限性和可能的改进方向- 展望未来的研究方向和应用场景第1章节:引言骨架抽取是计算机视觉领域中的一个重要分支,它将物体的形态信息压缩为简洁的特征,并且可以用于物体识别、三维重建、动作捕捉等多个应用领域。
骨架抽取的算法涉及到图像处理、图形学和计算机视觉等多个学科领域,因此其研究具有重要理论和应用价值。
特征保持是骨架抽取中的一个重要问题,即如何从原始图像中提取出物体的骨架并且保持物体特征不失真,如尺寸、形态、曲率等。
对于平面形状物体的骨架抽取来说,特别注重其保持形态不变的问题,这被应用于数码版画的图像生成、工程中平面设计的图形优化等领域。
然而,由于目前骨架抽取算法的基础模型无法完美满足这一需求,因此平面形状骨架提取仍然是一个开放的挑战。
本文针对平面形状骨架抽取中的特征保持问题,提出了一种基于形态匹配和骨架抽取的特征保持的平面形状近似骨架抽取算法。
通过对平面形状特征的分析和探索,本文提出一种基于三角形分解的平面形状逼近方法、对应点匹配方法和骨架抽取方法,可以有效提取出平面形状的特征,并且具有较好的几何质量和保持特征的能力。
同时,本文在三组不同数据集上进行了实验验证,结果表明该方法的骨架抽取质量优于现有的算法,并且是一种具有实际应用价值的算法。
骨架线算法-概述说明以及解释

骨架线算法-概述说明以及解释1.引言1.1 概述概述:骨架线算法(Skeletonization algorithm)是一种用于提取物体或图像形状中主要特征的计算方法。
它通过将图像或物体的边界区域简化为其主要骨架,从而实现对形状的抽象和表示。
骨架线算法在图像处理、模式识别、计算机视觉等领域具有广泛的应用。
骨架线算法的主要思想是通过去除图像中的冗余信息,保留物体或形状的主要结构和特征。
这种算法可以有效地减少数据量,简化图像表示,同时保持重要的拓扑关系和形状特征。
通过提取物体的骨架线,我们可以得到物体的主轴或中心线,从而更好地理解和分析对象的形态、结构和特征。
骨架线算法的原理通常基于图像的连通性和几何形状的局部特征。
常见的骨架线算法包括细化算法、距离变换算法、分水岭算法等。
这些算法可以根据不同的需求和应用场景选择合适的方法进行骨架线提取。
骨架线算法在许多领域都有广泛的应用。
在医学影像中,骨架线算法可以用于血管或神经的提取和分析,有助于辅助诊断和手术规划。
在图像识别和模式分类中,骨架线算法可以用于特征提取和形状匹配,提高图像的分类准确率。
此外,骨架线算法还在工程设计、地质勘探、数字艺术等方面具有重要的应用价值。
本文将介绍骨架线算法的定义、原理和应用。
通过对骨架线算法的深入讨论,我们可以更好地理解和应用这一算法,为相关领域的研究和应用提供指导和参考。
文章结构部分的内容可以按照如下方式撰写:1.2 文章结构本文按照以下结构进行组织和阐述:1. 引言在引言部分,我们将对骨架线算法进行一个概述,介绍其背景和基本概念。
我们将讨论骨架线算法在图像处理领域中的重要性和应用前景。
2. 正文正文部分主要分为三个部分进行论述。
2.1 骨架线算法的定义首先,我们将详细介绍骨架线算法的定义,并解释其核心思想和基本原理。
我们将探讨骨架线算法的起源以及它与其他相关算法的关系。
2.2 骨架线算法的原理在本部分,我们将深入讨论骨架线算法的原理。
基于截线法的快速骨架提取算法

第42卷第7期自动化学报Vol.42,No.7 2016年7月ACTA AUTOMATICA SINICA July,2016基于截线法的快速骨架提取算法高立青1王延章1摘要提出了一种快速的骨架提取算法.该方法首先在轮廓离散曲线演化的基础上,根据显著凸顶点的类型将轮廓多边形进行分块,得到一个主分支轮廓和多个水平分支轮廓;然后分别利用水平截线法和垂直截线法提取骨架的主分支和水平分支;最后将水平分支拼接在主分支上,得到完整的骨架.实验结果表明,该骨架提取算法可以得到连通的骨架,并在Kimia数据集上取得了较好的效果.此外,算法在自然图像上的效果也很好,尤其适用于视频中的行人骨架提取.与经典骨架提取算法相比,该算法的时间复杂度较低,可以满足实时处理的要求.关键词近似骨架提取,离散曲线演化,显著闭合轮廓,连通骨架引用格式高立青,王延章.基于截线法的快速骨架提取算法.自动化学报,2016,42(7):1100−1112DOI10.16383/j.aas.2016.c150188A Fast Algorithm of Skeleton Extraction Based on Secant Line MethodGAO Li-Qing1WANG Yan-Zhang1Abstract A fast skeleton extraction algorithm is proposed in this paper.Firstly,some vertices of the polygon contour are labeled as salient convex vertices by using discrete curve evolution,then the polygon contour is partitioned into a main branch and several horizontal branches according to the types of these salient convex vertices.Secondly,the horizontal secant lines method is used to get the skeleton of the main branch and the vertical secant line method is used to obtain the skeletons of horizontal branches separately.Finally,by connecting the skeletons of horizontal branches to main branch skeleton,thefinal skeleton of a given contour is obtained.Experimental results show that the proposed skeleton extraction algorithm has good performance on Kimia data set.In addition,results on pedestrian video are presented to show that the proposed algorithm performs well on natural images,too.Furthermore,the time complexity of the algorithm is lower than those of other classical algorithms and it satisfies the requirement of real-time processing of videos.Key words Approximate skeleton,discrete curve evolution,salient closed contour,connected skeletonCitation Gao Li-Qing,Wang Yan-Zhang.A fast algorithm of skeleton extraction based on secant line method.Acta Automatica Sinica,2016,42(7):1100−1112物体识别是计算机视觉领域最重要的问题之一.目前识别率较高的方法是基于纹理、颜色等局部特征的机器学习方法,而这些向量形式的特征并不是我们人类可以直接理解的特征.形状是人类视觉认知的主要特征之一,基于形状的匹配方法[1−3]已被很多学者应用于物体识别、字符识别和图像检索等领域中.形状表示作为计算机视觉的基本问题尽管已经被研究了几十年,近些年来国内外对它的研究依然很活跃.形状主要有点集、轮廓和骨架三种描述方式.其中,基于骨架的表示方式是一种将形状理想化细化的一种方式,它不仅包含了原物体的几收稿日期2015-04-10录用日期2016-02-28Manuscript received April10,2015;accepted February28,2016“十二五”国家科技支撑计划重点项目(2013BAK02B06-03)资助Supported by Key Project in the National Science&Technol-ogy Pillar Program During the Twelfth Five-year Plan Period (2013BAK02B06-03)本文责任编委黄庆明Recommended by Associate Editor HUANG Qing-Ming1.大连理工大学管理与经济学部信息与决策技术研究所大连116024 1.Institute of Information and Decision Technology,Faulty of Management and Economics,Dalian University of Technology, Dalian116024何特征,还保留了原物体的拓扑结构;骨架作为一种全局特征,可以用图模型简练地表达,用骨架清晰地表示出物体的结构特征具有极其重要的意义.因此,骨架的提取和描述吸引了大量学者的关注,并取得了很多重要的研究成果.例如,2009年Bai等[4]通过学习同类物体的骨架信息实现目标的检测;文献[5–9]实现了基于骨架的形状分类;文献[10]在文献[11]所提的骨架思路基础上,基于离散曲线演化进行剪枝,并实现手写字符识别等.骨架,又称为物体的中轴(Medial axis)[12].传统骨架提取方法主要分为五种类型[13]:1)拓扑细化算法(Topology thinning)[14−15],又称模拟火烧稻草法.此类算法主要思路是:从所有边界同时向轮廓内部进行细化,直至得到一维骨架.拓扑细化算法的优点是能得到连通的骨架,保持了原物体的拓扑结构,且实现起来简单,但是它对边界噪声较敏感,易产生很多较小的分支.2)基于Voronoi图的离散域算法[16−17],即将轮廓多边形内部最大圆盘中心的轨迹作为骨架点.7期高立青等:基于截线法的快速骨架提取算法1101Voronoi图方法所提取的骨架精确,但是易受到边界噪声的影响,并且时间复杂度较高,不具有鲁棒性.3)基于迭代收缩物体轮廓算法[18−20].该方法直接对近似的形状多边形进行对称轴计算,容易受边界噪声影响,并且很难处理有洞的物体形状的骨架.4)基于距离变换及其改进算法[21−25].该类算法的主要思路是:首先生成原始模型的距离场,然后提取并连接距离场中的局部极值点,最后适当调整细化得到骨架.该类算法可以提取准确的骨架点,但是时间复杂度较高.5)基于数学形态学算法[26−29].该方法可以获得精确的骨架,但时间复杂度较高.骨架化算法存在的主要问题是对轮廓细节过于敏感,容易产生很多小的分支,从而导致后续的识别工作几乎无法进行.人类视觉总是可以仅关注物体骨架的主要分支,而忽略一些由于边界轮廓微小变化产生的小分支.因此在骨架化的同时需要对骨架进行剪枝,目前较好的剪枝效果为Bai等提出的基于离散曲线演化[30]的骨架剪枝算法[31]和Shen等提出的基于贝叶斯后验概率的剪枝算法[32],所应用的骨架是采用距离变换[33]方法得到的.虽然这两种算法提取的骨架很精确,并且没有细小分支,但是其算法复杂度较高,运行速度相对较慢.由于在视频监控应用中,智能监控的需求是实现近似实时的对关键事物进行识别和行为分析,因此作为基础性算法的骨架化算法需要满足实时处理要求,这是传统骨架化算法所不能实现的.为满足实时性要求,本文提出一种快速的骨架提取算法.本文算法的主要框架为:在轮廓多边形离散曲线演化的基础上,根据显著凹凸顶点将轮廓多边形进行分块分类;然后选择平行线族扫描每一个轮廓块,用割线的中点来近似最大内接圆圆心作为骨架点;最后连接骨架点得到连通的骨架.虽然本文方法得到的骨架点位置并不是很精确的,但对形状识别的影响较小,而且在对自然图像的处理中具有良好的效果,尤其是在运动行人的骨架提取中,文中算法所提取的骨架效果良好,对于后期行人的行为分析具有一定的实用性.重要的是,与传统算法相比,该算法时间复杂度低,当研究的对象是视频图像时,算法可以达到实时性要求.1骨架提取方法为了降低骨架提取算法的时间复杂度,本文主要采用了平行截线法来近似得到形状中轴,即用一族平行线截取轮廓,并用截线段的中点来近似轮廓的内接圆圆心,以下简称截线法.本文中骨架提取算法的主要实现思路为:首先得到二值图像的轮廓,当处理对象为视频时,采用背景差分法提取出前景(二值图像);在对轮廓预处理之后,基于离散曲线演化,得到轮廓多边形上对曲线形状影响较大的凹凸顶点,从而实现原轮廓多边形的分割与分段;其次,将对曲线形状贡献较大的凸顶点作为骨架图模型中的端节点,利用截线法对闭合轮廓块进行中轴(骨架点)提取.最后连接骨架点得到连通的骨架.本文方法提取出的每个骨架分支均是物体形状的主要分支,从而为物体识别及行为分析提供了较好的全局特征.1.1轮廓的表示本文采用梯度方法提取二值图像中物体的边缘并通过边缘扫描得到轮廓链.单连通区域的轮廓只包含一个闭合的轮廓,而多连通区域的轮廓可以包含多个闭合轮廓.为了方便起见,本文将轮廓定义为多边形无向图的集合,并做如下符号化规定.定义1.无向图C:=G(V,E),其中,V= {s0,s1,···,s n−1}为顶点集,E={(s j−1,s j):j= 0,1,···,n−1,下标对n取模}为边集,则称该无向图C为闭合轮廓.多个闭合轮廓的并称为物体轮廓,记为C=C1∪C2∪···∪C m,其中C i(1≤i≤m)为闭合轮廓,物体轮廓的点集V(C)=∪C∈C V(C),物体轮廓的边集E(C)=∪C∈C E(C).1.2轮廓的离散曲线演化在图像处理中,物体的轮廓线不可避免地受到边界噪声的影响,同时轮廓上一些细小的突起总是会产生小的骨架分支.通常这些小的骨架分支不能描述物体的不变特征,而且会对识别过程造成一定的干扰,导致识别不准确.在理论和实验两方面,离散曲线演化已经被证明是一种有效删除噪声点的方法[30].离散曲线演化是一种递归删除对多边形形状贡献最小的点,从而不断简化多边形的方法,通过不断演化的过程可以得到多层次的轮廓多边形,进而得到轮廓上显著的凹凸顶点,即对轮廓形状贡献较大的点,基于该显著凸顶点可以实现对原轮廓的分段.对于一条闭合轮廓C, V(C)=(s0,s1,···,s n−1),E={(s j−1,s j):j= 0,1,···,n−1,下标对n取模},离散曲线演化对每一个顶点s i定义一种对形状贡献的度量:K(s i)=β(s i)l(e i−1)l(e i)l(e i−1)+l(e i)(1)其中,e i−1表示连接点s i−1和点s i的直线段,e i 表示连接点s i和点s i+1的直线段,如图1所示. l(e i−1)和l(e i)分别表示为线段e i−1和线段e i的长度.β(s i)表示顶点s i处线段e i−1和线段e i偏转角的弧度值(下标均对n取模).顶点的K值越大,代表了该顶点对形状的贡献越大.1102自动化学报42卷图1顶点s i处的离散曲线演化Fig.1Discrete curve evolution on vertex s i轮廓离散递归演化过程(DCE(C0)):1)依据式(1)计算C0中所有顶点的K值;2)从C0中删除K值最小的顶点,重新计算并更新该点相邻的两个顶点的K值;3)判断当前最小K值是否大于等于阈值K∗;成立则执行4),否则转至2);4)递归结束.定义2.一个闭合轮廓C0,对C0进行离散曲线演化得到新的闭合轮廓,记为DCE(C0)=C∗,则称C0为原始闭合轮廓,C∗为显著闭合轮廓, V(C∗)⊂V(C0).如果点s∈V(C0)∩V(C∗),则称s为C0中的显著顶点,如果s在C∗中为凸的,则称s为C0中的显著凸顶点,反之称s为C0中的显著凹顶点.定义3.给定物体轮廓C,将C中每个闭合轮廓分别执行离散曲线演化后,得到的显著闭合轮廓的并称为物体显著轮廓,记为DCE(C)=C∗.为了有效地去除骨架中的细小分支,与文献[31]中的方法相同,本文选择显著凸顶点作为轮廓分段的分段点,将轮廓分段.只有截线段的两个端点位于不同的轮廓分段时,该截线的中点才被保留下来. (注:当两个显著凸顶点在原闭合轮廓中相邻时,本文方法选择这相邻两点的中点作为分段点,而不是将两个点均作为分段点.因为实验发现在原闭合轮廓中相邻的两个显著凸顶点通常使得后续算法产生多余的分叉.)1.3轮廓的分割由于水平截线法无法提取出骨架的水平分支,轮廓的水平突起会导致水平截线骨架点的截线半径出现急剧增长,因此需要将轮廓C进行分块.定义4.显著闭合轮廓中的凸顶点,如果该点在显著轮廓中的两条邻边位于水平线的上下两侧,则称为I型显著凸顶点.显著闭合轮廓中的凸顶点,如果该点在显著轮廓中的两条邻边位于水平线的同一侧,则称为II型显著凸顶点.I型和II型显著凸顶点的结构如图2所示.图2显著凸顶点的分类Fig.2Classification of salient convex vertices由定义4可知,轮廓中的显著凸顶点分类为两类,I型显著凸顶点和II型显著凸顶点.由于I型显著凸顶点关联的两条边在不同的轮廓分段上,因此只有垂直截线才能够得到I型显著凸顶点连接的骨架分支,该分支是趋于水平的.相反地,对于一个水平分支,其端点对应的显著凸顶点的两条邻边必然是一条在水平线上方,一条在水平线下方.因此,I 型显著凸顶点对应着水平分支.为了将水平分支分割出来,只需将I型显著凸顶点分割出来,因此需要找到I型点两端的分割点;1)若I型显著凸顶点两端分别连接着一个显著凹顶点,则这两个凹顶点作为分割点;2)若I型显著凸顶点某一端连接着一个II型显著凸顶点,若这两点间存在凹顶点,则该凹顶点作为分割点,否则选择夹角最大的凸顶点作为分割点.连接这两个分割点,即可将水平分支轮廓从原轮廓中分割出来,剩下的作为主分支轮廓.分割出的每一个水平分支轮廓中的显著凸顶点都是I型的,主分支轮廓中的显著凸顶点都是II型的.(注:对于只有I型显著凸顶点而没有II型显著凸顶点的轮廓,可以将轮廓的所有x坐标和y坐标交换,得到转置后的轮廓,从而将I型显著凸顶点转化为II型显著凸顶点,然后再进行处理.)1.4近似骨架模型为满足实时性要求,本文所提取的骨架点与传统方法骨架化有一定区别,主要采用截线段的中点7期高立青等:基于截线法的快速骨架提取算法1103来代替最大内切圆圆心作为骨架点.因此需要对骨架点及其获取方式进行重新定义.本文算法将采用水平截线法得到主分支轮廓的骨架,用垂直截线法得到水平分支轮廓的骨架.水平截线法与垂直截线法是完全类似的,这里我们只讨论水平截线法.定义5.给定一个物体轮廓C ,设水平直线y =i与C 的交点为p 个,记为x i 1,x i 2,···,x ip (按x 坐标从小到大排序),计算中点m i j =(x i j +x ij +1)/2,其中0≤j ≤p −1;若点m i j 位于轮廓内部,并且x j 和x j +1满足:1)位于不同的闭合轮廓上;2)或者位于同一闭合轮廓的不同轮廓分段上,则称点m i j 为轮廓C 的骨架点,称点x i j 和点x ij +1为骨架点m i j 的生成点,称点x i j 到点x ij +1的距离的一半为m i j 的截线半径.因为在用平行于两底的平行线族截取梯形轮廓时,得到的骨架点在同一条直线上,所以水平截线法只需选择过轮廓顶点的水平线.例如,图3(a)为原始轮廓的一部分,其中顶点A,B,C,D 为轮廓多边形中的四个顶点,过顶点C 的水平截线中点为E ,过顶点B 的水平截线中点为G ,则由于截线中点F 的两个生成点分别落在边l 2和l 5上,顶点F 必然会落在直线段EG 上,所以过点F 的水平截线是多余的.因此仅需计算并保留生成点至少有一个是轮廓顶点的骨架点.图3水平截线法的截线中点类型Fig.3Types of middle points of horizontalsecant segments定义6.当骨架点的两个生成点至少有一个点为闭合轮廓的顶点时,称这个骨架点为有效骨架点.同时将显著凸顶点也记为有效骨架点,主分支轮廓中所有有效骨架点的集合记为V m .由于下文中算法仅考虑有效骨架点的生成与连接,因此将有效骨架点简称为骨架点.定义骨架点对应的两个函数来确定V m 中骨架点间的邻接关系.函数u,d :V m →E (C )×E (C ),对于任意x ∈V m ,定义u (x )=(u l ,u r ),其中u l 为过x 的截线段(以左右生成点为端点)在微小上移后左端点所在的边,u r 为过x 的截线段在微小上移后右端点所在的边.类似地,定义d (x )为二元组(d l ,d r ),其中d l 为过x 的截线段(以左右生成点为端点)在微小下移后左端点所在的边,d r 为过x 的截线段在微小下移后右端点所在的边.定义7.定义集合E m ={(x,y ):x,y ∈V m ∧ u (x )=d (y )∨d (x )=u (y ) }为骨架的边集,则无向图(V m ,E m )称为本文算法提取出的主分支轮廓的骨架.如图3(a)中,对于骨架点E ,u (E )=(l 2,l 6),d (E )=(l 2,l 5),对骨架点G ,u (G )=(l 2,l 5),d (G )=(l 3,l 5),由于d (E )=u (G ),所以E 和G 之间有连边.根据骨架点的两个生成点的邻边类型,可以将骨架点分为三类:骨架端点、骨架衔接点和普通骨架点.1)若骨架点是II 型显著凸顶点,如图2(b)所示,称这样的骨架点为骨架端点.并规定显著凸顶点C 有u (C )=(l 1,l 2),d (C )=∅;显著凸顶点D 有u (D )=∅,d (D )=(l 1,l 2).2)骨架点至少有一个生成点是轮廓的顶点S ,若:a)点S 的两条邻边都在水平线上方,或者都在水平线下方.如图4(a)中C,E 两点,骨架点C 和骨架点E 公共的生成点B 的两条邻边均在水平线下方.则u (C )=(l 2,l 5),d (C )=(l 2,l 3);u (E )=(l 2,l 5),d (E )=(l 4,l 5).b)点S 一条邻边是水平的,且该水平线的两条邻边都在水平线上方,或者都在水平线下方.如图4(b)中E,F 两点,骨架点E 的右生成点A 有一条水平邻边AB ,且该邻边AB 的两条邻边l 2,l 3均在水平线上方.则u (E )=(l 1,l 2),d (E )=(l 1,l 4);u (F )=(l 3,l 4),d (F )=(l 1,l 4).图4衔接截线中点Fig.4Connecting middle points of horizontalsecant segments由于这类骨架点通常连接到骨架的分叉点上,所以称这类骨架点为骨架衔接点.3)既不是骨架端点也不是骨架衔接点的骨架点称为普通骨架点,即该骨架点的生成点或者落在一条边上,或者为轮廓的顶点,且这个顶点的一条邻边1104自动化学报42卷在水平线上方,另一条邻边在下方.1.5骨架的拼接在用水平截线法得到主分支骨架,用垂直截线法得到水平分支骨架后,通过将多个水平分支骨架拼接在主轮廓骨架上,便可以得到连通的整体骨架.拼接方法具体描述为:在分割水平分支时将分割线的中点S 人为地标注为水平分支轮廓的显著凸顶点,并作为该水平分支轮廓的轮廓分段点,即中点S 为水平分支骨架的一个端点.在主分支轮廓中,将中点S 标注为主分支轮廓多边形的顶点,当对主分支轮廓多边形采用水平截线法时,会产生一个以点S 为生成点的骨架点X .在得到主分支骨架和水平分支骨架后,X 为主分支骨架中的一个骨架点,而S 为水平分支骨架的一个端点,通过连接X 与S 便可实现水平分支骨架与主分支骨架的拼接.例如,在图5(a)中,顶点C 为I 型显著凸顶点,以相邻凹顶点A 和D 作为分割点,将ABCDA 分割出来作为水平分支轮廓,同时将割线AD 的中点L 作为该水平分支轮廓的显著凸顶点,并将L 标记为剩余轮廓的顶点,而作为II 型显著凸顶点的G 点,则不做切分,如图5(b)中所示.通过连接水平分支骨架端点L 和主分支骨架点K ,得到最终骨架,如图5(c)所示.图5水平分支骨架与主分支骨架的拼接Fig.5Connecting of horizontal branches andmain branch2算法的描述及复杂性分析骨架提取算法主要分为轮廓提取、轮廓简化、离散曲线演化、截线法提取骨架四个部分.其中截线法提取骨架又可以分轮廓分割、截线法和骨架拼接三个阶段.算法1和算法2给出了该骨架提取算法的描述,其中算法2为算法1的一个子算法.算法1.骨架提取算法输入.一个连通区域的二值图像输出.一个连通的骨架1)用梯度法提取边缘并通过边缘扫描得到轮廓像素点;2)用贪心算法得到轮廓的多边形近似;3)设置阈值K 0,将K 值过小的多边形顶点删除得到原始轮廓C 0;4)对原始轮廓C 0进行离散曲线演化,得到显著轮廓C ∗;5)将显著凸顶点分类为I 型和II 型;6)根据显著凸顶点的类型,将原始轮廓C 0分割为一个主分支轮廓和多个水平分支轮廓;7)用算法2中的方法提取主分支骨架和水平分支骨架;8)将水平分支骨架拼接在主分支骨架上,得到最终的骨架.算法2.水平截线法输入.一个主分支轮廓C 输出.主分支骨架G (V ,E )1)将C 中的显著凸顶点放到骨架顶点集合V 中;2)按照显著凸顶点对C 进行轮廓分段;3)将C 中顶点的y 坐标从小到大排序,排除重复值得到序列(y 1,y 2,···,y N );4)for i =1;i <N ;i ++do5)将水平线y =y i 上的C 中顶点放到集合U i 中;6)将水平线y =y i 与E (C )中边的所有交点放到集合U i 中;7)对U i 中的点按照x 坐标从小到大排序,并将相邻两点的中点置于截线中点集合V i 中;8)从V i 中删除非有效骨架点;9)对V i 中的每一个骨架点v ,计算函数值u (v )和d (v );10)骨架顶点集合V =V ∪V i ;11)end for12)按照V 中每个顶点的u 值和d 值确定边集合E .算法步骤的复杂度分析:算法1中第1)步轮廓提取的时间复杂度为O(mn )(m,n 为图像的长和宽).算法1中第2)步和第3)步的功能是对轮廓进行简化,设第1)步提取出的轮廓总顶点个数为N 0;第2)步采用贪心算法进行顶点删除实现轮廓的多边形近似,得到新的轮廓顶点数记为N 1;第3)步设定阈值K 0,将轮廓上K 值小于K 0的顶点一次性删除后(非递归删除),得到原始轮廓C 0,顶点个数记为N ,整个过程的时间复杂度为O(N 0).离散曲线演化(算法1第4)步)在原始轮廓C 0基础上进行,采用优先队列实现,每一次迭代选择并删除队列中K 值最小的顶点,同时更新该点两个相邻顶点的K 值,其时间复杂度为O(N log N ).轮廓分割过程中需要扫描轮廓中的所有顶点,时间复杂度为O(N ).截线法需要对原始轮廓中所有顶点的y 坐标进行排序(算法2中第3)步),时间复杂度为O(N log N ).7期高立青等:基于截线法的快速骨架提取算法1105通常情况下水平或垂直截线与轮廓的交点为常数个,所以算法2中第4)∼11)步的时间复杂度为O(N ).算法2第12)步计算骨架的连边集合可以用哈希表实现,对于每个骨架点v 生成两组键值对:定义键为u (v ),对应的值为(v,up );定义键为d (v ),对应的值为(v,down ),其中up,down 为骨架点键的类型.将键相同但是类型不同的骨架点进行连边,使得算法在O(M )的时间内得到最终的骨架,其中M 为骨架点的个数.骨架拼接的时间复杂度为O(k ),k 为骨架分支的个数.通常情况下骨架点个数与轮廓的顶点个数为同一个数量级,因此除轮廓提取外本文算法的时间复杂度为O(N log N )(N 为原始轮廓顶点个数),而除轮廓提取外基于距离变换法的骨架提取算法的时间复杂度仍然为O(mn ).3实验结果与分析在Intel Core i5、CPU 主频1.7GHz 和4GB 内存的64位Windows 7操作系统下,我们基于Mi-crosoft Visual Studio 2010编程平台利用Opencv 函数库对本文算法进行了C++实现.文献[32]中提出的骨架提取算法是目前最好的骨架提取算法之一,该文献的作者提供了算法的Matlab 实现源码.本节首先讨论了本文算法的实现和参数的选取;其次在3个数据集上与文献[32]中算法进行了对比实验;然后,分析了本文算法在运行时间上的优势;最后简要说明本文算法对边界噪声的鲁棒性.3.1算法实现与参数选取根据第2节中的算法描述对本文算法进行实现.算法的输入为一张给定的二值图像,如图6(a)所示.首先调用Opencv 函数库中的轮廓提取函数得到物体的轮廓,如图6(b);然后用贪心算法得到物体轮廓的多边形近似(如图6(c));设定阈值K 0,将对多边形形状贡献度小于K 0的顶点从近似多边形顶点集中删除,从而得到原始轮廓C 0(如图6(d));在原始轮廓C 0基础上进行离散曲线演化,得到其显著凹凸顶点,如图6(e)所示的轮廓中,颜色深的顶点为显著凸顶点,颜色浅的顶点为显著凹顶点;最后在原始轮廓C 0上采用截线法得到轮廓的骨架(如图6(f)),骨架图的骨架点为图上形状内的顶点.由于轮廓预处理中K 0值的大小直接影响了原始轮廓的形状和顶点个数,我们首先考察了不同K 0值对原始轮廓C 0的影响,如图7所示.容易看出,通过设置K 0对多边形中顶点进行过滤,可以使得原始轮廓多边形更加简单,去除轮廓的一些细节变化,即边界噪声.K 0值越大,原始轮廓中的顶点个数N 值越小.因此选择合适的K 0值,不仅可以简化轮廓的细节部分,而且还可以加快后续算法步骤.但若K 0值过大,则不但会导致原始轮廓失去物体本来的形状,而且还会降低所提取的骨架点位置的精确度.根据实验效果,本文中设定K 0为1.5.离散曲线演化过程即迭代删除队列中K 值最小的顶点,并更新该点相邻两顶点的K 值,演化过程停止条件为轮廓上所有顶点的K 值均大于阈值K ∗,此时轮廓上顶点为显著顶点.离散曲线演化中K ∗值影响了显著顶点的个数,最终影响骨架中的分支个数.通过在多个数据集上的实验效果观察,本文中设定K ∗为15.3.2算法的实验结果对比为了考察本文算法在自然场景中的应用效果,本文采集了单人行走视频(帧频24/s)和人体手臂伸张视频(帧频24/s)所提取的前景图片作为骨架提取实验的数据集.针对单人行走数据集,人体手臂伸展数据集和公用数据集Kimia 三个数据集上与文献[32]所提算法进行对比实验.图6算法流程结果Fig.6Procedures of the algorithm。
骨架曲线提取

骨架曲线提取
骨架曲线提取是图像处理中的一种技术,用于从图像中提取目标物体的主要结构或边缘信息。
骨架曲线通常代表目标物体的中轴线或主要骨干,对于形状分析、图像识别和计算机视觉等领域具有重要意义。
以下是一般的骨架曲线提取方法:
1.细化算法(Thinning Algorithm):细化算法是最常见的骨架曲线提取方法之一。
该算法通过迭代,逐渐去除目标物体的边缘像素,直到获得骨架曲线。
经典的细化算法包括Zhang-Suen细化算法和Guo-Hall细化算法。
2.距离变换(Distance Transform):这种方法首先计算图像中每个像素到最近目标物体边缘的距离,然后根据距离信息提取骨架曲线。
距离变换方法不仅用于骨架曲线提取,还广泛应用于形状分析和模式识别。
3.中轴变换(Medial Axis Transform):中轴变换寻找目标物体内部的局部极大值区域,形成中轴线,该线代表了目标的主要结构。
中轴变换方法适用于具有复杂形状的物体。
4.基于梯度的方法:利用图像梯度信息来提取目标的边缘或中轴线。
梯度信息可以通过使用Sobel、Prewitt等滤波器来获取。
5.基于模板匹配的方法:使用特定的模板匹配目标物体的结构,通过匹配过程提取目标物体的骨架信息。
在选择骨架曲线提取方法时,需要考虑目标物体的形状、图像噪声水平、计算效率等因素。
不同的方法适用于不同的场景,因此在实际应用中可能需要尝试多种方法并根据具体情况选择最适合的方法。
枝干骨架提取关键算法的研究

枝干骨架提取关键算法的研究摘要骨架反映了物体的拓扑信息,因而是描述物体和压缩数据的有力工具,在图形学和图像处理中,骨架也很好地保持了网格模型和图像中物体的“骨干”信息,得到了较好的骨架就可以重构物体或模型的原有形态。
本文针对传统的骨架提取算法虽然可以获得物体的中轴,但是存在计算复杂,提取的骨架有很多多余分支或者骨架断裂等缺点,提出了基于高斯混合模型和交互式图像分割技术的用户手绘的草图来辅助识别骨架提取算法。
关键词骨架提取;高斯混合模型;交互式图像分割0 引言骨架提取作为识别物体的一种方法,最初只针对于二维图像,后来也应用于三维模型,但两者的目的是相通的:将二维轮廓或三维面片浓缩为若干曲线的集合,即骨架。
图像物体骨架提取的方法通常分为基于对称轴分析的骨架提取算法、细化算法和形状分解算法。
1 高斯混合模型高斯混合模型(Gaussian Mixture Model)是若干个高斯分布的线性组合,因为单个高斯分布所具有的性质在实际应用中无法完美地与数据契合,但是多个高斯分布通过一定的线性组合的系数组合在一起就可以很好地描述任何分布的实际数据。
高斯混合模型采用高斯概率密度函数精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型,学术界认为任何一个概率分布都可以由多个正态分布或高斯分布逼近和近似。
同时高斯混合模型是若干个单一高斯分布的加权组合,模型中每个高斯分布占据一定的权重并且分别表示数据集在某一方面的聚集分布特征,因而整个高斯混合模型就描述了数据集在全局上的特征分布情况。
2骨架的识别2.1枝干骨架的定义骨架是描述物体主要拓扑结构的有力工具,同样,对于树木来说,枝干结构反映了树木的基本拓扑信息和几何形态,所以枝干骨架很好地表示了枝干分支结构的拓扑以及几何信息。
孙若曦等人利用图像分割、距离变换和最大值抑制的综合方法尽管得到了枝干的中轴,但是其方法需要将图像转化为二值图像,且基于细化的骨架提取会造成骨架断开,失去连通性,这不利于我们寻找枝干的父子关系。
三维模型骨架提取算法研究与实现

背景
随着三维模型处理技术的不断发展,三维模型骨架提取算法的研究也取得了 一定的进展。然而,现有的算法存在一些问题和挑战,如计算量大、实时性差、 对复杂结构处理能力不足等。因此,研究更为高效和可靠的三维模型骨架提取算 法显得尤为重要。
提取算法
本次演示提出了一种基于距离变换的三维模型骨架提取算法。该算法首先对 三维模型进行距离变换,得到每个点的最小距离值,并确定这些值对应的特征点。 然后,通过这些特征点,运用分形维数法计算出骨架的形状和结构。
实验设计与结果
为了验证本次演示提出的方法,我们进行了大量实验。首先,我们收集了一 个包含多种三维CAD模型的数据集,并将其划分为训练集和测试集。然后,我们 训练了卷积神经网络模型,用于提取三维CAD模型的形状特征。
ห้องสมุดไป่ตู้
在特征提取阶段,我们比较了不同的卷积神经网络架构,如VGG、ResNet和 U-Net,以选择最佳的网络结构。同时,我们还研究了不同的表面分割策略对特 征提取效果的影响。在特征检索阶段,我们采用余弦相似度算法对特征向量进行 匹配,并比较了不同图割算法对检索准确率的影响。
2、实验流程及数据处理方法
实验中采用了本次演示提出的基于距离变换的三维模型骨架提取算法,对各 个数据集进行骨架提取。在实验过程中,针对不同类型的数据集,根据其特点和 难点,适当地调整了算法参数,以获得最佳的性能表现。
3、实验结果及分析
通过对比和分析实验结果,我们发现本次演示提出的算法在处理多种类型的 数据集时,均能获得较好的性能表现。在计算效率和准确率方面,该算法也具有 一定的优势。实验结果证明了该算法的有效性和可靠性。
三维模型骨架提取算法研究与 实现
01 引言
03 提取算法 05 结论与展望
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
骨架提取算法
骨架提取算法是一种常用的图像处理算法,它可以从图像中提取出物体的骨架,即物体的主要轮廓线条。
骨架提取算法在计算机视觉、图像识别、机器人等领域有着广泛的应用。
骨架提取算法的基本思想是将物体的轮廓线条缩小到一个像素宽度,然后通过一系列的操作,得到物体的骨架。
这个过程可以分为两个步骤:轮廓线条的细化和骨架的提取。
轮廓线条的细化是指将物体的轮廓线条缩小到一个像素宽度。
这个过程可以通过一些经典的算法来实现,比如Zhang-Suen算法、Guo-Hall算法等。
这些算法都是基于局部像素的形态学操作,可以将轮廓线条细化到一个像素宽度。
骨架的提取是指从细化后的轮廓线条中提取出物体的骨架。
这个过程可以通过一些经典的算法来实现,比如Medial Axis Transform 算法、Distance Transform算法等。
这些算法都是基于距离变换的思想,可以将轮廓线条转换成距离场,然后通过一些操作,得到物体的骨架。
骨架提取算法的优点是可以提取出物体的主要轮廓线条,可以减少图像处理的复杂度,提高图像处理的效率。
同时,骨架提取算法还可以用于物体的形状分析、物体的匹配等领域。
骨架提取算法的应用非常广泛,比如在计算机视觉领域,可以用于物体的识别、跟踪、分割等;在机器人领域,可以用于机器人的导航、路径规划等;在医学领域,可以用于医学图像的分析、诊断等。
骨架提取算法是一种非常重要的图像处理算法,它可以提取出物体的主要轮廓线条,可以用于物体的形状分析、物体的匹配等领域。
随着计算机视觉、机器人、医学等领域的不断发展,骨架提取算法的应用前景将会越来越广阔。