Sei sulla pagina 1di 162

TIC - Esercizi esame

r.vincelli@campus.unimib.it

Esercizio 1 - Elaborazione di un set dimmagini critiche

underexposed.jpg

E stata adoperata unimplementazione MATLAB dellalgoritmo di Moroney leggermente modicato: 1. dopo avere portato limmagine in double e convertitala in YCbCr, salvare il canale Y 2. riscalare i valori di Y perch siano eettivamente nel range e [0, 1] 3. calcolare la maschera negando Y ed applicandoci loperatore bilaterale 4. ltrare il canale Y eseguendo Y (i, j)a dove bfmask ` la maschera appena calcolata e a ` un parametro utente e e (nella versione originale ` a = 2, in Schettini et al. ` stimata e e in modo pi` complesso) u 5. riscalare la Y ltrata e ritornare in RGB 6. passare in HSV ed aumentare la saturazione scalando il relativo canale per un parametro utente k
.5bfmask(i,j)/.5

Loperatore gamma (gamma correction) corrisponde alla funzione f (I (i, j)) = cI (i, j) , per c e reali Per c = 1 se = 1 ` ovviamente lidentit`, se < 1 limmagine ` e a e schiarita, se > 1 scurita; per = 1, c < 1 scurisce mentre c > 1 schiarisce, con c = 1 identit` a

Loperatore bilaterale (bilateral lter ) ` unevoluzione e delloperatore gaussiano che permette di sfocare preservando meglio i bordi Lidea ` tenere in considerazione non solo linformazione spaziale e attraverso la distanza tra pixel ma anche quella radiometrica, con le intensit` a Assumendo unimmagine a valori scalari, la formula `: e
i+m j+n

f (I (i, j)) = w
k=im l=jn

Ws (k, l)Wr (I (i, j) I (k, l))I (k, l)

Nella formula: Ws ` il kernel della funzione gaussiana e G (x, y ) =


1 2e 2s
x 2 +y 2 2 2s

, per la componente spaziale e

x2 2 2r

Wr della G (x) = 1

2 2r

per quella dintensit` a

w costante di normalizzazione

moroney(underexposed, 1.25, 2)

gruppocontroluce.jpg

moroney(gruppocontroluce*.9,1.5,1)

indoorash.jpg

Histogram stretching/shrinking : espansione/compressione del range dinamico Formula (immagine valori di grigio): f (I (i, j)) = (I (i, j) lowIn)( hiOut lowOut ) + lowOut hiIn lowIn

ed il risultato ` tale per cui i valori nellimmagine di input e nellintervallo [lowIn, hiIn] sono rimappati nellintervallo [lowOut, hiOut] in quella di output Per correggere limmagine, in cui il volto della bimba ha valori troppo elevati e costituisce lunica area ad elevata luminosit`, a penalizziamo le alte intensit` a

imadjust(indoorflash, [0,1], [0,.8])

ntemodelle.jpg

Una semplice gamma per scurire, imadjust(fintemodelle, [], [], 5)

ritrattoindoor.jpg

Limmagine presenta una forte dominante blu, che cerchiamo di attenuare con una gamma; ritrattoindoor(:,:,3)=imadjust(ritrattoindoor(:,:,3),[],[],3);

summerBBQ.jpg

moroney(summerBBQ, 1.25, 1) (se non fossero presenti artefatti a blocco nero, risultato ottimale si avrebbe con a = 2)

nightshot.jpg

ImageAdjust[nightshot, {0, 2}] (Mathematica, lascia invariato il contrasto ed aggiusta la luminosit` di una quantit` 2) a a

blocchetti.png

Limmagine presenta essenzialmente due problemi: forti artefatti di blocchettizzazione JPEG bande cromatiche orizzontali La prima cosa che viene in mente ` il blurring, ma subito ci e ricordiamo che si rischia di perdere i contorni, trasformando unimmagine molto rumorosa in una poco informativa Osservazione: le bande sono bluastre, e quindi sono contribuite principalmente dal canale blu, e dal verde Idea: ltro bilaterale solo su questi due canali

ColorCombine[RGB[[1]], BilateralFilter[RGB[[2]], 7, .1], BilateralFilter[RGB[[3]], 14, .2]] (Mathematica, ltraggio bilaterali sui canali G e B in diversa misura e ricomposizione)

ritrattooutdoor.jpg

Total variation ltering (TV ltering)

La variazione totale di una funzione ci dice, informalmente, quanto siano diversi i valori che assume in successivi punti del dominio Per unimmagine I di dimensioni mxn un esempio di TV pu` essere o m n 2 + |I (i, j + 1) I (i, j)|2 V (I ) = i=1 j=1 |I (i + 1, j) I (i, j)| Tendenzialmente pi` unimmagine ` rumorosa pi` alto sar` V (I ), e u e u a questo ` vero particolarmente per alcuni tipi di rumore (es. salt e and pepper ) Data unimmagine in input corrotta I una strategia per pulirla ` e minimizzare la funzione f (J) = g (I , J) + V (J)

Nella formula: I ` limmagine input e J la versione restaurata g (I , J) ` una metrica oggettiva di valutazione (es. mean e square error ) (0, 1) ` da ssarsi, concettualmente, direttamente e proporzionale allintensit` del rumore a Quel che chiediamo allimmagine di output, rispetto a quella di input, ` che sia il pi` possibile uguale ad essa ma allo stesso tempo e u abbia la TV minima possibile In letteratura: possibilit` di modellare il rumore, procedure sia a dirette sia iterative

TotalVariationFilter[ritrattooutdoor.jpg, 1, MaxIterations->3] (Mathematica)

Esercizio 2 - Autoritratto creativo

Immagini in gioco: base image - limmagine su cui vogliamo inserire un oggetto overlay/object - loggetto da aggiungere bitmask - maschera che regola come aggiungerlo Struttura dati principale ` la piramide immagine (Burt et Adelson, e 83), composta da due pile di immagini calcolate a partire dallimmagine I di partenza, la pila gaussiana e la laplaciana : G0 = I (base della piramide); Gi = downsample(G(Gi1 , r ), scale) dove G ` loperatore di e blur gaussiano e downsample(I , scale) sottocampiona limmagine di un fattore scale (0, 1) Li = Gi1 G(upsample(Gi , scale)) ossia calcoliamo limmagine dierenza tra un piano gaussiano ed il successivo che, essendo pi` piccolo, devessere sovracampionato u Loperatore G ha lo scopo di attenuare possibili artefatti conseguenti al ricampionamento

rappresenta limmagine I sottoposta a successivi ltraggi passa basso, e contiene il grosso dellinformazione immagine, mentre ` e frutto di successivi passa alto e porta con s` i dettagli, le alte e frequenze ` basata sulloperatore DoG (Dierence of Gaussians) che ` e e unapprossimazione delloperatore laplaciano Perch non usare direttamente il laplaciano quindi? e computazionalmente pi` oneroso u pi` potente e quindi, anche a raggi piccoli, solleva pi` rumore! u u

Algoritmo: 1. costruire le piramidi gaussiane A , B e R rispettivamente per limmagine base, loggetto e la maschera 2. costruire le piramidi laplaciane A , B ed R a partire dalle precedenti 3. per ogni livello k delle piramidi A ed B calcolare avendo R la nuova piramide laplaciana S con la seguente formula: LSk (i, j) = GRk (i, j)LBk (i, j) + (1 GRk (i, j))LAk (i, j) 4. formare il core blending eseguendo CB (i, j) = GRtop (i, j)GBtop (i, j) + (1 GRtop (i, j))GAtop (i, j) 5. assemblare limmagine nale a partire da CB sulla piramide S (pyramid collapsing )

Ricostruzione dellimmagine: dato lultimo livello di cio` Gtop e e ` possibile ricostruire lintera immagine I di partenza, algoritmo: e 1. calcolare im = upsample(Gtop , scale) + Ltop 2. ripetere il punto sostituendo Gtop con im e Ltop con Ltop1 La procedura ricostruisce eettivamente limmagine I di partenza osservando che ad ogni iterazione otteniamo un livello inferiore della piramide gaussiana e per denizione il livello base ` posto ad I e

Circuito dellalgoritmo: + e somma e dierenza dimmagini, ` e loperatore di convoluzione, g il kernel gaussiano, e sottocampionamento e sovracampionamento

Immagine base

Immagine da sovrapporre

Maschera

Funzioni MATLAB: pyramids(im, scale, r) - costruisce e per limmagine im usando come fattore di scala scale e per raggio della gaussiana r lapblend(LA, LB, GR) - calcola la piramide laplaciana combinata S blending(LS, GA0, GB0, GR) - collassa la piramide LS a partire dai livelli gaussiani di cima GA0 e GB0 con la maschera di cima GR laplacianblending(image, overlay, mask, scale, r) - utilizza le tre funzioni precedenti per creare limmagine composta

Risultati

scale=.5, r=1

scale=.25, r=3

scale=.5, r=3

Esercizio 3 - caratterizzazione colorimetrica

Obiettivo: partendo da unimmagine .ti mosaicata (raw camera picture) trasformarla in una sRGB avendo bilanciato il bianco

Descrizione dei dati dingresso

Dati dinput: 1. color chart da bilanciare - patch.png 2. campione di pixel per ognuno dei 24 principali colori in essa quadratini - posizioni.mat 3. riettanza di ogni quadratino - quadratini riflettanze.mat 4. RSPD dellilluminante darrivo - D65 RSPD.mat 5. XYZ CMF - XYZ CMF.mat 6. immagine raw - IMG1295.tiff

La color chart da bilanciare appare basata sulla ColorChecker Color Rendition Chart

Patch dinput

Patch obiettivo

Una tabella colore pu` essere utilizzata per confrontare la fedelt` di o a strumenti di acquisizione rispetto al nostro sistema visivo, oppure per la prolazione di strumenti di riproduzione, tra le altre cose Ogni quadratino colore ` composto da vari pixel ed ovviamente, e pure se in uno stesso, non hanno tutti lo stesso identico colore RGB Non ` quindi ben denito il concetto di pixel per un singolo e quadratino, il riferimento spaziale per ognuno di essi ` una ventina e di coppie (i, j) che scegliamo direttamente dallimmagine attraverso il comando ginput

Unilluminante ` una sorgente di luce visibile e Esso si dice standard se ` teorico, cio` prescinde da una particolare e e illuminazione, ed accompagnato da una distribuzione di potenza spettrale (power spectral distribution - PSD) Una PSD ` la tabulazione del contributo per lunghezza donda in e termini di potenza (= lavoro su unit` di tempo) su unit` di area, in a a pratica quanta energia convoglia lilluminante rispetto ad ogni frequenza considerata La PSD relativa (RPSD) ` la PSD normalizzata rispetto ad un e certo valore; per esempio possiamo volere normalizzare allunit` in a corrispondenza del picco della funzione di luminosit` dell occhio a (scotopica 500nm, fotopica 555nm)

Il D65 ` un illuminante standard CIE (Commission Internationale e de lEclairage); la serie D raccoglie illuminanti pensati per riprodurre condizioni dilluminazioni allaria aperta tipiche di dierenti parti del mondo

RSPD (555100) di tre illuminanti D

Graco di D65 - RSPD.mat (con massimo ad 1); D65 rappresenta lilluminazione in una bella giornata nellEuropa nordoccidentale, a mezzogiorno

Ogni oggetto ` caratterizzabile da una curva di riettanza, che per e ogni lunghezza donda indica in che percentuale lenergia luminosa incidente ` riessa e Se di un oggetto ` nota la riettanza e conosciamo la PSD e dellilluminante che lo colpisce, possiamo calcolare lo stimolo luminoso proveniente dalloggetto rispetto ad ogni lunghezza donda considerata In un contesto semplicato discreto esso ` dato da: e S(l) = L(l)R(l) cio`, molto semplicemente, per una data lunghezza donda l, e quanto arriva con L e quanto ` restituito con R e

Una color matching function ` la descrizione numerica della e risposta dellosservatore standard rispetto ad una componente CIE XYZ Sia x(l) la CMF della componente X; il valore di X per lo stimolo S(l) ` dato, nel caso discreto, da: e
l=lf

S(l)x(l)
l=li

Il percorso delaborazione

Strategia. Date le sue dimensioni ristrette ci ` stato consigliato per e praticit` di sperimentare e bilanciare prima il le patch.png, per a poi passare a modicare limmagine target IMG1295.tiff una volta sicuri Passi: 1. costruire il a partire dai dati colorimetrici dati 2. applicare il risultato ottenuto

Passi - fase 1: 1. calcolo dello stimolo di ogni tinta della tabella colore sotto lilluminante D65 RSPD.mat avendo a disposizione quadratini - riflettanze.mat 2. calcolo delle relative triplette XYZ a partire dagli stimoli appena calcolati e da XYZ CMF.mat 3. Wrong von Kries transform - bilanciamento del bianco direttamente in XYZ senza passare in LMS (spazio dei coni) 4. conversione ad sRGB 5. generazione di una tabella colore per vericare la bont` della a correzione

Il bilanciamento colore prevede lapplicazione della seguente formula X Xw /Xw 0 0 X Y = Y 0 Yw /Yw 0 Z 0 0 Zw /Zw Z dove (Xw , Yw , Zw ) ` il bianco dellilluminante target, (Xw , Yw , Zw ) e il neutro della tabella colore data, stimato a partire da quadratini - posizioni.mat prendendo solo lultima riga, quella dei neutri

sRGB ` uno spazio colore assoluto e quindi il passaggio e XYZsRGB ` standard; esso ` stato fornito nella funzione e e xyz2srgb.m A questo punto abbiamo in mano 24 colori nello spazio sRGB, uno per ogni colore nella tabella data, e ci aspettiamo che dopo il bilanciamento essi siano quanto pi` vicini possibili a quelli della u tabella originale

Confronto tra la color chart di riferimento e quella ottenuta

Passi - fase 2: 1. estrazione dei valori nativi di ogni componente della tabella colore non bilanciata 2. stima ai minimi quadrati lineari attraverso pseudoinversa 3. bilanciamento bianco sulla tabella 4. sua trasformazione da XYZ ad sRGB

Per ogni patch, il suo valore ` media dei valori allinterno di essa e presi dai pixel presenti in quadratini - posizioni.mat Conosciamo, ed abbiamo vericato che ` visivamente e soddisfacente, il valore XYZ bilanciato, ossia corretto sotto lilluminante dato, di ogni quadratino Per ogni tripletta RGB estratta sappiamo quindi a che precisa tripletta XYZ vogliamo farla corrispondere e la trasformazione pi` u semplice `, per il quadratino i: e ki1,1 ki1,2 ki1,3 Ri Xi Yi = ki2,1 ki2,2 ki2,3 Gi Bi Zi ki3,1 ki3,2 ki3,3 Problema: la trasformazione richiede una Ki particolare, come ottenere ununica matrice K con cui correggere agevolmente limmagine a partire dalle matrici K1 , . . . , K24 ? Risposta: minimi quadrati lineari (linear least squares)

Esplicitando la formula di sopra per ogni i ssando kia,b = ka,b ci troviamo davanti ad un sistema lineare sovradeterminato (9 incognite e 72 equazioni) k1,1 r1 + k1,2 g1 + k1,3 b1 = x1 k2,1 r1 + k2,2 g1 + k2,3 b1 = y1 k3,1 r1 + k3,2 g1 + k3,3 b1 = z1 . . . k1,1 r24 + k1,2 g24 + k1,3 b24 = x24 k2,1 r24 + k2,2 g24 + k2,3 b24 = y24 k3,1 r24 + k3,2 g24 + k3,3 b24 = z24 La soluzione che il metodo restituisce minimizza lerrore al quadrato tra i membri di ciascuna equazione, ossia richiede di minimizzare la funzione
24

f (k1,1 , k1,2 , . . . , k3,3 ) =


i=1

(k1,1 ri +k1,2 gi +k1,3 bi xi ) +(k2,1 ri +k2,2 gi +k2,3 bi yi ) +(k3,1 ri +k3,2 gi +k3,3 bi zi )

Un metodo di risoluzione ` il seguente: e in forma matriciale il sistema ` di forma XB = Y dove: e


r1 r2 X= . . . r24 g1 g2 . . . g24 b1 b2 . . . b24 k1,1 B = k1,2 k1,3 k2,1 k2,2 k2,3 k3,1 k3,2 k3,3 x1 x2 Y= . . . x24 y1 y2 . . . y24 z1 z2 . . . z24

soluzione ` B = X+ Y dove e X+ = (XT X)1 XT Y ` la pseudoinversa di Moore-Penrose e

Una volta trovata la matrice di conversione K = B, si ` pronti per e bilanciare limmagine, bisogna semplicemente moltiplicare ogni pixel per essa L idea ` che, avendo fornito ai minimi quadrati un numero e suciente di coppie uniformemente distribuite (colore nativo, colore obiettivo) un qualsiasi colore input ` vicino e ad un certo colore mappato con la K stimata Lultimo passo ` la conversione dellintera immagine da XYZ ad e sRGB

Risultato

Sullimmagine target

La trasformazione dellimmagine IMG1295.tiff si articola in: demosaicatura bilanciamento bianco passaggio ad sRGB Il bilanciamento del bianco si eettua con la matrice B trovata sopra e quindi ` solo la demosaicatura che dobbiamo descrivere e

In una fotocamera linformazione luminosa ` acquisita dalla griglia e dei fotosensori E possibile per ognuno di essi quanticare la luce che lo colpisce, ma ci` d` informazione solo sullintensit` e quindi permette di o a a generare solo unimmagine a livelli di grigio La griglia ` quindi coperta da un mosaico di ltraggio colore (color e lter array, CFA) cui scopo ` far s` che si possa localizzare rispetto e ad una certa lunghezza i fotoni in ingresso

Il CFA dellimmagine, Bayer pattern/RGGB

Ricevuta linformazione ltrata quel che abbiamo ` unimmagine in e cui i pixel hanno eettivamente una sola componente, cio` sono e sul rosso, sul verde o sul blu Il demosaicing ` la procedura con cui assegnamo unintensit` ai e a canali vuoti di ogni pixel, in base allinformazione che abbiamo, per lo stesso canale, nei pixel vicini La procedura consiste in uninterpolazione lineare guidata dal gradiente immagine (gradient-corrected linear interpolation); ne esistono molte varianti (e brevetti!), consideriamo LaRoche et Prescott

Passi: 1. calcolare la luminosit` (brightness) del pixel a 2. interpolazione delle dierenze colore tra R e G, B e G Tipicamente la luminosit` di un pixel RGB ` media delle a e componenti ma ovviamente in questo caso non pu` essere o Se il pixel ` verde, la sua luminosit` ` posta pari al suo valore, e ae altrimenti calcoliamo i coecienti (i, j) = | (i, j) = | G (i 2, j) + G (i + 2, j) G (i, j)| 2 G (i, j 2) + G (i, j + 2) G (i, j)| 2

e rappresentano due indicatori che permettono di stimare se un pixel ` di bordo (da cui il nome dellalgoritmo): e se < allora (i, j) ` una posizione di bordo verticale e se > orizzontale altrimenti non ` in un bordo e Individuato il tipo di pixel vogliamo assegnargli un valore di G, e quindi di luminosit`, interpolando in modo da attraversare il bordo, a il che aiuta nellevitare artefatti sui contorni; rispettivamente: G (i, j) = G (i, j) = G (i, j) =
G (i1,j)+G (i+1,j) 2 G (i,j1)+G (i,j+1) 2 G (i1,j)+G (i+1,j)+G (i,j1)+G (i,j+1) 4

Ora ogni pixel ha un valore di luminosit`/verde ma alcuni hanno a solo G, altri sia G sia B (R); poniamo di volere aggiungere il canale R ad un pixel (i, j) cui manca; il sistema ` il seguente: e se type(i, j) = G allora
se i pari (es. G23) allora R(i, j) = D(i 1, j) + D(i + 1, j) + G (i, j) 2

altrimenti (es. G32) R(i, j) = D(i, j 1) + D(i, j + 1) + G (i, j) 2

se type(i, j) = GB (es. B44) allora


R(i, j) = D(i 1, j 1) + D(i 1, j + 1) D(i + 1, j 1) + D(i + 1, j + 1) + +G (i, j) 4 4

dove D(i, j) = R(i, j) G (i, j) In modo del tutto analogo ` laggiunta di B ai pixel di tipo G e GR e

Risultato

Prima del bilanciamento

Dopo il bilanciamento (ground)

Dopo il bilanciamento (risultato)

Alternative di bilanciamento del bianco

A partire dallimmagine demosaicata, abbiamo bilanciato il bianco grazie allinformazione colorimetrica, avendo associato ad una serie di colori nativi le loro controparti corrette nello spazio XYZ Sperimentiamo ora tre alternative algoritmiche di bilanciamento: gray world white world scale-by-max

Lalgoritmo gray world si basa sullassunzione che il colore medio dellimmagine sia un grigio Questa assunzione ` statisticamente valida per immagini di grosse e dimensioni e molto colorate Algoritmo: il colore medio avgRGB ` calcolato facendo la media canale e per canale il grigio medio grayValue facendola sulle componenti di avgRGB il valore di scala scaleValue si ottiene dividendo grayValue per le componenti di avgRGB ogni canale ` scalato per la rispettiva componente di e scaleValue

Cos` facendo, in ogni canale, pi` le intensit` si avvicinano a quelle u a del grigioavgRGB pi` sono forzate a grayValue, ottenendo che il u grigio stimato avgRGB emerga nellimmagine come (grayValue, grayValue, grayValue)

Lalgoritmo white world prende a bianco dellimmagine non bilanciata il pixel presente pi` vicino al bianco del modello colore u (il bianco tipicamente ` un vettore costante a valore maxval, es. e (255, 255, 255)) Trovato questo valore, limmagine ` scalata in modo che esso e assuma bianco nellimmagine bilanciata Algoritmo: si trova il valore pi` vicino al bianco nellimmagine, refwhite u si scala ogni canale i per il coeciente maxval/refwhite(i)

Per lalgoritmo scale-by-max possiamo dire che ` sostanzialmente e come il precedente, ma refwhite ` calcolato prendendo il massimo e di ogni canale E quindi computazionalmente pi` semplice ma meno robusto agli u outlier (es. in unimmagine RGB a valore costante (127, 127, 127) ho tre pixel diversi (255, 0, 0), (0, 255, 0) e (0, 0, 255))

Risultati

Prima del bilanciamento

Ground

Colorimetrico

Gray world

White world

Scale-by-max

Valutazione comparativa dei risultati

Visivamente osserviamo che il bilanciamento colorimetrico d` un a risultato soddisfacente, mentre le tre procedure danno un certo miglioramento ma lasciano una dominante blu-verde Salta anche allocchio il fatto che white world e scale-by-max danno risultati identici, vuol dire che le due implementazioni, seppur in modo diverso, determinano il medesimo candidato bianco Per avere un quadro quantitativo di queste impressioni, adoperiamo la metrica full-reference SSIM (Structural SIMilarity )

SSIM si dierenzia da metriche come MSE (mean squared error ) e PSNR (peak signal-to-noise ratio) nellessere abbastanza consistente con la nostra percezione visiva La principale intuizione ` valutare la dierenza tra immagini in e termini di: luminosit` a contrasto struttura

La struttura generale della metrica separa queste caratteristiche, gi` relativamente indipendenti, e permette di attribuire arbitraria a importanza a ciascuna di esse (per esempio una scelta ` privilegiare e la struttura) Una forma che d` la stessa importanza a tutte e tre le componenti a e richiede solo due costanti arbitrarie ` e (2A B + C1 )(2AB + C2 ) SSIM(A, B) = 2 2 2 (A + 2 + C1 )(A + B + C2 ) B dove C1 = (k1 L)2 , C2 = (k2 L)2 con k1 , k2 << 1 ed L range dinamico delle immagini (es. 8 bit L = 256) A e B sono sottoimmagini di uguali dimensioni delle due immagini I e J da comparare, dove I ` la ground reference e J limmagine in e esame Gli autori suggeriscono nestre quadrate di dimensione 8, ed ` e anche consigliato di operare non su I e J direttamente ma sulla loro luminanza (trasformando in HSV o YCbCr)

1 < SSIM(A, B) < 1, con SSIM(A, B) = 1 se e solo se A = B I risultati ottenuti sono i seguenti: col.: .8832 gw: .5894 ww, sbm: .6866

Costruendo unimmagine di forma M(i, j) = SSIM(Aij , Bij ) abbiamo uno strumento visivo per individuare le aree in cui le immagini dieriscono particolarmente Nelle immagini seguenti visualizziamo queste mappe caso per caso, canale per canale; lintensit` M(i, j) ` inversamente proporzionale a e allo score SSIM(Aij , Bij ) (ci` si pu` dedurre provando con due o o immagini uguali)

target vs colorimetrico

target vs gw

target vs ww/sbm

Codice MATLAB lo script ES3.m esegue il bilanciamento del colore sia sulla tabella colore sia sullimmagine raw, ed ` ampiamente e commentato per la demosaicatura ` utilizzato il comando MATLAB e demosaic, mentre gli algoritmi di bilanciamento del bianco sono stati messi in singole funzioni per SSIM ` stata adoperata limplementazione fornita e

Esercizio 4 - Image stitiching

Data una serie di immagini ci ` richiesto di aancarle in modo da e ottenere ununica panoramica Il programma utilizzato ` Autostitch e la teoria brevemente e descritta di seguito (Brown et Lowe) ` quindi quella applicata dal e programma

Passi principali: estrazione di punti salienti dellimmagine attraverso SIFT, Scale-invariant feature transform (feature detection) loro allineamento tra tutte le immagini (feature matching ) formulazione di un modello geometrico di allineamento immagini tramite una particolare mappa proiettiva, lomograa (image alignment) sua costruzione attraverso RANSAC (RANdom SAmple Consensum) image multi-band blending

SIFT

Concetto base: individuare nel piano immagine punti di particolare importanza che, presi a particolari gruppi, rappresentano informazione che: sopravvive a diverse scale (es. in ogni piano di una piramide gaussiana) ` invariante a trasformazioni di luminosit`, scala, rotazione ecc e a La procedura consiste in: 1. individuazione dei space-scale extrema 2. scrematura dei punti chiave trovati 3. assegnamento delle orientazioni 4. formulazione dei descrittori

Gaussian rescaling : allimmagine di partenza ` applicato loperatore gaussiano k e distinte volte con deviazione standard k0 ad ogni iterazione; k ` scelto in modo che il numero di immagini per ogni ottava e (= multiplo di 2 di 0 ) sia costante ogni ottava ` suddivisa in s intervalli in modo che k = 21/s e e bisogna che ci siano s + 3 immagini per ottava ad ogni iterazione si calcola la DoG tra il piano corrente ed il precedente arrivati allimmagine ltrata con 20 , la si sottocampiona di un fattore 2 e si ripete questa procedura ripartendo da 0

Point detection: per ogni scala/ottava, per ogni piano in essa tranne il primo e lultimo e per ogni pixel si individua il suo intorno di Moore ed i corrispondenti ai piani inferiore e superiore se il pixel in esame ` un minimo o un massimo di questi 26 e vicini, p = (x, y , k0 ) ` considerato candidate keypoint e

Scrematura oset e contrasto: ogni DoG ` rappresentabile in forma e D(x, y , k) = G (x, y , (k 1)) G (x, y , k), immagine dierenza tra due ltraggi gaussiani a successiva deviazione standard; D(x, y , ) ` una funzione, di cui si possono cercare e massimi e minimi locali costruiamo lespansione D(x) = D + 1 2D D T x + xT 2 x x 2 x

con centro il candidato p (quindi in p valutiamo D e le sue derivate) e x = (x, y , ) oset incognito il valore dellestremo z in termini di oset dal candidato p si ha ponendo D (x) = 0

se in una qualsiasi dimensione z ` maggiore di .5 si ripete e centrando in p + z; altrimenti il candidato ` valutato rispetto e al contrasto se p non converge dopo poche iterazioni, ` scartato e se |D(z)| < .03 p ` scartato (contrast discard), altrimenti la e sua posizione ` aggiornata, p = p + z e

Scrematura edge (richiede geometria dierenziale non banale!): per loro natura, i punti di bordo sono i candidati tipici che arrivano alla selezione, ma determinano ridondanza Dxx Dxy calcoliamo lhessiana di D(x), H = Dxy Dyy se uno dei due autovalori di H ` molto pi` grande dellaltro, e u siamo in presenza di un bordo, mentre se sono simili il punto ` e dangolo se sono grandi per selezionare possiamo allora richiedere che sia (r + 1)2 tr 2 (H) < det(H) r con r soglia arbitraria

Esempio di come possono diminuire i punti candidati dopo scrematura oset-contrasto (centro) ed edge (fondo)

Linvarianza per scala deriva dal gaussiano e dal sottocampionamento; rispetto alla rotazione si ottiene aggiungendo una componente dorientamento ai punti scelti p = (xn , yn , k0 ): si seleziona il piano laplaciano k0 e si calcola il modulo e langolo del gradiente immagine in ogni punto di un intorno scelto di (xn , yn )
| L (xi , yi )| = (L (xi + 1, yi ) L (xi 1, yi ))2 + (L (xi , yi + 1) L (xi , yi 1))2

arg ( L (xi , yi )) =

L (xi , yi + 1) L (xi , yi 1) L (xi + 1, yi ) L (xi 1, yi )

le intensit` sono pesate (es. gaussiana centrata in (xn , yn )) ed a il range di angoli ` partizionato e si costruisce un istogramma con un bin per partizione, contenente la somma delle intensit` pesate dei punti (xi , yi ) a che hanno gradiente ad angolo che ricade nella partizione si assegna come orientazione a (xn , yn ) langolo mediano della partizione associata al bin a valore pi` alto u in caso ci siano pi` picchi vicini, ` possibile assegnare pi` u e u orientazioni, o combinarle

Ogni keypoint ha ora coordinate, scala, orientazione ma per poter confrontare punti di diverse immagini ` necessario aggiungere e informazione; per esempio non abbiamo ancora garantito invarianza alla luminosit` a Formulazione descrittori: per ogni punto, posizioniamoci nellimmagine DoG pi` vicina u alla sua scala ed individuiamo un intorno 16x16 intorno ad esso, da suddividere ulteriormente in 16 regioni 4x4 per ogni regione si calcola unistogramma orientazione vs modulo come sopra, ad 8 bin essendoci 16 regioni ognuna con un istogramma ad 8 valori, il descrittore risultante ` un vettore di 128 valori e esso ` normalizzato a lunghezza unitaria, per robustezza a e cambi dintensit` che seguono una mappa ane a inne ` sogliato ad un valore arbitrario adatto a resistere a e variazioni dintensit` frutto di rumore e nuovamente a normalizzato

I descrittori sono vettori a 128 elementi, una qualsiasi distanza ` e applicabile Sperimentalmente per` stabilire una soglia esatta per denire o sucientemente bassa la distanza tra due descrittori ` dicile e Approccio: si ordinano in modo crescente le distanze d(p, pi ) dove d1 p ` il punto in esame, denendo la successione {dj }, e se d2 < .8 si e d` il match a La corrispondenza ` univoca solo nel caso ideale: nel caso di pi` e u punti pi la scelta dipende dalle applicazioni (es. centro chiglia convessa)

Omograe

Un piano proiettivo ` una struttura geometrica che estende il e concetto di piano euclideo, ` un piano con dei particolari punti e allinnito dove anche le rette parallele sintersecano In un piano proiettivo quindi qualsiasi coppia di rette si interseca in uno ed un solo punto, che ` lintersezione classica se sincrociano e od un punto allinnito se sono parallele I punti di un piano proiettivo sono espressi in coordinate omogenee: in 2D, p = (x, y , w ) ` un punto di coordinate (x, y ) e scala w e rappresenta la classe dequivalenza di tutti i punti cartesiani (x , y ) tali che x = wx, y = wy due punti sono quindi uguali in senso proporzionale, cio` se e coincidono ma a scale diverse

Idea: formalizzare un piano immagine come piano proiettivo, infatti la proiezione prospettiva/3D determina punti di fuga per ogni retta parallela della realt` fotografata a

Unomograa/trasformazione prospettica ` una mappa da un piano e proiettivo in se stesso che mappa rette (= punti, per la dualit` a implicata dalle coordinate omogenee) in rette Pu` essere adoperata per formalizzare come variano le posizioni o percepite se varia il punto di vista dellosservatore In due distinte immagini quindi i punti omogra sono lo stesso punto, ma da dierenti angolazioni Unomograa ` rappresentabile come una matrice 3x3, e tra due e immagini possiamo costruirla a partire avendo parametrizzato le camere che le hanno acquisite (camera models)

La lunghezza focale f ` la distanza tra il centro della lente e il e piano focale (piano su cui si forma limmagine fotografata) Una camera al momento dello scatto pu` essere rotata sugli assi o spaziali di una quantit` (1 , 2 , 3 ) a Queste informazioni si possono codicare in due apposite matrici, K ed R a formalizzare la mappa di proiezione dellimmagine, P Lomograa H tra le immagini I e J ` allora H = PJ PI 1 e

RANSAC

RANSAC ` una procedura probabilistica per stimare un modello a e partire da dati osservati (data tting ) E particolarmente robusta, se instanziata con cura, ad insiemi di dati con molti outlier points, causati da rumore od errate osservazioni Input: data set S algoritmo del modello A iterazioni k numero campioni n numero di nuovi inliers m tolleranza

Lidea della procedura ` di iterare la selezione casuale di un e sottoinsieme di punti e la costruzione del modello su di essi sotto lipotesi che siano inliers Terminato il ciclo ` scelta la realizzazione del modello che ha e mostrato migliore precisione

Iterazione: 1. un sottinsieme di n punti ` selezionato casualmente da S e 2. si applica lalgoritmo A di tting su di essi (inliers) ottenendo unistanza del modello Mi 3. i restanti punti (outliers) sono misurati rispetto ad essa, valutandone lerrore: se inferiore alla tolleranza , sono considerati anchessi inliers 4. listanza ` scartata se non ` stato possibile aggiungere un e e numero maggiore-uguale ad m di nuovi inliers a quelli dipotesi campionati al punto 1; in questo caso literazione termina 5. altrimenti, listanza Mi ` riformulata sul nuovo insieme di e inliers, rieseguendo quindi A sugli iniziali e sugli aggiunti assieme 6. si stima lerrore Ei dellinsieme di inliers rispetto alla riformulata Mi

ora:
se ` la prima iterazione, salviamo la formulazione, e curr = (M1 , E1 ) altrimenti confrontiamo questa con la sua controparte nel modello della precedente iterazione se presente, curr , e se risulta Ecurr Ei listanza ` scartata, diversamente sostituisce e la precedente, curr = (Mi , Ei )

RANSAC ` per natura un metodo iterativo: se p ` la probabilit` e e a che p S sia un inlier, la probabilit` di trovare la corretta istanza a `: e P(Mcurr is correct) = 1 (1 (p)n )k

In Autostitch: n = 4, cio` sono scelte per coppia dimmagini 4 coppie (pi , pj ) e dove pi e pj sono punti SIFT corrispondenti nelle due immagini k = 500 m, impliciti (il programma permette di regolare RANSAC attraverso due altri parametri , ) M: matrice domograa H A: metodo DLT (direct linear transformation)

Blending

Il procedimento ` ispirato al laplacian blending visto sopra, perch e e ` un buon modo di amalgamare i contenuti di due immagini e proporzionalmente al loro contenuto informativo cio`: e basse frequenze/struttura - vasta scala (es. cieli) alte frequenze/dettagli - piccola area (es. pareti rocciose)

Esprimiamo limmagine in coordinate non rettangolari bens` sferiche e procediamo nel seguente modo: 1. per ogni immagine Ii calcoliamo le funzioni di peso W i (, ) = w ()w () con w () che varia linearmente in [0, 1] da min a max 2. le funzioni di peso massimo:
i Wmax (, ) =

1, 0,

se W i (, ) = arg maxj W j (, ) altrimenti

cio` Wmax (, ) = 1 se considerando il pixel (, ) in tutte le e i immagini Ij , Ii ` quella che ha peso massimo in esso e i 3. si forma una versione passa alto B dellimmagine Ii attraverso DoG i 4. si opera un passa basso W sullimmagine funzione peso massimo i i e 5. una piramide immagine per B e per W ` assemblata

1. combiniamo la coppia di piramidi di ogni immagine i ad una certa scala con la formula seguente:
mb Ik (, ) = n i i i=1 Bk (, )Wk (, ) n i i=1 Wk (, )

2. collassiamo la piramide ottenuta

Risultati

Ground - trasformazione prospettica

Risultato - il panorama ` stato costruito senza modicare i parametri di e Autostitch preimpostati a partire dalle immagini {0, . . . , 4, c, d, e}

Limmagine risultante ha dimensioni non ` esattamente e comparabili alla ground per via della bordatura e delle dimensioni ssim.m richiede due immagini delle stesse dimensioni e se troppo grandi nisce la memoria, quindi le ho portate entrambe a 1723x3628 (1723 ` la media mentre 3628 ` met` della media) e e a Lo score ` .2866, il risultato ` visivamente buono e non si ` persa e e e informazione durante la composizione; un handicap del risultato ` e lirregolare bordatura nera (possibile soluzione: estrapolazione)

Ground - trasformazione prospettica

Il programma Autostitch ` liberamente scaricabile allindirizzo e http: //www.cs.bath.ac.uk/brown/autostitch/autostitch.html, ed allo stesso indirizzo si pu` trovare anche ampia documentazione o teorica

Esercizio 5 - Image color/mood transfer

Valutiamo due approcci alternativi a quello visto in aula: histogram matching histogram sliding Nel primo cerchiamo di portare sistematicamente listogramma dellimmagine target vicino a quello dellimmagine modello Nel secondo operiamo sui valori pixel in modo che, in media, due pixel qualsiasi delle due immagini siano uguali

Histogram matching : Siano HT ed HM gli istogrammi delle immagini target T e modello M, di range dinamico L; cerchiamo una trasformazione g : L N L N tale che g (T (k)) M(k) k L una strategia esplicita ` trovare una trasformazione f : L L e che minimizza cum cum HM (f (k)) HT (k) cio` che fa s` che gli istogrammi cumulati e k cum (k) = H u i=1 H(i) siano il pi` possibile uguali imponiamo i seguenti vincoli su f :
monotonicit`: data una qualsiasi coppia (k, k ) con k k a risulta f (k) f (k ), lordine ` mantenuto e accuratezza: devessere cum cum HM (f (k)) HT (k) < |HM (k)||HT (k)| 2

il risultato nale si ha applicando la trasformazione f allimmagine T

Histogram sliding : calcoliamo il colori medi di T e di M, avgM , avgT sia avg = avgM avgT la loro dierenza correggiamo T sommando ad ogni suo canale la corrispondente componente in avg

Risultati

Immagine modello M

Immagine target T

Histmatch

Histslide

Istogrammi

Le due funzioni MATLAB utilizzate sono histmatch.m e meancorr.m histmatch.m si basa sul comando histeq

NPR - Non-photorealistic rendering

Eetti: neon glow spraycan eect comic book eect Il codice ` frutto di sperimentazioni e prove personali in e Mathematica ed ` contenuto nel modulo LameDIP.m e

Leetto neon glow ritorna una particolare immagine di bordo che ricorda luci al neon al buio Algoritmo: 1. limmagine di input I ` processata con un operatore gradiente e di raggio 3, A = grad(I , 3) cio` ` eettuata una convoluzione ee tra limmagine I ed un kernel w ottenuto campionando la derivata di una gaussiana (r = 3, = r /2) 2. si converte il risultato a valori di grigio, B = gray (A) 3. limmagine corrente ` colorata a sfumature di un colore rgb e dato, ossia si trasforma in modo che il suo grigio sia posto ad rgb, C = shade(B, rgb) 4. si costruisce una serie di maschere D1 , . . . , Dk con Di ottenuta operando su C un ltraggio gaussiano (r = 10i, 10i/2), k dato 5. limmagine nale ` E = C + e
k i=1 Di

Target

k=1

k=5

k = 10

Come il nome suggerisce, lobiettivo delleetto spraycan ` e simulare unopera a vernice spray Algoritmo:
1. limmagine dingresso I subisce una quantizzazione del colore che la porta ad avere 5 soli colori distinti, A = cq(I , 5), individuando macchie di colore 2. si calcola limmagine prodotto B = AI , di pseudo-riduzione del colore 3. ltraggio gaussiano di raggio 3 ed std 1.5 su B, C = gau(B, 3, 1.5) 4. sharpening dellimmagine C (ad esempio mediante somma del laplaciano) 5. C ` ltrata due volte con un kernel gaussiano raggio 3, ottenendo e limmagine D 6. calcolo di E = grad(D, 3) 7. passaggio ai grigi, F = gray (E ) 8. negativo, G = 1 F 9. maschera, con il prodotto H =
k i=1

Gi , k intensit` data a

10. limmagine nale ` J = CH, la quale pu` richiedere schiarimento e o

Target

k=2

La procedura comic book ` sostanzialmente uguale alla precedente e anche se il risultato ` notevolmente diverso (per i dettagli si e rimanda al codice)

Target

k = 60