Scansionare immagini a 16 bit

Benvenuti nella pagina Wiki di Simone Giustetti.


Lingue: English - Italiano


Scansioni di Immagini con 16 bit di Profondità

Molti scanner sono dotati di hardware in grado di campionare i colori con un numero di bit superiore ai 8 canonici per canale. Le immagini digitali solitamente salvano il colore di ogni pixel utilizzando 32 bit: 8 bit per ogni canale (Rosso, Verde, Blu) + 8 bit per il canale alfa o trasparenza. Il numero massimo di sfumature rappresentabili corrisponde a 16 milioni circa. Utilizzando 16 bit al posto di 8 il numero di toni rappresentabile per ogni colore corrisponde a 65.536 contro 256 ed il numero totale di sfumature rappresentabili sale a 2,8 milioni di miliardi. Sebbene gli 8 bit aggiuntivi non vengano visualizzati a video, essi servono a proteggere la qualità di una immagine da errori di arrotondamento, che si accumulano quando vengono effettuate modifiche successive, ad esempio regolare la luminosità e/o il contrasto, applicare filtri ed altre elaborazioni.

Avendo sempre lavorato con file in bianco e nero non mi sono mai posto il problema, ma recentemente mi è stato chiesto se fosse possibile far funzionare Image Scan per Linux ad una profondità di colore elevata in modo da convertire in digitale vecchie diapositive. Leggendo le specifiche degli scanner Epson / Seiko, effettivamente la possibilità di scansionare le immagini utilizzando 16 bit per canale di colore è ampiamente pubblicizzata. Persino apparati ormai desueti come il mio Perfection V200 sono venduti con le guide per le diapositive o la pellicola fotografica a corredo. Non esiste invece alcuna opzione per impostare la profondità di colore attraverso l'interfaccia grafica. Quale è il problema ? Image Scan. Il software fornito da Epson / Seiko per i propri dispositivi è stato scritto per funzionare esclusivamente a 8 bit. È necessario acquistare un programma di terze parti, Vuescan ad esempio, per poter usufruire appieno del proprio dispositivo.

Modificare Iscan per Eseguire Scansioni a 16 bit

Esistono parecchie segnalazioni di problemi inerenti l'impostazione di 16 bit per eseguire la scansione di immagini con Iscan nei forum delle distribuzioni Linux:

ad esempio. Esistono anche versioni modificate di Iscan che aggiungono tale funzionalità:

Purtroppo le modifiche sono specifiche per singola distribuzione e non ho trovato nulla per Slackware Linux.

La discussione sul forum di Arch Linux cita però una patch per il file channel-usb.c, che ridefinirebbe la tipologia di dato in cui salvare i valori RGB, aumentandone l'ampiezza. Trovata la potenziale soluzione, bisognava verificare che fosse possibile integrarla in una versione di Image Scan in grado di compilare e funzionare su un rilascio recente di Slackware Linux. Ho descritto in precedenti articoli:

lo stato non proprio esaltante in cui versa il codice di Iscan per versioni recenti di Slackware Linux e la necessità di ricorrere ad Iscan 2.30.1 ed a vecchie versioni di compilatore e glibc per ottenere un pacchetto funzionante.

Usando come punto di partenza lo script SlackBuild per Slackware 14.2, ho modificato leggermente la patch, adattandola allo script, riesumato una macchina virtuale con un'installazione funzionante di Slackware 14.2 a 64 bit, aggiornato la distribuzione con gli ultimi rilasci ed infine compilato la versione modificata di Iscan. Il pacchetto risultante pare funzionare perfettamente e può eseguire scansioni sia a 8 che a 16 bit. Ho installato il pacchetto su Slackware 15.0 ed ottenuto un nuovo successo. Il pacchetto funziona anche sulla versione più recente del sistema operativo.

Lo Slackbuild Aggiornato

Segue un collegamento da cui scaricare un archivio contenente lo script SlackBuild aggiornato e tutte le patch utilizzate per compilare il pacchetto finito: SlackBuild script per Iscan con il supporto per scansioni a 16 bit.

Il Pacchetto Aggiornato

Per comodità fornisco anche un link da cui scaricare il pacchetto compilato ed i relativi codici di controllo. Ho eseguito con successo dei test con uno scanner Epson Perfection V200 e Mr. Thomas Strom è stato così gentile da fare altrettanto con il suo Epson Perfection V600. Non sono stati testati altri dispositivi, ma la patch modifica il back-en e non i plug-in specifici ed in teoria dovrebbe funzionare con ogni dispositivo per cui esista un plug-in per Linux. Non posso però fornire supporto in caso di problemi dato che non potrei riprodurli e diagnosticarne le cause.

Nessuna versione per architetture Arm o Intel a 32 bit ? Nel primo caso no perchè Slackware 14.2 per architettura Arm non è attivamente supportata ed è stata dichiarata a fine vita lo scorso Aprile. Nel secondo caso, nessuno ha praticamente mai scaricato i pacchetti a 32 bit negli ultimi 2 anni. Se vi servissero, contattatemi via e-mail e vedrò di riesumare un'altra macchina virtuale per produrli.

Come Eseguire una Scansione a 16 Bit di Profondità Colore

La patch modifica il back end epkowa perchè immagazzini le informazioni di colore di ogni pixel usando 16 bit anzichè 8 soltanto. Purtroppo non aggiunge nessuna voce di menù od opzione per impostare la profondità colore attraverso l'interfaccia grafica. Per eseguire una scansione a 16 bit è possibile:

  1. Utilizzare il comando scanimage da terminale, impostando 16 come valore dell'opzione --depth.
  2. Utilizzare Xsane come interfaccia grafica, abilitando la visualizzazione della schermata delle opzioni in cui comparirà il menù a tendina in cui impostare la profondità di colore.

 

Fig.1: Dettaglio della finestra delle opzioni avanzate di Xsane.

 

Fig.2: Dettaglio della finestra di acquisizione di Skanlite per KDE.

Le immagini ottenute occuperanno circa il triplo dello spazio di una scansione standard.


Conclusioni

È possibile eseguire scansioni con una profondità di colore maggiore di 8 bit per canale usando Slackware Linux come sistema operativo ed uno scanner Epson / Seiko. Seppure i dispositivi dei due produttori citati siano in grado di gestire 16 bit per colore, il software che forniscono non permette di sfruttare tale funzionalità. Applicando una patch opportuna è possibile modificare il back-end aggiungendo il supporto ai 16 bit. Bisogna far ricorso ad una interfaccia grafica che permetta di impostare una profondità di colore maggiore degli 8 bit canonici. Nella parte finale dell'articolo sono stati forniti collegamenti da cui scaricare lo script SlackBuild aggiornato ed una versione precompilata del pacchetto Iscan. Il tutto nella speranza di essere utile agli utenti Epson / Slackware Linux, ma senza nessuna garanzia di funzionamento perchè non posso eseguire test per ogni dispositivo in commercio. Se qualcuno riuscisse a testare il proprio scanner con successo, me lo faccia sapere ed aggiungerò una nota in questa pagina. In conclusione ringrazio ancora Mr. Thomas Strom per i consigli utili ed i test eseguiti e Markismus per la patch.


Per commenti, consigli, domande inviate una e-mail all'indirizzo studiosg [chiocciola] giustetti [punto] net.


Link esterni





Lingue: English - Italiano