public abstract class ExplicitDiffusionScheme3D<T extends RealType<T>> extends ExplicitDiffusionScheme<T>
D, imgFactory, increment, input, tensorComponentDimensionprocessingTimeerrorMessage, 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, setDiffusionTensorgetProcessingTimegetErrorMessage, getNumThreads, setNumThreads, setNumThreadspublic 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 Uccp
Careful: 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 RandomAccesstarget - 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 RandomAccesstarget - the float array in which the value will be storedCopyright © 2015–2022 ImgLib2. All rights reserved.