Class SurfaceMask

java.lang.Object
gov.nih.mipav.view.renderer.J3D.surfaceview.SurfaceMask

public class SurfaceMask extends Object
SurfaceMask. Calculates the surface volume mask (BitSet) for a triangle mesh surface displayed in the SurfaceRender class. Both boundary masks and filled-volume masks are calculated by the maskInsideVoxels() function.

The boundary-mask is stored in the ModelStorageBase class and is used to display the triangle mesh intersection with the 2D plane in the PlaneRender class. The volume-mask is stored in the SurfaceAttributes class and is accessed through the SurfaceAttributes.getMask() member function. The volume mask is used in the BurnBaseView.calcTotalVolume() function.

See Also:
  • invalid reference
    JPanelSurface.java
  • invalid reference
    SurfaceRender.java
  • invalid reference
    SurfaceAttributes.java
  • invalid reference
    ModelStorageBase.java
  • invalid reference
    BurnBaseView.java
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private float
    The plane coordinate x,y dimensions:
    private float
    The plane coordinate x,y dimensions:
    private float
    The plane coordinate x,y dimensions:
    private float
    The plane coordinate x,y dimensions:
    private float
    The plane coordinate x,y dimensions:
    private float
    The plane coordinate x,y dimensions:
    private int
    Product of the image dimensions.
    private int
    Dimensions of imageA.
    private int
    Dimensions of imageA.
    private int
    Dimensions of imageA.
    private ModelLUT
    ModelLUT for getModelImageColor w/LUT changes:
    private ModelRGB
    ModelRGB for getModelImageColor w/RGB LUT changes:
    private BitSet
    Volume-Filled TriangleMesh mask.
    private int
    ModelImage image array dimensions:
    private int
    ModelImage image array dimensions:
    private int
    ModelImage image array dimensions:
  • Constructor Summary

    Constructors
    Constructor
    Description
    Default Constructor:
  • Method Summary

    Modifier and Type
    Method
    Description
    private float
    calcMaxNormColors(ModelImage kImage, javax.vecmath.Color3f kOffset)
    calculates the color normalization factors
    private void
    floodFill(int iX, int iY, int iZ)
    Identify voxels enclosed by the brain surface by using a flood fill.
    private void
    getColorMapped(int[] RGBIndexBuffer, javax.vecmath.Color3f kOffset, float fNorm, javax.vecmath.Color4f currentColor)
    Get the color from the RGB lookup table:
    private final int
    getIndex(int iX, int iY, int iZ)
    A convenience function for mapping the 3D voxel position (iX,iY,iZ) to a 1D array index.
    private float
    getIntersectX(javax.vecmath.Point3f kV0, javax.vecmath.Point3f kV1, javax.vecmath.Point3f kV2, float iY, float iZ)
    Compute the point of intersection between a line (0,iY,iZ)+t(1,0,0) and the triangle defined by the three input points.
    private float
    getIntersectY(javax.vecmath.Point3f kV0, javax.vecmath.Point3f kV1, javax.vecmath.Point3f kV2, float iX, float iZ)
    Compute the point of intersection between a line (iX,0,iZ)+t(0,1,0) and the triangle defined by the three input points.
    private float
    getIntersectZ(javax.vecmath.Point3f kV0, javax.vecmath.Point3f kV1, javax.vecmath.Point3f kV2, float iX, float iY)
    Compute the point of intersection between a line (iX,iY,0)+t(0,0,1) and the triangle defined by the three input points.
    javax.vecmath.Color4f
    getModelImageColor(ModelImage imageA, float fTransparency, javax.vecmath.Point3f kModelPoint)
    Given a triangle vertex point from a ModelTriangleMesh, determines the corresponding ModelImage index point, and recreates the color that would have originally been assigned to the vertex.
    javax.vecmath.Point3f
    getModelImagePoint(javax.vecmath.Point3f kTrianglePoint)
    Given a triangle vertex point from a ModelTriangleMesh, determines the corresponding ModelImage index point.
    Get the current added surface bit mask.
    void
    maskInsideVoxels(int index, ModelImage imageA, ModelTriangleMesh[] kMesh, boolean bHasVertexColor, boolean bCreateVertexColors, boolean bUseImageMask, float fOpacity, WildMagic.LibFoundation.Mathematics.ColorRGBA surColor)
    Mask the mesh surface volume in voxels.
    void
     
    void
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • mVolumeMask

      private BitSet mVolumeMask
      Volume-Filled TriangleMesh mask.
    • m_iXBound

      private int m_iXBound
      Dimensions of imageA.
    • m_iYBound

      private int m_iYBound
      Dimensions of imageA.
    • m_iZBound

      private int m_iZBound
      Dimensions of imageA.
    • m_iQuantity

      private int m_iQuantity
      Product of the image dimensions.
    • m_fX0

      private float m_fX0
      The plane coordinate x,y dimensions:
    • m_fY0

      private float m_fY0
      The plane coordinate x,y dimensions:
    • m_fZ0

      private float m_fZ0
      The plane coordinate x,y dimensions:
    • m_fX1

      private float m_fX1
      The plane coordinate x,y dimensions:
    • m_fY1

      private float m_fY1
      The plane coordinate x,y dimensions:
    • m_fZ1

      private float m_fZ1
      The plane coordinate x,y dimensions:
    • xDim

      private int xDim
      ModelImage image array dimensions:
    • yDim

      private int yDim
      ModelImage image array dimensions:
    • zDim

      private int zDim
      ModelImage image array dimensions:
    • m_kLUT

      private ModelLUT m_kLUT
      ModelLUT for getModelImageColor w/LUT changes:
    • m_kRGBT

      private ModelRGB m_kRGBT
      ModelRGB for getModelImageColor w/RGB LUT changes:
  • Constructor Details

    • SurfaceMask

      SurfaceMask()
      Default Constructor:
  • Method Details

    • maskInsideVoxels

      public void maskInsideVoxels(int index, ModelImage imageA, ModelTriangleMesh[] kMesh, boolean bHasVertexColor, boolean bCreateVertexColors, boolean bUseImageMask, float fOpacity, WildMagic.LibFoundation.Mathematics.ColorRGBA surColor)
      Mask the mesh surface volume in voxels.
      Parameters:
      index - Mask index in the ModelImage imageA
      imageA - ModelImage for storing the surface-mask
      kMesh - ModelTriangleMesh[] surfaces
      bHasVertexColor - use per-vertex color from the ModelTriangleMesh, otherwise use the surColor parameter
      bUseImageMask - create the per-vertex color from the imageA ModleImage, with the ModelImage mask
      fOpacity - Mask opacity
      surColor - default Mask color
      bCreateVertexColor - create the per-vertex color from the imageA ModleImage,
    • getModelImagePoint

      public javax.vecmath.Point3f getModelImagePoint(javax.vecmath.Point3f kTrianglePoint)
      Given a triangle vertex point from a ModelTriangleMesh, determines the corresponding ModelImage index point.
      Parameters:
      kTrianglePoint - ModelTriangleMesh point in mesh coordinates
      Returns:
      ModelImage index point.
    • setRGBT

      public void setRGBT(ModelRGB kRGBT)
    • setLUT

      public void setLUT(ModelLUT kLUT)
    • getColorMapped

      private void getColorMapped(int[] RGBIndexBuffer, javax.vecmath.Color3f kOffset, float fNorm, javax.vecmath.Color4f currentColor)
      Get the color from the RGB lookup table:
      Parameters:
      RGBIndexBuffer - the color lookup table index buffer
      kOffset - the color offset
      fNorm - the color normalization
      currentColor - the current color (changed)
    • calcMaxNormColors

      private float calcMaxNormColors(ModelImage kImage, javax.vecmath.Color3f kOffset)
      calculates the color normalization factors
      Parameters:
      kImage - the model image from which the normalization factors are calculated
      kOffset - the calculated color offset
      Returns:
      the color normalization factor.
    • getModelImageColor

      public javax.vecmath.Color4f getModelImageColor(ModelImage imageA, float fTransparency, javax.vecmath.Point3f kModelPoint)
      Given a triangle vertex point from a ModelTriangleMesh, determines the corresponding ModelImage index point, and recreates the color that would have originally been assigned to the vertex.
      Parameters:
      kTrianglePoint - ModelTriangleMesh point in ModelImage coordinates
      Returns:
      original color of the triangle point.
    • getVolumeMask

      public BitSet getVolumeMask()
      Get the current added surface bit mask.
      Returns:
      BitSet surface volume bit set mask.
    • floodFill

      private void floodFill(int iX, int iY, int iZ)
      Identify voxels enclosed by the brain surface by using a flood fill. The flood fill is nonrecursive to avoid overflowing the program stack.
      Parameters:
      iX - the x-value of the seed point for the fill
      iY - the y-value of the seed point for the fill
      iZ - the z-value of the seed point for the fill
    • getIndex

      private final int getIndex(int iX, int iY, int iZ)
      A convenience function for mapping the 3D voxel position (iX,iY,iZ) to a 1D array index. The images are stored as 1D arrays, so this function is used frequently.
      Parameters:
      iX - the x-value of the voxel position
      iY - the y-value of the voxel position
      iZ - the z-value of the voxel position
      Returns:
      the 1D array index corresponding to (iX,iY,iZ)
    • getIntersectX

      private float getIntersectX(javax.vecmath.Point3f kV0, javax.vecmath.Point3f kV1, javax.vecmath.Point3f kV2, float iY, float iZ)
      Compute the point of intersection between a line (0,iY,iZ)+t(1,0,0) and the triangle defined by the three input points. All calculations are in voxel coordinates and the x-value of the intersection point is truncated to an integer.
      Parameters:
      kV0 - a 3D vertex of the triangle
      kV1 - a 3D vertex of the triangle
      kV2 - a 3D vertex of the triangle
      iY - the y-value of the origin of the line
      iZ - the z-value of the origin of the line
      Returns:
      the x-value of the intersection
    • getIntersectY

      private float getIntersectY(javax.vecmath.Point3f kV0, javax.vecmath.Point3f kV1, javax.vecmath.Point3f kV2, float iX, float iZ)
      Compute the point of intersection between a line (iX,0,iZ)+t(0,1,0) and the triangle defined by the three input points. All calculations are in voxel coordinates and the y-value of the intersection point is truncated to an integer.
      Parameters:
      kV0 - a 3D vertex of the triangle
      kV1 - a 3D vertex of the triangle
      kV2 - a 3D vertex of the triangle
      iX - the x-value of the origin of the line
      iZ - the z-value of the origin of the line
      Returns:
      the y-value of the intersection
    • getIntersectZ

      private float getIntersectZ(javax.vecmath.Point3f kV0, javax.vecmath.Point3f kV1, javax.vecmath.Point3f kV2, float iX, float iY)
      Compute the point of intersection between a line (iX,iY,0)+t(0,0,1) and the triangle defined by the three input points. All calculations are in voxel coordinates and the z-value of the intersection point is truncated to an integer.
      Parameters:
      kV0 - a 3D vertex of the triangle
      kV1 - a 3D vertex of the triangle
      kV2 - a 3D vertex of the triangle
      iX - the x-value of the origin of the line
      iY - the y-value of the origin of the line
      Returns:
      the z-value of the intersection