Regras de suavização de subpixels

11

Recentemente, tive um problema com a suavização de serrilhado de sub-pixel de texto , que produz cores muito duras e me fez pensar em como ele deve ser feito corretamente:

insira a descrição da imagem aqui

Eu desenhei alguns casos de um ladrilho preto cobrindo terços dos pixels abaixo.

insira a descrição da imagem aqui

As cores combinam com as que estou vendo, no entanto, quando olho para o texto com suavização de borda, o resultado não é tão brilhante e perturbador:

de www.lagom.nl

Suponho que deve haver um equilíbrio entre uma boa intensidade de luz e a cor certa. Quais métodos são usados ​​para suavização de serrilhado de sub-pixel que fornecem bons resultados?


Atualizar:

Renderizei um bule de chá branco em uma imagem com largura 3x e com várias amostras. Abaixo, comparo a média a cada 3 pixels com a atribuição de cada um ao RGB. As cores ainda parecem excessivamente brilhantes em alguns casos (especialmente em comparação com o exemplo acima daqui ), não que meu telefone as capture bem.

insira a descrição da imagem aquiinsira a descrição da imagem aqui

insira a descrição da imagem aquiinsira a descrição da imagem aqui

insira a descrição da imagem aquiinsira a descrição da imagem aqui OK, então meu monitor precisa de um pouco de pó

jozxyqk
fonte
Acredito que algumas telas têm um layout diferente das cores primárias. Você viu seus resultados em diferentes tipos de tela?
Trichoplax
@trichoplax não, mas estou confiante de que meus dois monitores são RGB. Também aqui estou mais interessado em como as técnicas de antialiasing de subpixel devem funcionar do que uma correção para o meu problema.
jozxyqk
Não quis dizer cores primárias diferentes, apenas quis dizer que o vermelho, o verde e o azul estão dispostos em diferentes padrões geométricos, portanto, seu algoritmo precisaria saber qual padrão está sendo usado para obter bons resultados.
Trichoplax
1
@trichoplax sim, desculpe, eu deveria ter esclarecido, ambos os monitores têm pixels divididos em terços na ordem RGB da esquerda para a direita, como nesta foto .
jozxyqk
1
Até certo ponto, o texto em itálico terá franjas de cores menos perceptíveis, pois as linhas inclinadas não permitem que a mesma cor esteja presente por mais de alguns pixels consecutivos na vertical.
Trichoplax

Respostas:

3

Não tenho certeza do que acontece lá. Observando a renderização de "considerações" em seu exemplo, os "contras" são parecidos com o que você obtém ao executar a suavização de serrilhado de sub-pixel bruto, sem aplicar a "correção" necessária para torná-la boa. Mas então o "der" na mesma palavra parece que não há anti-aliasing de sub-pixel.

Você pode encontrar um bom artigo sobre como o anti-aliasing de sub-pixel bonito funciona aqui https://www.grc.com/ct/ctwhat.htm e para a parte "corrigir" aqui https: //www.grc. com / ct / freeandclear.htm e aqui https://www.grc.com/ct/cttech.htm

O que se resume é: se você apenas calcular as intensidades R / G / B calculando a área coberta para cada sub-pixel, as franjas de cores resultantes serão muito feias / irritantes. Para corrigi-lo, você deve aplicar um filtro de desfoque horizontal / passa-baixo à imagem do sub-pixel. O resultado é uma imagem menos nítida, mas também com cores muito menos saturadas. Ou seja, algo como o seu exemplo "Check you".

pgroke
fonte
2

Quais métodos são usados ​​para suavização de serrilhado de sub-pixel que fornecem bons resultados?

Você simplesmente rasteriza as letras como se fossem três vezes maiores.

Os resultados diferem na maneira como você rasteriza as curvas, principalmente o tipo de esquema de anti-aliasing / sampling que ele usa e se ele usa dicas de fonte . Para uma excelente visão geral, consulte Exposições de rasterização de textos por geometria anti-grão (IIRC, isto é o que o Chromium / PDFium usa) ou a renderização de Subpixel na Wikipedia.

Qual é a imagem anexada, não acredito que tenha algo a ver com a renderização sub-pixel. Pode ser qualquer coisa: geometria de pixel errada, gama incorreta, conversão de espaço de cores incorreta, ...

Ecir Hana
fonte
Eu esperaria que problemas com a geometria do pixel, gama ou conversão de espaço de cores aparecessem como distorção de cores em pontos arbitrários da imagem, em vez do ciclo regular visto na imagem da pergunta. O fato de alternar horizontalmente entre antialiasing de cores exagerado e antialiasing de escala de cinza pura sugere que a primeira aplicação de antialiasing foi realizada em uma escala diferente.
Trichoplax
Eu não tenho a explicação completa, pois a distorção não parece estar alinhada entre as diferentes linhas de texto, mas parece que o problema está relacionado à renderização sub-pixel de texto já rasterizado em vez de texto vetorial.
Trichoplax
@trichoplax O que tento dizer é que duvido que haja um problema com a renderização sub-pixel do Anti-Grain. Em vez disso, acho que a entrada é alterada mais cedo do que entra no rasterizador. Ou mais tarde, mas não no próprio rasterizador.
Ecir Hana
Sim, acho que a renderização sub-pixel está sendo aplicada corretamente, mas quando aplicada ao texto pré-rasterizado, não é possível obter um bom resultado. Não acho que o renderizador esteja quebrado, apenas acho que ele está sendo alimentado com o tipo errado de texto.
Trichoplax