How to extract the specified-size subvolume from 3D structure?


I am a new user of ImageJ. My micro-CT image stacks are about soil aggregates. I am trying to build my CT slices to 3D and I seemingly already completed the 3D Viewer step. Now I have a bottleneck, I don’t Kwon how to extract the subvolume of interest, and this subvolume has a specific size, and it’s a cube (e.g. 500×500×500 voxel). What I want is like from Figure 1 to Figure 2.

How can I solve this problem? Or my order is a fault? I need to extract the volume of a particular size first, and then build a 3D structure?

(SORRY, my English is bad, I hope this won’t make it hard for you to understand.)

Thanks in advance!


figure%201 figure%202


If you already have a 3D image, you are on the right track. What do you want to measure ? Can you send a snapshot of one slice with manually draw your volume of interest ? Do you want to measure the whole object ?



Thanks for your reply!@ThomasBoudier

Yes, I think I should measure the whole object of the subvolume. What I want to measure roughly include pore size, number of pores, porosity, pore path length, pore path tortuosity, percent surface area, and percent pore volume. My volume of interest is as shown in the following figure. Although this is a figure from someone’s paper, I want the same effect as he does. I need to select a representative domain of my slice, which is roughly in the middle of the slice, and then to build a 3D structure. I hope to construct a region of interest with specific size (e.g. 500×500×500 voxel), but I don’t know how to draw a specified-size ROI.
Do you know how to set ROI size? Do you have any other suggestions in this project?




You can create a selection with a specified size with Edit/Selection/Specify then put this selection where you want onto the image. You can also rotate the selection with Edit/Selection/Rotate. Finally, you just need to copy the selected area with Image/Duplicate and select the range of slices. Note the copied area will not be rotated, you may want to rotate the image beforehand then. Nice documentation for ImageJ/Fiji is are available here.
Regarding the analysis I do not know much about porosity and other measurements, I guess you will need to detect first the different areas (black/white/gray), just use Image/Adjust/Threshold.

Good luck !


@ ThomasBoudier
Thank you for your great help!!! You have given me directions, and I will continue to learn on this basis.


Hi Thomas, after doing some experiments, I began to devote myself to image processing again. I have new doubts about the ROI question I asked before. What I want is 500×500×500 voxel sized cube. Using Edit/Selection/Specify only can select a square with a length of 500 and a width of 500, but what about the depth?how to select 500 voxel?I want to a cube for the next analysis. Thank you in advance!(By the way, my image resolution is 5.2μm and I drew a sketch for you to understand)

If other people know how to solve the problem of depth, very welcome to say what you think


If I do the same thing, first create an interpolated image with pixel equalization in the Z direction.

And a plug-in for that is also available, so please download and use it if necessary.
*It ’s been maintained until 19th and it ’s not accessible now.

Then, I feel like it can be done by extracting the range of 500 slices and building 3D.


@hwada Thanks for your reply.

But I don’t know why need to build a interpolated image. I’m stranger about this. Can you give us a general explanation?And is the knowledge about this part in image/stacks/z project? or Edit/Selection/Interpolate? Hope you to guide me what knowledge I need to read.

Kindest Regards



Probably the resolution in the Z direction is not the same as the XY resolution.
To clip in the Z direction with the same size as XY, the same resolution as XY is required.
Therefore, it is necessary to expand or contract in the Z direction first.
*When displaying with 3D viewer etc., the Z direction should be complemented so that it is almost the same as the resolution of XY.
Unfortunately, such knowledge is unlikely in software guides.
If anything, I think it is knowledge to handle images, not software.
However, there may be plug-ins that can do this easily.(but I don’t know)

As an example
First, crop the stack image at 500x500pixel.
Make sure that the scale information is inherited, and create an interpolation image.
Furthermore, determine the range in the z direction and extract 500 slices(these slices are same as 500pixel).
And this image is displayed by 3D viewer.
*Check if the scale at this time is x: y: z = 1: 1: 1.



I think the easiest is to use Duplicate and specify the slices range :

  1. Create the 500x500 ROI
  2. Duplicate with Duplicate stack checked and put the range for the slices, 1-500 for example



@ThomasBoudier @hwada
Thank you for your answer.

Your answer is basically the same and can solve my problem, i.e. select 500 slices. Later I tried it in the 3D viewer and matched the coordinates and found it seems to be a cube.
I used to struggle for a long time because I was in a wrong thinking way. I’ve been thinking about resolution 5.2 μm this value should be included, and I’ve forgotten that the cube unit is just voexl. That is, 500 slices should correspond to 500 voxels, beacuse the XYZ resolution of my image are all an voxel, i.e.5.2 μm.
Thank you very much. I also need to strengthen my study.