1954bc6ffd
Bug: modello == scena non sovrapponeva perfettamente. 1. refine_angle trovava angoli spurious -2.5 deg con score saturo 1.0 perche' parabolic fit su picco saturo estrapola rumore. Fix: skip refine quando original_score >= 0.99 2. Subpixel peak su plateau (spread_radius=5 satura picco su area) sceglieva pixel random via cv2.minMaxLoc. Fix: se >1 pixel a score >= max-0.01 nel raggio 10 usa CENTROIDE del plateau invece del parabolic fit. Test self-match tooth_rim foro piccolo: prima: pos=(355, 111.50) delta=(0, -3.50) ang=-2.5 deg dopo: pos=(355, 115.00) delta=(0, +0.00) ang=+0.0 deg Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>