Reguły antyaliasingu subpikseli

11

Niedawno miałem problem z antyaliasingiem tekstu w subpikselach , który produkuje bardzo ostre kolory i zastanawiałem się, jak to zrobić poprawnie:

wprowadź opis zdjęcia tutaj

Narysowałem kilka przypadków czarnej płytki pokrywającej trzy trzecie pikseli poniżej.

wprowadź opis zdjęcia tutaj

Kolory pasują do tych, które widzę, jednak kiedy patrzę na odpowiednio wygładzony tekst, wynik nie jest tak jasny i rozpraszający:

z www.lagom.nl

Zakładam, że musi istnieć równowaga między dobrym natężeniem światła a właściwym kolorem. Jakie metody stosuje się do wygładzania subpikseli, które dają tak dobre wyniki?


Aktualizacja:

Zrobiłem biały czajniczek na obraz o szerokości 3x i multisampling. Poniżej porównuję uśrednianie co 3 piksele z przypisywaniem każdego do RGB. Kolory nadal wydają się zbyt jasny w niektórych przypadkach (zwłaszcza w porównaniu do powyższego przykładu z tutaj ), a nie, że moje zrzuty telefoniczne je dobrze.

wprowadź opis zdjęcia tutajwprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutajwprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutajwprowadź opis zdjęcia tutaj OK, więc mój monitor potrzebuje trochę kurzu

jozxyqk
źródło
Uważam, że niektóre ekrany mają inny układ kolorów podstawowych. Czy oglądałeś swoje wyniki na różnych rodzajach ekranu?
trichoplax,
@trichoplax nie, ale jestem pewien, że oba moje monitory mają RGB. Również tutaj bardziej interesuje mnie działanie antyaliasingu subpikseli niż rozwiązanie mojego problemu.
jozxyqk,
Nie miałem na myśli różnych kolorów podstawowych, po prostu miałem na myśli, że czerwony, zielony i niebieski są ułożone w różne wzory geometryczne, więc twój algorytm musiałby wiedzieć, który wzór jest używany, aby dać dobre wyniki.
trichoplax,
1
@trichoplax tak, przepraszam, powinienem był to wyjaśnić, oba monitory mają piksele podzielone na trzy części w kolejności RGB od lewej do prawej, jak na tym zdjęciu .
jozxyqk,
1
W pewnym stopniu kursywa będzie miała mniej zauważalne prążki kolorów, ponieważ pochyłe linie nie pozwalają na pojawienie się tego samego koloru dla więcej niż kilku kolejnych pikseli w pionie.
trichoplax

Odpowiedzi:

3

Nie jestem pewien, co się tam dzieje. Patrząc na rendering „rozważań” w twoim przykładzie, „minusy” wyglądają jak to, co dostajesz, gdy wykonujesz surowe anty-aliasing subpikseli, bez stosowania niezbędnej „poprawki”, aby wyglądać dobrze. Ale wtedy „der” w tym samym słowie wygląda, jakby nie było wygładzania subpikseli.

Dobry artykuł o tym, jak dobrze wygląda wygładzanie subpikseli działa tutaj https://www.grc.com/ct/ctwhat.htm, a część „napraw” tutaj : https://www.grc. com / ct / freeandclear.htm i tutaj https://www.grc.com/ct/cttech.htm

Sprowadza się to do tego: jeśli po prostu obliczysz intensywność R / G / B poprzez obliczenie pokrytego obszaru dla każdego subpiksela, powstałe obwódki kolorów są bardzo brzydkie / irytujące. Aby to naprawić, musisz zastosować poziomy obraz rozmycia / filtr dolnoprzepustowy do obrazu subpikseli. Rezultatem jest obraz, który jest mniej ostry, ale ma również znacznie mniej nasycone kolory. Tj. Coś takiego jak twój przykład „Check you”.

pgroke
źródło
2

Jakie metody stosuje się do wygładzania subpikseli, które dają tak dobre wyniki?

Po prostu rasteryzujesz litery tak, jakby były 3 razy szersze.

Wyniki różnią się sposobem rasteryzacji krzywych, a zwłaszcza tego, jakiego rodzaju antyaliasingu / schematu próbkowania używa i czy korzysta z podpowiedzi czcionek . Aby uzyskać doskonały przegląd, zobacz Ekspozycje rasteryzacji tekstów metodą geometrii przeciwziarnistej (IIRC używa tego Chromium / PDFium) lub Renderowanie Subpixel na Wikipedii.

Co dołącza obraz, nie sądzę, że ma to coś wspólnego z renderowaniem subpikseli. Może to być wszystko: zła geometria pikseli , zła gamma, niewłaściwa konwersja przestrzeni kolorów, ...

Ecir Hana
źródło
Spodziewałbym się, że problemy z geometrią pikseli, gamma lub konwersją przestrzeni kolorów pojawią się jako zniekształcenie kolorów w dowolnych punktach obrazu, a nie w zwykłym cyklu widocznym na obrazie pytania. Fakt, że cyklicznie przebiega on pomiędzy przesadzonymi antyaliasingami kolorów a antyaliasingiem w czystej skali szarości, wskazuje, że pierwsze zastosowanie antyaliasingu zostało wykonane w innej skali.
trichoplax,
Nie mam pełnego wyjaśnienia, ponieważ zniekształcenie nie wydaje się być wyrównane między różnymi wierszami tekstu, ale wydaje się, że problem dotyczy renderowania subpikseli już zrasteryzowanego tekstu, a nie tekstu wektorowego.
trichoplax,
@trichoplax Próbuję powiedzieć, że wątpię w problem z renderowaniem subpikseli przez Anti-Grain. Zamiast tego zgaduję, że dane wejściowe zostają zniekształcone wcześniej niż wchodzą w rasterizer. Lub później, ale nie w samym rasterizerze.
Ecir Hana,
Tak, myślę, że renderowanie subpikseli jest stosowane poprawnie, ale po zastosowaniu do wstępnie zrasteryzowanego tekstu nie można uzyskać dobrego wyniku. Nie sądzę, że renderer jest zepsuty, po prostu myślę, że jest podawany niewłaściwy rodzaj tekstu.
trichoplax,