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
-