Algorithms Overview
Algorithms implemented in the SDK can be grouped into categories based on their function.
Processors
Processors are algorithms that can be used to process data either to change some of their characteristics (e.g. flip the x coordinate of every event) or perform some advanced analysis (e.g. tracking objects or extracting spatio/temporal patterns).
Algorithms taking events as input and outputting the same number of events but with a transformation applied:
Name |
Module |
C++ API |
Python API |
Samples |
---|---|---|---|---|
FlipXAlgorithm |
Core |
|||
FlipYAlgorithm |
Core |
None |
||
PolarityInverterAlgorithm |
Core |
None |
||
RotateEventsAlgorithm |
Core |
None |
||
TransposeEventsAlgorithm |
Core |
Note
The Python bindings of those algorithms offers two ways to process the events: with an output buffer or directly on the input.
For example, FlipXAlgorithm
can be called either with process_events()
that does not change the input events:
flip_x = metavision_sdk_core.FlipXAlgorithm(width - 1)
flipped_events_buffer = flip_x.get_empty_output_buffer()
flip_x.process_events(ev, flipped_events_buffer)
or with process_events_()
which performs processing in-place:
flip_x = metavision_sdk_core.FlipXAlgorithm(width - 1)
flip_x.process_events_(ev)
Algorithms processing events as input and outputting some data from the event (counting, tracking, optical flow, etc):
Name |
Module |
C++ API |
Python API |
Samples |
---|---|---|---|---|
FrequencyAlgorithm |
CV |
|||
PeriodAlgorithm |
CV |
None |
||
SparseOpticalFlowAlgorithm |
CV |
|||
PlaneFittingFlowAlgorithm |
CV |
|||
TimeGradientFlowAlgorithm |
CV |
|||
TripletMatchingFlowAlgorithm |
CV |
|||
ModulatedLightDetectorAlgorithm |
CV |
|||
ActiveMarkerTrackerAlgorithm |
CV |
|||
ActiveMarkerPoseEstimatorAlgorithm |
CV3D |
|||
CountingAlgorithm |
Analytics |
|||
DominantValueEventsAlgorithm |
Analytics |
None |
||
JetMonitoringAlgorithm |
Analytics |
|||
PsmAlgorithm |
Analytics |
|||
SpatterTrackerAlgorithm |
Analytics |
|||
TrackingAlgorithm |
Analytics |
|||
DftHighFreqScorerAlgorithm |
Calibration |
Algorithms processing events as input and outputting display-related data (e.g. frames):
Name |
Module |
C++ API |
Python API |
Samples |
---|---|---|---|---|
EventFrameDiffGenerationAlgorithm |
Core |
|||
EventFrameHistoGenerationAlgorithm |
Core |
|||
OnDemandFrameGenerationAlgorithm |
CV |
|||
PeriodicFrameGenerationAlgorithm |
CV |
Python Get Started etc. |
||
TimeDecayFrameGenerationAlgorithm |
CV |
None |
||
DenseFlowFrameGeneratorAlgorithm |
CV |
|||
SparseFlowFrameGeneratorAlgorithm |
CV |
|||
DominantValueMapAlgorithm |
Analytics |
|||
FrequencyMapAsyncAlgorithm |
Analytics |
|||
HeatMapFrameGeneratorAlgorithm |
Analytics |
|||
MapGeneratorAsyncAlgorithm |
Analytics |
None |
||
PeriodMapAsyncAlgorithm |
Analytics |
None |
||
BlinkingFrameGeneratorAlgorithm |
Calibration |
Filters
Filters are algorithms taking events as input and outputting only the events that satisfy certain conditions.
Name |
Module |
C++ API |
Python API |
Samples |
---|---|---|---|---|
PolarityFilterAlgorithm |
Core |
|||
RoiFilterAlgorithm |
Core |
|||
AntiFlickerAlgorithm |
CV |
|||
ActivityNoiseFilterAlgorithm |
CV |
|||
ProximityFilterAlgorithm |
CV |
|
||
RoiMaskAlgorithm |
Core |
None |
||
SpatioTemporalContrastAlgorithm |
CV |
|||
TrailFilterAlgorithm |
CV |
Note
Our C++ algorithms are independent of the HAL layer/module. They don’t rely on Prophesee sensors and files formats. So as long as you have buffers of events as described in the API documentation, you will be able to leverage them in your application
See also
For an overview of how to use and tune the SDK algorithms, check our programming guide on Processing Events with Algorithms. Alternatively, you can also check Metavision Viewer page where we mention how a filter algorithm can be applied to the event stream.