Formati grafici

Materie:Appunti
Categoria:Informatica

Voto:

1.5 (2)
Download:124
Data:01.03.2001
Numero di pagine:14
Formato di file:.doc (Microsoft Word)
Download   Anteprima
formati-grafici_1.zip (Dimensione: 70.59 Kb)
readme.txt     59 Bytes
trucheck.it_formati-grafici.doc     437.5 Kb



Testo

DEFINIZIONI:
Un FORMATO GRAFICO è un formato dove i dati grafici sono registrati in un file. I formati hanno lo scopo di organizzare e recuperare i dati grafici in modo efficiente e logico.
Molto importante è il modo in cui il blocco di dati è conservato per determinare la VELOCITA' di lettura, lo SPAZIO che occupa e la SEMPLICITA' d’utilizzo.
I file grafici conservano qualsiasi tipo di dati grafici permanenti
Il RENDERING di un'immagine è la sua realizzazione sul dispositivo di output.
La PIPELINE di produzione di un file grafico consiste nel processo di produzione di un'immagine che parte dall'idea, viene creata su un computer (elaborazione di un'idea), viene salvata in un file di un certo formato grafico ed infine viene visualizzata su un dispositivo di output come la stampante o il monitor (rendering).
Il RASTER indica la trama di righe che il dispositivo traccia per creare immagini sullo schermo. Le immagini raster sono collezioni di pixel organizzate per righe (SCAN LINE).
DATI GRAFICI
I dati grafici sono generalmente divisi in due classi: VETTORIALI e BITMAP
• VETTORIALI : Usati per rappresentare linee, poligoni o curve, e qualsiasi oggetto rappresentabile con linee specificando dei PUNTI CHIAVE (KEY POINT) usati dal programma per ricostruire le linee. Contengono informazioni su attributi (colori, spessore) e un set di regole per il programma di rendering.
• BITMAP : Sono formati da un'insieme di valori numerici che specificano i colori dei singoli PIXEL (picture element) che sono disposti in una griglia regolare secondo uno schema che rappresenta il soggetto da visualizzare. Può essere considerato come un array di pixel anche se si tratta di un array di valori numerici che colorano i pixel sul dispositivo di output.

• OGGETTI : Sono quei dati grafici che si ottengono per mezzo di linguaggi ad oggetti e indicano quei dati conservati insieme con il codice di rendering.

ELEMENTI DEL FILE GRAFICO
Il file grafico è costituito da una sequenza di strutture dati detti ELEMENTI DEL FILE. Tali elementi sono suddivisi in tre categorie: FIELD (campi), TAG (etichette), STREAM (flussi)
• CAMPO : Struttura dati di posizione e dimensione fissa nel file. La locazione del campo è specificata da un punto di riferimento che indica da dove inizia o dove finisce il file.
• TAG : E ' un elemento di posizione e di dimensione variabili. La posizione è indicata come offset che indica l'inizio o la fine del file. Un tag può contenere insiemi di campi ma anche altri tag.
• STREAM : Un file organizzato in stream deve essere trattato in maniera sequenziale. Uno stream è costituito da PACKET di dimensione variabili. L'inizio e la fine di uno stream sono noti, quelli di un packet non lo sono.
In genere i file sono composti di solito da più di uno di questi elementi. File di questo genere vengono chiamati MISTI.
es.
TIFF (campi + tag)
GIF (campi + stream)
- I file a campi fissi sono più facili e veloci in lettura ma poco flessibili.
- Gli stream richiedono meno memoria per i buffer ma sono lenti in lettura.
I PIXEL
I pixel si possono distinguere in pixel FISICI e pixel LOGICI
• PIXEL FISICI: Sono punti visualizzati sul dispositivo di output. E' il più piccolo elemento fisico modificabile indipendentemente dalla superficie del display. L'HD combina più punti di colori diversi per formare un pixel. 2 pixel vicini non possono essere più vicini di un certo valore limite.
• PIXEL LOGICI: Sono punti che indicano una posizione ma non occupano uno spazio. Il mapping (corrispondenza) tra pixel logici nella bitmap e fisici sullo schermo deve tenere conto della dimensione di questi ultimi. Se il video è troppo grosso i pixel si sparpagliano eccessivamente ed un'immagine può perdere di brillantezza.

Il numero di bit che descrivono un pixel determina il numero di colori che esso può assumere.
es. 1bit => 2 colori 24bit => 16 milioni di colori
VISUALIZZAZIONE
Quando il n° di colori del file è minore del numero di quelli visualizzabili allora non si ha alcun problema nella visualizzazione. es. dati da 4 bit e display da 24 bit
Quando invece ci troviamo di fronte al problema inverso è per ottenere la visualizzazione è richiesta una QUANTIZZAZIONE che provoca perdita di dati e quindi cambiamenti nella qualità dell'immagine ma anche eliminazione di disturbi.
PALETTE
Per i dati da 1 bit ci sono soltanto due modi per associare il valore del pixel a colori sullo schermo.
I dati con più bit per pixel presentano un indice in una PALETTE o TAVOLOZZA DI COLORI oppure SCHEMA DI DEFINIZIONE DEI COLORI.
La palette è un array monodimesionale de valori di colori. Ogni colore viene descritto e quindi riconosciuto dall'indice che indica la posizione nell'array.
I dati del file sono indici che fanno riferimento a valori nella tavolozza.

Ogni elemento della tavolozza è definito di solito da 3 o 4 byte quindi la palette è circa 3 o 4 volte più grande del numero massimo di colori realizzabili.
es. palette a 4 bit (4 byte per colore) => 64 byte
La cosa più comune è quella di trovarsi di fronte a dati da 8 bit x pixel (256 colori).
In questo caso 256 colori * 3 byte per colore = 768 byte
Per immagini molto grandi e complesse l'uso di palette ci permette di risparmiare molto spazio.
es. 3 byte x pixel (256 colori) ==>
immagine di 320*200 ==> 192000 byte (192 KB)
Se la stessa immagine disponesse di una tavolozza con 256 colori di 3 byte ciascuno, nel file sarà necessario soltanto 1 byte per pixel per richiamare l'indice a cui è associato il colore.
es. 320*200 con 1 byte per pixel => 64000 byte (64KB)
con l'aggiunta della palette di 256 colori => 768 byte
Tot. ~= 65 KB
Se l’immagine è piccola la palette può risultare non più vantaggiosa.
Immagini con più di 256 colori vengono memorizzate di modo che ogni pixel indichi direttamente il codice del colore. (tavolozze troppo grandi).
COLORI
I colori sono definiti da TRE valori che specificano la quantità (luminosità) dei colori fondamentali detti COLOR CHANNEL. Tali colori sono considerati fondamentali e non scomponibili.
Il colore composto è specificato da un'insieme ordinato di valori.
Ogni colore scomposto viene definito da una serie di numeri che possono essere rappresentati da percentuali (da 0% a 100%) o da valori che vanno da 0 a 255 (più conveniente nella memorizzazione).
Di solito il colore in un'immagine è definito a 24 bit cioè 8 bit per colore il cui valore da 0 a 255
Le palette si possono distinguere in:
• SINGLE CHANNEL : contiene un solo valore per elemento es. ( G ) = ( 223 )
• MULTI CHANNEL: contiene 2 o più valori per ogni colore es. ( R , G , B ) = ( 23 , 22 , 11 )
• PIXEL ORIENTED : conservano i dati come sequenze di bit contigui in ogni elemento dell'array ( tutti in fila ). es. RGBRGBRGB oppure BGRBGRBGR. Le componenti di colori sono disaggregate.
Il n° di elementi di una palette è in genere una potenza del 2 e corrisponde al MAX n° di colori dell'immagine.
Se un'immagine contiene meno colori di quelli rappresentati nella palette, ogni elemento non utilizzato può essere messo a 0 e molti formati (es. TGA ) possono variare a seconda delle esigenze il numero di colori della palette.
Gli elementi di una palette non sono né contigui né ordinati.
Nella grafica i colori sono sempre rappresentati numericamente. I sistemi usati per produrre colori sono in genere di tipo TRICROMATICO (sistema primario a tre colori). I colori composti sono creati mescolando diverse quantità dei tre colori primari. L'insieme di tutti i colori forma la GAMMA
SISTEMI DI COLORI
I sistemi di colori si suddividono in 2 classi :
• ADDITIVI : I colori si creano aggiungendo colori (luminosità) al nero. Più colori si aggiungono più ci si avvicina la bianco. Gli ambienti di colore additivi si dicono SELF-LUMIOUS.
• SOTTRATTIVI : I colori fondamentali sono sottratti al bianco per creare nuovi colori. Più se ne tolgono più ci si avvicina al nero.
I più comuni sistemi di colore sono RGB, CMY, HSV.
• RGB : E' il sistema più usato. E' di tipo additivo e forma colori attraverso la variazione della quantità di ROSSO, VERDE E BLU rappresentata da valori numerici. es. ( 0, 0, 0 ) NERO ( 255, 255, 255 ) BIANCO colori a 24 bit ( n, n, n ) tono di GRIGIO
• CMY : E' sottrattivo, viene utilizzato nella stampa. Sotto la luce ognuno dei tre colori assorbe il suo complementare. Il CIANO assorbe il rosso, il MAGENTA assorbe il verde e il GIALLO il blu. Quando tutti e tre vengono assorbiti otteniamo il colore nero. CMY presenta una variante CMYK nella quale K sta per BLACK. Questo accade soprattutto nella stampa quando il nero ottenuto dalla somma dei tre colori primari spesso si presenta come un grigiastro di scarsa qualità e luminosità. In questo modo il nero viene trattato come un colore primario e quindi il sistema è di 4 colori e viene e spesso con valori percentuali.
• HSV : La sigla indica HUE ( colore , specifica il valore del colore), SATURATION (saturazione, indica la quantità di bianco nel colore ), VALUE ( luminosità, indica la luce emessa dal colore ). Questo modello si può trovare anche nelle seguenti varianti : - HSB ( Hue, Saturation, Brightness ) ; - HLS ( Hue, Luminosity, Saturation ) ; - HSI ( Hue, Saturation, Intensity ) ;
• YUV : E' una trasformazione del RGB dove Y specifica la scala di grigio, U e V corrispondono alle informazioni sul colore.
I colori BIANCO, NERO e GRIGIO sono considerati acromatici.
TRUE COLOR
Il sistema True colour non conserva i colori in un'enorme palette, ma i valori dei pixel possono indicare direttamente il colore.
Ogni valore di pixel ha tre parti es. ( R, G, B ).
Per un'immagine a 32 mila colori tali valori sono considerati in 2 byte scomposti così :
16 bit => ( 1 , 5 , 5 , 5 ) => ( 1 , R , G , B )
dove ogni componente è a 5 bit e può oscillare da 0 a 32.
Per immagini a 64 mila colori i due byte vengono scomposti così :
16 bit => ( 5 , 6 , 5 ) => ( R , G , B )
perché l'occhio umano è più sensibile ai toni di verde.
TRASPARENZA
Le immagini normali sono opache (non trasparenti). Per sovrapporre immagini in modo trasparente è necessario che attraverso un meccanismo venga specificata la trasparenza per una certa zona o per determinati pixel.
Il modo più semplice è aggiungere un bit di OVERLAY per ogni pixel. Se il bit è settato il dispositivo di rendering ignora il valore del colore.
es. pixel da 16 bit ( R , G , B , T ) => ( 5 , 5 , 5 , 1 bit di overlay )
La trasparenza può essere applicata a una sezione, a uno sfondo oppure a un determinato colore.
Un altro meccanismo di overlay permette una trasparenza variabile usando più di un bit di overlay.
es. pixel da 32 bit ( R , G , B , T ) => ( 8 , 8 , 8 , 8 bit di overlay)
Gli 8 bit di overlay permettono di ottenere 256 diversi livelli diversi di trasparenza. Gli 8 bit di overlay indicano il CANALE ALFA.
I FILE BITMAP
I file bitmap possono essere molto diversi nei dettagli da formato a formato ma tutti presentano la stessa struttura generale.
HEADER
L'header rappresenta di solito un insieme di dati binari o ASCII di solito all'inizio del file che contengono informazioni sui dati bitmap.
L'header è formato da:
• Palette: a volte può anche trovarsi nell'header
• Indice bitmap: puntatore ai dati bitmap
• Identificatore del file: o ID value, è un valore numerico o ASCII che viene assegnato dal creatore del formato.
• Versione: Serve per migliorare la gestione del file
• N° di linee per immagine: Informazioni sulla descrizione dell'immagine
• N° di pixel per linea: =
• N° di bit per pixel: =
• N° di piani di colore: =
• Tipo di compressione: è necessario conoscerlo per poter effettuare la decompressione e l'operazione di rendering
• Origine X: Indicano il punto da cui comincia l'immagine
• Origine Y: ( di solito O ( 0 , 0 ) )
• Testo: può contenere il nome dell'immagine, il nome del file, il nome del creatore o quello del software
• Spazio inutilizzato: Non contiene dati ma serve per le informazioni sui dati aggiunte dalle versioni successive del formato.
DATI BITMAP
I dati bitmap di solito si trovano dopo l’ header ma se così non è l' header contiene l'offset dell'inizio dell'immagine.
I dati bitmap sono composti di valori di pixel organizzati SCAN-LINE corrispondenti alle righe che coprono la superficie del dispositivo di output.
Le scan-line formano una griglia bidimensionale e ad ogni pixel viene assegnata una coordinata logica.
Quindi i dati bitmap si possono definire come una sequenza di valori che colorano i pixel sul dispositivo di output dando origine all'immagine.
DATI IN SCAN-LINE:
Ogni scan-line corrisponde ad un'insieme di valori di pixel. Se conosciamo la dimensione di ogni pixel e il numero di pixel per riga possiamo conoscere l'offset di ogni riga.
A volte l'offset corrisponde ad un numero pari di byte.
In un'immagine a 4 bit ogni pixel occupa 1/2 byte. In questo caso possono essere memorizzati 2 pixel per byte, con però, una netta perdita di efficienza.
DATI PLANARI:
La disposizioni di dati grafici in dati planari separa i dati dell'immagine in due o più piani.
Un'immagine con più colori può essere rappresentata con 3 blocchi di dati bitmap, uno per ogni colore.
Tali piani vengono letti uno alla volta, ma a volte può essere costruito anche un pixel alla volta.
ORGANIZZAZIONE DEI DATI BITMAP
I dati bitmap possono essere conservati in tre modi:
• DATI CONTIGUI: Rappresenta il modo più semplice di organizzare i dati. Le righe vengono lette nello stesso modo in cui vengono registrate. Viene creata una scan-line per riga.
• STRIP: Le strip sono costituite da righe continue. Ogni strip contiene più scan-line. A sua volta le strip dividono l'immagine in segmenti più piccoli che vengono letti separatamente. Sono comodi quando i dati sono compressi.
• TILE: Ogni tile descrive una zona rettangolare dell'immagine che possono avere una lunghezza variabile. A vari tile possono essere applicati sistemi di compressione diversi.
FOOTER:
E' simile all' header ed è posto alla fine del file. E' usato quando il formato del file subisce un upgrade (aggiornamento) e non si vuole modificare l' header.
PRO E CONTRO:
Vantaggi:
• Adatti a immagini complesse tratte dal mondo reale.
• Si creano facilmente da un'array di dati di pixel.
• Hanno una struttura di tipo griglia.
• I dati possono essere modificati sia individualmente che a grandi gruppi.
• Si traducono facilmente sui dispositivi di output.
Svantaggi:
• Spesso ingombranti per un'alta definizione e un alto numero di colori.
• Non adatti a riduzioni o ingrandimenti.
FILE VETTORIALI
I file vettoriali contengono la descrizione matematica di uno o più elementi dell'immagine usati dall'applicazione di rendering indipendentemente dal dispositivo.
Tra vettoriali diversi possono esserci differenze enormi.
Tutti i dispositivi di output sono indirizzabili a punti e ciò vuol dire che qualsiasi applicazione può disegnare un'immagine in formato vettoriale sull'output.
I file vettoriali più semplici sono quelli che contengono fogli elettronici (es. formato .XLS).
ORGANIZZAZIONE:
I file vettoriali, come le bitmap, sono composti da una struttura di base che prevede :
- HEADER
- DATI IMMAGINE
- FOOTER
con al possibilità dell'inserimento di una PALETTE.
HEADER:
Contiene informazioni necessarie per l'interpretazione, il numero di indentificatore del formato, la versione ed informazioni sui colori.
Può anche contenere attributi di default che verranno applicati a tutti quegli oggetti che non ne specificano di nuovi.
Il tipo di informazioni dipende dall'immagine. Quelle di base sono le dimensioni, la posizione e il numero di strati dell'immagine.
DATI VETTORIALI:
Seguono l' header e sono composti da ELEMENTI.
Ogni elemento può essere associato alle informazioni di default o contenere informazioni specifiche proprie.
es. CIRCLE , 40 , 100 , 100 , BLUE ; LINE , 200 , 50 , 136 , 227 , BLACK .
A volte gli attributi vengono abbreviati con una sola lettera o omessi, utilizzando quelli di default.
Il codice ASCII è stato in molti file vettoriali sostituito con altri simbolismi che seguono regole implicite rendendo così incomprensibile il codice.
Anche le vettoriali spesso presentano un FOOTER per gli stessi motivi delle bitmap.
PALETTE:
Anche le immagini vettoriali possono avere una palette. Il colore va specificato a livello degli elementi ma i colori vanno definiti in una palette dove ad ogni colore spesso è associata una sequenza di caratteri ASCII.
In alcuni vettoriali è possibile specificare lo spessore del colore.
ATTRIBUTI DEL COLORE:
Gli elementi chiusi possono essere colorati ed il colore di riempimento può essere diverso da quello di contorno.
Un elemento può essere colorato con più colori, ad esempio in modo sfumato attraverso il GRADIENT FILL.
Di tale riempimento è necessario specificare il colore di partenza, quello finale e la direzione di sfumatura.
FOOTER:
Contiene informazioni scritte nel file soltanto dopo i dati grafici (es. il numero degli oggetti) oppure viene utilizzato soltanto per indicare la fine dei dati dell'immagine.
DIMENSIONI:
Le dimensioni di un file vettoriale dipendono dal numero degli oggetti. Occorre stare attenti a creare meno oggetti che magari risultino più complessi.
Oggetti che si ripetono nell'immagine portano ad un notevole guadagno di spazio perché per le copie basta un puntatore all'oggetto ed agli attributi specifici.
Anche il formato può incidere sulle dimensioni degli oggetti. Anche se i formati vettoriali non supportano compressione è possibile produrre file più piccoli con le stesse informazioni usando un formato binario a discapito della leggibilità dei dati.
PRO E CONTRO:
I file vettoriali sono adatti per contenere immagini composte da linee o oggetti geometrici ma anche per la conservazioni di oggetti 3D.
Importante inoltre e l'adattabilità del fattore di scala, il fatto che siano facilmente modificabili anche per singoli oggetti e che possono brevemente essere trasformate in bitmap.
I vettoriali però non sono adatti per immagini complesse, l'immagine può cambiare a seconda dell'applicazione che la interpreta, ed inoltre vettoriali complessi necessitano di diverso tempo per la ricostruzione.
I META FILE
Sono quei file che possono contenere sia dati vettoriali che dati bitmap. I metafile più semplici assomigliano ai file vettoriali.
Vengono anche usati per trasformare immagini su diverse piattaforme (indipendenza dalla piattaforma).
Caratteristiche:
• Sono molto portabili.
• Forse sono meno ingombranti delle bitmap
• Sono complessi nella trasmissione.
COMPRESSIONE DEI DATI GRAFICI
La compressione riduce la compressione di un blocco di informazioni (dati grafici).
Il COMPRESSORE è un algoritmo che comprime i dati originali mentre il DECOMPRESSORE li ricostruisce ma deve comunque conoscere la tecnica usata dal compressore.
I principali sistemi di compressione sono:
• RLE : Run Lenght Encoding
• LZW : Lempel Ziw Welch
• CCITT : Variante del metodo Hufferman
• DCT ( JPEG ) : Discrete Cosine Trasform
e il PACKING (non considerato come un vero e proprio metodo di compressione)
Nei bitmap vengono compressi solo i dati dell'immagine.
I vettoriali di solito non vengono compressi.
I metafile vengono compressi in modo simile alle bitmap.
TIPI DI COMPRESSIONE
- LOGICA : Sostituzione di simboli con altri più brevi ma con lo
stesso significato.
- FISICA : Traduce un insieme di bit in uno ridotto eliminando la
rinondanza.
- SIMMETRICA : Usa lo stesso algoritmo sia per comprimere sia per
decomprimere.
- ASIMMETRICA : Usa algoritmi differenti per la compressione e la
decompressione.
- ADDITIVA : Costruiscono completamente il loro dizionario da zero.
- NON ADDITIVA : Contengono un dizionario predefinito di stringhe.
- SEMI ADDITIVA : Costruiscono prima il dizionario ( prima passata ),
poi codificano i dati.
- CON PERDITA : Eliminano una parte dei dati dell'immagine
- SENZA PERDITA : Prima e dopo la compressione non si hanno
variazioni sui dati.
PACKING :
E' un metodo di compressione per conservare i dati in byte di memoria contigui.
es. 1 pixel da 4 bit

Il packing presenta un evidente guadagno di spazio ma per i dispositivi che organizzano i dati in un array di byte sono necessarie MASK e SHIFT per ricostruire l'immagine rendendo lenta l'operazione.
RLE :
Il metodo di compressione RLE è supportato da moltissimi formati bitmap. Spesso non ha rapporti di compressione molto buoni ma risulta facile e veloce da applicare.
RLE ci permette di ridurre la dimensione di una stringa formata da caratteri uguali a soli 2 byte dove il primo rappresenta il numero di caratteri mentre il secondo il carattere.
Un packet viene generato ad ogni cambiamento di carattere.
La scansione dell'immagine avviene a partire da margine in alto a sinistra fino a quello in basso a destra ma alcune varianti ci permettono di modificare l'ordine della scansione.
SCHEMI DI RLE
L'algoritmo RLE può lavorare su tre diversi livelli:
• A LIVELLO DI BIT : Vengono codificate sequenze di bit uguali. Risulta efficiente per immagini monocromatiche ( 1 bit ). Possono essere contenuti fino a 128 bit in un byte. ( 7 bit per il RUN 1 per il COLORE ).
• A LIVELLO DI BYTE : Vengono codificate sequenze di byte uguali in un packet di 2 byte ( 7 bit del primo byte per il RUN, 8° per specificare se è codificato, 8 bit del secondo per specificare il colore ).
• A LIVELLO DI PIXEL : Si applica quando un pixel occupa più di un byte. Un RUN di tre dati per pixel è codificato in un packet di 4 byte con un byte per il RUN.

LZW :
E' un metodo molto comune senza perdita di informazioni usato anche dalle GIF e dalle TIFF.
LZW è considerato un algoritmo di sostituzione o a DIZIONARIO.
Viene infatti definito un dizionario di dati. I dati grafici vengono identificati e ricercati nel dizionario, se non li trova viene costruito il codice di quel pattern ed aggiunto nel dizionario. Se il suo codice è già presente nel dizionario, viene direttamente scritto sull'output.
Analoga è la decompressione nella quale viene ricostruito il dizionario.
Il vantaggio è che non è necessario il dizionario per la codifica.
L'LZW inizializza i primi 256 elementi nel dizionario con i codici ASCII ed i codici successivi vengono codificati a partire da questi.
CCITT :
Il metodo di compressione CCITT viene usato per la trasmissione di FAX e immagini in bianco e nero su linee telefoniche. (poco importante, non vale un approfondimento).
JPEG :
Non è un algoritmo, ma un'insieme di metodi che permette di ottenere immagini piccole e di scarsa qualità oppure di alta qualità ma molto ingombranti.
E' particolarmente indicato per immagini fotografiche prese da l mondo reale.
Per controllare la qualità di compressione viene usato un parametro specifico: il FATTORE Q che può variare da 0 a 100. (L'ideale è comprimere a partire dal fattore Q uguale a 75 valutando poi la qualità dell'immagine).
La compressione JPEG :
• Non è indicata per immagini con sfondo semplice.
• L'implementazione software è piuttosto lenta.
• Non è facile da implementare.
• Non è supportata da molti formati.
Il metodi JPEG utilizza il metodo di compressione DCT il quale funziona bene con immagini a tono continuo (sfumate) dove la differenze tra pixel contigui sono piccole.
DCT :
Con il metodo DCT l'immagine viene divisa in blocchi di più pixel (consuetamente blocchi 8x8).
Per ogni blocco viene calcolato il colore con valore medio rispetto a quelli del blocco DC e vengono rappresentati nei dati solamente i cambiamenti dal valore del colore DC.
Brizi Marco
1999/2000

Esempio



  



Come usare