feat: 'Filtro falsi positivi' preset user-friendly (era verify_ncc)

Rinomina il parametro tecnico verify_threshold in un preset semantico
che operatore/cliente capisce senza leggere docs:

  off      -> 0.00 (tutti i match shape-based passano)
  leggero  -> 0.20 (tollera illuminazione/riflessi)
  medio    -> 0.35 (consigliato, default)
  forte    -> 0.50 (massima selettivita, scarta mismatch intensita)

UI: dropdown etichettato 'Filtro falsi positivi (verifica intensita colori)'
accanto a precisione angolare. Override tecnico (numerico) resta in
sezione Avanzate.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-24 10:52:26 +02:00
parent 1671a151da
commit 2bca68d700
3 changed files with 27 additions and 5 deletions
+3 -1
View File
@@ -47,6 +47,7 @@ function readUserParams() {
simmetria: document.getElementById("p-simmetria").value,
scala: document.getElementById("p-scala").value,
precisione: document.getElementById("p-precisione").value,
filtro_fp: document.getElementById("p-filtro-fp").value,
min_score: parseFloat(document.getElementById("p-min-score").value),
max_matches: parseInt(document.getElementById("p-max-matches").value, 10),
};
@@ -238,6 +239,7 @@ async function doMatch() {
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]};
const PREC_MAP = {veloce:10, normale:5, preciso:2};
const FP_MAP = {off:0, leggero:0.20, medio:0.35, forte:0.50};
const [smin, smax, sstep] = SCALE_MAP[user.scala];
body = {
model_id: state.model.id, scene_id: state.scene.id, roi: state.roi,
@@ -250,7 +252,7 @@ async function doMatch() {
strong_grad: adv.strong_grad ?? 60,
spread_radius: adv.spread_radius ?? 5,
pyramid_levels: adv.pyramid_levels ?? 3,
verify_threshold: adv.verify_threshold ?? 0.4,
verify_threshold: adv.verify_threshold ?? (FP_MAP[user.filtro_fp] ?? 0.35),
nms_radius: adv.nms_radius ?? 0,
};
} else {