-
Notifications
You must be signed in to change notification settings - Fork 12
Fractal dimension
Richard Domander edited this page Mar 24, 2017
·
13 revisions
This plugin estimates the fractal dimension of the surface or outline a binary image by applying an interval-counting algorithm. The outline of the image is created by removing all the elements whose each neighbour is foreground (a neighbourhood in 2D is 8-connected and 3D 26-connected). In the counting algorithm intervals of diminishing size are scanned over the image and the number of intervals of each size containing foreground is counted. As the interval size decreases, the proportion of foreground increases in a fractal structure.
- Menu path: Plugins>BoneJ>Fractal dimension
- Input paremeters
- ImgPlus inputImage
- Output parameters
- none
- Calls
- FractalDimensionsOp
- Input parameters
-
boolean autoParameters
- Label: Automatic parameters
- Tool tip: Let the computer decide box sizes and scaling
- Callback to show parameter values in
autovalues
-
String autovalues
- visibility = ItemVisibility.MESSAGE
-
double startBoxSize
*- Label: Starting box size
- Tool tip: The relative size of the sampling box in the first iteration
- Widget: Slider, min: 0.0, max: 1.0, step: 1.0
- Callback to check that
smallestBoxSize <= startBoxSize
-
double smallestBoxSize
*- Label: Smallest box size
- Tool tip: Sampling box size where algorithm stops if no foreground is found
- Widget: Slider, min: 0.0, max: 1.0, step: 1.0
- Callback to check that
smallestBoxSize <= startBoxSize
-
double scaleFactor
- Label: Box scale factor
- Tool tip: The factor used to multiply box on each iteration
- Widget: Slider, min: 0.0, max: 1.0, step: 0.01
-
int translations
- Label: Box translations
- Tool tip: How many times sampling box is moved and applied before scaling down
- Widget: Slider, min: 0.0, step: 1
-
* Using relative values, because it's easier than setting slider max values to image dimensions. Also, this way values can be saved
- Other
-
Help
- Tooltip: Open help web page
- Widget: Button
-
Help
- If there's no image open
- Show an error dialog
- Abort the run
- If the input image is not binary
- Show an error dialog
- Abort the run
- Prints the output of
FractalDimensionsOp
in the ResultTable- Each channel / frame of a hyperstack is reported separately
- Supports hyper-stacks (channels and frames processed as 3D sub-spaces)
- If your image has an inverted LUT, flip it back to normal. Otherwise foreground is interpreted as background!
- Hollows out all the objects in an image. Only those elements that have at least one background neighbour are copied to the output
- The image can have any number of dimensions
- A UnaryHybridCF op
- Input
- Other input @Parameters
-
boolean excludeEdges
- Controls whether elements on stack edges are considered kept or not
required: false
-
- Outputs
RandomAccessibleInterval<BitType> output
- Scans intervals of diminishing size over the given space. Counts the number of intervals of each size containing foreground. As the size decreases, the proportion of intervals containing foreground increases in a fractal structure. Can be used to estimate fractal dimension.
- The interval can have any number of dimensions
- A UnaryFunctionOp
- Input
- Other input @Parameters
-
Integer minIntervalSize
- minimum size of interval in pixels before counting is stopped
required: false
-
Integer maxIntervalSize
- starting size of interval in pixels
-
Double scalingFactor
- the constant used to scale the interval after each iteration
-
- Output
-
List<ValuePair<DoubleType, DoubleType>> points
- A list of (log(n), -log(m)) value pairs, where n = number of intervals with foreground, and m = intervals size
-
- Returns a
DoubleType
ValuePair
instead ofDouble
since the former is mutable, and can thus be chained with other ops
- User documentation
- Usage reporting
- Since there's no setup dialog, where to put the Help-button? How to provide the help?
-
Library for finding linear regression line of log(n) / log(m), i.e. fractal dimension. Use
ij.measure.CurveFitter
still, or maybe new Op? - Plotting graphs from results