Add license, authors, repository, documentation, keywords, categories, and readme fields to all crate Cargo.toml files. Add crate-level README files for documentation. Co-Authored-By: claude-flow <ruv@ruv.net>
87 lines
3.4 KiB
Markdown
87 lines
3.4 KiB
Markdown
# wifi-densepose-signal
|
|
|
|
[](https://crates.io/crates/wifi-densepose-signal)
|
|
[](https://docs.rs/wifi-densepose-signal)
|
|
[](LICENSE)
|
|
|
|
State-of-the-art WiFi CSI signal processing for human pose estimation.
|
|
|
|
## Overview
|
|
|
|
`wifi-densepose-signal` implements six peer-reviewed signal processing algorithms that extract
|
|
human motion features from raw WiFi Channel State Information (CSI). Each algorithm is traced
|
|
back to its original publication and integrated with the
|
|
[ruvector](https://crates.io/crates/ruvector-mincut) family of crates for high-performance
|
|
graph and attention operations.
|
|
|
|
## Algorithms
|
|
|
|
| Algorithm | Module | Reference |
|
|
|-----------|--------|-----------|
|
|
| Conjugate Multiplication | `csi_ratio` | SpotFi, SIGCOMM 2015 |
|
|
| Hampel Filter | `hampel` | WiGest, 2015 |
|
|
| Fresnel Zone Model | `fresnel` | FarSense, MobiCom 2019 |
|
|
| CSI Spectrogram | `spectrogram` | Common in WiFi sensing literature since 2018 |
|
|
| Subcarrier Selection | `subcarrier_selection` | WiDance, MobiCom 2017 |
|
|
| Body Velocity Profile (BVP) | `bvp` | Widar 3.0, MobiSys 2019 |
|
|
|
|
## Features
|
|
|
|
- **CSI preprocessing** -- Noise removal, windowing, normalization via `CsiProcessor`.
|
|
- **Phase sanitization** -- Unwrapping, outlier removal, and smoothing via `PhaseSanitizer`.
|
|
- **Feature extraction** -- Amplitude, phase, correlation, Doppler, and PSD features.
|
|
- **Motion detection** -- Human presence detection with confidence scoring via `MotionDetector`.
|
|
- **ruvector integration** -- Graph min-cut (person matching), attention mechanisms (antenna and
|
|
spatial attention), and sparse solvers (subcarrier interpolation).
|
|
|
|
## Quick Start
|
|
|
|
```rust
|
|
use wifi_densepose_signal::{
|
|
CsiProcessor, CsiProcessorConfig,
|
|
PhaseSanitizer, PhaseSanitizerConfig,
|
|
MotionDetector,
|
|
};
|
|
|
|
// Configure and create a CSI processor
|
|
let config = CsiProcessorConfig::builder()
|
|
.sampling_rate(1000.0)
|
|
.window_size(256)
|
|
.overlap(0.5)
|
|
.noise_threshold(-30.0)
|
|
.build();
|
|
|
|
let processor = CsiProcessor::new(config);
|
|
```
|
|
|
|
## Architecture
|
|
|
|
```text
|
|
wifi-densepose-signal/src/
|
|
lib.rs -- Re-exports, SignalError, prelude
|
|
bvp.rs -- Body Velocity Profile (Widar 3.0)
|
|
csi_processor.rs -- Core preprocessing pipeline
|
|
csi_ratio.rs -- Conjugate multiplication (SpotFi)
|
|
features.rs -- Amplitude/phase/Doppler/PSD feature extraction
|
|
fresnel.rs -- Fresnel zone diffraction model
|
|
hampel.rs -- Hampel outlier filter
|
|
motion.rs -- Motion and human presence detection
|
|
phase_sanitizer.rs -- Phase unwrapping and sanitization
|
|
spectrogram.rs -- Time-frequency CSI spectrograms
|
|
subcarrier_selection.rs -- Variance-based subcarrier selection
|
|
```
|
|
|
|
## Related Crates
|
|
|
|
| Crate | Role |
|
|
|-------|------|
|
|
| [`wifi-densepose-core`](../wifi-densepose-core) | Foundation types and traits |
|
|
| [`ruvector-mincut`](https://crates.io/crates/ruvector-mincut) | Graph min-cut for person matching |
|
|
| [`ruvector-attn-mincut`](https://crates.io/crates/ruvector-attn-mincut) | Attention-weighted min-cut |
|
|
| [`ruvector-attention`](https://crates.io/crates/ruvector-attention) | Spatial attention for CSI |
|
|
| [`ruvector-solver`](https://crates.io/crates/ruvector-solver) | Sparse interpolation solver |
|
|
|
|
## License
|
|
|
|
MIT OR Apache-2.0
|