Technical Whitepaper • Systems Architecture Download Binary (.ZIP)

HovrPad Gesture Engine: High-Fidelity Optical Gesture Recognition & Low-Latency Spatial Input Synthesis

Priyadarshi C.1, HovrPad HCI Systems1
1HovrPad HCI Systems
Technical Whitepaper & Software Release • v7.4.2 Production
Abstract

This whitepaper outlines the architecture, algorithmic pipeline, and implementation details of the HovrPad Gesture Engine, an ultra-low-latency, zero-calibration optical mouse replacement designed for standard uncalibrated RGB webcams. By pairing 21-point 3D hand landmark tracking with a Two-Layer Hierarchical Smoothing Pipeline (Landmark EMA α=0.2 with fast jump recovery + Screen-Space One-Euro Filter β=0.1), a Decoupled Aiming and Trigger Architecture (Index pointing with Thumb-to-Middle tap triggering), and native user-mode Win32 User32 injection, the engine eliminates involuntary hand jitter without sacrificing pointing speed or responsiveness. Operating on standard x86_64 consumer machines, the system achieves an end-to-end motion-to-cursor latency of 14.2 ms at 60 FPS (<4.8% CPU footprint). Below we detail the multi-threaded pipeline, signal smoothing strategy, gesture finite state machines, and provide the compiled standalone binary.

Key Topics: Optical Hand Tracking, 21-Point Skeletal Kinematics, Two-Layer Smoothing (EMA + 1€ Filter), Decoupled Aiming/Trigger Axis, Finite State Machines, Win32 User32 API, Real-time HCI.
Compiled Software Artifact
Production Binary Distribution (x86_64 Portable)
Release v7.4.2 [Build 2026.09.01]

Self-contained runtime package with bundled CPython interpreter, OpenCV 4.x runtime, MediaPipe graph models, and native Win32/C++ input drivers. Requires no administrative privileges or system-wide registry modifications.

Target OS: Windows 10 / 11 (64-bit PE)
Payload Size: 147.9 MB (155,094,500 bytes)
Package Format: Standalone .ZIP Archive
Camera Prereq: 720p @ 30 FPS (1080p @ 60 FPS rec.)
Download HovrPad_Portable.zip Instant extraction & execution. Zero registry footprint.
SHA-256: e83c749a21b8f0449bc9304a98402a5bb018de9292c3004fa9d0421e4277c1d7
# PowerShell quick unpack and launch
Expand-Archive -Path .\HovrPad_Portable.zip -DestinationPath .\HovrPad -Force
Start-Process -FilePath .\HovrPad\HovrPad.exe

1. System Architecture & Execution Pipeline

The HovrPad Gesture Engine processes optical sensor input through a decoupled, multi-threaded pipeline. Traditional webcam apps run image capture, model inference, and cursor updates in a single blocking thread, which introduces frame drops and noticeable input lag. In contrast, HovrPad isolates the ingestion and landmark inference loop from the OS input injector, dispatching multi-step actions asynchronously via lightweight daemon worker threads.

Figure 1: HovrPad Gesture Engine Asynchronous 5-Stage Processing Pipeline
1. RGB Ingestion
DirectShow / MSMF Capture (60 FPS)
2. Landmark Tracking
MediaPipe 21-Point Skeletal Graph
3. Two-Layer Filter
Landmark EMA → Screen 1€ Filter
4. Gesture FSM
Decoupled Aim & Trigger Hysteresis
5. OS Injection
Win32 User32 (SetCursorPos)
  1. Stage 1: High-Throughput Sensor Ingestion — The camera stream is ingested via Windows DirectShow / Media Foundation, converting frames in memory with zero intermediate copy steps.
  2. Stage 2: 21-Point Skeletal Graph Inference — MediaPipe's lightweight palm detector localizes the hand region, followed by a 2.5D regression model that outputs 21 distinct 3D joint landmarks (wrist, knuckles, phalanx joints, and fingertips).
  3. Stage 3: Two-Layer Hierarchical Signal Conditioning — Landmark coordinates are first smoothed with an Exponential Moving Average (EMA, α=0.2) featuring dynamic jump catch-up (α=0.8) for fast hand repositions. Projected screen target coordinates then pass through a dynamic 1€ (One-Euro) filter (β=0.1, min_cutoff=1.0 Hz) to eliminate micro-tremors during fine targeting.
  4. Stage 4: Finite State Machine (FSM) Classification — Hand topology (finger curl angles, knuckle spreads, and relative pinches) is evaluated against an explicit state machine with hysteresis thresholds and decoupled pointing/trigger mechanics.
  5. Stage 5: Native OS Event Synthesis — Validated cursor coordinates and mouse clicks are injected into the Windows subsystem via native user-mode Win32 APIs (SetCursorPos, mouse_event, keybd_event) with sub-millisecond dispatch. Multi-step cadences (such as Double Click and Right Click hold-delays) run on dedicated background threads to prevent UI stalling.

2. Core Algorithmic Concepts & Signal Conditioning

2.1 The Two-Layer Hierarchical Smoothing Pipeline

Optical mouse control requires resolving two distinct noise profiles: raw landmark jitter in 3D camera space, and cursor trembling in 2D screen space during stationary targeting. HovrPad solves this using a two-layer architecture:

📈 Layer 1: Landmark-Space EMA with Adaptive Jump Recovery
Raw 21 MediaPipe skeletal coordinates pass through an Exponential Moving Average (EMA) with baseline factor α = 0.2 in HandTracker. If rapid wrist repositioning occurs (displacement > 0.10 in normalized space), the filter momentarily boosts α to 0.8 to achieve instantaneous tracking recovery with zero sluggishness.
🎯 Layer 2: Screen-Space One-Euro (1€) Filter
Target screen coordinates (target_x, target_y) are filtered by a calibrated OneEuroFilter (min_cutoff = 1.0 Hz, β = 0.1). The cutoff frequency is modulated dynamically based on velocity estimates computed per frame time-delta dt. When the hand is stationary, smoothing is maximized to freeze the cursor; during rapid sweeps, the cutoff expands to track the finger with zero perceptible lag.

2.2 Decoupled Pointing Axis vs. Trigger Axis (Thumb-to-Middle Tap)

A classic flaw in vision-based virtual mice is using a thumb-to-index pinch to click. Pinching the thumb to the pointing finger collapses the fingertip's spatial position, causing severe cursor jitter and aim deflection at the exact moment of clicking.

💡 The Decoupled Aiming & Trigger Architecture
HovrPad completely separates the Aiming Axis from the Trigger Axis:
Aiming: The Index finger remains stably extended to aim and steer the pointer.
Click Trigger: The user performs Left Click by tapping the Thumb tip against the Middle finger (inner PIP-DIP / DIP-TIP segment).
Because the Index finger does not move during the thumb tap, the cursor remains locked firmly on target.

2.3 Point-to-Segment Proximity & Schmitt-Trigger Pixel Hysteresis

The primary click detector calculates the geometric distance from the thumb tip landmark (lm[4]) to the middle finger skeletal segments (pt_to_segment and segment intersection tests). To prevent click chattering at the contact boundary, the engine enforces Schmitt-trigger pixel hysteresis:

This 20-pixel buffer zone ensures crisp single clicks and prevents unintended drops during long click-and-drag operations.

3. Algorithmic Pipeline Implementation

The following listing illustrates the landmark EMA pre-filtering and dynamic One-Euro screen coordinate smoothing pipeline:

import math
import time
from dataclasses import dataclass

class OneEuroFilter:
    def __init__(self, min_cutoff: float = 1.0, beta: float = 0.1, d_cutoff: float = 1.0):
        self.min_cutoff = min_cutoff
        self.beta = beta
        self.d_cutoff = d_cutoff
        self.x_prev = 0.0
        self.dx_prev = 0.0
        self.t_prev = None

    def _smoothing_factor(self, dt: float, cutoff: float) -> float:
        r = 2.0 * math.pi * cutoff * dt
        return r / (r + 1.0)

    def filter(self, x: float, t: float) -> float:
        if self.t_prev is None:
            self.x_prev, self.t_prev = x, t
            return x
        
        dt = max(t - self.t_prev, 1e-4)
        
        # 1. Filter the discrete derivative (velocity)
        dx = (x - self.x_prev) / dt
        alpha_d = self._smoothing_factor(dt, self.d_cutoff)
        dx_hat = alpha_d * dx + (1.0 - alpha_d) * self.dx_prev
        self.dx_prev = dx_hat
        
        # 2. Modulate cutoff frequency dynamically based on velocity
        fc = self.min_cutoff + self.beta * abs(dx_hat)
        alpha = self._smoothing_factor(dt, fc)
        
        # 3. Apply position EMA with speed-adaptive alpha
        x_hat = alpha * x + (1.0 - alpha) * self.x_prev
        self.x_prev, self.t_prev = x_hat, t
        return x_hat

def smooth_landmark_ema(curr_pt: tuple, prev_pt: tuple, wrist_jump: bool) -> tuple:
    # Fast catchup (0.8) on wrist repositioning jump; baseline (0.2) otherwise
    alpha = 0.8 if wrist_jump else 0.2
    return (
        alpha * curr_pt[0] + (1.0 - alpha) * prev_pt[0],
        alpha * curr_pt[1] + (1.0 - alpha) * prev_pt[1]
    )
Listing 1: Two-Layer Landmark EMA and Dynamic One-Euro Smoothing Pipeline

4. Core Libraries & Dependency Ecosystem

The HovrPad Gesture Engine is constructed using high-performance Python libraries and native Windows user32 APIs. All packages are statically bundled into the standalone zero-dependency portable executable.

Table 1: Runtime Libraries & System Integration Roles
Library / Subsystem Version Target Role in Architecture Execution Layer
MediaPipe (Hands) 0.10.x BlazePalm detector + 2.5D regression skeletal graph TFLite XNNPACK / CPU SSE4.2
OpenCV (cv2) 4.8.x DirectShow frame capture, color-space transforms Intel IPP / OpenCL
NumPy 1.24+ Vectorized Euclidean metrics & point-to-segment geometry OpenBLAS SIMD
PyWin32 (win32api / user32) 306+ Direct cursor positioning (SetCursorPos) & key events Windows User-Mode (Ring 3)
Two-Layer Filter Engine Custom Python Landmark EMA (α=0.2) + Screen OneEuroFilter (β=0.1) In-memory pure Python pipeline

5. Performance Benchmarks & Latency Profiling

Measurements were recorded across 5,000 consecutive interaction cycles on an Intel Core i7-11800H @ 2.30 GHz running Windows 11 x64 with a standard 1080p RGB USB sensor.

Table 2: Stage-by-Stage Latency & System Resource Consumption
Metric / Execution Stage 30 FPS Sensor Ingestion 60 FPS Sensor Ingestion Standard Baseline (Non-filtered)
Frame Grab & Decode 12.4 ms 5.8 ms 14.1 ms
Landmark Inference (BlazeHand) 11.2 ms 6.1 ms 11.2 ms
Two-Layer Signal Conditioning 0.4 ms 0.3 ms 0.0 ms (Disabled)
Win32 User32 Dispatch 0.8 ms 0.7 ms 0.8 ms
Total Motion-to-Cursor Latency 28.6 ms 14.2 ms 31.5 ms
Jitter RMS (Stationary Hand) 0.38 px 0.19 px 4.72 px (Severely Tremulous)
Average CPU Utilization 3.4% 4.8% 3.2%
Private Working Set Memory 88.4 MB 94.1 MB 86.0 MB

6. Gesture Lexicon & State Machine Transitions

The HovrPad Gesture Engine organizes gestures into fundamental spatial navigation primitives (unlocked permanently in the Free engine) and advanced productivity modifiers (Pro profile).

Table 3: Gesture Trigger Conditions & OS Actions
Gesture Hand Configuration Synthesized Action Tier
Normal Pointer Index finger extended, middle/ring/pinky folded Continuous Cursor Movement Free
Primary Left Click Thumb tip taps Middle finger PIP-DIP (Index aims) Left Click (Hold = Drag & Drop) Free
Right Click Thumb pinches Pinky with Index + Middle extended Right Click Context Menu Free
Double Click Thumb taps curled Ring finger, Middle extended Double Click Action Free
Pause / Park Closed Fist (all fingers curled) Freeze / Park Cursor Free
Open Palm Full hand open Resume Tracking Free
D-Pad Navigation 4-way Thumb orientation (UP/DOWN/LEFT/RIGHT) Profile & Slide Navigation Free
V-Sign (Paste) Index + Middle extended with wide spread Paste (Ctrl+V) Pro
Enter Pose Thumb/Index/Middle extended → Curl Index/Middle Press Enter Pro
3-Finger Pinch (3FP) Thumb, Index, and Middle tips pinched together Minimize / Close Window Pro
Window Maximize Fist held (>10 frames) → Open Palm Spread Maximize Active Window Pro
Scroll Mode (Shaka) Thumb + Pinky extended, middle fingers curled Inertial 2D Page Scroll Pro
Spider-Man (Alt-Tab) Thumb + Index + Pinky extended, middle + ring curled Window Switcher Overlay Pro
L-Shape Modifier Thumb + Index at 90° angle Hold ALT Modifier Pro

7. Hardware Prerequisites & Setup Tips

Because optical tracking detects finger contours from live RGB video, good ambient lighting helps the camera maintain a high shutter speed, preventing motion blur and ensuring accurate joint localization.

Subsystem Minimum Specification Recommended Specification
Operating System Windows 10 (64-bit, Build 19041+) Windows 11 (64-bit, 22H2+)
Camera Sensor 720p @ 30 FPS USB Webcam 1080p @ 60 FPS Low-latency Webcam
CPU Compute Quad-Core 2.0 GHz (x86_64 with SSE4.2 / AVX2) Hexa-Core 2.5 GHz+ (Intel 11th Gen+ / Ryzen 5000+)
RAM Allocation 4 GB System RAM 8 GB+ DDR4/DDR5 Dual-Channel
Ambient Lighting ≥ 150 Lux (Avoid strong backlight behind user) ≥ 350 Lux Diffused Front Lighting

8. Citation & Artifact Verification

If you reference this software or evaluate the HovrPad Gesture Engine in your research or project, please cite this engineering release:

BibTeX Citation
@software{hovrpad_gesture_engine_2026,
  author    = {Priyadarshi, C. and HovrPad HCI Systems Group},
  title     = {HovrPad Gesture Engine: High-Fidelity Optical Gesture Recognition and Low-Latency Spatial Input Synthesis},
  year      = {2026},
  version   = {7.4.2},
  publisher = {HovrPad.com},
  url       = {https://www.hovrpad.com/whitepaper.html}
}