kinemotion 0.7.0__tar.gz → 0.7.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of kinemotion might be problematic. Click here for more details.
- {kinemotion-0.7.0 → kinemotion-0.7.1}/CHANGELOG.md +8 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/PKG-INFO +89 -138
- {kinemotion-0.7.0 → kinemotion-0.7.1}/README.md +88 -137
- kinemotion-0.7.1/docs/IMU_METADATA_PRESERVATION.md +267 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/docs/PARAMETERS.md +39 -11
- {kinemotion-0.7.0 → kinemotion-0.7.1}/docs/VALIDATION_PLAN.md +9 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/pyproject.toml +1 -1
- kinemotion-0.7.0/docs/IMPLEMENTATION_PLAN.md +0 -795
- kinemotion-0.7.0/docs/IMU_METADATA_PRESERVATION.md +0 -124
- {kinemotion-0.7.0 → kinemotion-0.7.1}/.github/workflows/release.yml +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/.gitignore +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/.pre-commit-config.yaml +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/.tool-versions +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/CLAUDE.md +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/GEMINI.md +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/LICENSE +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/docs/ERRORS_FINDINGS.md +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/docs/FRAMERATE.md +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/examples/programmatic_usage.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/src/kinemotion/__init__.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/src/kinemotion/cli.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/src/kinemotion/core/__init__.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/src/kinemotion/core/auto_tuning.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/src/kinemotion/core/filtering.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/src/kinemotion/core/pose.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/src/kinemotion/core/smoothing.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/src/kinemotion/core/video_io.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/src/kinemotion/dropjump/__init__.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/src/kinemotion/dropjump/analysis.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/src/kinemotion/dropjump/cli.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/src/kinemotion/dropjump/debug_overlay.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/src/kinemotion/dropjump/kinematics.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/tests/__init__.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/tests/test_adaptive_threshold.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/tests/test_aspect_ratio.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/tests/test_com_estimation.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/tests/test_contact_detection.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/tests/test_filtering.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/tests/test_kinematics.py +0 -0
- {kinemotion-0.7.0 → kinemotion-0.7.1}/tests/test_polyorder.py +0 -0
|
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
<!-- version list -->
|
|
9
9
|
|
|
10
|
+
## v0.7.1 (2025-11-01)
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- Update documentation for auto-tuning system
|
|
15
|
+
([`6c1a135`](https://github.com/feniix/kinemotion/commit/6c1a135acf5cce7a627644dbc6393460277906ad))
|
|
16
|
+
|
|
17
|
+
|
|
10
18
|
## v0.7.0 (2025-11-01)
|
|
11
19
|
|
|
12
20
|
### Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kinemotion
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.1
|
|
4
4
|
Summary: Video-based kinematic analysis for athletic performance
|
|
5
5
|
Project-URL: Homepage, https://github.com/feniix/kinemotion
|
|
6
6
|
Project-URL: Repository, https://github.com/feniix/kinemotion
|
|
@@ -100,18 +100,21 @@ This will install all dependencies and make the `kinemotion` command available.
|
|
|
100
100
|
|
|
101
101
|
## Usage
|
|
102
102
|
|
|
103
|
+
**NEW:** Kinemotion now features **intelligent auto-tuning**! Just specify your drop box height and the tool automatically optimizes all parameters based on video frame rate and tracking quality.
|
|
104
|
+
|
|
103
105
|
### Basic Analysis
|
|
104
106
|
|
|
105
|
-
Analyze a video
|
|
107
|
+
Analyze a video with automatic parameter selection:
|
|
106
108
|
|
|
107
109
|
```bash
|
|
108
|
-
|
|
110
|
+
# Drop-height is REQUIRED for accurate calibration
|
|
111
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40
|
|
109
112
|
```
|
|
110
113
|
|
|
111
114
|
### Save Metrics to File
|
|
112
115
|
|
|
113
116
|
```bash
|
|
114
|
-
kinemotion dropjump-analyze video.mp4 --json-output metrics.json
|
|
117
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40 --json-output metrics.json
|
|
115
118
|
```
|
|
116
119
|
|
|
117
120
|
### Generate Debug Video
|
|
@@ -119,156 +122,104 @@ kinemotion dropjump-analyze video.mp4 --json-output metrics.json
|
|
|
119
122
|
Create an annotated video showing pose tracking and contact detection:
|
|
120
123
|
|
|
121
124
|
```bash
|
|
122
|
-
kinemotion dropjump-analyze video.mp4 --output debug.mp4
|
|
125
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40 --output debug.mp4
|
|
123
126
|
```
|
|
124
127
|
|
|
125
|
-
###
|
|
128
|
+
### Complete Analysis
|
|
126
129
|
|
|
127
|
-
|
|
130
|
+
With all outputs:
|
|
128
131
|
|
|
129
132
|
```bash
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
kinemotion dropjump-analyze drop-jump.mp4 \
|
|
135
|
-
--drop-height 0.60 \
|
|
136
|
-
--json-output metrics.json \
|
|
137
|
-
--output debug.mp4
|
|
133
|
+
kinemotion dropjump-analyze video.mp4 \
|
|
134
|
+
--drop-height 0.40 \
|
|
135
|
+
--output debug.mp4 \
|
|
136
|
+
--json-output results.json
|
|
138
137
|
```
|
|
139
138
|
|
|
140
|
-
###
|
|
139
|
+
### Quality Presets
|
|
140
|
+
|
|
141
|
+
Choose analysis quality (automatically adjusts all parameters):
|
|
141
142
|
|
|
142
143
|
```bash
|
|
143
|
-
#
|
|
144
|
-
kinemotion dropjump-analyze
|
|
145
|
-
--outlier-rejection \
|
|
146
|
-
--drop-height 0.40 \
|
|
147
|
-
--output debug.mp4 \
|
|
148
|
-
--json-output results.json \
|
|
149
|
-
--smoothing-window 7 \
|
|
150
|
-
--polyorder 3
|
|
144
|
+
# Fast analysis (quick, less precise - good for batch processing)
|
|
145
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40 --quality fast
|
|
151
146
|
|
|
152
|
-
#
|
|
153
|
-
kinemotion dropjump-analyze
|
|
154
|
-
|
|
155
|
-
|
|
147
|
+
# Balanced (default - best for most use cases)
|
|
148
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40 --quality balanced
|
|
149
|
+
|
|
150
|
+
# Accurate (research-grade, slower - maximum precision)
|
|
151
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40 --quality accurate
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### See Auto-Selected Parameters
|
|
155
|
+
|
|
156
|
+
View what parameters were automatically selected:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40 --verbose
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Expert Mode (Advanced Users)
|
|
163
|
+
|
|
164
|
+
Override auto-tuned parameters if needed:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# Manual parameter override (rarely needed)
|
|
168
|
+
kinemotion dropjump-analyze video.mp4 \
|
|
156
169
|
--drop-height 0.40 \
|
|
157
|
-
--
|
|
158
|
-
--
|
|
170
|
+
--expert \
|
|
171
|
+
--smoothing-window 7 \
|
|
172
|
+
--velocity-threshold 0.015
|
|
159
173
|
```
|
|
160
174
|
|
|
161
175
|
## Configuration Options
|
|
162
176
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
### Smoothing
|
|
174
|
-
|
|
175
|
-
- `--smoothing-window <int>` (default: 5)
|
|
176
|
-
- Window size for Savitzky-Golay smoothing filter
|
|
177
|
-
- Must be odd and >= 3
|
|
178
|
-
- Larger values = smoother trajectories but less responsive
|
|
179
|
-
- **Tip**: Increase for noisy videos, decrease for high-quality stable footage
|
|
180
|
-
|
|
181
|
-
- `--polyorder <int>` (default: 2)
|
|
182
|
-
- Polynomial order for Savitzky-Golay smoothing filter
|
|
183
|
-
- Must be < smoothing-window (typically 2 or 3)
|
|
184
|
-
- 2 = quadratic fit (good for parabolic motion like jumps)
|
|
185
|
-
- 3 = cubic fit (better for complex motion patterns)
|
|
186
|
-
- Higher order captures more motion complexity but more sensitive to noise
|
|
187
|
-
- **Tip**: Use 2 for most cases, try 3 for high-quality videos with complex motion
|
|
188
|
-
- **Accuracy improvement**: +1-2% for complex motion patterns
|
|
189
|
-
|
|
190
|
-
### Advanced Filtering
|
|
191
|
-
|
|
192
|
-
- `--outlier-rejection / --no-outlier-rejection` (default: --outlier-rejection)
|
|
193
|
-
- Apply RANSAC and median-based outlier rejection to remove tracking glitches
|
|
194
|
-
- **With outlier rejection** (`--outlier-rejection`): Detects and removes MediaPipe tracking errors
|
|
195
|
-
- RANSAC-based polynomial fitting identifies positions that deviate from smooth trajectory
|
|
196
|
-
- Median filtering catches spikes in otherwise smooth motion
|
|
197
|
-
- Outliers replaced with interpolated values from neighboring valid points
|
|
198
|
-
- Removes jumps, jitter, and temporary tracking losses
|
|
199
|
-
- **Accuracy improvement**: +1-2% by eliminating tracking glitches
|
|
200
|
-
- **Without outlier rejection** (`--no-outlier-rejection`): Uses raw tracked positions
|
|
201
|
-
- Faster processing, relies entirely on MediaPipe quality
|
|
202
|
-
- **Tip**: Keep enabled (default) unless debugging or working with perfect tracking
|
|
203
|
-
|
|
204
|
-
- `--bilateral-filter / --no-bilateral-filter` (default: --no-bilateral-filter)
|
|
205
|
-
- Use bilateral temporal filter for edge-preserving smoothing
|
|
206
|
-
- **With bilateral filter** (`--bilateral-filter`): Preserves sharp transitions while smoothing noise
|
|
207
|
-
- Weights each frame by temporal distance AND position similarity
|
|
208
|
-
- Landing/takeoff transitions remain sharp (not smoothed away)
|
|
209
|
-
- Noise in smooth regions (flight, ground contact) is reduced
|
|
210
|
-
- Edge-preserving alternative to Savitzky-Golay smoothing
|
|
211
|
-
- **Accuracy improvement**: +1-2% by preserving event timing precision
|
|
212
|
-
- **Without bilateral filter** (`--no-bilateral-filter`): Uses standard Savitzky-Golay smoothing
|
|
213
|
-
- Uniform smoothing across all frames
|
|
214
|
-
- Well-tested baseline method
|
|
215
|
-
- **Tip**: Experimental feature; enable for videos with rapid transitions or variable motion
|
|
216
|
-
- **Note**: Cannot be used simultaneously with Savitzky-Golay; bilateral replaces it when enabled
|
|
217
|
-
|
|
218
|
-
### Contact Detection
|
|
219
|
-
|
|
220
|
-
- `--velocity-threshold <float>` (default: 0.02)
|
|
221
|
-
- Vertical velocity threshold for detecting stationary feet
|
|
222
|
-
- In normalized coordinates (0-1 range)
|
|
223
|
-
- Lower values = more sensitive (may detect false contacts)
|
|
224
|
-
- Higher values = less sensitive (may miss brief contacts)
|
|
225
|
-
- **Tip**: Start with default, decrease if missing contacts, increase if detecting false contacts
|
|
226
|
-
|
|
227
|
-
- `--min-contact-frames <int>` (default: 3)
|
|
228
|
-
- Minimum consecutive frames to confirm ground contact
|
|
229
|
-
- Filters out momentary tracking glitches
|
|
230
|
-
- **Tip**: Increase for noisy videos with jittery tracking
|
|
231
|
-
|
|
232
|
-
### Visibility
|
|
233
|
-
|
|
234
|
-
- `--visibility-threshold <float>` (default: 0.5)
|
|
235
|
-
- Minimum MediaPipe visibility score (0-1) to trust a landmark
|
|
236
|
-
- Higher values require more confident tracking
|
|
237
|
-
- **Tip**: Lower if landmarks are frequently obscured but tracking seems reasonable
|
|
238
|
-
|
|
239
|
-
### Pose Tracking
|
|
240
|
-
|
|
241
|
-
- `--detection-confidence <float>` (default: 0.5)
|
|
242
|
-
- MediaPipe pose detection confidence threshold
|
|
243
|
-
- **Tip**: Increase if getting false pose detections
|
|
244
|
-
|
|
245
|
-
- `--tracking-confidence <float>` (default: 0.5)
|
|
246
|
-
- MediaPipe pose tracking confidence threshold
|
|
247
|
-
- **Tip**: Increase if tracking is jumping between different people/objects
|
|
248
|
-
|
|
249
|
-
### Calibration
|
|
250
|
-
|
|
251
|
-
- `--drop-height <float>` (optional)
|
|
177
|
+
### Intelligent Auto-Tuning
|
|
178
|
+
|
|
179
|
+
Kinemotion automatically optimizes parameters based on your video:
|
|
180
|
+
- **FPS-based scaling**: 30fps, 60fps, 120fps videos use different thresholds automatically
|
|
181
|
+
- **Quality-based adjustments**: Adapts smoothing based on MediaPipe tracking confidence
|
|
182
|
+
- **Always enabled**: Outlier rejection, curvature analysis, drop start detection
|
|
183
|
+
|
|
184
|
+
### Required Parameters
|
|
185
|
+
|
|
186
|
+
- `--drop-height <float>` **[REQUIRED]**
|
|
252
187
|
- Height of drop box/platform in meters (e.g., 0.40 for 40cm)
|
|
253
|
-
-
|
|
254
|
-
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
-
|
|
261
|
-
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
-
|
|
188
|
+
- Used for accurate calibration of jump height measurements
|
|
189
|
+
- Measure your box height accurately for best results
|
|
190
|
+
|
|
191
|
+
### Optional Parameters
|
|
192
|
+
|
|
193
|
+
- `--quality [fast|balanced|accurate]` (default: balanced)
|
|
194
|
+
- **fast**: Quick analysis, less precise (~50% faster)
|
|
195
|
+
- **balanced**: Good accuracy/speed tradeoff (recommended)
|
|
196
|
+
- **accurate**: Research-grade analysis, slower (maximum precision)
|
|
197
|
+
|
|
198
|
+
- `--verbose` / `-v`
|
|
199
|
+
- Show auto-selected parameters and analysis details
|
|
200
|
+
- Useful for understanding what the tool is doing
|
|
201
|
+
|
|
202
|
+
- `--output <path>` / `-o`
|
|
203
|
+
- Generate annotated debug video with pose tracking visualization
|
|
204
|
+
|
|
205
|
+
- `--json-output <path>` / `-j`
|
|
206
|
+
- Save metrics to JSON file instead of stdout
|
|
207
|
+
|
|
208
|
+
### Expert Overrides (Rarely Needed)
|
|
209
|
+
|
|
210
|
+
For advanced users who need manual control:
|
|
211
|
+
|
|
212
|
+
- `--drop-start-frame <int>`: Manually specify where drop begins (if auto-detection fails)
|
|
213
|
+
- `--smoothing-window <int>`: Override auto-tuned smoothing window
|
|
214
|
+
- `--velocity-threshold <float>`: Override auto-tuned velocity threshold
|
|
215
|
+
- `--min-contact-frames <int>`: Override auto-tuned minimum contact frames
|
|
216
|
+
- `--visibility-threshold <float>`: Override visibility threshold
|
|
217
|
+
- `--detection-confidence <float>`: Override MediaPipe detection confidence
|
|
218
|
+
- `--tracking-confidence <float>`: Override MediaPipe tracking confidence
|
|
219
|
+
|
|
220
|
+
> **📖 For detailed parameter explanations, see [docs/PARAMETERS.md](docs/PARAMETERS.md)**
|
|
221
|
+
>
|
|
222
|
+
> **Note:** Most users never need expert parameters - auto-tuning handles optimization automatically!
|
|
272
223
|
|
|
273
224
|
## Output Format
|
|
274
225
|
|
|
@@ -71,18 +71,21 @@ This will install all dependencies and make the `kinemotion` command available.
|
|
|
71
71
|
|
|
72
72
|
## Usage
|
|
73
73
|
|
|
74
|
+
**NEW:** Kinemotion now features **intelligent auto-tuning**! Just specify your drop box height and the tool automatically optimizes all parameters based on video frame rate and tracking quality.
|
|
75
|
+
|
|
74
76
|
### Basic Analysis
|
|
75
77
|
|
|
76
|
-
Analyze a video
|
|
78
|
+
Analyze a video with automatic parameter selection:
|
|
77
79
|
|
|
78
80
|
```bash
|
|
79
|
-
|
|
81
|
+
# Drop-height is REQUIRED for accurate calibration
|
|
82
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40
|
|
80
83
|
```
|
|
81
84
|
|
|
82
85
|
### Save Metrics to File
|
|
83
86
|
|
|
84
87
|
```bash
|
|
85
|
-
kinemotion dropjump-analyze video.mp4 --json-output metrics.json
|
|
88
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40 --json-output metrics.json
|
|
86
89
|
```
|
|
87
90
|
|
|
88
91
|
### Generate Debug Video
|
|
@@ -90,156 +93,104 @@ kinemotion dropjump-analyze video.mp4 --json-output metrics.json
|
|
|
90
93
|
Create an annotated video showing pose tracking and contact detection:
|
|
91
94
|
|
|
92
95
|
```bash
|
|
93
|
-
kinemotion dropjump-analyze video.mp4 --output debug.mp4
|
|
96
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40 --output debug.mp4
|
|
94
97
|
```
|
|
95
98
|
|
|
96
|
-
###
|
|
99
|
+
### Complete Analysis
|
|
97
100
|
|
|
98
|
-
|
|
101
|
+
With all outputs:
|
|
99
102
|
|
|
100
103
|
```bash
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
kinemotion dropjump-analyze drop-jump.mp4 \
|
|
106
|
-
--drop-height 0.60 \
|
|
107
|
-
--json-output metrics.json \
|
|
108
|
-
--output debug.mp4
|
|
104
|
+
kinemotion dropjump-analyze video.mp4 \
|
|
105
|
+
--drop-height 0.40 \
|
|
106
|
+
--output debug.mp4 \
|
|
107
|
+
--json-output results.json
|
|
109
108
|
```
|
|
110
109
|
|
|
111
|
-
###
|
|
110
|
+
### Quality Presets
|
|
111
|
+
|
|
112
|
+
Choose analysis quality (automatically adjusts all parameters):
|
|
112
113
|
|
|
113
114
|
```bash
|
|
114
|
-
#
|
|
115
|
-
kinemotion dropjump-analyze
|
|
116
|
-
--outlier-rejection \
|
|
117
|
-
--drop-height 0.40 \
|
|
118
|
-
--output debug.mp4 \
|
|
119
|
-
--json-output results.json \
|
|
120
|
-
--smoothing-window 7 \
|
|
121
|
-
--polyorder 3
|
|
115
|
+
# Fast analysis (quick, less precise - good for batch processing)
|
|
116
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40 --quality fast
|
|
122
117
|
|
|
123
|
-
#
|
|
124
|
-
kinemotion dropjump-analyze
|
|
125
|
-
|
|
126
|
-
|
|
118
|
+
# Balanced (default - best for most use cases)
|
|
119
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40 --quality balanced
|
|
120
|
+
|
|
121
|
+
# Accurate (research-grade, slower - maximum precision)
|
|
122
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40 --quality accurate
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### See Auto-Selected Parameters
|
|
126
|
+
|
|
127
|
+
View what parameters were automatically selected:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
kinemotion dropjump-analyze video.mp4 --drop-height 0.40 --verbose
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Expert Mode (Advanced Users)
|
|
134
|
+
|
|
135
|
+
Override auto-tuned parameters if needed:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Manual parameter override (rarely needed)
|
|
139
|
+
kinemotion dropjump-analyze video.mp4 \
|
|
127
140
|
--drop-height 0.40 \
|
|
128
|
-
--
|
|
129
|
-
--
|
|
141
|
+
--expert \
|
|
142
|
+
--smoothing-window 7 \
|
|
143
|
+
--velocity-threshold 0.015
|
|
130
144
|
```
|
|
131
145
|
|
|
132
146
|
## Configuration Options
|
|
133
147
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
### Smoothing
|
|
145
|
-
|
|
146
|
-
- `--smoothing-window <int>` (default: 5)
|
|
147
|
-
- Window size for Savitzky-Golay smoothing filter
|
|
148
|
-
- Must be odd and >= 3
|
|
149
|
-
- Larger values = smoother trajectories but less responsive
|
|
150
|
-
- **Tip**: Increase for noisy videos, decrease for high-quality stable footage
|
|
151
|
-
|
|
152
|
-
- `--polyorder <int>` (default: 2)
|
|
153
|
-
- Polynomial order for Savitzky-Golay smoothing filter
|
|
154
|
-
- Must be < smoothing-window (typically 2 or 3)
|
|
155
|
-
- 2 = quadratic fit (good for parabolic motion like jumps)
|
|
156
|
-
- 3 = cubic fit (better for complex motion patterns)
|
|
157
|
-
- Higher order captures more motion complexity but more sensitive to noise
|
|
158
|
-
- **Tip**: Use 2 for most cases, try 3 for high-quality videos with complex motion
|
|
159
|
-
- **Accuracy improvement**: +1-2% for complex motion patterns
|
|
160
|
-
|
|
161
|
-
### Advanced Filtering
|
|
162
|
-
|
|
163
|
-
- `--outlier-rejection / --no-outlier-rejection` (default: --outlier-rejection)
|
|
164
|
-
- Apply RANSAC and median-based outlier rejection to remove tracking glitches
|
|
165
|
-
- **With outlier rejection** (`--outlier-rejection`): Detects and removes MediaPipe tracking errors
|
|
166
|
-
- RANSAC-based polynomial fitting identifies positions that deviate from smooth trajectory
|
|
167
|
-
- Median filtering catches spikes in otherwise smooth motion
|
|
168
|
-
- Outliers replaced with interpolated values from neighboring valid points
|
|
169
|
-
- Removes jumps, jitter, and temporary tracking losses
|
|
170
|
-
- **Accuracy improvement**: +1-2% by eliminating tracking glitches
|
|
171
|
-
- **Without outlier rejection** (`--no-outlier-rejection`): Uses raw tracked positions
|
|
172
|
-
- Faster processing, relies entirely on MediaPipe quality
|
|
173
|
-
- **Tip**: Keep enabled (default) unless debugging or working with perfect tracking
|
|
174
|
-
|
|
175
|
-
- `--bilateral-filter / --no-bilateral-filter` (default: --no-bilateral-filter)
|
|
176
|
-
- Use bilateral temporal filter for edge-preserving smoothing
|
|
177
|
-
- **With bilateral filter** (`--bilateral-filter`): Preserves sharp transitions while smoothing noise
|
|
178
|
-
- Weights each frame by temporal distance AND position similarity
|
|
179
|
-
- Landing/takeoff transitions remain sharp (not smoothed away)
|
|
180
|
-
- Noise in smooth regions (flight, ground contact) is reduced
|
|
181
|
-
- Edge-preserving alternative to Savitzky-Golay smoothing
|
|
182
|
-
- **Accuracy improvement**: +1-2% by preserving event timing precision
|
|
183
|
-
- **Without bilateral filter** (`--no-bilateral-filter`): Uses standard Savitzky-Golay smoothing
|
|
184
|
-
- Uniform smoothing across all frames
|
|
185
|
-
- Well-tested baseline method
|
|
186
|
-
- **Tip**: Experimental feature; enable for videos with rapid transitions or variable motion
|
|
187
|
-
- **Note**: Cannot be used simultaneously with Savitzky-Golay; bilateral replaces it when enabled
|
|
188
|
-
|
|
189
|
-
### Contact Detection
|
|
190
|
-
|
|
191
|
-
- `--velocity-threshold <float>` (default: 0.02)
|
|
192
|
-
- Vertical velocity threshold for detecting stationary feet
|
|
193
|
-
- In normalized coordinates (0-1 range)
|
|
194
|
-
- Lower values = more sensitive (may detect false contacts)
|
|
195
|
-
- Higher values = less sensitive (may miss brief contacts)
|
|
196
|
-
- **Tip**: Start with default, decrease if missing contacts, increase if detecting false contacts
|
|
197
|
-
|
|
198
|
-
- `--min-contact-frames <int>` (default: 3)
|
|
199
|
-
- Minimum consecutive frames to confirm ground contact
|
|
200
|
-
- Filters out momentary tracking glitches
|
|
201
|
-
- **Tip**: Increase for noisy videos with jittery tracking
|
|
202
|
-
|
|
203
|
-
### Visibility
|
|
204
|
-
|
|
205
|
-
- `--visibility-threshold <float>` (default: 0.5)
|
|
206
|
-
- Minimum MediaPipe visibility score (0-1) to trust a landmark
|
|
207
|
-
- Higher values require more confident tracking
|
|
208
|
-
- **Tip**: Lower if landmarks are frequently obscured but tracking seems reasonable
|
|
209
|
-
|
|
210
|
-
### Pose Tracking
|
|
211
|
-
|
|
212
|
-
- `--detection-confidence <float>` (default: 0.5)
|
|
213
|
-
- MediaPipe pose detection confidence threshold
|
|
214
|
-
- **Tip**: Increase if getting false pose detections
|
|
215
|
-
|
|
216
|
-
- `--tracking-confidence <float>` (default: 0.5)
|
|
217
|
-
- MediaPipe pose tracking confidence threshold
|
|
218
|
-
- **Tip**: Increase if tracking is jumping between different people/objects
|
|
219
|
-
|
|
220
|
-
### Calibration
|
|
221
|
-
|
|
222
|
-
- `--drop-height <float>` (optional)
|
|
148
|
+
### Intelligent Auto-Tuning
|
|
149
|
+
|
|
150
|
+
Kinemotion automatically optimizes parameters based on your video:
|
|
151
|
+
- **FPS-based scaling**: 30fps, 60fps, 120fps videos use different thresholds automatically
|
|
152
|
+
- **Quality-based adjustments**: Adapts smoothing based on MediaPipe tracking confidence
|
|
153
|
+
- **Always enabled**: Outlier rejection, curvature analysis, drop start detection
|
|
154
|
+
|
|
155
|
+
### Required Parameters
|
|
156
|
+
|
|
157
|
+
- `--drop-height <float>` **[REQUIRED]**
|
|
223
158
|
- Height of drop box/platform in meters (e.g., 0.40 for 40cm)
|
|
224
|
-
-
|
|
225
|
-
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
-
|
|
232
|
-
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
-
|
|
159
|
+
- Used for accurate calibration of jump height measurements
|
|
160
|
+
- Measure your box height accurately for best results
|
|
161
|
+
|
|
162
|
+
### Optional Parameters
|
|
163
|
+
|
|
164
|
+
- `--quality [fast|balanced|accurate]` (default: balanced)
|
|
165
|
+
- **fast**: Quick analysis, less precise (~50% faster)
|
|
166
|
+
- **balanced**: Good accuracy/speed tradeoff (recommended)
|
|
167
|
+
- **accurate**: Research-grade analysis, slower (maximum precision)
|
|
168
|
+
|
|
169
|
+
- `--verbose` / `-v`
|
|
170
|
+
- Show auto-selected parameters and analysis details
|
|
171
|
+
- Useful for understanding what the tool is doing
|
|
172
|
+
|
|
173
|
+
- `--output <path>` / `-o`
|
|
174
|
+
- Generate annotated debug video with pose tracking visualization
|
|
175
|
+
|
|
176
|
+
- `--json-output <path>` / `-j`
|
|
177
|
+
- Save metrics to JSON file instead of stdout
|
|
178
|
+
|
|
179
|
+
### Expert Overrides (Rarely Needed)
|
|
180
|
+
|
|
181
|
+
For advanced users who need manual control:
|
|
182
|
+
|
|
183
|
+
- `--drop-start-frame <int>`: Manually specify where drop begins (if auto-detection fails)
|
|
184
|
+
- `--smoothing-window <int>`: Override auto-tuned smoothing window
|
|
185
|
+
- `--velocity-threshold <float>`: Override auto-tuned velocity threshold
|
|
186
|
+
- `--min-contact-frames <int>`: Override auto-tuned minimum contact frames
|
|
187
|
+
- `--visibility-threshold <float>`: Override visibility threshold
|
|
188
|
+
- `--detection-confidence <float>`: Override MediaPipe detection confidence
|
|
189
|
+
- `--tracking-confidence <float>`: Override MediaPipe tracking confidence
|
|
190
|
+
|
|
191
|
+
> **📖 For detailed parameter explanations, see [docs/PARAMETERS.md](docs/PARAMETERS.md)**
|
|
192
|
+
>
|
|
193
|
+
> **Note:** Most users never need expert parameters - auto-tuning handles optimization automatically!
|
|
243
194
|
|
|
244
195
|
## Output Format
|
|
245
196
|
|