MATLAB: How to segment depth image

depth imageImage Acquisition Toolboximage processingImage Processing Toolboximage segmentationkinectMATLAB

I have a depth image data obtained from kinect sensor in form of 424×512 unit 16 which contains an object. I want to segment only the object from the depth image. I have tried using pcfitplane using the coressponding point cloud data of the depth image but I was able to segment one plane. Could anyone please suggest me a way to segment only the object(a box) from the depth image?

Best Answer

Try this:
clc; % Clear the command window.
clear all;
close all;
workspace; % Make sure the workspace panel is showing.
format short g;
format compact;
fontSize = 15;
fprintf('Beginning to run %s.m ...\n', mfilename);
rgbImage = imread('color_image.png');
subplot(2, 2, 1);
imshow(rgbImage);
axis('on', 'image');
title('Original RGB Image');
s = load('meta_data.mat')
imgDepth = s.imgDepth;
subplot(2, 2, 2);
imshow(imgDepth, []);
impixelinfo
title('Depth Image');
subplot(2, 2, 3);
histogram(imgDepth);
grid on;
title('Histogram of Depth Image');
binaryImage = imgDepth > 1025 & imgDepth < 1050;
% Fill holes
binaryImage = imfill(binaryImage, 'holes');
% Take largest blob.
binaryImage = bwareafilt(binaryImage, 1);
subplot(2, 2, 4);
imshow(binaryImage, []);
impixelinfo
title('Binary Image');
fprintf('Done running %s.m ...\n', mfilename);