Okay, also, wir machen weiter.
Guten Abend.
Und zwar, wir haben uns am Montag als letztes angeguckt, wie man die
mediale Axi eines Objekts bestimmt, anhand von zweidimensionalen
Beispielen.
Und wir wollen, ich will das Kapitel hier greifen, abschließen mit
einem Beispiel eines Greifplaners, was tatsächlich diese
Repräsentationen von Objekten benutzt, um Greife zu generieren.
Also, bis jetzt haben wir die komplette Form eines Objekts verwendet,
um einen Greif zu generieren.
Und jetzt gehen wir von diesen Formen, also, wie man sieht hier, das
ist hier so ein L.
Und statt, dass wir diese komplette Geometrie berücksichtigen, haben
wir diese grünen Linien.
Das ist die mediale Axi von diesem Objekt.
Und das waren hier die Beispiele, wie man das bestimmt.
Und man sieht hier, man muss versuchen, möglichst große Kreise in
diese Form reinzufitten, die immer die Form an mindestens zwei Punkten
berührt.
Und die Vereinigung der Zentren aller Kreise, beziehungsweise im
dreidimensionalen Fall aller Kugeln, ist die sogenannte mediale Axi.
Also, eigentlich, wenn ihr euch an Voronoi-Diagramme erinnert, wir
haben ja auch diese Linien so gezogen bei der Konstruktion von einem
Voronoi -Diagramm, dass die Punkte links und rechts immer den gleichen
Abstand zu den Zentren haben.
Also, dass die Punkte auf der Linie den gleichen Abstand zu den
Zentren haben.
Natürlich Voronoi-Diagramme sind nur im zweidimensionalen Fall
definiert.
Man könnte diese mediale Axi als die Verallgemeinerung oder der
dreidimensionale Voronoi-Diagramm hier bezeichnen, wenn man will.
Aber zurück zum Greifen, das heißt, statt die Geometrie der Objekte
nehmen wir die mediale Axi.
Die gibt uns Informationen über Symmetrie und über die Struktur des
Objekts.
Und was man hier macht, und ich nehme als Beispiel unsere berühmte
Sprühdose, für die wir Griffe generieren konnten.
Letztes Mal zum Beispiel mit Hilfe von der Box-Dekompositionsmethode.
Das heißt, wir zerlegten das Objekt in Boxen und konnten unten, in der
Mitte, oben greifen.
Und was man hier macht, muss man natürlich die Oberfläche abtasten,
damit man weiß, wo muss man jetzt welche Kugeln reinfitten.
Und dann fängt man an mit diesem Prozess, was wir vorher visualisiert
gesehen haben.
Und dann kriegt man die Vereinigung aller Zentren der Kugeln, die man
gefittet hat, in diese Form als die mediale Axi.
Und man sieht hier natürlich in dieser medialen Axi ganz schön, dass
eigentlich die Struktur von dieser Sprühfläche sehr gut oder sehr
schön beschrieben wird durch diese dichten grünen Punkten hier in den
Bildern.
Das heißt, das Problem der Greifplanung reduziert sich jetzt auf die
Bestimmung von Griffen auf diese grüne Struktur und nicht mehr auf die
ursprüngliche Geometrie von dem Objekt.
Und was macht man hier?
Also man analysiert Querschnitte dieses Objekts, also Querschnitte der
medialen Axi.
Wenn man da hier schneidet, zum Beispiel unten, dann bekommt man so
eine Form.
Das sind hier Punkte, also Zentren von Kugeln, die an dieser Stelle in
das Objekt gefittet wurden und reduziert somit das
Greifplanungsproblem an dieser Stelle auf die Bestimmung von Griffen
auf diese Strukturen oder für diese Strukturen.
Also wie kann ich diese Äste zum Beispiel hier greifen?
Und das ist so naheliegend eigentlich.
Wenn ich das so mal angucke und ich will diesen Ast mal greifen, dann
weiß ich, ich muss mich in die Richtung mal annähern, also entlang zum
Beispiel dieser Verbindung, um einen Griff vom Objekt zu bestimmen.
Aber dazu sind ein paar Schritte hier notwendig, mit denen man das
Ganze systematisch machen kann.
Dann kann man anhand von Heuristiken wie vorher auch Greifhypothesen
generieren und natürlich muss man die Stabilität dieser
Greifhypothesen mithilfe von unserer Y- oder V-Matrix evaluieren.
Gucken wir uns das Ganze an, wie das funktioniert.
Das heißt, wir haben die mediale Achse, wir tasten die Oberfläche des
Objekts, wir tun Kugeln rein und dann kriegen wir diese Vereinigung
der Zentren der Kugeln, das sind die grünen Punkte, und dann schneiden
wir hier und kriegen wir diese Strukturen.
Und diese Strukturen sind noch nicht so sehr schön und deshalb
versuchen wir mal, das ein bisschen systematisch zu analysieren
beziehungsweise zu gucken, welche unterschiedlichen Strukturen
überhaupt auftreten können.
Gibt es überhaupt so viele Strukturen, die man berücksichtigen kann
oder kann man diese Strukturen auf Grundformen zurückführen und sagen,
ich habe nur eine begrenzte Anzahl von Strukturen und für die überlege
ich mir Heuristiken, mit denen ich Greifhy generiere und das war es.
Was man hier macht, man bekommt eigentlich so etwas.
Das heißt, das ist so ein Querschnitt, jetzt ein bisschen vergrößert
von der medialen Achse.
Das ist so ein Schnitt durch diese Sprühfläche, also die Punkte hier
sind Zentren von Kugeln der medialen Achse, also eigentlich Elemente
der medialen Achse.
Und was wir als erstes machen, wir suchen immer die nächsten
Nachbarbeziehungen zwischen diesen Punkten.
Na ja, was bedeutet das?
Und anschließend die Verzweigungspunkte.
Und was macht man das?
Man macht hier die nächsten Nachbarn.
Das sieht man ja hier gleich, dann hat man so diesen Graph, also man
bestimmt den sogenannten Minimum Spanning Tree dieser Punkte und als
Ergebnis sind dann alle Punkte mit dem nächsten Nachbarn verbunden.
Als nächstes, man entfernt solche Kanten in diesen Strukturen oder
Kanten zwischen Punkten in der Struktur, die über einen bestimmten
Grenzwert voneinander weit entfernt liegen.
Also wenn ich zum Beispiel einen D-Cut hier als einen Grenzwert, das
wäre also Parameter 1 in meinem Algorithmus, was ich auch
berücksichtigen muss, dann kann ich sagen, diese grüne Kante hier kann
ich trennen und dann habe ich zwei Cluster von Punkten in meiner
medialen Achse Repräsentation.
Das ist Cluster 1, wie man sieht, und das ist Cluster 2.
Also ich habe nur hier getrennt und dann kriege ich Cluster 1 und
Cluster 2.
Und im nächsten Schritt bilden wir das Volumen der konvexen Hülle um
diese Cluster.
Man sieht hier also konvexe Hülle um diese Punkte und konvexe Hülle um
diese Punkte.
Dann betrachten wir die Randpunkte der konvexen Hülle.
Und man sieht hier, da gibt es ja große Unterschiede.
Auf der einen Seite haben wir in dem einen Cluster viele Randpunkte,
in dem anderen Cluster haben wir weniger Randpunkte.
Also das sind diese grünen Punkte hier.
Und als dritter Schritt betrachten wir oder bestimmen wir die
Verzweigungspunkte in diesem Minimum Spanning Tree.
Also wo verzweigt sich was?
Man sieht eigentlich hier verzweigt sich was, hier verzweigt sich was,
hier verzweigt sich was und hier verzweigt sich was.
Das heißt diese Verzweigungspunkte, die ich hier rot markieren will.
Und als letzter Schritt bildet man den Schwerpunkt von diesem Cluster.
Ja, also das heißt, das wäre das Y.
Das wären jetzt diese blauen Punkte hier, das ist der Schwerpunkt von
Cluster 1 und das ist der Massenschwerpunkt von Cluster 2.
So, ziemlich einfache Operationen eigentlich, die man auf diese zwei
Cluster hier ausführen kann.
Und wenn man das macht, dann kommt man eigentlich auf eine begrenzte
Anzahl von Cluster Strukturen.
Und zwar immer wieder, bei allen Beispielen, kommt man auf diese
Fälle.
Das heißt, man bekommt zum Beispiel Kreise, ja, das wäre so ein Kreis,
wo ich eine große Distanz zwischen Massenschwerpunkt und dem nächsten
Nachbarn auf der medialen Achse habe.
Also nicht unbedingt Randpunkt, sondern der nächste Nachbar auf der
medialen Achse.
Und wie man sieht, habe ich hier viele Punkte auf dem Rand von dieser
Konvexshülle.
Das gleiche hier.
Ich kriege irgendwelche Elemente, die eine Symmetrieachse haben, zum
Beispiel dieses Dreieck hier.
Und da sieht man, man hat ein geringeres Volumen der Konvexshülle und
man hat weniger Punkte auf dem Rand.
Das gleiche hier bei diesem Rechteck, was man hier sieht.
Ich kriege auch Sterne.
Also das ist so ein Stern beispielsweise, wo ich auch genau einen
Verzweigungspunkt habe.
Natürlich hat dieser Stern eine Symmetrieachse, deshalb haben wir
weniger Punkte auf dem Rand.
Oder ich kriege solche Situationen, wo ich eine präferierte Richtung
bei den Objekten habe.
Bei dem und bei dem.
Ich habe ja weniger Punkte hier auf dem Rand nach wie vor, wie diese
Elemente mit einer Symmetrieachse.
Und ich habe genau zwei Verzweigungspunkte.
Also zum Beispiel hier.
Zwei Verzweigungspunkte und dann ist es klar, okay, das ist so eine
präferierte Richtung für das Greifen, wo ich von rechts
beziehungsweise von links kommen kann.
Oder ich habe so einen Stern mit einem Ring.
Also das wäre hier ein Ring, wie man hier sieht.
Und hier auch ein Ring.
Und darin sind auch Verzweigungspunkte enthalten.
Also somit habe ich einen Stern.
Also der Stern, das bilden diese Äste hier.
Und das ist der Ring hier drumherum, wo ich einen großen Abstand zum
Massenschwerpunkt habe und wo ich mehrere Verzweigungspunkte habe.
Naja, das heißt, ihr seid so ruhig.
Sehr komisch.
Okay, das heißt, also ruhig interpretiere ich immer mit interessant.
Ja, also weil wenn es einfach oder langweilig oder so, dann reden die
Leute mit dem Nachbarn und so weiter und so fort.
Ich freue mich.
Ich hoffe auch, dass meine Interpretation richtig ist.
Gut, das heißt, was müssen wir jetzt machen, um Greifhypothesen zu
generieren?
Wir brauchen ein paar Heuristiken, mit denen wir diese Formen greifen
können.
Also diese Formen, das ist nur eine Schicht in der medialen Achse.
Also wir haben geschnitten durch die Sprühfläche.
Und jetzt anhand von diesen Formen können wir jetzt geeignete
Annäherungen bzw.
Griffe erzeugen.
Und das ist ziemlich einfach zu machen.
Das heißt, für unser Beispiel hier, wenn wir diese Analyse machen, die
ich gerade erklärt habe, dann bekommen wir unterschiedliche
Strukturen, also unterschiedliche Formen an den unterschiedlichen
Stellen von dem Objekt.
Also hier bekommen wir ausschließlich Sterne, weil da ist die
Symmetrieachse hier und nur ein paar Punkte am Rand hier.
So präferierte Richtung, weil wir haben die Box da unten von der
Sprühfläche.
Hier unten haben wir einen Stern mit einem Ring, genauso wie oben
hier.
Hier haben wir auch etwas Quadratisches, Praktisches, deshalb
präferierte Richtungen.
Und hier haben wir Elemente mit einer Symmetrieachse, wie man sieht.
Das sieht man natürlich jetzt, wenn man diese Schnitte mal anguckt und
vergleicht mit den Formen der Cluster, die ich vorher auf der Folie
hatte.
So, das heißt, das Problem ist wie folgendes.
Ich definiere jetzt solche Heuristiken, wie ich mich annähern soll an
solchen Strukturen.
Und das sind hier, wie man sieht auf der Seite, das sind Griffy auf
Objekte, die mithilfe von diesem Greifplaner generiert wurden.
Das sind die Objekte hier nochmal dargestellt und das sind deren
mediale Achserepräsentationen.
Und für die Näherungsrichtung der Hand sind entscheidend die
Verzweigungspunkte von dem Minimum Spanning Tree, die Spitzen von
einem Stern oder die Symmetrieachsen, die man findet, oder der Rand
von offenen Objekten.
Also der Rand von dieser Schüssel zum Beispiel hier.
Und das sind, wie man sieht hier, Annäherungsrichtungen für die
Generierung von solchen Griffen.
Nun, die Annäherungsrichtung ist nicht ausreichend, um Objekte zu
greifen.
Das heißt, wenn ich das Objekt hier habe und ich habe diese
Annäherungsrichtung, das ist ein Objekt mit einer präferierten
Annäherungsrichtung, dann muss ich noch dazu die Handorientierung
bestimmen, weil nicht nur die Richtung, sondern wie die Hand
orientiert ist.
Das heißt, diesen Rollwinkel der Hand, den kann man natürlich
bestimmen anhand der lokalen Symmetrieachsen bzw.
Symmetrieebenen, die man hier findet.
Und wenn wir jetzt komplexere Objekte haben, also nicht nur diese
Objekte hier, dann können wir diese Heuristiken hier miteinander
kombinieren, also nicht nur die Annäherungsrichtung hier, sondern die
Annäherungsrichtung hier und den Rand von offenen Objekten, um
beispielsweise dieses Maß hier auch von oben zu greifen und nicht nur
am Griff.
Genauer betrachtet sieht das Ganze so aus für diese Objekte.
Das ist zum Beispiel die Zwiebackbox, das ist die mediale Achse und
alle Querschnitte durch diese mediale Achse ergeben nur diese zwei
Formen.
Das ist ein Stern mit Ring oder Ring mit Stern und das ist nur ein
Stern.
Das heißt, Annäherung an Verzweiflungspunkten der medialen Achse in
diese Richtung.
Also das wären jetzt meine Annäherungsrichtungen, die ich hier
bestimmen kann.
Und den Rollwinkel kann ich so definieren, unter Nutzung von diesen
Symmetrieachsen.
Das ist ja eine Symmetrieachse hier und das ist ja auch eine
Symmetrieebene.
Also dieser Bereich hier, da kann ich natürlich den Rollwinkel, also
die Orientierung der Hand bestimmen.
Das ist die Amicelli-Schokoladebox und da sieht man hier in der
medialen Achse kriegt man nur diese zwei Formen.
In der Mitte kriegt man nur einen Stern und hier oben und unten kriegt
man einen Stern mit Ring oder Ring mit Stern.
Das heißt, wir nähern uns mit der Hand hier an den Sternspitzen und
natürlich den Rollwinkel anhand der Symmetrieebene, die hier gegeben
ist, können wir ausrichten.
Das ist unser Salz hier und man sieht beim Salz, die mediale Achse war
nur eine Linie hier.
Das heißt, in der Mitte ist es nur ein Punkt und ab dem Punkt hier,
egal wie wir schneiden, kriegen wir einen Kreis.
Das heißt, wir haben nur zwei Formen, einen Punkt und einen Kreis.
Bei dieser Schüssel, egal wo wir schneiden, in der medialen Achse
kriegen wir einen Kreis.
Was bedeutet das?
Das bedeutet, wir nähern uns an den Kreis hier und Symmetrieachse aus
beliebigen Richtungen hier und der Rollwinkel natürlich basierend auf
dieser Symmetrieachse, die wir haben.
Hier, das sind so Objekte mit Öffnungen, das heißt, wir nähern uns an
den Rand der Öffnung und generieren diese Griffe.
Also mit den Heuristiken wurden solche Griffe hier generiert, wie
dargestellt ist.
So, nun wie bei jedem Greifplaner ist es nicht nur, dass wir
irgendwelche Griffe generieren, sondern wir müssen die Qualität von
dem Griff bewerten.
Das haben wir gemacht für diesen Greifplaner der medialen Achse.
Das sind hier ganz kuriose Bilder, das sind so Kugeln, die blauen
Kugeln hier, die geben uns die Position vom Tool Center Point oder vom
Handgelenk während des Greifens.
Also da steht die Hand hier, das sind die Annäherungsrichtungen an das
Objekt, diese dünnen Linien.
Und je größer der Durchmesser von diesen Kugeln, also das sind Kugeln
übereinander oder nebeneinander, wie man sieht hier, das ist eine
Einzelkugel, das sind die übereinander hier, weil ich kann an dieses
cylindrische Objekt von jeder beliebigen Orientierung mal rangehen
oder an jeder beliebigen Höhe drankommen.
Je größer der Durchmesser von diesen Kugeln, desto besser der Griff
ist.
Man sieht zum Beispiel hier Griffe, die weiter sind hier mit einem
kleineren Durchmesser.
Da kommt die Hand natürlich noch gerade noch mit den Fingerspitzen an
das Objekt und deshalb sind diese Griffe, also dieser Griff hier,
weniger stabil als beispielsweise dieser Griff.
Also dieser Griff wäre weniger stabil als der hier.
Okay, und die roten Kugeln, das sind Griffe, die generiert wurden, die
keine stabilen Griffe sind.
Und was fällt euch auf?
Eigentlich ganz wenige Griffe wurden generiert, die nicht stabil sind
im Vergleich zu anderen Greifplanen.
Das ist nochmal für andere Objekte die gleiche Notation.
Man sieht hier, je weiter man vom Objekt kommt, desto weniger stabil
der Griff ist.
Auch hier, beziehungsweise auch hier, alle Annäherungsrichtungen für
die Griffe, die dieser Greifplaner erzeugt sind, durch diese dünnen
Linien.
Ich weiß nicht, ob die Leute, die hinten sitzen, auch diese grünen
dünnen Linien hier auch sehen können.
Könnt ihr?
Ja?
Okay.
So, nun, das ist alles sehr qualitativ.
Lass uns das Ganze mal ein bisschen quantitativ angucken.
Und zwar ein Vergleich.
Das ist übrigens eine Arbeit, die wir 2013, also dieser Greifplaner
hier, entwickelt haben.
Sogar 2012 oder 2011.
Und da sieht man hier die Griffe, die erzeugt werden.
Ja, das ist jetzt auch für die Armehand.
Und man sieht hier die unterschiedlichen Griffe für diese
Sprühflasche, die hier generiert werden mit der Visualisierung der
Stabilität.
Also die Größe von der Kugel gibt uns an, wie stabil der Griff ist.
Auch Griffe von unten, wie man sieht hier auf das Objekt.
Wenn es keine anderen Objekte in der Umgebung gibt, dann kann die Hand
natürlich auch solche Griffe erzeugen.
Natürlich das Ganze auch mit anderen Roboterhänden.
Das ist die Barrett-Hand, die Dreifinger-Hand, die auch für diese
Objekte die Griffe erzeugt.
Aber was ganz wichtig ist, wir haben das verglichen mit einem der
damals besten Greifplaner von Dimitri Bernasson, hier von 2007.
Und er basiert darauf oder nutzt die Information der
überflächennormalen Umgriffe zu erzeugen.
Und was hier auffällt eigentlich auf der einen Seite, zum Beispiel
nehmen wir mal die erste Zeile.
Das sind die Griffe der MA.
MA ist der mediale Achsen-Greifplaner.
Und das ist hier der Dimitri Bernasson-Greifplaner, der auf die
überflächennormalen basiert.
Man sieht hier zum Beispiel für diese Brotbox, dass unser Planer knapp
650 Griffe generiert hat, während der andere Planer 13.000 Griffe
generiert hat.
Und in der zweiten Spalte sieht man nebendran, dass man hier 86% von
diesen Griffen stabile Griffe waren und hier nur 15% der Griffe stabil
waren.
Egal, auch wenn die 15% von 13.440 ist gleich mit der 86% von den 632,
ist das ein wesentlicher Vorteil.
Weil der Greifplaner muss ja oder er muss nicht so viele Griffe
erzeugen, damit man überhaupt eine vernünftige Menge von stabilen
Griffen realisiert.
Warum sollen wir solche blödsinnigen Griffe überhaupt erzeugen, die
geometrisch nicht sinnvoll oder nicht möglich sind?
Das gleiche sieht man auch hier, zum Beispiel bei der Salatbox oder
Salatschüssel.
Auch hier 70% von diesen 500 Griffen, die generiert wurden, sind
stabile Griffe.
Im Vergleich dazu 13.000 Griffe, die der andere Planer erzeugen muss,
wovon aber nur 4,5% stabile Griffe sind.
Also der Vorteil ist, dass man nicht so viele Griffe erzeugen kann und
dass man in diesen wenigen Griffen, die man erzeugt hat, viele stabile
Griffe hat.
Ja, eine Frage sehe ich gerade.
Für die Berechnung der Griffe, die sind ähnlich.
Aber natürlich für die Berechnung aller Griffe, aber nicht für die
Bestimmung der Stabilität eines Griffs.
Also die Berechnung der Griffe ist ähnlich in beiden, aber die
Bewertung spielt...
Also auch wenn die Bewertung ähnlich ist, kann ich mich nicht mehr
erinnern, aber auch wenn die Bewertung ähnlich ist, bei dieser Anzahl
von Griffen, die man bewerten muss, ist der Greifer hier auf jeden
Fall überlegen.
Weil ich muss nicht so viele Griffe bewerten, ob sie jetzt stabil sind
oder nicht.
Zufrieden?
Geht so?
Okay.
Gut.
Das ist eine kurze Zusammenfassung.
Es ist ein neuartiger Ansatz.
Wir haben die Methode ein paar Jahre liegen lassen, aber jetzt nochmal
aufgegriffen.
Und wir haben auch neuere Arbeiten zur Generierung von solchen
Griffen, basierend auf Erweiterungen von dieser Methode.
Weil, wie wir jetzt zum Beispiel gesehen haben, diese Kugeln, die wir
in die Objekte reintun, damit wir die mediale Achse, die sind ja
unterschiedlich groß.
Ja, also eine Kugel dick oder kleiner und größer.
Und natürlich können wir jetzt hier ohne weiteres keine Griffe auf die
Details erzeugen, wenn wir zum Beispiel die Durchmesser der Kugeln,
die wir benutzen, um die mediale Achse oder die, die mediale Achse
bilden, nicht berücksichtigen.
Und deshalb haben wir einige Erweiterungen hier gemacht.
Ich habe nur ganz grob hier etwas mitgebracht.
Und zwar, das sind so irgendwelche, ein Datensatz mit Objekten in der
Computer -Grafik oder Computer-Vision-Community auch.
Und da sieht man hier eigentlich die Griffe, die auf diesem Stuhl
erzeugt wurden, beziehungsweise auf diesem Hai.
Und die roten oder die rosafarbenen Bereiche, die man in der Animation
sieht, das sind Bereiche am Objekt, die überhaupt nicht infrage kommen
für einen Griff mit der armen Hand, weil sie zum Beispiel zu groß
sind.
Wenn ich diese Vase hier betrachte, dann sind diese Bereiche hier
überhaupt nicht notwendig oder überhaupt nicht realistisch für einen
Griff, weil die Hand sowas nicht machen kann.
Beziehungsweise die Griffe hier auf dem hier oder die Griffe hier auf
diesem Objekt an der Stelle hier.
Und man sieht hier auch ein bisschen nicht nur Annäherungslinien, also
wie vorher, sondern man sieht so Kreuze.
Einmal eine grüne Linie und einmal noch mal so eine rote Linie an der
Spitze.
Das sind zwei Linien, die aus einer Hauptkomponentenanalyse der
lokalen Zentren der medialen Achse resultieren.
Und wo diese zwei Linien, die grüne Linie und die rote Linie, den
ersten und zweiten Eigenvektor sind, also die Eigenvektoren, die zu
den beiden größten Eigenwerten gehören.
Und der eine Eigenvektor gibt uns in dem Fall die Annäherungsrichtung
auf dem Objekt und der andere die Orientierung der Hand.
Also die zwei Komponenten, die wir über Heuristiken in der vorigen
Folie bestimmen konnten.
Man sieht aus einer weiteren Analyse zum Beispiel eine Brille.
Und das sind die Griffe, die der Greifer, also das ist die Hand hier,
man sieht die Karlsruher Hand hier, die diese Brille hier greift.
Und das sind die Annäherungsrichtungen und die Orientierung in der
Hand.
Und was ganz wichtig ist, dass mehr als 50 Prozent der Griffe, die auf
die Art und Weise generiert wurden, auch Force-Closure-Griffe sind.
Und ohne, dass man irgendwelches semantisches Wissen jetzt in den
Greifplaner...
Also wir haben überhaupt nicht darüber gesagt, wo greift man
normalerweise Tassen oder wo greift man eine Teekanie oder so.
Natürlich, eine Teekanie greift man im Griff oder beziehungsweise
diese Vase greift man auch im Griff.
Und man sieht hier, dass dieser Greifplaner ohne dieses zusätzliche
semantische Wissen, wo man Objekte greift, genau diese Griffe
generiert.
Also der generiert Griffe auf Griffen.
Weil wir würden ja, oder zumindest die Barrett-Hand oder die
Karlsruher Hand hier, wie man sieht, kann ja diese Vase beispielsweise
nicht greifen, also am Hauptkörper, sondern nur am Griff.
Okay, somit will ich das Thema abschließen.
Und ich hoffe, dass ich euch ein bisschen in das Gebiet, in das
komplexe, aber faszinierende Gebiet des Greifens, dass ich euch davor
motivieren konnte.
Natürlich, heutige Arbeiten gehen in die Richtung, wie man mit
ähnlichen Objekten oder mit unbekannten Objekten umgehen kann.
Also Griffe für unbekannte Objekte zum Beispiel basierend nur auf rein
Vision oder auf die Kombination von Vision und Haptik generieren kann.
Und wir werden in der Vorlesung Robotik 2 mehr über das Thema,
speziell zum Beispiel auch Deep Learning Ansätze, um Griffe für
unbekannte Objekte zu erzeugen.
So auf einmal habe ich bei der Motivation gesagt, dass wir so ein
System zum Greifen von bekannten Objekten haben, wo wir natürlich
Modelle von den Objekten haben, wo wir mithilfe von diesen
Greifplanen, die wir jetzt kennengelernt haben, Griffe erzeugen können
für jeden Objekt.
Dann speichern wir diese Griffe zusammen mit dem Objekt in einer
Objekt -Griff-Datenbank.
Wenn die Objekte erkannt werden hier von der Bildverarbeitung, unser
nächstes Thema in der Vorlesung, dann wird natürlich ein Griff hier
selektiert in der aktuellen Situation, eine kollisionsfreie Bewegung
erzeugt und ausgeführt.
Das sind so die Objekte, für die wir Repräsentationen
unterschiedlicher Formen haben, also sehr genaue zum Beispiel 3D
-Punktwolken oder Dreiecknetze, also Meshes, beziehungsweise auch
texturierte Meshes haben, auch Bilddaten, damit wir die Objekte
visuell erkennen können.
Da werden wir, wie gesagt, mehr darüber erzählen.
Und diese Objektmodelle, die wurden mit einem Scanner, also in einem,
in diesem, in dem Karlsruher Objektmodellierungszentrum hier erzeugt,
was bei uns noch am Institut für Anthropometrie und Robotik steht.
Das heißt, wir haben hier einen Minolta-Scanner, wir haben hier einen
rotierenden Tisch, wo man die Objekte drauf tut und dann generiert man
3D -Punktwolke, ein Stereokamerasystem, was entlang dieser Schiene
hier fährt und dann Bilder von den Objekten aufnimmt, die natürlich
für die Objekterkennung und Lokalisierung notwendig sind.
Das will ich mal skippen, wie das Ganze hier erzeugt wird.
Aber für die Leute, die Interesse haben, die können das in den Folien
nochmal lesen bzw.
die Videos im Netz angucken.
Also wie überhaupt diese Objektmodelle zunächst mal erzeugt werden.
Ich würde es mal skippen.
Da sieht man hier die 3D-Information der Objekte, die wird jetzt mit
diesem Scanner generiert.
Der rotierende Tisch hier, das Stereokamerasystem fängt an, jetzt
irgendwann mal sich zu bewegen und macht Aufnahmen hier.
Und irgendwann mal kriegen wir diese Objektmodelle.
Das ist eure Lieblings-Spruhflasche, mit der wir uns beschäftigt
haben.
Und mit diesen Modellen haben wir diese Greifplanung gemacht.
Wie definieren wir die Griffie, wie wir das eigentlich kennengelernt
haben?
Den Griff-Starting-Point oder Griff-Mittelpunkt, Ernährungsvektor,
Orientierung der Hand und die initiale Konfiguration der Hand.
Das sind die Parameter, die wir gesehen haben, die von jedem
Greifplaner generiert werden sollten.
Natürlich müssen die Objekte erkannt werden, damit wir greifen.
Ich will nur auf die Probleme eingehen, weil damit ist es nicht getan.
Wir wissen, für diese Objekte können wir diese Griffie ausführen, aber
da müssen wir die Objekte identifizieren.
Das heißt, Bilderkennung und Objekterkennung und Lokalisierung.
Hier sieht man die typischen Objekte, mit denen wir in unserem Küchen
-Szenario umgehen.
Einmal einfarbige Objekte, wie Tassenteller usw.
und einmal texturierte Objekte, wie alles, was man vom Supermarkt
kaufen kann.
Das sind zwei Ansätze, die wir entwickelt haben, die immer noch auf
den Arma-Robotern laufen und alle diese Objekterkennung- und
Lokalisierung -Methoden oder Aufgaben durchführen.
Und für die Ausführung, wie ich mehrmals in der Vorlesung auch beim
Thema Kinematik erklärt habe, benutzen wir ein positionsbasiertes
Visual Servoing.
Das hat die berühmte Roti-Kugel am Handgelenk vom Roboter, die
Lokalisierung vom Objekt, das heißt Lesung von den Gelenkwinkeln,
Schätzung der Orientierung.
Da der Roboterarm nicht so genau ist, nehmen wir eine Schätzung der
Position der Hand aus der Stereo-Vision.
Wir kombinieren die zwei zu der Hand-Pose, natürlich die Pose von dem
Objekt, also Position und Orientierung bekommt man direkt vom Stereo
-Vision.
Und daraus bildet man eine Differenz zwischen der aktuellen Hand
-Position und Ziel-Position des Objekts.
Und diese Differenz, wie wir wissen, geht hier in die Differenzielle
Inverse -Kinematik als X-Punkt oder Delta-X.
Hier berechnen wir Gelenkwinkelgeschwindigkeiten, die man zum Beispiel
an die Geschwindigkeitsregelung der Gelenke oder nach Integration an
der Positionsregelung der Gelenke weiterleiten kann.
Das Ganze ist komplexer, als man hier sieht.
Da gibt es weitere optimierende Komponenten.
Zum Beispiel haben wir uns bis jetzt oder im Rahmen von diesem Kapitel
nur mit diesem Thema beschäftigt.
Wir haben uns nur mit dieser Box beschäftigt.
Wir haben nicht mal über Repräsentation von den Objekten geredet, nur
anhand von dem letzten Video, wie diese Modelle erstellt werden.
Und alles, was noch dazugehört, kennt ihr eigentlich inzwischen.
Also Bewegungsplanung, wie wir einen Griff selektieren, Inverse
-Kinematik, wie wir die Szene repräsentieren.
Naja, kennt ihr so ein bisschen, werden wir noch besser kennenlernen.
Aber im Großen und Ganzen seid ihr eigentlich in der Lage, so einen
kompletten Greifbeinplan von einem System entweder zu verstehen oder
auch selber zu implementieren.
Und man muss nicht alles selber implementieren.
Es gibt viele Software-Tools, die man benutzt.
Zum Beispiel, klar, ROSS bietet eine ganze Menge von Bewegungsplanung
und Greifplanungsalgorithmen.
Aber jetzt speziell für das Greifen zwei der bekanntesten Simulatoren.
Einmal das Graspit-Simulator von der Columbia University, von der
Gruppe von Peter Allen.
Und einmal unser Simox-Visualisierungs- und Greif- und
Motionplanungsalgorithmus, was wir jetzt in den letzten sieben Jahren
hier am H2IT entwickelt haben.
Ich habe viel Zusatzmaterial, aber ich glaube, ich belasse es dabei
und würde gerne das Kapitel Greifen an der Stelle hier abschließen.
Gibt es Fragen dazu?
Okay, gut, das ist ja wunderbar.
Dann machen wir weiter mit dem nächsten Kapitel.
Oder muss ich schon ins Bett gehen?
Nein, oder?
Es ist noch zu früh.
Okay, im nächsten Kapitel wollen wir uns wirklich mit dem, was ich als
letztes erwähnt habe, beschäftigen.
Nicht nur, wie wir Objekte erkennen und lokalisieren, sondern
allgemein eigentlich mit den Grundprinzipien oder Grundlagen der
Bildverarbeitung, aber für die Robotik.
Ich unterscheide grundlegend zwischen Computer-Vision und Robot
-Vision, weil das, was natürlich im Computer-Vision-Bereich läuft, ist
zum Beispiel die Analyse von Bildern, die im Netz herumgeistern.
Aber das sind eigentlich Sachen oder meistens so 90 Prozent, 95
Prozent Ergebnisse, mit denen man in der Realität, also in der realen
Welt, in der Robotik gar nichts anfangen kann.
Deshalb ist der Schwerpunkt tatsächlich auf Bildverarbeitung in der
Robotik.
Und vielleicht fange ich mal mit diesem Punkt an.
Genau, wir fangen an mit dem nächsten Kapitel der Vorlesung, und zwar
Bildverarbeitung in der Robotik.
Und da werden wir uns mit den mit den Grundlagen der Bildverarbeitung.
Ich weiß nicht, bevor ich anfange, wer von euch hat schon mal eine
Bildverarbeitungs -Vorlesung besucht oder besucht gerade?
Einer.
Okay, zwei.
Das ist natürlich sehr gut für mich hier.
Aber auf der anderen Seite, naja, würde ich euch sehr empfehlen.
Natürlich diese Themen Bildverarbeitung, Sprachverarbeitung, Robotik,
maschinelles Lernen und so weiter.
Das sind aktuell unheimlich spannende Themen.
Und das KIT, also nicht nur jetzt die Fakultät für Informatik, sondern
das KIT insgesamt hat ein unglaubliches Angebot an
Lehrveranstaltungen, die die Themen der Bildverarbeitung aus
unterschiedlichen Perspektiven behandeln.
Also nicht jetzt nur die Grundlagen hier, die wir kennenlernen werden
in der Vorlesung, sondern zum Beispiel Bildverarbeitung für autonomes
Fahren bei Professor Stiller, Bildverarbeitung und Mustererkennung und
Semantik bei Professor Bayarra, aber auch Bildverarbeitung für Mensch
-Maschine -Interaktion bei Professor Stiefelhagen, also Professor
Bayarra und Stiefelhagen auch vom Institut für Anthropomatik und
Robotik und viel mehr, worüber ich wahrscheinlich nicht weiß.
Wahrscheinlich gibt es in der Fakultät für Physik auch
Bildverarbeitungsvorlesungen und so weiter und so fort.
Aber wir wollen das Ganze aus Sicht der Robotik ein bisschen
betrachten.
Natürlich sind die Grundlagen die gleichen, Bilder sind Bilder, egal
ob das für Informatiker oder für Physiker oder ähnliches ist.
Wir wollen uns auch nicht damit beschäftigen, wie Bilder entstehen.
Also nicht wirklich mit der Hardware, mit der wir Bilder akquirieren,
sondern wir wollen uns natürlich mehr mit der Software beschäftigen.
Das heißt, welche Methoden kann man auf diese Bilder einsetzen oder
anwenden, damit man überhaupt etwas Sinnvolles aus den Bildern
extrahiert.
Und worum geht es uns eigentlich bei der Bildverarbeitung?
Wie gesagt, also natürlich die Erfassung der Bilder und die
Verarbeitung auf Low Level, wie man jetzt von Lichtstrahlen und so
weiter auf ein Bild in eine Kamera und so weiter kommt, ist auch ein
Großforschungsthema.
Aber was uns hier mehr interessiert, ist Folgendes.
Wir wollen ja eigentlich Bilder verstehen.
Das heißt, für uns Menschen beispielsweise, wenn wir so ein Bild
sehen, dann denkt keiner von euch darüber nach, was zu sehen ist.
Da sieht man, okay, das ist ein Meer.
Das ist natürlich ein schwarz-weiß Bild, wie man sieht.
Das ist ein Meer.
Das sind Leute in zwei Booten.
Das sind keine Flüchtlinge, sondern Leute, die angeln.
Das kann man sofort erkennen.
Der Himmel ist nicht blau, sondern wahrscheinlich bewölkt und so
weiter und so fort.
Also das heißt, eigentlich sofort kann man sehen, okay, ich kann
folgendes aus dem Bild ablesen.
Ich habe hier einen Himmel, hier habe ich einen See.
Naja, wenn es nur Himmel und See ist, also ohne die Leute, ohne diese
Boote, dann könnte es zum Beispiel eine Wiese und einen Himmel sein.
Ja, das kann man schwer erkennen eigentlich, wenn die Boote nicht da
wären, oder?
Also wenn die Boote nicht da wären, dann könnte das eine Wiese sein
und ein Himmel.
Also Boden und Himmel und nicht Wasser.
Wer widerspricht hier?
Einer?
Okay, warum?
Warum widersprichst du?
Naja, die Wiese kann ja auch die gleiche Struktur haben.
Also stell dir mal vor, ein Bagger ist hier über diese Wiese gefahren
und hat diese Struktur mal gemacht.
Wie bitte?
Erde, Entschuldigung, ich meinte Erde, keine Wiese.
Ich muss mein Deutsch ein bisschen entschuldigen, ich komme
durcheinander mit den Begriffen.
Aber ich meine Erde, Boden, keine tolle Wiese, eine schlechte Wiese,
sagen wir mal so.
So, aber eigentlich, worauf ich hinaus will, wir können Menschen
sofort solche Sachen erkennen und wir brauchen dazu natürlich immer
Semantik oder Kontextinformation.
Aber wenn wir so ein Bild aufnehmen, ja, schwarz-weiß, dann sieht es
eigentlich so aus im Hauptspeicher eines Rechners oder im Rechner
allgemein.
Das sind irgendwelche Werte, das ist eine zweidimensionale
Datenstruktur mit irgendwelchen zwei Koordinaten, nennen wir sie U und
V, und Zahlen, ja, 143, 140, 116 und so weiter und so fort.
Das ist eigentlich, was wir sehen und das ist, was ein Roboter sieht
oder wie ein Roboter eigentlich diese Szene sieht.
Und jetzt könnt ihr euch vorstellen, wie komplex ist es für einen
Roboter, dass er tatsächlich versteht, was in dieser Szene vorhanden
ist.
Also, dass er diese Zahlen hier so auseinander trennt, dass er sagt,
okay, da sitzen hier drei Leute in diesem Boot oder hier drei Leute
haben Angelschnurrie und die angeln gerade.
Was ist das erste Problem, das man hier hat, nur aus mathematischer
Sicht?
Wir nehmen das Bild auf, so ist es im Rechner und aus dieser
Repräsentation im Rechner müssen wir so viel Information gewinnen,
also müssen wir diese Zahlen verstehen, damit wir überhaupt auf
irgendwas kommen von dem, was wir sehen.
Aber was ist das erste, was man macht, wenn man ein Bild aufnimmt?
Gewinnt man was oder verliert man was eigentlich?
Ja, wir diskretisieren im Pixel.
Okay, vielleicht diskretisiert unser Auge auch, aber extrem
hochauflösend.
Aber richtig, wir diskretisieren, weil das sind hier ja, wie man
sieht, hier nicht beliebig irgendwie kontinuierliche Sachen, sondern
diskrete Sachen.
Ja, aber was noch?
Ja, das ist ein Standbild.
Ich rede nur über ein Standbild, nicht über eine Sequenz von Bildern
oder Videos.
Nur ein Standbild.
Ja.
Komprimiere die Bilder.
Bevor ihr über Bilder redet oder denkt, denkt nur darüber, wie ihr das
beschreibt.
Ja.
Man verschafft sich einen Gesamteindruck.
Okay, also der Rechner soll sich jetzt einen Gesamteindruck
verschaffen.
Kann er nicht.
Aber lass uns mal, ich meine, wir haben ja in Räumen geredet, die
ganze Zeit in der Roboter.
Konfigurationsräume, Arbeitsräume und redundante Roboter, nicht
redundante Roboter.
Mal der hat hier sieben Freiheitsgrade, hier hat Dimensionen 21 und
so.
Was sind die Dimensionen hier, die wir haben?
Wenn ich jetzt eine Zähne hier wie die Zähne hier vor mir habe, dann
ist das eine 3D-Zähne für mich, oder?
Das ist eine 3D-Zähne eigentlich.
Und wenn ich ein Bild davon aufnehme, was ist das dann?
Eine 2D.
Das heißt eigentlich, der erste Punkt ist, wenn wir ein Bild
aufnehmen, verlieren wir Information.
Und zwar ein Bild ist nur eine 2D-Datenstruktur, wie wir hier sehen.
Und das ist eines der großen Probleme, weil damit der Roboter zum
Beispiel die Position einer Tasse finden kann, muss er diese dritte
Dimension auch irgendwie aus den Bildern berechnen.
Das heißt, diese Entfernung oder diese Abstand oder diese 3D
-Informationen, die müssen wir tatsächlich aus diesen Strukturen
wieder rausholen.
Das ist natürlich nicht nur das einzige Problem, es gibt viele andere
Probleme, wie kann man semantische Informationen, Vorwissen und so
weiter hier einsetzen, damit man Interpretationen von solchen Bildern
hier bekommt.
Was wollen wir uns in der Vorlesung angucken?
Wir wollen gucken, wie Bilder im Rechner repräsentiert werden,
dargestellt werden.
Also was sind diese Zahlen, die wir hier gesehen haben?
Wie kommen wir auf diese Zahlen?
Wie können wir zum Beispiel schwarz-weiß- oder grau-Stufenbilder und
Farbbilder repräsentieren?
Das Kameramodell sollte vielleicht aus der Schule den meisten von euch
bekannt sein, aber wir wollen als nächstes gehen und zwar schauen, was
wir mit Bildern machen können.
Sogenannte Filter-Operationen, also wie kann ich Bilder glätten?
Alles, was ihr in Photoshop und so weiter machen könnt, das sind
irgendwelche Operationen, die wir Bilder scharf stellen, Kanten von
Bildern schärfer stellen und so weiter und so fort.
Das erreicht man, indem man sogenannte Filter bzw.
irgendwelche Operationen mit diesen Bildern oder mit diesen
Datenstrukturen, 2D-Datenstrukturen, die diese Bilder repräsentieren,
durchführt.
Dann wollen wir einige Sachen wie Segmentierung zum Beispiel.
Also hier eine Filter-Operation, damit wir die Kanten von dem
Oberkörper von dem Bild von Arma 4 herauskriegen.
Hier, wir wollen ja die Hand im Bild segmentieren.
Dass wir nur die Hand des Menschen im Bild segmentieren, Körper und
Hintergrund und so weiter, wollen wir rausschmeißen.
Also nur beispielhaft.
Dann werden wir einige weitere Standardmethoden, die heutzutage sehr
oft im Bereich der Robotik eingesetzt werden, berücksichtigen,
Tiefenkameras, Visual Serving, was wir oft erwähnt haben, bis hin auch
zu 3D-Punktwolken.
Also zum Beispiel Kinect oder ASUS-Sensoren oder Kameras, die liefern
ja natürlich super dichte Punktwolken, die man auch verarbeiten kann
und mit denen man heutzutage in der Robotik auch vieles machen kann.
Als letztes so zwei Anwendungsbeispiele, vielleicht
Anwendungsbeispiele für SLAM.
Es ist falsch, das so zu sagen, aber wir würden kurz das Thema SLAM,
also die simultane Lokalisierung und Mapping, also wie ein Roboter
sich gleichzeitig lokalisieren kann und eine Karte der Umgebung
erstellen kann, hier behandeln und noch ein oder mehrere
Anwendungsbeispiele kennenlernen.
So, es gibt eine ganze Menge von Literatur hier zu dem Thema.
Das sind so die Standardwerke, würde ich mal sagen, ja zumindest für
die Vorlesung hier, also Multiple View, Geometrie und Computer Vision,
dann Digital Image Processing, die zwei Bücher oder auf Deutsch ein
extrem umfassendes Buch von Prof. Jürgen Beyerer, auch hier vom KIT
und vom Fraunhofer-Institut EUSB, Automatische Sichtprüfung, das sind
über tausend Seiten und Prof. Buenti von der Fakultät für
Elektrotechnik, auch hier vom KIT.
Und dann ein so Praxisbuch von, also Computer Vision, das Praxisbuch
von Bedram Asad behandelt auch viele Themen, ein Beispiel der
Humanoiden Robotik, der hat ja in meiner Gruppe auch promoviert und
viele der Methoden oder der Kapitel, die in diesem Buch beschrieben
sind, nehmen Beispiele aus der AMA-Umgebung oder AMA
-Anwendungsszenarien hier als, verwenden sie als Beispiel.
Okay, es gibt auch viel Software, zum Beispiel sehr etablierte
Programmbibliotheken, wenn man irgendwas schnell hier was testen will
oder rumspielen will, damit man sieht, was Bildverarbeitung bedeutet.
Extrem bekannt ist vielleicht OpenCV, also Open Computer Vision
Library, reichbar über opencv.org.
Es gibt eine sehr bekannte auch PCL Library, also Point Cloud Library
unter pointclouds.org.
Und es gibt eine eigene Entwicklung von uns, das ist so ein
Integrating Vision Toolkit mit einer Vielzahl von Methoden und Tools
zu Kamerakalibrierung, Objekterkennung, Objektdetektion und so weiter
und so fort.
Und wir werden viele der Beispiele hier auch aus, daraus hier auch
nehmen.
So, hat jemand von euch, also vorher hat sich keiner gemeldet, dass er
in Computer Vision Vorlesung ist, aber vielleicht hat trotzdem der
eine oder hat trotzdem die eine oder der eine in die eine oder andere
Vorlesung oder im anderen Kontext etwas mit Bildverarbeitung gemacht
oder mit Punktwolken.
Ja, aha, da gehen mehr Handy hoch als zumindest der, der mit seinem
Handy die ganze Zeit spielt, da hinten.
Ja, danke.
Was hast du da gemacht?
Ah, die Vorlesung Computer Grafik.
Okay, ich meine, wer mit Bildverarbeitung zum Beispiel um Punktwolken
irgendwas gemacht hat, mit OpenCV oder PCL oder sowas?
Auch keiner.
Okay, wow, okay.
So, also was ist das Problem?
Das Problem ist, wie können wir Roboter das Sehen ermöglichen wie ein
Mensch?
Und ein Problem, das wir haben, ist nicht nur tatsächlich die
Bildakquisition, sondern die Verarbeitung oder die Interpretation von
den Bildern auf unseren Rechnern.
Und bei dieser Übertragung oder bei Bildaufnahmen reduzieren wir
eigentlich die Dimensionalität.
Also alles, was in einer 3D Welt repräsentiert wird, in ein 2D Bild.
Das heißt, eine Dimension geht verloren.
Man unterscheidet hier viele Aspekte, wenn man über Computer Vision
redet oder Bildverarbeitung.
Einmal zum Beispiel, was Photometrie genannt wird.
Das heißt, wo die Wahrnehmung abhängig von Beleuchtung und
Materialeigenschaften ist.
Natürlich spielt die Dynamik, also Bewegung in Bildern oder in Szenen
eine zentrale Rolle.
Stellt euch mal vor, wir wollen einen Menschen beobachten oder ein
Roboter soll einen Menschen beobachten und aus der Beobachtung lernen,
wie bestimmte Aufgaben, Tischdecken oder Tischwischen usw.
auszuführen sind.
Ein großes Problem natürlich, wie geht man mit Verdeckungen in
Bildern?
Das heißt, ein Objekt kann zum Beispiel nicht vollständig sichtbar
sein.
Also wenn zum Beispiel die Box hinter der Tasse steht, natürlich ist
der Unterteil von der Box verdeckt.
Also wie kann man trotzdem eigentlich so eine semantische
Repräsentation, zumindest auch Positionierungen von diesen Objekten
bestimmen, wenn man sie greifen kann?
Und die Interpretation von diesen Bildern hier, die ist immer sehr
kontextabhängig.
Das heißt, in der Situation soll ja irgendetwas eigentlich, wie wir
Menschen das sehen.
Ich meine, wenn wir eine Tasse in der Geschirrspülmaschine sehen, dann
ist es ja nicht die gleiche Situation wie eine Tasse, aus der ein
Mensch trinkt.
Das ist aufgabenabhängig und deshalb muss das auch von der
Bildverarbeitung oder vom Bildverstehen auch berücksichtigt bzw.
dieses Problem gelöst werden.
Das Sehvermögen ermöglicht die Wahrnehmung der Umwelt bzw.
ist eines der wesentlichen Komponenten oder Sinne des Menschen.
Und wir wollen schauen, wie man praktisch diese Fähigkeit in
technischen Systemen nutzbar macht.
Das heißt, hierzu müssen natürlich visuelle Daten aufgenommen werden
in guter Qualität.
Damit man sie in einem Rechner speichert, muss das digitalisiert
werden.
Also nicht kontinuierliche, sondern digitale Formate haben.
Und die relevanten Informationen, wie im einführenden Beispiel zu
sehen war, müssen natürlich aus diesen Bildern extrahiert werden
können.
Und man unterscheidet sich in zwei Teilen.
Einmal die Bilderfassung, wo meistens die Hardware hier eine Rolle
spielt und die Bildverarbeitung.
Und die Leute, die sich vielleicht jetzt mit Bildverarbeitung
beschäftigen, die werden dieses berühmte Bild sehen, das Bild von
Lena.
Das ist eine der Berühmtheiten in der Computer Vision Community, weil
ihr Bild in fast allen Publikationen oder in vielen Publikationen und
in vielen Büchern dieser Community hier erschienen ist.
Dabei ist sie keine Bildverarbeiterin eigentlich.
Das war so ein Titelfoto von Playboy von 1972.
Und irgendwann mal, als sie 60 oder 65 Jahre alt geworden ist, hat sie
erfahren, mehr oder weniger, dass sie so berühmt ist in der
wissenschaftlichen Community.
Sie wurde sogar zu einer Konferenz eingeladen, wo sie gesehen hat, was
man alles Wissenschaftliches mit ihren Bildern hier machen kann.
Also die Leute, die hier mehr zu diesem Testbild, das ist eines der
bekanntesten Testbilder in der Bildverarbeitung lernen oder lesen
wollen, die können diesen Link hier mal weiter verfolgen.
So, wir wollen nicht über die Hardware reden, aber vielleicht ein paar
Beispiele, was es so momentan an Kamerasystemen gibt.
Natürlich Standardkameras hier, was man halt kennt oder Sensorsysteme,
die spezialisiert sind für die Robotik.
Zum Beispiel, das ist ein Roboterkopf, der von der CMU entwickelt
wurde für die DARPA Challenge, also für die humanoiden Roboter, die
bei der DARPA Challenge 2015 teilgenommen haben mit Stereovision und
3D -Informationen und auch Beleuchtung.
Wie man sieht hier, gibt es Lampen auch in diesem Kamera.
Kinect beziehungsweise ASUS oder Intel RealSense oder PrimeSense
Sensoren, die sind mini klein und da kann man unglaublich viel damit
auch heutzutage machen.
Natürlich hier unser Roboterkopf von Arma 3, der wie man sieht hier
zwei Kameras pro Auge hat, also einmal weitwinklige und einmal
schmalwinklige Kameras, um diese sogenannte foveated vision zu
realisieren, also foveal vision zu realisieren.
Das heißt, dass man zum Beispiel im Zentrum des Blicks mit einer sehr
hohen Auflösung die Objekte oder die Umgebung wahrnehmen kann und am
Rand mit einer niedrigeren Auflösung.
Und dann neulich hier ein Kamerasystem von Roboception, was vieles der
Methoden für die Bilderfassung, also die Rohdaten in Hardware
verarbeitet und zum Beispiel sofort 3D-Punktwolken aus Bildern
erzeugt.
Hier nur ein paar Beispiele der Multisensor der CMU, damit man nur
sieht, was man heutzutage von diesen 3D-Sensoren bekommt.
Da sieht man hier einmal die Szene, die gerade läuft und einmal was
man tatsächlich durch diesen Sensor sieht.
Das sind hier die rekonstruierten Punkte, also das war der Mensch
hier, das war der Bagger, wie man gesehen hat.
Wie gesagt, der Sensor wurde damals hauptsächlich entwickelt für die
DARPA Robotics Challenge, wo es um Katastrophenszenarien geht und wo
humanoide Roboter dort ihr Können demonstrieren sollten.
Und das ist, was man so kriegt zu einem Sensor, bzw.
was man aus den Bilddaten nach mehreren Verarbeitungsschritten
bekommt.
Das ist nochmal eine andere Szene oder eine andere Anwendung.
Und da sieht man hier, dass der Sensor auch trotz zum Beispiel dieser
Vibration hier in der Lage ist, stabile Kamerabilder zu erzeugen.
Das nur zu eurer Motivation, also da werden wir die Details natürlich
in dieser Vorlesung kennenlernen.
Das ist ein Startup, vielleicht ein Jahr alt, das heißt Roboception in
München, kommt auch vom DLR in Oberpfaffenhofen.
Und die haben so ein Stereokamerasystem gebaut hier, wie man sieht
hier, das ist der RS Wizard 65.
Und natürlich das so als ein industrielles Produkt, der eingesetzt
werden kann in unterschiedlichen Aufgaben.
Das ist jetzt hier montiert auf einem Roboterarm und wo man mithilfe
von diesem Stereokamerasystem, wie man sieht, hier die Kamerabilder,
die tiefen Bilder und auch eine Confidence über die Qualität der
Bilder immer bekommt.
Das liefert immer der Sensor hier, wie man sieht, werden wir gleich
auf der anderen Folie sehen.
Und da kann man damit natürlich hier auch schauen, wie so ein Griff in
der Kiste Aufgabe, also das sind Objekte, für die man vorher keine
Modelle hat, nehme ich mal an, und wo man sieht, wie die Objekte da
liegen.
Und dann versucht man hier solche Griffe, wie man sieht in dem
Beispiel, zu generieren und dann auszuführen mit einem
Industrieroboterarm.
Das ist natürlich eine sehr zentrale Anwendung, weil die komplette
Automatisierung heutzutage würde davon extrem profitieren.
Der Sensor ist jetzt am Handgelenk angebracht.
Bei dem Arma 6 setzen wir den Sensor im Kopf auch zusätzlich.
Also Bilder von dem Arma 6 werde ich nächste Woche zeigen.
Ist ab heute in der Presse eigentlich.
Wenn ihr mal googelt, dann könnt ihr ein paar Bilder davon sehen.
Aber so viel dazu wie das Thema Hardware wollen wir auch nicht
vertiefen, wie ich bereits gesagt habe, sondern wir wollen mehr
verstehen, wie man Bilder im Rechner repräsentiert.
Das heißt, hier ist es klar, dass, wie ich bereits in der einführenden
Folie gezeigt habe, ein Bild ist ein 2D-Gitter von diskreten Punkten
und diese Punkte nennen wir Pixel.
Das sind Punkte mit Abmessungen, Quadrate, die man Pixel nennt.
Man definiert hier in diesen Bildern Bildkoordinaten, z.B.
U für horizontal und V für vertikal.
Meistens wird der Ursprung von diesen Koordinatensystemen in der
oberen linken Ecke definiert.
Und in diesen Koordinaten hat man die Einheit Pixel, also nicht
Millimeter oder Meter oder so, sondern Pixel.
Und die Farbe von einem Bildpunkt kann man auch auf unterschiedliche
Art und Weise repräsentieren.
Wenn man aber zunächst mal nur von Graustufenbildern ausgeht, dann
legt man oder definiert man so einen Helligkeitswert für jeden Pixel.
Und wenn ich jetzt unterschiedliche Helligkeitswerte dort
repräsentieren will oder kodieren will, dann brauche ich natürlich
eine bestimmte Anzahl von Bits.
Wenn ich sage pro Pixel habe ich ein Byte, dann weiß ich, wenn ich
sage ich habe ein Byte für die Repräsentation von Helligkeitswerten,
dann weiß ich, ich habe insgesamt 256 unterschiedliche Graustufen oder
Helligkeitswerte.
Und normalerweise ist es auch der Fall, dass man ein Byte pro Pixel
hat.
Das heißt, jedes Pixel kann dann hier die Werte von 0 bis 255
annehmen.
Wie sieht das Ganze hier aus?
Das ist so übersetzt jetzt in ein bisschen Formeln.
Das heißt, ein Bild ist ein 2D-Gitter.
Dann haben wir die zwei Achsen U und V.
Und der Ursprung ist hier.
Ja, der Ursprung der Achsen ist hier.
Ich glaube in der Computergrafik ist es unten, oder?
Du warst in der Vorlesung.
Wo ist der Ursprung in der Computergrafik-Vorlesung?
Ja, okay, dann haben Sie das geändert.
Okay, dann sagt man zum Beispiel 0 soll schwarz sein und wenn es 255
ist, dann ist es weiß.
Und wir können uns an diese Bilder von vorher erinnern, von der ersten
Folie.
Da hatten wir solche Werte eigentlich, die nicht über 255 gingen.
Und das heißt, wir haben hier ein monochromes Bild, eine diskrete
Funktion, also ein Bildfunktion.
Die ist definiert auf dem Bereich von 0 bis N Pixel in U-Richtung und
M Pixel in V-Richtung hier.
Und kann Werte natürlich von 0 bis Q aufnehmen, wobei dieses Q 255,
wenn wir ein Byte hier als Einheit für die Repräsentation nehmen.
Und natürlich gibt es hier unterschiedliche Werte, wie man vielleicht
heute weiß, auch über wie groß die Auflösungen sind.
Das heißt, diese Achsen, die werden in Pixel, die Einheiten,
eingegeben.
Das heißt, wenn ich hier 640 x 480 habe, dann habe ich meine
sogenannte VGA Auflösung, die wir alle kennen.
Oder 1920 x 1080, das wäre jetzt Full HD oder 4K, wenn ich 3840 x
2160.
So, jetzt, wenn man sich fragt, das ist ja ganz einfach eigentlich.
Ich habe 256 Werte und ich habe diese Abbildung und dann kann ich
alles Mögliche damit machen.
Man darf eine Sache nicht unterschätzen und zwar, das ist jetzt für
ein einzelnes Bild.
Und jetzt, wenn wir einen Roboter haben, der natürlich immer
kontinuierlich, er will was greifen und immer auf Veränderungen in der
Umgebung reagieren.
Das heißt natürlich, er muss immer ständig Bilder eigentlich
akquirieren und diese Bilder interpretieren.
Und wenn wir nur die Datenmengen mal betrachten, die notwendig sind.
Also nehmen wir mal an, jetzt ganz einfach, wir haben schwarz-weiß
Bilder und wir nehmen diese Bilder auf oder wir wollen diese Bilder
aufnehmen und übertragen mit 30 Hertz Frequenz, 640 x 480 Pixel und
nur ein Byte pro Pixel.
Ja, wenn wir das mit 300 Hertz machen und ein Byte pro Pixel, dann
haben wir 8,8 ungefähr Megabyte Daten pro Bild, also Daten pro
Sekunde.
Ja, wenn wir, das ist nur für schwarz-weiß oder Graufstufen Bilder.
Wenn wir jetzt wissen, das werden wir später sehen, dass
beispielsweise bei Farbbildern haben wir nicht nur ein Byte pro Pixel,
sondern drei Bytes pro Pixel.
Und wir nehmen die gleiche Auflösung hier mit drei Bytes pro Pixel mit
der gleichen Framerate hier.
Dann kommen wir auf 26,4 Megabyte pro Sekunde an Datenvolumen, was
eigentlich vom Kamera zum Rechner und so weiter transportiert werden
muss.
Und nur bei dieser Auflösung natürlich, wenn die Auflösung höher geht
auf 4K oder Full HD, dann sind natürlich diese Datenmengen viel
größer.
Eine ganz wichtige Sache bei der Bildrepräsentation ist natürlich die
Auflösung.
Das heißt, die Abtastung, also wie wir diese Bilder abtasten, ist ein
wichtiger Faktor, der die räumliche Auflösung eines Bildes bestimmt.
Und die Auflösung ist das kleinste erkennbare Detail in einem Bild.
Man sieht hier zum Beispiel 1024 x 1024 Bilder, 520 x 520 und so
weiter und so fort bis 64 x 64 und dann hier 32 x 32.
Und wenn man hier jetzt die Anzahl der Graustufen konstant hält, also
ein Byte pro Pixel, wir haben dann 256 Graustufen und die räumliche
Auflösung verringert von diesen Bildern, dann ergibt sich natürlich
diese berühmte Verpixelung oder Schachbrett-Effekt.
Das heißt, man sieht hier, das wäre jetzt dieses kleine Bild mit 32 x
32 Pixel.
Wenn wir die Auflösung auf die gleiche Größe hier wie das Bild mit
1024 x 1024, dann bekommen wir diesen starken Schachbrett-Effekt.
Hier natürlich ist es ein bisschen kleiner und so weiter und so fort.
Ich glaube, das sind aber keine schwierigen Sachen.
So, nun haben wir nicht nur Graustufenbilder, sondern Farbbilder und
dort gibt es auch unterschiedliche Farbmodelle, mit denen man diese
Farbbilder repräsentiert.
Und ein, zwei oder zwei Beispiele will ich hier nur kurz erwähnen.
Einmal das sogenannte RGB-Modell, also Rot-Grün-Blau-Modell, deshalb
heißt es auch RGB.
Und da hat man natürlich hier diese Funktion, die wir vorher
kennengelernt haben bei den...
Ich gehe ganz kurz hier.
Diese Funktion hier, die war natürlich nur die Abbildung auf einen
Wert, also u und v.
Pixel u, v wird abgebildet auf einen Wert zwischen 0 und 255.
Und in diesem Fall hier wird ein Pixel abgebildet auf drei Werte, bzw.
jedes Pixel bekommt drei Werte, und zwar ein Wert für Rot, ein Wert
für Grün und ein Wert für Blau.
Und dann gibt es weitere Modelle hier, zum Beispiel dieses HSI-Modell,
sehr gut geeignet für Segmentierung, zum Beispiel die
Handsegmentierung in dem Beispiel, was ich vorher gesehen habe, oder
Segmentierung von einfarbigen Objekten und so weiter und so fort.
CIE-Modell oder CMYK und so weiter und so fort bis hin zu YIQ-Modell,
also für das alte Analogie-Fernseh, was man da benutzt hat.
Und ganz kurz hier zu diesem RGB-Farbraum.
Das heißt, wir haben hier drei Farbwerte, das sind Rot, Grün und Blau.
Und man kann das Ganze hier visualisieren anhand von diesem
Farbwürfel.
Man sieht hier, die Ecken sind Farben oder Hauptfarben zugeordnet.
Das sind Rot, Blau und Grün.
Das sind die, die wir hier darstellen.
Und also die im Modell dargestellt oder durch die das Modell
charakterisiert wird.
Und für jedes Pixel im Bild haben wir drei Byte und diese drei Byte
repräsentieren Rot, Grün und Blau.
Das heißt eigentlich, wir haben insgesamt 2 hoch 8, also wenn wir für
jede Farbe hier 8 Bytes haben, das heißt 256 Abstufungen vom Farbwert.
Wir hatten bei Schwarz-Weiß 256 Abstufungen vom Grauwert und jetzt
hier für die Farbe.
Und das Ganze dreimal miteinander multipliziert, dann können wir
natürlich hier 16,8 Millionen Farben darstellen.
Also nur mit der Tatsache, dass wir sagen, okay, pro Pixel haben wir
drei Bytes und jedes Byte ist für eine dieser Farben verantwortlich.
Und man sieht hier, wie die Abbildung aussieht.
Nach wie vor ein Bild N mal M Pixel, der wird abgebildet auf diese
Bildmenge und diese Bildmenge ist natürlich das Kreuzprodukt von 0 bis
R und 0 bis G und 0 bis Blau.
Da sieht man hier auch, wie die Farbverläufe eigentlich zwischen
diesen unterschiedlichen Ecken in dieser Würfel hier auch aussieht und
wie man jetzt zum Beispiel zu Schwarz kommt oder wenn man sich hier
entlang dieser Linie hier bewegt von Schwarz zu Weiß, dass man sich
eigentlich nur graue Bilder haben.
Das heißt eigentlich diese Linie hier, die beschreibt nichts anderes
als die Graustufenbilder, die wir vorher gesehen haben.
Es gibt den HSI Raum für Farbnuance, für Sättigung, das S steht, und
für Intensität, also die I, beziehungsweise für Value, das V, also bei
HSI und HSV.
Und der Unterschied hier zu diesem RGB Raum, dass man bei dieser
Repräsentation die Farbinformation getrennt von der Helligkeit,
beziehungsweise von der Sättigung der Farbe darstellen kann.
Und somit ist das Ganze weniger empfindlich gegen
Beleuchtungsveränderungen.
Und da sieht man, wie das Ganze hier dargestellt wird.
Also wir haben nicht RGB, sondern wir haben H, das ist diese
Farbnuance.
Dann haben wir die Sättigung der Farbe.
Das ist fast wie ein Zylinderkoordinaten.
Das geht entlang der Achse hier und diese Lichtintensität,
beziehungsweise die Helligkeit eigentlich, die ist die Achse hier.
Und man kann natürlich diese Räume ineinander umwandeln.
Ja, also das heißt natürlich, wenn ich ein Bild aufnehme, dann kriege
ich das Bild und dann kann ich sagen, ich will das Bild dargestellt
als RGB im RGB Format, im HSI Format oder im HSV Format.
Und wenn ich das Bild im RGB habe, dann kann ich in dieses HSI
beziehungsweise HSV das Ganze umwandeln.
Und man sieht hier die Berechnungsvorschriften, auf die ich jetzt
nicht im Detail hier eingehen will, aber die sind ziemlich einfach.
Man berechnet hier ein Theta als Arcus Cosinus.
Man sieht hier, da tauchen nur R, G und B auf.
Und mit diesem Theta können wir das H berechnen, können wir das S
berechnen, brauchen wir sogar Theta nicht für das S und können wir das
I berechnen.
Und man sieht hier den einzigen Unterschied zwischen HSI und HSV ist
nur hier.
Also hier ermitteln wir mehr oder weniger die drei Werte und hier
nehmen wir den maximalen Wert von allen Grundfarben.
Ja, das ist so der kleine Unterschied.
So, wie bestimmt man HSI Werte in einem RGB Würfel?
Ja, also das heißt, nehmen wir mal an, wir haben jetzt hier unseren
Würfel.
Was wir vorher kennengelernt haben, der war farbig, hier ist er jetzt
nicht mehr farbig.
Und in diesem RGB Format oder in diesem Würfel entspricht die
Helligkeitsachse, also die Helligkeitsachse, das war das hier.
Ja, also diese V-Achse entspricht dieser Diagonale zwischen Schwarz
und Weiß.
Ja, also der Linie durch die Ecken Schwarz, die durch 0,0,0 definiert
sind im RGB Würfel und 1,1,1 für Weiß.
Und die Sättigung eines Farbpunktes auf dieser Sättigungachse oder auf
der Sättigungachse ist 0.
Und je weiter man sich entfernt hier von dieser Achse, nimmt diese
Sättigung zu.
Ja, das heißt, er erhöht sich mit dem Abstand zur Helligkeitsachse.
Und dann jeder Punkt in diesem Dreieck, also wenn man den Dreieck
zwischen Weiß, Blau und das hier bildet, jeder Punkt in diesem Dreieck
hat dieselbe Farbe, aber unterschiedliche Helligkeits- und
Sättigungen.
Wenn man die Farbe verändern will, dann rotiert man praktisch diesen
Dreieck.
Ja, also oder die wird geändert, indem das Dreieck um die Helligkeits
-Achse rotiert wird.
Also um diese Schwarz-Weiß-Achse rotiert wird.
Nur für die Leute, die hier Interesse haben und wollen verstehen, wie
man die zwei Sachen ineinander überführen kann.
Wenn man das Ganze nur hier anguckt, dann sieht man eigentlich, dass
wir im RGB die ganzen Farben nicht getrennt voneinander.
Also das war ja der Vorteil, dass wir die Farbwerte beim HSV oder HSI
getrennt von Helligkeit bzw.
von Farb-Nuance darstellen können.
Und da sieht man hier, das wäre ein RGB-Bild und das wäre die
Darstellung von diesem Bild in diesem HSV-Raum.
Das heißt, das wäre die Darstellung von dem Bild in Sättigung, das
wäre die Darstellung der Sättigung von diesem Bild hier.
Das wäre die Darstellung der Helligkeit und das wäre die Darstellung
der Farbtöne oder der Farb-Nuance.
Und man sieht den Unterschied, hoffe ich, an der Stelle im Vergleich
zum RGB-Modell.
Das heißt, wir haben hier entkoppelt die Farbwerte von
Helligkeitswerten und somit erlaubt uns das Ganze unabhängige
Änderungen von Farbton, Helligkeit bzw.
Sättigung.
So, nun kommen wir jetzt hier von so einer 2D-Struktur auf eine
Repräsentation im Speicher eines Rechners.
Also wir müssen ja eigentlich für Graustufenbilder jetzt schauen, wie
wir diese Bytes für die einzelnen Pixel repräsentieren.
Und da werden die Bilder zeilenweise gelesen, also angefangen hier an
dieser Ecke.
Zeilenweise wird das Ganze aufgerollt.
Dann habe ich schwarz-weiß, schwarz-weiß, dann habe ich viermal weiß,
wie man hier sieht, und dann viermal schwarz.
Und wir hatten ja die Zuordnung, dass schwarz 0 ist und weiß 255 und
dann 0, 255 und so weiter und so fort.
Eigentlich dieses Bild hier, dieses schwarz-weiß Bild, was wir haben,
wird im Rechner so dargestellt.
Natürlich haben wir hier nur 0 und 255, aber für Graustufenwerte
können wir natürlich Werte zwischen 0 und 255 nehmen.
Also wenn wir 128 haben, dann haben wir nicht dunkelschwarz, sondern
etwas Graues.
Und dann würde hier ein anderer Wert, 128 beispielsweise, stehen.
So, bei Farbbildern ist das auf die gleiche Art und Weise.
Der einzige Unterschied ist natürlich, dass wir pro Pixel nicht nur
einen Byte haben.
Also natürlich hier, das sind Bytes.
Das sind hier 8-Bit und alle 8-Bit haben den Wert 0.
Das sind hier auch jeweils 8-Bit und alle diese 8-Bit haben den Wert
1, 1, 1.
Und jetzt pro Pixel haben wir diese 8-Bit und bei Fabian haben wir
gesagt, pro Pixel haben wir drei Bytes, also eigentlich 24-Bit.
Dann wird das Bild auf die gleiche Art und Weise aufgerollt.
Schwarz, Weiß, Rot, Weiß, dann Weiß, Grün, Blau, Weiß und so weiter
und so fort.
Und dann geht es los.
A, das erste Pixel ist schwarz und schwarz hat den Wert 0, 0, 0, also
ich habe für die ersten drei Bytes 0.
Dann kommt ein Weiß, das wäre hier Weiß, das sind auch drei Bytes mit
jeweils 255.
Jetzt kommt ein Rot.
Rot, und zwar das ist natürlich die Zuordnung RGB.
Rot, das wäre RGB vom Anfang an, nochmal RGB und so weiter und so
fort.
Das heißt es kommt Rot und Rot hat natürlich 255 und dann 0, 0.
Dann kommen zwei Weiß, jetzt kommt hier ein Grünes, also Rot, RGB,
RGB.
Dann sieht man hier, dass wir Grün 255 haben bei den drei hier und
dann hier haben wir, wie man sieht, nochmal 255 bei RGB für Blau,
damit wir dieses blaue Pixel auch kodieren können.
Okay, gut, ich glaube wir belassen es für heute dabei.
Wir machen dann nächste Woche weiter, das heißt wir wissen jetzt, wie
man die Bilder einfach im Rechner darstellt und wir werden das nächste
Mal mehr Operationen mit diesen Bildern mal angucken.
Ich bedanke mich für die Aufmerksamkeit und wünsche euch noch einen
schönen Abend.