[0005] 针对现有技术所存在的上述技术缺陷,本发明提供了一种基于轮廓提取的九宫格图形验证码识别方法,一种轮廓提取方法将九宫格图形验证码中的箭头与标记点两大关键元素进行分割提取,提高了识别效率并且增强了用户体验。
[0006] 一种基于轮廓提取的九宫格图形验证码识别方法,包括如下步骤:
[0007] 步骤(1)对输入的含箭头的九宫格图形验证码进行二值化与高斯模糊预处理,并根据九宫格标记点的颜色设置阈值进行降噪。
[0008] 步骤(2)对步骤(1)处理后的图片进行膨胀处理,随后进行canny轮廓检测,计算出所有闭合轮廓的重心。
[0009] 步骤(3)对步骤(2)中提取的轮廓进行分类,依据闭合轮廓的重心位置、分布情况计算出九宫格点编号与箭头位置,并对非重叠箭头轮廓进行最小闭合三角形提取。
[0010] 步骤(4)由箭头位置与九宫格标记点分析得出每个九宫格点的出入度,进而计算出该九宫格图形验证码中的哈密顿路径。
[0011] 步骤(5)抽取任意非重叠箭头,通过计算三角形顶点与重心关系得出该箭头方向,从而给该哈密顿路径标明方向,最终输出该图形验证码的验证结果。
[0012] 所述的步骤(1)中,对输入的含箭头的九宫格图形验证码进行二值化与高斯模糊预处理,并根据九宫格标记点的颜色设置阈值进行降噪,具体包括如下步骤:
[0013] 1-1.依据给定的RGB彩色图,将其转换为灰度图备用,
[0014] 1-2.将灰度图进行高斯模糊处理,其高斯模糊最小单位为n*n,得到高斯处理图,n为灰度图行列最小值的2%;
[0015] 1-3.对高斯处理后的灰度图进行阈值降噪,使得灰度图中仅留下箭头与九宫格标记点。
[0016] 所述的步骤(2)中,对步骤(1)处理后的灰度图进行膨胀处理,随后进行canny轮廓检测,计算出所有闭合轮廓的重心,具体包括如下步骤:
[0017] 2-1.为了让随后的轮廓检测结果都闭合,对步骤(1)处理后的灰度图进行膨胀处理,获取膨胀图,其膨胀单位元大小为m*m,m为图片行列最小值的1%;
[0018] 2-2.设置canny检测单元,大小为0.5m*0.5m,对膨胀图进行canny边缘检测,得到轮廓集G,
[0019] 2-3.计算出每一个轮廓的重心,采用如下公式:
[0020]
[0021] 其中,g为轮廓点集,g∈G,num为g中点的数目。
[0022] 所述的步骤(3)中,对步骤(2)中提取的轮廓进行分类,依据其重心位置、分布情况,计算出九宫格标记点编号与箭头位置,并对非重叠箭头轮廓进行最小闭合三角形提取,具体包括如下步骤:
[0023] 3-1.图形验证码中九宫格标记点重心分布是规律的,从而筛选出九宫格标记点,并为九宫格标记点进行编号,且箭头点仅存在于两个九宫格标记点连线的中心,由此筛选出箭头点,再依据箭头点的重心位置对其编号,
[0024] 3-2.根据标记点与箭头点编号关系,筛选出连线关系,并在灰度图中对箭头点附近连线进行验证,具体的:
[0025] 3-2-1.找到可能存在的连线两端标记点与箭头点组合,
[0026] 3-2-2.在灰度图中定位到箭头点重心位置,以箭头点的重心为原点,构建半径为n的圆形轨迹进行遍历,以检索到的存在点位置组成的连线向量判断该组合是否存在,其中n为灰度图行列最小值的2%;
[0027] 3-3.依据箭头点与标记点数量关系与连线关系筛选出非重叠箭头点,并对其进行最小闭合三角形提取,作为三角形集V,非重叠下箭头点数目为标记点数目-1;
[0028] 所述的步骤(4)中,根据箭头点重心位置与九宫格标记点分析得出每个九宫格标记点的出入度,进而计算出该九宫格图形验证码中的哈密顿路径,具体包括如下步骤:
[0029] 4-1.依据步骤(3)中所验证得出的九宫格标记点连线与箭头组合,计算出所有九宫格标记点的出入度,
[0030] 4-2.随机抽取一个出入度为1的九宫格标记点,由连线与箭头组合推导该图形验证码中九宫格标记点连线的哈密顿路径。
[0031] 所述的步骤(5)中,抽取任意非重叠箭头,通过计算三角形顶点与重心关系得出该箭头方向,从而给该哈密顿路径标明方向,最终输出该图形验证码的验证结果,具体包括如下步骤:
[0032] 5-1.抽取任意非重叠箭头,定位该箭头所提取的最小闭合三角形与标记点箭头组合,
[0033] 5-2.由两端标记点x1与x2计算得出连线向量ρ,公式如下:
[0034] ρ=x1-x2
[0035] 5-3.由最小闭合三角形的三个顶点A、B、C计算出三角形的三边向量α、β、γ,公式如5-2,
[0036] 5-4.计算三边向量与连线向量中的点乘值,求得最接近0的三边向量δ,不属于该向量的顶点设为D,
[0037] 5-5.由δ与D的位置关系与ρ的方向确定该箭头的方向,并将该方向赋给哈密顿路径,使其成为一个有向路径,
[0038] 5-6.由始至终输出该路径中的所有节点,即为该图形验证码的验证结果。
[0039] 本发明有益效果如下:
[0040] 本发明通过一种轮廓提取方法将九宫格图形验证码中的箭头与标记点两大关键元素进行分割提取,进而对其进行识别分类、编号排序与方向识别,从而智能地识别出九宫格图形验证码中的验证码结果,避免了人工识别或是人工预处理所带来的大量开销,本方法广泛适用于移动通讯、网络传媒与互联网金融,可以大大提升用户体验,在保持98%的识别精度前提下其识别效率较人工识别可提升数百倍。