Ich möchte einen Algorithmus in Python erstellen, um ein Bild in N-mal-N gleiche Blöcke zu schneiden. Ich kenne vorhandene Python-Pakete, die das können, aber ich bin daran interessiert, mathematische Berechnungen unter Verwendung der Dimensionen der resultierenden Blöcke durchzuführen, die keine ganzzahligen Werte sein müssen.Slicing NDarray mit Schwimmern in Python
Ich habe erfolgreich meine Bildeingabe in ndarray
mit numpy
und cv2
konvertiert. Ich bin neugierig, ob ich ein ndarray
Objekt in einer Weise schneiden kann, dass, wenn ich ein "Pixel" aufspalte, ich einfach den gewichteten Durchschnitt dieses "Pixel" Beitrags zu ihrem jeweiligen Block nehme.
Wenn beispielsweise die Bildeingabe die Abmessungen 100px x 100px hat und ich dieses Bild in 7x7 Blöcke aufteilen möchte, da 100/7 = ~ 14.2857, hat jeder Block die Abmessungen 14.2857 x 14.2857. Aber es macht keinen Sinn, einen Bruchteil eines Pixels zu haben. Stattdessen möchte ich dies so interpretieren, dass der erste Block alle Informationen aus den Pixeln (1,1), (1,2), ..., (1,14), (2,1), ... enthält. , (3,1), ..., (14,1), ..., (14,14), 0,2857 aller Pixel, die (15, k) und (k, 15) erfüllen, und 0,2857 * 0,2857 für das Pixel (15,15). Ich möchte dies für alle 49 Blöcke tun.
Jeder Einblick würde geschätzt werden! Vielen Dank.
Vielen Dank für die Eingabe. Ich mag den Rat. Das einzige Problem, das ich mit diesem Ansatz bewältigen werde, ist der Vergleich von zwei Bildern unterschiedlicher Dimensionen, die das Gesamtziel meines Projekts sind. Was ist, wenn ich zwei Bilder von verschiedenen Dimensionen habe und die beiden vergleichen möchte? Sollte ich das größere Bild verkleinern, um es an die Abmessungen des kleineren Bildes anzupassen, und dann diesen Ansatz umsetzen? Danke für die Hilfe! – Wilson
@wilson Im Allgemeinen, ja, das würde ich tun. Wenn ich mit vielen Bildern unterschiedlicher Größe arbeite, wähle ich normalerweise eine "Arbeitsgröße" und skaliere alle Bilder auf diese Größe. Kleinere Bilder werden upgesampelt und größere Bilder werden verkleinert. Wenn Sie kleinere Bilder verkleinern oder größere verkleinern, hängt dies von Ihrer Anwendung und Ihren Vorlieben ab. – kazemakase
Vielen Dank für die Antwort. Glücklicherweise arbeite ich mit sehr großen Bildern, so dass diese Bilder verkleinert werden, um verschiedene Partitionsgrößen auszugleichen und die Qualität der Bilder beizubehalten, wird nicht viel Pixelinformation verlieren. Noch eine Frage: Wie erhält man das Seitenverhältnis der Bilder bei gleichzeitiger Anpassung der Abmessungen? – Wilson