一种基于多特征提取的药品标签数字识别方法
技术领域
本发明涉及药品标签识别
技术领域
,主要涉及一种基于多特征提取的药品标签数字识别方法。背景技术
随着近代计算机技术的飞速发展,诸如车牌识别、电子文档识别、商务票据管理、拍照翻译等应用场景随处可见,如果利用光学字符识别(Optical CharacterRecognition,简称OCR)技术对图像进行自动文字识别减少人们工作,将大幅提高人们的工作效率和生活品质。因此,OCR技术成为了计算机视觉技术中的重要发展方向之一。
在自然场景中,获取的文字图像会因为拍摄时的对焦不准、光线不足、噪点太多、角度倾斜、成像畸变等问题,以及文字存在具有不同的大小、字体、颜色、排列方式等差异化问题,导致字符识别准确率较差。
研究人员针对字符识别,提出了各种各样的算法,常见的有:特征提取分类法、模板匹配法、神经网络识别等。特征提取分类法和模板匹配法都具有简单、实效的优点,但识别效果的关键在于特征和模板的选取,这些参数的选取又依赖于人工经验;神经网络识别法需要搭建网络模型不断进行调试得到最佳网络结构,对运算性能要求较高。
印刷体数字具有结构简单,字体固定的特征,且分类结果较少,只有0至9这10个数字。若能采用简单、快速且准确率高的方法进行识别,实用性更高。
发明内容
发明目的:基于上述背景技术中存在的问题,本发明提供了一种基于多特征提取的药品标签数字识别方法,首先通过对二值字符图像样本进行预处理,并通过邻域判断,对图像进行细化删除操作,最后进行膨胀,获取清晰图像,然后通过欧拉数、横线特征、竖线特征三个特征相结合,提供了具体区分0-9字符的识别方法。
技术方案:为实现上述目的,本发明采用的技术方案为:
一种基于多特征提取的药品标签数字识别方法,包括以下步骤:
步骤S1、采集待识别图像样本并预处理;将待识别图像样本分割为若干二值字符图像样本;调整所述待识别的二值字符图像样本的二值图像大小,用于进一步识别;
步骤S2、将预处理后的二值字符图像样本进行归一化处理,并进行图像翻转,获取字符为白色,背景为黑色的二值图像;
步骤S3、分别对二值字符图像样本进行图像细化;
步骤S3.1、读取图像中任意3*3像素的区域,将区域中心点标记为P1;当某一像素点为白色时,记该点为P=1,当某一像素点为黑色时,记该点为P=0;设定P9位于3*3像素区域的左上角,P8-P2沿逆时针方向倒序排列;
当P1=1时,判断中心点八邻域;当同时满足下述4个条件时,则将P1置为0;
条件(1)、2≤N(P1)≤6
其中N(P1)=P2+P3+P4+P5+P6+P7+P8+P9;所述P2-P9依次代表点P1四周的8个邻域点;
条件(2)、在P2-P9的顺序排序中,以01方式连接的次数F=1;
条件(3)、P2×P4×P6=0;
条件(4)、P4×P6×P8=0;
遍历每幅图像中的像素点,依次进行上述细化删除操作;
步骤S3.2、对步骤S3.1中获得的细化图像进行再次细化删除:
读取图像中任意3*3像素的区域,将区域中心点标记为P1;当某一像素点为白色时,记该点为P=1,当某一像素点为黑色时,记该点为P=0;设定P9位于3*3像素区域的左上角,P8-P2沿逆时针方向倒序排列;
当P1=1时,判断中心点八邻域;当同时满足下述4个条件时,则将P1置为0;
条件(1)、2≤N(P1)≤6
其中N(P1)=P2+P3+P4+P5+P6+P7+P8+P9;所述P2-P9依次代表点P1四周的8个邻域点;
条件(2)、在P2-P9的顺序排序中,以01方式连接的次数F=1;
条件(3)、P2×P4×P8=0;
条件(4)、P2×P6×P8=0;
遍历每幅图像中的像素点,依次进行上述细化删除操作;
步骤S3.3、对于二值字符图像样本,进行重复迭代,执行细化操作,直至无法细化;
步骤S3.4、以4×4的结构元素分别对二值字符图像样本进行膨胀处理;
步骤S4、对膨胀处理后二值字符图像样本进行符号识别,最终获取识别结果。
进一步地,所述步骤S4中符号识别方法包括以下步骤:
步骤S4.1、将待识别图像样本中连通域的个数减去其内部的孔洞数,获得每个字符图像的欧拉数;
步骤S4.2、依据欧拉数将待识别图像样本分为A类、B类和8;其中A类样本欧拉数为1,包括字符集{1,2,3,5,7},B类样本欧拉数为0,包括字符集{0,4,6,9};当欧拉数为-1时,判断字符为数字8;
步骤S4.3、对A类样本图像进行逐行扫描,记录每一行中连续出现的白色像素点的长度;当白色像素点长度大于样本图像宽度的0.8倍时,判断出现横线;
当横线位于上5行时,将该图像划为C类样本,包括字符集{5,7},当横线位于下5行时,将该图像划为D类样本,包括字符集{1,2};当没有出现横线时,判断该字符为数字3;分别对C类和D类样本进行二次判断如下:
对C类和D类样本图像进行逐列扫描,记录每一列中连续出现的白色像素点的长度,当白色像素点长度超过图像高度的0.4倍时,判断出现竖线;将样本图像沿纵向等分为3列,包括左列、中列和右列;
当C类样本图像中竖线出现在中列时,判断该字符为数字1,否则即为数字2;
当D类样本图像中竖线出现在左列时,判断该字符为数字5,竖线出现在右列时,判断该字符为数字7;
步骤S4.4、对B类样本图像进行逐列扫描,记录每一列中连续出现的白色像素点的长度,当白色像素点长度超过图像高度的0.4倍时,判断出现竖线;将样本图像沿纵向等分为3列,包括左列、中列和右列;
当样本图像中竖线仅出现在左列时,判断该字符为数字6;当样本图像中竖线仅出现在右列时,判断该字符为数字9;当样本图像中无竖线时,判断该字符为4;当样本图像同时包含左竖线和右竖线时,划分为E类样本图像,包括字符集{0,6,9};
对E类样本图像,检测孔洞质心的行列坐标,并对图像的中列从上至下扫描,计算该扫描线经过白色像素区域的次数,记为垂直中线交点数;当垂直中线交点数为2时,判断该字符为数字0;当垂直中线交点数大于2且孔洞质心位于图像的上半区域时,判断该字符为数字9;当垂直中线交点数大于2且孔洞质心位于图像的下半区域时,判断该字符为数字6。
进一步地,所述步骤S1中将待识别的二值字符图像样本的二值图像调整为25*50像素。
有益效果:
本发明首先提供了详细的图像预处理方案,通过对二值字符图像样本的像素邻域进行一系列判断,进而对部分像素区域中心点进行细化删除操作,通过迭代细化,和膨胀处理,获取更加清晰的图像。然后提供了详细的符号识别方案,通过欧拉数、横线特征、竖线特征三个特征相结合,将0-9十个字符按照特征详细划分,通过很小的计算量,可以迅速识别出各个字符,最终可以实现药品标签数字的快速精准识别。相比于单一提取特征进行识别的方法而言,本发明能有效的将十个不同数字区别开来,识别精度更高。
附图说明
图1a是本发明提供的标准字符模板示意图;
图1b是本发明提供的待识别图像样本示意图;
图2是本发明提供的像素区域标记示意图;
图3a-3d分别是本发明实施例中N(P1)=0,1,7,8时像素区域示意图;
图4a-4b分别是本发明实施例中F=1,3时像素区域示意图;
图5a是本发明实施例中细化后的标准字符模板示意图;
图5b是本发明实施例中细化后的待识别图像样本示意图;
图6a是本发明实施例中对细化后的标准字符模板进行膨胀处理后的图像示意图;
图6b是本发明实施例中对细化后的待识别图像样本进行膨胀处理后的图像示意图;
图7是本发明提供的字符识别方法示意图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
本发明提供了一种基于多特征提取的药品标签数字识别方法,具体分为两部分;首先将采集到的图像进行处理;具体包括以下步骤:
步骤S1、采集待识别图像样本并预处理;将待识别图像样本分割为若干二值字符图像样本;调整所述待识别的二值字符图像样本的二值图像大小为25*50像素,如图1a-1b所示。
步骤S2、将预处理后的二值字符图像样本进行归一化处理,并进行图像翻转,获取字符为白色,背景为黑色的二值图像。
步骤S3、分别对二值字符图像样本和标准字符模板进行图像细化;
步骤S3.1、读取图像中任意3*3像素的区域,将区域中心点标记为P1;当某一像素点为白色时,记该点为P=1,当某一像素点为黑色时,记该点为P=0;设定P9位于3*3像素区域的左上角,P8-P2沿逆时针方向倒序排列,如图2所示。
当P1=1时,判断中心点八邻域。当同时满足下述4个条件时,则将P1置为0。
条件(1)、2≤N(P1)≤6
其中N(P1)=P2+P3+P4+P5+P6+P7+P8+P9;所述P2-P9依次代表点P1四周的8个邻域点。
当N(P1)为0时,P1为孤立点;当N(P1)为1时,P1为端点;当N(P1)为7或8时,P1为内部点,如图3a-3d所示。这四种情况下,都不能将P1删除,因此有上述条件(1)约束。
条件(2)、在P2-P9的顺序排序中,以01方式连接的次数F=1。
如图4a所示,仅有P5-P6以01方式连接,故F=1,如图4b所示,P3-P4、P5-P6、P8-P9均以01方式连接,故F=3。设置此条件的目的是为了保证删除P1后图像线条的连续性,如图4b所示,此时F=3,删除P1的话,图像线条就被割断了。
条件(3)、P2×P4×P6=0;
条件(4)、P4×P6×P8=0。
由条件(3)和条件(4)可知,只要满足P4=0或P6=0,条件(3)(4)就成立。本次细化操作仅是把该像素东南方向的边界点删除了。
遍历每幅图像中的像素点,依次进行上述细化删除操作。
步骤S3.2、对步骤S3.1中获得的细化图像进行再次细化删除:
读取图像中任意3*3像素的区域,将区域中心点标记为P1;当某一像素点为白色时,记该点为P=1,当某一像素点为黑色时,记该点为P=0;设定P9位于3*3像素区域的左上角,P8-P2沿逆时针方向倒序排列;
当P1=1时,判断中心点八邻域;当同时满足下述4个条件时,则将P1置为0;
条件(1)、2≤N(P1)≤6
其中N(P1)=P2+P3+P4+P5+P6+P7+P8+P9;所述P2-P9依次代表点P1四周的8个邻域点;
条件(2)、在P2-P9的顺序排序中,以01方式连接的次数F=1;
条件(3)、P2×P4×P8=0;
条件(4)、P2×P6×P8=0。
本次细化与上一步细化中的不同点在于,条件(3)和条件(4)发生了改变,即只需要满足P2=0或P8=0,上述条件就成立。表明此次细化是将物体西北上的边界点删除。
遍历每幅图像中的像素点,依次进行上述细化删除操作;
步骤S3.3、对于二值字符图像样本,进行重复迭代,执行细化操作,直至无法细化;最终得到的待识别图像样本图像如图5a-5b所示。
步骤S3.4、以4×4的结构元素分别对二值字符图像样本进行膨胀处理。处理后的图像如图6a-6b所示。
第二部分即为对处理后的图像进行识别,流程如图7所示。具体包括如下步骤:
首先,将待识别图像样本中连通域的个数减去其内部的孔洞数,获得每个字符图像的欧拉数。
然后依据欧拉数将待识别图像样本分为A类、B类和8;其中A类样本欧拉数为1,包括字符集{1,2,3,5,7},B类样本欧拉数为0,包括字符集{0,4,6,9};当欧拉数为-1时,判断字符为数字8。
接着对A类样本图像进行逐行扫描,记录每一行中连续出现的白色像素点的长度;当白色像素点长度大于样本图像宽度的0.8倍时,判断出现横线;
当横线位于上5行时,将该图像划为C类样本,包括字符集{5,7},当横线位于下5行时,将该图像划为D类样本,包括字符集{1,2};当没有出现横线时,判断该字符为数字3;分别对C类和D类样本进行二次判断如下:
对C类和D类样本图像进行逐列扫描,记录每一列中连续出现的白色像素点的长度,当白色像素点长度超过图像高度的0.4倍时,判断出现竖线;将样本图像沿纵向等分为3列,包括左列、中列和右列;
当C类样本图像中竖线出现在中列时,判断该字符为数字1,否则即为数字2;
当D类样本图像中竖线出现在左列时,判断该字符为数字5,竖线出现在右列时,判断该字符为数字7;
下面对B类样本图像进行逐列扫描,记录每一列中连续出现的白色像素点的长度,当白色像素点长度超过图像高度的0.4倍时,判断出现竖线;将样本图像沿纵向等分为3列,包括左列、中列和右列;
当样本图像中竖线仅出现在左列时,判断该字符为数字6;当样本图像中竖线仅出现在右列时,判断该字符为数字9;当样本图像中无竖线时,判断该字符为4;当样本图像同时包含左竖线和右竖线时,划分为E类样本图像,包括字符集{0,6,9};
对E类样本图像,检测孔洞质心的行列坐标,并对图像的中列从上至下扫描,计算该扫描线经过白色像素区域的次数,记为垂直中线交点数;当垂直中线交点数为2时,判断该字符为数字0;当垂直中线交点数大于2且孔洞质心位于图像的上半区域时,判断该字符为数字9;当垂直中线交点数大于2且孔洞质心位于图像的下半区域时,判断该字符为数字6。
本发明先通过字符图像的欧拉数将10个字符分类为A、B、C三类字符集,再利用横线特征将A类字符集分为C和D类字符集,对B、C和D类字符集利用竖线特征区分出具体的数字和易混淆的E类字符集,最后对E类字符集通过检测孔洞质心位置以及垂直中线交点数区分出具体的数字类别。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。