How to visualise results of regionprops3 function?

7 次查看(过去 30 天)
Dear all,
I am currently working with some CT data, which I have created by image stacking.
I would like to analyse properties using regionprops3 function. I would like to plot/visualise each found volume by this function so I can check, if the results are correct.
Here is my code:
% V_initial -- size 1000x1100x71
Volsize = size(V_initial);
for i=1:Volsize(3) % could be speed up by using parfor, but the volume is small
XY_vol{i} = V_initial(:,:,i); % slicing volume into each plane
XY_vol_adjst{i} = imadjust(XY_vol{i}); % adjusting contrast
threshold_multi(i,:) = multithresh(XY_vol_adjst{i},3); % Otsu multhreshold method to identify phases
XY_vol_bin_pores{i} = imbinarize(XY_vol_adjst{i},threshold_multi(i,1)); %pores
XY_vol_bin_solid{i} = imbinarize(XY_vol_adjst{i},threshold_multi(i,2)); %paste
XY_vol_bin_agg{i} = imbinarize(XY_vol_adjst{i},threshold_multi(i,3)); %aggregates
volstack_pores(:,:,i) = XY_vol_bin_pores{i}; %stacking volume of pores
volstack_solid(:,:,i) = XY_vol_bin_solid{i}; %stacking volume of paste
volstack_agg(:,:,i) = XY_vol_bin_agg{i}; %stacking volume of aggregates
vol_solid_flipped_BW{i} = imcomplement(XY_vol_bin_solid{i}); %inversion of binarized paste
volstack_solid_1(:,:,i) = vol_solid_flipped_BW{i}; %stacking volume of inverted paste
end
%region analysis
stats = regionprops3(volstack_solid,'all'); %takes some time
voxelID = cat(1,stats.VoxelIdxList);
%selecting the first and the biggest volume identified by regionprops3
volume = volstack_solid(voxelID{1}); %using volume indices should allow to new volume out
% of volstack_solid this time only using identified volume
volshow(volume) %visualise volume
%Error using volshowvolumeViewer requires 3-D data with no singleton dimensions.
I am stuck using identified indices. Maybe I am doing something wrong using identified indices.
Could you help me to fix this problem, please ?
Thank you in advance,
Petr

回答(1 个)

Constantino Carlos Reyes-Aldasoro
What regionprops will do is to calculate the metrics for each of the elements in your data, and you can then use these to select a subset of the elements to visualise, for example:
a=randn(256); % random values
b=bwlabel(a>1.5); % threshold to select a few of these, label to have unique ids
c=regionprops(b); % find properties, for this example we will use the area, you can open with openvar('c')
d=ismember(b,find([c.Area]==2)); % select only those elements with area 2
imagesc((b>0)+d) % display original elements + those selected
elements with area ==2 appear in yellow, all others appear in light blue.
Hope this helps answer your question.

类别

Help CenterFile Exchange 中查找有关 3-D Volumetric Image Processing 的更多信息

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by