Trying to automatically crop an image into several smaller images based on segmentation

1 vue (au cours des 30 derniers jours)
Hi all,
Apologies in advance, I'm not well versed in Matlab.
I'm trying to crop a segmented image into several smaller pieces that only contain the a segmented piece of the original image. For example, if an image has 3 apples and I'm interested in the apples, I am aiming to cut out each apple into a seperate image. The result I'm hoping for is 3 seperate images of apples, with anything else in the crop blackened (or whitened) out.
Why I'm trying to do this is so I can pass each resultant image into a CNN for analysis, as each segmented piece/cropped image is a type of object that needs to be classified.
Below is an image of mine that I'm trying to process. Any ideas would be useful! Thanks in advance.
  8 commentaires
darova
darova le 17 Fév 2020
Can you plot/draw green pixels (contours/boundaries) on clear image?
Teshan Rezel
Teshan Rezel le 17 Fév 2020
sure thing, the BW mesh is attached

Connectez-vous pour commenter.

Réponse acceptée

darova
darova le 17 Fév 2020
Something like this
clc,clear
I = imread('image.jpeg');
I1 = im2bw(I);
I2 = imdilate(I1,ones(5)); % imdilate to close contours
I3 = imerode(I2,ones(4)); % restore thickness
[L,n] = bwlabel(I3); % label regions/areas
subplot(121)
imshow(I2)
title('imdilate')
subplot(122)
imshow(I3)
title('restore thickness of contours')
figure
for i = 2:n
I4 = L==i; % select region
I5 = imfill(I4,'holes'); % fill contour/region
imshow(cat(3,I5*255,I3*255,I3*0)) % display
pause(1)
end
  3 commentaires
darova
darova le 17 Fév 2020
Sure. Try this:
I4 = L==i; % select region
I5 = imfill(I4,'holes'); % fill contour/region
I6 = I.*repmat(uint8(I4),[1 1 3]);
imshow(I6) % display cropped region

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by