MATLAB Answers

Removing a portion from a single volume

10 views (last 30 days)
Hege
Hege on 8 Dec 2020
Commented: Tim on 10 Dec 2020
I have a 3D skeletonized Image(skel2) and it is a single volume. it is a fibrous structure and I want to remove the portion in the red coloured area. Just only that blob.But it is a single volume because that blob is the same material of other material and it is a part of the volume.regionprops3() also says that it is a single volume.This skel2 is a 3d array(522x366x490 logical array).I know bwareaopen() can be used to remove separeated volumes.But It does not work this as I want to remove the blob which is already connected to the single volume.Appreciate your advices/comments.

Answers (1)

Tim
Tim on 9 Dec 2020
Edited: Tim on 9 Dec 2020
The fiberous portions would probably disappear, leaving the blob as a residual if you use an erosion operator, becauses they are much narrower (it looks from the figure, anyway). Try using something like:
% example volume
data = zeros(522, 366, 490);
% Add some fibers that are interconnected
data(100, 100, :) = 1;
data(:, 100, 50) = 1;
data(100, :, 30) = 1;
% Now add a blob
data(100-10:100+10, 100-10:100+10, 30-10:30+10) = 1;
% Get rid of fibers using errosion
w = 3; % set erosion width here
edata = imerode(data, ones(w, w, w)); % Erode to get rid of fibers
volshow(data); % Original
figure;
volshow(edata); % Blob is left over
You can play with erosion width w to figure out the appropriate size to get rid of the fibers but leave enough of the blob behind to determine its location
  6 Comments
Tim
Tim on 10 Dec 2020
The processes above are meant to generate binary masks to encapsulate the region of interest (the blob) in the original image. Neither of them should change xyz feature locations if they are being applied as intended. Regarding convolution: I suggest making some 3D kernel, convolving, then empirically determining the threshold value you need by making a binary mask using the > operation and a threshold and visualizing the result using volshow.There's a bunch of ways to tackle your problem, you may not find these approaches effective but there are plenty of other ways and you may have to be creative

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!