public abstract class ExplicitDiffusionScheme3D<T extends RealType<T>> extends ExplicitDiffusionScheme<T>
D, imgFactory, increment, input, tensorComponentDimension
processingTime
errorMessage, numThreads
Constructor and Description |
---|
ExplicitDiffusionScheme3D(Img<T> input,
Img<FloatType> D) |
ExplicitDiffusionScheme3D(RandomAccessibleInterval<T> input,
RandomAccessibleInterval<FloatType> D) |
ExplicitDiffusionScheme3D(RandomAccessibleInterval<T> input,
RandomAccessibleInterval<FloatType> D,
ImgFactory<FloatType> imgFactory) |
Modifier and Type | Method and Description |
---|---|
protected float[] |
initDensityArray() |
protected float[][] |
initDiffusionTensorArray() |
protected void |
yieldDensity(RandomAccess<T> ura,
float[] target)
------------------------- ---------------------------- ---------------------------- → increasing X (first letter)
| 2 mmm | 1 cmm | 8 pmm | | 11 mmc | 10 cmc | 9 pmc | | 20 mmp | 19 cmp | 18 pmp |
|------------------------ ---------------------------- ----------------------------
| 3 mcm | 0 ccm | 7 pcm | | 12 mcc | -1 ccc | 16 pcc | | 21 mcp | 25 ccp | 17 pcp |
|------------------------ ---------------------------- ----------------------------
| 4 mpm | 5 cpm | 6 ppm | | 13 mpc | 14 cpc | 15 ppc | | 22 mpp | 23 cpp | 24 ppp |
------------------------- ---------------------------- ----------------------------
↓
increasing Y (second letter)
|
protected void |
yieldDiffusionTensor(RandomAccess<FloatType> dra,
float[][] target)
Real, symmetric diffusion tensor for 3D structures.
|
checkInput, diffusionScheme, getDiffusionTensor, getIncrement, process, setDiffusionTensor
getProcessingTime
getErrorMessage, getNumThreads, setNumThreads, setNumThreads
public ExplicitDiffusionScheme3D(Img<T> input, Img<FloatType> D)
input
- D
- public ExplicitDiffusionScheme3D(RandomAccessibleInterval<T> input, RandomAccessibleInterval<FloatType> D)
input
- D
- public ExplicitDiffusionScheme3D(RandomAccessibleInterval<T> input, RandomAccessibleInterval<FloatType> D, ImgFactory<FloatType> imgFactory)
input
- D
- imgFactory
- protected float[] initDensityArray()
initDensityArray
in class ExplicitDiffusionScheme<T extends RealType<T>>
protected float[][] initDiffusionTensorArray()
initDiffusionTensorArray
in class ExplicitDiffusionScheme<T extends RealType<T>>
protected final void yieldDensity(RandomAccess<T> ura, float[] target)
------------------------- ---------------------------- ---------------------------- → increasing X (first letter) | 2 mmm | 1 cmm | 8 pmm | | 11 mmc | 10 cmc | 9 pmc | | 20 mmp | 19 cmp | 18 pmp | |------------------------ ---------------------------- ---------------------------- | 3 mcm | 0 ccm | 7 pcm | | 12 mcc | -1 ccc | 16 pcc | | 21 mcp | 25 ccp | 17 pcp | |------------------------ ---------------------------- ---------------------------- | 4 mpm | 5 cpm | 6 ppm | | 13 mpc | 14 cpc | 15 ppc | | 22 mpp | 23 cpp | 24 ppp | ------------------------- ---------------------------- ---------------------------- ↓ increasing Y (second letter)In the array, the nerighborhood is stored as following:
index 0 1 2 3 4 5 6 7 8 Uccc Uccm Ucmm Umcm Ucpm Upcm Upmc Ucmc Ummc index 9 10 11 12 13 14 15 16 17 18 Umcc Umpc Ucpc Uppc Upcc Upcp Ucmp Umcp Ucpp UccpCareful: some values are not used, therefore they are not stored:
mmm, mpm, ppm, pmm, pppm pmp, mmp, mpp.
yieldDensity
in class ExplicitDiffusionScheme<T extends RealType<T>>
ura
- the RandomAccess
target
- the float array in which the value will be storedprotected void yieldDiffusionTensor(RandomAccess<FloatType> dra, float[][] target)
Dxx Dxy Dxz A D E Dyx Dyy Dyz = D B F Dzx Dzy Dzz E F CWe then iterate in a
3x3x3
neighborhood in the following order:
upper z plane (z-1) center z plane (z=0) lower z plane(z+1) (third letter) ------------------------- ---------------------------- ---------------------------- → increasing X (first letter) | 2 mmm | 1 cmm | 8 pmm | | 11 mmc | 10 cmc | 9 pmc | | 20 mmp | 19 cmp | 18 pmp | |------------------------ ---------------------------- ---------------------------- | 3 mcm | 0 ccm | 7 pcm | | 12 mcc | -1 ccc | 16 pcc | | 21 mcp | 25 ccp | 17 pcp | |------------------------ ---------------------------- ---------------------------- | 4 mpm | 5 cpm | 6 ppm | | 13 mpc | 14 cpc | 15 ppc | | 22 mpp | 23 cpp | 24 ppp | ------------------------- ---------------------------- ---------------------------- ↓ increasing Y (second letter)And we yield the following content in the target 2D array:
index 0 1 2 3 4 5 6 7 8 remark 0: Accc Amcc Apcc moving along X only 1: Bccc Bcmc Bcpc moving along Y only 2: Cccc Cccm Cccp moving along Z only 3: Dccc Dpmc Dcmc Dmmc Dmcc Dmpc Dcpc Dppc Dpcc in central Z plane 4: Eccc Eccm Emcm Epcm Emcc Epcc Epcp Emcp Eccp in central Y plane 5: Fccc Fccm Fcmm Fcpm Fcmc Fcpc Fcmp Fcpp Fccp in central X plane
yieldDiffusionTensor
in class ExplicitDiffusionScheme<T extends RealType<T>>
dra
- the RandomAccess
target
- the float array in which the value will be storedCopyright © 2015–2022 ImgLib2. All rights reserved.