cant seem to make the background fully black

1 view (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,[])

Categories

Find more on Denoising and Compression in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!