Freitag, 1. Dezember 2006

Subpixel-Antialiasing (Cleartype) selbst gemacht

Bekanntlich sehen die Schriften modernerer Betriebssysteme auf LCD-Bildschirmen deshalb so schick aus, weil an den Rändern der Lettern nicht nur Graustufen einfügt werden, sondern farbige Pixel, die darauf optimiert sind, die nebeneinander angeordneten Einzelpixel von Farbbildschirmen zur Auflösungsvergrößerung zu nutzen.

Man wünscht sich, Grafiken, Icons und Schriften im Bildverarbeitungsprogramm ähnlich hübsch und scharf skalieren zu können, aber leider bietet z.B. Photoshop von sich aus nichts dergleichen an. Natürlich kann man den Effekt auch selbst erzielen. Damit meine Experimente auch anderen nützen, erklär' ich, wie.

Vergleich normales Antialiasing (links) und Subpixel-Antialiasing (rechts)

Links sieht man normales Antialiasing, rechts Subpixel-Antialiasing. In der Vergrößerung läßt sich erkennen, wie Subpixel-Antialiasing die Anordnung der einzelnen Farbpixel, aus denen die Bildschirmfarben gemischt werden, ausnutzt.

Die einfachste Idee ist natürlich, für jedes der drei Sub-Pixel den normalen Grauwert zu bestimmen und zu setzen. Leider wird dabei auch die Farbigkeit der Konturen verändert, und unsere Grafik erhält einen deutlichen Farbsaum.

Deshalb muß der Grauwert der Sub-Pixel so auf die beiden farbigen Nachbarpixel verteilt werden, daß der Farbwert in der Summe neutral bleibt. Das geschieht z.B. durch einen horizontalen Weichzeichenfilter über drei Pixel (in Photoshop: Filter > Other > Custom > 111, Scale 3). Leider geht dadurch Information über die horizontale Position des Pixels verloren. Die Lösung? Wir wenden den Filter einfach ein zweites Mal an. Dadurch verteilt sich die ursprüngliche Pixel-Intensität nun nicht auf drei, sondern auf fünf Pixel, aber am stärksten auf das Mittelpixel. Die beiden schwächeren Randpixel auf jeder Seite wahren die Farbneutralität.

Um eine Pixelgrafik manuell zu subpixel-antialiasen, bedarf es also (in Photoshop) folgender Schritte:

1. Canvasgröße auf ein Vielfaches von Drei setzen, und darauf achten, daß rechts ein paar "Verschnittpixel" bleiben.

2. Zweimal den horizontalen Filter "Other > Custom" mit einer Einstellung von 1, 1, 1 und einer Skalierung von 3 ausführen.

3. Grafik zweimal kopieren, so daß insgesamt drei Layer entstehen. Den mittleren Layer nun ein Pixel nach rechts verschieben, den oberen zwei Pixel nach rechts.

4. Den obersten Layer auf seine Rot-Komponente reduzieren (z.B. im Curves-Dialog den Blau- und Grünanteil auf Null setzen).

5. Den mittleren Layer auf Grün reduzieren.

6. Den untersten Layer auf Blau reduzieren.

7. Nun den Blending-Mode der beiden oberen Layer auf "Lighten" setzen. Dadurch werden die Farbanteile aller drei Layer addiert.

8. Layer zusammenführen (merge) und den Filter "Pixelate > Mosaic" mit einer Einstellung von 3 ausführen.

9. Das Bild ist nun fertig. Mit Einstellung "nearest neighbor" auf ein Drittel der Größe skalieren (durch Pixel-Eingabe, 33,333% ist in Photoshop manchmal nicht genau genug), farbige Ränder abschneiden, abspeichern.

Caveat: Die dargestellten Einstellungen funktioneren nur auf Displays mit RGB-Anordnung gut. Einige Panels haben BGR-Anordnungen, sind hochkant oder sonstwie exotisch - hier schaut das Resultat enschieden schlechter aus als normales Antialiasing. Röhrendisplays nehmen eine Mittelstellung ein (sie haben meist keine Subpixel), da unsere Methode ja zum Glück farbneutral ist.

Optimierungen: Das Ergebnis sieht knackiger aus, wenn man ein paar Farbsäume in Kauf nimmt. Dazu kann man z.B. den Custom-Filter mit einem einzigen Durchlauf und einer Einstellung wie 3, 7, 3 (Skalierung 13) benutzen. Die wahrgenommene Farbigkeit hängt auch von den Liniendicken in der Grafik ab, weil die beeinflußt, welche Subpixel regelmäßig an- und ausgeschaltet werden. Experimentieren hilft...

Lebensfunktionen

Du bist nicht angemeldet.

Aktuelle Beiträge

Novel Dewasa | Cerita...
very interesting article and contain useful information....
novelhot - 28. Jan, 01:26
Very nice blog, it contains...
Very nice blog, it contains lot of informations. Articles...
Cerita Sex (Gast) - 13. Okt, 21:32
Kisah Sex Nyata | Cerita...
Cerita Dewasa, Cerita Sex, Cerita Mesum, Cerita Bokep,...
Cerita Dewasa (Gast) - 13. Okt, 21:28
Prediksi Togel | Bocoran...
Prediksi Togel Hari Ini | Keluaran Angka Jitu | Ramalan...
Togel Hari Ini (Gast) - 13. Okt, 21:23
Ich muss mich gaarder...
Ich muss mich gaarder anschließen in allem. tja... Die...
tzso (Gast) - 11. Aug, 15:14

Suche

 

Ping

Online seit 4180 Tagen
Zuletzt aktualisiert: 28. Jan, 01:26
iao