Es gibt vier grundlegendste morphologische Operationen, nämlich Erosion, Erweiterung, offene Berechnung und geschlossene Berechnung. „scipy.ndimage implementiert diese vier Operationen für binäre Arrays bzw. Graustufen-Arrays.“
binary_erosioncorrosion | binary_dilation | grey_dilation|
---|---|---|
bin ary_closing | grey_closing | |
binäres_Öffnen | graues_Öffnen | |
Binäre Morphologie | ||
wobei B | ij | bedeutet, wenn der Ursprung von B BB bei (i, j) liegt , die Menge aller Werte, die in B 1 sind.
Mit anderen Worten, solange der Überlappungsbereich von B und A keine leere Menge ist, wird der (i, j)-Punkt auf gesetzt 1.
Ein Beispiel ist wie folgtimport numpy as np
import matplotlib.pyplot as plt
import scipy.ndimage as sn
x = np.zeros([20,20])
x[5:15, 5:15] = 1
x_ero = sn.binary_erosion(x)
x_dil = sn.binary_dilation(x)
fig = plt.figure()
ax = fig.add_subplot(1,3,1)
ax.imshow(x)
plt.title("original")
ax = fig.add_subplot(1,3,2)
ax.imshow(x_ero)
plt.title("erosion")
ax = fig.add_subplot(1,3,3)
ax.imshow(x_dil)
plt.title("dilation")
plt.show()
x = np.zeros([20,20]) x[5:15, 5:15] = 1 x[10:12,10:12] = 0 x[2:4, 2:4] = 1 x_open = sn.binary_opening(x) x_close = sn.binary_closing(x) fig = plt.figure() ax = fig.add_subplot(1,3,1) ax.imshow(x) plt.title("original") ax = fig.add_subplot(1,3,2) ax.imshow(x_open) plt.title("opening") ax = fig.add_subplot(1,3,3) ax.imshow(x_close) plt.title("closing") plt.show()
Der Effekt ist wie folgt. Es ist ersichtlich, dass die Öffnungsoperation die isolierte 1 entfernt und die Schließoperation die isolierte 1 entfernt. Die Operation entfernt isolierte Nullen.
Graustufenmorphologie
Die Korrosions-, Erweiterungs- und Öffnungs- und Schließoperationen von Graustufenbildern sind eine Erweiterung ihrer Binärform, wobei eine Faltungslogik direkt aus
abgerufen wird und Korrosion und Erweiterung durchführt und Öffnungs- und Schließvorgänge nacheinander.from scipy.misc import ascent img = ascent() funcs = { "original": lambda x, tmp:x, "erosion" : sn.grey_erosion, "dilation" : sn.grey_dilation, "opening" : sn.grey_opening, "closing" : sn.grey_closing } fig = plt.figure() for i, key in enumerate(funcs): ax = fig.add_subplot(2,3,i+1) plt.imshow(funcs[key](img, (10,10)), cmap=plt.cm.gray) plt.title(key) plt.show()
Parameterliste
Die Parameter der Binärfunktion und der Graustufenfunktion sind nicht identisch. Am Beispiel der folgenden Abschlussoperation sind alle Parameter der Binär- und Graustufenfunktionen mit Ausnahme der Eingabeeingabe gleich beides.
Struktur ist ein Array-Typ, der das Konstruktionselement darstellt, das als Faltungsvorlage verstanden werden kann
Ausgabe ist ein Array mit den gleichen Abmessungen wie die Eingabe, und die Ergebnisse können gespeichert werden scipy
Orgin-Filtereinstellungen, der Standardwert ist 0
Andere Parameter der binären morphologischen Filterung sind wie folgt
binary_closing(input, iterations=1, mask=None, border_value=0, brute_force=False)
wobei
iterationen die Anzahl der Ausführungen ist
Mask-Masken-Array, bei dem es sich um ein Bool-Array handelt Typ, und die Position, die False entspricht, ändert sich nicht
border_value Der Wert an der Kante
brute_force Wenn es False ist, wird nur der Wert aktualisiert, der sich in der letzten Iteration geändert hat
grey_closing(input, size=None, footprint=None, mode='reflect', cval=0.0)
Größe ist die Filtervorlage. Modus optional: Reflektieren, Konstante, Nächster, Spiegel, Umbruch, Kantenfüllmethode
Das obige ist der detaillierte Inhalt vonSo implementieren Sie grundlegende morphologische Filterung in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!