Ich möchte auf eine möglichst einfache Art und Weise (ohne Million Überprüfung der Bildgrenzen) die Kontur, mit der Breite von n Pixeln in den positiven Bereich, aus dem binären 2D-Array holen.Python: Kontur im binären 2D-Array
Beispiel:
img = np.array([
[0, 0, 0, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1],
[0, 1, 1, 1, 0, 0, 0, 0, 0],
])
für den Aufruf mit z.B. Breite = 1. Pixel sind positiv, wenn img [i, j] == 1 und irgendein Nachbar (img [i + 1, j], img [i-1, j], img [i, j-1], img [ i, j + 1]) ist 0.
contour1 = get_countor(img, width = 1)
contour1 = ([
[0, 0, 0, 1, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 1, 1, 1, 1, 1],
[0, 1, 0, 1, 0, 0, 0, 0, 0],
])
oder mit z width = 2. Alle Pixel ab Breite = 1 sind positiv, ebenso wie diejenigen, die img [i, j] == 1 erfüllen und für die bei 2 Indizes (euklidischer Abstand) ein Pixel mit dem Wert 0 existiert.
contour2 = get_countor(img, width = 2)
contour2 = ([
[0, 0, 0, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 1, 1, 1],
[0, 1, 1, 1, 0, 0, 0, 0, 0],
])
Vielen Dank für Ihre Hilfe.