水位尺读数识别 python_一种基于深度学习的水尺识别方法与流程

本发明涉及水位监测

技术领域:

:,具体地说,涉及一种基于深度学习的水尺识别方法。

背景技术:

::近些年来,随着图像处理技术的发展,通过计算机获得图像里的详细信息成为了一种非常方便且高效的方式。将图像处理技术与水尺图像结合来获得水位值成为一种新的水位测量方法。对于水位这种比较特别的数据,图像法的误差已经可以接受,而且成本低,在一些特别的应用场合具有优势,维护方便。现在已有很多自动识别水尺的方法,如:公布号为CN109145830A的中国专利文献公开了一种智能水尺识别方法,能对水位线不清晰的图片进行高效识别。但该方法网络结构相对复杂,需要设置较多的网络参数,实际应用中系统的调试、实施和维护相对麻烦,影响了其实用效果。公布号为CN108549894A的中国专利文献公开了一种基于深度学习算法的船舶水尺图像自动读数方法。该方法利用深度学习算法对船舶水尺图像中的数字进行识别定位,得出数字数值和在图像中的边框坐标,并对数字边框坐标进行修正。这种方法对于带数字和“E”字符的水尺的识别并不适合。公布号为CN109508630A的中国专利文献公开了一种基于人工智能识别水尺水位的方法,采用深度学习算法实现,该深度学习算法需要使用已标注的大量水尺图像数据进行预训练,在预训练的基础上才能将算法应用到对未知水尺刻度的水尺图像的预测中。该方法如果没有大量的水尺图像数据效果就会受到很大限制。技术实现要素:本发明的目的为提供一种基于深度学习的水尺识别方法,该方法在进行水位监测的过程中,不仅精度高,在水的颜色和水位线不容易识别情况下也能准确识别,而且网络结构相对简单,软件的调试及后期维护相对容易,很有利于应用推广。为了实现上述目的,本发明提供的基于深度学习的水尺识别方法包括以下步骤:1)采集水尺图像数据;2)对水尺图像中的水尺进行定位;3)识别定位后的水尺图像的水面线,并对水面线以上的图像进行字符分割;4)识别分割的字符,并计算水位值。上述技术方案中,通过深度学习的目标检测算法实现对水尺的定位,并对定位结果进行部分调整;接着将水尺图像从RGB颜色空间转换到Lab颜色空间,使用颜色判定的方法对水尺图像进行二值化,划分水上水下,再通过腐蚀操作和连通域相关的方法获得“E”字符的位置,之后根据位置关系,获得数字字符的位置;接着用深度学习中的图像分类算法识别分割出的字符;然后用线性拟合的方式校正识别结果,最后计算出水位值。该方法不仅精度高,在水的颜色和水位线不容易识别情况下也能准确识别,而且网络结构相对简单,软件的调试及后期维护相对容易,很有利于应用推广。作为优选,步骤2)包括:2-1)制作数据集,可使用MATLAB中的imagelabeler功能,导入所有的水尺图像数据,每隔三幅图像选取一幅作为测试图像,对测试图像中水尺的位置添加标签框,并导出添加标签框的图像作为数据集;2-2)网络训练,采用Faster-RCNN算法,使用MATLAB中的扩展网络Alexnet作为检测网络的网络模型,并利用数据集中的图像对网络模型进行训练,形成水尺定位模型;整个训练过程分为四个步骤:(1)生成RPN(RegionProposalNetwork)网络,RPN网络是区域生成网络,用来生成候选框,是一种卷积神经网络;(2)用RPN网络来训练检测网络;(3)用检测网络优化RPN网络;(4)用优化的RPN网络来优化检测网络。其中每一步的训练参数都是独立的,后两步优化过程一般会用更低的学习速率来提高准确度,四个步骤用同一个训练参数。2-3)定位结果,将待测的水尺图像输入训练好的水尺定位模型,得到定位结果。作为优选,步骤3)中,水面识别过程采用通过颜色进行二值化的方法识别水面线,使用Lab颜色空间对颜色进行判定。作为优选,步骤3)中,采用包围连通域的方式进行字符分割,包括:3-1)字符分离,选用形态学中的腐蚀算法使字符分离,腐蚀可以实现“E”字符相互分开但部分数字字符因被腐蚀而断裂,结构信息也被腐蚀掉,因此数字需要其他方法进行分割;3-2)字符加框,针对“E”字符,将所有包围框在竖直方向上,由上往下进行排列,每一个左侧的“E”字符包围框和相邻的右侧“E”字符包围框的上下侧之间的纵坐标值相等,每一个数字被三个“E”字符包围。对数字的包围框就通过对3个“E”字符包围框的组合来获得。为了获得更好的数字字符图像,可经过再次对水尺图像进行二值化,并对颜色取值进行调整。水尺图像里完整的数字个数都比左侧“E”字符个数少一个,数字包围框的左侧取上下两个“E”字符包围框的左侧的最小值;上侧取上面“E”字符包围框的下侧,由于在生成包围框的时候,对图像进行了腐蚀,在未腐蚀的图像里,需要补上3个长度,其他两侧也是同理;右侧取右边“E”字符包围框的左侧;下侧取下方“E”字符包围框的上侧。作为优选,步骤4)中,识别分割的字符包括以下步骤:(1)预处理,使用加黑边操作,使所有的字符图像都为正方形;(2)建立数据集,将图像分类地保存到相应的文件夹中,给每一种数字和每一种分割的“E”字符分配一个子文件夹;(3)建立图像分类卷积神经网络,利用数据集中的图像对图像分类卷积神经网络进行训练,得到图像分类模型;(4)将待测字符进行步骤(1)的预处理后输入图像分类模型,得到字符所代表的数字或分割的“E”字符所代表的百分比。作为优选,图像分类卷积神经网络中,输入图像的尺寸为50*50,维度为1;第一个卷积层卷积核尺寸为3*3,维度默认和图像维度一致,卷积核数量为8;卷积层之后使用批量归一化层加速网络的训练,再加上激励层获得输出;池化层选择最大池化方式,滤波器尺寸为2*2;一共包含3个卷积层,每一个卷积层比上一个卷积层的卷积核数量增加一倍;使用1个全连接层,全连接层分类的数目和图像种类数量相一致;还包括softmaxLayer层和classificationLayer层。作为优选,步骤4)中,采用曲线拟合的方法计算水位值:将从上到下的字符顺序作为横坐标,“E”字符识别值为纵坐标,用一阶线性拟合的方法,使用MATLAB里的两个函数:polyfit(x,y,n)函数返回阶数为n的多项式p(x)的系数,该系数是y中数据的最佳拟合,polyval(p,x)计算多项式p(x)在x的每个点处的值,进行校正,校正结果用四舍五入的方法进行取整。与现有技术相比,本发明的有益效果为:本发明的基于深度学习的水尺识别方法的精确度更高,抗干扰能力强,对环境和相机像素的要求较低,可以应用在户外环境下的水尺的水位识别。该方法不仅精度高,在水的颜色和水位线不容易识别情况下也能准确识别,而且网络结构相对简单,软件的调试及后期维护相对容易,很有利于应用推广。附图说明图1为本发明实施例中基于深度学习的水尺识别方法的流程图;图2为本发明实施例的水尺定位流程图;图3为本发明实施例水尺定位后得到的三类图像,其中图3(a)是下边框低于水面图像,(b)是下边框和水面近似重合图像,(c)是下边框高于水面图像;图4为本发明实施例水面识别与字符分割的流程图;图5为本发明实施例字符识别与水位值计算的流程图;图6为本发明实施例的腐蚀结果图像,其中图6(a)是分割出来的水尺图像,(b)是腐蚀结果图像;图7为本发明实施例中“E”字符包围框图像,其中图7(a)是分割出来的水尺图像,(b)是“E”字符包围框图像;图8为本发明实施例中数字包围框图像,其中图8(a)是分割出来的水尺图像,(b)是重新二值化后的数字字符包围框图像;图9为本发明实施例中预处理的字符图像。具体实施方式为使本发明的目的、技术方案和优点更加清楚,以下结合实施例及其附图对本发明作进一步说明。实施例参见图1,本实施例的基于深度学习的水尺识别方法包括以下步骤:S1采集水尺图像。S2水尺的定位;具体步骤如图2所示,包括:S201制作数据集。本实施例使用MATLAB中的imagelabeler功能。导入所有的图像数据,定义一个标签,大概每隔3幅图像选取一幅作为测试数据,给测试图像中的感兴趣区域添加标签框,完成后再把数据导出,导出的格式选择table。S202设置训练参数;选择随机梯度下降法来训练网络,设置网络训练轮数和每次同时训练的图像个数,设置训练速率。S203网络训练;本实施例采用Faster-RCNN算法,准确度较高,而且速度快。本例使用Alexnet作为网络架构。整个训练过程分为四个步骤:(1)生成RPN(RegionProposalNetwork)网络,RPN网络是区域生成网络,用来生成候选框,是一种卷积神经网络;(2)用RPN网络来训练检测网络;(3)用检测网络优化RPN网络;(4)用优化的RPN网络来优化检测网络。其中每一步的训练参数都是独立的,后两步优化过程一般会用更低的学习速率来提高准确度,本例四个步骤用了同一个训练参数。S204定位结果;本实施例把150张图像数据检测一遍,定位结果基本为三类,如图3所示。S3水面识别与字符分割,具体步骤如图4所示,包括:S301转换成Lab颜色空间;S302二值化,本实施例采用通过颜色进行二值化的方法来识别水面,使用Lab颜色空间来对颜色进行判定。本实施例的取值:L值为10到60之间,a值为+20到+127,b值为+10到+127。S303字符分离,有些地方,上下两个“E”字符之间还是存在一小部分相连,本实施例选用形态学中的腐蚀算法来使字符分离,具体效果如图6所示。腐蚀可以实现“E”字符相互分开但部分数字字符因被腐蚀而断裂,结构信息也被腐蚀掉,因此数字需要其他方法进行分割。S304字符加框,本实施例针对“E”字符加框,将所有的包围框在竖直方向上,由上往下进行排列,每一个左侧的“E”字符包围框和相邻的右侧“E”字符包围框的上下侧之间的纵坐标值大致相等,而数字包围框和相邻的右侧“E”字符包围框的该值相差较大,由此来筛选出左侧的“E”字符包围框,结果如图7所示。由图7可知,每一个完整的数字都被三个“E”字符包围,这样对数字的包围框就通过对3个“E”字符包围框的组合来获得。为了获得更好的数字字符图像,本例经过再次对水尺图像进行二值化,并对颜色取值进行调整:L值为5到60,a值为+15到+127,b值为+5到+127。水尺图像里完整的数字个数都比左侧“E”字符个数少一个,数字包围框的左侧取上下两个“E”字符包围框的左侧的最小值;上侧取上面“E”字符包围框的下侧,由于在生成包围框的时候,对图像进行了腐蚀,在未腐蚀的图像里,需要补上3个长度,后面两侧也是同理;右侧取右边“E”字符包围框的左侧;下侧取下方“E”字符包围框的上侧,结果如图8所示。S4字符识别与水位值计算;具体说明如下:S401预处理,本实施例使用加黑边操作,使所有的字符图像都为正方形,如图5所示。S402数据集,将图像分类地保存到相应的文件夹中,每一种数字分配一个子文件夹,特殊字符也一样。S403图像分类卷积神经网络,将图像分类地保存到相应的文件夹中,每一种数字分配一个子文件夹,特殊字符也一样。搭建简单的网络架构并设置相应的训练参数进行训练。S404识别特征,通过生成网络的DeepDream图像,来观察网络对不同类别的特征识别是否准确。S405水位值计算,参见图5,本实施例采用曲线拟合方法,将从上到下的字符顺序作为横坐标,字符识别值为纵坐标,用一阶线性拟合的方法,本例使用MATLAB里的两个函数:polyfit(x,y,n)函数返回阶数为n的多项式p(x)的系数,该系数是y中数据的最佳拟合,polyval(p,x)计算多项式p(x)在x的每个点处的值,进行校正。校正结果用四舍五入的方法进行取整。当前第1页1 2 3 当前第1页1 2 3 

你可能感兴趣的:(水位尺读数识别,python)