La tastiera ci permette di inserire caratteri alfanumerici  che comprendono  i singoli caratteri, cioè le lettere dell’alfabeto, le cifre da 0 a 9, i segni di interpunzione, i segni speciali, come “&”, “%”,  ecc. La memoria centrale dell’elaboratore, che serve a contenere i programmi e i dati sui quali essi operano, è suddivisa in byte. Ogni byte è a sua volta, composto da otto bit, cioè da otto cifre binarie. In sostanza, un bit può assumere il valore 0 oppure 1. Si tratta di vedere (piante sono le possibili combinazioni di 0 e 1 che si possono formare. Con due bit sarebbero quattro: 00, 01, 10, 11. Con tre sarebbero otto: 000, 001, 010, 011, 100, 101, 110, 111. Con gli otto bit di un byte sono 256, da 0000 0000 a 1111 1111. Un carattere, nella memoria dell’elaboratore, occupa un byte ed esistono diversi codici, cioè regole che associano caratteri e combinazioni di bit. Uno dei più conosciuti è il codice ASCII (American Standard Code for Information Interchange), riportato in figura. per il quale vengono utilizzati. in realtà, solo sette degli otto bit che costituiscono un byte.

Dalla figura si vede per esempio, che il carattere “a” (minuscolo) viene rappresentato con  01100001, che il carattere “6” viene rappresentato con 00000110, che il carattere “X” viene rappresentato con 0101100 e così via. Il codice ASCII comunque, non è l’unico e può capitare che, nel momento in cui si devono trasferire dati da un sistema di elaborazione a un altro, si debba effettuare una conversione. Ciò significa che i caratteri, rappresentati secondo un codice vengono trasformati negli stessi caratteri rappresentati, però, secondo un altro codice.

La codifica di base per i caratteri di un testo utilizza 7 bit per codificare un singolo carattere; questo sistema è stato esteso a 8 bit, raddoppiando il numero di caratteri disponibili (256 = 28), con la definizione del codice chiamato ASCII esteso.

Unicode
Il codice ASCII è per codificare caratteri basati sull’alfabeto latino.

Ma se si vogliono rappresentare anche i caratteri greci, cirillici, arabi, cinesi, giapponesi e così via, non bastano 8 bit: quei simboli sono molto più numerosi dei 256 codici diversi resi disponibili da un byte.

Nel 1991 è stata sviluppata una nuova codifica, chiamata Unicode, che si è diffusa rapidamente ed è in continua evoluzione: è diventata lo standard di fatto per la rappresentazione delle informazioni nei documenti elettronici, in particolare nelle pagine Web, utilizzando i simboli delle numerose lingue esistenti nel mondo.

I primi caratteri di Unicode sono esattamente gli stessi della codifica ASCII, in modo da mantenere la compatibilità con il sistema preesistente. All’inizio la codifica utilizzava 2 byte (16 bit, con la possibilità di codificare 65.536 caratteri), ma poi è stata estesa a 32 bit, permettendo la rappresentazione di più di un milione di caratteri differenti.

L’obiettivo generale di Unicode è di creare una codifica che comprenda tutti i caratteri, con tutte le variazioni possibili, di tutte le lingue esistenti, oltre ai simboli utilizzati in matematica e nelle scienze.

Per semplificare le operazioni sono state poi create versioni ridotte del codice che permettono di scrivere i caratteri di uso più frequente in modo più breve: UTF-8 (a 8 bit), UTF-16 (a 16 bit) e UTF-32 (a 32 bit).

La stringa di testo “Ciao, mondo!” contenente 12 caratteri (occorre tenere conto di tutti i simboli, compresi la virgola, lo spazio e il punto esclamativo) occuperebbe 84 bit (12 x 7) se codificata in ASCII standard, mentre ne occuperebbe 384 (12 x 32) in UTF-32. 

Le immagini in formato digitale
Anche le immagini possono essere codificate mediante una sequenza di 0 e 1; questa operazione si indica con il termine digitalizzazione.

Immaginiamo di avere un’immagine in bianco e nero e di rappresentarla su una griglia, per esempio prendiamo la lettera L: ciascun quadratino (detto pixel) può essere associato a 0, colore nero, 1, colore bianco.

 

Leggendo i numeri da sinistra a destra e dall’alto verso il basso possiamo trasformare  l’oggetto  bidimensionale  in una sequenza lineare di 0 e 1. In questo caso 00000 01000 01000 01000 01110 00000. 

0

0

0

0

0

0

1

0

0

0

0

1

0

0

0

0

1

0

0

0

0

1

1

1

0

0

0

0

0

0

Se l’immagine è colorata, allora sarà necessario far corrispondere ogni quadratino a un numero che ne rappresenta  il  colore.  Per  esempio,  se  facciamo corrispondere a un pixel un byte (8 bit), possiamo avere una «tavolozza» di 256 colori. 

La codifica dei suoni
Prima di tutto bisogna capire la natura del suono nel suo formato analogico e poi come sia possibile renderlo in forma digitale. Il suono è un’onda elastica che si propaga nell’aria. Essa provoca zone di condensazione e rarefazione della pressione nel mezzo in cui propaga. In questo modo la vibrazione sonora giunge al nostro orecchio e da lì viene convertita in impulsi nervosi che vengono decodificati dal nostro cervello. Per descrivere un suono basta dunque descrivere una vibrazione. L’onda sonora più semplice, una nota pura, è descritta da una sinusoide.

Tale onda è caratterizzata da due valori, l’ampiezza A che stabilisce l’intensità del suono ed il periodo T che ne stabilisce la tonalità. Al periodo è legata un’altra grandezza che è frequenza, f, definita come il numero di oscillazioni al secondo compiute dall’onda. In altri termini la frequenza è il reciproco del periodo. Si misura in hertz. I suoni che effettivamente percepiamo non sono così semplici. In realtà risultano dalla sovrapposizione di parecchie queste onde. In particolare noi sentiamo i suoni in un preciso intervallo di frequenze. Anche se soggetto ad una variazione individuale e variabile con l’età, che è quantificabile tra i 20 hertz e i 20.000 hertz.

 

 

Per adesso stiamo descrivendo il suono come grandezza analogica, cioè variabile in modo continuo; cosa succede quando viene digitalizzato? L’onda viene divisa in una serie di valori discreti chiamati campioni. Si definisce frequenza di campionamento il numero di campioni estratti in un secondo di segnale sonoro. Esistono opportuni teoremi della teoria dei segnali elettrici che stabiliscono a quale frequenza minima campionare un segnale affinché possa aversi una rappresentazione fedele, senza perdita di informazione del segnale sonoro. Più elevata è la frequenza di campionamento, migliore è la qualità sonora a spese dell’ampiezza del file risultante.

I valori più utilizzati per il campionamento sono 11,025 kHz, 22,05 kHz, 44,1 kHz e 48 kHz. Le frequenze più alte sono utili nel caso di riproduzione di musica.

Un altro parametro che influisce sulla qualità del sonoro digitalizzato è la profondità in numero di bit. Si possono usare 8, 16, e nei casi più precisi anche 24 bit. Il numero di bit stabilisce i valori possibili per le ampiezze digitalizzate. Questa operazione si chiama quantizzazione ed influisce sul suono facendogli perdere leggermente in fedeltà. 

 

Al crescere della frequenza e della profondità varia il numero di bit. Il calcolo è facilmente fattibile ovvero: 

dimensione del file in byte = durata in secondi x frequenza di campionamento x n. di canali x risoluzione/8.

Si provi a fare il calcolo per tre minuti di musica stereofonica (a due canali, destro e sinistro) a 44,1 kHz. che è lo standard della qualità per CD Audio e si troveranno parecchi kbyte, anzi dei Megabyte:

2 x (44.100 Hz) x (16 bit) (180 s) = 254.016.000 bit = 31.752.000 byte = 32 MB 

Fortunatamente anche per il suono sono previste opportune tecniche di compressione.

I due formati principali per i file audio sono il .wav per sistemi Windows ed il .aif per piattaforme Macintosh. Entrambe sono molto versatili e supportano diverse frequenze di campionamento e diversi numeri di bit.

Comunque soffrono entrambe del difetto di richiedere parecchia memoria. Il formato che attualmente spopola in Internet è l’MP3.

Si tratta di una versione opportunamente compressa del flusso audio. Così come il formato JPG comprime immagini basandosi su considerazioni di psicoottica, cioè cercando di eliminare dettagli difficilmente percepibili dall’occhio, l’MP3 si basa su considerazioni di psicoacustica. Le frequenze emesse dagli strumenti musicali possono superare anche i 20 kHz che però sappiamo essere il limite superiore oltre il quale l’orecchio umano comincia a non percepire più il suono. Dunque queste frequenze superiori non vengono riprodotte. Vengono inoltre eliminate anche componenti in frequenza «oscurate» da componenti a forte intensità. In altri termini può accadere che due tonalità molto vicine siano prodotte con intensità molto diversa. La vicinanza come frequenza delle due fa sì che la meno intensa sia praticamente impercepibile, dunque può essere eliminata senza quasi perdita di fedeltà in riproduzione. Usando una strategia di questo tipo si ottengono rapporti di compressione anche pari a 10-12 che è davvero notevole considerata la scarsissima differenza di qualità sonora tra formato .wav e mp3. Sottolineiamo un altro vantaggio di questa tecnica. Essa è adatta allo streaming, ovvero alla riproduzione anche prima che il file venga completamente scaricato sulla macchina. Si comincia a sentir musica man mano che il brano è trasferito da Internet sul disco locale.

Per completare questo paragrafo sui segnali audio, vogliamo far notare che anche per quanto riguarda il sonoro esistono rappresentazioni vettoriali. Si tratta dei file .mid. Invece di registrare in forma campionata e quantizzata i segnali acustici, in un file .mid sono registrate istruzioni in un particolare linguaggio che può istruire un sintetizzatore elettronico presente sulle schede audio moderne in grado di riprodurre musica. In pratica è come se registrassimo lo spartito del brano ed il sintetizzatore si occupa della riproduzione. La qualità è scarsa, perché il suono è percepibilmente di origine elettronica, quindi non paragonabile assolutamente all’armonia degli strumenti musicali, però è enorme il risparmio di memoria. Per questo il formato .mid ha comunque avuto successo in Internet.

Il video
La possibilità di fare uso del video è uno dei grandi cavalli di battaglia della multimedialità. Con l’introduzione del video nel personal computer, l’informatica sembra infatti lanciare una colossale sfida al cinema e alla televisione. La maggior parte dei prodotti multimediali in commercio contiene filmati, e anche Internet trabocca di video. Tuttavia, fra tutti gli elementi della multimedialità, il video è quello che più mette alla prova la potenza del computer.

I lettori abituali di opere multimediali avranno notato alcune caratteristiche costanti dei filmati contenuti in questi prodotti: primo, le dimensioni del riquadro in cui scorre il video sono piuttosto piccole: secondo, i filmati sono piuttosto brevi: terzo, la qualità delle loro immagini e la fluidità del movimento lasciano a desiderare se le confrontiamo con i filmati televisivi. Nei migliori prodotti multimediali, alcune di queste caratteristiche vengono trasformate in virtù: le dimensioni ridotte latino apparire il video come uno degli elementi di un ambiente più ricco e complesso, e la brevità dei filmati enfatizza le caratteristiche interattive dell’ambiente. impedendo che il lettore si lasci trascinare in una fruizione passiva e interamente preconfezionata.

Ma i filmati multimediali non sono piccoli e brevi soltanto per ragioni stilistiche. La ragione principale è anzi prettamente tecnica: su un computer multimediale configurato secondo gli standard odierni, e senza l’aggiunta di ulteriori componenti hardware, non è possibile ottenere video di alta qualità. 

I problemi del video digitale
Nella nostra cultura i veicoli principali di diffusione dei filmati sono la televisione e il cinema, due media tradizionalmente analogici. Il supporto di memorizzazione usato dal cinema è la pellicola, che consente una qualità dell’immagine estremamente elevata: la televisione usa tradizionalmente nastri magnetici. Nonostante questa differenza nei supporti, la tecnica di base è la stessa fin dall'invenzione dei fratelli Lumière: quello che il nostro cervello percepisce come un movimento continuo è dato dal rapido succedersi, di fronte ai nostri occhi, di immagini leggermente diverse fra loro. Queste immagini si chiamano fotogrammi in italiano e frame in inglese.

Una delle caratteristiche che differenziano fra di loro il cinema e i diversi standard televisivi è la frequenza dei fotogrammi (frame rate). Il cinema lavora normalmente a 24 fotogrammi al secondo: alcuni standard cinematografici di livello inferiore (come il “super-8”, utilizzato per i filmini domestici fino a una quindicina di anni fa) utilizzavano 18 fotogrammi al secondo, ed erano infatti caratterizzati da un movimento non perfettamente fluido. Lo standard televisivo PAL, utilizzato in Italia e nella maggior parte dell’Europa, prescrive 25 fotogrammi al secondo, mentre lo standard statunitense NTSC ne prevede addirittura 30. In generale, per ottenere un movimento veramente fluido, un filmato dovrebbe girare a un frame rate di almeno 24 fotogrammi al secondo.

Quando in ambito informatico si parla di video ci si riferisce alla gestione di filmati veri e propri composti da sequenze di fotogrammi. Ciascun fotogramma è salvato nella sequenza sono forma di un immagine bitmap. La riproduzione del video è più delicata rispetto a quella di altri elementi del multimedia perché richiede un’elaborazione in tempo reale di sequenze di immagini, ciascuna delle quali può essere diversa dalla precedente.

Questa elaborazione richiede tempo. Se in un’opera multimediale si verificano ritardi di poche frazioni di secondo nella visualizzazione di immagini fisse, questo ritardo non compromette in modo rilevante la fruizione del prodotto: un analogo ritardo nella visualizzazione di un fotogramma video può invece compromettere completamente la fluidità dei movimenti. Per raggiungere la qualità di un fotogramma televisivo, ciascuna bitmap della sequenza dovrebbe avere una risoluzione di 768 × 576 pixel e una profondità cromatica di 24 bit per pixel (cioè, il colore di ciascun pixel dovrebbe essere rappresentato con un codice di 24 bit). Un’immagine con queste caratteristiche, non compressa, occupa circa 1.3 Mb. Moltiplicate questo numero per 25 e scoprirete che un solo secondo di video immagazzinato sul disco fisso occuperebbe 32.4 megabyte! A queste condizioni, un intero CD-ROM potrebbe contenere appena 20 secondi di video.

Supponiamo ora che qualcuno sia tanto folle da realizzare un video di 20 secondi sii CD-ROM secondo questi criteri. Per poterlo riprodurre fedelmente, avremmo bisogno di un lettore in grado di trasferire 32,4 Mb di dati al secondo all’unità centrale dell’elaboratore. La velocità di trasferimento (transfer rate) di un lettore CD-ROM 8x è di appena 1.200 Kb al secondo (cioè meno di 1 Mb al secondo). Nessuno potrebbe quindi godersi il filmato. Pertanto per poter vedere un video al computer è necessario ridurre l’ingombro del video stesso. Per farlo si può agire contemporaneamente su diversi fattori. Prima di tutto, è ragionevole ridurre le dimensioni dei singoli fotogrammi, per questo i video multimediali girano generalmente in un riquadro che misura al massimo 320 × 240 pixel. In secondo luogo si può ridurre la profondità cromatica dei fotogrammi: nella maggior parte dei casi una profondità di 8 bit (immagini a 256 colori) consente di ottenere risultati dignitosi.

In terzo luogo si può ridurre la frante rate fino a circa 15 fotogrammi al secondo: da questa riduzione deriva una fluidità dei movimenti inferiore a quella cinematografica e televisiva.

Queste strategie riducono notevolmente l’ingombro del video, ma non sono ancora sufficienti. In aggiunta a esse si ricorre alle cosiddette tecniche di compressione. Queste tecniche consentono di ridurre l'ingombro di un filmato fino al 95%: in questo caso si dirà che il tasso di compressione di quel filmato è del 95%. Purtroppo applicando la compressione si riduce ulteriormente la qualità delle immagini, che appariranno pin sgranate di quelle originali.

Formati del video digitale
Come avviene per tutti gli altri elementi del multimedia, un filmato viene salvato all’interno di un file secondo un formato che deve essere riconosciuto dal computer su cui avverrà la riproduzione. Sui computer odierni esistono due importanti standard per la digitalizzazione del video: Video for Windows di Microsoft e QuickTime di Apple. Il primo funziona solo su computer Windows, e usa file con estensione AVI. I filmati realizzati secondo lo standard QuickTime possono invece funzionare sia in Macintosh che in Windows: la loro estensione in Windows è MOV. Entrambi i formati supportano svariate tecniche di compressione.

Dal punto di vista dell’utente finale non esistono differenze sostanziali fra questi standard.

Un file video contiene la sequenza dei fotogrammi che compongono il filmato, due tracce audio sincronizzate con i fotogrammi, e una serie di istruzioni sulla riproduzione (per esempio, la quantità di fotogrammi al secondo).

Un computer multimediale con la configurazione che abbiamo descritto nelle lezioni precedenti è perfettamente in grado di riprodurre il video. Se però ci si vuole cimentarsi nella produzione di filmati si ha bisogno di qualcosa in più.

Per poter digitalizzare il contenuto di una vecchia videocassetta si ha bisogno di una scheda di acquisizione video. Grazie a essa si cattura il segnale televisivo e convertirlo in un file. In alternativa si può acquistare una telecamera digitale, che permetterà di registrare direttamente le riprese su file, senza passare per il videoregistratore.

Bisogna inoltre di procurarsi un programma con cui effettuare il montaggio dei filmati (il più famoso e potente è Adobe Premiere). Questi programmi mettono a disposizione sullo schermo una vera e propria centralina di montaggio, con hi possibilità di importare immagini e suoni e di introdurre una grande quantità di effetti speciali. 

Qual è, allora, il vantaggio della digitalizzazione?
Prima di tutto va ricordato che il computer è progettato per lavorare in digitale e quindi tutti i dati che esso legge e scrive devono essere convertiti in questa forma. Naturalmente non tutto passa per un computer. Per ascoltare musica, per esempio, utilizziamo un impianto stereo e dei dischi.

In teoria, si dovrebbe avere una qualità migliore sui vecchi dischi in vinile, che sono stampati in formato analogico e, in effetti, teoricamente, dal punto di vista della qualità, ciò è vero. Esiste però il problema dei rumori, dei segnali non desiderati (come il fruscio di fondo, tipico di nastri e LP). Gestire un segnale in analogico richiede una precisione estrema, sia per il sistema di registrazione, sia per quello di riproduzione; ciò comporta costi e complessità molto più elevati per i circuiti elettronici (è questa la principale differenza tra registratori amatoriali e professionali). Memorizzare invece un segnale digitale equivale in sostanza a scrivere una lunga serie di 0 e 1, molto più facilmente distinguibili: qualora dovessero comparire segnali di disturbo, essi verrebbero tranquillamente ignorati dal sistema, poiché difficilmente sarebbero nello stesso formato del dato scritto; ad esempio, se registriamo in formato digitale su un nastro magnetico, la successiva lettura potrà produrre dei rumori (dovuti magari anche allo sfregamento del nastro stesso contro la testina del riproduttore), che però saranno ignorati, non essendo in formato digitale.

Compressione dei dati
Si parla parecchio, ormai, di compressione dei dati. La troviamo nei formati rivoluzionari come MP3, è ormai un concetto comune per chi usa utility come WinZip ed emerge continuamente ogni volta che si parla di trasmissione dei dati. Ci hanno detto un sacco di volte che la compressione di un file porta a ridurne la dimensione ma, alla fine, i byte mancanti dove vanno a finire? Siamo sicuri di non aver perso nulla?

La compressione non ha nulla di magico: si tratta di algoritmi abbastanza semplici e consolidati che fanno parte del bagaglio culturale dei programmatori ormai da parecchi anni.

Il primo che iniziò a parlare di compressione dei dati fu Claude Shannon dei Bell Laboratories negli anni Quaranta. Compressione dei dati vuol dire ridurre lo spazio che le informazioni occupano, senza per questo rinunciare al contenuto che trasmettono. La possibilità di comprimere le informazioni si basa essenzialmente sul fatto che spesso queste sono ridondanti, contengono informazioni ripetute, spazi inutilizzati oppure elementi non significativi. Qualcosa di analogo ai prodotti sottovuoto, dove viene eliminato lo spazio occupato dall’aria, senza per questo alterare in alcun modo il contenuto. Possiamo, inizialmente, distinguere tra due tipi di compressione: senza perdita di dati e con perdita di dati. 

Compressione senza perdita di dati
Quando trasferiamo attraverso Internet documenti, programmi, dati di una certa importanza, e utilizziamo una compressione per ridurre i tempi di connessione, desideriamo sempre trasmettere tutte le informazioni senza perderne neanche un pezzetto, in modo che, mediante una opportuna decompressione, si possa ottenere esattamente il contenuto originario (sia esso un file, una immagine, un suono, ecc.). È la compressione che tutti conosciamo attraverso i famosi formati ZIP, ARJ e così via. È di estremo interesse in quanto non intacca il contenuto, quindi può diventare totalmente trasparente per l’utente. L’idea che sia possibile comprimere i dati si basa sulla nozione di entropia, mutuata dalla termodinamica e applicata all’informatica. Diciamo che un insieme di dati (cioè, ai fini pratici, un file) possiede una maggiore o minore entropia a seconda della quantità di informazioni che contiene. Certo, detto così non è di grande aiuto. È più facile comprendere con un esempio.

Date le due sequenze di caratteri: 

AAAAAAAAAAABBBBBBBBBBBBBBB

ABCDEFGHIJKLMNOPQRSTUVWXYZ 

è abbastanza intuitivo vedere che la seconda sequenza contiene maggiori informazioni rispetto alla prima (e quindi, secondo il discorso precedente, possiede una entropia maggiore). Nello stesso spazio, infatti, sono contenuti molti più simboli, con una variabilità maggiore. Mentre la prima sequenza è estremamente ridondante (solo due simboli ripetuti molte volte) è difficile trovare un modo per “riassumere” la seconda sequenza. L’idea alla base della compressione senza perdita di dati è che, minore è l’entropia e minore può risultare lo spazio occupato (ottenendo, quindi, una maggiore compressione). La prima sequenza di caratteri potrebbe, infatti, essere scritta anche come: 

11A+15B 

occupando uno spazio più ridotto, ma senza per questo perdere informazione. La compressione che sfrutta questa tecnica prende il nome di Run-Length Encoding.

Analogamente alla precedente, potremmo compiere un’analisi più approfondita sulla sequenza di caratteri per trovare dei “pattern” o delle forme comuni che si ripetono. Se, per esempio, abbiamo la sequenza ABBABBABBABB è facile vedere che potrebbe essere riscritta come 4ABB. Questo tipo di compressione si chiama LZW, dalle iniziali dei ricercatori che hanno avuto l’idea. Brevettato nel 1985 dalla Sperry Corp., (diventata in seguito Unisys Corp.) il metodo LZW viene utilizzato dal formato di immagine GIF e dallo standard V.42bis per i modem. 

Compressione con perdita di dati
In molti casi, specialmente quando si ha a che fare con informazioni digitalizzate (per esempio fotografie o file audio) potrebbe essere conveniente rinunciare a qualche piccolo dettaglio insignificante per guadagnare in comprimibilità. Se, infatti, in una fotografia possiamo eliminare piccole sfumature (che comunque rappresentano informazione) riusciamo in questo modo a ridurre l’entropia dell’immagine. A questo punto i metodi di compressione senza perdita di dati visti in precedenza possono essere applicati con maggiore efficacia.

Quindi in realtà la compressione con perdita di dati usa gli stessi algoritmi di quella senza perdita di dati; la differenza sta nel fatto che li fa precedere da un procedimento di “semplificazione” dell’informazione. Ritroviamo questo tipo di compressione nel formato di immagine JPEG che, come è noto, viene consigliato soprattutto per immagini fotografiche.

Tutti i formati MPEG funzionano secondo questo procedimento. Consentono di ridurre l’entropia eliminando informazioni non importanti. Facciamo un esempio. Quando ascoltiamo un brano audio, il nostro cervello opera da filtro su alcune informazioni che non ritiene rilevanti. In presenza di un segnale forte, per esempio, i segnali molto più deboli tendono a non essere percepiti. L’idea è allora di eliminare all’origine questi segnali, riducendo in tal modo le informazioni contenute nel file. Possono essere filtrate analogamente le frequenze non udibili o comunque poco significative.

Elemento importante in questo caso è che si può accedere a livelli diversi di compressione. Se si accetta di rinunciare alla qualità, si può guadagnare sulla dimensione. Più sono i dettagli sacrificati, minore sarà la qualità dell’informazione finale e più piccolo sarà il file corrispondente. 

Compressione frattale
Uno dei campi più promettenti per la ricerca di nuovi standard di compressione è dato dagli algoritmi frattali. Senza entrare nei dettagli tecnici, si tratta di procedure che ricercano all’interno del file (per esempio una immagine) delle ricorrenze in modo analogo al metodo LZW. Solo che in questo caso gli elementi ripetuti non devono essere necessariamente identici, ma è sufficiente che siano “affini”. Siano cioè ottenibili attraverso trasformazioni elementari della forma originaria come, per esempio, la rotazione. In modo analogo a quello che avviene nelle immagini frattali – in cui si nota una “somiglianza” delle varie parti – questo metodo di compressione cerca di ricondurre l’informazione a pochi “mattoni” di base e alla combinazione delle loro trasformazioni. 

Pro e contro
Ma se la compressione è così efficace, perché non usarla dappertutto? Perché non avere come standard una base compressa, come si usava sugli hard disk di qualche anno fa per aumentarne la capacità? La verità è che bisogna evitare di abusarne, perché genera assuefazione. Il fatto è che una informazione può essere compressa senza perdita di dati solamente quando contiene ridondanze eliminabili. Una volta eliminate, non si può eliminarle una seconda volta. Il che vuol dire che un file compresso non può essere compresso di nuovo, o almeno non si avrà un grande beneficio in termini di dimensione. È un problema analogo alle offerte speciali sugli acquisti: non sono mai cumulabili!

Se si fa largo uso di compressione, in modo trasparente, si tende a dimenticarsene incappando a spiacevoli sorprese. Chi infatti usa dischi compressi o, come a volte si diceva, “stackerizzati”, e vuole salvare sul proprio disco file di WinZip, faccia bene attenzione alle dimensioni perché i file “zippati” non verranno ridotti granché. Quindi i valori medi dichiarati di guadagno di spazio su disco non verranno rispettati. Per fare un esempio, un disco da 100 MByte che, stackerizzato, viene dichiarato da 200 MByte, in realtà non guadagnerà molto rispetto alla capacità originaria se viene riempito di file ZIP.

Inoltre la ridondanza delle informazioni non sempre è un nemico da combattere. Nelle trasmissioni di dati è un valido aiuto contro i disturbi: per sapere se sono avvenuti errori di trasmissione occorre inserire informazioni supplementari di controllo (che non aggiungono contenuto e quindi riducono l’entropia). È più facile che si rovini un file ZIP piuttosto che uno non compresso.

  Click to listen highlighted text! La tastiera ci permette di inserire caratteri alfanumerici  che comprendono  i singoli caratteri, cioè le lettere dell’alfabeto, le cifre da 0 a 9, i segni di interpunzione, i segni speciali, come “&”, “%”,  ecc. La memoria centrale dell’elaboratore, che serve a contenere i programmi e i dati sui quali essi operano, è suddivisa in byte. Ogni byte è a sua volta, composto da otto bit, cioè da otto cifre binarie. In sostanza, un bit può assumere il valore 0 oppure 1. Si tratta di vedere (piante sono le possibili combinazioni di 0 e 1 che si possono formare. Con due bit sarebbero quattro: 00, 01, 10, 11. Con tre sarebbero otto: 000, 001, 010, 011, 100, 101, 110, 111. Con gli otto bit di un byte sono 256, da 0000 0000 a 1111 1111. Un carattere, nella memoria dell’elaboratore, occupa un byte ed esistono diversi codici, cioè regole che associano caratteri e combinazioni di bit. Uno dei più conosciuti è il codice ASCII (American Standard Code for Information Interchange), riportato in figura. per il quale vengono utilizzati. in realtà, solo sette degli otto bit che costituiscono un byte. Dalla figura si vede per esempio, che il carattere “a” (minuscolo) viene rappresentato con  01100001, che il carattere “6” viene rappresentato con 00000110, che il carattere “X” viene rappresentato con 0101100 e così via. Il codice ASCII comunque, non è l’unico e può capitare che, nel momento in cui si devono trasferire dati da un sistema di elaborazione a un altro, si debba effettuare una conversione. Ciò significa che i caratteri, rappresentati secondo un codice vengono trasformati negli stessi caratteri rappresentati, però, secondo un altro codice. La codifica di base per i caratteri di un testo utilizza 7 bit per codificare un singolo carattere; questo sistema è stato esteso a 8 bit, raddoppiando il numero di caratteri disponibili (256 = 28), con la definizione del codice chiamato ASCII esteso. UnicodeIl codice ASCII è per codificare caratteri basati sull’alfabeto latino. Ma se si vogliono rappresentare anche i caratteri greci, cirillici, arabi, cinesi, giapponesi e così via, non bastano 8 bit: quei simboli sono molto più numerosi dei 256 codici diversi resi disponibili da un byte. Nel 1991 è stata sviluppata una nuova codifica, chiamata Unicode, che si è diffusa rapidamente ed è in continua evoluzione: è diventata lo standard di fatto per la rappresentazione delle informazioni nei documenti elettronici, in particolare nelle pagine Web, utilizzando i simboli delle numerose lingue esistenti nel mondo. I primi caratteri di Unicode sono esattamente gli stessi della codifica ASCII, in modo da mantenere la compatibilità con il sistema preesistente. All’inizio la codifica utilizzava 2 byte (16 bit, con la possibilità di codificare 65.536 caratteri), ma poi è stata estesa a 32 bit, permettendo la rappresentazione di più di un milione di caratteri differenti. L’obiettivo generale di Unicode è di creare una codifica che comprenda tutti i caratteri, con tutte le variazioni possibili, di tutte le lingue esistenti, oltre ai simboli utilizzati in matematica e nelle scienze. Per semplificare le operazioni sono state poi create versioni ridotte del codice che permettono di scrivere i caratteri di uso più frequente in modo più breve: UTF-8 (a 8 bit), UTF-16 (a 16 bit) e UTF-32 (a 32 bit). La stringa di testo “Ciao, mondo!” contenente 12 caratteri (occorre tenere conto di tutti i simboli, compresi la virgola, lo spazio e il punto esclamativo) occuperebbe 84 bit (12 x 7) se codificata in ASCII standard, mentre ne occuperebbe 384 (12 x 32) in UTF-32.  Le immagini in formato digitaleAnche le immagini possono essere codificate mediante una sequenza di 0 e 1; questa operazione si indica con il termine digitalizzazione. Immaginiamo di avere un’immagine in bianco e nero e di rappresentarla su una griglia, per esempio prendiamo la lettera L: ciascun quadratino (detto pixel) può essere associato a 0, colore nero, 1, colore bianco.   Leggendo i numeri da sinistra a destra e dall’alto verso il basso possiamo trasformare  l’oggetto  bidimensionale  in una sequenza lineare di 0 e 1. In questo caso 00000 01000 01000 01000 01110 00000.  0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 Se l’immagine è colorata, allora sarà necessario far corrispondere ogni quadratino a un numero che ne rappresenta  il  colore.  Per  esempio,  se  facciamo corrispondere a un pixel un byte (8 bit), possiamo avere una «tavolozza» di 256 colori.  La codifica dei suoniPrima di tutto bisogna capire la natura del suono nel suo formato analogico e poi come sia possibile renderlo in forma digitale. Il suono è un’onda elastica che si propaga nell’aria. Essa provoca zone di condensazione e rarefazione della pressione nel mezzo in cui propaga. In questo modo la vibrazione sonora giunge al nostro orecchio e da lì viene convertita in impulsi nervosi che vengono decodificati dal nostro cervello. Per descrivere un suono basta dunque descrivere una vibrazione. L’onda sonora più semplice, una nota pura, è descritta da una sinusoide. Tale onda è caratterizzata da due valori, l’ampiezza A che stabilisce l’intensità del suono ed il periodo T che ne stabilisce la tonalità. Al periodo è legata un’altra grandezza che è frequenza, f, definita come il numero di oscillazioni al secondo compiute dall’onda. In altri termini la frequenza è il reciproco del periodo. Si misura in hertz. I suoni che effettivamente percepiamo non sono così semplici. In realtà risultano dalla sovrapposizione di parecchie queste onde. In particolare noi sentiamo i suoni in un preciso intervallo di frequenze. Anche se soggetto ad una variazione individuale e variabile con l’età, che è quantificabile tra i 20 hertz e i 20.000 hertz.     Per adesso stiamo descrivendo il suono come grandezza analogica, cioè variabile in modo continuo; cosa succede quando viene digitalizzato? L’onda viene divisa in una serie di valori discreti chiamati campioni. Si definisce frequenza di campionamento il numero di campioni estratti in un secondo di segnale sonoro. Esistono opportuni teoremi della teoria dei segnali elettrici che stabiliscono a quale frequenza minima campionare un segnale affinché possa aversi una rappresentazione fedele, senza perdita di informazione del segnale sonoro. Più elevata è la frequenza di campionamento, migliore è la qualità sonora a spese dell’ampiezza del file risultante. I valori più utilizzati per il campionamento sono 11,025 kHz, 22,05 kHz, 44,1 kHz e 48 kHz. Le frequenze più alte sono utili nel caso di riproduzione di musica. Un altro parametro che influisce sulla qualità del sonoro digitalizzato è la profondità in numero di bit. Si possono usare 8, 16, e nei casi più precisi anche 24 bit. Il numero di bit stabilisce i valori possibili per le ampiezze digitalizzate. Questa operazione si chiama quantizzazione ed influisce sul suono facendogli perdere leggermente in fedeltà.    Al crescere della frequenza e della profondità varia il numero di bit. Il calcolo è facilmente fattibile ovvero:  dimensione del file in byte = durata in secondi x frequenza di campionamento x n. di canali x risoluzione/8. Si provi a fare il calcolo per tre minuti di musica stereofonica (a due canali, destro e sinistro) a 44,1 kHz. che è lo standard della qualità per CD Audio e si troveranno parecchi kbyte, anzi dei Megabyte: 2 x (44.100 Hz) x (16 bit) (180 s) = 254.016.000 bit = 31.752.000 byte = 32 MB  Fortunatamente anche per il suono sono previste opportune tecniche di compressione. I due formati principali per i file audio sono il .wav per sistemi Windows ed il .aif per piattaforme Macintosh. Entrambe sono molto versatili e supportano diverse frequenze di campionamento e diversi numeri di bit. Comunque soffrono entrambe del difetto di richiedere parecchia memoria. Il formato che attualmente spopola in Internet è l’MP3. Si tratta di una versione opportunamente compressa del flusso audio. Così come il formato JPG comprime immagini basandosi su considerazioni di psicoottica, cioè cercando di eliminare dettagli difficilmente percepibili dall’occhio, l’MP3 si basa su considerazioni di psicoacustica. Le frequenze emesse dagli strumenti musicali possono superare anche i 20 kHz che però sappiamo essere il limite superiore oltre il quale l’orecchio umano comincia a non percepire più il suono. Dunque queste frequenze superiori non vengono riprodotte. Vengono inoltre eliminate anche componenti in frequenza «oscurate» da componenti a forte intensità. In altri termini può accadere che due tonalità molto vicine siano prodotte con intensità molto diversa. La vicinanza come frequenza delle due fa sì che la meno intensa sia praticamente impercepibile, dunque può essere eliminata senza quasi perdita di fedeltà in riproduzione. Usando una strategia di questo tipo si ottengono rapporti di compressione anche pari a 10-12 che è davvero notevole considerata la scarsissima differenza di qualità sonora tra formato .wav e mp3. Sottolineiamo un altro vantaggio di questa tecnica. Essa è adatta allo streaming, ovvero alla riproduzione anche prima che il file venga completamente scaricato sulla macchina. Si comincia a sentir musica man mano che il brano è trasferito da Internet sul disco locale. Per completare questo paragrafo sui segnali audio, vogliamo far notare che anche per quanto riguarda il sonoro esistono rappresentazioni vettoriali. Si tratta dei file .mid. Invece di registrare in forma campionata e quantizzata i segnali acustici, in un file .mid sono registrate istruzioni in un particolare linguaggio che può istruire un sintetizzatore elettronico presente sulle schede audio moderne in grado di riprodurre musica. In pratica è come se registrassimo lo spartito del brano ed il sintetizzatore si occupa della riproduzione. La qualità è scarsa, perché il suono è percepibilmente di origine elettronica, quindi non paragonabile assolutamente all’armonia degli strumenti musicali, però è enorme il risparmio di memoria. Per questo il formato .mid ha comunque avuto successo in Internet. Il videoLa possibilità di fare uso del video è uno dei grandi cavalli di battaglia della multimedialità. Con l’introduzione del video nel personal computer, l’informatica sembra infatti lanciare una colossale sfida al cinema e alla televisione. La maggior parte dei prodotti multimediali in commercio contiene filmati, e anche Internet trabocca di video. Tuttavia, fra tutti gli elementi della multimedialità, il video è quello che più mette alla prova la potenza del computer. I lettori abituali di opere multimediali avranno notato alcune caratteristiche costanti dei filmati contenuti in questi prodotti: primo, le dimensioni del riquadro in cui scorre il video sono piuttosto piccole: secondo, i filmati sono piuttosto brevi: terzo, la qualità delle loro immagini e la fluidità del movimento lasciano a desiderare se le confrontiamo con i filmati televisivi. Nei migliori prodotti multimediali, alcune di queste caratteristiche vengono trasformate in virtù: le dimensioni ridotte latino apparire il video come uno degli elementi di un ambiente più ricco e complesso, e la brevità dei filmati enfatizza le caratteristiche interattive dell’ambiente. impedendo che il lettore si lasci trascinare in una fruizione passiva e interamente preconfezionata. Ma i filmati multimediali non sono piccoli e brevi soltanto per ragioni stilistiche. La ragione principale è anzi prettamente tecnica: su un computer multimediale configurato secondo gli standard odierni, e senza l’aggiunta di ulteriori componenti hardware, non è possibile ottenere video di alta qualità.  I problemi del video digitaleNella nostra cultura i veicoli principali di diffusione dei filmati sono la televisione e il cinema, due media tradizionalmente analogici. Il supporto di memorizzazione usato dal cinema è la pellicola, che consente una qualità dell’immagine estremamente elevata: la televisione usa tradizionalmente nastri magnetici. Nonostante questa differenza nei supporti, la tecnica di base è la stessa fin dallinvenzione dei fratelli Lumière: quello che il nostro cervello percepisce come un movimento continuo è dato dal rapido succedersi, di fronte ai nostri occhi, di immagini leggermente diverse fra loro. Queste immagini si chiamano fotogrammi in italiano e frame in inglese. Una delle caratteristiche che differenziano fra di loro il cinema e i diversi standard televisivi è la frequenza dei fotogrammi (frame rate). Il cinema lavora normalmente a 24 fotogrammi al secondo: alcuni standard cinematografici di livello inferiore (come il “super-8”, utilizzato per i filmini domestici fino a una quindicina di anni fa) utilizzavano 18 fotogrammi al secondo, ed erano infatti caratterizzati da un movimento non perfettamente fluido. Lo standard televisivo PAL, utilizzato in Italia e nella maggior parte dell’Europa, prescrive 25 fotogrammi al secondo, mentre lo standard statunitense NTSC ne prevede addirittura 30. In generale, per ottenere un movimento veramente fluido, un filmato dovrebbe girare a un frame rate di almeno 24 fotogrammi al secondo. Quando in ambito informatico si parla di video ci si riferisce alla gestione di filmati veri e propri composti da sequenze di fotogrammi. Ciascun fotogramma è salvato nella sequenza sono forma di un immagine bitmap. La riproduzione del video è più delicata rispetto a quella di altri elementi del multimedia perché richiede un’elaborazione in tempo reale di sequenze di immagini, ciascuna delle quali può essere diversa dalla precedente. Questa elaborazione richiede tempo. Se in un’opera multimediale si verificano ritardi di poche frazioni di secondo nella visualizzazione di immagini fisse, questo ritardo non compromette in modo rilevante la fruizione del prodotto: un analogo ritardo nella visualizzazione di un fotogramma video può invece compromettere completamente la fluidità dei movimenti. Per raggiungere la qualità di un fotogramma televisivo, ciascuna bitmap della sequenza dovrebbe avere una risoluzione di 768 × 576 pixel e una profondità cromatica di 24 bit per pixel (cioè, il colore di ciascun pixel dovrebbe essere rappresentato con un codice di 24 bit). Un’immagine con queste caratteristiche, non compressa, occupa circa 1.3 Mb. Moltiplicate questo numero per 25 e scoprirete che un solo secondo di video immagazzinato sul disco fisso occuperebbe 32.4 megabyte! A queste condizioni, un intero CD-ROM potrebbe contenere appena 20 secondi di video. Supponiamo ora che qualcuno sia tanto folle da realizzare un video di 20 secondi sii CD-ROM secondo questi criteri. Per poterlo riprodurre fedelmente, avremmo bisogno di un lettore in grado di trasferire 32,4 Mb di dati al secondo all’unità centrale dell’elaboratore. La velocità di trasferimento (transfer rate) di un lettore CD-ROM 8x è di appena 1.200 Kb al secondo (cioè meno di 1 Mb al secondo). Nessuno potrebbe quindi godersi il filmato. Pertanto per poter vedere un video al computer è necessario ridurre l’ingombro del video stesso. Per farlo si può agire contemporaneamente su diversi fattori. Prima di tutto, è ragionevole ridurre le dimensioni dei singoli fotogrammi, per questo i video multimediali girano generalmente in un riquadro che misura al massimo 320 × 240 pixel. In secondo luogo si può ridurre la profondità cromatica dei fotogrammi: nella maggior parte dei casi una profondità di 8 bit (immagini a 256 colori) consente di ottenere risultati dignitosi. In terzo luogo si può ridurre la frante rate fino a circa 15 fotogrammi al secondo: da questa riduzione deriva una fluidità dei movimenti inferiore a quella cinematografica e televisiva. Queste strategie riducono notevolmente l’ingombro del video, ma non sono ancora sufficienti. In aggiunta a esse si ricorre alle cosiddette tecniche di compressione. Queste tecniche consentono di ridurre lingombro di un filmato fino al 95%: in questo caso si dirà che il tasso di compressione di quel filmato è del 95%. Purtroppo applicando la compressione si riduce ulteriormente la qualità delle immagini, che appariranno pin sgranate di quelle originali. Formati del video digitaleCome avviene per tutti gli altri elementi del multimedia, un filmato viene salvato all’interno di un file secondo un formato che deve essere riconosciuto dal computer su cui avverrà la riproduzione. Sui computer odierni esistono due importanti standard per la digitalizzazione del video: Video for Windows di Microsoft e QuickTime di Apple. Il primo funziona solo su computer Windows, e usa file con estensione AVI. I filmati realizzati secondo lo standard QuickTime possono invece funzionare sia in Macintosh che in Windows: la loro estensione in Windows è MOV. Entrambi i formati supportano svariate tecniche di compressione. Dal punto di vista dell’utente finale non esistono differenze sostanziali fra questi standard. Un file video contiene la sequenza dei fotogrammi che compongono il filmato, due tracce audio sincronizzate con i fotogrammi, e una serie di istruzioni sulla riproduzione (per esempio, la quantità di fotogrammi al secondo). Un computer multimediale con la configurazione che abbiamo descritto nelle lezioni precedenti è perfettamente in grado di riprodurre il video. Se però ci si vuole cimentarsi nella produzione di filmati si ha bisogno di qualcosa in più. Per poter digitalizzare il contenuto di una vecchia videocassetta si ha bisogno di una scheda di acquisizione video. Grazie a essa si cattura il segnale televisivo e convertirlo in un file. In alternativa si può acquistare una telecamera digitale, che permetterà di registrare direttamente le riprese su file, senza passare per il videoregistratore. Bisogna inoltre di procurarsi un programma con cui effettuare il montaggio dei filmati (il più famoso e potente è Adobe Premiere). Questi programmi mettono a disposizione sullo schermo una vera e propria centralina di montaggio, con hi possibilità di importare immagini e suoni e di introdurre una grande quantità di effetti speciali.  Qual è, allora, il vantaggio della digitalizzazione? Prima di tutto va ricordato che il computer è progettato per lavorare in digitale e quindi tutti i dati che esso legge e scrive devono essere convertiti in questa forma. Naturalmente non tutto passa per un computer. Per ascoltare musica, per esempio, utilizziamo un impianto stereo e dei dischi. In teoria, si dovrebbe avere una qualità migliore sui vecchi dischi in vinile, che sono stampati in formato analogico e, in effetti, teoricamente, dal punto di vista della qualità, ciò è vero. Esiste però il problema dei rumori, dei segnali non desiderati (come il fruscio di fondo, tipico di nastri e LP). Gestire un segnale in analogico richiede una precisione estrema, sia per il sistema di registrazione, sia per quello di riproduzione; ciò comporta costi e complessità molto più elevati per i circuiti elettronici (è questa la principale differenza tra registratori amatoriali e professionali). Memorizzare invece un segnale digitale equivale in sostanza a scrivere una lunga serie di 0 e 1, molto più facilmente distinguibili: qualora dovessero comparire segnali di disturbo, essi verrebbero tranquillamente ignorati dal sistema, poiché difficilmente sarebbero nello stesso formato del dato scritto; ad esempio, se registriamo in formato digitale su un nastro magnetico, la successiva lettura potrà produrre dei rumori (dovuti magari anche allo sfregamento del nastro stesso contro la testina del riproduttore), che però saranno ignorati, non essendo in formato digitale. Compressione dei datiSi parla parecchio, ormai, di compressione dei dati. La troviamo nei formati rivoluzionari come MP3, è ormai un concetto comune per chi usa utility come WinZip ed emerge continuamente ogni volta che si parla di trasmissione dei dati. Ci hanno detto un sacco di volte che la compressione di un file porta a ridurne la dimensione ma, alla fine, i byte mancanti dove vanno a finire? Siamo sicuri di non aver perso nulla? La compressione non ha nulla di magico: si tratta di algoritmi abbastanza semplici e consolidati che fanno parte del bagaglio culturale dei programmatori ormai da parecchi anni. Il primo che iniziò a parlare di compressione dei dati fu Claude Shannon dei Bell Laboratories negli anni Quaranta. Compressione dei dati vuol dire ridurre lo spazio che le informazioni occupano, senza per questo rinunciare al contenuto che trasmettono. La possibilità di comprimere le informazioni si basa essenzialmente sul fatto che spesso queste sono ridondanti, contengono informazioni ripetute, spazi inutilizzati oppure elementi non significativi. Qualcosa di analogo ai prodotti sottovuoto, dove viene eliminato lo spazio occupato dall’aria, senza per questo alterare in alcun modo il contenuto. Possiamo, inizialmente, distinguere tra due tipi di compressione: senza perdita di dati e con perdita di dati.  Compressione senza perdita di datiQuando trasferiamo attraverso Internet documenti, programmi, dati di una certa importanza, e utilizziamo una compressione per ridurre i tempi di connessione, desideriamo sempre trasmettere tutte le informazioni senza perderne neanche un pezzetto, in modo che, mediante una opportuna decompressione, si possa ottenere esattamente il contenuto originario (sia esso un file, una immagine, un suono, ecc.). È la compressione che tutti conosciamo attraverso i famosi formati ZIP, ARJ e così via. È di estremo interesse in quanto non intacca il contenuto, quindi può diventare totalmente trasparente per l’utente. L’idea che sia possibile comprimere i dati si basa sulla nozione di entropia, mutuata dalla termodinamica e applicata all’informatica. Diciamo che un insieme di dati (cioè, ai fini pratici, un file) possiede una maggiore o minore entropia a seconda della quantità di informazioni che contiene. Certo, detto così non è di grande aiuto. È più facile comprendere con un esempio. Date le due sequenze di caratteri:  AAAAAAAAAAABBBBBBBBBBBBBBB ABCDEFGHIJKLMNOPQRSTUVWXYZ  è abbastanza intuitivo vedere che la seconda sequenza contiene maggiori informazioni rispetto alla prima (e quindi, secondo il discorso precedente, possiede una entropia maggiore). Nello stesso spazio, infatti, sono contenuti molti più simboli, con una variabilità maggiore. Mentre la prima sequenza è estremamente ridondante (solo due simboli ripetuti molte volte) è difficile trovare un modo per “riassumere” la seconda sequenza. L’idea alla base della compressione senza perdita di dati è che, minore è l’entropia e minore può risultare lo spazio occupato (ottenendo, quindi, una maggiore compressione). La prima sequenza di caratteri potrebbe, infatti, essere scritta anche come:  11A+15B  occupando uno spazio più ridotto, ma senza per questo perdere informazione. La compressione che sfrutta questa tecnica prende il nome di Run-Length Encoding. Analogamente alla precedente, potremmo compiere un’analisi più approfondita sulla sequenza di caratteri per trovare dei “pattern” o delle forme comuni che si ripetono. Se, per esempio, abbiamo la sequenza ABBABBABBABB è facile vedere che potrebbe essere riscritta come 4ABB. Questo tipo di compressione si chiama LZW, dalle iniziali dei ricercatori che hanno avuto l’idea. Brevettato nel 1985 dalla Sperry Corp., (diventata in seguito Unisys Corp.) il metodo LZW viene utilizzato dal formato di immagine GIF e dallo standard V.42bis per i modem.  Compressione con perdita di datiIn molti casi, specialmente quando si ha a che fare con informazioni digitalizzate (per esempio fotografie o file audio) potrebbe essere conveniente rinunciare a qualche piccolo dettaglio insignificante per guadagnare in comprimibilità. Se, infatti, in una fotografia possiamo eliminare piccole sfumature (che comunque rappresentano informazione) riusciamo in questo modo a ridurre l’entropia dell’immagine. A questo punto i metodi di compressione senza perdita di dati visti in precedenza possono essere applicati con maggiore efficacia. Quindi in realtà la compressione con perdita di dati usa gli stessi algoritmi di quella senza perdita di dati; la differenza sta nel fatto che li fa precedere da un procedimento di “semplificazione” dell’informazione. Ritroviamo questo tipo di compressione nel formato di immagine JPEG che, come è noto, viene consigliato soprattutto per immagini fotografiche. Tutti i formati MPEG funzionano secondo questo procedimento. Consentono di ridurre l’entropia eliminando informazioni non importanti. Facciamo un esempio. Quando ascoltiamo un brano audio, il nostro cervello opera da filtro su alcune informazioni che non ritiene rilevanti. In presenza di un segnale forte, per esempio, i segnali molto più deboli tendono a non essere percepiti. L’idea è allora di eliminare all’origine questi segnali, riducendo in tal modo le informazioni contenute nel file. Possono essere filtrate analogamente le frequenze non udibili o comunque poco significative. Elemento importante in questo caso è che si può accedere a livelli diversi di compressione. Se si accetta di rinunciare alla qualità, si può guadagnare sulla dimensione. Più sono i dettagli sacrificati, minore sarà la qualità dell’informazione finale e più piccolo sarà il file corrispondente.  Compressione frattaleUno dei campi più promettenti per la ricerca di nuovi standard di compressione è dato dagli algoritmi frattali. Senza entrare nei dettagli tecnici, si tratta di procedure che ricercano all’interno del file (per esempio una immagine) delle ricorrenze in modo analogo al metodo LZW. Solo che in questo caso gli elementi ripetuti non devono essere necessariamente identici, ma è sufficiente che siano “affini”. Siano cioè ottenibili attraverso trasformazioni elementari della forma originaria come, per esempio, la rotazione. In modo analogo a quello che avviene nelle immagini frattali – in cui si nota una “somiglianza” delle varie parti – questo metodo di compressione cerca di ricondurre l’informazione a pochi “mattoni” di base e alla combinazione delle loro trasformazioni.  Pro e controMa se la compressione è così efficace, perché non usarla dappertutto? Perché non avere come standard una base compressa, come si usava sugli hard disk di qualche anno fa per aumentarne la capacità? La verità è che bisogna evitare di abusarne, perché genera assuefazione. Il fatto è che una informazione può essere compressa senza perdita di dati solamente quando contiene ridondanze eliminabili. Una volta eliminate, non si può eliminarle una seconda volta. Il che vuol dire che un file compresso non può essere compresso di nuovo, o almeno non si avrà un grande beneficio in termini di dimensione. È un problema analogo alle offerte speciali sugli acquisti: non sono mai cumulabili! Se si fa largo uso di compressione, in modo trasparente, si tende a dimenticarsene incappando a spiacevoli sorprese. Chi infatti usa dischi compressi o, come a volte si diceva, “stackerizzati”, e vuole salvare sul proprio disco file di WinZip, faccia bene attenzione alle dimensioni perché i file “zippati” non verranno ridotti granché. Quindi i valori medi dichiarati di guadagno di spazio su disco non verranno rispettati. Per fare un esempio, un disco da 100 MByte che, stackerizzato, viene dichiarato da 200 MByte, in realtà non guadagnerà molto rispetto alla capacità originaria se viene riempito di file ZIP. Inoltre la ridondanza delle informazioni non sempre è un nemico da combattere. Nelle trasmissioni di dati è un valido aiuto contro i disturbi: per sapere se sono avvenuti errori di trasmissione occorre inserire informazioni supplementari di controllo (che non aggiungono contenuto e quindi riducono l’entropia). È più facile che si rovini un file ZIP piuttosto che uno non compresso. Powered By GSpeech