Sommario
< Home
Stampa

Codifica digitale

Alla base dei sistemi informatici c’è il concetto di digitale, parola in contrapposizione con analogico. Ma cosa significano digitale ed analogico?

Una conoscenza o sensazione analogica ha una forma “continua“: la nostra percezione sensoriale la percepisce come un “tutt’uno” e non quindi come un insieme di percezioni distinte. Ciò vuol dire che quando ad esempio il nostro occhio vede una scena come un paesaggio o una stanza, o il nostro orecchio percepisce un suono o della musica, queste sensazioni sono ricevute dal nostro cervello come un flusso continuo di segnali senza discontinuità al loro interno, il cui unico limite è la capacità dei sensi di percepirne sfumature e frequenze. Il nostro cervello è infatti analogico e percepisce, memorizza le informazioni come uniche entità in cui tutte le parti sono fuse insieme nello spazio e nel tempo. Quando quindi i nostri sensi vedono, sentono, odorano, gustano o toccano il nostro cervello riceve l’intera informazione in modo indiviso e con sfumature infinitesimali senza alcun tipo di discontinuità.

Nel digitale invece la conoscenza è divisa in tante piccole unità “discrete“, anche molto piccole, ma comunque discontinue tra loro. Il computer è una macchina digitale, quindi memorizza e invia segnali digitali, cioè composti da un un insieme di parti discrete, di tipo numerico, ovvero singoli dati numerici distinti tra loro. Se il loro numero è sufficientemente elevato per unità di spazio (es. immagini) o di tempo (es. audio) la nostra mente sarà in grado di percepirli come analogici. Ma è bene capire fin da subito che non lo sono. Il computer ha bisogno di “digitalizzare” l’informazione che riceve (attraverso periferiche come microfoni o telecamere), ed allo stesso modo questa informazione deve poi essere convertita in “analogico” (tramite schermi ed altoparlanti) quando ci viene restituita.

Sistema binario

Qualsiasi contenuto digitale che utilizza un computer, come le immagini, i video, l’audio, i testi è memorizzato, trasmesso ed elaborato sempre come una sequenza di numeri, che rappresentano le singole unità di informazione digitale.

Tuttavia il sistema di numerazione utilizzato nei computer non è quello decimale. I computer gestiscono i dati tramite il sistema di numerazione binario, ovvero tramite unità di memoria dette bit, che possono assumere solo il valore di 0 oppure 1.

Il motivo di questa scelta è dovuto al fatto che è molto più semplice ed economico memorizzare i numeri tramite due stati possibili, in una macchina elettronica dove questi due valori sono gestiti tramite due diverse tensioni elettriche.

Per rappresentare valori superiori a 1 il sistema binario usa più di un bit. Ad esempio per rappresentare il valore 2 abbiamo bisogno di 2 bit, con valore “10”, mentre 3 sarà “11”. Per memorizzare il valore 4 usiamo tre bit: “100” e così via come in questa tabella:

DecimaleBinario
00
11
210
311
4100
5101
6110
7111
81000

Come si può vedere ogni volta che aggiungiamo un bit raddoppiamo i valori memorizzabili: con 1 bit sono 2, con 2 bit sono 4, con 3 bit 8, con 4 sono 16 e così via. La regola è che con N bit si possono memorizzare 2N valori. Il sistema binario non è altro che il sistema di numerazione a base 2.

Il principio di funzionamento dei sistemi di numerazione è infatti posizionale, anche nel sistema decimale. Ad esempio il valore 36143 è in realtà rappresentabile in questa forma:

3*104 + 6*103 + 1*102 + 4*101 + 3*100=3614310

Ovvero

43210Base
3614310

Se vogliamo rappresentare un numero in binario usiamo lo stesso sistema. Ad esempio il numero 10011 è rappresentabile in questa forma:

 100112 = 1*24 + 0*23 + 0*22 + 1*21 + 1*20 = 1910

43210Base
100112

E’ quindi possibile fare una conversione da una base all’altra. Qui una lezione di approfondimento.

L’altra unità fondamentale di misura della memoria è il byte. Esso è costituito da una sequenza di 8 bit, che rappresentano quindi 256 valori possibili. La memoria è normalmente quindi rappresentata in multipli di byte.

byte8 bit -> 256 valori memorizzabili.unità di misura fondamentale della memoria.
KiloByte (KB)1024 byte (210 byte)documenti e testi
MegaByte (MB)1024 KB (220 byte)immagini
GigaByte (GB)1024 MB (230 byte)video
TeraByte (TB)1024 GB (240 byte)memorie RAM e SSD
Petabyte (PB)1024 TB (250 byte)grandi archivi dati su Internet

Codifica dei testi

I testi sono documenti composti da sequenze di caratteri alfanumerici. Sono già per loro natura in qualche modo digitali (anche se il nostro cervello li memorizza in concetti ed informazioni con infinite sfumature). Nei computer ogni carattere è codificato come un numero e memorizzato in binario. Il più antico (ed ancora oggi utilizzato) sistema di codifica è il codice ASCII, che possiamo vedere qui sotto (si ringrazia https://www.pierolucarelli.it/codiciascii/Tabella%20ASCII%20strandard.htm)

Nella sua versione originale ASCII usa 7 bit per rappresentare 128 caratteri, poi portata a 8 bit (un byte) con altri 128 caratteri per un totale di 256. Per decenni è stato il sistema principale di codifica dei caratteri ed è alla base di molti linguaggi di programmazione.

Tuttavia questo sistema riesce a malapena a rappresentare i caratteri latini, e non permette di memorizzare altre lingue (tedesco, arabo, cinese, cirillico, ecc.). Nel 1991 è stato quindi introdotto un nuovo sistema, Unicode, che rappresenta i caratteri usando 16 bit (2 byte) quindi 65536 caratteri. Successivamente i bit sono stati aumentati col tempo fino a 21 bit (circa 2 milioni di simboli). Tuttavia per rappresentare in digitale i caratteri Unicode si utilizza un sistema di codifica chiamato UTF, di cui esiste una variante a 8 bit (UTF-8, di fatto il codice ASCII) a 16 bit (UTF-16) o anche 24 e 32 (meno usate).

Immagini

Anche le immagini sono codificate digitalmente come sequenze numeriche (binarie). Una immagine digitale va pensata come una griglia di quadratini, detti pixel, dove ciascuno di essi memorizza una piccola porzione di immagine. Ipotizziamo per esempio di voler rappresentare la lettera “t” come immagine, essa potrebbe essere rappresentata così:

Ogni pixel bianco è 1, ed ogni pixel nero è 0. Se vista da vicino vediamo i pixel, ma da lontano “sembra” una immagine analogica.

Analogamente possiamo memorizzare una immagine in scala di grigi, dove ogni pixel memorizza un byte dove 0 è nero e 255 è bianco, coi valori intermedi che sono appunti i grigi sempre più chiari.

Ovviamente maggiore è la dimensione della griglia, maggiore è la dimensione dell’immagine, detta risoluzione, e più dettagliata la qualità della visualizzazione su uno schermo, fino al punto da non riuscire a distinguere i singoli pixel. Ma se guardiamo uno schermo, ad esempio dello smartphone, con una lente di ingrandimento, scopriamo che questo è costituito da una griglia di pixel.

In figura vediamo un ingrandimento proprio della parola pixel (fotografia dello schermo di un computer). Da vicino vediamo la griglia ma da lontano il nostro occhio è “ingannato” e ci sembrdddda una immagine analogica.

Le immagini però sono a colori. Per questa ragione di usa un sistema di codifica chiamato RGB (Red Green and Blue), dove ciascun colore è rappresentato da un codice per il rosso, uno per il verde ed uno per il blu (8 bit per ciascun colore, in totale quindi 24 bit ovvero 16 milioni di colori). Qui alcuni esempi di codifica di colori:

  • Rosso: (255, 0, 0)
  • Verde: (0, 255, 0)
  • Blu: (0, 0, 255)
  • Giallo: (255, 255, 0)
  • Ciano: (0, 255, 255)
  • Magenta: (255, 0, 255)
  • Bianco: (255, 255, 255)
  • Nero: (0, 0, 0)

Esiste anche uno standard esteso S-RGB (detto HDR) che arriva a 10 bit per colore cioè 30 bit (un miliardo di colori) utilizzato da schermi di ultima generazione, per gestire una maggiore profondità di sfumature di colore ed avvicinarsi alla sensibilità dell’occhio umano.

Il sensore di una fotocamera digitale è quindi composto da una griglia di microsensori (chiamati fotodiodi) che trasformano la luce in un segnale elettrico che viene poi trasformato in un valore numerico in base alla sua intensità e memorizzato come pixel digitale coi suoi colori e memorizzato nella memoria della fotocamera e quindi elaborabile da un computer.

Dimensione e risoluzione

Per ottenere un effetto “analogico” da una immagine digitale bisogna ottenere pixel sufficientemente piccoli da ingannare l’occhio umano. Questo effetto si ottiene aumentando la dimensione dell’immagine, ovvero il numero di pixel che compongono l’immagine, misurati come larghezza per altezza in pixel, il cui prodotto è il numero totale di pixel necessari. Qui un elenco di dimensioni tipiche delle immagini digitali:

DimensioneNumero pixel (in MegaPixel)Esempio
1280×7201MPFermo immagine di un video ad alta definizione
1920×10802MP Fermo immagine di un video di qualità Full HD
3840×21608MPFermo immagine di un video 4K
4000×300012MPImmagine tipica da fotocamera di uno smartphone
5472×364820MPImmagine di fotocamera compatta di fascia alta
6000×400024MPImmagine tipica di fotocamera mirrorless anche professionale
9504×633661MPImmagine tipica di fotocamera mirrorless professionale

E’ possibile comunque produrre immagini anche di miliardi di pixel (con dispositivi dedicati e/o tramite combinazione digitale di più foto).

L’aumento della dimensione delle immagini significa automaticamente un miglioramento della nitidezza dell’immagine? La risposta è no, perché entra in gioco la risoluzione.

La risoluzione misura il numero di pixel per pollice (si usa il sistema anglosassone) cioè la densità di pixel in una determinata area. E’ stato osservato che ogni risoluzione maggiore a 300dpi a 25cm (la distanza tipica di uno smartphone) è sufficiente per rendere impossibile distinguere i singoli pixel anche per una persona con una vista perfetta. Se invece la distanza è superiore, ad esempio 50cm, allora sono sufficienti 200dpi, e così via.

Pertanto una immagine ad esempio da 12MP potrebbe essere visualizzata nella sua interezza e senza vedere i pixel su una superficie di uno schermo da 15 pollici di diagonale anche da meno di 25cm. In realtà un simile schermo proprio per questa ragione non esiste in quanto si tratterebbe di una tecnologia costosamente inutile per i nostri occhi. Questo è il motivo per cui ad esempio anche le tv di fascia alta (ad esempio gli schermi OLED da 100 pollici) hanno una risoluzione non superiore agli 8MP (4k) perché la distanza di visualizzazione (con 100 pollici è di diversi metri) è tale da rendere in qualsiasi scenario reale impossibile vedere i pixel (a meno di stare ovviamente attaccati allo schermo).

Ma allora a cosa servono immagini così grandi? A parte le finalità di marketing (un pubblico generalista che non conosce la tecnologia è portato a credere che una maggiore dimensione delle immagini porti ad una risoluzione e quindi ad una qualità maggiore) in realtà sono utili prima di tutto per effettuare zoom per osservare dettagli, poi per poter eseguire ritagli ed infine per la stampa di grande dimensione (questo è il motivo per cui viene usata in alcune fotocamere professionali).

Quello dell’immagine digitale è un mondo affascinante, lasciamo l’approfondimento al lettore di questa ed altre tematiche e torniamo invece alla codifica digitale delle immagini.

Compressione

La dimensione delle immagini pone infatti un altro problema di natura tecnica, ovvero l’occupazione di memoria. Se sappiamo che ogni pixel di immagine richiede 24 bit RGB (cioè 3bytes) quanto occupano in memoria le immagini?

DimensioneNumero pixel (in MegaPixel)Occupazione di memoria
1280×7201MP3MB
1920×10802MP 6MB
3840×21608MP24MB
4000×300012MP36MB
5472×364820MP60MB
6000×400024MP72MB
9504×633661MP183MB

E’ facile calcolare che ad esempio uno smartphone con memoria da 256GB potrebbe memorizzare appena 7500 immagini dello smartphone stesso (in realtà molto meno visto che serve spazio per sistema operativo, programmi ed altri dati). Il problema dell’eccessiva occupazione di spazio da parte di immagini può essere risolto riducendo la dimensione delle immagini, ma ovviamente si rischia di peggiore la qualità e la nitidezza delle stesse, e quindi è una pratica che viene evitata. Un’altra soluzione è invece la compressione, un sistema che riduce la dimensione del file immagine (ma non dell’immagine stessa) memorizzandone una versione compressa, cioè che occupa meno spazio.

Esistono due tipi di compressione:

  • lossless (senza perdita) come nel formato PNG, dove l’immagine viene elaborata cercando di accorpare informazioni di pixel identici (si pensi ad immagini con parti dello stesso colore). Con il lossless si riesce mediamente a dimezzare la dimensione dell’immagine.
  • lossy (con perdita), come nel formato JPEG, dove l’immagine viene elaborata cercando di accorpare le informazioni di pixel anche non identici ma molto simili, eliminando parte dell’informazione, secondo un meccanismo sofisticato che analizza e riduce sfumature ed altre microcaratteristiche di dettaglio. Con JPEG si possono ottenere compressioni del 90% senza che l’utente si accorga della differenza di qualità.

Per questa ragione generalmente la maggior parte delle foto per usi non professionali sono memorizzate in formato JPEG. Per tornare all’esempio precedente, diventa possibile memorizzare su uno smartphone non più 7500 immagini, ma 75000 (sempre in linea teorica, perché lo spazio serve anche per altro). Non male.

Audio

Il principio su cui si basa l’audio digitale è quello del campionamento. In pratica il registratore digitale di un computer converte la vibrazione sonora su una membrana in un segnale elettrico che viene campionato (cioè letto e trasformato in valore digitale) con una certa frequenza. Maggiore la frequenza migliore la “somiglianza” del segnale digitale a quello analogico.

Anche qui valgono considerazioni simili a quelle delle immagini. Una eccessiva frequenza di campionamento non migliora la qualità dell’immagine che verrà udita perché l’orecchio umano percepisce suoni fino ad una certa frequenza (circa 20 mila oscillazioni al secondo, dette Hertz). Un tipico campionamento viene quindi effettuato a 44,1khz per ottenere frequenze uditive fino a 22Khz (sevono due campionamenti per ogni oscillazioni) ciascuno per una qualità di segnale, con un valore tipico (ad esempio nei CD, DVD e Bluray) di 16bit.

Anche qui bisogna fare i conti con lo spazio occupato: un’ora di audio stereo occupa circa 600MB, un valore impensabile se vogliamo conservare nel nostro computer qualche migliaio di brani di musica. Per questo anche nella memorizzazione delle immagini si usa la compressione con perdita, tramite un algoritmo MPEG, che comprime il singolo campione sonoro eliminando frequenze non udibili ed altri microdettagli. Il formato MPEG più noto è il formato MP3, che consente di ottenere una qualità indistinguibile dall’originale con una compressione di circa 5 volte (da 600 a 120MB l’ora) ma volendo si può ottenere una qualità ancora ottima anche comprimendo 7-8 volte rispetto all’originale non compresso.

Video

I video sono sequenze di immagini (dette anche frame) proiettate in rapida successione che creano l’illusione di movimento, con un audio accoppiato sincronizzato. I video digitali sono la versione digitale dei video analogici. L’occhio umano, quando il numero di fotogrammi per secondo (fps) è sufficientemente alto, non percepisce più le singole immagini, ma percepisce direttamente un movimento continuo, tramite un effetto che si chiama “motion blur” (sfocatura di movimento).

Normalmente il flusso video tipico di un film o trasmissione TV varia dai 24 fps) (tipico del cinema) o 30 fps (TV). Tuttavia oggi le fotocamere (anche non troppo professionali) oggi sono in grado di registrare filmati a 60, 120 o addirittura 240fps. Maggiore il numero di fps migliore la fluidità percepita dal movimento.

Il problema è dato però ancora una volta dallo spazio occupato in memoria dei video, e per i video trasmessi in streaming su Internet, anche dalla velocità di connessione. Ad esempio un video FULL HD a 30fps richiede di inviare 30 immagini al secondo, che richiedono (partendo da JPEG) circa 1,8MB al secondo, una velocità sostenibile solo da una connessione in fibra ottica. Un video 4K richiede invece 7,2MB al secondo, velocità eccessiva per qualsiasi rete domestica (e spesso anche aziendale).

Per questa ragione è stata introdotta una nuova forma di compressione MPEG che consiste nell’inserire nel video frame contenenti non l’intera immagine ma solo la parte dell’immagine che cambia rispetto alla precedente. Ad esempio se stiamo vedendo una scena di un film in cui due protagonisti parlano, tra un fotogramma e l’altro si muoveranno solo le labbra ed il viso, quindi saranno solo queste porzioni dell’immagine che verranno inserite nei frame successivi al primo frame, che contiene tutta l’immagine. Periodicamente poi per non perdere troppa informazione, viene inserito un key frame intero. Questa tecnica si chiama motion compensation (da cui il termine MPEG, Motion Compensation Expert Group) e consente di ottenere compressioni di anche 10 volte rispetto ad un flusso video tradizionale (da 1,8MB al secondo diventano 180KB al secondo e 7,2MB al secondo diventano 720KB al secondo) anche se ovviamente la compressione dipende molto anche dal tipo di video, ad esempio un film d’azione con scene movimentate ha un’alta percentuale di movimento e verrà compresso meno, mentre un film di tipo teatrale è pià comprimibile. Naturalmente è possibile scegliere, come col JPEG e MP3 la quantità di compressione, ottenendo quindi maggiore o minore qualità.

Conclusioni

I dati di qualsiasi tipo sono codificati nei computer come sequenze digitali numeriche memorizzate come numeri binari. Testi, immagini, suoni e video sono quindi trasformati tramite speciali codifiche e memorizzati quindi come sequenze binarie e riconvertite per la loro fruizione da parte dell’utente.

Per immagini audio e video gioca un ruolo importante la compressione, soprattutto lossy, che consente di risparmiare spazio nelle memorie e rende possibile la trasmissione in tempi sostenibili dei dati nella rete Internet.