发明名称 一种简单的高准确率的钢印数字自动识别方法
摘要 一种简单的高准确率的钢印数字自动识别方法,它首先对字符区域进行粗定位,分割出字符区域;然后将数字图像由RGB空间转换到YCbCr空间,并采用分块自适应阈值的Canny算子和边缘闭合相结合的方法从数字图像的Y分量提取字符轮廓;再分割出单个字符并进行归一化处理;最后采用级联模板匹配分组的方法识别数字。本发明采用分块自适应阈值的Canny算子和边缘闭合相结合的方法从数字图像的Y分量提取字符轮廓,并采用级联模板匹配分组的方法识别数字,具有检测结果边缘连接程度好,噪声敏感程度低,实时性强等优点,可实时准确地识别强干扰下的钢印数字、满足工业自动检测和信息化的需求。
申请公布号 CN102426649A 申请公布日期 2012.04.25
申请号 CN201110310074.1 申请日期 2011.10.13
申请人 石家庄开发区冀科双实科技有限公司 发明人 陈宏彩;程煜;郝存明
分类号 G06K9/20(2006.01)I;G06K9/46(2006.01)I 主分类号 G06K9/20(2006.01)I
代理机构 石家庄冀科专利商标事务所有限公司 13108 代理人 李羡民;高锡明
主权项 1.一种简单的高准确率的钢印数字自动识别方法,其特征是,它首先对字符区域进行粗定位,分割出字符区域;然后将数字图像由RGB空间转换到YCbCr空间,并采用分块自适应阈值的Canny算子和边缘闭合相结合的方法从数字图像的Y分量提取字符轮廓;再分割出单个字符并进行归一化处理;最后采用级联模板匹配分组的方法识别数字,具体步骤如下:a、字符区域粗定位:从采集到的钢瓶钢印数字图像中,截取包含字符的矩形区域;b、提取字符边缘:首先将粗定位后的钢瓶钢印数字图像由RGB空间转换到YCbCr空间;然后把图像分成M×N块,采用自适应阈值的Canny算子和边缘闭合相结合的方法逐块提取字符轮廓,具体步骤为:① 利用二维高斯函数<img file="757764DEST_PATH_IMAGE001.GIF" wi="196" he="52" />的一阶导数对钢瓶钢印数字图像<img file="724583DEST_PATH_IMAGE002.GIF" wi="52" he="22" />的Y分量进行平滑去噪,其中,高斯滤波器参数<img file="699492DEST_PATH_IMAGE003.GIF" wi="17" he="16" />由下式确定:<img file="915710DEST_PATH_IMAGE004.GIF" wi="166" he="46" />;其中,<img file="528043DEST_PATH_IMAGE005.GIF" wi="168" he="48" />;式中,<img file="349369DEST_PATH_IMAGE002.GIF" wi="52" he="22" />为当前像素点亮度值,<img file="26338DEST_PATH_IMAGE006.GIF" wi="40" he="16" />为窗口<img file="933114DEST_PATH_IMAGE007.GIF" wi="20" he="20" />大小,<img file="88152DEST_PATH_IMAGE008.GIF" wi="25" he="24" />为窗口<img file="295142DEST_PATH_IMAGE007.GIF" wi="20" he="20" />内的亮度值总和;② 计算平滑后的数据阵列<img file="126701DEST_PATH_IMAGE009.GIF" wi="48" he="22" />的梯度幅值<img file="520773DEST_PATH_IMAGE010.GIF" wi="52" he="22" />和梯度方向<img file="745081DEST_PATH_IMAGE011.GIF" wi="45" he="22" />:<img file="540999DEST_PATH_IMAGE012.GIF" wi="200" he="33" />,<img file="294191DEST_PATH_IMAGE013.GIF" wi="209" he="26" />,其中,<img file="441139DEST_PATH_IMAGE014.GIF" wi="52" he="25" />和<img file="187247DEST_PATH_IMAGE015.GIF" wi="52" he="26" />分别为<img file="837671DEST_PATH_IMAGE009.GIF" wi="48" he="22" />在<img file="292923DEST_PATH_IMAGE016.GIF" wi="14" he="16" />和<img file="661587DEST_PATH_IMAGE017.GIF" wi="16" he="18" />方向偏导数的阵列:<img file="696539DEST_PATH_IMAGE018.GIF" wi="373" he="25" />,<img file="732629DEST_PATH_IMAGE019.GIF" wi="373" he="26" />,③ 对梯度幅值进行非极大值抑制:使用3×3大小,包含8方向的邻域对梯度幅值阵列的所有像素沿梯度方向进行梯度幅值的插值,在每一个点上,邻域的中心像素<img file="76891DEST_PATH_IMAGE020.GIF" wi="48" he="22" />与沿梯度方向的2个梯度幅值的插值结果进行比较,如果邻域中心点的幅值<img file="667272DEST_PATH_IMAGE010.GIF" wi="52" he="22" />不比梯度方向上的2个插值结果大,则将<img file="37074DEST_PATH_IMAGE020.GIF" wi="48" he="22" />对应的边缘标志位赋值为0;④ 检测和连接边缘:对经过非极大值抑制和梯度直方图分类的子图像<img file="662090DEST_PATH_IMAGE021.GIF" wi="49" he="22" />分别使用高阈值<img file="927987DEST_PATH_IMAGE022.GIF" wi="18" he="25" />和低阈值<img file="536822DEST_PATH_IMAGE023.GIF" wi="17" he="25" />分割,得到2个阈值边缘图像<img file="162845DEST_PATH_IMAGE024.GIF" wi="50" he="25" />和<img file="642368DEST_PATH_IMAGE025.GIF" wi="49" he="25" />,然后在<img file="610324DEST_PATH_IMAGE024.GIF" wi="50" he="25" />中把边缘连接成轮廓,若轮廓上有间断,则在达到轮廓端点时,在由低阈值得到的边缘图像<img file="175297DEST_PATH_IMAGE025.GIF" wi="49" he="25" />的8邻域位置寻找可以连接到轮廓上的边缘, 这样,利用递归跟踪的算法不断地在<img file="355743DEST_PATH_IMAGE025.GIF" wi="49" he="25" />中搜集边缘,直到将<img file="486510DEST_PATH_IMAGE024.GIF" wi="50" he="25" />中所有的间隙都连接起来为止,所述高阈值<img file="343476DEST_PATH_IMAGE022.GIF" wi="18" he="25" />和低阈值<img file="130167DEST_PATH_IMAGE023.GIF" wi="17" he="25" />由以下方法确定:设阈值<img file="645462DEST_PATH_IMAGE026.GIF" wi="17" he="24" />和<img file="99577DEST_PATH_IMAGE027.GIF" wi="20" he="24" />将非极值抑制后的梯度幅值分为3类:<img file="878177DEST_PATH_IMAGE028.GIF" wi="20" he="24" />、<img file="683322DEST_PATH_IMAGE029.GIF" wi="22" he="24" />、<img file="454838DEST_PATH_IMAGE030.GIF" wi="21" he="25" />,<img file="763459DEST_PATH_IMAGE028.GIF" wi="20" he="24" />为非边缘点类,<img file="244119DEST_PATH_IMAGE030.GIF" wi="21" he="25" />为边缘点类,<img file="270981DEST_PATH_IMAGE029.GIF" wi="22" he="24" />介于<img file="331341DEST_PATH_IMAGE028.GIF" wi="20" he="24" />和<img file="9316DEST_PATH_IMAGE030.GIF" wi="21" he="25" />之间,对某一类<img file="660877DEST_PATH_IMAGE031.GIF" wi="22" he="26" />来说,定义0阶矩<img file="909456DEST_PATH_IMAGE032.GIF" wi="21" he="26" />和1阶矩<img file="773506DEST_PATH_IMAGE033.GIF" wi="21" he="26" />:<img file="587879DEST_PATH_IMAGE034.GIF" wi="93" he="53" />,<img file="879183DEST_PATH_IMAGE035.GIF" wi="109" he="53" />,其中,<img file="864325DEST_PATH_IMAGE036.GIF" wi="9" he="18" />为像素点梯度幅值,<img file="63225DEST_PATH_IMAGE037.GIF" wi="50" he="26" />、<img file="200946DEST_PATH_IMAGE038.GIF" wi="20" he="26" />为第<img file="663151DEST_PATH_IMAGE031.GIF" wi="22" he="26" />类像素梯度幅值的开始和结束值,<img file="417480DEST_PATH_IMAGE039.GIF" wi="18" he="25" />=0,<img file="888913DEST_PATH_IMAGE040.GIF" wi="22" he="25" />为幅值为<img file="130407DEST_PATH_IMAGE036.GIF" wi="9" he="18" />的像素点总数,<img file="294672DEST_PATH_IMAGE041.GIF" wi="24" he="26" />为第<img file="5139DEST_PATH_IMAGE031.GIF" wi="22" he="26" />类像素点总数,<img file="14684DEST_PATH_IMAGE042.GIF" wi="20" he="20" />为所有像素点总数,令<img file="392575DEST_PATH_IMAGE043.GIF" wi="168" he="25" />,则类间方差为:<img file="462163DEST_PATH_IMAGE044.GIF" wi="205" he="50" />,将使类间方差最大的阈值<img file="643614DEST_PATH_IMAGE026.GIF" wi="17" he="24" />和<img file="988008DEST_PATH_IMAGE027.GIF" wi="20" he="24" />分别设置为高阈值<img file="689248DEST_PATH_IMAGE022.GIF" wi="18" he="25" />和低阈值<img file="929736DEST_PATH_IMAGE023.GIF" wi="17" he="25" />;c、数字的分割与归一化处理:① 数字分割:首先在边缘检测图上计数竖直积分投影的平滑曲线p(x),再搜索p(x)的局部最小值,得到一个波谷位置序列v(0),v(1),…,v(n),然后将相邻两个波谷v(i)和v(i+1)分别作为左右边界提取出一组矩形区r(i),并根据下列规则对矩形序列r(i)进行删除、分裂、合并和调整大小,中值宽度等于单个数字的标准宽度:Ⅰ、若相邻矩形r(i-1)和r(i) 的宽度均小于矩形序列的中值宽度且合并后的宽度接近矩形序列的中值宽度,则将r(i-1)和r(i)合并;Ⅱ、若矩形r(i)的宽度接近两倍中值宽度,且前后相邻矩形的宽度接近中值宽度,则将r(i)等分成两块;Ⅲ、若相邻矩形r(i-1)和r(i)的宽度之和接近两倍中值宽度,但其中一个矩形宽度小于中值宽度,另一个矩形宽度大于中值宽度,调整r(i-1)的右边界和r(i)的左边界,使得两个矩形等宽;② 定位单个数字上下左右边界:首先对图像进行滤波:扫描整个图像,当发现一个白色的点时,考察和该白色点直接或者间接相连接的白色点的个数,如果个数小于规定的阈值,则把它去掉,滤波完成后按以下方法确定单个数字边界:上下边界的定位:对分割出的单个数字图像从上到下逐行扫描,遇到第一白色像素点时,认为是字符的上边界;遇到第j行有白色像素点,第j+1行白色像素点为0时,则认为是字符的下边界;左右边界的定位:在每个数字高度范围之内自左向右逐列进行扫描,遇到第一个白色象素时认为是字符的左边界,然后继续扫描,直至遇到有一列中没有白色象素,则认为是这个字符的右边界;计算数字的宽度,若宽度小于中值宽度的2/3,则直接识别该数字为“1”;③ 对字符进行归一化处理:将经过分割的非“1”数字进行缩放处理,使其高度等于标准图像高度,然后根据缩放处理后数字的宽度,把图像中的像素点按照插值的方法映射到标准图像中,并进行连通性检测和边缘连接;d、采用级联模板匹配分组的方法对除去数字“1”之外的9个数字进行识别。
地址 050081 河北省石家庄市友谊南大街46号河北省科学院应用数学研究所