matlab生成深度图像,如何从深度图像和从Matlab获取的彩色图像生成3D点 Cloud

好问题 . 您应该使用Burrus的本教程 - 基本上您需要使用深度信息将颜色/深度质心转换为第三维 . 请注意,Kinect v1深度和颜色流稍有不匹配,因此也要考虑到这一点 .

教程可以在这里找到:http://nicolas.burrus.name/index.php/Research/KinectCalibration您也可以使用这位作者的作品:Khoshelham,K . 和Elberink,S . O.(2012) - 室内 Map 绘制应用的Kinect深度数据的准确度和分辨率

matlab代码应该是这样的:

% 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')

你可能感兴趣的:(matlab生成深度图像)