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 CenterFile Exchange에서 Images에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by