Ich habe Bitmaps von Linien und Texten, denen Anti-Alias angewendet wurde. Ich möchte einen Filter entwickeln, der den Anti-Alias-Effekt entfernt. Ich suche nach Ideen, wie ich das machen kann, also muss ich zunächst verstehen, wie Anti-Aliasing-Algorithmen funktionieren. Gibt es gute Links oder sogar Code dafür?
Antworten
Zu viele Anzeigen?Ich muss verstehen, wie Antialiasing-Algorithmen funktionieren
Antialiasing funktioniert, indem das Bild mit einer höheren Auflösung gerendert wird, bevor es auf die Ausgabeauflösung verkleinert wird. Im Verkleinerungsprozess werden die Pixel mit höherer Auflösung gemittelt, um Pixel mit geringerer Auflösung zu erstellen. Dadurch entstehen weichere Farbübergänge im gerenderten Bild.
Betrachten Sie dieses sehr einfache Beispiel, bei dem eine Blockkontur auf einem weißen Hintergrund gerendert wird.
Anschließend wird es auf die Hälfte der Auflösung verkleinert, wodurch Pixel mit Grautönen entstehen:
Hier ist eine realistischere Demonstration von Antialiasing, die verwendet wird, um den Buchstaben S zu rendern:
Ich bin überhaupt nicht vertraut mit der C#-Programmierung, habe aber Erfahrung mit Grafiken. Das nächste, was einem Anti-Anti-Aliasing-Filter nahe kommt, wäre ein Schärfungsfilter (zumindest in der Praxis, mit Photoshop verwendet), der normalerweise mehrmals angewendet wird, je nach gewünschtem Effekt. Der Schärfungsfilter funktioniert am besten, wenn bereits ein großer Kontrast zwischen den Anti-Aliasing-Elementen und dem Hintergrund besteht, und noch besser, wenn der Hintergrund eine einfarbige Fläche ist, anstatt einer komplexen Grafik.
Wenn Sie Zugriff auf einen fortschrittlichen Grafikeditor haben, könnten Sie einige Tests durchführen, und wenn Sie mit den Ergebnissen zufrieden sind, können Sie anfangen, sich mit Schärfungsfiltern zu befassen.
Außerdem, wenn Sie mit Graustufen-Bitmaps arbeiten, ist eine noch bessere Lösung, diese in ein S/W-Bild umzuwandeln - das entfernt jegliches Anti-Aliasing darauf.
Hoffentlich hilft das zumindest ein wenig :)