public abstract class NonMaxBlock
extends java.lang.Object
Non-maximum extractor based on the block algorithm in [1]. The worst case complexity per pixel is 4 - 4/(n+1) where n is the region size. The algorithm works by breaking up the image into a set of evenly spaced blocks with their sides touching. The local maximum is found inside a block and then the region around that maximum is examined to see if it is truly a local max.
Each block check is independent of all the others and no information is exchanged. This algorithm could be paralyzed easily and has no memory overhead.
See NonMaxSuppression for a definition of parameters
not described in this document
[1] Neubeck, A. and Van Gool, L. "Efficient non-maximum suppression" ICPR 2006
| Modifier and Type | Field and Description |
|---|---|
protected int |
border |
boolean |
detectsMaximum |
boolean |
detectsMinimum |
protected boofcv.struct.QueueCorner |
localMax |
protected boofcv.struct.QueueCorner |
localMin |
protected int |
radius |
protected float |
thresholdMax |
protected float |
thresholdMin |
| Modifier | Constructor and Description |
|---|---|
protected |
NonMaxBlock(boolean detectsMinimum,
boolean detectsMaximum) |
| Modifier and Type | Method and Description |
|---|---|
int |
getBorder() |
int |
getSearchRadius() |
float |
getThresholdMax() |
float |
getThresholdMin() |
void |
process(boofcv.struct.image.GrayF32 intensityImage,
boofcv.struct.QueueCorner localMin,
boofcv.struct.QueueCorner localMax)
Detects local minimums and/or maximums in the provided intensity image.
|
protected abstract void |
searchBlock(int x0,
int y0,
int x1,
int y1,
boofcv.struct.image.GrayF32 img) |
void |
setBorder(int border) |
void |
setSearchRadius(int radius) |
void |
setThresholdMax(float thresholdMax) |
void |
setThresholdMin(float thresholdMin) |
protected int radius
protected float thresholdMin
protected float thresholdMax
protected int border
protected boofcv.struct.QueueCorner localMin
protected boofcv.struct.QueueCorner localMax
public boolean detectsMinimum
public boolean detectsMaximum
protected NonMaxBlock(boolean detectsMinimum,
boolean detectsMaximum)
public void process(boofcv.struct.image.GrayF32 intensityImage,
boofcv.struct.QueueCorner localMin,
boofcv.struct.QueueCorner localMax)
intensityImage - (Input) Feature intensity image.localMin - (Output) storage for found local minimums.localMax - (Output) storage for found local maximums.protected abstract void searchBlock(int x0,
int y0,
int x1,
int y1,
boofcv.struct.image.GrayF32 img)
public void setSearchRadius(int radius)
public int getBorder()
public void setBorder(int border)
public int getSearchRadius()
public float getThresholdMin()
public void setThresholdMin(float thresholdMin)
public float getThresholdMax()
public void setThresholdMax(float thresholdMax)