本发明属于图像处理技术领域,特别是涉及一种基于视觉非接触的液位检测方法。
背景技术:
现有的液位测量方法中,包含接触式测量方法和非接触式测量方法,现有的这两种液位测量方法都存在相应的不足,例如,古老简单的浮球式液位测量方法,测量精度容易受浮力影响且会对液体质量产生影响,现有的非接触式的液位测量方法也存在对传感器精密度要求高、对环境依赖性强、性价比低等问题,例如,声波对含有蒸汽的环境效果变差、光电折射需要靠输出和接收的信号量方式等。
技术实现要素:
本发明的目的在于克服现有技术的不足,提供一种基于视觉非接触的液位检测方法。
本发明的目的是通过以下技术方案来实现的:基于视觉非接触的液位检测方法,包括:
s1.安装相机,并标定相机的内参和外参,建立以相机为原点的世界坐标系,并计算所述世界坐标系和相机坐标系的转换关系;
s2.在溶液底部放置棋盘格,利用相机对溶液进行拍摄,得到包含所述棋盘格的液面图像,然后对液面图像中的棋盘格进行角点检测,计算检测到的角点在所述世界坐标系中的坐标信息;
s3.根据所述世界坐标系、液面图像中角点的坐标信息和棋盘格的角点距离信息,利用折射原理进行建模,然后计算溶液的液位信息。
优选的,所述s1中世界坐标系和相机坐标系的转换关系为:
式中,
优选的,所述s2中对液面图像中的棋盘格进行角点检测包括:
对于液面图像中任一待检测像素,获取以该待检测像素为中心、预设半径的边缘上的所有像素作为边缘像素;
分别计算各边缘像素的灰度值与该待检测像素的灰度值的差值;
统计所述差值大于第一阈值的边缘像素的数量,若数量大于第二阈值,则该待检测像素为液面图像中的角点。
优选的,所述s3中计算溶液的液位信息包括:
定义角点a和角点b为棋盘格上相邻的两个角点,角点a1为角点a在液面图像中对应的角点,角点b1为角点b在液面图像中对应的角点,l为角点a和角点b之间的距离,
计算光线依次经点o和角点a1时的入射角的余角
则光线依次经点o和角点a1时的折射角
则溶液的液位信息的计算公式为:
式中,h为溶液的液位信息。
优选的,所述s3中计算溶液的液位信息包括:
定义角点a和角点b为棋盘格上相邻的两个角点,角点a1为角点a在液面图像中对应的角点,角点b1为角点b在液面图像中对应的角点,l为角点a和角点b之间的距离,
计算光线依次经点o和角点a1时的入射角的余角
则光线依次经点o和角点a1时的折射角
则,
定义
计算n组x和y数据,即:
误差方程为:
在误差方程中对h求偏导:
溶液的液位信息的计算公式为:
式中,
本发明的有益效果是:
(1)本发明通过折射率原理和相机标定结果计算出液位信息,不依赖于精密度高的仪器,性价比高,操作简单,只要约束在可视化条件下即可,对环境依赖性低,稳定性强;
(2)本发明中基于orb算法检测格子角点,提升了此场景下算法的实时性;
(3)本发明中通过观测矩阵的最小二乘计算最终的液位信息,提高了液位测量的精度。
附图说明
图1为本发明的一种流程示意图;
图2为相机坐标系和世界坐标系的示意图;
图3为像平面中坐标的示意图;
图4为液面图像中角点检测原理的示意图;
图5为液位信息计算的原理示意图。
具体实施方式
下面将结合实施例,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
参阅图1-5,本发明提供一种基于视觉非接触的液位检测方法:
如图1所示,基于视觉非接触的液位检测方法,包括:
s1.安装相机,并标定相机的内参和外参,建立以相机为原点的世界坐标系,并计算所述世界坐标系和相机坐标系的转换关系。
步骤s1中世界坐标系和相机坐标系的转换关系的推导过程为:
如图2所示,相机的内参有焦距
由于相机平面与像平面平行,根据相似比可得:
写成矩阵形式即为:
世界坐标系中平行面上坐标由相似比可得:
由于世界坐标系中平面都是通过旋转平移到与相机坐标系平行,因此可得相机坐标系和世界坐标系的转换关系,通过此转换关系可以得到下列的等式:
式中,
s2.在溶液底部放置棋盘格,利用相机对溶液进行拍摄,得到包含所述棋盘格的液面图像,然后对液面图像中的棋盘格进行角点检测,计算检测到的角点在所述世界坐标系中的坐标信息。
本实施例中液面图像中棋盘格的角点通过orb算法原理进行检测,如图4所示。
即,对于液面图像中任一待检测像素,获取以该待检测像素为中心、半径为r(预设半径)的边缘上的所有像素作为边缘像素;分别计算各边缘像素的灰度值与该待检测像素的灰度值的差值,若所述差值大于第一阈值thr则将相应的边缘像素计入集合p中;统计集合p中边缘像素的数量,若数量大于第二阈值thr1,则该待检测像素为角点。
s3.根据所述世界坐标系、液面图像中角点的坐标信息和棋盘格的角点距离信息,利用折射原理进行建模,然后计算溶液的液位信息。
在一些实施例中,所述步骤s3中计算溶液的液位信息包括:
定义角点a和角点b为棋盘格上相邻的两个角点,角点a1为角点a在液面图像中对应的角点,角点b1为角点b在液面图像中对应的角点,l为角点a和角点b之间的距离,
计算光线依次经点o和角点a1时的入射角的余角
则光线依次经点o和角点a1时的折射角
则溶液的液位信息的计算公式为:
式中,h为溶液的液位信息。
在一些实施例中,所述步骤s3中计算溶液的液位信息包括:
定义角点a和角点b为棋盘格上相邻的两个角点,角点a1为角点a在液面图像中对应的角点,角点b1为角点b在液面图像中对应的角点,l为角点a和角点b之间的距离,
计算光线依次经点o和角点a1时的入射角的余角
则光线依次经点o和角点a1时的折射角
则,
定义
计算n组x和y数据,即:
误差方程为:
在误差方程中对h求偏导:
溶液的液位信息的计算公式为:
式中,
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。