Class CAAMReferenceFrame
- java.lang.Object
-
- gov.nih.mipav.view.renderer.WildMagic.AAM.CAAMReferenceFrame
-
public class CAAMReferenceFrame extends java.lang.Object
This is the Java modified version of C++ active appearance model API (AAM_API). It is modified with a subset of required functions for automatic MRI prostate segmentation. AAM-API LICENSE - file: license.txt This software is freely available for non-commercial use such as research and education. Please see the full disclaimer below. All publications describing work using this software should cite the reference given below. Copyright (c) 2000-2003 Mikkel B. Stegmann, mbs@imm.dtu.dk IMM, Informatics & Mathematical Modelling DTU, Technical University of Denmark Richard Petersens Plads, Building 321 DK-2800 Lyngby, Denmark http://www.imm.dtu.dk/~aam/ REFERENCES Please use the reference below, when writing articles, reports etc. where the AAM-API has been used. A draft version the article is available from the homepage. I will be happy to receive pre- or reprints of such articles. /Mikkel ------------- M. B. Stegmann, B. K. Ersboll, R. Larsen, "FAME -- A Flexible Appearance Modelling Environment", IEEE Transactions on Medical Imaging, IEEE, 2003 (to appear) ------------- 3RD PART SOFTWARE The software is partly based on the following libraries: - The Microsoft(tm) Vision Software Developers Kit, VisSDK - LAPACK DISCLAIMER This software is provided 'as-is', without any express or implied warranty. In no event will the author be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any non-commercial purpose, and to alter it, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. -- No guarantees of performance accompany this software, nor is any responsibility assumed on the part of the author or IMM. This software is provided by Mikkel B. Stegmann and IMM ``as is'' and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall IMM or Mikkel B. Stegmann be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. $Revision: 1.4 $ $Date: 2003/04/23 14:49:15 $ The geometrical reference frame (or shape-free frame). This class defined the geomtrical reference frame of an AAM. Hence, it is the spatial layout where all texture sampling takes place. The main objective of this class is to provide fast conversions from a shape-free image to a texture vector and vice versa.- Author:
- Ruida Cheng
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
CAAMReferenceFrame.sScanLinePart
defines a sub-part of a horizontal line in an image
-
Field Summary
Fields Modifier and Type Field Description private boolean
m_bUseConvexHull
flag to use convex hull.private int
m_iTextureSamples
number of texture samples.private ModelSimpleImage
m_pMaskImage
mask image.private CAAMMesh
m_pReferenceMesh
private CAAMShape
m_pReferenceShape
reference shape.private java.util.Vector<CAAMReferenceFrame.sScanLinePart>
m_ScanlineParts
scan lines.
-
Constructor Summary
Constructors Constructor Description CAAMReferenceFrame()
Constructor.CAAMReferenceFrame(CAAMReferenceFrame rf)
Copy constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description CAAMReferenceFrame
assign(CAAMReferenceFrame rf)
Assignment operator.void
CalcMaskImage(boolean useConvexHull)
Calculates a reference mask image.void
CalcScanLines()
Calculates the scanlines of the mask image.void
DebugDump()
Writes some of the class data to disk.void
dispose()
Deletes any reference shape, mesh and mask image.boolean
FindTriangle(CAAMPoint p, int[] triangle, double[] alpha, double[] beta, double[] gamma)
Find the corresponding triangle in the source mesh for a point.void
FromFile(java.io.DataInputStream fh)
Reads the class data form disk.void
Image2Vector(ModelSimpleImage refImg, CDVector v)
Conversion from shape-free image to a texture vector.ModelSimpleImage
MaskImage()
Returns the mask image.int
NTextureSamples()
Returns the number of texture samples in the texture model.int
RefImageHeight()
Returns the height of the reference image.int
RefImageWidth()
Returns the width of the reference image.CAAMMesh
RefMesh()
Returns the reference mesh.CAAMShape
RefShape()
Returns the reference shape.double
RefShapeHeight()
Returns the height of the reference shape.double
RefShapeWidth()
Returns the width of the reference shape.java.util.Vector<CAAMReferenceFrame.sScanLinePart>
ScanlineParts()
Direct access to the scanline parts (not commonly used)void
Setup(CAAMShape referenceShape, boolean useConvexHull)
Sets up the class with the reference shape and information about how to determine the extent of the shape.void
ToFile(java.io.DataOutputStream fh)
Writes the class data to disk.boolean
UseConvexHull()
Returns true of the convex hull determines the shape extent.ModelSimpleImage
Vector2Image(CDVector v, ModelSimpleImage outImg)
Conversion from a texture vector to a shape-free image.void
Vector2Matrix(CDVector v, CDMatrix m)
Conversion from a texture vector to a shape-free matrix.
-
-
-
Field Detail
-
m_pReferenceShape
private CAAMShape m_pReferenceShape
reference shape.
-
m_pReferenceMesh
private CAAMMesh m_pReferenceMesh
-
m_pMaskImage
private ModelSimpleImage m_pMaskImage
mask image.
-
m_ScanlineParts
private java.util.Vector<CAAMReferenceFrame.sScanLinePart> m_ScanlineParts
scan lines.
-
m_iTextureSamples
private int m_iTextureSamples
number of texture samples.
-
m_bUseConvexHull
private boolean m_bUseConvexHull
flag to use convex hull.
-
-
Constructor Detail
-
CAAMReferenceFrame
public CAAMReferenceFrame()
Constructor.
-
CAAMReferenceFrame
public CAAMReferenceFrame(CAAMReferenceFrame rf)
Copy constructor.- Parameters:
rf
- Reference frame object to be copied by construction.
-
-
Method Detail
-
assign
public CAAMReferenceFrame assign(CAAMReferenceFrame rf)
Assignment operator.- Parameters:
rf
- Object to copy from.
-
Setup
public void Setup(CAAMShape referenceShape, boolean useConvexHull)
Sets up the class with the reference shape and information about how to determine the extent of the shape.- Parameters:
referenceShape
- The reference shape.useConvexHull
- If true the convex hull of the reference shape is used to determine its extent.
-
ToFile
public void ToFile(java.io.DataOutputStream fh)
Writes the class data to disk. This method writes the class data to disk. Actually it is only the reference shape and the convex hull option that is written. The rest is reconstructed during read.- Parameters:
fh
- Open file handle to a binary file.
-
FromFile
public void FromFile(java.io.DataInputStream fh)
Reads the class data form disk. This method reads the class data from disk. Actually it is only the reference shape and the convex hull option that is read. The rest is reconstructed.- Parameters:
fh
- Open file handle to a binary file.
-
DebugDump
public void DebugDump()
Writes some of the class data to disk.
-
dispose
public void dispose()
Deletes any reference shape, mesh and mask image.
-
CalcMaskImage
public void CalcMaskImage(boolean useConvexHull)
Calculates a reference mask image. This method calculates a reference mask image, where the shape area is set to 255 and the background to zero. The resulting image is stored in 'm_pMaskImage'.- Parameters:
useConvexHull
- If true the convex hull is used to define the extent of the reference shape.
-
CalcScanLines
public void CalcScanLines()
Calculates the scanlines of the mask image. This method calculates the scanlines of the mask image. A scanline is a subpart of a horsontal image line that is occupied but a subpart of the reference shape. The resulting scanlines are used for quick'n'easy conversion from spatial to vector layout (and back). Scanlines are stored in 'm_ScanlineParts'.
-
RefShapeWidth
public double RefShapeWidth()
Returns the width of the reference shape.- Returns:
- The width.
-
RefShapeHeight
public double RefShapeHeight()
Returns the height of the reference shape.- Returns:
- The height.
-
Image2Vector
public void Image2Vector(ModelSimpleImage refImg, CDVector v)
Conversion from shape-free image to a texture vector. This method performs a quick conversion from a shape-free image to a texture vector.- Parameters:
refImg
- Destination reference image.v
- Input texture vector.
-
Vector2Image
public ModelSimpleImage Vector2Image(CDVector v, ModelSimpleImage outImg)
Conversion from a texture vector to a shape-free image. This method performs a quick conversion from a texture vector to a shape-free image.- Parameters:
refImg
- Destination reference image.v
- Input texture vector.
-
Vector2Matrix
public void Vector2Matrix(CDVector v, CDMatrix m)
Conversion from a texture vector to a shape-free matrix. This method performs a quick conversion from a texture vector to a shape-free image on matrix form. Will currently only work on single band AAMs.- Parameters:
refImg
- Destination reference image.v
- Input texture vector.
-
RefImageWidth
public int RefImageWidth()
Returns the width of the reference image.- Returns:
- The width.
-
RefImageHeight
public int RefImageHeight()
Returns the height of the reference image.- Returns:
- The height.
-
FindTriangle
public boolean FindTriangle(CAAMPoint p, int[] triangle, double[] alpha, double[] beta, double[] gamma)
Find the corresponding triangle in the source mesh for a point.- Parameters:
p
- Input pointtriangle
- Triangle index.alpha
- Relative position on triangle (barycentric coordinate).beta
- Relative position on triangle (barycentric coordinate).gamma
- Relative position on triangle (barycentric coordinate).- Returns:
- True if the point is inside the source mesh.
-
UseConvexHull
public boolean UseConvexHull()
Returns true of the convex hull determines the shape extent.- Returns:
- flag to indiciate to use convexHull or not.
-
RefShape
public final CAAMShape RefShape()
Returns the reference shape.- Returns:
- shape
-
NTextureSamples
public int NTextureSamples()
Returns the number of texture samples in the texture model.- Returns:
- number of texture samples
-
RefMesh
public final CAAMMesh RefMesh()
Returns the reference mesh.- Returns:
- mesh
-
MaskImage
public final ModelSimpleImage MaskImage()
Returns the mask image.- Returns:
- mask image
-
ScanlineParts
public final java.util.Vector<CAAMReferenceFrame.sScanLinePart> ScanlineParts()
Direct access to the scanline parts (not commonly used)- Returns:
- scanline
-
-