take largest connected components in 2D slices and then reconstruct the 3D by stacking them
Mostra commenti meno recenti
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.
Risposta accettata
Più risposte (0)
Categorie
Scopri di più su Convert Image Type in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!









