PjE Proje Encadré IVI Semaine 6 : suivi des objes e TUIO Maser Informaique : hp://www.fil.univ-lille.fr/ Spécialié IVI : hp://maser-ivi.univ-lille.fr/
Plan du cours Suivi d'objes dans une séquence d'images inérê e principe du suivi par l'inermédiaire de blobs associaion selon un crière de disance algorihme de mise à jour des éiquees associaion selon d'aures crières e disance généralisée Gesion des appariions e dispariions d'objes appariion d'un obje e algorihme de mise à jour dispariion d'un obje e algorihme de mise à jour appariions e dispariions simulanées algorihme de mise à jour uilisan un seuil Proocole TUIO objecif e principe de foncionnemen serveur TUIO e algorihme général d'envoi de messages
Inérê du suivi (/) Passage de l'image à la séquence d'images dans chaque image, une lise de blobs a éé déecée. Chaque blob es caracérisé par plusieurs paramères e repéré par une éiquee (par exemple un numéro). insan insan + insan + Problème : l'éiquee qui es aribuée à un blob représenan un obje à l'insan + n'es pas forcémen idenique à celle de l'insan.
Inérê du suivi (/) Suivre = conserver la même éiquee suivre, c'es associer sans ambiguïé la même éiquee à un obje (e non un blob) qui rese visible duran la séquence. insan + insan + insan + sans suivi avec suivi Problème : Commen déerminer à quel obje correspond un blob? 4
Premier indice, disances iner-blobs (/) Viesse apparene dans l'image veceur viesse apparene = projecion du veceur viesse de l'obje sur le plan image. rappor du déplacemen du blob par la période d'acquisiion. Supposiion : viesse apparene faible vérifiée soi si la viesse réelle es faible, soi si la cadence d'acquisiion des images es élevée (période coure). insan insan + comparaison / + 5
Premier indice, disances iner-blobs (/) Soluion du problème de suivi si la viesse apparene es faible, le blob de la nouvelle image qui correspond au même obje es celui qui es le plus proche. Calcul des disances euclidiennes on calcule les disances enre le cenre de chaque blob de la nouvelle image e les cenres de ous les blobs de l'image précédene, puis on associe pour la disance la plus faible.???? insan insan + comparaison / + 6
Premier indice, disances iner-blobs (/) Algorihme ) on calcule la marice des disances enre les cenres de ous les blobs de l'image courane e ous les cenres des blobs de l'image précédene. ) on cherche le minimum dans chaque ligne ou chaque colonne afin de rouver l'associaion. ) on assigne à chaque blob de l'image courane l'éiquee du blob qui es le plus proche dans l'image précédene. +??? +??? + 5..9 40..9.9. 7 6.4.. 4.6. 4. 4. 4. 7
Deuxième indice, similarié des blobs Caracérisiques d'un blob paramères déerminés duran l'analyse en composanes connexes : surface, orienaion, ec. Supposiion deux blobs qui corresponden à un même obje dans deux images successives on des paramères similaires. on peu égalemen déerminer une disance enre paramères.???? insan insan + comparaison / + 8
Calcul de disance généralisée Veceur caracérisique on regroupe ous les paramères d'un blob dans un unique veceur : (posiion x, posiion y, surface, orienaion, ec). Disance généralisée enre deux veceurs on calcule la norme de la différence enre deux veceurs. problème de la norme euclidienne : elle suppose que oues les composanes on la même mérique, ce qui n'es pas le cas pour les veceurs caracérisiques des blobs. Soluion: normes non euclidiennes on ransforme les caracérisiques afin qu'elles aien oues des mériques similaires ou des inervalles de variaion similaires. exemple, pluô que d'uiliser la surface on peu uiliser sa racine carrée en an que paramère. 9
Dispariion d'un obje Siuaion un obje sor du champ de vision du sysème. dans la nouvelle image, il y a un blob de moins dans la lise. Algorihme ) on calcule la marice des disances généralisées (non carrée). ) on cherche le minimum dans chaque colonne. ) on assigne à chaque blob de l'image courane l'éiquee du blob qui es le plus proche dans l'image précédene. +?? +?? + 5..9.9.9. 7.. 4.6. 0
Appariion d'un obje Siuaion un obje enre dans le champ de vision du sysème. dans la nouvelle image, il y a un blob de plus dans la lise. Algorihme ) on calcule la marice des disances généralisées (non carrée). ) on cherche le minimum dans chaque ligne. ) on éiquee les blobs en foncion des disances minimales (on rouve les associaions pour les objes qui exisaien déjà). 4) on assigne une nouvelle éiquee au blob non associé. +??? +??? +? + 5..9 40..9.9.9. 7 6.4...
Cas général : appariions e dispariions simulanées (/) Siuaion cerains objes peuven sorir du champ de vision e d'aures objes peuven simulanémen y enrer. les algorihmes simples ne peuven plus raier ce cas général. Une soluion (parmi an d'aures!) on fai inervenir un seuil, fixan la valeur maximale de la disance qui es uilisée comme crière d'associaion. Algorihme ) on calcule la marice des disances généralisées. ) s'il y a plus de lignes que de colonnes, on cherche le minimum dans chaque colonne. Sinon, le minimum dans chaque ligne. ) on élimine les disances minimales supérieures au seuil. 4) on supprime les blobs don la ligne ne conien pas de minimum de disance, 5) on éiquee les blobs don la colonne conien un minimum de disance, e on assigne une nouvelle éiquee aux aures.
Cas général : appariions e dispariions simulanées (/) Algorihme, avec seuil sur la disance = 0 +???? +???? 5. 4..9 40..9. 6.4 7.. 4.6 7.. 7 +???? +?? + 4 5.9.9.9...
Proocole TUIO Tangible User Inerface descripion absraie de l'ineracion enre un (ou plusieurs) uilisaeur(s) e une surface muli-ouch. ransmission de l'évoluion emporelle de l'ineracion par envoi de messages enre un serveur e un clien (applicaions). 4
Serveur TUIO Analyse de l'ineracion e envoi de messages - le serveur TUIO analyse l'ineracion uilisaeur / able en déecan par exemple les conacs objes / surface sensible, - il mainien à jour une lise des conacs, e ransme les événemens impliquan un changemen de cee lise vers le clien TUIO à ravers le proocole Open Sound Conrol (module Pyhon pyosc), à l'origine desiné au parage de données musicales enre synhéiseurs e ordinaeurs (alernaive au sandard MIDI). Classe TUIO.TuioCursor gère la descripion des curseurs (posiion, viesse, accéléraion). Classe TUIO.TuioServer gère les mises à jour de la lise (ajou, suppression e mise à jour de curseurs) e les envois de messages vers le clien. 5
Serveur TUIO Algorihme global ) iniialisaion d'une insance de la classe TUIO.TuioServer server = TUIO.TuioServer(address="localhos", por=) ) mere à jour ous les curseurs qui exisaien déjà cur = server.getuiocursor(sid) server.updaetuiocursor(cur, new_x,new_y) ) ajouer les curseurs qui n'exisaien pas (iniialisaion d'une insance de la classe TUIO.TuioCursor) cur = TUIO.TuioCursor(sid, x, y) server.addexernaltuiocursor(cur) 4) enlever les curseurs qui n'exisen plus (individuellemen ou oalemen) server.removeexernaltuiocursor(cur) server.removealltuiocursor() 5) ransmere la lise mise à jour, puis boucler vers l'éape server.commiframe() 6