fix(dewarp): change manual slider to percentage (0-200%) instead of raw multiplier

The old -3.0 to +3.0 scale multiplied the full displacement map (up to ~79px)
directly, causing extreme distortion at values >1. New slider:
- 0% = no correction
- 100% = auto-detected correction (default)
- 200% = double correction
- Step size: 5%

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-02-26 18:10:34 +01:00
parent fb496c5e34
commit ff2bb79a91
3 changed files with 16 additions and 16 deletions

View File

@@ -668,13 +668,13 @@ def dewarp_image_manual(img: np.ndarray, displacement_map: np.ndarray,
Args:
img: BGR image (deskewed, before dewarp).
displacement_map: The displacement map from auto-dewarp.
scale: Manual scale factor (-3.0 to +3.0).
scale: Fraction of auto-detected correction (0.0 = none, 1.0 = auto, 2.0 = double).
Returns:
Corrected image.
"""
scale = max(-3.0, min(3.0, scale))
if abs(scale) < 0.01:
scale = max(0.0, min(2.0, scale))
if scale < 0.01:
return img
return _apply_displacement_map(img, displacement_map, scale=scale)

View File

@@ -400,9 +400,9 @@ async def manual_dewarp(session_id: str, req: ManualDewarpRequest):
if deskewed_bgr is None:
raise HTTPException(status_code=400, detail="Deskew must be completed before dewarp")
scale = max(-3.0, min(3.0, req.scale))
scale = max(0.0, min(2.0, req.scale))
if displacement_map is None or abs(scale) < 0.01:
if displacement_map is None or scale < 0.01:
# No displacement map or zero scale — use deskewed as-is
dewarped_bgr = deskewed_bgr
else: