Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

Panschk[FP]

Junior Schreiberling

  • "Panschk[FP]" is male
  • "Panschk[FP]" started this thread

Posts: 148

Date of registration: Oct 21st 2005

Location: H-town

Occupation: Informatik Master

1

Saturday, November 10th 2007, 12:10am

GDV in Medizin

Hat schon jemand Aufgabenblatt 1 gemacht? Wenn ja, würde mich mal interessieren, ob dort auch Probleme mit den Bilddaten im Ordner ct_head_im auftreten? (Exception, weil irgendwo ein String mit unerlaubten Sonderzeichen in Int gewandelt werden soll oder so). Abgesehen von diesem Problem klappt das bei mir bisher ganz gut, solange ich die Daten aus ct_head_ex verwende.

DrChaotica

Senior Schreiberling

  • "DrChaotica" is male

Posts: 714

Date of registration: Jan 22nd 2005

Location: SHG

Occupation: SW-Entwickler

2

Monday, November 12th 2007, 2:55pm

Hallo, du.
Ja, das geht alles. Allerdings sind es nur Bilder von 0-111, da bei dem letzten Bild die Nummer (Tag (0020,0013)) nicht stimmt (zweimal #111).
Hast du daran gedacht, den VR zu laden?

So sieht der Kopf gerade aus. Vielleicht sollte ich dieses Projekt beenden solange es noch geht, das ist mir alles etwas zu unheimlich 8|
Ich meine, der Typ hat so eine Art Scheinwerfer in den Zähnen, das ist ja nicht normal. Sicher eine seltene Krankheit...der Behandlungsplan steht jedenfalls fest, erstmal raus mit den Beißerchen, dann sehen wir weiter.

This post has been edited 2 times, last edit by "DrChaotica" (Nov 12th 2007, 6:17pm)


Panschk[FP]

Junior Schreiberling

  • "Panschk[FP]" is male
  • "Panschk[FP]" started this thread

Posts: 148

Date of registration: Oct 21st 2005

Location: H-town

Occupation: Informatik Master

3

Monday, November 12th 2007, 7:37pm

Danke, genau das war das Problem.
Ich muss echt mal aufmerksamer lesen, jedes Detail kann wichtig sein;)

Edit: Von der Seite angucken kann ich noch nicht. Aber immerhin schon von oben nach unten.

This post has been edited 1 times, last edit by "Panschk[FP]" (Nov 12th 2007, 7:38pm)


DrChaotica

Senior Schreiberling

  • "DrChaotica" is male

Posts: 714

Date of registration: Jan 22nd 2005

Location: SHG

Occupation: SW-Entwickler

4

Monday, November 12th 2007, 8:17pm

Ja, beim impliziten Teil den VR nachzuschlagen hatte ich auch vergessen gehabt.
Aha, wenn Du jetzt die Seite anzeigen willst: da gibts noch eine kleine Falle, die Dir eventuell schon aufgefallen ist:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  // _w und _h initialisieren
  if (viewmode==0) { //transversale Sicht
    _w = active_file.getImageWidth();
    _h = active_file.getImageHeight();
  }
  else if (viewmode==1) { //sagittale Sicht
    _w = _slices.getImageHeight();	
    _h = _slices.getNumberOfImages();
  }
  else if (viewmode==2) { //frontale Sicht
   _w = _slices.getImageWidth();
   _h = _slices.getNumberOfImages();
  }
		
	
  // _w and _h need to be initialized BEFORE filling the image array !
  if (_bg_img==null || _bg_img.getWidth(null)!=_w || _bg_img.getHeight(null)!=_h) {
    reallocate();
  }


Und zwar dieser nette Hinweis: "_w and _h need to be initialized BEFORE filling the image array !"
Schau Dir aber mal an, was die Funktion reallocate mit den fein initialisierten Werten _w und _h macht:

Source code

1
2
3
4
5
6
7
8
9
10
private void reallocate() {
  _w = _slices.getImageWidth();
  _h = _slices.getImageHeight();
		
  _bg_pixels = new int[_w*_h];
  _bg_mis = new MemoryImageSource(_w, _h, _bg_pixels, 0, _w);
  _bg_mis.setAnimated(true);
  _bg_img = createImage(_bg_mis);
...
usw.

Ich kann wirklich keinen Sinn darin sehen, dass reallocate an dieser Stelle die Werte _w und _h selbst verändert (die beiden ersten Zeilen), hat da jemand eine Idee? Ich habs jedenfalls auskommentiert.
Naja, wie Du Dir vielleicht denken kannst, war das mal eine kleine zeitraubende Falle, mit diesem Verhalten habe ich dort am wenigsten gerechnet...

Markus

the one and only Unterstrich!

Posts: 2,571

Date of registration: Oct 9th 2003

5

Monday, November 12th 2007, 8:34pm

ohne jetzt irgendeine ahnung zu haben (ist schon zu lange her): vlt. werden _h und _w anderweitig gebraucht. sind ja hier globalr variablen.

edit: ignorier mich, ist glaube ich besser
Charmant sein? Hab ich längst aufgegeben. Glaubt mir doch eh keiner...

This post has been edited 1 times, last edit by "Markus" (Nov 12th 2007, 8:35pm)


DrChaotica

Senior Schreiberling

  • "DrChaotica" is male

Posts: 714

Date of registration: Jan 22nd 2005

Location: SHG

Occupation: SW-Entwickler

6

Friday, November 30th 2007, 8:50pm

glättungsfunktion

Nein, ich ignorier Dich aber nicht. Globale Variablen hab ich übrigens jetzt auch überall benutzt, so geht's viel schneller und mir bleibt die Gewissheit, dass ich noch etwas verbessern kann :thumbup:

[EDIT]
Falls jemand schon das Flächenmodell mit Hilfe des Marching-Cubes-Algorithmus erstellt hat: Ein Kommilitone (danke nochmal! :)) schlug mir den Laplace-Filter zur Glättung des entstandenen Kopfmodells vor. Unten habe ich Quellcode dazu angehängt, als Eingabe werden die Punktmenge, die Liste zur Speicherung der indizierten Dreieckspunkte, sowie ein Parameter zur Angabe der Feinheit der OP erwartet (größere Werte -> glatteres Objekt).
Das funktioniert sehr gut, außerdem bekommt man damit heraus, wie sorgfältig die eigene Routine zum Erstellen der indizierten Dreieckslisten gearbeitet hat. Die muss ja alle doppelt vorhanden Punkte herausnehmen und die übrigen zur Erzeugung der Dreiecksliste verwenden; arbeitet sie nicht genau genug und filtert nicht alle mehrfach vorhandenen Punkte heraus, sieht das 3d-Modell zwar später ok aus, obwohl es eigentlich aus vielen unzusammenden Teilflächen besteht. Das erkennt man normalerweise nicht, aber die Anwendung dieses Laplace-Filters hier wird in dem Fall alle Teilflächen zusammenschrumpfen lassen, so dass das Objekt später lauter Löcher enthält.

Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
		public void laplace_smooth(Vector<Point3f> vertices, Vector<Integer> triangles, int numIterations)
		{
			//Nachbarschaft der Punkte berechnen
			Vector<Set<Integer>> neighborhoods = new Vector<Set<Integer>>(vertices.size());
			neighborhoods.setSize(vertices.size());
			for(int i = 0; i < vertices.size(); ++i)
				neighborhoods.set(i, new CopyOnWriteArraySet<Integer>());
			
			for(int i = 0; i < triangles.size(); i += 3)
			{
				int i0 = triangles.get(i+0);
				int i1 = triangles.get(i+1);
				int i2 = triangles.get(i+2);
				
				neighborhoods.get(i0).add(i1);
				neighborhoods.get(i0).add(i2);
				
				neighborhoods.get(i1).add(i0);
				neighborhoods.get(i1).add(i2);

				neighborhoods.get(i2).add(i0);
				neighborhoods.get(i2).add(i1);
			}

			//jeden Punkt ins Zentrum seiner topologischen Nachbarn ziehen
			for(int iter = 0; iter < numIterations; ++iter)
			{
				System.out.println("iteration " + iter);
				Vector<Point3f> temp_vertices = new Vector<Point3f>(vertices.size());
				temp_vertices.setSize(vertices.size());
				for(int i = 0; i < vertices.size(); ++i)
				{
					Point3f p = new Point3f(0,0,0);
					int count = 0;
					for(int n : neighborhoods.get(i))
					{
						p.add(vertices.get(n));
						++count;
					}
					
					p.scale(1.0f/count);
					temp_vertices.set(i, p);
				}
				
				for(int i = 0; i < vertices.size(); ++i) {
					vertices.set(i, temp_vertices.get(i));
				}
			}
		}

This post has been edited 2 times, last edit by "DrChaotica" (Dec 30th 2007, 9:41pm)


Panschk[FP]

Junior Schreiberling

  • "Panschk[FP]" is male
  • "Panschk[FP]" started this thread

Posts: 148

Date of registration: Oct 21st 2005

Location: H-town

Occupation: Informatik Master

7

Wednesday, December 19th 2007, 6:58pm

Hat vielleicht jemand, der das im letzten Jahr schon gemacht hat, oder irgendwie gute Kontakte hat, die Materialien zu Marching Cube und könnte sie mir zur Verfügung stellen? (Die Aufgabenstellung ist im stud.ip zu haben, aber ich nehme mal an, dass es nach den Ferien noch weitere Folien mit Implementationshinweisen geben wird, und auf die will ich nicht warten.)

DrChaotica

Senior Schreiberling

  • "DrChaotica" is male

Posts: 714

Date of registration: Jan 22nd 2005

Location: SHG

Occupation: SW-Entwickler

8

Wednesday, December 19th 2007, 7:19pm

Ich hab Dir ne Mail geschickt - viel Spaß damit...

Panschk[FP]

Junior Schreiberling

  • "Panschk[FP]" is male
  • "Panschk[FP]" started this thread

Posts: 148

Date of registration: Oct 21st 2005

Location: H-town

Occupation: Informatik Master

9

Thursday, December 20th 2007, 12:21am

Danke für die Mail. Wer die Sachen ebenfalls haben will, kann sich jetzt ja auch an mich wenden;-]

Kleine Verständnisfrage zu Aufgabe 7.1: "invertieren" ist doch das Umkehren der Werte, nicht spiegeln an irgendeiner Achse, oder? Also meinetwegen
10000100 --> 01111011 ?

oixio

Senior Schreiberling

  • "oixio" is male

Posts: 517

Date of registration: Oct 3rd 2004

10

Thursday, December 20th 2007, 5:18pm

Wer die Sachen ebenfalls haben will, kann sich jetzt ja auch an mich wenden;-]


Oder einfach mal ins StudIP schauen. So wie es aussieht sind mittlerweile alle 8 Blätter online (habe sie mir allerdings noch nicht angesehen)
Dieser Post wurde aus 100 % chlorfrei gebleichten, handelsüblichen, freilaufenden, glücklichen Elektronen erzeugt!

DrChaotica

Senior Schreiberling

  • "DrChaotica" is male

Posts: 714

Date of registration: Jan 22nd 2005

Location: SHG

Occupation: SW-Entwickler

11

Thursday, December 20th 2007, 6:20pm

Kleine Verständnisfrage zu Aufgabe 7.1: "invertieren" ist doch das Umkehren der Werte, nicht spiegeln an irgendeiner Achse, oder? Also meinetwegen
10000100 --> 01111011 ?
:thumbup:

Panschk[FP]

Junior Schreiberling

  • "Panschk[FP]" is male
  • "Panschk[FP]" started this thread

Posts: 148

Date of registration: Oct 21st 2005

Location: H-town

Occupation: Informatik Master

12

Friday, December 21st 2007, 7:02pm


Oder einfach mal ins StudIP schauen. So wie es aussieht sind mittlerweile alle 8 Blätter online (habe sie mir allerdings noch nicht angesehen)


Die Aufgabenblätter schon, aber die Folien enthalten ja meist ebenfalls recht nützliche Tipps, und die sind noch nicht im Stud.ip.
Ich bin gerade mittendrin in dem Marching-Cube-Ding und sehe nur noch Dreiecke und Würfel:P Würde ich vom Schwierigkeitsgrad jedenfalls als angemessenes Finale bezeichnen;)