2016-09-08 3 views
0

Ich habe viele Graustufen-Eingabebilder, die mehrere Rechtecke enthalten. Einige von ihnen überlappen sich und einige über die Grenze des Bildes. Ein Beispiel Bild könnte wie folgt aussehen:Python: Rechtecke auf Bilder an ihren Rand reduzieren

enter image description here

Jetzt muss ich die Rechtecke an ihre Grenze reduzieren. Meine Idee war, alle nicht-weißen Pixel, die weniger als N (z. B. 3) Pixel von der Grenze entfernt sind oder ein weißes Pixel (unter Verwendung der Manhatten-Distanz) weiß zu machen. Die Ausgabe sollte wie folgt (sorry für die unterschiedlich großen Grenzen) aussehen:

enter image description here

Es ist nicht sehr schwer, dies zu realisieren. Leider muss die Implementierung schnell sein, da die Eingabe extrem viele Bilder (z. B. 100'000) enthalten kann und der Benutzer warten muss, bis dieser Schritt beendet ist.

Ich dachte über die Verwendung fromimage und mache dann alles mit numpy, aber ich habe keine gute Lösung gefunden.

Vielleicht hat jemand eine Idee oder einen Hinweis, wie dieses Problem sehr effizient gelöst werden kann?

+0

Wie schnell ist Ihre aktuelle Implementierung Wert größer als 3 haben? :) –

+0

Ich habe es nicht implementiert, weil ich es mit Schleifen (ähnlich wie https://stackoverflow.com/questions/39159345/python-adding-noise-to-images-is-very-slow) tun würde. Aber das ist unglaublich langsam. Wahrscheinlich noch schlimmer mit verschachtelten Schleifen. In dem geposteten Link benötigte ich einige Sekunden für ~ 1'000 Bilder. Dies ist der Grund, warum ich hoffe, dass es einen guten Trick/Algorithmus gibt, um dies zu tun. –

Antwort

Verwandte Themen