-Projekt- FMA170- Bildanalys Karl Berggren, 820503-2454 d02kb@student.lth.se Andreas Helgegren, 811119-2715 d02ah@student.lth.se Handledare: Håkan Ardö hakan@debian.org 30 november 2007
1 Projektide Undertexter på DVD-skivor är sparade som fyrfärgsbilder som placeras överfilmennärdenspelasupp.ommanspararendvd-filminågotannat format, t.ex. xvid, för att spara utrymme känns det dock onödigt att spara dessa texter som bilder. Det finns dessutom ett flertal filformat för att spara undertexter som text, vilken sedan kan renderas över videoströmmen med valfritt typsnitt. Målet med detta projekt är att skriva ett program som använder textigenkänning på undertextbilderna och sedan sparar dessa som text. Beroende på hur snabbt arbetet fortgår är det även önskvärt att implementera export av texten till ett fungerande format för text-baserade undertexter. För att få bästa möjliga prestanda kommer vi utveckla programmet i programspråket C. Detta medför att all önskadvärd funktionalitet måste implementeras på egen hand. 2 Utförande 2.1 Segmentering Ensubtitlekanfördetotränadeögatenbartbeståavsvartaochvitafärger, dådettainteärfalletutanbeståravhela4färgerharvivaltattstrukturera en färgmatris som innehåller de önskade färgerna. Färgmatrisen skickas med som attribut tillsammans med hela undertextbilden som sedan segmenterasix-ledochy-led.detendaviegentligengörärattsummera antalet pixlar som överrensstämmer med färgmatrisen. Envanligundertextkanseutungsåhär: Närvisedanharprojiceratundertexteniy-ledservivaribildensom raderna förhåller sig. 1
Projectionen i y-led blir en massa mindre staplar som representerar alla bokstäverna. Denna bilden är utdragen får en av våra debugfunktioner där båda raderna är projiceras samtidigt. I verkligheten är det bara en rad som kommer projiceras. Resultatet blir likt ett stapel-diagram där staplarna representerar var i undertexten bokstäverna befinner sig. För att kunna fånga upp bokstäver såsomåäochöharviimplementeratenlookaheadsomarbetarutefteren flexibel konstant, i dagsläget satt till hela 5 pixlar. Eftersom vi arbetar med segmentring både i x och y-led har vi strukturerat upp en segmenteringsmatris som fungerar för både rad- och bokstavs-segment. Det ända som egentligen kan försvåra segmenteringen är den aktuella fonten. Många undertexter inehåller fonten Italic som förhåller sig aningen sne. Fonter med väldigt små mellanrum mellan bokstäverna kan också ställa till problem då vår segmentering kommer tyda dessa som en ända stor bokstav. En önskvärd implementering skulle vara att segmentera alla bokstäverna med hjälp av 4- eller 8-neighbour principen. 0 1 0 1 a 1 0 1 0 1 1 1 1 b 1 1 1 1 Detta skulle medföra att även överlappade bokstäver skulle kunna segmenteras ut. 2.2 Identifikationsdata För att kunna identifiera bokstäverna i varje segment genererar vi identifikationsdata för olika bokstäver. Vi beräknar följande mätdata: 1. Antalet fyllda pixlar i segmentet. 2
2. Masscentrum för segmentet i x-led 3. Masscentrum för segmentet i y-led 4. Antalet vertikala kantpunkter. 5. Antalet horizontala kantpunkter. 6. Antalet hörnpunkter. Vissa av dessa beräkningar tordes vara ganska självklara, nedan följer en genomgång för hur de mer avancerade beräkningarna utförs. 2.2.1 Masscentrum i x/y-led För denna beräkning utnyttjas projectionsfunktionaliteten som vi skrivit för att lösa segmenteringen. Genom att projecera det aktuella segmentet på respektive-axeln och samtidigt räkna antalet fyllda pixlar i varje index kan man sedan utnyttja en enkel integral för att hitta bilden masscentrum i denna led. genom att summera utmed projectinoen kan man nämligen läsa avvärdetdärsummanuppgårtillomkring 50%avdettotalaantaletpixlar. 2.3 Antal vertikala kantpunkter Förattkunnalösadettaproblemvarvitvugnaattförstimplemeteraen funktionfördiskretfaltiningic.förattfåframdevertikalakanternai bilden använde vi sedan faltiningsfiltret [1 1] vartefter de kvarstående pixlarna kunde summeras. 2.4 Antal horizontella kantpunkter Förattfåframdehorizontellakanternaibildenvifaltiningsfiltret [1 1] T vartefter de kvarstående pixlarna kunde summeras. 2.5 Antalhörnpunkter Genom att använda följande faltningsfilter plockade vi fram hörnpunkter ur segmentet. [ ] 1 1 1 1 Summan av dessa pixlar utgjorde sedan vårt sista igenkänningsfeature. 3
3 Resultat En första observation är att vårt program uppfyller de mål på prestanda som vi haft som med projektet. Jämfört med motsvarande matlabimplementation märker man en avsevärt förbättring. Igenkännigen fungerar tillfredställande för enklare subtitles där extravaganser som italic fonts och liknande saknas. Eftersom vi inte hunnit färdigställa inläsning av subtitles direkt från PES paket har vi dock inte kunnat genomföra några storskaliga tester. 4