Skip to content.
CCB > CCBSIGS > ShapeToolLibraryProgram > ShapeToolProgramProductStatusSummary > ImageCoordinateToolsProjectDefinitionV1x0

ImageCoordinate Project Definition

This library provides methods that describes 3D image (volume) orientation and location in space. The library stores data representation (structure of voxel grid) in general form for images (arbitrary dimension), for example, attributes such as step, start and direction cosines. The library also proivdes tools handling 3D images, for example, being able to access individual voxels in the image, World to Image coordinate conversions, or Image to World coordinate conversion that provide a conversion between voxel coordinates and world coordinates (continuous coordinates).

Restrictions, Exclusions, Limitations

  • This library does not provide any tools storing actual data for images.

People Affected

Person Initials Notes
Bae Cheol Shin BC  
Craig Schwartz CS  
Roger Woods RW  

Version

1.1

Requirements

  • This program will be written using Java 1.5

Requirements Change Procedure

  • Changes to be mutually agreed upon by Craig and Bae Cheol Shin.
  • Changes and their date will be entered in a 'requirements change' list.

Requirements Changes

Products

This project will result in the following products:
  • A Java library that will store structural information of 3D image voxel and will provides transformation from image to world coordiante.
  • Attributes will be stored are following:
    • size: number of voxels along each of the coordinate.
    • step: step between voxels along each of the coordinate.
    • start: position of center of first voxel along each of the coordinate.
    • direcion cosins: direction cosins for the each of axis.
  • Tools provides are following:
    • transformation matrix from image to world coordiante.
    • transformation matrix from world to image coordiante
    • take as input a world coordinate, and return the voxel contaning that coordinte.
    • take as input a voxel, and return the world coordinate associated with that voxel.
  • JUnit test cases for each of classes defined in the library.
  • A Java documentation of this library.
  • A SVN repository containing the Java source code of this application.
  • Examples illustrating use of this library.
  • Modification of exist application to use this library.

Interface

Constructor of VoxelProperty class.
 
    /**
     * Construct VoxelProperty from size, step size, astart position, direction
     * cosine along each of x, y and z direction.
     * 
     * @param xSize Number of voxels along the x direction.
     * @param ySize Number of voxels along the y direction.
     * @param zSize Number of voxels along the z direction.
     * @param xStep The distance between center of adjacent voxels in x 
     *              direction.
     * @param yStep The distance between center of adjacent voxels in y 
     *              direction.
     * @param zStep The distance between center of adjacent voxels in z 
     *              direction.
     * @param xStart X coordinate of origin of the first voxel.
     * @param yStart Y coordinate of origin of the first voxel.
     * @param zStart Z coordinate of origin of the first voxel.
     * @param xVoxelOrigin Translation along x axis to move origin of voxel.
     * @param yVoxelOrigin Translation along y axis to move origin of voxel.
     * @param zVoxelOrigin Translation along z axis to move origin of voxel.
     * @param xDirectionCosine The cosines of the angles between the direction 
     *                         of the dimension and the x axes.
     * @param yDirectionCosine The cosines of the angles between the direction 
     *                         of the dimension and the y axes.
     * @param zDirectionCosine The cosines of the angles between the direction 
     *                         of the dimension and the z axes.
     * @throws IllegalArgumentException if any of voxel properties which has 
     *                                  been passed are an illegal or 
     *                                  inappropriate argument                      
     */   
    public VoxelProperty(
        int xSize, int ySize, int zSize, double xStep, double yStep, 
        double zStep, double xStart, double yStart, double zStart, 
        double xVoxelOrigin, double yVoxelOrigin, double zVoxelOrigin,
        double[] xDirectionCosine, double[] yDirectionCosine, double[] zDirectionCosine) 
        throws IllegalArgumentException

Constructor of Transformation class.

    /**
     * Construct Transformation from VoxelProperty which stores various voxel 
     * attributes such as (step, start and direction cosines).
     * 
     * @param voxelProperty  VoxelProperty which stores various voxel 
     *                       attributes such as (step, start and direction 
     *                       cosines).
     */
    public Transformation(VoxelProperty voxelProperty)
      {
        _voxelProperty = voxelProperty;
      }

Methods of Transformation class.

    /**
     * Transform voxel coordinate to world coordinate.
     * 
     * @param voxelCoord Voxel coordinate.
     * @return world coordinate that the voxelCoord is transformed.
     */
    public double[] voxelToWorld(int[] voxelCoord);
    
    /**
     * Transform world coordinate to voxel coordinate.
     * 
     * @param worldCoord World coordinate.
     * @return voxel coordinate that the worldCoord is transformed.
     */
    public int[] worldToVoxel(double[]  worldCoord);

The voxel is an array of non-negativeintegers to specify the voxel(3d in the case of 3d data), and the coordinate is an array of double's to specify the world coordinate.

Notes

Original project definition was named Voxel Point

Lessons Learned

If it seems that there is any misunderstanding, discuss matter as soon as possible before delaying the project.