Package boofcv.alg.filter.binary
Class ThresholdBlockOtsu
java.lang.Object
boofcv.alg.filter.binary.ThresholdBlockOtsu
- All Implemented Interfaces:
ThresholdBlock.BlockProcessor<GrayU8,
InterleavedS32>
public class ThresholdBlockOtsu
extends Object
implements ThresholdBlock.BlockProcessor<GrayU8,InterleavedS32>
Block Otsu threshold implementation based on
ThresholdBlock
. Computes a histogram in non-overlapping
square regions. Then thresholds a single region by combining histograms from its neighbors to make it less blocky.
This implementation includes a modification from the traditional Otsu algorithm. The threshold can optionally
be adjusted in low variance regions. See code for details.
NOTE: This produces visually different results from ThresholdBlockOtsu
because the block algorithm
combines histograms from its neighboring blocks. That's why it appears to have a wider effective block.
-
Field Summary
Modifier and TypeFieldDescriptionprotected int
protected int
protected boolean
-
Constructor Summary
ConstructorDescriptionThresholdBlockOtsu
(boolean otsu2, double tuning, double scale, boolean down) Configures the detector -
Method Summary
Modifier and TypeMethodDescriptionvoid
computeBlockStatistics
(int x0, int y0, int width, int height, int indexStats, GrayU8 input, InterleavedS32 stats) Computes the min-max value inside a blockcopy()
Creates a copy.void
init
(int blockWidth, int blockHeight, boolean thresholdFromLocalBlocks) void
thresholdBlock
(int blockX0, int blockY0, GrayU8 input, InterleavedS32 stats, GrayU8 output) Thresholds all the pixels inside the specified block
-
Field Details
-
blockWidth
protected int blockWidth -
blockHeight
protected int blockHeight -
thresholdFromLocalBlocks
protected boolean thresholdFromLocalBlocks
-
-
Constructor Details
-
ThresholdBlockOtsu
public ThresholdBlockOtsu(boolean otsu2, double tuning, double scale, boolean down) Configures the detector- Parameters:
tuning
- Tuning parameter. 0 = standard Otsu. Greater than 0 will penalize zero texture.
-
-
Method Details
-
createStats
- Specified by:
createStats
in interfaceThresholdBlock.BlockProcessor<GrayU8,
InterleavedS32>
-
init
public void init(int blockWidth, int blockHeight, boolean thresholdFromLocalBlocks) - Specified by:
init
in interfaceThresholdBlock.BlockProcessor<GrayU8,
InterleavedS32>
-
computeBlockStatistics
public void computeBlockStatistics(int x0, int y0, int width, int height, int indexStats, GrayU8 input, InterleavedS32 stats) Description copied from interface:ThresholdBlock.BlockProcessor
Computes the min-max value inside a block- Specified by:
computeBlockStatistics
in interfaceThresholdBlock.BlockProcessor<GrayU8,
InterleavedS32> - Parameters:
x0
- lower bound pixel value of block, x-axisy0
- upper bound pixel value of block, y-axiswidth
- Block's widthheight
- Block's heightindexStats
- array index of statistics image pixelinput
- Input image
-
thresholdBlock
public void thresholdBlock(int blockX0, int blockY0, GrayU8 input, InterleavedS32 stats, GrayU8 output) Description copied from interface:ThresholdBlock.BlockProcessor
Thresholds all the pixels inside the specified block- Specified by:
thresholdBlock
in interfaceThresholdBlock.BlockProcessor<GrayU8,
InterleavedS32> - Parameters:
blockX0
- Block x-coordinateblockY0
- Block y-coordinateinput
- Input imageoutput
- Output image
-
copy
Description copied from interface:ThresholdBlock.BlockProcessor
Creates a copy. For concurrent code- Specified by:
copy
in interfaceThresholdBlock.BlockProcessor<GrayU8,
InterleavedS32>
-