How can I segment depth images
Afficher commentaires plus anciens
I have read depth imges and converted them into grayscale. Now how to segment the hand region properly.
Réponses (1)
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 commentaires
sir,may be use some DeepLearning framework to make it work in general ,such as yolo,frcnn
can crop by the follows.
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)
% crop
img2 = imcrop(img,rect);
figure; imshow(img2);
Zara Khan
le 12 Oct 2021
Image Analyst
le 12 Oct 2021
Try using the inverse of the hand mask to erase that part of the original image
maskedImage = img; % Initialize to the original image.
% Now erase pixels not in the hand mask.
maskedImage(~bw) = 0;
Zara Khan
le 13 Oct 2021
Zara Khan
le 13 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
le 14 Oct 2021
Catégories
En savoir plus sur Image Preview and Device Configuration dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





