Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 Sommario • Codifica binaria dell‟informazione • Codifica dei caratteri – Codice ASCII – Codice UNICODE • Codifica di dati multimediali – immagini – filmati – suoni • Multipli del Byte • Esercizi 22/03/2012 2 Codifica delle informazioni Cosa abbiamo visto Sistema di numerazione binario Codifica dei numeri (interi, reali) Cosa vedremo – Codifica dei caratteri – Codifica delle immagini – Codifica dei suoni 3 Codifica binaria dell’informazione • Il calcolatore può elaborare informazioni, riferite a diverse tipologie di oggetti ( numeri, caratteri, immagini,ecc.) solo se queste sono rappresentate in codice binario. • Esigenza: assegnare un codice univoco a tutti gli oggetti compresi in un insieme predefinito. . 4 Codifica binaria dell’informazione • Quanti oggetti diversi posso codificare con parole binarie composte da k bit? – 1 bit: 21 = 2 stati (0, 1) 2 oggetti – 2 bit: 22 = 4 stati (00, 01, 10, 11) 4 oggetti – 3 bit: 23 = 8 stati (000, 001, 010, 011, 100, 101, 110, 111) 8 oggetti –… – k bit: 2k stati 2k oggetti 5 Codifica binaria dell’informazione • Se passiamo da una parola binaria di k bit ad una parola di k+1 bit si raddoppia il numero di oggetti che si possono rappresentare (2k+1). 6 Codifica binaria dell’informazione • Quanti bit mi servono per codificare N oggetti: –N 2k k log2 N k = log2 N • Ipotesi implicita: le parole di un codice hanno tutte la stessa lunghezza. 7 Definire un codice Identificare due insiemi: • Insieme delle configurazioni ammissibili; • Insieme degli oggetti da rappresentare. Associare gli elementi dei due insiemi 8 Esempio Associare una codifica binaria ai giorni della settimana (LUN, MAR, MER, GIO, VEN, SAB, DOM). • Quanti bit devono avere le parole binarie usate per identificare i giorni della settimana (7 oggetti diversi)? – k = log2 7 = 3 9 Esempio 111 110 101 Insieme delle configurazioni ammissibili 010 001 011 100 000 LUN MAR MER VEN GIO SAB Insieme degli oggetti da codificare 10 DOM Esempio 111 110 101 010 011 001 100 Codice 000 LUN MAR MER VEN GIO SAB 11 DOM Codifica binaria dei caratteri • Quanti sono gli oggetti da rappresentare? – – – – – 26 lettere maiuscole 26 lettere minuscole 10 cifre Circa 30 simboli d‟interpunzione (, ; …) Circa 30 caratteri di controllo (EOF, CR, …) • Totale circa 120 oggetti complessivi k = log2 120 = 7 12 Codifica binaria dei caratteri • Codice ASCII (American Standard Code for Information Interchange) utilizza 7 bit può rappresentare 27 = 128 caratteri detti caratteri ASCII Standard. • Codice ASCII esteso utilizza 8 bit (1 Byte) può rappresentare 28 = 256 caratteri detti caratteri ASCII estesi. – Tale codice comprende i caratteri ASCII standard e alcuni caratteri semigrafici (cornici, lettere nazionali, simboli matematici, ecc.) 13 Codifica binaria dei caratteri • Codice UNICODE utilizza 16 bit (2 Byte) può rappresentare 216 = 65.536 caratteri. – Utile nel caso di alfabeti particolarmente complessi quale quello cinese 15 Codifica di sequenza di caratteri Le sequenze di caratteri permettono di memorizzare: parole e testi. I file di testo contengono parole, spazi bianchi e simboli di interpunzione , ( es. <a capo>) Esempio: codifica della parola informatica in ASCII esteso 01101001, 01101110, 01100110, 01101111, 01110010, 01101101, 01100001, i n f o r m a 01110100, 01101001, 01100011, 01100001 t i c a Conversione in decimale 105, 110, 102, 111, 114, 109, 97, 116, 105, 99, 97 Conversione in esadecimale 69, 6E, 66, 6F, 72, 6D, 61, 74, 69, 63, 61 Rappresentazione di immagini Le immagini non sono formate da sequenze di oggetti ben definiti come le stringhe, quindi prima di memorizzarle è ncessario discretizzarle ovvero trasformarle in un insieme di parti distinte e codificarle (assegnare un codice numerico a ciascun elemento) Discretizzazione: scomposizione dell‟immagine in un reticolo di punti (pixel, picture element) 17 Esempio Per rappresentare la seguente immagine È necessario sovrapporre ad essa una griglia Si identificano i “quadratini” che 18“discretizzano” il disegno Esempio Per rappresentare la seguente immagine È necessario sovrapporre ad essa una griglia Si identificano i “quadratini” che 19“discretizzano” il disegno • Ogni quadratino derivante da tale suddivisione prende il nome di pixel (picture element) e se l‟immagine è in bianco e nero può essere codificato secondo la seguente convenzione: – Il simbolo “0” viene utilizzato per la codifica di un pixel corrispondente ad un quadratino in cui è predominante il bianco – Il simbolo “1” viene utilizzato per la codifica di un pixel corrispondente ad un quadratino in cui è predominanteil nero 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Se riconvertiamo la sequenza di stringhe 0000000000 0011111000 0011100000 0001000000 in immagine otteniamo un‟approssimazione della figura originaria La rappresentazione sarà più fedele all‟aumentare del numero di pixel, ossia al diminuire delle dimensioni dei quadratini della griglia in cui è suddivisa l‟immagine Se riconvertiamo la sequenza di stringhe binarie in immagine otteniamo un‟approssimazione migliore della figura originaria Risoluzione • Chiamiamo risoluzione dell‟immagine la dimensione della griglia utilizzata per discretizzare l‟immagine, ovvero il numero di pixel presenti sullo schermo (colonne x righe) • Risoluzione tipiche sono 640 x 480 1024 x 768 1280 x 1024 • Aumentando la risoluzione (ovvero il numero dei pixel) e quindi diminuendo la dimensione del singolo pixel, la rappresentazione approssima meglio l‟immagine originaria 25 Effetti della riduzione di risoluzione 26 Codifica e Quantizzazione • Dopo aver discretizzato l‟immagine occorre rappresentare ogni pixel con un numero • Tale numero dovrà rappresentare il colore associato al pixel, usando un certo range: si parla di quantizzazione • La rappresentazione ottenuta è nota come codifica bitmap • Nel caso di immagini in bianco e nero (caso già analizzato) senza sfumature è sufficiente 1 bit per ogni pixel: – Il simbolo “0” viene utilizzato per la codifica di un pixel corrispondente ad un quadratino in cui il bianco è predominante – Il simbolo “1” viene utilizzato per la codifica di un pixel corrispondente ad un quadratino in cui il nero è predominante 27 • Assegnando un bit ad ogni pixel è possibile codificare solo immagini in bianco e nero • Per codificare le immagini con diversi livelli di grigio oppure a colori si devono usare più bit per rappresentare un pixel. • Per esempio, – se utilizziamo 4 bit possiamo rappresentare 24 = 16 valori distinti (da associare a livelli di grigio o colori diversi) – se utilizziamo 8 bit ne possiamo distinguere 28 = 256 • In genere il colore viene realizzato componendo i 3 colori fondamentali: Red, Green, Blue (RGB) • Se ad ogni colore si associano 2 bit (con cui si possono ottenere (22)4 sfumature per ciascun colore) si ottengono (26) 64 colori diversi e ogni pixel per essere codificato richiede 6 bit Il numero di bit associato a ogni pixel si chiama profondità cromatica • Se ad ogni colore si associano 8 bit si possono ottenere (28)256 sfumature per ciascun colore che combinate insieme il rosso, 256 per il blu e 256 per il verde che, combinate insieme, danno origine a circa (224) circa 16,8 milioni di colori diversi (precisamente 16777216 colori) e ogni pixel per essere codificato richiede 3 byte. Ad esempio: la sfumatura di celeste nella linea rappresentata è determinata da una certa combinazione di R G B. Le sequenze di bit relative a ogni sfumatura di colore primario sono espresse in base decimale: 139 (R), 210 (G),216 (B). I tre numeri sono ovviamente compresi fra 0 e 255. Ogni sfumatura di colore primario è rappresentabile da 1 byte 13910 => 100010112 21010 => 110100102 21610 => 101001112 • Le immagini codificate pixel per pixel sono dette immagini in grafica bitmap (o raster) – Le immagini bitmap occupano parecchio spazio • Esistono delle tecniche di compressione che permettono di ridurre le dimensioni – Ad esempio, se più punti vicini di un‟immagine assumono lo stesso colore, si può memorizzare la codifica del colore una sola volta e poi ricordare per quante volte deve essere ripetuta • I formati compressi più diffusi sono: GIF, JPEG e PNG Principali formati di compressione per immagini bitmap • TIFF (Tagged Image File Format): uso di tag (etichette) descrittivi, 24 bit/pixel, compressione senza perdita • GIF (Graphics Interchange Format, Compuserve): più immagini nello stesso file, compressione senza perdita • PNG (Portable Network Graphics): compressione lossless, studiato per sostituire GIF (coperto da brevetti). Supporta solo grayscale e RGB. Studiato per trasmissione di immagini su Web • BMP (BitMaP, Microsoft e IBM): 1, 4, 8, 24 bit/pixel, compressione senza perdita (RLE) • JPEG (Joint Photographic Expert Group))(meglio noto come “formato JPEG”) 33 Compressione di immagini • In fase di codifica esiste la necessità di adottare tecniche di compressione per ottimizzare: – Occupazione di spazio di memoria – Velocità di trasmissione attraverso la rete • Tecniche di compressione senza perdita d informazione (lossless) – Reversibili • Ad hoc per le immagini ad es. PNG • Algoritmi con perdita di informazione (lossy) – Generalmente sono specifici di un certo campo e sfruttano le caratteristiche degli oggetti da rappresentare per „eliminare‟ informazione poco importanti – Nel caso di immagini gli algoritmi usati nei formati GIF e JPEG sfruttano la caratteristica dell‟occhio umano di essere poco sensibile a lievi cambiamenti di colore in punti contigui, e quindi eliminano questi lievi cambiamenti “appiattendo” il colore dell‟immagine – Generalmente è possibile specificare quanto siamo disposti a perdere attraverso alcuni parametri 34 La dimensione delle immagini • La risoluzione e la profondità cromatica determinano la dimensione di memoria necessaria a memorizzare un‟immagine. • Esempio: 1024x768 pixel x 8 bit / pixel = (256 toni di grigio / pixel) 768 Kbyte • Esempio di immagine a colori : 1024x768 pixel x 3 componenti / pixel x 256 toni / componente = 1024x768 pixel x 3 componenti / pixel x 8 bit / pixel = 2304 Kbyte 35 Grafica bitmap Le immagini codificate pixel per pixel sono dette immagini in grafica bitmap La grafica bitmap va bene per immagini complesse o irregolari. I formati più conosciuti sono: BITMAP(.bmp), GIF (.gif), JPEG (.jpg) Nelle pagine web si usano principalmente le immagini in formato GIF o JPEG (recentemente anche PNG) GIF (Graphics Interchange Format) JPEG (Joint Phot Grafica vettoriale Se le immagini sono regolari si può usare una codifica di tipo vettoriale in cui non si specificano le informazioni di colore dei singoli pixel ma ogni elemento geometrico primitivo viene specificato individualmente • Le immagini vengono costruite a partire dalla descrizione degli elementi che le compongono mediante un linguaggio testuale o delle formule geometriche (es. SVG) • Spesso occupano meno spazio rispetto alle immagini bitmap Immagini vettoriali • Codifica simbolica di elementi grafici – es.: circle polyline ….. • • • Applicabilità limitata al mondo geometrico (non fotografie) Nessuna perdita di dettaglio ingrandendo o rimpicciolendo l‟immagine Formato principale: SVG (+ un vasto insieme di formati proprietari) – forme geometriche, cioè linee costituite da segmenti di retta e curve e aree delimitate da linee chiuse; 38 Codifica di filmati • Un filmato è una sequenza di immagini statiche (dette fotogrammi o frame) • Per codificare un filmato si “digitalizzano” i suoi fotogrammi • Esempio: – 30 immagini ad alta risoluzione al secondo – 30 imm./sec x 2457600 bit/imm. = 73728000 bit/sec – Un minuto richiederebbe 60 sec x 73728000 = 4.423.680.000 bit (5.529.600 byte) • Esempi di formati per il video: AVI, MOV • Compressione: MPEG (Moving Picture Expert Group), differenza tra fotogrammi Codifica dei suoni • Fisicamente un suono è rappresentabile come un‟onda che descrive la variazione della pressione dell‟aria nel tempo (onda sonora) t • Sull’asse delle ascisse viene rappresentato il tempo e sull’asse delle ordinate la variazione di pressione corrispondente al suono stesso Codifica dei suoni • Le onde sonore sono segnali „continui‟ pertanto per rappresentarli in binario sono necessarie 2 fasi – Discretizzazione del tempo • Campionamento: scelta degli istanti in cui considerare il valore del segnale (discretizzazione) – Discretizzazione delle ampiezze • Quantizzazione: codifica dei campioni con un numero predefinito di bit 41 Codifica dei suoni • Si effettua il campionamento sull‟onda (cioè si misura il valore dell‟onda a intervalli di tempo costanti) e si codificano in forma digitale le informazione estratte da tali misure (campioni) t • • Quanto più frequentemente viene campionato il valore di intensità dell‟onda, tanto più precisa sarà la sua rappresentazione Il numero di campioni raccolti per ogni secondo definisce la frequenza di campionamento che si misura in Hertz (Hz) Campionamento • Si misura l‟ampiezza del segnale analogico a intervalli regolari, ogni T secondi • T è detto periodo di campionamento (in secondi) • F = 1/T è detta frequenza di campionamento (in Hz) 43 Campionamento • Per segnali audio di tipo vocale (ad es. telefono), la frequenza di campionamento è tipicamente di 8 kHz • Per segnali audio musicali (ad es. CD audio), la frequenza di campionamento è tipicamente di 44.1 kHz • Un campionamento più fitto (ovvero con una frequenza di campionamento maggiore) consente di rappresentare i segnali analogici con maggiore fedeltà 44 Quantizzazione • L‟ampiezza dei singoli segnali estratti con il campionamento rappresenta i valori che dobbiamo codificare. • Per poter essere rappresentato da un calcolatore, il valore dell‟ampiezza deve essere espresso tramite un numero finito di bit • La quantizzazione suddivide l‟intervallo dei valori ammissibili in 2k bit, dove k è il numero di bit per campione. • La figura mostra una quantizzazione a 3 bit / campione 100 011 010 001 000 Codifica dei suoni • La sequenza dei valori numerici ottenuti dai campioni può essere facilmente codificata con sequenze di bit •La rappresentazione è tanto più precisa quanto maggiore è il numero di bit utilizzati per codificare l’informazione estratta in fase di campionamento Codifica dei suoni (esempio) Per codificare la musica di qualità dovremmo: – Usare due registrazioni corrispondenti a due microfoni distinti (stereo) – Campionare il segnale musicale producendo 44.100 campioni al secondo (frequenza di campionamento 44.1 kHz) – Codificare ogni campione (che è un numero) con 16 bit – Per cui, il numero di bit che sarebbero necessari per codificare ogni secondo di musica è pari a 2 x 44100 campioni x 16 bit/campione = 1.414.200 bit =1,767 byte Osservazione Per calcolare lo spazio occupato da un file di testo, da un‟immagine, da un file audio, la tecnica è sempre la stessa • Si trova lo spazio occupato da ogni unità elementare costituente il file (un carattere per il testo, un pixel per l‟immagine, un campione per il file audio) • Si trova il numero di unità elementari che costituiscono il file (il numero di caratteri per il testo, il numero di pixel per l‟immagine - sfruttando la risoluzione, il numero di campioni per il file audio - sfruttando la frequenza di campionamento) • Si moltiplicano queste due quantità Unità di misura nel sistema binario I prefissi (Kilo, Mega, ecc.) che normalmente sono associati a potenze di 10, in binario, per i multipli del bit, si riferiscono a potenze di 2. 1MB non corrisponde a 1000KB ma a 1024KB Ordini di grandezza binari In un sistema binario gli ordini di grandezza sono dati dalle potenze di 2 20 21 22 23 24 25 26 27 1, 2, 4, 8, 16, 32, 64, 128, 28 29 256, 512 210 = 1.024 ~ 103 1 Kilobyte 220 = 1.048.576 ~ 106 1 Megabyte 230 = 1.073.741.824 ~ 109 1 Gigabyte 240 = 1.099.511.627.770 ~ 1012 1 Terabyte 250 = 1.125.899.906.842.624 ~ 1015 1 Petabyte Esempio 226 = 26* 220 = 64 M ESERCIZIO •Dato un insieme di 300 simboli; quanti bit si devono utilizzare per rappresentarli tutti? •Quanti byte occupa la frase “esonero di informatica” se la si codifica utilizzando il codice ASCII esteso (8bit)? •Quanti byte occupa la stessa frase scritta in codice UNICODE? •Dati 12 bit per la codifica, quante informazioni distinte si possono rappresentare? 3/22/2012 51 Soluzione • L‟esercizio richiede di trovare il numero di bit che sono necessari per codificare 300 informazioni diverse. • Dobbiamo quindi applicare la formula 2N>=M e ricavare N= log2 M N=9 Soluzione Quanti byte occupa la frase “esonero di informatica?” se la si codifica utilizzando il codice ASCII esteso? Quanti byte occupa la stessa frase scritta in codice UNICODE? Codifica dell‟informazione: soluzione Poichè sappiamo che ogni carattere in codice ASCII esteso occupa un byte dobbiamo contare il numero di caratteri (inclusi gli spazi bianchi) che formano la frase e moltiplicare per 1 23 caratteri =23 byte Poichè ogni carattere in codice UNICODE occupa due byte avremo 23 caratteri 23 x 2 byte = 46 byte Soluzione Dati 12 bit per la codifica, quante informazioni distinte si possono rappresentare? In questo caso conosciamo la lunghezza delle sequenze di bit che sono usate per la codifica dell‟informazione e basterà applicare la formula 2N per trovare il numero di informazioni distinte che si possono rappresentare • 212 = 4096 (1024*4) Esercizi • Quanti byte occupa un‟immagine di 100 x 100 pixel in bianco e nero? • Quanti byte occupa un‟immagine di 100 x 100 pixel a 256 colori? • Se un‟immagine di 16.777.216 byte a colori occupa 2400 byte, da quanti pixel sarà composta? Soluzione • Conoscendo la risoluzione dell‟immagine possiamo trovare il numero di pixel che la compongono: 100x100 = 10.000 pixel. • Inoltre, nel caso di immagini in bianco e nero basta un solo bit per codificare il colore di ogni pixel e quindi saranno necessari 10.000 bit per memorizzare l‟immagine. • Per trovare il numero di byte basta fare 10.000 / 8 = 1250 byte Soluzione Quanti byte occupa un‟immagine di 100x100 pixel a 256 colori? • Rispetto all‟esercizio precedente, in questo caso cambia lo spazio occupato da ciascun pixel. Sappiamo che l‟immagine è a 256 colori. • Per poter rappresentare 256 configurazioni diverse sono necessari 8 bit, ovvero 1 byte • L‟immagine occuperà quindi 10.000 x 1 byte = 10.000 byte Soluzione Se un’immagine a 16,7 milioni di colori occupa 2.400 byte, da quanti pixel sarà composta? In questo caso le informazioni fornite dall‟esercizio sono il numero colori e lo spazio occupato dall‟immagine. Dal numero di colori ricaviamo lo spazio occupato da ciascun pixel, calcolando il valore N nell‟espressione 2N>=16,7 milioni. Il risultato è 24 bit, ovvero 3 byte. Se ogni pixel richiede 3 byte e l‟immagine occupa 2.400 byte, sarà composta da 2400 / 3 = 800 pixel Esercizio • Quanto spazio occupa un suono (non in stereo) della durata di 10 secondi campionato a 100 Hz (ovvero 100 campioni al secondo), in cui ogni campione occupa 4 byte? Soluzione • La frequenza di campionamento ci dice quanti campioni di suono vengono memorizzati in un secondo, in questo caso 100. • Avendo 10 secondi di suono avremo 10 x 100 = 1.000 campioni. • Poiché ogni campione richiede 4 byte, il suono occuperà 1000 x 4 = 4000 byte Esercizio Un secondo di suono campionato a 512 Hz occupa 1KB. Quanti valori distinti si possono avere per i campioni? Soluzione Poichè vengono memorizzati 512 campioni al secondo, avremo in tutto 512 campioni (stiamo considerando un solo secondo di suono). • Visto che il file sonoro di 512 campioni occupa 1 KB, cioè 1024 byte, ogni singolo campione occuperà 1024 / 512 = 2 byte, ovvero 16 bit. • Quindi si potranno quindi a 216 = 65536 valori distinti per i campioni.