cant seem to make the background fully black

5 views (last 30 days)
I have uploaded two images, one is the original image and the other one is a processed image. i am wondering how can i make the background fully black because i cant seem to make the bottom right fully black in the processed image. i have processed the image by thresholding, binarising and inverting it.

Accepted Answer

Matt J
Matt J on 30 Sep 2022
Edited: Matt J on 30 Sep 2022
A=imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1141370/original.png');
B=imquantize(A,multithresh(A,3));
C=1;
for i=1:4
C=C & ~bwareafilt(B==i,[80000,inf]);
end
imshow(C,[])
  2 Comments
Image Analyst
Image Analyst on 1 Oct 2022
If you want the shapes to have their original gray level and class (like uint8 or uint16), instead of being a binary (logical) image, you can use that mask to set the background to zero and leave the original gray levels untouched:
% Blacken background:
A(~C) = 0;

Sign in to comment.

More Answers (2)

Image Analyst
Image Analyst on 30 Sep 2022
Looks a lot like homework. Is it?
What I'd try first is to create a background and then subtract it from the image. You can construct a background by getting the values along the edges, or the corners and then using biliear interpolation, like with interp1 to build the background. Should be easy - try it.

Matt J
Matt J on 30 Sep 2022
Edited: Matt J on 1 Oct 2022
A=imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1141370/original.png');
B=imclose(edge(A),strel('disk',5));
C=imfill(B,'holes');
imshow(C,[])

Products

Community Treasure Hunt

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

Start Hunting!