一种机械式指针压力表读数识别方法
技术领域
本发明涉及一种压力表读数识别方法,尤其是涉及一种机械式指针压力表读数识别方法。
背景技术
基于波登管的机械式指针压力表主要用于测量0.06至700MPa的表压。该机械式指针压力表通过将波登管的弹性形变转换为旋转运动,引起指针偏转来指示压力。该机械式指针压力表结构简单,疲劳强度高,成本低廉且工作时无需电源,在工业生产和生活中得到了广泛的应用。
目前,机械式指针压力表在加测压力后,其表盘所显示的读数都是通过工作人员肉眼来识别的,读数准确性难以保证。
发明内容
本发明所要解决的技术问题是提供一种可以保证读数准确性的机械式指针压力表读数识别方法。
本发明解决上述技术问题所采用的技术方案为:一种机械式指针压力表读数识别方法,包括以下步骤:
(1)通过摄像头拍摄机械式指针压力表的原始彩色图像;
(2)从原始彩色图像中获取机械式指针压力表的表盘图像,具体过程为:
2.1将原始彩色图像进行灰度化处理,得到初始灰度图像;
2.2对初始灰度图像依次进行高斯滤波和中值滤波处理,得到中间灰度图像;
2.3构建二维坐标系,将中间灰度图像置于该二维坐标系中;
2.4将Hough变换的输入参数范围设定为FH‘’*fH‘’*1.1-FH‘’*fH‘’*0.90,其中FH‘’取值为摄像头拍摄图像的宽度分辨率,即宽度像素数,fH‘’取值范围为0.5-0.9,该参数根据具体拍摄场景焦距进行人工调节,*为乘运算符号,应用Hough变换在中间灰度图像中搜索到圆形,并获取搜索到的圆形的半径和圆心坐标,将其半径记为R0,将其圆心坐标记为(x0,y0),在二维坐标系中,以(x0-1.1*R0,y0-1.1*R0)作为起点坐标,以(x0+1.1*R0,y0+1.1*R0)作为终点坐标,在中间灰度图像中绘制以坐标点(x0,y0)为中心,包围Hough变换在中间灰度图像中搜索到的圆形的正方形区域,将该正方形区域内的图像作为机械式指针压力表的表盘图像,记为表盘图像Igu;
2.5将中间灰度图像中表盘图像Igu以外的区域去除,得到位于二维坐标系中的完全表盘图像I′gu,完全表盘图像I′gu为正方形;
(3)在完全表盘图像I′gu中确定机械式指针压力表的表盘中心点的坐标,具体方法为:将Hough变换的输入参数范围定为rp*1.1-rp*0.90,其中rp取值范围为450-600,应用Hough变换在完全表盘图像I′gu中再次搜索到圆形,获取搜索到的圆形的圆心在二维坐标系中的坐标,将其记为(xc,yc),(xc,yc)即为机械式指针压力表的表盘中心点的坐标;
(4)查找表盘轮廓及对查找到的表盘轮廓进行处理,具体步骤为:
4.1采用图像边缘提取方法在完全表盘图像I′gu中提取表盘边界轮廓点,将第T次提取得到的表盘边界轮廓点在二维坐标系中的坐标记为(xbT,ybT),T=1,2,...,N,N为图像边缘提取方法自动识别提取的表盘边界轮廓点的数量;
4.2采用提取得到的N个表盘边界轮廓点坐标构建表盘边界轮廓点坐标序列,将表盘边界轮廓点坐标序列记为{(xbT,ybT)},(xbT,ybT)为表盘边界轮廓点坐标序列中第T个表盘边界轮廓点坐标;
4.3以坐标点(xc,yc)为圆心,N个表盘边界轮廓点构成的圆形为钟表面,以该钟标面的6点时钟方向为0度起始角,建立极坐标系;
4.4将表盘边界轮廓点坐标序列{(xbT,ybT)}中每个表盘边界轮廓点坐标转换为极坐标,得到轮廓极坐标序列,将得到的轮廓极坐标序列记为 为(xbT,ybT)对应转换得到的极坐标,为轮廓极坐标序列中第T个极坐标,采用公式(1)计算得到半径坐标rbT,采用公式(2)计算得到角坐标
其中,的单位为度,arcsin为反正弦函数符号,*为乘运算符号,π为圆周率,/为除运算符号;
4.5对轮廓极坐标序列进行迭代重构,具体过程为:
4.5.1制定轮廓极坐标序列重构规则:从当前轮廓极坐标序列中第1个极坐标开始,将后一个极坐标的角坐标与前一个极坐标的角坐标进行比较,直至最后一个极坐标与其前一个极坐标比较完成:如果后一个极坐标的角坐标减去前一个极坐标的角坐标的差小于0.5,则从当前轮廓极坐标序列中将后一个极坐标删除,对轮廓极坐标序列进行更新,将更新后的轮廓极坐标序列作为当前轮廓极坐标序列继续进行重构;如果后一个极坐标的角坐标减去前一个极坐标的角坐标的差大于等于0.5且小于1,则不做处理,进入下一次的比较;如果后一个极坐标的角坐标减去前一个极坐标的角坐标的差大于等于1,则在这两个极坐标中插入一个新的极坐标,插入的极坐标的半径坐标等于前一个极坐标的半径坐标,插入的极坐标的角坐标等于这两个极坐标的角坐标之和的一半,得到更新后的轮廓极坐标序列,将更新后的轮廓极坐标序列作为当前轮廓极坐标序列继续进行重构;
4.5.2按照轮廓极坐标序列重构规则完成对轮廓极坐标序列进行的迭代重构,得到重构后的轮廓极坐标序列,将重构后的轮廓极坐标序列记为 为重构后的轮廓极坐标序列中第i个极坐标,i=1,2,...,N′,N′为重构后的轮廓极坐标序列中极坐标的数量,r′bi为重构后的轮廓极坐标序列中第i个极坐标的半径坐标,为重构后的轮廓极坐标序列中第i个极坐标的角坐标;
(5)采用自适应阈值化方法将完全表盘图像I′gu进行二值化处理,得到二值化完全表盘图像Pgu;
(6)在二值化完全表盘图像Pgu中进行表盘刻度环区域搜索:将表盘刻度环区域的环半径比表示γ来标记,表盘刻度环区域的环半径比指的是表盘刻度区所覆盖与表盘同心的环形区域半径与表盘半径之比,γ的取值范围为γb~γf,其中γb=0.6,γf=0.95;将表盘刻度环区域范围搜索序列记为{γk},γk表示第k个表盘刻度环区域的环半径比,k=1,2,...,35,36,γ1=γb=0.6,γ36=γf=0.95,γk"+1-γk"=0.01;k″=1,2,...,34,35;
(7)根据{γk}在二值化完全表盘图像Pgu中确定36个表盘刻度环搜索区域,将与表盘同心且环半径比为γk的圆边界作为第k个表盘刻度环搜索区域,判断第k个表盘刻度环搜索区域是否为表盘刻度环区域,具体判定过程为:
7.1计算环半径比为γk处且与表盘同心的圆边界上的N′个坐标点的坐标,采用得到的N′个坐标点的坐标构建该圆边界坐标序列{(xki,yki)},其中(xki,yki)为第k个表盘刻度环搜索区域上第i个坐标,采用公式(3)计算得到(xki,yki):
7.2从二值化完全表盘图像Pgu中获取{(xki,yki)}中所有坐标点处像素点的灰度值,将坐标点(xki,yki)处的像素点的灰度值记为vki;
7.3以为横坐标变量,vki为纵坐标变量,将vki看作关于的幅度信号,构建二维幅度坐标系,在二维幅度坐标系中标注出坐标点将作为γk对应的第i个二维幅度坐标点的坐标;
7.4构建用于存放疑似环半径比的疑似环半径比序列,将该疑似环半径比序列记为U,对γ1~γ36依次按照以下操作进行处理:从开始直至依次逐点进行遍历,统计幅度变化次数,如果相邻两点和 中,vk(j+1)不等于vkj,则认为幅度发生了一次变化,其中j=1,2,...,N′-1;如果幅度变化次数超过表盘刻度条目数Ns的80%,则将环半径比γk所处圆边界确定为疑似表盘刻度环区域,并将该环半径比γk保存到疑似环半径比序列U中;
在对γ1~γ36确认完成后,统计得到的疑似环半径比序列U中环半径比的数量,将其记为N′1,将得到的疑似环半径比序列U中第k′1个环半径比记为
7.5将第k′1个环半径比对应的第i个二维幅度坐标点的坐标记为对疑似环半径比序列U中第k′1个环半径比按照以下操作进行处理:
从开始直至依次逐点遍历,当出现G个连续坐标点的纵坐标都为0的情况时,将这G个连续坐标点作为幅度连续为0的幅度段,G为大于等于2的整数,统计从开始直至逐点遍历过程中幅度连续为0的幅度段的数量,将其记为H;
获取每个幅度连续为0的幅度段中,结束坐标点的横坐标减去起始坐标点的横坐标的差值,判断该差值是否在常数范围内,如果在,则判定疑似环半径比序列U中第k′1个环半径比为表盘刻度环区域,如果不在,则判定疑似环半径比序列U中第k′1个环半径比不为表盘刻度环区域;
7.6按照步骤7.5判定完成γ′1对应的第1个表盘刻度环搜索区域至对应的第N′1个表盘刻度环搜索区域是否为表盘刻度环区域,将被判定为不为表盘刻度环区域的对应的半径比从疑似环半径比序列U中删除后得到表盘刻度环区域范围序列,将其记为{ωh},其中h=1,2,...,M′,M′等于判定为表盘刻度环区域的表盘刻度环搜索区域的数量;
(8)在角度序列的每个角度值上,对二值化完全表盘图像Pgu中表盘刻度环区域范围序列{ωh}对应的表盘刻度环区域进行径向刻度标定,将角度序列中第i个角度处的标定量记为Si,具体过程为:
8.1在角度处,获取表盘刻度环区域范围序列{ωh}内的每个半径比对应圆的径向像素坐标,将第h个半径比ωh对应圆的径向像素坐标记为采用公式(4)计算得到
其中h=1,2,...,M′,i=1,2,...,N′;
8.2采用构成角度处,表盘刻度环区域中刻度环半径比例范围{ωh}内的径向像素坐标序列,将其记为
8.3在二值化完全表盘图像Pgu中,获取径向像素坐标序列中每个坐标点处像素点的灰度值,将第h个径向像素坐标点处的像素点的灰度值记为将在角度处,表盘刻度环区域范围序列{ωh}对应的径向像素点灰度值序列记为
8.4统计径向像素点灰度值序列中灰度值为0的像素点数量;
8.5判定径向像素点灰度值序列记为中灰度值为0的像素点数量是否超过总数量的一半,如果超过,则令Si=1,否则令Si=0;
8.6按照步骤8.1~步骤8.5得到S1~SN′,采用得到的S1~SN′构成径向刻度标定结果序列{Si};
(9)刻度识别
9.1采用径向刻度标定结果序列{Si}中的数据对角度序列进行去冗余处理,其中Si对应的角度为从径向刻度标定结果序列{Si}中第1个径向刻度标定结果S1开始直至最后一个径向刻度标定结果SN′,依次判定该径向刻度标定结果的值是否等于1,如果等于1,则将该径向刻度标定结果对应的角度从角度序列中抽取出,采用所有抽取出的角度构成刻度标定结果角度序列,将其记为τ=1,2,…,N″,N″为从角度序列中抽取的角度的总数量,表示从角度序列中第τ次抽取出的角度;
9.2将刻度标定结果角度序列进行去冗余处理,具体过程为:
9.2.1构建用于存放去冗余后的角度的精简角度序列;
9.2.2将作为精简角度序列中的第1个角度存放到精简角度序列中对精简角度序列进行第1次更新;
9.2.3设定更新变量x,对更新变量x进行初始化,令x=2;
9.2.4对精简角度序列进行第x次更新,具体过程为:
A.获取刻度标定结果角度序列中第x个角度获取当前精简角度序列中最后一个角度,将该角度记为计算的差值,将该差值记为
B.判断是否大于2:
如果则将作为最后一个角度数据补充到当前精简角度序列中,对当前精简角度序列进行更新;
如果则计算的值,将的值作为最后一个角度数据补充到当前精简角度序列中,对当前精简角度序列进行更新;
C.判断x的当前值是否等于N″,如果等于,则精简角度序列更新完成,将更新完成的精简角度序列记为为精简角度序列中第G个角度,G=1,2,…,M,M为更新完成的精简角度序列中包含的角度的总数量,如果x的当前值不等于N″,则采用x的当前值加1得到的值去更新x的取值,然后返回步骤A进入下一次更新,直至满足更新完成条件。
9.3进行刻度识别,具体过程为:
9.31在精简角度序列中,选取从第个角度到第个角度,共选取个角度,将这个角度前后差分的均值记为||||为取整符号;
9.3.2采用公式(5)计算得到
9.3.3对精简角度序列记为进行处理,得到起始刻度角度αstart和结束刻度角度αend,具体过程为:
a.将精简角度序列中的脚标G作为的序号;
b.设定序号变量v,从序号1开始给v赋值,每赋值一次计算v+Ns-1的当前值,如果v+Ns-1的当前值小于M,则采用v的当前值加1的和再赋值给v,对v进行更新,直至找到第一个满足v+Ns-1≥M的v的取值,将此时找到的v的取值记为y;
c.设定中间变量z,设定用于存放实际刻度的实际刻度向量,将其记为对z进行初始化,将y赋值给z;
d.以精简角度序列中第z个元素θfz为起点,依次选取后续Ns-1个元素按顺序存放到实际刻度向量中,采用式(6)表示为:
e.采用公式(7)求解的均值与之差的绝对值,将该绝对值记为
f.判断z+Ns-1的当前值是否等于M,如果等于,则进入步骤g,如果不等于,则采用z的当前值加1的和更新z的值,返回步骤d,直至z+Ns-1的当前值等于M;
g.找出中的最小值y≤Q≤(M+1-Ns);
h.将对应的实际刻度向量中作为起始刻度角度αstart,作为结束刻度角度αend;
9.4进行指针识别,具体过程为:
9.4.1.将圆心坐标为(xc,yc)的二值化完全表盘图像Pgu所处圆形的六点钟方向作为0角度线,然后将0角度线作为第1条等分线,将二值化完全表盘图像Pgu的圆周按照顺时针方向分为720等分,每等分为0.5°,一共得到720条等分线,采用这720条等分线对应的角度形成等分角度序列{δq},其中q=1,2,…,720;δq=0.5°×(q-1);
9.4.2在步骤4.4获取的表盘轮廓极坐标序列中,找到rb1至rbN这n个半径坐标中取值最小的半径坐标,将其记为rMIN;
9.4.3.设置一个包括100个元素的数据序列,将其记为{ps},其中,s=1,2,…,100,p1=0.01,p(F+1)=pF+0.01,F=1,2,…,99;
9.4.4.将在等分角度δq、半径为ps*rMIN处的二值化完全表盘图像Pgu中像素点的直角坐标记为采用公式(8)计算得到:
9.4.5在二值化完全表盘图像Pgu中,获取直角坐标点的像素点的灰度值,将该灰度值记为gyqs;
9.4.6采用等分角度δq、半径为p1*rMIN处的灰度值gyq1至等分角度δq、半径为p100*rMIN处的灰度值gyq100这100个灰度值构成等分角度δq对应的灰度值序列{gyqs},gyqs表示等分角度δq、半径为ps*rMIN处的灰度值;
9.4.7.计算等分角度δq处灰度值的平均值,将其记为
9.4.8.将q作为的索引数值,找到至中的最小值,将该最小值的索引数值记为qindex;
9.4.9将指针位置记为α,从等分角度序列{δq}中找到将赋值给α;
9.5读数计算
9.5.1将机械式指针压力表的量程范围记为Vrange,采用公式(10)计算得到:
Vrange=Vmax-Vmin (10)
其中Vmin为机械式指针压力表的最小起始刻度量值,Vmax为机械式指针压力表的最大刻度量值;
9.5.2采用公式(11)计算得到机械式指针压力表的读数Vgauge:
其中,αrange为机械式指针压力表的刻度角度范围为,αrange=αstart-αend。
与现有技术相比,本发明的优点在于通过基本的图像滤波和二值化处理之后,通过两次Hough变换获得较为精确的仪表表盘中心坐标,在提取表盘轮廓后,对轮廓坐标组进行极坐标变换,而后以仪表表盘中心坐标为圆心,逆时针进行刻度搜索识别,获取表盘刻度区域,并在刻度识别结果区域进行刻度标定,从而获得标定后的关于角度和刻度的二维向量,这样便将刻度识别问题转换为了二维向量处理问题,随后构建标准刻度向量,便以计算角度和刻度的二维识别向量和标准刻度向量的距离,在两向量距离最小值处,就是标准刻度的起始和终点位置,并采用求取刻度环内部圆环灰度均值最小值的方法求取指针位置,由此实现机械式指针压力表读数的自动识别,保证读数准确性。
具体实施方式
以下结合实施例对本发明作进一步详细描述。
实施例:一种机械式指针压力表读数识别方法,包括以下步骤:
(1)通过摄像头拍摄机械式指针压力表的原始彩色图像;
(2)从原始彩色图像中获取机械式指针压力表的表盘图像,具体过程为:
2.1将原始彩色图像进行灰度化处理,得到初始灰度图像;
2.2对初始灰度图像依次进行高斯滤波和中值滤波处理,得到中间灰度图像;
2.3构建二维坐标系,将中间灰度图像置于该二维坐标系中;
2.4将Hough变换的输入参数范围设定为FH‘’*fH‘’*1.1-FH‘’*fH‘’*0.90,其中FH‘’取值为摄像头拍摄图像的宽度分辨率,即宽度像素数,fH‘’取值范围为0.5-0.9,该参数根据具体拍摄场景焦距进行人工调节,*为乘运算符号,应用Hough变换在中间灰度图像中搜索到圆形,并获取搜索到的圆形的半径和圆心坐标,将其半径记为R0,将其圆心坐标记为(x0,y0),在二维坐标系中,以(x0-1.1*R0,y0-1.1*R0)作为起点坐标,以(x0+1.1*R0,y0+1.1*R0)作为终点坐标,在中间灰度图像中绘制以坐标点(x0,y0)为中心,包围Hough变换在中间灰度图像中搜索到的圆形的正方形区域,将该正方形区域内的图像作为机械式指针压力表的表盘图像,记为表盘图像Igu;
2.5将中间灰度图像中表盘图像Igu以外的区域去除,得到位于二维坐标系中的完全表盘图像I′gu,完全表盘图像I′gu为正方形;
(3)在完全表盘图像I′gu中确定机械式指针压力表的表盘中心点的坐标,具体方法为:将Hough变换的输入参数范围定为rp*1.1-rp*0.90,其中rp取值范围为450-600,应用Hough变换在完全表盘图像I′gu中再次搜索到圆形,获取搜索到的圆形的圆心在二维坐标系中的坐标,将其记为(xc,yc),(xc,yc)即为机械式指针压力表的表盘中心点的坐标;
(4)查找表盘轮廓及对查找到的表盘轮廓进行处理,具体步骤为:
4.1采用图像边缘提取方法在完全表盘图像I′gu中提取表盘边界轮廓点,将第T次提取得到的表盘边界轮廓点在二维坐标系中的坐标记为(xbT,ybT),T=1,2,...,N,N为图像边缘提取方法自动识别提取的表盘边界轮廓点的数量;
4.2采用提取得到的N个表盘边界轮廓点坐标构建表盘边界轮廓点坐标序列,将表盘边界轮廓点坐标序列记为{(xbT,ybT)},(xbT,ybT)为表盘边界轮廓点坐标序列中第T个表盘边界轮廓点坐标;
4.3以坐标点(xc,yc)为圆心,N个表盘边界轮廓点构成的圆形为钟表面,以该钟标面的6点时钟方向为0度起始角,建立极坐标系;
4.4将表盘边界轮廓点坐标序列{(xbT,ybT)}中每个表盘边界轮廓点坐标转换为极坐标,得到轮廓极坐标序列,将得到的轮廓极坐标序列记为 为(xbT,ybT)对应转换得到的极坐标,为轮廓极坐标序列中第T个极坐标,采用公式(1)计算得到半径坐标rbT,采用公式(2)计算得到角坐标
其中,的单位为度,arcsin为反正弦函数符号,*为乘运算符号,π为圆周率,/为除运算符号;
4.5对轮廓极坐标序列进行迭代重构,具体过程为:
4.5.1制定轮廓极坐标序列重构规则:从当前轮廓极坐标序列中第1个极坐标开始,将后一个极坐标的角坐标与前一个极坐标的角坐标进行比较,直至最后一个极坐标与其前一个极坐标比较完成:如果后一个极坐标的角坐标减去前一个极坐标的角坐标的差小于0.5,则从当前轮廓极坐标序列中将后一个极坐标删除,对轮廓极坐标序列进行更新,将更新后的轮廓极坐标序列作为当前轮廓极坐标序列继续进行重构;如果后一个极坐标的角坐标减去前一个极坐标的角坐标的差大于等于0.5且小于1,则不做处理,进入下一次的比较;如果后一个极坐标的角坐标减去前一个极坐标的角坐标的差大于等于1,则在这两个极坐标中插入一个新的极坐标,插入的极坐标的半径坐标等于前一个极坐标的半径坐标,插入的极坐标的角坐标等于这两个极坐标的角坐标之和的一半,得到更新后的轮廓极坐标序列,将更新后的轮廓极坐标序列作为当前轮廓极坐标序列继续进行重构;
4.5.2按照轮廓极坐标序列重构规则完成对轮廓极坐标序列进行的迭代重构,得到重构后的轮廓极坐标序列,将重构后的轮廓极坐标序列记为 为重构后的轮廓极坐标序列中第i个极坐标,i=1,2,...,N′,N′为重构后的轮廓极坐标序列中极坐标的数量,r′bi为重构后的轮廓极坐标序列中第i个极坐标的半径坐标,为重构后的轮廓极坐标序列中第i个极坐标的角坐标;
(5)采用自适应阈值化方法将完全表盘图像I′gu进行二值化处理,得到二值化完全表盘图像Pgu;
(6)在二值化完全表盘图像Pgu中进行表盘刻度环区域搜索:将表盘刻度环区域的环半径比表示γ来标记,表盘刻度环区域的环半径比指的是表盘刻度区所覆盖与表盘同心的环形区域半径与表盘半径之比,γ的取值范围为γb~γf,其中γb=0.6,γf=0.95;将表盘刻度环区域范围搜索序列记为{γk},γk表示第k个表盘刻度环区域的环半径比,k=1,2,...,35,36,γ1=γb=0.6,γ36=γf=0.95,γk″+1-γk″=0.01;k″=1,2,...,34,35;
(7)根据{γk}在二值化完全表盘图像Pgu中确定36个表盘刻度环搜索区域,将与表盘同心且环半径比为γk的圆边界作为第k个表盘刻度环搜索区域,判断第k个表盘刻度环搜索区域是否为表盘刻度环区域,具体判定过程为:
7.1计算环半径比为γk处且与表盘同心的圆边界上的N′个坐标点的坐标,采用得到的N′个坐标点的坐标构建该圆边界坐标序列{(xki,yki)},其中(xki,yki)为第k个表盘刻度环搜索区域上第i个坐标,采用公式(3)计算得到(xki,yki):
7.2从二值化完全表盘图像Pgu中获取{(xki,yki)}中所有坐标点处像素点的灰度值,将坐标点(xki,yki)处的像素点的灰度值记为vki;
7.3以为横坐标变量,vki为纵坐标变量,将vki看作关于的幅度信号,构建二维幅度坐标系,在二维幅度坐标系中标注出坐标点将作为γk对应的第i个二维幅度坐标点的坐标;
7.4构建用于存放疑似环半径比的疑似环半径比序列,将该疑似环半径比序列记为U,对γ1~γ36依次按照以下操作进行处理:从开始直至依次逐点进行遍历,统计幅度变化次数,如果相邻两点和 中,vk(j+1)不等于vkj,则认为幅度发生了一次变化,其中j=1,2,...,N′-1;如果幅度变化次数超过表盘刻度条目数Ns的80%,则将环半径比γk所处圆边界确定为疑似表盘刻度环区域,并将该环半径比γk保存到疑似环半径比序列U中;
在对γ1~γ36确认完成后,统计得到的疑似环半径比序列U中环半径比的数量,将其记为N′1,将得到的疑似环半径比序列U中第k′1个环半径比记为
7.5将第k′1个环半径比对应的第i个二维幅度坐标点的坐标记为对疑似环半径比序列U中第k′1个环半径比按照以下操作进行处理:
从开始直至依次逐点遍历,当出现G个连续坐标点的纵坐标都为0的情况时,将这G个连续坐标点作为幅度连续为0的幅度段,G为大于等于2的整数,统计从开始直至逐点遍历过程中幅度连续为0的幅度段的数量,将其记为H;
获取每个幅度连续为0的幅度段中,结束坐标点的横坐标减去起始坐标点的横坐标的差值,判断该差值是否在常数范围内,如果在,则判定疑似环半径比序列U中第k′1个环半径比为表盘刻度环区域,如果不在,则判定疑似环半径比序列U中第k′1个环半径比不为表盘刻度环区域;
7.6按照步骤7.5判定完成γ′1对应的第1个表盘刻度环搜索区域至对应的第N′1个表盘刻度环搜索区域是否为表盘刻度环区域,将被判定为不为表盘刻度环区域的对应的半径比从疑似环半径比序列U中删除后得到表盘刻度环区域范围序列,将其记为{ωh},其中h=1,2,...,M′,M′等于判定为表盘刻度环区域的表盘刻度环搜索区域的数量;
(8)在角度序列的每个角度值上,对二值化完全表盘图像Pgu中表盘刻度环区域范围序列{ωh}对应的表盘刻度环区域进行径向刻度标定,将角度序列中第i个角度处的标定量记为Si,具体过程为:
8.1在角度处,获取表盘刻度环区域范围序列{ωh}内的每个半径比对应圆的径向像素坐标,将第h个半径比ωh对应圆的径向像素坐标记为采用公式(4)计算得到
其中h=1,2,...,M′,i=1,2,...,N′;
8.2采用构成角度处,表盘刻度环区域中刻度环半径比例范围{ωh}内的径向像素坐标序列,将其记为
8.3在二值化完全表盘图像Pgu中,获取径向像素坐标序列中每个坐标点处像素点的灰度值,将第h个径向像素坐标点处的像素点的灰度值记为将在角度处,表盘刻度环区域范围序列{ωh}对应的径向像素点灰度值序列记为
8.4统计径向像素点灰度值序列中灰度值为0的像素点数量;
8.5判定径向像素点灰度值序列记为中灰度值为0的像素点数量是否超过总数量的一半,如果超过,则令Si=1,否则令Si=0;
8.6按照步骤8.1~步骤8.5得到S1~SN′,采用得到的S1~SN′构成径向刻度标定结果序列{Si};
(9)刻度识别
9.1采用径向刻度标定结果序列{Si}中的数据对角度序列进行去冗余处理,其中Si对应的角度为从径向刻度标定结果序列{Si}中第1个径向刻度标定结果S1开始直至最后一个径向刻度标定结果SN′,依次判定该径向刻度标定结果的值是否等于1,如果等于1,则将该径向刻度标定结果对应的角度从角度序列中抽取出,采用所有抽取出的角度构成刻度标定结果角度序列,将其记为τ=1,2,…,N″,N″为从角度序列中抽取的角度的总数量,表示从角度序列中第τ次抽取出的角度;
9.2将刻度标定结果角度序列进行去冗余处理,具体过程为:
9.2.1构建用于存放去冗余后的角度的精简角度序列;
9.2.2将作为精简角度序列中的第1个角度存放到精简角度序列中对精简角度序列进行第1次更新;
9.2.3设定更新变量x,对更新变量x进行初始化,令x=2;
9.2.4对精简角度序列进行第x次更新,具体过程为:
A.获取刻度标定结果角度序列中第x个角度获取当前精简角度序列中最后一个角度,将该角度记为计算的差值,将该差值记为
B.判断是否大于2:
如果则将作为最后一个角度数据补充到当前精简角度序列中,对当前精简角度序列进行更新;
如果则计算的值,将的值作为最后一个角度数据补充到当前精简角度序列中,对当前精简角度序列进行更新;
C.判断x的当前值是否等于N″,如果等于,则精简角度序列更新完成,将更新完成的精简角度序列记为为精简角度序列中第G个角度,G=1,2,…,M,M为更新完成的精简角度序列中包含的角度的总数量,如果x的当前值不等于N″,则采用x的当前值加1得到的值去更新x的取值,然后返回步骤A进入下一次更新,直至满足更新完成条件。
9.3进行刻度识别,具体过程为:
9.3.1在精简角度序列中,选取从第个角度到第个角度,共选取个角度,将这个角度前后差分的均值记为||||为取整符号;
9.3.2采用公式(5)计算得到
9.3.3对精简角度序列记为进行处理,得到起始刻度角度αstart和结束刻度角度αend,具体过程为:
a.将精简角度序列中的脚标G作为的序号;
b.设定序号变量v,从序号1开始给v赋值,每赋值一次计算v+Ns-1的当前值,如果v+Ns-1的当前值小于M,则采用v的当前值加1的和再赋值给v,对v进行更新,直至找到第一个满足v+Ns-1≥M的v的取值,将此时找到的v的取值记为y;
c.设定中间变量z,设定用于存放实际刻度的实际刻度向量,将其记为对z进行初始化,将y赋值给z;
d.以精简角度序列中第z个元素θfz为起点,依次选取后续Ns-1个元素按顺序存放到实际刻度向量中,采用式(6)表示为:
e.采用公式(7)求解的均值与之差的绝对值,将该绝对值记为
f.判断z+Ns-1的当前值是否等于M,如果等于,则进入步骤g,如果不等于,则采用z的当前值加1的和更新z的值,返回步骤d,直至z+Ns-1的当前值等于M;
g.找出中的最小值y≤Q≤(M+1-Ns);
h.将对应的实际刻度向量中作为起始刻度角度αstart,作为结束刻度角度αend;
9.4进行指针识别,具体过程为:
9.4.1.将圆心坐标为(xc,yc)的二值化完全表盘图像Pgu所处圆形的六点钟方向作为0角度线,然后将0角度线作为第1条等分线,将二值化完全表盘图像Pgu的圆周按照顺时针方向分为720等分,每等分为0.5°,一共得到720条等分线,采用这720条等分线对应的角度形成等分角度序列{δq},其中q=1,2,…,720;δq=0.5°×(q-1);
9.4.2在步骤4.4获取的表盘轮廓极坐标序列中,找到rb1至rbN这n个半径坐标中取值最小的半径坐标,将其记为rMIN;
9.4.3.设置一个包括100个元素的数据序列,将其记为{ps},其中,s=1,2,…,100,p1=0.01,p(F+1)=pF+0.01,F=1,2,…,99;
9.4.4.将在等分角度6q、半径为ps*rMIN处的二值化完全表盘图像Pgu中像素点的直角坐标记为采用公式(8)计算得到:
9.4.5在二值化完全表盘图像Pgu中,获取直角坐标点的像素点的灰度值,将该灰度值记为gyqs;
9.4.6采用等分角度δq、半径为p1*rMIN处的灰度值gyq1至等分角度δq、半径为p100*rMIN处的灰度值gyq100这100个灰度值构成等分角度δq对应的灰度值序列{gyqs},gyqs表示等分角度δq、半径为ps*rMIN处的灰度值;
9.4.7.计算等分角度δq处灰度值的平均值,将其记为
9.4.8.将q作为的索引数值,找到至中的最小值,将该最小值的索引数值记为qindex;
9.4.9将指针位置记为α,从等分角度序列{δq}中找到将赋值给α;
9.5读数计算
9.5.1将机械式指针压力表的量程范围记为Vrange,采用公式(10)计算得到:
Vrange=Vmax-Vmin (10)
其中Vmin为机械式指针压力表的最小起始刻度量值,Vmax为机械式指针压力表的最大刻度量值;
9.5.2采用公式(11)计算得到机械式指针压力表的读数Vgauge:
其中,αrange为机械式指针压力表的刻度角度范围为,αrange=αstart-αend。