|
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 for| Method Detail |
|---|
public static java.lang.String getDescription()
public float getRhoPixels()
public float getThetaDeg()
public float getThetaRad()
public void resetFilter()
EventFilter
resetFilter in class EventFilterpublic EventPacket<?> filterPacket(EventPacket<?> in)
EventFilter2D
filterPacket in class EventFilter2Din - 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 FrameAnnotaterdrawable - the OpenGL drawable components, e.g., GLCanvaspublic java.lang.Object getFilterState()
EventFilter
getFilterState in class EventFilterpublic void initFilter()
EventFilter
initFilter in class EventFilterpublic void annotate(float[][][] frame)
FrameAnnotater
annotate in interface FrameAnnotaterframe - the RGB pixel information. First dimension is Y, second is X, third is RGBpublic void annotate(java.awt.Graphics2D g)
FrameAnnotater
annotate in interface FrameAnnotaterg - 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 LineDetectorpublic float getThetaDegFiltered()
getThetaDegFiltered in interface LineDetector
public void update(java.util.Observable o,
java.lang.Object arg)
update in interface java.util.Observerpublic 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 | |||||||||