Also ich bin gerade verwirrt...xD Ich soll einen Operator schreiben welche eine Distanztransformation dürchführt und anschließend die Distanz Map und das Skelett des Eingabebildes zurück gibt. Mein Problem ist, dass ich nicht ganz verstehe was ich falsch mache bezgl. Berechnung. Ich muss ja das Bild so oft Erodieren bis der gesamte Vordergrund "verschwunden" ist. So wie ich es verstehe müsste ich nach jeder Erosion das Eingabebild mit dem erodierten Bild vergleichen und ungleiche Bildwerte in die Distanzmap eintragen...but i'm not sure about that.
Das ist meine Methode für den Pixel Vergleich:
BTW: der Int Value wird ja bei jeder Erosion erhöht und wird initialisiert bei 2 (weil Hintergrund = 0 und Vorgrund base = 1)
Das ist meine Methode für den Pixel Vergleich:
Java:
private void comparePixels(MTBImageByte uneroded, MTBImageByte eroded, MTBImageByte distanceMap, int value) {
System.out.println("Lets compare");
for(int i = 0; i < uneroded.getSizeX(); i++) {
for(int j = 0; i < uneroded.getSizeY(); i++) {
if(distanceMap.getValueInt(i, j) > 0 && uneroded.getValueInt(i, j) != eroded.getValueInt(i, j)) {
System.out.println("Different Pixel lets write it down!");
distanceMap.putValueInt(i,j,value);
}
}
}
}
BTW: der Int Value wird ja bei jeder Erosion erhöht und wird initialisiert bei 2 (weil Hintergrund = 0 und Vorgrund base = 1)