jAER project on SourceForge

ch.unizh.ini.jaer.projects.rccar
Class HingeLaneTracker

java.lang.Object
  extended by net.sf.jaer.eventprocessing.EventFilter
      extended by net.sf.jaer.eventprocessing.EventFilter2D
          extended by ch.unizh.ini.jaer.projects.rccar.HingeLaneTracker
All Implemented Interfaces:
HingeDetector, java.util.Observer, FrameAnnotater

public class HingeLaneTracker
extends EventFilter2D
implements FrameAnnotater, java.util.Observer, HingeDetector

Author:
braendch The HingeLaneTracker is a version of the HingeLineTracker that is able to track two lines by seperating the image into two parts: One part left and one right of a separator. To understand what it does one should first study the HingeLineTracker and than examine how the separator works. In the HingeLaneTracker the hingeNumber describes the number of total hinges -left AND right, so it has to be twice as big as in the hingeLineTracker. hinges on the right side of the image carry a even number and on the left they have an odd one (especially important to understand the arrays) --> the x-coordinate is 0 on the right border

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
HingeLaneTracker(AEChip chip)
           
 
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.
 float getAttentionDecayFactor()
           
 float getAttentionFactor()
           
 float getAttentionRadius()
           
 int getBottomHinge()
           
 java.lang.Object getFilterState()
          should return the filter state in some useful form
 float getHingeDecayFactor()
           
 int getHingeNumber()
           
 float getHingeThreshold()
           
 float getLeftPhi()
           
 float getLeftX()
           
 float getPhi()
           
 float getRightPhi()
           
 float getRightX()
           
 float getSeparatorOffset()
           
 int getShiftSpace()
           
 int getTopHinge()
           
 float getX()
           
 void initFilter()
          this should allocate and initialize memory: it may be called when the chip e.g.
 boolean isDrawOutput()
           
 boolean isShowRowWindow()
           
 void resetFilter()
          should reset the filter to initial state
 void setAttention(int x, int y)
           
 void setAttentionDecayFactor(float attentionDecayFactor)
           
 void setAttentionFactor(float attentionFactor)
           
 void setAttentionRadius(float attentionRadius)
           
 void setBottomHinge(int bottomHinge)
           
 void setDrawOutput(boolean drawOutput)
           
 void setHingeDecayFactor(float hingeDecayFactor)
           
 void setHingeNumber(int hingeNumber)
           
 void setHingeThreshold(float hingeThreshold)
           
 void setSeparatorOffset(float separatorOffset)
           
 void setShiftSpace(int shiftSpace)
           
 void setShowRowWindow(boolean showRowWindow)
           
 void setTopHinge(int topHinge)
           
 void update(java.util.Observable o, java.lang.Object arg)
           
 void updatePaoli()
           
 void updateSeparation()
           
 
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, getDescription, 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

HingeLaneTracker

public HingeLaneTracker(AEChip chip)
Method Detail

resetFilter

public void resetFilter()
Description copied from class: EventFilter
should reset the filter to initial state

Specified by:
resetFilter in class EventFilter

filterPacket

public EventPacket<?> filterPacket(EventPacket<?> in)
Description copied from class: EventFilter2D
Subclasses implement this method to define custom processing.

Specified by:
filterPacket in class EventFilter2D
Parameters:
in - the input packet
Returns:
the output packet

updateSeparation

public void updateSeparation()

updatePaoli

public void updatePaoli()

annotate

public void annotate(javax.media.opengl.GLAutoDrawable drawable)
Description copied from interface: FrameAnnotater
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). The FrameAnnotater then can use JOGL calls to render to the screen by getting the GL context, e.g. the following code, used in the context of an AEChip object, draws a golden lines from LL to UR of the pixel array.
        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();
 

Specified by:
annotate in interface FrameAnnotater
Parameters:
drawable - the OpenGL drawable components, e.g., GLCanvas

getFilterState

public java.lang.Object getFilterState()
Description copied from class: EventFilter
should return the filter state in some useful form

Specified by:
getFilterState in class EventFilter

setAttention

public void setAttention(int x,
                         int y)

initFilter

public void initFilter()
Description copied from class: EventFilter
this should allocate and initialize memory: it may be called when the chip e.g. size parameters are changed after creation of the filter

Specified by:
initFilter in class EventFilter

annotate

public void annotate(float[][][] frame)
Description copied from interface: FrameAnnotater
annotate the RGB frame somehow by color pixels in the rendered pixel frame data.

Specified by:
annotate in interface FrameAnnotater
Parameters:
frame - the RGB pixel information. First dimension is Y, second is X, third is RGB

annotate

public void annotate(java.awt.Graphics2D g)
Description copied from interface: FrameAnnotater
each annotator is called by the relevant class (e.g. EyeTracker) and enters annotate with graphics context current, in coordinates with pixel 0,0 in UL corner and pixel spacing 1 unit before scaling transform (which is already active).

Specified by:
annotate in interface FrameAnnotater
Parameters:
g - the Graphics2D context

isShowRowWindow

public boolean isShowRowWindow()

setShowRowWindow

public void setShowRowWindow(boolean showRowWindow)

isDrawOutput

public boolean isDrawOutput()

setDrawOutput

public void setDrawOutput(boolean drawOutput)

update

public void update(java.util.Observable o,
                   java.lang.Object arg)
Specified by:
update in interface java.util.Observer

getPhi

public float getPhi()
Specified by:
getPhi in interface HingeDetector

getRightPhi

public float getRightPhi()

getLeftPhi

public float getLeftPhi()

getX

public float getX()
Specified by:
getX in interface HingeDetector

getRightX

public float getRightX()

getLeftX

public float getLeftX()

getShiftSpace

public int getShiftSpace()

setShiftSpace

public void setShiftSpace(int shiftSpace)

getHingeThreshold

public float getHingeThreshold()

setHingeThreshold

public void setHingeThreshold(float hingeThreshold)

getAttentionRadius

public float getAttentionRadius()

setAttentionRadius

public void setAttentionRadius(float attentionRadius)

getSeparatorOffset

public float getSeparatorOffset()

setSeparatorOffset

public void setSeparatorOffset(float separatorOffset)

getHingeDecayFactor

public float getHingeDecayFactor()

setAttentionFactor

public void setAttentionFactor(float attentionFactor)

getAttentionFactor

public float getAttentionFactor()

setHingeDecayFactor

public void setHingeDecayFactor(float hingeDecayFactor)

getAttentionDecayFactor

public float getAttentionDecayFactor()

setAttentionDecayFactor

public void setAttentionDecayFactor(float attentionDecayFactor)

getBottomHinge

public int getBottomHinge()

setBottomHinge

public void setBottomHinge(int bottomHinge)

getTopHinge

public int getTopHinge()

setTopHinge

public void setTopHinge(int topHinge)

getHingeNumber

public int getHingeNumber()

setHingeNumber

public void setHingeNumber(int hingeNumber)

jAER project on SourceForge