我已经做了我的应用程序相同。所以在这里简要介绍一下我做了什么:
保存数据(C#/ Kinect的SDK):
如何保存深度图像:
MultiSourceFrame mSF = (MultiSourceFrame)reference;
var frame = mSF.DepthFrameReference.AcquireFrame();
if (frame != null)
{
using (KinectBuffer depthBuffer = frame.LockImageBuffer())
{
Marshal.Copy(depthBuffer.UnderlyingBuffer, targetBuffer,0, DEPTH_IMAGESIZE);
}
frame.Dispose();
}
写缓冲区到文件:
File.WriteAllBytes(filePath + fileName, targetBuffer.Buffer);
为了快速节省,想一想环形缓冲器。
看书的数据(Matlab的)
如何获得z_data:
fid = fopen(fileNameImage,'r');
img= fread(fid[IMAGE_WIDTH*IMAGE_HEIGHT,1],'uint16');
fclose(fid);
img= reshape(img,IMAGE_WIDTH,MAGE_HEIGHT);
如何让XYZ-数据:
对于想想针孔模型公式将uv坐标转换为xyz (formula)。
要获取cameramatrix K,您需要校准相机(matlab calibration app)或从Kinect-SDK(var cI= kinectSensor.CoordinateMapper.GetDepthCameraIntrinsics();
)获取相机参数。
coordinateMapper
与SDK:
从Kinect的SDK获得XYZ的方式是直接相当容易。为此,这link可以帮助你。只需通过kinect sdk获取缓冲区,并将rawData与coordinateMapper
转换为xyz。之后将它保存为csv或txt,因此在matlab中读取很容易。