# Detecció de primer pla

La detecció de primer pla és una de les grans tasques en l'àmbit de la visió per computador que té com a objectiu principal detectar canvis en seqüències d'imatges. Moltes aplicacions no necessiten conèixer tota l'evolució del moviment en una seqüència de video, sinó que només requereixen la informació dels canvis en l'escena.
La detecció de primer pla intenta separar aquests canvis que es produeixen en el primer pla del fons. Es tracta d'un conjunt de tècniques que, normalment, analitzen les seqüències de video en temps real i que són enregistrades amb una càmera estacionària.

## Descripció

Totes les tècniques de detecció de primer es basen a modelar abans de tot el fons de la imatge. És a dir, definir el fons i després veure quins canvis es produeixen en aquest fons. Definir-lo pot ser una tasca molt difícil quan aquest conté formes, ombres, i objectes que es mouen. A l'hora de definir el fons, s'assumeix que aquest consisteix en objectes estacionaris que poden tenir variacions de color i intenstat en funció del temps.
Els escenaris on s'apliquen aquestes tèniques acostumen a ser molt diversos. Poden ser seqüències molt variables, imatges amb una il·luminació molt diferent, interiors, exteriors, més qualitat o menys i així fins a un nombre molt elevat de possibilitats. Es necessita un sistema que, a part de poder processar en temps real, sigui capaç d'adaptar-se a totes aquestes variacions.
Un molt bon sistema de detecció de primer pla ha de ser capaç de:
* Obtenir el fons (estimació) tant si és variable com si és estàtic.
* Ser robust davant de canvis d'il·luminació, moviments repetitius al fons (fulles, ones, ombres), canvis a llarg termini (un cotxe que arriba i aparca).

## Tècniques

La detecció de primer pla ha estat un problema molt estudiat des de fa temps en el camp de la visió per computador. Hi ha moltes tècniques i estudis que tracten aquest problema basades en la dualitat de fons estacionari i dinàmic alhora.

### Filtre de mitjana temporal

Aquest sistema estima el model de fons a partir de la mediana de tots els píxels d'un cert nombre d'imatges anteriors. El sistema utilitza una memòria intermèdia amb els valors dels píxels de les últimes trames, per actualitzar la mediana per a cada imatge.
Per modelar el fons, el sistema estudia totes les imatges d'un període determinat anomenat temps d'entrenament. En aquest temps només s'hi visualitzaran imatges del fons i es farà la mediana, píxel per píxel, de totes les trames de fons d'aquest temps.
Després del període d'entrenament, per a cada trama nova, cada valor de píxel d'entrada es compara amb el seu valor de fons calculat prèviament. Si el pixel d'entrada està dins d'un llindar establert, es considera que el píxel coincideix amb el fons model i el seu valor s'inclou en la memòria intermèdia de píxels. En cas contrari, si el valor de píxel està fora d'aquest llindar, es classifica com de primer pla, i no s'inclourà en la memòria intermèdia.
No es pot considerar aquest mèdote molt eficient, ja que no presenta una base estadística rigorosa i precisa d'una memòria intermèdia que té un cost computacionalment elevat.

### Gaussianes variables

La idea principal d'aquest mètode és modelar el fons d'una manera més probabilística basada en la distribució gaussiana.
Cada píxel compta amb la seva distribució de probabilitat gaussiana caracteritzada per una mitja i una variància. Com que per a cada frame el fons pot anar canviant, la mitja i la viarància s'han d'anar actualitzant. Per fer-ho, segueixen les següents equacions:
On $I_{t}$ és el valor del pixel de la imatge a analitzar, $\mu _{t}$ i $\sigma _{t}^{2}$ són, respectivament la mitja i la variància de la distribució gaussiana, $\rho$ és el paràmetre que defineix la velocitat d'actualització (normalment $\rho =0.01$ i $d$ és la distància euclídea entre la mitja i el valor del píxel.
A part d'actualitzar en cada píxel les distribucions gaussianes, s'ha de classificar si el píxel a analitzar correspon al fons o a primer pla. Per fer-ho, hem comprovar si el píxel analitzat pertany a la gaussiana definida per al model de fons d'aquell valor de pixel. Ho fem seguint l'equació:
$|(I_{t}-\mu _{t})|<k\sigma _{t}\longrightarrow \operatorname {Primerpla}$
$|(I_{t}-\mu _{t})|\not <k\sigma _{t}\longrightarrow \operatorname {Fons}$
on el paràmetre $k$ és un llindar a especificar (normalment $k=2.5$).
Quan la desigualtat és satisfeta, el píxel és considerat de primer pla. En cas contrari, es considerarà fons.
Una variant del mètode proposa que l'actualització de les variables només s'hauria de fer quan el píxel a analitzar es consideri com a fons, ja que si es considera com a primer pla el model de fons d'aquell pixel no hauria d'haver canviat. Per tant, aquesta variant del mètode especifica una actualització diferent per la variable $\mu _{t}$. S'actualitza segons l'equació:
On $M=1$ quan $I_{t}$ és considerat de primer pla (foreground) i $M=0$ en el cas contrari. Així doncs, quan $M=1$, és a dir, quan el píxel sigui detectat com a primer pla, la mitja no s'actualitzarà, ja que el producte donarà com a resultat 0.
Aquest mètode, a part d'estimar un model de fons més semblant a la realitat, requereix menys memòria que l'anterior, ja que només han d'anar variant la mitjana i la variància.

### Model amb múltiples gaussianes

És el mètode proposat per Stauffer and Grimson i probablement el més important pel que fa a aquesta tasca. Aprofita la idea de modelar el fons amb funcions gaussianes, però en lloc d'utilitzar-ne només una per cada píxel i anar-la variant, considera que cada píxel pot tenir diferents estats en funció del temps. Per exemple, en un cel de color blau podem tenir núvols blancs que van passant variablement. Els píxels blaus, a part de ser blaus i variar aquest color, també poden ser blancs en una imatge consecutiva. El mètode de múltiple gaussianes proporciona per a cada píxel una sèrie de gaussianes que corresponen als estats on poden pertànyer.
Per cada píxel:
* Diferents gaussianes modelen diferents estats (colors) de l'escena.
* Cada gaussiana pot representar un model de fons o de primer pla.
L'algoritme a seguir té diferents passos:

#### Distribució de cada píxel (K gaussianes)

La distribució de cada píxel en una imatge ve definida per l'expressió:
On $k$ és el nombre de gaussianes utilitzades per modelar cada píxel (normalment entre 3 i 5), $\omega _{i,t}$ és el pes de cada gaussiana i $\eta (I_{t},\mu _{i,t},\sum i,t)$ és la definició de la gaussiana amb mitja ($\mu _{i,t}$) i matriu de covariància ($\sum i,t$).

#### Tria del model de fons (B gaussianes)

El fons per un píxel es modelarà amb les B gaussianes amb més pes i amb menys variància:
On $T$ és el llindar de decisió (normalment 0.6) i $B$ el nombre mínim de gaussianes per cada píxel.
* Per triar les B funcions del fons, les $k$ gaussianes de cada píxel s'ordenen per factor de pes $\omega _{i,t}$ i es trien les $B$ primeres. El pes en una gaussiana representa els cops que apareix, per a cada píxel, aquell estat. Com més aparegui un estat, la gaussiana anirà augmentant el pes. Per exemple, si un cotxe arriba a un parking i aparca, al començament, el color (estat) d'aquest cotxe no tindrà massa pes al conjunt de gaussianes, ja que no apareix gaire. Però a mesura que s'avança en el temps, el pes d'aquest estat a la distribució del píxel augmentarà, ja que el cotxe s'ha quedat estàtic i apareix sempre.
* També influeix la variància de les gaussianes a l'hora de fer l'ordenació.

#### Decisió fons o primer pla

Un cop tenim tots els píxels modelats podem triar si el píxel a analitzar pertany al fons o no.
* Un píxel serà de fons si el seu valor correspon amb ALGUNA de les B gaussianes ja que es considerarà que el seu valor ha aperegut molts cops anteriorment.
* Un píxel serà de primer pla si el seu valor NO correspon amb CAP de les B gaussianes ja que es considerarà que el seu valor ha aperegut molts cops anteriorment.
És a dir:
On $I_{t}$ és el píxel a analitzar, $\mu _{i,t}$ i $\sigma _{i,t}$ la mitja i la variància, respectivament, de la gaussiana a comparar i $L$ un llindar a especificar (normalment $L=2.5$).
Si un píxel no pertany a cap de les $K$ gaussianes del model se'n crearà una nova. Normalment, un píxel així serà considerat a primera vista primer pla, però, si aquesta gaussiana nova creada va aumengant el seu pes $\omega$ voldrà dir que es convertirà en una de les gaussianes del fons i aquest s'haurà convertit en un objecte estàtic. El nombre de gaussianes del fons ($B$) sempre és constant. Si aquesta nova gaussiana creada esdevingués fons degut a un augment del seu pes, aleshores una altra gaussiana seria eliminada del model de fons.

#### Actualització del fons

Finalment, tal com hem vist en la tècnica anterior, es farà una actualització del fons quan un dels píxels correspongui amb una de les $K$ gaussianes del model probabilístic.
Actualitzacions:

### Eigenbackgrounds

La idea d'aquest mètode és construir un fons mitjançant els autovectors d'aquest, és a dir, crearem una imatge de fons modèlica. Donat que una imatge conté la seva informació d'una manera matricial, en aquest mètode es fan servir els autovectors i els autovalors que es van obtenint. Un autovector (o vector propi) és aquell que no es veu afectat per les transformacions lineals i que en qualsevol cas no varia la seva direcció tot i ser multiplicat per un escalar. Alhora, un autovalor (o valor propi) serà aquell escalar pel qual es multiplica l'autovector associat. Aquest entorn és conegut com un autespai. S'obté, imatge a imatge, aquella matriu on es delimita un autoespai. Cal assenyalar que la major part del pes d'una imatge està continguda en pocs autovalors, de manera que els de menys pes seran rebutjables.
Aquest mètode, al contrari que el mètodes anteriors que es basen en dades estadístiques del píxel, es basa en dades estadístiques de l'escala de grisos sobre el temps.
Per obtenir el model de fons seguim el següent mètode:
* Triem un nombre $N$ d'imatges i calculem la mitja $\mu _{b}$ i la matriu de covariància $Cb_{b}$.
* Diagonalitzem la matriu de covariància $Cb_{b}$ per trobar la matriu d'autovectors $\phi _{b}$.
* Reduim aquesta matriu d'autovectors per triar només aquells que tenen més pes a la imatge. Hem de tenir una matriu d'autovectors amb M autovectors $\phi _{M}b$.
* Modelem el fons amb $Bt=X_{t}\phi _{M}b$ on $X_{t}$ és la diferència entre la imatge i la mitja calculada tal que $X_{t}=I_{t}-mu_{b}$.
* Detectem si una imatge és primer pla amb la desigualtat: $|(I_{t}-B_{t})|>t$ on $t$ és un llindar a especificar. Si la desigualtat es compleix podem dir que la imatge té un primer pla.
És una tècnica més senzilla i ràpida però perd precisió i és dificultós treballar amb dades a temps real donat a l'alt cost computacional de l'algoritme.

### Altres tècniques

La majoria de mètodes actuals utilitzen les diferents tècniques esmentades anteriorment combinades. Algunes tècniques d'aquestes són:
* Wren
* Zivkovic

## Aplicacions

La detecció de primer pla té múltiples aplicacions actualment.

### Seguretat

En l'àmbit de la seguretat, la detecció de primer pla pot:
* Avisar els humans de presències diferents a les esperades en espais enregistrats per càmeres.
* Reduir la possibilitat de passar per alt algun perill.
Per detecar la presència d'una persona no és necessari conèixer la forma d'aquesta ni la trajectòria. Amb una variació de canvis en l'espai podem detecar canvis inesperats.

### Trànsit

Múltiples aplicacions en l'àmbit de la seguretat viària i el trànsit en general. La detecció de primer pla pot:
* Comptar vehicles, amb la qual cosa detectar on hi ha més trànsit.
* Evitar col·lisions.
* Seguiment de vehicles.

### Reconstrucció 3D

Podem reconstruir en 3D objectes a partir de diferents punts de vista d'aquests. Segmentant les imatges de cada punt de vista i juntant tots aquests plans podem fer una reconstrucció 3D de l'objecte desitjat. Abans d'això, però, haurem de detectar el primer pla de les imatges que volem reconstruir.

### Detecció d'activitat

Aquests últims anys s'ha fet molta recerca en l'àmbit de la detecció d'activitat humana. Hi ha múltiples aplicacions relacionades amb aquest tòpic, tot i que la que més destaca és el reconeixement de gestos,,, ja que permet una interacció amb màquines i un enfocament a l'habitatge intel·ligent.

### Codificació

A la compressió de dades i més concret en aquest cas, la codificació d'imatge i video és comú intentar codificar amb més bits aquelles regions d'una imatge que són més importants per a la visió humana. Aquesta part de la imatge s'anomena regió d'interès i molt sovint correspon amb el primer pla de la imatge. Molts codificadors d'imatge s'està aplicant molt la codificació basada en el contingut de la imatge o codificació perceptual. Un d'ells és el JPEG 2000. És una tècnica molt utilitzada també en l'àmbit de la medicina ja que molts cops interessa fixar tota l'antenció en una regió de la imatge.

## Referències

* ↑ http://www.ai.mit.edu/projects/vsam/Publications/stauffer_cvpr98_track.pdf Publicació d'Stauffer and Grimson
* ↑ http://www.cvmt.dk/education/teaching/e06/CVG9/CV/CVG9ExercisePapers/pfinder.pdf Arxivat 2007-06-09 a Wayback Machine. Wren paper
* ↑ https://www.science.uva.nl/research/isla/pub/Zivkovic04icpr.pdf%5BEnllaç+no+actiu%5D Zivkovic

## Enllaços externs

* Background substraction per R. Venkatesh Babu Arxivat 2017-08-29 a Wayback Machine.
* Foreground Segmentation and Tracking based on Foreground and Background Modeling Techniques per Jaume Gallego
* Detecció i extracció d'avions a seqüències de vídeo per Marc Garcia i Ramis