How to get XYZ coordinates of all non-zero voxels in a 3D volume?

10 次查看(过去 30 天)
I have an NxMxP matrix that forms a volume. Programs like ImageJ have a function to save the XY coordinates of any pixels above a certain threshold, is there a good way to implement this in 3D in matlab?

采纳的回答

Ameer Hamza
Ameer Hamza 2020-5-18
Try something like this
M = randi([0 5], 20, 30, 10); % example matrix
idx = find(M); % find nonzero values in M
[y,x,z] = ind2sub(size(M), idx);
y is the row number, x is column number, and z is the 3D slice number of non-zero entries.

更多回答(1 个)

Rik
Rik 2020-5-18
If you want to hide a bit of the implementation that Ameer showed you: I have extended the capabilities of find to more dimensions. You can find my findND function here on the FEX.
M = randi(255, 20, 30, 10); % example matrix
[y,x,z] = findND(M>100);

类别

Help CenterFile Exchange 中查找有关 Point Cloud Processing 的更多信息

产品


版本

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by