How to keep only solid white dots and eliminate dots that inside them is black in the attached image?

1 view (last 30 days)
Hello, Is there any way that I could remove the dots which are black inside from the attached image to just keep the solid white dots in the image? Thanks

Accepted Answer

Akira Agata
Akira Agata on 6 Nov 2018
bwpropfilt function would be helpful for your task. The following is an example.
% Read the image
I = imread('Example.jpg');
% Binarize the image
BW = imbinarize(rgb2gray(I));
% Suppress light structures connected to image border
BW = imclearborder(BW);
% Filter out regions which has hole(s)
BW = bwpropfilt(BW,'EulerNumber',[1 1]);
  4 Comments
Penny13
Penny13 on 6 Nov 2018
Thanks a lot for your answer. If you don't mind I will ask one last question. For every dot that I have in this image Example2.jpg, How could I draw a square with only having the centroid of the dot?
Akira Agata
Akira Agata on 7 Nov 2018
Please use the regionprops function to detect centroid and bounding box for each area. The following is an example.
% Read the image
I = imread('Example2.jpg');
% Binarize the image
BW = imbinarize(rgb2gray(I));
% Suppress light structures connected to image border
BW = imclearborder(BW);
% Filter out regions which has hole(s)
s = regionprops(BW,{'Centroid','BoundingBox'});
% Show the result
figure
imshow(BW)
hold on
for kk = 1:numel(s)
scatter(s(kk).Centroid(1),s(kk).Centroid(2),'rx')
rectangle('Position',s(kk).BoundingBox,'EdgeColor','y')
end
Since white areas are relatively small against image size, the result becomes like this.
But if you expand part of the image, you can see the image like this:

Sign in to comment.

More Answers (0)

Categories

Find more on Images in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!