Introduzione e installazione

← Curve Digitizer: digitalizzare le curve dei datasheet

1. Introduzione e concetti fondamentali

Curve Digitizer è un’applicazione desktop leggera per digitalizzare manualmente curve tracciate in grafici raster, in particolare curve caratteristiche presenti in vecchi datasheet di componenti elettronici. Il programma è scritto in Python 3 con Tkinter/Tcl-Tk e usa Pillow per la gestione delle immagini e NumPy per la matematica della calibrazione.

Il programma è pensato per trasformare una lettura manuale del grafico in un dataset numerico riproducibile senza alterare l’immagine sorgente e senza introdurre interpolazioni o correzioni automatiche non richieste. Il caso d’uso iniziale è la digitalizzazione di famiglie di curve per la successiva analisi numerica, il fitting di modelli e la costruzione di modelli SPICE.

Cosa fa

  • apre immagini PNG, JPG/JPEG e TIFF;
  • permette zoom, pan e adattamento dell’immagine alla finestra;
  • mostra le coordinate pixel sotto il cursore;
  • calibra il rettangolo del grafico mediante quattro punti e una trasformazione proiettiva;
  • supporta assi X e Y lineari o logaritmici;
  • gestisce più serie di punti sulla stessa immagine;
  • conserva separatamente il click manuale, il pixel effettivamente memorizzato e le coordinate calibrate;
  • permette di spostare o eliminare punti e dispone di undo/redo;
  • offre uno snap opzionale verso il pixel più scuro in una piccola area locale;
  • salva il progetto in JSON UTF-8 e lo riapre successivamente;
  • esporta le serie in CSV.

Cosa non fa

Curve Digitizer non esegue OCR, riconoscimento automatico delle curve, smoothing, interpolazione, fitting o generazione automatica di modelli SPICE. Queste operazioni devono avvenire in strumenti successivi. Il programma conserva i punti scelti dall’operatore senza inventare campioni intermedi.

Tre tipi di coordinate

È importante distinguere tre dati diversi per ogni punto:

  1. Manual click pixel: la posizione esatta indicata dall’utente con il mouse.
  2. Stored pixel: il pixel usato effettivamente per il punto. Con snap disattivato coincide con il click manuale; con snap attivato può differire.
  3. Calibrated X/Y: i valori fisici calcolati dalla calibrazione, ad esempio 180 V e 24,6 mA.

Questa separazione è fondamentale per mantenere recuperabile il dato grezzo. Anche quando viene utilizzato lo snap, il click manuale originale resta nel progetto.

Immagine sorgente

L’immagine originale viene letta e visualizzata, ma non viene sovrascritta. Il programma può creare in memoria una versione in scala di grigi per lo snap, ma questa copia serve soltanto al calcolo locale e non modifica il file sorgente.

Famiglie di curve

Ogni serie possiede un nome e un parametro. Per una valvola termoionica, per esempio, una famiglia di curve Ia = f(Va) può usare la tensione di griglia Vg come parametro:

Series name: Vg_-20V
Parameter name: Vg
Parameter value: -20
Parameter unit: V

Lo stesso schema può essere usato per transistor, tiratroni, diodi, sensori o qualsiasi grafico in cui più curve siano distinte da un parametro.

2. Installazione, avvio e interfaccia

Requisiti

Il pacchetto richiede Python 3, Tkinter/Tcl-Tk, Pillow e NumPy. La sintassi del codice richiede un Python moderno; Python 3.10 o superiore è una scelta appropriata.

Le dipendenze Python dichiarate in requirements.txt sono:

Pillow>=10.0
numpy>=1.24

Tkinter non viene installato da pip perché normalmente è fornito dal sistema operativo insieme a Tcl/Tk. Su Debian e derivate, se il modulo non è presente, il pacchetto tipico è:

sudo apt install python3-tk

Installazione opzionale in ambiente virtuale

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Avvio

Con i tre moduli Python nella stessa directory:

python3 curve_digitizer.py

Uso tramite X11 forwarding

L’interfaccia usa Tkinter e non richiede Qt, Electron o un browser. Può quindi essere eseguita su una macchina Linux remota e visualizzata attraverso X11 forwarding, se SSH e il server X sono configurati correttamente:

ssh -X nome-host
python3 curve_digitizer.py

In alcuni ambienti può essere usato il forwarding trusted con ssh -Y. La configurazione X11 dipende dal sistema remoto e dal client utilizzato.

Struttura della finestra

La finestra principale è divisa in due zone:

  • Canvas centrale: mostra l’immagine e i marker di calibrazione e delle serie.
  • Pannello laterale: contiene tre schede, Calibration, Series e Project.

In basso è presente una barra di stato che mostra la posizione del cursore in pixel e, quando la calibrazione è valida, i corrispondenti valori X e Y.

  • Open image…: apre una nuova immagine e avvia un progetto vuoto.
  • Open project…: apre un progetto JSON esistente.
  • Save project: salva sul file di progetto corrente.
  • Save project as…: salva con un nuovo nome.
  • Export CSV…: esporta i punti calibrati.
  • Exit: chiude l’applicazione, proponendo il salvataggio quando il progetto risulta modificato.
  • Undo e Redo agiscono sui dati del progetto.
  • Delete selected point elimina il punto attualmente selezionato.

Fit image to window ridimensiona la vista in modo da mostrare l’intera immagine nel Canvas senza modificarne i pixel originali.