李轶博
摘要:目的:采用非接触的方法检测墙地面或墙角的垂直度;方法:利用Kinect获取检测墙面或墙角的深度图像信息,通过两平面法向量点乘数值的大小确定平面间夹角的数学方法,来判断墙地面或墙角的垂直度;结果:通过Kinect1.0获取某墙角的点云数据,在VS2013平臺下实现该文算法,通过与实测数据进行对比,三个面的三个角度的检测误差指标分别为1.45、1.37、0.1,检测耗时4.7S;结论:实验验证了该方法测得的精度较高,并且实现起来方便,速度快,方法有效可行。
关键词:Kinect;墙面垂直度;检测;平面法向量;点乘
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)26-0179-02
1 概述
在许多地方,需要检测两个相交面的垂直度,如在房屋的装修中墙角的垂直度就是一个重要指标。目前常规的墙面垂直度检测方法有铅垂法和量尺法等,但它们都有一些缺陷,如铅垂法,在装修过程中室内可能没有可以悬挂铅垂线的地方,再如使用量尺法时,工作中需要人工将尺贴靠在墙面上,工作起来比较麻烦。另外量尺法属于接触式测量方法,会污染墙面。
Kinect是近几年才出现的一种新型视觉传感设备,与普通摄像机不同之处在于,它除了普通摄像头外,还有集成了一个双摄像头,能够获取深度信息,即3D信息。如果把Kinect引入到建筑墙面的垂直度检测中来,可以发挥其双目立体特长以及计算机的强大计算能力,会使墙面检测的质量有大幅度提高,另外无需多人配合,能够提高检测人员的工作效率,节约人力,因而本研究有较大的实用价值。
2 深度图像获取与处理
2.1 图像获取
图像获取采用Kinect装置,其有3个镜头,中间镜头是一个普通的RGB彩色摄像机,通过它可以获取被测对象的普通彩色图像;左边摄像头是一个红外线发射器,右边摄像头是一个红外感应器,左右这两个摄像头构成了3D深度感应器。该文中带深度信息的图像就是通过这两个摄像头获取的,存成深度点云文件。
2.2 图像数据处理
这里以三个面构成的墙角为例进行分析和介绍,主要要进行分割处理。通过Kinect获取的墙角原始点云图像的三个面是互相连接的,要想利用后面的算法进行三个面相互夹角的计算,首先需要对上述图像进行分割,然后才能分别拟合出各自的平面方程,点云图像的分割可以直接采用PCL点云库的分割功能。这里的点云分割采用的是区域生长分割法,该方法基本思想是:(1)设置一空的像素点序列和空的聚类区域,选好初始像素后,将其加入到像素点序列中,并搜索邻域点。(2)依据点的曲率值对点进行排序。区域生长算法是从曲率最小的点开始生长的,这个点就是初始像素点,初始像素点所在的区域即为最平滑的区域,从最平滑的区域开始生长可减少分割片段的总数,提高效率。(3)对每一个邻域点,比较邻域点的法线与初始像素点的法线之间的夹角,小于平滑阈值的将其加入到当前区域,删除当前初始像素点。(4)循环执行以上步骤,直到初始像素序列为空。至此,墙面点云图像就会被分割成三个点云面。
3 垂直度检测算法
3.1 垂直度检测算法
直度检测实质上就是求两个面的夹角。数学上求解两个面的夹角,可以通过两个平面的法向量的点乘数值的反三角函数获得。
平面的一般表达式为:
3.2 点云面的拟合
在第2.1部分已经把墙角深度图像的点云分隔成了三个点云面,如果能够把这三个点云面拟合出具体的平面方程,再估算出每个面的法向量,就可以利用上面的算法求出面与面之间的夹角,从而进行垂直度判断了。
在进行平面拟合之前,可以先采用主成分分析方法对点云数据进行降维处理,去除一些冗余数据,简化问题。之后采用最小二乘法进行点云面的拟合。最小二乘法平面方程拟合计算的实现目标就是使所有点到该平面的距离和最小,通过求解方程组,求出平面方程系数,即完成云平面的拟合。
4 实验与分析
(1) 本实验使用微软的Kinect1.0采集墙面的深度点云图像,这里取的是三面墙构成的墙角深度图像,如图1所示。
(2) 在Visual Studio2013平台下,通过PCL点云库里的区域生长分割法来分割三个墙面,得到的结果如图2所示。
(3) 通过最小二乘法分别拟合各个面的平面方程,求出法向量,计算法向量点乘结果,再通过余弦定理求出两条法线之间夹角。
(4) 实际测量墙角三个面的角度与本实验监测结果进行对比,对比结果如表1所示。
通过表中的数据可以看出,本实验方法具有较高的精度,并且方法比较简单,方便操作,因而可行性高。实验中存在的误差主要有几个方面的原因:(1)光照影响。(2)Kinect精度。(3)实际测量误差。若用更高精度的Kinect,并减少光照的影响,实验精度会得到进一步提高。
5 结束语
本文在介绍Kinect的基础上,提出了一种墙面垂直度检测的方法,通过求取检测平面的法向量的夹角,来判断墙面垂直度是否达到预定的指标要求。本文算法是基于Kinect1.0,在Visual Studio2013编程环境下,采用C++结合PCL点云库实现的,通过实验验证,说明本方法具有较高的检测精度,能够较准确判断墙体的垂直程度。
参考文献:
[1] 刘路平. Kinect尺寸测量方法研究[D].哈尔滨工业大学,2017.
[2] 刘鑫,许华荣,胡占义.基于GPU和Kinect 的快速物体重建[J].自动化学报,2012,38(8):1288-1297.
[3] 程彦荣.基于Kinect的三维区域测量技术研究[D].东华大学,2016
[4] 浮单单,周绍光.基于主成分分析的点云平面拟合技术研究[J].绘图工程,2014,2(4):20-23.
[通联编辑:光文玲]