cc811fdc94
Root cause rotazione imprecisa: score saturo sulla spread bitmap dilatata (raggio 4-5) -> refine senza gradiente (angolo restava quantizzato allo step) e minMaxLoc sul plateau spostava il centro sull'angolo finestra (errore sistematico 3*sqrt(2) px). - _refine_angle: ottimizza su bitmap fine raggio 1 (spread_fine, in cache scena), picco sub-pixel con centroide plateau, score finale ricalcolato su spread coarse (semantica soglie invariata) - _subpixel_refine_lm riscritto: snap edge sub-pixel lungo la normale + LSQ 3x3 (dx, dy, dtheta), ON di default, Sobel scena precomputato - _prepare_padded_template: centro rotazione coerente col padding - round invece di truncation sugli offset feature (bias 0.25px) - _angle_list include estremo superiore del range - _refine_pose_joint rimosso (NM su funzione a gradini, terminava subito) - pyramid_propagate default ON con kernel windowed (le feature campionano l'intera scena: il crop precedente le troncava -> score 0), picchi = massimi locali, auto-off per template elongati >2:1 - piramide 3 livelli default con clamp su dimensione template - cache scena: hash dell'intera immagine (64KB collidevano) GT sintetica 7 pose: errore angolo 2.3->0.05 deg, posizione 4.2->0.04 px. Suite 16 scenari: match >= baseline, totale find -13%. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>