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

1 vue (au cours des 30 derniers jours)
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

Réponse acceptée

Akira Agata
Akira Agata le 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 commentaires
Penny13
Penny13 le 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 le 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:

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Images dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by