In questa guida ricostruiamo due curve scientifiche a partire dalla stessa immagine: il guadagno e la fase di un filtro RC passa-basso. Vedremo come configurare un asse X logaritmico, associare le curve a due assi Y differenti, ricavare i punti con il tracciamento assistito e pubblicarli come Dataset utilizzabili per ulteriori analisi.

Lavoreremo su un grafico sintetico in modo che il risultato abbia un riferimento matematico noto. I passaggi sono gli stessi che si applicano a un grafico acquisito da un articolo, da una scansione o da un’immagine sperimentale, purché siano note le scale degli assi.

Alla fine avremo: una configurazione del Digitalizer, due curve di 100 punti ciascuna, due Dataset con unità fisiche distinte, un Dataset Group facoltativo, una dichiarazione di incertezza e gli identificativi necessari per risalire da ogni punto al raster.

1. Preparare il grafico e leggere correttamente gli assi

Il grafico di partenza rappresenta la risposta in frequenza di un filtro RC passa-basso del primo ordine. La linea blu è il guadagno in decibel; la linea rossa è lo sfasamento in gradi. Entrambe dipendono dalla frequenza, ma non hanno le stesse unità e non devono essere interpretate sul medesimo asse verticale.

Grafico semilogaritmico rosa con curva blu del guadagno e curva rossa dello sfasamento di un filtro RC passa-basso.
Grafico di partenza: guadagno e fase di un filtro RC passa-basso con frequenza in scala logaritmica.
AsseGrandezzaIntervalloTipo di scala
XFrequenza (Hz)10 – 100.000Logaritmica
Y1Guadagno (dB)−40 – +5Lineare
Y2Fase (°)−100 – +10Lineare

Il circuito di riferimento utilizza una resistenza di \(R=10\,\mathrm{k}\Omega\) e una capacità di \(C=10\,\mathrm{nF}\). La frequenza di taglio teorica si ricava da:

$$f_c=\frac{1}{2\pi RC}\approx1591{,}55\,\mathrm{Hz}$$

Le due funzioni che vogliamo ricostruire sono:

$$G_{\mathrm{dB}}(f)=-10\log_{10}\!\left[1+\left(\frac{f}{f_c}\right)^2\right]$$

$$\varphi(f)=-\arctan\!\left(\frac{f}{f_c}\right)\frac{180}{\pi}$$

Queste formule non sono necessarie per usare il Digitalizer, ma sono utili per interpretare il risultato: il guadagno tende a 0 dB alle basse frequenze e diminuisce oltre la frequenza di taglio; la fase passa progressivamente da 0° verso −90°.

2. Importare l’immagine nella Session

Apriamo una Session GX-TXT e utilizziamo il normale percorso di acquisizione acq.image_binary per importare l’immagine PNG. In questo modo otteniamo un Image Dataset, anziché un’immagine scollegata dai dati della Session.

Prima di procedere controlliamo che l’immagine sia quella prevista, che non sia stata ritagliata o ridimensionata involontariamente e che gli assi siano leggibili. L’immagine dell’esempio misura 1600 × 900 pixel.

Interfaccia GX-TXT con l'immagine del grafico importata come Dataset e disponibile nel Curve Digitalizer.
Importazione del grafico raster nella Session GX-TXT.

Apriamo Viewers → Curve Digitalizer, creiamo una configurazione e scegliamo come sorgente l’Image Dataset appena importato. Selezionare la sorgente dal catalogo della Session ci consente di mantenere il collegamento fra immagine e risultati numerici.

3. Configurare X, Y1 e Y2

Passiamo alla scheda Calibration. Il primo passaggio è definire il significato fisico delle coordinate. Inseriamo gli intervalli della tabella iniziale e scegliamo il tipo di scala di ciascun asse:

  • X: Frequency, unità Hz, minimo 10, massimo 100000, scala log.
  • Y1: Gain, unità dB, minimo −40, massimo +5, scala linear.
  • Y2: abilitiamo il secondo asse, Phase, unità deg, minimo −100, massimo +10, scala linear.
Pannello Curve Digitalizer con frequenza X logaritmica, guadagno Y1 lineare e fase Y2 lineare.
Definizione delle scale fisiche e delle unità dei tre assi.

Attenzione: una scala logaritmica non si configura inserendo il logaritmo dei valori. Per la frequenza si digitano 10 e 100000, non 1 e 5. La trasformazione logaritmica viene applicata dal Digitalizer.

Y1 e Y2 sono due interpretazioni fisiche della stessa posizione verticale nel raster: il punto che si trova a una determinata altezza può corrispondere a un valore in dB oppure a un valore in gradi, a seconda dell’asse associato alla curva.

Selezionare i quattro vertici

Nella sezione della calibrazione identifichiamo i quattro angoli del riquadro che contiene il grafico, seguendo l’ordine indicato dall’interfaccia: BL (basso sinistra), BR (basso destra), TL (alto sinistra), TR (alto destra).

Per l’immagine di riferimento i vertici della regione tracciabile si trovano in prossimità delle coordinate pixel BL (180, 755), BR (1400, 755), TL (180, 100) e TR (1400, 100). Nell’interfaccia vanno scelti i punti sull’immagine visibile, non copiati ciecamente da una tabella: una scansione differente potrebbe avere dimensioni o margini diversi.

Grafico nel Curve Digitalizer con i quattro riferimenti BL, BR, TL e TR usati per la calibrazione.
Selezione dei quattro vertici dell’area di tracciamento.

Controlliamo che i quattro marcatori siano in corrispondenza delle intersezioni delle linee di bordo, non sul centro dello spessore di una curva. Accettiamo la calibrazione quando la geometria risulta coerente.

Verificare un punto noto della griglia

Prima di inserire le guide delle curve, apriamo Calibration verification e selezioniamo un punto della griglia di cui conosciamo le coordinate fisiche. Scegliamo l’intersezione con frequenza 1000 Hz, guadagno −10 dB e fase circa −26,667°.

Nel campo della frequenza possiamo scrivere 1e3, che significa 1000. La verifica mostra i valori calcolati dalla trasformazione geometrica; confrontiamoli con i riferimenti inseriti.

Pannello di verifica del Curve Digitalizer che confronta le coordinate attese e calcolate su X, Y1 e Y2.
Controllo delle coordinate fisiche dopo la calibrazione.
CoordinataRiferimentoEsempio di valore ricavato
X1000 Hz1000,035 Hz
Y1−10 dB−10,00194 dB
Y2−26,667°−26,6714°

Scostamenti piccoli in questo controllo indicano che il punto scelto è coerente con la calibrazione. Se il valore è molto diverso, ricontrolliamo prima la posizione dei vertici, poi i limiti e il tipo di scala degli assi. Non iniziamo a digitalizzare su una calibrazione manifestamente errata.

4. Creare e digitalizzare la curva Gain (Y1)

Apriamo Curves e aggiungiamo una nuova curva chiamata Gain. Selezioniamo come asse verticale Y1: questo collegamento determina quale scala fisica verrà usata per convertire le posizioni pixel in decibel.

Per una risposta in frequenza ordinata da sinistra a destra impostiamo Monotonicity → Monotonic in X e Point ordering source → Sort by X. Il primo vincolo impedisce ritorni indesiderati lungo la frequenza; il secondo ordina i punti estratti in base a X, anche se le guide sono state inserite in un ordine diverso.

Impostazioni del Digitalizer con Monotonic in X e Sort by X per ordinare i punti della curva.
Configurazione della monotonia e dell’ordinamento lungo X.

Le stesse impostazioni non sono adatte a ogni grafico: per curve chiuse o percorsi che ritornano verso sinistra bisogna scegliere un comportamento differente.

Inserire le guide

Attiviamo Add guide e collochiamo alcuni riferimenti ben distribuiti lungo la linea blu. Possiamo iniziare presso 100 Hz, 1 kHz, 10 kHz e 50 kHz, aggiungendo poi guide vicino agli estremi. Le guide servono a indicare il percorso da seguire, non devono necessariamente rappresentare tutti i punti finali.

Grafico del filtro RC con guide inserite sulla curva blu del guadagno per il tracciamento assistito.
Posizionamento delle guide sulla curva Gain associata a Y1.

Premiamo Propose per ottenere il tracciato suggerito. Osserviamo soprattutto le zone in cui la curva cambia pendenza, si avvicina alla griglia o incrocia altre linee: in questi punti l’algoritmo può scegliere un percorso diverso da quello desiderato.

Regolare Step e Corridor

La proposta dipende anche dai parametri di ricerca. Nell’esempio manteniamo Step = 2 px e confrontiamo due valori di Corridor: 1 px e 4 px.

Proposta di tracciamento della curva Gain con Corridor impostato a 1 px e Step a 2 px.
Prima proposta di tracciamento con Corridor = 1 px.
Proposta di tracciamento della curva Gain con Corridor impostato a 4 px e Step a 2 px.
Seconda proposta di tracciamento con Corridor = 4 px.

Con un corridoio stretto la ricerca rimane vicino al percorso delle guide; allargandolo aumentiamo lo spazio disponibile per inseguire la linea raster. Un valore troppo ampio può però includere elementi estranei, come la griglia o la seconda curva. Non esiste un Corridor ottimale per qualsiasi immagine: dobbiamo osservare il risultato e scegliere quello che segue più fedelmente la linea interessata.

Correggere la proposta prima di accettarla

Se una parte del percorso si allontana dalla linea blu, utilizziamo Edit proposal e aggiungiamo i punti di correzione necessari. Rigeneriamo o aggiorniamo la proposta, quindi controlliamo l’andamento lungo tutto l’intervallo. È più semplice correggere pochi punti guida che modificare manualmente cento punti già pubblicati.

Curve Digitalizer in modalità Edit proposal durante la correzione manuale del percorso proposto.
Correzione del percorso prima dell’accettazione dei punti.

Quando il tracciato è soddisfacente, impostiamo Output points (Accept) = 100 e premiamo Accept. La curva viene registrata come Gain / Y1 / 100 punti.

Curve Digitalizer con la curva Gain associata a Y1 e 100 punti di digitalizzazione accettati.
Risultato del tracciamento della curva Gain: 100 punti accettati.

Il numero di punti definisce la densità del campionamento lungo il tracciato accettato. Non è un indicatore diretto della precisione: aumentare il numero di punti non corregge una curva seguita male.

5. Digitalizzare Phase (Y2) e utilizzare Undo

Aggiungiamo una seconda curva denominata Phase e associamola all’asse Y2. La procedura è la stessa: inseriamo le guide sulla linea rossa, generiamo una proposta, la controlliamo e impostiamo un’uscita di 100 punti.

Qui è particolarmente importante verificare gli estremi: la fase tende a valori prossimi a −90° alle alte frequenze, mentre il guadagno segue una scala completamente diversa. Una curva associata per errore a Y1 potrebbe apparire tracciata nel punto giusto del raster, ma avrebbe coordinate fisiche sbagliate.

Supponiamo di accettare una proposta e di notare subito dopo che il tratto finale non segue correttamente la linea rossa. L’immagine seguente mostra il tipo di errore da riconoscere.

Tracciamento della curva Phase con un segmento finale non corretto da rivedere.
Individuazione di un errore nel percorso della curva Phase.

Utilizziamo Undo per recuperare lo stato precedente all’accettazione, quindi torniamo in Edit proposal. Aggiungiamo o spostiamo le guide necessarie, controlliamo il nuovo percorso e ripetiamo Accept.

Interfaccia Curve Digitalizer dopo Undo, con modifica della proposta di tracciamento della curva Phase.
Ripristino e correzione del tracciamento della fase.

Alla fine, nell’elenco delle curve devono comparire Gain / Y1 / 100 punti e Phase / Y2 / 100 punti: in totale 200 punti, distribuiti fra due grandezze fisiche distinte.

Grafico con le curve Gain e Phase digitalizzate e un totale di 200 punti accettati.
Le due curve digitalizzate: 100 punti Gain e 100 punti Phase.

6. Pubblicare le curve come Dataset scientifici

Apriamo la scheda Publish e scegliamo la calibrazione che abbiamo appena utilizzato. Per creare una prima coppia di Dataset selezioniamo il layout Separate e lasciamo disattivata, per il momento, l’opzione Group published Datasets.

Inseriamo un identificativo di base nuovo per la pubblicazione. In questo modo possiamo riconoscere gli output ed evitare di confonderli con eventuali Dataset precedenti.

La pubblicazione produce due risultati separati:

  • Dataset Gain (Y1): frequenza in Hz e guadagno in dB, 100 righe.
  • Dataset Phase (Y2): frequenza in Hz e fase in gradi, 100 righe.
GX-TXT con i due Dataset pubblicati separatamente per il guadagno Y1 e la fase Y2.
Pubblicazione separata delle curve Gain e Phase come Dataset.

I Dataset contengono anche informazioni utili alla tracciabilità, fra cui l’asse logico y_axis_id, il nome e l’identificativo della curva, l’indice e l’identificativo del punto, e le coordinate pixel pixel_x e pixel_y. La pubblicazione rende i punti disponibili ad altri strumenti GX-TXT senza dover rileggere l’immagine.

Perché due Dataset? Le grandezze hanno unità diverse. Tenere separati dB e gradi impedisce di attribuire accidentalmente una sola unità a entrambe le ordinate.

7. Visualizzare i risultati nella Dataset Preview

Selezioniamo il Dataset Gain nel catalogo e apriamo la Dataset Preview. Per visualizzare le curve con le scale fisiche configurate usiamo la scheda Curves e il comando Load curves. Ripetiamo poi l’operazione con il Dataset Phase.

Preview specializzata GX-TXT della curva Gain con asse della frequenza logaritmico e guadagno in dB.
Visualizzazione del guadagno mediante la Preview specializzata.
Preview specializzata GX-TXT della curva Phase con asse X logaritmico e sfasamento in gradi.
Visualizzazione dello sfasamento mediante la Preview specializzata.

Controlliamo tre cose: la frequenza deve essere rappresentata in scala logaritmica; il primo Dataset deve usare i dB; il secondo deve usare i gradi. Una curva visivamente plausibile non è sufficiente se l’asse fisico è sbagliato.

Nell’interfaccia possono essere disponibili anche una scheda generica Plot e altre visualizzazioni. Per questo esercizio scegliamo esplicitamente Curves, che presenta le curve secondo le scale dichiarate dalla calibrazione. La scheda Canonical Data permette invece di leggere direttamente i valori numerici delle righe.

8. Raggruppare Gain e Phase senza mescolare le unità

Se vogliamo mantenere insieme i due risultati, torniamo in Publish, scegliamo un nuovo identificativo di base e attiviamo Group published Datasets. Lasciamo il layout Separate e pubblichiamo nuovamente le curve.

Otterremo un Dataset Group con due membri: uno per Gain/Y1 e uno per Phase/Y2. Il gruppo è un contenitore logico: non trasforma decibel e gradi in una stessa colonna, non cambia i valori delle curve e non elimina l’identità dei Dataset che ne fanno parte.

Anteprima GX-TXT di un Dataset Group contenente i Dataset Gain Y1 e Phase Y2.
Raggruppamento dei due Dataset senza mescolare le unità fisiche.

Questa funzione è utile quando più grandezze appartengono allo stesso esperimento o alla stessa immagine e devono essere ritrovate e consultate insieme.

9. Dichiarare l’incertezza di digitalizzazione

Finora abbiamo ottenuto coordinate fisiche da posizioni individuate su un’immagine. La scelta del centro di una linea raster e dei vertici della griglia non è perfetta: per descrivere quantitativamente questa limitazione possiamo aggiungere un modello esplicito di incertezza.

Apriamo Publish → Uncertainty… e selezioniamo pixel_calibration. Per questo esercizio impostiamo una distribuzione rectangular_full_width, due larghezze totali pari a 2 px e le incertezze standard della calibrazione:

CampoValore da inserire
Error modelpixel_calibration
Pixel scale meaningrectangular_full_width
Pixel X/Y widths2 2
8 corners + 6 axis endpoints0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0 0 0 0 0 0
Physical X/Y1/Y2 standard uncertaintiesLasciare vuoto con il modello scelto

I primi otto numeri indicano le incertezze standard delle coordinate pixel dei quattro vertici, nell’ordine BL X/Y, BR X/Y, TL X/Y, TR X/Y. Gli ultimi sei numeri descrivono gli estremi fisici minimo/massimo di X, Y1 e Y2. Nell’esempio sintetico questi estremi sono assunti esatti per costruzione.

Se l’incertezza sulla posizione di un punto è descritta da una distribuzione rettangolare di larghezza totale \(w\), la sua incertezza standard è:

$$u_{\mathrm{pixel}}=\frac{w}{\sqrt{12}}$$

Con una larghezza totale di 2 px otteniamo circa 0,577 px. È un’ipotesi dichiarata, non un risultato misurato automaticamente dal software. In presenza di un grafico sperimentale il modello andrebbe scelto e motivato sulla base delle condizioni reali di acquisizione.

Nel campo Evidence / reason descriviamo sinteticamente le assunzioni adottate e premiamo Apply and save declaration.

Finestra Uncertainty di Curve Digitalizer con modello pixel_calibration e parametri di incertezza dichiarati.
Configurazione del modello di incertezza per pixel e calibrazione.

Pubblicare e leggere sigma e covarianza

La dichiarazione non modifica retroattivamente i Dataset già pubblicati. Per ottenere tabelle che contengano anche l’incertezza, torniamo nella sezione Publish e utilizziamo una nuova base ID. Pubblichiamo di nuovo le due curve con il modello attivo.

Aprendo Canonical Data nella Preview dei nuovi Dataset, troviamo tre ulteriori colonne numeriche:

  • sigma_x: incertezza standard della frequenza, in Hz;
  • sigma_y: incertezza standard del guadagno in dB oppure della fase in gradi;
  • covariance_xy: covarianza fra frequenza e ordinata della stessa riga, nelle rispettive unità moltiplicate.
Tabella Canonical Data del Dataset Phase con colonne Sigma X, Sigma Y e Cov XY e i relativi valori numerici.
Incertezze standard e covarianza X–Y pubblicate nel Dataset Phase.

La schermata precedente mostra le incertezze del Dataset Phase (Y2). Come ulteriore esempio, la prima riga del Dataset Gain (Y1) presenta i seguenti risultati numerici:

GrandezzaValore
Frequenza X10,05395227 Hz
Gain Y1−0,04282468 dB
σX0,05547460 Hz
σY10,05033129 dB
Cov(X,Y1)5,38250 × 10−5 Hz·dB

È importante interpretare questi numeri correttamente: la calibrazione è comune a tutti i punti di una curva, quindi può introdurre correlazioni anche fra punti diversi. Le colonne di incertezza della singola riga non equivalgono a una matrice completa di covarianza di tutte le osservazioni.

10. Risalire dal punto numerico all’immagine

Per verificare l’origine di un valore apriamo Canonical Data → Point traceability e carichiamo la tabella. Troviamo l’identificativo della curva, il Point ID univoco, il Calibration ID e le coordinate originali nel raster.

Tabella Point traceability con identificativi dei punti, Calibration ID e coordinate pixel del Dataset Gain.
Identificativi originali e coordinate raster dei punti digitalizzati.

Questi campi rispondono a domande pratiche: quale curva ha prodotto questa riga? Quale punto del raster è stato digitalizzato? Con quale calibrazione è stata calcolata la coordinata fisica?

La tabella dispone inoltre di paginazione e selezione della precisione numerica. Cambiare il numero di cifre visualizzate non modifica i valori memorizzati nel Dataset.

11. Controlli finali e riutilizzo dei Dataset

Prima di utilizzare i risultati in uno script o in un grafico successivo verifichiamo la completezza del lavoro:

  • Le due curve sono associate agli assi corretti: Gain → Y1 e Phase → Y2.
  • La calibrazione ha scala X logaritmica e gli intervalli fisici corrispondono al grafico originale.
  • Ogni Dataset pubblicato contiene 100 righe, senza mescolare gradi e decibel.
  • La Preview Curves rappresenta correttamente gli assi, mentre Canonical Data mostra i valori.
  • Le tabelle con incertezza contengono sigma_x, sigma_y e covariance_xy e la motivazione del modello è salvata.
  • Gli identificativi dei punti, la calibrazione e le coordinate raster sono disponibili nella sezione di tracciabilità.

Salviamo quindi la Session attraverso i normali comandi GX-TXT. Quando riapriremo il lavoro, potremo ritrovare le configurazioni del Digitalizer e i Dataset pubblicati dal catalogo della Session.

I Dataset potranno essere utilizzati per confronti con il modello RC, ulteriori rappresentazioni con Plot Dataset, elaborazioni tramite Script Bridge oppure altri passaggi scientifici disponibili nel framework. La digitalizzazione non produce soltanto un nuovo disegno: produce valori numerici con unità, identità e provenienza.

#calibrazione #Curve Digitalizer #Dataset scientifici #digitalizzazione grafici #doppio asse Y #filtro RC #grafici scientifici #GX-TXT #Plot Dataset API v4 #propagazione incertezze #tracciabilità dati #tracciamento curve

Altre tappe del progetto

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *