take largest connected components in 2D slices and then reconstruct the 3D by stacking them

7 ビュー (過去 30 日間)
Hello,
I am doing some morphological image processing. I want to remove the 4 unwanted blobs from the binary object(image below)
If I axially slice the image, I can take the largest connected component and exclude others like the image below:
I have tried the following codes which results binary size mismatch issues.
ind = 1;
sz = size(bi) % bi is the 3D mask with dimension: 170x256x100
final_mask = zeros(sz)
for i = 1:sz(3) %taking the 2D axial slice iterations-> 1:100
cc = bwconncomp(bi(:,:,i));
% disp(cc)
S = regionprops(cc, 'Area', 'PixelIdxList');%'Centroid');
ax_slice = zeros(sz(1), sz(2));
numPixels = cellfun(@numel, cc.PixelIdxList);
% disp(numPixels)
[biggest,idx] = max(numPixels); % taking the largest component number of pixels and their indices
ax_slice(cc.PixelIdxList{idx})= 1;
final_mask(:,:,i) = ax_slice;
end
or
I have shared the bi_copy.mat in the link above.
Please let me know how to deal with it.
Thanks.

採用された回答

darova
darova 2020 年 4 月 24 日
  • erode image
  • dilate image
clc % clear command window
cla % clear axes
bi11 = bi; % create copy of 'bi'
bi1 = bi(:,:,170:end); % get top part
R = 2; % radius of structuring element
[x,y,z] = meshgrid(-R:R); % X Y Z 3d matrices
el = x.^2+y.^2+z.^2 <= R^2; % sphere of radius 'R'
bi2 = imerode(bi1, el); % erode image
bi3 = imdilate(bi2, el); % dilate image
bi11(:,:,170:end) = bi3; % replace original top part
isosurface(bi11,.95) % display 3d image
axis vis3d
light
  5 件のコメント
darova
darova 2020 年 4 月 25 日
Another idea
  • erode/dilate image partially
  • select biggest part
  • restore original size
banikr
banikr 2020 年 4 月 26 日
I think reducing the R value has provided the result close to somewhat I was expecting.
Then I will replace the below electrode slices to the dilated/eroded one.
Thanks a lot!!

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeImages についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by