create mask that separates objects from white background

5 views (last 30 days)
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

More Answers (0)

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!