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:
- Manual click pixel: la posizione esatta indicata dall’utente con il mouse.
- Stored pixel: il pixel usato effettivamente per il punto. Con snap disattivato coincide con il click manuale; con snap attivato può differire.
- 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.
Menu File
- 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.
Menu Edit
- Undo e Redo agiscono sui dati del progetto.
- Delete selected point elimina il punto attualmente selezionato.
Menu View
Fit image to window ridimensiona la vista in modo da mostrare l’intera immagine nel Canvas senza modificarne i pixel originali.