How can I segment blobs in a image using the threshold filter
2 次查看(过去 30 天)
显示 更早的评论
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);
![binaryimage (2).png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/198674/image.png)
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');
![error.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/198675/image.png)
Is there any way to remove those spatters in the image ?
Thank you for your help
0 个评论
采纳的回答
Image Analyst
2018-12-9
编辑:Image Analyst
2018-12-9
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 个评论
Image Analyst
2018-12-10
编辑:Image Analyst
2018-12-10
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.
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!