In che modo i computer elaborano le immagini?
Risposte
Questa è una domanda difficile a cui rispondere, semplicemente perché la domanda è abbastanza aperta. Farò del mio meglio però...
Innanzitutto, esaminiamo la parola "processo". Lo prenderò nel senso di leggere il file dal disco e visualizzarlo sullo schermo. Se ciò non è corretto, chiarisci semplicemente cosa intendi effettivamente e modificherò la mia risposta di conseguenza.
A seconda del formato dell'immagine, i dati dell'immagine verranno compressi o meno. Il formato non compresso più comune sarà BMP. I formati compressi comuni sono JPG, GIF e PNG (anche WebP sta guadagnando terreno ultimamente).
NOTA: mi occuperò solo dei formati raster, in quanto sono i più comuni. Esistono anche formati vettoriali, ma vengono gestiti in modo completamente diverso.
Il primo passo sarebbe che l'applicazione individui e apra il file in questione. Una volta aperto il file, l'applicazione visualizzatore legge i dati dal file nella memoria di lavoro.
Tutti i formati di immagine contengono informazioni aggiuntive per indicare vari bit di informazioni, come le dimensioni dell'immagine, la profondità di bit e altri elementi. Tali informazioni vengono estratte dai dati del file e archiviate.
Supponendo che i dati dell'immagine siano compressi, verranno estratti e passati attraverso un codec (codificatore/decodificatore), che è solo un termine tecnico per il codice in grado di comprimere o decomprimere i dati (immagini, audio e video).
Una volta che il codec ha fatto il suo lavoro, restituisce una serie di byte contenenti i dati effettivi dell'immagine.
È qui che entrano in gioco i dati dell'intestazione. Per visualizzare un'immagine, un'applicazione ha bisogno di quattro cose: la larghezza dell'immagine, l'altezza dell'immagine, il formato dei pixel (profondità di bit e ordinamento) ei dati non compressi. Le prime due variabili vengono utilizzate per impostare la dimensione dell'immagine di output. Quindi, ogni pixel nei dati dell'immagine viene letto, convertito nella profondità di bit e nel formato nativi utilizzando il formato pixel dall'intestazione dell'immagine e copiato nella posizione appropriata nei dati di output.
L'output finale viene quindi copiato nella memoria video, dove viene visualizzato all'utente.
Tieni presente che questa è una descrizione piuttosto semplificata. Ognuno dei passaggi precedenti può essere realizzato in molti modi diversi, ma i concetti generali sono corretti.
A livello concettuale, un'immagine è rappresentata come matrice bidimensionale. Se si tratta di un'immagine a colori, hai a che fare con tre matrici di questo tipo, ciascuna corrispondente a un canale di colore. Nel caso di un'immagine in bianco e nero, si ha a che fare con un'unica matrice. Gli elementi della matrice hanno tipicamente valori compresi tra 0 e 255.
Il computer può elaborare una matrice (o matrici) di input di un'immagine per produrre una matrice (o matrici) di output di un'immagine. In alternativa, una matrice di input (o matrici) di un'immagine può essere elaborata per produrre un numero di output o uno scalare, come dire se l'immagine corrisponde a un particolare oggetto o volto di una persona o numero di volti nell'immagine e così via.
Gli algoritmi matematici esatti che operano sulla matrice di input possono essere piuttosto complessi.