SDK CV Configs
-
struct FrequencyClusteringAlgorithmConfig
Data needed to configure a FrequencyClusteringAlgorithm.
Public Functions
-
inline FrequencyClusteringAlgorithmConfig(int min_cluster_size, float max_frequency_diff, timestamp max_time_diff, float filter_alpha)
Constructor.
- Parameters
min_cluster_size – Minimum size of a cluster to be output (in pixels)
max_frequency_diff – Maximum frequency difference for an input event to be associated to an existing cluster
max_time_diff – Maximum time difference to link an event to an existing cluster
filter_alpha – Filter weight for updating the cluster position with a new event
-
FrequencyClusteringAlgorithmConfig() = default
Default constructor.
-
inline FrequencyClusteringAlgorithmConfig(int min_cluster_size, float max_frequency_diff, timestamp max_time_diff, float filter_alpha)
-
struct FrequencyEstimationConfig
Configuration used when estimating the frequency of periodic signals.
Public Functions
-
inline FrequencyEstimationConfig(unsigned int filter_length = 7, float min_freq = 10.f, float max_freq = 150.f, unsigned int diff_thresh_us = 1500, bool output_all_burst_events = false)
Constructor.
Note
Internally, the algorithm first estimates period using the events’ timestamps and then converts it to frequency. The decision-making criterion
diff_thresh_us
is then absolute in the period domain, instead of the frequency domain.- Parameters
filter_length – Number of measures of the same period before outputting an event
min_freq – Minimum frequency to output.
max_freq – Maximum frequency to output.
diff_thresh_us – Maximum difference (us) allowed between two consecutive periods to be considered the same.
output_all_burst_events – Whether all the events of a burst must be output or not
-
inline FrequencyEstimationConfig(unsigned int filter_length = 7, float min_freq = 10.f, float max_freq = 150.f, unsigned int diff_thresh_us = 1500, bool output_all_burst_events = false)
-
struct PeriodEstimationConfig
Configuration used when estimating the period of periodic signals.
Public Functions
-
inline PeriodEstimationConfig(unsigned int filter_length = 7, float min_period = 6500, unsigned int max_period = 1e5, float diff_thresh_us = 1500, bool output_all_burst_events = false)
Constructor.
- Parameters
filter_length – Number of measures of the same period before outputting an event
min_period – Minimum period (us) to output. Default value is 6500us, which corresponds to 153Hz
max_period – Maximum period (us) to output. Default value is 1e5us, which corresponds to 10Hz
diff_thresh_us – Maximum difference (us) allowed between two consecutive periods to be considered the same
output_all_burst_events – Whether all the events of a burst must be output or not
-
inline PeriodEstimationConfig(unsigned int filter_length = 7, float min_period = 6500, unsigned int max_period = 1e5, float diff_thresh_us = 1500, bool output_all_burst_events = false)
-
struct SparseOpticalFlowConfig
Configuration to use with the sparse optical flow algorithm.
Public Functions
-
inline SparseOpticalFlowConfig(float distance_gain = 0.05f, float damping = 0.707f, float omega_cutoff = 5.f, unsigned int min_cluster_size = 5, timestamp max_link_time = 50000, bool match_polarity = true, bool use_simple_match = true, bool full_square = true, bool last_event_only = false, unsigned int size_threshold = 100000000)
Constructor.
- Parameters
distance_gain – Distance gain of the low pass filter to compute the size of a cluster
damping – Damping parameter of the Luenberger estimator, will determine how fast the speed computation of a cluster will converge. It is related to the eigenvalues of the observer. The damping ratio influences the decay of the oscillations in the observer response. A value of 1 is for critical damping, while a value of 0 produces perfect oscillations. The system is underdamped for values lesser than 1 and overdamped for values greater than 1.
omega_cutoff – Parameter of the Luenberger estimator, will determine how fast the speed computation of a cluster will respond to changes in the system. It is related to the eigenvalues of the observer. A higher frequency results in faster convergence but may introduce more oscillations.
min_cluster_size – Minimal number of events hitting a cluster before it gets outputted
max_link_time – Maximum time in us for two events to be linked in time
match_polarity – Set to true to create mono-polarity clusters, otherwise it will use multi-polarity ones
use_simple_match – Set to false to use a costlier constant velocity match strategy
full_square – Set to true to check connectivity on the full 3x3 square around the events, otherwise it will use the 3x3 cross around it
last_event_only – Set to true to only check the connectivity with the last event added to the cluster referenced at every pixel positions
size_threshold – Threshold on the spatial size of a cluster before being outputted
Public Members
-
float distance_update_rate
Update rate on the distance between the center of the cluster and new events. In other words, it is the gain of the low pass filter to compute the size of a CCL. It defines how fast it will converge. Between 0 and 1 : the closer to 0, the more filtered (thus slower) the size estimation will be. The closer to 1, the more sensitive to new events it will be.
-
float damping
Parameter of the Luenberger estimator, will determine how fast the speed computation of a CCL will converge. The damping ratio influences the decay of the oscillations in the observer response. A value of 1 is for critical damping, while a value of 0 produces perfect oscillations. The system is underdamped for values lesser than 1 and overdamped for values greater than 1.
-
float omega_cutoff
Parameter of the Luenberger estimator, will determine how fast the speed computation of a CCL will respond to changes in the system. A higher frequency results in faster convergence but may introduce more oscillations.
-
unsigned int min_cluster_size
Minimal number of events hitting a cluster before it gets outputted (depends on the size of the clusters to track)
-
timestamp max_link_time
Maximum time difference in us for two events to be associated to the same CCL. The higher the link time, the more events can be associated, the more wrong associations can be made. On the contrary, a lower link time will limit wrong associations but may also prevent the formation of correct clusters.
-
bool match_polarity
Decide if we have multi-polarity cluster or mono polarity ones. If True, positive and negative events will trigger same CCLs.
-
bool use_simple_match
If false, will use a constant velocity match strategy, i.e. we ensure each new event matches the estimated cluster speeds
-
bool full_square
If true, connectivity is checked on the full 3x3 square around the events, otherwise just the 3x3 cross around it (top, bottom, left and right pixels)
-
bool last_event_only
If true will only check the connectivity with the last event added to the cluster, instead of all the cluster pixels
-
unsigned int size_threshold
Threshold on the spatial size of a cluster (in pixels). Maximum distance allowed from the estimated center of the cluster to the last event added to it
-
inline SparseOpticalFlowConfig(float distance_gain = 0.05f, float damping = 0.707f, float omega_cutoff = 5.f, unsigned int min_cluster_size = 5, timestamp max_link_time = 50000, bool match_polarity = true, bool use_simple_match = true, bool full_square = true, bool last_event_only = false, unsigned int size_threshold = 100000000)
-
struct TimeGradientFlowAlgorithmConfig
Structure representing the configuration of the time gradient flow algorithm.
Public Functions
-
inline TimeGradientFlowAlgorithmConfig(uint8_t radius = 3, float min_flow_mag = 1.f, float max_flow_mag = 500.f, uint8_t bit_cut = 0)
Initializing constructor.
- Parameters
radius – Spatial radius for flow analysis
min_flow_mag – Minimum flow magnitude to be observed
max_flow_mag – Maximal flow magnitude to be observed
bit_cut – Number of bits to remove to compare timestamps (used to accelerate processing)
Public Members
-
uint8_t local_radius
Matching spatial search radius. The event received will provide the center of the analyzed neighborhood. The pixels at the local_radius distance on the left, right, top and bottom will be used to compute optical flow, not the pixels in-between. The further the distance, the more the flow estimate is regularized but also the more subject to association error.
-
float max_norm
Minimal and maximal flow norm estimated to produce an opticalFlowEvent (in pix/s)
-
uint8_t bit_cut
Number of bits to remove to compare timestamps (used to accelerate processing)
-
inline TimeGradientFlowAlgorithmConfig(uint8_t radius = 3, float min_flow_mag = 1.f, float max_flow_mag = 500.f, uint8_t bit_cut = 0)
-
struct TripletMatchingFlowAlgorithmConfig
Structure representing the configuration of the triplet matching algorithm.
Public Functions
-
TripletMatchingFlowAlgorithmConfig() = default
Default constructor.
-
inline TripletMatchingFlowAlgorithmConfig(float radius, timestamp dt_min, timestamp dt_max)
Initializing constructor.
- Parameters
radius – Spatial radius to search for event matches
dt_min – Minimum time difference for event matches
dt_max – Maximum time difference for event matches
-
inline TripletMatchingFlowAlgorithmConfig(float radius, float min_flow_mag, float max_flow_mag)
Initializing constructor.
- Parameters
radius – Spatial radius to search for event matches
min_flow_mag – Minimum flow magnitude to be observed, will be converted to a constraint on matches time difference
max_flow_mag – Maximum flow magnitude to be observed, will be converted to a constraint on matches time difference
Public Members
-
float radius
Matching spatial search radius. Higher values robustify and regularize estimated visual flow, but increase search area and number of potential matches, hence reduce efficiency. Note that this radius relates to the spatial search for event matching, but that the flow is actually estimated from 2 matches, so potentially twice this area.
-
TripletMatchingFlowAlgorithmConfig() = default