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![]()



Reply With Quote


blub 

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 



Bookmarks