TECHNISCHE UNIVERSITÄT DRESDEN. Diplomarbeit. Automatische Extraktion hierarchischer Skelette aus dynamischen 3D-Modellen

Größe: px
Ab Seite anzeigen:

Download "TECHNISCHE UNIVERSITÄT DRESDEN. Diplomarbeit. Automatische Extraktion hierarchischer Skelette aus dynamischen 3D-Modellen"

Transkript

1 TECHNISCHE UNIVERSITÄT DRESDEN FAKULTÄT INFORMATIK INSTITUT FÜR SOFTWARE- UND MULTIMEDIATECHNIK PROFESSUR FÜR COMPUTERGRAPHIK UND VISUALISIERUNG PROF. DR. STEFAN GUMHOLD Diplomarbeit zur Erlangung des akademischen Grades Diplom-Medieninformatiker Automatische Extraktion hierarchischer Skelette aus dynamischen 3D-Modellen Stefan Broecker (Geboren am 20. Mai 1982 in Görlitz) Betreuer: Prof. Dr. Gumhold Dresden, 23. August 2006

2

3 Aufgabenstellung In der Diplomarbeit sollen automatische Ansätze zum Zerlegen von dynamischen 3D-Modellen entwickelt und untersucht werden. Die Arbeit baut auf dem im Beleg entwickelten Framework zur Segmentierung statischer Modelle auf. Im Rahmen der Diplomarbeit sind folgende Teilprobleme zu lösen: Erarbeitung der Literatur im Bereich Skelettextraktion aus dynamischen Modellen Erweiterung des bestehenden Frameworks für die Behandlung dynamischer Modelle und Suche nach Datensätzen von dynamischen Modellen Entwicklung von geeigneten Kriterien für die Zerlegung von dynamischen Modellen in Körperteile/Knochen Implementierung und Analyse der Segmentierungskriterien Übertragung der Animationsdaten des dynamischen 3D-Modells auf das hierarchische Skelett

4

5 Selbstständigkeitserklärung Hiermit erkläre ich, dass ich die von mir am heutigen Tag dem Prüfungsausschuss der Fakultät Informatik eingereichte Diplomarbeit zum Thema: Automatische Extraktion hierarchischer Skelette aus dynamischen 3D-Modellen vollkommen selbstständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt sowie Zitate kenntlich gemacht habe. Dresden, den 23. August 2006 Stefan Broecker

6

7 Kurzfassung Die Animation von Charakteren hat sowohl in der Computergrafik als auch in interaktiven Anwendungen fundamentale Bedeutung. Dem Nutzer steht heutzutage eine breite Palette an Werkzeugen zur Verfügung, um sehr komplexe Animationen zu erstellen, z.b. die Simulation von Falten und Muskelbewegungen. Aus Performance-Gründen sind diese Möglichkeiten in interaktiven Anwendungen eingeschränkt. Das Ziel der vorliegenden Arbeit besteht darin, automatische Ansätze zu entwickeln, komplexe Animationen für interaktive Anwendungen nutzbar zu machen (z.b.: effektivere Anzeige der Animation, Übertragung der Animation auf andere Modelle). Dabei soll es keine Rolle spielen, welche Werkzeuge zur Erstellung der Animation genutzt wurden. Das Nutzbar-Machen der komplexen Animation für interaktive Anwendungen reduziert sich hauptsächlich auf das Problem, die Informationen einer komplexen Animation auf eine Animations-Datenstruktur für interaktive Anwendungen zu übertragen. Ein Ansatz für die Übertragung ist, das animierte Objekt zuerst in Körperteile zu zerlegen. Diese Informationen können dann genutzt werden, um die Animation auf die Datenstruktur einer interaktiven Anwendung zu übertragen. Abstract Character animation is a fundamental task in computer graphics and interactive applications. Nowadays, there is a variety of tools at the user s disposal to create very complex animations, for example the simulation of creases and muscle deformation. Due to performance reasons, interactive applications do not offer all these tools. The aim of this work is to develop automatic methods to make a complex animation applicable for interactive applications. But there should be no restriction to the used tools. The main problem is to transfer the information of the complex animation onto an animation-data-structure for interactive applications. Therefore, one approach is to divide the animated object into body parts. This information can be used for transferring the information.

8

9 1 Inhaltsverzeichnis 1 Einleitung 3 2 Grundlagen der Animation polygonaler 3D-Modelle Polygonale Netze Eine einfache Listen-Struktur Die Halbkanten-Struktur Animation polygonaler Netze Dynamische 3D-Modelle Hierarchische Skelette Aufbau und Animation eines hierarchischen Skelettes Skinning Zielstellung Bisherige Arbeiten Skinning Mesh Animations Variational Shape Approximation Hierarchical Face Clustering on Polygonal Surfaces Marker-free Model Reconstruction and Motion Tracking from 3D Voxel Data Überblick Segmentierung Das Segmentierungsproblem Segmentierungskriterien Abweichung des euklidischen Abstands Rotationssequenzen Abstand zum Cluster-Schwerpunkt Segmentierungsverfahren für Punktmengen Mean-Shifting Hierarchisches Clustering k-means Clustering Segmentierungsverfahren für polygonale Netze Mean-Shifting Hierarchisches Clustering Der Region-Growing-Algorithmus Initialisierung der Saatpunkte Region-Growing Erweitertes Region-Growing Referenzaktualisierung / Neupositionierung der Saatpunkte Iteration und Konvergenz Tunneling Nachbearbeitung Verfeinerung der Cluster-Grenzen Verschmelzen von Clustern

10 Hierarchisches Clustering Verschmelzung durch den Nutzer Skelett-Extraktion Erkennen von Joints Joints an Schwerpunkten von Cluster-Grenzen Joints an Schwerpunkten von Clustern Erstellung der Hierarchie Animationsübertragung Bestimmung der Joint-Orientierungsmatrizen Festlegen der Default-Pose Bestimmung von Rotationen Bestimmung zusätzlicher Translationen Ergebnisse Region-Growing Vergleich der Metriken Aufwand in Abhängigkeit der Anzahl der Cluster Initialisierung der Saatpunkte Erweitertes Region-Growing Filterung bei Neupositionierung der Saatpunkte Vergleich zu Skinning Mesh Animations / Mean-Shifting Hierarchisches Clustering Nachbearbeitung und Skelett-Extraktion Zusammenfassung und Ausblick 57 Literaturverzeichnis 59 Abbildungsverzeichnis 61 A Verwendete Formelzeichen 63

11 3 1 Einleitung Die Animation von Charakteren hat sowohl in der Computergrafik als auch in interaktiven Anwendungen fundamentale Bedeutung. Dem Nutzer steht heutzutage eine breite Palette an Werkzeugen zur Verfügung, um sehr komplexe Animationen zu erstellen. Beispielsweise werden für viele Charaktere Knochen, Muskeln, Sehnen, Falten, etc. nachgebaut bzw. simuliert, um möglichst realistische Animationen zu erhalten. Sollen diese sehr aufwändig erstellten Animationen für interaktive Anwendungen genutzt werden, entstehen folgende Probleme. Die meisten zur Erstellung der Animation genutzten Werkzeuge sind nur in der jeweiligen Software vorhanden. Interaktive Anwendungen unterstützen diese aber oftmals nicht. Man benötigt also eine Datenstruktur zum Speichern der Animation, die von allen gängigen interaktiven Anwendungen unterstützt wird. Und selbst wenn eine interaktive Anwendung alle nötigen Werkzeuge bereitstellen würde, wäre es dennoch problematisch, auf einem gewöhnlichen Computer derartig komplexe Animationen in Echtzeit darstellen zu können. Das Ziel der vorliegenden Arbeit besteht darin, automatische Ansätze zu entwickeln, komplexe Animationen für interaktive Anwendungen nutzbar zu machen. Dabei soll es keine Rolle spielen, welche Werkzeuge zur Erstellung der Animation genutzt wurden (z.b. Animations-Software). Dafür sorgt eine unabhängige Datenstruktur, welche die meisten Animationen verlustfrei repräsentieren kann. Auf der Seite der interaktiven Anwendungen findet man Datenstrukturen, die weitestgehend einheitlich sind. Somit sind einheitliche Datenstrukturen als Ausgangspunkt und Ziel vorhanden. Das Nutzbar-Machen der komplexen Animation für interaktive Anwendungen reduziert sich somit auf das Problem, die Animationen der verschiedenen Datenstrukturen zu übertragen. Eine direkte Übertragung ist aber nur in wenigen Fällen möglich. Ein Ansatz für die Übertragung ist, das animierte Objekt zuerst in Körperteile zu zerlegen. Solch einen Prozess nennt man auch Segmentierung. Die Informationen, die man auf diese Weise erhält, können dann genutzt werden, um die Animation auf die Datenstruktur einer interaktiven Anwendung zu übertragen. Die Animationen lassen sich damit schneller visualisieren oder z.b. auf andere Modelle übertragen. Alle notwendigen Grundlagen und Definitionen enthält das nächste Kapitel der vorliegenden Arbeit. Im darauf folgenden Kapitel werden bisherige Arbeiten zum Thema vorgestellt.

12 4 1. EINLEITUNG

13 5 2 Grundlagen der Animation polygonaler 3D-Modelle Dieses Kapitel dient zur Definition all jener Begriffe, die zur Repräsentation von dreidimensionalen Objekten und deren Animation notwendig sind. Auf Basis dessen wird am Ende des Kapitels das Ziel der Arbeit konkret formuliert. 2.1 Polygonale Netze In der Computergrafik können Objekte durch dreidimensionale Modelle (kurz 3D-Modell ) beschrieben werden. Eine weit verbreitete Datenstruktur sind polygonale Netze. Das Netz stellt dabei eine Art Hülle des Objekts dar bzw. beschreibt die Oberfläche des Objekts. Ein polygonales Netz M besteht aus einer Menge an Vertices V = (v 1,..., v a ) (Einzahl Vertex ), Facetten F = (F 1,..., F b ) und Kanten E = (e 1,..., e c ). Ein Vertex v i R d ist ein Punkt im d-dimensionalen Raum (für 3D-Modelle d = 3). Eine Kante e i besteht aus zwei Vertices v j und v k. Eine Facette F i = (v i1,..., v in ) besteht aus einer Menge von Kanten bzw. deren Vertices v ij, die zusammen eine abgeschlossene, von der Topologie her ringförmige Struktur ergeben. Innerhalb eines solchen Ringes dürfen sich keine anderen Vertices oder Kanten befinden. Nach Möglichkeit sollten Facetten flach sein, also alle Vertices einer Facette in der gleichen Ebene liegen. Durch die Vertices werden somit die Eckpunkte eines Modells definiert und durch die Facetten einzelne Oberflächen. Weit verbreitet sind Netze, die ausschließlich aus Dreiecks- bzw. Vierecks- Facetten bestehen. Abbildung 2.1 zeigt ein Beispiel eines polygonalen Netzes eines Triceratops. In dem vergrößerten Ausschnitt sind Vertices blau, Kanten grün und Facetten dunkelrot hervorgehoben. Abbildung 2.1: Beispiel eines polygonalen Netzes Eine einfache Listen-Struktur Die einfachste Datenstruktur für polygonale Netze besteht aus jeweils einer Liste für Vertices, Facetten und Kanten (Kanten sind nicht zwingend nötig). Die Vertex-Liste enthält Koordinaten der 3D- Punkte. Die Kanten-Liste speichert die Indizes der Vertices, aus denen die jeweilige Kante besteht. In der Facetten-Liste werden für jede Facette alle Indizes der entsprechenden Vertices gespeichert. Darüber hinaus lässt sich eine Facette statt durch Vertex-Indizes ebenso durch Kanten-Indizes zu beschreiben. Bei der Bearbeitung polygonaler Netze ist es von Vorteil, direkten Zugriff auf Nachbarschaftsbeziehungen der Netz-Elemente zu haben. Nach [Wei85] existieren neun verschiedene Nachbarschaftsbeziehungen zwischen Vertices, Kanten und Facetten. Diese sind in Abbildung 2.2 dargestellt. Auf der linken

14 6 2. GRUNDLAGEN DER ANIMATION POLYGONALER 3D-MODELLE Seite befinden sich jeweils die Nachbarn (blau) des betrachteten Elementes (rot). Rechts visualisiert ein Graph diese Beziehungen. Abbildung 2.2: Nachbarschaftsbeziehungen nach Weiles. Diese Beziehungen lassen sich mit den Begriffen Adjazenz und Inzidenz beschreiben. Zwei Vertices heißen adjazent oder benachbart, wenn sie durch die gleiche Kante verbunden sind. Zwei Kanten heißen adjazent, wenn sie durch den gleichen Vertex verbunden sind. Zwei Facetten heißen adjazent, wenn sie durch die gleiche Kante verbunden sind. Ein Vertex heißt inzident mit einer Kante, wenn er von dieser Kante berührt wird, dass heißt, wenn diese ihn enthält. Ein/e Vertex/Kante heißt inzident mit einer Facette, wenn die Facette den/die Vertex/Kante enthält. Nutzt man nun die Datenstruktur, die aus einer Vertex- und einer Facetten-Liste besteht, hat man nur geringen direkten Zugriff auf diese Beziehungen. Beispielsweise ist die Beziehung FV, d.h. die zu einer Facette inzidenten Vertices, direkt aus der Facetten-Liste ablesbar. Das Bestimmen von Beziehungen mit Kanten ist nur über zusätzliche Berechnungen möglich. Obgleich diese Minimal-Variante den geringsten Speicherplatz benötigt und demzufolge zum Speichern von Modellen geeignet ist, bieten sich andere Strukturen für die Bearbeitung und Analyse von polygonalen Netzen besser an Die Halbkanten-Struktur Um eine Datenstruktur, die mehr direkte Zugriffe auf Nachbarschaftsbeziehungen gewährleistet, handelt es sich bei der Halbkanten-Struktur. Jede Kante e = (v a, v b ) in zwei Halbkanten unterteilt. Die eine Halbkante h i besteht aus dem Ursprungs-Vertex v a und dem Ziel-Vertex v b, auf den sie zeigt. Für die zweite Halbkante sind die Vertices vertauscht, also h j = (v b, v a ). Zwei Halbkanten h i, h j sind invers zueinander (Notation: (h i ) 1 = h j bzw. (h j ) 1 = h i ), wenn der Ursprungs-Vertex von h i dem Ziel- Vertex von h j und der Ziel-Vertex von h i dem Ursprungs-Vertex von h j entspricht. Für jede Halbkante kann man einen Vorgänger und einen Nachfolger bestimmen. Dabei bedient man sich der Orientierbarkeit von Facetten. Für jede Facette lässt sich ein Umlaufsinn festlegen. Diesen bestimmt die Reihenfolge der Vertices bzw. Kanten, aus denen die Facette besteht. In einer Halbkanten-Struktur besitzen adjazente Facetten entgegengesetzte Umlaufsinne. Den Nachfolger einer Halbkante bildet die nächste Halbkante in Richtung des Umlaufsinns der Facette, zu der die Halbkante gehört. Der Vorgänger einer Halbkante ist die nächste Halbkante in entgegengesetzter Richtung des Umlaufsinns der Facette, zu der die Halbkante gehört. Statt einer Kanten-Liste speichert man eine Halbkanten-Liste. Diese enthält für jede Halbkante h i ihren Ursprungs-Vertex, den Index der inversen Halbkante (h i ) 1, sowie den Nachfolger und Vorgänger von h i. Der Ursprungs-Vertex des Nachfolgers von h i ist gleichzeitig der Ziel-Vertex von h i. Des Weiteren speichert man die Facetten-Zugehörigkeit von h i. Wegen des festgelegten Umlaufsinns genügt es, in der Facetten-Liste lediglich die Ursprungs-Halbkante

15 2.1. POLYGONALE NETZE 7 der jeweiligen Facette zu speichern. Die Vertices einer Facette bestimmt man dann durch wiederholtes Auslesen der jeweiligen Nachfolger-Halbkante (und dessen Ursprungs-Vertex), bis der Nachfolger wieder die Ursprungs-Halbkante selbst ist. In Abbildung 2.3 ist die komplette Struktur für einen Tetraeder dargestellt. Vertex x y z Facette Ursprungs-Halbkante h h h h 10 Halbkante Ursprung Inverse Vorgänger Nachfolger Fläche 1 v 1 h 7 h 3 h 2 F 1 2 v 2 h 10 h 1 h 3 F 1 3 v 3 h 4 h 2 h 1 F 1 4 v 1 h 3 h 6 h 5 F 2 5 v 3 h 12 h 4 h 6 F 2 6 v 4 h 8 h 5 h 4 F 2 7 v 2 h 1 h 9 h 8 F 4 8 v 1 h 6 h 7 h 9 F 4 9 v 4 h 11 h 8 h 7 F 4 10 v 3 h 2 h 12 h 11 F 3 11 v 2 h 9 h 10 h 12 F 3 12 v 4 h 5 h 11 h 10 F 3 Abbildung 2.3: Links: polygonales Netz, rechts: Halbkanten-Struktur als Graph, unten: Listen für Vertices, Halbkanten und Facetten. Mit dieser Struktur lassen sich nun wesentlich mehr Nachbarschaftsbeziehungen direkt abfragen. Z.B. bestimmt man die von F i adjazenten Facetten F j, indem zuerst in der Facetten-Liste die Ursprungs- Halbkante h u von F i ausgelesen wird. In der Halbkanten-Liste findet man leicht (h u ) 1. Für diese Halbkante ist deren Facetten-Zugehörigkeit in der Halbkanten-Liste mit F j auslesbar. Weitere adjazente Facetten werden bestimmt, indem man alle Halbkanten von F i ausliest (durch Nachfolger-Indizes effizient ausführbar), jeweils invertiert und den Facetten-Index bestimmt. Das schnelle Bestimmen von adjazenten Facetten ist besonders für die in dieser Arbeit beschriebenen Algorithmen von Bedeutung. Durch das Ablegen von Vorgänger- und Nachfolger-Indizes sind nun auch Beziehungen wie EE, FE oder EV schnell bestimmbar. Einen Nachteil der Halbkanten-Struktur stellt die Tatsache dar, dass das polygonale Netz mannigfaltig sein muss. Für eine mannigfaltige Oberfläche gilt, dass jeder Punkt p von einer Fläche da umgeben ist, die topologisch einer Scheibe entspricht. Für polygonale Modelle bedeutet das, dass jede Facette durch genau zwei Facetten begrenzt wird. T-Kreuzungen, herausragende Facetten und durch nur einen Vertex verbundene Facetten sind folglich nicht zulässig (siehe Abbildung 2.4).

16 8 2. GRUNDLAGEN DER ANIMATION POLYGONALER 3D-MODELLE Abbildung 2.4: Fälle nicht-mannigfaltiger Geometrie. Bedingt durch die Vielzahl an erhältlichen 3D-Programmen gibt es zahlreiche verschiedene Formate für 3D-Modelle. Als Beispiele hierfür lassen sich das 3DS-Format von 3D Studio Max oder das OBJ-Format von Maya anführen. Ein unabhängiges Format stellt z.b. die VRML-Spezifikation dar. 2.2 Animation polygonaler Netze Für die Repräsentation der Animation eines polygonalen Netzes existieren viele Möglichkeiten. Im Folgenden wird auf zwei einfache Möglichkeiten eingegangen, die für die Verfahren in den nächsten Kapiteln von Bedeutung sind Dynamische 3D-Modelle Ein dynamisches 3D-Modell ist durch eine Sequenz von S polygonalen Netzen repräsentiert, wobei Nachbarschaftsbeziehungen zwischen Vertices, Facetten und Kanten für jeden Sequenzschritt t = 1..S gleich bleiben. Es ändern sich lediglich die Positionen der Vertices. Betrachtet man den Index t als Zeit- Index, stellt ein dynamisches 3D-Modell eine Möglichkeit dar, eine Animation zu repräsentieren. Weiterhin wird für jedes dynamische 3D-Modell eine Default-Pose in Form eines ausgewählten Zeitschritts der Animation festgelegt (meist t = 1). Dieser Zeitpunkt stellt eine Start-Position der Animation dar und ist auch für das spätere Skinning notwendig. Als Datenstruktur für dynamische 3D-Modelle kann man die vorgestellten Strukturen polygonaler Netze erweitern. Die Nachbarschaftsbeziehungen zwischen den Netz-Elementen bleiben über die gesamte Sequenz gleich. Deswegen können die Listen für Facetten, Kanten oder Halbkanten eins zu eins übernommen werden. In der Vertex-Liste muss allerdings jeweils ein Array der Länge S gespeichert werden. Somit hat man Zugriff auf die Vertex-Position zu jedem Zeitschritt. Dies ermöglicht eine sehr exakte Repräsentation einer Animation. Viele 3D-Programme unterstützen das Speichern von Animationen in Form von Keyframes. Ein Keyframe legt die Position eines Vertex zu einem bestimmten Zeitschritt fest. Zwischen zwei Keyframes können dann die Werte mit verschiedenen Methoden interpoliert werden. Somit kann man dynamische 3D-Modelle in einem 3D-Programm erstellen, indem man für jeden Vertex Keyframes festlegt. Das anwendungsunabhängige VRML-Format unterstützt ebenfalls das Speichern von Keyframes pro Vertex. Eine andere Möglichkeit, die Animation zu exportieren, besteht im Speichern einer Sequenz von S statischen polygonalen Netzen. Z.B. könnte man eine OBJ-Sequenz aus Maya exportieren. Nachteil dieser Variante ist, dass jede OBJ-Datei nicht nur die Vertex-Liste, sondern auch die Facetten-Liste enthält. Hieraus resultiert ein höherer Speicherbedarf. Anzumerken ist noch, dass es für die in den nächsten Kapiteln vorgestellten Verfahren keine Rolle spielt, ob die Modell-Sequenz eine flüssige Animation oder nur ein paar Posen/Haltungen des Modells darstellt. Formal gesehen lässt sich eine Sequenz mit der Länge S = 1 auch als dynamisches 3D-Modell betrachten. Im Prinzip entspricht diese Variante jedoch einem statischen Objekt und wird somit nicht

17 2.2. ANIMATION POLYGONALER NETZE 9 weiter behandelt. Für die vorgestellten Verfahren sollte die Länge der Sequenz also mindestens zwei sein. Abbildung 2.5 zeigt Beispiele dynamischer 3D-Modelle. Abbildung 2.5: Eine Auswahl an Zeitschritten einiger dynamischer 3D-Modelle Hierarchische Skelette Eine andere Möglichkeit, die besonders in der Charakter-Animation breite Anwendung findet, ist der Einsatz so genannter hierarchischer Skelette. Dabei trennt man die Animation vom 3D-Modell. Zunächst soll geklärt werden, was ein hierarchisches Skelett bzw. eine Skelett-Animation ist Aufbau und Animation eines hierarchischen Skelettes Ein hierarchisches Skelett stellt im Prinzip einen Baum dar, dessen Knoten Joints und Kanten Bones sind. Ein Joint stellt den Punkt dar, um den der Bone rotiert. Ein Bone entspricht einem Knochen, der Joints miteinander verbindet. Die Baumstruktur ist hierarchisch angelegt. Das bedeutet, es existieren Parent- und Child-Knoten bzw. Joints. Der Parent Joint J P eines Joints J ist der Knoten im Baum, der eine Hierarchie-Stufe höher liegt, wobei J und J P durch eine Kante miteinander verbunden sind. Der Child-Joint J C von J ist ebenfalls durch eine Kante mit J verbunden, allerdings liegt J C eine Hierarchie- Stufe niedriger. Bedingt durch die Baumstruktur kann ein Joint immer nur einen Parent-Joint haben, aber mehrere Child-Joints. Der Root-Joint ist die Wurzel des Baumes/der Hierarchie. Dieser besitzt keinen Parent-Joint. Joints können durch Transformationen im dreidimensionalen Raum positioniert werden. Dabei hängt, wie bei einem richtigen Skelett, die Position eines Joints immer von der Position des Parent-Joints ab. In jedem Joint J k speichert man die Translation T t J k und Rotation R t J k des entsprechenden Bones für jeden Zeitschritt t = 1..S. Dadurch sind alle erforderlichen Informationen in den Joints gespeichert. Die Bones an sich müssen somit nicht explizit gespeichert werden. Sie stellen lediglich die Verknüpfung in Form einer Parent-Child-Beziehung dar, die ebenfalls in den Joints gespeichert werden kann.

18 10 2. GRUNDLAGEN DER ANIMATION POLYGONALER 3D-MODELLE Weiterhin besitzt jeder Joint sein eigenes lokales Koordinaten-System in Form einer orthogonalen 3 3 Orientierungsmatrix O Jk. Koordinaten der Child-Joints werden somit immer relativ zum Parent-Joint- Koordinaten-System angegeben. Die Ausrichtung des lokalen Koordinatensystems soll so festgelegt werden, dass die x-achse jeweils zum nächsten Child-Joint zeigt. Im Falle mehrerer Children zeigt die x- Achse in die durchschnittliche Richtung jener. Näheres dazu findet sich in Kapitel 6. Eine Ausnahme bildet der Root-Joint. Dessen lokales Koordinatensystem ist gleich dem Weltkoordinatensystem ausgerichtet. Grund dafür ist, dass eine Transformation des Root-Joints alle anderen Joints beeinflusst. Das komplette Skelett wird somit transformiert. Damit dies möglichst intuitiv vonstatten gehen kann, sind beide Koordinatensysteme gleich ausgerichtet. Zur Ermittlung von Koordinaten eines Joints relativ zu höher gelegen Koordinatensystemen (z.b. Weltkoordinaten) müssen die entsprechenden Koordinaten in die verschiedenen Koordinatensysteme überführt werden. Im Falle der Transformationsmatrizen geschieht dies einfach durch Nacheinander-Multiplizieren selbiger. Um z.b. die lokale Position des Joints Jlocal t in Weltkoordinaten J world t zu berechnen, werden die Transformations- und Orientierungsmatrizen T und O des Parent-Joints JP t bis hin zum Root-Joint nacheinander multipliziert. J t world = O Root T t Root... O JP T t J P J t local In Abbildung 7.12 ist das eben Beschriebene noch einmal veranschaulicht. Abbildung 2.6: Links: hierarchisches Skelett, rechts: die Ausrichtung der lokalen Koordinatensysteme. Eine Animation des Skelettes lässt sich einfach durch das Setzen von Keyframes für Rotation bzw. Transformation der Joints erstellen Skinning Um die Animation des Skelettes nun wieder auf ein statisches polygonales Netz zu übertragen, nutzt man so genannte Skinning-Verfahren. Dabei bindet man die Transformation eines Bones an eine Menge an Vertices. Bewegt sich dieser Bone in der Animation, folgen alle an diesen Bone gebundenen Vertices. Ein einfaches Skinning-Verfahren ist das Linear Blend Skinning (Dieses Verfahren ist auch unter den Namen Skeleton Subspace Deformation, Matrix Palette Skinning und Smooth Skinning bekannt. Eine gute Zusammenfassung findet sich in [LCF00]). Dabei wird ein Vertex v i (des statischen polygonalen Netzes) an eine Menge B i verschiedener Bones b j B i gebunden, wobei für jeden Vertex pro Bone

19 2.3. ZIELSTELLUNG 11 ein Gewicht w ij festgelegt wird. Die deformierte Position v i von v i entsteht dann durch gewichtete Transformation der entsprechenden Transformationsmatrizen T bj von b j : v i = b j B i w ij T bj v i. Auf diese Weise reduziert sich der benötigte Speicherplatz. Statt die Position für jeden Vertex pro Zeitschritt zu speichern, werden Transformationen nur noch für wenige Bones pro Zeitschritt festgelegt. Pro Vertex müssen nur einmalig die Gewichte w ij festgelegt sein. Da zur Berechnung der Position eines Vertex nur wenige, einfache Operationen durchzuführen sind, ist eine schnelle Darstellung der Animation möglich. Ein weiterer Vorteil besteht darin, dass Animationen sehr intuitiv durch Animation des Skelettes erstellt werden können. Aus diesen Gründen unterstützen die meisten interaktiven Anwendungen den Einsatz hierarchischer Skelette kombiniert mit Linear Blend Skinning. Weiterhin ist die Hardwareunterstützte Beschleunigung dieses Verfahrens mit modernen Grafikkarten möglich. 2.3 Zielstellung Das anfangs erwähnte Ziel der Arbeit, die Übertragung der Informationen auf eine andere Datenstruktur, kann nun konkret formuliert werden. Ausgang ist also eine beliebige Charakter-Animation. Diese kann mit verschiedensten Mitteln erstellt worden sein. Um diese Animation nun in einer einheitlichen Struktur abzulegen, bieten sich dynamische 3D-Modelle an. Grund dafür ist, dass sich Vertex-Positionen aus jeder Animation exakt bestimmen lassen. Dadurch kann jede Animation verlustfrei als dynamisches 3D- Modell repräsentiert werden. Wie bereits erwähnt, unterstützen interaktive Anwendungen hierarchische Skelette, womit die Ziel- Datenstruktur ebenfalls festgelegt ist. Um nun eine beliebige Animation für interaktive Anwendungen nutzbar zu machen, muss die Animationsinformation auf ein hierarchisches Skelett übertragen werden. Dies ist direkt nicht möglich und auch nicht verlustfrei. Ziel der Arbeit ist es, aus einem dynamischen 3D-Modell ein hierarchisches Skelett zu extrahieren und den Großteil der Animationsinformation in Form von Transformationsmatrizen der Joints festzuhalten. Dabei soll das Gewicht nicht auf eine möglichst exakte Konvertierung jeder Deformation gelegt sein. Ziel ist die Extraktion eines weitestgehend anatomisch korrekten Skelettes. Mit anatomisch korrekt ist gemeint, dass das Skelett Knochen für alle wichtigen Gliedmaßen und deren korrekte Verknüpfung enthält. Das Skinning selbst ist nicht Thema dieser Arbeit. Es besteht aber die Möglichkeit, die berechneten Skelette zu exportieren und dann automatische Skinning-Verfahren anderer Applikationen zu nutzen. Im folgenden Kapitel werden relevante Arbeiten vorgestellt, die für das Verfahren der Skelett-Extraktion von Bedeutung sind.

20 12 2. GRUNDLAGEN DER ANIMATION POLYGONALER 3D-MODELLE

21 13 3 Bisherige Arbeiten Viele Arbeiten, bei denen Skelette aus 3D-Modellen extrahiert werden, gehen über den Zwischenschritt der Zerlegung in Körperteile. Das Problem, ein Modell in Teile zu zerlegen, ist in der Computergrafik für viele Anwendungen von großer Bedeutung. Im Folgenden seien einige wichtige Arbeiten zum Thema Segmentierungsalgorithmen und Skelett-Extraktion aus 3D-Modellen vorgestellt. 3.1 Skinning Mesh Animations Diese Arbeit hat insoweit Bedeutung für die vorliegende Arbeit, da die Ausgangsdaten (die Animation) gleich und die Ziele ähnlich sind. Weiterhin wird ein wichtiges Kriterium für die Zerlegung eines Modells in Körperteile beschrieben. Mit dem so genannten Mean-Shift-Verfahren wird ein Algorithmus zum automatischen Zerlegen des Modells genutzt. Das Ziel in [JT05] ist, Animationen von Charakteren effektiv in interaktiven Anwendungen darstellen zu können. Dazu wird die Animation eines dynamischen 3D-Modells auf eine nicht-hierarchische Skelett- Struktur übertragen. Der Unterschied zum hierarchischen Skelett besteht darin, dass die Bones nicht miteinander verknüpft sind. Transformationen der Bones werden also nicht mehr relativ zum Parent, sondern absolut zum Welt-Koordinaten-System angegeben. Die Animation ist also gegeben durch eine Sequenz S an 3D-Modellen P = (p 1, p 2,..., p S ), wobei p t R 3N mit N Vertices ist. Diese soll so vereinfacht werden, das eine Transformation T t des Skelettes, angewendet auf die nicht deformierte Default-Pose p, p t approximiert: T t ist für jeden Vertex i bestimmt mit p t T t p, t = 1..S. T t i = b B i w ib T t b, wobei B i die Menge der Transformationen/Bones ist, die Vertex i beeinflussen. w ib stellt die Gewichtung von Bone b für Vertex i dar und T b t ist die Transformation von b. Diese sollen der Bewegung der verschiedenen Körperteile des Modells entsprechen. Zum Bestimmen der T b t wird das Modell zunächst in Körperteile zerlegt. Dafür werden Facetten mit ähnlichen Rotationssequenzen zu Clustern/Körperteilen gruppiert. Da die Berechnung der Rotationssequenzen in Abschnitt 4.2 genau erläutert wird, sei an dieser Stelle nur Folgendes erklärt. Für eine Facette kann für jeden Zeitschritt deren Orientierungsmatrix berechnen werden. Die Rotationsmatrix für den Zeitschritt t lässt sich aus den Orientierungsmatrizen der Facetten während der Default-Pose und zum Zeitschritt t berechnen. Facetten, die ähnliche Rotationssequenzen aufweisen, liegen auf dem gleichen Körperteil. Zum automatischen Gruppieren der Facetten kommt das Mean-Shift-Verfahren (siehe dazu [CM05], [YLL + 05] und Kapitel 4 für eine ausführliche Erklärung) zum Einsatz. Dieses betrachtet die Menge aller Rotationssequenzen als hochdimensionale Punkte z j R 9S und berechnet aus diesen eine Wahrscheinlichkeits-Dichte-Funktion

22 14 3. BISHERIGE ARBEITEN f(z) = 1 n n j=1 ( z z j k h 2), wobei h die so genannte Bandbreite und k(.) eine symmetrische Basisfunktion ist. n ist die Anzahl der Facetten bzw. der Rotationssequenzen. Jeder Startwert z j kann nun in Richtung des Gradienten von f(z) auf sein lokales Maximum z j abgebildet werden. Mittels der Bandbreite kann bestimmt werden, wie viele lokale Maxima entstehen. Alle Facetten, deren Punkte nun auf das gleiche Maxima abgebildet wurden, weisen ähnliche Rotationssequenzen auf und bilden somit ein Körperteil. Für jedes Körperteil kann als nächstes die gesuchte Transformation T b t berechnet werden. Dazu berechnet man die durchschnittliche Transformation aus allen Facetten des jeweiligen Körperteils. T b t wird einem Knochen des Skelettes zugewiesen. An diesen Bone werden anschließend die Vertices von p gebunden, welche der Bone beeinflussen soll. Wird bei [JT05] das Hauptaugenmerk auf der weitestgehend genauen Approximation der Deformierung des 3D-Modells durch beliebige Skelette gelegt, soll in dieser Arbeit das Berechnen eines hierarchischen Skelettes im Vordergrund stehen. Dieses soll korrekte Verzweigungen entsprechend der Gliedmaßen des Modells besitzen. Knochen und Gelenke sollen anatomisch weitestgehend korrekt positioniert sein. 3.2 Variational Shape Approximation In [CSAD04] wird ein Verfahren zum Segmentieren statischer Modelle beschrieben. Ziel ist es, ein 3D- Modell durch eine vereinfachte Version zu approximieren. Dafür soll das Modell in möglichst flache Teile zerlegt werden. Die Teile können dann durch Ebenen ersetzt werden. Die Ebenen wiederum werden dann zu einem vereinfachten Modell zusammengesetzt (siehe Abbildung 3.1). Abbildung 3.1: Links: Modell zerlegt in flache Teile, rechts: vereinfachtes Modell (Abbildung aus [CSAD04]). Als Segmentierungsalgorithmus kommt das so genannte Region-Growing zum Einsatz (In Kapitel 4 findet sich eine ausführliche Erklärung). Das komplette Verfahren ist Fehler-basiert, d.h. die Qualität einer Segmentierung wird durch den Unterschied zwischen dem originalen und dem vereinfachten 3D- Modell bewertet. Dabei wird vorher festgelegt, wie viele Facetten das vereinfachte Modell besitzen soll. Der Segmentierungsalgorithmus sorgt nun dafür, dass sich die einzelnen Teile so ausbilden, dass der Unterschied zwischen dem originalen und dem vereinfachten Modell minimiert wird. Zu Beginn werden n Saatpunkt-Facetten zufällig festgelegt, wobei n die Anzahl der Teile ist, in die das Modell zerlegt werden soll. Aus diesen wachsen in Abhängigkeit eines Abstandsmaßes die einzelnen Teile (Cluster) der Segmentierung. Das Abstandsmaß betrachtet dabei den Abstand zwischen einer Facetten-Normale und der Referenz-Normale des Clusters (zu Beginn entspricht diese der Normale der Saatpunkt-Facette). Facetten, die am ähnlichsten zur Referenz-Normale sind, werden also zuerst dem

23 3.3. HIERARCHICAL FACE CLUSTERING ON POLYGONAL SURFACES 15 entsprechenden Cluster zugeordnet. Nach dem Wachsen ist das Modell vollständig unterteilt. Nun wird für jeden Cluster die Referenz-Normale aktualisiert, indem eine Durchschnitts-Normale aus allen Facetten eines Cluster berechnet wird. Weiterhin werden die Saatpunkte neu positioniert, so dass sie besser im jeweiligen Cluster liegen. Dazu wählt man die Facette eines jeden Clusters mit geringstem Normalen- Abstand zur neuen Referenz-Normale. Danach wird das Wachstum und die Neupositionierung iterativ wiederholt. Das hat zur Folge, dass die Cluster und die Referenzebene (entspricht der Referenz-Normale) sich immer besser aneinander anpassen. Der Unterschied zwischen originalem und vereinfachtem Modell sinkt dabei immer weiter und konvergiert. Wenn dieser Unterschied in eine stationäre Phase eintritt, kann die Iteration abgebrochen werden und das finale vereinfachte Modell aus den Segmentierungsinformationen berechnet werden. 3.3 Hierarchical Face Clustering on Polygonal Surfaces Ein weiteres Segmentierungsverfahren für statische 3D-Modelle wird in [GWH01] vorgestellt (In Kapitel 4 findet sich eine ausführliche Erklärung). Dieses berechnet eine Hierarchie aller Facetten bzw. deren Gruppierungen. Die Blätter des Hierarchie-Baumes stellen die einzelnen Facetten dar. Um nun höhere Stufen der Hierarchie zu berechnen, testet man benachbarte Facetten auf deren Ähnlichkeit. Die Ähnlichkeit ist durch ein Abstands/Fehlermaß definiert, z.b. der euklidische Abstand von Facetten- Mittelpunkten. Das Facettenpaar mit dem geringsten Fehler kann zu einem Cluster gruppiert werden (zum Anfang besteht jeder Cluster aus einer Facette). Im weiteren Verlauf des Algorithmus wird jeweils das Cluster-Paar mit dem geringstem Fehler gesucht und miteinander verschmolzen. Führt man dieses Verfahren bis zum Ende durch, entsteht eine Hierarchie. Der Wurzelknoten entspricht dann dem Cluster, der aus dem gesamten 3D-Modell besteht. Macht man einen Schnitt durch die Hierarchie, hat man eine Segmentierung vorliegen. Wie dieser Schnitt aussehen soll, muss den Anforderungen entsprechend spezifiziert werden. Möchte man z.b. eine Segmentierung mit n Clustern erhalten, kann man so lange Cluster miteinander verschmelzen (bzw. die Hierarchie aufwärts verfolgen), bis die Cluster-Anzahl den Wert n erreicht. Die Segmentierungsergebnisse können beispielsweise wieder zur Vereinfachung des Original-Modells genutzt werden. Die komplette Hierarchie findet z.b. bei Level-of-Detail-Darstellungen Anwendung. Abhängig von der Distanz des Modells zur Kamera benötigt man eine gröbere bzw. feinere Darstellung des Modells. Für grobe Darstellungen nutzt man einen Schnitt weit oben in der Hierarchie und erhält somit ein stark vereinfachtes Modell. Ist das Objekt nahe der Kamera wird der Schnitt viel weiter unten in der Hierarchie sein, damit man ein fein aufgelöstes Modell sieht. 3.4 Marker-free Model Reconstruction and Motion Tracking from 3D Voxel Data In [TAM + 04a] und [TAM + 04b] ist die Animation als Sequenz S von Voxelmodellen V (t), t = 1..S gegeben. Ziel ist die Extraktion eines hierarchischen Skelettes. Dafür wird das Modell ebenfalls in Körperteile zerlegt. Von Bedeutung sind also die Kriterien zur Zerlegung in Körperteile und das Verfahren der Berechnung des Skelettes. Die Zerlegung wird mittels eines hierarchischen Split-and-Merge-Verfahrens durchgeführt. Im Split-Step wird das komplette Modell zuerst mit einem Ellipsoid approximiert. Ist der Unterschied zwischen dem Ellipsoid und dem Modell über einer Schranke T SP LIT, wird das Modell in zwei Teile orthogonal zur Hauptachse des aktuellen Ellipsoids zerlegt und mit zwei Ellipsoiden approximiert. Für jeden der zwei Ellipsoide wird der Test rekursiv wiederholt und bei Bedarf unterteilt. Am Ende liegt eine hierarchische Unterteilung des Modells vor. Im Folgenden Merge-Step werden benachbarte Teile wieder zusam-

24 16 3. BISHERIGE ARBEITEN mengefügt und ein neuer Ellipsoid berechnet, solange der Unterschied zwischen einem Teil und dessen Ellipsoid unter einer Schranke T MERGE liegt (Abbildung 3.2). Abbildung 3.2: Split-and-Merge-Verfahren (Abbildung aus [TAM + 04b]). Um aus diesen Teilen Körperteile zu identifizieren, werden Teile mit ähnlichen Bewegungspfaden miteinander verschmolzen (Abbildung 3.3). Dies ist ein weiteres Maß zum Erkennen von Körperteilen (Abschnitt 4.2). Abbildung 3.3: Erkennung von Körperteilen durch Vergleich von Bewegungspfaden und das hierarchische Skelett (Abbildung aus [TAM + 04b]). Zum Berechnen des Skelettes werden zunächst dessen Joints berechnet. Dazu werden die Grenzen zwischen zwei Clustern identifiziert. Innerhalb dieser Grenzen werden die Joints platziert. Der Root-Joint wird mit Hilfe des Schwerpunktes des Modells berechnet. Die Verknüpfung der Joints zu einer Hierarchie ergibt sich aus der Segmentierung, da die Unterteilung ebenfalls hierarchisch ist. 3.5 Überblick In Kapitel 4 wird der Ansatz der Zerlegung in Körperteile aufgegriffen. Dabei werden das Segmentierungsproblem spezifiziert, Kriterien zum Zerlegen in Körperteile definiert (basierend auf [JT05] und [TAM + 04b]) und Verfahren aus [JT05], [CSAD04], [GWH01] zum automatischen Segmentieren genutzt. Aufbauend auf diesen Ergebnissen erfolgt in Kapitel 5 die eigentliche Skelettberechnung, wobei Ansätze aus [TAM + 04b] angepasst werden. Dabei werden Anforderungen an Skelette und Segmentierungen geklärt und Algorithmen vorgestellt, um diese Anforderungen automatisch zu erfüllen. Kapitel 6 erklärt, wie die Animationsdaten auf das Skelett übertragen werden. Resultate werden in Kapitel 7 vorgestellt. Die Arbeit schließt mit einer Zusammenfassung und einem Ausblick ab. Anhang A gibt einen Überblick über die wichtigsten verwendeten Formelzeichen.

25 17 4 Segmentierung Der erste Schritt, ein Skelett aus einem 3D-Modell zu extrahieren, besteht darin, das Modell in separate Teile zu zerlegen. Jedes Teil (im Weiteren Cluster genannt) soll dabei einem Körperteil oder Ähnlichem entsprechen. Aus diesen einzelnen Teilen können dann die Knochen (Bones) und die Gelenke (Joints) des Skelettes berechnet werden. Im Gesamtprozess der Skelett-Extraktion stellt die Segmentierung den wichtigsten Schritt dar. Da alle weiteren Verfahren auf diesen Informationen aufbauen, wird bereits hier über die letztendliche Qualität des Skelettes entschieden. 4.1 Das Segmentierungsproblem Eine Segmentierung ist eine Zerlegung einer Menge M an Elementen e M in eine bestimmte Anzahl k disjunkter Teilmengen C i, i = 1..k (Cluster). Dabei stellen sich folgende Fragen. Aus wie vielen Clustern soll eine Segmentierung bestehen? Was ist eine optimale Segmentierung? Wie berechnet man eine optimale Segmentierung möglichst automatisch? Eine grundlegende Idee bei der Segmentierung besteht darin, ähnliche Elemente miteinander zu gruppieren. Elemente, die sehr verschieden sind, werden zu verschiedenen Clustern zugewiesen. Zum Bestimmen der Ähnlichkeit von Elementen definiert man ein Fehler- bzw. Abstandsmaß E(e j, e l ). Dies kann z.b. für Punktmengen in R d der euklidische Abstand E(e j, e l ) = e j e l 2 sein. Enthält ein Cluster bereits mehrere Elemente, stellt sich die Frage, zu welchem der bereits zugewiesenen Elemente der Abstand berechnet werden soll. Dieses Problem löst man durch Berechnen eines Referenzobjektes ˆR i für jeden Cluster. Dieses stellt einen Repräsentanten des Cluster dar. Für Punktmengen kann dies z.b. die durchschnittliche Position aller Elemente eines Cluster sein. Man kann dadurch mit E(e j, ˆR i ) den Abstand jedes Elements e j zu beliebigen Clustern C i berechnen. Eine bewährte Möglichkeit, eine optimale Segmentierung zu definieren, besteht darin, das Segmentierungsproblem als Optimierungsproblem zu betrachten. Dabei versucht man die Segmentierung anhand des Fehlermaßes E(e j, ˆR i ) für alle Elemente zu bewerten. Eine optimale Segmentierung ist eine Zerlegung, die das Fehlermaß minimiert. So kann man einen Gesamtfehler E(M, ˆR) zwischen der Menge M der Elemente und der Menge der Referenzobjekte ˆR definieren mit E(M, R) = i 1..k e j C i E(e j, ˆR i ) min. Das Hauptproblem besteht nun darin, dieses Minimum automatisch zu finden. Bei der Segmentierung polygonaler Netze bzw. dynamischer 3D-Modelle werden ähnliche Facetten zu Clustern gruppiert. Wie die Ähnlichkeit von Facetten für eine Segmentierung in Körperteile definiert sein kann, ist in Abschnitt 4.2 beschrieben. Im Anschluss werden Verfahren vorgestellt, um das Segmentierungsproblem zu lösen und es wird geklärt, welche Probleme speziell bei der Segmentierung polygonaler Netze auftreten. Abschnitt 4.5 behandelt Möglichkeiten, die Segmentierungsergebnisse nachträglich zu verbessern.

26 18 4. SEGMENTIERUNG 4.2 Segmentierungskriterien Um das Segmentierungsproblem zu lösen, benötigt man also ein Fehlermaß. Dieses berechnet einen Abstand zwischen Elementen abhängig von einem Segmentierungskriterium. Dieses wiederum ist abhängig vom Ziel der Segmentierung. Im Folgenden soll kurz diskutiert werden, welche Kriterien für eine Zerlegung in Körperteile denkbar sind. Bei der Beobachtung von Lebewesen kann man erkennen, dass sich bestimmte Teile des Körpers zueinander starr verhalten bzw. sich ähnlich bewegen, während andere Teile verglichen miteinander in starker Bewegung sind. Z.B. verhalten sich die Waden- und die Schienbeinpartie starrer zueinander als der Unterschenkel im Vergleich zum Oberschenkel. Ein Körperteil kann also als ein in sich weitestgehend starres Teilobjekt definiert werden. Ein Segmentierungskriterium, dass Körperteile voneinander unterscheiden soll, sollte somit folgende Fragen beantworten können: Was ist allen Facetten gemeinsam, die auf einem Körperteil liegen? Und: Was unterscheidet Facetten auf verschiedenen Körperteilen? Ist das Kriterium bekannt, muss festgelegt werden, welche Merkmale eines Elementes dieses Kriterium in Form eines Fehlermaßes zum Ausdruck bringen. Beim Segmentieren von statischen 3D-Modellen kommt oft der euklidische Abstand von Facettenmittelpunkten oder die Ausrichtung in Form von Facettennormalen zum Einsatz. Bei dynamischen 3D-Modellen sind diese Merkmale ebenfalls dynamisch. So erweitern sich die Mittelpunkte zu Bewegungspfaden und die Normalen zu Sequenzen von Orientierungsmatrizen. Im Folgenden werden Metriken vorgestellt, die genau diese Facettenmerkmale über die Zeit betrachten, um Körperteile zu erkennen Abweichung des euklidischen Abstands Die Grundidee dieser Metrik wurde in [TAM + 04b] bzw. [TAM + 04a] vorgestellt, um Körperteile zu erkennen. Man geht davon aus, dass Objekte auf demselben Körperteil liegen, wenn sich dessen Abstand über die Zeit betrachtet nur geringfügig ändert. Dies lässt sich folgendermaßen in einem Fehlermaß ausdrücken. Der Mittelpunkt x t j einer Facette F j zum Zeitpunkt t = 1..S sei definiert durch x t j = 1 v n, b v n F j wobei b die Anzahl der Vertices v n von F j ist. Betrachtet man die Mittelpunkte von Facetten F i und F j (i, j = 1..m, m ist die Anzahl der Facetten), kann man zwischen diesen den euklidischen Abstand zum Zeitpunkt t d(x t i, x t j) = x t i x t j 2 berechnen. Über die Zeit ändert sich dieser Abstand mehr oder weniger, je nach Starrheit der Facetten zueinander. Betrachtet man die zeitliche Abweichung σ(x i, x j ) zwischen diesen Abständen und dem Abstand während der Default-Pose σ(x i, x j ) = S (d(x t i, x t j) d( x i, x j )) 2, t=1 kann man so Informationen über die Starrheit zwischen Facetten erhalten. Eine hohe Abweichung bedeutet eine geringe Starrheit. Daraus lässt sich schließen, dass die betrachteten Facetten nicht zu einem Körperteil gehören. Eine geringe Abweichung dagegen bedeutet, dass die Facetten sich starr zueinander verhalten und somit zum gleichen Körperteil bzw. Cluster gehören. Abbildung 4.1 illustriert diesen Sachverhalt an einem Beispiel.

27 4.2. SEGMENTIERUNGSKRITERIEN 19 Abbildung 4.1: Von links nach rechts: geringe Abweichung von Facetten auf dem gleichen Körperteil, höhere Abweichung von Facetten auf verschiedenen Körperteilen, die daraus entstandene Segmentierung. Das Referenzobjekt ist in diesem Falle eine Sequenz an Bezugspunkten Xi t, zu denen die Abweichung berechnet werden kann. Diese berechnet man, indem man aus allen Facettenmittelpunkten eines Clusters den Schwerpunkt berechnet mit entsprechender Gewichtung der Facettenfläche a t j. X t i = F j C i x t j at j F j C i a t. j Die daraus resultierende Metrik bzw. die letztendliche Berechnung des Fehlers von einer Facette zu einem Referenzobjekt lautet E(F j, ˆR i ) = σ(x j, X i ) Rotationssequenzen Die folgende Metrik wurde in [JT05] vorgestellt. Bei diesem Segmentierungskriterium vergleicht man die Bewegung zwischen Facetten bzw. Clustern in Form von Rotationen. Elemente auf dem gleichen Körperteil werden wesentlich ähnlichere Rotationssequenzen aufweisen als Elemente auf verschiedenen Körperteilen. Entsprechend entsteht ein niedriger bzw. hoher Fehler. Die Rotation r t j einer Facette F j zum Zeitpunkt t berechnet man relativ zur Default-Pose von F j, z.b. F j zum Zeitpunkt 1. Die nicht-orthogonale Orientierungsmatrix O t j von F j zum Zeitpunkt t sei definiert durch O t j = ( v21 v31 ˆn ), mit v ab = (p t j a p t j b ). p t j a ist die Position des Vertex a von Facette F j zum Zeitpunkt t. ˆn = ( v 21 v 31 )/ v 21 v Entsprechend berechnet sich die Orientierungsmatrix Õj von F j zur Default-Pose. Nun berechnet man die Transformationsmatrix für Fj t mit D t j = O t j(õj) 1.

28 20 4. SEGMENTIERUNG Diese Matrix enthält die komplette Transformation (Rotation und Deformation) von F j relativ zur Default- Pose. Um nun die Rotation zu extrahieren, nutzt man die Polar Zerlegung ([SD92],[GL96]). Diese zerlegt die Transformationsmatrix in Dj t = rt j W j t, wobei rt j die gesuchte orthogonale Rotationsmatrix ist und Wj t die Deformation von F j enthält. Mit den so erhaltenen Rotationen kann man den Fehler zwischen zwei Rotationssequenzen r i und r j berechnen: wobei die Frobenius-Norm einer Matrix A ist. d(r i, r j ) = S ri t rj t 2 F, t=1 A F = Die Berechnung des Referenzobjekts Ri t, also der durchschnittlichen Rotation aller Facetten eines Clusters, basiert auf einem Ergebnis aus [Moa02]. Dieses besagt, dass eine sinnvolle durchschnittliche Rotation aus der Polar Zerlegung der arithmetisch gemittelten Rotationsmatrix berechnet werden kann. Sei also i j A 2 ij R t i = F j C i r t j N die nicht-orthogonale Durchschnittsmatrix der Rotationen r t j aller Facetten F j des Clusters C i zum Zeitpunkt t und N die Anzahl der Facetten des Clusters. Die Polar Zerlegung von R t i lautet R t i = R t iw t i. Durch die Polar Zerlegung wird R i t in den Raum der orthogonalen Matrizen SO(3) projiziert, wobei die orthogonale Rotationsmatrix Ri t minimalen Frobenius-Abtand zu R i t hat. Der Fehler zwischen Facetten und Referenzobjekten kann folgendermaßen formuliert werden: E(F j, ˆR i ) = d(r j, R i ) = S rj t Ri t 2 F. t= Abstand zum Cluster-Schwerpunkt Die letzte Metrik, die vorgestellt werden soll, erfüllt nicht das Kriterium Starrheit und betrachtet auch nicht die Bewegung der Facetten. Sie wird im Folgenden aber noch bei einigen Beispielen zum Einsatz kommen, da sie sehr anschaulich ist. Als Segmentierungskriterium kommt in diesem Falle der Abstand zwischen Facetten und Cluster-Schwerpunkten zu tragen. Der Fehler einer Facette zum Referenzobjekt wird also größer, wenn diese weiter vom Cluster-Schwerpunkt entfernt ist. Um den zeitlichen Aspekt mit zu berücksichtigen, berechnet man den durchschnittlichen Abstand E(F j, ˆR i ) = 1 S S d(x t j, Xi t ). t=1

29 4.3. SEGMENTIERUNGSVERFAHREN FÜR PUNKTMENGEN 21 Abbildung 4.2 zeigt die Cluster mit ihren Referenzobjekten. Wie man erkennen kann, erzielt man mit dieser Metrik kompakte Cluster, weil jede Facette dem Cluster mit dem durchschnittlich nächsten Cluster- Schwerpunkt zugeordnet ist. Die Referenzobjekte können wie in Abschnitt berechnet werden. Diese Metrik kann auch für statische Modelle genutzt werden. Dann entfällt die Berechnung des durchschnittlichen Abstandes. Abbildung 4.2: Kompakte Cluster mit minimalem Facetten-Abstand zum Cluster-Schwerpunkt 4.3 Segmentierungsverfahren für Punktmengen Im Folgenden werden drei bekannte Segmentierungsverfahren zunächst allgemein (für beliebige Punktmengen) beschrieben. Im sich anschließenden Abschnitt wird erklärt, wie diese Verfahren auf polygonale Netze angewendet werden können und welche Probleme dabei auftreten Mean-Shifting Das Mean-Shift-Verfahren ([CM05]) ist eine robuste Methode zum Segmentieren beliebiger Punktmengen X = {x 1,..., x n } R d. Betrachtet man diese Punkte als Messdaten, lässt sich ihre Wahrscheinlichkeits- Dichte-Funktion f(x) mit ˆf(x) = 1 nh d n ( ) x xi K h i=1 annähern. h ist die so genannte Bandbreite und K(.) eine Kernel-Funktion. Diese muss folgenden Anforderungen genügen: K(x) 0 und Ein Spezialfall stellen symmetrische Kernel-Funktionen dar R d K(x)dx = 1 K(x) = c k( x 2 ), wobei k(x) eine Profil-Funktion ist, z.b. der so genannte Epanechnikov-Kernel: k(x) = { 1 x 0 x 1 0 x > 1 c ist eine Normalisierungskonstante, damit das Integral

30 22 4. SEGMENTIERUNG R d k( x 2 )dx = 1 c gleich eins ist. Somit kann man ˆf(x) umformulieren zu ˆf(x) = c nh d ( n x x i k h i=1 Aus dieser Funktion lassen sich die optimalen Cluster-Zentren bzw. Referenzobjekte in Abhängigkeit von h bestimmen. Die Cluster-Zentren entsprechen den lokalen Maxima von ˆf(x). Für ein lokales Maximum von ˆf(x) gilt, dass dessen Gradient ˆf(x) = 0 ist. Der Gradient ist definiert mit ˆf(x) = 2c nh d+2 i=1 2 ) ( n x x i 2) g m(x), h wobei g(x) = k (x). Der so genannte Mean-Shift-Vektor m(x) ist gegeben durch m(x) = ( n i=1 x x x ig i 2) h ( n i=1 g x x i 2) x. h Dieser Vektor zeigt immer in die Richtung des maximalen Anstiegs von ˆf(.) an der Stelle x. Um nun die Maxima zu finden, nutzt man ein Gradienten-Anstiegs-Verfahren. Dabei wird jeder Startwert y 0 i = x i so lange entlang des Mean-Shift-Vektors verschoben y j+1 = y j + m(y j ), j = 0, 1, 2,..., bis dieser zu seinem lokalen Maximum konvergiert. Wie in [CM05] gezeigt, konvergiert das Verfahren, wenn K konvex und monoton fallend ist. Das Maximum, auf das jedes x i somit abgebildet wurde, bestimmt automatisch die optimale Cluster-Zugehörigkeit. In Abbildung 4.3 ist das Verfahren an einem Beispiel illustriert Hierarchisches Clustering Das bereits vorgestellte hierarchische Clustering aus [GWH01] ist ebenfalls verallgemeinerbar auf Punktmengen X = {x 1,..., x n } R d. Dazu betrachtet man eine Segmentierung als Graphen, dessen Knoten die Cluster sind. Zwischen jeweils zwei Clustern ist eine Kante e k = (C i, C j ) vorhanden, welche einen Kantenfehler E(e k ) besitzt. Dieser bestimmt den Abstand/Fehler zwischen zwei Clustern C i, C j bzw. deren Cluster-Zentren X i, X j E(e k ) = E(X i, X j ) = X i X j 2. Zu Beginn des Verfahrens wird jeder Cluster mit genau einem Element initialisiert. Das entsprechende Cluster-Zentrum X i ist dann natürlich gleich dem Punkt x i. Um nun ähnliche Elemente zu gruppieren, werden die Cluster C i und C j der Kante mit dem geringsten Kantenfehler miteinander verschmolzen. Dadurch ändert sich der Cluster-Graph. Die Knoten von C i und C j werden durch einen ersetzt. Für diesen wird durch Mittelwertbildung aller x l (C i C j ) ein neues Cluster-Zentrum berechnet. Die Kante zwischen C i und C j wird gelöscht bzw. zusammengezogen (deswegen ist der Algorithmus auch

31 4.3. SEGMENTIERUNGSVERFAHREN FÜR PUNKTMENGEN 23 Abbildung 4.3: Beispiel einer Mean-Shift-Segmentierung aus [CM05], (a) ein Datensatz aus Punkten entsprechend der ersten zwei Komponenten des Luv-Farbraums angeordnet, (b) Zuweisung zu farbig codierten Clustern durch Mean-Shifting, (c) Bahnen des Gradienten-Anstiegs-Verfahrens, die roten Punkte zeigen die lokalen Maxima.

32 24 4. SEGMENTIERUNG unter dem Namen Edge-Contraction bekannt). Kantenfehler bzw. Kanten, die von C i und C j zu anderen Clustern zeigen, werden aktualisiert. Für den aktualisierten Graph wird nun wieder dar nächste minimale Kantenfehler gesucht, die entsprechenden Cluster miteinander verschmolzen und der Graph aktualisiert. Wiederholt man diese Prozedur bis zum Ende, besteht der letzte Graph aus einem Cluster, der alle Elemente enthält. Die Reihenfolge der Verschmelzungen kann man in einer Hierarchie darstellen. Die Blatt-Knoten der Hierarchie sind die Cluster, die jeweils ein Element enthalten. Die Wurzel ist der letzte Cluster, der alle Elemente enthält. Abbildung 4.4 illustriert das Verfahren an einem Beispiel. Abbildung 4.4: Von links nach rechts: Punktmenge R 2, Zuweisung jedes Elementes zu einem Cluster, drei Verschmelzungsschritte, Hierarchie der Verschmelzungen. Möchte man dieses Verfahren zum Segmentieren nutzen, verfolgt man die Hierarchie beginnend bei den Blatt-Knoten aufwärts, bis eine Abbruchbedingung erfüllt ist. Oder anders ausgedrückt: Man verschmilzt Cluster so lange, bis der Algorithmus abbricht. Die Lösung des Optimierungsproblems besteht bei diesem Verfahren also darin, dass immer die ähnlichsten Cluster zuerst miteinander verschmolzen werden. Als Abbruchbedingung bieten sich verschiedene Möglichkeiten an. Z.B. kann man das Verfahren so lange laufen lassen, bis die Segmentierung nur noch aus einer festgelegten Anzahl an Clustern besteht. Will man die Anzahl der Cluster nicht explizit festlegen, kann man auch eine Schranke T merge bestimmen. Das Verfahren bricht ab, wenn der aktuelle minimale Kantenfehler T merge überschreitet. Man erhält somit eine optimale Segmentierung abhängig von einer festgelegten Anzahl an Clustern oder abhängig von T merge. Pseudocode für das hierarchische Clustering findet sich in Abbildung k-means Clustering Eine dritte Möglichkeit, das Segmentierungsproblem zu lösen wird in [Llo82] beschrieben. Gegeben ist eine Punktmenge X = {x 1,..., x n } R d und eine festgelegte Anzahl an k Clustern C i, i = 1..k. Die Idee des Algorithmus besteht darin, anfangs willkürlich Cluster-Zentren X i festzulegen und dann iterativ das Optimierungsproblem E = i 1..k x j C i x j X i 2 min zu lösen. Das Verfahren gliedert sich in die Phasen Partitionieren und Aktualisieren der Cluster-Zentren. Während des Partitionierens wird jedes Element dem jeweils ähnlichsten Cluster zugeordnet. Der ähnlichste Cluster C xj eines Elementes x j ist definiert durch C xj = argmin i x j X i 2.

33 4.3. SEGMENTIERUNGSVERFAHREN FÜR PUNKTMENGEN 25 Container clustercont; Container edgescont; for every Element x{ Cluster c = new Cluster(); c.addelement(x); clustercont.addcluster(c); } for every Cluster-Pair (C_i,C_j){ Edge e = new Edge(C_i,C_j); e.edgeerror = computeedgeerror(e); edgescont.addedge(e); } do{ Edge minedge = edgescont[0]; float minedgeerror = edgescont[0].edgeerror; for every edge e{ if(e.edgeerror < minedgeerror){ minedgeerror = e.edgeerror; minedge = e; } } Cluster newcl = mergeclusters(minedge.cluster1,minedge.cluster2); clustercont.removecluster(minedge.cluster1); clustercont.removecluster(minedge.cluster2); clustercont.addcluster(newcluster); newcl.computeclustercenter(); updateedges(); }while(clustercont.size > nrdesiredclusters minedgeerror > Tmerge); Abbildung 4.5: Pseudocode für hierarchisches Clustering.

34 26 4. SEGMENTIERUNG Das Ergebnis ist eine Segmentierung bestehend aus k sich nicht überlappender Regionen. In der zweiten Phase werden die Cluster-Zentren so aktualisiert, dass diese dem innersten Punkt eines jeden Clusters entsprechen. Dazu berechnet man den Mittelpunkt aus allen Elementen eines Clusters. Diese Phasen werden nun abwechselnd wiederholt (entspricht einer Iteration). In der ersten Phase werden die Cluster optimal an die Cluster-Zentren angepasst, während in der zweiten Phase die Zentren an die Cluster angepasst werden. Dadurch wird im Gesamtprozess der Segmentierung dessen Gesamtfehler E minimiert. Der Algorithmus konvergiert für konvexe Funktionen in einer endlichen Anzahl an Iterationen. 4.4 Segmentierungsverfahren für polygonale Netze Bei der Segmentierung polygonaler Netze bzw. dynamischer 3D-Modelle muss das Optimierungsproblem für eine Menge von Facetten gelöst werden. Dabei macht es keinen Unterschied, ob ein statisches oder dynamisches 3D-Modell vorliegt, so lange die Segmentierung selbst statisch bleibt. Schließlich bleiben beim dynamischen 3D-Modell alle Nachbarschaftsbeziehungen zwischen Facetten unverändert. Der Unterschied wird durch das Fehlermaß bestimmt. An dieser Stelle besitzen dynamische Modelle die Zeit als zusätzliches Attribut. Die vorgestellten Segmentierungsverfahren gruppieren Punktmengen. Eine Facette stellt aber ein viel komplexeres Gebilde dar. Möchte man Facetten gruppieren, muss man die Beschaffenheit einer Facette als d-dimensionalen Punkt ausdrücken. Eine Facette weist verschiedene Merkmale auf, die abhängig vom Segmentierungsziel dafür genutzt werden können (z.b. Facetten-Mittelpunkte und Normalen). Bei der Segmentierung wird somit der Wertebereich der Merkmale (der so genannte Merkmalsraum) unterteilt. Daraus ergibt sich ein weiteres Problem. Das Segmentierungsverfahren betrachtet d-dimensionale Elemente in einem d-dimensionalen Raum. Für polygonale Netze bedeutet dies, es werden Facetten als 3D-Elemente in 3D-Raum betrachtet. Ein polygonales Netz repräsentiert aber kein Volumen, sondern die Oberfläche eines Objektes. Dies spielt für die Ausbildung der Cluster eine wichtige Rolle. Für die meisten Segmentierungsanwendungen sind Cluster, die topologisch einer Scheibe oder einem offenen Zylinder entsprechen, wünschenswert. Würde man den Merkmalsraum ungeachtet dieses Punktes unterteilen, kann es zu Clustern kommen, die aus mehreren Teilen bestehen bzw. zersplittert sind. Dieses Problem ist in Abbildung 4.6 illustriert. Abbildung 4.6: Von links nach rechts: x- und z-dimension des 3D-Merkmalsraums der Facettenmittelpunkte, Unterteilung des Merkmalsraums, Unerwünschte Segmentierung, weil der rote Cluster aus zwei Teilen besteht, erwünschte Segmentierung mit Scheiben- bzw. Zylinderförmigen Clustern. Nachdem generelle Unterschiede zum Segmentieren polygonaler Netze geklärt wurden, wird im Folgenden noch einmal auf jedes Segmentierungsverfahren einzeln eingegangen.

35 4.4. SEGMENTIERUNGSVERFAHREN FÜR POLYGONALE NETZE Mean-Shifting Das Mean-Shifting arbeitet generell auf Punktmengen X = {x 1,..., x n } R d. Zum Gruppieren von Facetten werden nun deren Merkmale als d-dimensionale Punkte betrachtet. Möchte man beispielsweise nahe beieinander liegende Facetten gruppieren, kann man deren Mittelpunkte als 3D-Punkte betrachten. Das Segmentierungsverfahren arbeitet dann wie bereits beschrieben. In [JT05] werden Rotationssequenzen von Facetten als Punkte der Dimension 9S betrachtet. S ist die Anzahl der Zeitschritte der Animation. Da 3 3 Rotationsmatrizen miteinander verglichen werden, muss S mit neun multipliziert werden. Die Rotationsmatrizen werden dabei jeweils in einen 9-dimensionalen Vektor umgewandelt. Dies ist zulässig, da die Frobenius-Norm zum Berechnen von Matrixabständen mit der normalen Vektor-Norm identisch ist. Am Beispiel der Rotationssequenzen lässt sich noch einmal das Problem mit der Unterteilung des Merkmalsraumes schildern. Angenommen, das animierte 3D-Modell eines Menschen wäre symmetrisch. Dies ist beim Modellieren von Charakteren eine gängige Methode, um Arbeit zu sparen. Weiterhin hat der rechte Arm die exakt gleiche Bewegung wie der linke Arm. Das Ergebnis des Mean-Shift-Verfahrens wäre eine Zuweisung aller Facetten des rechten und linken Arms zum gleichen Cluster. Unter Umständen kann dies für die Nutzung der Segmentierungsergebnisse ungünstig sein. Trotz dessen ist das genannte Beispiel für Rotationssequenzen sehr unwahrscheinlich. Das Modell ist zwar symmetrisch, natürliche Bewegungen aber nicht. Möchte man das Mean-Shifting aber in Verbindung mit anderen Fehlermaßen nutzen, sollte man sich dessen bewusst sein. Ein weitere Eigenschaft, die mit dem eben beschriebenen Problem zusammenhängt, ist das Auftreten zersplitterter Cluster (siehe Abbildung 4.7). Dies tritt meist im Grenzbereich zwischen zwei Clustern auf. Grund dafür ist, dass z.b. die Rotationssequenzen von Facetten im Grenzbereich zu beiden Clustern einen sehr ähnlichen Fehler aufweisen. Dadurch ist eine Cluster-Zugehörigkeit weniger eindeutig. Eine geringe Änderung des Fehlers kann also ein Wechseln des Clusters zur Folge haben. Auch dies sollte bei der Wahl des Segmentierungsverfahrens berücksichtigt werden. Abbildung 4.7: Zersplitterte Cluster durch ähnliche Fehler in Grenzbereichen zwischen Clustern (Abbildung aus [JT05]) Hierarchisches Clustering Das Problem, den Merkmalsraum mit Berücksichtigung der Clusterform zu unterteilen, kann beim hierarchischen Clustering einfach gelöst werden. Zunächst werden wieder Merkmale von Facetten als die zu unterteilende Punktemenge betrachtet. Statt nun den kompletten Cluster-Graphen zu berechnen, sind Kanten nur zwischen benachbarten Facetten/Clustern gestattet (Abbildung 4.8). Dadurch ist garantiert, dass ein Cluster immer aus einem Stück besteht, weil nur benachbarte Facetten/Cluster als Verschmelzungs- Kandidat bereit stehen. Vorteil dieser Regelung ist eine Beschleunigung des Verfahrens. Schließlich müssen wesentlich weniger Kantenfehler berechnet werden, was die Komplexität der Hierarchie einschränkt. Einen Nachteil hat dieses Verfahren. Da Informationen über die Nachbarschaften von Facetten notwendig sind, beschränkt sich das Verfahren auf mannigfaltige 3D-Modelle. Ohne diese Beschränkung müsste der

36 28 4. SEGMENTIERUNG Abbildung 4.8: Links: Ausschnitt aus einem 3D-Modell, Mitte: kompletter Cluster-Graph, rechts: Cluster-Graph basierend auf Facetten-Nachbarschaften. komplette Cluster-Graph berechnet werden und es kann zu zersplitterten Clustern kommen Der Region-Growing-Algorithmus Der Region-Growing-Algorithmus basiert auf dem k-means Clustering. Das Problem der zersplitterten Cluster durch naives Unterteilen des Merkmalsraumes tritt auch beim k-means Clustering auf. Und zwar in der Partitionierungs-Phase: Man würde also zu Beginn zufällig Werte für die Cluster-Zentren festlegen und dann alle Facetten dem jeweils nächsten Cluster-Zentrum zuweisen. Dabei spielt es keine Rolle, wie Facetten miteinander verbunden sind. Um das Problem zu lösen, wird die Partitionierungs- Phase erweitert um das so genannte Region-Growing. Der Region-Growing-Algorithmus für polygonale Modelle wird in den folgenden Abschnitten detailliert beschrieben Initialisierung der Saatpunkte Zu Beginn werden so genannte Saatpunkte verteilt, aus denen im Verlauf des Region-Growings Cluster entstehen sollen. Ein Saatpunkt ist durch eine Facette repräsentiert, wobei jeder Cluster einen Saatpunkt zugewiesen bekommt. Die Saatpunkt-Facette ist auch jeweils das erste Element des Clusters. Weiterhin stellt diese auch das Referenzobjekt des jeweiligen Clusters dar. Je nach gewählter Metrik werden die entsprechenden Merkmale der Facette als Referenzobjekt genutzt (z.b. Rotationssequenzen). Zum Verteilen der Saatpunkte über das 3D-Modell gibt es verschiedene Möglichkeiten. Eine einfache Variante, automatisch Saatpunkte festzulegen, ist das zufällige Verteilen von n Saatpunkten über das 3D-Modell. n ist die Anzahl der Cluster, welche vom Nutzer bestimmt werden muss. Nicht automatisch, aber sehr effektiv ist das Festlegen von Saatpunkten durch den Nutzer. Dieser erkennt intuitiv einzelne Körperteile und kann somit sehr einfach und schnell die notwendigen Facetten selektieren. Auf diese Art und Weise wird auch automatisch die Anzahl der notwendigen Cluster bestimmt. Wichtig ist, das selbstständige Festlegen von Saatpunkten nicht mit dem selbstständigen Festlegen von Referenzobjekten zu verwechseln. Die Referenzobjekte werden durch das Festlegen der Saatpunkte nur indirekt bestimmt. Im weiteren Verlauf des Algorithmus werden die Referenzobjekte automatisch aktualisiert. Abbildung 4.9 verbildlicht noch einmal den Unterschied zwischen zufälliger und manueller Saatpunkt-Festlegung, wobei jede farbige Facette einen Saatpunkt repräsentiert. In der linken Abbildung verteilen sich die Saatpunkte willkürlich. In der rechten Abbildung dagegen ist von Hand für jedes Körperteil ein Saatpunkt gesetzt worden Region-Growing Beginnend von den Saatpunkten lässt man nun die Cluster wachsen. Dazu betrachtet man alle Facetten, die an die aktuellen Cluster angrenzen. Diese sind potentielle Kandidaten, die als nächstes einem Cluster zugewiesen werden können. Für diese Facetten berechnet man den Fehler E(F j, ˆR i ) von der Facette zum

37 4.4. SEGMENTIERUNGSVERFAHREN FÜR POLYGONALE NETZE 29 Abbildung 4.9: Links: zufällige Saatpunkt-Verteilung, rechts: manuell gesetzte Saatpunkte. angrenzenden Cluster. ˆRi ist das Referenzobjekt des jeweiligen Clusters, abhängig von der gewählten Metrik. Die Facetten fügt man einer Warteschlange hinzu. Anfangs besteht diese Warteschlange aus den angrenzenden Facetten der Saatpunkt-Facetten. Die Warteschlange ist nach dem Fehler sortiert. Ein Cluster wächst, indem die Facette mit dem geringsten Fehler dem Cluster zugeordnet wird, zu dem sie angrenzend ist. Weiterhin wird diese Facette aus der Warteschlange entfernt. Dadurch entstehen eine neue Clustergrenze und somit auch neue Kandidaten, zu denen nun wieder der Fehler berechnet wird. Diese Facetten werden wieder der Warteschlange hinzugefügt. Auf diese Weise wird nach und nach die Warteschlange mit allen Facetten gefüllt und schrittweise wieder geleert. Abbildung 4.10 illustriert die ersten Schritte des Verfahrens. Durch das Zuweisen benachbarter Facetten ist garantiert, dass der Cluster aus einem Stück ist. Dies spart natürlich auch wieder Rechenzeit, weil der Fehler für weniger Facetten berechnet werden muss. Auch hier ist die Beschränkung auf mannigfaltige Modelle der Preis dafür. Abbildung 4.10: Von links nach rechts: Speichern der ersten Grenzfacetten in nach Fehler geordnete Warteschlange, Zuweisung der Facette mit niedrigstem Fehler zum Cluster, Hinzufügen neuer Grenzfacetten zur Warteschlange und Zuweisung der nächsten Facetten zu Cluster. Dadurch, dass aus der Warteschlange immer die Facette mit dem geringsten Fehler als nächstes zugewiesen wird, ist am Ende der Region-Growing-Phase jede Facette annähernd dem Cluster zugeordnet, zu dem sie insgesamt den geringsten Fehler aufweist. Der Gesamtfehler der Segmentierung wird somit für die festgelegten Referenzobjekte minimal gehalten. Abbildung 4.11 zeigt das komplette Region-Growing an einem Beispiel Erweitertes Region-Growing Abhängig vom Datensatz und der verwendeten Metrik kann der greedy-artige Ansatz, immer die Facette mit dem minimalen Fehler als nächstes zu betrachten, zu unerwünschten Resultaten führen. Die Cluster wachsen dann unkontrolliert und es bilden sich Zweige aus. Ein Ansatz, das Region-Growing besser

38 30 4. SEGMENTIERUNG Abbildung 4.11: Von links nach rechts: Saatpunkte, Zwischenstufen des Region-Growings, Ende des Region-Growings. kontrollieren zu können, wurde mit dem so genannten t-flooding in [YGZS05] vorgestellt. Dabei wird das Wachstum eines Clusters durch eine Wachstumsgeschwindigkeit gesteuert, um besser ausbalancierte Cluster zu erhalten. Im Folgenden wird noch eine weitere Möglichkeit beschrieben. Man kann Wachstumsfehler korrigieren, indem man das erneute Zuweisen von Facetten gestattet, die bereits einem Cluster zugewiesen wurden. Dies soll genau dann möglich sein, wenn die Facette zu dem neuen Cluster einen geringeren Fehler aufweist als zu dem bereits zugewiesenen. Dieser Fall tritt auf, wenn sich zwei Cluster beim Wachsen treffen. Es kann z.b. sein, dass Facette F zuerst Cluster C 1 zugewiesen wurde, weil dieser schneller wachsen konnte. Ein anderer Cluster C 2, zu dem F ähnlicher ist, wuchs aber erst später in die Region von F. Zu diesem Zeitpunkt war diese aber schon vergeben. In Abbildung 4.12 ist dies noch einmal schematisch veranschaulicht. Damit dieses Verfahren ordnungsgemäß arbeitet, ist ein weitestgehend kompaktes Wachstum der Cluster allerdings notwendig. Würde der Cluster z.b. in langen Ästen wachsen, kann es dazu kommen, dass andere Cluster dadurch geteilt, umringt oder gar verschluckt werden. Trotz dessen lässt sich die Qualität der Segmentierung mit diesem Verfahren leicht verbessern. Testergebnisse werden im Kapitel 7 vorgestellt. Abbildung 4.12: Erneutes Zuweisen von bereits zugewiesenen Facetten Referenzaktualisierung / Neupositionierung der Saatpunkte Im Prinzip erhält man am Ende der Region-Growing-Phase bereits eine fertige Segmentierung. Schließlich ist jede Facette einem Cluster zugeordnet. Allerdings ist die Segmentierungs-Qualität in den meisten Fällen nicht ausreichend. Grund dafür ist, dass die Referenzobjekte weitestgehend willkürlich festgelegt wurden. Man möchte nun den Gesamtfehler durch Anpassen der Referenzobjekte an die Segmentierung optimieren. Dafür sind zwei Schritte notwendig. Erstens werden die Referenzobjekte für jeden Cluster und jeden Zeitschritt aktualisiert. Und zwar so, dass die neuen Referenzobjekte minimalen Fehler zum ihrem aktuellen Cluster haben bzw. der Cluster-

39 4.4. SEGMENTIERUNGSVERFAHREN FÜR POLYGONALE NETZE 31 Fehler E(C i, ˆR i ) minimiert wird. Wie die Referenzobjekte konkret berechnet werden, ist abhängig von der verwendeten Metrik und wurde bereits in Abschnitt 4.2 behandelt. Nun hat man zwar neue Referenzobjekte gewonnen, die Start- bzw. Saatpunkte für das nächste Region- Growing sind aber noch gleich. Diese werden ebenfalls an die neuen Referenzobjekte angepasst. Ziel ist es, denn Saatpunkt so zu reinitialisieren, dass dieser für das nächste Region-Growing einen besseren Startpunkt darstellt. Dafür berechnet man zuerst für jede Facette eines Clusters den Fehler zum neuen Referenzobjekt. Der neue Saatpunkt wird die Facette, die den geringsten Fehler aufweist. Abbildung 4.13 zeigt dieses Verfahren an einem Schema. Zum besseren Verständnis wurde für dieses Beispiel die Metrik verwendet, die den Abstand zwischen Facetten und Cluster-Schwerpunkten betrachtet. Abbildung 4.13: Links: Segmentierung des letzten Region-Growings, Mitte: neues Referenzobjekt (blau) und Neupositionierung des Saatpunktes, rechts: neues Region-Growing mit besser gewachsenem Cluster. Allerdings kann es auch an dieser Stelle ungünstig sein, einfach blind das Minimum als neuen Saatpunkt zu wählen. Das Folgende schematische Beispiel soll dies veranschaulichen. Links in Abbildung 4.14 ist der Querschnitt eines Clusters mit seinem Referenzobjekt (roter Schwerpunkt) dargestellt. Der Anschaulichkeit halber dient für das Beispiel die Metrik, die den euklidischen Abstand zwischen Facetten und Cluster-Schwerpunkten betrachtet. Die Facette mit dem geringsten Abstand (blauer Pfeil) ist in diesem Falle zufällig eine weit am Rand liegende Facette des Clusters, weil das Objekt stark verrauscht ist. Der neue Saatpunkt würde also an den Rand des Clusters verschoben werden, obwohl ein mittig platzierter Saatpunkt (grüner Pfeil) einen viel besseren Ausgangspunkt für das nächste Region-Growing darstellt. Abbildung 4.14: Links: Querschnitt durch einen Cluster, Mitte: Fehler der einzelnen Facetten, rechts: gefilterte Facetten-Fehler. Um den Einfluss derartiger Außenseiter bzw. lokaler Minima zu minimieren, kann man einen Tiefpass- Filter direkt auf die Facetten-Fehler anwenden, so dass ein neues Minimum entsteht. In Abbildung 4.14 Mitte sieht man die Facetten-Fehler entlang des grauen Pfeils der linken Abbildung aufgetragen. Die rechte Abbildung zeigt nun die korrigierten bzw. gefilterten Fehler. Die grüne Facette ist nun das Mini-

40 32 4. SEGMENTIERUNG mum. Der schlechte Einfluss des blauen Außenseiters wurde entfernt. Der Filter kann z.b. so funktionieren, dass für jede Facette eines Clusters der eigene Fehler und die Fehler der angrenzenden Facetten gemittelt werden und dieser durch den alten Fehler ersetzt wird. Die Fehlerfunktion wird also geglättet, wodurch die Einwirkung von Außenseitern abgeschwächt wird. Die Stärke der Filterung kann z.b. durch Wiederholung der Mittelung erhöht werden. Dies ist meist auch nötig, abhängig von der Anzahl der Facetten des Clusters. Z.B. wird das einmalige Anwenden der Mittelung bei einem kleinen Cluster mit 10 Facetten wesentlich größere Auswirkungen haben als bei einem Cluster mit 1000 Facetten. Weitere Methoden der Filtertheorie sind denkbar, z.b. gewichtete Mittelung oder ein Median-Filter. Testergebnisse zu dem modifizierten Verfahren der Neupositionierung der Saatpunkte werden ebenfalls im Kapitel 7 vorgestellt Iteration und Konvergenz Mit aktualisierten Referenzobjekten und Saatpunkten lässt sich nun wieder Phase eins und zwei ausführen, gefolgt von weiteren Iterationen. Dadurch, dass abwechselnd der Gesamtfehler einmal durch die Segmentierung und einmal durch die Referenzobjekte optimiert wird, wird der Gesamtfehler von Iteration zu Iteration kleiner, bis er in eine stationäre Phase eintritt und konvergiert (Abbildung 4.15, links). Anhand der Saatpunkte kann man beobachten, dass diese sich mit der Zeit an einem festen Punkt ansiedeln (siehe Abbildung 4.16). Abbildung 4.15: Links: idealer Verlauf des Gesamtfehlers während der Iteration, rechts: Probleme bei der Iteration. Abbildung 4.16: Von links nach rechts: Saatpunkte zu Beginn, nach 3, 10 und 20 Iterationen. In der Praxis ist dieser Verlauf allerdings nicht immer in dieser idealen Form gegeben. Abbildung 4.15 rechts dient als Gegenbeispiel. Dargestellt ist ebenfalls der Gesamtfehler zu jeder Iteration. Die Konvergenz insgesamt ist erkennbar, kann aber nicht garantiert werden. Was auch zu beobachten ist, ist ein Anstieg des Fehlers an mehreren Stellen. Der Grund dafür liegt hauptsächlich am Tunneling, worauf im nächsten Abschnitt noch eingegangen werden soll. Weiterhin fällt der Gesamtfehler nicht besonders

41 4.4. SEGMENTIERUNGSVERFAHREN FÜR POLYGONALE NETZE 33 gleichmäßig ab. Einfluss darauf hat die Neupositionierung der Saatpunkte. Dieser Vorgang ist ein kritischer Punkt im Segmentierungsalgorithmus, denn die Ausbildung eines Clusters hängt nicht nur von den Referenzobjekten ab. Bedingt durch das Region-Growing spielt auch die Position des Saatpunktes eine wichtige Rolle. Das Neusetzen eines Saatpunktes an eine andere bzw. falsche Stelle kann eine stark veränderte bzw. verschlechterte Segmentierung zur Folge haben. Dadurch kann es zu Situationen kommen, dass der Gesamtfehler während der Iteration nur sehr schwach abfällt oder sogar wieder höher wird. Wie stark diese Probleme auftreten, hängt vom verwendeten Datensatz und der Metrik ab. Durch Nutzung des vorgestellten Filterverfahrens beim Reinitialisieren der Saatpunkte können diese Probleme abgeschwächt werden (siehe Kapitel 7). Zum Erkennen der Konvergenz bieten sich folgende Abbruchkriterien an. Man betrachtet den Gesamtfehler der Segmentierung nach jeder Iteration und inkrementiert eine Zählervariable immer dann, wenn dieser im Vergleich zum bisherigen Gesamt-Minimum höher ist. Übersteigt diese Variable einen festgelegten Wert, z.b. zehn, dann endet die Iteration. Entsteht ein neues Minimum, wird der Zähler wieder auf Null gesetzt. Weiterhin kann man die Position der Saatpunkte von einer Iteration zur nächsten vergleichen. Ändern sich diese innerhalb einer bestimmten Anzahl an Iterationen nicht mehr, kann der Algorithmus ebenfalls abgebrochen werden. Natürlich ist es auch möglich, nach jeder Iteration die Segmentierung zu begutachten und als Nutzer selbst zu entscheiden, wann nicht mehr weiter iteriert werden soll. Die automatische Iteration funktioniert aber in den meisten Fällen Tunneling Für einige Cluster kann es während der Iteration dazu kommen, dass dessen Gesamtfehler sich in einem lokalen Minimum befindet. Dies kann dadurch zustande kommen, dass ein Cluster von anderen umringt wird und dieser somit nicht weiter wachsen kann. Um derartige Situationen zu umgehen, wendet man das so genannte Tunneling an. Ob Tunneling angewendet werden soll, wird immer am Ende von Phase zwei getestet. Fällt der Gesamtfehler des Clusters mit dem geringsten Gesamtfehler unter eine Schranke T tunnel, dann kann man davon ausgehen, dass es sich um das eben beschriebene Phänomen handelt. In diesem Fall wird der Cluster entfernt und dessen neuer Saatpunkt wird die Facette mit dem aktuell höchsten Fehler. Für die darauf folgende Region-Growing-Phase ist der Cluster somit an eine Stelle gesetzt worden, wo er mehr gebraucht wird (siehe Abbildung 4.17). Abbildung 4.17: Von links nach rechts: schlecht platzierter grüner Cluster, Tunneling, Ende der nächsten Region-Growing-Phase. Die Schranke T tunnel ist definiert durch

42 34 4. SEGMENTIERUNG T tunnel = tunnelt hreshold E(M, ˆR), n wobei tunnelt hreshold eine vom Nutzer definierte Variable ist. Werte zwischen 0.05 und 0.1 haben sich für die meisten Fälle als sinnvoll erwiesen. n ist die Anzahl der Cluster. Wie bereits im vorhergehenden Abschnitt erwähnt, kann der Gesamtfehler einer Iteration durch das Tunneling ansteigen. Dies hängt damit zusammen, dass der getunnelte Cluster sich erst wieder innerhalb einiger Iterationen an seiner neuen Position ansiedeln muss. Dadurch sind meist mehr Iterationen notwendig als ohne Tunneling. Dies wird aber durch einen meist geringeren Gesamtfehler am Ende und stabilerer Konvergenz wieder wett gemacht. Dies soll ebenfalls am Beispiel gezeigt werden. Abbildung 4.18 zeigt den Verlauf für zwei Modelle jeweils mit (rote Punkte, tunnelt hreshold = 0.05) und ohne Tunneling (grüne Linie). Erkennbar sind ein geringerer Gesamtfehler und ein saubererer Verlauf der Funktion. In der linken Abbildung kann man auch gut die typischen Sprünge des Gesamtfehlers bedingt durch das Tunneling erkennen. Abbildung 4.18: Links: Segmentierung des Modells horsegallop mit 30 Clustern und der Rotationssequenz-Metrik, rechts: Modell lionposes mit 20 Clustern und der Distanz- Abweichungs-Metrik. Anzumerken sei noch, dass durch das Tunneling schlecht platzierte Saatpunkte an einen anderen Platz teleportiert werden. Werden die Saatpunkte nun vom Nutzer bestimmt, bietet es sich an, T niedriger als gewöhnlich zu setzen, da der Nutzer die Saatpunkte ja bewusst an bestimmte Stellen setzt. 4.5 Nachbearbeitung Je komplexer das Modell und je weniger eindeutig die Animation ist, desto ungenauer können die Ergebnisse des Segmentierungsalgorithmus ausfallen. Die nächsten zwei Abschnitte zeigen Möglichkeiten auf, um die Segmentierung nachträglich zu bearbeiten. Das erste Verfahren säubert die Grenzen zwischen Clustern. In Abschnitt werden Verfahren vorgestellt, überflüssige Cluster zu entfernen bzw. diese mit anderen zu verschmelzen Verfeinerung der Cluster-Grenzen Bei Dreiecksnetzen kann es zu ausgefransten bzw. gezackten Clustergrenzen kommen. Ein einfaches, Facetten-basiertes Verfahren kann diesen Umstand beheben. Für jede Facette betrachtet man deren Nachbarfacetten und zählt, wie oft welcher Cluster unter den Nachbarn vertreten ist. Abbildung 4.19 zeigt auf, welche Fälle auftreten können bzw. welche Fälle zum Säubern der Clustergrenzen relevant sind. Die betrachtete Facette F ist die in der Mitte bei den Abbildungen.

43 4.5. NACHBEARBEITUNG 35 Abbildung 4.19: Von links nach rechts: Fall 1, Fall 2a, Fall 2b, Fall 3. Fall 1: Die aktuell betrachtete Facette F mit Cluster C p ist umringt von Facetten, die alle demselben Cluster C n angehören. Somit bildet die aktuell betrachtete Facette einen Cluster, der nur aus einer Facette besteht. In diesem Fall wird F von den angrenzenden verschluckt, indem man beide Cluster zu einem verschmilzt. Fall 2: Die aktuell betrachtete Facette F mit Cluster C p ist umringt von zwei Facetten vom Cluster C m und einer Facette vom Cluster C n, wobei C p = C n erlaubt ist (Fall 2b). In diesem Fall wird F mit C m verschmolzen. Fall 3: Die aktuell betrachtete Facette F mit Cluster C p ist umringt von Facetten mit voneinander verschiedenen Clustern C m, C n, C o (m n o). Da man in diesem Fall keine Entscheidung durch die Topologie des Modells bzw. der Cluster treffen kann, greift man auf die Berechnung eines Fehlers zurück. Dieser Fall soll hier aber nicht berücksichtigt werden, das dieses Verfahren ausschließlich auf Nachbarschaftsbeziehungen basiert. Im nächsten Abschnitt wird erläutert, wie dieser Fall gehandhabt werden kann. In Abbildung 4.20 sieht man den Vergleich einer Segmentierung mit und ohne Verfeinerung der Clustergrenzen. Abbildung 4.20: Ohne (links) und mit Grenzbehandlung (rechts) Verschmelzen von Clustern Eine unschöne Eigenschaft der Segmentierungs-Algorithmen ist, dass an manchen Stellen Cluster entstehen, wo sie unerwünscht sind. Im Gegensatz dazu entsteht an Stellen, wo unbedingt mehrere Cluster notwendig wären, lediglich ein Cluster (siehe Abbildung 4.21). Derartige Segmentierungen sind kein guter Ausgangspunkt für eine Skelett-Extraktion. In Kombination mit einer Cluster-Verschmelzungs-Prozedur kann man die Segmentierung verbessern. Zuerst müssen mit einem Segmentierungsverfahren überall Cluster erzeugt werden, wo sie nötig sind. Um dies zu erreichen, kann man übersegmentieren. Man wählt also eine Cluster-Anzahl, die über der Anzahl der Körperteile liegt. Im nachfolgenden Verschmelzungsschritt werden dann die überflüssigen

44 36 4. SEGMENTIERUNG Abbildung 4.21: Links: unerwünschte Cluster bzw. zu wenig Cluster am linken Hinterbein, rechts: wünschenswerte Segmentierung. Cluster wieder entfernt. Die notwendigen bleiben aber erhalten. Durch dieses Vorgehen wird auch indirekt die Bestimmung der Anzahl der Cluster automatisiert. Der Nutzer muss lediglich sehr grob schätzen, wie viele Cluster benötigt werden. Dann addiert man noch einige Cluster. Die Überflüssigen werden in der Verschmelzungsprozedur wieder herausgefiltert. Im Folgenden soll kurz auf zwei Möglichkeiten eingegangen werden, die unabhängig voneinander eingesetzt werden können Hierarchisches Clustering Als automatisches Verfahren, Cluster zu verschmelzen, bietet sich das hierarchische Clustering an. Grund dafür ist, dass man jede beliebige Segmentierung als Einstiegspunkt für das hierarchische Clustering betrachten kann. Dazu betrachtet man die aktuelle Segmentierung als Graph, dessen Knoten die Cluster mit ihren Referenzobjekten sind. Kanten bestehen zwischen benachbarten Clustern (siehe Abbildung 4.22). Danach startet man mit dem Verschmelzen des Clusterpaars C i, C j mit dem geringsten Kantenfehler E( ˆR i, ˆR j ). Der restliche Verlauf des Verfahrens entspricht exakt dem des hierarchischen Clusterings. Abbildung 4.22: Verschmelzung der Cluster durch hierarchisches Clustering Verschmelzung durch den Nutzer Letztendlich bietet es sich auch hier an, dem Nutzer die Möglichkeit zu geben, einzelne Cluster per Hand zu verschmelzen. Dies kann schnell und einfach per Selektion vonstatten gehen. Für kleine Korrekturen in der Segmentierung hat das manuelle Verfahren den Vorteil, dass keine Parameter für das hierarchische Clustering eingestellt werden müssen. Der Nutzer kann intuitiv die richtigen Cluster miteinander verschmelzen. Gerade bei wenig eindeutigen Animationen, wo die Entscheidung zum Verschmelzen für den Rechner schwer zu treffen ist, kann der Mensch eventuell schneller und besser entscheiden.

45 37 5 Skelett-Extraktion Ist ein dynamisches 3D-Modell in Körperteile zerlegt, so hat man damit die notwendigen Informationen für die Skelett-Extraktion gewonnen. Wie bereits schon im vorhergehenden Kapitel erwähnt, hängt die Genauigkeit der Segmentierung stark von der Beschaffenheit der Animation ab. Hat man beispielsweise das dynamische 3D-Modell eines laufenden Menschen vorliegen, dessen Arme sich aber nicht bewegen, dann werden mit den vorgestellten Metriken keine Cluster an den Armen entstehen. Grund dafür ist, dass die Starrheit eines Teilobjekts ausschlaggebender Faktor zur Segmentierung ist. Die Qualität des Skelettes wiederum ist stark abhängig von der Segmentierungsqualität. Wo keine Cluster entstehen, können auch keine Joints bzw. Bones extrahiert werden. In [MWO03] finden sich folgende Anforderungen, denen ein Skelett genügen sollte. Entsprechend können Anforderungen an die Segmentierung definiert werden, damit ein gutes Skelett extrahiert werden kann. 1. Ein Skelett muss die Morphologie des Modells erhalten. Dabei geht es um die korrekte Verknüpfung/Verzweigung von Gelenken in einer hierarchischen Struktur. Beispielsweise sollte ein Fußgelenk nicht mit einem Handgelenk verbunden sein. Hierbei hilft die Segmentierungsinformation bzw. die Nachbarschaftsbeziehungen zwischen Clustern. Gelenke dürfen nur miteinander verbunden werden, wenn die entsprechenden Cluster benachbart sind. Um dies zu gewährleisten basiert der Algorithmus zur Berechnung der Hierarchie der Gelenke auf diesen Nachbarschaftsbeziehungen. Eine weitere wichtige Rolle spielt die Wurzel in der Hierarchie des Skelettes. Diese sollte möglichst zentral im Skelett positioniert sein. Somit können Gliedmaßen von der Wurzel ausgehend verzweigen. Die Wurzel spielt auch für die Animation des Skelettes eine wichtige Rolle. Eine Bewegung der Wurzel sollte das gesamte Skelett sinnvoll bewegen. Eine Bewegung der Hand dagegen sollte natürlich nur die Finger beeinflussen. 2. Knochen und Gelenke sollten immer in der Mitte von Körperteilen positioniert sein. Um dies zu gewährleisten sollten die Grenzen zwischen zwei Clustern nach Möglichkeit ringförmig sein. Dabei sollen diese Grenzen immer nur von zwei Clustern gebildet werden. Ist diese Voraussetzung gegeben, können im Schwerpunkt dieser Grenzen Joints platziert werden (siehe Abschnitt Erkennen von Joints). Wären die Grenzen linienförmig, könnten die vorgestellten Verfahren für das Erkennen von Joints nur bedingt Anwendung finden. Die Cluster selbst sollten zylinderförmig sein, denn dann kann ein Knochen in diesem liegen. Dies wird durch die Metriken zur Körperteil-Erkennung größtenteils gewährleistet, weil alle Facetten eines Körperteils z.b. mit ähnlichen Rotationssequenzen einen zylinderförmigen Cluster ausbilden. 3. Das berechnete Skelett sollte invariant unter affinen Transformationen des 3D-Objekts sein. Dies ist bereits durch die Segmentierung gewährleistet, da diese auch invariant unter affinen Transformationen ist. Für die Segmentierungskriterien spielt es keine Rolle, wie groß das Modell ist, an welcher Stelle im Koordinatensystem es positioniert ist und wie es ausgerichtet ist. Die Fehlermaße berechnen Abstände immer relativ zu einem Bezugsobjekt. Auf den Aufbau eines Skeletts wurde bereits eingegangen. Im Folgenden werden Verfahren zum Erkennen von Joints vorgestellt. Auf Basis dessen folgt die Verbindung der Joints zu einer Hierarchie.

46 38 5. SKELETT-EXTRAKTION 5.1 Erkennen von Joints Für das Erkennen von Gelenken werden verschiedene Möglichkeiten genutzt. Aus Kombination dieser lässt sich ein Skelett mit allen notwendigen Joints berechnen. Am Ende dieses Kapitels liegen die Positionen der Joints als absolute Weltkoordinaten für jeden Zeitschritt vor. Wie diese Koordinaten in relative Transformationen umgewandelt werden, wird in Kapitel 6 beschrieben Joints an Schwerpunkten von Cluster-Grenzen Joints sollten intuitiverweise an Orten platziert werden, die Gelenken entsprechen. Nun sorgt der Segmentierungsalgorithmus dafür, dass jeder Cluster einem Körperteil und somit einem Bone entspricht. Dadurch liegt es nahe, Joints zwischen zwei Clustern zu platzieren. Man bestimmt alle Facetten der zwei Cluster, die an der Grenze der beiden Cluster liegen. Aus diesen berechnet man den Schwerpunkt der Mittelpunkte der Facetten und erhält die absolute Joint-Position. Dies macht man für jeden Zeitschritt und jede vorhandene Kombination benachbarter Cluster. Auf diese Weise kann der Großteil der Joints platziert werden. Natürlich entstehen dadurch auch unerwünschte Joints. In diesem Fall muss entweder die Segmentierung optimiert werden oder die unerwünschten Joints gelöscht werden. Hat man im Idealfall ringförmige Cluster-Grenzen vorliegen, was die Segmentierung größtenteils gewährleistet, werden die Joints in die Mitte des 3D-Modells gelegt, was Anforderung Nr. 2 erfüllt. Abbildung 5.1 illustriert die Platzierung von Joints an den Schwerpunkten von Cluster-Grenzen. Abbildung 5.1: Von links nach rechts: Segmentierung, Clustergrenzen, Joints bzw. Schwerpunkte Joints an Schwerpunkten von Clustern Eine weniger intuitive, für zwei Spezialfälle aber notwendige Methode, ist die Platzierung von Joints an Schwerpunkten von Clustern. Dafür lassen sich die bereits berechneten Referenzobjekte der Cluster verwenden. 1. Vom Torso geht der Großteil der Verzweigungen zu Armen, Beinen, etc. aus. Deswegen ist es von Vorteil, hier einen zusätzlichen Joint einzufügen. Von diesem können die Verzweigungen stattfinden (siehe dazu Abbildung 5.2). Weiterhin liegt der Torso sehr zentral im 3D-Modell, so dass dieser Joint ideal als Root-Joint fungieren kann. Im Folgenden sei ein Verfahren beschrieben, automatisch den Cluster zu finden, der dem Torso am ehesten entspricht: Zuerst berechnet man den Schwerpunkt des 3D-Modells für jeden Zeitschritt. Nun vergleicht man die euklidischen Abstände aller Cluster-Schwerpunkte zum Modell-Schwerpunkt ebenfalls für jeden Zeitschritt. Der Cluster-Schwerpunkt mit dem kleinsten durchschnittlichen Abstand wird als Root-Joint festgelegt. Der zugehörige Cluster fungiert als Root- bzw. Torso-Cluster. Verformt sich das Objekt bedingt durch die Animation sehr stark, kann es vorkommen, dass der Schwerpunkt ungünstig platziert ist. Das kann zur Folge haben, das nicht der erwünschte Cluster als Torso-Cluster festgelegt

47 5.2. ERSTELLUNG DER HIERARCHIE 39 wird. In diesem Fall bleibt es dem Nutzer überlassen, den entsprechenden Cluster selbst auszuwählen. Für die meisten Fälle (Menschen, Tiere, etc.) funktioniert die automatische Methode aber sehr zuverlässig. Abbildung 5.2: Joint im Cluster-Schwerpunkt für Torso. 2. Um die Bewegung des letzten Bones/Clusters einer Gliedmaße im Skelett speichern zu können, ist es notwendig, am Ende einer Gliedmaße ebenfalls Joints zu platzieren. Zuerst müssen derartige Stellen erkannt werden. Geht man von einer sauberen Segmentierung mit ringförmigen Cluster-Grenzen aus, dann sind Cluster mit nur einem Nachbar-Cluster genau die Kandidaten für diese Joints. Abbildung 5.3 zeigt die Platzierung des zusätzlichen Joints im Cluster-Schwerpunkt. Abbildung 5.3: Links: ohne Joint, Mitte: zusätzlicher Joint im Cluster-Schwerpunkt. 5.2 Erstellung der Hierarchie Da das Hierarchisierungsverfahren auf Nachbarschaftsbeziehungen der Cluster basiert, ist es nicht für Modelle geeignet, die aus mehreren Teilen bestehen. Daraus folgt eine Beschränkung auf mannigfaltige Objekte. Man beginnt damit, einen Start-Joint festzulegen. Dieser ist gleichzeitig Root-Joint des Skelettes und entspricht somit dem Torso-Joint, wie im vorigen Abschnitt beschrieben. Weiterhin wird der zum Start-Joint entsprechende Cluster (Torso) als Root-Cluster festgelegt. Ist das Verfahren somit initialisiert, kann das rekursive Verfahren zur Erstellung der Hierarchie gestartet werden. Vom Root-Cluster ausgehend sucht der Algorithmus nach allen Nachbar-Clustern. Die Joints, welche jeweils zur Cluster-Grenze zwischen Root-Cluster und Nachbar-Cluster liegen, werden als Kind gesetzt. Für jeden Nachbar wird diese Prozedur rekursiv wiederholt, wobei bereits zugewiesene Joints kein zweites Mal als Kind gesetzt werden können. Die Rekursion bricht ab, wenn ein Cluster nur einen Nachbarn besitzt und dieser bereits genutzt wurde. Existiert noch ein Joint an einer Spitze des 3D-Modells, wird dieser noch als Kind gesetzt. Abbildung 5.4 verdeutlicht dieses Verfahren noch einmal an einen Beispiel. Die linke Abbildung zeigt

48 40 5. SKELETT-EXTRAKTION ein Mensch-Modell, welches bereits segmentiert wurde. Die Joints wurden ebenfalls schon berechnet. Ausgehend vom Root-Joint betrachtet man alle Nachbar-Cluster (helle Pfeile). In der zweiten Abbildung wurden die Joints zwischen Root-Cluster und Nachbar-Cluster verknüpft. Dieser Vorgang wiederholt sich, bis alle Joints in der Hierarchie enthalten sind. Der Leser beachte bitte die Joints an den Enden des Kopfes und der Gliedmaßen, welche der Hierarchie am Ende der Rekursion hinzugefügt werden. Abbildung 5.5 enthält Pseudocode für den Algorithmus. In computehierarchy() werden Start-Joint und Start-Cluster initialisiert. Danach wird die Funktion assignchildren(...) aufgerufen. Diese wird rekursiv ausgeführt, wenn neue Children gefunden und verknüpft wurden. Abbildung 5.4: Von links nach rechts: Start mit Root-Joint, Verknüpfung zu Nachbarn, fertige Hierarchie. computehierarchy(){ //init with root int currentjoint = skeleton.getrootjoint(); int currentcluster = rootcluster; assignchildren(currentjoint, currentcluster); } assignchildren(int currentjoint, int currentcluster) { for all neighbors n of currentcluster{ int childjoint = getjointbetweenclusters(currentcluster,n); int childcluster = n; } } //if a valid child was found, the joints can be connected if(childjoint!= currentjoint.parent && childjoint!= currentjoint){ currentjoint.addchild(childjoint); childjoint.setparent(currentjoint); //recursively connect the other joints assignchildren(childjoint, childcluster); } //add leaf-joint in the last recursion step if(neighbors.count == 1 && childjoint == currentjoint){ leafjoint = getleafjoint(n); currentjoint.addchild(leafjoint); leafjoint.setparent(currentjoint); } Abbildung 5.5: Pseudocode des Verfahrens zu Erstellung der Hierarchie.

49 41 6 Animationsübertragung Die Struktur des Skelettes ist erstellt. Bisher sind aber lediglich die absoluten Welt-Koordinaten der Joints für jeden Zeitschritt vorhanden. Die folgenden Abschnitte beschreiben, wie diese in Koordinaten relativ zum jeweiligen Parent-Joint umgerechnet werden können. Zunächst wird jedoch kurz erklärt, wie die relativen Animationsdaten beschaffen sein sollen. Erstellt man ein Skelett in einem gängigen 3D-Programm und animiert dieses später, legt man anfangs eine Default- oder auch Bind-Pose fest. Diese stellt eine Art Start-Position des Skelettes dar. Dabei wird die Position eines Joints lediglich durch die Translation relativ zum Parent-Joint beschrieben. Rotationen sind anfangs auf null gesetzt, also eine Einheits-Matrix. Bei der Animation werden hauptsächlich die Rotationen eines Bones um seinen entsprechenden Joint genutzt, um die Bewegung des Skelettes zu beschreiben. Eine Ausnahme bildet der Root-Joint, der ebenfalls verschoben werden kann, um das komplette Skelett im Raum bewegen zu können. Natürlich ist die Translation der anderen Joints auch gestattet, um z.b. Effekte wie das Strecken eines Bones zu simulieren. Ziel ist es also, aus den absoluten Koordinaten der Joints eine Default-Pose für den ersten Zeitschritt festzulegen und den Hauptteil der folgenden Animationen mit Rotationen zu beschreiben. Translationen sollen zusätzlich möglich sein, um die Joint-Position zu korrigieren, wenn allein durch die Rotation die Ideal-Position des Joints (bestimmt durch die absolute Position) nicht erreicht werden kann. 6.1 Bestimmung der Joint-Orientierungsmatrizen Bevor man für die Joints Translationen und Rotationen festlegt, müssen deren lokalen Koordinatensysteme festgelegt werden. Diese speichert man in der Orientierungsmatrix eines jeden Joints. Die Orientierungsmatrix O J = ( x J, y J, z J ) enthält drei orthogonale Vektoren, die das lokale Koordinatensystem bestimmen. Für den Root-Joint ist das, wie in Kapitel 2 bereits erwähnt, die gleiche Ausrichtung wie das Welt-Koordinatensystem. Für alle weiteren Orientierungsmatrizen sollten ihre x-achse in Richtung der Child-Joints zeigen (siehe Abbildung 6.1). Um x J von O J für einen Joint J zu bestimmen, berechnet man für alle N Child-Joints J Ci die Differenz der absoluten Joint-Positionen, mittelt diese und normiert den daraus entstandenen Vektor: x J = N i=1 (J C i,abs J abs ) N i=1 (J C i,abs J abs ) Hat ein Joint nur einen Child-Joint, zeigt die x-achse genau in Richtung des Child-Joints (in Abbildung 6.1 bei J C2 zu sehen). Die y-achse kann beliebig in der Ebene gewählt werden, die durch x J gegeben ist ( y J muss normalisiert werden). Die z-achse ergibt sich aus dem Kreuzprodukt z J = y J x J. Somit lassen sich aus den Absolut-Koordinaten der Joints alle Orientierungsmatrizen O J,W orld relativ zum Welt-Koordinatensystem berechnen. Jetzt müssen diese nur noch relativ zum Koordinatensystem des jeweiligen Parent-Joints J P bestimmt werden (Notation: O J,Local ). Dazu multipliziert man O J,W orld mit den inversen lokalen Orientierungsmatrizen des Root-Joints bis zum Parent-Joint: O J,Local = (O JP,Local) 1... (O Root,Local ) 1 O J,W orld

50 42 6. ANIMATIONSÜBERTRAGUNG Abbildung 6.1: Ausrichtung der lokalen Koordinatensysteme berechnet durch absolute Joint-Positionen. Diese Berechnung kann nur stattfinden, wenn übergeordnete Orientierungsmatrizen bereits bekannt sind. Deswegen beginnt man mit der Berechnung beim Root-Joint und verfolgt dann die Hierarchie abwärts. 6.2 Festlegen der Default-Pose Die Default-Pose wird folgendermaßen bestimmt. Allen Rotationen wird eine Einheits-Matrix zugewiesen. Für den Root-Joint sind die relativen Koordinaten für die Translation gleich den absoluten Koordinaten des Joints, weil dessen übergeordnetes Koordinatensystem gleich dem Weltkoordinatensystem ist. Somit können diese sofort übernommen werden. Um die relativen Translationen der anderen Joints zu bestimmen, verfolgt man nun die Hierarchie abwärts. Die Translation TJ 0 eines Joints J 0 zur Default-Pose bestimmt man, indem zunächst die Differenz der absoluten Koordinaten zwischen Jabs 0 und dessen Parent-Joint J P,abs 0 berechnet wird (Abbildung 6.2 links und Mitte). Dieser Vektor muss nun noch relativ zum lokalen Koordinatensystem von J P bestimmt werden. Dazu multipliziert man den Vektor mit allen inversen Orientierungsmatrizen beginnend beim Root-Joint bis zu J P (Abbildung 6.2 rechts): T 0 J = (O JP ) 1... (O Root ) 1 (J 0 abs J 0 P,abs ) 6.3 Bestimmung von Rotationen Ziel ist es, die Rotation R t J eines Bones um den Joint J = (x J, y J, z J ) für jeden Zeitschritt t relativ zur Default-Pose anzugeben. Eine Möglichkeit bietet ein Verfahren aus [Cha95]. Dabei kann durch Auswerten der Bewegung mehrerer Marker-Positionen zwischen zwei Zeitschritten eine Rotationsmatrix bestimmt werden. Die Marker-Positionen des Bones hat man durch die Facetten-Mittelpunkte des entsprechenden Clusters C gegeben. Kann man für alle Facetten des Clusters eine durchschnittliche Rotation bestimmen, hat man somit ebenfalls die Rotation des Bones bestimmt. Die Rotation R t J eines Clusters R t J = r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 um den Joint J zum Zeitpunkt t relativ zur Default-Pose lässt sich folgendermaßen ausdrücken. Für jede Facette F i C gilt, dass ihr Mittelpunkt zur Default-Pose p 0i = (x 0i, y 0i, z 0i ) multipliziert mit R t J den

51 6.3. BESTIMMUNG VON ROTATIONEN 43 Abbildung 6.2: Links und Mitte: Bestimmung der Translation von J 0 durch Differenzbildung der Absolut-Positionen von Jabs 0 und J P,abs 0, rechts: Überführung des Differenz-Vektors in das lokalen Koordinatensystem von J P. gleichen Mittelpunkt p ti = (x ti, y ti, z ti ) für den Zeitschritt t ergibt: x ti y ti z ti = r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 p ti = R t Jp 0i. Dabei muss berücksichtigt werden, dass die Rotation um J stattfindet. Die Positionen der Facetten- Mittelpunkte müssen also relativ zum lokalen Koordinatensystem von J angegeben werden. Darauf wird im Folgenden noch eingegangen. Abbildung 6.3 macht die Idee noch einmal deutlich. Alle Facetten- Mittelpunkte des hellblauen Clusters bzw. Bones werden genutzt, um die Rotation um J zu bestimmen. In der Abbildung sind exemplarisch nur 3 Mittelpunkte als rote Punkte dargestellt. Ein Kleinste-Quadrate-Ansatz zum Lösen des Gleichungssystems 1 N x 0i y 0i z 0i N (p ti R t Jp 0i ) t (p ti R t Jp 0i ) = min i=1 führt zu folgender Lösung (Eine Herleitung ist in [Kwo98] zu finden.): X = 1 N N p ti p t 0i. i=1 X enthält die notwendigen Komponenten für R t J. Diese lassen sich mit der Singular Value Decomposition berechnen:

52 44 6. ANIMATIONSÜBERTRAGUNG Abbildung 6.3: Rotationsbestimmung durch Fitting der Cluster-Punktwolken. Die Rotations-Matrix ergibt sich aus R t j = u X = u w v t det(uv t ) v t. Nun hängt die Rotation eines Bones in tieferen Hierarchie-Stufen natürlich auch immer davon ab, wie die Bones höherer Hierarchie-Stufen zum aktuellen Zeitschritt transformiert sind. Die Punktwolken der Facetten-Mittelpunkte müssen also in das lokale Koordinaten-System des Joints J umgerechnet werden, für den man die Rotation berechnen will. Um die Punktwolke der Default-Pose anzupassen, subtrahiert man von allen Mittelpunkten p 0i die absolute Joint-Position J abs. Somit ist der aktuelle Joint im Koordinatenursprung. Nun müssen die Punkte nur noch entsprechend der Orientierungsmatrizen der übergeordneten Joints transformiert werden (siehe auch Abbildung 6.4): p 0i = (O JP ) 1... (O Root ) 1 (p 0i J abs ) Da zur Default-Pose alle Rotationen null sind, muss die Punktwolke nicht rotiert werden. Für die Mittelpunkte der anderen Zeitschritte p ti reicht das allein nicht aus. Schließlich ist es sehr wahrscheinlich, dass übergeordnete Bones zum Zeitschritt t rotiert wurden. Dafür verschiebt man die Punktwolke zuerst wieder mit der inversen absoluten Joint-Position. Zusätzlich wird die Punktwolke mit den inversen Rotationen aller Parent-Joints transformiert. Man rotiert die übergeordneten Bones also zurück zu ihrer Default-Pose (siehe Abbildung 6.5). Dies macht man mit allen Transformationen beginnend beim Root- Joint bis hin zu J P. Da die Rotationen relativ zu ihrem lokalen Koordinatensystem O Jk angegeben sind, müssen diese natürlich auch berücksichtigt werden. p ti = (R t J P ) 1 (O JP ) 1... (R t Root) 1 (O Root ) 1 (p ti J C,abs ) Die Rotation eines Bones um seinen Joint kann also erst berechnet werden, wenn man die Rotationen aller Parent-Joints bis zur Root kennt. Aus diesem Grund muss das komplette Verfahren zur Bestimmung der Rotationen ausgehend vom Root-Joint die Hierarchie abwärts durchlaufen.

53 6.3. BESTIMMUNG VON ROTATIONEN 45 Abbildung 6.4: Links: Punktwolke der p 0i in Welt-Koordinaten, Mitte: Punktwolke um J abs verschoben, so dass J im Ursprung liegt, rechts: Rotation der Punktwolke entsprechend der Orientierungsmatrizen übergeordneter Joints, so dass die Punktwolke im lokalen Koordinatensystem von J liegt. Abbildung 6.5: Links: Punktwolke der p ti in Welt-Koordinaten, rechts: Rotation der Punktwolke entsprechend der inversen Orientierungs- und Rotationsmatrizen übergeordneter Joints, so dass die Punktwolke der p ti im lokalen Koordinatensystem von J liegt.

54 46 6. ANIMATIONSÜBERTRAGUNG 6.4 Bestimmung zusätzlicher Translationen Nun kann es, bedingt durch die Animation und auch durch das Segmentierungsergebnis, dazu kommen, dass durch die Rotation allein die korrekte Joint-Position nicht berechnet werden kann. Der Bone kann zwar in die richtige Richtung rotiert werden, die Länge des Bones lässt sich aber nur mit einer Translation anpassen. Dieser Fall tritt auf, wenn der Bone sich verformt (z.b. das übermäßige Strecken eines Beins in einer Cartoon-artigen Animation), wie in Abbildung 6.6 links gezeigt ist. Abbildung 6.6: Links: Rotation alleine bringt den Joint J nicht an die notwendige Position, rechts: Korrektur durch angepasste Translation. Die Translation mit der korrekten Bone-Länge hat man im Prinzip schon gegeben, in dem man die Differenz zwischen den absoluten Positionen des aktuellen Joints J t abs und dessen Parent J t P,abs berechnet (Abbildung 6.6 rechts). Der daraus entstandene Vektor muss nun noch in die Richtung rotiert werden, für den alle übergeordneten Rotationen null sind. Also ähnlich wie im vorhergehenden Abschnitt rotiert man den Vektor zurück zu seiner Default-Pose T t J = (R t J P ) 1 (O JP ) 1... (R t Root) 1 (O Root ) 1 (J t abs J t P,abs ). Bei Animationen ohne Deformationen der Bones und sehr sauberen Segmentierungsergebnissen kann das beschriebene Verfahren auch ausgelassen werden. In diesem Fall benötigt man allerdings noch die Translationen für alle Zeitschritte außer der Default-Pose. Da die Animation dann ausschließlich durch Rotationen beschrieben wird, können die Translationen der Default-Pose für alle anderen Zeitschritte übernommen werden.

55 47 7 Ergebnisse Da nun das komplette Verfahren der Segmentierung und der Skelett-Extraktion beschrieben wurde, sollen verschiedene Konfigurationen getestet und bewertet werden. Als Erstes werden die beschriebenen Segmentierungsverfahren und -kriterien verglichen. Der darauf folgende Abschnitt befasst sich mit den extrahierten Skeletten. Für Zeitmessungen kam ein Pentium 4 (2.4 GHz) mit 768 MB RAM zum Einsatz. 7.1 Region-Growing Vergleich der Metriken In Abbildung 7.1 findet ein Vergleich der Segmentierungsergebnisse mit den vorgestellten Metriken zur Körperteilerkennung statt. Die Anzahl der Cluster und die Position der Saatpunkte waren jeweils gleich. Die Rotationssequenz-Metrik neigt dazu, kleine Cluster in Bereichen entstehen zu lassen, die sich stark verformen. Durch die starke Verformung ist der Facetten-Fehler in diesen Regionen hoch. Deswegen sind die Cluster nur sehr klein. Für die Skelett-Extraktion sollten diese entfernt werden. Im Gegensatz dazu entstehen bei der Distanz-Abweichungs-Metrik eher gleichmäßig große Cluster. Die Cluster-Grenzen sind aber weniger in Gelenkbereichen definiert als bei der anderen Metrik. Abbildung 7.1: Oben: Distanz-Abweichungs-Metrik, unten: Rotationssequenz-Metrik. In Tabelle 7.2 sind die Berechnungszeiten des Region-Growing-Algorithmus abhängig von der verwendeten Metrik aufgezeigt. Um den Algorithmus zu beschleunigen, kann man die dynamischen Eigenschaften jeder Facette eines Modells im Voraus berechnen (jeweils linker Wert in der Klammer). Im vorliegenden Fall sind das die Rotationssequenzen bzw. Mittelpunktsequenzen für jede Facette. Um den Fehler einer Facette zu berechnen, muss dann nur die jeweilige Metrik berechnet werden. Diese greift auf die bereits berechneten Facetten-Eigenschaften direkt zu und beschränkt sich meist auf wenige simple

56 48 7. ERGEBNISSE Rechenschritte. Eine Fehlerberechnung ist bedingt durch die Region-Growing-Phase sehr oft notwendig. Somit wird der Algorithmus durch die Vorausberechnung sehr stark beschleunigt. Die Vorausberechnung ist unabhängig vom Segmentierungsalgorithmus und nur einmal notwendig. Die Vorausberechnung der Rotationssequenzen ist natürlich wesentlich aufwändiger als die der Mittelpunktsequenzen, weil für jeden Zeitschritt eine Polar-Zerlegung durchgeführt werden muss. Der komplette Segmentierungsalgorithmus (rechter Wert in der Klammer) braucht hauptsächlich deshalb länger, weil die Berechnung einer Durchschnittsrotation (bei der Aktualisierung der Referenzobjekte) für einen Cluster aufwändiger als ein Cluster-Schwerpunkt ist. Des Weiteren lässt sich erkennen, dass der Aufwand freilich auch von der Länge der Animation und der Anzahl der Vertices des 3D-Modells abhängt. Model Cluster Rot.-Seq. (Vorber./Region-Gr.) Dist.-Abw. (Vorber./Region-Gr.) Vertices Frames Lion 20 (1.70/2.86) s (0.047/2.17) s Horse 25 (12.42/14.09) s (0.359/5.68) s Cat 30 (1.83/4.14) s (0.078/2.56) s Abbildung 7.2: Vergleich der Berechnungszeiten mit Region-Growing und verschiedenen Metriken Aufwand in Abhängigkeit der Anzahl der Cluster Tabelle 7.3 enthält die Berechnungszeiten für die einzelnen Phasen des Algorithmus einmal für 20 und einmal für 80 Cluster. Segmentiert wurde das Dance -Modell mit der Rotationssequenz-Metrik. Der jeweils linke Wert in der Klammer gibt die durchschnittliche Dauer der entsprechenden Phase an (bezogen auf alle Iterationen). Der rechte Wert zeigt die Standardabweichung der durchschnittlichen Dauer an. Wie zu erkennen ist, ist die Länge der Phasen während des gesamten Algorithmus weitestgehend konstant. Dieser Aspekt ist interessant, wenn man die Phasendauer mit der beim hierarchischen Clustering vergleicht (siehe Abschnitt 7.3). Betrachtet man die durchschnittlichen Längen der Phasen bei verschiedener Clusteranzahl, ist lediglich bei der Aktualisierung der Referenzobjekte ein erkennbarer Unterschied zu verzeichnen. Die Ursache hierfür liegt in der zeitaufwändigen Berechnung der Durchschnitts-Rotationen für alle Cluster. Bei 80 Clustern muss wesentlich öfter eine Polar-Zerlegung durchgeführt werden als bei 20 Clustern. Phase Cluster: Region-Growing (0.577/0.003) s (0.593/0.002) s Referenzobjekt-Aktualisierung (0.531/0.015) s (0.734/0.056) s Saatpunkt-Neupositionierung (0.716/0.007) s (0.716/0.006) s Abbildung 7.3: Vergleich der Berechnungszeiten für die einzelnen Phasen in Abhängigkeit der Clusteranzahl Initialisierung der Saatpunkte Eine sehr gute Unterstützung für das Region-Growing stellt das manuelle Positionieren der Saatpunkte dar. Der Algorithmus muss dann nur noch für das Ausbalancieren der Cluster sorgen. Die Bestimmung der Bereiche, wo Cluster entstehen sollen und wo nicht, legt der Nutzer selbst fest. Das Tunneling ist dann meist unnötig, teilweise sogar unerwünscht, da alle Cluster am richtigen Platz bleiben sollen. Abbildung 7.4 zeigt die Segmentierung und die Iterationsfehler bei manueller (grüne Werte) und bei automatischer (rote Werte) Saatpunktpositionierung. Durch Wegfall des Tunnelings ergibt sich bei manueller Positionierung eine wesentlich sauberere Fehlerkurve mit deutlich weniger Sprüngen und einem geringeren

57 7.1. REGION-GROWING 49 Gesamtfehler. Auch ohne Zeitmessungen ist zu erkennen, dass der Algorithmus bei manueller Positionierung schneller arbeitet. Darüber hinaus sind weniger Iterationen notwendig, weil der Algorithmus schneller konvergiert. Das Dance -Modell wurde mit 15 Clustern, das Horse -Modell mit 22 Clustern segmentiert. Zum Einsatz kam die Rotationssequenz-Metrik. Abbildung 7.4: Links: Gesamtfehler, Mitte: zufällig gesetzte Saatpunkte und Segmentierung, rechts: manuell gesetzte Saatpunkte und Segmentierung Erweitertes Region-Growing Der erste Test (Abbildung 7.5 oben) zeigt eine Segmentierung mit 20 Clustern und der Distanz-Abweichungs- Metrik. Bei den meisten Iterationen ist der Gesamtfehler beim erweiterten Region-Growing (grüne Werte) niedriger, allerdings nur geringfügig. Für das zweite Beispiel (Abbildung 7.5 unten) wurde das Tunneling ausgeschaltet. Damit kann man beobachten, wie sich die Segmentierung entwickelt, ohne das Cluster an eine andere Stelle teleportiert werden (und somit komplett unterschiedliche Segmentierungen entstehen können). Es wurden ebenfalls 20 Cluster und die Rotationssequenz-Metrik genutzt. Es lässt sich erkennen, dass der Algorithmus bei erweitertem Region-Growing mehr Zeit benötigt, bis er abbricht. Dafür ist aber ein besserer Kurvenverlauf und ein etwas geringerer Gesamtfehler zu verzeichnen. Für das Beispiel mit dem Löwen-Modell findet sich in Tabelle 7.6 ein Vergleich der Berechnungszeiten. Die Werte der linken Spalte entsprechen Zeiten mit normalem Region-Growing; für die Werte der rechten Spalte wurde das erweiterte Region-Growing aktiviert. Es lässt sich erkennen, dass die erweiterte Region-Growing-Phase im Durchschnitt geringfügig länger ist. Die längere Gesamt-Segmentierungszeit resultiert vor allem aus der höheren Anzahl an Iterationen, die durch das erweiterte Region-Growing

58 50 7. ERGEBNISSE Abbildung 7.5: Links: Gesamtfehler, rechts: Segmentierungen mit normalem (jeweils oben) und erweitertem (jeweils unten) Region-Growing.

59 7.2. VERGLEICH ZU SKINNING MESH ANIMATIONS / MEAN-SHIFTING 51 entstehen. Phase normales RG erweitertes RG Region-Growing Durchschnitt s s Region-Growing Abweichung s s Segmentierung gesamt s s Abbildung 7.6: Vergleich der Berechnungszeiten des normalen und erweiterten Region-Growing Filterung bei Neupositionierung der Saatpunkte Die folgenden Grafiken veranschaulichen, wie die Filterverfahren den Verlauf des Algorithmus beeinflussen. Auch wenn in einem Datensatz keine echten Außenseiter bzw. Rauschen vorhanden sind, kann das Filtern einen positiven Effekt dadurch erreichen, dass lokale Minima aus der Fehler-Funktion entfernt werden. Im ersten Beispiel in Abbildung 7.7 wurde der Tiefpassfilter mit vier Iterationen verwendet (Distanz- Abweichungs-Metrik, 30 Cluster). Der Gesamtfehler ist meist etwas niedrigerer (grüne Werte) im Vergleich zur normalen Neupositionierung (rote Werte). In Bereichen des 3D-Modells, in dem die Animation eindeutig ist (Beine, Schwanz, Kopf), sind kaum Unterschiede festzustellen. Die größten Unterschiede sind im Torso-Bereich zu verzeichnen. Das zweite Beispiel zeigt eine Segmentierung mit zwei Filter- Iterationen und 20 Clustern an dem Löwen-Modell. Das Verfahren bricht schneller und mit einem geringeren Gesamtfehler ab, wobei die Gesamtfehlerfunktion einen etwas ruhigeren Verlauf aufweist. Zu erwähnen sind ebenfalls die Clustergrenzen, welche sich etwas besser ausgebildet haben. 7.2 Vergleich zu Skinning Mesh Animations / Mean-Shifting Bei einem Vergleich des Region-Growing mit dem Mean-Shifting lassen sich folgende Unterschiede feststellen. Einen Nachteil des Region-Growing stellt die Beschränkung auf mannigfaltige Objekte dar. Dadurch bleiben die Cluster aber zusammenhängend. Dies ist für die Erkennung der Joints wiederum von großem Vorteil, da die Clustergrenzen direkt dafür genutzt werden können. Ein Argument, welches für das Mean-Shifting spricht, ist die Robustheit gegen Außenseiter. Mittels der Filterung beim Reinitialisieren der Saatpunkte wurde auch das Region-Growing robuster dagegen gemacht. Ferner sei noch das Argument erwähnt, dass beim Mean-Shifting die Anzahl der Cluster indirekt automatisch durch einen einzigen Toleranz-Parameter (die Bandbreite) bestimmt wird. Für das Problem der Zerlegung in Körperteile ließ sich ein Wert finden, der für die meisten Datensätze gute Ergebnisse liefert. Im Falle der Skelett-Extraktion kann die Cluster-/Körperteil-Anzahl jedoch relativ leicht bestimmt werden. Verteilt man die Saatpunkte manuell, löst sich das Problem von allein und man hat zudem noch eine sehr gute Ausgangsbasis für das Region-Growing. Ein Vorteil, den das Region-Growing bietet, ist die schnellere Berechnung der Segmentierung. In Tabelle 7.8 sind die Berechnungszeiten einander gegenübergestellt. In [JT05] wurde mit einem Pentium 4 (2.0 GHz) mit 1 GB RAM getestet. Die Testsysteme sind somit ähnlich. In Abbildung 7.9 sind die Segmentierungsergebnisse beider Verfahren einander gegenüber gestellt. Für die Modelle Snake und Dance wurde die die Distanz-Abweichungs-Metrik verwendet. Das Horse - Modell nutzte die Rotationssequenzen zum Segmentieren.

60 52 7. ERGEBNISSE Abbildung 7.7: Links: Gesamtfehler, rechts: Segmentierungen jeweils mit und ohne Filterung. Model Zeit Mean-Shifting Zeit Region-Growing Vertices Frames Snake 8.0 min s Horse 2.8 min s Dance 9.1 min s Abbildung 7.8: Vergleich der Berechnungszeiten zwischen Mean-Shifting und Region-Growing.

61 7.3. HIERARCHISCHES CLUSTERING 53 Abbildung 7.9: Oben: Segmentierung mit Region-Growing, unten: Segmentierung mit Mean-Shift ([JT05]). 7.3 Hierarchisches Clustering Zum Testen des hierarchischen Clustering wurde die Rotationssequenz-Metrik genutzt. Für die obere Reihe der Abbildung 7.10 wurde das hierarchische Clustering so lange durchgeführt, bis die Segmentierung aus 30 Clustern bestand. Zu erkennen ist, dass sich die Cluster gut an den Gelenkgrenzen ansiedeln, aber zu viele Cluster noch störend sind. Führt man das Verfahren fort, z.b. bis 20 Cluster (untere Zeile), werden einige der unerwünschten Cluster entfernt. Allerdings kommt es auch zur Verschmelzung von Clustern, die bereits akzeptabel waren. Abbildung 7.10: Oben: hierarchisches Clustering mit 30 Clustern, unten: mit 20 Clustern. Ein weiterer Nachteil des Algorithmus ist, dass er bei großen Datensätzen (viele Facetten und Zeitschritte) sehr langsam wird. Je mehr Facetten das Modell enthält, desto größer ist der Nachbarschaftsgraph,

62 54 7. ERGEBNISSE für den die Kantenkosten berechnet werden müssen. Er ist nach jedem Verschmelzungsschritt neu zu berechnen. Und selbst wenn man lediglich die Änderungen des Graphen aktualisiert, ist dieser Vorgang bei z. B Facetten immer noch sehr aufwändig. Interessant ist die Beobachtung der Verschmelzungen zur Laufzeit des Algorithmus. Die Dauer eines kompletten Verschmelzungsschrittes wird während der Laufzeit immer geringer, weil die Anzahl der Cluster abnimmt. Dies hat einen kleineren Graphen zur Folge, der aktualisiert werden muss. Der Algorithmus des hierarchischen Clustering weist demnach ein ganz anderes Verhalten auf als beispielsweise der Region-Growing-Algorithmus, bei dem die Zeiten der einzelnen Phasen weitestgehend konstant bleiben. Abbildung 7.11 veranschaulicht dies an zwei Beispielen. Gemessen wurde die Berechnungszeit für je 100 Verschmelzungsschritte. Man sieht, dass links nach ca Verschmelzungen die Zeitwerte stark sinken. Beim rechten Beispiel geschieht dies nach ca Verschmelzungen. Man könnte also z.b. mit dem Region-Growing ein Modell mit Facetten in ca Cluster zerlegen und dann mit dem hierarchischen Clustering weiter segmentieren. Dieses Verfahren würde dann wesentlich schneller arbeiten, als wenn man sofort mit dem hierarchischen Clustering starten würde. Abbildung 7.11: Verschmelzungszeiten in Sekunden für je 100 Schritte, links: Lion, rechts: Cat mit je 20 Clustern und Distanz-Abweichungs-Metrik. 7.4 Nachbearbeitung und Skelett-Extraktion Da das Ziel der vorliegenden Arbeit darin besteht, hierarchische Skelette zu extrahieren, ist hier eine saubere Segmentierung noch notwendiger als wenn keine hierarchische Verknüpfung der Joints bzw. Bones angestrebt wird (vgl. [JT05]). Bei nicht-hierarchischer Verknüpfung ist die Qualität der Approximation der Animation durch das Skelett skalierbar, was durch die Anzahl der Cluster ermöglicht wird. Mit einem Skelett, welches genauso viel Bones wie Facetten enthält, kann die Original-Animation exakt rekonstruiert werden. Diese Skalierbarkeit ist bei hierarchischer Verknüpfung nur bedingt gegeben (z.b. wird die Wirbelsäule nur durch einen oder zwei Bones approximiert). Enthält die Segmentierung also viele störende Cluster, entstehen im Skelett auch viele Zweige, die unerwünscht sein können (z.b. wenn das Skelett später per Hand weiter animiert werden soll). Daher ist eventuell eine Nachbearbeitung von Segmentierungen erforderlich. In welchem Umfang diese Notwendigkeit besteht, hängt vom Einzelfall ab. Das manuelle Verschmelzen von Clustern bietet neben dem automatischen hierarchischen Clustering eine sehr gute Möglichkeit der Nachbearbeitung, da man intuitiv die überflüssigen Cluster erkennen kann. Alternativ dazu lassen sich - wie bereits dargestellt - sehr gute Segmentierungen mit manueller Positionierung der Saatpunkte berechnen. Abbildung 7.12 zeigt die Ausgangssegmentierung, die optimierte Segmentierung und das entsprechende Skelett einiger Modelle. Beim ersten Beispiel wurde übersegmentiert, damit an den notwendigen Stellen Cluster entstehen. Danach wurden mit dem hierarchischen Clustering überflüssige Cluster entfernt. Leider ging durch letzteres Verfahren der linke Hand-Cluster verloren. Die Hände konnte der Algorithmus

63 7.4. NACHBEARBEITUNG UND SKELETT-EXTRAKTION 55 aber generell schwer erkennen. Beim Löwen-Modell wurden zur Optimierung unnötige Cluster per Hand entfernt. Für das Pferde-Modell wurden die Saatpunkte manuell gesetzt, damit der Algorithmus auch die Hufe leicht erkennen konnte. Abbildung 7.12: Links: Ausgangssegmentierung, Mitte: optimierte Segmentierung, rechts: Skelett. Tabelle 7.13 zeigt den Berechnungsaufwand für die verschiedenen Phasen der Skelett-Extraktion in Abhängigkeit von der Komplexität der Segmentierung. Dafür wurde das Pferd-Modell mit unterschiedlicher Clusteranzahl segmentiert. Genutzt wurden die Distanz-Abweichungs-Metrik und der Region-Growing- Algorithmus. Für dieses Beispiel fand keine Nachbearbeitung statt. Das Verfahren der Skelett-Extraktion berechnet zuerst die Cluster-Nachbarschaften. Diese sind für die Joint-Platzierung und die Hierarchie- Erstellung notwendig. An diese Phasen schließen sich die Methoden zur Berechnung der Animationsinformationen an. Zu erkennen ist, dass die Hierarchieberechnung mit steigender Clusteranzahl aufwändig wird. Der Grund dafür ist der komplexere Nachbarschaftsgraph. Die Berechnungszeiten der Cluster- Nachbarschaften und Joint-Platzierung steigen eher linear an. Für die Ermittlung der Animationsdaten ist die Rotationsberechnung am aufwändigsten, weil das Fitting-Verfahren für jede Rotation eine Singular Value Decomposition berechnen muss. Die Joint-Orientierungen und Translationen fallen kaum ins Gewicht, weil diese auf sehr einfache Art und Weise berechnet werden.

Automatische Extraktion von hierarchischen Skeletten aus dynamischen 3D-Modellen. von Stefan Broecker Betreuer: Prof. Dr. Gumhold

Automatische Extraktion von hierarchischen Skeletten aus dynamischen 3D-Modellen. von Stefan Broecker Betreuer: Prof. Dr. Gumhold Automatische Extraktion von hierarchischen Skeletten aus dynamischen 3D-Modellen von Stefan Broecker Betreuer: Prof. Dr. Gumhold Inhalt Einführung Verfahren Segmentierung Skelett-Extraktion Animationsübertragung

Mehr

Entwicklung einer Programmbibliothek zur Simulation von Hautdeformation durch Knochen und Muskeln

Entwicklung einer Programmbibliothek zur Simulation von Hautdeformation durch Knochen und Muskeln Entwicklung einer Programmbibliothek zur Simulation von Hautdeformation durch Knochen und Muskeln Universität Koblenz Institut für Computervisualistik Arbeitsgruppe Computergraphik Betreuer und Prüfer

Mehr

(1) Geometrie. Vorlesung Computergraphik 3 S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU

(1) Geometrie. Vorlesung Computergraphik 3 S. Müller U N I V E R S I T Ä T KOBLENZ LANDAU (1) Geometrie Vorlesung Computergraphik 3 S. Müller KOBLENZ LANDAU KOBLENZ LANDAU Organisatorisches Vorlesung CG 2+3 Die Veranstaltung besteht aus 2 Teilen, wobei in der Mitte und am Ende eine Klausur

Mehr

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung Begriffe, Definitionen Routing (aus der Informatik) Wegewahl oder Verkehrslenkung bezeichnet in der Telekommunikation das Festlegen von Wegen für Nachrichtenströme bei der Nachrichtenübermittlung über

Mehr

Routing Algorithmen. Begriffe, Definitionen

Routing Algorithmen. Begriffe, Definitionen Begriffe, Definitionen Routing (aus der Informatik) Wegewahl oder Verkehrslenkung bezeichnet in der Telekommunikation das Festlegen von Wegen für Nachrichtenströme bei der Nachrichtenübermittlung über

Mehr

5. Clusteranalyse Vorbemerkungen. 5. Clusteranalyse. Grundlegende Algorithmen der Clusteranalyse kennen, ihre Eigenschaften

5. Clusteranalyse Vorbemerkungen. 5. Clusteranalyse. Grundlegende Algorithmen der Clusteranalyse kennen, ihre Eigenschaften 5. Clusteranalyse Vorbemerkungen 5. Clusteranalyse Lernziele: Grundlegende Algorithmen der Clusteranalyse kennen, ihre Eigenschaften benennen und anwenden können, einen Test auf das Vorhandensein einer

Mehr

Parallele Algorithmen in der Bildverarbeitung

Parallele Algorithmen in der Bildverarbeitung Seminar über Algorithmen - SoSe 2009 Parallele Algorithmen in der Bildverarbeitung von Christopher Keiner 1 Allgemeines 1.1 Einleitung Parallele Algorithmen gewinnen immer stärker an Bedeutung. Es existieren

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

5. Clusteranalyse. Lernziele: Grundlegende Algorithmen der Clusteranalyse kennen, ihre Eigenschaften

5. Clusteranalyse. Lernziele: Grundlegende Algorithmen der Clusteranalyse kennen, ihre Eigenschaften 5. Clusteranalyse Lernziele: Grundlegende Algorithmen der Clusteranalyse kennen, ihre Eigenschaften benennen und anwenden können, einen Test auf das Vorhandensein einer Clusterstruktur kennen, verschiedene

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Approximierbarkeit David Kappel Institut für Grundlagen der Informationsverarbeitung Technische Universität Graz 02.07.2015 Übersicht Das Problem des Handelsreisenden TSP EUCLIDEAN-TSP

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (1) Darstellung Traversierung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 441 Generalisierung von Bäumen Verallgemeinerung (von Listen zu Graphen)

Mehr

Prüfungsdauer: 120 Minuten

Prüfungsdauer: 120 Minuten Computergraphik und Multimediasysteme Seite 1 von 6 Klausur: Computergraphik II Probeklausur Semester: Prüfer: Prüfungsdauer: 1 Minuten Hilfsmittel: Schreibgeräte, Lineal, nichtprogrammierbarer Taschenrechner

Mehr

3. Analyse der Kamerabewegung Video - Inhaltsanalyse

3. Analyse der Kamerabewegung Video - Inhaltsanalyse 3. Analyse der Kamerabewegung Video - Inhaltsanalyse Stephan Kopf Bewegungen in Videos Objektbewegungen (object motion) Kameraoperationen bzw. Kamerabewegungen (camera motion) Semantische Informationen

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Approximierbarkeit David Kappel Institut für Grundlagen der Informationsverarbeitung Technische Universität Graz 10.06.2016 Übersicht Das Problem des Handelsreisenden TSP EUCLIDEAN-TSP

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 7 Fortgeschrittene Datenstrukturen 8 Such-Algorithmen

Mehr

View-Dependent Simplification. Computer Graphics

View-Dependent Simplification. Computer Graphics View-Dependent Simplification in Computer Graphics Metovic Sasa - Mustafa Fettahoglu Salzburg, am 30.01.2003 INHALTSVERZEICHNIS EINFÜHRUNG ANSICHT ABHÄNGIGE VEREINFACHUNG AUFBAU EINES MESHES EDGE COLLAPSE

Mehr

9 Minimum Spanning Trees

9 Minimum Spanning Trees Im Folgenden wollen wir uns genauer mit dem Minimum Spanning Tree -Problem auseinandersetzen. 9.1 MST-Problem Gegeben ein ungerichteter Graph G = (V,E) und eine Gewichtsfunktion w w : E R Man berechne

Mehr

Geometrie 2. Julian Fischer Julian Fischer Geometrie / 30

Geometrie 2. Julian Fischer Julian Fischer Geometrie / 30 Geometrie 2 Julian Fischer 6.7.2009 Julian Fischer Geometrie 2 6.7.2009 1 / 30 Themen 1 Bereichssuche und kd-bäume 1 Bereichssuche 2 kd-bäume 2 Divide and Conquer 1 Closest pair 2 Beispiel: Points (IOI

Mehr

4.6 Berechnung von Eigenwerten

4.6 Berechnung von Eigenwerten 4.6 Berechnung von Eigenwerten Neben der Festlegung auf den betragsgrößten Eigenwert hat die Potenzmethode den Nachteil sehr langsamer Konvergenz, falls die Eigenwerte nicht hinreichend separiert sind.

Mehr

Kollisionserkennung

Kollisionserkennung 1 Kollisionserkennung von Jens Schedel, Christoph Forman und Philipp Baumgärtel 2 1. Einleitung Wozu wird Kollisionserkennung benötigt? 3 - für Computergraphik 4 - für Simulationen 5 - für Wegeplanung

Mehr

Matthias Treydte Fakultät für Informatik TU Chemnitz

Matthias Treydte Fakultät für Informatik TU Chemnitz Einführung MRM / LOD Matthias Treydte Fakultät für Informatik TU Chemnitz Übersicht 1. 2. 3. 4. 5. 6. 7. Wozu das Ganze? Wie kann man Polygonzüge vereinfachen? Wie sind Vereinfachungen zu bewerten? Welche

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute 7 Fortgeschrittene Datenstrukturen 8

Mehr

3.2. Divide-and-Conquer-Methoden

3.2. Divide-and-Conquer-Methoden LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch

Mehr

Grundbegriffe der Informatik Musterlösung zu Aufgabenblatt 9

Grundbegriffe der Informatik Musterlösung zu Aufgabenblatt 9 Grundbegriffe der Informatik Musterlösung zu Aufgabenblatt 9 Aufgabe 9.1 (5+ Punkte) Für Graphen mit gewichteten Kanten steht in der Adjazenzmatrix an der Stelle i,j eine 0, falls es keine Kante von i

Mehr

Bildsegmentierung mit Snakes und aktiven Konturen

Bildsegmentierung mit Snakes und aktiven Konturen Bildsegmentierung mit Snakes und aktiven Konturen 5. Dezember 2005 Vortrag zum Seminar Bildsegmentierung und Computer Vision Übersicht 1 2 Definition der Snake Innere Energie S(c) 3 Statisches Optimierungsproblem

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 7 Fortgeschrittene Datenstrukturen Graphen

Mehr

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU (7) Normal Mapping Vorlesung Computergraphik II S. Müller Dank an Stefan Rilling Einleitung Die Welt ist voller Details Viele Details treten in Form von Oberflächendetails auf S. Müller - 3 - Darstellung

Mehr

Nichtrealistische Darstellung von Gebirgen mit OpenGL

Nichtrealistische Darstellung von Gebirgen mit OpenGL Nichtrealistische Darstellung von Gebirgen mit OpenGL Großer Beleg Torsten Keil Betreuer: Prof. Deussen Zielstellung Entwicklung eines Algorithmus, der die 3D- Daten einer Geometrie in eine nichtrealistische

Mehr

Krümmungsapproximation auf 3D-Modellen

Krümmungsapproximation auf 3D-Modellen Krümmungsapproximation auf 3D-Modellen Mathematische Grundlagen und Approximation Christian Cyrus Matrikelnummer 157707 Fakultät für Informatik Otto-von-Guericke-Universität Magdeburg Diese Ausarbeitung

Mehr

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen Fortgeschrittene Netzwerk- und Graph-Algorithmen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Wintersemester

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Jörn Fischer j.fischer@hs-mannheim.de Willkommen zur Vorlesung Grundlagen der Informatik ADS-Teil Page 2 Überblick Inhalt 1 Eigenschaften von Algorithmen Algorithmenbegriff O-Notation Entwurfstechniken

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 24. April 2019 [Letzte Aktualisierung: 24/04/2019,

Mehr

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Fortgeschrittene Netzwerk- und Graph-Algorithmen Fortgeschrittene Netzwerk- und Graph-Algorithmen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Wintersemester

Mehr

3.3 Optimale binäre Suchbäume

3.3 Optimale binäre Suchbäume 3.3 Optimale binäre Suchbäume Problem 3.3.1. Sei S eine Menge von Schlüsseln aus einem endlichen, linear geordneten Universum U, S = {a 1,,...,a n } U und S = n N. Wir wollen S in einem binären Suchbaum

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Übungsblatt 10 Abgabe: Montag, 08.07.2013, 14:00 Uhr Die Übungen sollen in Gruppen von zwei bis drei Personen bearbeitet werden. Schreiben Sie die Namen jedes

Mehr

Kodieren Von Graphen

Kodieren Von Graphen Kodieren Von Graphen Allgemeine Anwendungen: Routenplaner Netzpläne Elektrische Schaltungen Gebäudeerkennung aus Luftaufnahmen Definitionen:? Graph Ein Graph G besteht aus einem geordneten Paar G = (V,E)

Mehr

Combinatorial optimisation and hierarchical classication

Combinatorial optimisation and hierarchical classication Universität zu Köln Zentrum für Angewandte Informatik Prof. Dr. R. Schrader Seminar im Wintersemester 2007/2008 Ausgewählte Kapitel des Operations Research Combinatorial optimisation and hierarchical classication

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 07..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum

Mehr

... Text Clustern. Clustern. Einführung Clustern. Einführung Clustern

... Text Clustern. Clustern. Einführung Clustern. Einführung Clustern Clustern Tet Clustern Teile nicht kategorisierte Beispiele in disjunkte Untermengen, so genannte Cluster, ein, so daß: Beispiele innerhalb eines Clusters sich sehr ähnlich Beispiele in verschiedenen Clustern

Mehr

Effizienter Planaritätstest Vorlesung am

Effizienter Planaritätstest Vorlesung am Effizienter Planaritätstest Vorlesung am 23.04.2014 INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER Satz Gegebenen einen Graphen G = (V, E) mit n Kanten und m Knoten, kann in O(n + m) Zeit

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern

Mehr

Triangulierungen von Punktmengen und Polyedern

Triangulierungen von Punktmengen und Polyedern Triangulierungen von Punktmengen und Polyedern Vorlesung im Sommersemester 2 Technische Universität Berlin Jörg Rambau 2.4.2 Motivation und Beispiele Wir wollen hier den Begriff der Triangulierungen von

Mehr

Humanoide Roboter. Shuji Kajita. Theorie und Technik des Künstlichen Menschen AKA. Herausgeber

Humanoide Roboter. Shuji Kajita. Theorie und Technik des Künstlichen Menschen AKA. Herausgeber Humanoide Roboter Theorie und Technik des Künstlichen Menschen Herausgeber Shuji Kajita AKA Inhaltsverzeichnis Vorwort Thomas Christaller ix Shuji Kajita Kapitel 1. Überblick Humanoide Roboter 1 Kapitel

Mehr

Optimierung. Optimierung. Vorlesung 2 Optimierung ohne Nebenbedingungen Gradientenverfahren. 2013 Thomas Brox, Fabian Kuhn

Optimierung. Optimierung. Vorlesung 2 Optimierung ohne Nebenbedingungen Gradientenverfahren. 2013 Thomas Brox, Fabian Kuhn Optimierung Vorlesung 2 Optimierung ohne Nebenbedingungen Gradientenverfahren 1 Minimierung ohne Nebenbedingung Ein Optimierungsproblem besteht aus einer zulässigen Menge und einer Zielfunktion Minimum

Mehr

Algorithmische Techniken für Geometrische Probleme

Algorithmische Techniken für Geometrische Probleme Algorithmische Techniken für Geometrische Probleme Berthold Vöcking 14. Juni 2007 Inhaltsverzeichnis 1 Die Sweepline-Technik 2 1.1 Schnitte orthogonaler Liniensegmente............... 2 1.2 Schnitte beliebiger

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 6. Vorlesung Martin Middendorf / Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Merge-Sort Anwendbar für

Mehr

Einführung in die linearen Funktionen. Autor: Benedikt Menne

Einführung in die linearen Funktionen. Autor: Benedikt Menne Einführung in die linearen Funktionen Autor: Benedikt Menne Inhaltsverzeichnis Vorwort... 3 Allgemeine Definition... 3 3 Bestimmung der Steigung einer linearen Funktion... 4 3. Bestimmung der Steigung

Mehr

Das Problem des Handlungsreisenden

Das Problem des Handlungsreisenden Seite 1 Das Problem des Handlungsreisenden Abbildung 1: Alle möglichen Rundreisen für 4 Städte Das TSP-Problem tritt in der Praxis in vielen Anwendungen als Teilproblem auf. Hierzu gehören z.b. Optimierungsprobleme

Mehr

3. Die Datenstruktur Graph

3. Die Datenstruktur Graph 3. Die Datenstruktur Graph 3.1 Einleitung: Das Königsberger Brückenproblem Das Königsberger Brückenproblem ist eine mathematische Fragestellung des frühen 18. Jahrhunderts, die anhand von sieben Brücken

Mehr

6. Übung zur Linearen Optimierung SS08

6. Übung zur Linearen Optimierung SS08 6 Übung zur Linearen Optimierung SS08 1 Sei G = (V, E) ein schlichter ungerichteter Graph mit n Ecken und m Kanten Für eine Ecke v V heißt die Zahl der Kanten (u, v) E Grad der Ecke (a) Ist die Anzahl

Mehr

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität Datenstrukturen und Algorithmen Christian Sohler FG Algorithmen & Komplexität 1 Clustering: Partitioniere Objektmenge in Gruppen(Cluster), so dass sich Objekte in einer Gruppe ähnlich sind und Objekte

Mehr

Kantengraphen und Planare Graphen. Seminararbeit

Kantengraphen und Planare Graphen. Seminararbeit Kantengraphen und Planare Graphen Seminararbeit in Mathematisches Seminar für LAK 621.378 SS 2018 vorgelegt von Anna Maria Gärtner bei: Baur, Karin, Univ.-Prof. Dr.phil. Graz, 2018 Inhaltsverzeichnis 1

Mehr

Proseminar über multimediale Lineare Algebra und Analytische Geometrie

Proseminar über multimediale Lineare Algebra und Analytische Geometrie Proseminar über multimediale Lineare Algebra und Analytische Geometrie Aufgabensteller: Dr. M. Kaplan Josef Lichtinger Montag, 1. Dezember 008 Proseminar WS0809 Inhaltsverzeichnis 1 Aufgabenstellung 3

Mehr

Mesh-Visualisierung. Von Matthias Kostka. Visualisierung großer Datensätze

Mesh-Visualisierung. Von Matthias Kostka. Visualisierung großer Datensätze Mesh-Visualisierung Von Matthias Kostka Übersicht Einführung Streaming Meshes Quick-VDR Rendering virtueller Umgebung Rendering mit PC-Clustern Zusammenfassung 2 Mesh Untereinander verbundene Punkte bilden

Mehr

Distributed Algorithms. Image and Video Processing

Distributed Algorithms. Image and Video Processing Chapter 6 Optical Character Recognition Distributed Algorithms for Übersicht Motivation Texterkennung in Bildern und Videos 1. Erkennung von Textregionen/Textzeilen 2. Segmentierung einzelner Buchstaben

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 0..0 Minimale Schnitte in Graphen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales Forschungszentrum

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale

Mehr

5. Bäume und Minimalgerüste

5. Bäume und Minimalgerüste 5. Bäume und Minimalgerüste Charakterisierung von Minimalgerüsten 5. Bäume und Minimalgerüste Definition 5.1. Es ein G = (V, E) ein zusammenhängender Graph. H = (V,E ) heißt Gerüst von G gdw. wenn H ein

Mehr

12. Flächenrekonstruktion aus 3D-Punktwolken und generalisierte Voronoi-Diagramme

12. Flächenrekonstruktion aus 3D-Punktwolken und generalisierte Voronoi-Diagramme 12. Flächenrekonstruktion aus 3D-Punktwolken und generalisierte Voronoi-Diagramme (Einfache) Voronoi-Diagramme: Motivation: gegeben: Raum R, darin Menge S von Objekten Frage nach Zerlegung von R in "Einflusszonen"

Mehr

Kapitel 2: Mathematische Grundlagen

Kapitel 2: Mathematische Grundlagen [ Computeranimation ] Kapitel 2: Mathematische Grundlagen Prof. Dr. Stefan M. Grünvogel stefan.gruenvogel@fh-koeln.de Institut für Medien- und Phototechnik Fachhochschule Köln 2. Mathematische Grundlagen

Mehr

Triangulierung von einfachen Polygonen

Triangulierung von einfachen Polygonen Triangulierung von einfachen Polygonen - Seminarvortrag von Tobias Kyrion - Inhalt: 1.1 Die Problemstellung Quellenangabe 1.1 Die Problemstellung Definition Polygon: endlich viele paarweise verschiedene

Mehr

1 Datenstrukturen Datenstrukturen und Algorithmen

1 Datenstrukturen Datenstrukturen und Algorithmen 1 Datenstrukturen 1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen 1 1.5 Graphen Darstellung allgemeiner Beziehungen zwischen Objekten/Elementen Objekte = Knoten:

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Datenstrukturen: Anordnung von Daten, z.b. als Liste (d.h. in bestimmter Reihenfolge) Beispiel: alphabetisch sortiertes Wörterbuch... Ei - Eibe - Eidotter... als Baum (d.h.

Mehr

Algorithmen auf Sequenzen

Algorithmen auf Sequenzen Algorithmen auf Sequenzen Fehlertolerante Mustersuche: Distanz- und Ähnlichkeitsmaße Sven Rahmann Genominformatik Universitätsklinikum Essen Universität Duisburg-Essen Universitätsallianz Ruhr Einführung

Mehr

4. Segmentierung von Objekten Video - Inhaltsanalyse

4. Segmentierung von Objekten Video - Inhaltsanalyse 4. Segmentierung von Objekten Video - Inhaltsanalyse Stephan Kopf Inhalt Vorgehensweise Berechnung der Kamerabewegungen zwischen beliebigen Bildern Transformation eines Bildes Hintergrundbilder / Panoramabilder

Mehr

2. Repräsentationen von Graphen in Computern

2. Repräsentationen von Graphen in Computern 2. Repräsentationen von Graphen in Computern Kapitelinhalt 2. Repräsentationen von Graphen in Computern Matrizen- und Listendarstellung von Graphen Berechnung der Anzahl der verschiedenen Kantenzüge zwischen

Mehr

Relationen und Graphentheorie

Relationen und Graphentheorie Seite Graphentheorie- Relationen und Graphentheorie Grundbegriffe. Relationen- und Graphentheorie gehören zu den wichtigsten Hilfsmitteln der Informatik, die aus der diskretenmathematik stammen. Ein Graph

Mehr

Grundlagen zur Delaunay-Triangulierung und zur konvexen Hülle. zum Begriff des Voronoi-Diagramms (vgl. auch Vorlesung "Algorithmische Geometrie"):

Grundlagen zur Delaunay-Triangulierung und zur konvexen Hülle. zum Begriff des Voronoi-Diagramms (vgl. auch Vorlesung Algorithmische Geometrie): Grundlagen zur Delaunay-Triangulierung und zur konvexen Hülle zum Begriff des Voronoi-Diagramms (vgl. auch Vorlesung "Algorithmische Geometrie"): 1 Erzeugung des Voronoi-Diagramms (siehe Vorlesung "Algorithmische

Mehr

= n (n 1) 2 dies beruht auf der Auswahl einer zweielementigen Teilmenge aus V = n. Als Folge ergibt sich, dass ein einfacher Graph maximal ( n E = 2

= n (n 1) 2 dies beruht auf der Auswahl einer zweielementigen Teilmenge aus V = n. Als Folge ergibt sich, dass ein einfacher Graph maximal ( n E = 2 1 Graphen Definition: Ein Graph G = (V,E) setzt sich aus einer Knotenmenge V und einer (Multi)Menge E V V, die als Kantenmenge bezeichnet wird, zusammen. Falls E symmetrisch ist, d.h.( u,v V)[(u,v) E (v,u)

Mehr

Algorithmische Geometrie: Delaunay Triangulierung (Teil 2)

Algorithmische Geometrie: Delaunay Triangulierung (Teil 2) Algorithmische Geometrie: Delaunay Triangulierung (Teil 2) Nico Düvelmeyer WS 2009/2010, 2.2.2010 Überblick 1 Delaunay Triangulierungen 2 Berechnung der Delaunay Triangulierung Randomisiert inkrementeller

Mehr

Kapitel 2. Mittelwerte

Kapitel 2. Mittelwerte Kapitel 2. Mittelwerte Im Zusammenhang mit dem Begriff der Verteilung, der im ersten Kapitel eingeführt wurde, taucht häufig die Frage auf, wie man die vorliegenden Daten durch eine geeignete Größe repräsentieren

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 14. Mai

Mehr

Aufgaben zur Klausurvorbereitung

Aufgaben zur Klausurvorbereitung Vorlesung Graphen und Optimierung Sommersemester 2013/14 Prof. S. Lange Aufgaben zur Klausurvorbereitung Hier finden Sie eine Reihe von Übungsaufgaben, die wir an den beiden Vorlesungsterminen am 29.01.2014

Mehr

Mustererkennung. Übersicht. Unüberwachtes Lernen. (Un-) Überwachtes Lernen Clustering im Allgemeinen k-means-verfahren Gaussian-Mixture Modelle

Mustererkennung. Übersicht. Unüberwachtes Lernen. (Un-) Überwachtes Lernen Clustering im Allgemeinen k-means-verfahren Gaussian-Mixture Modelle Mustererkennung Unüberwachtes Lernen R. Neubecker, WS 01 / 01 Übersicht (Un-) Überwachtes Lernen Clustering im Allgemeinen k-means-verfahren 1 Lernen Überwachtes Lernen Zum Training des Klassifikators

Mehr

Abschnitt 19: Sortierverfahren

Abschnitt 19: Sortierverfahren Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758

Mehr

Suche nach korrespondierenden Pixeln

Suche nach korrespondierenden Pixeln Suche nach korrespondierenden Pixeln Seminar Algorithmen zur Erzeugung von Panoramabildern Philip Mildner, Gliederung 1. Motivation 2. Anforderungen 3. Moravec Detektor 4. Harris Detektor 5. Scale Invariant

Mehr

Beschleunigung von Bild-Segmentierungs- Algorithmen mit FPGAs

Beschleunigung von Bild-Segmentierungs- Algorithmen mit FPGAs Fakultät Informatik, Institut für Technische Informatik, Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Algorithmen mit FPGAs Vortrag von Jan Frenzel Dresden, Gliederung Was ist Bildsegmentierung?

Mehr

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen 16OH21005 gefördert. Die Verantwortung für den Inhalt dieser

Mehr

Shader. Computer Graphics: Shader

Shader. Computer Graphics: Shader Computer Graphics Computer Graphics Shader Computer Graphics: Shader Inhalt Pipeline Memory Resources Input-Assembler Vertex-Shader Geometry-Shader & Stream-Output Rasterizer Pixel-Shader Output-Merger

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-14 Kapitel V: Modeling Transformation & Vertex Shader 5.1 Vertex Definitionen: Vertex Vertex Computergrafik Mathematischer Punkt auf einer Oberfläche

Mehr

Umkehrfunktionen 1-E. Ma 1 Lubov Vassilevskaya

Umkehrfunktionen 1-E. Ma 1 Lubov Vassilevskaya Umkehrfunktionen 1-E Wiederholung: Funktion als eine Abbildung Abb. 1-1: Darstellung einer Abbildung Eine Funktion f (x) beschreibt eine Abbildung von X nach Y f X Y, x f x Der erste Ausdruck charakterisiert

Mehr

Transformation - Homogene Koordinaten. y + b )

Transformation - Homogene Koordinaten. y + b ) Transformation - Homogene Koordinaten In der "üblichen" Behandlung werden für die Verschiebung (Translation) und die Drehung (Rotation) verschiedene Rechenvorschriften benutzt - einmal Addition von Vektoren

Mehr

Einheit 11 - Graphen

Einheit 11 - Graphen Einheit - Graphen Bevor wir in medias res (eigentlich heißt es medias in res) gehen, eine Zusammenfassung der wichtigsten Definitionen und Notationen für Graphen. Graphen bestehen aus Knoten (vertex, vertices)

Mehr

Dieses Kapitel vermittelt:

Dieses Kapitel vermittelt: 2 Funktionen Lernziele Dieses Kapitel vermittelt: wie die Abhängigkeit quantitativer Größen mit Funktionen beschrieben wird die erforderlichen Grundkenntnisse elementarer Funktionen grundlegende Eigenschaften

Mehr

Dynamisches Huffman-Verfahren

Dynamisches Huffman-Verfahren Dynamisches Huffman-Verfahren - Adaptive Huffman Coding - von Michael Brückner 1. Einleitung 2. Der Huffman-Algorithmus 3. Übergang zu einem dynamischen Verfahren 4. Der FGK-Algorithmus 5. Überblick über

Mehr

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Bereichsabfragen II. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 17.07.2012 Objekttypen in Bereichsabfragen y0 y0 y x x0 Bisher

Mehr

Der Branching-Operator B

Der Branching-Operator B Branching 1 / 17 Der Branching-Operator B Unser Ziel: Löse das allgemeine Minimierungsproblem minimiere f (x), so dass Lösung(x). B zerlegt eine Menge von Lösungen in disjunkte Teilmengen. Die wiederholte

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 6 Prof. Dr. Gerhard Heyer Institut für Informatik Abteilung Automatische Sprachverarbeitung Universität Leipzig 16. Mai 2018 [Letzte Aktualisierung: 18/05/2018,

Mehr

Algorithmische Geometrie: Schnittpunkte von Strecken

Algorithmische Geometrie: Schnittpunkte von Strecken Algorithmische Geometrie: Schnittpunkte von Strecken Nico Düvelmeyer WS 2009/2010, 3.11.2009 3 Phasen im Algorithmenentwurf 1. Konzentration auf das Hauptproblem 2. Verallgemeinerung auf entartete Eingaben

Mehr

Iterative Methods for Improving Mesh Parameterizations

Iterative Methods for Improving Mesh Parameterizations Iterative Methods for Improving Mesh Parameterizations Autoren: Shen Dong & Michael Garland, SMI 07 Nicola Sheldrick Seminar Computergrafik April 6, 2010 Nicola Sheldrick (Seminar Computergrafik)Iterative

Mehr

Algorithmische Graphentheorie

Algorithmische Graphentheorie Algorithmische Graphentheorie Vorlesung 4: Suchstrategien Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 14. April 2017 HALBORDNUNG TOPOLOGISCHE ORDNUNG TOPOLOGISCHES

Mehr

5. Gitter, Gradienten, Interpolation Gitter. (Rezk-Salama, o.j.)

5. Gitter, Gradienten, Interpolation Gitter. (Rezk-Salama, o.j.) 5. Gitter, Gradienten, Interpolation 5.1. Gitter (Rezk-Salama, o.j.) Gitterklassifikation: (Bartz 2005) (Rezk-Salama, o.j.) (Bartz 2005) (Rezk-Salama, o.j.) Allgemeine Gitterstrukturen: (Rezk-Salama, o.j.)

Mehr

Der n-dimensionale Raum

Der n-dimensionale Raum Der n-dimensionale Raum Mittels R kann nur eine Größe beschrieben werden. Um den Ort eines Teilchens im Raum festzulegen, werden schon drei Größen benötigt. Interessiert man sich für den Bewegungszustand

Mehr

Reconstruction and simplification of surfaces from contoures

Reconstruction and simplification of surfaces from contoures CG Seminar Reconstruction and simplification of surfaces from contoures Nach Klein, Schilling und Straßer Referent Thomas Kowalski Anfangssituation - Punktdaten Das zu rekonstruierende Objekt besteht aus

Mehr

6. Texterkennung in Videos Videoanalyse

6. Texterkennung in Videos Videoanalyse 6. Texterkennung in Videos Videoanalyse Dr. Stephan Kopf 1 Übersicht Motivation Texterkennung in Videos 1. Erkennung von Textregionen/Textzeilen 2. Segmentierung einzelner Buchstaben 3. Auswahl der Buchstabenpixel

Mehr

Glossar. zum Projekt. Dynamische Geometrie-Software. Version 1 vom Gruppe geo09, Projektleiter: Andy Stock

Glossar. zum Projekt. Dynamische Geometrie-Software. Version 1 vom Gruppe geo09, Projektleiter: Andy Stock Glossar zum Projekt Dynamische Geometrie-Software Version 1 vom 03.05.03 Erstellt von: R. Hrushchak, P. Kongsto, A. Stock Seite 1 von 5 Animation: Folge von Schritten zur Erstellung und Veränderung einer

Mehr