1.本发明涉及一种玻璃液体温度计读数方法,尤其涉及一种计算机视觉领域中基于图像处理技术的玻璃液体温度计自动读数方法。
背景技术:2.在当今科学技术发展的背景下,现代检测技术也随之不断发展。玻璃液体温度计作为当今检测技术领域中不可或缺的测温工具之一被广泛应用于各个领域,船舶工业、机械加工、石油化工等领域中玻璃管温度计都有所应用,其需求量和使用量都非常巨大。但是在玻璃液体温度计给人们带来便利的同时,其自身所具有的检定周期性给相关检定部门带来了诸多困难。由于数量巨大,检定人员的工作量随之增大,加上检测方法是依靠人工实现温度计的读取,这种方法会造成读数人员工作疲劳,效率较低,有较大的读数误差。
3.当今世界对于测量的方式要求更加智能化,减少人员干扰,提高自动化和测量效率。利用机器视觉技术对玻璃液体温度计读数进行识别成为主流,如重庆科技学院的向毅等对温度计图像进行霍夫变换,提取温度计的刻度线和水银柱的特征信息,根据刻度线间的位置关系确定单位像素对应的温度值,计算水银柱的长度,最终计算出温度计的读数;广东工业大学的李宁等首先计算出采集到的水银温度计图像中沿水银柱方向上的每个像素所代表的温度值即温度标定值,然后通过图像处理得到图像中水银柱的长度,乘以温度标定值,再加上起始温度得到温度计的实际温度示数;中北大学的郝争辉等首先从温度计图像中提取出水银温度计的感温液柱,再利用两个刻度线间的图像像素和温度差值计算得到像素对应的温度比例系数,最后依据感温液柱位置与刻度线的位置信息以及温度比例系数计算得到温度计的读数值。
4.从目前利用机器视觉技术对玻璃液体温度计读数进行识别的研究来看,绝大部分方法都需要将温度计感温液柱从背景图像中分离出来,通过图像单个像素对应的温度值与感温液柱长度最终获得温度计的读数值。
技术实现要素:5.针对背景技术中存在的不足,本发明的目的在于提供一种基于图像处理技术的玻璃液体温度计自动读数方法,通过对玻璃液体温度计图像进行倾斜校正,提取感温液柱截止点及其最邻近的两条刻度线,根据感温液柱截止点和其最邻近的两条刻度线间的比例关系以及温度计的分度值、温度计图像中的第一个主刻度值计算得到温度计的读数。
6.为达到上述目的,本发明采用如下技术方案:
7.具体按照下述步骤实施:
8.步骤1:对原始图像进行图像二值化处理;
9.步骤2:获取部分温度计刻度线,计算长刻度线的长度和短刻度线的长度;
10.步骤3:获取短刻度线中心坐标,并求取短刻度线中心坐标拟合成的直线的倾角;
11.步骤4:获取感兴趣区域子图像并进行摆正处理;
12.步骤5:获取刻度线区域子图像和刻度值区域子图像;
13.步骤6:在刻度线区域子图像求取各刻度线的中心横坐标以及感温液柱截止点的横坐标,并确定与此截止点最邻近的左右两条刻度线;
14.步骤7:对刻度值区域子图像中最左侧的刻度值进行字符识别,并寻找与该刻度值区域中心横坐标最近的主刻度线;
15.步骤8:根据温度计的分度值、感温液柱截止点与各刻度线的位置关系,计算得到玻璃液体温度计的最终读数。
16.本发明的有益效果是:
17.1.本发明利用温度计短刻线中心进行最小二乘线性拟合求取温度计倾斜角度,对温度计图像进行倾斜校正,而不需要运算量大的hough变换进行倾斜角度计算,提高了图像处理的速度和读数效率。
18.2.本发明利用提取的感温液柱截止点及其最邻近的两条刻度线间的比例关系、感温液柱截止点最邻近的左侧刻度线到温度计图像中第一个主刻度线间的序号差、温度计图像中第一个刻度值以及温度计的分度值就可计算出温度计的读数,不需要单独提取出感温液柱,也不需要计算整条感温液柱的长度,更不需要求取温度标定值,提高了温度计的读数精度。
19.3.本发明只需识别温度计图像中的第一个刻度值而不需要识别感温液柱截止点附件的刻度值,降低了图像处理算法的复杂性,提高了温度计的读数效率。
附图说明
20.图1是本发明的玻璃液体温度计自动读数整体流程图。
21.图2是本发明的待进行读数的玻璃液体温度计原始图像。
22.图3是本发明的预处理后的玻璃液体温度计二值图像。
23.图4是本发明的部分短刻度线的中心标记图像。
24.图5是本发明的温度计感兴趣区域图像。
25.图6是本发明的摆正后的温度计感兴趣区域图像。
26.图7是本发明的刻度线区域子图像。
27.图8是本发明的刻度值区域子图像。
28.图9是本发明的所有刻度线中心标记图像。
29.图10是本发明的感温液柱截止点水平方向位置及其最邻近左右刻度线示意图。
30.图11是本发明的最左端的刻度值及对应的主刻度线示意图。
31.图12是本发明的温度计自动读数结果图像。
具体实施方式
32.下面结合附图和具体实施方式(实施例)对本发明作进一步说明,但并不作为对本发明限制的依据。
33.如图1所示,本发明方法的步骤是:
34.步骤1:对原始图像进行图像二值化处理。
35.读取如图2所示的待进行读数的玻璃液体温度计原始图像src,对原始图像采用经
实验确定的固定阈值进行二值化处理,得到二值化处理后的图像bw。
36.步骤2:获取部分温度计刻度线,计算长刻度线的长度和短刻度线的长度。
37.对二值图像bw进行轮廓检测,计算每个轮廓ci的最小外接矩形的高度hi以及轮廓ci的高度hi和宽度wi的比值即高宽比ri,i=1,2,3,
…
,n1,n1为二值图像bw中的轮廓个数。当某个轮廓ci的最小外接矩形高度hi大于阈值h
low
且该轮廓的高宽比ri大于r
low
时,则判定该轮廓ci在二值图像bw对应的区域为刻度线,轮廓ci的最小外接矩形高度hi则为该轮廓对应的刻度线的长度li,h
low
和r
low
通过实验得到,本实施例中h
low
=20和r
low
=10。由于某些刻度线与温度计的感温液柱相连,根据以上刻度线的判定规则不能被判定为刻度线,因此所有轮廓判定后只能得到部分刻度线。对获得的部分刻度线按长度进行降序排序,将降序排列后的刻度线中第1条刻度线的长度作为长刻度线的长度l
long
,将降序排列后的刻度线总数的后p%的刻度线长度均值作为短刻度线的长度l
short
,p在50~70间取值。
38.步骤3:获取短刻度线中心坐标,并求取短刻度线中心坐标拟合成的直线的倾角。
39.从步骤2中获得的刻度线中,依据各选刻度线的长度将其值处于区间[l
short-th1,l
short
+th1]范围内的刻度线判定为短刻度线并获取短刻度线的中心坐标,其中th1根据实验确定,本实施例中th1=3。对所有刻度线判定后,得到短刻度线及其中心,如图4所示。利用最小二乘法对各短刻度线的中心坐标进行线性拟合得到拟合直线,解算出拟合直线的直线倾角θ。
[0040]
步骤4:获取感兴趣区域子图像并进行摆正处理。
[0041]
在如图3所示的二值图像bw中寻找非零区域,并构建此非零区域的垂直边界最小外接矩形brect,从二值图像bw中裁剪出外接矩形brect区域内的图像得到温度计感兴趣区域图像roiimg,如图5所示。利用步骤3中计算出的直线倾角θ对感兴趣区域子图像roiimg进行旋转摆正,得到摆正后的温度计感兴趣区域图像rotimg,如图6所示。
[0042]
步骤5:获取刻度线区域子图像和刻度值区域子图像。
[0043]
在摆正后的温度计感兴趣区域图像rotimg中进行轮廓检测,计算每个轮廓ccj的垂直边界最小外接矩形的高度hj以及轮廓ccj的垂直边界最小外接矩形的高度hj和宽度wj的比值即高宽比rj,j=1,2,3,
…
,n2,n2为图像rotimg中的轮廓个数。当轮廓ccj的垂直边界最小外接矩形的高宽比rj大于r
low
且高度hj处于区间[l
long-th2,l
long
+th2]时,则判定该轮廓ccj在图像rotimg对应的区域为长刻度线;当轮廓ccj的垂直边界最小外接矩形的高宽比rj大于r
low
且高度hj处于区间[l
short-th2,l
short
+th2]时,则判定该轮廓ccj在图像rotimg对应的区域为短刻度线,其中th2通过实验确定,r
low
取值与步骤2中的r
low
取值相同,l
long
和l
short
为步骤2中得到的长刻度线的长度和短刻度线的长度,在本实施例中th2=5,r
low
=10。图像rotimg中所有轮廓判定后,求取长刻度线轮廓垂直边界最小外接矩形左上角端点纵坐标均值ytop
long
和左上角端点纵坐标均值ybot
long
以及短刻度线轮廓垂直边界最小外接矩形左上角端点纵坐标均值ytop
short
和左上角端点纵坐标均值ybot
short
。在图像rotimg中,将纵坐标范围在[ytop
long
,ybot
long
]的部分截取为含有刻度线和感温液柱的刻度线区域子图像slimg,如图7所示;将纵坐标大于ybot
long
的部分截取为只含有刻度值的刻度值区域子图像svimg,如图8所示。
[0044]
步骤6:在刻度线区域子图像求取各刻度线的中心横坐标以及感温液柱右端点的横坐标,并确定与此端点最邻近的左右两条刻度线。
[0045]
在如图7所示的刻度线区域子图像slimg中,按从左到右的顺序统计图像中每列像素非0像素个数并存入长度为刻度线区域子图像slimg列数的数组,按数组元素索引号从小到大的顺序搜索各数组元素值。如果数组元素值大于短刻度线长度l
short
的一半,则此数组元素索引号即为第一条刻度线的左侧横坐标,继续向后搜索,直到数组元素值小于短刻度线长度l
shor
的一半,则此数组元素的前一个元素对应的索引号为第一条刻度线的右侧坐标,求取第一条刻度线的左侧横坐标和第一条刻度线的右侧横坐标的均值,得到第一条刻度线的中心横坐标。依照求取第一条刻度线的中心横坐标的方法依次向后搜索,直到遍历数组所有元素,则得到从左至右顺序排列的全部刻度线中心横坐标。在刻度线区域子图像slimg中标记出的所有刻度线中心位置如图9所示。
[0046]
按从左到右的顺序统计刻度线区域子图像slimg每列像素非0像素个数并存入长度为刻度线区域子图像slimg列数的数组,数组元素值从非0变到0时的数组元素下标即为感温液柱截止点的横坐标。遍历刻度线的横坐标与感温液柱右端点横坐标进行对比,获得位于感温液柱截止点左右两侧的刻度线line1和line2。感温液柱截止点位置及其最近邻左右刻度线示意如图10所示。
[0047]
步骤7:对刻度值区域子图像中最左侧的刻度值进行字符识别,并寻找与该刻度值区域中心横坐标最近的主刻度线。
[0048]
对刻度值区域子图像svimg进行轮廓检测,获得刻度值字符轮廓。求取各字符轮廓外接矩形中心,合并中心横坐标差值较小的轮廓,再求取合并轮廓的外接矩形中心。本实施例中,将中心横坐标差值小于200像素的轮廓进行合并。将轮廓合并后的所有轮廓外接矩形中心横坐标按照升序排列,外接矩形横坐标最小的轮廓的外接矩形区域即为最左端的刻度值区域。对最左端的刻度值区域中数字进行识别。将最左端的刻度值区域中心横坐标与步骤6中获得的各刻度线的中心横坐标逐一进行比较,差值最小的刻度线即为与最左端刻度值区域最近的主刻度线line0。用矩形标出的最左端刻度值与其对应的主刻度线如图11所示。采用支持向量机对最左端的刻度值各数字进行识别,并采用10进制加权法进行计算即可得到刻度值sv的值。
[0049]
步骤8:根据温度计的分度值、感温液柱截止点与各刻度线的位置关系,计算得到玻璃液体温度计的最终读数。
[0050]
首先计算步骤6中感温液柱截止点最邻近的左刻度线line1与步骤8中识别出的最左侧的刻度值sv对应的主刻度线line0在刻度线区域子图像slimg中的排列序号差值tip,然后计算感温液柱截止点与其最邻近的左侧刻度线line1的横坐标之差与感温液柱截止点最邻近的的两条刻度线line2和line1的横坐标之差的比值tdp,则玻璃液体温度计的最终读数t可通过下式计算得到:
[0051]
t=sv+dv
×
(tip+tdp)
[0052]
其中,dv为玻璃液体温度计的分度值。
[0053]
将计算结果t标注在原图的左上角得到的结果图像如图12所示。
[0054]
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。