我已經做了我的應用程序相同。所以在這裏簡要介紹一下我做了什麼:
保存數據(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中讀取很容易。