PIL und Palette-Mode Images

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Ich habe ein RGB Bild und möchte die Farben auf eine fest definierte Palette reduzieren, aber so, das möglichst passende Farben gewählt werden. Im Idealfall sollen Farben der Palette in einem begrenzten Rahmen sogar gemischt werden, um näher am Input-Bild zu sein. Hat die Palette z.B. nur Gelb und Blau, aber kein Grün, soll ein grüner Bereich im Startbild mit einem gelb-blauen Raster überlagert werden.

Ist das mit PIL möglich? Gibts dafür fertige Filter? (Hab dazu nichts in der Doku gefunden). Und wenn nicht, hat jemand ein paar Stichworte für einen guten Algorithmus, der das macht?
Bottle: Micro Web Framework + Development Blog
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Hast Du es schon mal mit im.putpalette und im.convert (mode "P") versucht?
MfG
HWK
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Da kann man nur bei Graustufen-Bildern eine Palette vor geben.

Ich hab Floyd–Steinberg dithering implementiert, das funktioniert ganz gut. Ist nur langsam, da ich die Pixel-Schieberei in Python und nicht in C machen muss.
Bottle: Micro Web Framework + Development Blog
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

In PILs Image.py befindet sich eine Methode quantize, der man ein Referenzbild für eine Palette übergeben kann. Vielleicht probierst Du es damit einmal aus.
P.S.: Hab' dazu gerade noch das hier gefunden.
MfG
HWK
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Ich habe jetzt das verlinkte Snippet mit quantize einmal ausprobiert. Das Ergebnis ist ansehnlich und m.E. schnell.
@defnull: Hast Du das Tempo mal mit Deinem selbstgestrickten Code verglichen?
MfG
HWK
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Ja, so klappt es. Das ist nicht gerade intuitiv oder gut dokumentiert, muss ich sagen :)

Klar, die PIL Variante ist deutlich schneller als meine Python Variante. Etwa Faktor 10 bei 500x500 pixel großen Bildern.
Bottle: Micro Web Framework + Development Blog
Antworten