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:
@@ -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)
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user