MATLAB Answers

Is there a way to clean the image such that the smaller pieces are not included?

1 view (last 30 days)
Hi,
I am working on thresholding an image (code included below). The threshold works well but includes several smaller pieces that are not helpful for the final analysis. Is there a way to get rid of these? Thanks in advance!
img = imread('25_04_2018_102541.JPG');
imgGrey = rgb2gray(img);
[counts, ~] = imhist(imgGrey, 255);
T = otsuthresh(counts);
BW = imbinarize(imgGrey, T);
BW = bwareaopen(BW, 3000);
BW = imfill(BW, 'holes');
BW = bwperim(BW);
BW = imdilate(BW, ones(5));
BW = imerode(BW, ones(3));
BW = imfill(BW, 'holes');
img(~BW(:,:,[1 1 1])) = 0;
baseGray = rgb2gray(img);
isoLower = 155;
isoUpper = 170;
mask = (baseGray > isoLower) & (baseGray < isoUpper);
img(~mask(:,:,[1 1 1])) = 0;
Original Image
Image after background thresholding
Image I need to clean

Accepted Answer

Puru Kathuria
Puru Kathuria on 14 Jul 2020
Hi,
I understand what you are trying to achieve, please have a look at this. It might help you filter out the smaller pieces that you dont need.

  0 Comments

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!