2012-07-16 15 views
16

Me pregunto si hay alguna biblioteca de gráficos que admita la reproducción de subpíxeles RGB (como ClearType) para gráficos generales, , no solo para el texto. Esto permitiría prácticamente triplicar la resolución horizontal y colocar los gráficos en posiciones de tercer píxel x.RGB de procesamiento de subpíxeles para gráficos?

Aunque creo que esto sería muy útil, no pude encontrar mucho en internet sobre ella, excepto los siguientes:

¿Hay alguna biblioteca que implemente esto, o hay esfuerzos para traer algo como esto a la biblioteca de El Cairo, por ejemplo?


Actualización:

Me refiero específicamente a las técnicas que tengan en cuenta que las pantallas LCD actuales de uso de sub-píxeles de diferentes colores renderizado. Para hacer un punto blanco, se establece todos los subpíxeles en 'ON' o 255. Una línea blanca sería varios subpíxeles una encima de la otra:

...RGB... 
...RGB... 
...RGB... 
...RGB... 
...RGB... 
...111... 

(donde . es un sub-píxel totalmente negro, y R, G o B son subpíxeles rojos, verdes o azules completamente iluminados). Debido a que nuestros ojos no pueden resolver los subpíxeles, se combinan para formar una línea blanca. Que podría sin embargo también hacen una línea blanca entre los siguientes:

....GBR.. 
....GBR.. 
....GBR.. 
....GBR.. 
....GBR.. 
....111.. 

Nota que es perfectamente afilada, pero colocado en x = 1 1/3 píxeles. Esto no es posible con las técnicas tradicionales de renderizado que dibujan una línea blanca ligeramente borrosa. Aquí, por ejemplo, R = 70% iluminado, r = 30% iluminado. No trabajé a cabo los cálculos, esto es sólo para que pueda obtener la idea:

...RGBrgb... 
...RGBrgb... 
...RGBrgb... 
...RGBrgb... 
...RGBrgb... 
...777333... 

Otro ejemplo es una pendiente, lo que se puede hacer a) con píxeles completos, b) filtros antialiasing, o c) con los subpíxeles renderizado:

a) RGB...... b) RGB...... c) RGB...... 
    RGB......  RGBrgb...  .GBR..... 
    ...RGB...  rgbRGB...  ..BRG.... 
    ...RGB...  ...RGB...  ...RGB... 
    ...RGB...  ...RGBrgb  ....GBR.. 
    ......RGB  ...rgbRGB  .....BRG. 
    ......RGB  ......RGB  ......RGB 

una vez más, tenga en cuenta que esto es sólo un ejemplo crudo para darle la idea general, pero se ve que a) es dentada o alias, b) es borrosa, y c) es tan agudo como usted puede obtenerlo en una pantalla LCD.

Las implementaciones reales de esto, para la visualización de fuentes (ClearType en Windows y la representación subpixel en FreeType) tienen un algoritmo más sofisticado. Toman en cuenta que los subpíxeles individuales sangran o brillan entre sí, conservan la intensidad de color total o la energía. También tienen en cuenta que el espacio entre píxeles no es uniforme (el espacio entre R y G, o G y B (en el píxel) puede ser más pequeño que entre B y R), y finalmente que algunas pantallas tienen diseños de píxeles completamente diferentes.

+0

Cairo admite posicionamiento subpíxel. Todas las coordenadas son de doble precisión. Ver [cairo_line_to] (http://www.cairographics.org/manual/cairo-Paths.html#cairo-line-to) para un ejemplo – mbonnin

+1

Soy consciente de que puedes usar coordenadas no enteras, pero me refiero a la representación RGB subpixel, no solo renderizado antialias. La representación de subpíxeles RGB tiene en cuenta que cada píxel en una pantalla LCD está compuesto por un subpíxel rojo, verde y azul. Actualizaré la pregunta con un poco más de detalle. – jdm

+0

bien, entendido. de hecho, no sabía que algunos motores de fuente podrían hacer esto (dudo que Freetype 'divida' píxeles en sus valores RGB, ¿o sí?). También esto dependería de la configuración real de la matriz rgb, por lo que podría terminar haciendo más daño que bien en pantallas como la [nexus one] (http://arstechnica.com/gadgets/2010/03/secrets-of-the-nexus -ones-screen-science-color-and-hacks /) – mbonnin

Respuesta

5

Por lo que yo sé, no existe una biblioteca gráfica con representación RGB subpixel.

Estas son algunas de las razones posibles por las que:

  • Microsoft cuenta con una tecnología de subpíxeles prestación few patents en RGB. No sé si esas patentes se aplican solo a la rasterización de fuentes, pero si no es así, probablemente sea una muy buena razón por la que otras bibliotecas gráficas no la utilicen.
  • Como se señaló en la pregunta, la representación de subpixel depende de una implementación de hardware. Funciona bien con pantallas que componen el color colocando 3 celdas de color lado a lado (por ejemplo, un monitor LCD). Para todos los demás tipos de pantallas (plasma, proyectores, CRT antiguo), no funciona.
  • La representación de subpíxeles solo agrega resolución horizontal. Esta limitación no es un problema para la rasterización de fuentes, ya que a menudo la fuente horizontal necesita más resolución (vea los caracteres en negrita y cursiva y el interletraje). Con gráficos "personalizados" sería extraño tener una resolución diferente en cada eje.
  • La representación subpixel no funciona con la pantalla rotativa. Por ejemplo, el dispositivo móvil tiene que usar tanto la representación subpíxel RGB como el antialiasing.
  • La representación de subpíxeles solo funciona con la resolución nativa de una pantalla.
  • Parece que las personas daltónicas tienen problemas con la representación de subpíxeles. Consulte esto paper para obtener más información.
  • La reproducción de subpíxeles funciona muy bien con negro sobre fondo blanco o blanco sobre fondo negro. Con otros recursos, el "renderizador" debe conocer el color de fondo para ajustar el efecto de subpíxel. Por este motivo, Office 2013 dejó de usar ClearType.
  • Esto es más subjetivo, pero la diferencia entre la representación de subpíxeles y antialiasing es muy sutil. Los inconvenientes y la complejidad agregada de la renderización de subpíxeles podrían no valer la pena.

En mi humilde opinión, el futuro de mejores gráficos es con mayor pixel density como la pantalla retina de Apple.

0

Alguien consiguió algunos resultados interesantes usando ImageMagick. El método y los resultados, así como una discusión interesante, están expuestos aquí: https://www.imagemagick.org/discourse-server/viewtopic.php?t=19120

Asunto interesante, de hecho. Pero el punto sigue siendo: ¿qué tan útil puede ser la técnica, ya que tal proceso solo beneficiaría las imágenes sin escala en un tipo específico de pantalla?

Cuestiones relacionadas