指针表自动识别中的图像预处理算法研究
2020-06-28李杰
李杰
(承德石油高等专科学校 热能工程系,河北 承德067000)
通常,由CCD 摄像头拍摄到的指针表图像是低质量的,存在的噪声较多,如:光源照射强弱、指针表表盘干净程度以及CCD 摄像头的移动速度等因素等会影响图像的质量。图像预处理为的是尽可能去除噪声,加强前景和背景的对比度。一幅理想的指针表表盘图像是一幅二值化的黑白图像,但想得到理想图像却并不容易。预处理后得到一幅清晰基本上无粘连无断裂且尽可能存在少量或不存在伪特征点的指针图像,供自动计算读数,尤为重要。自动识别系统预处理算法设计的好坏不仅影响图像处理后的效果,而且还直接影响到指针表自动识别的准确度、速度及其稳定性。为此,提出了改进归一化算法、图像增强算法及数学形态学表盘图像预处理等算法,极大地降低了自动读数的误差,提高识别准确性;另一方面缩短了表盘图像预处理所用时间,从而提高系统的实时性。
1 自动识别流程
采用CCD 摄像头作为传感器,摄取到指针表表盘图像后,把其转换为指针表表盘灰度图像,经归一化处理、图像增强、二值化、二值化滤波去噪、数学形态学处理及细化等处理流程,最后进行指针识别与自动读数[4]。指针表图像自动识别系统流程框图如下图1 所示。
图1 指针表图像自动识别系统流程图
2 图像预处理
一般情况下我们采集到的指针表表盘图象质量不会很高,有着很多地干扰等噪声。所以,必须对采到的表盘灰度图像时行预处理(归一化,图像分割处理,图象增强处理,二值算法与细化处理等),就可将具有较多噪声干扰的初始指针表表盘灰度图像处理成一幅刻度线基本没有粘连、没有断裂的二值化黑白相间的指针表表盘图像。
2.1 归一化
归一化算法是把原始指针表表盘图角上的每一个像素点加工处理,进行灰度值改变,清除指针表表盘表面的残留噪声以及光源光照强度对表盘图像的影响。通常把图象进行w×w(16×16)分割为小的子块,对子块分别求其灰度均值Mi 和灰度方差Vi。那么,按如下公式求取子块的灰度均值与方差:
其中I(x,y)是子块中像素(x,y)的灰度值,其进行归一化算法处理的目的是使其方差均值能够调整到可控的预期范围,如以G(i,j)表示像素点(x,y)经过归一算法化处理后的值,那么第I 个子块运行归一化算法处理后所得到的灰度值按如下所示:
2.2 图像平滑
经过归一化处理以后的指针表表盘图象,我们使用平均法对它进一步平滑处理。图像进行读取的时候由于随机噪声等各个方面的干扰破坏了原来图像的真实性,因此利用另外一种方法平滑滤波就能够极大的降低随机噪声的干扰,从而大大地提高了识别的准确性、可靠性。滤波后要想得到更加清晰的图象,并且有均匀可靠的对比度,通过利用3×3 模板进行平滑处理。原图中每个象素点的灰度值是这样处理的,把它与周边紧密相接邻的8 个象素点的灰度值进行相加处理,从而得出新的图象,新图中其像素的灰度值用这种方法得得出的平均值来替代。公式如下:
其中:G(i,j)用来代表原来图象第i 行第j 列,那么这样的象素点运用归一化处理后的象素值NewG(i,j)来表示。运用平滑模板对图2 进行处理滤波可获得如图3 所示的指针表表盘图象。
其中:G(i,j)i 行第j 列,那么这样的象素点运用归一化处理后的象素值NewG(i,j)来表示。运用平滑模板对图2 进行处理滤波可获得如图3 所示的指针表表盘图象。
图2 原始表盘灰度图像
图3 归一化处理后表盘图像
2.3 图像二值化
要想获得图像中有价值的那部分,还得进行分割处理,所谓的分割处理就是把它的前景、背景分开,从而把想要的图象有效部分和不想要的无效图象部分进行明确分开。通过灰度门限设置域值法可将表盘图象进行很好的二值化分割。从而准确地确定出有效区域图象。图4 运行二值化处理后可得到如图5所示的图象。
图4 平滑后指针表表盘图像
图5 二值化后指针表表盘图像
2.4 数学形态学
数学形态学(Mathematical Morphology),它是建立在严格数学理论基础上的一门学科,它运用一种集合论方法,从而可以定性定量的描述出目标几何结构的学科。膨胀(或扩张)、腐蚀(或侵蚀)、开启与闭合是数学形态学的4 个基本运算,以这4 种为基础,从而可推导并对其进行组合,构成具有多种数学形态学的适用算法。
在灰度指针表表盘图像处理中,运用形态学中的膨胀腐蚀算法,能够除掉脊或谷区域中的麻点干扰,我们连接脊线上的窄缝,从而脊区变得更黑,强调突出脊区与周边的对比度,能够除掉脊线上所有干扰的小毛刺。同时,能够除掉表盘油污造成的刻度线之间相互粘连,除掉我们在预处理进修进一步造成的相邻刻度线上的连接或断裂,造成细化时添加虚假刻度线或减少真实刻度线。目的是尽量把引入的伪特征信息滤除,从而把原始表盘图像中的真实信息尽可能多的保留住,把识别的准确率提高到最大。从图5 能够了解到图像里或多或少总是存在一些干扰线,所以我们运用形态学里的膨胀与腐蚀算法,以便处理图5,就能够很好地除掉图象中多余黑点或分叉线造成的干扰。处理后如图6 所示为滤波后的二值化表盘图像。
2.5 图像细化
细化算法的引入就是单元化,目的是减少图中的边沿象素,使之转化为只有一个象素宽度的图像。经过腐蚀运算后让它变为1 个单位像素的宽度,从而能够增强图像的具体特征,并减少多余信息。因此,对二值化后图象进行细化,能够极大提高识别的准确性与快速性。经细化处理后如图7 所示。
图6 膨胀与腐蚀运算后表盘图像
图7 细化后表盘图像
3 结论
图像预处理的好坏决定最终自动读数的准确性,经大量实验证,本文提出的整套预处理方案:指针表表盘图象归一化算法,图像平滑处理,二值化处理,数学形态学去噪及细化算法滤波预处理,其预处理结果能够达到令人满意的效果。系统具体实施均采用VC++编程实现。实验运用了100 块不同型号与不同类型的指针类图像,分别采用人工和软件进行识别比对,用实验数据统计计录,每块表进行不同位置取点(10 个点),总共取出1000 个点进行实验测试,最后985 个点的自动读数准确度高于人工读取,准确度高达98.5%。同时,实验测试结果表明该系统识别出一个点的计数所用的时间仅为0.4 秒左右,大大高于人眼识别速度;其识别精度能够达到0.1 度(相对指针的旋转角度),也远远高于人眼对表盘的识别精度。以上数据进一步验证了所提预处理算法的有效性。