OCTAVE
- public abstract class AbstractOctaveExtremaFinder<OCTAVE extends GaussianOctave<FImage>> extends AbstractOctaveInterestPointFinder<OCTAVE,FImage>
Class for finding extrema within Octave
s using the
approach in Section 4 of Lowe's IJCV paper (minus the bit on
using Brown's interpolation approach to improve localisation).
The AbstractOctaveExtremaFinder uses an event listener paradigm. Once interest points are found, the internal listener will be informed.
Modifier and Type | Field and Description |
---|---|
static float |
DEFAULT_EIGENVALUE_RATIO
The default threshold for the edge response Eigenvalue ratio
|
protected float |
eigenvalueRatio |
currentScaleIndex, listener, octave
Constructor and Description |
---|
AbstractOctaveExtremaFinder()
Construct an AbstractOctaveExtremaFinder with the default
Eigenvalue ratio threshold.
|
AbstractOctaveExtremaFinder(float eigenvalueRatio)
Construct an AbstractOctaveExtremaFinder with the given
Eigenvalue ratio threshold.
|
Modifier and Type | Method and Description |
---|---|
protected void |
beforeProcess(OCTAVE octave)
Called at the start of
AbstractOctaveExtremaFinder#process(OCTAVE) |
protected boolean |
firstCheck(float val,
int x,
int y,
int scaleIndex,
FImage[] images)
Perform the first of the checks that determine whether
a point is a valid interest point.
|
int |
getCurrentScaleIndex()
Get the current scale index within the octave.
|
OCTAVE |
getOctave()
Get the octave from which we are operating
|
protected boolean |
isLocalExtremum(float val,
FImage image,
int x,
int y)
Test to see if a point is a local extremum by searching
the +/- 1 pixel neighbourhood in x and y.
|
protected boolean |
isNotEdge(FImage image,
int x,
int y)
Test if the pixel at x,y in the image is NOT on an edge.
|
void |
process(OCTAVE octave)
Process the provided octave.
|
protected abstract void |
processExtrema(FImage[] images,
int s,
int x,
int y,
float octSize)
Perform any additional checks on the point, and then inform
the listener that a point has been found.
|
getOctaveInterestPointListener, setOctaveInterestPointListener
public static final float DEFAULT_EIGENVALUE_RATIO
protected float eigenvalueRatio
public AbstractOctaveExtremaFinder()
public AbstractOctaveExtremaFinder(float eigenvalueRatio)
eigenvalueRatio
- public OCTAVE getOctave()
OctaveInterestPointFinder
getOctave
in interface OctaveInterestPointFinder<OCTAVE extends GaussianOctave<FImage>,FImage>
getOctave
in class AbstractOctaveInterestPointFinder<OCTAVE extends GaussianOctave<FImage>,FImage>
public int getCurrentScaleIndex()
OctaveInterestPointFinder
getCurrentScaleIndex
in interface OctaveInterestPointFinder<OCTAVE extends GaussianOctave<FImage>,FImage>
getCurrentScaleIndex
in class AbstractOctaveInterestPointFinder<OCTAVE extends GaussianOctave<FImage>,FImage>
public void process(OCTAVE octave)
OctaveProcessor
octave
- the octave.protected boolean firstCheck(float val, int x, int y, int scaleIndex, FImage[] images)
val
- the value at the point.x
- the x-coordinate of the point.y
- the y-coordinate of the point.scaleIndex
- the scale index at which the point was foundimages
- the scale imagesprotected void beforeProcess(OCTAVE octave)
AbstractOctaveExtremaFinder#process(OCTAVE)
octave
- the octave being processedprotected boolean isLocalExtremum(float val, FImage image, int x, int y)
val
- the value at x,yimage
- the image to test againstx
- the x-coordinatey
- the y-coordinateprotected boolean isNotEdge(FImage image, int x, int y)
image
- the imagex
- the x-coordinatey
- the y-coordinateprotected abstract void processExtrema(FImage[] images, int s, int x, int y, float octSize)
images
- the stack of images in this octaves
- the interest-point scalex
- the x-coordinate of the interest-pointy
- the y-coordinate of the interest-pointoctSize
-