程序源代码下载地址:http://idav.ucdavis.edu/~okreylos/ResDev/Kinect/Download.html
运行这个程序需要安装 Vrui toolkit,下载地址为http://idav.ucdavis.edu/~okreylos/ResDev/Vrui/Download.html
Kinect2.2 要求Vrui-2.4-001及以上。
安装Vruitoolkit
1. 首先安装一些必须的工具。
sudo aptitude update
sudo aptitude install build-essential
sudo aptitude install zlib1g-dev mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev
2. 安装一些可选的库
sudo aptitude install libusb-1.0-0-dev libpng12-dev libjpeg62-dev libtiff4-dev libasound2-dev
sudo aptitude install libdc1394-22-dev libspeex-dev libogg-dev libtheora-dev libbluetooth-dev libopenal-dev
这些库可以与Kinect进行USB连接,下载保存图片为多种格式,记录和回放立体声,抓取视频,向互联网发送视频或音频,
3. 下载和安装Vrui
将下载好的安装包解压到~/src路径下, make ,make install即可安装完成
4. 测试
进入到ExamplePrograms文件夹下,make
运行bin文件夹下的ShowEarthModel
如果安装成功了,就可以显示一个地球模型
安装Kinect2.2
在~/src下解压安装包
make
make install
Kinect2.2的使用
针对单个Kinect
./bin/KinectUtil 可以列出连接到的Kinect设备
./bin/RawKinectViewer <camera index>
给出彩色图和深度图 可以进行标定,并生成一个二进制的IntrinsicParameters-<serial number>.dat文件
./bin/KinectViewer -c <camera index>给出重建后的结果
针对多个Kinect
为了合并多个Kinect摄像机的3D重建结果,首先要利用RawKinectViewer内标定各个摄像机。然后根据任意选取的世界坐标系外标定所有Kinect设备。
1 把标定目标放入所有待标定的Kinect设备的视野内
2 对每一个Kinect设备:
a 运行RawKinectViewer并拟合出深度流中标定目标图像的网格
b 保存但不投影网格,以接受一系列3D 结点.
c 将结点复制到文件KinectPoints-<serial number>.csv
3 新建一个文件TargetPoints.csv ,包含标定目标的3D interior corner positions
4 对每一个Kinect设备:
a 运行AlignPoints:
AlignPoints -OGKinectPoints-<serial number>.csv TargetPoints.csv
b 观察AlignPoints显示的误匹配点,如果误差太大则重复步骤2
c 将最终AlignPoints显示的最佳的拟合变换保存到ProjectorTransform-<serial number>.txt文件
5 在所有Kinect设备上运行KinectViewer。将显示所有3D视频,匹配上或多或少存在缝隙,这取决于之前标定的好坏。
此外,youtube上有视频演示,但是本人运行效果与视频上有一定差距,猜想也许是因为有个库不太兼容NVIDIA的显卡。