Ausgabe
Photoshop hat viele coole künstlerische Filter und ich würde gerne die zugrunde liegenden Algorithmen verstehen.
Ein besonders interessanter Algorithmus ist der Cutout-Filter (Nummer 2 im obigen Link).
Es hat drei einstellbare Parameter, Anzahl der Ebenen, Kanteneinfachheit und Kantentreue. Die Anzahl der Ebenen scheint einen einfachen Posterisierungsalgorithmus zu steuern, aber was die anderen Schieberegler tun, entzieht sich mir technisch.
Ich würde denken, dass sie etwas im Zusammenhang mit Vornoi-Diagrammen oder k-Means-Partitionierung tun, aber das Herumstöbern in Wikipedia hat zu nichts geführt, das offensichtlich dem entspricht, was Photoshop tut, insbesondere wenn man bedenkt, wie schnell der Filter sich selbst rendert.
Gibt es eine Quelle für technische Beschreibungen der Photoshop-Filter? Haben Sie alternativ eine Idee, wie dieser spezielle Filter implementiert werden könnte?
Lösung
Sehr alte Frage, aber vielleicht sucht jemand nach einer Antwort und vielleicht hilft das. Die findcontours- und approxPolyDP-Funktionen von Opencv können dies tun. Aber wir müssen das Bild vor dem Hauptprozess vorbereiten. Zuerst; Finden Sie die am häufigsten verwendeten N-Farben mit k-means. Finden Sie zum Beispiel 8 Farben. Finden Sie Konturen für jede Farbe und berechnen Sie dann nacheinander die Konturfläche für alle Farben (wir haben N = 8 Schichten). Zeichnen Sie danach gefüllte Konturen nach approxPolyDP für jede Farbe von der größten ContourArea bis zur kleineren mit ihrer vorberechneten Farbe. Mein weiterer Vorschlag ist, sehr kleine Konturen bei der Berechnung von contourArea zu eliminieren.
Parameter für Photoshop-Ausschnitteffekte; Number Of Levels=K-Means-Finde die am häufigsten verwendeten N-Farben. Kanteneinfachheit = Ich denke, Gaußsche Unschärfe oder andere Rauschfilter zum Entfernen, wie bilaterale Filter oder Meanshift-Filter mit Kantenerhaltung, werden für diesen Schritt nützlich sein. Dieser Schritt kann nach K-Means und vor dem Finden von Konturen ausgeführt werden. Kantentreue = approxPolyDP-Epsilon-Parameter von openCV.
Beantwortet von – wiseman s
Antwort geprüft von – Timothy Miller (FixError Admin)