3

How can I copy the 2D axes calibration of an image, to a 3D dataset of the same size, except that has an additional depth dimension?

TomNorway
  • 2,584
  • 1
  • 19
  • 26

1 Answers1

1

The script below will do that. You use ImageGet/SetDimension.... for that.

image img2d := GetFrontImage()
if ( 2 != img2d.ImageGetNumDimensions() ) Throw( "Not 2D")
number sx = img2D.ImageGetDimensionSize(0)
number sy = img2D.ImageGetDimensionSize(1)

image img3d := RealImage("3D",4,sx,sy,10)
for( number i=0; i<2; i++ ){
    img3d.ImageSetDimensionScale( i, img2d.ImageGetDimensionScale(i) )
    img3d.ImageSetDimensionOrigin( i, img2d.ImageGetDimensionOrigin(i) )
    img3d.ImageSetDimensionUnitString( i, img2d.ImageGetDimensionUnitString(i) )
}
img3d.ShowImage()

However, based on what you need the 3D image for, it can be better to clone the 2D image and make it into a 3D image. This will preserve all meta-data but set the data values to 0.

image img2d := GetFrontImage()
if ( 2 != img2d.ImageGetNumDimensions() ) Throw( "Not 2D")

number sx = img2D.ImageGetDimensionSize(0)
number sy = img2D.ImageGetDimensionSize(1)
number sz = 10
    

image img3d := img2d.ImageClone()
img3d.ImageResize(3, sx, sy, sz)
img3d.ShowImage()
BmyGuest
  • 6,331
  • 1
  • 21
  • 35