What is Eulerian Video Magnification?
Eulerian Video Magnification (EVM) is a computational technique that reveals temporal variations in videos that are impossible to see with the naked eye. Unlike Lagrangian methods that track individual pixels, EVM analyzes temporal variations at fixed spatial positions (Eulerian perspective).EVM can amplify color changes as small as 0.1% of the original intensity, making subtle physiological signals visible.
Key Principles
Spatial Decomposition
Uses Laplacian pyramids to separate different spatial frequency bands
Temporal Filtering
Isolates specific frequency ranges corresponding to physiological processes
Signal Amplification
Multiplies filtered signals by amplification factor (α) to enhance visibility
Reconstruction
Combines amplified signals back into video or extracts temporal signatures
EVM for Vital Signs Monitoring
In the context of vital signs monitoring, EVM exploits two physiological phenomena:- Cardiac pulse: Blood volume changes cause subtle color variations in skin (photoplethysmography)
- Respiration: Chest and facial movements create subtle motion and color changes
Frequency Characteristics
| Signal | Frequency Range (Hz) | Frequency Range (BPM) | Typical Value |
|---|---|---|---|
| Heart Rate | 0.8 - 3.0 | 48 - 180 | 60-100 BPM |
| Respiratory Rate | 0.2 - 0.8 | 12 - 48 | 12-20 breaths/min |
These non-overlapping frequency ranges allow simultaneous extraction of both vital signs from the same video stream.
Dual-Band Processing Architecture
The EVM Vital Signs Monitor implements an optimized dual-band processing approach that extracts both HR and RR in a single pass through the video data.Single-Pass Optimization
src/evm/evm_core.py:16-38
Processing Pipeline
Theprocess_dual_band() method implements the complete EVM pipeline:
Pyramid Construction
Build Laplacian pyramid stack from all video frames once:Source:
src/evm/evm_core.py:74-77Level Selection
Select optimal pyramid levels for each signal type:Why different levels?
- Higher pyramid levels (smaller spatial scale) better capture rapid color changes from pulse
- Lower pyramid levels (larger spatial scale) better capture slower motion from breathing
src/evm/evm_core.py:82-83Tensor Extraction
Extract 4D tensors (Time × Height × Width × Channels) from selected levels:The tensors contain the temporal evolution of each spatial location across all frames.Source:
src/evm/evm_core.py:86-87Temporal Filtering
Apply bandpass filters to isolate physiological frequency ranges:Butterworth bandpass filters remove DC components and high-frequency noise.Source:
src/evm/evm_core.py:90-96Amplification
Multiply filtered signals by amplification factors:Higher α for respiratory signals compensates for their lower natural amplitude.Source:
src/evm/evm_core.py:99-100Laplacian Pyramid Construction
Gaussian Pyramid
The Gaussian pyramid progressively downsamples the image:src/evm/pyramid_processing.py:8-34
Laplacian Pyramid
The Laplacian pyramid captures details lost in downsampling:src/evm/pyramid_processing.py:37-66
Why Laplacian Pyramids?
Why Laplacian Pyramids?
Laplacian pyramids provide several advantages:
- Bandpass filtering: Each level captures a specific range of spatial frequencies
- Computational efficiency: Smaller pyramid levels process faster
- Reduced noise: High-frequency noise is separated into upper levels
- Better amplification: Can apply different α values to different levels
Pyramid Level Extraction
Theextract_pyramid_level() function collects a specific pyramid level across all frames:
src/evm/pyramid_processing.py:129-174
Amplification Factor Selection
The amplification factor (α) is critical for balancing signal enhancement and noise:Heart Rate (α = 30)
- Moderate amplification suitable for subtle color changes
- Too high → motion artifacts become visible
- Too low → insufficient signal for reliable frequency detection
Respiratory Rate (α = 50)
- Higher amplification needed for lower-frequency signals
- Respiratory signals have naturally lower amplitude
- Lower frequency range is less susceptible to motion artifacts
src/config.py:3-10
Performance Characteristics
Computational Complexity
Traditional Two-Pass Approach
Traditional Two-Pass Approach
- Pyramid construction: O(N × M × L) per pass × 2 passes
- Temporal filtering: O(N × M × L) per band × 2 bands
- Total: ~2× the work needed
- N = number of frames
- M = pixels per frame
- L = pyramid levels
Optimized Single-Pass Approach
Optimized Single-Pass Approach
- Pyramid construction: O(N × M × L) once
- Level extraction: O(N × M/4^l) per level
- Temporal filtering: O(N × M/4^l) per band
- Total: ~50-60% faster
- Single pyramid construction
- Processing smaller tensors (downsampled levels)
- Parallel filtering of independent bands
Memory Usage
The system maintains only one pyramid stack in memory, significantly reducing memory footprint compared to dual-pass approaches.
Usage Example
src/evm/evm_manager.py:12-103
Related Concepts
Signal Processing
Learn about temporal filtering and FFT analysis
Face Detection
Understand ROI extraction and stabilization
System Overview
See how EVM fits into the overall architecture
API Reference
Explore the EVMProcessor API