一种数字式仪表读数识别方法与流程

文档序号:18622204发布日期:2019-09-06 22:35阅读:492来源:国知局
一种数字式仪表读数识别方法与流程

本发明属于图像识别技术领域,具体地说,涉及一种数字式仪表读数识别方法。



背景技术:

在变电站等场合中,配置多种数字式仪表,这些仪器仪表设备所处环境复杂,为保持电力系统的稳定性,对设备运行的可靠性提出了很高的要求,故需要定时对其进行例行巡检。这些设备的正常运行管理维护,传统的方式是采用人工的方式定时对设备进行巡视,但这种方式存在耗时费力、成本高、准确率低、效率低、主观性强等缺点,不利于设备的自动化管理与维护。如果采用巡检机器人代替人工巡检,实现多种数字式仪表的远程读数,则能够提高变电站运行效率,降低人工巡检安全风险、及时发现设备异常和告警、增强设备信息化管理,具有广泛的应用前景和商业价值。

然而在实际变电站中,机器人所处的环境复杂,所采集的仪表图像受到机器人姿态、光照、物体遮挡、表盘污点、镜头模糊等影响,对数字式仪表的精确读数识别造成很大困难。

发明zl201510664651.5介绍了一种变电站巡检机器人数字式仪表识别算法,采用轮廓检测算法对数字区域进行分割操作,得到单个数字图像,并搜集变电站现场多种数字图片,建立训练样本集,利用分类器对单个数字进行识别。发明zl201510776461.2通过进行边缘切割后获取单字符图像,扫描计算单字符图像内的连通区域,根据连通区域的个数分类识别数字字符。但是,目前数字仪表的识别方案主要存在以下几方面问题:

当前许多数字识别方法需要对图像进行预处理,进行灰度化以及二值化,过于依赖于二值化的效果,在光照不均匀以及存在表盘污点情况下,识别效果较差。

很多方法对字符分割要求较高,分割的准确程度影响识别结果。

有些数字识别需进行样本训练,前期需采集大量样本,时间与金钱成本高,操作繁琐,适用范围限于该部分数字式仪表。

大部分方法都是处理单一类型的数字式仪表,无法适用于大部分数字式仪表。



技术实现要素:

针对现有技术中上述的不足,本发明的目的在于提供一种数字式仪表读数识别方法,该方法对光照鲁棒性强,适用于多种仪表,字符识别精度高。

为了达到上述目的,本发明采用的解决方案是:

具体的,一种数字式仪表读数识别方法,其特征在于,包括以下步骤:

s1.获取数字式仪表数字显示区域的第一图像;

s2.将所述第一图像进行中值滤波及灰度化预处理,得到灰度化后的第二图像;

s3.对所述第二图像进行边缘检测,并获取边缘像素点的第一饱和度直方图,通过所述第一饱和度直方图获取边缘像素点的第一饱和度分布标准差,并判断第一饱和度分布标准差是否大于预设的第一干扰阈值,若小于,执行s4;

若大于,通过最大类间差方法对所述第一饱和度直方图进行二分类并去除多余的边缘像素点,执行s4;

s4.对所述第二图像进行二值化处理,得到第三图像;

s5.获取所述第三图像的非背景像素点的第二饱和度直方图,通过所述第二饱和度直方图获取非背景像素点的第二饱和度分布标准差,并判断第二饱和度分布标准差是否大于预设的第二干扰阈值,若小于,执行s6;

若大于,通过最大类间差方法对所述第二饱和度直方图进行二分类并去除多余的非背景像素点,执行s6;

s6.对所述第三图像进行倾斜校正;

s7.对校正后的所述第三图像进行字符分割及数值识别。

进一步的,所述步骤s2还包括,获取所述第二图像的灰度直方图,根据第二图像灰度值的上下限判断所述第二图像的灰度区间是否小于第一阈值,若是,则对第二图像进行灰度拉伸。

进一步的,所述步骤s3中去除多余的边缘像素点具体过程为:

通过最大类间差方法得到最大的全局阈值,将获取到的边缘像素点的饱和度与所述全局阈值进行比较,将边缘像素点分为大于全局阈值的第一边缘像素点集合及小于全局阈值的第二边缘像素点集合两类,并比较所述第一边缘像素点集合与所述第二边缘像素点集合中像素点的数量,将像素点数量较小的一类去掉,从而去除多余的边缘像素点。

进一步的,所述步骤s6的具体过程为:

对所述第二图像进行lsd直线检测,获取线段角度在预设区间范围内检测到的最长直线段,并以所述最长直线段的角度作为校正角度,对所述第三图像进行倾斜校正。

进一步的,所述步骤s7的具体过程为:

s71.对所述第三图像进行初步字符分割,具体过程为,通过宽度为单像素大小的竖直检测线从左向右扫描所述第三图像,检测所述检测线上的像素点的数量并与第二阈值进行比较,若高于所述第二阈值,则认为为字符的中间部分,反之,则为非字符部分,依次对第三图像上的字符进行分割;

s72.判断经初步字符分割得到的字符宽度与字符高度,若字符宽度大于字符高度,则提高所述第二阈值,执行s71,直至字符宽度小于字符高度;

s73.判断分割后的字符是否过分割,并对过分割的字符进行合并处理;

s74.对未过分割的字符及过分割处理后的字符进行数值识别。

进一步的,所述步骤s71中对字符进行分割的具体过程为:

检测开始时,当所述检测线上的像素点数量大于所述第二阈值时,将当前位置标记为字符的初始位置,直至检测线上的像素点数量小于第二阈值时,将当前位置标记为字符的终止位置,根据字符的初始位置及终止位置对字符进行分割;重复上述过程,直至将所述第三图像上的字符全部分割。

进一步的,所述步骤s73具体过程为:

s731.按字符顺序依次判断已分割字符与其相邻字符的间距是否大于第三阈值,若大于,认为该字符无过分割,则将该字符放入集合h,若小于,认为该字符可能过分割,则将该字符放入集合u;

s732.对集合h中的字符进行数值识别并计算集合h中字符的平均宽度,若识别得到集合h中的字符不包括0及2~9,则计算集合h与集合u中所有宽度大于第四阈值的字符的平均宽度,否则,以所述第四阈值作为平均宽度;

s733.按字符顺序对集合u中的所有字符进行排序;

s734.按字符顺序从集合u中取出字符q,若集合u中字符为空,执行s74,否则执行s735;

s735.从集合u中获取与字符q相邻的字符s,执行s736;若字符q无相邻字符,则将字符q从集合u中放入集合h中,计算集合h中字符的平均宽度并更新,执行步骤s734;

s736.判断字符q及字符s合并后的宽度是否小于其高度,若是,执行步骤s737,否则,将字符q放入集合h,执行步骤s734;

s737.分别计算字符q及字符s合并后的宽度与平均宽度的差值σ0、字符q与平均宽度的差值σ1及字符s与平均宽度的差值σ2,判断σ0、σ1及σ2的大小关系,具体包括以下情况:

a).若σ0≤σ1且σ0≤σ2,则合并字符q及字符s,并将合并后的字符n加入集合u,执行步骤s734;

b).若σ0≥σ1且σ0≥σ2,则将字符q及字符s加入集合h,计算并更新集合h中字符的平均宽度,执行步骤s734;

c).若σ1≤σ0≤σ2,则将字符q放入集合h中,执行步骤s734;

d).若σ2≤σ0≤σ1,则对字符q进行数值识别,若字符q的数值识别结果为数字1,则将字符q加入集合h,执行步骤s734,若字符q的数值识别结果不为数字1,则对字符q与字符s合并后的字符n进行数值识别,若能对字符n准确识别到数字,则将字符n加入集合h,执行步骤s734,若不能准确识别字符n,则对字符s进行数值识别,若能准确识别字符s,则判断字符q为杂点,舍弃字符q,将字符s加入集合h,执行步骤s734,若不能准确识别字符s,则将字符n加入集合u,执行步骤s734。

进一步的,对字符进行数值识别的方法包括:

a).若分割后的字符区域长宽比大于设定的第五阈值,且字符区域内的像素点占比大于设定的第六阈值时,判断该字符为数字1;

b).若分割后的字符区域长宽比小于所述第五阈值,且像素点占比小于所述第七阈值,若所有像素点中心位置处于3/4字符高度以下,则判断该字符为小数点;

c).若分割后的字符不是数字1及小数点时,将字符进行细化,使得该字符的组成线段均为单像素宽度,采用穿线识别法,通过检测线对该字符的显示区域进行检测,判断是否存在线段,从而实现字符的数值识别。

本发明的有益效果是:

本发明能够减少光照对识别结果的影响,二值化效果好,在进行字符分割时能有效避免字符粘结,同时能有效的对过分割字符进行合并处理,去除杂点,保证了字符分割的精度,无需采集大量样本进行训练,适用于各种数字式仪表的读数识别。

附图说明

图1为本发明优选实施例提供的一种数字式仪表读数识别方法的流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

下面对本发明实施例提供的一种数字式仪表读数识别方法进行具体说明。

如图1所示,一种数字式仪表读数识别方法,其特征在于,包括以下步骤:

s1.获取数字式仪表数字显示区域的第一图像。

s2.对第一图像进行中值滤波及灰度化预处理,得到灰度化后的第二图像;

s3.对所述第二图像进行边缘检测,并获取边缘像素点的第一饱和度直方图,通过所述第一饱和度直方图获取边缘像素点的第一饱和度分布标准差,并判断第一饱和度分布标准差是否大于预设的第一干扰阈值,若小于,执行s4;

若大于,通过最大类间差方法对所述第一饱和度直方图进行二分类并去除多余的边缘像素点,执行s4。

s4.对第二图像进行二值化处理,得到第三图像。

s5.获取所述第三图像的非背景像素点的第二饱和度直方图,通过所述第二饱和度直方图获取非背景像素点的第二饱和度分布标准差,并判断第二饱和度分布标准差是否大于预设的第二干扰阈值,若小于,执行s6;

若大于,通过最大类间差方法对所述第二饱和度直方图进行二分类并去除多余的非背景像素点,执行s6。

s6.对第三图像进行倾斜校正。

s7.对校正后的第三图像进行字符分割及数值识别。

其中,步骤s2还包括判断第二图像是否需要进行灰度拉伸,其具体过程为:获取第二图像的灰度直方图,根据第二图像灰度值的上下限判断第二图像的灰度区间是否小于第一阈值,本实施例中,第一阈值设定为70,若第二图像的灰度区间小于70,则对第二图像进行灰度拉伸,通过对灰度区间小于70的第二图像进行灰度拉伸,能有效的提高二值化的效果。

对第二图像进行灰度拉伸的具体过程如下:

将第二图像的灰度区间从[m,n]映射到[s,t],具体公式如下:

g(uk)=l(f(hk))(s≤uk≤)t;

其中,g(uk)为第二图像映射后的灰度直方图函数,f(hk)为第二图像映射前的灰度直方图函数,l为映射函数,[m,n]为映射前的第二图像灰度区间,[s,t]为映射后的第二图像灰度区间,hk为映射前的灰度值,uk为映射后的灰度值,为映射前灰度值的下限,为映射前灰度值的上限。

通过上述过程,实现了将第二图像的灰度区间由[m,n]映射到[s,t],从而实现了对第二图像的灰度拉伸,本实施例中,将第二图像的灰度区间拉伸至[0,255]。

步骤s3中去除多余的边缘像素点具体过程为:

对第二图像进行edlines边缘检测,将第一图像由rgb图像转化为hsv图像,根据hsv图像的饱和度s分量图及对第二图像检测到的边缘图获得边缘像素点的第一饱和度直方图,计算边缘像素点的第一饱和度分布标准差,当第一饱和度分布标准差大于设置的第一干扰阈值时,说明图像存在较大噪声干扰,通过最大类间差方法(ostu)得到最大的全局阈值,将获取到的边缘像素点的饱和度与全局阈值进行比较,将边缘像素点分为大于全局阈值的第一边缘像素点集合及小于全局阈值的第二边缘像素点集合两类,并比较第一边缘像素点集合与第二边缘像素点集合中像素点的数量,将像素点数量较小的一类去掉,从而去除多余的边缘像素点,最大类间差方法通过统计整个图像的直方图特性来实现全局阈值的自动选取,属于常规技术手段,在此不再赘述,经实践,在本实施例中第一干扰阈值设置为26。

步骤s4中对第二图像进行二值化处理的具体过程如下:

从宏观角度观测,可认为仪表表盘所受到的光照强度是连续变化的,在三维空间中第二图像的二值化阈值函数t(x,y)表现为连续的曲面,在检测区域内,光强度变化相对平缓,为减少计算量,采用二次项函数拟合二值化阈值函数,即可满足大部分情况的需求。

其中,二值化阈值函数t(x,y)的二次项拟合函数为τ(x,y)=ax2+by2+cxy+dx+ey+f,其包括6项系数a、b、c、d、e、f,要求得该函数,至少需要6个不共面的点,其中,二次项拟合函数包括边缘灰度像素点集为使得拟合的函数误差最小,则令该点集与曲面的二次距离之和最小,即误差最小,转化为求函数极小值问题,其一阶导数为0,两边分别对a、b、c、d、e、f求导,并转化为矩形形式:

x=[a,b,c,d,e,f]t

ax=b。

其中,x、y分别为像素点在图像上的横坐标及纵坐标,a、b、c、d、e、f为待求系数,pi为边缘像素点的灰度值集合,zi为像素点的灰度值,n为边缘像素点数量,t为矩阵运算符。

根据n个已知的边缘像素点的灰度值,求解矩阵a的表达式,通过对上式求解x的值,获得阈值函数的拟合函数τ(x,y)=ax2+by2+cxy+dx+ey+f。通过该阈值函数τ(x,y),将第二图像分为两部分,将像素点数多的一部分认定为背景,从而实现二值化,获得第三图像。通过提取灰度图像边缘像素点并对阈值函数拟合,实现对第二图像的二值化,使得对于不同光照条件的图像进行二值化处理时,阈值函数得到的阈值根据灰度图的变化而不同,从而能够适应不同光照条件下的图像处理,具有较好的抗干扰能力。

步骤s5的具体过程为:根据hsv图像的饱和度s分量图及由第三图像获得的非背景图获取非背景像素点的第二饱和度直方图,计算非背景像素点的第二饱和度分布标准差,当第二饱和度分布标准差大于设定的第二干扰阈值时,第二干扰阈值取值26,说明存在较大噪声干扰,通过最大类间差方法得到最大的全局阈值,将非背景像素点的饱和度与全局阈值进行比较,将非背景像素点分为大于全局阈值的第一非背景像素点集合及小于全局阈值的第二非背景像素点集合两类,并比较第一非背景像素点集合与第二非背景像素点集合中像素点的数量,将像素点数量较小的一类去掉,从而去除多余的非背景像素点。

步骤s6的具体过程为:

对第二图像进行lsd直线检测,获取线段角度在预设区间范围内检测到的最长直线段,并以最长直线段的角度作为校正角度,对第三图像进行倾斜校正,lsd直线检测属于现有技术手段,此处不再赘述。

步骤s7的具体过程为:

s71.对第三图像进行初步字符分割,具体过程为,通过宽度为单像素大小的竖直检测线从左向右扫描第三图像,依次从左向右检测检测线上的非零像素点的数量并与第二阈值进行比较,其中,第二阈值为设定的初始阈值,若高于第二阈值,则认为为字符的中间部分,反之,则为非字符部分,具体的,开始检测时,当检测到检测线上的非零像素点数量高于第二阈值时,将当前位置标记为字符起始位置,继续向右检测,检测线上非零像素点数量高于第二阈值的部分均认为是字符的中间部分,当检测线上检测到的非零像素点的数量低于第二阈值时,将当前位置标记为字符的结束位置,依次对第三图像上的字符进行初步分割,直至将第三图像上的字符全部分割。

s72.判断经初步字符分割得到的字符宽度与字符高度,若字符宽度大于字符高度,则认为产生了字符粘结,提高第二阈值,令第二阈值乘以一个系数,本实施例中,该系数取值为1.2,执行s71,直至字符宽度小于字符高度。

s73.判断分割后的字符是否过分割,并对过分割的字符进行合并处理;

s74.对未过分割的字符及过分割处理后的字符进行数值识别。

步骤s73具体过程为:

s731.按字符顺序依次判断已分割字符与其相邻字符的间距是否大于第三阈值,第三阈值一般设置为2~3,本实施例设置为2,若已分割字符与其相邻字符的间距大于2,认为该字符无过分割,则将该字符放入集合h,若小于,认为该字符可能过分割,则将该字符放入集合u,即集合h中存放完整字符,集合u中存放待检测字符;

s732.对集合h中的字符进行数值识别并计算集合h中字符的平均宽度,若识别得到集合h中的字符不包括0及2~9,则计算集合h与集合u中所有宽度大于第四阈值的字符的平均宽度,本实施例中,第四阈值设置为1/5字符高度,否则,以1/5字符高度作为平均宽度;

s733.按字符顺序对集合u中的所有字符进行排序;

s734.按字符顺序从集合u中取出字符q,若集合u中字符为空,则认为没有待检测字符,执行s74,否则执行s735;

s735.从集合u中获取与字符q相邻的字符s,执行s736;若字符q无相邻字符,则将字符q从集合u中放入集合h中,计算集合h中字符的平均宽度并更新,执行步骤s734;

s736.判断字符q及字符s合并后的宽度是否小于其高度,若是,执行步骤s737,否则,将字符q放入集合h,执行步骤s734;

s737.分别计算字符q及字符s合并后的宽度与平均宽度的差值σ0、字符q与平均宽度的差值σ1及字符s与平均宽度的差值σ2,判断σ0、σ1及σ2的大小关系,具体包括以下情况:

a).若σ0≤σ1且σ0≤σ2,则合并字符q及字符s,并将合并后的字符n加入集合u,执行步骤s734,由于合并后的字符n不一定是完整字符,故将字符n加入集合u,继续对其进行判断、处理,进一步提高分割精度;

b).若σ0≥σ1且σ0≥σ2,则将字符q及字符s加入集合h,计算并更新集合h中字符的平均宽度,执行步骤s734;

c).若σ1≤σ0≤σ2,则将字符q放入集合h中,执行步骤s734;

d).若σ2≤σ0≤σ1,则对字符q进行数值识别,若字符q的数值识别结果为数字1,则将字符q加入集合h,执行步骤s734,若字符q的数值识别结果不为数字1,则对字符q与字符s合并后的字符n进行数值识别,若能对字符n准确识别到数字,则将字符n加入集合h,执行步骤s734,若不能准确识别字符n,则对字符s进行数值识别,若能准确识别字符s,则判断字符q为杂点,舍弃字符q,将字符s加入集合h,执行步骤s734,若不能准确识别字符s,则将字符n加入集合u,执行步骤s734。

传统的方法是采用投影法对字符进行分割,但该方法对二值化效果以及倾斜校正要求较高,若字符间存在粘连或断裂,容易产生不完全分割、过分割等现象。本发明的字符分割算法能有效的防止一定程度的断裂以及粘结现象。

进一步的,对字符进行数值识别的方法包括:

a).若分割后的字符区域长宽比大于设定的第五阈值,且字符区域内的黑色像素点占比大于设定的第六阈值时,判断该字符为数字1;

b).若分割后的字符区域长宽比小于第五阈值,且黑色像素点占比小于第七阈值,若所有黑色像素点中心位置处于3/4字符高度以下,则判断该字符为小数点;

c).若分割后的字符不是数字1及小数点时,将字符进行细化,使得该字符的组成线段均为单像素宽度,采用穿线识别法,通过检测线对该字符的显示区域进行检测,判断是否存在线段,根据检测结果进行判断数字0、2、3、4、5、6、7、8、9,从而实现字符的数值识别,本实施例中的字符显示区域为数字8数码显示的7个区域,例如检测结果为1111110为0字符,检测结果为1111111为8字符,检测结果为1101101为5字符。

综上,本发明能够减少光照对识别结果的影响,二值化效果好,具有一定的抗干扰能力,在进行字符分割时能有效避免字符粘结,同时能有效的对过分割字符进行合并处理,去除杂点,有效提高了字符分割的精度,无需采集大量样本进行训练,适用于各种数字式仪表的读数识别。

在本申请所提供的实施例中,应该理解到,功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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