Innehåll Kamerabaserad interaktion Del 1 2D Anders Henrysson HCI Kameran Optiskt flöde Markörer Objektigenkänning Fixpunktsaritmetik Isomorf vs. isometrisk interaktion Positionskontroll vs. derivatakontroll Frihetsgrader Mobilitet begränsar Aspekter: Hastighet Precision Lätthet att lära Utmattning Koordination Beständighet Optimerat för att navigera menysystem En hand Mobil interaktion 1
Optimerat för textinmatning Två händer Mobil interaktion Motivation Med större skärmar, mer minne och snabbare processorer kommer mobila applikationer bli mer lika de som finns på PC. Exempel: Webbläsare 3D-grafik blir vanligare och kräver fler frihetsgrader. Interaktion viktig för spelkänsla. Mobilens hanterbarhet gör den lämpad för rörelsebaserad interaktion. Se mobiliteten som en styrka, inte som en begränsning Embodied User Interfaces [Fishkin, Rekimoto] Sensorer som registrerar tryck, lutning m.m. En hand Fortfarande isometriskt Sensorer i mobiler För interaktion krävs sensorer med hög upplösning och uppdateringsfrekvens. Accelerometrar Gyro Kompass 2
Mobilkameran + Finns i mer än en miljard mobiler + Har utvecklat enormt när det gäller stillbilder + Kan användas för 6 DOF interaktion Mobilkameran - Begränsad videoprestanda - CIF (352 288) @ 15 Hz - USB-mus: (400dpi) 125 Hz - Beräkningstunga algoritmer - Inget MHz-race - Ingen FPU - Batteri Beräkning av kamerans rörelse Rörelsefält (Motion Field) Rörelsefält (Motion Field) Optiskt flöde (Optical Flow) Blockkorrelation Markörer Objektigenkänning In: Två bilder tagna i tät följd Ut: Vektorfält som beskriver hur pixlarna rört sig mellan bilderna Använd vektorfältet för att beräkna kamerans rörelse 3
Exempel Optiskt Flöde Taylorutveckling av I(x+u,y+v): Antag att pixeln är oförändrad mellan bilderna (I t är skillnaden mellan bilderna) Vad är I x? Derivatan med avseende på x En bild som fås genom att applicera ett filter på I: [-1/2 0 1/2] (Normaliserat) I x ( x, y) = 1/ 2 I ( x 1, y) + 0 I( x, y) + 1/ 2 I( x + 1, y) Anta att vi arbetar med en gråskalebild: Optiskt Flöde Lös för u och v Ej lösbart för endast en pixel Använd flera. Antag att regionen är beständig. 4
Optiskt Flöde Ex. Ett 5 x 5 fönster runt pixeln. 25 ekvationer per pixel. Vektorform: Lucas - Kanade Överbestämt. Använd minstakvadratmetoden Matrisform: Lös: Klar! Lös för flera pixlar för att detektera rotation etc. Lukas - Kanade Komplicerat Inte helt robust Bäst för små rörelser Kan itereras: Warpa H till I m.h.a. rörelsefältet Repetera till konvergens uppnås Brute Force: Blockkorrelation Rörelseestimering i MPEG-4 Spara block runt pixel i H Stega igenom I och räkna ut skillnaden mellan blocken. Lagra värdena och välj det lägsta Betydligt enklare, men beräkningstungt (Ex 10x10 block i VGA-bild). Vi vill utnyttja de 15 fps som kameran ger. 5
Pyramidisering Idé: 1. Halvera upplösningen tills att större delen av bilden kan sökas snabbt. Hitta bästa matchning. 2. Gå ned i pyramiden och börja från bästa positionen från förra nivån 3. Sök igenom ett begränsat område 4. Repetera tills lägsta nivån är nådd Exempel: Pyramidisering search search search search Hur ska vi välja feature att följa? Kantlinje? Gradienten stor, men samma för alla pixlar på kantlinjen. 6
Homogen region? Heterogen region? Gradienten för liten. Bruskänsligt. Gradienten stor och unik. Extrempunkt. Bra val. Hur hitta automatiskt? Harris Hörndetektor Tar hänsyn till derivatan i båda riktningarna 1. Klassificera pixlar 2. Välj de med högst värde Κ = 0.04-0.15 7
Summering + Flexibel + Obegränsat område - Drift såvida inte features lagras - Fallerar vid rörlig eller homogen bakgrund Markörer En markör är ett visuellt objekt med kända egenskaper Genom att söka efter dessa egenskaper i en bild kan kamerans läge beräknas för varje bild Varje markör unik Data (position, Id, URL) kan associeras med markören Vanligtvis ett svart mönster på vitt papper. Tröskelvärde kan då användas för att hitta markören Olika typer av markörer kräver speciella algoritmer MIXIS [Hansen] MIXed Interaction Space Etablera en 3-dimensionell interaktionsrymd genom att tracka en cirkel som kan ritas förhand. Möjligt att dra och zooma en bild samtidigt Genom att se mobilens gränssnitt som ett 3D objekt i den fysiska världen minskar den kognitiva belastningen Hur hitta en cirkel? Randomized Hough Transform (RHT) Binär kantbild (kantdetektor + tröskling) Ackumulator med cirkelparametrar (trädstruktur) Indata: Array av kantpunkter Utdata: Maximum i ackumulatorn ger oss parametrarna för cirkeln. 8
Hur hitta en cirkel? MIXIS Exempel: linje y=ax+b 1. Välj slumpvis två kantpunkter P 1 (x 1,y 1 ) och P 2 (x 2,y 2 ) 2. Räka ut a och b från: Video 3. Inkrementera A(a,b) 4. Den punkt i A som har högst värde representerar den sökta linjen Cirkel med känd radie (x-a) 2 +(y-b) 2 =r c 2 Cirkel med känd radie (x-a) 2 +(y-b) 2 =r 2 Välj tre punkter. A(a, b, r) Visual Codes [Rohs] Visual Codes Definierar ett koordinatsystem. Detta innebär att samtliga pixlar i bilden har kända koordinater i markörplanet. Förutom relativ rörelse kan mobilens absoluta position beräknas i 3D Bitmönster som innehåller kodvärde. Bitarna måste vara större än en pixel. 9
Visual Codes Hitta koden 1. Gör bild till gråskala: Grå = (Röd + Grön)/2 2. Traversera bilden rad för rad i ett sicksackmönster. Uppdatera det viktade medelvärdet av grånivåerna 3. Skapa tröskelvärde från medelvärdet 4. Skapa binär bild genom att tröskla 5. Hitta svarta regioner i bilden (Labeling) 1. Traversera rad för rad och märk upp regioner 2. Sammanfoga angränsande regioner 6. Hitta orienteringsstrecken genom att matcha en ellips med regionerna 7. Hitta hörnpunkterna och utvärdera koden Visual Codes Beräkna vyparametrar Eftersom både bilden och markören är plana finns det en mappning mellan dem i form av en unik homografi (= projektiv transformationsmatris) Genom att använda denna mappning kan man beräkna mobilens position och rotation relativt markören Med ett hårkors kan användaren välja saker i den fysiska världen vars koordinater i markörsplanet är kända. Markör på papper: Visual Codes Exempel Markörer - Generellt 1. Hitta känd geometri i binär bild m.h.a. bildanalys 2. Beräkna kamera markör transformation 3. Extrahera data med känd orientering relativt geometrin Markör på skärm: 10
Summering + Känd och beständig geometri Absolut position och ingen drift + Många frihetsgrader möjliga (mer om detta nästa gång) + Databärare (t.ex. fysiska webbadresser) + Tvåhandsinteraktion: Dominant hand hanterar mobil. Icke-dominant hanterar markör. Objektigenkänning Vissa objekt finns alltid till hands Generellare än markörer - Begränsad interaktionsrymd - Fysiskt föremål (oftast) - Praktiskt? - Estetiskt? MIXIS (igen) Huvudet har man alltid med sig Använd kameran på telefonens framsida Att känna igen ett specifikt ansikte är mycket svårt. Att hitta ett ovalt, hudfärgat objekt är lättare. 4 DOF Headtracking Indata: Bild + histogram Utdata: ellipsparametrar 1. Leta upp region som matchar histogram 2. Expandera sökfönstret 3. Repetera till konvergens 11
Tracking av fot KickReal Tracking av fot Indata: Bildsekvens Utdata: Bollens riktning och hastighet Motion tracking + kantdetektering i ROI 1. Räkna ut fotens kant i båda bilderna 2. Räkna ut rörelsevektor 3. Hantera kollision mellan fot och boll (impuls) Summering + Generella algoritmer. Lämpligt för spel. + Ingen utskrift behövs - Begränsad interaktionsrymd - Inget unikt id 12
Gaze tracking? Framtid Trend: Mindre datorer och större skärmar HDTV + Mobil = framtidens PC? Fixpunktsaritmetik Mobiler har ingen FPU. Emulering av flyttal två magnituder långsammare än i hårdvara Problem: Tracking kräver flyttalsprecision Lösning: Använd heltal 32 bitar = -2147483648 2147483648 Har ingen fysisk motsvarighet i dessa sammanhang Vi kan använda vissa bitar till heltalsdelen andra till decimalerna OpenGL ES: 16 bitar till varje. 16:16 Trigonemetri: 4:28 Fixpunktsaritmetik Flyttal till 16:16 fixpunkt: x.f*2 16 eller x.f*1<<16 där << är skiftoperatorn d.v.s.: y<<x = y*2 x och y>>x = y/2 x. Macron (bits = 16): #define float_to_fix(val, bits) (int)(val * (1<<bits)) #define fix_to_float(val, bits) (float)val / (1<<bits) Addition och subtraktion: Som vanligt Multiplikation och division: 64 bitar för att inte tappa de mest signifikanta bitarna Multiplikation: Skifta ner resultatet res = (int) (((I64) x * (I64) y) >> bits); Division: Skifta upp resultatet res = (int) ((((I64)x)<<bits)/(I64)y); Nästa föreläsning 6DOF-tracking och 3D-interaktion Augmented Reality Koncept Trackingtekniker Applikationer CMAR Trigonometri: Tabeller! 13
Referenser Hansen, T. R., Eriksson, E., and Lykke-Olesen, A. 2006. Use your head: exploring face tracking for mobile interaction. In CHI '06 Extended Abstracts on Human Factors in Computing Systems (Montréal, Québec, Canada, April 22-27, 2006). CHI '06. ACM Press, New York, NY, 845-850 Hansen, Thomas Riisgaard, Eriksson, Eva, Lykke-Olesen, Andreas, Mixed Interaction Space Expanding the Interaction Space with Mobile Devices, full paper at British HCI 2005, Edinburgh, Scotland, in People and Computers XIX - The Bigger Picture. Proceedings of HCI 2005, Springer Verlag. URL:www.pervasiveinteraction.org/Mixis Rohs, M., Real-world Interaction with Camera Phones, in H. Tokuda & H. Murakami (eds.), Proceedings of the 2nd International Symposium on Ubiquitous Computing Systems (UCS 2004), 2004. URL:www.vs.inf.ethz.ch/res/proj/visualcodes Referenser Paelke, V., Reimann, C., and Stichling, D. 2004. Foot-based mobile interaction with games. In Proceedings of the 2004 ACM SIGCHI international Conference on Advances in Computer Entertainment Technology (Singapore, June 03-05, 2005). ACE '04, vol. 74. ACM Press, New York, NY, 321-324 Rekimoto, J. & Ayatsuka, Y. [2000], CyberCode: Designing Augmented Reality Environments with Visual Tags, in W. E. Mackay (ed.), Proceedings of DARE 2000 on Designing Augmented Reality Environments, ACM Press, pp.1 10. Kälviäinen, H., Hirvonen, P., Xu, L. & Oja, E. [1995], Probabilistic and Non-probabilistic Hough Transforms: Overview and Comparisons, Image and Vision Computing 13(4), 239 52. SemaCode Corporation [2005], URL:Sem@Code, semacode.org Referenser Jingtao Wang, John Canny, TinyMotion: Camera Phone Based Interaction Methods, in alt.chi of ACM CHI 2006, Montreal, Canada, April 24-27, 2006. URL:guir.berkeley.edu/projects/tinymotion Fishkin, K.P., Gujar, A., Harrison, B.L., Moran, T., Want, R: Embodied User Interfaces for Really Direct Manipulation. Communications of the ACM, Vol. 43, No. 9 (2000) 74 80 ShotCode URL:www.shotcode.com Bouguet Jean-Yves: Pyramidal Implementation of the Lucas Kanade Feature Tracker Description of the algorithm Jianbo Shi and Carlo Tomasi, Good features to track", Proc. IEEE Comput. Soc. Conf. Comput. Vision and Pattern Recogn., pages 593-600, 1994. 14