Mérnöki tervezés beszámoló



Hasonló dokumentumok
MPEG-4 modell alkalmazása szájmozgás megjelenítésére

MPEG-4 modell alkalmazása szájmozgás megjelenítésére

MPEG-4 modell alkalmazása szájmozgás megjelenítésére

Diplomaterv Oroszi Balázs Témavezető: Takács György

Láthatósági kérdések

(Solid modeling, Geometric modeling) Testmodell: egy létező vagy elképzelt objektum digitális reprezentációja.

IPTV hanginformáció siketek számára

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

Programozási környezetek

Számítógépes Grafika SZIE YMÉK

Grafikonok automatikus elemzése

1. Bevezetés 1. Köszönetnyilvánítás A számítógépes játékfejlesztésről 3

Tömörítés, csomagolás, kicsomagolás. Letöltve: lenartpeter.uw.hu

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

Számítógépes Arc Animáció

Transzformációk. Grafikus játékok fejlesztése Szécsi László t05-transform

GráfRajz fejlesztői dokumentáció

Mé diakommunika cio MintaZh 2011

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

BARANGOLÁS AZ E-KÖNYVEK BIRODALMÁBAN Milyen legyen az elektonikus könyv?

Diplomaterv. MPEG-4 paraméterekkel vezérelhető fej-animáció rendszer. Srancsik Bálint. Témavezető: Takács György

Czifra Sándor Lőrinczi Konrád. Videó vezérelt kurzusok készítése Moodle keretrendszerben

Hogyan kell 3D tartalmat megtekinteni egy BenQ kivetítőn? Minimális rendszerkövetelmények 3D tartalom lejátszásához BenQ kivetítőn:

Grafikus csővezeték 1 / 44

Multimédiás adatbázisok

VIRTUÁLIS GRAFFITI ÜZENETHAGYÓ RENDSZER

Az ErdaGIS térinformatikai keretrendszer

A tervfeladat sorszáma: 1 A tervfeladat címe: ALU egység 8 regiszterrel és 8 utasítással

Tudásalapú információ-kereső rendszerek elemzése és kifejlesztése

Multimédia Videó fájlformátumok

Internetes böngésző fejlesztése a mobil OO világban

22. GRÁFOK ÁBRÁZOLÁSA

Mechatronika segédlet 3. gyakorlat

A számítógépek felépítése. A számítógép felépítése

Grafikus csővezeték és az OpenGL függvénykönyvtár

Plakátok, részecskerendszerek. Szécsi László

Iman 3.0 szoftverdokumentáció

Színes kültéri. Reklámtábla installáció

Nagy pontosságú 3D szkenner

Ionogram releváns területeinek meghatározása és elemzésének automatikus megvalósítása

Programfejlesztési Modellek

Készítette: Enisz Krisztián, Lugossy Balázs, Speiser Ferenc, Ughy Gergely

Elektronikai tervezés Dr. Burány, Nándor Dr. Zachár, András

Rubin SPIRIT TEST. Rubin firmware-ek és hardverek tesztelése esettanulmány V1.0. Készítette: Hajnali Krisztián Jóváhagyta: Varga József

14.2. OpenGL 3D: Mozgás a modellben

Termék modell. Definíció:

SAMSUNG SSM-8000 szoftvercsomag

A játékfejlesztés több területből áll. A kódolás csupán egy része a munkáknak.

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Google App Engine az Oktatásban 1.0. ügyvezető MattaKis Consulting

Számítógépes grafika

Gyalogos elütések szimulációs vizsgálata

RIEL Elektronikai Kft v1.0

Procontrol VRecX. Kezelői kézikönyv. Kamerás megfigyelőrendszer. Verzió:

Robotika. Kinematika. Magyar Attila

Tömörítés. I. Fogalma: A tömörítés egy olyan eljárás, amelynek segítségével egy fájlból egy kisebb fájl állítható elő.

ServiceTray program Leírás

Geometriai modellezés. Szécsi László

Városi tömegközlekedés és utastájékoztatás szoftver támogatása

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Koós Dorián 9.B INFORMATIKA

30 MB INFORMATIKAI PROJEKTELLENŐR

Időkönyvelő Projektfeladat specifikáció

ALKALMAZÁS KERETRENDSZER

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

SZÓBELI ÉRETTSÉGI TÉMAKÖRÖK

Radioaktív anyag felezési idejének mérése

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

az MTA SZTAKI elearning osztályának adaptív tartalom megoldása Fazekas László Dr. Simonics István Wagner Balázs

mintásfal mintásfal :m :sz :dbjobbra :dbfel

Számítógépes grafika

Képszerkesztés elméleti kérdések

Személyügyi nyilvántartás szoftver

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Az informatika kulcsfogalmai

Infobionika ROBOTIKA. X. Előadás. Robot manipulátorok II. Direkt és inverz kinematika. Készült a HEFOP P /1.0 projekt keretében

Gyakorlati vizsgatevékenység A

ConCorde FHD-1100S HD Médialejátszó

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

Jegyzetelési segédlet 7.

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Transzformátor rezgés mérés. A BME Villamos Energetika Tanszéken

V É G E S E L E M M Ó D S Z E R M É R N Ö K I M E C H A N I K A I A L K A LM A Z Á S A I

Panorámakép készítése

Csoportos üzenetszórás optimalizálása klaszter rendszerekben

A KLT (Kanade Lucas Tomasi) Feature Tracker Működése (jellegzetes pontok választása és követése)

Feladatok. Tervek alapján látvány terv készítése. Irodai munka Test modellezés. Létező objektum számítógépes modelljének elkészítése

Képszerkesztés elméleti feladatainak kérdései és válaszai

Szeged Megyei Jogú Város Integrált e-önkormányzati Rendszerének Térinformatikai Modul felhasználói kézikönyve. Internetes verzió

Programozási nyelvek 2. előadás

MINISZTERELNÖKI HIVATAL. Szóbeli vizsgatevékenység

Tananyagok adaptív kiszolgálása különböző platformok felé. Fazekas László Dr. Simonics István Wagner Balázs

FANUC Robotics Roboguide

MIKOVINY SÁMUEL TÉRINFORMATIKAI EMLÉKVERSENY

Full HD Hobby Napszemüveg Kamera Felhasználói kézikönyv. Modell: Sárga-Fekete Fekete. Termék Szerkezete

NETTUTOR AZ OKTATÁSSZERVEZÉS SZÁMÍTÓGÉPES TÁMOGATÁSA

Program verzió:

Space Invaders Dokumenta cio

Pontfelhő létrehozás és használat Regard3D és CloudCompare nyílt forráskódú szoftverekkel. dr. Siki Zoltán

Átírás:

Mérnöki tervezés beszámoló Dolgozat címe: MPEG-4 paraméterekkel vezérelhető fej-animációs rendszer továbbfejlesztése Konzulens neve: Takács György Hallgató neve: Oroszi Balázs Leadás dátuma: 2007. december 14.

2 Tartalomjegyzék I. Absztrakt...3 II. III. IV. Előzmények...3 Röviden az MPEG-4 pontokról...4 A korábbi munka eredményeinek összefoglalása...5 V. A mérnöki feladat megfogalmazása...6 VI. Létező megoldások vizsgálata...6 Lucia...7 XFace...7 Johnnie Talker...7 VII. Háromdimenziós megjelenítés 3D motor...8 Tulajdonságok...9 Szoftveres rajzoló alrendszer (SoftwareRenderDevice)...9 OpenGL rajzoló alrendszer (OpenGLRenderDevice)...10 Hierarchikus modell-struktúra (Scene Graph)...10 3D animáció...11 VIII. Háromdimenziós fejanimáció...12 IX. A fejmodell...12 Az animáció alapjai...14 A tartópontok és hatóköreik mozgatása FAP-okkal...17 FAP sorozat előállítása (kódolás)...17 FAP sorozat alkalmazása (dekódolás)...17 Az elkészült fejanimációs rendszer...18 Kapcsolat az IPTV siketek számára projekttel...19 A DirectShow keretrendszer...19 Szűrő-gráfok készítése ill. tesztelése...21 A projekt megvalósítása...21 X. Jövőbeni feladatok...22 XI. Összefoglalás...23 XII. Köszönetnyilvánítás...24

3 I. Absztrakt A virtuális fej- és testanimáció az utóbbi évtizedekben folyamatos fejlődésen ment keresztül. Elég csak az animációs filmekre, játékokra vagy Internetes virtuális lényekre gondolnunk. Ezek szerepköre elsősorban a szórakoztatás köré összpontosul. Az egyetem célkitűzése, a szórakoztatást háttérbe szorítva, egy olyan szabványos rendszer kidolgozása, mely alkalmas a hallássérültek beszédkommunikációjának fejlesztésére. Ezt egy olyan beszélőfej működtetésével kívánja megoldani, mely képes a beszéd-animáció konverzióra, vagyis közvetlenül a beszédjelből állítja elő a szájállásokat, hogy arról a siket illetve nagyothalló emberek a szájmozgást le tudják olvasni. Ennek megvalósítása már elkezdődött, a korábbi években készült fejanimációs rendszer keretében. Az én feladatom ezen rendszer tanulmányozása, javaslattétel a továbbfejlesztésére, az új tulajdonságok és képességek implementációja valamint, amennyiben lehetséges, integrációja a meglévő rendszerbe. Amennyiben ez nem lehetséges, úgy új rendszer kidolgozása. A továbbfejlesztés elsősorban a videófeldolgozás módját érinti, valamint egy három dimenziós megjelenítő kidolgozását jelenti. II. Előzmények Az önálló laboratórium keretében megismerkedtem a karon folyó munkálatokkal, mely egy komplett, MPEG-4 paraméterekkel vezérelhető fej-animációs rendszer előállítását tűzte ki célul. Egy korábbi beszámoló [1] alapján megtudhattuk, hogy mi a rendszer elsődleges célja. Röviden: konkrét célkitűzésünk, hogy a mobiltelefon által vett hangot a hallássérültek számára is érthetővé tegyük. A beszámoló szerint végzett felmérés alapján erre lenne igény. Ezt a feladatot a hang megjelenítésével lehet elérni oly módon, hogy egy kirajzolt fej segítségével visszaadjuk a beszélő szájmozgását, melyről a siket egyén képes leolvasni és megérteni a mondott szöveget. Időközben a mobiltelefonos alkalmazás fejlesztése lassabb ütemben haladt a vártnál, így nagyobb hangsúly került a PC-s alkalmazás fejlesztésére. Az önálló laboratóriumi munka keretében az előző rendszert, a videó feldolgozás területén fejlesztettem tovább. Mostani féléves tevékenységem más szakterületre, a háromdimenziós megjelenítés, valamint az animáció területére koncentrálódott.

4 III. Röviden az MPEG-4 pontokról [2]Az MPEG (Moving Picture Experts Group) szabványok fő célja a hang és videó jelek tömörítése. A tömörítés alapvető követelményei a hatékonyság és élethűség. Az MPEG-4 szabványt nem csak nagy videófolyamok tömörítésére alakították ki, hanem figyelembe vettek olyan multimédiás alkalmazásokat is, mint 3D-s jelenetek, animációk, szintetizált hangok, képek, szövegek, grafikák külön vagy akár együttes kezelése és élethű megjelenítése. Az MPEG-4 szabvány [3] egyik legösszetettebb része a fej és az emberi test megjelenítése és mozgatása (FBA - Face and Body Animation). Az FBA-ra vonatkozó szabványrész leírja az arc és a test alakjának és mozgásának kódolási alapelveit. Az FBA egyik legfontosabb tulajdonsága tehát, hogy nem adja meg pontosan a kódolási és a dekódolási eljárást, csak a küldött adat formáját és értelmezését. Az MPEG-4 szabvány az arc modelljét az arc normál állapotával írja le, megad több tartópontot (Feature Point - FP) és az arc mozgását leíró paramétereket (Facial Animation Parameter - FAP), mely lényegében a normál archoz képesti elmozdulást jellemzi. Az elmozdulások méretét és arányát a szabvány szerint mindig az emberi arcra jellemző alapvető méretek alapján fejezi ki. A szakirodalomban ennek elterjedt rövidítése FAPU (Face Animation Parameter Unit). A FAPU-kat az arc olyan jellegzetes távolságaiból kell számolni, mint például a szemgolyók távolsága vagy a száj szélessége. A szabványban 84 tartóponttal írják le az arcot (Kép 1). Kép 1: MPEG-4 pontok

5 A tartópontok fő feladata, hogy referenciaként szolgáljanak a FAP-ok számára. A FAP-ok által leírt összetett mozgások mindig a normál tartópontok által leírt fejre vonatkoznak. A normál fej csukott szájat és semleges arckifejezést jelent. Vannak olyan FP-k is, melyekre egy FAP sincs közvetlen hatással (pl.: az orr szélei). Ezeket mindössze az arc alakjának meghatározására használják. A feladat szempontjából számunkra a teljes MPEG-4 pontkészlet csupán egy része szükséges. Az elkészített rendszer által detektált pontok az alábbi ábrán láthatók: Kép 2 Kép 2: Felhasznált MPEG-4 pontok IV. A korábbi munka eredményeinek összefoglalása Az előző éves, önálló laboratóriumi feladatom: egy videokamerával felvett beszélő személy arcáról a fejmodell animálásához szükséges jellemző paraméterek detektálása további feldolgozás számára. A feladat sikeresen teljesült. Itt röviden összefoglalom az eljárást, valamint az eredményeket. A kifejlesztett módszer az ajak kontúrvonalának detektálásán alapszik. Felvételeket készítettünk jeltolmácsokkal. Mindegyik felvételen egy beszélő látható. A felvétel digitális kamerával készült, állított helyzetben 576 * 720-as felbontásban, 25 fps (képkocka/másodperc) képkockasebességgel. A kép a beszélő arcára van közelítve (Kép 3). A felvétel elkészítése előtt az ajkakat kipirosítottuk, valamint sárga festékkel 2 MPEG-4 pontot is felfestettünk (9.3, 2.1). Színkiemeléssel kinyertem az ajkak pozícióját, majd a korábbi beszámolómban ([4]) részletesen leírt detekciós módszerrel meghatároztam a számunkra szükséges MPEG-4 pontok helyzetét: Kép 4

6 A detektált pontokat összekötve és kitöltve, az elkészített megjelenítő modullal, visszarajzoltam az eredeti videóra. Az eredményt a Kép 5 mutatja. Kép 3: A felvétel Kép 4: Színkiemelés, detekció Kép 5: Megjelenítés A videófeldolgozás az Avisynth keretrendszer felhasználásával történt. A feldolgozó algoritmusokat a keretrendszerhez készített, C++ nyelven írt modulokként valósítottam meg. A kinyert pontok tárolására fájlformátumot definiáltam, melyhez író/olvasó modul készült. Ez által lehetséges a projekt más területein dolgozók számára is a detektált pontokhoz való gyors és egyszerű hozzáférés. V. A mérnöki feladat megfogalmazása Az idei mérnöki tervezés feladatom elsősorban egy háromdimenziós fejanimációs program elkészítése. Mivel az előző két féléves munka eredményei kielégítőek voltak, és a létrejött adatbázis jól használhatónak bizonyult, így a videófeldolgozás további fejlesztésen nem ment keresztül. Az animációs program készítése közben, kapcsolódva az egyetemen folyó hangfeldolgozási projekttel, igény jelentkezett egy picture-in-picture módban működő, közvetlen speech-to-animation konverziót végző szoftver elkészítésére, siketek számára. Ehhez szükségessé vált egy hardveres gyorsítás nélküli megjelenítő írása. Ennek megvalósítását a továbbiakban ismertetem. VI. Létező megoldások vizsgálata A fejanimációs program ill. a háromdimenziós megjelenítő elkészítése elengedhetetlen korábbi, mások által készített, lehetőleg MPEG-4 szabványos megvalósítások megtekintése, tanulmányozása nélkül. Három programot ill. forráskódjukat vizsgáltam meg tüzetesebben:

7 A Lucia, olasz fejlesztésű MPEG-4 szabványos fejanimációs programot Az Xface nyílt forrású MPEG-4 szabványos fejanimációs ill. FDP szerkesztő programot A Johnnie Talker, Srancsik Bálint PPKE hallgató által, az önálló laboratórium keretében készített fejanimációs programot Az vizsgálat eredményét, valamint az animációs program elkészítésének módját alább ismertetem. Lucia A Lucia [5] egy kizárólag OpenGL megjelenítéssel rendelkező általános MPEG-4 FAP lejátszó. Fejlesztése sokrétű, a hangfeldolgozástól az animációig minden területet lefed. Mivel azonban a modell túl szorosan kapcsolódik a megjelenítőhöz (a modell forráskódba integrált), így szétválasztani nem lehetséges. Csak OpenGL megjelenítésre képes, a fejmodell nehezen cserélhető, valamint forráskódja következetlenül van megírva, így nem használhattam fel a projektben. XFace Az XFace [6] egy nyílt forrású, OpenGL megjelenítésű, MPEG-4 szabványos FAP lejátszó ill. FDP szerkesztő. Alkalmas különféle modellek betöltésére, valamint a modellen levő FDP-k szerkesztésére, az FDP-k arcmozgatáshoz szükséges hatóköreinek meghatározására. A forráskód jól strukturált, az OpenGL megjelenítőt viszonylag egyszerű lecserélni saját megjelenítőre. Sajnos azonban még így sem lehetséges különválasztani a megjelenítő ill. animációs részt a grafikus kezelőfelülettől. Johnnie Talker Srancsik Bálint, a PPKE hallgatójának az önálló laboratórium tárgy keretében készített MPEG-4 FAP lejátszója. A program a céljának kiválóan megfelel, de nem általános jellegű. Szorosan integrált, mind a megjelenítő, a modell és a grafikus felület együttesen ( kódba égetett ). Részekre választani nem lehetséges. Felmerült a program továbbfejlesztése, de a kód elemzése után úgy láttam, hogy több időt venne igénybe a kód átstrukturálása, mint egy teljesen új megjelenítő készítése.

8 VII. Háromdimenziós megjelenítés 3D motor Mint említettem, szükségessé vált a fejlesztés közben, együttműködve a hangfeldolgozást végző kollégákkal, egy olyan megjelenítő elkészítése, mely képes beszélő fejet valós időben kirajzolni egy PC-n futó élő televíziós adásra (erről bővebben a beszámoló végén). Emiatt, és előreláthatóan a későbbi projektek miatt is előfordulhat, hogy nem vehetünk igénybe hardveres gyorsítást. Rövidebb megfontolás után arra a következtetésre jutottam, hogy nem támaszkodhatunk kizárólag a hardveres gyorsítás (OpenGL) nyújtotta kényelemre, szoftveres megjelenítés szükséges. Emellett fontosnak tartottam, hogy amennyiben mégis rendelkezésre áll 3D gyorsító hardver, úgy ott az OpenGL gyorsítást vegyük igénybe. Ennek következményeként született meg egy hibrid, mind OpenGL mind pedig szoftveres megjelenítésre is képes 3D motor. Alapvető fontosságúnak tartottam, hogy a megjelenítés módja teljesen független legyen attól, hogy éppen mit akarunk megjeleníteni. Természetesen bizonyos megkötéseket tennünk kell, de alapvetően ne legyen integrálva a fejanimációs kód a megjelenítő kóddal. A motor C++ nyelven íródott, objektum-orientált stílusban. Szoftveres ill. OpenGL rajzoló alrendszerrel rendelkezik, melyek az absztrakt RenderDevice osztályból származnak le. Ennek előnye, hogy a rajzoló alrendszer futásidőben választható. A motor kizárólag háromszög-listából álló modelleket képes rajzolni, pont (Kép 6), vonalháló (Kép 7) ill. kitöltött (Kép 8) módban egyszerű textúrázással. Kép 6: Pont rajzolás Kép 7: Vonalháló rajzolás Kép 8: Kitöltött rajzolás (textúrázott) Ezen rajzolási módokat mindkét rajzoló alrendszer implementálja.

9 Tulajdonságok A motor jellemzőbb általános tulajdonságai/képességei: eszköz-független rajzolás (jelenleg: OpenGL, Software) kamerakezelés hierarchikus modell-struktúra (scene-graph) pont, vonal, kitöltött (textúrázott) rajzolási mód hátlapritkítás (back-face culling), mindkét rajzoló alrendszerben nézetcsonk ritkítás burkoló térfogatokkal (view frustum culling with bounding volumes) nézetcsonk vágás (view frustum clipping) A lényegesebbeket alább bővebben is kifejtem. Szoftveres rajzoló alrendszer (SoftwareRenderDevice) A szoftveres rajzoló saját rajzfelületet foglal a memóriában, erre végzi a háromszögek rajzolását, majd az SDL könyvtár segítségével jeleníti meg az eredményt a képernyőn. Mivel nem találtam használható valamint könnyen integrálható szoftveres 3D megjelenítő komponenst, így a háromszögkitöltő rutinokat magam írtam meg. A kellő sebesség elérése érdekében a háromszögek kitöltése integer, a textúrázás pedig lebegőpontos (float) aritmetikával történik, ezáltal teljes mértékben kihasználva a processzor integer valamint floating point egységeit, egyiket sem túlterhelve a másik kihasználása nélkül. A kitöltéshez a vonalrajzolásnál már jól ismert Bresenham-féle vonalrajzolási algoritmus módosított változatát használom. Ennek jelentősége, hogy kizárólag integer aritmetikával dolgozik, ezáltal nagyságrendekkel gyorsabb, mint a hagyományos, naiv vonalrajzolási algoritmus. A textúrázás nem perspektíva-korrekt. Hardveres gyorsítók automatikusan végeznek perspektíva-korrekciót a textúrázási fázisban, sajnos azonban ez a szoftveres alrendszerben nincs implementálva. Szerencsére azonban az ennek hiányában jelentkező rajzolási hiba (az ún. textúraúszás ) csak nagyobb háromszögek rajzolásánál jelentkezik. Mi a megjelenítőt elsősorban fejmodellek rajzolására használjuk, ahol kellően kicsik a háromszögek ahhoz, hogy ez a probléma ne jelentkezzen.

10 OpenGL rajzoló alrendszer (OpenGLRenderDevice) OpenGL esetében a rajzolandó háromszögeket egyszerűen az operációs rendszer OpenGL rendszerének továbbítjuk. Pontok rajzolásának módja: glbegin(gl_points);...... glvertex3f(v->x, v->y, v->z); glend(); Vonalháló rajzolásának módja: glbegin(gl_lines);...... glvertex3f(v1->x, v1->y, v1->z); glvertex3f(v2->x, v2->y, v2->z); glend(); Egy kitöltött, textúrázott háromszög kirajzolásának módja: glbegin(gl_triangles);... gltexcoord2f(uv1[0], uv1[1]); glvertex3f(v1->x, v1->y, v1->z); gltexcoord2f(uv2[0], uv2[1]); glvertex3f(v2->x, v2->y, v2->z); gltexcoord2f(uv3[0], uv3[1]); glvertex3f(v3->x, v3->y, v3->z);... glend(); Hierarchikus modell-struktúra (Scene Graph) Ezt a jellemzőt azért tartottam lényegesnek megemlíteni, mivel ezáltal nyílik lehetőség egy modell részeinek egyszerű összekapcsolására, együttes mozgatására. A mi esetünkben különösen hasznos, hiszen egy fej általában több részből áll össze (arc, szemek, fogak, nyelv, garat, haj, stb.).

11 A struktúra lényege, hogy a modellrészeket fa-szerkezetbe rendezi. Minden csomóponthoz (SceneNode) tartozik transzformációs adat. Ezek: egy vektor az eltoláshoz (translate), egy mátrix a forgatáshoz (rotate) valamint szintén egy vektor a nyújtáshoz (scale). A csomópontok valójában almodellek. A mi esetünkben ez lehet a szemek, fogak, nyelv, garat, arc, haj, stb. Kinevezünk egyet gyökérelemnek, és a többi modellrészt alárendeljük. Az alárendelt modellrészek öröklik a szülő transzformációját. Tehát pl. ha a fej a gyökérelem, és minden más az alárendeltje, akkor a fej forgatásával együtt forogni fog az összes többi modellrész anélkül, hogy azokat külön forgatnunk kellene. Ezen felül az alárendelt elemek önmaguk is foroghatnak/mozoghatnak a saját koordinátarendszerükben. Pl. ha a szemet külön akarjuk forgatni (pl. jobbra nézzen), akkor a szem modellrésznek beállítunk egy elfordulást, és az a saját tengelye körül fog elfordulni. Emellett ha mondjuk a fejet is elfordítjuk, akkor a szem a fejhez képest a helyén marad (a szemüregben), de saját elfordulását megtartja (tehát pl. továbbra is jobbra néz). Ennek óriási előnye, hogy természetes működést produkál, vagyis azt amit várunk. Tehát ha azt mondjuk, hogy a fej forduljon balra, akkor a fej az összes tartozékával együtt (szem, fogak, nyelv, haj, stb.) balra fog fordulni, anélkül, hogy szétesne. Természetesen az itt leírt példa a fejjel csupán egy speciális eset, a rendszer, vagyis a hierarchikus modell-struktúra teljesen általános. 3D animáció Háromdimenziós animációknál általában kétféle animációról beszélünk: magas szintű ill. alacsony szintű animációról. A magas szintű animáció általában egy teljes modellre vagy a modell egy nagyobb részére vonatkozik. Ez lehet pl. egy ember-modell törzsének elfordítása, a fej elfordítása, a kar mozgatása, stb. Tehát mindig a modellrész egészén, vagy a modell csúcsainak (vertex-einek) nagyobb összefüggő halmazán értelmezett egységes művelet. Mátrixokkal vagy előre definiált csúcs pozíciókkal (kulcs-képkocka: key-frame) könnyen leírható. Az alacsony szintű animáció a csúcsok szintjén működik. Ez általában azt jelenti, hogy a modell meghatározott csúcsait elmozdítjuk, új pozíciót adunk meg nekik. Ez lehet pl. az arc finom mozgásainak animációja, a bőr egy adott ponton való nyújtása, stb. A motor lehetőséget ad mind magas, mind pedig alacsony szintű animáció végrehajtására, azáltal, hogy hozzáférést biztosít a modellek csúcsaihoz, valamint teljes hálószerkezetéhez.

12 VIII. Háromdimenziós fejanimáció A fejmodell A legtöbb modell, legyen az két- vagy háromdimenziós, hálókból áll. A háló (mesh) több egymáshoz illeszkedő nem feltétlenül egy síkban levő sokszöget tartalmazó felület. A hálóban a csúcspontok koordinátáin kívül a lapok, az élek és a csúcsok illeszkedési viszonyait is nyilván kell tartani. A modell felületi jellemzői, textúrája erre a rácsra van ráhúzva. Ahogy mozgatjuk a háló csúcspontjait, úgy mozog vele a textúra is. Ám az MPEG-4 szabványban csak az FP-k mozgatására van mód, az egyes hálókéra közvetlenül nincs. Egy modell tetszőleges számú és finomságú hálóból állhat, a szabvány erre nem terjed ki. Minden MPEG-4 kompatibilis fejmodell azonban azonos tartópont rendszerre épül. A hálók mozgatása a tartópontok mozgatásával történik. Egy MPEG-4 fejmodell alkalmas vizémák és érzelmi állapotok FAP paraméter alapú közvetlen megjelenítésére. Az MPEG-4 modell tömörítést kifejtő (decompress) része egy grafikus modell mozgatási feladat. A szabványosított eljárás során az alaphelyzetű fej teljes képének meghatározása és vevő oldalra történő átvitele valósul meg, és a továbbiakban csak az alaphelyzettől történő eltérések átvitelére van szükség a tömörített adatközlés során. Kép 9: Az MPEG-4 rendszerű tömörítés koncepciója Az MPEG-4 tömörítési folyamat (Kép 9) azon az elven működik, hogy a tömörítendő mosolygós fej lényeges paramétereinek valamint az alaphelyzetű fej paramétereinek különbségéből meghatározza a tömörített jellemzőket. Az MPEG-4 koncepció szerint ez a jellemzősor fej alakjától és környezetétől független adatokat tartalmaz.

13 Kép 10: Az MPEG-4 rendszerű visszaállítás koncepciója A visszaállítási folyamat (Kép 10) során a tömörített jellemzőkhöz, amely jelenleg a mosolygás adatait tartalmazza, hozzáadva egy tetszőleges alaphelyzetű fej paramétereit egy mosolygós fej képét kapjuk. Az alaphelyzetű fej meghatározó adatai között kell elhelyezni a felületi jellemzőket valamint az esetleges további adatokat, mint például a modell haja, szeme stb. A visszaállítás során kell létrehozni a felületeket azok megvilágítástól függő színezésével együtt. Az emberi arcra jellemző méretek: ES0 A szemgolyók távolsága IRISD0 Az írisz átmérő ENS0 Az orr hossza MNS0 Az orr és azáj távolsága MW0 A száj szélessége Az MPEG-4-ben a tömörítés során meghatározott és felhasznált távolság mértékrendszer (Kép 11) lehetőséget biztosít arra, hogy a tömörített információ felhasználásával tetszőleges más alaphelyzetű fejre lehessen alkalmazni a visszaállítást, és így lehessen változtatni a visszaállítás folyamatát. Kép 11: Az emberi arcra jellemző méretek Az ES0; IRISD0; ENS0; MNS0; MW0; távolságok határozzák meg az adott arcberendezésen

14 alkalmazandó távolságegységek halmazát. A távolságmérésnek ez a módszere biztosítja azt a lehetőséget, hogy a visszaállítás során az eredetitől jelentősen eltérő felépítésű alaphelyzetben álló fejre is visszaállíthatók legyenek a tömörített információk. Az MPEG-4 szabványnak köszönhetően az arc mozgásához nem kell képkockáról képkockára megadni a videó minden egyes pixelét, mindössze a mozgatott FP-khez tartozó FAP-okat kell továbbítani. Ennek köszönhetően igen alacsony sávszélességen keresztül is elérhető a real-time arcanimáció. A szintetikusan létrehozott szájmozgás megjelenítésére felhasznált fejmodell egy szokásos 3D grafikus modell, amely animálható és így a céljaink megvalósítására alkalmas. Kép 12: Az általam használt fejmodell a tartópontokkal Az animáció alapjai A fej, elsősorban pedig az arc finom mozgásainak animációját részben az XFace, valamint más programoknál is alkalmazott módszer ihlette. A rendszer az MPEG-4 szabványon nyugszik. Durva közelítéssel mondhatjuk, hogy egy tartópont (FP) egy bizonyos nagyságú környezetre van hatással, vagyis a környező csontokra ill. bőrfelületre. Tehát ha a bőr megnyúlik vagy a csontok elmozdulnak, az ott lévő FP-k is elmozdulnak, másik oldalról nézve, ha egy adott FP-t elmozdítunk, akkor a környező bőrfelület a

15 ponttal együtt mozdul el. Az alapötlet az, hogy minden FP-hez hozzárendelünk egy listát, mely megmondja, hogy az adott FP mely hálópontokra van hatással. Ez lesz az adott FP hatóköre. Kép 13: Példa egy FP hatókörére A hatókör megadása többféle módon történhet. Az XFace lehetőséget ad a kézi szerkesztésre. Ez meglehetősen nehézkes, mivel kézzel (egérrel) kell minden egyes FP-hez kiválogatni a kívánt hálópontokat. Kétség kívül a legpontosabb megadás ezzel volna lehetséges, azonban az ehhez szükséges idő aránytalanul sok. Egyszerűbb módszer a távolsággal meghatározott hatókör lista. Ez úgy történik, hogy megadunk egy távolságot, és ha az adott FP-hez egy hálópont ezen távolságon belül van, akkor bekerül az FP hatókörébe. Nagyon fontos azonban ez esetben, hogy ne légvonalbeli távolsággal számoljunk, hiszen akkor pl. az alsó ajak FP-i a felső ajak hálópontjait is bevennék a hatókörbe. Emiatt kizárólag a hálószerkezet összeköttetése alapján vehetünk egy adott pontot szomszédosnak. Ezáltal pl. az átnyúlás az alsó ajakról a felsőbe kiküszöbölődik. Tehát egy FP elmozdulása valamilyen hatással lesz a hatókörének pontjaira. Ez a hatás a hálópont FP-től való távolságától, az FP elmozdulásának mértékétől és irányától, az FP típusától valamint egyéb paraméterektől (választott súlyozás) függ. A fejmodellben a hatókör egy hálópontjának az FP-től való távolsága arányában egy bizonyos súlytényezőt számolunk. E nélkül a hatókör szélén elhelyezkedő pontok a szomszédoktól igen eltérő mozgást produkálnának, ami a modell szakadozott mozgásához vezethet. Továbbá a súlytényező nem lehet a távolság arányában egy lineáris függvény szerint számolt érték, hiszen az

16 hasonló szakadozott animációhoz vezetne. Éppen ezért az FP-k súlytényezői a következő képlet szerint alakulnak: 1 cos 1 s i r w ij = j 2 i=1...n, j=1...86 Ahol w ij a j-edik FP által mozgatott, a hatókörben az i-edik vertex súlytényezője, s i az FP és annak hatókörében az i-edik vertex távolsága, r j pedig a j-edik FP hatókörének sugara. Az s i, vagyis az FP-től vett távolság háromdimenziós esetben a következőképpen alakul: s i = x FDP x i 2 y FDP y i 2 z FDP z i 2 Ez a megoldás nagyon egyszerű, de messze nem a legjobb. Az általunk használt FP-k modellezésére ellenben tökéletesen alkalmas. Ha a súlytényezőket eszerint állítjuk be, az azt eredményezi, hogy az FP mozgatásakor, a hatókörön belül elhelyezkedő pontokra egyre kevésbé hat az FP, a távolság arányában. Így a hatókör széle felé kis elmozdulást kapunk, míg az FP tőszomszédságában az elmozdulás közel azonos az FP elmozdulásával. Kép 14: Egy FP hatása a hatókörére Kép 15: FP-k elmozdulásának hatásai a hatókörükre

17 A tartópontok és hatóköreik mozgatása FAP-okkal Az MPEG-4 szabvány szerint a mozgatás nem közvetlenül átadott FDP koordináták alapján történik, hanem relatív módon, a FAP-ok segítségével. A korábbi félévben készített általános FP könyvtárat átdolgoztam, és kiegészítettem a FAP animációhoz szükséges rutinokkal. Ez két dolgot jelent: FDP sorozatból adott FAPU-k segítségével FAP sorozat előállítását (FAP kódolás) FAP sorozatból adott FAPU-k segítségével FDP elmozdulásvektorok előállítását (FAP dekódolás) Az alacsony szintű FAP-ok lényegében egy adott FDP adott irányú elmozdulását kódolják. Például a 3-as FAP a 2.1-es FDP y irányú elmozdulását tartalmazza. Fontos megjegyezni, hogy a FAP mértékegysége a FAPU, tehát modellfüggetlen. FAP sorozat előállítása (kódolás) FAP sorozatot a meglévő, videofelvételből kinyert FDP-adatbázis alapján készítettem, a következő módon. Először is megmérjük a FAPU-kat a felvételen szereplő beszélőn, pixelben. Aztán, minden képkocka FDP pontjainak koordinátáiból kivonjuk az előző képkocka FDP pontjainak koordinátáit. Ezzel kapunk egy delta képkockát, mely az FDP elmozdulásvektorokat tartalmazza, még pixelben. Ezután a szükséges FAP-okhoz, melyeket elő akarunk állítani, kiválasztjuk a megfelelő FDP megfelelő koordinátáját (amit a kívánt FAP fog kódolni), a pixelben lévő értéket az FDP-hez tartozó FAPU segítségével normalizáljuk (leosztjuk), majd az értéket eltároljuk. Ez lesz a kívánt FAP. Az így elkészült FAP sorozat szabványos, tehát bármely MPEG-4 szabványos FAP lejátszóval lejátszható. Ezt az XFace ill. Lucia lejátszókkal teszteltem, és az animáció az elvárásoknak megfelelően működött. FAP sorozat alkalmazása (dekódolás) Bejövő FAP sorozatból FDP koordinátákat szeretnénk előállítani. Ehhez szükség van a célpont (pl. a 3D fej) FAPU értékeire. A mi modellünk esetében ez adott volt. A bejövő FAP sorozat értékeit először átkonvertáljuk az animálandó célpont mértékegységére. Ezt a FAPU-kal végezzük el, úgy, hogy az adott FAP-ot beszorozzuk a hozzá tartozó FAPU-val. Az így kapott értékkel beszorozzuk a FAP-hoz tartozó elmozdulás-irányvektort, majd a kapott vektort

18 hozzáadjuk a nyugalomban levő FDP halmaz megfelelő FDP pontjához. Ezt végrehajtva az összes FAP-ra, kapunk egy új FDP halmazt, mely az animált FDP-ket tartalmazza. Ezután következhet a tényleges 3D háló, vagyis a virtuális fejmodell animálása a hatókörökkel, ahogyan azt az előző fejezetben leírtam. Az elkészült fejanimációs rendszer A 3D modell hálójának tényleges animálására C++ modult készítettem, a már korábban ismertetett 3D megjelenítő komponenseinek felhasználásával. A modul előnye, hogy könnyen beilleszthető bármilyen környezetbe. Ennek bemutatására készítettem egy Avisynth plugin-t (az Avisynth rendszerről ld. az előző féléves beszámolómat), melynek segítségével lehetséges a beszélő személyről készített felvétel lejátszásával szinkronban a 3D fej animálása (Kép 16). Kép 16: Avisynth megjelenítő modul

19 IX. Kapcsolat az IPTV siketek számára projekttel Mint említettem, időközben lehetőség adódott együtt dolgozni a hangfeldolgozást végző kollégákkal. A projekt célkitűzése egy olyan speech-to-animation rendszer kidolgozása, mely közvetlenül a hangból származtatja a fejmodell animálásához szükséges paramétereket. A projekt különlegessége, hogy ezt egy élő TV adásba való integrációval, picture-in-picture formájában kívánja megvalósítani. Az én feladatom volt a projektben egy alkalmas keretrendszer felkutatása, kiértékelése, a hanghoz való hozzáférés biztosítása, valamint a megjelenítés elvégzése oly módon, hogy az élő TV adásból származó hang feldolgozása után az abból nyert paraméterekkel animált fejet az eredeti képre kellett visszahelyeznem. A rendszer demó jellegű, tehát PC-s környezetben kell megvalósítani. Rövidebb kutatás után a DirectShow keretrendszert találtam alkalmasnak arra, hogy bármilyen módon a PC-be érkező TV adást a fent leírt módon feldolgozni tudjuk. A prototípus elkészítése Microsoft Windows platformon történt. Fontos hangsúlyozni, hogy a rendszer belső működése valamint a megjelenítés egymástól függetlenül van megvalósítva, így bármely más platformra átültethető, amennyiben megfelelő megjelenítő modul készül az adott platformhoz. A megjelenítés alapvetően két részre bontható: a 3 dimenziós fejmodell kirajzolása a kiszámított paraméterek alapján a kirajzolt modell mozgóképbe ültetése (PIP: picture-in-picture) A megjelenítés első fázisa (a 3D modell rajzolása) a szoftveres 3D rajzolóval történik, memóriába, mely így alapvetően platformfüggetlen. A kirajzolt modell mozgóképbe ültetése függ csupán az adott platformtól. A megjelenítés végső fázisa (a mozgóképbe ültetés) a Windows által támogatott DirectShow környezetben készült. A DirectShow keretrendszer A DirectShow egy média feldolgozó architektúra a Windows platformhoz. Lehetővé teszi magas minőségű multimédiás tartalom felvételét ill. lejátszását. Formátumok széles skáláját támogatja, mint például az ASF, MPEG, AVI, MP3, WAV, stb. Támogat digitális ill. analóg

20 felvevőeszközöket. Multimédiás tartalom feldolgozása sok kihívást jelent: Multimédiás folyamok nagy mennyiségű adatot tartalmazhatnak, melyet nagyon gyorsan kell feldolgozni A hangot és képet szinkronizálni kell, hogy egy időben induljanak és álljanak meg, valamint egyforma sebességgel történjen a lejátszásuk Az adat sok különböző forrásból származhat, mint például helyi fájlokból, hálózatról, televíziós sugárzásból, vagy videokameráról. Az adat sok különböző formátumban érkezhet, mint pl. AVI, ASF, MPEG, DV, stb. Egy multimédiás alkalmazás fejlesztője nem tudhatja előre, hogy milyen hardver áll rendelkezésre a célszámítógépen. A DirectShow a fenti kihívásokra kínál megoldást. Hogy a sok különböző forrás, formátum ill. hardver különbözőségeket kezelni lehessen, a DirectShow egy moduláris architektúrát használ, melynek alapeleme a szűrő. Egy szűrő bemenetekkel és/vagy kimenetekkel rendelkező komponens, mely egy adott részfeladatot lát el. Alapvetően 3 típusú szűrő van: Forrás szűrő (Source filter) Transzformáló szűrő (Transform filter) Megjelenítő szűrő (Rendering filter) Kép 17: A DirectShow keretrendszer felépítése

21 Az architektúra alapkoncepciója a gráf-modell, melynek csomópontjai a szűrők. A DirectShow biztosít egy alap szűrőkészletet, de a rendszer igazi erőssége abban rejlik, hogy tetszőleges szűrőkkel bővíthető. Szemléltetésképpen itt van egy AVI fájl lejátszásának folyamata a Windows médialejátszójában: Nyers adat olvasása a fájlból bájt-sorozatként (Fájl forrás szűrő) Az AVI formátum feldolgozása, szétválasztás képkockákra ill. hangmintákra (AVI Splitter) A képkockák dekódolása (különböző dekódoló szűrők lehetségesek, a képkocka tömörítésétől függően) A képkockák megjelenítése (Megjelenítő szűrő) A hangminták lejátszása a hangkártyán keresztül (Hanglejátszó szűrő) Kép 18: AVI fájl lejátszásának folyamata a DirectShow keretrendszerben A szűrők egy halmaza valamint összeköttetésük módja alkotja a szűrő-gráfot. Szűrő-gráfok készítése ill. tesztelése Szűrő-gráf automatikusan épül, ha a szűrő-gráf kezelőnek egy médiaforrás URL-t adunk, mint pl. egy fájlnevet a helyi meghajtón vagy egy hálózati címet. Ellenben lehetőség van szűrő-gráf manuális összeállítására is. Erre a GraphEdit program szolgál, mely a DirectShow SDK része, és amely szűrő gráfok összeállítását valamint tesztelését teszi lehetővé. A projekt megvalósítása Az animált fejmodell megjelenítése valamint mozgóképbe helyezése szűrőként lett megvalósítva. Fontos megjegyeznem, hogy DirectShow szűrők készítése különösen nehéz feladat. Nem csupán a keretrendszerrel és annak működési elveivel kell tisztában lenni, hanem a Windows Component Object Model programozási módját is ismerni kell. A szűrő elkészítése ily módon a vártnál nagyságrendekkel nehezebbnek bizonyult. Az eredményt az alábbi ábra mutatja (Kép 19):

22 Kép 19: IPTV siketek számára X. Jövőbeni feladatok A múlt félévben az egyetem beszerzett egy 200 képkocka/mp felvételi sebességgel működő kamerát. A félév vége felé alkalmam nyílt kipróbálni az új eszközt, és kezdeti méréseket is sikerült végeznem. A kamera ún. Bayer-mintás módban vesz fel, és feldolgozás nélkül továbbítja a képet a PC-re. A Bayer-szűrő egy színszűrő tömb (CFA color filter array), mely RGB színszűrők elhelyezését határozza meg egy négyzet alapú fényérzékelő rácson (Kép 20). A szűrő 50% zöld, 25% piros ill. 25% kék szűrőt tartalmaz. E szűrő-elrendezés által készített szürkeárnyalatosnak tűnő nyers képet hívjuk Bayer-mintás képnek. Ahhoz, hogy színes képet kapjunk, az egyes színértékek interpolációjára van szükség. Kép 20: Bayer elrendezés Kép 21: Bayer színszűrés

23 Első próbálkozásként készítettem egy primitív debayer Avisynth szűrőt, mely a Bayer-mintás képből színes képet állít elő (Kép 22). Kép 22: Debayer - Bayer mintás kép kezdetleges interpolációja Látható, hogy az interpoláció kezdetleges. Feltétlen szükséges fehér egyensúlyt állítani, valamint színkorrekciót végezni. Jövő féléves munkámban tervezem a korrekt interpolációt megvalósítani. A kamerával végzett kezdeti mérések biztatóak, a 200 képkocka/másodperc sebesség nagyságrendekkel megnöveli az MPEG-4 paraméterek detekciójának pontosságát, minden eddiginél finomabb animációt téve lehetővé. XI. Összefoglalás Korábbi munkámban szóba került a fogak detektálása. Kiderült, hogy erre nincs szükség, hiszen az eddig detektált pontok impliciten tartalmazzák a fogak helyzetét, teljes pontossággal. Ennek oka az, hogy az orron ill. az állcsúcson is követtünk 2 FP-t, és ezek magukban hordozzák a fogak helyzetét is, hiszen az orr a felső fogsorral együtt mozog, a felső fogsor ugyanis (jó esetben) a felső koponyához rögzített, ahogyan az orr is. Az alsó fogsorral szintén ez a helyzet, az állcsúcs elmozdulása egyben az alsó fogsor elmozdulását is megadja. A detekciós eljárás továbbfejleszthető, erre konkrét elképzelések születtek, azonban erre előreláthatólag már egy másik hallgató lesz hivatott. A jelen beszámolóban bemutatott és elkészített 3D megjelenítő bevált, továbbfejlesztése előreláthatólag nem szükséges.

24 A vázolt animációs eljárás kielégítő, azonban nem tökéletes. Német egyetemeken kísérleteztek izom-alapú mozgatással, mely sokkal élethűbb animációt tesz lehetővé. Ennek kiértékelése szintén jövőbeli feladat lehet. XII. Köszönetnyilvánítás Köszönettel tartozom Ujfalussy Rita, Tóth Orsolya, Lozsádi Dorottya, Laub Judit valamint Nádudvari Ilona számára, akik vállalták a hosszú és kacifántos szövegek kamera előtti felolvasását, és akik nélkül ez a projekt nem valósulhatott volna meg. Irodalom [1] Srancsik Bálint, Beszédjelből szájmozgást rajzoló program (Modellezés és animálás),, 2004 [2] Takács György, Tihanyi Attila, Bárdi Tamás, Feldhoffer Gergely, Srancsik Bálint, MPEG-4 modell alkalmazása szájmozgás megjelenítésére,, 2006 [3] I. Pandzic and R. Forchheimer, MPEG-4 Facial Animation: The Standard, Implementation and Applications, 2002, Wiley [4] Oroszi Balázs, Videó folyamból MPEG-4 paraméterek származtatása - MPEG-4 paraméterekkel vezérelhető fej-animációs rendszer,, 2007 [5] Cosi P., Fusaro A., Tisato G., LUCIA a New Italian Talking-Head Based on a Modified Cohen- Massaro s Labial Coarticulation Model,, Proceedings of Eurospeech 2003, Geneva, Switzerland, September 1 4, 2003, Vol. III, pp. 2269-2272. [6] Balci K., Xface: Open Source Toolkit for Creating 3D Faces of an Embodied Conversational Agent,, Smart Graphics, 2005, pp. 263-266.