Wo finde ich Algorithmen für Bildverzerrungen? Es gibt so viele Informationen über Blur und andere klassische Algorithmen, aber so wenig komplexere. Insbesondere interessiere ich mich für den Bildverzerrungsalgorithmus mit Wirbeleffekt.Ressourcen für Bildverzerrungsalgorithmen
Antwort
Ich kann keine Referenzen finden, aber ich kann eine grundlegende Vorstellung davon geben, wie Verzerrungseffekte funktionieren.
Der Schlüssel zur Verzerrung ist eine Funktion, die im verzerrten Bild zwei Koordinaten (x, y) annimmt und sie im Originalbild in Koordinaten (u, v) umwandelt. Dies gibt die Umkehrfunktion der Verzerrung an, da sie das verzerrte Bild zurück zum Originalbild nimmt. Um das verzerrte Bild zu erzeugen, wird eine Schleife über x und y, berechnet den Punkt (u, v) aus (x, y) unter Verwendung der inversen Verzerrungsfunktion und setzt die Farbkomponenten bei (x, y) so, dass sie die gleichen sind wie diejenigen bei (u, v) im Originalbild. Man verwendet üblicherweise eine Interpolation (z. B. http://en.wikipedia.org/wiki/Bilinear_interpolation), um die Farbe bei (u, v) zu bestimmen, da (u, v) normalerweise nicht genau auf der Mitte eines Pixels liegt, sondern eher an einem Bruchpunkt zwischen Pixeln.
Ein Wirbel ist im Wesentlichen eine Rotation, wobei der Rotationswinkel vom Abstand vom Bildmittelpunkt abhängt. Ein Beispiel wäre:
a = amount of rotation
b = size of effect
angle = a*exp(-(x*x+y*y)/(b*b))
u = cos(angle)*x + sin(angle)*y
v = -sin(angle)*x + cos(angle)*y
Hier nehme ich der Einfachheit halber an, dass das Zentrum des Wirbels bei (0,0) ist. Der Wirbel kann beliebig gesetzt werden, indem die Koordinaten der Wirbelposition von x und y vor der Verzerrungsfunktion subtrahiert und nach und nach zu u und v addiert werden.
Es gibt verschiedene Wirbeleffekte: Einige (wie oben) verwirbeln nur eine lokalisierte Fläche und die Wirbelmenge nimmt zum Bildrand hin ab. Andere verstärken das Wirbeln zum Rand des Bildes hin. Diese Art von Sache kann getan werden, indem ungefähr mit der winkel = Linie gespielt wird, z.
angle = a*(x*x+y*y)
Werfen Sie einen Blick auf ImageMagick. Es ist ein Tool zum Konvertieren und Bearbeiten von Bildern und verfügt über Schnittstellen für alle gängigen Sprachen.
Der -displace-Operator kann Wirbel mit der korrekten Verschiebungskarte erstellen.
Wenn Sie aus irgendeinem Grund nicht mit der ImageMagick-Schnittstelle zufrieden sind, können Sie immer den Quellcode der Filter betrachten und von dort aus gehen.
Der Wirbel und andere wie es sind eine Matrixtransformation an den Pixelpositionen. Sie erstellen ein neues Bild und erhalten die Farbe von einer Position auf dem Bild, die Sie erhalten, indem Sie die aktuelle Position mit einer Matrix multiplizieren.
Die Matrix ist abhängig von der aktuellen Position.
hier ist eine gute Codeproject zeigt, wie es
http://www.codeproject.com/KB/GDI-plus/displacementfilters.aspx
Es zu tun, ist eine Java-Implementierung von vielen Bild Filter/Effekte bei Jerry's Java Image Filters. Vielleicht können Sie sich von dort inspirieren lassen.
eine neue Grafikbibliothek hat haben viele Features
- 1. Gute Ressourcen für Versionierung
- 2. Ressourcen für Anwendungspool
- 3. Ressourcen für WebDriverJs?
- 4. Ressourcen für virtuelle Maschinenprogrammierung
- 5. Gute Ressourcen für Wordpress?
- 6. Ressourcen für die Textgrenzenanalyse
- 7. Ressourcen für evidenzbasierte Entwicklungspraktiken
- 8. URI für lokale Ressourcen
- 9. WPF-Code-Behind für Ressourcen?
- 10. Ressourcen für Kinder lernen C#
- 11. FullCalendar Scheduler eventMouseover für Ressourcen
- 12. Elastisearch 2.3.2 Grenzen für Ressourcen
- 13. Ressourcen für UI-Menü-Entwicklung
- 14. Einstellung AuthenticatedSubject für alle Ressourcen
- 15. URL-Slugs für verschachtelte Ressourcen
- 16. Mit Eltern für ziehbar Ressourcen
- 17. Ressourcen und Referenzen für RSPEC
- 18. Protokoll für Web-Beschreibung Ressourcen
- 19. separates Verzeichnis für iPhone-Ressourcen
- 20. Zusätzliche Ressourcen für Debian-Vorinstallationsskript
- 21. Dropwizard - Ressourcen für mehrere Ports
- 22. iPhone Entwicklung: Ressourcen für Anfänger
- 23. Ressourcen für I18N in C++
- 24. Ressourcen für die kommerzielle Nutzung
- 25. Best Practice für Aufrufe für Ressourcen
- 26. Erstellen von Singular-Ressourcen in Jsonapi-Ressourcen
- 27. Throttle CPU und Ressourcen für Chrome verfügbar
- 28. Gibt es gute Ressourcen für föderierte Software?
- 29. Silverlight-Design-Ressourcen für die Inept
- 30. Erstellen Sie Ressourcen für bestimmten Kontext
Ich wünschte, ich könnte dies 10 mal upvote. Vielen Dank :) – fresskoma
aber diese nehmen BufferedImage als Eingabe von Filets, die nicht in Android unterstützt wird – AAnkit
ja gepufferte Bilder werden nicht in Android unterstützt .. dann haben Sie eine andere Idee für diese Wirkung. –