52 files

3D x-ray computed tomography images of packed glass beads scanned at 18 resolutions (gray and segmented, with simulated permeability values)

posted on 05.05.2022, 18:24 authored by Siarhei KhirevichSiarhei Khirevich, Maxim P. Yutkin, Tadeusz W. Patzek

Note: all .rar archives here can be opened/extracted with WinRAR, 7-zip, or similar software. Each archive contains 3% recovery record, and if the downloaded file was damaged for some reason, it may be recovered using WinRAR (i.e., there is no need to download it again); this is mostly relevant for larger files in the set.

Description: 0.5mm glass beads of two types, beads1 and beads2, were packed inside glass tubes, resulting in two porous media samples “p3” and “p4”. These two samples were scanned at 18 discretization resolutions (or 18 voxel sizes) using x-ray computed tomography to obtain three-dimensional images of their pore space. Each file here is a rar-archive named as %N%_res%R%_mu%M%, where %N% is the sample name, p3 or p4, %R% is the resolution (in voxels per average bead diameter, which is 470micron for beads1 and 541micron for beads2), and %M% is the corresponding voxel size in microns. Inside each archive there are 3D images, gray-scale and segmented, each presented as a large number of 16-bit .tif images. Segmented images have three voxel types, FLUID = 0, SOLID = 50000, and WALL = 65535 of gray value. In addition, there is “input80.dis” file which is 80% central part of the segmented image, cut 10% from both ends, and combined into a single binary file, optionally cropped to be directly used for flow simulations (processing details are in “tif2dis.log”). Each “input80.dis” is mirrored along flow direction, so periodic boundary conditions can be applied without affecting the flow field at the boundaries of computational domain. Dimensions of “input80.dis” are in “input80.conf”.

The location of the glass tube wall was estimated by fitting a circle with diameter of 8984 microns for p3 and 9044 microns for p4, using “imfindcircles” MATLAB function. After obtaining a set of XY-coordinates for each circle (“wall_x.fig”, “wall_y.fig”, “wall_xy_all.mat” files in each archive), polynomial fit was applied with the coefficients (centerX_poly, centerY_poly) specified in “segmented\!stat.txt”, and the wall pixels were marked using the following MATLAB code:


[img_size_x, img_size_y] = size(img); % get image dimensions in pixels

[img_cols img_rows] = meshgrid(1:img_size_y, 1:img_size_x);

f0 = f - first_img_number + 1; % first_img_number as in !stat.txt, f is each image number as in their file name

wall_xy = [polyval(centerX_poly, f0) polyval(centerY_poly, f0)]; % evaluate wall polynomials

wall_pixels = (img_cols - wall_xy(1)).^2 + (img_rows - wall_xy(2)).^2 > tube_radius_voxels^2; % init wall pixels with tube_radius_voxels as in !stat.txt


After marking the wall voxels, the gray-scale histogram for the rest of voxels was obtained. Using “gray_threshold” from !stat.txt, gray voxels were marked as FLUID or SOLID with the result is stored in “segmented” folder.

One may download a smaller file first (say, “p3_res10_mu47.rar”) to get an idea about the content of each archive: other archives are similar, and differ only in the discretization resolution.

Four highest resolutions for each sample were also processed with 3D median filter (using ImageJ with (1,1,1) 3D median filter value) and some of the filtered voxels were marked to be FLUID in the final segmented image. Namely, so-called “revert mask” was calculated comparing the segmented versions of the original and median-filtered images and identifying clusters of two or more touching pixels with bwconncomp MATLAB function with 26 connectivity. Then, this revert mask was applied to the median-filtered image to initialize some of its gray pixels to the (very) dark gray value of 0. (All initial median-filtered voxels with the value of 0 were marked as 1 prior to this). This was done to ensure that these reverted voxels will be FLUID after the segmentation. Files with “%N%_res%R%_mu%M%_original__med_flt__rev_mask” contain these three steps (original gray and segmented image, median-filtered gray and segmented image, revert mask) while four highest resolution files without “_original__med_flt__rev_mask” suffix are already masked gray and segmented images. The rationale behind this procedure is described in the accompanying paper.

Files with “downsampled” in their names contain sets of 3D images downsampled from the indicated high-resolution image. “downsampled_center” and “downsampled_volume” suffixes refer to the downsampling method, via center and via volume averaging, respectively. Files with “VS_EXP” were used for the final comparisons with experiment.

Files %N%_plug_%P%_where_tube_is_%T%.rar are 3D images of two plastic plugs %P% (a or b) for each sample %N%, p3 or p4. Plug_a is located at the welded end of each sample glass tube while plug_b at its straight end. For the context please see the accompanying paper. Images are obtained with the voxel size of 6 micron. Using these images, the length and approximate diameter of plugs region was estimated.

‘permeability_simulated_p3_p4.xlsx’ provides permeability values obtained with the lattice Boltzmann method for all 3D images. For explanations please check the accompanying paper.

Related data sets:




KAUST to Ali Al-Naimi Petroleum Engineering Research Center


Research Institution(s)

King Abdullah University of Science and Technology

Contact email


I confirm there is no human personally identifiable information in the files or description shared


I confirm the files and description shared may be publicly distributed under the license selected