How to extract a cube from a 3D volume/matrix?

2 Ansichten (letzte 30 Tage)
ML
ML am 17 Mai 2016
Kommentiert: Image Analyst am 17 Mai 2016
if we assume the starting point of a cube is up-left corner,
3D_vol(Start_x : Start_x + SizeX-1, Start_y : Start_y + SizeY-1, Start_z : Start_z + SizeZ-1);
gives voxel values in a cube having starting points of X, Y, Z and size of each. Now, if the starting point is the *center* of the cube, how can I get the cube?
I tried the following, but it is not correct when the size of X/Y/Z is even.
3D_vol(start_x - (SizeX/2) - 1 : Start_x + (SizeX/2) - 1, ......
3D_vol is a 3d matrix.

Akzeptierte Antwort

Image Analyst
Image Analyst am 17 Mai 2016
Use floor(SizeX/2) instead of (SizeX/2) because (SizeX/2) might have a 0.5 fractional part and fractional indexes are not allowed.
  3 Kommentare
Ahmet Cecen
Ahmet Cecen am 17 Mai 2016
You cannot have a center point resolve as a voxel in even cube sizes. You can either have an 11x11x11 cube with a center voxel, or 10x10x10 with a center node(corner).
Image Analyst
Image Analyst am 17 Mai 2016
If you want the values "in between" voxel locations, you'd need to do a 3-D interpolation. Try looking into interp3(). Sorry - I don't have a demo for you but there are examples.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Frequently-used Algorithms finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by