How can I control the voxel size using 'imwrite'?

14 views (last 30 days)
Harsha Yogeshappa
Harsha Yogeshappa on 10 Nov 2021
Answered: Ayush Modi on 7 Mar 2024 at 11:10
Hello All,
I have an input tiff file image that has 342 slices, and I would like to extract each slice individually and save as a separate file.
% x = imread("inputTiffFile.tif", 100);
% imwrite(x, "slice_100.tif");
% x = imread("inputTiffFile.tif", 163);
% imwrite(x, "slice_163.tif");
However, I have one problem: The voxel spacing in the input image is [1, 1, 1], but the voxel spacing after using 'imwrite' is changed to [0.352778, 0.352778, 1]. I require the voxel spacing to be same as input.
Any inputs on how to avoid this change in voxel size would be very helpful.
Thanks,

Answers (1)

Ayush Modi
Ayush Modi on 7 Mar 2024 at 11:10
Hi Harsha,
To avoid the change in voxel size when using the "imwrite" function in MATLAB, you can specify the resolution of the output image using the 'Resolution' name-value pair argument. Here's an example:
imwrite(x, "slice_100.tif", 'Resolution', [1, 1, 1]);
% Note - [1, 1, 1] specifies that the voxel spacing should be the same as the input image.
Please refer to the following MathWorks documentation for more information on the “imwrite” function and 'Resolution' name-value pair argument:
Hope this helps!

Categories

Find more on Read, Write, and Modify Image in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!