|
jAER project on SourceForge | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.sf.jaer.eventprocessing.EventFilter
net.sf.jaer.eventprocessing.EventFilter2D
net.sf.jaer.eventprocessing.tracking.HoughLineTracker
public class HoughLineTracker
Tracks a single line as used for line-following navigation or for lane tracking.
Origin of the line is center of image. Angle of line is 0 when vertical and positive for clockwise line rotation.
The line is tracked using an incremental Hough transform method. See http://rkb.home.cern.ch/rkb/AN16pp/node122.html for a concise explanation of basic idea of Hough's. Or http://en.wikipedia.org/wiki/Hough_transform. Or http://www.cs.tu-bs.de/rob/lehre/bv/HNF.html for a good interactive java applet demo.
Each point is splatted in its p, theta form into an accumulator array; the array maximum value is computed for each packet and the resulting p,theta values are lowpass filtered to form the output.
LineDetector
Field Summary |
---|
Fields inherited from class net.sf.jaer.eventprocessing.EventFilter2D |
---|
enclosedFilter, out |
Fields inherited from class net.sf.jaer.eventprocessing.EventFilter |
---|
annotationEnabled, chip, enclosedFilterChain, filterEnabled, log, perf, propertyTooltipMap, support |
Constructor Summary | |
---|---|
HoughLineTracker(AEChip chip)
Creates a new instance of LineTracker |
Method Summary | |
---|---|
void |
annotate(float[][][] frame)
annotate the RGB frame somehow by color pixels in the rendered pixel frame data. |
void |
annotate(javax.media.opengl.GLAutoDrawable drawable)
Each annotator enters annotate with graphics context current, in coordinates with pixel 0,0 in LL corner (note opposite from Java2D) and pixel spacing 1 unit after the scaling transform (which is already active). |
void |
annotate(java.awt.Graphics2D g)
each annotator is called by the relevant class (e.g. |
EventPacket<?> |
filterPacket(EventPacket<?> in)
Subclasses implement this method to define custom processing. |
static java.lang.String |
getDescription()
|
float |
getFavorVerticalAngleRangeDeg()
|
java.lang.Object |
getFilterState()
should return the filter state in some useful form |
float |
getHoughDecayFactor()
|
float |
getRhoPixels()
returns the Hough line radius of the last packet's estimate - the closest distance from the middle of the chip image. |
float |
getRhoPixelsFiltered()
returns the filtered Hough line radius estimate - the closest distance from the middle of the chip image. |
float |
getRhoResPixels()
|
float |
getTauMs()
|
float |
getThetaDeg()
returns the angle of the last packet's Hough line. |
float |
getThetaDegFiltered()
returns the filtered angle of the line. |
float |
getThetaRad()
returns the angle of the last packet's Hough line. |
float |
getThetaResDeg()
|
void |
initFilter()
this should allocate and initialize memory: it may be called when the chip e.g. |
boolean |
isShowHoughWindow()
|
void |
resetFilter()
should reset the filter to initial state |
void |
setFavorVerticalAngleRangeDeg(float favorVerticalAngleRangeDeg)
|
void |
setHoughDecayFactor(float houghDecayFactor)
|
void |
setRhoResPixels(float rhoResPixels)
|
void |
setShowHoughWindow(boolean showHoughWindow)
|
void |
setTauMs(float tauMs)
|
void |
setThetaResDeg(float thetaResDeg)
|
void |
update(java.util.Observable o,
java.lang.Object arg)
|
Methods inherited from class net.sf.jaer.eventprocessing.EventFilter2D |
---|
checkOutputPacketEventType, checkOutputPacketEventType, getEnclosedFilter, resetOut, setEnclosedFilter, setFilterEnabled |
Methods inherited from class net.sf.jaer.eventprocessing.EventFilter |
---|
getChip, getEnclosedFilterChain, getEnclosingFilter, getPrefs, getPropertyChangeSupport, getPropertyTooltip, isAnnotationEnabled, isEnclosed, isFilterEnabled, prefsEnabledKey, setAnnotationEnabled, setChip, setEnclosed, setEnclosedFilter, setEnclosedFilterChain, setEnclosingFilter, setPreferredEnabledState, setPrefs, setPropertyTooltip |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface net.sf.jaer.graphics.FrameAnnotater |
---|
isAnnotationEnabled, setAnnotationEnabled |
Constructor Detail |
---|
public HoughLineTracker(AEChip chip)
chip
- the chip to track forMethod Detail |
---|
public static java.lang.String getDescription()
public float getRhoPixels()
public float getThetaDeg()
public float getThetaRad()
public void resetFilter()
EventFilter
resetFilter
in class EventFilter
public EventPacket<?> filterPacket(EventPacket<?> in)
EventFilter2D
filterPacket
in class EventFilter2D
in
- the input packet
public void annotate(javax.media.opengl.GLAutoDrawable drawable)
FrameAnnotater
GL gl = drawable.getGL(); gl.glBegin(GL.GL_LINES); gl.glColor3f(.5f, .5f, 0); gl.glVertex2f(0, 0); gl.glVertex2f(getSizeX() - 1, getSizeY() - 1); gl.glEnd();
annotate
in interface FrameAnnotater
drawable
- the OpenGL drawable components, e.g., GLCanvaspublic java.lang.Object getFilterState()
EventFilter
getFilterState
in class EventFilter
public void initFilter()
EventFilter
initFilter
in class EventFilter
public void annotate(float[][][] frame)
FrameAnnotater
annotate
in interface FrameAnnotater
frame
- the RGB pixel information. First dimension is Y, second is X, third is RGBpublic void annotate(java.awt.Graphics2D g)
FrameAnnotater
annotate
in interface FrameAnnotater
g
- the Graphics2D contextpublic float getThetaResDeg()
public void setThetaResDeg(float thetaResDeg)
public float getRhoResPixels()
public void setRhoResPixels(float rhoResPixels)
public float getTauMs()
public void setTauMs(float tauMs)
public boolean isShowHoughWindow()
public void setShowHoughWindow(boolean showHoughWindow)
public float getRhoPixelsFiltered()
getRhoPixelsFiltered
in interface LineDetector
public float getThetaDegFiltered()
getThetaDegFiltered
in interface LineDetector
public void update(java.util.Observable o, java.lang.Object arg)
update
in interface java.util.Observer
public float getFavorVerticalAngleRangeDeg()
public void setFavorVerticalAngleRangeDeg(float favorVerticalAngleRangeDeg)
public float getHoughDecayFactor()
public void setHoughDecayFactor(float houghDecayFactor)
|
jAER project on SourceForge | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |