基于ZS细化改进算法的仪表盘指针读数方法

2020-05-12 09:46齐淑雯陈爱军
中国计量大学学报 2020年1期
关键词:仪表盘读数邻域

齐淑雯,陈爱军,刘 磊

(中国计量大学 计量测试工程学院,浙江 杭州 310018)

汽车仪表盘是驾驶员在驾驶过程中获得汽车信息的重要渠道,通过仪表盘的信息显示,驾驶员可以判断当下的汽车运行状况和汽车部件的安全状况,仪表盘是否显示准确关系着汽车驾驶的安全性和可靠性[1]。因此,准确快速地对仪表盘信息进行识别具有重要意义。

当前,很多学者对于仪表盘指针读数进行了研究。对于指针的识别,秦善培提出使用Hough变换提取仪表指针所在直线,然后利用角度转换法换算出指针刻度[2];孙晶晶提出基于最小距离法与中心点校正相结合的直线提取方法来提取指针直线,并选择用角度法换算出指针读数[3]。但Hough变换中需要手动设置累加平面的阈值参数,因此无法实现自适应,还经常会出现细化出的直线有多于一条的情况,而且由于Hough变换是将整个图像像素数据一起运算,故在处理速度上相对较慢[4]。

目前使用较为广泛的直线提取方法是基于ZS细化的基础上进行的[5]。牟少敏等人对ZS快速并行细化算法进行了改进,将8邻域进行二进制编码,从而删除ZS细化中出现冗余和分叉的像素点[6];陈树等则在初步细化的基础上采用四连通域模板和构造保留模板实现彻底细化和直线连通[7]。然而上述方法都采用某一特定的模板进行匹配细化,不能覆盖可能出现的情况,且运算过程复杂,无法解决直线细化过程中重复出现的分叉和像素冗余的问题。

为了解决现有方法存在的问题,今提出一种基于ZS细化改进算法的汽车仪表盘指针读数方法。首先运用颜色空间转换的方法,将仪表盘图像从RGB空间转换至YUV空间,提取U分量得到指针区域图像;然后针对上述ZS细化算法存在的不足,对ZS细化算法进行改进,基于不同的搜索方法和方向判别方法,得到需要保留的像素点;最后将所有的像素点在新建的背景图像中输出,得到最终细化完全的直线,对该直线进行最小二乘拟合,并计算出指针读数。

1 指针区域提取

为了减少后期的算法难度,需要对原图像进行指针区域提取,流程图如图1。

图1 指针提取程序框图Figure 1 Block diagram of pointer extraction

1.1 YUV空间转换

首先采用张氏算法[8]标定相机,然后对图像进行校正,所得的仪表盘图像如图2,在图像处理过程中,RGB模型是一种传统的颜色信息表达方式,但对于该仪表盘而言,通过传统的提取红色分量的方法来得到指针区域图像[9],图像中红色刻度以及指针区域会存在噪点以及毛刺的问题,所以采用颜色空间转换的方法。

图2 仪表盘图像Figure 2 Dashboard image

YUV空间是将亮度参数和色度参数分开表示,这样的操作有利于提取该图像的色度分量。针对此仪表盘,可采取提取U分量来提取指针区域,RGB与YUV的转换公式如式(1):

(1)

1.2 指针提取

由图2可以看出,指针区域的面积明显大于其余区域。首先将提取到的U分量图像采用Otsu方法进行图像二值化,其次获取二值图像中每个轮廓的面积以及最小外接矩形的伸长比,最后根据面积和伸长比的阈值判断条件,得到只含有指针连通域的图像。

1.3 倾斜校正

由于仪表盘的形状比较特殊,在固定时会存在一定的倾斜,此时需要对仪表盘图像进行倾斜校正。

首先采用在YUV颜色空间中提取U分量的方法提取部分红色主刻度,其次利用大津法对原图像进行二值化,再提取剩余的主刻度,然后将主刻度图像在背景图中复原得到完整的刻度图像,提取刻度区域的最小外接矩形的中心点,采任意三点拟合圆得到圆心[10],并对得到的圆心进行加权平均,得到该度盘的圆心点坐标(x,y),计算50 km/h处刻度与图像坐标系y轴的夹角α,以圆心(x,y)为旋转中心,将原图像顺时针旋转α角度,完成图像摆正,如图3。

图3 摆正的仪表盘图像Figure 3 Corrected dashboard image

1.4 形态学闭运算

由于ZS细化算法有着保持直线原始形状的特性,所以指针连通域外围轮廓上微小的变化都会在细化过程中影响细化的结果,比如细小的凸起会在最终细化结果中出现分叉的现象。

利用形态学闭运算[11]对指针连通域图像进行处理,可以弥合较窄的间断和细长的沟壑,消除细小的孔洞,填补轮廓线中的断裂。本文采用的结构元素形状为矩形,尺寸大小为5×5。

2 指针细化读数

2.1 ZS快速并行细化算法原理

ZS快速并行细化算法的原理[12]如下:首先寻找以边界点为中心的8邻域,记中心点为P1,其邻域的8个点顺时针绕中心点分别记为P2,P3,…,P9,如图4。

图4 8邻域系统
Figure 4 8 Neighborhood System

将二值图像中的目标点标记为1,背景点标记为0,然后删除满足公式(2)或公式(3)的点,将删除过程构成一次迭代,直到删除所有满足条件的点,剩余点组成的图像便是ZS细化的结果图像。

(2)

(3)

式(2)~(3)中:N(P1)为P1的8邻域中不为零的点的个数;S(P1)为以P2,P3,…;P9为序时这些点的值从0到1变化的次数。

2.2 细化优化算法

ZS快速并行细化算法具有一定的局限性,如果图像的外围轮廓存在细微的变化,在细化过程中会出现像素冗余、分叉等,这种现象无法避免,所以采用改进算法对ZS算法细化结束得到的初始细化图像进行优化:采取先斜线再十字的搜索方法进行逐点细化,按照与被搜索像素点相邻的点的方向,判断该像素点是否应该保留,直到将所有像素点遍历,此时直线彻底细化完成。

本文提出的改进细化算法可分五步进行:

1)首先找到细化的起点,以二值图像中直线的左上角为搜索起点,逐行逐列寻找连通域中首个像素值不为0的点。设该像素点P0为细化起点,按顺时针方向定义像素点P0的8邻域内方向序号,具体编号为1至8,如图5。在该点的8邻域内按先斜线后十字的顺序(首先寻找1、3、5、7位置上是否存在值为1的像素点,如果没有,则寻找2、4、6、8位置上值为1的像素点)搜索相邻像素点P1,确定两个相邻像素点间的方向Dir0,再将像素点P0取反,并将P0点的位置信息保存。将像素点P1作为新的细化起点,在像素点P1的8邻域内按先斜线后十字的顺序搜索是否存在相邻像素点P2,若存在像素点P2,则确定两个相邻像素点之间的方向Dir1。

1238P04765

图5 8邻域系统
Figure 5 8-neighborhood system

2)判断Dir1与Dir0两方向间的差值,如果满足式(4),则确定像素点P2相对于像素点P0的象限方位,若Dir1属于相应的方向范围内,则将像素点P1作为起始像素P0,并将像素点P1位置信息保存,如图6。

0≤Dir1-Dir0≤1。

(4)

图6 判别条件1示意图Figure 6 Discrimination condition 1

若存在“T”字型特殊情况,则优先处理,以当前像素点P2作为搜索起点,确定像素点P2的8邻域内1、2、3、6方向上的像素值;若像素点P2规定方向上的像素值都为1,则将像素点P1作为起始像素点P0,并将像素点P1位置信息保存。若像素点P2规定四个方向上的像素值并不都为1,则将当前P2像素值置为0,如图7。

图7 “T”字型示意图Figure 7 ‘T’font schematic diagram

3)如果满足式(5),则将像素点P2作为新的搜索起点,确定像素点P2相对于像素点P0象限方位Dir1,若Dir1满足规定的像素方向范围,则在像素点P2的8邻域内按先斜线后十字的顺序搜索是否存在不属于P1的8邻域内相邻像素点P3,确定相邻像素点P2与P3间的方向Dir2,如果满足公式(6),则将像素点P1作为新的起始像素点P0,并将像素点P1的位置信息保存,如图8。

-1≤Dir1-Dir0<0,

(5)

|Dir2-Dir0|<2。

(6)

图8 判别条件2示意图Figure 8 Discrimination condition 2

4)如果满足公式(7),以当前像素点P3为新的搜索起点,在像素点P3的8邻域内按先斜线后十字的顺序搜索是否存在相邻且不是P2的像素点P4;如存在像素点P4,则确定相邻像素点P3与P4间的像素方位Dir3。如果满足公式(8),则将像素点P1作为起始像素点P0,并将像素点P1位置信息保存,如图9。

|Dir2-Dir0|≥2,

(7)

Dir3-Dir1=0或|Dir3-Dir0|≤1。

(8)

图9 判别条件3示意图Figure 9 Discrimination condition 3

如果满足公式(9),则存在“一”字型特殊情况,则转入处理“一”字型特殊情况算法,以当前搜索点P4作为搜索起点,判断是否存在相邻且不属于P4的8邻域内像素点P5;若存在相邻像素点P5,则确定P5与P4间的象限方位Dir4。如果满足公式(10),则将像素点P1作为起始像素点P0,并将像素点P1位置信息保存,如图10。

Dir3-Dir2=0,

(9)

Dir4-Dir1=0或|Dir4-Dir0|≤1。

(10)

图10 “一”字型示意图Figure 10 ‘一’ font schematic diagram

5)逐个对图像中的像素点进行判断,若已遍历完,则将所有保存的点的位置坐标信息在新建的背景图像中输出;若未遍历完,则将上述步骤2)、3)、4)继续迭代,直到所有的像素点已经遍历完。

2.3 刻度值判读

利用最小二乘法对完全细化的指针图像中的点进行直线拟合,得到拟合方程:y=kx+b,通过式(11)计算得到车速s。

(11)

式(11)中,(x,y)为汽车仪表盘度盘的圆心坐标,(x1,y1)是该线段的中点坐标。

3 实验结果与分析

本文的操作环境为Win10 64位操作系统VS2010开发环境、内存8 GB、CPU 2.8 GHz。在相同的环境下,将采集到的原始图像运用ZS细化原始算法和优化算法进行提取直线,如图11。将图像进行局部放大,如图12。

实验结果表明,ZS细化会存在细化不彻底的现象:像素冗余和毛刺分叉。本文提出的改进优化算法能够完全去除毛刺分叉以及像素点冗余,从而达到单像素。该算法在保持ZS并行细化算法的优异运算速度的基础上,提高了直线细化的准确度。

图11 细化算法结果图Figure 11 Refine algorithm result images

图12 局部放大图Figure 12 Enlarged view

为了验证算法对汽车仪表盘读数精度的影响,采用角度校验[13]的方法,人为控制指针指向10、30、50、80等标准车速值的位置,通过表1两种算法的误差对比数据可以看出,优化算法的平均相对误差降低了0.55%。

表1 两种算法的误差对比结果Table 1 Comparison of errors between the two algorithms

4 结 语

本文对汽车仪表盘的指针读数方法进行了研究,提出了基于ZS细化的改进算法并进行实验验证,结论如下。

1)运用机器视觉技术对汽车仪表盘指针进行读数,采用面阵CCD相机采集图像,降低了图像预处理的难度,预处理过程中通过图像摆正的方法提高了直线读数的准确度。

2)提出了一种新的ZS细化改进算法,不仅保持了指针的固有形状特征,而且有效改善了ZS快速并行细化算法中存在局部像素冗余、细化直线存在分叉的问题。

3)本文提出的改进算法提高了直线识别的准确度,其平均相对误差降低了0.55%。

猜你喜欢
仪表盘读数邻域
基于混合变邻域的自动化滴灌轮灌分组算法
含例邻域逻辑的萨奎斯特对应理论
“0”的读法和要领
仪表堂堂
Dashboard的10个实现原则
关于游标卡尺读数问题易错点的剖析
尖锐特征曲面点云模型各向异性邻域搜索
福特探险者车仪表盘上多个故障灯点亮
仪器工作原理决定了仪器的读数规则
邻域平均法对矢量图平滑处理