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

21 vues (au cours des 30 derniers jours)
Alexander Collins
Alexander Collins le 18 Mai 2020
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?

Réponse acceptée

Ameer Hamza
Ameer Hamza le 18 Mai 2020
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.

Plus de réponses (1)

Rik
Rik le 18 Mai 2020
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);

Catégories

En savoir plus sur 3-D Volumetric Image Processing dans Help Center et File Exchange

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by