CN105513044A - 一种基于统计度量直线特征的数字直线段识别方法 - Google Patents
一种基于统计度量直线特征的数字直线段识别方法 Download PDFInfo
- Publication number
- CN105513044A CN105513044A CN201510812214.3A CN201510812214A CN105513044A CN 105513044 A CN105513044 A CN 105513044A CN 201510812214 A CN201510812214 A CN 201510812214A CN 105513044 A CN105513044 A CN 105513044A
- Authority
- CN
- China
- Prior art keywords
- dss
- read
- point
- value
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Image Analysis (AREA)
Abstract
本发明公开了一种基于统计度量直线特征的数字直线段识别方法,包括以下步骤:找到至少两个相邻的点,持续搜索直至未发现与当前DSS相邻的点,评估当前DSS的接纳点和未拒绝点,生成方向值的直方图并根据直方图多峰性分割当前DSS,评估当前DSS宽度并根据宽度进行缩减;根据DSS方向,将DSS集合中的DSS分组;根据DSS间的欧几里得距离,将每组中的DSS细分为小组;尝试融合每个小组内的DSS;本发明能对给定的边缘图像,通过用户一次性输入的,在一定范围内的一个整数值和一个实数值,分别控制像素连通性和直线特征,实现将任意边缘分割为数字直线段,达到识别边缘图像中数字直线段的目的;本发明对噪声具有良好的适应性,通过调整用户输入的两个参数,可以基于不同精度分割边缘。
Description
技术领域
本发明是一种根据统计学方法,对数字图像边缘检测结果中的前景像素进行分割,得到具有直线特征的前景像素集合的一种计算方法。本发明特别适用于将数字图像边缘检测结果中的数字边缘分割为具有泛化连通性的数字直线段。
背景技术
数字直线(DigitalStraightLine,DSL)定义为其中0<a<b且gcd(a,b)=1,(x,y)表示数字图像中像素的坐标。数字直线段(DigitalStraightSegment,DSS)是DSL中由起止端点确定的一部分。对于DSS,存在2条斜边(leaningline)ax-by=μ和ax-by=μ+|a|+|b|-1用于界定DSS,DSS在斜边上的点称为斜点(leaningpoint)。弱外界点(weaklyexteriorpoint)是靠近斜边,但不包含DSS的点,且在直线x-by=μ-1和ax-by=μ+|a|+|b|上的点。根据给定边缘图像,识别DSS或将边缘分割为DSS所涉及的核心问题是如何评估DSS的方向和起止位置。识别DSS的计算方法根据其对像素连通性的要求,可大致分为要求4连通或8连通的算法和没有4连通或8连通要求的算法。
虽然基于4连通、8连通的算法具有很高的运算效率,但正如文献[3]和[6]所述,此类算法无法有效处理被噪声污染的数字图像和无法保证4连通或8连通的数字图像。为了进一步提高运算效率,此类算法往往还添加了除4连通、8连通以外的其它假设条件,例如文献[1],[2]和[4]所述算法,其不足是进一步缩小了算法的应用范围。
没有4连通或8连通要求的算法往往通过数学方法对前景像素进行变换,使之适用于基于4连通和8连通算法的技术,并使用这些技术完成处理,变换过程复杂且运算代价较高;不使用变换的算法,又存在设计简单,错误率较高的问题。文献[5]中的算法使用一种贪婪策略探索图像空间,但这种简单的贪婪策略往往导致了错误的识别结果。文献[5]的算法缺陷在文献[6]中通过能产生条状多边形的斜率覆盖(tangentialcover)进行弥补,由于斜率覆盖是为1像素宽的数字边缘设计的,DSS几何宽度或厚度(thickness)大于1像素的DSS的边界必须首先被提取并被组织成一条由边界组成的链条(chain),才能应用斜率覆盖。提取对于现实图像而言,会比较困难而且容易产生错误。
[1]J.-O.Lachaud,M.Said,″Twoefficientalgorithmsforcomputingthecharacteristicsofasubsegmentofadigitalstraightline″,DiscreteAppl.Math.,vol.161,no.15,pp.2293-2315,Oct.2013.
[2]J.S.D.Ouattara,E.cAndres,G.L.-S.,R.Zrour,T.M.-Y.Tapsoba,″Remainderapproachforthecomputationofdigitalstraightlinesubsegmentcharacteristics″,DiscreteAppl.Math.,vol.183,pp.90-101,Mar.2015.
[3]I.Debled-Rennesson,R.Jean-Luc,J.Rouyer-Degli,″Segmentationofdiscretecurvesintofuzzysegments″,Electron.NotesinDiscreteMath.,vol.12,pp.372-383,Mar.2003.
[4]I.Sivignon,″FastrecognitionofaDigitalStraightLinesubsegment:Twoalgorithmsoflogarithmictimecomplexity″,DiscreteAppl.Math.,vol.183,pp.130-146,Mar.2015.
[5]L.Buzer,″Asimplealgorithmfordigitallinerecognitioninthegeneralcase″,PatternRecognition,vol.40,no.6,pp.1675-1684,Jun.2007.
[6]A.Faure,L.Buzer,F.Feschet,″Tangentialcoverforthickdigitalcurves″,PatternRecognition,vol.42,no.10,pp.2279-2287,Oct.2009.
发明内容
针对上述现有技术的不足,本发明所解决的技术问题主要有以下两点:
1)设计一种计算方法,能对给定的边缘图像,通过用户一次性输入的,在一定范围内的一个整数值和一个实数值,分别控制像素连通性和直线特征,并根据统计学原理,实现将任意边缘分割为数字直线段,达到识别边缘图像中数字直线段的目的。
2)所设计的计算方法,对边缘没有4连通或8连通要求,对噪声具有良好的适应性,通过调整用户输入的两个参数,可以基于不同精度分割边缘。
本发明的技术方案为:一种基于统计度量直线特征的数字直线段识别方法,包括以下步骤:
步骤1:在数字图像空间中,由上至下逐行扫描,在一行中按从左到右的顺序,尝试读取一个与已读取像素紧邻的新像素,一旦发现尚未读取过的前景像素,则需找到至少两个相邻的点;
步骤2:如果当前DSS包含至少两个前景像素,则持续搜索直至未发现与当前DSS相邻的点,否则删除找到的一个前景像素,继续扫描边缘图像;
步骤3:评估当前DSS的接纳点和未拒绝点,
步骤4:生成方向直方图并根据直方图多峰性分割当前DSS,
步骤5:评估当前DSS宽度并根据宽度进行缩减;
步骤6:根据DSS方向,将DSS集合中的DSS分组;
步骤7:根据DSS间的距离,将每组中的DSS细分为小组;
步骤8:尝试融合每个小组内的DSS。
进一步,所述步骤1的具体过程为:
S1.1,初始化一个新的DSS对象,称为当前DSS,并使用所读取的第一个前景像素初始化新的DSSPoint对象,将该DSSPoint对象保存为DSS对象的接纳点;
S1.2,在以该前景像素为圆心且半径为探索半径的圆形范围内,收集前景像素;
S1.3,如果收集到至少1个非圆心的前景像素,则将每个收集到的前景像素都初始化为DSSPoint对象,计算每个DSSPoint对象相对于圆心的方向并将在DSSPoint对象中保存计算结果;否则,结束步骤1;
S1.4,计算收集到的前景像素的平均方向,并找出与平均方向差异最小的DSSPoint对象;
S1.5,将S1.4找到的DSSPoint对象保存为当前DSS对象的接纳点,并根据平均方向对剩余的DSSPoint对象进行分类;
S1.6,在图像空间中删除归属当前DSS对象的DSSPoint对象所对应的前景像素;更新当前DSS的平均中心和边界点。
进一步,所述步骤2的具体过程为:
S2.1,以最后保存的像素为圆心,半径为探索半径的半圆范围内收集前景像素,半圆唯一的直径与当前DSS方向垂直,且半圆位于从圆心出发,依当前DSS方向指向的位置;
S2.2,尝试读取S2.1所收集的,除圆心以外的一个尚未读取过的前景像素;
S2.3,如果未成功读取一个前景像素,执行S2.7,否则根据所读取的前景像素初始化一个新DSSPoint对象并假设该DSSPoint对象被接纳,计算假设条件下的DSS厚度,如果厚度超过探索半径2倍,则返回S2.2,否则执行S2.4;
S2.4,计算当前DSS方向与该DSSPoint对象方向的差异;
S2.5,如果所得差异超过方向差异阀值,则执行S2.51,否则执行S2.52;
S2.51,将该DSSPoint对象保存为当前DSS的未拒绝点,更新归属当前DSS的每个点相对于平均中心的坐标,以及当前DSS的边界点;
S2.52,将该DSSPoint对象保存为当前DSS的接纳点,更新当前DSS方向并在图像空间中永久删除该DSSPoint对象对应的像素;
S2.6,根据接纳点和未拒绝点的图像空间坐标,更新当前DSS平均中心坐标,然后返回S2.2;
S2.7,在图像空间中删除步骤1与步骤2访问过的前景像素。
进一步,所述步骤3中,比较当前DSS中接纳点与未拒绝点的数量,如果未拒绝点的数量是接纳点数量1.5倍,则将接纳点标识为未拒绝点,并将未拒绝点标识为接纳点。
进一步,所述步骤4的具体过程为:
S4.1,比较接纳点的数量和探索半径整数部分的值,如果数量超过值,则生成方向统计,其索引为DSS中每个点的方向的整数部分,值是方向整数部分与索引值相同的点的数量;否则执行S4.11;
S4.2,按方向统计中值的大小降序排列索引;
S4.3,尝试找到方向统计的最大值和次大值,如果方向统计中包含至少2对索引与值,则执行S4.41;否则执行S4.42;
S4.41,比较最大值和次大值,如果次大值达到0.7倍的最大值,则将最大值与次大值对应的索引,记录为分割方向,并在方向统计中删除最大值及其索引,否则返回S4.3;
S4.42,检查分割方向数量,如果至少存在2个分割方向,则按步骤2记录的像素顺序,依次读取当前DSS中尚未被S4.42读取过的接纳点,否则执行S4.8;
S4.5,如果所读取接纳点非当前DSS的最后一个接纳点,则将所读取点的方向与所有分割方向进行比较;否则执行S4.8;
S4.6,如果与所读取点的方向差异最小的分割方向与兼容分割方向不同,则记录新分割方向的出现次数,否则返回S4.42以读取下一个接纳点;
S4.7,如果出现次数大于3次,则将所读取点标记为分割位置并将新分割方向标记为兼容分割方向;否则返回S4.42以读取下一个接纳点;
S4.8,删除第一个分割位置,根据剩余的分割位置,将步骤2中保存接纳点的前后顺序划分为多个区间,对于每个区间所保存的接纳点,初始化一个新的DSS并将接纳点重新保存为该DSS的接纳点;
S4.9,生成S4.8产生的多个DSS的平均中心,并根据线性回归计算每个DSS的方向;
S4.10,对于当前DSS的每个未拒绝点,计算其与S4.8所生成DSS的平均中心之间的距离,将其分配给距离最近的DSS,初始化一个新的DSS集合,并将分割产生的DSS保存在该集合中,结束步骤4;
S4.11,在图像空间中恢复S2.7所删除的,原DSS的未拒绝点,结束步骤4。
进一步,所述步骤5的具体过程为:
S5.1,尝试从步骤4产生的DSS集合中读取一个尚未读取过的DSS;
S5.2,如果存在一个尚未读取过的DSS,则对于所读取DSS中的每个点,计算其在原点为DSS平均中心且X轴正半轴指向DSS方向的坐标系中的坐标;否则结束步骤5;
S5.3,根据所计算坐标值找到所读取DSS的边界点,根据边界点计算DSS厚度,将厚度与探索半径比较;
S5.4,如果厚度超过探索半径的2倍,则将探索半径2倍外的点从DSS中删除;否则返回S5.1;
S5.5,如果图像空间中具有最大二维索引的像素尚未被步骤1读取,则返回步骤1,否则开始步骤6。
进一步,所述步骤6的具体过程为:
S6.1,尝试从DSS集合中读取一个本步骤尚未读取的DSS,如果存在一个尚未被本步骤读取过的DSS,则标记所读取DSS为外DSS,否则结束步骤6;
S6.2,尝试从DSS集合中读取一个本步骤尚未读取的DSS,如果不包括外DSS,存在一个尚未被本步骤读取过的DSS,则标记所读取DSS为内DSS,并计算内DSS与外DSS方向的差异;否则返回S6.1;
S6.3,如果差异不大于方向差异阀值,则遍历DSSGroup集合的成员,如果内DSS尚未被任何成员包含,则找到与内DSS方向差异最小的成员;否则返回S6.2;
S6.4,如果存在一个方向差异最小的成员,则计算内DSS与该成员的方向差异,否则返回S6.2;
S6.5,如果S6.4所计算的差异不大于方向差异阀值,则将内DSS添加进该成员,并更新该成员的方向,返回S6.2;否则,将内DSS添加进键为外DSS的成员,或初始化这样一个成员如果无法找到该成员,返回S6.2;
进一步,所述步骤7的具体过程为:
S7.1,尝试在DSSGroup集合中读取一个尚未读取过的成员,如果存在一个尚未读取过的成员,则检查所读取的成员;否则结束步骤7;
S7.2,如果该成员非空,则找到成员中具有最多接纳点的DSS,并标记该DSS为最大DSS;否则返回S7.1;
S7.3,对于成员中的每个DSS,计算其相对于“原点为最大DSS平均中心且X正半轴指向最大DSS方向的坐标系”的平均中心坐标值;
S7.4,将每个DSS和其平均中心X坐标值作为“键-值”成对保存在成员的DSSDistances属性中,其中键为DSS;
S7.5,尝试读取DSSDistances属性中的一对“键-值”,如果存在尚未被读取的键值对,则执行S7.61,否则执行S7.62;
S7.61,通过查看值,比较键所对应的DSS与最大DSS间的距离,如果距离不大于探索半径,则计算键所对应的DSS与最大DSS边界点间的距离,并找到其中最小的距离,否则返回S7.5;
S7.62,从成员中删除最大DSS,及成员的DSSForMerging属性中对应最大DSS的键值对所包含的DSS,然后返回S7.1;
S7.7,如果最小距离没有超过探索半径的2倍,则检查键所对应的DSS是否已被成员DSSForMerging属性中的键值对所包含;否则返回S7.5;
S7.8,如果已包含,则返回S7.5;否则根据成员DSSForMerging属性中对应最大DSS的键值对所包含DSS的所有接纳点,计算厚度;
S7.9,如果厚度不大于探索半径的2倍,则将键所对应的DSS添加进成员DSSForMerging属性中对应最大DSS的键值对中并返回S7.5;否则返回S7.5。
进一步,所述步骤8的具体过程为:
S8.1,尝试在DSSGroup集合中读取一个S8.1尚未读取过的成员,如果存在一个尚未读取过的成员,则尝试读取成员DSSForMerging属性中一个尚未读取过的键值对,否则结束步骤8;
S8.2,如果存在一个尚未读取过的键值对,则将所读取键值对中包含的所有DSS添加给键所对应的DSS,并将DSS集合中对应的原DSS删除;否则返回S8.1中的尝试读取成员DSSForMerging属性中一个尚未读取过的键值对;
S8.3,标识“发生融合”为真并返回S8.1;
S8.4,若“发生融合”为真,则返回S7.1,否则结束步骤8。
本发明方法的有益效果为:
通过附图验证表明,附图说明图15展示了一个理想椭圆,根据和Θ的不同人工输入参数值,使用本发明方法识别DSS的视觉结果。通过观察图15所示结果,可以发现通过人工调节和Θ,本发明方法对于理想图形边缘可以实现不同精度的分割,精度是指由参数和Θ确定的,本发明方法分割非直线边缘产生的DSS数量。
附图说明图16展示了使用本发明方法处理6副现实数字图像经由Canny边缘检测产生的边缘图像的视觉结果。通过观察图16所示结果,可以发现本发明方法对于低分辨率的现实世界图像(real-worldimage)具有良好的处理能力。例如Cameraman中人物背部边缘的完整分割以及Pepper中柿子椒曲线边缘的分割等。
附图说明图17展示了由Canny边缘检测产生的边缘图像的视觉结果,以及本发明方法的处理结果。其中House图像底部的边缘检测结果包含大量的干扰信息,本发明方法仍然识别了图像中最主要的几条DSS。Puzzle图像顶部的边缘检测结果显示了中断的图形边缘,本发明方法的识别结果则是连续的DSS。这两个例子所示的情况实际上在图16中大量发生,而图16所示结果说明,本发明方法具有较好的抗噪声与连接中断边缘的特点。
通过实验验证,附图中展示了使用本发明方法处理6副图像不同分辨率版本的边缘图像耗时情况。6副边缘图像的分辨率以像素为单位,从128×128开始,以32×32为步长增加分辨率,直至1280×1280结束。观察附图可以判断处理图像Lena的运算时间,较其他图像而言较大,而Puzzle的处理时间较小。这主要是由于Lena边缘图像的图像空间中存在大量相互临近由前景像素构成的边缘,而Puzzle中的边缘间的距离在图像空间中相对较大。这说明本发明方法更适合处理图像空间中边缘间距大于的边缘图像。
通过实验可以发现图像Lena和Puzzle分别反映了总耗时较大和较小的情况,同时可以发现图像Lena的耗时增长主要由橙色区域,即步骤6引起,而图像Puzzle能在高分辨率下维持低耗时,也是由于步骤6的耗时未大幅增加。
附图说明
图1为本发明的方法所涉及的一些基本概念的模型图;
图2为本发明方法的前景像素收集过程图;
图3为用于说明本发明方法中分割与融合DSS的过程图;
图4为以UML活动图的形式描述了本发明方法的流程图;
图5为以UML类图的形式描述了用于实施本发明方法所涉及的高级语言(High-levelprogramminglanguage)中的类;
图6为以UML活动图的形式描述了用于本发明方法步骤1至步骤8的实施细节流程图;
图7为以UML活动图的形式描述了用于本发明方法步骤1的实施细节流程图;
图8为以UML活动图的形式描述了用于本发明方法步骤2的实施细节流程图;
图9为以UML活动图的形式描述了用于本发明方法步骤3的实施细节流程图;
图10为以UML活动图的形式描述了用于本发明方法步骤4的实施细节流程图;
图11为以UML活动图的形式描述了用于本发明方法步骤5的实施细节流程图;
图12为以UML活动图的形式描述了用于本发明方法步骤6的实施细节流程图;
图13为以UML活动图的形式描述了用于本发明方法步骤7的实施细节流程图;
图14为以UML活动图的形式描述了用于本发明方法步骤8的实施细节流程图;
图15为用于说明本发明方法对椭圆边缘的分割效果图;
图16为用于说明本发明方法对任意边缘的分割效果图;
图17为用于说明本发明方法对特定边缘的分割效果图;
图18为用于说明本发明方法处理各种分辨率图像的用时情况示意图;
图19为用于说明本发明方法处理各种分辨率图像的各步骤用时情况,对于每个柱子,从下至上不同颜色的区域依次标识了步骤1至步骤8的用时情况示意图;
图20为用于说明本发明方法处理图像Lena各分辨率版本的各步骤用时情况示意图;
图21为用于说明本发明方法处理图像Tower各分辨率版本的各步骤用时情况示意图;
图22为用于说明本发明方法处理图像Puzzle各分辨率版本的各步骤用时情况示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明提出的算法计算部分原理由附图说明的图1至图3描述。本发明使用计算机程序语言完成实施。具体实施过程涉及的算法静态概念和动态活动分别由符合UML(统一建模语言)标准的类图与活动图描述,见附图说明中的图4至图14。为使陈述清楚明了,现集中定义本发明所涉及的部分符号和概念。
Z+表示正整数集合。
Z表示包括零的整数集合。
R+表示包括零的正实数集合。
R表示包括零的实数集合。
{·}表示集合。
|{·}|表示集合{·}中元素的数量。
“条件”或“max元素条件”表示通过选择元素使条件最大化。
“条件”或“min元素条件”表示通过选择元素使条件最小化。
“条件”或“argmax元素条件”表示使条件最大化的元素。
“条件”或“argmin元素条件”表示使条件最小化的元素。
sgn(·)表示提取符号值,例如sgn(10)=sgn(1.1)=1,sgn(-10)=sgn(-1.1)=-1,sgn(0)=1。
对于c1∈R+,
表示边缘图像的宽。
表示边缘图像的高。
图像空间,记做I:保存边缘图像的图像数据。每一个记录单元唯一对应一个像素。图像数据中,按照对应图像信息的,先从左向右,后从上至下的顺序排列像素,即,I是具有行,列的矩阵,矩阵中的每个元素值即为像素值。
矩阵坐标系:I中的每个元素的二维索引为(x′,y′)其中表示列索引,表示行索引,(x′,y′)表示了一个坐标系中点的位置,该坐标系以矩阵左上角为原点,最上边一行为指向x′增加方向的X轴正半轴,最左边一列为指向y′增加方向的Y轴正半轴,该坐标系称为矩阵坐标系。例如:附图说明图1至图3的每个正方形都表示I的一个前景像素,每个像素在矩阵坐标系中具有1单位的长度,每个正方形中心的点表示矩阵坐标系中的点(x′,y′)。
图像空间坐标系:原点为矩阵坐标系的点X轴正半轴由原点指向矩阵坐标系的点的直角坐标系。像素在图像空间坐标系中的坐标称为图像空间坐标。
平均中心坐标系:对于个像素组成的根据其像素的图像空间坐标(xi′,yi′),i′∈Z+,计算的平均坐标为原点的直角坐标系,其中称为的平均中心。该坐标系X轴正半轴和I中具有方向起点为原点的单位向量重合。每个都能唯一确定一个平均中心坐标系,中像素在该坐标系中的坐标值称为平均中心坐标。和的定义见下文。
其中z3∈Z+且表示I中索引为z3的像素像素的值非索引z3决定,而是根据在I中所对应的矩阵元素所确定。
IF表示边缘图像的前景像素集合。
表示由指向的向量,其中1≤k1,k2≤|IF|,k1≠k2。
表示与间的欧几里得距离(Euclideandistance)。
表示原点在方向与矩阵坐标系的X轴正半轴重合的射线。
表示通过逆时针旋转直至与重合为止所经过的角度值,且例如:附图说明中图1所示的通过逆时针旋转原点在P1的X轴正半轴与重合,所经过的角度由θ表示,则
表示通过顺时针旋转直至与重合为止所经过的角度值,且
的方向定义为例如:附图说明中图1中,θ=为的方向。对于的方向和的方向也写作类似地,也写作
探索半径,一个给定的正整数值,其单位是像素且
泛化连通性:对于任意和给定常数以为圆心,为半径的圆,其覆盖的所有像素和是连通的,即表示了与连通的所有像素的集合。例如:对于附图说明中图1所示P1和而言,P2与P1是连通的。
方向差异:对于给定的方向和 n1,和的方向差异记做其定义如下。
例如附图说明图1中的方向θ2与的方向θ3的方向差异θΔ3<0是顺时针旋转得到的,因为Rc(θ2,θ3)<Rac(θ2,θ3);的方向θ2与的方向θ4的方向差异θΔ4>0是逆时针旋转得到的,因为Rc(θ2,θ4)>Rac(θ2,θ4).。
方向差异阀值,Θ:一个给定的代表角度的正实数,其单位是度且0°≤Θ<90°。
在以上定义的基础上,先介绍本发明提出的DSS识别方法。假设任意给定一个前景像素P1∈IF,此时在以P1为圆心,为半径在图像空间中展开一个圆,此时集合 表示圆内除P1外的所有前景像素。若|S1|≠0,则计算 且i1∈Z+。此时圆内的所有像素构成了DSS,是DSS的方向,其中所包含的像素称为接纳点,所包含的像素称为未拒绝点。
然后选取中的任意一个像素,记做P2,并以P2为圆心,为半径在图像空间中展开一个半圆,半圆的唯一直径与垂直,此时集合 表示圆内除P2外的所有前景像素。若|S2|≠0,对于固定值σ∈R,0°≤θ<360°,则定义函数f:和区间其中f将区间映射为中的的数量。函数f-1:则将给定的整数映射为或取相同f值的有序方向集合中的中值。DSS的方向则为即是连通性检查过程中,由前后像素形成的各种向量方向中,出现次数最多的向量方向。点所在的二维空间称为方向统计,记做即:对于(和的定义见下文),以和f为两个维度的空间。
概括地,令表示第次以当前DSS接纳点为中心,为半径的圆或半圆内前景像素与的检查泛化连通性,则与具有泛化连通性的像素集合定义如下。
其中表示第(t-1)次泛化连通性检查后,DSS的方向。的定义详见下文的式(5)。如果表示在第次泛化连通性检查后,DSS所包含的像素集合,表示在I中的几何厚度或宽度,α∈R为给定的常数,由产生的接纳点集合定义如下。
由产生的未拒绝点集合的定义类似除了将定义中的 替换为令P1∈IF表示任意给定的像素,则作为第次泛化连通性检查的圆心的定义如下。
若则随机选择中的一个像素作为若 表示DSS中所有接纳点的方向集合,则DSS方向或统计度量直线特征定义如下。
若i∈Z+,则基于统计度量直线特征的,对于由次连续泛化连通性检查产生的DSS,记做其定义如下。
和分别表示的接纳点和未拒绝点。若则说明第次泛化连通性检查没有产生接纳点,此时当前DSS的识别结束,即
根据以上泛化连通性检查过程,下面介绍一个简单的例子。假设Θ=15°,R=1.5像素,α=2,σ=0,对于附图说明图2所示的所有像素表示了一条数字边缘,其分割过程如下所述。
当时,假设附图说明图2中最初给定的像素为P1,则以P1为圆心的第1次泛化连通性检查发现了前景像素P2和Q(用于示意检查的圆形未在附图说明图2中绘制)。此时,存在两个方向:的方向θ2和的方向θQ。由于θ2和θQ与DSS1的方向的方向差异相同,且假设该方向差异小于Θ。此时P2和Q均保存为DSS1的接纳点,从P2和Q中随机选择一个像素用于下一次泛化连通性检查,假设P2被选中。将3个接纳点P1,P2和Q从IF中删除。
当时,以P2为圆心的第2次泛化连通性检查(用于示意检查的半圆未在附图说明图2中绘制)发现了前景像素P3,由于的方向θ3与θ2相同,根据式(5),因此θΔ3=0,且DSS1的厚度所以P3被DSS1接受并保存为接纳点,同时P3被选为下一次泛化连通性检查的圆心。将接纳点P3从IF中删除。
当时,以P3为圆心的第3次泛化连通性检查发现了P4。根据式(5),保持不变,因此θΔ4>Θ,且所以P4被DSS1接受并保存为未拒绝点,同时没有像素被选为下一次泛化连通性检查的圆心。
当时,因为没有发生泛化连通性检查。此时DSS1的识别结束,最终DSS1={P1,P2,P3,Q}∪{P4}。因为P4未被删除,P4成为了识别DSS2的最初给定的像素。DSS2和DSS3的识别过程类似DSS1。
对于在步停止泛化连通性检查(即)的其接纳点数量应远远大于未拒绝点的数量,同时其接纳点的方向统计应是单峰的,但事实上存在多种因素会造成未拒绝点数量超过接纳点,以及为多峰。其中可能的因素有最初的方向存在对后续方向误导,即与的方向差异超过Θ,由于本发明方法没有假设任何已知条件,所以在最初泛化连通性检查得到的被假设为DSS的正确方向并用作后续的泛化连通性检查。
为确保具有合理的接纳点数量和未拒绝点的数量需要计算其比值并与用于衡量比例失调的常数进行比较,比例失调的具体定义如下。
根据(7),若比例失调,则交换和中的像素。具有多峰的在I中直观地表现出多处明显弯曲。的多峰性通过计算方向统计中最大与次大f值的比例,并与用于衡量多峰性的常数进行比较,多峰性的具体定义如下。
其中根据(8),若是多峰的,则依次集合中按照计算f值由大到小排列的相邻两个元素和的方向差异如果则将和保存在集合中,中的方向称为分割方向。将根据进行分割。根据式(4),对于集合存在对应的,作为圆心的像素若Pj表示中的某个圆心,为给定的常数,表示使方向差异最小化的方向且通过衡量圆心处方向变化次数确定的分割位置,分割位置集合定义如下。
对于任意Pj,对于具有最小方向差异的与j之前个连续的,对于具有最小差异的中的方向进行比较。如果与之前个值不是同一个值,则Pj被标记为的分割位置。对于所有分割为其方向根据线性回归计算。假设其中表示中像素的图像空间坐标,为的平均中心,则的方向根据下式计算。
根据的厚度可以由所包含像素平均中心坐标中的最大和最小纵坐标差的绝对值来近似。这些具有最大横或纵平均中心坐标的像素称为边界点,边界点的集合记做为保证符合式(6)的定义,任何使成立的边界点都会从和中删除。
假设附图说明图3中DSS1已知,DSS2和DSS3未知,DSS2和DSS3为分割DSS1后产生的DSS,则附图说明图3展示了分割一个给定的DSS,即DSS1的过程。假设Θ=15°,σ=0,且DSS1由附图说明图3中所示的7个像素组成,那么DSS1的中包含2个点:和根据式(8),呈多峰。因为假设DSS1的集合的泛化连通性检查的圆心依次附图说明图3中所示为P1,P2,...,P6,对于P2,中与方向差异最小的是对于P3,中与方向差异最小的是对于P4,中与方向差异最小的是此时根据式(9),因为出现前,连续出现了次,满足了式(9)的条件,所以P4被标记为分割位置。
对于各DSS分割产生的新DSS,其中来自于不同原DSS的部分分割产生的DSS可能具有相似的方向和相近的位置,因此,在分割后本发明方法还会尝试融合。若表示IF中识别的所有DSS,即:DSS1,那么这些DSS可分类为如下的集合
其中k1,k1≠k2,1≤k1,表示的方向,i=1,2;表示在中具有最多接纳点DSS的平均中心坐标系中,平均中心的横坐标值。被进一步分类为如下的集合。
其中k3,n4,n5∈Z+, Mk≠Mk′;和分别表示像素和在DSSMax的平均中心坐标系中的横坐标。将中的DSS从中删除,并将它们的接纳点和未拒绝点分别保存为DSSMax的接纳点和未拒绝点。DSSMax的方向根据式(10)计算。
假设附图说明图3中DSS2和DSS3已知,DSS1未知,DSS1为融合DSS2和DSS3的结果,则附图说明图3展示了DSS2和DSS3的融合过程。假设Θ=45°,α=1.6,像素。因为且根据式(11), 此时DSSMax=DSS2。DSS2的平均中心在附图说明图3中以标有的黑点标识,DSS3的平均中心是附图说明图3中标识有P5的像素。DSS2和DSS3的边界点纵坐标差的绝对值的最大值,即标识在附图说明图3中。因为成立,根据(12)DSS2和DSS3发生融合,其结果为DSS1。DSS1的方向则根据式(10)计算。
本发明计算方法的具体实施方式通过使用高级程序语言,例如C#,编写计算机程序完成。实施过程依赖3个自定义的类,分别是DSSGroup类,DSS类和DSSPoint类。这3个类的关系及成员由附图说明图5中的UML类图描述。本发明方法的概念性流程分别由附图说明图4,图6至图14所示的UML活动图描述,其中图4展示了本发明方式实施的概况。如图4所示,本发明方法包括2个主要步骤:“步骤1:找到DSS”和“步骤2:融合DSS”。除探索半径与方向差异阀值Θ依赖人工输入,本发明方法涉及的其它参数均设定为常数,具体有:式(3)中的α设为2,式(7)中的设为1.5,式(8)中的设为0.7,式(9)中的设为4,对于由近似。为便于实施,式(4)及式(5)中,对应的分支条件被替换为
DSSPoint类保存了泛化连通性检查所发现前景像素相对于图像空间左上角像素的指针偏移量,检查圆心相对于图像空间左上角像素的指针偏移量,由圆心指向该前景像素的向量的方向,以及该像素的图像空间坐标和平均中心坐标。DSS类保存了式(6)定义的像素。边界点保存在DSS类中具有DSSPoint类型的属性中。DSSGroup类对应式(11)定义的DSSGroup类的属性DSSForMerging对应了式(12)定义的其他属性则用于式(11)的计算。DSSGroup类还包括一个具有两个参数DSS1和DSS2的构造函数。
基于附图说明图5所示的类,附图说明图6的UML活动图描述了本发明方法的步骤及相互关系。如图6所示,步骤1至步骤5包括5个子步骤:“步骤1:找到至少两个相邻的点”,“步骤2:持续搜索直至未发现与当前DSS相邻的点”,“步骤3:评估当前DSS的接纳点和未拒绝点”,“步骤4:生成方向直方图并根据直方图多峰性分割当前DSS”,“步骤5:评估当前DSS宽度并根据宽度进行缩减”;步骤6至步骤8包括3个子步骤:“步骤6:根据DSS方向,将DSS集合中的DSS分组”,“步骤7:根据DSS间的距离,将每组中的DSS细分为小组”,“步骤8:尝试融合每个小组内的DSS”。步骤1和2实现了由式(1)至式(6)描述的通过检查泛化连通性和计算统计度量直线特征识别DSS的过程。步骤3至5实现了由式(7)至式(10)描述的DSS分割过程。步骤6至步骤8实现了由式(11)和式(12)描述的DSS融合过程。
如附图说明图6所示,本发明方法逐行依次扫描给定边缘图像的所有像素,一旦发现尚未读取过的前景像素,就会触发步骤1。图7所示的UML活动图描述了步骤1的流程:
S1.1,初始化一个新的DSS对象,称为当前DSS,并使用所读取的第一个前景像素初始化新的DSSPoint对象,将该DSSPoint对象保存为DSS对象的接纳点;
S1.2,在以该前景像素为圆心且半径为探索半径的圆形范围内,收集前景像素;
S1.3,如果收集到至少1个非圆心的前景像素,则将每个收集到的前景像素都初始化为DSSPoint对象,计算每个DSSPoint对象相对于圆心的方向并将在DSSPoint对象中保存计算结果;否则,结束步骤1;
S1.4,计算收集到的前景像素的平均方向,并找出与平均方向差异最小的DSSPoint对象;
S1.5,将S1.4找到的DSSPoint对象保存为当前DSS对象的接纳点,并根据平均方向对剩余的DSSPoint对象进行分类;
S1.6,在图像空间中删除归属当前DSS对象的DSSPoint对象所对应的前景像素;更新当前DSS的平均中心和边界点。
步骤1在图像空间中所读取前景像素的坐标,根据中点圆算法(Midpointcirclealgorithm)计算一个圆心为所读取前景像素,半径为的圆内像素的图像空间坐标,根据所计算坐标确定圆内像素相对于图像空间左上角像素的指针偏移量,并根据该偏移量逐一读取圆内的每个像素。此时,圆心对应式(4)中的P1,圆内前景像素组成了式(2)的S1,这些前景像素相对于圆心的方向由从圆心出发指向这些前景像素的向量的方向确定,这些方向的平均值是式(5)的然后根据式(3),对S1中的前景像素进行分类,形成和与方向差异最小的像素被选为下次泛化连通性检查的圆心,即式(4)定义的P2。
步骤1结束时,如果当前DSS包含至少两个前景像素,则步骤2开始,否则删除找到的一个前景像素,继续扫描边缘图像。附图说明图8展示了步骤2的流程:
S2.1,以最后保存的像素为圆心,半径为探索半径的半圆范围内收集前景像素,半圆唯一的直径与当前DSS方向垂直,且半圆位于从圆心出发,依当前DSS方向指向的位置;
S2.2,尝试读取S2.1所收集的,除圆心以外的一个尚未读取过的前景像素;
S2.3,如果未成功读取一个前景像素,执行S2.7,否则根据所读取的前景像素初始化一个新DSSPoint对象并假设该DSSPoint对象被接纳,计算假设条件下的DSS厚度,如果厚度超过探索半径2倍,则返回S2.2,否则执行S2.4;
S2.4,计算当前DSS方向与该DSSPoint对象方向的差异;
S2.5,如果所得差异超过方向差异阀值,则执行S2.51,否则执行S2.52;
S2.51,将该DSSPoint对象保存为当前DSS的未拒绝点,更新归属当前DSS的每个点相对于平均中心的坐标,以及当前DSS的边界点;
S2.52,将该DSSPoint对象保存为当前DSS的接纳点,更新当前DSS方向并在图像空间中永久删除该DSSPoint对象对应的像素;
S2.6,根据接纳点和未拒绝点的图像空间坐标,更新当前DSS平均中心坐标,然后返回S2.2;
S2.7,在图像空间中删除步骤1与步骤2访问过的前景像素。
步骤2以之前计算的为圆心,根据式(2)在直径与垂直的半圆内寻找前景像素,所找到的前景像素组成式(2)的根据之前计算的根据式(5)更新DSS方向。中前景像素相对于圆心的方向由圆心出发指向这些前景像素的向量的方向确定,根据这些方向,和式(3),中的像素分类为和其中与方向差异最小的像素被选为下次泛化连通性检查的圆心,即式(4)定义的这个过程反复重复,直至结束。
步骤2结束后,步骤3开始。附图说明图9展示了步骤3的流程:比较DSS中接纳点与未拒绝点的数量,如果未拒绝点的数量是接纳点数量1.5倍,则将接纳点标识为未拒绝点,并将未拒绝点标识为接纳点。
步骤3通过计算式(7),判断当前DSS是否存在比例失调,如果存在,则交换和中的像素,否则开始步骤4。
步骤4根据式(8)检查当前DSS的是否呈多峰,并且计算分割位置如果呈多峰。附图说明中图10展示了步骤4的流程:
S4.1,比较接纳点的数量和探索半径整数部分的值,如果数量超过值,则生成方向统计,其索引为DSS中每个点的方向的整数部分,值是方向整数部分与索引值相同的点的数量;否则执行S4.11;
S4.2,按方向统计中值的大小降序排列索引;
S4.3,尝试找到方向统计的最大值和次大值,如果方向统计中包含至少2对索引与值,则执行S4.41;否则执行S4.42;
S4.41,比较最大值和次大值,如果次大值达到0.7倍的最大值,则将最大值与次大值对应的索引,记录为分割方向,并在方向统计中删除最大值及其索引,否则返回S4.3;
S4.42,检查分割方向数量,如果至少存在2个分割方向,则按步骤2记录的像素顺序,依次读取当前DSS中尚未被S4.42读取过的接纳点,否则执行S4.8;
S4.5,如果所读取接纳点非当前DSS的最后一个接纳点,则将所读取点的方向与所有分割方向进行比较;否则执行S4.8;
S4.6,如果与所读取点的方向差异最小的分割方向与兼容分割方向不同,则记录新分割方向的出现次数,否则返回S4.42以读取下一个接纳点;
S4.7,如果出现次数大于3次,则将所读取点标记为分割位置并将新分割方向标记为兼容分割方向;否则返回S4.42以读取下一个接纳点;
S4.8,删除第一个分割位置,根据剩余的分割位置,将步骤2中保存接纳点的前后顺序划分为多个区间,对于每个区间所保存的接纳点,初始化一个新的DSS并将接纳点重新保存为该DSS的接纳点;
S4.9,生成S4.8产生的多个DSS的平均中心,并根据线性回归计算每个DSS的方向;
S4.10,对于当前DSS的每个未拒绝点,计算其与S4.8所生成DSS的平均中心之间的距离,将其分配给距离最近的DSS,初始化一个新的DSS集合,并将分割产生的DSS保存在该集合中,结束步骤4;
S4.11,在图像空间中恢复S2.7所删除的,原DSS的未拒绝点,结束步骤4。
步骤4计算中f的最大值与次大值之比,所计算的比例与参数比较,当比例超过时,则将f最大值与次大值所对应的保存在式(8)定义的集合中并将其从中删除,这样的比例计算一直重复,直至中没有两点f值的比例超过为止。集合中的元素按其对应的f值,按从大到小的顺序排列。若则说明呈多峰,依次比较中相邻的两个元素,若其方向差异大于Θ,则将两个元素保存在集合中。当根据和式(9),步骤4尝试找到分割位置。实际实施过程中,步骤4按DSS中点的保存顺序,计算每个点方向与中方向的差异,并将对应最小方向差异的中的方向与之前具有最小方向差异的中的方向,即图10中的兼容分割方向进行比较,如果两者不同,则记录该中的方向的连续出现次数,当次数为时,将对应的DSS中的点保存为分割位置并标记中的方向为兼容分割方向。分割位置计算完成后,步骤4尝试根据分割位置,按DSS中点的保存顺序,将DSS分割为多个DSS。分割产生的DSS根据式(10),计算其方向。
步骤5计算DSS的厚度,即式(3)中的DSS厚度的通过计算DSS各点的平均中心坐标,找出边界点,用边界点的纵坐标之差的最大值来近似。如果厚度大于则删除对应最大纵坐标之差的两个边界点,重复上述过程,即找边界点,近似厚度并比较等,直至厚度不大于为止。附图说明图11描述了步骤5流程:
S5.1,尝试从步骤4产生的DSS集合中读取一个尚未读取过的DSS;
S5.2,如果存在一个尚未读取过的DSS,则对于所读取DSS中的每个点,计算其在原点为DSS平均中心且X轴正半轴指向DSS方向的坐标系中的坐标;否则结束步骤5;
S5.3,根据所计算坐标值找到所读取DSS的边界点,根据边界点计算DSS厚度,将厚度与探索半径比较;
S5.4,如果厚度超过探索半径的2倍,则将探索半径2倍外的点从DSS中删除;否则返回S5.1;
S5.5,如果图像空间中具有最大二维索引的像素尚未被步骤1读取,则返回步骤1,否则开始步骤6。
步骤6根据式(11)对DSS进行分类。步骤6仅根据式(11)中方向差异不大于Θ的条件进行分类,附图说明图12展示了其流程:
S6.1,尝试从DSS集合中读取一个本步骤尚未读取的DSS,如果存在一个尚未被本步骤读取过的DSS,则标记所读取DSS为外DSS,否则结束步骤6;
S6.2,尝试从DSS集合中读取一个本步骤尚未读取的DSS,如果不包括外DSS,存在一个尚未被本步骤读取过的DSS,则标记所读取DSS为内DSS,并计算内DSS与外DSS方向的差异;否则返回S6.1;
S6.3,如果差异不大于方向差异阀值,则遍历DSSGroup集合的成员,如果内DSS尚未被任何成员包含,则找到与内DSS方向差异最小的成员;否则返回S6.2;
S6.4,如果存在一个方向差异最小的成员,则计算内DSS与该成员的方向差异,否则返回S6.2;
S6.5,如果S6.4所计算的差异不大于方向差异阀值,则将内DSS添加进该成员,并更新该成员的方向,返回S6.2;否则,将内DSS添加进键为外DSS的成员,或初始化这样一个成员如果无法找到该成员,返回S6.2。
步骤6遍历DSS集合中每个DSS,若DSS未被读取且未被DSSGroup集合中其它DSSGroup对象包含,则评估所读取DSS与所有DSSGroup对象平均方向的方向差异,其中方向差异最小且不大于Θ的DSSGroup存在,则将所读取DSS标记为该DSSGroup成员,若不存在,则为所读取DSS创建新的DSSGroup成员。式(11)中的距离检查由步骤7完成。
步骤7是融合DSS的关键步骤,其流程见附图说明图13:
S7.1,尝试在DSSGroup集合中读取一个尚未读取过的成员,如果存在一个尚未读取过的成员,则检查所读取的成员;否则结束步骤7;
S7.2,如果该成员非空,则找到成员中具有最多接纳点的DSS,并标记该DSS为最大DSS;否则返回S7.1;
S7.3,对于成员中的每个DSS,计算其相对于“原点为最大DSS平均中心且X正半轴指向最大DSS方向的坐标系”的平均中心坐标值;
S7.4,将每个DSS和其平均中心X坐标值作为“键-值”成对保存在成员的DSSDistances属性中,其中键为DSS;
S7.5,尝试读取DSSDistances属性中的一对“键-值”,如果存在尚未被读取的键值对,则执行S7.61,否则执行S7.62;
S7.61,通过查看值,比较键所对应的DSS与最大DSS间的距离,如果距离不大于探索半径,则计算键所对应的DSS与最大DSS边界点间的距离,并找到其中最小的距离,否则返回S7.5;
S7.62,从成员中删除最大DSS,及成员的DSSForMerging属性中对应最大DSS的键值对所包含的DSS,然后返回S7.1;
S7.7,如果最小距离没有超过探索半径的2倍,则检查键所对应的DSS是否已被成员DSSForMerging属性中的键值对所包含;否则返回S7.5;
S7.8,如果已包含,则返回S7.5;否则根据成员DSSForMerging属性中对应最大DSS的键值对所包含DSS的所有接纳点,计算厚度;
S7.9,如果厚度不大于探索半径的2倍,则将键所对应的DSS添加进成员DSSForMerging属性中对应最大DSS的键值对中并返回S7.5;否则返回S7.5。
该步骤找到DSSGroup集合中每个DSSGroup对象所包含的具有最大接纳点数量的DSS,即式(12)中的DSSMax,然后计算DSSGroup所包含DSS在DSSMax平均中心坐标系下,平均中心的坐标值。DSS间的距离由所计算的平均中心坐标值的横坐标之差近似,根据DSS距离的近似值判断步骤6中未判断的式(11)条件,即在DSSMax平均中心坐标系下,判断DSS平均中心横坐标绝对值是否大于将不大于的DSS保存在以DSSMax为键的DSS集合中,即式(11)的保存在DSSGroup的DSSForMerging属性里。对中的每个DSS,计算其边界点与DSSMax边界点的距离,该距离由DSSMax平均中心坐标系中边界点横坐标之差的最大绝对值近似,将绝对值大于的DSS从中删除,此时修改后的即为式(12)的这个过程一直重复,直至每个DSSGroup对象处理完毕。
步骤8将DSSForMerging属性保存的键值对以作为的键的DSS为基础,将值中保存的DSS的接纳点和未拒绝点分别保存到作为键的DSS中,值中的所有DSS从参数DSS集合中删除。附图说明图14展示了步骤8的流程:
S8.1,尝试在DSSGroup集合中读取一个S8.1尚未读取过的成员,如果存在一个尚未读取过的成员,则尝试读取成员DSSForMerging属性中一个尚未读取过的键值对,否则结束步骤8;
S8.2,如果存在一个尚未读取过的键值对,则将所读取键值对中包含的所有DSS添加给键所对应的DSS,并将DSS集合中对应的原DSS删除;否则返回S8.1中的尝试读取成员DSSForMerging属性中一个尚未读取过的键值对;
S8.3,标识“发生融合”为真并返回S8.1;
S8.4,若“发生融合”为真,则返回S7.1,否则结束步骤8。
附图说明中图15至图16展示了使用本发明方法处理人造数字图像和现实数字图像经由Canny边缘检测产生的边缘图像的视觉结果;附图说明中图17至图21展示了本发明方法的多种运算耗时情况。对于附图说明中图15至图21展示的结果,除探索半径与方向差异阀值Θ依赖人工输入,本发明方法涉及的其它参数均设定为常数,具体有:式(3)中的α设为2,式(7)中的设为1.5,式(8)中的设为0.7,式(9)中的设为4,对于由近似。
附图说明图15展示了一个理想椭圆,根据和Θ的不同人工输入参数值,使用本发明方法识别DSS的视觉结果,图15中每幅图下都用字母R,D以及其后的数字表示人工输入的参数和Θ的值。例如:R5D5表示该图是运算和Θ=5的本发明方法得到的。图15中的上下两排图像,分别展示了固定和Θ中一方的值,变化另一方值产生的识别结果。相对于Θ值,本发明方法对于值的变化较为敏感,例如图15中,上排图像的变化,在视觉感受上没有下排的大,这个结果也可以从图15中间一列的图像观察得出。
附图说明图16展示了使用本发明方法处理6副现实数字图像经由Canny边缘检测产生的边缘图像的视觉结果。这6副图像分别以Cameraman,House,Lena,Pepper,Puzzle和Tower命名。由于这6副图像基本是数字图像处理领域常用的测试图像,其原始图像以及Canny边缘检测的边缘图像可以在互联网或数字图像处理教科书配套数字资源里下载,故没有在附图说明中展示。附图说明图16中的6副图像分别率均为256×256,其处理结果分别使用原始图像名称标注。对于6副图像,均为3,Θ均为15°。由于分辨率较小,较大的容易产生错误识别结果,但较小容易引起长边缘的过度分割,例如:图像House的底部和图像Puzzle的顶部。
过度分割的问题可以用增加图像分辨率解决。附图说明图17展示了当图像分辨率提高到1280×1280并使用较大值时,例如:5或7,所产生的识别结果。在图16中House底部的多个平行DSS在图17中被识别为一个DSS。此外,观察图17中Puzzle的边缘图像,可以发现图17中Puzzle的识别结果具有较好的抗噪声与连接中断边缘的特点。
附图说明图18展示了使用本发明方法处理图16所示6副图像不同分辨率版本的边缘图像耗时情况。6副边缘图像的分辨率以像素为单位,从128×128开始,以32×32为步长增加分辨率,直至1280×1280结束。由于分辨率的两维相同,图18的横轴仅标注了其中一维,例如:128×128标注为128。图18的纵轴是以Tick的log值为单位的本发明方法运算时间,1Tick表示100纳秒(nanosecond)。观察图18可以判断处理图像Lena的运算时间,较其他图像而言,较大,而Puzzle的处理时间较小。这主要是由于Lena边缘图像的图像空间中存在大量相互临近由前景像素构成的边缘,而Puzzle中的边缘间的距离在图像空间中相对较大。这说明本发明方法更适合处理图像空间中边缘间距大于的边缘图像。
附图说明图19展示了本发明方法处理图16所示6副分辨率为128×128,640×640和1280×1280的边缘图像时,各步骤的运算时间。图19纵轴单位和图18相同,横轴则标注了6副图像的名称,对于每幅图像,运算时间按分辨率从小到大的方式排列,例如:图19横轴标注的Cameraman,该名称上方有3个立柱,图19中按从左向右的顺序,3个立柱分别对应分辨率为128×128,640×640和1280×1280的边缘图像处理耗时。图19中的每个立柱高度代表本发明方法处理相应图像的总耗时,立柱中从下向上不同颜色的区域顺序表示步骤1.1至步骤2.3的耗时,区域越长,则耗时越多。通过观察图19,可以发现图像Lena和Puzzle分别反映了总耗时较大和较小的情况,同时可以发现图像Lena的耗时增长主要由橙色区域,即步骤2.1引起,而图像Puzzle能在高分辨率下维持低耗时,也是由于步骤2.1的耗时未大幅增加。
附图说明中图20至图22依次展示了使用本发明方法处理图像Lena,Tower和Puzzle不同分辨率版本的边缘图像的耗时情况。图20至图22的横轴单位,纵轴单位均与图18相同。类似图19的观察结果,观察图20至22,特别是代表步骤2.1耗时情况的最上方折线,容易发现步骤2.1是引起总耗时增加的主要原因。图像Lena的耗时在图18中横轴高维区域的增长,与图20中步骤2.1的耗时在同一区域的增长对应,而图像Puzzle的耗时在图18中高维区域的缓慢增长,与图22中步骤2.1的耗时在同一区域的缓慢增长对应。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (9)
1.一种基于统计度量直线特征的数字直线段识别方法,其特征在于,包括以下步骤:
步骤1:在数字图像空间中,由上至下逐行扫描,在一行中按从左到右的顺序,尝试读取一个与已读取像素紧邻的新像素,一旦发现尚未读取过的前景像素,则需找到至少两个相邻的点;
步骤2:如果当前DSS包含至少两个前景像素,则持续搜索直至未发现与当前DSS相邻的点,否则删除找到的一个前景像素,继续扫描边缘图像;
步骤3:评估当前DSS的接纳点和未拒绝点,
步骤4:生成方向直方图并根据直方图多峰性分割当前DSS,
步骤5:评估当前DSS宽度并根据宽度进行缩减;
步骤6:根据DSS方向,将DSS集合中的DSS分组;
步骤7:根据DSS间的距离,将每组中的DSS细分为小组;
步骤8:尝试融合每个小组内的DSS。
2.根据权利要求1所述的基于统计度量直线特征的数字直线段识别方法,其特征在于,所述步骤1的具体过程为:
S1.1,初始化一个新的DSS对象,称为当前DSS,并使用所读取的第一个前景像素初始化新的DSSPoint对象,将该DSSPoint对象保存为DSS对象的接纳点;
S1.2,在以该前景像素为圆心且半径为探索半径的圆形范围内,收集前景像素;
S1.3,如果收集到至少1个非圆心的前景像素,则将每个收集到的前景像素都初始化为DSSPoint对象,计算每个DSSPoint对象相对于圆心的方向并将在DSSPoint对象中保存计算结果;否则,结束步骤1;
S1.4,计算收集到的前景像素的平均方向,并找出与平均方向差异最小的DSSPoint对象;
S1.5,将S1.4找到的DSSPoint对象保存为当前DSS对象的接纳点,并根据平均方向对剩余的DSSPoint对象进行分类;
S1.6,在图像空间中删除归属当前DSS对象的DSSPoint对象所对应的前景像素;更新当前DSS的平均中心和边界点。
3.根据权利要求1所述的基于统计度量直线特征的数字直线段识别方法,其特征在于,所述步骤2的具体过程为:
S2.1,以最后保存的像素为圆心,半径为探索半径的半圆范围内收集前景像素,半圆唯一的直径与当前DSS方向垂直,且半圆位于从圆心出发,依当前DSS方向指向的位置;
S2.2,尝试读取S2.1所收集的,除圆心以外的一个尚未读取过的前景像素;
S2.3,如果未成功读取一个前景像素,执行S2.7,否则根据所读取的前景像素初始化一个新DSSPoint对象并假设该DSSPoint对象被接纳,计算假设条件下的DSS厚度,如果厚度超过探索半径2倍,则返回S2.2,否则执行S2.4;
S2.4,计算当前DSS方向与该DSSPoint对象方向的差异;
S2.5,如果所得差异超过方向差异阀值,则执行S2.51,否则执行S2.52;
S2.51,将该DSSPoint对象保存为当前DSS的未拒绝点,更新归属当前DSS的每个点相对于平均中心的坐标,以及当前DSS的边界点;
S2.52,将该DSSPoint对象保存为当前DSS的接纳点,更新当前DSS方向并在图像空间中永久删除该DSSPoint对象对应的像素;
S2.6,根据接纳点和未拒绝点的图像空间坐标,更新当前DSS平均中心坐标,然后返回S2.2;
S2.7,在图像空间中删除步骤1与步骤2访问过的前景像素。
4.根据权利要求1所述的基于统计度量直线特征的数字直线段识别方法,其特征在于,所述步骤3中,比较当前DSS中接纳点与未拒绝点的数量,如果未拒绝点的数量是接纳点数量1.5倍,则将接纳点标识为未拒绝点,并将未拒绝点标识为接纳点。
5.根据权利要求1所述的基于统计度量直线特征的数字直线段识别方法,其特征在于,所述步骤4的具体过程为:
S4.1,比较接纳点的数量和探索半径整数部分的值,如果数量超过值,则生成方向统计,其索引为DSS中每个点的方向的整数部分,值是方向整数部分与索引值相同的点的数量;否则执行S4.11;
S4.2,按方向统计中值的大小降序排列索引;
S4.3,尝试找到方向统计的最大值和次大值,如果方向统计中包含至少2对索引与值,则执行S4.41;否则执行S4.42;
S4.41,比较最大值和次大值,如果次大值达到0.7倍的最大值,则将最大值与次大值对应的索引,记录为分割方向,并在方向统计中删除最大值及其索引,否则返回S4.3;
S4.42,检查分割方向数量,如果至少存在2个分割方向,则按步骤2记录的像素顺序,依次读取当前DSS中尚未被S4.42读取过的接纳点,否则执行S4.8;
S4.5,如果所读取接纳点非当前DSS的最后一个接纳点,则将所读取点的方向与所有分割方向进行比较;否则执行S4.8;
S4.6,如果与所读取点的方向差异最小的分割方向与兼容分割方向不同,则记录新分割方向的出现次数,否则返回S4.42以读取下一个接纳点;
S4.7,如果出现次数大于3次,则将所读取点标记为分割位置并将新分割方向标记为兼容分割方向;否则返回S4.42以读取下一个接纳点;
S4.8,删除第一个分割位置,根据剩余的分割位置,将步骤2中保存接纳点的前后顺序划分为多个区间,对于每个区间所保存的接纳点,初始化一个新的DSS并将接纳点重新保存为该DSS的接纳点;
S4.9,生成S4.8产生的多个DSS的平均中心,并根据线性回归计算每个DSS的方向;
S4.10,对于当前DSS的每个未拒绝点,计算其与S4.8所生成DSS的平均中心之间的距离,将其分配给距离最近的DSS,初始化一个新的DSS集合,并将分割产生的DSS保存在该集合中,结束步骤4;
S4.11,在图像空间中恢复S2.7所删除的,原DSS的未拒绝点,结束步骤4。
6.根据权利要求1所述的基于统计度量直线特征的数字直线段识别方法,其特征在于,所述步骤5的具体过程为:
S5.1,尝试从步骤4产生的DSS集合中读取一个尚未读取过的DSS;
S5.2,如果存在一个尚未读取过的DSS,则对于所读取DSS中的每个点,计算其在原点为DSS平均中心且X轴正半轴指向DSS方向的坐标系中的坐标;否则结束步骤5;
S5.3,根据所计算坐标值找到所读取DSS的边界点,根据边界点计算DSS厚度,将厚度与探索半径比较;
S5.4,如果厚度超过探索半径的2倍,则将探索半径2倍外的点从DSS中删除;否则返回S5.1;
S5.5,如果图像空间中具有最大二维索引的像素尚未被步骤1读取,则返回步骤1,否则开始步骤6。
7.根据权利要求1所述的基于统计度量直线特征的数字直线段识别方法,其特征在于,所述步骤6的具体过程为:
S6.1,尝试从DSS集合中读取一个本步骤尚未读取的DSS,如果存在一个尚未被本步骤读取过的DSS,则标记所读取DSS为外DSS,否则结束步骤6;
S6.2,尝试从DSS集合中读取一个本步骤尚未读取的DSS,如果不包括外DSS,存在一个尚未被本步骤读取过的DSS,则标记所读取DSS为内DSS,并计算内DSS与外DSS方向的差异;否则返回S6.1;
S6.3,如果差异不大于方向差异阀值,则遍历DSSGroup集合的成员,如果内DSS尚未被任何成员包含,则找到与内DSS方向差异最小的成员;否则返回S6.2;
S6.4,如果存在一个方向差异最小的成员,则计算内DSS与该成员的方向差异,否则返回S6.2;
S6.5,如果S6.4所计算的差异不大于方向差异阀值,则将内DSS添加进该成员,并更新该成员的方向,返回S6.2;否则,将内DSS添加进键为外DSS的成员,或初始化这样一个成员如果无法找到该成员,返回S6.2。
8.根据权利要求1所述的基于统计度量直线特征的数字直线段识别方法,其特征在于,所述步骤7的具体过程为:
S7.1,尝试在DSSGroup集合中读取一个尚未读取过的成员,如果存在一个尚未读取过的成员,则检查所读取的成员;否则结束步骤7;
S7.2,如果该成员非空,则找到成员中具有最多接纳点的DSS,并标记该DSS为最大DSS;否则返回S7.1;
S7.3,对于成员中的每个DSS,计算其相对于“原点为最大DSS平均中心且X正半轴指向最大DSS方向的坐标系”的平均中心坐标值;
S7.4,将每个DSS和其平均中心X坐标值作为“键-值”成对保存在成员的DSSDistances属性中,其中键为DSS;
S7.5,尝试读取DSSDistances属性中的一对“键-值”,如果存在尚未被读取的键值对,则执行S7.61,否则执行S7.62;
S7.61,通过查看值,比较键所对应的DSS与最大DSS间的距离,如果距离不大于探索半径,则计算键所对应的DSS与最大DSS边界点间的距离,并找到其中最小的距离,否则返回S7.5;
S7.62,从成员中删除最大DSS,及成员的DSSForMerging属性中对应最大DSS的键值对所包含的DSS,然后返回S7.1;
S7.7,如果最小距离没有超过探索半径的2倍,则检查键所对应的DSS是否已被成员DSSForMerging属性中的键值对所包含;否则返回S7.5;
S7.8,如果已包含,则返回S7.5;否则根据成员DSSForMerging属性中对应最大DSS的键值对所包含DSS的所有接纳点,计算厚度;
S7.9,如果厚度不大于探索半径的2倍,则将键所对应的DSS添加进成员DSSForMerging属性中对应最大DSS的键值对中并返回S7.5;否则返回S7.5。
9.根据权利要求1所述的基于统计度量直线特征的数字直线段识别方法,其特征在于,所述步骤8的具体过程为:
S8.1,尝试在DSSGroup集合中读取一个S8.1尚未读取过的成员,如果存在一个尚未读取过的成员,则尝试读取成员DSSForMerging属性中一个尚未读取过的键值对,否则结束步骤8;
S8.2,如果存在一个尚未读取过的键值对,则将所读取键值对中包含的所有DSS添加给键所对应的DSS,并将DSS集合中对应的原DSS删除;否则返回S8.1中的尝试读取成员DSSForMerging属性中一个尚未读取过的键值对;
S8.3,标识“发生融合”为真并返回S8.1;
S8.4,若“发生融合”为真,则返回S7.1,否则结束步骤8。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510812214.3A CN105513044B (zh) | 2015-11-20 | 2015-11-20 | 一种基于统计度量直线特征的数字直线段识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510812214.3A CN105513044B (zh) | 2015-11-20 | 2015-11-20 | 一种基于统计度量直线特征的数字直线段识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105513044A true CN105513044A (zh) | 2016-04-20 |
CN105513044B CN105513044B (zh) | 2018-07-17 |
Family
ID=55721001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510812214.3A Active CN105513044B (zh) | 2015-11-20 | 2015-11-20 | 一种基于统计度量直线特征的数字直线段识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105513044B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112802045A (zh) * | 2021-02-24 | 2021-05-14 | 燕山大学 | 一种同步检测图像中平行直线和平行曲线特征的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4901365A (en) * | 1988-12-19 | 1990-02-13 | Ncr Corporation | Method of searching binary images to find search regions in which straight lines may be found |
US20070022329A1 (en) * | 2003-04-03 | 2007-01-25 | Thomas Adamek | Shape matching method for indexing and retrieving multimedia data |
CN101315698A (zh) * | 2008-06-25 | 2008-12-03 | 中国人民解放军国防科学技术大学 | 基于直线特征图像配准中的特征匹配方法 |
CN102819743A (zh) * | 2012-08-14 | 2012-12-12 | 常州大学 | 一种快速识别数字图像中直线段的检测方法 |
CN104751177A (zh) * | 2015-03-26 | 2015-07-01 | 常州大学 | 一种用于标识数字图像中给定模糊数字直线段的方法 |
-
2015
- 2015-11-20 CN CN201510812214.3A patent/CN105513044B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4901365A (en) * | 1988-12-19 | 1990-02-13 | Ncr Corporation | Method of searching binary images to find search regions in which straight lines may be found |
US20070022329A1 (en) * | 2003-04-03 | 2007-01-25 | Thomas Adamek | Shape matching method for indexing and retrieving multimedia data |
CN101315698A (zh) * | 2008-06-25 | 2008-12-03 | 中国人民解放军国防科学技术大学 | 基于直线特征图像配准中的特征匹配方法 |
CN102819743A (zh) * | 2012-08-14 | 2012-12-12 | 常州大学 | 一种快速识别数字图像中直线段的检测方法 |
CN104751177A (zh) * | 2015-03-26 | 2015-07-01 | 常州大学 | 一种用于标识数字图像中给定模糊数字直线段的方法 |
Non-Patent Citations (3)
Title |
---|
王学娟 等: "一种采用HOG特征的直线段提取方法", 《红外与激光工程》 * |
艾锐 等: "低信噪比红外图像直线段检测算法", 《红外与激光工程》 * |
董晶 等: "基于边缘连接的快速直线段检测算法", 《光学学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112802045A (zh) * | 2021-02-24 | 2021-05-14 | 燕山大学 | 一种同步检测图像中平行直线和平行曲线特征的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105513044B (zh) | 2018-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110097536B (zh) | 基于深度学习和霍夫变换的六边形螺栓松动检测方法 | |
Tian et al. | Optimization in multi‐scale segmentation of high‐resolution satellite images for artificial feature recognition | |
CN106407883B (zh) | 一种复杂表格及其内部手写数字识别方法 | |
CN104751187B (zh) | 抄表图像自动识别方法 | |
CN107491730A (zh) | 一种基于图像处理的化验单识别方法 | |
CN105205488B (zh) | 基于Harris角点和笔画宽度的文字区域检测方法 | |
Cao et al. | 3D building roof reconstruction from airborne LiDAR point clouds: A framework based on a spatial database | |
Merabet et al. | Building roof segmentation from aerial images using a line-and region-based watershed segmentation technique | |
CN104794479B (zh) | 基于局部笔画宽度变换的自然场景图片中文本检测方法 | |
Zhao et al. | Extracting buildings from and regularizing boundaries in airborne lidar data using connected operators | |
CN103530590A (zh) | Dpm二维码识别系统 | |
CN108090494A (zh) | 基于Gabor滤波器及支持向量机纺织品瑕疵识别方法 | |
CN102446356A (zh) | 一种获取均匀分布匹配点的遥感影像并行自适应匹配方法 | |
CN104123554A (zh) | 基于mmtd的sift图像特征提取方法 | |
Liang et al. | An extraction and classification algorithm for concrete cracks based on machine vision | |
CN112990183A (zh) | 离线手写汉字同名笔画提取方法、系统、装置 | |
CN110335280A (zh) | 一种基于移动端的金融单据图像分割与矫正方法 | |
CN113158895A (zh) | 票据识别方法、装置、电子设备及存储介质 | |
CN113609984A (zh) | 一种指针式仪表读数识别方法、装置及电子设备 | |
Guo et al. | Exploring GIS knowledge to improve building extraction and change detection from VHR imagery in urban areas | |
CN113033558A (zh) | 一种用于自然场景的文本检测方法及装置、存储介质 | |
Wang et al. | Voxel segmentation-based 3D building detection algorithm for airborne LIDAR data | |
Tsai et al. | Generalized traffic sign detection model for developing a sign inventory | |
Siddiqui et al. | Clustering techniques for image segmentation | |
CN110647824A (zh) | 基于计算机视觉技术的增值税发票版面提取方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230419 Address after: Room 101, Block A, Tianrun Science and Technology Building, Changzhou Science and Education City, No. 18-3 Changwu Middle Road, Wujin District, Changzhou City, Jiangsu Province, 213000 Patentee after: Changzhou Changda Science and Technology Park Management Co.,Ltd. Address before: Gehu Lake Road Wujin District 213164 Jiangsu city of Changzhou province No. 1 Patentee before: CHANGZHOU University |