Schlagwort: Studium

  • Der letzte Akt.

    Deflektometrie.Ein letztes Kapitel meines Studiums bin ich noch schuldig geblieben: Die Veröffentlichung meiner Diplomarbeit. Da meine Abschlussarbeit schon seit geraumer Zeit korrigiert ist, kann ich diese nun endlich verlinken und somit jedermann zugänglich machen. Worum es thematisch geht, hatte ich ja bereits in einem früheren Blogeintrag erzählt. Deshalb möchte ich nur noch ein mal den Titel erwähnen: Deflektomtrische Positionsbestimmung gegebener Geometrien mit Grafikkartenbeschleunigung.

    Thematisch kann ich an meiner neuen Wirkungsstätte an meinem Diplomarbeitsthema in Teilen anknüpfen. Ich forsche nun intensiv im noch recht neuen aber schon sehr weitläufigen Gebiet der GPGPU-Programmierung im Kontext der Nutzung für High Performance Computing. Genau eine Aufgabe, wie ich sie mir vorgestellt habe.

  • Da ist das Ding.

    Es ist vollbracht. Heute hab ich als letzten Akt meines Informatikstudiums meine Diplomarbeit abgegeben, die mich grob die letzten neun Monate beschäftigt hat. Zusammen mit meinen Diplomprüfungen von vor ziemlich genau einem Jahr war’s das dann auch inoffiziell mit der Studenterei.

    Sobald ich grünes Licht habe, will ich die insgesamt 143 Seiten hier in meinem Blog veröffentlichen, so wie ich das auch mit meinen bisherigen Dokumenten aus meiner Studienzeit gemacht habe. Bis dahin kann ich nur von 42 (man beachte die Zahl) Abbildungen und 15 Tabellen reden, zeigen kann ich sie jedoch noch nicht.

    Jetzt sind erst mal knapp zwei Monate Ferien und Akku aufladen angesagt, bevor’s mit Arbeiten losgeht. Wo’s mich da hin verschlägt, verrate ich ein andermal. Jetzt bleibt erst mal zu hoffen, dass April und Mai viele schöne Tage zu bieten haben. Falls nicht: Der Stapel von Serien, die angesehen werden wollen, ist durchaus beachtlich. Auch das ein oder andere PC-Spiel will angetestet werden. Und die Bahn freut sich bestimmt, wenn ich ihr ein paar Euro vermache und sie mich dafür quer durch Bayern kutschiert um Corny, Hagi, Steffen und Co. zu besuchen.

  • Durchbruch (in groß). Die Zweite.

    Nachdem ich vor gut zwei Monaten an selber Stelle verkünden durfte, dass mir bei meiner Diplomarbeit der große algorithmische Durchbruch gelungen ist, gibt’s heute den nächsten Meilenstein zu feiern. Musste ich mir beim ersten mal noch alles selbst ausdenken konnte ich für meinen zweiten großen Erfolg auf zahlreiche Paper zurück greifen.

    Zwar bin ich immer noch nicht dazu gekommen meine Diplomarbeit hier im Blog genauer und auch für Laien verständlich vorzustellen, jedoch kann man zum heutigen Meilenstein auch ohne große Einleitung einiges erzählen. Wie an den beiden Bildern unten zu erkennen ist, muss ich es offensichtlich geschafft haben, den Teapot und das Bunny zu rendern. Was soll daran nun so besonders sein? Mit OpenGL sollte sowas doch relativ schnell realisiert sein. Mit DirectX auch. Darüber hinaus sieht die Schattierung der beiden Modelle auch noch äußerst gewöhnungsbedürftig aus. Was ist da nun so toll dran?

    Nun, gerendert wurden die Modelle weder mit OpenGL noch mit DirectX sondern mit meinem eigenen in CUDA geschriebenen Raytracer. Die Berechnungen zur Erstellung der Bilder werden also nicht vom Hauptprozessor sondern von der Grafikkarte durchgeführt mit dem Vorteil, dass ich 100%ige Kontrolle über den Programmfluss habe, was mir bei OpenGL und DirectX in dieser Form nicht möglich gewesen wäre.

    Diese Kontrolle brauche ich, da es in meiner Diplomarbeit nicht primär um Visualisierungen von Dreiecksmengen geht sondern ich die grundlegende Algorithmik eines Raytracers für eine interne Simulation ohne grafische Ausgabe benötige. Auf diese Weise erklärt sich auch die merkwürdige Schattierung: Die Farbe eines Dreiecks korrespondiert nämlich mit dessen Indexnummer in der globalen Dreiecksliste und hat also nichts mit irgendwelchen Beleuchtungen zu tun.

    Für all diejenigen, die sich ein wenig näher mit der Materie auskennen dürfte das jetzt alles recht trivial wirken. Jedoch steckt da im Hintergrund doch noch einiges an Intelligenz drin: Zur Beschleunigung werden die Dreiecke des Modells in einer hierarchischen Struktur, einer sogenannten Bounding Volume Hierarchy organisiert. Diese parallel auf der Grafikkarte zu traversieren war die eigentliche Herausforderung. Somit schaffe ich es im Moment pro Sekunde eine dreistellige Anzahl von Bildern in einer Auflösung von 1024×768 zu erstellen. Genau habe ich das noch nicht gebenchmarkt. Darüber hinaus handelt es sich bei den unteren beiden Bilder um das Ergebnis der allerersten Version meiner Software. Da ist noch nichts optimiert, weder irgendwelche Parameter noch eine Zeile Programmcode.

    Teapot.
    Diese Version des Teapot besteht aus 4032 Dreiecken. Mit größeren Dreiecksmengen kann ich im Moment noch nicht arbeiten, da zwar das Rendering bereits relativ effizient von Statten geht, der Aufbau der zugrunde liegenden Hierarchisierug des Modells noch äußerst ineffizient vom Hauptprozessor übernommen wird.

    Bunny.
    Das Modell des Bunny besteht aus 3999 Dreiecken.

  • Durchbruch (in groß).

    Moment mal. Vor knapp zwei Jahren gab’s ja schon mal einen Artikel mit praktisch dem selben Namen. Damals berichtete ich von dem wichtigsten Entwicklungsschritt (der noch reichlich fehlerbehaftet war) bei meinem Programmierpraktikum.

    Heute kann ich vom wohl wichtigsten Durchbruch bei meiner Diplomarbeit berichten (daher auch das „in groß“), allerdings wohl auch noch reichlich fehlerbehaftet. Wieder habe ich ein mehr oder weniger aussageloses Bild zur Untermauerung meines Erfolgs. Da ich ja schon seit längerem etwas detaillierter über meine Abschlussarbeit berichten wollte, ich jedoch noch nicht die Muse dazu hatte, wird die Verwirrung der nun folgenden Bilder nun noch größer und die Klarheit noch geringer sein. Naja, immerhin habe ich in meinem letzten Blogeintrag mal den Titel online gestellt: Deflektometrische Positionsbestimmung gegebener Geometrien mit Grafikkartenbeschleunigung.

    Natürlich lässt sich diese Konsolenausgabe auch grafisch interpretieren.



    Somit habe ich den unkalkulierbarsten Teil meiner Diplomarbeit erledigt: Das Finden eines Algorithmus, der mir ein ganz bestimmtes Problem löst. Meine Diplomarbeit ist damit zwar noch sehr lange nicht beendet, aber alle nun folgenden Schritte lassen sich zeitlich wesentlich besser planen. Schließlich weiß man nicht, wann man die Lösung für ein Problem findet oder ob man sie überhaupt findet.

    Auf alle Fälle bin ich nun verständlicherweise sehr glücklich. So ein Durchbruch sorgt für Motivation, die ich gleich für weitere Ergebnisse und Erkenntnisse nutzen möchte. Ich bin dann mal wieder bei meiner Diplomarbeit…

  • Arbeitslos.

    …, das bin ich seit heute ganz offiziell. Gestern war mein letzter Tag als immatrikulierter Student.

    Naja, eigentlich bin ich nur im beruflichen Sinne arbeitslos, denn im Moment arbeite ich mit Volldampf an meiner Diplomarbeit, habe also sehr wohl etwas zu tun. Da man aber an der Universität Passau seine Diplomarbeit auch abgeben kann, wenn man nicht mehr immatrikuliert ist und ich sonst nichts mehr zu erledigen habe an der Uni, spare ich mir so die Studiengebühren für’s Wintersemester 2009/10. Lediglich zur Anmeldung einer Diplomarbeit muss man offiziell Student sein, weshalb ein Besuch im Prüfungssekretariat gestern meine letzte offizielle Studentenhandlung war.

    Somit hab ich jetzt ganz offiziell sechs Monate (und ein paar zerquetschte Tage, bis ich die Bestätigung per Post bekomme) Zeit bis zur Fertigstellung meiner Abschlussarbeit. Wundert mich eigentlich, dass ich da drüber noch nicht gebloggt habe, schließlich ist das Thema und die Roadmap der Vorgehensweise mittlerweile klar. Den Titel kann ich an dieser Stelle ja mal posten: „Deflektometrische Positionsbestimmung gegebener Geometrien mit Grafikkartenbeschleunigung“. Klingt komplex, ist es in Teilen auch, aber diese sechs Wörter treffen die Thematik perfekt.

    *Ironie on* So, nun kann ich auch über die ach so faulen Studenten mit ihrem Öko- und Revolutionsgehabe schimpfen, da ich selbst keiner (mehr) bin. Und ich kann mich als arbeitsloser Penner fühlen, der zu Hause rumhängt, Vater Staat auf der Tasche liegt und protestwählt (verdammt, Bundestagswahlen waren erst). *Ironie off*

  • Reset.

    Status rot.

    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

    Status grün.

    Für alle, die sich gefragt haben, warum’s im Mai so wenige Blogeinträge von mir gegeben hat und deshalb auch mein tolles Diplomprüfungsbanner so selten zu sehen gab, hier die Antwort: Ich werde nicht wie gplant in den Sommersemesterferien (September/Oktober) zu meinen Diplomprüfungen antreten sondern erst im Winter (Februar/März/April).

    Der Grund hierfür ist eigentlich recht einfach: ich hab‘ ja jetzt schon ein paar Wochen an der Vorbereitung für die Prüfungen gearbeitet und muss leider zugeben, dass ich zwar wohl rechtzeitig mit der Lernerei fertig werden würde, allerdings dann wohl bei meinem Prüfungen keine all zu gute Note rausspringen würde, weil die Lernzeit insgesamt einfach viel zu kurz bemessen gewesen wäre, um sich optimal vorzubereiten.

    Das wiederum hängt damit zusammen, dass ich für mein Programmierpraktikum einfach viel zu lange gebraucht habe, mit dem ich eigentlich schon Mitte/Ende Februar fertig sein wollte. Die Arbeit der letzten Wochen hat nun gezeigt, dass die verkürzte Lernzeit leider nicht ausreicht um mich so vorzubereiten, wie ich mir das gedacht habe.

    Nichts desto trotz bin ich im Moment fleißig am lernen, denn aufgeschoben ist nicht aufgehoben. Im Winter werde ich dann noch eine Prüfungsvorlesung substituieren. Dadurch erhoffe ich mir mir in einem Fach geprüft zu werden, das mir wesentlich besser liegt, als das bisherige. Darüber hinaus werde ich mich schon in meine Diplomarbeit einarbeiten, damit’s damit dann nach den Prüfungen volle Kanne losgehen kann.

    Status grün.

    ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

    Status rot.

  • Radiometrische Beleuchtungssimulation mit präziser Sensormodellierung.

    Von meinem Programmierpraktikum habe ich hier in meinem Blog ja schon so einiges erzählt. Mit diesem Artikel möchte ich nun abschließend meine zusammenfassende Ausarbeitung der Allgemeinheit zur Verfügung stellen.

    Ausarbeitung: zybesi.pdf (360 KB)

    Die erstellte Software selbst, die ich Zybesi getauft habe (Zylinderbeleuchtungssimulator), beziehungsweise deren Quelltext werde ich nicht veröffentlichen. Das hängt damit zusammen, dass Zybesi massiven Gebrauch der FORWISS-Libraries macht. Diese werden für Punkt- und Vektorrechnungen in der Ebene und im Raum sowie für die Erstellung der grafischen Benutzeroberfläche benötigt. Jedoch sind diese Libraries nicht frei zugänglich. Da sie aber sowohl zum Kompilieren als auch für die Ausführung meines Programms benötigt werden, macht es wohl keinen all zu großen Sinn, Quelltext oder das Programm selbst über meinen Blog zu veröffentlichen.

  • Heute schreiben wir Geschichte.

    Status grün.
    Vergangenen Dienstag war es soweit. Ein Ereignis von historischem Ausmaße stand an. Ich habe mit der Lernerei für meine Diplomprüfungen in den Sommersemesterferien begonnen.

    Während sich andere für ein derartiges Mammutprojekt gerade einmal 100 Tage Zeit lassen, stehen mir auch nicht wirklich komfortable 138 Erdrotationen dafür zur Verfügung.

    Da ich in meiner Lernzeit den ein oder anderen Blogeintrag zum Thema Lernen erstellen werde, habe ich mir zu diesem Zweck die beiden Banner oben und unten von diesem Eintrag einfallen lassen. Sie sollen immer den aktuellen Stand meiner Synapsenbildung repräsentieren. Die Dinger gibt’s noch in gelb und in rot, je nachdem wie kritisch die aktuelle Lernphase ist. Momentan ist ja noch nicht viel passiert, also sind sie noch brav grün.

    So, das ist jetzt der Blogeintrag, den ich mir in ein paar Jahren mal ansehen kann und dann meinen Kindern erzähle, dass am 15. April 2008 das große Lernen begonnen hat.
    Status grün.

  • Subpixelgenaue Geometrierekonstruktion auf der Basis lokaler Raummodelle.

    Jetzt nehme ich mir doch mal die Zeit und schreibe ein paar Sätze zu meinem Programmierpraktikum. Das ist nämlich in diesem Semester meine universitäre Hauptbeschäftigung da es sich um den letzten Schein handelt, den ich für die Zulassung zu meinen Diplomprüfungen im Hauptfach, die ich im Spätsommer ablegen will, benötige. In so einem Programmierpraktikum geht es darum in Einzelarbeit im Zeitraum von drei bis sechs Monaten ein größeres Softwareprojekt auf die Beine zu stellen. Ich hatte ja bereits einen Andeutungsblogeintrag verfasst, der Außenstehenden wohl mehr Fragen als Antworten beschert hat. Deshalb hier ein paar ausführlichere Absätze. Werkeln tue ich an diesem Programmierpraktikum, dessen Titel auch gleichzeitig der Titel dieses Blogeintrags ist, schon seit Anfang/Mitte Oktober und ich schau‘, dass ich bis Mitte/Ende Februar alles über die Bühne gebracht habe. Also worum geht’s?

    Bei Qualitätssicherungsprozessen in der Industrie geht es oftmals um die schnelle Vermessung von technischen Bauteilen, also beispielsweise wie groß diese sind, wie sie im Raum liegen oder ob eventuell eine Verschmutzung oder Beschädigung vorliegt. Diese Bauteile sind meistens aus geometrischen Primitiven wie Kugeln, Kegeln, Zylinder, Quader oder dergleichen aufgebaut. Will man also Qualitätssicherung oder Bestimmung der geometrischen Eigenschaften eines technischen Bauteils durchführen, so muss man erstmal diese geometrischen Primitiven in den Griff bekommen.

    Die geometrische Primitive, mit der ich mich in meinem Programmierpraktikum beschäftige ist der Zylinder. Meine Aufgabe dabei lautet anhand eines Bildes, das von einem realen Zylinder (also zum Beispiel einem Draht oder einem Rohr oder der abgerundete Eckteil einer Tischkante) geschossen wurde, die Raum- und Lageparameter (wie Radius und Ausrichtung) des Zylinders zu ermitteln.

    Um diese Aufgabe zu meistern gehe ich wie folgt vor: Ich habe ein reales Foto des Zylinders, den ich vermessen soll sowie Informationen über die Oberflächeneigenschaften des Zylinders wie Rauheit oder Reflektanzeigenschaften. Darüber hinaus stehen mir Informationen über die Anordnung der Kamera, die das reale Foto geschossen hat und die Lichtquelle, die den Zylinder beleuchtet, zur Verfügung. Aus diesen Informationen erstelle ich nun virtuell im Computer ein gerechnetes Bild eines Zylinders, der die selben Oberflächeneigenschaften hat, wie der in der Realität fotografierte und der auf die selbe Weise beleuchtet wird. Da mir jedoch keine Lageinformationen des realen Zylinders zur Verfügung stehen (diese will ich ja bestimmen), entspricht das virtuelle Bild nicht dem geschossenen Foto.

    Der Clou bei der Sache ist nun, dass ich an den Lageparametern des Zylinders (genau handelt es sich dabei um fünf zu ermittelnde Parameter: Radius des Zylinders (ein Parameter), Neigung des Zylinders (zwei Parameter) und Verschiebung des Zylinders in der xy-Ebene (nochmals zwei Parameter)) so lange rumprobiere und herumexperimentiere, bis der Zylinder auf dem virtuell erstellten Bild genau so aussieht wie der Zylinder auf dem geschossenen Foto. Zu diesem Zweck gibt es eine „intelligente“ Art des Ausprobierens, die sich Nichtlineare Optimierung nennt.

    Um das virtuelle Bild zu erstellen brauche ich zum einen ein Modell der Beleuchtung des Zylinders und zum anderen eine Modellierung der Eigenschaften der Kamera, die das reale Bild geschossen hat. Bei ersterem handelt es sich um mehr oder weniger realistische Modelle zur Berechnung der Reflektanzeigenschaften des Zylinders beziehungsweise dessen Verhalten bei unterschiedlicher Beleuchtung. Bei letzterem wird beachtet, dass eine Kamera in der Realität nicht so arbeitet wie ein Raytracer. Näheres will ich an dieser Stelle jedoch nicht erwähnen, denn das würde schon sehr tief ins Detail gehen.

    Ich schau, dass ich, sobald mein Programmierpraktikum abgeschlossen ist, den Quelltext meines Programms und vor allem meine Ausarbeitung, in der die Vorgensweise dann sehr genau beschrieben ist, hier in meinem Blog online stellen kann. Nachdem’s vor ein paar Tagen schon das erste virtuell erstellte Bild in meinem Blog zu bestaunen gab möchte ich an dieser Stelle ein Bild posten, das den aktuellen Stand meiner Arbeit wiederspiegelt. Dabei handelt es sich zwar noch um ein Bild das via Raytracing erstellt wurde, die Kameracharakteristik also noch keine Rolle spielt, das aber schon wesentlich realistischer als mein allererstes Bild aussieht.

  • Durchbruch.

    Nur ganz kurz ein Bild der Früchte meines Erfolgs. Die meisten werden jetzt keine Ahnung haben, was es mit diesem Bild auf sich hat, allen anderen sei gesagt: Bei diesem Bild handelt es sich um das allererste, bei dem’s geklappt hat. Dementsprechend mau sieht’s noch aus.

    Wenn ich in den nächsten Tagen mal ein wenig Zeit hab, wonach’s leider nicht aussieht, werd‘ ich mal ein bisschen mehr über die Hintergründe des Bildes schreiben.