Detecció de primer pla

De Viquipèdia
Dreceres ràpides: navegació, cerca

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 precisen de 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.

Imatge de fons i imatge de primer pla

Descripció[modifica | modifica el codi]

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[modifica | modifica el codi]

La detecció de primer pla ha sigut 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[modifica | modifica el codi]

Exemple de modelització del fons amb el mètode 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 de temps 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[modifica | modifica el codi]

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:


                                                       \mu_t =I_t\rho +(1-\rho)\mu_{t-1} 
                                                      \sigma^2_t=d^2\rho+(1-\rho)\sigma^2_{t-1} 
                                                             d=(I_t-\mu_t)^2


On  I_t  és el valor del pixel de la imatge a analitzar,  \mu_t  i  \sigma^2_t  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.

Distribució gaussiana per a cada píxel.

A part d'actualitzar en cada píxel les distrubucions 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 \mathit{ Primer pla }


  |(I_t-\mu_t)| \not<  k\sigma_t \longrightarrow \mathit{ 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'actualiza segons l'equació:


                                                  \mu_t =M\mu_t + (1-M)I_t\rho +(1-\rho)\mu_{t-1}  

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, precisa de 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[modifica | modifica el codi]

Distribució d'un pixel amb diferents gaussianes. Cada gaussiana representa un estat.

És el mètode proposat per Stauffer and Grimson[1] 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)[modifica | modifica el codi]

La distribució de cada píxel en una imatge ve definida per l'expressió:

                                                
P(I_t) =\sum_{k=1}^n \omega_{i,t}\cdot\eta(I_t,\mu_{i,t},\sum i,t)

On  k és el número de guassianes 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)[modifica | modifica el codi]

El fons per un píxel es modelarà amb les B gaussianes amb més pes i amb menys variància:

                                                
B=argmin_b\bigg(\sum_{k=1}^b \omega_{i,t}>T\bigg)

On  T és el llindar de decisió (normalment 0.6) i B el nombre mínim de gaussianes per cada píxel.

Ordre de les gaussianes segons el seu pes a la imatge.
  • 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[modifica | modifica el codi]

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:

                                   |(I_t-\mu_{i,t})| > L\sigma_{i,t} \longrightarrow \mathit{ Primer pla }
                                   Només si es compleix per a TOTES les gaussianes


                                    |(I_t-\mu_{i,t})| \not<  L\sigma_{i,t} \longrightarrow \mathit{ Fons } 
                                  Si no es compleix per ALGUNA gaussiana

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[modifica | modifica el codi]

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:


                                                     \mu_t =I_t\rho +(1-\rho)\mu_{t-1}  
                                        \sigma^2_t=\rho(I_t-\mu{t-1}I_t-\mu{t-1}+(1-\rho)\sigma^2_{t-1}  
                                                 \omega_{k,t}=(1-\alpha)\omega_{k,t-1}+\alpha(M_k,t)

Eigenbackgrounds[modifica | modifica el codi]

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 un 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 número N d'imatges i calculem la mitja \mu_b i la matriu de covariància Cb_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_Mb.
  • Modelem el fons amb Bt = X_t\phi_Mb 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[modifica | modifica el codi]

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

Aplicacions[modifica | modifica el codi]

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

Exemple d'aplicació de detecció de primer pla

Seguretat[modifica | modifica el codi]

En l'àmbit de la seguretat, la detecció de primer pla pot:

  • Avisar als 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[modifica | modifica el codi]

Múltiples aplicacions en l'àmbit de la seguretat vial 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[modifica | modifica el codi]

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[modifica | modifica el codi]

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 enfoc a l'habitatge intel·ligent.

Codificació[modifica | modifica el codi]

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.

Vegeu també[modifica | modifica el codi]

Referències[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]