Permette una visualizzazione più comoda del sistema di riferimento della videocamera se questa è in movimento, e inoltre, può descrivere un piano dell’immagine non allineato al sistema di riferimento della videocamera (distorsione del sistema ottico).
Dalle formule sulle proiezioni prospettiche, ricaviamo:
Dove:
è la traslazione dall’origine;
I versori A,H,V sono trasposti perché normalmente troviamo i vettori in colonna, qui li rappresentiamo in riga.
Essenzialmente questo modello applica un cambio di sistema di riferimento, dato che si ha una traslazione dell’origine.
Ci interessa sapere il movimento di tutti gli elementi della immagine (a seconda della separazione che utilizziamo, pixel, blocchi, etc…).
Ogni pixel contiene un valore diverso da quello iniziale. All’inizio, potrebbe non essere noto. Di solito infatti si stima un , perché , cioè il movimento reale, è difficile da stimare correttamente.
Se ci sono molti elementi significa che mi sono avvicinato molto a , e quindi ho stimato correttamente il movimento.
Con Z: asse perpendicolare all’immagine (di profondità), e Y: asse altezza.
Potrebbe non essere immediatamente chiaro nel contesto delle rotazioni: immagina di utilizzare l’asse di rotazione appunto come ‘perno’ su cui la telecamera ruota.
Lo Zoom è una variazione della focale. Difatti è il rapporto tra la focale ‘dopo’ e ‘prima’. Inoltre, nello zoom lo spostamente dipende dalle coordinate: se siamo vicini allo zero, avremo piccoli spostamenti. Mentre invece se siamo vicini a bordi, noteremo più movimento.
Questo comportamento è facilmente intuibile anche usando la formula:
Inoltre, anche dalla formula, notiamo che lo zoom non dipende dalla , mentre invece il Dolly sì. Nel Dollying il movimento lungo l’asse influisce.
Tilt, Pan approssimato (fatta molto velocemente) §
Fondamentalmente, tutte le rotazioni derivano da matrici di rotazioni vere e proprie, come è facile immaginare. L’approssimazione funziona se assumiamo che:
In altre parole, le operazioni non dipendono dalla posizione nel frame, ma solo dai . Può quindi variare la posizione centrale
Se non valgono le condizioni specificate pocanzi, non vale più la matrice di rotazione
Consideriamo il caso in cui una telecamera effettua in sequenza: boom, tracking, pan, tilt, zoom e rolling;
Usando le approssimazioni viste in precedenza è possibile mappare una funzione a 4-parametri che riassume tutte le trasformazioni;
Se l’ordine dovesse cambiare, la formula rimarrebbe valida, ma cambierebbero le relazioni fra i 4-parametri e i parametri delle singole trasformazioni.
Tutta la matrice di trasformazione non viene chiesta all'esame (di solito)
Gioitene tutti 😇
Il modello a 4-parametri è un caso particolare di trasformazione affine (affine mapping) normalmente a 6 parametri, prende il nome di trasformazione geometrica (geometric mapping), e caratterizza qualsiasi combinazione di scaling, rotazione e traslazione in 2D.
La rotazione di un oggetto attorno all’origine dello spazio 3D è data dalla matrice di rotazione:
che non ricopio completa qui perché dovrebbero pagarmi.
Cose importanti da ricordare:
Sebbene la matrice ha 9 elementi, essa è determinata solo da 3 angoli di rotazione.
Le relazioni che otteniamo sono note come il caso generale del mapping di traslazioni e rotazioni arbitrarie da spazio 3D a spazio 2D
Rispetto al modello a 4-parametri, con questo modello a 6-parametri è possibile considerare anche traslazioni lungo l’asse Z (dollying) e rotazioni attorno ad assi arbitrari.
Evitiamo una rappresentazione globale, dato che non funziona bene se nella scene sono presenti più oggetti che si muovono in maniera differente.
Evitiamo però anche una rappresentazione basata sui singoli pixel che compongono l’immagine, dato che richiede la stima di troppi vettori di movimento.
I criteri che funzionano sono:
Rappresentazione basata su regione: segmentiamo l’immagine in regioni con algoritmi di edge detection.
Computazionalmente oneroso, potrebbe risultare difficile da generalizzare;
Rappresentazione basata su blocchi:
Buon compromesso fra accuracy e complexity;
Problemi di discontinuità solo sul bordo dei blocchi (risolvibile)
Nella rappresentazione basata su blocchi ricordo come si sono spostati i blocchi e la differenza tra la stima effettuata e il movimento reale.
Target Frame a il frame su cui stimare il relativo movimento:
backward motion estimation;
forward motion estimation
Il nostro obiettivo sarà minimizzare la differenza.
Definiamo inoltre una funzione di mapping:
Dove sono i parametri di movimento (da stimare!).
Stiamo essenzialmente tentando di capire che tipo di spostamento è avvenuto.
Errore DFD
Dove:
insieme dei pixel nell’anchor frame ;
intero positivo; casi particolari:
è detto mean absolute difference (MAD)
è detto mean squared error (MSE)
L’errore è calcolato nel frame trasformato e il frame immediatamente prima.
Ragionamento
Sappiamo che la derivata di una funzione si azzera nei punti di minimo e massimo. Dato che vogliamo minimizzare l’errore, prendiamo la derivata.
Affinchè la stima dei parametri sia la migliore, si dovra minimizzare
Essendo un vettore, dovremo in generale imporre che il gradiente di .
Ad esempio, per (MSE) il gradiente sarà:
Dove è una matrice contenente le derivate parziali di tutti i parametri di movimento, ed è una matrice brutta brutta che vogliamo approssimare (ed analiticamente non si può fare).
Consideriamo la rappresentazione di movimento basata su blocchi.
I blocchi possono avere qualsiasi forma geometrica, ma per semplicità assumiamo che siano quadrati.
Devono rispettare le seguenti leggi:
Cioè l’unione di tutti i blocchi restituisce l’intero frame ( ), e l’intersezione di tutti i blocchi restituisce un insieme vuoto (non vi è sovrapposizione tra frame).
Assumiamo inoltre che tutti i pixel di un blocco si muovano nella stessa direzione, con un MV per blocco (modello traslazionale blockwise).
Dato l’anchor frame(?) vogliamo trovare il target frame che minimizza l’errore DFD.
Per trovare il migliore confrontiamo i fra l’anchor frame e un sottoinsieme dei possibili target frame all’interno di una regione di ricerca.
Si inizia con un passo di ricerca uguale (o leggermente maggiore) alla metà del raggio di ricerca R;
Ad ogni passo dell’algoritmo ri riduce il passo di ricerca della metà, finché non sarà pari a 1
Effettuiamo infine EBMA solo su una ragione molto più piccola (quella probabile).
In un intorno di 8 punti, +1 quello in cui mi trovo già.
Al primo passo:
Si calcola il miglior MV su 9 punti di ricerca entro un raggio di ricerca
Dal secondo passo in poi:
Si pone
Si calcola il miglior MV su 8 punti di ricerca entro un raggio di ricerca
Se reitera finché
Nota bene: a dispetto del nome, potrebbero esserci più di tre passi di ricerca. In casi particolari potremmo anche non trovare effettivamente il minimo ottimo, ma quanto meno siamo vicini.
RISPOSTA DOMANDA ESAME❗ :
formula fondamentale da ricordare.
Quesito: Alla fine dell’esecuzione di un’istanza dell’algoritmo di block matching Three-Step-Search si osserva che per un singolo blocco sono stati visitati 73 punti di ricerca. Qual è il passo di ricerca iniziale R0?
Procedimento:
;
Sappiamo che sono stati visitati 73 punti. In ogni passo di ricerca io visito 8 punti+1, quindi, con punti di ricerca:
;
Sostituendo nella formula precedente:
Elevando entrambi i membri, ottengo:
Che mi restituisce il passo di ricerca iniziale , quello che stavo cercando.
Algoritmo per estrarre punti chiave “Features from Accelerated Segment Test”.
Individua dei punti salienti (corner) nel frame, da usare come features per tracciare il movimento.
Si analizza ad ogni passo un insieme di 16 punti con configurazione a cerchio di raggio 3 per classificare se un punto sia di corner o meno.
Data l’intensità del punto , se per almeno 12 punti contigui con l’intensità si ottiene che , con soglia, allora sarà un punto di corner.
Quindi, non andiamo a prendere tutti i blocchi, ma individuiamo dei keypoints.
In altre parole, stiamo confrontando la luminanza del centro con la luminaza dei possibili punti corner.
Si fanno le differenze in valore assoluto, se almeno 12 punti consecutivi superano la soglia, allora il punto analizzato ci interessa.
La soglia si sceglie arbitrariamente (di solito a seconda di alte differenze percettive).
Dato un Cerchio di Bresenham di raggio 3:
Ci devono essere almeno punti consecutivi che superano la soglia.
RISPOSTA DOMANDA ESAME❗ :
Questo punto P è di corner?
Sì, se ci sono 12 punti consecutivi la cui differenza supera la soglia, altrimenti no!
Formula da utilizzare (come sopra):
è
Se un qualsiasi passaggio è falso, allora possiamo già escludere il punto.
Inoltre, possiamo semplificare il calcolo: invece di prendere i punti sequenzialmente, eseguiamo il calcolo nei punti che potrebbero interrompere la sequenza consecutiva:
Un’altra possibile semplificazione è quella di calcolare i punti nell’intorno del primo punto preso in considerazione: