How can I segment depth images

1 view (last 30 days)
Zara Khan
Zara Khan on 12 Oct 2021
Commented: Zara Khan on 14 Oct 2021
I have read depth imges and converted them into grayscale. Now how to segment the hand region properly.

Answers (1)

yanqi liu
yanqi liu on 12 Oct 2021
sir,please check the follow code to get some information
clc; clear all; close all;
img = imread('https://ww2.mathworks.cn/matlabcentral/answers/uploaded_files/764791/img27.png');
bw = imbinarize(img,'adaptive','ForegroundPolarity','dark','Sensitivity',0.8);
bw = imclose(bw, strel('line', 5, 0));
bw = imclearborder(bw);
bw = bwareafilt(bw, 1);
bw = imclose(bw, strel('line', 25, 0));
bw = imfill(bw, 'holes');
bw = imopen(bw, strel('line', 15, 0));
bw = bwareafilt(bw, 1);
[r,c] = find(bw);
rect = [min(c) min(r) max(c)-min(c) max(r)-min(r)];
figure; imshow(img);
hold on; rectangle('position', rect, 'EdgeColor', 'g', 'LineWidth', 2)
  8 Comments
yanqi liu
yanqi liu on 14 Oct 2021
clc; clear all; close all;
img = imread('https://ww2.mathworks.cn/matlabcentral/answers/uploaded_files/764791/img27.png');
bw = imbinarize(img,'adaptive','ForegroundPolarity','dark','Sensitivity',0.8);
bw = imclose(bw, strel('line', 5, 0));
bw = imclearborder(bw);
bw = bwareafilt(bw, 1);
bw = imclose(bw, strel('line', 25, 0));
bw = imfill(bw, 'holes');
bw = imopen(bw, strel('line', 15, 0));
bw = bwareafilt(bw, 1);
[r,c] = find(bw);
rect = [min(c) min(r) max(c)-min(c) max(r)-min(r)];
figure; imshow(img);
hold on; rectangle('position', rect, 'EdgeColor', 'g', 'LineWidth', 2)
% make mask
figure; imshow(bw)
img1 = img; img2 = img; img3 = img;
img1(~bw) = 0; img2(~bw) = 0; img3(~bw) = 0;
imgr = cat(3, img1, img2, img3);
figure; imshow(imgr);
Zara Khan
Zara Khan on 14 Oct 2021
Mask is not working well. Still have some background portion. Any other idea?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!