1.一种仪表指针识别的检测算法,其特征在于,具体包括如下步骤:
步骤1:采集待测仪表的彩色图像I;计算机读取待测仪表的彩色图像I;
步骤2:对彩色图像I进行灰度化处理,得到灰度图像I1;
步骤3:对灰度图像I1进行裁剪,得到裁剪图像I2;
步骤4:对裁剪图像I2进行二值化处理,得到二值化处理后的图像I3;
步骤5:对二值化处理后的图像I3进行指针查找,求出指针偏转角度d,提取指针图像B1;
步骤6:由直线拟合求出起始刻度线的斜率k,根据步骤5中的指针偏转角度d以及斜率k得到指针的读数;返回步骤1。
2.如权利要求1所述的仪表指针识别的检测算法,其特征在于,所述步骤2中对彩色图像I进行灰度化采用分量法、最大值法、平均值法或者加权平均法。
3.如权利要求1所述的仪表指针识别的检测算法,其特征在于,所述步骤3中对灰度图像I1进行裁剪得到裁剪图像I2,具体包括如下步骤:
1)设灰度图像I1上的点的位置记为(i,j),1≤i≤a,1≤j≤b,其中a,b为灰度图像I1的像素点矩阵的总行数与总列数;
2)如果灰度图I1上的任一像素点到仪表圆心的距离不小于仪表的外径,则令该像素点的灰度值为255,所述仪表的外径是指仪表标有刻度的环状区域的外圆半径;
3)如果灰度图I1上的任一像素点到仪表圆心的距离小于等于仪表的内径,则令该该像素点的灰度值为255,所述仪表的内径指仪表标有刻度的环状区域的内圆半径;
4)如果灰度图I1上的任一像素点到仪表圆心的距离在内径和外径之间,则该元素的灰度值保持不变;得到裁剪图像I2。
4.如权利要求1所述的仪表指针识别的检测算法,其特征在于,所述步骤4中对裁剪图像I2进行二值化处理具体包括如下步骤:
1)计算初始阈值th=(tmin+tmax)/2;其中,tmax和tmin是裁剪图像I2像素点的最大灰度值和最小灰度值。
2)将I2图像分割为灰度值大于初始阈值th的图像区域G1和灰度值小于等于初始阈值th的图像区域G2。
3)分别计算图像区域G1和图像区域G2包含的像素的灰度均值u1和u2。
4)计算新的阈值th=(u1+u2)/2;
5)重复步骤2)、3)、4),直到连续两次计算得到的阈值th的差值的绝对值小于1;
6)如果裁剪图像I2上任意像素点的灰度值大于步骤5最终得到的阈值th,则给该像素点的灰度值赋值255;否则赋值0,得到二值化处理后的图像I3。
5.如权利要求1所述的仪表指针识别的检测算法,其特征在于,所述步骤5的对二值化处理后的图像I3进行指针查找,求出指针偏转角度d,提取指针图像B1具体包括如下步骤:
1)首先将二值化处理后的图像I3中的仪表表盘等分成400等份,每一份为一个圆心角极小的扇形,这些扇形均可近似成线,扫描从以表盘的中心为原点的x轴的正方向开始。
2)在仪表表盘部分找出h1到h2之间黑色像素点最多的一个扇形;其中,h1代表仪表标有刻度的环状区域的外圆半径,h2代表仪表标有刻度的环状区域的内圆半径;具体操作如下:首先逆时针寻找,设点(x,y)是逆时针旋转到某一个扇形初始位置时位于h1和h2之间的点,其坐标x=x0+r*cos(d1),y=y0-r*sin(d1),其中,r为该点所在位置到仪表表盘中心的距离,它是以h1为初始值,以步长1扫描,以h2为结束值的一变化值;d1为所检测的扇形的初始位置相对于x轴的正方向的逆时针旋转角度,从水平方向开始,以0.005*pi的步长扫描,到2*pi结束;x0、y0分别为仪表中心的横坐标和纵坐标;
3)对于步骤2)中的每一步所到达的扇形区域,判断不同r值对应的像素点是否为黑色像素点,如果是,则认为该像素点为要找的像素点,将其对应的扇形区域中的黑色像素点个数sum加1;如此逆时针旋转一周,把每个扇形区域的黑色像素点个数分别赋给矩阵A1,然后寻找矩阵A1中最大元素对应的扇形位置,矩阵A1中的列序号col1反映该扇形区域在仪表中的位置,然后根据序号col1计算角度d3=2*pi/400*col1,400表示仪表等分的份数;
col1为A1中最大元素对应的列序号;d3为逆时针扫描得到的指针角度;
4)按照步骤2)和步骤3)相同的方式,从x轴正方向开始,顺时针旋转到指针位置得到角度d4,计算顺时针查找出的指针的角度d5=2π-d4;然后计算角度d3和角度d5的平均值作为最终的指针角度d;
5)定义一个全0图像矩阵B1,设(i,j)为二值化图像I3上的任一像素点的位置,将到圆心的距离大于外径h1和小于内径h2的像素点的灰度值赋值255。然后将指针角度d对应的指针位置上的所有像素点的灰度值赋值255,即得指针图像B1。
6.如权利要求1所述的仪表指针识别的检测算法,其特征在于,所述步骤6中指针读数的算法具体包括如下步骤:
1)已知起始刻度线上的某点坐标与仪表表盘圆心坐标,将它们进行直线拟合求出起始刻度线的斜率,由该斜率算出其倾斜角Q;
2)根据指针角度d得出指针位于扫描的扇形区域序号col;
3)若0<=col<300,则指针读数y=w+(pi-d+Q)*D;若300<=col<400,则指针读数y=w+(pi+Q+2*pi-d)*D,其中,d为指针的角度;D为仪表的每一扇形代表的读数,D=0.2115;
w为起始刻度线的值。