% All formulas and values from:
% Khoshelham, K., & Elberink, S. O. (2012).
% Accuracy and resolution of Kinect depth data for indoor mapping applications.
% Sensors (Basel, Switzerland), 12(2), 1437–54. doi:10.3390/s120201437
load('janFrameThousand.mat')
pc=zeros([size(D) 3]);
W=size(D,2);
H=size(D,1);
f=5.453;
for indWidth = 1:W
for indHeight= 1:H
% copy z value
pc(indHeight,indWidth,3)=D(indHeight,indWidth);
% calc x value
pc(indHeight,indWidth,1)=-(pc(indHeight,indWidth,3)/f)*...
((indWidth-W/2)*0.0093+0.063);
% calc y value
pc(indHeight,indWidth,2)=-(pc(indHeight,indWidth,3)/f)*...
((indHeight-H/2)*0.0093+0.039);
end
end
X=pc(:,:,1);
% X=X(:);
Y=pc(:,:,2);
% Y=Y(:);
Z=-pc(:,:,3);
Z(Z==0)=NaN;
Surface=surf(X,Y,Z,'edgecolor','none','facecolor','interp');
lighting gouraud
camlight
% colormap(repmat(winter,20,1))
axis image
axis vis3d
xlabel('X axis')
ylabel('Y axis')
zlabel('Z axis')
2 回答
我从来没有试过在matlab中这样做,但我认为这就是你要找的:
http://es.mathworks.com/help/vision/ref/pcfromkinect.html
该工具位于Computer Vision System Toolbox™内 .
好问题 . 您应该使用Burrus的本教程 - 基本上您需要使用深度信息将颜色/深度质心转换为第三维 . 请注意,Kinect v1深度和颜色流稍有不匹配,因此也要考虑到这一点 .
教程可以在这里找到:http://nicolas.burrus.name/index.php/Research/KinectCalibration您也可以使用这位作者的作品:Khoshelham,K . 和Elberink,S . O.(2012) - 室内 Map 绘制应用的Kinect深度数据的准确度和分辨率
matlab代码应该是这样的: