MATLAB: Read out intensites and corresponding X,Y,Z-coordinates from a 3D-image

intensity 3d coordinates slice

Hello,
this is a common problem. But there were no real answers to this question in this forum.
I have a 3D-image generated from a 3D-array – I want to get the intensity values plus their corresponding position (X,Y,Z) in a normal spreadsheet in MatLab.
Ultimately, I would get something like:
Intensity | X | Y | Z
and this for every point in the image.
Since there are millions of points it might be also a good idea to cut out points with 0 intensity.
Has somebody done something similar?
Best wishes.

Best Answer

What is the size of the third dimension? If it's 3 then it can be considered a normal RGB color image and you can use impixelinfo() to see the values. If you still want it in a spreadsheet, then I suggest you extract each plane of your volumetric image in a loop and then send that to Excel. If you really, really need the x,y,z values also then I suggest you create an N by 4 array and then write out
[rows, columns, slices] = size(array3D);
array2D = zeros(numel(array3D), 4);
counter = 1;
for z = 1 : slices
for x = 1 : columns
for y = 1 : rows
array2D(counter, :) = [array3D(y, x, z), x, y, z];
counter = counter + 1;
end
end
end
xlswrite(filename, array2D);