digital image processing - some exercises

Post on 25-Jul-2015

335 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Slides describing some exerises for a DIP course (italian)

TRANSCRIPT

TIC - Esercizi esamer.vincelli@campus.unimib.it

Esercizio 1 - Elaborazione di un set d’immagini critiche

underexposed.jpg

E’ stata adoperata un’implementazione MATLAB dell’algoritmo diMoroney leggermente modificato:

1. dopo avere portato l’immagine in double e convertitala inYCbCr, salvare il canale Y

2. riscalare i valori di Y perche siano effettivamente nel range[0, 1]

3. calcolare la maschera negando Y ed applicandoci l’operatorebilaterale

4. filtrare il canale Y eseguendo Y (i , j)a.5−bfmask(i,j)/.5

dove bfmaske la maschera appena calcolata e a e un parametro utente(nella versione originale e a = 2, in Schettini et al. e stimatain modo piu complesso)

5. riscalare la Y filtrata e ritornare in RGB

6. passare in HSV ed aumentare la saturazione scalando ilrelativo canale per un parametro utente k

L’operatore gamma (gamma correction) corrisponde alla funzionef (I (i , j)) = cI (i , j)γ , per c e γ reali

Per c = 1 se γ = 1 e ovviamente l’identita, se γ < 1 l’immagine eschiarita, se γ > 1 scurita; per γ = 1, c < 1 scurisce mentre c > 1schiarisce, con c = 1 identita

L’operatore bilaterale (bilateral filter) e un’evoluzionedell’operatore gaussiano che permette di sfocare preservandomeglio i bordi

L’idea e tenere in considerazione non solo l’informazione spazialeattraverso la distanza tra pixel ma anche quella radiometrica, conle intensita

Assumendo un’immagine a valori scalari, la formula e:

f (I (i , j)) = wi+m∑

k=i−m

j+n∑l=j−n

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

Nella formula:

I Ws e il kernel della funzione gaussiana

G (x , y) = 12πσ2

se− x2+y2

2σ2s , per la componente spaziale

I Wr della G (x) = 1√2πσ2

r

e− x2

2σ2r per quella d’intensita

I w costante di normalizzazione

moroney(underexposed, 1.25, 2)

gruppocontroluce.jpg

moroney(gruppocontroluce*.9,1.5,1)

indoorflash.jpg

Histogram stretching/shrinking : espansione/compressione delrange dinamico

Formula (immagine valori di grigio):

f (I (i , j)) = (I (i , j)− lowIn)(hiOut − lowOut

hiIn − lowIn) + lowOut

ed il risultato e tale per cui i valori nell’immagine di inputnell’intervallo [lowIn, hiIn] sono rimappati nell’intervallo[lowOut, hiOut] in quella di output

Per correggere l’immagine, in cui il volto della bimba ha valoritroppo elevati e costituisce l’unica area ad elevata luminosita,penalizziamo le alte intensita

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

fintemodelle.jpg

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

5)

ritrattoindoor.jpg

L’immagine pre-senta 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 ablocco nero, risultato ottimale si avrebbe con a = 2)

nightshot.jpg

ImageAdjust[nightshot, {0, 2}] (Mathematica, lascia invariato ilcontrasto ed aggiusta la luminosita di una quantita 2)

blocchetti.png

L’immagine presenta essenzialmente due problemi:

I forti artefatti di blocchettizzazione JPEG

I bande cromatiche orizzontali

La prima cosa che viene in mente e il blurring, ma subito ciricordiamo che si rischia di perdere i contorni, trasformandoun’immagine molto rumorosa in una poco informativa

Osservazione: le bande sono bluastre, e quindi sono contribuiteprincipalmente dal canale blu, e dal verde

Idea: filtro bilaterale solo su questi due canali

ColorCombine[RGB[[1]], BilateralFilter[RGB[[2]], 7, .1],

BilateralFilter[RGB[[3]], 14, .2]] (Mathematica, filtraggiobilaterali sui canali G e B in diversa misura e ricomposizione)

ritrattooutdoor.jpg

Total variation filtering (TV filtering)

La variazione totale di una funzione ci dice, informalmente, quantosiano diversi i valori che assume in successivi punti del dominio

Per un’immagine I di dimensioni mxn un esempio di TV puo essereV (I ) =

∑mi=1

∑nj=1

√|I (i + 1, j)− I (i , j)|2 + |I (i , j + 1)− I (i , j)|2

Tendenzialmente piu un’immagine e rumorosa piu alto sara V (I ), equesto e vero particolarmente per alcuni tipi di rumore (es. saltand pepper)

Data un’immagine in input corrotta I una strategia per pulirla eminimizzare la funzione f (J) = g(I , J) + λV (J)

Nella formula:

I I e l’immagine input

I J la versione restaurata

I g(I , J) e una metrica oggettiva di valutazione (es. meansquare error)

I λ ∈ (0, 1) e da fissarsi, concettualmente, direttamenteproporzionale all’intensita del rumore

Quel che chiediamo all’immagine di output, rispetto a quella diinput, e che sia il piu possibile uguale ad essa ma allo stesso tempoabbia la TV minima possibile

In letteratura: possibilita di modellare il rumore, procedure siadirette sia iterative

TotalVariationFilter[ritrattooutdoor.jpg, 1,

MaxIterations->3] (Mathematica)

Esercizio 2 - Autoritratto creativo

Immagini in gioco:

I base image - l’immagine su cui vogliamo inserire un oggetto

I overlay/object - l’oggetto da aggiungere

I bitmask - maschera che regola come aggiungerlo

Struttura dati principale e la piramide immagine (Burt et Adelson,’83), composta da due pile di immagini calcolate a partiredall’immagine I di partenza, la pila gaussiana Γ e la laplaciana Λ:

I G0 = I (base della piramide);Gi = downsample(G(Gi−1, r), scale) dove G e l’operatore diblur gaussiano e downsample(I , scale) sottocampional’immagine di un fattore scale ∈ (0, 1)

I Li = Gi−1 − G(upsample(Gi , scale)) ossia calcoliamol’immagine differenza tra un piano gaussiano ed il successivoche, essendo piu piccolo, dev’essere sovracampionato

L’operatore G ha lo scopo di attenuare possibili artefatticonseguenti al ricampionamento

Γ rappresenta l’immagine I sottoposta a successivi filtraggi passabasso, e contiene il grosso dell’informazione immagine, mentre Λ efrutto di successivi passa alto e porta con se i dettagli, le altefrequenze

Λ e basata sull’operatore DoG (Difference of Gaussians) che eun’approssimazione dell’operatore laplaciano

Perche non usare direttamente il laplaciano quindi?

I computazionalmente piu oneroso

I piu potente e quindi, anche a raggi piccoli, solleva piu rumore!

Algoritmo:

1. costruire le piramidi gaussiane ΓA, ΓB e ΓR rispettivamenteper l’immagine base, l’oggetto e la maschera

2. costruire le piramidi laplaciane ΛA, ΛB ed ΛR a partire dalleprecedenti

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 eseguendoCB(i , j) = GRtop(i , j)GBtop(i , j) + (1− GRtop(i , j))GAtop(i , j)

5. assemblare l’immagine finale a partire da CB sulla piramideΛS (pyramid collapsing)

Ricostruzione dell’immagine: dato l’ultimo livello di Γ cioe Gtop e Λe possibile ricostruire l’intera immagine I di partenza, algoritmo:

1. calcolare im = upsample(Gtop, scale) + Ltop

2. ripetere il punto sostituendo Gtop con im e Ltop con Ltop−1

La procedura ricostruisce effettivamente l’immagine I di partenzaosservando che ad ogni iterazione otteniamo un livello inferioredella piramide gaussiana e per definizione il livello base e posto ad I

Circuito dell’algoritmo: + e − somma e differenza d’immagini, ∗ el’operatore di convoluzione, g il kernel gaussiano, ↓ e ↑sottocampionamento e sovracampionamento

.

Immagine base

Immagine da sovrapporre

Maschera

Funzioni MATLAB:

I pyramids(im, scale, r) - costruisce Γ e Λ per l’immagineim usando come fattore di scala scale e per raggio dellagaussiana r

I lapblend(LA, LB, GR) - calcola la piramide laplacianacombinata ΛS

I blending(LS, GA0, GB0, GR) - collassa la piramide LS apartire dai livelli gaussiani di cima GA0 e GB0 con la mascheradi cima GR

I laplacianblending(image, overlay, mask, scale, r)

- utilizza le tre funzioni precedenti per creare l’immaginecomposta

Risultati

scale=.5, r=1

scale=.25, r=3

scale=.5, r=3

Esercizio 3 - caratterizzazione colorimetrica

Obiettivo: partendo da un’immagine .tiff mosaicata (raw camerapicture) trasformarla in una sRGB avendo bilanciato il bianco

Descrizione dei dati d’ingresso

Dati d’input:

1. color chart da bilanciare - patch.png

2. campione di pixel per ognuno dei 24 principali colori in essa -quadratini - posizioni.mat

3. riflettanza di ogni quadratino - quadratini -

riflettanze.mat

4. RSPD dell’illuminante d’arrivo - D65 RSPD.mat

5. XYZ CMF - XYZ CMF.mat

6. immagine raw - IMG1295.tiff

La color chart da bilanciare appare basata sulla ColorChecker ColorRendition Chart

Patch d’input

Patch obiettivo

Una tabella colore puo essere utilizzata per confrontare la fedelta distrumenti di acquisizione rispetto al nostro sistema visivo, oppureper la profilazione di strumenti di riproduzione, tra le altre cose

Ogni quadratino colore e composto da vari pixel ed ovviamente,pure se in uno stesso, non hanno tutti lo stesso identico colore RGB

Non e quindi ben definito il concetto di pixel per un singoloquadratino, il riferimento spaziale per ognuno di essi e una ventinadi coppie (i , j) che scegliamo direttamente dall’immagineattraverso il comando ginput

Un’illuminante e una sorgente di luce visibile

Esso si dice standard se e teorico, cioe prescinde da una particolareilluminazione, ed accompagnato da una distribuzione di potenzaspettrale (power spectral distribution - PSD)

Una PSD e la tabulazione del contributo per lunghezza d’onda intermini di potenza (= lavoro su unita di tempo) su unita di area, inpratica quanta energia convoglia l’illuminante rispetto ad ognifrequenza considerata

La PSD relativa (RPSD) e la PSD normalizzata rispetto ad uncerto valore; per esempio possiamo volere normalizzare all’unita incorrispondenza del picco della funzione di luminosita dell’ occhio(scotopica 500nm, fotopica 555nm)

Il D65 e un illuminante standard CIE (Commission Internationalede l’Eclairage); la serie D raccoglie illuminanti pensati perriprodurre condizioni d’illuminazioni all’aria aperta tipiche didifferenti parti del mondo

RSPD (555→100) di tre illuminanti D

Grafico di D65 - RSPD.mat (con massimo ad 1); D65 rappresental’illuminazione in una bella giornata nell’Europa nordoccidentale, amezzogiorno

Ogni oggetto e caratterizzabile da una curva di riflettanza, che perogni lunghezza d’onda indica in che percentuale l’energia luminosaincidente e riflessa

Se di un oggetto e nota la riflettanza e conosciamo la PSDdell’illuminante che lo colpisce, possiamo calcolare lo stimololuminoso proveniente dall’oggetto rispetto ad ogni lunghezzad’onda considerata

In un contesto semplificato discreto esso e dato da:

S(l) = L(l)R(l)

cioe, molto semplicemente, per una data lunghezza d’onda l ,quanto arriva con L e quanto e restituito con R

Una color matching function e la descrizione numerica dellarisposta dell’osservatore standard rispetto ad una componente CIEXYZ

Sia x(l) la CMF della componente X; il valore di X per lo stimoloS(l) e dato, nel caso discreto, da:

l=lf∑l=li

S(l)x(l)

Il percorso d’elaborazione

Strategia. Date le sue dimensioni ristrette ci e stato consigliato perpraticita di sperimentare e bilanciare prima il file patch.png, perpoi passare a modificare l’immagine target IMG1295.tiff unavolta 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 sottol’illuminante D65 RSPD.mat avendo a disposizionequadratini - riflettanze.mat

2. calcolo delle relative triplette XYZ a partire dagli stimoliappena calcolati e da XYZ CMF.mat

3. Wrong von Kries transform - bilanciamento del biancodirettamente in XYZ senza passare in LMS (spazio dei coni)

4. conversione ad sRGB

5. generazione di una tabella colore per verificare la bonta dellacorrezione

Il bilanciamento colore prevede l’applicazione della seguenteformula X

YZ

=

Xw/X ′w 0 00 Yw/Y ′w 00 0 Zw/Z ′w

X ′

Y ′

Z ′

dove (Xw ,Yw ,Zw ) e il bianco dell’illuminante target, (X ′w ,Y

′w ,Z

′w )

il neutro della tabella colore data, stimato a partire da quadratini

- posizioni.mat prendendo solo l’ultima riga, quella dei neutri

sRGB e uno spazio colore assoluto e quindi il passaggioXYZ→sRGB e standard; esso e stato fornito nella funzionexyz2srgb.m

A questo punto abbiamo in mano 24 colori nello spazio sRGB, unoper ogni colore nella tabella data, e ci aspettiamo che dopo ilbilanciamento essi siano quanto piu vicini possibili a quelli dellatabella originale

Confronto tra la color chart di riferimento e quella ottenuta

Passi - fase 2:

1. estrazione dei valori nativi di ogni componente della tabellacolore 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 e media dei valori all’interno di essapresi dai pixel presenti in quadratini - posizioni.mat

Conosciamo, ed abbiamo verificato che e visivamentesoddisfacente, il valore XYZ bilanciato, ossia corretto sottol’illuminante dato, di ogni quadratino

Per ogni tripletta RGB estratta sappiamo quindi a che precisatripletta XYZ vogliamo farla corrispondere e la trasformazione piusemplice e, per il quadratino i : Xi

Yi

Zi

=

ki1,1 ki1,2 ki1,3ki2,1 ki2,2 ki2,3ki3,1 ki3,2 ki3,3

Ri

Gi

Bi

Problema: la trasformazione richiede una Ki particolare, comeottenere un’unica matrice K con cui correggere agevolmentel’immagine a partire dalle matrici K1, . . . ,K24?

Risposta: minimi quadrati lineari (linear least squares)

Esplicitando la formula di sopra per ogni i fissando kia,b = ka,b citroviamo davanti ad un sistema lineare sovradeterminato (9incognite e 72 equazioni)

k1,1r1 + k1,2g1 + k1,3b1 = x1k2,1r1 + k2,2g1 + k2,3b1 = y1k3,1r1 + k3,2g1 + k3,3b1 = z1

...k1,1r24 + k1,2g24 + k1,3b24 = x24k2,1r24 + k2,2g24 + k2,3b24 = y24k3,1r24 + k3,2g24 + k3,3b24 = z24

La soluzione che il metodo restituisce minimizza l’errore alquadrato tra i membri di ciascuna equazione, ossia richiede diminimizzare la funzione

f (k1,1, k1,2, . . . , k3,3) =24∑i=1

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

2+(k3,1ri+k3,2gi+k3,3bi−zi )2

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

X =

r1 g1 b1r2 g2 b2...

......

r24 g24 b24

B =

k1,1 k2,1 k3,1k1,2 k2,2 k3,2k1,3 k2,3 k3,3

Y =

x1 y1 z1x2 y2 z2...

......

x24 y24 z24

I soluzione e B = X+Y dove

X+ = (XTX)−1XTY

e la pseudoinversa di Moore-Penrose

Una volta trovata la matrice di conversione K = B, si e pronti perbilanciare l’immagine, bisogna semplicemente moltiplicare ognipixel per essa

L’ idea e che, avendo fornito ai minimi quadrati un numerosufficiente di coppie uniformemente distribuite(colore nativo, colore obiettivo) un qualsiasi colore input e vicinoad un certo colore mappato con la K stimata

L’ultimo passo e la conversione dell’intera immagine da XYZ adsRGB

Risultato

Sull’immagine target

La trasformazione dell’immagine IMG1295.tiff si articola in:

I demosaicatura

I bilanciamento bianco

I passaggio ad sRGB

Il bilanciamento del bianco si effettua con la matrice B trovatasopra e quindi e solo la demosaicatura che dobbiamo descrivere

In una fotocamera l’informazione luminosa e acquisita dalla grigliadei fotosensori

E’ possibile per ognuno di essi quantificare la luce che lo colpisce,ma cio da informazione solo sull’intensita e quindi permette digenerare solo un’immagine a livelli di grigio

La griglia e quindi coperta da un mosaico di filtraggio colore (colorfilter array, CFA) cui scopo e far sı che si possa localizzare rispettoad una certa lunghezza i fotoni in ingresso

Il CFA dell’immagine, Bayer pattern/RGGB

Ricevuta l’informazione filtrata quel che abbiamo e un’immagine incui i pixel hanno effettivamente una sola componente, cioe sonosul rosso, sul verde o sul blu

Il demosaicing e la procedura con cui assegnamo un’intensita aicanali vuoti di ogni pixel, in base all’informazione che abbiamo, perlo stesso canale, nei pixel vicini

La procedura consiste in un’interpolazione lineare guidata dalgradiente immagine (gradient-corrected linear interpolation); neesistono molte varianti (e brevetti!), consideriamo LaRoche etPrescott

Passi:

1. calcolare la luminosita (brightness) del pixel

2. interpolazione delle differenze colore tra R e G, B e G

Tipicamente la luminosita di un pixel RGB e media dellecomponenti ma ovviamente in questo caso non puo essere

Se il pixel e verde, la sua luminosita e posta pari al suo valore,altrimenti calcoliamo i coefficienti

α(i , j) = |G (i − 2, j) + G (i + 2, j)

2− G (i , j)|

β(i , j) = |G (i , j − 2) + G (i , j + 2)

2− G (i , j)|

α e β rappresentano due indicatori che permettono di stimare seun pixel e di bordo (da cui il nome dell’algoritmo):

I se α < β allora (i , j) e una posizione di bordo verticale

I se α > β orizzontale

I altrimenti non e in un bordo

Individuato il tipo di pixel vogliamo assegnargli un valore di G, equindi di luminosita, interpolando in modo da attraversare il bordo,il che aiuta nell’evitare artefatti sui contorni; rispettivamente:

I G (i , j) = G(i−1,j)+G(i+1,j)2

I G (i , j) = G(i ,j−1)+G(i ,j+1)2

I G (i , j) = G(i−1,j)+G(i+1,j)+G(i ,j−1)+G(i ,j+1)4

Ora ogni pixel ha un valore di luminosita/verde ma alcuni hannosolo G, altri sia G sia B (R); poniamo di volere aggiungere il canaleR ad un pixel (i , j) cui manca; il sistema e il seguente:

I se type(i , j) = G alloraI se i pari (es. G23) allora

R(i , j) =D(i − 1, j) + D(i + 1, j)

2+ G (i , j)

I altrimenti (es. G32)

R(i , j) =D(i , j − 1) + D(i , j + 1)

2+ G (i , j)

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

R(i , j) =D(i − 1, j − 1) + D(i − 1, j + 1)

4+D(i + 1, j − 1) + D(i + 1, j + 1)

4+G(i , j)

dove D(i , j) = R(i , j)− G (i , j)

In modo del tutto analogo e l’aggiunta di B ai pixel di tipo G e GR

Risultato

Prima del bilanciamento

Dopo il bilanciamento (ground)

Dopo il bilanciamento (risultato)

Alternative di bilanciamento del bianco

A partire dall’immagine demosaicata, abbiamo bilanciato il biancograzie all’informazione colorimetrica, avendo associato ad una seriedi colori nativi le loro controparti corrette nello spazio XYZ

Sperimentiamo ora tre alternative algoritmiche di bilanciamento:

I gray world

I white world

I scale-by-max

L’algoritmo gray world si basa sull’assunzione che il colore mediodell’immagine sia un grigio

Questa assunzione e statisticamente valida per immagini di grossedimensioni e molto colorate

Algoritmo:

I il colore medio avgRGB e calcolato facendo la media canaleper canale

I il grigio medio grayValue facendola sulle componenti diavgRGB

I il valore di scala scaleValue si ottiene dividendo grayValue perle componenti di avgRGB

I ogni canale e scalato per la rispettiva componente discaleValue

Cosı facendo, in ogni canale, piu le intensita si avvicinano a quelledel grigioavgRGB piu sono forzate a grayValue, ottenendo che ilgrigio stimato avgRGB emerga nell’immagine come(grayValue, grayValue, grayValue)

L’algoritmo white world prende a bianco dell’immagine nonbilanciata il pixel presente piu vicino al bianco del modello colore(il bianco tipicamente e un vettore costante a valore maxval , es.(255, 255, 255))

Trovato questo valore, l’immagine e scalata in modo che essoassuma bianco nell’immagine bilanciata

Algoritmo:

I si trova il valore piu vicino al bianco nell’immagine, refwhite

I si scala ogni canale i per il coefficiente maxval/refwhite(i)

Per l’algoritmo scale-by-max possiamo dire che e sostanzialmentecome il precedente, ma refwhite e calcolato prendendo il massimodi ogni canale

E’ quindi computazionalmente piu semplice ma meno robusto aglioutlier (es. in un’immagine 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 da unrisultato soddisfacente, mentre le tre procedure danno un certomiglioramento ma lasciano una dominante blu-verde

Salta anche all’occhio il fatto che white world e scale-by-maxdanno 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 differenzia da metriche come MSE (mean squared error) ePSNR (peak signal-to-noise ratio) nell’essere abbastanzaconsistente con la nostra percezione visiva

La principale intuizione e valutare la differenza tra immagini intermini di:

I luminosita

I contrasto

I struttura

La struttura generale della metrica separa queste caratteristiche,gia relativamente indipendenti, e permette di attribuire arbitrariaimportanza a ciascuna di esse (per esempio una scelta e privilegiarela struttura)

Una forma che da la stessa importanza a tutte e tre le componentie richiede solo due costanti arbitrarie e

SSIM(A,B) =(2µAµB + C1)(2σAB + C2)

(µ2A + µ2B + C1)(σ2A + σ2B + C2)

dove C1 = (k1L)2, C2 = (k2L)2 con k1, k2 << 1 ed L rangedinamico delle immagini (es. 8 bit → L = 256)

A e B sono sottoimmagini di uguali dimensioni delle due immaginiI e J da comparare, dove I e la ground reference e J l’immagine inesame

Gli autori suggeriscono finestre quadrate di dimensione 8, ed eanche consigliato di operare non su I e J direttamente ma sullaloro 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:

I col.: .8832

I gw: .5894

I ww, sbm: .6866

Costruendo un’immagine di forma M(i , j) = SSIM(Aij ,Bij)abbiamo uno strumento visivo per individuare le aree in cui leimmagini differiscono particolarmente

Nelle immagini seguenti visualizziamo queste mappe caso per caso,canale per canale; l’intensita M(i , j) e inversamente proporzionaleallo score SSIM(Aij ,Bij) (cio si puo dedurre provando con dueimmagini uguali)

target vs colorimetrico

target vs gw

target vs ww/sbm

Codice MATLAB

I lo script ES3.m esegue il bilanciamento del colore sia sullatabella colore sia sull’immagine raw, ed e ampiamentecommentato

I per la demosaicatura e utilizzato il comando MATLABdemosaic, mentre gli algoritmi di bilanciamento del biancosono stati messi in singole funzioni

I per SSIM e stata adoperata l’implementazione fornita

Esercizio 4 - Image stitiching

Data una serie di immagini ci e richiesto di affiancarle in modo daottenere un’unica panoramica

Il programma utilizzato e Autostitch e la teoria brevementedescritta di seguito (Brown et Lowe) e quindi quella applicata dalprogramma

Passi principali:

I estrazione di punti salienti dell’immagine attraverso SIFT,Scale-invariant feature transform (feature detection)

I loro allineamento tra tutte le immagini (feature matching)

I formulazione di un modello geometrico di allineamentoimmagini tramite una particolare mappa proiettiva,l’omografia (image alignment)

I sua costruzione attraverso RANSAC (RANdom SAmpleConsensum)

I image multi-band blending

SIFT

Concetto base: individuare nel piano immagine punti di particolareimportanza che, presi a particolari gruppi, rappresentanoinformazione che:

I sopravvive a diverse scale (es. in ogni piano di una piramidegaussiana)

I e invariante a trasformazioni di luminosita, scala, rotazione ecc

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 :

I all’immagine di partenza e applicato l’operatore gaussiano kdistinte volte con deviazione standard kσ0 ad ogni iterazione;

I k e scelto in modo che il numero di immagini per ogni ottava(= multiplo di 2 di σ0) sia costante

I ogni ottava e suddivisa in s intervalli in modo che k = 21/s ebisogna che ci siano s + 3 immagini per ottava

I ad ogni iterazione si calcola la DoG tra il piano corrente ed ilprecedente

I arrivati all’immagine filtrata con 2σ0, la si sottocampiona diun fattore 2 e si ripete questa procedura ripartendo da σ0

Point detection:

I per ogni scala/ottava, per ogni piano in essa tranne il primo el’ultimo e per ogni pixel si individua il suo intorno di Moore edi corrispondenti ai piani inferiore e superiore

I se il pixel in esame e un minimo o un massimo di questi 26vicini, p = (x , y , kσ0) e considerato candidate keypoint

Scrematura offset e contrasto:

I ogni DoG e rappresentabile in formaD(x , y , kσ) = G (x , y , (k − 1)σ)− G (x , y , kσ), immaginedifferenza tra due filtraggi gaussiani a successiva deviazionestandard; D(x , y , σ) e una funzione, di cui si possono cercaremassimi e minimi locali

I costruiamo l’espansione

D(x) = D +∂DT

∂xx +

1

2xT∂2D

∂x2x

con centro il candidato p (quindi in p valutiamo D e le suederivate) e x = (δx , δy , δσ) offset incognito

I il valore dell’estremo z in termini di offset dal candidato p siha ponendo D ′(x) = 0

I se in una qualsiasi dimensione z e maggiore di .5 si ripetecentrando in p + z; altrimenti il candidato e valutato rispettoal contrasto

I se p non converge dopo poche iterazioni, e scartato

I se |D(z)| < .03 p e scartato (contrast discard), altrimenti lasua posizione e aggiornata, p′ = p + z

Scrematura edge (richiede geometria differenziale non banale!):

I per loro natura, i punti di bordo sono i candidati tipici chearrivano alla selezione, ma determinano ridondanza

I calcoliamo l’hessiana di D(x), H =

[Dxx Dxy

Dxy Dyy

]I se uno dei due autovalori di H e molto piu grande dell’altro,

siamo in presenza di un bordo, mentre se sono simili il punto ed’angolo se sono grandi

I per selezionare possiamo allora richiedere che sia

tr2(H)

det(H)<

(r + 1)2

r

con r soglia arbitraria

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

L’invarianza per scala deriva dal gaussiano e dalsottocampionamento; rispetto alla rotazione si ottiene aggiungendouna componente d’orientamento ai punti scelti p = (xn, yn, kσ0):

I si seleziona il piano laplaciano kσ0 e si calcola il modulo el’angolo del gradiente immagine in ogni punto di un intornoscelto 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 )

I le intensita sono pesate (es. gaussiana centrata in (xn, yn)) edil range di angoli e partizionato

I si costruisce un istogramma con un bin per partizione,contenente la somma delle intensita pesate dei punti (xi , yi )che hanno gradiente ad angolo che ricade nella partizione

I si assegna come orientazione a (xn, yn) l’angolo mediano dellapartizione associata al bin a valore piu alto

I in caso ci siano piu picchi vicini, e possibile assegnare piuorientazioni, o combinarle

Ogni keypoint ha ora coordinate, scala, orientazione ma per poterconfrontare punti di diverse immagini e necessario aggiungereinformazione; per esempio non abbiamo ancora garantitoinvarianza alla luminosita

Formulazione descrittori:

I per ogni punto, posizioniamoci nell’immagine DoG piu vicinaalla sua scala ed individuiamo un intorno 16x16 intorno adesso, da suddividere ulteriormente in 16 regioni 4x4

I per ogni regione si calcola un’istogramma orientazione vsmodulo come sopra, ad 8 bin

I essendoci 16 regioni ognuna con un istogramma ad 8 valori, ildescrittore risultante e un vettore di 128 valori

I esso e normalizzato a lunghezza unitaria, per robustezza acambi d’intensita che seguono una mappa affine

I infine e sogliato ad un valore arbitrario adatto a resistere avariazioni d’intensita frutto di rumore e nuovamentenormalizzato

I descrittori sono vettori a 128 elementi, una qualsiasi distanza eapplicabile

Sperimentalmente pero stabilire una soglia esatta per definiresufficientemente bassa la distanza tra due descrittori e difficile

Approccio: si ordinano in modo crescente le distanze d(p,pi) dovep e il punto in esame, definendo la successione {dj}, e se d1

d2< .8 si

da il match

La corrispondenza e univoca solo nel caso ideale: nel caso di piupunti pi la scelta dipende dalle applicazioni (es. centro chigliaconvessa)

Omografie

Un piano proiettivo e una struttura geometrica che estende ilconcetto di piano euclideo, e un piano con dei particolari puntiall’infinito dove anche le rette parallele s’intersecano

In un piano proiettivo quindi qualsiasi coppia di rette si interseca inuno ed un solo punto, che e l’intersezione classica se s’incrocianood un punto all’infinito se sono parallele

I punti di un piano proiettivo sono espressi in coordinateomogenee:

I in 2D, p = (x , y ,w) e un punto di coordinate (x , y) e scala w

I rappresenta la classe d’equivalenza di tutti i punti cartesiani(x ′, y ′) tali che x ′ = wx , y ′ = wy

I due punti sono quindi uguali in senso proporzionale, cioe secoincidono ma a scale diverse

Idea: formalizzare un piano immagine come piano proiettivo,infatti la proiezione prospettiva/3D determina punti di fuga perogni retta parallela della realta fotografata

Un’omografia/trasformazione prospettica e una mappa da un pianoproiettivo in se stesso che mappa rette (= punti, per la dualitaimplicata dalle coordinate omogenee) in rette

Puo essere adoperata per formalizzare come variano le posizionipercepite se varia il punto di vista dell’osservatore

In due distinte immagini quindi i punti omografi sono lo stessopunto, ma da differenti angolazioni

Un’omografia e rappresentabile come una matrice 3x3, e tra dueimmagini possiamo costruirla a partire avendo parametrizzato lecamere che le hanno acquisite (camera models)

La lunghezza focale f e la distanza tra il centro della lente e ilpiano focale (piano su cui si forma l’immagine fotografata)

Una camera al momento dello scatto puo essere rotata sugli assispaziali di una quantita (θ1, θ2, θ3)

Queste informazioni si possono codificare in due apposite matrici,K ed R a formalizzare la mappa di proiezione dell’immagine, P

L’omografia H tra le immagini I e J e allora H = PJPI−1

RANSAC

RANSAC e una procedura probabilistica per stimare un modello apartire da dati osservati (data fitting)

E’ particolarmente robusta, se instanziata con cura, ad insiemi didati con molti outlier points, causati da rumore od errateosservazioni

Input:

I data set S

I algoritmo del modello A

I iterazioni k

I numero campioni n

I numero di nuovi inliers m

I tolleranza ε

L’idea della procedura e di iterare la selezione casuale di unsottoinsieme di punti e la costruzione del modello su di essi sottol’ipotesi che siano inliers

Terminato il ciclo e scelta la realizzazione del modello che hamostrato migliore precisione

Iterazione:

1. un sottinsieme di n punti e selezionato casualmente da S

2. si applica l’algoritmo A di fitting su di essi (inliers) ottenendoun’istanza del modello Mi

3. i restanti punti (outliers) sono misurati rispetto ad essa,valutandone l’errore: se inferiore alla tolleranza ε, sonoconsiderati anch’essi inliers

4. l’istanza e scartata se non e stato possibile aggiungere unnumero maggiore-uguale ad m di nuovi inliers a quelli d’ipotesicampionati al punto 1; in questo caso l’iterazione termina

5. altrimenti, l’istanza Mi e riformulata sul nuovo insieme diinliers, rieseguendo quindi A sugli iniziali e sugli aggiuntiassieme

6. si stima l’errore Ei dell’insieme di inliers rispetto allariformulata M ′i

I ora:I se e la prima iterazione, salviamo la formulazione,

curr = (M ′1,E1)I altrimenti confrontiamo questa con la sua controparte nel

modello della precedente iterazione se presente, curr , e serisulta Ecurr ≤ Ei l’istanza e scartata, diversamente sostituiscela precedente, curr = (M ′i ,Ei )

RANSAC e per natura un metodo iterativo: se p e la probabilitache p ∈ S sia un inlier, la probabilita di trovare la corretta istanzae:

P(Mcurr is correct) = 1− (1− (p)n)k

In Autostitch:

I n = 4, cioe sono scelte per coppia d’immagini 4 coppie (pi,pj)dove pi e pj sono punti SIFT corrispondenti nelle dueimmagini

I k = 500

I m, ε impliciti (il programma permette di regolare RANSACattraverso due altri parametri α, β)

I M: matrice d’omografia H

I A: metodo DLT (direct linear transformation)

Blending

Il procedimento e ispirato al laplacian blending visto sopra, perchee un buon modo di amalgamare i contenuti di due immaginiproporzionalmente al loro contenuto informativo cioe:

I basse frequenze/struttura - vasta scala (es. cieli)

I alte frequenze/dettagli - piccola area (es. pareti rocciose)

Esprimiamo l’immagine 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:

W imax(θ, φ) =

{1, se W i (θ, φ) = arg maxj W j(θ, φ)

0, altrimenti

cioe W imax(θ, φ) = 1 se considerando il pixel (θ, φ) in tutte le

immagini Ij , Ii e quella che ha peso massimo in esso

3. si forma una versione passa alto B iσ dell’immagine Ii

attraverso DoG

4. si opera un passa basso W iσ sull’immagine funzione peso

massimo

5. una piramide immagine per B iσ e per W i

σ e assemblata

1. combiniamo la coppia di piramidi di ogni immagine i ad unacerta scala σ con la formula seguente:

Imbkσ (θ, φ) =

∑ni=1 B i

kσ(θ, φ)W ikσ(θ, φ)∑n

i=1 W ikσ(θ, φ)

2. collassiamo la piramide ottenuta

Risultati

Ground - trasformazione prospettica

Risultato - il panorama e stato costruito senza modificare i parametri diAutostitch preimpostati a partire dalle immagini {0, . . . , 4, c , d , e}

L’immagine risultante ha dimensioni non e esattamentecomparabili alla ground per via della bordatura e delle dimensioni

ssim.m richiede due immagini delle stesse dimensioni e se troppograndi finisce la memoria, quindi le ho portate entrambe a1723x3628 (1723 e la media mentre 3628 e meta della media)

Lo score e .2866, il risultato e visivamente buono e non si e persainformazione durante la composizione; un handicap del risultato el’irregolare bordatura nera (possibile soluzione: estrapolazione)

Ground - trasformazione prospettica

Il programma Autostitch e liberamente scaricabile all’indirizzohttp:

//www.cs.bath.ac.uk/brown/autostitch/autostitch.html,ed allo stesso indirizzo si puo trovare anche ampia documentazioneteorica

Esercizio 5 - Image color/mood transfer

Valutiamo due approcci alternativi a quello visto in aula:

I histogram matching

I histogram sliding

Nel primo cerchiamo di portare sistematicamente l’istogrammadell’immagine target vicino a quello dell’immagine modello

Nel secondo operiamo sui valori pixel in modo che, in media, duepixel qualsiasi delle due immagini siano uguali

Histogram matching :

I Siano HT ed HM gli istogrammi delle immagini target T emodello M, di range dinamico L; cerchiamo unatrasformazione g : L×N→ L×N tale cheg(T (k)) ≈ M(k) ∀k ∈ L

I una strategia esplicita e trovare una trasformazione f : L→ Lche minimizza

HcumM (f (k))− Hcum

T (k)

cioe che fa sı che gli istogrammi cumulatiHcum(k) =

∑ki=1 H(i) siano il piu possibile uguali

I imponiamo i seguenti vincoli su f :I monotonicita: data una qualsiasi coppia (k , k ′) con k ≤ k ′

risulta f (k) ≤ f (k ′), l’ordine e mantenutoI accuratezza: dev’essere

HcumM (f (k))− Hcum

T (k) < |HM (k)|−|HT (k)|2

I il risultato finale si ha applicando la trasformazione fall’immagine T

Histogram sliding :

I calcoliamo il colori medi di T e di M, avgM , avgTI sia δavg = avgM − avgT la loro differenza

I correggiamo T sommando ad ogni suo canale lacorrispondente componente in δavg

Risultati

Immagine modello M

Immagine target T

Histmatch

Histslide

Istogrammi

Le due funzioni MATLAB utilizzate sono histmatch.m emeancorr.m

histmatch.m si basa sul comando histeq

NPR - Non-photorealistic rendering

Effetti:

I neon glow

I spraycan effect

I comic book effect

Il codice e frutto di sperimentazioni e prove personali inMathematica ed e contenuto nel modulo LameDIP.m

L’effetto neon glow ritorna una particolare immagine di bordo chericorda luci al neon al buio

Algoritmo:

1. l’immagine di input I e processata con un operatore gradientedi raggio 3, A = grad(I , 3) cioe e effettuata una convoluzionetra l’immagine I ed un kernel w ottenuto campionando laderivata di una gaussiana (r = 3, σ = r/2)

2. si converte il risultato a valori di grigio, B = gray(A)

3. l’immagine corrente e colorata a sfumature di un colore rgbdato, ossia si trasforma in modo che il suo grigio sia posto adrgb, C = shade(B, rgb)

4. si costruisce una serie di maschere D1, . . . ,Dk con Di ottenutaoperando su C un filtraggio gaussiano (r = 10i , 10i/2), k dato

5. l’immagine finale e E = C +∑k

i=1 Di

Target

k = 1

k = 5

k = 10

Come il nome suggerisce, l’obiettivo dell’effetto spraycan esimulare un’opera a vernice spray

Algoritmo:

1. l’immagine d’ingresso I subisce una quantizzazione del colore che la portaad avere 5 soli colori distinti, A = cq(I , 5), individuando macchie di colore

2. si calcola l’immagine prodotto B = AI , di pseudo-riduzione del colore

3. filtraggio gaussiano di raggio 3 ed std 1.5 su B, C = gau(B, 3, 1.5)

4. sharpening dell’immagine C (ad esempio mediante somma del laplaciano)

5. C e filtrata due volte con un kernel gaussiano raggio 3, ottenendol’immagine 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 intensita data

10. l’immagine finale e J = CH, la quale puo richiedere schiarimento

Target

k = 2

La procedura comic book e sostanzialmente uguale alla precedenteanche se il risultato e notevolmente diverso (per i dettagli sirimanda al codice)

Target

k = 60

top related