This C++ sample has a corresponding Python sample.
Jet Monitoring using C++
The Analytics API provides algorithms to monitor jets (i.e. dots) that are being dispensed.
metavision_jet_monitoring.cpp shows how to detect, count and timestamp jets (i.e. dots) that are being dispensed.
metavision_jet_monitoring_calibration.cpp allows calibrating the Regions Of Interest (ROIs) used in the sample.
The ROIs are used for the following purposes:
the camera ROI to reduce the amount of acquired data (decreasing the total event rate while acquiring all data in the ROI)
the detection ROI to interpret a peak in the event rate as a jet
The source code of those files can be found in
when installing Metavision SDK from installer or packages. For other deployment methods, check the page
Path of Samples.
Metavision Jet Monitoring sample visualizes
the events triggered by the dispensed jets,
the ROI used by the camera (shown by red color)
the ROI used for detection (shown by red color)
two surrounding background activity ROIs (shown by blue color)
the event rate
the output jet counter
The following image shows an example of output displayed by the calibration tool:
The following image shows an example of output displayed by the monitoring sample:
Setup & requirements
To accurately monitor jets, it is very important to fulfill some conditions:
the camera should be static and the object in focus
there should be good contrast between the background and the jet
set the camera to have minimal background noise (for example, remove flickering lights)
The counting ROI should be as small as possible, but still being able to contain a ‘nominal’ jet:
if too small, the algorithm precision is affected: we may miss counts
if too large, the algorithm precision is affected: we may add count due to jet unrelated activity
Finally, depending on the speed of the jets you might have to tune the sensor biases to get better data (make the sensor faster and/or less or more sensitive).
Make sure to run the calibration tool before using Metavision Jet Monitoring sample. Here’s how to retrieve the camera and detection ROIs.
Plug the camera to your computer and launch the calibration tool. A window displaying events should appear.
Make sure the picopulse nozzle arrow is in the field of view of the camera.
Rotate the camera to align the base of the dispenser with the vertical.
Translate the camera to shift the base of the dispenser to the center-left part of the image.
Focus the camera on the dispenser’s nozzle.
Position the laser to make it point right under the nozzle. Run the dispenser in continuous mode to check it.
Press ‘Space’ when the jet is clearly visible on the display of events.
Press ‘B’ to define the baseline, i.e. the jet direction.
Press ‘J’ to define the Jet/Detection ROI.
Press ‘C’ to define the Camera ROI.
Press ‘Enter’ to print the Camera and Detection ROIs in the console.
Hopefully, if the system does not move, you should not have to go over this calibration phase again.
How to start
First, compile the sample as described in this tutorial.
To start the calibration tool based on the live stream from your camera, run:
To start the sample based on
200_jets_at_200hz.raw file from our Sample Recordings:
./metavision_jet_monitoring -i 200_jets_at_200hz.raw
metavision_jet_monitoring.exe -i 200_jets_at_200hz.raw
To start the monitoring sample based on the live stream from your camera, use the nozzle position obtained during the calibration (instead of the placeholders) and run:
./metavision_jet_monitoring --detection-roi Jet_X Jet_Y Jet_WIDTH Jet_HEIGHT --camera-roi Cam_X Cam_Y Cam_WIDTH Cam_HEIGHT
metavision_jet_monitoring.exe --detection-roi Jet_X Jet_Y Jet_WIDTH Jet_HEIGHT --camera-roi Cam_X Cam_Y Cam_WIDTH Cam_HEIGHT
To start the sample based on recorded data, provide the full path to a RAW file (instead of FILENAME):
./metavision_jet_monitoring -i FILENAME --detection-roi Jet_X Jet_Y Jet_WIDTH Jet_HEIGHT --camera-roi Cam_X Cam_Y Cam_WIDTH Cam_HEIGHT
metavision_jet_monitoring.exe -i FILENAME --detection-roi Jet_X Jet_Y Jet_WIDTH Jet_HEIGHT --camera-roi Cam_X Cam_Y Cam_WIDTH Cam_HEIGHT
To check for additional options: