Kinect v1 (Microsoft Kinect for Windows v1 )彩色和深度图像对的采集步骤
一、在ubuntu下尝试
1. 在虚拟机VWware Workstation 12.0安装ubuntu14.04按照《Ubuntu安装Kinect v1驱动(openni、NITE、Sensor)及遇到的问题》安装了Kinect v1的驱动,但是最终运行示例出现的窗口和网址提供的不一样,右侧彩色图都是重叠起来的,并且一直在跳动。原因可能是由于kinect v1在虚拟机上驱动有问题,不能运行。
2. 在双系统的ubuntu14.04中按照《Ubuntu安装Kinect v1驱动(openni、NITE、Sensor)及遇到的问题》安装了Kinect v1的驱动,操作之后就可以运行了。但是保存下来的彩色和深度图像都是截屏生成的图像,而不是原始数据。然后利用rqt方法(《ROS视觉和图像-Kinect V1使用》)保存下来的彩色图和深度图均为640*480的三通道的图像,而深度图的原始图像应为16位的单通道图像。综上,ubuntu系统下无法保存深度图像的原始数据。
二、在window10系统下完成Kinect v1 的彩色和深度图像对的采集
Kinect v1的彩色和深度图像对window下采集需要的驱动和软件在百度网盘下载。链接:https://pan.baidu.com/s/1bpydLGb 密码:utjq。
1. 在windows下安装kinect_v1的驱动KinectSDK-v1.8-Setup.exe。
2. 通过usb2.0或者usb3.0连接kinect v1到电脑。
3. 打开KinectSaver文件夹下的KinectExplorer-D2D.exe。出现的界面如下所示:
4. 右下角有声音、加速度和tilt角度和Recording选项
选择Recording选项:
首先选择保存数据的盘符、文件夹名称
(eg:
Local Disk: D;会自动在D盘生成文件夹KinectData。
Folder Name: Test; 会自动在D:\KinectData\Test下生成两个文件夹Color和Depth)
然后color选择image,depth选择binary选项。
彩色图像保存的是位深度为32的bmp图像(应该是4通道图像,但是第4个通道没有数据,所以在matlab下显示的是3通道数据),
深度数据保存的是二进制的数据流(如果depth选择image直接保存的话,保存的深度图也是位深度为32位的bmp图像,不是原始数据,深度图原始数据为16位的单通道图像)。
5. 在D:\KinectData\Test路径下的深度数据是二进制的数据流需要处理得到真正的16位的单通道图像。
将D:\KinectData\Test\Depth\下的二进制的数据流文件重命名为test.binary。在matlab软件中新建一个脚本文件Kinectv1outputdepth.m。
%Kinectv1outputdepth.m clc clear all size_s=480*640; %输入的图像的大小 fid = fopen('test.binary'); R = fread(fid,'uint16'); %读入文件并转化为16位深度信息 fclose(fid); num=length(R)/size_s; %计算里面包含多少张图片 G = reshape(R, size_s,num); %把长向量转换为每张图片深度信息为一行的矩阵 for i=1:num eval(['S',num2str(i),'=','G(:,',num2str(i),');']) %逐行提取出深度信息行向量 eval(['data',num2str(i),'=','(reshape(S',num2str(i),',640,480))'';']) %把行向量转换为480*640的矩阵形式 eval(['data',num2str(i),'=','(uint16(data',num2str(i),'));']) %批量强制转换 %eval(['mirror',num2str(i),'=','fliplr(data',num2str(i),');']) %由于采集到的深度信息是镜像的,对其进行镜像恢复 end for i=1:num eval(['imwrite(data',num2str(i),',''data',num2str(i),'.png'');']) %循环保存深度图像 end
6. 最后将深度图像保存为位深度是16的png格式的深度图像。