From 465b0cbbaec9acd00e010605449cfcbae139961f Mon Sep 17 00:00:00 2001 From: Arnaud_Cayrol Date: Sat, 7 Feb 2026 10:01:11 +0100 Subject: [PATCH] Ignore roll for face orientation filtering. --- frontend/src/lib/components/SettingsPanel.svelte | 15 --------------- src/config.rs | 9 +++++---- src/models/dmhead.rs | 6 +++--- src/pipeline/steps/head_pose.rs | 13 +++---------- 4 files changed, 11 insertions(+), 32 deletions(-) diff --git a/frontend/src/lib/components/SettingsPanel.svelte b/frontend/src/lib/components/SettingsPanel.svelte index 6641ccb..28c9349 100644 --- a/frontend/src/lib/components/SettingsPanel.svelte +++ b/frontend/src/lib/components/SettingsPanel.svelte @@ -312,21 +312,6 @@ -
- -
- - {config.processing.head_pose.max_roll.toFixed(0)}° -
{/if} diff --git a/src/config.rs b/src/config.rs index 5b12b23..c9e1b38 100644 --- a/src/config.rs +++ b/src/config.rs @@ -641,12 +641,13 @@ mod tests { #[test] fn test_brightness_validation() { - let mut config = BrightnessConfig::default(); - config.enabled = true; + let mut config = BrightnessConfig { + enabled: true, + min_brightness: 0.1, + max_brightness: 0.9, + }; // Valid config - config.min_brightness = 0.1; - config.max_brightness = 0.9; assert!(config.validate().is_ok()); // Invalid: min >= max diff --git a/src/models/dmhead.rs b/src/models/dmhead.rs index aaa58ed..98d5d84 100644 --- a/src/models/dmhead.rs +++ b/src/models/dmhead.rs @@ -161,8 +161,8 @@ mod tests { fn test_input_format() { // DMHead expects raw [0, 255] pixel values as floats, no normalization // See: https://github.com/PINTO0309/DMHead/blob/main/demo_video.py - assert_eq!(0_u8 as f32, 0.0); - assert_eq!(255_u8 as f32, 255.0); - assert_eq!(128_u8 as f32, 128.0); + assert_eq!(0_f32, 0.0); + assert_eq!(255_f32, 255.0); + assert_eq!(128_f32, 128.0); } } diff --git a/src/pipeline/steps/head_pose.rs b/src/pipeline/steps/head_pose.rs index 0444f26..f04d1ab 100644 --- a/src/pipeline/steps/head_pose.rs +++ b/src/pipeline/steps/head_pose.rs @@ -286,16 +286,9 @@ impl ProcessingStep for HeadPoseStep { }; } - if pose.roll.abs() > head_pose_config.max_roll { - return StepOutcome::Skip { - ctx, - reason: "head_turned".to_string(), - detail: Some(format!( - "Roll {:.1}° exceeds threshold {:.1}°", - pose.roll, head_pose_config.max_roll - )), - }; - } + // Note: Roll is not checked for pass/fail - only used for visualization + // Roll (head tilt) is less important for timelapse alignment since + // the alignment step can handle rotated faces StepOutcome::Continue(ctx) }