GX-TXT Curve Digitalizer — Tutorial 02: digitalizzare una famiglia di curve con calibrazioni multiple
Nel primo tutorial abbiamo affrontato i concetti fondamentali della digitalizzazione scientifica. Adesso passiamo a un caso più articolato: estrarre più curve dalla stessa immagine, utilizzare diverse calibrazioni e pubblicare i risultati come Dataset scientifico in GX-TXT.
L’esercizio utilizza una famiglia sintetica di curve molto vicine tra loro. È un esempio utile perché mette in evidenza un problema reale della digitalizzazione assistita: individuare la curva giusta quando nell’immagine sono presenti molte tracce simili.
Vedremo come utilizzare i punti guida, correggere una proposta automatica, escludere tracce vicine e confrontare differenti impostazioni di campionamento. Completeremo l’esperimento pubblicando un Dataset con tre curve e tre calibrazioni, per poi analizzarlo con gli strumenti di Preview.
1. Il Dataset di partenza
Per questo esercizio utilizziamo la sorgente sintetica calibrated_curve_family, disponibile in GX-TXT.
La Session contiene tre Dataset principali:
calibrated.family.image: l’immagine da digitalizzare;calibrated.family.raw: i dati numerici originali della famiglia;calibrated.family.source: i dati di riferimento associati alle trasformazioni di calibrazione.
L’immagine ha una risoluzione di 1201 × 1001 pixel e contiene 50 curve colorate, con andamento dolcemente parabolico.
Le curve sono numerate progressivamente e separate verticalmente da distanze relativamente piccole. Questa caratteristica consente di verificare quanto sia importante controllare il tracciamento, soprattutto quando si lavora con un algoritmo di riconoscimento assistito.

La visualizzazione iniziale permette di riconoscere le tracce e scegliere quelle da digitalizzare.
Nel nostro caso non utilizzeremo tutte le 50 curve: ne selezioneremo tre, distribuite in posizioni differenti dell’immagine.
| Curva scelta | Indice della famiglia | Nome utilizzato |
|---|---|---|
| Curva 6 | 5 | Source curve 06 |
| Curva 16 | 15 | Source curve 16 |
| Curva 26 | 25 | Source curve 26 |
Il valore numerico della famiglia è distinto dal nome visibile della curva: per esempio, Source curve 06 corrisponde al valore c = 5.
Aprire l’immagine nel Curve Digitalizer
Dalla Session apriamo il Dataset immagine con GX-TXT Curve Digitalizer e creiamo una configurazione denominata:
Tutorial 02 - Family
Nella scheda Source controlliamo che il Dataset selezionato sia calibrated.family.image.
Il programma mostra le caratteristiche della sorgente, comprese dimensioni, formato e impronta SHA-256. Questi dati consentono di identificare l’immagine effettivamente utilizzata.

È importante lavorare su una configurazione associata alla sorgente corretta: le coordinate dei punti digitalizzati hanno significato soltanto rispetto all’immagine da cui sono state ricavate.
2. Creare tre calibrazioni
La digitalizzazione inizia con coordinate espresse in pixel. Per ottenere valori scientifici dobbiamo stabilire come trasformare le coordinate dell’immagine in coordinate fisiche.
Nel nostro esperimento:
- l’asse X rappresenta una grandezza temporale, espressa in secondi (
s); - l’asse Y rappresenta una tensione, espressa in volt (
V); - entrambi gli assi sono lineari.
L’immagine non presenta riferimenti grafici espliciti agli angoli dell’area utile. Utilizziamo quindi la calibrazione sull’intera immagine.
Nella scheda Calibration impostiamo Y direction → Upward (Cartesian) e utilizziamo Auto-calibrate full image.
L’operazione identifica i quattro angoli dell’immagine:
| Angolo | X pixel | Y pixel |
|---|---|---|
| BL — Bottom Left | 0 | 1000 |
| BR — Bottom Right | 1200 | 1000 |
| TL — Top Left | 0 | 0 |
| TR — Top Right | 1200 | 0 |
Successivamente definiamo i limiti fisici degli assi. L’ordine è importante: l’operazione di calibrazione automatica sull’intera immagine imposta inizialmente limiti in pixel, che devono poi essere sostituiti con quelli scientifici.
Le tre realizzazioni di calibrazione
Creiamo tre realizzazioni, denominate k0, k1 e k4, usando questi valori:
| Calibrazione | X minimo (s) | X massimo (s) | Y minimo (V) | Y massimo (V) |
|---|---|---|---|---|
| k0 | −1 | 11 | −1 | 9 |
| k1 | −0,991 | 11,021 | −1,0045 | 8,9905 |
| k4 | −0,964 | 11,084 | −1,018 | 8,962 |
Per ciascuna realizzazione definiamo la geometria, applichiamo le impostazioni degli assi e accettiamo la calibrazione valida.
Alla fine troviamo tre misure accettate nell’elenco delle calibrazioni. Una può essere attiva per la visualizzazione corrente, ma ciò non impedisce di conservare e successivamente pubblicare anche le altre.

La schermata mostra k4 come calibrazione attiva, con k0 e k1 anch’esse accettate.
Perché utilizzare più calibrazioni?
Il punto fondamentale è che un punto raster può corrispondere a coordinate scientifiche differenti a seconda della calibrazione applicata.
Le tre realizzazioni condividono la stessa immagine e gli stessi punti digitalizzati. Non sono tre acquisizioni indipendenti dello stesso fenomeno.
Nel nostro caso servono a studiare il comportamento della pubblicazione con calibrazioni alternative e a verificare come GX-TXT conservi l’identità della trasformazione utilizzata.
3. Preparare la famiglia di curve
Passiamo alla scheda Curves e abilitiamo la modalità:
This configuration is a numerical curve family
Impostiamo:
| Proprietà | Valore |
|---|---|
| Family quantity | c |
| Family unit | 1 |
| Semantic role | family |
Il valore 1 identifica un’unità adimensionale. Non deve essere lasciato vuoto: fa parte della dichiarazione scientifica della famiglia.
Creiamo quindi le tre curve con i rispettivi valori 5, 15 e 25.
A questo punto possiamo iniziare la digitalizzazione assistita.
Come funziona il tracciamento assistito
Il sistema utilizza una serie di punti guida, inseriti dall’operatore, per individuare un percorso probabile tra le tracce dell’immagine.
I controlli principali sono:
- Add guide: inserisce punti guida lungo la curva desiderata;
- Propose: calcola una proposta di tracciamento;
- Edit proposal / Add correction point: permette di correggere la proposta;
- Exclusion paths: definisce zone da evitare, per ridurre il rischio di seguire curve vicine;
- Accept: accetta il risultato controllato.
Altri parametri importanti sono Corridor, Step, Smooth curve prior e Output points (Accept).
Il valore Corridor definisce la regione di ricerca intorno al percorso guidato. Step controlla la distanza di campionamento utilizzata nella ricerca sul raster, mentre Output points determina il numero di punti restituiti quando viene accettato e ricampionato il tracciato.
Questi due ultimi parametri non devono essere confusi: aumentare il numero di punti di uscita non significa acquisire nuove osservazioni indipendenti dall’immagine.
4. Prima curva: Source curve 06, Step 2 px
Iniziamo dalla curva con valore di famiglia c = 5.
Inseriamo i punti guida iniziali, impostiamo un corridoio di ricerca di circa 6 pixel e utilizziamo uno Step di 2 pixel.
La prima proposta rende evidente una difficoltà: la traccia desiderata è circondata da molte curve simili. In alcuni intervalli il percorso proposto deve essere corretto per restare sulla curva giusta.
Controllare e correggere la proposta
Per evitare che la ricerca si sposti sulle tracce vicine possiamo utilizzare gli Exclusion paths.
Nel nostro esperimento abbiamo definito percorsi di esclusione sopra e sotto la curva interessata. Le esclusioni vengono rappresentate da bande e punti di controllo rossi.

La schermata mostra il tracciamento assistito, i percorsi di esclusione e la necessità di intervenire sulla proposta.
Passiamo quindi a Edit proposal e aggiungiamo punti di correzione nelle zone problematiche. L’obiettivo non è semplicemente ottenere una linea apparentemente continua, ma verificare che i punti seguano la traccia raster desiderata.

Questo passaggio si è rivelato particolarmente impegnativo: sono stati necessari circa 83 punti guida di correzione per ottenere un percorso utilizzabile.
È un risultato importante da discutere.
Una proposta automatica può produrre molti punti con relativa facilità, ma se richiede numerose correzioni non è detto che rappresenti un risparmio di tempo rispetto a un tracciamento manuale accurato.
Accettare il risultato
Dopo il controllo del percorso abbiamo impostato Output points (Accept) = 100 e accettato il tracciamento.
La schermata riporta l’accettazione di 86 segmenti su 86 e l’aggiunta di 100 punti assistiti.

I 100 punti rappresentano la serie digitalizzata che conserveremo nella configurazione.
Non devono essere interpretati come 100 misure fisiche indipendenti: derivano dall’osservazione e dall’elaborazione della stessa traccia nell’immagine.
5. Seconda curva: Source curve 16, Step 10 px
Per la seconda curva scegliamo il valore di famiglia c = 15.
Utilizziamo nuovamente il tracciamento assistito, ma aumentiamo Step a 10 pixel, con un corridoio di 8 pixel e l’opzione Smooth curve prior = Strong.

Inseriamo i punti guida sulla traccia desiderata e chiediamo al sistema di generare una proposta.
L’aumento di Step produce un campionamento di ricerca meno fitto rispetto al caso precedente. Durante questa prova la proposta è risultata più semplice da correggere.

Sono ancora presenti diversi punti di correzione, ma l’intervento richiesto è stato inferiore a quello della prima curva.
Dopo aver controllato la proposta, accettiamo nuovamente un’uscita di 100 punti.

Adesso la configurazione contiene due curve digitalizzate, ciascuna composta da 100 punti.
Questo confronto suggerisce un aspetto pratico: la massima densità di campionamento durante la ricerca non è necessariamente la scelta più efficace.
La qualità della proposta dipende anche dalla geometria della curva, dal contrasto, dai punti guida e dalla distanza fra le tracce.
6. Terza curva: Source curve 26, Step 20 px
Completiamo l’esperimento scegliendo la curva con valore di famiglia c = 25.
Questa volta utilizziamo:
| Parametro | Valore |
|---|---|
| Corridor | 6 px |
| Step | 20 px |
| Smooth curve prior | Strong |
| Trace image | auto |
| Output points (Accept) | 100 |
Inseriamo soltanto tre punti guida, indicati come G1, G2 e G3: uno vicino all’inizio della curva, uno nella zona centrale e uno verso la fine.

Premiamo Propose.
Il programma restituisce una proposta con 52 punti di ricerca, due segmenti e nessun segmento segnalato come potenzialmente ambiguo.

Il tracciato risulta visivamente coerente con la curva desiderata senza dover aggiungere altri punti di correzione.
Dopo aver controllato il risultato, premiamo Accept.
La conferma indica 2 segmenti accettati su 2 e l’aggiunta di 100 punti assistiti.

Il passaggio da 52 punti nella proposta a 100 punti accettati dipende dal ricampionamento richiesto. Non significa che siano state effettuate altre 48 osservazioni indipendenti sull’immagine.
Confronto delle tre prove
| Curva | Step | Output accettato | Osservazioni |
|---|---|---|---|
| Source curve 06 | 2 px | 100 punti | Numerose correzioni, circa 83 |
| Source curve 16 | 10 px | 100 punti | Correzioni meno numerose |
| Source curve 26 | 20 px | 100 punti | Tre guide iniziali, nessuna correzione aggiuntiva |
Il risultato è interessante dal punto di vista operativo, ma richiede un’interpretazione prudente.
Abbiamo lavorato su tre curve differenti. Non si tratta quindi di un confronto sperimentale controllato sullo stesso identico segnale, a parità di ogni altra condizione.
Possiamo concludere che, in questo esercizio, la configurazione con Step 20 ha richiesto meno interventi. Non possiamo concludere che Step 20 sia universalmente più accurato o più veloce.
Migliorare la visibilità durante il controllo
Per esaminare le proposte abbiamo anche utilizzato il controllo Image opacity, riducendolo al 37,5% e scegliendo uno sfondo scuro.
In questo modo i punti e le guide risultano più leggibili rispetto alle tracce raster.
L’opacità è una proprietà di visualizzazione: non modifica le coordinate né il contenuto scientifico dei punti.
7. Controllare le tre curve prima della pubblicazione
Prima di passare alla pubblicazione torniamo nell’elenco della famiglia e verifichiamo che siano presenti le tre curve desiderate:
- Source curve 06,
c = 5, 100 punti; - Source curve 16,
c = 15, 100 punti; - Source curve 26,
c = 25, 100 punti.

La configurazione contiene ora 300 punti digitalizzati.
I valori di famiglia, le unità e le identità delle curve sono parte dei dati che intendiamo pubblicare. Non basta controllare il numero complessivo di punti: dobbiamo verificare anche che ciascun punto appartenga alla curva corretta.
8. Pubblicare il Dataset Combined
Passiamo alla scheda Publish.
L’obiettivo è pubblicare le tre curve utilizzando tutte le calibrazioni precedentemente accettate: k0, k1 e k4.
Impostiamo:
| Proprietà | Valore |
|---|---|
| Publication base Dataset ID | digitized.tutorial02.family |
| Display name | Tutorial 02 - Three curves |
| Curve contract | curve_family.table |
| Publication layout | combined |
| Calibrazioni selezionate | k0, k1, k4 |

Separate e Combined: qual è la differenza?
In modalità Separate il sistema prevede un Dataset distinto per ogni calibrazione selezionata.
In modalità Combined, che utilizziamo in questo esercizio, tutte le combinazioni vengono conservate nello stesso Dataset, mantenendo una colonna che identifica la calibrazione.
Questa seconda soluzione è comoda per confrontare direttamente i risultati di più trasformazioni senza confondere l’origine dei punti.
Il numero di righe atteso è:
3 curve × 100 punti × 3 calibrazioni = 900 righe
Impostiamo l’assenza di una dichiarazione di incertezza per questo esercizio. Non dichiarare un’incertezza non equivale a dichiarare incertezza zero.
Premiamo Publish selected calibrations.
Il programma conferma:
Published 1 Dataset(s)
con identificativo:
digitized.tutorial02.family.combined.curves

Abbiamo quindi ottenuto un Dataset scientifico contenente 900 righe.
Il dato più importante è che queste righe derivano da 300 punti raster distinti, rappresentati sotto tre calibrazioni differenti.
9. Esaminare il risultato nella Dataset Preview
Adesso possiamo lasciare il Curve Digitalizer e lavorare direttamente sul Dataset pubblicato.
Nel framework GX-TXT apriamo la scheda Dataset → Preview e selezioniamo:
digitized.tutorial02.family.combined.curves
La Dataset Preview consente di consultare le coordinate, il raggruppamento, l’immagine sorgente e il rapporto di qualità.
9.1 Il grafico scientifico
Nella scheda Plot selezioniamo la coordinata X in secondi e la coordinata Y in volt.
I controlli di raggruppamento consentono di distinguere Family, Curve e Calibration.
Per rappresentare tutte le combinazioni dobbiamo selezionare i tre valori di famiglia, le tre curve e le tre calibrazioni, quindi premere Render per applicare le impostazioni.

Le tracce corrispondenti a una stessa curva raster possono risultare molto vicine, perché le diverse calibrazioni trasformano gli stessi punti con parametri leggermente differenti.
Questo è il motivo per cui gli identificativi di curva e calibrazione devono restare distinti anche quando le linee nel grafico sembrano sovrapporsi.
9.2 Source image: tornare ai pixel originali
Passiamo alla scheda Source image.
Qui troviamo l’immagine originale e i punti digitalizzati sovrapposti alle tre curve. Tramite Show / Hide possiamo nascondere o mostrare una curva alla volta e verificare visivamente la corrispondenza con il raster.

C’è una distinzione fondamentale:
Source image non mostra una calibrazione specifica.
Questo pannello lavora sulle coordinate raster originali. Le calibrazioni k0, k1 e k4 cambiano le coordinate scientifiche, ma non la posizione di un punto nell’immagine.
Perciò vediamo 300 punti originali distinti, non 900 punti geometricamente differenti.
La sovrapposizione rappresenta un controllo della digitalizzazione rispetto alla sorgente, non una certificazione dell’accuratezza fisica.
9.3 La tabella canonica
La scheda Table consente di consultare le righe del Dataset.

La schermata indica le righe 1–100 di 900. La paginazione non elimina dati: permette semplicemente di consultare la tabella in gruppi di righe.
Fra i campi importanti troviamo:
- coordinate X e Y con le rispettive unità;
- valore della famiglia;
- identificativo e nome della curva;
- indice progressivo del punto;
- identificativo del punto originale;
- identificativo e nome della calibrazione.
Per identificare una serie in modo corretto dobbiamo considerare sia la curva sia la calibrazione utilizzata.
9.4 Il rapporto Quality
La scheda Quality contiene le informazioni diagnostiche pubblicate insieme ai dati.

Nel nostro caso il rapporto indica:
| Informazione | Valore |
|---|---|
| Curve | 3 |
| Punti raster distinti | 300 |
| Righe pubblicate | 900 |
| Realizzazioni di calibrazione | 3 |
| Segmenti | 297 |
| Segnalazioni diagnostiche | 43 |
Il rapporto contiene anche informazioni sulla provenienza dell’immagine e sulle verifiche effettuate.
Occorre distinguere con attenzione i diversi livelli di valutazione.
Le 43 segnalazioni diagnostiche non significano automaticamente che 43 punti siano stati digitalizzati in modo errato. Sono osservazioni da interpretare nel contesto del rapporto.
Analogamente, le distanze e le altre verifiche espresse in pixel descrivono proprietà geometriche del raster e del tracciamento, non costituiscono da sole una misura dell’errore fisico.
Nel rapporto risulta:
- Physical accuracy:
not_assessed; - Uncertainty declaration:
not_declared.
Non possiamo quindi attribuire al Dataset un’accuratezza metrologica che non è stata misurata o dichiarata.
10. Considerazioni finali
Questo secondo tutorial ci ha permesso di affrontare un caso più complesso rispetto alla digitalizzazione di una curva isolata.
Abbiamo selezionato tre tracce in un’immagine contenente una famiglia numerosa, utilizzato il tracciamento assistito con differenti parametri, corretto una proposta difficoltosa e verificato il risultato sul raster originale.
Successivamente abbiamo applicato tre realizzazioni di calibrazione agli stessi 300 punti e pubblicato un Dataset Combined di 900 righe, mantenendo l’identità delle curve e delle trasformazioni.
L’esperimento mette in evidenza tre aspetti essenziali.
Primo: il tracciamento automatico è uno strumento di supporto, non un sostituto del controllo dell’operatore. Una proposta molto fitta può richiedere più lavoro di correzione rispetto a una proposta più semplice.
Secondo: la quantità di punti restituiti dal ricampionamento non corrisponde necessariamente al numero di osservazioni indipendenti effettuate sul raster.
Terzo: calibrare e digitalizzare sono operazioni differenti. I punti originali possono essere conservati una sola volta come identità raster e rappresentati mediante più trasformazioni scientifiche, senza confondere queste trasformazioni con nuove acquisizioni fisiche.
Il risultato finale non è soltanto una serie di coordinate esportate: è un Dataset utilizzabile nel framework, accompagnato dalle informazioni necessarie per comprenderne origine, struttura e limiti.
Nel prossimo tutorial approfondiremo altri casi di calibrazione e digitalizzazione, mantenendo distinta la qualità del tracciamento dalla validità delle trasformazioni scientifiche.