一个深度摄像头可以输出rgb数据和depth数据,而pointcloud数据是由rgb数据和depth数据结合生成出来的。
rgb图:以rgb24或者rgb888为例,一个像素的rgb数据为3个字节,每个字节里面有8位,可表示为0~255级一共256级强度。
depth图:一个像素为一个double类型的长度,这个长度可以介绍为障碍到摄像头中心点的距离,
pointcloud:每个像素不光有rgb数据,还有以摄像头中心为原点的坐标系中的x,y,z三个double类型的值。而这三个值(x,y,z)就是以depth像素中的额长度值计算出来。
一个pc像素最少要经过深度图对应像素的3次浮点运算才能得出xyz
可想而知:点云图的生成如果只用软件来计算的话,会占用大量的cpu资源,尤其当分辨率和帧数越高,每秒占用的cpu资源就越可怕。
例如:I7双核CPU,生成点云图
kinect v1:占140%,orbbec mini_s:基本上就可以达到160%; realsensor r200 是100%。
比较好的解决措施就是将这些大量的浮点运算由摄像头硬件来实现,或者加个GPU。