CN103759758B - 一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法 - Google Patents

一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法 Download PDF

Info

Publication number
CN103759758B
CN103759758B CN201410037951.6A CN201410037951A CN103759758B CN 103759758 B CN103759758 B CN 103759758B CN 201410037951 A CN201410037951 A CN 201410037951A CN 103759758 B CN103759758 B CN 103759758B
Authority
CN
China
Prior art keywords
pointer
scale
image
value
rotation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410037951.6A
Other languages
English (en)
Other versions
CN103759758A (zh
Inventor
李竹奇
高会军
于金泳
孙光辉
肖峰
李博伦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Harbin Institute of Technology
Original Assignee
Harbin Institute of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Harbin Institute of Technology filed Critical Harbin Institute of Technology
Priority to CN201410037951.6A priority Critical patent/CN103759758B/zh
Publication of CN103759758A publication Critical patent/CN103759758A/zh
Application granted granted Critical
Publication of CN103759758B publication Critical patent/CN103759758B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法,本发明涉及指针的位置检测方法。本发明是要解决传统方法检测指针小角度时指针产生形变、零点刻度的依赖性高而导致的刻度分布特征不准确不能得到规整的刻度序列以及传统方法不会检测到仪表盘在装配时产生的旋转误差的问题,而提出的一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法。该方法是通过一计算单帧灰度图像的旋转角度;二对单帧二值图像先进行归一化再进行二值化后进行腐蚀操作;三对图像进行极坐标变换;四获得指针直线方程的参数;五计算指针机械角度;六计算指针指向刻度值;七得出实际单位的值等步骤实现的。本发明应用于指针的位置检测领域。

Description

一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法
技术领域
本发明涉及汽车仪表指针的位置检测方法。
背景技术
工业上对仪表盘的检测内容主要是检测各表指针的转角误差。而指针检测的准确性是仪表盘质量优劣的关键,其中又以指针转角的检测最为困难。
目前,我国仪表盘生产行业多数采用人工方式对指针仪表进行检定和校验,质检的误差大,效率很低,增加生产成本。运用数字图像处理技术实现汽车仪表指针的自动检测可以提高检测效率,降低检测误差,降低生产成本。
仪表检测***会向仪表盘给出控制指针转动的信号,指针转动后由相机对仪表盘图像进行采集,截取待检指针仪表部分。通过图像处理技术,识别出指针转角,与所给信号所代表的角度进行比较,来判断该角度的指针转动是否合格。
传统指针转角识别方法为剪影法。剪影法的主要步骤为:对两帧有角度偏差的图像做最小灰度相减,对指针进行阈值分割和细化,对图像进行Hough变换提取指针的直线信息,对两指针角度差进行计算。而现在指针转角的检测精度要求较高,在进行小角度检测时,指针如果过宽,会在剪影后被滤掉一部分面积,本来对称的指针会有形变,在进行指针细化后会与实际指向角度有较大误差,给直线拟合造成一定困难。
传统的基于刻度的对指针转角的检测算法,主要依据指针在刻度范围内所指的位置来识别转角。该算法对表盘上零点刻度的依赖性很高,当零点被干扰,也就是指针遮挡零点时,会在后续处理时造成刻度点缺失,导致刻度分布特征不准确。并且基于刻度的算法对刻度点的清晰性、可识别性要求很高,当刻度间隔过大导致可识别出的刻度点过少时,会导致图像经过极坐标变换后不能得到规整的刻度序列;
仪表盘在装配时如果产生旋转误差,基于刻度的对指针转角的检测算法不会检测到这部分误差,而只识别出指针相对于刻度的关系,但是仪表盘的装配仍然存在问题。
发明内容
本发明的目的是为了解决剪影法在进行指针小角度检测时,使得做差操作后的指针会产生形变,给直线拟合造成困难及基于刻度的指针转角的检测算法对表盘上零点刻度的依赖性很高,当零点受到干扰时,导致刻度分布特征不准确使得图像经过极坐标变换后不能得到规整的刻度序列以及传统方法不会检测到仪表盘在装配时产生的旋转误差的问题而提出的一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法。
上述的发明目的是通过以下技术方案实现的:
步骤一、利用相机采集的单帧灰度图像与模板图像进行旋转角度计算;
步骤二、对相机采集的单帧灰度图像首先进行图像灰度归一化再利用大津阈值对归一化后的单帧灰度图像进行二值化然后对单帧二值图像进行腐蚀操作;
步骤三、利用汽车仪表的刻度所在位置计算最小二乘圆并从圆心处对腐蚀操作后的单帧二值图像进行极坐标变换;
步骤四、极坐标变换后,对极坐标中的指针进行细化得到外接矩形信息并对图像进行Hough变换获得指针直线方程的参数;
步骤五、利用相机采集的单帧灰度图像的旋转角度和指针直线参数计算出表盘旋转后的指针机械角度;
步骤六、利用基于刻度的指针算法根据直线参数与刻度序列中所有刻度坐标的关系计算出指针指向的刻度值;
步骤七、利用步骤五获得的指针机械角度和步骤六计算出指针指向的刻度值,经过单位换算得出实际单位的值;即完成了一种基于机械角度和刻度识别的汽车仪表指针的位置检测。
发明效果:
本发明在进行指针小角度检测时,100%消除指针指向小角度时与实际指向角度的偏差,从而准确地进行直线参数的拟合。因为本发明采用单帧法,所以在计算过程中即使是小角度的偏转,也可求取指针转角。由于本发明对采集图像进行了旋转角度的计算,从而100%的消除了由于表盘安装或者检测时的放置偏差而导致的转角误差,并且本发明还对采集到的图像做初步的判断,根据计算出采集到图像的旋转角度过大,来说明仪表摆放出错或者表盘安装出错。
本发明准确的计算出最小二乘圆的方程和圆心坐标,清除了极坐标图像带来的偏差并且本发明为了降低对零刻度准确性的依赖对图像得到的刻度序列进行类似方差的判定使得图像经过极坐标变换后得到规整的刻度序列,并且本发明在零刻度信息获取失败时会采用机械角度作为输出结果,使得即便是存在刻度点过于细小或者排列过密为阈值分割加大难度,刻度可能会粘连在一起的情况也会准确的识别指针转角。
附图说明
图1是具体实施方式一中提出的一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法的流程图;
图2是实施例一中提出的算法的数据结构图;
图3为实施例一中提出的算法的主要接口函数;
图4是实施例一中提出的MatchTemplate函数流程图;
图5是实施例一中提出的FindMark函数流程图;
图6是实施例一中提出的GetLine函数流程图;
图7是实施例一中提出的CalculateAngle函数流程图;
图8是实施例一中提出的汽车仪表的转速表灰度图像;
图9是实施例一中腐蚀后的二值化图像;
图10是实施例一中提出的极坐标变换后的图像;
图11是实施例一中细化后的指针图像。
具体实施方式
具体实施方式一:本实施方式的一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法,具体是按照以下步骤制备的:
步骤一、利用相机采集的单帧灰度图像与模板图像进行旋转角度计算;
步骤二、对相机采集的单帧灰度图像首先进行图像灰度归一化再利用大津阈值对归一化后的单帧灰度图像进行二值化然后对单帧二值图像进行腐蚀操作;
步骤三、利用汽车仪表的刻度所在位置计算最小二乘圆并从圆心处对腐蚀操作后的单帧二值图像进行极坐标变换;
步骤四、极坐标变换后,对极坐标中的指针进行细化得到外接矩形信息并对图像进行Hough变换获得指针直线方程的参数;
步骤五、利用相机采集的单帧灰度图像的旋转角度和指针直线参数计算出表盘旋转后的指针机械角度;
步骤六、利用基于刻度的指针算法根据直线参数与刻度序列中所有刻度坐标的关系计算出指针指向的刻度值;所得刻度值更符合人们读取刻度值的形式,相对于机械角度来说,为更加直观的结果;
步骤七、利用步骤五获得的指针机械角度和步骤六计算出指针指向的刻度值,经过单位换算得出实际单位的值如图1;即完成了一种基于机械角度和刻度识别的汽车仪表指针的位置检测。
本实施方式效果:
本实施方式在进行指针小角度检测时,100%消除指针指向小角度时与实际指向角度的偏差,从而准确地进行直线参数的拟合。因为本实施方式采用单帧法,所以在计算过程中即使是小角度的偏转,也可求取指针转角。由于本实施方式对采集图像进行了旋转角度的计算,从而100%的消除了由于表盘安装或者检测时的放置偏差而导致的转角误差,并且本实施方式还对采集到的图像做初步的判断,根据计算出采集到图像的旋转角度过大,来说明仪表摆放出错或者表盘安装出错。
本实施方式准确的计算出最小二乘圆的方程和圆心坐标,清除了极坐标图像带来的偏差并且本实施方式为了降低对零刻度准确性的依赖对图像得到的刻度序列进行类似方差的判定使得图像经过极坐标变换后得到规整的刻度序列,并且本实施方式在零刻度信息获取失败时会采用机械角度作为输出结果,使得即便是存在刻度点过于细小或者排列过密为阈值分割加大难度,刻度可能会粘连在一起的情况也会准确的识别指针转角。
具体实施方式二:本实施方式与具体实施方式一不同的是:步骤一所述利用相机采集的单帧灰度图像与模板图像进行旋转角度计算过程为:
(1)选定模板图像,若模板图像旋转角度接近为0,将模板图像以正负1度为步进,其中,正负1度指代以模板图像中心为旋转中心的旋转角度;其中,模板图像为相机环境稳定并且待检测仪表摆放无偏差情况下采集到的;
(2)选定模板图像与采集单帧灰度图像进行匹配,模板图像的中心为旋转中心,模板图像旋转0度时与采集单帧灰度图像进行匹配,得到模板图像旋转0度时的匹配值;模板图像旋转1度形成新的模板图像,新的模板图像与采集图像进行匹配,得到模板图像旋转1度时的匹配值;如此循环,直至模板图像旋转角度达到正负30度时截止;
(3)比较所有的选定模板图像与采集单帧灰度图像匹配结果,找到最高的匹配值,检测最高的匹配值是否大于一个设定好的阈值;若小于这个阈值,图像内容不是算法所需要的仪表内容(比如图像采集出错,仪表摆放偏差过大);即使得到匹配值最高的角度,也不能认为找到仪表的旋转角度,则认为旋转角度识别失败,自动使用基于刻度识别的汽车仪表指针的位置检测方法;其中阈值是通过离线训练获取的匹配值;
(4)当找到的最高匹配值大于阈值,则对应的模板图像旋转的角度作为采集单帧灰度图像的旋转角度。其它步骤及参数与具体实施方式一相同。
具体实施方式三:本实施方式与具体实施方式一或二不同的是:步骤二所述对相机采集的单帧灰度图像首先进行图像灰度归一化再利用大津阈值对归一化后的单帧灰度图像进行二值化然后对单帧二值图像进行腐蚀操作的过程为:
1)对相机采集的单帧灰度图像灰度进行归一化:
设该图像灰度范围为[m,n],将其扩大到[0,255],按如下公式:
f(x,y)为某一点原始灰度,g(x,y)为归一化后该点灰度;
2)利用大津阈值对归一化后的单帧灰度图像进行二值化:
(1)计算图像的灰度直方图,使用Pi,i=0,1,2,……,255表示该直方图的各个分量,Pi为图像中第i个灰度值出现的概率,i为灰度值的个数;
(2)计算各阈值下的累积和 P ( k ) = Σ 0 k p i , k = 1,2 . . . . . . 254 ;
(3)计算各阈值下的累积均值 m ( k ) = Σ 0 k i p i , k = 1,2 , . . . . . . , 254 ;
(4)计算全局灰度均值
(5)计算各阈值下的类间方差 σ B 2 = [ m G P ( k ) - m ( k ) ] 2 P ( k ) [ 1 - P ( k ) ] , k = 1,2 , . . . . . . , 254 ;
(6)得到使得最大的k值,即为大津阈值k*,利用如下公式对图像进行二值化: g ( x , y ) = 255 , f ( x , y ) > k * 0 , f ( x , y ) ≤ k * f ( x , y ) 为某一点原始灰度,g(x,y)为二值化后的灰度;
3)对二值化的单帧灰度图像进行腐蚀操作:
得到的二值图像的所有黑点(即灰度值为0的点),将该黑点的上下左右四邻域内的点变为黑点(灰度值变成0);因为腐蚀而变为黑点的白点不需要再次腐蚀,从而减少汽车仪表刻度点之间及汽车仪表指针与汽车仪表刻度点之间的多余相连点。其它步骤及参数与具体实施方式一或二相同。
具体实施方式四:本实施方式与具体实施方式一至三之一不同的是:步骤三利用汽车仪表的刻度所在位置计算最小二乘圆并从圆心处对腐蚀操作后的单帧二值图像进行极坐标变换的过程分为三个步骤:
1)、对二值图像进行连通域处理,利用Canny算子获得的边界求出各连通域的外接矩形的位置和长宽信息,并将连通域的外接矩形的位置和长宽信息作为特征信息,利用K-均值(K-mean)方法对所有外接矩形进行聚类分析,通过设定长宽和面积参数阈值确定汽车仪表上的刻度点,其中长宽和面积参数阈值为当相机环境相对稳定时通过离线训练得出的;
2)、利用1)得到的刻度点,计算最小二乘圆得出最小二乘圆方程:
(1)椭圆方程为Ax2+Bxy+Cy2+Dx+Ey+F=0;
(2)在所有刻度点中任意选取6个点,分别代入椭圆方程中求取代数距离;
(3)令目标函数 f ( A , B , C , D , E , F ) = Σ i = 1 6 ( Ax i 2 + Bx i y i + Cy i 2 + Dx i + Ey i + F ) 2 , 求取的解,得到使f最小的方程系数组合,则求得椭圆方程;
(4)遍历所有刻度点,分别求各个刻度点到椭圆的代数距离,若刻度点到椭圆的代数距离在一个设定阈值以内(该阈值为离线训练得出),则刻度点是匹配点;最后统计椭圆中匹配点总数Pi
(5)再在所有刻度点中任选6个点,重复3)4)步骤,直至所有刻度点的组合都被计算过为止,总循环次数为n为刻度点总数;选出最大的Pi,最大的Pi对应的方程为最小二乘圆方程;
3)通过最小二乘圆方程计算出最小二乘圆的圆心坐标cpt.x和cpt.y,cpt为最小二乘圆的圆心点,从该圆心处对二值化后的单帧二值图像进行极坐标变换。其它步骤及参数与具体实施方式一至三之一相同。
具体实施方式五:本实施方式与具体实施方式一至四之一不同的是:步骤四所述极坐标变换后,对极坐标中的指针进行细化得到外接矩形信息并对图像进行Hough变换获得指针直线方程的参数的主要过程为:
(1)利用Deutsch细化算法将极坐标变换后的图像全部进行细化,利用3*3的模板遍历图像,计算每个像素的八邻域上的0-1的穿越次数P和非0相邻点的数目N,当P和N的数目满足Deutsch算法中的条件时,将该点删除,反复执行上述操作直至没有可以删除的点,其中极坐标变换后的图像全部进行细化,内容包含对噪声、刻度点及指针的细化;
(2)利用Canny算子得到细化后的图像各连通域的边界,对所得各连通域的边界进行连通域处理,得到细化后的图像外接矩形边界信息,通过外接矩形长宽参数和面积参数过滤掉噪声和刻度点,找出指针部分并截取中间一部分留下的唯一连通域就是指针部分;其中外接矩形边界信息是长宽参数和面积参数;一般情况下,指针的连通域的长度要远远大于宽度,通过在离线情况下训练出长宽比的阈值,找出指针部分,考虑到指针的头尾处会有其他干扰噪声,所以根据仪表的不同情况截取中间一部分指针,该部分就是后续处理所用的指针部分;
(3)最后对得到的指针进行霍夫Hough变换,得到指针直线方程的参数。其它步骤及参数与具体实施方式一至四之一相同。
具体实施方式六:本实施方式与具体实施方式一至五之一不同的是:步骤五利用旋转角度和指针直线参数计算出表盘旋转后的指针机械角度的主要过程为:
(1)根据步骤四中获得的指针外界矩形信息和直线参数计算细化后指针的平均纵坐标yave,作为亚像素信息,当图像高度为height时,可得指针在原仪表图像中的角度为该角度再加上步骤一求出的旋转角度就得到指针的机械角度(由于像素位置只能是整数,但是直线所指位置可能是几点几个像素,为了精确表示直线的指向,细化后指针平均纵坐标为小数形式,小数形式称为亚像素,而不是作为亚像素);
(2)当模板图像缺失,或者旋转角度求取失败时,未利用步骤一求出旋转角度,则转为步骤六的基于刻度的指针算法根据直线参数与刻度序列中所有刻度坐标的关系计算出指针指向的刻度值;
(3)若步骤一中已经求出旋转角度,则将步骤四求出的平均纵坐标与步骤一获得的旋转角度相加,得到考虑表盘旋转后的指针机械角度。其它步骤及参数与具体实施方式一至五之一相同。
具体实施方式七:本实施方式与具体实施方式一至六之一不同的是:步骤六所述利用基于刻度的指针算法根据直线参数与刻度序列中所有刻度坐标的关系计算出指针指向的刻度值的主要过程为:
(1)将步骤四中获得的连通域外接矩形信息,通过设定矩形位置阈值和长宽阈值,逐个考察所有外接矩形,当其位置和长宽都满足设定阈值要求,则认为该矩形对应的连通域是汽车仪表刻度点,当考察完所有外接矩形后,则得到汽车仪表所有的刻度点,进而计算得汽车仪表所有刻度中心坐标信息;
(2)将所有刻度中心坐标信息中的中心纵坐标信息依次排序,获得坐标序列,其中坐标序列包含n个坐标,i=1,2,3.....n;纵坐标最小的即为零刻度为坐标序列第i=1个坐标;
(3)计算第1个坐标零刻度与第2个坐标刻度的中心纵坐标差值p1,和其余相邻刻度点纵坐标差,将纵坐标差值p1逐个与其余纵坐标差进行相减再平方,最后求和:
公式为D为和值,ki为第i个纵坐标;
(4)将D与给定的阈值进行比较,若所求D大于离线训练得出结果的阈值,则视为刻度序列识别失败,则采用步骤五所得指针机械角度作为结果,若未利用步骤一求出旋转角度,则机械角度也求取失败,则判定本次基于机械角度和刻度识别的汽车仪表指针的位置检测识别失败;其中阈值为对于不同的仪表需要通过离线训练得出结果;
(5)若所求D小于上述阈值,则刻度序列有效,通过步骤四中获得的直线参数与本步骤中获得的刻度序列信息计算得到指针的刻度值的过程为:
首先利用直线参数可得知该直线方程为:
s=xcosθ+ysinθ
其中s和θ为霍夫变换的结果;
然后对图像中所有刻度中心的横坐标相加再取平均值,记为Xave;将Xave代入直线方程中,得到直线在Xave横坐标下的纵坐标值,即为指针的刻度值。其它步骤及参数与具体实施方式一至六之一相同。
具体实施方式八:本实施方式与具体实施方式一至七之一不同的是:步骤七所述利用步骤五获得的指针机械角度和步骤六计算出指针指向的刻度值,经过单位换算得出实际单位的值主要过程为:
利用步骤五获得的指针机械角度和步骤六计算出指向的刻度值,经过单位换算得到对应的两个实际单位的值,两个实际单位的值的差值如果满足精度要求,则指针转角识别成功,并且步骤六获得的刻度值换算出的实际单位的值为最终结果;其中精度要求指工程项目中所要求的指针识别误差精度要求;实际单位的值需要根据相应仪表将机械角度和刻度换算成转速、车速等具有实际单位的值。其它步骤及参数与具体实施方式一至七之一相同。
采用以下实施例验证本发明的有益效果:
实施例一
步骤一、输入图像为一张旋转一定角度的汽车仪表的转速表灰度图像如图8所示,模板为近似无旋转角度的图像,两图像尺寸均为460×350;结构体match_data为图像矫正的数据结构,其中angle为存储旋转角度的变量,两幅图像会被传入MatchTemplate(IplImage*,IplImage*)这个函数中如图4所示,返回match_data结构体,那么我们就保留angle数据为计算机械角度时使用,此时angle=2.03°,abflag=TRUE,angle_center=(230,175),x_change=y_change=0,说明以模板图像中心为旋转中心,且无xy方向偏移时,输入图像的旋转角度为2.03°;
步骤二、_angledata为指针转角结果的数据结构,angle_jixie存储机械角度,angle_kedu存储刻度值,ratio存储每格刻度占用的角度;输入图像和angle变量需要被传入到GetAngle(IplImage*,float)函数中,在该函数中,会完成指针转角识别的全部工作,算法经过
1)对相机采集的单帧灰度图像灰度进行归一化:
该图像灰度范围为[0,182],将其扩大到[0,255],按如下公式:
f(x,y)为某一点原始灰度,g(x,y)为归一化后该点灰度;
2)利用大津阈值对归一化后的单帧灰度图像进行二值化:
(1)计算图像的灰度直方图,使用pi,k=0,1,2,……,255表示该直方图的各个分量;
(2)计算各阈值下的累积和 P ( k ) = Σ 0 k p i , k = 1,2 . . . . . . 254 ;
(3)计算各阈值下的累积均值 m ( k ) = Σ 0 k i p i , k = 1,2 , . . . . . . , 254 ;
(4)计算全局灰度均值
(5)计算各阈值下的类间方差 σ B 2 = [ m G P ( k ) - m ( k ) ] 2 P ( k ) [ 1 - P ( k ) ] , k = 1,2 , . . . . . . , 254 ;
(6)得到使得最大的k值,即为大津阈值k*,本例中得k*=12,利用如下公式对图像进行二值化
g ( x , y ) = 255 , f ( x , y ) > k * 0 , f ( x , y ) ≤ k * , f ( x , y ) 为某一点原始灰度,g(x,y)为二值化后的灰度;
3)对二值化的单帧灰度图像进行腐蚀操作:
得到的二值图像的所有黑点(即灰度值为0的点),将该黑点的上下左右四邻域内的点变为黑点(灰度值变成0);因为腐蚀而变为黑点的白点不需要再进行腐蚀操作;从而减少汽车仪表刻度点之间及汽车仪表指针与汽车仪表刻度点之间的多余相连点如图9所示;算法首先对图像进行灰度归一化、大津阈值法二值化以及腐蚀操作,传入到GetAngle(IplImage*,float)函数最终会返回_angledata结构体;
步骤三、结构体_markdata为刻度点的数据结构,其中polarhtmag=3和polarRmag=250为极坐标变换时所用的常量;GetAngle函数会调用FindMark(IplImage*,_markdata)函数来寻找刻度点如图5,并获得它们的信息,存储在_markdata结构体中,本例中cpt=(273,271),averr=210为刻度盘的平均半径;成功后,GetAngle函数会以cpt为中心,对图像进行极坐标变换如图10所示;
步骤四、GetAngle函数会继续调用GetLine(IplImage*,float*)函数来获取指针的直线参数,在GetLine函数中,首先对图像进行细化如图11所示,细化后GetLine函数会截取指针的一部分图像进行霍夫变换,得到拟合后的直线参数如图6,本例中截取指针的1/4到3/4的部分进行霍夫变换,得到指针参数θ=91.82,s=492.56;
步骤五、最后GetAngle函数会调用CalculateAngle(float*,_markdata,match_data,int),将直线参数、刻度点信息和旋转角度信息传入其中,CalculateAngle函数会计算指针的机械角度,本例中得出机械角度为angle_jixie=179.82°;并且获得极坐标下的刻度序列,得出_markdata结构体中的其他变量的值,其中averdist=17.5为刻度序列的平均间隔,anglevec为刻度序列对应的转角序列,markvec为刻度序列的刻度纵坐标,markveclen=37为刻度序列长度,最后计算出指针所指刻度值为angle_kedu=19.8(格),最后返回指针结果的数据结构;
步骤六、仪表检测中基于图像处理的结合指针机械角度和刻度值的指针转角的准确识别方法,在模板样图缺失的情况下,不需调用MatchTemplate函数,直接调用GetAngle函数,完成后续操作,可得到基于刻度的指针转角的CalculateAngle函数流程图如图7所示;
仪表检测中基于图像处理的结合指针机械角度和刻度值的指针转角的准确识别方法,在刻度信息不明显时,如刻度过于稀疏或者刻度过于细小紧凑,可以按照步骤一到步骤五进行,算法会返回基于机械角度的转角进行计算,当对输入图像进行改动后,将刻度遮挡住一部分,算法返回的机械角度仍为angle_jixie=179.82°;算法的数据结构图如图2所示;
仪表检测中基于图像处理的结合机械角度和刻度值的指针转角识别的方法,给它输入一帧灰度图像,经过图像旋转角度的计算、预处理和二值化、极坐标变换、直线拟合来得到指针的机械转角和刻度值;
图像旋转角度的计算需要给定模板图像,若旋转角度计算失败,则在结果处理时只采用基于刻度的指针算法;
当同时求出机械转角和刻度值,并且符合精度要求,则采用刻度值换算出的结果作为输出结果;
本实施例的目的是为了解决(1)剪影法对两帧图像进行做差后保留指针区域中点亮的指示灯、文字和图案对之后的处理造成一定的干扰;在进行指针小角度检测时,做差操作后的指针会产生形变,给直线拟合造成困难;当图像在采集过程中存在畸变时,利用剪影法所识别出的指针转角与实际角度有偏差;(2)基于刻度的指针转角的检测算法对表盘上零点刻度的依赖性很高,当零点受到干扰时,导致刻度分布特征不准确,图像经过极坐标变换后不能得到规整的刻度序列从而不能得出正确刻度指向;从而导致仪表检测中指针的剪影法和基于刻度的指针转角的检测算法误差大、稳定性不高(3)剪影法与基于刻度的指针算法结合,会增加算法复杂性;及仪表盘上的其他干扰物会在刻度点识别过程中被误认为刻度点,导致刻度分布特征不准确;本实施例一中算法的主要接口函数如图3所示;
本实施例由于避免了剪影法中的两帧图像做差的步骤,所以得到的指针不会有缺失,在进行指针细化时可以更好地获得指针骨架,在进行指针小角度检测时,会消除指针小角度与实际指向角度偏差,从而可以得到更好地进行直线参数的拟合;也由于采用单帧法,即使是小角度的偏转,也可以用本算法来求取指针转角;采集到图像后,对采集图像进行了旋转角度的计算,在机械角度计算时可以避免由于表盘安装或者检测时的放置偏差而导致的转角误差,同时,旋转角度的计算也可以对采集到的图像做初步的判断,如果旋转角度过大,则说明仪表摆放出错或者表盘安装出错;对二值图像进行了连通域处理,通过处理器外接矩形的长宽、面积、位置的参数,可以过滤掉指示灯、文字、图案等噪声干扰;采用了基于刻度信息的指针识别方法,指针的刻度信息是在刻度序列上插值得出的,可以避免由于镜头畸变导致的机械角度上的误差,同时基于刻度信息的指针转角识别方法也是人观察仪表的更准确的复现;考虑到基于刻度信息的指针识别方法过于依赖零刻度的准确性,所以在得到刻度序列后对序列进行类似方差的判定;零刻度信息获取失败的主要原因有:刻度点过少,致使最小二乘圆和圆心的偏差较大,从而极坐标图像偏差较大,最终导致刻度不能整齐的排列;刻度点过于细小或者排列过密,为阈值分割加大难度,刻度可能会粘连在一起,导致在判定刻度序列可行性时判定失败;本算法中若零刻度信息获取失败,则采用机械角度作为输出结果;本算法利用了极坐标变换,将转角信息转换为纵坐标差信息,在核心识别部分,即机械角度信息和刻度值的计算部分,可以让两个识别算法在同一幅处理结果图像中计算,两种方法的结合有严格的配合机制,在一种算法失败时会使用另一种算法的结果,在综合两种算法优势的同时也简化了算法的复杂性。

Claims (4)

1.一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法,其特征在于一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法具体是按照以下步骤进行的:
步骤一、利用相机采集的单帧灰度图像与模板图像进行旋转角度计算;
步骤二、对相机采集的单帧灰度图像首先进行图像灰度归一化再利用大津阈值对归一化后的单帧灰度图像进行二值化然后对单帧二值图像进行腐蚀操作;
步骤三、利用汽车仪表的刻度所在位置计算最小二乘圆并从圆心处对腐蚀操作后的单帧二值图像进行极坐标变换;
步骤四、极坐标变换后,对极坐标中的指针进行细化得到外接矩形信息并对图像进行Hough变换获得指针直线方程的参数;
步骤五、利用相机采集的单帧灰度图像的旋转角度和指针直线参数计算出表盘旋转后的指针机械角度;
步骤六、利用基于刻度的指针算法根据直线参数与刻度序列中所有刻度坐标的关系计算出指针指向的刻度值;
步骤七、利用步骤五获得的指针机械角度和步骤六计算出指针指向的刻度值,经过单位换算得出实际单位的值;
步骤一所述利用相机采集的单帧灰度图像与模板图像进行旋转角度计算过程为:
(1)选定模板图像,若模板图像旋转角度接近为0,将模板图像以正负1度为步进,其中,正负1度指代以模板图像中心为旋转中心的旋转角度;
(2)选定模板图像与采集单帧灰度图像进行匹配,模板图像的中心为旋转中心,模板图像旋转0度时与采集单帧灰度图像进行匹配,得到模板图像旋转0度时的匹配值;模板图像旋转1度形成新的模板图像,新的模板图像与采集图像进行匹配,得到模板图像旋转1度时的匹配值;如此循环,直至模板图像旋转角度达到正负30度时截止;
(3)比较所有的选定模板图像与采集单帧灰度图像匹配结果,找到最高的匹配值,检测最高的匹配值是否大于一个设定好的阈值;若小于这个阈值,则旋转角度识别失败,自动使用基于刻度识别的汽车仪表指针的位置检测方法;其中阈值是通过离线训练获取的匹配值;
(4)当找到的最高匹配值大于阈值,则对应的模板图像旋转的角度作为采集单帧灰度图像的旋转角度;
步骤二所述对相机采集的单帧灰度图像首先进行图像灰度归一化再利用大津阈值对归一化后的单帧灰度图像进行二值化然后对单帧二值图像进行腐蚀操作的过程为:
1)对相机采集的单帧灰度图像灰度进行归一化:
设该图像灰度范围为[m,n],将其扩大到[0,255],按如下公式:
f(x,y)为某一点原始灰度,g(x,y)为归一化后该点灰度;
2)利用大津阈值对归一化后的单帧灰度图像进行二值化:
(1)计算图像的灰度直方图,使用Pi,i=0,1,2,……,255表示该直方图的各个分量,Pi为图像中第i个灰度值出现的概率,i为灰度值的个数;
(2)计算各阈值下的累积和
(3)计算各阈值下的累积均值
(4)计算全局灰度均值
(5)计算各阈值下的类间方差
(6)得到使得最大的k值,即为大津阈值k*,利用如下公式对图像进行二值化:
为某一点原始灰度,g(x,y)为二值化后的灰度;
3)对二值化的单帧灰度图像进行腐蚀操作:
得到的二值图像的所有黑点,将该黑点的上下左右四邻域内的点变为黑点;即完成了一种基于机械角度和刻度识别的汽车仪表指针的位置检测;
步骤六所述利用基于刻度的指针算法根据直线参数与刻度序列中所有刻度坐标的关系计算出指针指向的刻度值的主要过程为:
(1)将步骤四中获得的连通域外接矩形信息,通过设定矩形位置阈值和长宽阈值,逐个考察所有外接矩形,当其位置和长宽都满足设定阈值要求,则认为该矩形对应的连通域是汽车仪表刻度点,当考察完所有外接矩形后,则得到汽车仪表所有的刻度点,进而计算得汽车仪表所有刻度中心坐标信息;
(2)将所有刻度中心坐标信息中的中心纵坐标信息依次排序,获得坐标序列,其中坐标序列包含n个坐标,i=1,2,3.....n;纵坐标最小的即为零刻度为坐标序列第i=1个坐标;
(3)计算第1个坐标零刻度与第2个坐标刻度的中心纵坐标差值p1,和其余相邻刻度点纵坐标差,将纵坐标差值p1逐个与其余纵坐标差进行相减再平方,最后求和:
公式为D为和值,ki为第i个纵坐标;
(4)将D与给定的阈值进行比较,若所求D大于离线训练得出结果的阈值,则视为刻度序列识别失败,则采用步骤五所得指针机械角度作为结果,若未利用步骤一求出旋转角度,则机械角度也求取失败,则判定本次基于机械角度和刻度识别的汽车仪表指针的位置检测识别失败;其中阈值为对于不同的仪表需要通过离线训练得出结果;
(5)若所求D小于上述阈值,则刻度序列有效,通过步骤四中获得的直线参数与本步骤中获得的刻度序列信息计算得到指针的刻度值的过程为:
首先利用直线参数可得知该直线方程为:
s=xcosθ+ysinθ
其中s和θ为霍夫变换的结果;
然后对图像中所有刻度中心的横坐标相加再取平均值,记为Xave;将Xave代入直线方程中,得到直线在Xave横坐标下的纵坐标值,即为指针的刻度值;
步骤七所述利用步骤五获得的指针机械角度和步骤六计算出指针指向的刻度值,经过单位换算得出实际单位的值主要过程为:
利用步骤五获得的指针机械角度和步骤六计算出指向的刻度值,经过单位换算得到汽车仪表对应的两个实际单位的值,两个实际单位的值的差值如果满足精度要求,则指针转角识别成功,并且步骤六获得的刻度值换算出实际单位的值为最终结果;其中精度要求指工程项目中所要求的指针识别误差精度要求。
2.根据权利要求1所述一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法,其特征在于步骤三利用汽车仪表的刻度所在位置计算最小二乘圆并从圆心处对腐蚀操作后的单帧二值图像进行极坐标变换的过程分为三个步骤:
1)、对二值图像进行连通域处理,利用Canny算子获得的边界求出各连通域的外接矩形的位置和长宽信息,并将连通域的外接矩形的位置和长宽信息作为特征信息,利用K-均值方法对所有外接矩形进行聚类分析,通过设定长宽和面积参数阈值确定汽车仪表上的刻度点,其中长宽和面积参数阈值为当相机环境相对稳定时通过离线训练得出的;
2)、利用1)得到的刻度点,计算最小二乘圆得出最小二乘圆方程:
(1)椭圆方程为Ax2+Bxy+Cy2+Dx+Ey+F=0;
(2)在所有刻度点中任意选取6个点,分别代入椭圆方程中求取代数距离;
(3)令目标函数求取的解,得到使f最小的方程系数组合,则求得椭圆方程;
(4)遍历所有刻度点,分别求各个刻度点到椭圆的代数距离,若刻度点到椭圆的代数距离在一个设定阈值以内,则刻度点是匹配点;最后统计椭圆中匹配点总数Pi
(5)再在所有刻度点中任选6个点,重复3)4)步骤,直至所有刻度点的组合都被计算过为止,总循环次数为,n为刻度点总数;选出最大的Pi,最大的Pi对应的方程为最小二乘圆方程;
3)通过最小二乘圆方程计算出最小二乘圆的圆心坐标cpt.x和cpt.y,cpt为最小二乘圆的圆心点,从该圆心处对二值化后的单帧二值图像进行极坐标变换。
3.根据权利要求1所述一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法,其特征在于步骤四所述极坐标变换后,对极坐标中的指针进行细化得到外接矩形信息并对图像进行Hough变换获得指针直线方程的参数的主要过程为:
(1)利用Deutsch细化算法将极坐标变换后的图像全部进行细化,利用3*3的模板遍历图像,计算每个像素的八邻域上的0-1的穿越次数P和非0相邻点的数目N,当P和N的数目满足Deutsch算法中的条件时,将该点删除,反复执行上述操作直至没有可以删除的点,其中极坐标变换后的图像全部进行细化,内容包含对噪声、刻度点及指针的细化;
(2)利用Canny算子得到细化后的图像各连通域的边界,对所得各连通域的边界进行连通域处理,得到细化后的图像外接矩形边界信息,通过外接矩形长宽参数和面积参数过滤掉噪声和刻度点,找出指针部分并截取中间一部分留下的唯一连通域就是指针部分;其中外接矩形边界信息是长宽参数和面积参数;
(3)最后对得到的指针进行霍夫Hough变换,得到指针直线方程的参数。
4.根据权利要求1所述一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法,其特征在于步骤五利用旋转角度和指针直线参数计算出表盘旋转后的指针机械角度的主要过程为:
(1)根据步骤四中获得的指针外界矩形信息和直线参数计算细化后指针的平均纵坐标yave,作为亚像素信息,当图像高度为height时,可得指针在原仪表图像中的角度为该角度再加上步骤一求出的旋转角度就得到指针的机械角度;
(2)当模板图像缺失,或者旋转角度求取失败时,未利用步骤一求出旋转角度,则转为步骤六的基于刻度的指针算法根据直线参数与刻度序列中所有刻度坐标的关系计算出指针指向的刻度值;
(3)若步骤一中已经求出旋转角度,则将步骤四求出的平均纵坐标与步骤一获得的旋转角度相加,得到考虑表盘旋转后的指针机械角度。
CN201410037951.6A 2014-01-26 2014-01-26 一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法 Active CN103759758B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410037951.6A CN103759758B (zh) 2014-01-26 2014-01-26 一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410037951.6A CN103759758B (zh) 2014-01-26 2014-01-26 一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法

Publications (2)

Publication Number Publication Date
CN103759758A CN103759758A (zh) 2014-04-30
CN103759758B true CN103759758B (zh) 2016-02-17

Family

ID=50527034

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410037951.6A Active CN103759758B (zh) 2014-01-26 2014-01-26 一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法

Country Status (1)

Country Link
CN (1) CN103759758B (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105091922B (zh) * 2014-05-04 2019-09-20 广东工业大学 一种基于虚拟表盘的指针表读数识别方法
CN103994786B (zh) * 2014-06-04 2017-03-22 湖南大学 圆弧标尺线指针式仪表刻度的图像检测方法
CN104019843B (zh) * 2014-06-16 2016-08-24 哈尔滨工业大学 基于图像处理和元编程技术的汽车仪表指针零位自动矫正装置及方法
CN105868762A (zh) * 2016-03-28 2016-08-17 国网浙江省电力公司宁波供电公司 一种sf6表的读数方法及***
CN105868752A (zh) * 2016-03-28 2016-08-17 国网浙江省电力公司宁波供电公司 一种放电计数器的读数方法及***
CN105868763A (zh) * 2016-03-28 2016-08-17 国网浙江省电力公司宁波供电公司 一种油位表的读数方法及***
CN105868764A (zh) * 2016-03-28 2016-08-17 国网浙江省电力公司宁波供电公司 一种电压表的读数方法及***
CN105893938A (zh) * 2016-03-28 2016-08-24 国网浙江省电力公司宁波供电公司 一种油温表的读数方法及***
CN105893943B (zh) * 2016-03-28 2019-05-07 国网浙江省电力公司宁波供电公司 一种油位检测方法及***
CN105783970B (zh) * 2016-04-08 2019-03-29 延锋伟世通电子科技(南京)有限公司 一种汽车仪表指针的数字化识别方法
CN106737674B (zh) * 2016-12-23 2017-11-28 西安交通大学 仪表盘非线性刻度视觉检测方法及画写***装置
CN107038447A (zh) * 2017-04-26 2017-08-11 大连理工大学 一种基于机器视觉的指针式仪表识别方法
CN106969725B (zh) * 2017-05-12 2023-11-10 西南交通大学 道砟颗粒的角度调整设备及其多角度二维图像的测量装置
CN108304840B (zh) * 2017-08-31 2022-11-11 腾讯科技(深圳)有限公司 一种图像数据处理方法以及装置
CN107590498B (zh) * 2017-09-27 2020-09-01 哈尔滨工业大学 一种基于字符分割级联二分类器的自适应汽车仪表检测方法
CN108509845B (zh) * 2018-02-08 2020-06-23 杭州蓝雪科技有限公司 基于特征拟合的变电站仪表设备巡检的视觉检测方法
JP6609345B2 (ja) * 2018-04-27 2019-11-20 株式会社東芝 読取システム、読取方法、プログラム、及び記憶媒体
CN109086763B (zh) * 2018-07-23 2021-11-26 国网辽宁省电力有限公司信息通信分公司 一种指针式仪表读取方法及装置
CN109146806A (zh) * 2018-07-29 2019-01-04 国网上海市电力公司 在电力远程监控中基于阴影消除优化的仪表指针位置检测识别方法
CN110245654B (zh) * 2018-11-20 2024-06-07 浙江大华技术股份有限公司 指针读数识别方法及装置、计算机装置及可读存储介质
CN109949330B (zh) * 2019-03-26 2023-03-31 中国计量大学 一种汽车表盘指针的快速并行细化方法
CN110363202B (zh) * 2019-07-23 2020-06-19 深圳中科捷飞科技有限公司 指针式仪表数值读取方法及计算机终端
CN110852213B (zh) * 2019-10-30 2023-12-12 天津大学 基于模版匹配的指针式仪表多情况自动化读数方法
CN111814740B (zh) * 2020-07-28 2024-03-26 南方电网数字电网研究院有限公司 指针仪表读数的识别方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN103759758A (zh) 2014-04-30

Similar Documents

Publication Publication Date Title
CN103759758B (zh) 一种基于机械角度和刻度识别的汽车仪表指针的位置检测方法
CN107590498B (zh) 一种基于字符分割级联二分类器的自适应汽车仪表检测方法
CN112818988B (zh) 一种指针式仪表自动识别读数方法及***
CN110580480B (zh) 基于图像处理的表计读数识别方法
CN102914545B (zh) 一种基于计算机视觉的齿轮缺陷检测方法及***
CN106651828B (zh) 一种工业小尺度运动模糊成像条件下的产品尺寸亚像素测量方法
CN106529559A (zh) 一种指针式圆形多仪表盘实时读数识别方法
CN104990926A (zh) 一种基于视觉的tr元件定位和缺陷检测方法
CN105303168A (zh) 一种多视角的指针式仪表识别方法和装置
CN111507186B (zh) 一种变电站指针式仪表读数识别方法
CN104197900A (zh) 一种汽车仪表指针刻度识别方法
CN106485710A (zh) 一种元件错件检测方法和装置
CN112036409A (zh) 一种液位计的读数识别方法及装置
CN111337512B (zh) 用于aoi缺陷检测的缺陷提取方法
CN110991233B (zh) 指针式压力表的自动读数方法
CN116958983A (zh) 一种基于机器视觉的指针式压力表自动校验仪示值读数方法
CN116612461A (zh) 一种基于目标检测的指针式仪表全过程自动读数方法
CN114581915A (zh) 一种噪声鲁棒的多类别表盘指针读数识别方法和装置
CN113591875B (zh) 一种高精度指针式仪表识别方法
Yi et al. A clustering-based algorithm for automatic detection of automobile dashboard
CN109801428A (zh) 纸币边缘直线的检测方法、检测装置及终端
CN115331193A (zh) 一种车位识别方法、识别***、电子设备及存储介质
CN114529803A (zh) 一种指针仪表识别增强检测方法
CN114037993A (zh) 变电站指针仪表读数方法、装置、存储介质以及电子设备
CN113191351A (zh) 数字电表的示数识别方法及装置、模型训练方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant