一种鲁棒的工业电表数字识别方法与流程

文档序号:12468626阅读:526来源:国知局
一种鲁棒的工业电表数字识别方法与流程

本发明属于数字图像处理、模式识别技术领域,特别是一种鲁棒的工业电表数字识别方法。



背景技术:

从19世纪电的产生,以及20世纪电的普遍使用开始。在工业界中,电表就作为一种重要的工具,用来显示企业中生成部门的各种数据。尤其是在电力行业中,电力部门为了统计各仪器的用电数据,经常安排专人进行抄表工作。现存的大量电表中,有很多位于偏远的、不便的、高危险的位置。这就需要耗费大量的人力物力安排工人抄表,并且由于工人的长期工作容易出现读表错误。当然,随着电力行业、信息产业的的不断发展,一大批智能电表被研发出来,这种电表能够自动识别自身的数字和并且能够传输到控制系统。但是,需要将原先老式的电表都换成新的电表常常受到经济的限制,因此,此类电表未得到广泛普及。

现有的一些工业电表中的数字识别算法存在的低识别率,不鲁棒性等缺点。



技术实现要素:

本发明所要解决的技术问题是:提供一种鲁棒的工业电表数字识别方法,通过Canny检测边缘算法能够有效区分噪声区域和数字区域,使得工业电表面板中的数字切割的更加准确;通过使用KNN算法不仅可以有效提高数字识别算法的效率,也能保证数字识别的精度。

本发明为解决上述技术问题采用以下技术方案:一种鲁棒的工业电表数字识别方法,包括如下步骤:

步骤1、首先将采集过来的工业电表图像I_rgb转换为灰度图像I_gray,在灰度图像上使用均值滤波,进行初步去噪声。

步骤2、对去完噪声的灰度图像I_noise采用Canny算子提取工业电表图像的边缘。Canny算子进行边缘检测能有效抑制噪声,同时能精确确定边缘的位置。

步骤3、基于膨胀后的边缘图像I_dilate,先对图像中含有数字的区域竟可能的通过经验进行粗定位。然后分别通过横向、纵向投影法对数字区域进行精准定位切割。

步骤4、将精准定位切割后含有数字的灰度图像I_gray通过阈值法进行二值化得到二值图像I_binary;

步骤5、进一步通过投影法,只进行纵向投影,具体过程如步骤三,将数字区域切割为单个数字的小区域,

步骤6、基于KNN(K近邻)算法,对单个数字识别,最后按步骤5考虑小数点位置,得到最终的电表读数。

优选的,步骤2所述Canny边缘检测算法流程为:

Step1:用高斯滤波器对初始图像进行平滑,类似于步骤一中的均值滤波;

Step2:用一阶偏导的有限差分来计算梯度的幅值和方向;

Step3:对梯度幅值进行非极大值抑制;

Step4:用双阈值算法检测和连接边缘;

优选的,步骤6所述利用KNN算法对测试图像进行分类识别的方法为:对于每一个测试图片I_test,我们在10N张训练集I_train中找到与测试图片IOU最大的K张,然后在K张训练集中,某个数字类别出现最多的即为测试图片的数字。

优选的,步骤2中的Canny边缘检测算法的阈值为0.6;步骤3中的投影向量切割的阈值thresh=15;步骤6中的训练集数:N=10,KNN算法的K值为K=10。

本发明与现有技术相比,具有以下有益效果:1)本发明提出了一种鲁棒高效的工业电表数字识别方法,通过canny算子检测工业电表面板中的数字边缘,可以有效定位并切割出数字区域;2)基于训练集中的数字,通过KNN算法构造分类器,对待识别数字进行分类;3)本发明的工业电表数字识别方法通过canny边缘检测能够有效地区分噪声区域和数字区域,使得算法更加鲁棒;4)在识别数字时采用KNN算法不仅可以有效提高算法效率,也能使得数字识别更加准确。

附图说明

图1是本发明工业电表的原图。

图2是本发明步骤一计算出的去噪后的灰度图。

图3是本发明步骤二Canny边缘检测算法检测出来的图像边缘。

图4是本发明步骤二对Canny检测检测出来的图像边缘进行膨胀后的图像。

图5是本发明步骤三切割出来的含有数字的区域图像。

图6是本发明步骤四对切割出来的灰度图像进行二值化得到的二值图。

图7是本发明对二值图进行单个数字切割并识别的结果图。

具体实施方式

结合附图,本发明的一种鲁棒的工业电表数字识别方法,工业电表中的数字识别算法主要应用了图像预处理、图像分割、字符识别等图像处理及模式识别相关算法。包括以下步骤:

步骤1、将采集到的工业电表图像I_rgb转换为灰度图像I_gray,之后进行滤波处理,去除噪声;滤波处理时的均值滤波核为:均值滤波的过程即为卷积计算过程:式中,i,j为去完噪声图像的I_noise横纵下标,m,n为均值滤波核K的横纵下标。

步骤2、对去完噪声的灰度图像I_noise采用Canny算子提取工业电表图像的边缘;并对边缘图像进行形态学膨胀操作处理;

采用Canny算子提取工业电表图像的边缘的流程为:

Step1:用高斯滤波器对初始图像进行平滑处理;

Step2:用一阶偏导的有限差分计算梯度的幅值和方向;

Step3:对梯度幅值进行非极大值抑制;

Step4:用双阈值算法检测和连接边缘;

对边缘图像I_canny进行形态学膨胀操作得到膨胀后的图像I_dilate计算公式为:其中strel(5)为膨胀的结构元素。

所述Canny边缘检测算法的阈值为0.6,膨胀的结构元素strel(5)的值为

步骤3、基于边缘图像,先对图像中含有数字的区域进行粗定位,然后通过投影法对数字区域进行精准定位切割;具体为:基于膨胀后的边缘图像I_dilate,先对图像中含有数字的区域进行粗定位,然后分别通过横向、纵向投影法对数字区域进行精准定位切割,横向投影向量为纵向投影向量为根据两个投影向量v,设定阈值thresh,计算上下左右的四个切割点(up,down,left,right):=index(v<thresh),然后对数字区域进行进一步精细切割得到I_fine。投影向量切割的阈值thresh=15。

步骤4、将精准定位切割后含有数字的灰度图像通过阈值法进行二值化处理;

步骤5、通过投影法,将数字区域切割为单个数字的小区域,切割完后识别单个数字右下角小数点;具体如下:

步骤5-1、通过投影法,只进行纵向投影,将数字区域切割为单个数字的小区域,切割点计算公式point:=index(v=0),切割完后得到单个数字的图像I_single;

步骤5-2、针对每一张切割出来的单个数字图片,继续采用纵向投影,得到单个数字图像的投影向量v_single;

步骤5-3、设定阈值th=row(I_single)/5,小数点的切割位置为point:=index(v_single<th),其中index()为向量的下标计算公式;计算每个数字右下角小数点的切割距离,最大距离的数字即为含有小数点的数字,计算公式为:

步骤6、基于KNN算法,对单个数字识别,并识别小数点,得到最终的电表数字。具体为:

步骤6-1、通过上述步骤切割单个数字图像的方式制作训练集,每个数字制作N张图片,因而10个数字共有10N张训练集I_train;

步骤6-2、对于每张测试图片I_test,KNN算法中的距离函数为:

步骤6-3、对于每一个测试图片I_test,我们在10N张训练集I_train中找到与测试图片IOU最大的K张,然后在K张训练集中,某个数字类别出现最多的即为测试图片的数字;

步骤6-4、按步骤5的方法确定小数点位置,得到最终的电表读数。

所述训练集数:N=10,KNN算法的K值为K=10。

本发明提出了一种鲁棒高效的工业电表数字识别方法,通过canny算子检测工业电表面板中的数字边缘,可以有效定位并切割出数字区域。

下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

实施例

本发明首先通过canny算子检测工业电表面板中的数字边缘,可以有效定位并切割出数字区域;然后,基于训练集中的数字,通过KNN算法构造分类器,对待识别数字进行分类。具体步骤如下:

步骤1、首先将采集过来的工业电表图像I_rgb,如图1所示,转换为灰度图像I_gray,在灰度图像上使用均值滤波,进行初步去噪声,如图2所示。均值滤波核为:均值滤波的过程即为卷积计算过程:

步骤2、对去完噪声的灰度图像I_noise采用Canny算子提取工业电表图像的边缘,如图3所示。Canny算子进行边缘检测能有效抑制噪声,同时能精确确定边缘的位置。对边缘图像I_canny进行形态学膨胀操作得到膨胀后的图像I_dilate,如图4所示,计算公式为:其中strel(5)为膨胀的结构元素,其值为Canny边缘检测算法的阈值为0.6。

步骤3、基于膨胀后的边缘图像I_dilate,先对图像中含有数字的区域竟可能的通过经验进行粗定位。然后分别通过横向、纵向投影法对数字区域进行精准定位切割,横向投影向量为纵向投影向量为根据两个投影向量v,设定阈值thresh,计算上下左右的四个切割点(up,down,left,right):=index(v<thresh),然后对数字区域进行进一步精细切割得到I_fine,投影向量切割的阈值thresh=15,如图5所示。

步骤4、将精准定位切割后含有数字的灰度图像I_gray通过阈值法进行二值化得到二值图像I_binary,如图6所示;

步骤5、进一步通过投影法,只进行纵向投影,具体过程如步骤三,将数字区域切割为单个数字的小区域,切割点计算公式point:=index(v=0),切割完后得到单个数字的图像I_single。考虑每一张切割出来的单个数字图片,继续采用纵向投影,得到单个数字图像的投影向量v_single。设定阈值th=row(I_single)/5,小数点的切割位置为point:=index(v_single<th),计算每个数字右下角小数点的切割距离,最大距离的数字即为含有小数点的数字,计算公式为:

步骤6、基于KNN(K近邻)算法,对单个数字识别,首先我们先通过步骤一到五切割单个数字图像的方式制作训练集,每个数字我们制作N张图片,因而10个数字共有10N张训练集I_train。对于每张测试图片I_test,KNN中的距离函数定义为:最后按步骤五考虑小数点位置,得到最终的电表读数,其中训练集数:N=10,KNN算法的K值为K=10,如图7所示。

由上可知,本发明提出了一种鲁棒高效的工业电表数字识别方法,通过canny算子检测工业电表面板中的数字边缘,可以有效定位并切割出数字区域。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1