Schiebe-Fenster mit as_strided Funktion numpy?
Bekommen wie ich zu implementieren, die eine gleitende Fenster auf Basis von python, um Objekte zu erkennen, die in sich noch Bilder, die ich kennenlernen-nette Funktion:
numpy.lib.stride_tricks.as_strided
Also habe ich versucht zu erreichen, eine Allgemeine Regel zu vermeiden, Fehler, die ich möglicherweise fehl, während das ändern der Größe des sliding windows, die ich brauche. Schließlich habe ich diese Darstellung:
all_windows = as_strided(x,((x.shape[0] - xsize)/xstep ,(x.shape[1] - ysize)/ystep ,xsize,ysize), (x.strides[0]*xstep,x.strides[1]*ystep,x.strides[0],x.strides[1])
die Ergebnisse in einem 4-dim matrix. Die ersten zwei steht für die Anzahl der Fenster in x-und y-Achse des Bildes. und die anderen repräsentieren die Größe des Fensters (xsize,ysize) erzeugt
und die step
stellt die Verschiebung zwischen zwei aufeinanderfolgenden Fenstern.
Diese Darstellung funktioniert gut, wenn ich wählen Sie eine quadratische Schiebefenster. aber ich habe noch ein problem bei der dies funktioniert für windows e.x. (128,64), wo bekomme ich in der Regel nicht verknüpften Daten zu dem Bild.
Was falsch ist mein code. Irgendwelche Ideen? und wenn es einen besseren Weg, um ein Schiebefenster nett und ordentlich in python für die Bildverarbeitung?
Dank
- Da waren Sie auf der Suche nach einem template-matching-algorithmen,
this post
könnte einen Blick Wert sein, der verwendet Schritte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schauen Sie sich die Antworten auf diese Frage: Mit Schritten, die für eine effiziente gleitender-Mittelwert-filter. Im Grunde Fortschritte sind nicht eine gute option, obwohl Sie arbeiten.
Gibt es ein Problem in Ihrem code. Eigentlich dieser code funktioniert gut für 2D und kein Grund für die Verwendung von multi-dimensionalen version (Mit Schritten, die für eine effiziente gleitender-Mittelwert-filter). Unten ist eine Feste version:
Für die Nachgeborenen:
Umgesetzt wird dies in scikit-learn in der Funktion
sklearn.feature_extraction.image.extract_patches
.ndarray
s von beliebiger dimension und die Sie extrahieren können beliebig geformte Flecken in beliebigen Schritten).extract_patches_2d
der diese Funktion nutzt, sondern fordert eine Umgestaltung und somit induziert Sie eine Kopie (dies ist, wollte der 2D-Fall). [full disclosure: ich schriebextract_patches
]skimage
Funktion implementiert die gleiche Funktionalität. Der Vollständigkeit halber, hier ist die Quelleextract_patches
extract_patches_2d
stattextract_patches
.