欢迎来到天天文库
浏览记录
ID:37859607
大小:498.00 KB
页数:18页
时间:2019-06-01
《Kinect+OpenNI学习笔记之14(关于Kinect的深度信息)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、前言 由于最近要研究kinect采集到的深度信息的一些统计特征,所以必须先对kinect深度信息做进一步的了解。这些了解包括kinect的深度值精度,深度值的具体代表的距离是指哪个距离以及kinect深度和颜色扫描范围等。经过查找资料可以解决这些问题,并且后面通过实验也验证了这些问题的答案。 开发环境:开发环境:QtCreator2.5.1+OpenNI1.5.4.0+Qt4.8.2+OpenCV2.4.3 实验基础 首先来看下Kinect性能的基本参数,如下图所示: Kinect在使用时,微软官方推荐的距离为1220
2、mm(4’)~3810mm(12.5’),网友heresy在他的博文Kinect+OpenNI的深度值中统计过,kinect在距离为1.0m时其精度大概是3mm,而当距离是3.0m时,其精度大概是3cm,因此当kinect在官方推荐的距离范围内使用是,如果是1.2m时,其精度应该在3mm附近,如果是3.6m时其精度就大于3cm了,因此距离越远,其深度值精度越低。另外,通过OpenNI获取到的深度信息(即z坐标)的单位是mm,这一点在程序编程中要注意,且一般的深度值用12bit(其实是可以用13bit表示的)表示,即最大值为4095,也就
3、是代表4.095m,所以平时我们采集到的深度数据如果需要扩展到灰度图,可以乘以一个因子255/4095(为了加快该结果,一般设置为256/4096,http://ming.ttplay8.cn即转换后的灰度值每变化1,代表kinect采集到的深度值变化了16mm,如果当人的距离为1米左右时,本来精度是3mm,现在经过归一化后精度确更加下降了,这时候拿这个距离值来做算法不懂会不会有影响,当然了,拿来做灰度图像的显示肯定是OK的),最后如果其深度值为0表示该位置处侦测不到像素点的深度。 Kinect的侦测范围入下图所示: 可以看出,
4、kinect的水平侦测范围为57度(即以sensor为中心,左右各28.5度)。垂直范围为43度(同理,以sensor为中心,上下各21.5度)。如果人体活动超过了kinect侦测范围,kinect还会自动追焦27度,即马达能够上下旋转27度(因为涉及到专利的问题,OpenNI驱动没有这个功能,微软SDK可以),因此理论上上下扫描的范围应该为97度(27+27+43)。但是水平方向上虽然有马达,可以手动掰动kinect,不过在驱动中并没有对应的水平角度旋转的API,即使是微软的SDK也一样。 Kinect的倾斜角度如下图所示:
5、下面来解释Kinect采集到的深度值的具体含义: Openni的原始驱动类中的depth_metadata_其实也是一副图像,图像的坐标表示空间点的投影坐标,图像坐标里存的值是对应空间点投影坐标的深度值。该深度值并不是指空间中对应像素点到深度sensor点之间的距离(即2点直接的距离),而是指空间中对应像素点到kinect传感器所在平面的距离(即是一个垂直距离),因为前面已经提到,kinect是可以上下旋转的。现假设三种情况,第一:我们不上下旋转kinect,即保持kinect传感器平面与水平地面垂直,这时像素点X深度值为a;第二:将
6、kinect往上旋转一个角度(当然了,这个角度值小于27度),http://feiche.ttplay8.cn这时候同样一个像素点X的深度值为b;第三:将kinect往下旋转一个角度Beta角度,这时候X的深度值为c;你会发现,a,b,c这3者不一定相等。 OpenCV知识点总结: 当Mat中数据的类型为CV_16UC1的时候,这里的16U并不是指unsignedint,而是指的是unsignedshortint,因为在OpenCV框架中,int不是16位的,而是32位的。没想到我使用OpenCV一年了,今天才弄清楚这个。 实
7、验结果: 该实验是测试一个垂直摆放的柜子,该柜子一个平面上的点本来与kinect之间的距离是相等的,现在测试kinect在不同上下旋转角度的情况下,这个柜子上的点的深度值是否一样。首先将kinect往上旋转一个角度,即kinect平面与水平面之间有一个夹角。实验结果如下: 图中显示的数字为鼠标所在位置像素的真实深度值。 柜子中同一个平面上另一个像素点的深度值结果如下: 由此可以看出,同一个垂直柜子平面上的点像素值相差30cm以上(其实从图中深度图的颜色信息就可以看出,该柜子深度图像都是倾斜的,因为kinect本身就有转
8、角)。 如果把kinect所在的平面摆正,即与水平面之间没有夹角,则柜子上某一点的深度值如下图所示: 同一垂直平面上另一个点的如下所示: 由此可以看出,其深度值变化不大。 上面的实验结果
此文档下载收益归作者所有