1.一种利用计算机视觉实现双指针仪表自动读数的方法,其特征在于,包括以下步骤:
S1:定义三维数组;
S2:基于待读数仪表表盘的边界,确定待读数仪表表盘边界的直线方程或曲线方程,进而确定待读数仪表表盘的范围;
S3:根据待读数仪表表盘的范围,确定待读数仪表中第一测量项的最小刻度位置S[1]和最大刻度位置S[2]的像素坐标范围;确定待读数仪表中第二测量项的最小刻度位置S[3]和最大刻度位置S[4]的像素坐标范围;确定待读数仪表中当前第一测量项的第一指针指向位置A[1]的像素坐标范围和待读数仪表中当前第二测量项的第二指针指向位置A[2]的像素坐标范围;确定待读数仪表中第一测量项第一指针在表盘上的固定位置R[2]的像素坐标范围和待读数仪表中第二测量项第二指针在表盘上的固定位置R[1]的像素坐标范围;
S4:根据S[1]、S[2]、S[3]、S[4]、A[1]、A[2]、R[1]和R[2]的像素坐标范围,确定S[1]S[2]、S[3]、S[4]、A[1]、A[2]、R[1]和R[2]的像素坐标值;
S5:根据S[1]、S[2]、S[3]、S[4]、A[1]、A[2]、R[1]和R[2]的像素坐标值,建立待读数仪表的仪表盘模型;所述仪表盘模型包括第一测量项仪表盘模型和第二测量项仪表盘模型;
S6:根据待读数仪表的仪表盘模型,计算出所述当前第一测量项的第一指针读数M和当前第二测量项的第二指针的读数N。
2.根据权利要求1所述的一种利用计算机视觉实现双指针仪表自动读数的方法,其特征在于,在步骤S1中,所述三维数组的行大小等于所述待读数仪表图像的高度;所述三维数组的宽大小等于所述待读数仪表图像的宽度;所述三维数组的高大小等于所述待读数仪表图像的深度;所述待读数仪表图像的深度等于3。
3.根据权利要求1所述的一种利用计算机视觉实现双指针仪表自动读数的方法,其特征在于,在步骤S2中,所述待读数仪表表盘的边界位于待读数仪表表盘的内边界和外边界中间;所述待读数仪表表盘的边界优选矩形。
4.根据权利要求1或3所述的一种利用计算机视觉实现双指针仪表自动读数的方法,其特征在于,步骤S2包括:确定待读数仪表表盘的矩形上边界的两个点P[1]和P[2],进而确定P[1]和P[2]所在的第一直线方程;确定待读数仪表表盘的矩形下边界的两个点P[3]和P[4],进而确定P[3]和P[4]所在的第二直线方程;确定待读数仪表表盘的矩形左边界的两个点P[5]和P[6],进而确定P[5]和P[6]所在的第三直线方程;确定待读数仪表表盘的矩形右边界的两个点P[7]和P[8],进而确定P[7]和P[8]所在的第四直线方程;
第一直线方程与第三直线方程相交于点H[1],第一直线方程与第四直线方程相交于点H[2],第二直线方程与第三直线方程相交于点H[3],第二直线方程与第四直线方程相交于点H[4];H[1]、H[2]、H[3]、H[4]以及第一直线方程、第二直线方程、第三直线方程和第四直线方程组成的封闭区域即为所述待读数仪表表盘的范围。
5.根据权利要求1所述的一种利用计算机视觉实现双指针仪表自动读数的方法,其特征在于,步骤S3包括:以H[1]点的像素坐标为(Hx,Hy)作为参考点,则所述S[1]点的像素坐标范围为以点(Hx+97,Hy+660)和点(Hx+263,Hy+970)为对角线的第一矩形范围;所述S[2]点的像素坐标范围为以点(Hx+500,Hy+80)和点(Hx+680,Hy+200)为对角线的第二矩形范围;所述S[3]点的像素坐标范围为以点(Hx+660,Hy+80)和点(Hx+920,Hy+240)为对角线的第三矩形范围;所述S[4]点的像素坐标范围为以点(Hx+1020,Hy+690)和点(Hx+1320,Hy+810)为对角线的第四矩形范围;
以H[1]点的像素坐标为(Hx,Hy)作为参考点,则所述R[1]点的像素坐标范围为以点(Hx+300,Hy+680)和点(Hx+530,Hy+920)为对角线的第五矩形范围;所述R[2]点的像素坐标范围为以点(Hx+800,Hy+680)和点(Hx+1040,Hy+920)为对角线的第六矩形范围。
6.根据权利要求1所述的一种利用计算机视觉实现双指针仪表自动读数的方法,其特征在于,步骤S4包括:分别在S[1]、S[2]、S[3]和S[4]的像素坐标范围内,筛选符合条件的像素点,并将符合条件的像素点坐标取平均值作为S[1]、S[2]、S[3]和S[4]点的坐标;所述条件为在白像素点的附近取红色像素点,且由红色像素点向左、向上、向上和向右延伸的白色像素点大于P个;
所述P等于40;
分别在A[1]和A[2]的像素坐标范围内,筛选符合条件的像素点,并将符合条件的像素点坐标取平均值作为A[1]和A[2]点的坐标;所述条件为在白像素点的附近取红色像素点,所述红色像素点附近有黄色像素点或者绿色像素点。
7.根据权利要求5或6所述的一种利用计算机视觉实现双指针仪表自动读数的方法,其特征在于,步骤S3还包括:以点S[1]和S[2]的坐标为参考点,线段连接点S[1]和S[2],以S[1]S[2]为对角线,确定第七矩形范围,所述第七矩形范围为点A[1]像素坐标范围;
以点S[3]和S[4]的坐标为参考点,线段连接点S[3]和S[4],以S[3]S[4]为对角线,确定第八矩形范围,所述第八矩形范围为点A[2]像素坐标范围。
8.根据权利要求7所述的一种利用计算机视觉实现双指针仪表自动读数的方法,其特征在于,步骤S4还包括:分别在R[1]和R[2]的像素坐标范围内,筛选符合条件的像素点,并将符合条件的像素点坐标取平均值作为R[1]和R[2]点的坐标;所述条件为以任一像素点为圆心,M为半径,所述像素点的上下左右的四个像素点均为白色的像素点;所述M的范围为[26,30]。
9.根据权利要求1或6或8任意一项所述的一种利用计算机视觉实现双指针仪表自动读数的方法,其特征在于,步骤S5包括:线段连接点S[1]和点R[2]、线段连接点S[2]和点R[2]以及线段连接点A[1]和点R[2],根据R[2]S[1]和R[2]S[2]之间的夹角,以及R[2]A[1]和R[2]S[2]之间的夹角,建立所述第一测量项仪表盘模型;
线段连接点S[3]和点R[1]、线段连接点S[4]和点R[1]以及线段连接点A[2]和点R[1],根据R[1]S[4]和R[1]S[3]之间的夹角,以及R[1]A[2]和R[1]S[3]之间的夹角,建立所述第二测量项仪表盘模型。
10.根据权利要求1所述的一种利用计算机视觉实现双指针仪表自动读数的方法,其特征在于,在步骤S6中,所述M的计算公式为:
所述N的计算公式为:
所述Mmax为第一测量项的第一指针的读数最大值;所述Mmin为第一测量项的第一指针的读数最小值;
所述Nmax为第二测量项的第二指针的读数最大值;所述Nmin为第二测量项的第二指针的读数最小值。