来自Kinect的深度图像:索引图像?

时间:2014-09-23 09:56:53

标签: matlab image-processing kinect matlab-cvst

我对如何在MATLAB中处理Kinect v1的深度图像感到有些困惑。我正在使用这些(http://www.mathworks.com/matlabcentral/fileexchange/30242-kinect-matlab)mex文件从已保存的* .oni文件中读取我的深度图像。结果,我得到分辨率640x480或320x240的图像。图像中的值大致在0-4500之间。

我现在在这里处理什么类型的图像?读这个http://www.mathworks.de/de/help/matlab/creating_plots/working-with-8-bit-and-16-bit-images.html我认为它必须是一个索引图像,因为它不是RGB图像,并且值不是线性缩放的。另一方面,我相信图像中的值是以毫米为单位的Kinect焦平面的实际距离,因此具有指数以外的含义。

当我想使用

查看图像时
imshow(depthMap);

我只看到黑色。我必须使用像

这样的东西
imshow(depthMap, [0 9000])

实际看到的东西。究竟是为什么呢? imshow(depthMap)对值的作用是什么? 您是否认为在我的算法中使用depthMap是正确的,但是使用

查看它
imshow(depthMap, [0 9000])

1 个答案:

答案 0 :(得分:2)

depthMap不是索引图像,但正如您所信,每个像素都以mm为单位编码与焦平面的距离。

要使用imshow显示此类图片,我建议默认情况下使用自动缩放,即imshow(depthMap,[]),或使用固定比例(正如您当前所做),如果有用的话意味着最小和最大。打开颜色条,通过GUI或调用colorbar()可视化颜色和深度之间的对应关系。

没有比例参数的

imshow会将颜色限制缩放为[0 1],除非图像属于类uint8,其中颜色限制设置为[0 255]。换句话说,在没有比例参数的情况下,0和更低的值被映射到黑色,1和更高的值被映射到白色。另请参阅caxis