How can I segment depth image?

1 visualizzazione (ultimi 30 giorni)
Ajith Kumar Rajendra
Ajith Kumar Rajendra il 23 Dic 2020
Commentato: Image Analyst il 24 Dic 2020
I have a depth image data obtained from kinect sensor in form of 424x512 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?

Risposta accettata

Image Analyst
Image Analyst il 23 Dic 2020
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);
  6 Commenti
Ajith Kumar Rajendra
Ajith Kumar Rajendra il 24 Dic 2020
Modificato: Ajith Kumar Rajendra il 24 Dic 2020
Say, for instance I want to measure the length and breadth of the object that I mentioned. To do so, choosing the points on the edges/sides would help me to measure length or breadth. Since, the box is rectangular so, I thought if I could find furthest two points(i.e. corners) on the edges of the same side lying in the same vertcial/x-axis, I could find the length and similary other two points to find breadth. In other words, measuring the boundaries. Am I right or this way is not possible to actually measure length and breadth of the object? If I'm wrong please correct me.
Image Analyst
Image Analyst il 24 Dic 2020
You can either find the bounding box or find the centroid and the boundary and the distance of the centroid to all the boundary pixels, then use findpeaks() to find the 4 corners. I'm attaching shape recognition demos.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by