This repository contains embedded C++ and supporting Python code developed for real-time signal processing, calibration, and visualization of optical measurement data.
The implementation focuses on robust data acquisition, noise reduction, and calibration under constrained microcontroller resources.
The code implements a real-time processing pipeline that:
- Acquires streaming sensor data
- Computes normalized signal ratios
- Applies calibration and correction factors
- Performs noise reduction and outlier rejection
- Classifies signal states based on calibrated thresholds
- Provides optional real-time visualization and data logging
This work emphasizes efficient computation and stability in resource-constrained embedded environments.
- Continuous acquisition and processing of streaming data
- Ratio-based normalization for signal stability
- Low-latency updates for responsive feedback
- Multi-sample calibration using median-based estimation
- Persistent storage of calibration parameters in non-volatile memory
- Runtime recalibration support
- Median filtering for robust central tendency estimation
- Median Absolute Deviation (MAD)-based outlier rejection
- Configurable sample window for performance vs accuracy tradeoff
- Two processing modes:
- Optimized mode for real-time execution
- High-accuracy mode with per-sample outlier filtering
- Tradeoff between computational cost and signal robustness
- Real-time display updates for processed values
- Structured serial output for external monitoring
- Live plotting of processed signals
- Derived metric estimation and smoothing
- Data logging for offline analysis
-
currentHematuria.cpp
Optimized implementation designed for real-time execution on limited hardware.
Uses windowed sampling and median filtering for stable performance. -
preferableHematuria.cpp
Higher-accuracy implementation with per-sample outlier rejection using MAD filtering.
Computationally more intensive and intended for higher-performance environments. -
liveplot.py
Optional visualization tool for real-time monitoring, analysis, and data export.
A ratio between two measurement channels is computed to reduce sensitivity to absolute signal variation and improve robustness.
- A reference value is computed from multiple samples
- Median estimation is used to reduce sensitivity to noise
- A correction factor is derived and stored for future use
The high-accuracy implementation applies:
- Median computation
- Median Absolute Deviation (MAD)
- Threshold-based filtering:
- Values exceeding a normalized deviation threshold are excluded
- Multi-sample aggregation improves robustness
- Tradeoffs between responsiveness and noise suppression are configurable
Processed values are mapped to discrete categories representing signal intensity levels.
Thresholds are applied to the calibrated signal to determine classification states.
- Designed for real-time embedded execution
- Optimized for limited processing and memory constraints
- Balances:
- Accuracy
- Responsiveness
- Computational cost
- Emphasizes robust statistical methods over simple averaging
- This repository contains only the signal processing and visualization components
- Hardware configuration and full system integration are not included
- Certain implementation details are intentionally abstracted
This work demonstrates:
- Embedded signal processing design
- Robust statistical filtering techniques
- Calibration system implementation
- Real-time data handling under resource constraints