杨银银,丁 斌,何飞飞,陈子望
(南通市计量检定测试所,江苏南通226000)
溶解氧测定仪主要用于测定水中常量溶解氧(DO)浓度[1],其工作原理是氧透过隔膜被工作电极还原,产生与氧浓度成正比的扩散电流,通过测量此电流,得到水中溶解氧的浓度[2]。主要分为电化学探头法和荧光法溶解氧测定仪。
随着计算机技术的飞速发展,基于视频的图像识别算法越来越多地应用到自动化检测过程中,将人从单一重复的读表工作中解放出来,不仅解放了劳动力,也保证读数的准确率和及时性。
根据溶解氧仪显示屏的实际显示,如图1所示,本文采用基于视频的数字仪表示数识别算法,包括图像采集和预处理模块,数字区域定位于倾斜校正模块、数字字符分割模块、数字字符识别模块以及识别结果输出模块。同时,在字符分割和字符识别部分添加了对小数点识别的优化处理算法,提高了小数点的识别率。
图1 溶解氧测定仪显示屏
视频图像的采集是算法识别的第一步,本算法采用USB高清摄像机采集仪表图像,图像分辨率1 280×1 024,帧率为15帧/s。采集到原始视频帧需要先做图像预处理,然后才能进行后期的识别。本算法中图像预处理主要包括:图像灰度化、图像滤波和图像二值化3个部分。
本算法采用加权平均法进行图像灰度化:将RGB色彩空间里的图像转化为YCbCr色彩空间。在YCbCr色彩空间中,Y表示图像灰度值,Cb表示图像色调,Cr表示饱和度。RGB色彩空间与YCbCr色彩空间关系如下:
Y=0.299R+0.587G+0.114B
Cb=-0.168 7R-0.331G+0.5B+128
Cr=0.5R-0.418 7G-0.081 3B+128
R=Y+1.402(Cr-128)
G=Y-0.331 4(Cb-128)-0.714 14(Cr-128)
B=Y+1.772(Cb-128)
通过上面公式可以得出YCbCr色彩空间中的灰度值Y与RGB空间三分量R、G、B的关系,如下式所示[3]:
Y=0.299R+0.587G+0.114B
图像灰度化效果如图2b所示。
本算法采用高斯滤波,高斯滤波是根据高斯函数的形状来选择权值的线性平滑滤波。高斯滤波对去除服从正态分布的噪声是很有效果的。
图2 图像预处理
高斯滤波效果如图2c所示。
对经过灰度化和高斯滤波的图像进行二值化,图像二值化就是将像素点的灰度值根据阈值设置为0或255[4]。图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。图像二值化公式如下:
其中,T是阈值。本算法采用基于Otus算法的局部阈值处理。该方法计算简单,不受图像亮度和对比度的影响,是图像分割中阈值选取的最佳算法。基于Otsu的局部阈值处理的局部阈值处理的图像二值化效果如图2d所示。
经过灰度化、高斯滤波去噪和二值化最终得到数字仪表示数的二值化图像,在识别之前还需要定位数字仪表示数区域,并对图像进行矫正处理。
数字仪表示数区域,即从图像中定位出数字仪表的示数区域,区分出要识别的图像部分。本算法先采用投影法对数字仪表示数区域进行粗定位,然后利用数字形态学的定位方法对数字仪表示数区域进行精准定位。
投影法分为水平方向的投影和垂直方向的投影。水平方向投影,将图像数组进行列求和;垂直方向投影,将图像数组进行行求和。
水平方向投影:循环各行,依次判断每一列的像素值是否为黑,统计该行所有黑像素的个数。设该行共有N个黑像素,则把该行从第1列到第N列置为黑。
垂直方向投影:循环各列,依次判断每一行的像素值是否为黑,统计该列所有黑像素的个数。设该列共有N个黑像素,则把第1行到第N行置为黑。
图像处理有3个基本的变换矩阵——平行变换矩阵、缩放矩阵和旋转变换矩阵。进行倾斜矫正用的是旋转变换矩阵,具体矩阵如下:
这个矩阵和旋转变换矩阵是一致的,图像倾斜矫正基本思想就是首先利用边缘检测算法得到边缘检测图像,然后通过各种技术手段找到图像的矫正角,最后利用旋转变换矩阵对图像旋转达到矫正的目的。
根据前面的处理,已经获得了精确定位并矫正后的数字仪表示数区域的二值化图像,接下来就要对数字字符进行分割,以方便后期进行特征提取和识别。
根据溶解氧测定仪示数的显示特点,每个字符是一个连通域,不同字符之间是不同的连通域。因此本文采用连通域分割算法,通过计算预处理后的二值化图像的连通域,并根据获取的连通域的宽高比、面积、矩形度以及在图像中的位置可以简单地区分出是否是字符区域或者小数点区域。效果如图3所示。
图3 数字字符分割
溶解氧测定仪的示数是段码显示的方式,如图4所示。
图4 段码显示
根据段码显示模型,通过穿线法可以准确地识别出数字。段码显示模型如图5所示。
数字0:d1=1;d2=1;d3=1;d4=0;d5=1;d6=1;d7=1
数字1:d1=0;d2=0;d3=1;d4=0;d5=0;d6=1;d7=0
数字2:d1=1;d2=0;d3=1;d4=1;d5=1;d6=0;d7=1
图5 段码显示模型
数字3:d1=1;d2=0;d3=1;d4=1;d5=0;d6=1;d7=1
数字4:d1=0;d2=1;d3=1;d4=1;d5=0;d6=1;d7=0
数字5:d1=1;d2=1;d3=0;d4=1;d5=0;d6=1;d7=1
数字6:d1=1;d2=1;d3=0;d4=1;d5=1;d6=1;d7=1
数字7:d1=1;d2=0;d3=1;d4=0;d5=0;d6=1;d7=0
数字8:d1=1;d2=1;d3=1;d4=1;d5=1;d6=1;d7=1
数字9:d1=1;d2=1;d3=1;d4=1;d5=0;d6=1;d7=1
对于小数点识别的优化,首先根据字符分割阶段获取的连通域的连通域重心位置、宽高比以及像素点均值以及标准差可以简便地获取到小数点的连通域,解决了小数点丢失的问题,提高识别准确度。
小数点判断策略:
(1)连通区域位于图像的下1/3处;
(2)连通域的宽高比在指定阈值范围内;
(3)连通域内的像素点均值大于指定阈值;
(4)连通域内像素点的标准差小于指定阈值。
算法识别结果如图6所示。
图6 算法识别结果
本文旨在为提高溶解氧测定仪校准装置的自动化程度,保证溶解氧测定仪检定过程中检测结果读取的及时性与准确性,设计了基于溶解氧测定仪校准装置自动识别的算法。该算法进行溶解氧测定仪的数据读取,识别率高、速度快,特别对小数点识别部分的优化,解决了通用段码示数识别中小数点识别率低的问题。溶解氧测定仪显示值的自动读取,优化了溶解氧测定仪的检定过程,并在更大程度上提高数据读取的准确性和及时性。