Skip to content
Ziqing7226Public

About

More than a GUI for OpenEB — cross-platform event-camera workbench: live view, recording & 25 algorithms for Prophesee, CenturyArks & iniVation (DAVIS/DVXplorer) cameras. Windows · macOS · Linux.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

EB plus

A polished, open-source desktop app for event cameras — built on OpenEB v5.2.0.

Real-time visualization · camera control · recording & playback · calibration · 25 algorithms · customizable themes

English · 简体中文

License Language Version Ubuntu 26.04 Windows 11 macOS

EB plus main window: real-time event-camera visualization


Why EB plus?

Event cameras — also called neuromorphic vision sensors — don't capture frames; they report per-pixel brightness changes at microsecond resolution, with high dynamic range and low power. Working with that stream usually means vendor-specific tools plus custom scripts. EB plus — built on OpenEB, the open-source core of the Prophesee Metavision SDK — is one desktop workbench for the whole workflow:

  • One GUI for three vendors — Prophesee, CenturyArks and iniVation devices share one device list (see the camera table)
  • The complete workflow — live view, camera control, recording & playback, chessboard calibration, HDF5 / CSV / AVI export
  • 25 algorithms built in — noise filtering, optical flow, tracking, XYT 3D point cloud, deep-learning event-to-video (E2VID family) and DL dense optical flow
  • Windows and macOS, not just Ubuntu — EB plus builds on OpenEB with Windows 11 and macOS support, CI-tested on all three platforms on every push
  • Fully open source — MIT-licensed original code on the Apache-2.0 OpenEB SDK; no account, registration or license key

Supported cameras

Vendor Models Live support
Prophesee any camera exposed by the installed Metavision HAL plugin full — events, biases, ROI, anti-flicker / trail filter / ERC, triggers, RAW recording
CenturyArks SilkyEvCam — natively: the HAL plugin built from the vendored OpenEB registers the CenturyArks USB IDs alongside Prophesee's (no separate vendor plugin needed) same stack as Prophesee
iniVation DAVIS346, DVXplorer — hardware-tested; DAVIS240A/B/C, DAVIS640, CDAVIS — follow the reference implementation, not yet hardware-tested preliminary — events, full bias control (Auto Bias included), hardware ROI (DAVIS), IMU attitude view, APS frame preview, AEDAT4 recording

File playback needs no camera: RAW files, plus the event streams of AEDAT4 and ALPDATA recordings.

iniVation support is optional at build time — without libusb-1.0 development files the build simply excludes it. One-time USB setup and per-model notes: wiki/Getting-Started.md.


Quick Start

# Build
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -- -j$(nproc)

# Run (the launcher sets all required env vars)
./run.sh

That's it. The launcher handles Wayland compatibility, HAL plugin paths, and OpenGL backend selection automatically.

Requirements: Ubuntu 26.04 · GCC 15 · Qt 6 · OpenCV 4 — the reference environment. Windows 11 (MSVC) and macOS (Apple Silicon) are also supported and CI-tested; see the per-platform build guides: Linux · Windows 11 · macOS.

Manual launch (Ubuntu)

Env vars & camera vendor paths
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:-}:/usr/local/lib"
export HDF5_PLUGIN_PATH="/usr/local/lib/hdf5/plugin"
# The plugin built from the vendored OpenEB drives BOTH Prophesee and
# CenturyArks (SilkyEvCam) cameras - no separate vendor plugin needed:
export MV_HAL_PLUGIN_PATH=/usr/local/lib/metavision/hal/plugins
export QT_QPA_PLATFORM=xcb       # Wayland renders black for QOpenGLWidget
export QSG_RHI_BACKEND=opengl    # Qt 6 may default to Vulkan

./build/gui/gui_for_openeb

The plugin at /usr/local/lib/metavision/hal/plugins (built from the vendored OpenEB) registers both the Prophesee and the CenturyArks USB IDs, so one path covers both vendors. Only point elsewhere if you deliberately installed a vendor-distributed plugin instead.


Features

Real-time Display

  • OpenGL-accelerated rendering with letterboxed viewport
  • 7 frame modes: Integration, Diff, Histogram, Time Decay, Contrast Map, Periodic, On-Demand
  • 4 color palettes: Dark, Light, CoolWarm, Gray
  • Live statistics: event rate, ON/OFF ratio, FPS, timestamp

Camera Control

  • Biases — all HAL biases with slider + spinbox, save/load .bias files, Auto Bias rate-band control
  • ROI — multi-rectangle ROI / RONI, drag-to-select on the display
  • ESP — Anti-Flicker, Trail Filter, Event Rate Control
  • Trigger — Trigger In (per-channel) + Trigger Out

All panels degrade gracefully when the device lacks the corresponding HAL facility (e.g. the four hardware panels auto-disable during file playback).

Recording & Playback

  • RAW recording from live cameras (inivation cameras: live preview + biases only)
  • File playback with speed control, seek, pause/resume
  • File cutter — extract a time range from an event file

Export & Conversion

  • Convert between RAW, HDF5, and CSV
  • Export events to AVI video (configurable FPS, accumulation, quality, color mode)

Preprocessing Filter Chain

4 stackable stages applied in a thread-safe pipeline: Polarity Filter, Polarity Invert, Flip X, Flip Y. Toggled from the sidebar.

Algorithms (25 total)

EB plus ships 21 self-developed algorithms plus 4 OpenEB filter stages, all registered in a single AlgoBridge registry.

Category Examples
Filtering Hot Pixel Filter, Background Mask
Motion Sparse Optical Flow (4 modes), Direction Selective, EIS / Optical Gyro
Detection Blob Detector, Corner Detector (Harris/FAST/AGAST), Line Segment (ELiSeD)
Tracking Object Tracker (RCT, jAER-aligned), Hough Circle, Hough Line
Reconstruction Event-to-Video — E2VID / E2VID+ / FireNet+ / HyperE2VID (DL modes), BardowVariational, InteractingMaps
DL Optical Flow Dense Optical Flow (DL) — EVFlowNet, HSV-coded dense flow
Analytics Frequency Detector, Frequency Map
Visualization Time Surface, XYT 3D Point Cloud, Orientation Cluster
Calibration Intrinsic Calibration (blinking chessboard)

Algorithms are mutually exclusive — enabling one disables the previous. Compute-heavy algorithms auto-enable a centered 256×144 unified ROI (saved and restored on disable), and all algorithms share a "ROI → noise filter → 1/4 downsample" preprocessing stage to bound computational cost. All algorithm parameters are adjusted exclusively in the sidebar (AlgorithmsPanel); algorithm display windows show only the title and output, preventing parameter drift between two independent control panels.

Noise Filter (shared preprocessing)

8 modes exposed in the sidebar based on the selected filter: BAF, STCF, Refractory, DWF, AgePolarity, Harmonic, Repetitious, SpatialBP.

Neural Reconstruction (E2VID family) & DL Optical Flow

The Event-to-Video algorithm defaults to E2VID and offers 4 DL modes (selected in the GUI; each mode has its own model file, so several weight sets can be installed side by side), plus the non-DL BardowVariational / InteractingMaps modes. A separate Dense Optical Flow (DL) algorithm renders EVFlowNet's per-pixel flow as a direction-coded HSV frame.

Mode Model Reference (paper / repo) Pretrained weights
2 = E2VID (default) UNetRecurrent rpg_e2vid — Gallego et al., 2019 E2VID_lightweight.pth.tar
3 = E2VID+ FlowNet (joint head) event_cnn_minimal — Stoffregen et al., ECCV 2020 model pack → reconstruction_model.pth
4 = FireNet+ FireNet (~40K params) ibid. ibid. → firenet_all_cts.pth
5 = HyperE2VID Hypernetwork UNet HyperE2VID — Ercan et al., IEEE TIP 2024 model.pth
DL flow EVFlowNet event_cnn_minimal (arch.: Zhu et al., 2018) ibid. → flow_model.pth

Setup (one-time, ~10 minutes):

cd /path/to/EBplus

# 1. ONNX Runtime 1.19.2 (CPU) into third_party/
mkdir -p third_party/onnxruntime && cd third_party/onnxruntime
wget https://github.com/microsoft/onnxruntime/releases/download/v1.19.2/onnxruntime-linux-x64-1.19.2.tgz
tar xzf onnxruntime-linux-x64-1.19.2.tgz --strip-components=1
cd ../..

# 2. (optional, iGPU acceleration) OpenVINO + Intel compute driver — see wiki/compile.md G4b

# 3. Python venv for model conversion
python3 -m venv .venv && . .venv/bin/activate
pip install torch --index-url https://download.pytorch.org/whl/cpu onnx onnxscript onnxruntime numpy scipy
deactivate

# 4. Reference repositories (conversion imports these; NOT redistributed)
git clone --depth 1 https://github.com/uzh-rpg/rpg_e2vid ref/rpg_e2vid
git clone --depth 1 https://github.com/TimoStoff/event_cnn_minimal ref/event_cnn_minimal
git clone --depth 1 https://github.com/ercanburak/HyperE2VID ref/HyperE2VID

# 5. Download the weights (links in the table above) into models/

# 6. Convert to ONNX
. .venv/bin/activate
python models/convert_to_onnx.py --input models/E2VID_lightweight.pth.tar --output models/e2vid_lightweight.onnx
python models/convert_event_cnn_minimal_to_onnx.py --model e2vid_plus   --input reconstruction_model.pth --output models/e2vid_plus.onnx
python models/convert_event_cnn_minimal_to_onnx.py --model firenet_plus --input firenet_all_cts.pth      --output models/firenet_plus.onnx
python models/convert_event_cnn_minimal_to_onnx.py --model evflownet    --input flow_model.pth           --output models/evflownet.onnx
python models/convert_hypere2vid_to_onnx.py        --input model.pth                                    --output models/hypere2vid.onnx
deactivate

# 7. Rebuild (CMake auto-detects ONNX Runtime / OpenVINO)
cmake --build build -- -j$(nproc)

In the GUI: Algorithm → Event → Video (defaults to E2VID mode: 128×128 ROI, 30 fps, 1/4 downsample) — pick the mode in the sidebar; each DL mode exposes its own model path. Dense Optical Flow (DL) runs at the unified ROI with internal 1/4 downsampling. All DL inference uses the iGPU via OpenVINO when available (Inference device = Auto), falling back to ONNX Runtime CPU.

Without ONNX Runtime: E2VID falls back to a heuristic mode (voxel-grid sum + sigmoid). BardowVariational and InteractingMaps work without any setup.

Third-party models notice: EB plus does NOT redistribute any pretrained weights or reference source code — the conversion scripts run against YOUR clones under ref/ and the weights are downloaded from the official links above. Licenses of the referenced code: rpg_e2vid = GPL-3.0 (imported only at conversion time, on your machine, by your clone); event_cnn_minimal = no license file (weights shared by the authors for research use); HyperE2VID = MIT. The pretrained weights are academic releases; verify the applicable licenses (and patent landscape, where relevant) before commercial deployment.

Theming

  • 5 background colors: Gray, Green, Yellow, Pink, Blue (default)
  • 3 modes: Follow System (default), Always Light, Always Dark
  • Dark mode uses a dark variant of the chosen color — not just black
  • Text color auto-adjusts (black on light, white on dark)
  • Settings persist across restarts; the title bar follows the theme

Multi-Window & Layout

  • XYT 3D event point cloud (GPU-accelerated)
  • Additional algorithm display windows (dockable)
  • Save/restore dock layout to JSON

Directory Structure

EBplus/
├── gui/              # Qt 6 application
│   ├── main_window.*     # Main window: title-bar menus, docks, signal wiring
│   ├── display/          # OpenGL viewport, overlays, 3D cloud
│   ├── panels/           # VSCode-style sidebar panels (5 groups, 11 panels)
│   ├── app/              # Controllers (camera, pipeline, theme, …)
│   ├── algo_bridge/      # Algorithm registry + filter chain
│   ├── recorder/         # RAW recording & playback
│   ├── exporter/         # HDF5/CSV/AVI export
│   ├── calibration/      # Intrinsic wizard
│   └── widgets/          # Title bar, ActivityBar, AlgoWindow, pixel probe
├── algo/              # Self-developed algorithm library (29 modules)
├── openeb/            # OpenEB SDK (Apache 2.0, v5.2.0)
├── models/            # E2VID PyTorch → ONNX conversion
├── run.sh             # Launcher (sets env vars)
├── wiki/              # Docs: compile guide, algorithms, architecture
└── pic/               # Screenshots

Troubleshooting

Black screen on startup — Use the launcher script. If launching manually, set QT_QPA_PLATFORM=xcb and QSG_RHI_BACKEND=opengl.

Camera not detected — Verify MV_HAL_PLUGIN_PATH matches your vendor. Run metavision_hal_ls to check.

"NonMonotonicTimeHigh" error — This is a transient Evt3 protocol warning that occurs ~50% of the time on some Gen3.x cameras at startup. EB plus treats it as non-fatal and keeps the stream running. No action needed.

Dark mode not following system — Requires Qt 6.5+. On older Qt, use Theme → Mode → Dark.


Keyboard Shortcuts

Shortcut Action
Ctrl+O Open file
Ctrl+Shift+P Toggle playback panel
F11 Fullscreen
Ctrl+Q Quit

Known Issues & Feedback

EB plus is under active development and may still contain bugs. If you encounter any issue — crashes, rendering glitches, broken controls, or unexpected behavior — please open an issue. Bug reports from real users are the most direct help.


License

  • Original code: MIT
  • OpenEB SDK: Apache 2.0 — copyright Prophesee
  • Inivation live-camera support (gui/davis/): protocol, register tables and defaults ported from dv-processing (Apache 2.0, © iniVation AG) — attribution headers in each file
  • jAER-aligned algorithms: reference behavior from jAER (LGPL-2.1) — re-implementations, no code vendored
  • DV GUI: not used. iniVation's dv-gui ships a custom (non-standard) license; the IMU visualization is a fresh implementation sharing only the generic rolling-curve concept

Built with Qt 6 · OpenCV · the OpenEB SDK

About

More than a GUI for OpenEB — cross-platform event-camera workbench: live view, recording & 25 algorithms for Prophesee, CenturyArks & iniVation (DAVIS/DVXplorer) cameras. Windows · macOS · Linux.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages