Esercitazioni di elaborazione delle immagini AA 08-09

n.ConsegnaDescrizione
1 22/10/2008 Scrivere un programma che prenda un in input una immagine a colori e scriva in output 16 immagini in scala di grigio che contengano i canali degli spazi RGB, CYMK, HSV, HSL e YCbCr.
25/11/2008 Scrivere 3 programmi.
Il primo prenderà in input una immagine in scala di grigio a 8 bit ed un file contenente una trasformazione nello spazio dei colori rappresentata come 256 valori interi compresi tra 0 e 255. La trasformazione è e tale che l'i-esimo valore di grigio sia mappato nel i-esimo valore di questa sequenza. Il programma applicherà quindi la trasformazione all'immagine scrivendo l'immagine trasformata come output.
Il secondo programma prenderà in input una immagine ed una zona rettangolere della stessa e scriverà in output la trasformazione relativa alla equalizzazione della zona desiderata.
Il terzo programma prenderà due trasformazioni che rappresentano trasformazioni di equalizzazione di due immagini e scriverà in output una trasformazione che porti l'istrogamma della immagine relativa alla prima trasformazione ad essere il più possibile simile all'istogramma della immagine che ha prodotto la seconda trasforamzione.
326/11/2008 Scrivere un programma che prenda due immagini e quattro coordiante nella prima immagine e restituisca una nuova immagine ottenuta inserendo la seconda immagine nella prima attraverso una deformazione prospettica che mappi i quattro angoli esterni della seconda immagine con le quattro coordinate date.
Una trasformazione prospettica può essere espressa nel seguente modo:
  1. dato un punto (x,y), lo trasformiamo in coordinate omogenee aggiungendo un 1 in fondo: (x,y,1)
  2. la trasformazione prospettica in coordinate omogenee viene espressa da una matrice 3x3 A=[a11, a12, a13; a21, a22, a23; a31, a32, 1].
    Il punto (x,y,1) diventa quindi (v,w,z)=A(x,y,1).
  3. Il punto viene quindi riportato in coordinate omogenee dividendolo per la terza coordianta (v/z,w/z,1), ottenendo quindi il punto 2D (v/z,w/z).

Rimane il problema di stimare i coefficienti della matrice A. Questo viene fatto risolvendo un sistema lineare nelle otto incognite (a11, a12, a13, a21, a22, a23, a31, a32). Per questa stima ci servono otto vincoli e quindi quattro coordinate 2D. Assumiamo di voler stimare i coefficienti della trasformazione che porta i punti di coordinate (x11,y11), (x21,y21), (x31,y31), (x41,y41) alle coordinate (x12,y12), (x22,y22), (x32,y32), (x42,y42), questi si ricaveranno dalla soluzione del sistema di equazioni lineari del tipo
per ogni i, [A(xi1,yi1,1)]1=xi2[A(xi1,yi1,1)]3
per ogni i, [A(xi1,yi1,1)]2=yi2[A(xi1,yi1,1)]3
da cui ottengo il sistema lineare

sys

43/12/2008 Scrivere un programma che prenda in input una immagine, ne calcoli la trasformata di Fourier e scriva in output una immagine I'(x+w/2,y+h/2)=log(|F(I)(x,y)|+1), dove I è l'immagine iniziale di larghezza w e altezza h, |a+ib|=sqrt(a2+b2) è il modulo di un numero complesso e la traslazione della immagine serve per centrare la frequenza (0,0) nel pixel centrale (w/2,h/2). Scalare il range dei colori in modo che sia compreso tra 0 e 255. Applicare inoltre ad I un filtro passa basso ideale di raggio r (parametro dato in input).
Nota: la maggior parte delle librerie per la FFT richiedono che le dimensioni della immagine siano potenze di 2. dato I estendete ogni dimensione fino alla più piccola potenza di 2 superiore copiando il valore dei pixel più vicini.
[Esempio: immagine trasformata]
517/12/2008 Scrivere un programma che prenda in input una immagine (in scala di grigi), ne calcoli il modulo del gradiente usando un filtro "derivata della Gaussiana", e determini le k (parametro) linee più supportate usando la trasformate di Hough. Durante il calcolo della trasformata di Hough, ogni punto dovrà votare per le rette che passano per il punto con un peso proporzionale alla risposta del filtro di edge detection (il modulo del gradiente). Il programma dovrà quindi dare in output l'immagine in input con le k linee sovraimposte.
6esame Scrivere un programma che prenda in input due immagini, ne estragga gli angoli usando il corner detector di Harris, e chieda all'uente di selezionare 4 punti così estratti da ciascuna immagine. Il programma dovrà quindi unire le due immagini applicando alla seconda immagine la trasformazione prospettica che faccia coincidere i punti selezionati con i corrispondenti punti della prima immagine.
Note: Allargate la dimensione della immagine risultante in modo che questa contenga completamente tutte e due le immagini. Per risolvere l'ambiguità tra i punti in comune delle due immagine, date precedenza al colore/valore di una delle due (scegliete voi se la prima o la seconda).

Risultati Esercitazione 1

Andrea Brisotto5/5
Andrea Carrer5/5
Antonio De Faveri-/5
Giuseppe Delli Santi5/5
Tommaso Malgherini5/5
Alberto Carraro4.5/5
Nicola Palma5/5
Tognana-/5

Risultati Esercitazione 2

Andrea Brisotto4.5/5
Andrea Carrer2/5
Antonio De Faveri3/5
Giuseppe Delli Santi5/5
Tommaso Malgherini4.5/5
Alberto Carraro4/5
Nicola Palma4.5/5
Tognana4.5/5
NB: Le esercitazioni sono personali, non di gruppo. Soluzioni *identiche* saranno penalizzate!

Risultati Esercitazione 3

Andrea Brisotto3/5
Andrea Carrer4/5
Giuseppe Delli Santi4.5/5
Tommaso Malgherini5/5
Alberto Carraro3/5
Nicola Palma3/5
Tognana4.5/5

Risultati Esercitazione 4

Andrea Brisotto3/5
Andrea Carrer3.5/5
Giuseppe Delli Santi5/5
Tommaso Malgherini4.5/5
Alberto Carraro5/5
Nicola Palma5/5
Tognana4.5/5

Risultati Esercitazione 5

Andrea Brisotto4/5
Andrea Carrer4/5
Giuseppe Delli Santi5/5
Tommaso Malgherini4/5
Alberto Carraro5/5
Nicola Palma4.5/5
Tognana5/5