Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie grundlegende morphologische Filterung in Python

So implementieren Sie grundlegende morphologische Filterung in Python

PHPz
PHPznach vorne
2023-05-21 23:29:36837Durchsuche

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()
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()

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()

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)

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen