首页 / 专利库 / 专利权 / 专利合作条约 / 第I章 / 国际申请 / 明显错误 / 一种快速骨骼化二值数字图像中图形的方法

一种快速骨骼化二值数字图像中图形的方法

阅读:471发布:2020-05-18

专利汇可以提供一种快速骨骼化二值数字图像中图形的方法专利检索,专利查询,专利分析的服务。并且本 发明 涉及一种快速骨骼化二值数字图像中图形的方法,包括以下步骤:1、扫描图像并计算局部最大值;2、基于距离函数的 算法 生成图形骨骼;3、删除错误的骨骼分支,包括找出由步骤2产生的错误图形骨骼分支的骨骼端点和删除错误的骨骼分支,与错误图形骨骼分支的骨骼端点在图像坐标空间中坐标值差异等于0或1的,非当前骨骼端点的8个 像素 中没有或仅有一个局部最大值;骨骼端点为在二值图像坐标空间中邻域内仅一侧有 前景像素 的前景像素。本发明算法所产生的骨骼基本与目前国际主流细化算法所产生的骨骼一致;且结构简单,实施方便,运行高效,本发明算法的计算复杂度为O(n2)+O(m2)=O(n2),与Davies算法一致,但运行结果明显优于Davies算法。,下面是一种快速骨骼化二值数字图像中图形的方法专利的具体信息内容。

1.一种快速骨骼化二值数字图像中图形的方法,设二值图像中二值中的一种像素值为前景像素,另一种为背景像素,其特征在于包括以下步骤:
(1)扫描图像并计算局部最大值;
(2)基于距离函数的算法生成图形骨骼:所述骨骼为图形局部上,在图像坐标空间中具有连续坐标的,最大内切圆圆心的坐标集合;所述图形骨骼具有若干分支;
(3)删除错误的骨骼分支,包括
(3a)找出骨骼端点:找出由步骤(2)产生的错误图形骨骼分支的骨骼端点,与所述错误图形骨骼分支的骨骼端点在图像坐标空间中坐标值差异等于0或1的,非当前骨骼端点的8个像素中没有或仅有一个局部最大值;所述骨骼端点为在二值图像坐标空间中邻域内仅一侧有前景像素的前景像素;
(3b)删除错误的骨骼分支:从步骤(3a)找出的骨骼端点出发,沿该骨骼端点所在的骨骼分支找出交汇点,判断所述交汇点是否是真实交汇点;如果是真实交汇点,则删除骨骼端点与该交汇点之间的骨骼分支;所述真实交汇点邻域内具有多个前景像素,且该点是局部最大值;
其中,所述局部最大值是指图形局部上最大内切圆半径的近似正整数值;所述图形局部是指图形内部包含图形边界,且不包含背景像素的一连续区域;所述图形是指在图像坐标空间中,由前景像素所组成的,内部不存在背景像素的一块封闭区域;所述图形边界是指属于图形的,前景像素与背景像素之间不存在其他像素的前景像素的集合;所述图像坐标空间是指使用正整数坐标表示和记录图像像素间相对空间位置的矩阵;邻域是指图像坐标空间中与特定像素坐标值差异小于或等于一个给定数值m的像素的集合;所述距离函数是指用于计算前景像素与其所在图形的图形边界的欧式距离值的方法;局部最大值空间为用于存储局部最大值的,与原二值图像具有相同图像坐标空间的一个存储空间;
设正向扫描的顺序为从上至下逐行检查每行,在每一行中从左向右检查每个像素;反向扫描的顺序为从下至上逐行检查每行,在每一行中从右向左检查每个像素;
所述的步骤(1)包括:
(1a)正向扫描计算:在二值图像坐标空间中按正向扫描的顺序检查每一个像素,如果被检查的像素是前景像素,则检查该前景像素邻域左上,将所述邻域左上角像素中的欧式距离近似正整数值赋予该前景像素;
(1b)反向扫描计算:在二值图像坐标空间中按反向扫描的顺序检查每一个像素,如果被检查的像素是前景像素,则检查该前景像素邻域右下角,将所述邻域右下角像素中的欧式距离近似正整数值赋予该前景像素;
(1c)找出局部最大值:建立局部最大值空间中的与所述图像的维数相同的图像,设为对应图像;按正向或反向扫描的顺序检查原图像坐标空间的每个像素,如果该像素为前景像素,则检查其整个邻域,如果其值不小于邻域中像素的最大值,则将该像素值赋予对应图像上具有与该像素相同坐标值的对应像素,否则将0赋予其对应像素;
(1d)删除孤立的最大值:在局部最大值空间中找到前景像素,并删除邻域内仅存在背景像素的前景像素;
其中,步骤(1a)和步骤(1b)没有先后顺序;
欧式距离近似正整数值计算公式为
式(1)中,X表示一幅二值数字图像;B表示一个球心位于图形边界的可移动球体;●表示细化运算,即将所选定的前景像素的值设为背景像素;n表示细化次数;N表示正整数集合;p表示二值图像中图形包含的一个前景像素;distx(p)表示p的欧式距离的近似正整数值。
2.如权利要求1所述的一种快速骨骼化二值数字图像中图形的方法,其特征在于:所述的步骤(2)包括:
(2a)细化图形:在局部最大值的基础上,重复剥离像素以重复删除图形边界,得到包含骨骼和产生该骨骼的原图形中部分像素的近似骨骼;所述剥离像素依次包括剥离北侧像素、剥离南侧像素、剥离东侧像素和剥离西侧像素;
(2b)细化骨骼为单位像素宽:在步骤(2a)的基础上,在二值图像坐标空间中细化由局部最大值空间中所聚集的局部最大值导致的超过单位像素宽的骨骼分支,最终得到单位像素宽的近似骨骼。
3.如权利要求2所述的一种快速骨骼化二值数字图像中图形的方法,其特征在于:设相交数为:在二值图像中,选择任意一个前景像素,从其邻域内任意像素出发,依次经过每个邻域像素,至回到出发像素为止,像素值发生变化的总次数,记做χ;当前景像素的邻域大小为3×3,且χ=2时,所述步骤(2a)中的重复剥离像素的剥离判断条件还包括前景像素的邻域内至少有2个前景像素。
4.如权利要求1-3中任一项所述的一种快速骨骼化二值数字图像中图形的方法,其特征在于:当前景像素的邻域大小为3×3时,所述的步骤(3b)为:以步骤(3a)中得到的骨骼端点为起点,沿该骨骼端点所在的骨骼分支移动,直到骨骼分支交汇点停止;移动的条件为在二值图像坐标空间中邻域内仅一侧有前景像素和在局部最大值空间中邻域内存在0个或1个局部最大值;当不满足移动条件时,判断移动结束点是否是真实交汇点,所述真实交汇点在图像坐标空间中邻域内具有多个前景像素,并在局部最大值空间中邻域内存在至少
2个局部最大值;如果是真实交汇点,将骨骼端点和交汇点之间的骨骼分支删除;如果不是真实交汇点,则在移动结束后,继续移动并在每次移动中都检查当前点是否是真实交汇点,抵达真实交汇点后,删除骨骼端点和交汇点之间的骨骼分支。
5.如权利要求4所述的一种快速骨骼化二值数字图像中图形的方法,其特征在于:设相交数为:在二值图像中,选择任意一个前景像素,从其邻域内任意像素出发,依次经过每个邻域像素,至回到出发像素为止,像素值发生变化的总次数,记做χ;所述真实交汇点的判断条件为χ≥4并且邻域中的局部最大值数量大于或等于3。

说明书全文

一种快速骨骼化二值数字图像中图形的方法

技术领域

[0001] 本发明属于一种对二值数字图像中图形进行细化从而得到其骨骼的图像处理方法,特别涉及一种快速骨骼化二值数字图像中图形的方法。

背景技术

[0002] 国内外类似的骨骼化方法常用于光学字符识别 (OpticalCharacterRecognition,OCR)和一些基于图像形状的图像处理算法,例如霍夫变换(HoughTransformation,HT)图像算法,因此用于获取图形骨骼的细化算法具有重要的工业应用价值和学术理论意义。
[0003] 二值图像中图形骨骼的概念早在1967年由Blum首次提出,骨骼是指在由前景像素所组成的区域中,与区域局部边界相切的,最大内切圆的圆心的集合,参见H.Blum,“A transformation for extracting new descriptors of shape”,Modelsfor the Perception of Speech and Visual Form,pp.362-380,1967。经过多年发展,涌现出两类细化算法,即基于距离函数和非距离函数的细化算法。基于距离函数的算法是一种传统的细化算法,而非距离函数算法相对而言是较新的算法,例如基于神经网络(详见R.Krishnapuram,F.Chen,“Implementation of parallelthinning algorithms using recurrent neural networks”,IEEE Trans.Neural Netw.,vol.4,no.1,pp.142-147,Jan.1993.),小波(详 见Y.Y.Tang,X.G.You,“Skeletonizationof ribbon-like shapes based on a new wavelet function”,IEEE Trans.Pattern Anal.Mach.Intell.,vol.25,no.9,pp.1118-1133,Sep.2003.)和曲率流(详见A.Imiya,M.Saito,“Thinning by curvature flow”,Journal of Visual Communication and ImageRepresentation,vol.17,no.1,pp.27-41,Feb.2006.)的细化算法。非距离函数算法主要应用于对三维二值图像中三维图形的骨骼化处理,对二维图像而言,这些算法过于复杂且运算量较大,参 见 W.Wong,F.Y.Shih,T.Su,“Thinning algorithmsbased on quadtree and octree representations”,Information Sciences,vol.176,no.10,pp.1379–1394,May.2006。因此,在二维二值图像中,传统的基于距离函数的细化算法仍然是一种获取图形骨骼的高效方法。
[0004] 基于距离函数的细化算法大致可分为基于光栅扫描和基于中轴的算法, 参 见 S.Bag,G.Harit,“An improved contour-based thinning method for characterimages”,Pattern Recognition Letters,vol.32,no.11,pp.1836-184
2,Oct.2011。在1981年,Davies提出了一种基于光栅扫描的经典细化算法,详见E.R.Davies,Machine Vision:Theory,Algorithms,Practicalities,3rd ed.CA:Morgan Kaufmann,2005。与现代细化算法不同,这种算法除了二维矩阵之外,并没有使用额外的、复杂的数据结构来辅助算法,也没有使用用于给出距离函数计算值的查询表,所以该算法结构简单,易于分析和实现,但其细化效果随图形复杂度的增加而衰减。近年来,相继有基于光栅扫描的细化算法问世,其中Wong于2006年提出了一种能给出复杂图形有效骨骼的细化算法,详见W.Wong,F.Y.Shih,T.Su,“Thinning algorithms based on quadtree and octree representations”,InformationSciences,vol.176,no.10,pp.1379-1394,May.2006。这种算法采用了四叉树和八叉树的复杂数据结构,预计算了距离函数的值并存储在查询表中,这使得该算法以耗费较多计算资源的较大代价换取了给出复杂图形骨骼的结果。

发明内容

[0005] 本发明所解决的技术问题主要有以下两点:
[0006] (1)由于非距离函数的细化算法普遍具有运算量大,结构复杂的特点,并不适用于二维图像的骨骼计算,而基于距离函数的传统细化算法近年来呈现出依赖复杂数据结构的趋势,虽然这种算法的骨骼化效果较为理想,但却耗费了较多的计算资源,而且算法结构异常复杂,难以分析和实际应用。本发明所突破的技术问题之一是不使用过于复杂的数据结构及相关数据算法,不使用预计算的、庞大的距离函数值查询表,从而达到减少运算量和降低占用资源的目的。
[0007] (2)虽然一些经典算法确实没有使用复杂数据结构和查询表,但这些算法普遍具有骨骼化效果随图形复杂化而衰减的特点,因此虽然运行速度较快,但对复杂图形的运行结果基本不具备实际应用价值。这也是本发明所面临的主要技术问题:对二维二值图像中的复杂图形,如何让一个设计简单、易于实现的算法能生成与设计复杂、实现困难的算法相近,甚至相同的骨骼。
[0008] 本发明提供一种快速骨骼化二值数字图像中图形的方法,计算量较小、计算资源占用较少,生成的骨骼与国际主流细化算法的结果基本一致。
[0009] 本发明解决其技术问题所采用的技术方案是:本发明使用计算机程序语言实现相应算法来完成实施。
[0010] 为使陈述清楚明了,现定义下列二值数字图像中的概念。
[0011] 图像坐标空间:使用正整数坐标表示和记录图像像素间相对空间位置的矩阵。
[0012] 前景像素:二值图像中二值中的一种像素值。
[0013] 背景像素:二值图像中二值中的非前景像素的像素值。
[0014] 图形:在图像坐标空间中,由前景像素所组成的,内部不存在背景像素的一封闭区域。
[0015] 图形边界:属于图形的,前景像素与背景像素之间不存在其他像素的前景像素的集合。
[0016] 图形局部:图形内部包含图形边界,且不包含背景像素的一块连续区域。
[0017] 局部最大值:图形局部上最大内切圆半径的近似正整数值。
[0018] 局部最大值空间:用于存储局部最大值的,与原二值图像具有相同图像坐标空间的一个存储空间。
[0019] 邻域:图像坐标空间中与特定像素坐标值差异小于或等于一个给定数值m的像素的集合。如果特定像素用P0表示,那么3×3邻域包含8个像素P1至P8,它们的排列方式可以用下式表示:
[0020]
[0021] 相交数:记做χ,在二值图像中,选择任意一个前景像素,从其邻域内任意像素出发,依次经过每个邻域像素,直至回到出发像素为止,像素值发生变化的总次数。例如,以式(1)所示的3×3邻域为例,下式左侧矩阵中心元素的邻域中,1表示前景像素,0表示背景像素,从P1的位置出发,至P2,P3,等等,至P8,最后到达P1结束。整个过程中,像素值的变化发生了2次,分别是P7至P8,和P8至P1。下式右侧矩阵中心元素的χ也是2,即P1与P2之间,P6与P7之间。
[0022]
[0023] 细化:将所选定的前景像素的值设为背景像素。
[0024] 单位距离:图像坐标空间中,前景像素之间的最短欧式距离。
[0025] 本发明包括以下步骤:
[0026] (1)扫描图像并计算局部最大值;
[0027] (2)基于距离函数的算法生成图形骨骼:所述骨骼为图形局部上,在图像坐标空间中具有连续坐标的,最大内切圆圆心的坐标集合;所述图形骨骼具有若干分支;所述距离函数是指用于计算前景像素与其所在图形的图形边界的欧式距离值的方法。
[0028] (3)删除错误的骨骼分支,包括
[0029] (3a)通过与国际主流骨骼化算法的结果对比,并通过裁剪包含由步骤(1)和(2)产生的骨骼错误分支的图像局部区域及其对应的局部最大值空间中的局部区域,以文本字符形式输出局部区域的矩阵,观察矩阵中错误骨骼分支端点处二值图像空间中前景像素和局部最大值空间中局部最大值的分布情况,发现骨骼错误分支的端点的邻域往往没有,或仅有一个局部最大值,因此,要删除错误分支,就要先找到这些分支的起点。
[0030] 找出骨骼端点:找出由步骤(2)产生的错误图形骨骼分支的骨骼端点,与所述错误图形骨骼分支的骨骼端点在图像坐标空间中坐标值差异等于0或1的,非当前骨骼端点的8个像素中没有或仅有一个局部最大值;所述骨骼端点为在二值图像坐标空间中邻域内仅一侧有前景像素的前景像素;
[0031] (3b)删除错误的骨骼分支:从步骤(3a)找出的骨骼端点出发,沿该骨骼端点所在的骨骼分支找出交汇点,判断所述交汇点是否是真实交汇点;如果是真实交汇点,则删除骨骼端点与该交汇点之间的骨骼分支;所述真实交汇点邻域内具有多个前景像素,且该点是局部最大值。
[0032] 以下介绍步骤(1)的具体步骤,步骤(1)的具体步骤是基于距离函数实现的,距离函数,也就是欧式距离近似正整数值的计算公式,用下式描述,
[0033]
[0034] 式(3)中,X表示一幅二值数字图像;B表示一个球心位于图形边界的可移动球体;·表示细化运算,即将所选定的前景像素的值设为背景像素;n表示细化次数;N表示正整数集合;p表示二值图像中图形包含的一个前景像素;distx(p)表示p的欧式距离的近似正整数值。式(3)中“(X·nB)”表示的是图形第n细化后的结果,详见下文的式(4)与式(5)。p的距离是由细化次数给出的,即在细化过程中,第一次发现p被细化时n的值。
[0035] 设正向扫描的顺序为从上至下逐行检查每行,在每一行中从左向右检查每个像素;反向扫描的顺序为从下至上逐行检查每行,在每一行中从右向左检查每个像素;
[0036] 所述的步骤(1)包括:
[0037] (1a)正向扫描计算:在二值图像坐标空间中按正向扫描的顺序检查每一个像素,如果被检查的像素是前景像素,则检查该前景像素邻域左上,将所述邻域左上角像素中的欧式距离近似正整数值赋予该前景像素;
[0038] 以式(3)所示的像素为例,如果P0的值非零,所检查的像素则包括P2,P3,P4和P5。将邻域左上角像素中的最小像素值与单位距离之和赋予该前景像素。图10显示了在预设实施条件下,以图9为输入图像,运行“正向扫描计算”的结果。从图中,可以观察到图形的右下侧像素的值偏大。经过“正向扫描计算”后,二值图像中所保存的已不是其原始数据,而是每个像素相对于其所在图形的左上边缘的欧式距离近似值。
[0039] (1b)反向扫描计算:在二值图像坐标空间中按反向扫描的顺序检查每一个像素,如果被检查的像素是前景像素,则检查该前景像素邻域右下角,将所述邻域右下角像素中的欧式距离近似正整数值赋予该前景像素;
[0040] 以式(3)所示的像素为例,所检查的邻域像素包括P6,P7,P8和P1。最后将所检查邻域中的最小像素值与单位距离之和赋予该前景像素。图11显示了在图10的基础上,运行“反向扫描计算”的结果。
[0041] (1c)找出局部最大值:建立局部最大值空间中的与所述图像的维数相同的图像,设为对应图像;按正向或反向扫描的顺序检查原图像坐标空间的每个像素,如果该像素为前景像素,则检查其整个邻域,如果其值不小于邻域中像素的最大值,则将该像素值赋予对应图像上具有与该像素相同坐标值的对应像素,否则将0赋予其对应像素;
[0042] 图12显示了在图11的基础上,运行“找出局部最大值”的结果。
[0043] (1d)删除孤立的最大值:在局部最大值空间中找到前景像素,并删除邻域内仅存在背景像素的前景像素;
[0044] 步骤(1d)的作用主要是去除由于图形边界的微小起伏而产生的局部最大值。通过与国际主流骨骼化算法的结果对比,并通过裁剪包含由步骤(1a)、(1b)和(1c)所产生骨骼错误分支的图像局部区域及其对应的局部最大值空间中的局部区域,以文本字符形式输出局部区域的矩阵,观察矩阵中错误骨骼分支端点处二值图像空间中前景像素和局部最大值空间中局部最大值的分布情况,发现这类局部最大值往往是产生部分错误骨骼分支的原因。
[0045] 其中,步骤(1a)和步骤(1b)没有先后顺序;
[0046] 具体地,所述的步骤(2)包括:
[0047] (2a)细化图形:在局部最大值的基础上,以重复删除图形边界的方式,得到包含骨骼和产生该骨骼的原图形中部分像素的近似骨骼;所述重复删除图形边界的方式为骨骼化运算:
[0048]
[0049] 式(4)中,X表示一幅二值数字图像,∪表示全集,B表示一个球心位于图形边界的可移动球体,·表示细化运算,即将所选定的前景像素的值设为背景像素,\表示集合减法,ρA(C)表示根据集合C重建集合A的操作,n表示细化次数,N表示正整数集合,Ult(X)表示骨骼化运算;
[0050] 式(4)在概念上给出了细化运算的最终结果:具有单位像素宽的,图形的骨骼。该式要求第n次所删除的是从第(n+1)次所删除的像素重构的像素,因此式(4)中“ρ(X·nB)(X·(n+1)B)”实际上是细化运算的终止条件。例如,对一个具有B直径的球形图形应用式(4),当n=1和n=2时,“ρ(X·nB)(X·(n+1)B)”分别表示除圆心外球形图形的部分和空集,因此对于n=2,式(4)变为下式:
[0051]
[0052] 因此,式(5)给出的是球形图形的圆心,实际上就是该图形的骨骼。
[0053] 一般地,采用重复剥离像素以重复删除图形边界,所述剥离像素依次包括剥离北侧像素、剥离南侧像素、剥离东侧像素和剥离西侧像素。
[0054] 细化过程涉及原始二值图像数据和局部最大值空间中存储的局部最大值。当前景像素的邻域大小为3×3时,该细化过程删除的是原二值图像中的图形中不具有局部最大值,且满足χ值为2的前景像素。χ为2时,往往表示当前像素位于图形的边缘,例如式(2)右侧的矩阵,但由于式(2)左侧矩阵的中心像素的χ也为2,而这个像素是潜在的骨骼端点,不应被删除,因此还要附加一个剥离条件,即当前景像素的邻域大小为3×3,且χ=2时,所述步骤(2a)中的重复剥离像素的剥离判断条件还包括前景像素的邻域内至少有2个前景像素。
[0055] (2b)由于(2a)中不删除局部最大值,而局部最大值有在图像坐标空间中连续存在的可能性,例如图12中的局部最大值,所以这些成片分布的局部最大值使近似骨骼部分分支的宽度超过单位像素,需要细化这部分像素,从而生成真正意义上的骨骼。
[0056] 细化骨骼为单位像素宽:在步骤(2a)的基础上,在二值图像坐标空间中细化由局部最大值空间中所聚集的局部最大值导致的超过单位像素宽的骨骼分支,最终得到单位像素宽的近似骨骼。
[0057] 具体地,当前景像素的邻域大小为3×3,即m=1时,所述的步骤(3b)为:以步骤(3a)中得到的骨骼端点为起点,沿该骨骼端点所在的骨骼分支移动,直到骨骼分支交点停止;移动的条件为在二值图像坐标空间中邻域内仅一侧有前景像素和在局部最大值空间中存在0个或1个局部最大值;当不满足移动条件时,判断移动结束点是否是真实交汇点,所述真实交汇点在图像坐标空间中邻域内具有多个前景像素,并在局部最大值空间中邻域内存在至少2个局部最大值;如果是真实交汇点,将骨骼端点和交汇点之间的骨骼分支删除;如果不是真实交汇点,则在移动结束后,则继续移动并在每次移动中都检查当前点是否是真实交汇点,抵达真实交汇点后,删除骨骼端点和交汇点之间的骨骼分支。
[0058] 通过裁剪包含由步骤(1)、(2)和(3a)所标记的骨骼分支端点的图像局部区域及其对应的局部最大值空间中的局部区域,以文本字符形式输出局部区域的矩阵,观察矩阵中骨骼分支端点处二值图像空间中前景像素和局部最大值空间中局部最大值的分布情况,发现真实交汇点往往聚集了多个前景像素,其中同时还是局部最大值,当前景像素的邻域大小为3×3时,所述真实交汇点的判断条件为χ≥4并且邻域中的局部最大值数量大于或等于3。
[0059] 至此,本发明的原理和技术方案全部介绍完毕。
[0060] 本发明的有益效果是,本发明的有益效果集中体现在骨骼的正确性和算法简单高效的结构上。
[0061] (1)本发明算法所产生的骨骼基本与目前国际主流细化算法所产生的骨骼一致。
[0062] 图13是本发明算法与经典的Davies细化算法的运行结果比较。从图中可以很直观地观察到图中一共18幅二值图像,本发明产生的骨骼比Davies算法更符合式(4)定义的骨骼,例如对图13中D10的细化,D11的骨骼具有非常多的错误分支,尤其是接近D10中的下方鱼鳍部位,D11产生了大量分支,可实际上正确的分支应该只有一到两条,D12是本算法的运行结果,其骨骼非常准确地反映出D10中上下两侧突出的鱼鳍,而忽视了其他引起错误的分支。D70和D80的例子,D71和D81的骨骼存在大量错误分支,而D72,D82的骨骼则较好地对应了式(4)所定义的骨骼。本发明方法对骨骼的细小尖刺也有很好的消除效果,例如B21,D21,B41,B51,D51和B71中存在的大量尖刺在对应的本发明骨骼中都被成功消除。
[0063] 图14对比了Davies算法,Wong算法和本发明方法。通过观察,可以发现本发明方法与Wong算法差异很小,其中F02,F12,F22和F42与Wong算法骨骼一致,F32,F62和F72的骨骼相比Wong算法,存在个别分支丢失的情况,但F52的骨骼则明显优于Wong算法。
[0064] 图15对比了Davies算法,PCNN算法和本发明算法,通过观察,可以发现C02,C22,C32和C42的骨骼与PCNN算法一致,而C12完全清除了C13中的尖刺和图形底部的两个小分支,非常清楚地反映了C10中汉字的骨骼,因此,C12的结果明显优于PCNN算法。
[0065] (2)本发明算法的结构简单,实施方便,运行高效。
[0066] 对图13至图14所示骨骼的分析说明本发明算法的运行效果基本与采用了四叉树和八叉树的Wong算法以及基于神经网络的PCNN算法的效果相似,但本发明算法的实施过程是非常简单快速的,以本发明的具体实施方式一节的内容为例,该实施方式没有采用除传统的二维矩阵外的任何复杂数据结构,例如Wong算法的八叉树及其相关的数据结构算法,也没有使用非常复杂的神经网络算法,例如PCNN算法所使用的双脉冲耦合神经网络。所以本发明算法的结构和相关实施是比较简单的,非常便于工程技术人员在不同实施平台上快速实现本发明算法。从计算复杂度角度分析,由于本发明算法的步骤(1)和步骤(2)基本和经典的Davies算法相似,而该算法的计算复杂度在文献E.R.Davies,Machine Vision:Theory,Algorithms,Practicalities,3rd ed.CA:Morgan Kaufmann,2005.中已被2
分析过,是O(n),因此只需要分析本发明算法的步骤(3)就可以得出整个算法的计算复杂
2
度。设m是一幅维数为n的二值图像中图形的骨骼端点数,步骤(3)的“找到端点”部分需
2
要约8×n次搜索,然后需要约8×m次检查用于检测临近的局部最大值;而步骤(3)的“删除错误分支”部分存在两条分支,其中运算量较大的一条是牵扯到χ运算的,其复杂度约为O(c1+8×m+1)=O(m),其中c1代表计算χ所需要的运算次数,所以,对于整个步骤(3)而
2
言,其计算复杂度不会超过O(m×(c2+m))=O(m),其中c2表示循环次数,该数实际上是个常
2 2 2
数。所以,本发明算法的计算复杂度为O(n)+O(m)=O(n),与Davies算法一致,虽然在文献W.Wong,F.Y.Shih,T.Su,“Thinning algorithms based on quadtree and octree representations”,InformationSciences,vol.176,no.10,pp.1379–1394,May.2006.中,Wong算
2
法的计算复杂度也为O(n),但由于该算法采用的复杂数据结构,实际运行中的速度将低于本发明的算法。
附图说明
[0067] 下面结合附图和实施例对本发明进一步说明。
[0068] 图1是本发明算法的总体结构图。
[0069] 图2~图8是本发明的具体实施方案原理图,分别表示了本发明具体实施方式的各个步骤的详细流程图
[0070] 图9是一幅二值图像的矩阵。
[0071] 图10是图9经过步骤(1a)的运行结果。
[0072] 图11是图9经过步骤(1b)的运行结果。
[0073] 图12是图9经过步骤(1c)的运行结果。
[0074] 图13是本发明算法与Davies算法的运行结果的比较。
[0075] 图14是本发明算法与Davies算法、Wong算法的运行结果的比较。
[0076] 图15是本发明算法与Davies算法、PCNN算法的运行结果的比较。
[0077] 其中,图9~图12中“1”表示前景像素,“-”表示背景像素。

具体实施方式

[0078] 现在结合附图对本发明作进一步详细的说明。
[0079] 这里给出在特定前提条件下,本发明的一种具体实施方式。特定前提条件包括前景像素为非零像素,背景像素为零值像素,前景像素邻域大小固定为3×3,单位距离为正整数1。在本实施方案中,一旦某个变量被定义,该变量可以被之后所有的算法步骤所使用。例如,假设在图3中定义了一个变量var,那么图4和图9中的任意步骤都可以无需重新定义就可以读取,修改变量var所保存的数据,但无法删除它。为使说明清晰明了,现定义下列算法所涉及的变量。
[0080] 变量binaryImage:存储所输入的二值数字图像数据的矩阵。
[0081] 变量maxImage:存储局部最大值的矩阵。
[0082] 变量chi:存储χ的值。
[0083] 变量changed:指示是否有像素被剥离。
[0084] 变量thinnedImage:存储细化后的图形的矩阵。
[0085] 变量ceased:指示是否停止删除骨骼分支。
[0086] 变量suspiciousTerminals:用于保存骨骼端点。
[0087] 变量coordinate:用于保存像素的坐标信息。
[0088] 变量Pt:用于标识thinnedImage中的特定像素。
[0089] 变量Pm:用于标识maxImage中的特定像素。
[0090] 本发明实施方案的总体结构图详见附图说明中的图2。实施方案根据图1也分为三个总体步骤,即步骤(1)计算局部最大值,步骤(2)生成骨骼和步骤(3)删除错误骨骼分支。三个步骤各自又包含数个子步骤。下面分别按顺序说明每个步骤及其子步骤的实施过程。
[0091] 步骤(1)“计算局部最大值”包含有“正向扫描计算”,“反向扫描计算”,“找出局部最大值”和“删除孤立的最大值”四个子步骤,如图2所示。“正向扫描计算”以正向扫描的顺序检查binaryImage中的每个非零像素,用该像素邻域左上角像素中的最小像素值加1赋予该像素,以近似该像素与图像左上边缘的欧式距离值。当“正向扫描计算”结束后,binaryImage中存储的是距离值而非原始的二值图像数据。“反向扫描计算”以与正向扫描顺序相反,检查非零像素邻域的右下角像素,用最小值加1赋予该像素。如果3×3邻域各像素按式(1)的方式标识,那么正向和反向扫描计算的伪代码由下式给出:
[0092] 正向扫描:if(P0>0) P0=min(P2,P3,P4,P5)+1;(6)
[0093] 反向扫描:if(P0>0) P0=min(P6,P7,P8,P1)+1;
[0094] 附图说明中图3详细描述了正向和方向扫描计算过程。在扫描计算结束后,“找出局部最大值”开始运行。这个过程牵扯两个变量binaryImage和maxImage,它按正向扫描的顺序扫描binaryImage,如果遇到非零像素,即前面子步骤计算的距离值,则将该像素与邻域内所有其他非零像素比较,看其是否是邻域内的局部最大值,如果是则将该值写入maxImage中的对应像素,如果不是,则将零值写入maxImage中的对应像素。伪代码如下:
[0095] 定位最大值:if(P0>0 & & P0>max(P1,P2,P3,P4,P5,P6,P7,P8)(7)
[0096] Q0=P0;else Q0=0;
[0097] 其中Pi的定义由式(1)给出,Q0表示binaryImage中的P0在maxImage中的对应像素。该过程结束后,maxImage中存储着式(4)所涉及的最大内切圆圆心的近似值,即局部最大值。在maxImage中,邻域内没有其他非零像素的局部最大值被“删除孤立的最大值”子步骤所删除。附图说明中图4详细描述了“找出局部最大值”和“删除孤立的最大值”。步骤(1)的四个子步骤结束,将保存有局部最大值的maxImage传递给步骤(2)。
[0098] 步骤(2)“生成骨骼”包括细化图形和细化骨骼为单位像素宽,共五个子步骤。其中细化图形包括剥离北侧像素、剥离南侧像素、剥离东侧像素、剥离西侧像素,它们结构相似,附图说明中图5给出了这些步骤的实施细节,图6则描述了“细化骨骼为单位像素宽”。此步骤涉及变量chi,changed,maxImage和thinnedImage,其中thinnedImage的初始数据是原始二值图像数据。
[0099] 细化过程的概念由式(4)描述,实际操作过程由下式给出:
[0100]
[0101] 其中X表示一幅要细化的图像,B(i)表示细化过程所使用的滤波函数, 表示细化操作。本实施方案使用了4个滤波函数,即该式中n=4,B(1),B(2),B(3)和B(4)由下式给出:
[0102]
[0103] 其中1表示前景像素,0是背景像素,*表示该像素的像素值可以为0,也可以为1。实际上B(1),B(2),B(3)和B(4)对应着图像坐标空间中北侧,南侧,东侧和西侧的模板,而式(8)的目的是找出匹配模板的像素。按式(1)的标识,能被B(1),B(2),B(3)和B(4)匹配的条件除了P0非零外,分别包括P3为0且P7为1,P3为1且P7为0,P1为1且P5为0,P5为0且P1为
1。对thinnedImage中的每个像素按正向扫描的顺序匹配模板B(1),如果相匹配,则根据下式计算χ的值:
[0104] chi=(P1!=P3)+(P3!=P5)+(P5!=P7)+(P7!=P1)+
[0105] 2*{(!P1&&P2&&!P3)+(!P3&&P4&&P5)+ (10)
[0106] (!P5&&P6&&!P7)+(!P7&&P8&&!P1)}
[0107] 如式(2)所罗列的情况,式(10)会将式(2)中左侧矩阵误判为图形边界,因此对这种情况要检查匹配B(1)的像素的邻域,看是否至少存在两个非零像素,最后相匹配的像素还不能是局部最大值。这些条件可以用下式描述:
[0108]
[0109]
[0110] 其中“local maxima”表示maxImage中的非零像素集合,“directionalpixels”表示式(8)的模板匹配,“sum of neighborhood”表示P0邻域中像素值的和。当式(11)被满足时,thinnedImage中P0对应的像素可以被删除,同时要改变changed的值,以指示thinnedImage发生了变化。然后将B(1)替换为B(2)并重复上述过程,B(2)替换为B(3)重复上述过程,B(3)替换为B(4)重复上述过程,期间thinnedImage中任意一个满足式(11)的像素都会导致changed改变。当匹配B(4)结束后,如果changed改变了,则重新开始一轮与B(1),B(2),B(3)和B(4)的匹配,然后再检查changed,这个过程直至changed不发生改变为止,即匹配B(4)结束后的值与匹配B(1)开始前的值相等。
[0111] 当changed未发生改变时,“细化骨骼为单位像素宽”开始运行。该子步骤用于细化maxImage中聚集在一起的局部最大值。该过程先将changed恢复初始值,然后按正向扫描的顺序检查maxImage中的非零像素(即局部最大值),根据式(10)计算其χ的值,判断该非零点是否在某图形内部,同时排除式(2)中左侧矩阵的情况,这些条件可用下式描述:
[0112] (P0>0)&&(chi==2)&&(sum of neighborho od!=1) (12)
[0113] 其中各变量定义与式(11)的同名变量定义相同。当maxImage中的非零像素满足式(12)时,该像素在thinnedImage中的对应像素被删除,并改变changed。注意,maxImage中的非零像素并未被删除。最后检查changed是否改变过,如果改变了,重复“细化骨骼为单位像素宽”;如果没有,则开始步骤(3)“删除错误骨骼分支”。
[0114] 步骤(3)“删除错误骨骼分支”包括“找出骨骼端点”和“删除错误的骨骼分支”两个子步骤。这些子步骤分别对应附图说明中的图7和图8。首先初始化变量ceased,该变量作用与步骤(2)中的changed类似,然后“找出骨骼端点”按正向扫描的顺序检查thinnedImage中的非零像素的邻域,如果其邻域内只有一个非零像素且其在maxImage中对应像素邻域内只有0或1个非零像素,则将该像素的坐标值保存在变量suspiciousTerminals中。这些条件可用下式描述:
[0115] (P0>0)&&(sum of neighborhood==1)&&(sum of neighborhood of Q0<2) (13)[0116] 其中“sum of neighborhood”和“sum of neighborhood of Q0”分别表示thinnedImage中P0邻域内的非零像素个数和其在maxImage中对应像素Q0邻域内非零像素个数。当thinnedImage扫描结束,该子步骤结束,“删除错误的骨骼分支”开始运行。
[0117] “删除错误的骨骼分支”检查每个记录在suspiciousTerminals中的骨骼端点坐标值,将该坐标值赋予变量coordinate,然后将thinnedImage与maxImage中具有与coordinate相同坐标值的像素标识为Pt和Pm。检查Pt和Pm是否符合式(13),如果符合,则设置Pt和Pm的值同时为0,然后将Pt邻域中唯一的非零像素坐标赋予coordinate,检查ceased是否改变,如果没有改变,则重复上述步骤,即沿着骨骼分支移动,如果改变,则返回“删除错误的骨骼分支”的起点,重新读取一个坐标。
[0118] 如果Pt和Pm不符合式(13),则意味可能遇到了分支交汇点。通过大量实验,发现本实施方案的分支交汇点存在1个像素的误差,因此需要判断Pt是不是真实的交汇点。根据式(10)计算Pt的χ的值,并检查Pm邻域中的非零像素个数,通过大量实验,我们发现当χ小于4且个数小于3时,Pt不是真实交汇点,因此将Pt删除,否则保留。然后改变ceased,即表示一条骨骼分支删除结束,可以开始删除下一条骨骼分支。程序回到“删除错误的骨骼分支”的起点,重复上述步骤。如果suspiciousTerminals中不包含未读取的坐标,则检查ceased是否改变,如果没有改变,则重复上述步骤,即沿着骨骼分支移动,如果改变,则返回步骤(3)的子步骤(3a)“找出骨骼端点”,重新运行步骤(3)。这样做的目的主要是当步骤(3)运行结束一次时,可能会产生新的骨骼端点,因此让程序再次运行步骤(3)。
[0119] 步骤(3)结束后,程序运行完毕,thinnedImage将被程序作为最终骨骼返回。
[0120] 以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈