home  |  suche  |  kontakt/johner  |  institut 
studierende  |  tech-docs  |  mindmailer 

Festlegung des Strukturelements

Das Strukturelement bestimmt welche Nachbarpixel eines ausgewählten Pixels für die Berechnung des Pixelfarbwerts im generierten Bild in Frage kommen. Im Applet wird dafür eine 3x3 Felder große Matrix verwendet, d.h. für einen ausgewählten Pixel werden jeweils die oberen drei benachbarten, die unteren drei, sowie die Pixel links und rechts zur Berechnung hinzugezogen. Durch ein entsprechendes Strukturelement könnte z.B. nur die 5 Pixel links von dem Ursprungspixel als Nachbarn bestimmt werden. Eine oft benutztes Strukturelement ist jedoch die oben beschriebene 3x3 Matrix.

Bildpixel neu berechnen

Für jeden Pixel im Originalbild werden nacheinander die Nachbarpixel, entsprechend dem Strukturelement, ausgewählt. Aus diesen Pixeln, sowie dem Originalpixel wird dann der dunkelste Pixelwert bestimmt und an die Stelle des ursprünglichen Pixel, in das neue Bild kopiert.

protected BufferedImage erodeImage(BufferedImage image) {
	int w = image.getWidth();
	int h = image.getHeight();
	int[] pixelsIn = FilterHelper.getSingleton().getPixels(image);
	int[] pixelsOut = new int[pixelsIn.length];

	for (int p = 0; p < radius; p++) {
		if (p > 0) {
			pixelsIn = pixelsOut;
			pixelsOut = new int[pixelsIn.length];
		}
		for (int x = 0; x < w; x++) {

			for (int y = 0; y < h; y++) {


				int[] neighbors = getNeighbors(pixelsIn, x, y, w, h);
				int replaceColor = getDarkestColor(neighbors);

				pixelsOut[y * w + x] = replaceColor;

			}
		}

	}
	return FilterHelper.getSingleton().getImage(pixelsOut, w, h, image.getType());
}

Wiederholung

Wie obigen Codefragment ersichtlich, kann die Erosion eines Bildes mehrmals wiederholt werden. Je nach Ausprägung des Radius-Parameters wird die Vergrößerung der dunklen Bereiche verstärkt, indem das erodierte Bild aus der vorherigen Iteration nochmals bearbeitet wird.

To view this content, you need to install Java from java.com


>weiter zur Dilatation