发明名称 一种用于燃气表机械表盘的转圈检测方法
摘要 本发明涉及一种用于燃气表机械表盘的转圈检测方法。本发明方法首先利用图像处理方法对燃气表机械表盘最后一位字符区域进行自动的精确定位,接着本方法自适应的构造机械表盘最后一位字符区域的参考图像,从而利用最后一位字符当前图像与参考图像之间的差分结果完成转圈检测,最终利用检测到的转圈数所对应的容量与燃气表实际的进气量进行比较,计算燃气表机械表盘的流量误差。本发明方法具有效率高、可靠高、准确性高的优点,可以提高产品质量,降低生产成本,具有重要的工程实际意义。
申请公布号 CN106441519A 申请公布日期 2017.02.22
申请号 CN201610833410.3 申请日期 2016.09.20
申请人 杭州电子科技大学 发明人 杨宇翔;高明煜;何志伟;黄继业;曾毓
分类号 G01F25/00(2006.01)I;G06K9/38(2006.01)I 主分类号 G01F25/00(2006.01)I
代理机构 杭州君度专利代理事务所(特殊普通合伙) 33240 代理人 杜军
主权项 一种用于燃气表机械表盘的转圈检测方法,其特征在于,该方法的具体步骤是:步骤(1):f<sub>i</sub>(x,y)表示采集到的大小为M×N的燃气表机械表盘第i帧图像,x,y表示图像的横坐标和纵坐标,按如下方式对表盘图像做二值化处理:<maths num="0001"><math><![CDATA[<mrow><msub><mi>f</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mn>1</mn><mo>,</mo></mrow></mtd><mtd><mrow><msub><mi>f</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&gt;</mo><mi>&eta;</mi></mrow></mtd></mtr><mtr><mtd><mrow><mn>0</mn><mo>,</mo></mrow></mtd><mtd><mrow><msub><mi>f</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>&lt;</mo><mi>&eta;</mi></mrow></mtd></mtr></mtable></mfenced></mrow>]]></math><img file="FDA0001117068890000011.GIF" wi="518" he="150" /></maths>其中η为二值化阈值;步骤(2):对表盘的最后一位字符区域进行自适应定位:(a)按如下方式对各二值化图像作帧间差分并累加:<maths num="0002"><math><![CDATA[<mrow><mi>C</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>K</mi></munderover><mo>|</mo><msub><mi>f</mi><mrow><mi>i</mi><mo>+</mo><mn>2</mn></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>f</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>|</mo></mrow>]]></math><img file="FDA0001117068890000012.GIF" wi="572" he="126" /></maths>其中K表示累加的次数,C(x,y)表示累加得到的差分图;(b)按下式对差分图C(x,y)作列累加:<maths num="0003"><math><![CDATA[<mrow><mi>H</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>y</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mi>C</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001117068890000013.GIF" wi="318" he="134" /></maths>然后将x从1增加到M,当出现H(x)大于阈值η<sub>1</sub>时,当前x记为最后一位字符区域的上边缘h<sub>1</sub>;继续增加x,当出现H(x)小于阈值η<sub>1</sub>且当前x与上边缘h<sub>1</sub>满足x‑h<sub>1</sub>>α<sub>1</sub>,参数α<sub>1</sub>为字符区域高度阈值,则当前x记为最后一位字符区域的下边缘h<sub>2</sub>;(c)按下式对差分图C(x,y)作行累加:<maths num="0004"><math><![CDATA[<mrow><mi>V</mi><mrow><mo>(</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow><mi>M</mi></munderover><mi>C</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001117068890000014.GIF" wi="309" he="120" /></maths>然后将y从N减小到1,当出现V(y)大于阈值η<sub>2</sub>时,当前y记为最后一位字符区域的右边缘w<sub>2</sub>;继续减小y,当出现V(y)小于阈值η<sub>2</sub>且当前y与右边缘w<sub>2</sub>满足w<sub>2</sub>‑y>α<sub>2</sub>,参数α<sub>2</sub>为字符区域宽度阈值,则当前y为最后一位字符区域的左边缘w<sub>1</sub>;从而由上边缘h<sub>1</sub>,下边缘h<sub>2</sub>,左边缘w<sub>1</sub>和右边缘w<sub>2</sub>得到表盘最后一位字符的矩形区域;步骤(3):采集最后一位字符矩形区域的参考图像:实时采集表盘最后一位字符矩形区域的当前图像,作二值化处理,记为g(x,y),对g(x,y)按如下方式作累加:<maths num="0005"><math><![CDATA[<mrow><mi>G</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>y</mi><mo>=</mo><mn>1</mn></mrow><mrow><mo>(</mo><msub><mi>w</mi><mn>2</mn></msub><mo>-</mo><msub><mi>w</mi><mn>1</mn></msub><mo>)</mo></mrow></munderover><mi>g</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>,</mo><mn>1</mn><mo>&le;</mo><mi>x</mi><mo>&le;</mo><mrow><mo>(</mo><msub><mi>h</mi><mn>2</mn></msub><mo>-</mo><msub><mi>h</mi><mn>1</mn></msub><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001117068890000021.GIF" wi="622" he="140" /></maths>其中(w<sub>2</sub>‑w<sub>1</sub>)为最后一位字符矩形区域的宽度,(h<sub>2</sub>‑h<sub>1</sub>)为最后一位字符矩形区域的高度;若G(x)满足如下条件:<img file="FDA0001117068890000022.GIF" wi="310" he="135" />且<img file="FDA0001117068890000023.GIF" wi="372" he="135" />且<img file="FDA0001117068890000024.GIF" wi="374" he="135" />则将当前g(x,y)定义为最后一位字符矩形区域的参考图像,记为I(x,y),执行步骤(4);否则重新采集最后一位字符区域的实时图像,重新执行步骤(3);步骤(4):对最后一位字符作转圈检测:首先将标志位T置为0,将累加位S置为0;①实时采集表盘最后一位字符矩形区域图像,作二值化处理,记为g(x,y),对g(x,y)按如下方式作累加:<maths num="0006"><math><![CDATA[<mrow><mi>G</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>y</mi><mo>=</mo><mn>1</mn></mrow><mrow><mo>(</mo><msub><mi>w</mi><mn>2</mn></msub><mo>-</mo><msub><mi>w</mi><mn>1</mn></msub><mo>)</mo></mrow></munderover><mi>g</mi><mrow><mo>(</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>,</mo><mn>1</mn><mo>&le;</mo><mi>x</mi><mo>&le;</mo><mrow><mo>(</mo><msub><mi>h</mi><mn>2</mn></msub><mo>-</mo><msub><mi>h</mi><mn>1</mn></msub><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001117068890000025.GIF" wi="622" he="142" /></maths>若<img file="FDA0001117068890000026.GIF" wi="302" he="134" />且标志位T为0,则判定表盘最后一位转过了一个字符,将标志位T置为1,累加位S加上1;若累加位S满足S≥8,则执行步骤②,否则继续执行步骤①;若<img file="FDA0001117068890000027.GIF" wi="303" he="136" />且标志位T为1,将标志位T置为0,继续执行步骤①;②连续采集表盘最后一位字符矩形区域的当前图像,作二值化处理,记为g(x,y),将g(x,y)与参考图像I(x,y)作差:F(x,y)=|g(x,y)‑I(x,y)|若F(x,y)内非零点个数小于阈值β,则判定表盘最后一位转过了一圈,发出转圈信号,重新执行步骤(4)直到发出了L次转圈信号;步骤(5):以第一次转圈信号的时间t<sub>1</sub>为基准时间点,记录下第L次转圈信号的时间为t<sub>2</sub>,按如下公式计算燃气表表盘的流量误差ε:<maths num="0007"><math><![CDATA[<mrow><mi>&epsiv;</mi><mo>=</mo><mo>|</mo><mfrac><mrow><mo>(</mo><mi>L</mi><mo>-</mo><mn>1</mn><mo>)</mo><mo>&times;</mo><mi>H</mi><mo>-</mo><mo>(</mo><msub><mi>t</mi><mn>2</mn></msub><mo>-</mo><msub><mi>t</mi><mn>1</mn></msub><mo>)</mo><mo>&times;</mo><mi>D</mi></mrow><mrow><mo>(</mo><msub><mi>t</mi><mn>2</mn></msub><mo>-</mo><msub><mi>t</mi><mn>1</mn></msub><mo>)</mo><mo>&times;</mo><mi>D</mi></mrow></mfrac><mo>|</mo></mrow>]]></math><img file="FDA0001117068890000031.GIF" wi="589" he="166" /></maths>其中H是燃气表表盘最后一位代表的基准流量,D表示给燃气表的供气流量,通过计算转圈信号之间的时间差,结合燃气表的供气流量,完成对燃气表表盘的流量误差计算。
地址 310018 浙江省杭州市下沙高教园区2号大街