Announcement

Collapse
No announcement yet.

Projekt How-to

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • [LÖSUNG] Projekt How-to

    Da es sicher einigen so geht, wie es mir gegangen ist, hier mal eine kleine Erklärung zum Projekt. Grundsätzlich stellt sich mal die Frage, was eigentlich zu machen ist. Die etwas schwammige Angabe findet sich in den Folien. Man findet sie inklusive Quellcode auf der LVA Seite: http://www.viskom.oeaw.ac.at/~milos/lecture/
    Die Angaben variieren jedes Jahr ein bisschen, dieses Jahr lauten sie wie folgt:
    (Very) simple rendering of 3D data sets
    Projection in ±X, ±Y, ± Z directions
    1. Simple rendering techniques
    Sum, max, compositing FTB, BTF, isosurface
    2.Submission and exam:
    1. Select 6 images you like representing
    each category, submit them in a pdf file
    2. Submit source of the project

    Das bedeutet grundsätzlich mal, dass man 3D Daten hat, die man jeweils in ±X, ±Y, ± Z Richtung projizieren soll. Dafür gibts eben ein paar Techniken, wie z.B. Sum. Projiziert man z.B. in +X Richtung, schießt man quasi Strahlen in X Richtung durch, und summiert die Helligkeitswerte auf. Dadurch erhält man eine Art Röntgen bild (beim Röntgen passiert ja auch nichts anderes). Zum Darstellen sollte man das ganze noch durch die Anzahl der durchlaufenen Pixel dividieren (also ist Sum eigentlich der Durchschnitt), da man ja nur Farbwerte zwischen 0 und 255 zeichnen kann.

    So, und wie geht man das ganze jetzt an?
    Also erstens braucht man den Quellcode von der Seite. Dann könnt ihr mal versuchen, dass ganze unter Windows laufen zu lassen, und das ganze schnell aufgeben. Weil erstens zu viele Fehler auftreten, und zweitens das Framework unter Windows falsche Ergebnisse liefert. Also ladet ihr euch VM Ware Player runter, und installiert das neue Ubuntu drauf. Geht ganz einfach und schnell. Dann kopiert ihr das Projekt auf den Ubuntu Desktop. Wenn ihr die Konsole öffnet, wechselt ihr mit cd Desktop/f3dProjBasicNoComp11 ins Projektverzeichnis. Gebt einfach "make" ein (ohne irgendwelche Parameter) um das Projekt zu kompilieren. Das ganze wird immer noch einen Fehler ausspucken. Das ganze lässt sich aber beheben, indem ihr euch von http://zlib.net/ zlib compiled DLL runterladet und entpackt. Dann kopiert ihr zlib1.dll, zconf.h und zlib.h (die Header Dateien sind im include Verzeichnis) in das Projektverzeichnis. Nun lässt sich das ganze kompilieren.

    Mittels ./project -t 2 data/bigbrain-n.f3d > bigbrain-n.ppm lässt sich nun eine Projektion erstellen. Die lässt sich unter Ubuntu ohne zusätzliche Installation öffnen und betrachten.

    So, wie löse ich nun die Aufgabe?
    Öffnet project.cpp mit dem Editor. Ihr müsst nur in diesem File arbeiten, sonst nirgends. Ab ca. Zeile 85 fängt der Code an, für den ihr euch interessiert. Hier gibt es 3 for-Schleifen, die das Bild in alle 3 Richtungen durchlaufen. Die innerste Schleife (z-Schleife) ist die, die die Projektionsrichtung angibt. Mittels in->get(x, y, z) wird der aktuelle Pixel ausgelesen. Das heißt, ihr müsst euch damit nur ein bisschen spielen, um die Projektionsrichtung zu ändern. FTB wurde bereits implementiert, der Code für BTF ist auch schon vorhanden (in FTB, aber auskommentiert). Ihr müsst jetzt nur mehr die restlichen Funktionen ergänzen. Average entspricht hierbei Sum. Ihr ergänzt jetzt einfach bei Average den Case um I= I + in->get(x,y,z); und nach der z-Schleife um

    switch(type){
    case AVERAGE:
    {
    I= I/in->getNZ();
    }
    }

    Damit habt ihr schon den Durchschnitt. Jetzt noch ein make in der Konsole und ihr könnt das ganze mit
    ./project -t 0 data/bigbrain-n.f3d > bigbrain-n.ppm testen. Das -t 0 entspricht dabei dem Sum-Modus. Welche Zahl welcher Modus ist, kann man in Zeile 10 sehen (die Reihenfolge der Einträge). Wenn ihr euch das Bild jetzt anschaut, habt ihr ein schönes Röntgenbildähnliches Bild in Z Richtung.

    Ich glaub den Rest schafft ihr jetzt auch allein
    Last edited by freiBär; 14-05-2011, 15:08.
    Why?... Because we can take it. We are not heroes, we just love science. We are silent guardians, watchful protectors of knowledge. We are dark knights (sometimes in white labcoats).

    freiBär für alle!
    https://twitter.com/freiBaer

  • #2
    Hey, das ist ne super Sache, vielen Dank! Ich habs mir selber noch gar nicht angeschaut, weil ich mit den anderen Übungen noch beschäftigt bin, aber das freut mich, dass einer sich die Mühe gemacht hat, den Kollegen den Einstieg zu erleichtern, insbesondere weil ich - wie vermutlich die meisten hier mit Windows - erst ewig versucht hätten, das im Visual Studio zum Laufen zu kriegen. Wenn du sagst, dass es unter Windows falsche Ergebnisse gibt, muss ich mir die Mühe erst gar nicht machen, es da zu probieren.
    Former ECG & CGUE Tutor

    Comment


    • #3
      Habs am Anfang auch mit Visual Studio probiert. Im Forum gibts sogar irgendwo eine Anleitung dafür. Das Problem ist aber, dass dort einige berichten, dass es zu unterschiedlichen Ergebnissen kommen kann. Hier gibts übrigens eine einfache Installationsanleitung für das neue Ubuntu unter VM Ware: http://www.sysprobs.com/install-natt...l-vmware-tools

      Geht einfach und relativ schnell (unter 1h). Hab mich diese Woche mit ein paar anderen aus der VU getroffen, und sind dann gemeinsam auf die oben genannten Schritte gekommen. Ist also nicht allein mein Verdienst Ich freu mich wenn ich helfen kann....immerhin kann man schon ziemlich viel Zeit in den Sand setzen, wenn man nicht genau weis was man machen soll...
      Why?... Because we can take it. We are not heroes, we just love science. We are silent guardians, watchful protectors of knowledge. We are dark knights (sometimes in white labcoats).

      freiBär für alle!
      https://twitter.com/freiBaer

      Comment


      • #4
        Weis wer, wos noch mehr Bilder gibt? Wir sollen ja von jeder Kategorie 6 Bilder zeigen, wir haben aber nur 3 3D Datasets...
        Why?... Because we can take it. We are not heroes, we just love science. We are silent guardians, watchful protectors of knowledge. We are dark knights (sometimes in white labcoats).

        freiBär für alle!
        https://twitter.com/freiBaer

        Comment


        • #5
          ist das bei euch aus so, dass wenn man averaging oder auch sum macht, der kopf nicht erkennbar ist? sondern diese komischen querstreifen?
          Die Zeit war schön, nur ans is bled...
          ... dass mit der Zeit die Zeit vergeht

          Comment


          • #6
            jop hab ich auch @ kuoni ... ich hätte eine andere frage: wann, wie wo muss man den source etc abgeben? das pdf muss man zur prüfung mitnehmen und den soruce auch=?
            blub

            Comment


            • #7
              Originally posted by Newbie0815 View Post
              jop hab ich auch @ kuoni ... ich hätte eine andere frage: wann, wie wo muss man den source etc abgeben? das pdf muss man zur prüfung mitnehmen und den soruce auch=?
              per mail schicken.
              Why?... Because we can take it. We are not heroes, we just love science. We are silent guardians, watchful protectors of knowledge. We are dark knights (sometimes in white labcoats).

              freiBär für alle!
              https://twitter.com/freiBaer

              Comment


              • #8
                Was soll man denn unter "case SHADED" implementieren? Wie habt ihr das gelöst? Unter shaded hätte ich spontan eine Gouraud- oder Phong-geshadete Isofläche des Datensatzes und dann Ray Casting mit "First"-Rückgabe verstanden, aber ich wage zu behaupten, dass das den "sehr einfachen" Umfang des Übungsteils sprengen würde, oder liege ich da falsch?
                Former ECG & CGUE Tutor

                Comment


                • #9
                  Originally posted by mOfl View Post
                  Was soll man denn unter "case SHADED" implementieren? Wie habt ihr das gelöst? Unter shaded hätte ich spontan eine Gouraud- oder Phong-geshadete Isofläche des Datensatzes und dann Ray Casting mit "First"-Rückgabe verstanden, aber ich wage zu behaupten, dass das den "sehr einfachen" Umfang des Übungsteils sprengen würde, oder liege ich da falsch?
                  du verwechselst da irgendwas. wo hast dubittedie komische Angabe her? Die Angabe lautet doch eindeutig Sum, max, compositing FTB, BTF, isosurface, und das ist doch ziemlich einfach...
                  Why?... Because we can take it. We are not heroes, we just love science. We are silent guardians, watchful protectors of knowledge. We are dark knights (sometimes in white labcoats).

                  freiBär für alle!
                  https://twitter.com/freiBaer

                  Comment


                  • #10
                    "case SHADED" ist eine Zeile aus dem Code, den wir vervollständigen sollen, eben bei der Unterscheidung der verschiedenen Rendering Types. Der Tatsache, dass der Rendering Type nicht ISOSURFACE sondern SHADED heißt, habe ich entnommen, dass man sich hier auch noch um ein Beleuchtungsmodell kümmern soll.
                    Former ECG & CGUE Tutor

                    Comment


                    • #11
                      Originally posted by mOfl View Post
                      "case SHADED" ist eine Zeile aus dem Code, den wir vervollständigen sollen, eben bei der Unterscheidung der verschiedenen Rendering Types. Der Tatsache, dass der Rendering Type nicht ISOSURFACE sondern SHADED heißt, habe ich entnommen, dass man sich hier auch noch um ein Beleuchtungsmodell kümmern soll.
                      Vervollständigen ist relativ (steht auch nicht in der Angabe). Das ist nämlich seit Jahren der selbe Code, aber mit leicht veränderter Angabe. Aber um deine Frage zu beantworten: Threshold auswählen, sobald der überschritten wird Gradient (central difference estimation) bestimmen - fertig. Also ja, eigentlich hast du dadurch schon Beleuchtung drinnen. Anleitung dafür gibts schon - suche nach isosurface hilft
                      Why?... Because we can take it. We are not heroes, we just love science. We are silent guardians, watchful protectors of knowledge. We are dark knights (sometimes in white labcoats).

                      freiBär für alle!
                      https://twitter.com/freiBaer

                      Comment


                      • #12
                        Originally posted by freiBär View Post
                        Gradient (central difference estimation) bestimmen
                        Danke, ich glaube, das war das richtige Stichwort. Ich hatte die Schätzung des Gradienten nicht mit den benötigten Normalen für die Beleuchtung in Verbindung gebracht
                        Former ECG & CGUE Tutor

                        Comment


                        • #13
                          Vielleicht übersehe ich was, aber -

                          wo gibts die angaben zur UE? Laut freibär war die Angabe letztes Jahr auf den Folien. Das Framework findet sich online auf der LVA-Website. Aber wo genau findet man eine Angabe zur UE? Hat jdm. eine Idee?

                          Comment


                          • #14
                            Puh da gräbst einen alten Schinken aus Die Angabe ist sehr vage, aber da du ohnehin nur grob 20 Zeilen ändern/schreiben musst, genügt das wohl auch. Die wenigen Informationen, die es dazu gibt, sollten sich in http://cg.tuwien.ac.at/courses/MedVi...uction2012.pdf finden lassen.
                            Former ECG & CGUE Tutor

                            Comment


                            • #15
                              Die Angabe findet sich in den Folien...ist ungefähr ein bis 2 Zeilen lang ;-)

                              Gesendet von meinem Nexus S mit Tapatalk
                              Why?... Because we can take it. We are not heroes, we just love science. We are silent guardians, watchful protectors of knowledge. We are dark knights (sometimes in white labcoats).

                              freiBär für alle!
                              https://twitter.com/freiBaer

                              Comment

                              Working...
                              X