jAER project on SourceForge

ch.unizh.ini.jaer.chip.retina
Class Tmpdiff128RateController

java.lang.Object
  extended by net.sf.jaer.eventprocessing.EventFilter
      extended by net.sf.jaer.eventprocessing.EventFilter2D
          extended by ch.unizh.ini.jaer.chip.retina.Tmpdiff128RateController
All Implemented Interfaces:
FrameAnnotater

public class Tmpdiff128RateController
extends EventFilter2D
implements FrameAnnotater

Controls the rate of events from the retina by controlling retina biases. The event threshold is increased if rate exceeds rateHigh until rate drops below rateHigh. The threshold is decreased if rate is lower than rateLow. Hysterisis limits crossing noise. A lowpass filter smooths the rate measurements.

Author:
tobi

Field Summary
protected  java.util.prefs.Preferences prefs
           
protected  int rateHigh
           
 
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
Tmpdiff128RateController(AEChip chip)
          Creates a new instance of Tmpdiff128RateController
 
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.
 java.lang.Object getFilterState()
          should return the filter state in some useful form
 float getHysteresisFactor()
           
 float getRateFilter3dBFreqHz()
           
 int getRateHigh()
           
 int getRateLow()
           
 void initFilter()
          this should allocate and initialize memory: it may be called when the chip e.g.
 boolean isWriteLogEnabled()
           
 void resetFilter()
          should reset the filter to initial state
 void setHysteresisFactor(float h)
           
 void setRateFilter3dBFreqHz(float rateFilter3dBFreqHz)
           
 void setRateHigh(int upperThreshKEPS)
           
 void setRateLow(int lowerThreshKEPS)
           
 void setWriteLogEnabled(boolean writeLogEnabled)
           
 
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
 

Field Detail

prefs

protected java.util.prefs.Preferences prefs

rateHigh

protected int rateHigh
Constructor Detail

Tmpdiff128RateController

public Tmpdiff128RateController(AEChip chip)
Creates a new instance of Tmpdiff128RateController

Method Detail

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

resetFilter

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

Specified by:
resetFilter in class EventFilter

getRateHigh

public int getRateHigh()

setRateHigh

public void setRateHigh(int upperThreshKEPS)

getRateLow

public int getRateLow()

setRateLow

public void setRateLow(int lowerThreshKEPS)

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

getRateFilter3dBFreqHz

public float getRateFilter3dBFreqHz()

setRateFilter3dBFreqHz

public void setRateFilter3dBFreqHz(float rateFilter3dBFreqHz)

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

getHysteresisFactor

public float getHysteresisFactor()

setHysteresisFactor

public void setHysteresisFactor(float h)

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

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

isWriteLogEnabled

public boolean isWriteLogEnabled()

setWriteLogEnabled

public void setWriteLogEnabled(boolean writeLogEnabled)

jAER project on SourceForge