How to create a 3D point cloud from a depth image and a color image from Matlab

I have 2 sets of data received from kinect 1- a deep image of size 480 * 640 (uint16) from a scene 2- color image with the same size (480 * 640 * 3 singles) from the same scene The question is how to combine this data to create colored 3D point clouds with PLY format in Matlab. I need to say that, unfortunately, I no longer have access to kinect, and I should use only this data.

+4
source share
2 answers

I never tried to do this in Matlab, but I think this is what you are looking for:

http://es.mathworks.com/help/vision/ref/pcfromkinect.html

Computer Vision System Toolbox ™.

+1

. Burrus - , / 3- . , Kinect v1 , .

: http://nicolas.burrus.name/index.php/Research/KinectCalibration : Khoshelham, K., and Elberink, S. O. (2012) - 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), 143754. 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')
0

All Articles