How can I segment blobs in a image using the threshold filter

3 ビュー (過去 30 日間)
Lightisthenight
Lightisthenight 2018 年 12 月 9 日
コメント済み: Lightisthenight 2018 年 12 月 10 日
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
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
Is there any way to remove those spatters in the image ?
Thank you for your help

採用された回答

Image Analyst
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
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.
Lightisthenight
Lightisthenight 2018 年 12 月 10 日
Thanks for your reply! The blobs location and size are arbitrary. I do not know where they are or how big they are.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeImage Processing and Computer Vision についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by