How to implement 3D reconstruction of pore distribution when we know pore volumes, equivalent diameters, and coordinates in matlab?

6 views (last 30 days)
Hello, everyone!
I am quite new to image processing in matlab. I am looking way to reconstruct 3D pore distibution from the data that was obtained from around 100 2D cross sectional slices of the porous sample. The data includes pore equivalent diameters, volumes, and its coordinates (x,y,z). If you don't mind, I would like to request to you to guide me how I should proceed with regard to this 3D reconstruction.

Answers (1)

Maneet Kaur Bagga
Maneet Kaur Bagga on 29 Dec 2023
Hello,
As per my understanding to create a 3D reconstruction of the pore distribution please refer to the steps below:
  • Calculate the global threshold by Otsu's method using the "graythresh" function as it works by choosing the threshold to minimize the intra-class variance of the black and white pixels in the image.
  • The "imbinarize" function is then applied to convert the grayscale image I into a binary image using the threshold. In the resulting binary image, pixels with intensity values above threshold are initially set to true, while those with values below or equal to threshold are set to false.
  • The logical NOT operator ~ is used to invert the binary image, making the pores (originally darker regions, which would be false) into true, and the solid matrix (originally lighter regions, which would be true) into false.
  • The "bwconncomp" function is employed to perform a connected components analysis on the binary image "Ipores" and then using the "regionprops" function properties for the connected components are identified.
Please refer to the following code snippet below for better understanding:
% Assuming I is a 3D grayscale image representing the entire sample volume
lvl = graythresh(I);
Ipores = ~imbinarize(I, lvl); % Invert so pores are true
% Perform connected components analysis with 26-connectivity for 3D data
CC = bwconncomp(Ipores, 26);
% Calculate region properties for each pore
RP = regionprops(CC, 'Volume', 'Centroid', 'EquivalentDiameter', ...); % Add other properties as needed
% Calculate porosity
total_volume = numel(I);
pore_volume = sum(cellfun(@numel, CC.PixelIdxList));
porosity = pore_volume / total_volume;
Please refer to the MATLAB documentation for better understanding:
Hope this helps!

Products

Community Treasure Hunt

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

Start Hunting!