create mask that separates objects from white background

Hi,
I need to create a mask for fruits placed inside a white box so i can analsyse the properties of the fruit. A green apple is shown in the attached image for example but the fruits could be a range of colours (excluding black/whitish colours), so i require code to segment these different coloured fruits into a mask that seperates them from the white backgoreund, but I am struggling on how to approach this. Any help would be appreciated.
Thankyou

 Respuesta aceptada

BC
BC el 27 de Feb. de 2021
Editada: BC el 28 de Feb. de 2021
Hi, maybe the code below can help start you off! It's not a perfect segmentation, and I'm fairly new to MATLAB so someone else might have a better method. This link may also help you too, have a look under "Functions", then "Segmentation Techniques".
apple = imread("apple.jpg"); % read in image name
grayapple = rgb2gray(apple); % convert image to grayscale
level = graythresh(grayapple); % get threshold value
BWapple = imbinarize(grayapple,level); % binarize image using the threshold value
BWopen = bwpropfilt(~BWapple,"area",1,"largest"); % filter only the 1 largest blob. The ~ inverts the mask
BWfilled = imfill(BWopen,"holes"); % fill any missing holes
finalimage = imoverlay(apple,~BWfilled,"k"); % burn the mask onto the original image, with black (k) background
imshow(finalimage) % show the final image

1 comentario

Hi BC,
Thanks for your help! thats exactly what im looking for.

Iniciar sesión para comentar.

Más respuestas (0)

Productos

Versión

R2020b

Preguntada:

el 11 de Feb. de 2021

Comentada:

el 28 de Feb. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by