So implementieren Sie grundlegende morphologische Filterung in Python

PHPz
Freigeben: 2023-05-21 23:29:36
nach vorne
883 Leute haben es durchsucht

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_erosiongrey_erosiongrey_dilationexpansionbin ary_closinggrey_closingSchließen (zuerst Ausdehnung und dann Korrosion)binäres_Öffnen graues_ÖffnenÖffnen ( zuerst Korrosion und dann Ausdehnung)Die sogenannte Korrosion wird in mathematischen Symbolen ausgedrückt alswobei B bedeutet, wenn der Ursprung von B BB bei (i, j) liegt , die Menge aller Werte, die in B 1 sind. Diese Formel bedeutet, dass, wenn Struktur B zum Korrodieren von A verwendet wird, der Ursprung von B auf das Pixel (i, j) von Bild A übertragen wird und B vollständig vom überlappenden Bereich der beiden umgeben ist Der Wert wird mit 1 belegt. Ansonsten ist der Wert 0. Wenn ein bestimmtes Element in B 1 ist und die entsprechende Position in A ebenfalls 1 ist, ist der Wert bei (i, j) 1. Dies ist ein intuitiveres Beispiel.
corrosion binary_dilation
Binäre Morphologie
ij

Inflation ist das Gegenteil und kann ausgedrückt werden als

So implementieren Sie grundlegende morphologische Filterung in PythonMit 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 folgt

import 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()
Nach dem Login kopieren
Der Öffnungsvorgang besteht darin, zuerst zu korrodieren und sich dann auszudehnen; der Schließvorgang besteht darin, sich zuerst auszudehnen und dann zu korrodieren. Das Beispiel ist wie folgt:

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()
Nach dem Login kopieren

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.

So implementieren Sie grundlegende morphologische Filterung in PythonGraustufenmorphologie

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()
Nach dem Login kopieren

Parameterliste

So implementieren Sie grundlegende morphologische Filterung in PythonDie 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

So implementieren Sie grundlegende morphologische Filterung in Python

Ausgabe ist ein Array mit den gleichen Abmessungen wie die Eingabe, und die Ergebnisse können gespeichert werden

scipyOrgin-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)
Nach dem Login kopieren

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)
Nach dem Login kopieren
  • 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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage