How can I segment blobs in a image using the threshold filter
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Lightisthenight
le 9 Déc 2018
Commenté : Lightisthenight
le 10 Déc 2018
I want to remove the spatter which I marked red in the following image using the threshold filter. Right now as you can see I used the default options of the binarize method
bw_left = imbinarize(v1_left);
To remove the spatter in the image I also tried to use the adaptive threshold filter which is included in the binarize method with a sensitivity from 0.7 till 1 with no luck. As you can see the image gets worse and looks very unstable (right image)
Iblur_left = imgaussfilt(left1, 2 ); % gaussian filter to remove noise in the image
%parameters vessel filtering
options.sigmas = '0.5:0.5:3'; % vector of scales on which the vesselness is computed
options.spacing ='[1;1.5]'; % input image spacing resolution - during hessian matrix
% computation, the gaussian filter kernel size in each dimension can
% be adjusted to account for different image spacing for different
% dimensions
options.tau = 0.5; % tau:(between 0.5 and 1)parameter that controls response uniformity
% -lower tau -> more intense output response
v1_left = vesselness2D(Iblur_left, options.sigmas,options.spacing, options.tau, true);
bw_left = imbinarize(v1_left, 'adaptive','sensitivity', 0.7);
figure;
imshowpair(v1_left, bw_left, 'montage');
Is there any way to remove those spatters in the image ?
Thank you for your help
0 commentaires
Réponse acceptée
Image Analyst
le 9 Déc 2018
Modifié(e) : Image Analyst
le 9 Déc 2018
Why not simply use bwareafilt() to throw out blobs not in the correct size range?
Are the little blobs that are closer to the big blob supposed to be kept? Aren't they splatters too? Can you post the original gray scale image also?
3 commentaires
Image Analyst
le 10 Déc 2018
Modifié(e) : Image Analyst
le 10 Déc 2018
If you're sure that the blob you want is always the biggest one, you can do
mask = bwareafilt(mask, 1); % Extract largest blob only.
If it'a always in a known location, then you can first scan the video to find the frame where it is. Then you can scan it again using that largest one as the mask for all frames to erase things outside of it, including blobs that might be mistakenly chosen as the blob you're interested in because they were the largest at one point in time. Then you can do some area filtering on the blobs inside the mask.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Image Processing and Computer Vision dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!