treball recerca framework gesture...

61
Treball de recerca: A general framework for gesture recognition in real-time video sequences Autor: Eduard J. del Rey Pérez Juny 2008 Director: Dr. Francesc Serratosa i Casanelles MEIS-Seguretat

Upload: others

Post on 07-Feb-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • Treball de recerca: A general framework for gesture

    recognition in real-time video sequences

    Autor: Eduard J. del Rey Pérez

    Juny 2008 Director: Dr. Francesc Serratosa i Casanelles

    MEIS-Seguretat

  • 2

    A general framework for gesture recognition in real -time video sequences

    Treball de recerca

    Eduard del Rey Pérez

    Abstract

    La gran majoria de les propostes existents per al tracking de múltiples objectes en seqüències d’imatges són molt dependents de la aplicació.

    L’objectiu principal és canviar el model d’un framework existent per a oferir una metodologia general pel reconeixement de qualsevol tipus d’ objecte. L’altre objectiu és que aquesta tasca pugui ser realitzada a temps real.

    Per aconseguir aquesta fita, s’han canviat diverses parts d’aquest framework utilitzant el color com a característica de classificació mitjançant el càlcul de probabilitats amb histogrames.

    Tot i que els resultats són pitjors que en l’altre framework, s’augmenta ostensiblement la velocitat d’aquest sistema.

  • 3

    Índex 1. Descripció del Treball de recerca............... .............................. 5 2. Estat de l’art ..................................... .......................................... 6

    2.1 Introducció .................................... ........................................ 6 2.2 Representació de l’objecte..................... .............................. 9 2.2 Selecció de les característiques............... ......................... 12 2.3 Reconeixement de l’objecte..................... .......................... 14

    2.3.1 Detectors de punts (point detectors) ......... ................................... 14 2.3.2 Background subtraction ....................... ......................................... 15 2.3.3 Segmentació .................................. ................................................. 15 2.3.4 Aprenentatge supervisat...................... .......................................... 15

    2.3.4.1 Adapting Boosting ...................................................................... 16 2.3.4.2 Support Vector Machines ........................................................... 16

    2.4 Tracking de l’objecte .......................... ................................ 17 2.4.1 Point Tracking............................... .................................................. 17 2.4.2 Kernel Tracking.............................. ................................................. 18 2.4.3 Silhouette Tracking.......................... ............................................... 18

    2.5 A probabilistic framework for object recognitio n and tracking in video sequences........................ ............................ 19

    2.5.1 Estructura general ........................... ............................................... 19 2.5.2 Reconeixement estàtic ........................ ........................................... 22 2.5.3 Reconeixement dinàmic........................ ......................................... 23 2.5.4 Tracking ........................................................................................... 24 2.5.5 Característiques del framework ..................................................... 27

    3. Disseny............................................ ......................................... 28 3.1 Reconeixement estàtic .......................... ............................. 28

    3.1.1 Construcció dels histogrames de les classes .. ........................... 29 3.1.2 Espai de colors .............................. ................................................. 32 3.1.3 Aplicació dels histogrames ................... ........................................ 32 3.1.4 Filtrat dels histogrames ..................... ............................................ 33

    3.2 Reconeixement dinàmic.......................... ........................... 34 3.3 Tracking....................................... ........................................ 34

    3.3.1 Filtres tracking ............................. ................................................... 36 4. Implementació...................................... .................................... 38

    4.1 Hotspots framework ............................. .............................. 38 4.1.1 Captura ...................................... ...................................................... 38 4.1.2 Reconeixement estàtic ........................ ........................................... 39 4.1.3 Reconeixement dinàmic........................ ......................................... 40 4.1.4 Tracking decision ............................ ............................................... 41 4.1.5 Mostrar resultats............................ ................................................. 42 4.1.6 Color ........................................ ........................................................ 42

    4.2 Estructura del framework....................... ............................ 43 4.3 Implementació dels espais de colors............ .................... 44

    5. Avaluació.......................................... ........................................ 45

  • 4

    5.1 Paràmetre α (reconeixement dinàmic) ........................... ... 45 5.2 Espais de colors ............................... .................................. 46 5.3 Filtrat morfològic ............................. ................................... 48 5.4 Redirecció de l’histograma ..................... ........................... 50 5.5 Objectes amb característiques semblants........ ................ 51 5.6 Comparativa frameworks ......................... .......................... 52

    5.6.1 Oclusions .................................... .................................................... 55 6. Conclusions ........................................ ..................................... 57

    6.1 Treball futur.................................. ....................................... 58 7. Bibliografia...................................... ........................................ 59

  • 5

    1. Descripció del Treball de recerca En moltes aplicacions serà necessària el seguiment o reconeixement d’un objecte dins d’una seqüència per a tractar-lo posteriorment.

    La gran majoria dels sistemes que serveixen per a fer reconeixement i seguiment de múltiples objectes en seqüències de vídeo són molt dependents de la aplicació, és a dir, són sistemes pensats per a detectar un tipus d’objecte molt concret en una situació concreta. El primer gran objectiu d’aquest treball de recerca és definir un sistema que pugui reconèixer i fer el seguiment de tot tipus d’objecte en general. Una vegada definit aquest sistema s’intentarà concretar-lo al camp del reconeixement de gestos humans. L’altre gran objectiu és aconseguir fer aquesta tasca a temps real, fita que no aconsegueixen la gran majoria dels sistemes actuals. Degut a aquesta restricció del temps real, és possible que els resultats d’aquest sistema no siguin tan bons com altres sistemes més sofisticats que no són de temps real. Finalment es provaran un seguit d’experiments per tal d’avaluar el funcionament del sistema proposat. A continuació es defineixen un seguit d’objectius més específics:

    • Realitzar un estat de l’art del reconeixement de gestos. • Realitzar un estat de l’art en el camp de object tracking. • Definir un nou framework que permeti fer object racking. • Especificar aquest framework cap al camp de reconeixement

    de gestos. • Implementar aquest framework en temps real. • Testejar el nou framework. • Publicar els resultats al International Congress on Pattern

    Recognition 2008.

    Per tal d’aconseguir aqueta fita, aquest treball es basa en un altre framework (secció 2.5) ja fet. Per tal d’aconseguir això s’ha canviat parcialment el model d’aquest.

  • 6

    2. Estat de l’art

    2.1 Introducció

    El reconeixement de gestos (gesture recognition) consisteix en la localització i identificació d’algun tipus de gest humà. Aquest gest normalment està originat per algun moviment facial o de la mà. Aquest tipus de reconeixement és molt útil per a processar informació, normalment símbols, que prové dels humans , de manera que un robot pugui identificar-la, classificar-la i realitzar algun tipus d’acció.

    Normalment aquests símbols ofereixen informació que no es pot processar mitjançant la veu o l’escriptura , o bé la seva introducció és molt més lenta mitjançant aquests medis. Entre d’altres funcionalitats que es satisfan gràcies al reconeixement de gestos són:

    • Reconeixement de gestos per a la interpretació i conversió a text d’algun tipus de llenguatge per símbols.

    • Control mitjançant gestos d’algun tipus, d’una màquina o robot, per exemple, moure el ratolí amb el moviment dels ulls.

    • Manegament de controls virtuals en simulacions on utilitzar-ne de reals és molt costós.

    El reconeixement de gestos consta de dues parts principals:

    • Object tracking: localitzar l’objecte o part del cos que realitza el gest mitjançant el seu moviment en l’espai.

    • Identificació del gest: una vegada localitzat l’objecte o part del cos que realitza el gest, poder identificar-lo i saber si es tracta d’un gest o no, i en cas afirmatiu poder dir de quin gest es tracta.

    Object tracking es defineix com l’estimació de la trajectòria d’un objecte en una seqüència d’imatges per tal de localitzar-lo i, potser, identificar-lo posteriorment tenint en consideració les seves característiques.

  • 7

    Aquest procés és divideix en tres parts molt clares:

    • La detecció d’objectes en moviment.

    • El seguiment d’aquest objecte entre imatge i imatge.

    • L’anàlisi dels moviments de l’objecte per tal de poder reconèixer el seu comportament i, així facilitar la localització en les imatges posteriors.

    El seguiment d’objectes no només serveix per al reconeixement de gestos sinó que també s’utilitza, per exemple per: monitorització del tràfic, esquivada d’objectes en algun tipus de conducció, serveis de vigilància per càmera,...

    Habitualment, els diferents sistemes per a fer object tracking són molt dependents del tipus d’objecte que es vol detectar, tot i que l’ideal seria que fos capaç de detectar qualsevol tipus d’objecte. Evidentment, necessitaria una formalització inicial de l’objecte que es vol detectar. Aquesta dependència es deu a que en un procés d’object tracking pot haver-hi problemes molt importants:

    • Els objectes poden tapar-se entre si total o parcialment (oclusions).

    • Els objectes es poden moure de maneres complexes, com per exemple d’una manera no rígida.

    • Pèrdua d’informació degut a que les imatges són projeccions 2D del món real (3D).

    • La qualitat de la imatge pot fer que sorgeixi algun tipus de soroll.

    • Canvis d’il·luminació entre les diferents imatges de la seqüència.

    • Moviments molt abruptes.

    • Objectes amb formes complexes.

    A més a més, és possible que es vulgui fer aquest processat a temps real. Per tal de poder aconseguir l’objectiu, en cadascun dels diferents mètodes existents es pressuposen restriccions al problema concret, és a dir, situacions que l’objecte no pot tenir si es vol que sigui detectat.

  • 8

    Per tant, depenent del problema, les diferents propostes o tècniques existents es plantegen:

    • Com s’ha de representar l’objecte?

    • Quines característiques de la imatge són més adients per fer el

    seguiment de l’objecte?

    • Com s’ha de modelar el moviment i l’aparença de l’objecte?

    Seguidament, s’intenta descriure les diferents respostes que donen els sistemes existents.

  • 9

    2.2 Representació de l’objecte L’objecte és quelcom que volem identificar en una imatge i, per tant, és del nostre interès. L’objecte pot ser qualsevol cosa des de una pilota que es mou a un avió. Per tal de poder realitzar aquesta tasca, primer s’ha de representar l’objecte d’una manera més senzilla “discretitzant” la seva representació real. Normalment els objectes es representen per la seva forma o aparença. Les possibles representacions de l’objecte per forma són les següents:

    • Punt: l’objecte està representat per un punt [1] o per un conjunt de punts [2] de la imatge. Aquests punts són punts interessants de l’objecte com el centre gravetat, punts que ajunten diferents parts de l’objecte en el contorn d’aquest, ... (fig. 1) Aquest tipus de representació simplifica molt la representació de qualsevol objecte ajudant a reduir el volum de dades a tractar.

    fig. 1

    • Formes geomètriques senzilles: l’objecte és representat amb una forma geomètrica primitiva com pot ser un rectangle, cercle, etc. [3] D’aquesta manera es simplifica la representació de l’objecte. Encara que és molt adequat per a objectes rígids, per als que no ho són, només ens dóna una aproximació poc exigent d’aquest (fig. 2).

    fig. 2

  • 10

    • Contorn i silueta de l’objecte: consisteix en definir l’objecte com el

    contorn d’aquest. La regió continguda dins del contorn és anomenada silueta(fig. 3). Aquest tipus de representació és molt útil per a fer tracking d’objectes no rígids [4].

    fig. 3

    • Models articulats: els objectes estan compostos per diferents parts que

    es mouen independentment però ajuntades entre elles per articulacions o juntures (fig. 4). Per exemple, d’aquesta manera es podria modelar el cos humà que estaria format per braços, cames, tors, cap, ... Cadascuna de les parts pot ser modelada mitjançant cilindres, el·lipses o algun tipus de forma geomètrica primitiva i el moviment d’aquestes mitjançant algun model de moviment cinemàtic (kinematics motion). Aquest tipus de representació és ideal per als objectes no rígids que tenen ben diferenciades les diferents parts que els formen

    fig. 4

    • Models esquelètics: aquests tipus de models representen l’objecte amb el seu esquelet que pot ser calculat aplicant la transformació medial axis [5] a la silueta de l’objecte detectat (fig. 5).

    fig. 5

  • 11

    Els objectes no només es poden classificar segons la seva forma sinó que també es pot fer segons la seva aparença:

    • Densitat de probabilitats: consisteix en representar l’objecte mitjançant una estimació de la densitat de probabilitats d’una o diverses característiques de l’objecte com el color, regió interior del contorn d’un objecte, etc. Aquesta estimació pot ser modelada amb diverses distribucions com la gaussiana [6], histogrames [7] o Parzen windows [3].

    • Templates: les plantilles per a identificar l’objecte es formen amb formes geomètriques senzilles o siluetes [8] emmagatzemant així la informació espacial i d’aparença de l’objecte. Per aquest tipus de classificació, l’objecte no pot canviar gaire de forma durant el seu tracking.

    • Active appearance models: aquest mètode consisteix a definir un conjunt de landmarks (punts importants de l’objecte) que ens representen el modelatge de l’aparença i forma del objecte [9]. Per a cadascun d’aquests landmarks, tindrem les característiques de l’aparença (color, textura, gradient, etc). Aquest mètode necessita d’una fase prèvia d’entrenament.

    • Multiview appearance models: aquesta aproximació emmagatzema l’objecte segons diferents vistes i després agafa les característiques més decisives a l’hora de detectar l’objecte mitjançant mètodes com Principal Component Analysis (PCA) o Independent Component Analysis (ICA). El problema d’aquest mètode és poder codificar totes les vistes de l’objecte ja que pot ser molt costós temporalment [10].

    Altres aproximacions podrien ser la utilització de xarxes Bayesianes [11] o xarxes neuronals per aprendre l’aparença i forma de l’objecte.

  • 12

    2.2 Selecció de les característiques La selecció de les característiques adequades és un dels aspectes més importants en el tracking de l’objecte. La característica ideal és aquella que ens proporciona la identificació visual de l’objecte en un frame de manera única. La selecció de les característiques està estretament relacionada amb la representació de l’objecte, per exemple la característica del color s’utilitza per a les representacions basades en l’histograma. Característiques més utilitzades:

    • Color: el color de l’objecte és una de les característiques més utilitzades ja que és una característica visual bastant clara a l’hora d’identificar objectes per part de l’ull humà. El color està principalment afectat per dos factors: la distribució espectral de la il·luminació i les propietats de reflexió de la superfície de l’objecte.

    La representació més comú del color en les imatges és la representació RGB, tot i que aquesta no ens proporciona un espai uniforme. És a dir, les diferències que hi ha entre els diferents colors RGB no es corresponen amb les diferències que capta l’ull humà [12] ja que les tres variables estan altament correlades. Existeixen altres models que intenten solucionar aquest problema com HSV (Hue, Saturation, Value) que es una aproximació d’un espai uniforme de color mentre que L*u*v* i L*a*v* són espais perceptivament uniformes. Tot i així, aquests dos models són especialment sensibles al soroll [13].

    No hi ha un model perfecte per totes les situacions possibles, llavors depenent del problema atacat s’haurà d’escollir el model que ens ofereixi el millor resultat en el tracking.

    Color-Based Probabilistic Tracking [14] utilitza el color com la característica principal en el moment de detectar l’objecte tot creant una infraestructura de probabilitats per saber si el color pertany a l’objecte del que es fa tracking.

    • Contorns: normalment els contorns de les imatges venen marcats per

    grans canvis en la intensitat de la imatge. Mitjançant la detecció de contorns es pot detectar aquests canvis. A més a més els contorns són molt més robustos respecte al canvis de llum en la imatge. Aquest tipus de característica habitualment s’utilitza en mètodes que també utilitzen els contorns com a representació de l’objecte.

    • Optical flow: aquest paràmetre consisteix en uns vectors que mesuren el desplaçament de cadascun dels píxels d’una regió. Aquest desplaçament es calcula mitjançant la restricció de la brillantor que pressuposa que la brillantor es manté constant en els píxels tot i el seu moviment [15] .

  • 13

    • Textures: la textura és la mesura de la variació d’intensitat en una superfície que quantifica propietats com la suavitat i la regularitat en una imatge. Per a poder aplicar aquest mètode són necessaris uns descriptors com poden ser Gray-Level Coocurrence Matrices (GLCM’s) [16] entre d’altres. Aquest descriptor està format per un histograma 2D que ens mostra la concurrència de les intensitats en una distància i direcció específica.

    Usualment, aquesta selecció de les característiques es fa manualment segons el tipus de problema que es vulgui atacar. Tot i així pot ser interessant que es pugui escollir les característiques automàticament segons el problema i situació actual d’aquest.

    La selecció automàtica de les característiques pot ser de dos tipus: mètodes

    de filtratge (filter methods) o mètodes d’agrupament (wrapper methods).

    • Filter methods: aquests mètodes escullen les característiques segons un o diversos criteris generals. Per exemple, escollir les característiques que no estiguin correlades entre si: PCA (Principal Component Analysis) transforma un conjunt de característiques en un conjunt més petit de característiques no correlades [17].

    • Wrapper methods: aquests mètodes trien les característiques basant-se en la utilitat que tinguin en el domini del problema concret. Això ho poden fer analitzant un petit conjunt d’aquest problema [17].

  • 14

    2.3 Reconeixement de l’objecte Una vegada comentades les possibles representacions de l’objecte i les possibles característiques susceptibles de ser seleccionades, hem de combinar aquests dos camps per a fer un reconeixement de l’objecte dins d’una imatge. Aquests procés és bàsic en el tracking de l’objecte. Aquest reconeixement s’haurà de fer com a mínim al primer frame on surti l’objecte o fins i tot, a cadascun dels frames de la seqüència d’imatges. Tot i que en aquesta fase es podrien filtrar possibles deteccions errònies analitzant la correlació entre els diferents frames, és feina del tracker analitzar les trajectòries per fer la detecció final de l’objecte. En aquesta fase es farà la detecció estàtica de l’objecte.

    2.3.1 Detectors de punts (point detectors) Els detectors de punts són usats per a trobar els punts interessants en una imatge, els quals tenen una textura concreta on estan situats. Si aquests punts estan correctament seleccionats han de ser invariables a qualsevol tipus d’il·luminació en la imatge. Un dels primers mètodes d’aquest estil va ser el Moravec’s detector [18]. Per a trobar aquests punts, Moravec comprova la variació de les intensitats de la imatge en trossos de 4x4 horitzontalment, verticalment, en diagonal i en l’antidiagonal. Per a aquesta finestra selecciona el mínim de les quatre variacions, de manera que un punt interessant és aquell en que la variació de la intensitat és un mínim local en un una porció 12x12 de la imatge. Un altre mètode consisteix en calcular els punts interessants mitjançant la derivada de la imatge respecte la direcció de la variació d’intensitat (Harris detector [19]). Primer es calcula aquesta derivada a cadascun dels píxels, seguidament es calcula una matriu a cadascun dels píxels tenint en consideració la seva derivada i la dels seus veïns més pròxims i finalment, s’utilitzarà el determinant d’aquesta matriu per a determinar si és o no un punt interessant.

    =∑∑

    yx

    x

    II

    IM

    2

    ∑∑

    2y

    yx

    I

    II

    Sent Ix la derivada en l’eix x i Iy la derivada en l’eix y. La principal avantatge d’aquest mètode és que aquesta matriu es veu inalterable, en teoria, a tot tipus de translacions i rotacions.

  • 15

    2.3.2 Background subtraction Aquest tipus de detecció consisteix en fer un model del que és el fons de la imatge. Una vegada tenim aquest model fet, qualsevol modificació a la imatge d’aquest model serà considerat un objecte en moviment. En aquest punt es marca aquesta regió per a que posteriorment es pugui analitzar amb l’objectiu d’identificar l’objecte. N’hi ha que utilitzen informació basada en el color [7] i altres que a més a més utilitzen la informació espacial de la regió [20].

    2.3.3 Segmentació La partició de la imatge en regions més petites perceptivament semblants és coneguda com a segmentació de la imatge. Aquest mètode té dos tipus de problemes: el criteri que s’utilitza per a fer una bona partició i el mètode per a aconseguir una partició eficient [21]. Els mètodes més utilitzats en el tracking d’objectes són:

    • Mean-Shift Clustering: consisteix en anar formant les particions de la imatge iterativament tenint en compte l’espai i el color per a cadascun dels píxels, és a dir, la x i la y per a l’espai i els canals Luv del color del píxel.

    • Utilització de grafs per a la segmentació de la imatge. Color-Based Probabilistic Tracking [22] utlitza grafs per a poder segmentar la imatge i poder fer la detecció de l’objecte segons el color i la probabilitat d’aquest de pertànyer a l’objecte atacat.

    • Active Contours: aquests mètodes utilitzen els contorns dels objectes englobant-los dins d’altres contorns que defineixen les diferents particions de la imatge. L’evolució d’aquestes particions o “supercontorns” es defineixen mitjançant el càlcul d’una funció de la energia [4].

    2.3.4 Aprenentatge supervisat El reconeixement de l’objecte és après de manera supervisada mitjançant diferents vistes automàtiques procedents d’un conjunt d’exemples. El resultat d’aquest aprenentatge és la capacitat de poder separar els diferents tipus d’objectes detectables mitjançant classes.

  • 16

    En aquest tipus de mètodes és també molt important una bona selecció de característiques que puguin fer discernir fàcilment entre una classe i una altra. El subtipus més emprats en aquesta aproximació són: adapting boosting [23], arbres de decisió [24], xarxes neuronals [25] i support vector machines [26]. El problema d’aquests mètodes és que necessiten d’un gran conjunt d’exemples de cadascuna de les classes d’objectes que volem detectar. Addicionalment, aquests exemples han d’estar seleccionats i etiquetats manualment. Una altra proposta que utilitza aquest mètode en una de les seves fases és A probabilistic framework for object recognition and tracking in video sequences [27] que s’explicarà en seccions posteriors (secció 2.5) ja que aquest treball de recerca està bastat en ell.

    2.3.4.1 Adapting Boosting L’objectiu d’aquest mètode és trobar un mètode classificador acurat mitjançant la combinació de diversos classificadors senzills. Primerament, assigna uns pesos inicials a cadascun dels classificadors senzills dels que disposa. Seguidament, selecciona el classificador que li dóna menys error, el qual és proporcional als pesos de les dades mal classificades. Finalment, s’augmenten els pesos del classificador segons les dades mal classificades. Aquest procés es fa iterativament per a tot el conjunt d’entrenament, d’aquesta manera s’ajusten els pesos de manera que els classificadors dolents queden gairebé eliminats pels seus pesos.

    2.3.4.2 Support Vector Machines Aquest classificador té l’objectiu de partir les dades en dues classes trobant l’hiperplà que diferencia una classe d’una altra. Els punts de dades que estan en el marge de l’hiperplà són el que s’anomena support vectors.

  • 17

    2.4 Tracking de l’objecte L’objectiu d’un tracker és detectar i reproduir la trajectòria d’un objecte en el temps, aconseguint localitzar aquest en cadascun dels frames d’una seqüència de vídeo. Les estratègies d’aquest tracker són totalment dependents de la representació de l’objecte escollida, és a dir, per exemple, si representem l’objecte amb un punt, únicament podrem aplicar-li transformacions de translació. Els tipus de trackers més habituals es poden classificar de les maneres que es mostren a continuació.

    2.4.1 Point Tracking Els objectes estan representats per punts i l’associació d’aquestos és resultat de l’anterior estat de l’objecte que pot incloure posició i moviment [27]. Aquest mètode requereix d’un mètode que reconegui l’objecte prèviament en el frame. Les suposicions més grans d’aquest tipus de proposta és que el moviment de l’objecte és rígid i que el moviment dels altres punts respecte el punt que representa l’objecte és manté constant durant tot el moviment de l’objecte. Diferents mètodes de point tracking:

    • Deterministic Methods for Correspondence: es basa en la definició d’un cost de moviment, associant cada píxel del frame anterior amb un objecte del frame actual. La minimització d’aquest cost es converteix en un problema combinatori.

    • Statistical Methods for Correspondence: calculen l’estimació de l’estat de l’objecte considerant que les mesures contenen soroll i pertorbacions aleatòries.

    • Single Object State Estimation: l’exemple més important d’aquest tipus de mètodes és el filtre de Kalman. Aquest filtre només pot ser utilitzat per estimar l’estat d’un sistema lineal el qual està distribuït de forma Gaussiana. Aquest mètode no només serveix per predir sinó que també pot corregir, com per exemple en el cas de les oclusions.

  • 18

    2.4.2 Kernel Tracking Aquests mètodes tracten l’objecte per la seva forma i aparença [17]. D’aquesta manera fan el tracking tractant el càlcul del moviment mitjançant transformacions com la translació, rotació, etc.

    2.4.3 Silhouette Tracking

    El tracking es processa mitjançant una estimació de la regió de l’objecte en cadascun dels frames utilitzant la informació associada a aquesta regió.

    Aquest tipus de tracking és el més idoni per a fer reconeixement de gestos ja que està especialitzat en la detecció d’objectes que tenen formes complexes, com poden ser les mans, el cap, etc. És a dir objectes que no poden ser representats mitjançant primitives geomètriques.

    Les propostes més importants són:

    • Shape Matching: en aquest mètode la cerca de la silueta es busca en el

    frame actual segons la hipotètica silueta que hauria de tenir l’objecte deduïda al frame anterior. L’únic canvi que pot haver d’un frame a un altre és una translació de la silueta, per tant, això impossibilita el moviment d’objectes articulats o no rígids [17]. Altres possibilitats és intentar les correspondències entre siluetes de dos frames consecutius. Normalment per trobar les correspondències entre diferents siluetes s’utilitzen les característiques de forma dels objectes i per a detectar-les la tècnica de Background subtraction (secció 2.3.2).

    • Contour tracking: aquest tipus de tracking construeix un contorn en el frame actual a partir del contorn inicial del frame anterior. Per fer aquest tipus de construcció és necessari que l’objecte tingui parts que estiguin tant al contorn del frame anterior com al contorn del frame actual.

    o Tracking using state space models: primerament, es defineix un

    estat de l’objecte que depèn de la forma i els paràmetres de moviment del contorn. A cadascun dels frames es recalcula el contorn segons una probabilitat que usualment depèn de la distància del contorn (predit) als contorns o marges (reals) observats a la imatge.

    o Tracking by Direct Minimization of Contour Energy Functional:

    aquesta família de mètodes és molt semblant als mètodes de segmentació. Per exemple [28] calcula el optical flow però únicament als marges de l’objecte. Llavors una vegada calculats els flow vectors, aquests s’utilitzen per avaluar l’energia del contorn de l’objecte.

  • 19

    2.5 A probabilistic framework for object recognition and tracking in video sequences

    Es comenta aquest framework més especialment ja que com es veurà a les següents seccions (secció 3), aquest treball de recerca es basa generalment en l’estructura d’aquest framework [27].

    L’objectiu d’aquest framework és realitzar el reconeixement i tracking de múltiples objectes interiors (dins d’una oficina, laboratori, etc). Per tal d’assolir aquest objectiu, divideix el problema en tres fases:

    • Reconeixement estàtic: l’objectiu d’aquesta part és reconèixer l’objecte dins d’una imatge concreta. Es realitza mitjançant una xarxa neuronal (aprenentatge supervisat).

    • Reconeixement dinàmic: aquesta fase té dos objectius, per una part refinar la sortida del reconeixement estàtic per a reconèixer l’objecte més adequadament i, per altra part, donar informació a la següent fase per a poder ajudar i flexibilitzar el procés de tracking. Utilitza una fórmula per tal de calcular les probabilitats dels píxels de pertànyer a un objecte concret.

    • Tracking: en aquesta fase l’objectiu és fer el tracking de l’objecte

    considerant la sortida del reconeixement dinàmic i l’estimació de la trajectòria de l’objecte. Aquest utilitza un mètode predictiu per a calcular la trajectòria de l’objecte.

    2.5.1 Estructura general Cadascuna de les tres parts del framework es comuniquen mitjançant

    matrius de dades. L’entrada d’aquest framework és una imatge 2D en color. Per a cada

    objecte que es vulgui detectar se li assigna una classe. Cada classe és cadascun dels objectes que es volen reconèixer dins de la seqüència d’imatges. Aquestes classes s’identifiquen i es diferencien en la fase de reconeixement estàtic.

    Igualment a com es fa en Background subtraction, és necessari modelar

    el fons de la imatge, és a dir, tot el que no sigui objecte, ja que si una regió de la imatge no pertany a cap objecte, ha de pertànyer a alguna classe. Aquesta classe és la que identifica el fons de l’objecte. Per tant, si tenim N objectes a detectar, tindrem N classes més el fons, és a dir N+1.

  • 20

    La fase de reconeixement estàtic té com entrada una imatge It que és una matriu de dos dimensions on It(x,y) és el valor del color RGB del píxel especificat per la posició (x,y) en el frame t.

    Aquesta fase genera de sortida una matriu per cadascuna de les

    classes. D’aquesta manera la sortida del reconeixement estàtic és:

    ( ) ),(),( yxIryxQ ttc = Cadascuna de les matrius s’anomena tcQ de manera que ),( yxQ

    tc és un

    valor entre 0 i 1 del píxel (x,y) de la classe(objecte) c del frame t que indica la probabilitat de que aquest píxel pertanyi a l’objecte identificat per la classe c.

    La fase de reconeixement dinàmic també genera una matriu per cadascuna de les classes de la següent manera:

    ( ) ),(),,(),,(),( 11 yxTyxQyxpfyxp tctctctc −−=

    D’aquesta manera s’observa que la funció f que genera la sortida d’aquesta fase depèn de la sortida d’aquesta mateixa fase al frame anterior, de la sortida del tracking al frame anterior i de la sortida del reconeixement estàtic en el frame actual. Cadascuna de les matrius de sortida s’anomena tcP de manera que

    ),( yxPtc correspon a un valor entre 0 i 1 que representa la probabilitat total de pertànyer a aquesta classe c respecte de les altres en el frame t. Finalment la fase de tracking s’encarrega de fer la detecció final de l’objecte de la següent manera:

    ( ) ),(),,(),,(),( 21 yxTyxTyxpdyxT tctctvtc −−= D’aquesta manera s’observa que la funció d depèn de la sortida del reconeixement dinàmic i de les sortides del tracking en els frames t-1 i t-2 sent el frame t l’actual. Les matrius de sortida del tracking són tcT de manera que ),( yxT

    tc és un

    valor booleà que ens diu si el píxel (x,y) pertany o no a la classe c.

  • 21

    Per tant l’estructura general d’aquest framework és:

    fig. 6

    Com es veu a la figura 6 amb una entrada d’una imatge 2D en color ),( yxI t , el framework genera un conjunt de matrius ),( yxT tc on cadascuna

    indica la posició de cadascun dels objectes atacats al problema. En el primer instant t=1, tant en la fase de reconeixement dinàmic com en la fase de tracking necessitem els instants t-1 i t-2, és a dir, una primera localització de l’objecte en t=0. Aquesta localització inicial és introduïda manualment. Amb aquesta localització inicial que es fa mitjançant la selecció per part de l’usuari de cadascun dels rectangles que engloben cadascun dels objectes, es creen les matrius 0cT . Aquestes matrius contenen la regió seleccionada amb el rectangle com a objecte i la resta com a no objecte. La matriu del reconeixement dinàmic inicial és la mateixa que la del tracking:

    00cc TP =

    Temps Reconeixement

    estàtic Reconeixement

    Dinàmic Tracking

    0 0cQ

    00cc TP =

    0cT (generada manualment)

    1 1cQ ( ) ,, 0101 cccc TQpfp = ( ) , 011 ccc TpdT =

    2 2cQ ( ) ,, 1212 cccc TQpfp = ( ) ,, 0122 cccc TTpdT =

    3 3cQ ( ) ,, 2323 cccc TQpfp = ( ) ,, 1233 cccc TTpdT =

  • 22

    2.5.2 Reconeixement estàtic Per aquest mòdul, aquest framework utilitza una xarxa neuronal feed-forward (aprenentatge supervisat) de manera que ha de ser entrenada per a detectar els objectes desitjats i per a que generi les matrius de probabilitats tcQ . Cadascun dels patrons o classes venen definides per un vector de característiques de d-dimensions. L’objectiu d’aquesta xarxa neuronal és mapejar l’espai en un nombre finit de classes. Aquesta xarxa és entrenada mitjançant un subconjunt d’exemples amb un algoritme d’aprenentatge supervisat. Primerament es segmenta la imatge It(x,y) per a detectar taques homogènies i poder calcular algunes característiques per a cadascuna de les regions formant la imatge segmentada St(x,y). Finalment, aquesta imatge segmentada juntament amb les taques i les característiques calculades, seran l’entrada a la xarxa neuronal que retorna cadascuna de les matrius ),( yxQtc . El vector de característiques de d-dimensions que utilitza la xarxa neuronal és un vector de 14 dimensions que conté les característiques:

    1. Mida de la taca 2. Mitja del canal vermell 3. Mitja del canal verd 4. Mitja del canal blau 5. Moment invariant 1 6. Moment invariant 2 7. Moment invariant 3 8. Moment invariant 4 9. Moment invariant 5 10. Moment invariant 6 11. Moment invariant 7 12. Variància del canal vermell 13. Variància del canal verd 14. Variància del canal blau

  • 23

    2.5.3 Reconeixement dinàmic Tot i que el reconeixement estàtic podria ser suficient per a detectar l’objecte, s’afegeix aquesta fase per a refinar la sortida del reconeixement dinàmic i per a flexibilitzar el tracking de l’objecte. L’objectiu principal d’aquest mòdul és normalitzar les probabilitats de manera que a la sortida, cadascun dels píxels de les matrius resultants sumin 1 per a totes les classes.

    És a dir, per a un píxel x=a i y=b, en el frame t (N classes més el fons)

    1),(1

    1

    =∑+

    =

    N

    k

    tK baP

    Aquí es pot observar clarament per a que es vol el fons, ja que si només hi hagués les classes de l’objecte, es faria la suposició de que ha de pertànyer a un objecte per força.

    ( )

    ),()1(),(),(

    ),()1(),(),(),(

    1

    1

    11

    11

    ∑+

    =

    −−

    −−

    −+

    −+=

    N

    k

    tk

    tk

    tk

    tc

    tc

    tct

    c

    yxQyxpyxT

    yxQyxpyxTyxp

    αα

    αα

    El denominador serveix per a fer el procés de normalització anteriorment esmentat. El numerador consta de la mitja ponderada entre la sortida del reconeixement estàtic i la informació del frame anterior. La informació del frame anterior està formada per la multiplicació del reconeixement dinàmic i tracking del frame anterior. Aquesta multiplicació serveix per a filtrar els píxels que tenen probabilitats els quals no eren objectes per part del tracking. Si el tracking dóna objecte en el píxel (x,y) es fa la mitja amb la probabilitat del reconeixement dinàmic anterior, si és al contrari, és a dir, no tenim objecte la probabilitat es torna 0. La variable que ens permet jugar amb la mitja ponderada és α. Per a valors grans es suposa que el moviment és molt lleu i no se li dona gaire confiança al reconeixement estàtic, en canvi per a valors petits se li dóna confiança al reconeixement estàtic permetent moviments ràpids, en cas que els objectes siguin detectats pel reconeixement estàtic.

  • 24

    2.5.4 Tracking

    Per aquesta fase s’utilitza un model simple de predicció. Per a aquesta predicció és necessària la informació dels tracking dels dos últims frames. El primer pas és calcular l’estimació del centre de gravetat i de l’àrea en el frame actual. Això es fa mitjançant un filtre, bastant senzill, mirant el que ha variat entre els dos frames anteriors per a saber el que tindrem ara.

    ( ) 21211 2 ˆ −−−−− −=−+= tctctctctctc CCCCCC

    ( ) ( ) 221211 ˆ −−−−− == tctctctctctc AAAAAA

    Agafant qualsevol punt del frame anterior, mitjançant les estimacions, es podrà calcular les coordenades en el frame actual:

    ),(ˆ tCctCc

    tc YXC

    ))=

    ),( tCctCc

    tc YXC =

    ( ) 111 ˆX −−− −+= tctctCctctCctc AAXXX))

    ( ) 111 ˆ −−− −+= tctctCctctCctc AAYYYY))

    En realitat es tenen les coordenades del frame actual i es vol saber quines eren les coordenades del frame anterior per saber si era o no objecte en el frame anterior. Només s’han de aïllar les fórmules anteriors:

    1

    11

    ˆ

    )X(

    −− −+=tc

    tc

    tCc

    tct

    Cctc

    AA

    XXX

    ))

    1

    11

    ˆ

    )Y(

    −− −+=tc

    tc

    tCc

    tct

    Cct

    c

    AA

    YYY

    ))

    Tot i que s’ha predit el punt anterior, aquest pot tenir un error i, per tant es generen quatre punts al voltant amb el punt predit com a centre. Aquests depenen del moviment i creixement de l’objecte durant els frames anteriors i dels paràmetres ε i δ. Els quatre punts són:

    )inf,inf( 111 −−− = tctc

    tc yxTL

    )inf,sup( 111 −−− = tctc

    tc yxTR

    )sup,inf( 111 −−− = tctc

    tc yxBL

    )sup,sup( 111 −−− = tctc

    tc yxBR

  • 25

    fig. 7

    Per a calcular els punts xinf, yinf, xsup, ysup s’utilitzen les fórmules següents:

    ( )( )

    ( )( )

    −−−+

    ≥−−−+

    −−−+

    =

    −−

    −−

    cas altreen ˆˆ

    ˆˆ

    0ˆˆifˆˆ

    ˆˆ

    1

    1

    1

    1

    1

    1

    1

    1

    tc

    tc

    tc

    tcC

    tcC

    tcC

    tct

    cC

    tcC

    tcC

    tcC

    tc

    tc

    tc

    tc

    tcC

    tcC

    tcC

    tct

    cC

    tc

    AAA

    xxxxx

    xxxxAAA

    xxxxx

    xinf

    δ

    ε

    εδ

    ε

    ( )( )

    ( )( )

    +

    −+−+

    ≥−+−−

    −+−+

    =

    −−

    −−

    cas altreen ˆˆ

    ˆˆ

    0ˆˆifˆˆ

    ˆˆ

    1

    1

    1

    1

    1

    1

    1

    1

    tc

    tc

    tc

    tcC

    tcC

    tcC

    tct

    cC

    tcC

    tcC

    tcC

    tc

    tc

    tc

    tc

    tcC

    tcC

    tcC

    tct

    cC

    tc

    AAA

    xxxxx

    xxxxAAA

    xxxxx

    xsup

    δ

    ε

    εδ

    ε

    ( )( )

    ( )( )

    −−−+

    ≥−−−+

    −−−+

    =

    −−

    −−

    cas altreen ˆˆ

    ˆˆ

    0ˆˆifˆˆ

    ˆˆ

    1

    1

    1

    1

    1

    1

    1

    1

    tc

    tc

    tc

    tcC

    tcC

    tcC

    tct

    cC

    tcC

    tcC

    tcC

    tc

    tc

    tc

    tc

    tcC

    tcC

    tcC

    tct

    cC

    tc

    AAA

    yyyyy

    yyyyAAA

    yyyyy

    yinf

    δ

    ε

    εδ

    ε

    ( )( )

    ( )( )

    +

    −+−+

    ≥−+−−

    −+−+

    =

    −−

    −−

    cas altreen ˆˆ

    ˆˆ

    0ˆˆifˆˆ

    ˆˆ

    1

    1

    1

    1

    1

    1

    1

    1

    tc

    tc

    tc

    tcC

    tcC

    tcC

    tct

    cC

    tcC

    tcC

    tcC

    tc

    tc

    tc

    tc

    tcC

    tcC

    tcC

    tct

    cC

    tc

    AAA

    yyyyy

    yyyyAAA

    yyyyy

    ysup

    δ

    ε

    εδ

    ε

    Els paràmetres ε i δ representen la confiança que se li dóna al tracking,

    per a la translació i escalatge de l’objecte. Si tenim poca confiança i, per tant, creiem que hi ha bastant error, aquests valors han de ser grans, si pel contrari pensem que el nostre sistema estima bé, els paràmetres han de tendir a 0.

    En aquestes fórmules l’error que es pressuposa és directament

    proporcional a la quantitat que ens hem mogut i escalat als frames anteriors.

  • 26

    Una vegada calculat el punt predit i els quatre punts (que com a mínim

    estant separats un número de píxels fixat per un altre paràmetre), s’etiqueta l’objecte com a segur que pertany, segur que no pertany o incert.

    • Si tots cinc punts eren objecte al tracking anterior, es diu que

    aquest punt segur que és objecte en el frame actual.

    • Si tots cinc punts no eren objecte al tracking anterior, es conclou dient que segur que no és objecte al frame actual.

    • Si no es compleix cap de les dues anteriors, es marca l’objecte

    com a incert.

    D’aquesta manera l’objecte quedaria com a la figura 8: fig. 8

    Per la construcció final de la matriu tcT es fa de la següent manera:

    ≥=

    cas altreen 0

    ),(and

    ),(si1

    ),( θyxPincertésocobjecteésseguryx

    yxTt

    ctc sent c=1..N

    On θ és un altre paràmetre del framework per a marcar el grau

    d’incertesa amb el que es reconeix un objecte. Per a c=N+1 (classe fons) la matriu final de tracking és la negada de

    totes les altres classes:

    ≤≤∀=

    =+cas altreen 0

    1:0),(si1 ),(1

    NccyxTyxT

    tct

    N

  • 27

    2.5.5 Característiques del framework Per acabar de comentar aquest framework s’esmentaran les principals característiques així com les limitacions d’aquest.

    En primer lloc, podem dir que aquest framework no està pensat per a detectar un tipus d’objecte molt concret sinó que pot detectar qualsevol tipus d’objecte tenint en consideració tant les limitacions del sistema (moviments articulats complexos, oclusions) com la necessitat prèvia d’entrenament d’aquest objecte a la xarxa neuronal.

    Podem dir que el reconeixement estàtic observat a les proves és bastant

    bo ja que reconeix molt bé els objectes. Com a desavantatge s’ha de dir que degut a la segmentació prèvia i la xarxa neuronal, el sistema és molt lent ja que segons la documentació tot el procés (Reconeixement estàtic +dinàmic +tracking) porta una mitja de 20 segons per frame i objecte amb un Pentium IV 3.4Ghz amb 512 MB RAM.

    Tot i que el reconeixement dinàmic fa un refinament bastant bo del

    reconeixement estàtic si el primer fallés molt, aquest pressuposa un moviment molt suau i lent.

    El tracking suposa que els objectes són rígids i, per tant, no hi ha cap

    moviment articulat tot i que gràcies a tot el model en conjunt podria detectar petits moviments no rígids.

    Per altra part no soluciona cap tipus d’oclusió d’objectes (entrada

    d’objectes nous, sortida d’objectes o oclusions totals o parcials entre objectes).

  • 28

    3. Disseny Per a la implementació del nou framework s’utilitza la mateixa estructura que el framework anterior (secció 2.5), és a dir, un reconeixement estàtic, reconeixement dinàmic i un tracking. L’objectiu principal d’aquest framework és poder aconseguir fer la tasca anterior a temps real, és a dir aconseguir que el nostre sistema funcioni a 24fps (40ms per frame). Tot i que per a fer la tasca a temps real, es perdrà qualitat de detecció es vol mantenir les característiques positives del framework anterior (independència de l’objecte a detectar, etc).

    Com es pot observar, el mètode anterior ho fa en 20s, per tant, s’han de substituir les parts que són més costoses temporalment. S’ha estudiat el sistema i la part que més triga és el reconeixement estàtic. Tot i que es disminueix la qualitat del reconeixement generat per aquesta part, es substitueix aquesta fase per a donar més rapidesa al sistema i també eliminar la necessitat d’un aprenentatge previ (xarxa neuronal). La segona part es manté igual, però s’estudia el paràmetre α idoni per a la majoria de casos. Finalment, també s’estudia el sistema predictiu a l’última fase de tracking el qual sofrirà alguns canvis degut a aquest estudi.

    3.1 Reconeixement estàtic El nou sistema que es proposa és basa en la utilització d’histogrames de color per a identificar l’objecte. D’aquesta manera el sistema només necessita la regió inicial que ocupa l’objecte per a fer l’histograma inicial d’aquest.

  • 29

    3.1.1 Construcció dels histogrames de les classes

    El primer que es fa és construir un histograma per a cadascuna de les classes, és a dir, per a cadascun dels objectes que es volen identificar. D’aquesta manera cada classe té associat tres histogrames, un per a cada canal. Aquests histogrames tenen tantes posicions com la resolució de cadascun dels canals de l’espai de colors utilitzat. En el nostre cas, inicialment, s’utilitza l’espai RGB de 24 bits, per tant cadascun té 8 bits de resolució (256). Primerament, es construeix l’histograma de tal manera que cadascuna de les posicions de cada canal conté el número de píxels de l’objecte amb aquell nivell de color. Per a generar, la posterior imatge ),( yxQtc es necessita que l’histograma estigui normalitzat, és a dir tingui valors de 0 a 1. En una primera fase inicial, cadascun dels histogrames estava normalitzat de manera que cadascuna de les posicions de l’histograma contenia la probabilitat de que aquell color fos objecte. Això vol dir que tots els nivells d’un mateix histograma sumaven probabilitat 1. Però els colors de l’objecte estan molt dispersats i per tant, les probabilitats eren molt baixes. Això feia impossible que al final de la sortida del reconeixement dinàmic algun píxel arribés a la cota de 0.4 (40 %) de pertànyer a l’objecte.

    Histogrames de una pilota vermella fig. 9

    Com es pot observar el valors de l’histograma són molt petits. Per a

    solucionar aquest últim problema, no només es va normalitzar l’histograma sinó que es va redimensionar de manera que el valor màxim que hi hagués a

  • 30

    l’histograma fos 1 i el mínim fos 0. Agafant MAX com el valor màxim dels histogrames (3 canals) i MIN com el valor mínim dels tres histogrames.

    MINMAX

    MINHistVfinalValor

    −−= .

    Tot i així, com es veu a la figura 10, aquesta normalització no és suficient ja que els valors encara són massa petits ja que els canals (com per exemple el verd en aquesta pilota vermella) que no tenen cap píxel pesen massa a l’hora de normalitzar.

    Histogrames de una pilota vermella fig. 10

    Per tant, es normalitza cadascun dels canals considerant només el màxim i mínim de si mateix.

    Histogrames d’una pilota vermella fig. 11

    Una vegada creats tots els histogrames (3 canals) per a cadascun dels objectes que es volen detectar, s’ha de crear una nova classe: la classe fons.

  • 31

    Aquesta és necessària per a la normalització de probabilitats del reconeixement dinàmic, com ho fa el framework anterior. Inicialment, per aquesta classe es creaven els histogrames de la mateixa manera que les altres classes però agafant el valor del color dels píxels que no pertanyien a cap objecte. Però el resultat era que quedava un histograma molt dispersat amb valors més o menys iguals per a tots els nivells de color. Això es degut a que els fons és homogeni, és a dir, té tot tipus de colors. La tècnica utilitzada és que per a cadascun dels valors se li assigna el que li falta fins arribar a 1 del màxim d’aquest valor a tots els histogrames dels altres objectes. Classe fons N+1 Altres classes 1..N

    ))()..(()( 11 iHiHMAXiHAN

    AAN =+

    On )(1 iHCN+ vol dir nivell i de l’histograma del canal A per a la classe N+1.

    D’aquesta manera l’histograma de la classe fons amb l’objecte de la pilota vermella queda com la figura següent:

    Histogrames classe fons fig. 12

  • 32

    3.1.2 Espai de colors Una de les principals decisions a l’hora d’utilitzar el color com a característica bàsica per a detectar objectes és l’utilització de l’espai de colors. Inicialment, es va utilitzar l’espai RGB però aquest té un gran problema i és que els seus canals estan molt correlats, a més la diferència entre dos colors RGB no coincideix amb la diferència visual [17] d’aquestos. Per tal de solucionar aquest problema s’han provat diversos espais de color i s’ha deixat la possibilitat d’escollir entre tots els utilitzats. Les imatges llegides sempre estan en l’espai de colors sRGB (estàndard RGB) per tant, el color dels píxels s’ha de convertir en l’espai que es vol utilitzar abans d’actualitzar l’histograma. La comparativa entre tots ells es fa a la secció 5.2. Espais implementats:

    • HSV (Hue, Saturation, Value): aquest espai de colors reflexa d’una manera més real la diferencia visual que l’espai RGB. Aquí a més a més es filtren els colors que tenen saturació menor de 0.1 i valor menor a 0.2 ja que són colors molt foscos.

    • XYZ: aquest espai, a priori, també detecta millor les diferències que l’espai RGB. A més a més és l’espai de colors estàndard definit per International Commission on Illumination (CIE). Ens serveix també com a pas intermedi per a convertir al següent espai.

    • L*a*b*: aquest espai, tècnicament, és el millor de tots els

    implementats ja que és l’únic que aconsegueix un espai totalment uniforme sense la correlació dels seus canals.

    3.1.3 Aplicació dels histogrames Una vegada tenim tots els histogrames creats, aquests ens serveixen, quan arriba una nova imatge, per a calcular les matrius ),( yxQtc de la següent forma:

    ))),((3(*3))),((2(*2))),((1(*1),( 321 yxIcanalHwyxIcanalHwyxIcanalHwyxQ tct

    ct

    ctc ++=

    Per a c=1..N+1 On ),( yxQtc és cadascuna de les matrius de sortida i I

    t(x,y) és el frame d’entrada del sistema.

  • 33

    La matriu de sortida és la mitja ponderada segons els pesos w1, w2, w3 del valor de cadascun dels canals de l’histograma per al color especificat en aquell píxel de la imatge d’entrada. D’aquesta manera s’obté de forma ràpida i senzilla la matriu ),( yxQtc .

    3.1.4 Filtrat dels histogrames Tal i com hem observat a la figura 11, els histogrames que queden tenen formes molt abruptes i, això pot provocar que nivells de color molt semblants donin molt diferents a l’histograma. Per tal de millorar els histogrames, s’ha ofert la possibilitat de poder filtrar-los aplicant el filtre de la mediana amb la següent màscara: 0.075 0.075 0.075 0.075 0.1 0.2 0.1 0.075 0.075 0.075 0.075 D’aquesta manera aconseguim un suavitzat de l’histograma:

    Histogrames de una pilota vermella fig. 13

  • 34

    3.2 Reconeixement dinàmic Aquesta fase es manté exactament igual que al framework comentat anteriorment per a filtrar possibles classificacions errònies del reconeixement dinàmic . A la secció 5.1 s’estudia el valor α idoni per al nostre sistema. Aquest valor es conclou que ha de ser de 0.2. La primera definició de la classe fons al reconeixement estàtic (secció 3.1.1) falsejava aquest model ja que a l’hora de normalitzar el fons baixava moltíssim les probabilitats de que algun píxel fos qualsevol objecte. Amb la nova definició aquest problema va desaparèixer.

    3.3 Tracking En aquest apartat s’ha estudiat el mètode predictiu que utilitza el framework anterior i s’ha modificat lleugerament. Es manté el filtre simple per tal de predir la posició en el frame anterior:

    1

    11

    ˆ

    )X(

    −− −+=tc

    tc

    tCc

    tct

    Cctc

    AA

    XXX

    ))

    1

    11

    ˆ

    )Y(

    −− −+=tc

    tc

    tCc

    tct

    Cct

    c

    AA

    YYY

    ))

    En canvi, el càlcul per tal de trobar els punts 1−tcTL ,

    1−tcTR ,

    1−tcBL ,

    1−tcBR ,

    que defineixen l’error del sistema predictiu, s’elimina. Aquesta eliminació es deu a dos factors: per una banda, es creu que no

    aporta una ajuda considerable al sistema i, per a altra banda, degut a això s’elimina per tal d’aconseguir una major velocitat de processat.

    El mètode anterior pressuposa que l’error que comet el sistema és

    proporcional a la quantitat de moviment i d’escalat predit per al frame actual.

  • 35

    Suposem, per exemple, que el nostre sistema ha predit moure’s molt, però resulta que comet molt error perquè l’objecte, aquesta vegada gairebé no s’ha desplaçat:

    El punt mostrat de l’objecte real entrarà com a incert (podent-lo salvar

    amb el reconeixement dinàmic) degut al gran quadrat d’error, ja que té dos punts dins de l’objecte al frame anterior.

    En canvi si el nostre l’objecte es mou molt i també la predicció era de

    desplaçament elevat, llavors el punt, que estava correctament predit, es converteix en incert (possibilitant el filtratge per part del reconeixement dinàmic) perquè s’ha pressuposat un error gran.

    L’error no depèn de la quantitat de moviment (velocitat), depèn del tipus de moviment que faci l’objecte, si és molt brusc (acceleració elevada) farà molt d’error al principi, però quan detecti la trajectòria, aquest ja no s’equivocarà tant. Eliminant aquests càlculs també s’eliminen dos paràmetres més del sistema: ε i δ.

  • 36

    Per tant, s’ha considerat que el més idoni és un error constant de manera que el càlcul del punt és de la següent forma:

    )inf,inf( 111 −−− = tctc

    tc yxTL

    )inf,sup( 111 −−− = tctc

    tc yxTR

    )sup,inf( 111 −−− = tctc

    tc yxBL

    )sup,sup( 111 −−− = tctc

    tc yxBR

    β−= −− 11 ˆ tCct

    c xxinf

    β+= −− 11 ˆ sup tCctc xx

    β−= −− 11 tCct

    c yyinf)

    β+= −− 11 sup tCctc yy

    )

    Aquesta β es recomana que depengui de la mida de la imatge, automàticament s’escull com el 1% del màxim entre l’amplada i llargada de la imatge aproximada cap a dalt. Per exemple, si tenim 320x240 => β=4 (1% 320, 3.2). També s’han canviat les condicions per a considerar un cert píxel com a objecte segur, incert o no objecte segur. Abans, tots cinc punts havien d’estar dins l’objecte del frame anterior però, ara es considera que quan hi hagi 3, es considera objecte segur, només que hi hagi 1 es considera incert i en altre cas “no objecte segur”. Això es deu a que el sistema anterior era massa restrictiu. Per a construir les matrius ),(1 yxT

    tN+ es fa de la mateixa manera que el

    framework anterior.

    3.3.1 Filtres tracking Per tal de millorar el tracking s’han incorporat dos nous filtres que poden aplicar-se voluntàriament. Per tal d’eliminar els possibles forats que quedin dins de l’objecte, s’aplica un senzill filtre morfològic que consisteix en mirar si el píxel tractat és negre i amb relació de veïnatge 8 té al voltant 5 píxels blancs, aquest es converteix en un píxel blanc.

    Relació de 8 veïns.

  • 37

    També s’ha afegit que es pugui recalcular l’histograma a cada frame de manera que quan hem detectat l’objecte, fem el nou histograma per la nova zona que ha estat detectada com a objecte.

    D’aquesta manera es vol aconseguir que l’objecte pugui canviar de color durant el tracking sense que el reconeixement estàtic doni error. Encara que l’objecte no canviï de color, aquesta utilitat és pràctica ja que l’objecte modifica el seu color degut a la diferència d’il·luminació.

  • 38

    4. Implementació Per tal d’implementar aquest framework, s’ha utilitzat el llenguatge java. Totes les funcionalitats d’aquest framework s’han implementat de manera que els càlculs es facin el més ràpid possible precalculant tot el possible. Tot això fa que aquesta aplicació utilitzi bastants recursos de memòria.

    4.1 Hotspots framework

    Una de les característiques principals dels framework és que tenen hotspots. Aquests hotspots són parts de l’aplicació que es poden tornar a implementar millorant-los.

    Per tal d’afegir una nova implementació s’ha de implementar el nou codi

    mitjançant les interfícies existents i fixant les noves classes a l’arxiu properties conf/class.properties

    4.1.1 Captura En aquesta aplicació s’han implementat dos tipus de captura: una llegeix les imatges d’un directori del disc dur i l’altra obté les imatges procedents d’una webcam. Si es volgués implementar un altre mètode de captura, es podria fer implementant la interfície CaptureFrames. Funcions que s’han d’implementar:

    • void setStaticRecognition(StaticRecognition staticRecognition) : aquesta serveix per a rebre el reconeixement estàtic que ha d’utilitzar el captura per enviar-li el frame a tractar.

    • void adquireFrame() : aquesta funció és per a que pugui ser cridada per part del reconeixement estàtic per a demanar-li un nou frame. Això es fa quan té obertes imatges del disc dur que es passen al reconeixement estàtic al ritme del processat del tracking total i no és un vídeo o webcam en els que l’enviament d’imatges ve determinat pel frame rate.

    • void stopFrameWork() : serveix per indicar que no enviï més imatges al reconeixement estàtic.

  • 39

    • void setFrames(ArrayList frames): serveix per a passar la llista d’imatges llegides de disc dur en cas que sigui d’aquest tipus.

    • Component setDriverWebcam(String driver): serveix per a passar-li el driver que obrirà el vídeo o webcam corresponent si és d’aquest tipus retornant el component java que visualitzarà la seqüència d’imatges.

    • Image getInitialFrame(): serveix per a que aquest mòdul retorni el primer frame de la seqüència a tractar.

    • void startFramework(): serveix per a que comenci a generar els frames a tractar.

    • void setFinalizeTracking() : serveix per a passar-li la funció que haurà de cridar una vegada acabi el tractament total.

    4.1.2 Reconeixement estàtic En aquesta aplicació s’ha implementat el reconeixement estàtic descrit a la secció 3.1.

    Si es volgués implementar un altre mètode de reconeixement estàtic, es podria fer implementant la interfície StaticRecognition:

    • void setFrame(BufferedImage frame) : aquesta funció és per a que li

    passin el frame d’entrada del reconeixement • byte addClass(BufferedImage frame, Point coorMin, Point

    coorMax): serveix per afegir la classe d’un objecte, passant-li el frame i el punts (dreta,inferior) i (esquerra,superior) del rectangle que conté l’objecte dins d’aquest frame. Retorna l’identificador de la classe creada.

    • byte addClassBackground(BufferedImage frame): funció per crear la classe fons. Retorna l’identificador d’aquesta classe.

    • void deleteClass(byte numClass) : funció per a esborrar la classe identificada pel paràmetre numClass.

    • void deleteAllClass(): funció per a esborrar totes les classes. • int getCreatedClasses(): retorna el número de classes creades • void setDinamicRecognition(DinamicRecognition dinR ecog): funció

    per a passar-li el reconeixement dinàmic utilitzat. • setCaptureFrames(CaptureFrames capture) : funció per a passar-li la

    classe de captura utilitzada per a poder cridar les seves funcions. • void setShowFrames(ShowFramesTracking showFramesTra cking):

    aquesta serveix per a passar-li la classe que mostrarà els resultats • void setWeightChannel1(float channel1): funció que serveix per a

    passar-li el pes del canal1 en la mitja ponderada del reconeixement estàtic.

    • void setWeightChannel2(float channel2): funció que serveix per a passar-li el pes del canal2 en la mitja ponderada del reconeixement estàtic.

  • 40

    • void setWeightChannel3(float channel3): funció que serveix per a passar-li el pes del canal3 en la mitja ponderada del reconeixement estàtic.

    • void setSincron(boolean sincron): funció que serveix per passar-li el tipus de captura que té per sobre:

    o Vertader: aquest mòdul és l’encarregat de cridar a adquireFrame() de captura.

    o Fals: el captura ja li anirà passant la imatge a tractar quan el captura cregui convenient

    • InformationClass getInformationClass(byte numClass) : funció per obtenir la informació associada a aquesta classe:

    o Regió on es situava l’objecte inicialment o Els histogrames de l’objecte dels tres canals

    • void resetFrame(): funció per a resetejar el número intern de frame a 0. • void setFilterHistogram(boolean filter) : funció per a indicar si es vol o

    no fer el filtratge de l’histograma. • void refreshHistograma(BufferedImage frame,int x, i nt y, float[]

    histoChannel1, float[] histoChannel2, float[] histo Channel3): funció per a actualitzar els histogrames dels tres canals per al píxel (x,y) de frame.

    • setTimeMesurement(TimeMesurement medTime): estructura que s’ha d’actualitzar per a poder saber els temps de processat de frames.

    Funcions que s’han d’implementar si volem que funcioni el mateix paquet de tracking amb redirecció d’histogrames:

    • resetHistogramMax(): reseteja l’histograma per a construir la classe fons.

    • finalizeHistogramClass(float[] channel1, float[] ch annel2, float[] channel3): fa les normalitzacions i càlculs finals per a formar els tres histogrames finals.

    • finalizeHistogramTotal(): forma l’histograma per a la classe fons • restoreHistograms(): restaura els histogrames inicials si ha hagut una

    redirecció.

    4.1.3 Reconeixement dinàmic En aquesta aplicació s’ha implementat el reconeixement dinàmic descrit a la secció 3.2.

    Si es volgués implementar un altre mètode de reconeixement dinàmic, es podria fer implementant la interfície DynamicRecognition:

    • void setFrame(float[][][] qc): serveix per a que el reconeixement estàtic li passi el seu resultat. La primera dimensió és cadascuna de les classes i les altres dues són les dimensions del frame tractat.

  • 41

    • void setTcBack(ArrayList tcBack): serveix per a que el trackling li passi el seu resultat. És una llista (cadascun és una classe diferent) de matrius de tracking ),(1 yxT tC

    − .

    • void setFrameInitial(ArrayList qcBack) : funció per a passar-li ),(0 yxPC . Cadascuna de les posicions on es troba l’objecte contindran un 1 i la resta un 0.

    • void setTrackingDecision(TrackingDecision trackingD ec): serveix per a passar-li el tracking decision que utilitza el sistema.

    • void setAlpha(float alpha): funció per a passar el paràmete α d’aquesta part.

    4.1.4 Tracking decision En aquesta aplicació s’ha implementat el tracking descrit a la secció 3.3.

    Si es volgués implementar un altre mètode de tracking, es podria fer implementant la interfície TrackingDecision:

    • void setFrame(ArrayList pc): funció per passar-li el resultat

    del reconeixement dinàmic. • void setFrameInitial(ArrayList pcAnt) : funció per a passar-li

    ),(0 yxTC . Cadascuna de les posicions on es troba l’objecte contindran un 1 i la resta un 0.

    • void setDecisionFactor(float theta) : funció per a fixar θ • void setBeta(int aprox) : funció per a fixar β • void setFilterMorfological(boolean filter): funció per a indicar si es fa

    el filtre morfològic o no. • void setRedirectHistogram(boolean redirectHistogram ): funció per a

    indicar si es redirecciona l’histograma o no. Funcions per a passar-li els diferents reconeixement estàtic i dinàmic i mostrador dels resultats finals: • void setDinamicRecognition(DinamicRecognition dinRe cognition) • void setShowrFrames(ShowFramesTracking showFrames) • void setStaticRecognition(StaticRecognition staticR ecognition)

  • 42

    4.1.5 Mostrar resultats En aquesta aplicació està implementat el mòdul que mostra les imatges per la mateixa aplicació i que escriu voluntàriament les imatges al disc dur.

    Si es volgués implementar un altre mètode de tracking, es podria fer implementant la interfície ShowFrames

    • void setFrame(ArrayList tc, ArrayList pc, int

    frame): funció que indica el final del processament del sistema per a un frame passant-li el resultat del reconeixement dinàmic i del tracking.

    • void setDisc(String ruta): serveix per a indicar-li si es volen guardar els frames a disc, si es rep un null, no es guardaran, en cas contrari, els frames s’emmagatzemaran en la ruta especificada.

    • void setFrame(float[][][] qc,BufferedImage frameOr iginal,int frame) : funció que serveix per passar-li el resultat del reconeixement estàtic i el frame original a més del número de frame que s’està tractant.

    • void addClass(Color trackObj, byte numClass): serveix per afegir classes (objectes) per a pintar-los de diferents colors.

    • void deleteClass(byte numClass): esborra la classe determinada per numClass

    • void stopFramework(): indica que no ha de mostrar més imatges. Funcions per a obtenir i guardar el punter per a poder accedir a la part central del framework.

    • void setFrameWorkAction(FrameworkAction action): funció per a especificar la classe que fa de control de tot el framework per a passar-li les imatges finals.

    • FrameworkAction getAction() : funció per obtenir la classe control.

    4.1.6 Color En aquest apartat s’han implementat els espais RGB, HSV, XYZ i L*a*b*, si es vol implementar-ne d’altres es pot fer implementant la interfície ColorObtention i afengint-la a l’arxiu conf/colors.properties:

    • short[] channelsObtention(BufferedImage frame, int x, int y): serveix per a retornar els tres canals corresponents al píxel (x,y) de la imatge frame.

    • void refreshHistogram(float[] histoChannel1, float[ ] histoChannel2, float[] histoChannell3, short[] color) : serveix per actualitzar els tres histogrames rebuts pel color (tres canals).

    • float[][] createHistograms() : retorna una matriu de 3 histogrames segons la resolució de cada canal

  • 43

    • float channelsCompare(float w1, float w2, float w3, float channel1, float channel2, float channel3) : rep per paràmetre els tres canals del color i els pesos per a fer la mitja ponderada i retornar-la

    Funcions que retornen les longituds dels histogrames de cadascun dels canals: • short getChannel1Length() • short getChannel2Length() • short getChannel3Length()

    4.2 Estructura del framework El framework consta de tres threads que realitzen la feina:

    • El primer thread existeix si la captura és a través de video o webcam. Té prioritat mínima i s’encarrega d’agafar el frame del buffer corresponent i transformar-lo en una imatge correcta per a passar-li al reconeixement estàtic.

    • El tercer thread té prioritat mitja i s’encarrega d’agafar les matrius resultants de cadascuna de les fases, fusionar-les i generar imatges per a escriure-les a disc i/o mostrar-les per pantalla.

    • El segon thread s’encarrega de fer el reconeixement estàtic, dinàmic i

    tracking. Aquest thread té prioritat màxima.

    L’intercanvi d’informació entre captura i el reconeixement estàtic es fa mitjançant un semàfor.

    Per part del captura, si és un thread, aquest cada 40 ms genera un

    frame nou que envia al reconeixement estàtic generant un signal del semàfor (sobreescriu les imatges encara que el reconeixement no l’hagi tractat, es salta frames). Si no és un thread, aquest esperà a que li demanin un frame i quan sigui el cas ho enviarà provocant el signal del semàfor.

    Per part del reconeixement, quan acaba de fer tot un processat, si

    aquest és l’encarregat de demanar un frame, el demana al captura i després es bloqueja fent wait del semàfor. Es desbloquejarà quan el captura li enviï el nou frame, en cas contrari es quedarà bloquejat fins que comenci a rebre frames de nou.

    Si no és l’encarregat de demanar el frame, mira si té una imatge nova

    pendent, si és així allibera tots els signal i torna a començar el processament del frame, si no en té de nous es bloqueja a la espera de rebre un altre frame.

  • 44

    L’intercanvi entre el mostrador de frames i reconeixement es fa de la mateixa manera anterior.

    4.3 Implementació dels espais de colors Els diferents espais de colors [30] implementats són:

    • RGB: aquest espai s’obté directament de cadascun dels frames ja que aquestos estan en aquest espai

    • HSV: s’utilitza l’algorisme de Smith per a transformar l’espai RGB en HSV.

    • XYZ: aquest és l’espai estàndard definit per la CIE Per tal de transformar l’espai RGB a aquest es necessita una matriu de transformació que depèn del tipus d’espai RGB que es tingui. En el nostre cas (imatges java) l’espai rgb és sRGB amb el punt blanc de referència D65 [30]. Abans d’aplicar aquesta matriu de transformació és necessari aplicar una petita transformació ja que sRGB no disposa d’alpha. Posteriorment, per a poder utilitzar-lo en els histogrames es normalitzen els valors ente 0 i 255. D’aquesta manera es perd precisió en el moment de la conversió però s’ha cregut que aquesta és ja suficient.

    • L*a*b*: per tal d’arribar a aquest espai es necessita tenir els colors en l’espai XYZ per a després aplicar la transformació entre aquest dos espais [30]:

    L* = 116 * (Y/Yn)1/3 - 16 si Y/Yn > 0.008856 L* = 903.3 * Y/Yn en altre cas

    a* = 500 * ( f(X/Xn) - f(Y/Yn) ) b* = 200 * ( f(Y/Yn) - f(Z/Zn) )

    on f(t) = t1/3 for t > 0.008856 f(t) = 7.787 * t + 16/116 en altre cas

    on (Xn,Yn, Zn) és el punt de referència D65 per al blanc.

  • 45

    5. Avaluació En aquesta fase de proves es mostrarà el resultat del tracking del nostre framework amb alguna comparativa respecte el framework en el que es basa. Totes les imatges retornades pel nostre framework tenen un conjunt de quatre imatges: el frame original a la part superior esquerra, el frame retornat pel reconeixement estàtic a la part superior dreta, el frame retornat pel reconeixement dinàmic a la part inferior esquerra i finalment el tracking final a la part inferior dreta. Es genera un conjunt d’imatges per a cadascuna de les classes a detectar, és a dir, per a cadascun dels objectes que volem tractar. La seqüència d’imatges complerta es proporciona al CD annex.

    5.1 Paràmetre α (reconeixement dinàmic) Primerament es provarà el paràmetre α del reconeixement dinàmic. Resultats amb α=0.5, pilota vermella: frame 14 frame 15 frame 44

    frame 45

  • 46

    Resultats α=0.2, pilota vermella: frame 14 frame 15 frame44 frame 45 Com es pot observar a les proves anteriors, una α gran ajuda a filtrar l’objecte en situacions estàtiques com és el cas dels frames 14 i 15 en els quals la bola no es mou. Al primer grup de proves α=0.5 aquets dos frames són bastant millors que els mateixos frames amb α=0.2. Però si observem els frames 44 i 45, una α gran fa que l’objecte es desvirtuï, es perden píxels a diferencia de amb α=0.2 en que l’objecte es segueix bastant millor.

    La modificació de la alpha varia la sortida del reconeixement dinàmic i,

    en conseqüència la sortida del tracking però no la sortida del reconeixement estàtic.

    5.2 Espais de colors En el reconeixement estàtic la sortida pot ser diferent segons l’espai de colors que s’esculli (amb α=0.2): RGB: frame 45 histograma RGB pilota vermella

  • 47

    HSV: frame 45 histo. H(vermell)S(blau)V(verd) pilota vermella XYZ: frame 45 histo. X(vermell)Y(blau)Z(verd) pilota vermella L*A*B*: frame 45 h. L*(vermell)A*(blau)B*(verd) pilota vermella Com es pot observar en l’histograma del RGB, els tres canals estan altament correlats i els pics de cada canal són bastant amples, és a dir hi ha molta varietat de color dins del mateix objecte, tot i que visualment no hi és. Quan canviem a HSV els canals es fan més estrets, excepte el Value (intensistat, blau a l’histograma) que segueix sent un canal bastant dolent. Tot i així es millora el resultat del RGB. Quan transformem a XYZ els tres canals són molt més estrets és a dir els colors dins de l’objecte varien menys ja que visualment tampoc varien. Això provoca que el resultat sigui bastant millor que els dos anteriors.

  • 48

    Finalment amb l’espai LAB, els tres canals no només són més estrets sinó que també queden separats, és a dir no es superposen, fent així que aquests estiguin menys correlats. En aquest cas, aquest espai aconsegueix uns resultats semblants al XYZ, però per la gran majoria de casos, LAB supera en qualitat al XYZ. Ha de quedar clar que al canviar l’espai de colors es millora la sortida del reconeixement estàtic fent que els píxels de la pilota tinguin probabilitats més altes (blanc més clar) de pertànyer a la classe. D’aquesta manera s’augmenten també les probabilitats del reconeixement dinàmic augmentant l’encert del tracking per als píxels incerts. D’altra manera també es disminueix la probabilitat dels píxels que realment no són de l’objecte evitant així falsos positius.

    5.3 Filtrat morfològic

    En aquest apartat es valorarà el filtre morfològic que es fa a l’etapa de tracking. Les proves estan fetes sobre l’espai de colors LAB amb α=0.2 i β=10 ja que l’acceleració del moviment de les pilotes és bastant alt (en totes les altres proves β=4). Sense filtre morfològic: frame 11

  • 49

    Amb filtre morfològic: frame 11 Només es posa d’exemple un frame però el comportament és semblant per a la resta de frames. El resultat és que sense filtre morfològic l’objecte queda amb petits “forats”, en canvi, amb el filtre morfològic aconseguim que l’objecte quedi més compacte, com es veu a la segona prova.

  • 50

    5.4 Redirecció de l’histograma Amb aquesta funcionalitat es torna a construir, a cada frame, l’histograma de l’objecte que s’ha detectat amb el tracking. Amb aquesta funcionalitat en principi es volia oferir que un objecte canviés de color progressivament, però el canvi ha de ser molt poc significant per a que pugui detectar l’objecte. En canvi, és molt útil per als canvis de il·luminació ja que aquestos fan que el color canviï progressivament. Les proves s’han fet amb l’espai de colors LAB, α=0.2 i filtre morfològic. Sense redireccionar l’histograma: frame 184 frame 190 frame 195 frame 200 Fent la redirecció de l’histograma: frame 184 frame 190

  • 51

    frame 195 frame 200 Com es pot observar en les proves anteriors si no es redirecciona l’histograma, els colors canvien degradant el reconeixement estàtic i dinàmic i, en conseqüència el tracking perd l’objecte. Aquest comença a perdre’s a partir del frame 184 i en el frame 200, pràcticament no està present. En canvi si es redirecciona l’histograma, es pot observar que durant tots els frames mostrats no es perd l’objecte i el tracking és bastant acurat.

    5.5 Objectes amb característiques semblants A les proves anteriors ja s’ha pogut observar que en el reconeixement estàtic i dinàmic hi ha més zones (pintades de gris) que tindrien probabilitat de ser objecte i que aquestes són filtrades pel tracking. De totes formes en aquesta prova específica, es proven dos objectes molt semblants i s’observa com el tracking detecta només l’objecte del nostre interès. frame 104 frame 109

  • 52

    frame 179 frame 189 Aquestes proves estan realitzades amb l’espai de colors LAB, α=0.2, β=4, redireció de l’histograma i filtre morfològic.

    Com s’observa a les proves anteriors tot i que l’objecte de l’esquerra també surt al reconeixement estàtic i dinàmic (menys probable), aquest desapareix totalment al tracking en el que només surt l’objecte que s’està seguint (objecte de la dreta).

    5.6 Comparativa frameworks Tot seguit es compara el nostre framework amb el framework en el que es basa aquest treball de recerca. Les seqüències provades són lleugerament diferents però l’entorn i els objectes de la seqüència són els mateixos. Resultats del A probabilistic framework for object recognition and tracking in video sequences: En aquests resultats tenim les quatre imatges ajuntades en una: la imatge segmentada, resultat del reconeixement estàtic, resultat del reconeixement dinàmic i resultat final, d’esquerra a dreta.

    Tot i que en l’explicació d’aquest framework (secció 2.5) es comenta que no es tracten oclusions, aquests resultats corresponen a una millora d’aquest pendent d’acceptació en el Congres International on Pattern Recognition 2008.

  • 53

    frame 4

    frame 8

    frame 10

    frame 13

    frame 17

  • 54

    Resultats del framework proposat amb espai LAB, β=10, α=0.2 i filtre morfològic:

    frame 4 frame 8

    frame 10 frame 14

    Com es pot observar a les proves anteriors en el nostre framework la sortida del reconeixement estàtic té molt més píxels que no són de l’objecte, tot i que en l’altre framework els píxels que no són de l’altre objecte també tenen una probabilitat alta. La sortida del tracking entre els dos frameworks no difereix en gairebé res la qualitat final de la detecció. També es pot notar que en l’altre framework es recupera d’una oclusió gairebé total (frames 13 i 14) gràcies a la última millora d’aquest framework. En el nostre sistema, tot i que no estan tractades les oclusions, també es recupera d’una oclusió parcial petita (frames 8 i 10). Els resultats no difereixen gaire tot i que l’altre framework necessita d’un entrenament previ, en canvi el sistema implementat només necessita d’una selecció inicial de l’objecte al primer frame. La diferència en temps de càlcul de reconeixement també és molt gran ja que A probabilistic framework triga 20s (0.05 fps) per frame i objecte amb un

  • 55

    Pentium IV 3.4 GHz 512 MB RAM. En el nostre sistema s’ha provat a dos màquines:

    • Intel Core2Duo 2x2.13GHz 2GB RAM: la mitja és de 120 ms (8 fps) per objecte i frame.

    • Pentium IV 1.4 GHz 256 MB RAM: la mitja és de 1.2 s (0.8 fps) per objecte i frame.

    Amb aquestes proves es pot observar que tot i que la primera màquina és

    lleugerament superior, els resultats són molt més ràpids. També es pot observar que amb una màquina molt inferior, els resultats segueixen sent 20 vegades més ràpids.

    En tots dos frameworks es fa la detecció de totes dues pilotes blaves

    (seqüències senceres CD annex).

    Desactivant el filtre morfològic es baixen ostensiblement els temps però també es redueix sensiblement la qualitat com es veu a la secció 5.3

    5.6.1 Oclusions Resultats framework propi: frame 1 frame 2 frame 4

  • 56

    Resultats A probabilistic framework:

    frame 1

    frame 2

    frame 4

    Com es pot observar A probabilistic framework es recupera perfectament de la oclusió de la pilota verda, en canvi, en el nostre, tot i que el reconeixement estàtic detecta correctament la pilota, el tracking perd la seva trajectòria

  • 57

    6. Conclusions En aquest treball de recerca s’ha estudiat el tracking d’objectes. Segons la literatura llegida, tots els sistemes actuals són molt dependents de l’aplicació, és a dir, són molt dependents del tipus d’objecte i entorn on s’estigui realitzant el tracking. L’objectiu és que el nostre sistema sigui capaç de fer tracking de qualsevol tipus d’objecte i per això aquest treball s’ha basat en un framework anterior (secció 2.5) que ja proporciona part d’aquest objectiu modificant-lo parcialment. Com s’ha vist a les proves, els nostres resultats són lleugerament pitjors, però es millora moltíssim els temps de càlcul (propietat indispensable pel temps real). També s’ha de considerar que s’elimina la necessitat d’entrenar prèviament la xarxa en el reconeixement estàtic. Tot i que els resultats temporals han millorat moltíssim respecte al framework anterior, aquests no són suficients per al temps real ja que en el millor dels casos assolim 15 fps (sense cap tipus de filtre i objectes petits). També s’ha observat que eliminar totalment la dependència de l’aplicació en el tracking d’objectes és gairebé impossible ja que tot i que el nostre framework és bastant general, depèn del color de l’objecte. És a dir, ha de ser un objecte amb un color predominant i bastant diferent visualment de la resta de l’entorn ja que és la única característic