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

 Accepted Answer

BC
BC on 27 Feb 2021
Edited: BC on 28 Feb 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 Comment

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

Sign in to comment.

More Answers (0)

Categories

Find more on Convert Image Type in Help Center and File Exchange

Products

Release

R2020b

Asked:

on 11 Feb 2021

Commented:

on 28 Feb 2021

Community Treasure Hunt

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

Start Hunting!