Class LsePdeFilter3
- java.lang.Object
-
- gov.nih.mipav.model.algorithms.levelset.LsePdeFilter
-
- gov.nih.mipav.model.algorithms.levelset.LsePdeFilter3
-
- Direct Known Subclasses:
LseCurvatureFlow3
,LseEvolve3
,LseGaussianBlur3
,LseGradientAnisotropic3
public abstract class LsePdeFilter3 extends LsePdeFilter
The abstract base class for finite-difference-based solvers for partial differential equations in 3D. This system exists to support level-set evolution for image segmentation.
The internal 3D data and mask images are copies of the inputs to the constructor but padded with a 1-voxel thick border to support filtering on the image boundary. These images are of size (xbound+2)-by-(ybound+2)-by-(zbound+2). The inputs (x,y,z) to access the data and mask avlues are constrained to 0
- Version:
- 0.1 November 7, 2006
- Author:
- David Eberly
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean[][][]
m_aaabMask
Voxels may be masked out so that the PDE solver does not process them.protected float[][][]
m_aaafDst
Successive iterations of the PDE solver toggle between two buffers.protected float[][][]
m_aaafSrc
Successive iterations of the PDE solver toggle between two buffers.protected float
m_fFourthInvDxDy
invFourthDxDy = 1/(4*dx*dy)protected float
m_fFourthInvDxDz
invFourthDxDz = 1/(4*dx*dz)protected float
m_fFourthInvDyDz
invFourthDyDz = 1/(4*dy*dz)protected float
m_fHalfInvDx
halfInvDx = 1/(2*dx)protected float
m_fHalfInvDy
halfInvDy = 1/(2*dy)protected float
m_fHalfInvDz
halfInvDz = 1/(2*dz)protected float
m_fInvDx
invDx = 1/dxprotected float
m_fInvDxDx
invDxDx = 1/(dx*dx)protected float
m_fInvDy
invDy = 1/dyprotected float
m_fInvDyDy
invDyDy = 1/(dy*dy)protected float
m_fInvDz
invDz = 1/dzprotected float
m_fInvDzDz
invDzDz = 1/(dz*dz)protected float
m_fUmmm
Temporary storage for 3x3x3 neighborhood.protected float
m_fUmmp
Temporary storage for 3x3x3 neighborhood.protected float
m_fUmmz
Temporary storage for 3x3x3 neighborhood.protected float
m_fUmpm
Temporary storage for 3x3x3 neighborhood.protected float
m_fUmpp
Temporary storage for 3x3x3 neighborhood.protected float
m_fUmpz
Temporary storage for 3x3x3 neighborhood.protected float
m_fUmzm
Temporary storage for 3x3x3 neighborhood.protected float
m_fUmzp
Temporary storage for 3x3x3 neighborhood.protected float
m_fUmzz
Temporary storage for 3x3x3 neighborhood.protected float
m_fUpmm
Temporary storage for 3x3x3 neighborhood.protected float
m_fUpmp
Temporary storage for 3x3x3 neighborhood.protected float
m_fUpmz
Temporary storage for 3x3x3 neighborhood.protected float
m_fUppm
Temporary storage for 3x3x3 neighborhood.protected float
m_fUppp
Temporary storage for 3x3x3 neighborhood.protected float
m_fUppz
Temporary storage for 3x3x3 neighborhood.protected float
m_fUpzm
Temporary storage for 3x3x3 neighborhood.protected float
m_fUpzp
Temporary storage for 3x3x3 neighborhood.protected float
m_fUpzz
Temporary storage for 3x3x3 neighborhood.protected float
m_fUzmm
Temporary storage for 3x3x3 neighborhood.protected float
m_fUzmp
Temporary storage for 3x3x3 neighborhood.protected float
m_fUzmz
Temporary storage for 3x3x3 neighborhood.protected float
m_fUzpm
Temporary storage for 3x3x3 neighborhood.protected float
m_fUzpp
Temporary storage for 3x3x3 neighborhood.protected float
m_fUzpz
Temporary storage for 3x3x3 neighborhood.protected float
m_fUzzm
Temporary storage for 3x3x3 neighborhood.protected float
m_fUzzp
Temporary storage for 3x3x3 neighborhood.protected float
m_fUzzz
Temporary storage for 3x3x3 neighborhood.protected float
m_fXSpacing
The x-spacing of the image, call it dx.protected float
m_fYSpacing
The y-spacing of the image, call it dy.protected float
m_fZSpacing
The z-spacing of the image, call it dz.protected int
m_iXBound
The x-bound of the image.protected int
m_iYBound
The y-bound of the image.protected int
m_iZBound
The z-bound of the image.-
Fields inherited from class gov.nih.mipav.model.algorithms.levelset.LsePdeFilter
m_eScaleType, m_fBorderValue, m_fMin, m_fOffset, m_fScale, m_fTimeStep, m_iQuantity, NONE, PRESERVE_ZERO, SYMMETRIC, UNIT
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
LsePdeFilter3(int iXBound, int iYBound, int iZBound, float fXSpacing, float fYSpacing, float fZSpacing, float[] afData, boolean[] abMask, float fBorderValue, int eScaleType)
Create a new PDE filter object for 3D images.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
assignDirichletImageBorder()
Assign values to the 1-voxel-thick image border.protected void
assignDirichletMaskBorder()
Assign values to the 1-voxel-thick borders that surround unmasked regions.protected void
assignNeumannImageBorder()
Assign values to the 1-voxel-thick image border.protected void
assignNeumannMaskBorder()
Assign values to the 1-voxel-thick borders that surround unmasked regions.boolean
getMask(int iX, int iY, int iZ)
Get the mask value at voxel (x,y,z).float
getU(int iX, int iY, int iZ)
Get the image value at voxel (x,y,z), call it u(x,y,z).float
getUx(int iX, int iY, int iZ)
Get the first-order x-derivative of the image value at voxel (x,y,z), call it u_x(x,y,z).float
getUxx(int iX, int iY, int iZ)
Get the second-order x-derivative of the image value at voxel (x,y,z), call it u_xx(x,y,z).float
getUxy(int iX, int iY, int iZ)
Get the second-order xy-mixed-derivative of the image value at voxel (x,y,z), call it u_xy(x,y,z).float
getUxz(int iX, int iY, int iZ)
Get the second-order xz-mixed-derivative of the image value at voxel (x,y,z), call it u_xz(x,y,z).float
getUy(int iX, int iY, int iZ)
Get the first-order y-derivative of the image value at voxel (x,y,z), call it u_y(x,y,z).float
getUyy(int iX, int iY, int iZ)
Get the second-order y-derivative of the image value at voxel (x,y,z), call it u_yy(x,y,z).float
getUyz(int iX, int iY, int iZ)
Get the second-order yz-mixed-derivative of the image value at voxel (x,y,z), call it u_yz(x,y,z).float
getUz(int iX, int iY, int iZ)
Get the first-order z-derivative of the image value at voxel (x,y,z), call it u_z(x,y,z).float
getUzz(int iX, int iY, int iZ)
Get the second-order z-derivative of the image value at voxel (x,y,z), call it u_zz(x,y,z).int
getXBound()
Get the x-bound for the image.float
getXSpacing()
Get the x-spacing for the image.int
getYBound()
Get the y-bound for the image.float
getYSpacing()
Get the y-spacing for the image.int
getZBound()
Get the z-bound for the image.float
getZSpacing()
Get the z-spacing for the image.protected void
lookUp27(int iX, int iY, int iZ)
Copy the source data to temporary storage in order to avoid redundant array accesses.protected void
lookUp7(int iX, int iY, int iZ)
Copy the source data to temporary storage in order to avoid redundant array accesses.protected void
onPostUpdate()
Swap the buffers for the next pass of the PDE solver.protected void
onPreUpdate()
Recompute the boundary values when Neumann conditions are in effect.protected void
onUpdate()
Iterate over all the voxels and call onUpdate(x,y,z) for each voxel that is not masked out.protected abstract void
onUpdate(int iX, int iY, int iZ)
An abstract function that allows per-voxel processing by the PDE solver.-
Methods inherited from class gov.nih.mipav.model.algorithms.levelset.LsePdeFilter
getBorderValue, getQuantity, getScaleType, getTimeStep, setTimeStep, update
-
-
-
-
Field Detail
-
m_iXBound
protected int m_iXBound
The x-bound of the image.
-
m_iYBound
protected int m_iYBound
The y-bound of the image.
-
m_iZBound
protected int m_iZBound
The z-bound of the image.
-
m_fXSpacing
protected float m_fXSpacing
The x-spacing of the image, call it dx.
-
m_fYSpacing
protected float m_fYSpacing
The y-spacing of the image, call it dy.
-
m_fZSpacing
protected float m_fZSpacing
The z-spacing of the image, call it dz.
-
m_fInvDx
protected float m_fInvDx
invDx = 1/dx
-
m_fInvDy
protected float m_fInvDy
invDy = 1/dy
-
m_fInvDz
protected float m_fInvDz
invDz = 1/dz
-
m_fHalfInvDx
protected float m_fHalfInvDx
halfInvDx = 1/(2*dx)
-
m_fHalfInvDy
protected float m_fHalfInvDy
halfInvDy = 1/(2*dy)
-
m_fHalfInvDz
protected float m_fHalfInvDz
halfInvDz = 1/(2*dz)
-
m_fInvDxDx
protected float m_fInvDxDx
invDxDx = 1/(dx*dx)
-
m_fFourthInvDxDy
protected float m_fFourthInvDxDy
invFourthDxDy = 1/(4*dx*dy)
-
m_fFourthInvDxDz
protected float m_fFourthInvDxDz
invFourthDxDz = 1/(4*dx*dz)
-
m_fInvDyDy
protected float m_fInvDyDy
invDyDy = 1/(dy*dy)
-
m_fFourthInvDyDz
protected float m_fFourthInvDyDz
invFourthDyDz = 1/(4*dy*dz)
-
m_fInvDzDz
protected float m_fInvDzDz
invDzDz = 1/(dz*dz)
-
m_fUmmm
protected float m_fUmmm
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUzmm
protected float m_fUzmm
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUpmm
protected float m_fUpmm
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUmzm
protected float m_fUmzm
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUzzm
protected float m_fUzzm
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUpzm
protected float m_fUpzm
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUmpm
protected float m_fUmpm
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUzpm
protected float m_fUzpm
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUppm
protected float m_fUppm
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUmmz
protected float m_fUmmz
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUzmz
protected float m_fUzmz
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUpmz
protected float m_fUpmz
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUmzz
protected float m_fUmzz
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUzzz
protected float m_fUzzz
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUpzz
protected float m_fUpzz
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUmpz
protected float m_fUmpz
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUzpz
protected float m_fUzpz
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUppz
protected float m_fUppz
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUmmp
protected float m_fUmmp
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUzmp
protected float m_fUzmp
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUpmp
protected float m_fUpmp
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUmzp
protected float m_fUmzp
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUzzp
protected float m_fUzzp
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUpzp
protected float m_fUpzp
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUmpp
protected float m_fUmpp
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUzpp
protected float m_fUzpp
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_fUppp
protected float m_fUppp
Temporary storage for 3x3x3 neighborhood. In the notation m_fUijk, the i, j, and k indices are in {m,z,p}, referring to subtract 1 (m), no change (z), or add 1 (p) to the appropriate index.
-
m_aaafSrc
protected float[][][] m_aaafSrc
Successive iterations of the PDE solver toggle between two buffers. This is the source buffer, which is the input to the solver.
-
m_aaafDst
protected float[][][] m_aaafDst
Successive iterations of the PDE solver toggle between two buffers. This is the destination buffer, which is the output of the solver.
-
m_aaabMask
protected boolean[][][] m_aaabMask
Voxels may be masked out so that the PDE solver does not process them. This is useful for filtering only those voxels in a subimage.
-
-
Constructor Detail
-
LsePdeFilter3
protected LsePdeFilter3(int iXBound, int iYBound, int iZBound, float fXSpacing, float fYSpacing, float fZSpacing, float[] afData, boolean[] abMask, float fBorderValue, int eScaleType)
Create a new PDE filter object for 3D images.- Parameters:
iXBound
- The x-bound of the image.iYBound
- The y-bound of the image.iZBound
- The z-bound of the image.fXSpacing
- The x-spacing of the image.fYSpacing
- The y-spacing of the image.fZSpacing
- The z-spacing of the image.afData
- The image elements, stored in lexicographical order.abMask
- The image mask, stored in lexicographical order. A voxel value is processed by the PDE solver only when the mask value is false.fBorderValue
- Specifies how to handle the image value. When set to Float.MAX_VALUE, Neumann conditions are in use, in which case zero-valued derivatives are assumed on the image border. Otherwise, Dirichlet conditions are used, in which case the image is assumed to be constant on the border with value specified by fBorderValue.eScaleType
- The type of scaling to apply to the input image. The choices are NONE, UNIT, SYMMETRIC, or PRESERVE_ZERO.
-
-
Method Detail
-
getXBound
public final int getXBound()
Get the x-bound for the image.- Returns:
- The x-bound for the image.
-
getYBound
public final int getYBound()
Get the y-bound for the image.- Returns:
- The y-bound for the image.
-
getZBound
public final int getZBound()
Get the z-bound for the image.- Returns:
- The z-bound for the image.
-
getXSpacing
public final float getXSpacing()
Get the x-spacing for the image.- Returns:
- The x-spacing for the image.
-
getYSpacing
public final float getYSpacing()
Get the y-spacing for the image.- Returns:
- The y-spacing for the image.
-
getZSpacing
public final float getZSpacing()
Get the z-spacing for the image.- Returns:
- The z-spacing for the image.
-
getU
public final float getU(int iX, int iY, int iZ)
Get the image value at voxel (x,y,z), call it u(x,y,z).- Parameters:
iX
- The x-coordinate of the voxel.iY
- The y-coordinate of the voxel.iZ
- The z-coordinate of the voxel.- Returns:
- The image value, u(x,y,z).
-
getUx
public final float getUx(int iX, int iY, int iZ)
Get the first-order x-derivative of the image value at voxel (x,y,z), call it u_x(x,y,z).- Parameters:
iX
- The x-coordinate of the voxel.iY
- The y-coordinate of the voxel.iZ
- The z-coordinate of the voxel.- Returns:
- The x-derivative of the image value, u_x(x,y,z).
-
getUy
public final float getUy(int iX, int iY, int iZ)
Get the first-order y-derivative of the image value at voxel (x,y,z), call it u_y(x,y,z).- Parameters:
iX
- The x-coordinate of the voxel.iY
- The y-coordinate of the voxel.iZ
- The z-coordinate of the voxel.- Returns:
- The y-derivative of the image value, u_y(x,y,z).
-
getUz
public final float getUz(int iX, int iY, int iZ)
Get the first-order z-derivative of the image value at voxel (x,y,z), call it u_z(x,y,z).- Parameters:
iX
- The x-coordinate of the voxel.iY
- The y-coordinate of the voxel.iZ
- The z-coordinate of the voxel.- Returns:
- The z-derivative of the image value, u_z(x,y,z).
-
getUxx
public final float getUxx(int iX, int iY, int iZ)
Get the second-order x-derivative of the image value at voxel (x,y,z), call it u_xx(x,y,z).- Parameters:
iX
- The x-coordinate of the voxel.iY
- The y-coordinate of the voxel.iZ
- The z-coordinate of the voxel.- Returns:
- The xx-derivative of the image value, u_xx(x,y).
-
getUxy
public final float getUxy(int iX, int iY, int iZ)
Get the second-order xy-mixed-derivative of the image value at voxel (x,y,z), call it u_xy(x,y,z).- Parameters:
iX
- The x-coordinate of the voxel.iY
- The y-coordinate of the voxel.iZ
- The z-coordinate of the voxel.- Returns:
- The xy-derivative of the image value, u_xy(x,y,z).
-
getUxz
public final float getUxz(int iX, int iY, int iZ)
Get the second-order xz-mixed-derivative of the image value at voxel (x,y,z), call it u_xz(x,y,z).- Parameters:
iX
- The x-coordinate of the voxel.iY
- The y-coordinate of the voxel.iZ
- The z-coordinate of the voxel.- Returns:
- The xz-derivative of the image value, u_xz(x,y,z).
-
getUyy
public final float getUyy(int iX, int iY, int iZ)
Get the second-order y-derivative of the image value at voxel (x,y,z), call it u_yy(x,y,z).- Parameters:
iX
- The x-coordinate of the voxel.iY
- The y-coordinate of the voxel.iZ
- The z-coordinate of the voxel.- Returns:
- The yy-derivative of the image value, u_yy(x,y).
-
getUyz
public final float getUyz(int iX, int iY, int iZ)
Get the second-order yz-mixed-derivative of the image value at voxel (x,y,z), call it u_yz(x,y,z).- Parameters:
iX
- The x-coordinate of the voxel.iY
- The y-coordinate of the voxel.iZ
- The z-coordinate of the voxel.- Returns:
- The yz-derivative of the image value, u_yz(x,y,z).
-
getUzz
public final float getUzz(int iX, int iY, int iZ)
Get the second-order z-derivative of the image value at voxel (x,y,z), call it u_zz(x,y,z).- Parameters:
iX
- The x-coordinate of the voxel.iY
- The y-coordinate of the voxel.iZ
- The z-coordinate of the voxel.- Returns:
- The zz-derivative of the image value, u_zz(x,y).
-
getMask
public final boolean getMask(int iX, int iY, int iZ)
Get the mask value at voxel (x,y,z).- Parameters:
iX
- The x-coordinate of the voxel.iY
- The y-coordinate of the voxel.iZ
- The z-coordinate of the voxel.- Returns:
- The mask value at voxel (x,y,z). Its value is true when that pixel should not be processed by the PDE solver.
-
assignDirichletImageBorder
protected void assignDirichletImageBorder()
Assign values to the 1-voxel-thick image border. The border value has been specified during object construction.
-
assignNeumannImageBorder
protected void assignNeumannImageBorder()
Assign values to the 1-voxel-thick image border. The border values are chosen so that the first-order image derivatives at the border pixels are zero. Thus, the border values are duplicates of the adjacent image values.
-
assignDirichletMaskBorder
protected void assignDirichletMaskBorder()
Assign values to the 1-voxel-thick borders that surround unmasked regions. The border value has been specified during object construction.
-
assignNeumannMaskBorder
protected void assignNeumannMaskBorder()
Assign values to the 1-voxel-thick borders that surround unmasked regions. The border values are chosen so that the first-order image derivatives at the border voxels are zero. Thus, the border values are duplicates of the adjacent image values.
-
onPreUpdate
protected void onPreUpdate()
Recompute the boundary values when Neumann conditions are in effect. If a derived class overrides this, it must call the base-class onPreUpdate first.- Specified by:
onPreUpdate
in classLsePdeFilter
-
onUpdate
protected void onUpdate()
Iterate over all the voxels and call onUpdate(x,y,z) for each voxel that is not masked out.- Specified by:
onUpdate
in classLsePdeFilter
-
onPostUpdate
protected void onPostUpdate()
Swap the buffers for the next pass of the PDE solver. If a derived class overrides this, it must call the base-class onPostUpdate last.- Specified by:
onPostUpdate
in classLsePdeFilter
-
onUpdate
protected abstract void onUpdate(int iX, int iY, int iZ)
An abstract function that allows per-voxel processing by the PDE solver. The voxel (x,y,z) must be in padded coordinates, namely, 1- Parameters:
iX
- The x-coordinate of the voxel.iY
- The y-coordinate of the voxel.iZ
- The z-coordinate of the voxel.
-
lookUp7
protected void lookUp7(int iX, int iY, int iZ)
Copy the source data to temporary storage in order to avoid redundant array accesses. The copy involves the 7 voxels (x,y,z), (x+1,y,z), (x-1,y,z), (x,y+1,z), (x,y-1,z), (x,y,z+1), and (x,y,z-1).
-
lookUp27
protected void lookUp27(int iX, int iY, int iZ)
Copy the source data to temporary storage in order to avoid redundant array accesses. The copy involves the 27 pixels in the 3x3x3 neighborhood of (x,y,z).
-
-