Loading
Note di Apprendimento
Study Reminders
Support
Text Version

Intensità Mappatura

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Ciao e benvenuti alla lezione numero 16 del corso Computer Graphics, stiamo attualmente discutendo le diverse fasi di pipeline, pipeline significa come il rendering di un'immagine 2D su uno schermo del computer avvenga attraverso il processo di Computer Graphics.
Ora, come sappiamo, ci sono cinque tappe; abbiamo già discusso le prime due tappe, ovvero la rappresentazione degli oggetti, e i trasformatori di Modeling. Attualmente stiamo discutendo Lighting o la terza tappa e dopo di questo saremo lasciati con altre due tappe per discutere della quarta fase di Viewing pipeline e della conversione della quinta fase di scansione.
Nella terza fase Lighting ci occupiamo di assegnare colori ai punti di superficie, la superficie di un oggetto. Ora, nella precedente coppia di lezioni, abbiamo appreso del processo di colorazione che è, abbiamo appreso di un semplice modello di Lighting, e abbiamo anche imparato sui modelli di Shading. Per ricapitolare, il modello Lighting è una complessa espressione matematica per il compimento del colore in un determinato punto e fa uso di vari componenti di luci che ci sono quando proviamo a vedere un oggetto colorato.
Ora, questi componenti sono luce ambientale, riflessione diffusa a causa della sorgente luminosa diretta e della riflessione speculare dovuta alla fonte di luce diretta. E per ognuno di questi abbiamo imparato modelli e questi modelli a loro volta fanno uso dei vettori, dei vettori normali di superficie o del vettore di visualizzazione e del vettore verso la sorgente luminosa, tutti questi vettori sono utilizzati per calcolare questi componenti. E alla fine riassumiamo questi tre contributi componenti per ottenere i valori di colore complessivi che si esprimono in termini di intensità.
Ora, questo modello Lighting è complesso e coinvolge lotti di operazioni. Quindi, essenzialmente ci vuole tempo per ridurre il tempo di calcolo; abbiamo imparato sui modelli di Shading, dove non compaiamo i valori del colore usando il modello Lighting ad ogni e ogni punto, invece calcoliamo i valori a un numero molto ridotto di punti, magari un singolo punto su una superficie e usiamo tecniche di interpolazione per assegnare colori ad altri punti.
Ora, questa tecnica di interpolazione è molto più semplice rispetto ai calcoli del modello Lighting. Ora, queste due tecniche per assegnare i colori sono discusse nelle lezioni precedenti. Ancora una cosa resta quella di come mappiamo i valori di intensità computati usando il modello Lighting o usando i modelli di Shading a un po' di sequenza, una sequenza di 0 e 1 che il computer capisce che sarà l'oggetto della discussione di oggi, Intensity Mapping. Questo è il terzo componente di assegnazione del colore ad una superficie oggetto.
Ora, quando parliamo di Intensità Mapping, a cosa ci riferiamo? Ci riferiamo a un processo di mappatura, che cosa mappe? Esso assota il valore di intensità che abbiamo calcolato utilizzando l'Lighting o il modello di ombreggiatura a un valore che un computer capisce che è una stringa di 0 e 1.
Se potete riscuotere, durante gli esempi di allenamento che abbiamo discusso nelle lezioni precedenti, abbiamo visto il calcolo dei valori di intensità. E quei valori sono numeri reali tipicamente all'interno dell'intervallo da 0 a 1. Ora, questi valori dovrebbero essere utilizzati per guidare il meccanismo per disegnare immagini sullo schermo.
Nelle lezioni introduttive abbiamo toccato l'idea di base di un sistema di grafica. Lì abbiamo accennato che attraverso le fasi di pipeline noi calcoliamo i valori di intensità e questi valori sono utilizzati per guidare in sostanza qualche disposizione elettromeccanica responsabile del rendering o della visualizzazione di un oggetto colorato su uno schermo del computer.
Come esempio, abbiamo brevemente toccato l'idea di display a tubo di raggi catodici. Quindi, se potete riscuotere, ecco cosa abbiamo detto che i display CRT sono costituiti da una disposizione elettromeccanica dove ci sono fasci di elettroni generati che dovrebbero colpire alcune posizioni sullo schermo che rappresentano la griglia di pixel. Ora, questa generazione di fasci di elettroni avviene attraverso una disposizione elettromeccanica costituita da catodi e anodi e campi magnetici.
E questa disposizione elettromeccanica è controllata dai valori che compendiamo alla fine delle fasi della pipeline. Quindi, il nostro obiettivo finale è usare i valori, i valori di intensità e usarli per guidare il meccanismo che in realtà è responsabile di disegnare colori sullo schermo o disegnare immagini sullo schermo.
Come abbiamo già accennato, in un display CRT, questo disegno di foto è fatto da una disposizione di pistole a elettroni, che emette fasci di elettroni, e c'è un meccanismo per deflettere quei fasci a specifiche regioni sullo schermo dove sono presenti i doti di fosforo. E quando il fascio colpisce i doti di fosforo, i doti emettano fotoni con particolare intensità che è intensità luminosa, che ci dà la sensazione di un'immagine colorata su uno schermo.
Ovviamente i display CRT sono ormai obsoleti. Forse non si può sapere di questi display oggigiorno, ma ci sono lezioni da imparare dai display CRT. E alla fine di questo corso, verso la fine, impareremo altri display dove accadono cose simili, dove effettivamente usiamo le intensità calcolate per generare qualche effetto sullo schermo che ci dà una sensazione di colore. E questi valori di intensità computati sono utilizzati per guidare il meccanismo che genera quegli effetti. Parleremo di alcuni meccanismi di visualizzazione alla fine di questo corso, dove avremo lezioni dedicate su Graphic Hardware.
Ora, il punto è, quindi, stiamo dicendo che questi valori di intensità dovrebbero guidare un meccanismo qualche disposizione che a sua volta si occupa di generare l'effetto dell'immagine colorata. Ma se i valori di intensità vengono calcolati come un numero reale in una gamma da 0 a 1, come facciamo a far capire al computer il valore perché i computer non capiscono questi numeri reali capiscono solo i valori digitali, le stringhe binarie di 0 e 1.
Un problema qui è che qualsiasi valore di intensità non può essere rappresentato e utilizzato allo scopo di guidare qualche disposizione per generare l'effetto visivo dell'immagine colorata su uno schermo e abbiamo bisogno di qualche modo per rappresentare i valori di intensità corrispondenti nel computer. Ora, questa presentazione dipende dal frame buffer come abbiamo progettato il frame buffer.
Ed è quello che chiamiamo il Problema di Mappatura. Qual è questo problema?
Supponiamo, cerchiamo di capirlo in termini di esempio, supponiamo, abbiamo un sistema di grafica che ha un frame buffer dove ci sono 8 per ogni posizione di pixel che significa, 8 sono lì per memorizzare valori di intensità per ogni pixel. Ora, con 8 di bit, quanti colori possiamo rappresentare che sono 2 ai valori di potenza 8 o 256, significa che per ogni posizione di pixel possiamo assegnare qualsiasi valore a 256 come valore di colore. Quindi, per quel particolare dispositivo grafico possiamo dire che qualsiasi pixel può assumere al massimo 256 valori di colore.
D'altra parte, quando calcoliamo i colori dei pixel, non esiste una tale restrizione, possiamo calcolare qualsiasi valore, qualsiasi numero compreso tra 0 a 1. Quindi, questo è essenzialmente una gamma infinita di valori. Da notare che questo calcolo avviene con l'ausilio di modelli Lighting o Shading. Quindi, da una parte abbiamo valori che possono essere qualsiasi cosa, che otteniamo applicando i modelli Lighting o Shading reali tra 0 a 1.
E d'altra parte grazie al particolare design hardware possiamo rappresentare al massimo un numero ristretto di valori per ogni posizione di pixel, nel nostro esempio sono 256 valori. Quindi, essenzialmente dobbiamo mappare questi valori di intensità potenzialmente infiniti ai valori 256, questo è il problema. Quindi, data la dimensione impostata, la dimensione del numero di valori che possono essere rappresentati in un computer, dobbiamo mappare la gamma potenziale di valori a quei set limitati.
Questo è il nostro problema di mappatura, dove dobbiamo tenere a mente che non possiamo usare alcuna mappatura arbitraria perché questo può portare a una distorsione visibile, la nostra percezione è una cosa molto sensibile e complessa. Se decidiamo arbitrariamente la mappatura, allora potremmo percepire le immagini in modo diverso allora, idealmente quello che avrebbe dovuto essere il caso. Quindi, questa prova di distorsione è un altro obiettivo della nostra mappatura.
Quindi, dobbiamo mappare e dobbiamo mappare in modo tale che questa distorsione non ci sia. Come possiamo raggiungere questo obiettivo? Cerchiamo di capire lo schema attraverso il quale possiamo raggiungere questo obiettivo.
Quindi, questo è lo schema di Mapping.
L'idea di base dietro lo schema è che dobbiamo distribuire i valori calcolati tra i valori supportati di sistema in modo che la distribuzione corrisponda al modo in cui i nostri occhi percepiscono la differenza di intensità. Ecco, questa è un'idea leggermente complessa. Cerchiamo di capirlo in termini di qualche esempio.
Ora, questa idea di core in realtà si affida al nostro comportamento psicologico. Come percepiamo le differenze di intensità facciamo un esempio. Supponiamo che ci siano due serie di valori di intensità. Nel primo set ci sono due intensità 0,1 e 0,11. Quindi, la differenza tra le due intensità è di 10%. Anche nel secondo set ci sono due intensità 0,5 e 0,55, di nuovo qui la differenza è di 10%. Ma, a causa del nostro comportamento psicologico, non saremo in grado di percepire la differenza assoluta tra i valori di intensità, la differenza sembrerà uguale, sebbene i valori assoluti siano diversi.
Quindi, in primo caso abbiamo due valori assoluti, sebbene la differenza relativa tra loro sia di 10%. E nel secondo set abbiamo due valori assoluti che sono diversi rispetto al primo set, ma la differenza relativa è dello stesso 10%.
Se ci viene chiesto di guardare quei due insiemi di valori, non saremo in grado di percepire la differenza tra quei valori a causa del nostro comportamento psicologico, che non percepiamo le differenze assoluti, invece, percepiamo le differenze relative. Se le differenze relative sono uguali, allora non percepiamo alcuna differenza se nonostante le differenze assoluti ci sia.
Quindi, questo è un tratto comportamentale cruciale di noi, non possiamo percepire la differenza assoluta nei valori di intensità solo la differenza relativa. Ora, se è così, allora possiamo utilizzare questa conoscenza per distribuire i valori di intensità tra i valori di intensità supportati dal dispositivo. Come possiamo fare?
Ne consegue dal nostro tratto di comportamento, che se il rapporto di due intensità è lo stesso del rapporto di altre due intensità, allora percepiamo la differenza come lo stesso. Si tratta di un'implicazione del comportamento psicologico che abbiamo appena descritto. E usando questa implicazione, possiamo distribuire le intensità, vediamo come.
Ricordiamo che ci viene data una gamma continua di valori compresi tra 0,0 e 1,0. Ecco, questa è la nostra gamma di valori di intensità computati calcolati utilizzando il modello Lighting o Shading. D'altra parte, il dispositivo supporta una serie di valori discreti, perché il buffer di frame è progettato in quel modo. E noi dovremmo mappare questa gamma continua a quella serie di valori discreti. Questa gamma continua deve essere distribuita nel set finito di valori discreti.
E possiamo farlo senza distorcere l'immagine preservando i rapporti nei valori di intensità successivi, se preserveremo il rapporto nei valori di intensità successivi, poi anche se stiamo approssimando un'intensità calcolata ad un dispositivo supportato intensità, l'immagine risultante non sembrerà distorta e questo deriva dal tratto psicologico appena discusso. Ovvero i nostri occhi non sono progettati per percepire le differenze assolate nelle intensità; invece, solo le differenze relative contano.
Quindi, in base a questo ragionamento, possiamo inventarci un algoritmo di mappatura, un passo dopo passo per mappare un'intensità computata a uno dei dispositivi supportati.
Supponiamo che il dispositivo supporti N valori discreti per ogni pixel e ci faccia denotare questi valori da I0, I1, fino a IN. Quindi, ci sono dovrebbe essere N-1. Così, denotato da I0, I1, fino a IN-1, ci sono N valori discreti.
Ora, possiamo usare un particolare dispositivo chiamato Photometer per determinare i valori limite che sono I0 e IN-1. Ora, significa che conosciamo la gamma di intensità supportate da quel particolare sistema; questa si chiama gamma Dynamic, delimitata da I0 e IN-1.
Ora, il valore più alto che è IN-1 è di solito portato a 1,0 che è una convenzione utilizzata. Quindi, l'intervallo di intensità tra I0 e 1 questa è la gamma [ I0, 1]. Questa è la gamma dinamica. E il valore I0 possiamo ottenere utilizzando il particolare dispositivo chiamato Photometer.
Ora, appliceremo la conoscenza che abbiamo appena discusso che è quella di preservare il rapporto tra intensità successive, dobbiamo garantire il seguente che sia un I1/I0 = I2/I1 ... IN/IN-2 = un rapporto comune r. Quindi, il rapporto dei valori di intensità consecutivi supportati dal dispositivo dovrebbe essere lo stesso.
In altre parole, possiamo esprimere tutti i valori intermedi in termini di valore più basso. Quindi, I1 possiamo rappresentare con questa espressione rI0, I2 analogamente, possiamo esprimere con l'espressione r2I0, I3 ad essere r3I0 e così via.
Così, in generale, possiamo dire che questa equazione trama che è Ik è uguale a rk e I0 dove I0 è l'intensità minima per k> 0. Andare lungo questa linea possiamo dire che IN è uguale a rNI0. Quindi, questa equazione trattiene per qualsiasi valore di intensità supportato dal dispositivo. Ora, qui potete notare che il numero totale di valori di intensità supportati dal dispositivo è rappresentato da N + 1 e IN è il valore di intensità massima, I0 è il valore di intensità minima.
Quindi, allora quello che dobbiamo fare come abbiamo già discusso, abbiamo già stabilito il valore minimo, e suppettiamo che il valore massimo sia di 1. Valore minimo che abbiamo determinato usando un fotometro e ipotizziamo il valore massimo di 1. Poi, usando questa equazione, possiamo determinare il valore di r risolendo l'equazione 1 = rNI0 dove conosciamo il valore di I0 e conosciamo il valore di N dal numero totale di valori di intensità supportati dal dispositivo. Poi utilizzando questo valore di r, che noi compittiamo risolviamo questa equazione, possiamo ottenere i valori di intensità N utilizzando questa equazione per qualsiasi valore di intensità particolare k.
Ora, cerchiamo di capire cosa fare dopo, quello che dovrebbe essere il nostro prossimo passo. Così, nel passo precedente abbiamo calcolato il valore di r conoscendo il valore minimo, il valore massimo e il numero totale di valori di intensità supportati dal dispositivo. Poi in base a quella possiamo calcolare qualsiasi Ik. Ora, supplisce, usando un modello Lighting, abbiamo calcolato un valore di intensità per un pixel da IP. Così, stiamo denotando questo valore di intensità per IP.
Ora, manterremo un tavolo, in tavola, quello che faremo, manterremo i valori di intensità supportati dal dispositivo, che calcoliamo utilizzando l'equazione precedente. Quindi, cioè I0 che otteniamo con il fotometro I1, I2 in questo modo a IN, poi una volta calcola IP, cercheremo di vedere da questa tabella che valore arriva più vicino all'IP. Ovvero, cercheremo di scoprire il valore più vicino che più si avvicina all'IP.
Chiamiamola Ik. Ora, per quel valore, abbiamo già un modello di bit memorizzato qui in questa tabella. Chiamiamola bit modello 0, modello di bit 1, modello bit 2, questo modo bit modello N per i valori di intensità N + 1. Quindi, per il valore dell'intensità del kth nella tabella Ik conosciamo il modello di bit corrispondente. Quindi, allora prendiamo quel modello di bit e lo memorizziamo nel buffer del frame. Ecco, ecco come noi mappiamo il valore calcolato usando un modello Lighting ad un modello di bit che rappresenta un valore supportato dal dispositivo.
Quindi, allora in sintesi quello che facciamo, stabiliamo il valore di N e il valore minimo I0 usando fotometro e ipotizza IN di essere 1,0 che è il valore massimo di 1,0. Poi usando l'equazione IN = rNI0, risolviamo per il valore r. Quindi utilizzando il valore di r calcoliamo i valori di intensità supportati dal dispositivo. Quindi, conosciamo I0, poi calcoliamo I1 per essere r, I0, I2 per essere r2I0 e così via.
E per ognuno di questi valori calcolati, teniamo un po' lo schema. Ecco, questo è il nostro tavolo upto modello per il valore massimo. Poi calcoliamo per un pixel il valore di intensità usando un modello Lighting, mappatelo al valore di intensità supportato dal dispositivo più vicino guardando la tabella e poi usiamo il modello di bit corrispondente per rappresentare quel valore di intensità computato e infine abbiamo memorizzato quel valore nel buffer del frame. È così che mappiamo il valore dell'intensità computata a un modello di bit e lo memorizziamo nella posizione del buffer del frame.
(Riferimento Slide Time: 30:18) Cerchiamo di capire questo intero processo usando un solo esempio.
Suppitiamo, abbiamo un dispositivo di visualizzazione, che supporta un'intensità minima I0 come 0,01 e questo valore di rotta, come abbiamo accennato in precedenza abbiamo scoperto con il dispositivo fotometrico. Come di consueto, ipotizziamo che il valore di intensità massima supportato dal dispositivo sia IN uguale a 1,0.
Ipotizziamo che il dispositivo supporti 8 per ogni posizione di pixel. In altre parole, ha 8 bit per rappresentare il colore di un pixel poi il numero totale di valori di intensità, che possiamo denotare da M per essere N + 1 come discusso precedentemente supportato dal dispositivo per ogni pixel è 28 o 256. Quindi, M=256 che significa N è 255. Quindi, da I0 a I255 sono i valori di intensità che verranno supportati dal dispositivo.
Quindi, questi valori di intensità possiamo denotare con queste notazioni I0, I1, I2 fino a I255. Ora, possiamo impostare questa equazione in base alla relazione che è IN= rNI0. Ora, qui stiamo sostituendo i valori IN, I0 e N per ottenere questa equazione e risolviamo questa equazione per ottenere il valore di r. Quindi, se lo risolvi, otterrete il valore di r.
Quindi, risolviamo questo nostro r = 1,0182 e usando questo valore, otteniamo altri valori di intensità in questo modo, quindi, I1 sarà rI0 che è 0,0102. I2 sarà r2I0, cioè 0,0104 e così via. E creiamo una tabella di questi valori.
In questa tabella abbiamo anche assegnato dei modelli di bit. Quindi, I0 abbiamo assegnato 000, I1 assegniamo questo bit pattern I2 assegniamo questo modello di bit e così via fino a questo modello di bit per l'ultimo valore. Questo è ovviamente una possibile mappatura. Ora, l'assegnazione di un modello di bit può essere arbitraria, davvero non importa perché non ha nulla a che fare con la conservazione del rapporto. Ma il calcolo effettivo di questi valori di intensità è ciò che conta. Questo calcolo viene effettuato in base al principio di conservazione dei rapporti di valori di intensità successivi. Quindi, che l'immagine risultante non sia distorta.
Ora, ipotizziamo di aver calcolato alcuni valori di intensità utilizzando il modello Lighting in una posizione di pixel e quel valore è di 0,1039. Allora, questo è il nostro tavolo e abbiamo calcolato questo valore.
Così, come per l'algoritmo quello che dovremmo fare, cerchiamo di scoprire il valore di intensità più vicino che il supporto dei pixel. Quindi, in questo caso, cioè I2 o 0,104, e il modello di bit corrispondente a I2 è questo. Quindi, immagazziniamo questo modello di bit nella posizione del buffer frame corrispondente.
Quindi, qui potete notare che il valore di intensità finale che abbiamo rappresentato e memorizzato nel buffer frame è diverso dal valore reale che viene calcolato utilizzando il modello Light a causa della mappatura. Quindi, significa che c'è qualche errore, ci sarà sempre qualche errore. Sebbene con la conservazione del rapporto tra intensità successive, possiamo elevare il problema della distorsione visiva nell'immagine risultante. Ancora, ci sono modi per migliorare questa selezione di intensità adeguata che rappresenta un'intensità calcolata.
E ci sono alcune tecniche per farlo, a diverso livello, una è la correzione Gamma, altra è la correzione degli errori per la mappatura dell'intensità attraverso metodi di mezzalazione o dithering. Non andremo però nei dettagli di questi metodi. L'idea di base è che usando questi metodi possiamo effettivamente ridurre l'effetto che nasce a causa dell'introduzione di errori di mappatura, la differenza tra intensità computata e l'intensità che rappresentiamo e immagazziniamo nel buffer del frame. Se siete interessati, potete fare riferimento al materiale che verrà menzionato al termine di questa lezione.
Quindi, in sintesi, quello che possiamo dire è che.
Nella fase tre, ci sono tre ampi concetti che abbiamo coperto, quali sono questi concetti.
Il primo è Lighting model. Ecco, questo è il metodo base che seguiamo per simulare le proprietà ottiche e il comportamento che ci dà la sensazione di colore. Ora, il modello di illuminazione è complesso. Quindi, per evitare complessità, facciamo ricorso ai modelli di Shading. Questo è il secondo concetto che abbiamo imparato. I modelli di ombreggiatura sono essenzialmente un modo per ridurre il calcolo, mentre assegna i colori ai punti di superficie, fa uso dei modelli di illuminazione, ma in modo molto limitato e utilizza l'interpolazione, che sono meno intensi di calcolo per assegnare i colori ai punti di superficie.
Poi il terzo concetto che abbiamo discusso è Intensità Mapping. Quindi, con Lighting o modello di ombreggiatura riusciamo a calcolare il colore come un numero reale all'interno di una gamma da 0 a 1. Quindi, qualsiasi valore può essere calcolato. Tuttavia, un computer non supporta alcun valore, è discreto in natura. Quindi, sono supportati valori essenzialmente discreti di valori di tutti i valori possibili.
Ad esempio, se abbiamo 8 bit frame buffer che significa che ogni posizione di pixel è rappresentata da 8 bit possiamo supportare al massimo 256 valori di intensità per ogni pixel. Un colore pixel può essere uno qualsiasi di questi 256 valori, mentre, stiamo calcolando il colore come qualsiasi valore compreso tra 0 a 1. Quindi, dobbiamo mapparlo, questa mappatura è complessa e introduce una certa quantità di errore. Questo errore può comportare una distorsione.
Tuttavia, per evitare distorsioni, facciamo uso di un aspetto comportamentale psicologico della nostra percezione visiva. Cioè distribuiamo le intensità calcolate o potenziali tra i dispositivi supportati in modo tale che il rapporto delle intensità consecutive rimanga lo stesso.
Se lo facciamo, allora questa distorsione percepita dell'immagine potrebbe essere evitata. Tuttavia, nonostante ciò, introduciamo qualche errore che può influenzare la qualità dell'immagine.
Nella prossima lezione, quello che faremo sarà discutere un altro aspetto importante della terza tappa che è il modello Color. Insieme a quello, impareremo anche la sintesi di Texture, entrambe fanno parte del terzo stato che colorano. Così, finora abbiamo imparato tre concetti e altri due concetti che impareremo nelle successive lezioni.
Qualunque cosa abbiamo discusso oggi si può trovare in questo libro. Potete fare riferimento al capitolo 4, sezione 4,5, per conoscere gli argomenti e anche voi potreste trovare maggiori dettagli sugli argomenti di cui abbiamo parlato, ma non abbiamo discusso nei dettagli, ovvero le tecniche di propagazione degli errori e le tecniche di correzione delle Gamma. Questo è tutto per oggi. Grazie e arrivederci.