fix: param edge usati anche in find/ricetta + match overlay solo UCS
Due richieste utente:
1. Param di pulizia rumore (weak/strong/num_features/spacing dal pannello
"Anteprima edge") devono essere usati anche in find e salvati nelle
ricette. Prima l'utente li regolava ma erano ignorati: il match usava
sempre i valori auto_tune.
Fix:
- SimpleMatchParams.edge_* (4 campi opzionali): None = usa auto_tune,
valore = override
- _simple_to_technical applica gli override se presenti, propagati
a min_feature_spacing nel matcher init
- Cache key matcher include min_feature_spacing
- SaveRecipeParams stessi 4 campi: la ricetta salva i param di
pulizia rumore identici a quelli del preview
- UI readEdgeOverrides() legge sempre i valori slider ed inietta
in body sia di /match_simple sia di POST /recipes
2. Match overlay sulla scena: solo UCS (X rosso, Y verde) ruotato
secondo m.angle_deg, posizionato sul baricentro feature del
modello (proiettato alla pose). Niente edge filtrati, niente
cerchietti feature, niente bbox, niente label/score sulla scena
reale: l'overlay deve essere pulito, gli edge si vedono solo
nell'anteprima modello.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -53,10 +53,34 @@ function readUserParams() {
|
||||
document.getElementById("p-penalita-scala").value),
|
||||
min_score: parseFloat(document.getElementById("p-min-score").value),
|
||||
max_matches: parseInt(document.getElementById("p-max-matches").value, 10),
|
||||
...readEdgeOverrides(),
|
||||
...readHalconFlags(),
|
||||
};
|
||||
}
|
||||
|
||||
function readEdgeOverrides() {
|
||||
// Override edge dal pannello "Anteprima edge". Settati = utente li ha
|
||||
// toccati (anche se uguali al default attuale). Vengono propagati a
|
||||
// _simple_to_technical e usati identici sia in training sia in find.
|
||||
// Inoltre salvati nella ricetta cosi' si replicano al load.
|
||||
const _v = (id, parser) => {
|
||||
const el = document.getElementById(id);
|
||||
if (!el) return null;
|
||||
const v = parser(el.value);
|
||||
return Number.isFinite(v) ? v : null;
|
||||
};
|
||||
// Sempre passa i valori correnti degli slider: e' la richiesta utente
|
||||
// che i param di pulizia rumore vengano usati anche nel find/ricetta.
|
||||
const polCb = document.getElementById("hc-use-polarity");
|
||||
return {
|
||||
edge_weak_grad: _v("ep-weak", parseFloat),
|
||||
edge_strong_grad: _v("ep-strong", parseFloat),
|
||||
edge_num_features: _v("ep-nf", parseInt),
|
||||
edge_min_feature_spacing: _v("ep-sp", parseInt),
|
||||
use_polarity: polCb?.checked || document.getElementById("ep-pol")?.checked,
|
||||
};
|
||||
}
|
||||
|
||||
function readHalconFlags() {
|
||||
// Halcon-mode toggle: tutti i flag default-off, esposti via "Modalità Halcon"
|
||||
const $cb = (id) => document.getElementById(id)?.checked ?? false;
|
||||
@@ -716,6 +740,10 @@ async function saveRecipe() {
|
||||
precisione: user.precisione,
|
||||
use_polarity: user.use_polarity,
|
||||
use_gpu: user.use_gpu,
|
||||
edge_weak_grad: user.edge_weak_grad,
|
||||
edge_strong_grad: user.edge_strong_grad,
|
||||
edge_num_features: user.edge_num_features,
|
||||
edge_min_feature_spacing: user.edge_min_feature_spacing,
|
||||
name: name,
|
||||
};
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user