fix(web): simmetria invariante (0) collassava a 360 per || default
Bug JS: SYM_MAP[user.simmetria] || 360 trasforma il valore valido 0 (invariante = nessuna rotazione) in 360 = no simmetria. Risultato: cambiare simmetria nel pannello avanzato non aveva effetto se selezionato invariante; per le altre opzioni il valore passava ma con potenziale altri valori 0 in futuro. Sostituito con ?? per distinguere "chiave mancante" da "valore zero". Stessa fix per PREC_MAP. Inoltre allineato FP_MAP JS al server (medio 0.35 -> 0.50, ecc.) per coerenza UI/backend. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -294,12 +294,17 @@ async function doMatch() {
|
|||||||
const SCALE_MAP = {fissa:[1,1,0.1], mini:[0.9,1.1,0.05],
|
const SCALE_MAP = {fissa:[1,1,0.1], mini:[0.9,1.1,0.05],
|
||||||
medio:[0.75,1.25,0.05], max:[0.5,1.5,0.05]};
|
medio:[0.75,1.25,0.05], max:[0.5,1.5,0.05]};
|
||||||
const PREC_MAP = {veloce:10, normale:5, preciso:2};
|
const PREC_MAP = {veloce:10, normale:5, preciso:2};
|
||||||
const FP_MAP = {off:0, leggero:0.20, medio:0.35, forte:0.50};
|
// Allineato a FILTRO_FP_MAP server-side (server.py)
|
||||||
|
const FP_MAP = {off:0, leggero:0.30, medio:0.50, forte:0.70};
|
||||||
const [smin, smax, sstep] = SCALE_MAP[user.scala];
|
const [smin, smax, sstep] = SCALE_MAP[user.scala];
|
||||||
|
// NB: SYM_MAP[invariante]=0 e' valido (zero rotazioni). Uso ?? per
|
||||||
|
// distinguere "chiave mancante" da "valore zero": altrimenti 0 || 360
|
||||||
|
// collassa invariante a 360 = bug "simmetria non ha effetto".
|
||||||
|
const angMax = SYM_MAP[user.simmetria] ?? 360;
|
||||||
body = {
|
body = {
|
||||||
model_id: state.model.id, scene_id: state.scene.id, roi: state.roi,
|
model_id: state.model.id, scene_id: state.scene.id, roi: state.roi,
|
||||||
angle_min: 0, angle_max: SYM_MAP[user.simmetria] || 360,
|
angle_min: 0, angle_max: angMax,
|
||||||
angle_step: PREC_MAP[user.precisione] || 5,
|
angle_step: PREC_MAP[user.precisione] ?? 5,
|
||||||
scale_min: smin, scale_max: smax, scale_step: sstep,
|
scale_min: smin, scale_max: smax, scale_step: sstep,
|
||||||
min_score: user.min_score, max_matches: user.max_matches,
|
min_score: user.min_score, max_matches: user.max_matches,
|
||||||
num_features: adv.num_features ?? 96,
|
num_features: adv.num_features ?? 96,
|
||||||
@@ -307,7 +312,7 @@ async function doMatch() {
|
|||||||
strong_grad: adv.strong_grad ?? 60,
|
strong_grad: adv.strong_grad ?? 60,
|
||||||
spread_radius: adv.spread_radius ?? 5,
|
spread_radius: adv.spread_radius ?? 5,
|
||||||
pyramid_levels: adv.pyramid_levels ?? 3,
|
pyramid_levels: adv.pyramid_levels ?? 3,
|
||||||
verify_threshold: adv.verify_threshold ?? (FP_MAP[user.filtro_fp] ?? 0.35),
|
verify_threshold: adv.verify_threshold ?? (FP_MAP[user.filtro_fp] ?? 0.50),
|
||||||
nms_radius: adv.nms_radius ?? 0,
|
nms_radius: adv.nms_radius ?? 0,
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user