Wie genau funktioniert das "spiegeln" - Modus für scipys ndimage Filter arbeiten?

Ich bin andernfalls zu verstehen, wie genau das spiegeln-Modus behandelt meine arrays. Ich habe dieses sehr einfache array:

import numpy as np
from scipy.ndimage.filters import uniform_filter
from scipy.ndimage.filters import median_filter

vector = np.array([[1.0,1.0,1.0,1.0,1.0],[2.0,2.0,2.0,2.0,2.0],[4.0,4.0,4.0,4.0,4.0],[5.0,5.0,5.0,5.0,5.0]])

print(vector)

[[ 1. 1. 1. 1. 1.]
[ 2. 2. 2. 2. 2.]
[ 4. 4. 4. 4. 4.]
[ 5. 5. 5. 5. 5.]]

Anwenden eines einheitlichen (mean) filter mit einer Fenstergröße von 3 bekomme ich die folgende:

filtered = uniform_filter(vector, 3, mode='reflect')

print(filtered)

[[ 1.33333333 1.33333333 1.33333333 1.33333333 1.33333333]
[ 2.33333333 2.33333333 2.33333333 2.33333333 2.33333333]
[ 3.66666667 3.66666667 3.66666667 3.66666667 3.66666667]
[ 4.66666667 4.66666667 4.66666667 4.66666667 4.66666667]]

Wenn ich versuche, Sie zu replizieren die übung mit der hand, die ich bekommen kann, um dieses Ergebnis zu erzielen. Original matrix in grün, Fenster in orange und Ergebnis in gelb. Weiße sind "reflektiert" Beobachtungen.

Wie genau funktioniert das

Ergebnis ist:

Wie genau funktioniert das

Aber wenn ich versuche, ein Fenster der Größe 4 oder 5, die ich nicht in der Lage zu replizieren die Ergebnisse.

filtered = uniform_filter(vector, 4, mode='reflect')

print(filtered)

[[ 1.5 1.5 1.5 1.5 1.5]
[ 2. 2. 2. 2. 2. ]
[ 3. 3. 3. 3. 3. ]
[ 4. 4. 4. 4. 4. ]]

Machst es per hand:

Wie genau funktioniert das

Und ich bekomme:

Wie genau funktioniert das

Wie Fenster behandelt, wenn seine Größe ist auch? Aber wie auch immer, Wenn ich versuche, Sie zu replizieren die Ergebnisse von einem Fenster der Größe 5 und Modus spiegeln kann ich nicht entweder. Obwohl ich würde denken, das Verhalten ist Analog zu der Größe 3.

  • Im Bild unten "Tut es mit der hand:" Sie haben nicht zu füllen in der oberen Zeile der erweiterten array richtig. Sie kopiert den Wert 1 vertikal. Mit mode='reflect' sollte es 2s in der obersten Zeile oberhalb der main (helles gelb) - array.
  • das ist genau das, was ich wissen möchte, können Sie mir helfen zu verstehen, wie genau der Modus funktioniert? für Fenster der Größe n= 2,3,..., etc ? Ich würde akzeptieren, dass als Antwort auf dieses, ich bin besonders daran interessiert zu wissen, wie windows funktioniert, wenn die dimension ist eine gerade Zahl.
InformationsquelleAutor JEquihua | 2014-03-26
Schreibe einen Kommentar