Reglas de antialiasing de subpíxeles

11

Recientemente tuve un problema con el suavizado de subpíxeles de texto , que produce colores muy duros y me hizo preguntarme cómo se debe hacer correctamente:

ingrese la descripción de la imagen aquí

He dibujado algunos casos de un mosaico negro que cubre tercios de píxeles a continuación.

ingrese la descripción de la imagen aquí

Los colores coinciden con los que estoy viendo, sin embargo, cuando miro el texto correctamente suavizado, el resultado no es tan brillante y molesto:

de www.lagom.nl

Supongo que tiene que haber un equilibrio entre una buena intensidad de luz y el color correcto. ¿Qué métodos se utilizan para el suavizado de subpíxeles que dan tan buenos resultados?


Actualizar:

He renderizado una tetera blanca a una imagen con 3x de ancho y con múltiples muestras. A continuación, comparo el promedio cada 3 píxeles con la asignación de cada uno a RGB. Los colores todavía parecen demasiado brillantes en algunos casos (especialmente en comparación con el ejemplo anterior de aquí ), no es que mi teléfono los capture bien.

ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí OK, entonces mi monitor necesita un poco de polvo

jozxyqk
fuente
Creo que algunas pantallas tienen un diseño diferente de los colores primarios. ¿Has visto tus resultados en diferentes tipos de pantalla?
trichoplax
@trichoplax no, pero estoy seguro de que mis dos monitores son RGB. También aquí estoy más interesado en cómo funcionan las técnicas de antialiasing de subpíxeles que una solución para mi problema.
jozxyqk
No quise decir diferentes colores primarios, solo quise decir que el rojo, el verde y el azul están dispuestos en diferentes patrones geométricos, por lo que su algoritmo necesitaría saber qué patrón se está utilizando para obtener buenos resultados.
trichoplax
1
@trichoplax sí, lo siento debería haber aclarado, ambos monitores tienen píxeles divididos en tercios en orden RGB de izquierda a derecha como en esta foto .
jozxyqk
1
Hasta cierto punto, el texto en cursiva tendrá franjas de color menos notables ya que las líneas inclinadas no permiten que el mismo color esté presente durante más de unos pocos píxeles consecutivos verticalmente.
trichoplax

Respuestas:

3

No estoy seguro de lo que sucede allí. Al observar la representación de "consideraciones" en su ejemplo, las "desventajas" se parecen a lo que se obtiene cuando se realiza un suavizado de subpíxeles en bruto, sin aplicar la "reparación" necesaria para que se vea bien. Pero entonces el "der" en la misma palabra parece que no hay sub-alias anti-aliasing.

Puede encontrar un buen artículo sobre cómo funciona el anti-aliasing de subpíxeles atractivo aquí https://www.grc.com/ct/ctwhat.htm y para la parte "arreglar" aquí https: //www.grc. com / ct / freeandclear.htm y aquí https://www.grc.com/ct/cttech.htm

Todo se reduce a: si solo calcula las intensidades R / G / B calculando el área cubierta para cada subpíxel, las franjas de color resultantes son muy feas / irritantes. Para solucionarlo, debe aplicar un filtro horizontal de desenfoque / paso bajo a la imagen subpíxel. El resultado es una imagen menos nítida pero que también tiene colores mucho menos saturados. Es decir, algo así como su ejemplo "Chequearte".

pgroke
fuente
2

¿Qué métodos se utilizan para el suavizado de subpíxeles que dan tan buenos resultados?

Simplemente rasteriza las letras como si fueran 3 veces más anchas.

Los resultados difieren en la forma en que rasteriza las curvas, sobre todo qué tipo de esquema de suavizado / muestreo utiliza y si utiliza sugerencias de fuente . Para una excelente visión general, vea Textos de exposición de rasterización por geometría antigrano (IIRC, esto es lo que utiliza Chromium / PDFium) o representación de subpíxeles en Wikipedia.

De lo que va la imagen adjunta, no creo que tenga nada que ver con la representación de subpíxeles. Podría ser cualquier cosa: geometría de píxeles incorrecta, gamma incorrecta, conversión de espacio de color incorrecta, ...

Ecir Hana
fuente
Esperaría que los problemas con la conversión de geometría de píxeles, gamma o espacio de color se muestren como distorsión de color en puntos arbitrarios en la imagen, en lugar del ciclo regular visto en la imagen de la pregunta. El hecho de que circule horizontalmente entre antialiasing de color exagerado y antialiasing en escala de grises puro sugiere que la primera aplicación de antialiasing se realizó a una escala diferente.
trichoplax
No tengo la explicación completa, ya que la distorsión no parece estar alineada entre las diferentes filas de texto, pero parece que el problema está relacionado con la representación de subpíxeles de texto ya rasterizado en lugar de texto vectorial.
trichoplax
@trichoplax Lo que intento decir es que dudo que haya un problema con la representación de subpíxeles de Anti-Grain. En cambio, supongo que la entrada se destruye antes de que ingrese al rasterizador. O más tarde, pero no en el rasterizador en sí.
Ecir Hana
Sí, creo que la representación de subpíxeles se aplica correctamente, pero cuando se aplica a texto pre-rasterizado no es posible obtener un buen resultado. No creo que el renderizador esté roto, solo creo que se está alimentando con el tipo de texto incorrecto.
trichoplax