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
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.