20

我想知道是否有任何图形库支持通用图形的 RGB 亚像素渲染(如 ClearType),而不仅仅是文本。这将允许将水平分辨率提高三倍,并将图形放在第三个像素的 x 位置上。

虽然我认为这将非常有用,但我在互联网上找不到太多关于它的信息,除了以下内容:

例如,是否有任何图书馆实现了这一点,或者是否有努力将这样的东西带到开罗图书馆?


更新:

我特别指的是考虑到当前 LCD 屏幕使用不同颜色的子像素的渲染技术。要制作白点,请将所有子像素设置为 'on' 或 255。白线将是多个子像素相互叠加:

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

(其中.是全黑子像素,RGB全亮红色、绿色或蓝色子像素)。因为我们的眼睛无法分辨子像素,所以它们混合在一起形成一条白线。但是,我也可以从以下内容中划出一条白线:

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

请注意,它非常清晰,但位于 x = 1 1/3 像素处。这对于绘制略微模糊的白线的传统渲染技术是不可能的。这里例如R=70% 点亮,r=30% 点亮。我没有计算出数学,这只是为了让你明白:

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

另一个示例是斜率,您可以 a) 使用全像素,b) 抗锯齿,或 c) 使用子像素渲染:

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

同样,请注意,这只是一个粗略的示例,可以为您提供一般概念,但您会看到 a) 锯齿或锯齿,b) 模糊,c) 与 LCD 上的清晰度一样高。

字体显示的实际实现(Windows 上的 ClearType 和 FreeType 中的子像素渲染)具有更复杂的算法。它们考虑到各个子像素会相互渗透或发光,它们保留了总的颜色强度或能量。他们还考虑到子像素间距不均匀(R和G之间的间距,或者G和B(像素中)的间距可能小于B和R之间的间距),最后一些显示器具有完全不同的像素布局。

4

3 回答 3

7

据我所知,不存在具有亚像素 RGB 渲染的图形库。

以下是一些可能的原因:

  • 微软在 RGB 亚像素渲染技术方面拥有多项专利。我不知道这些专利是否仅适用于字体光栅化,但如果不是,这可能是其他图形库不使用它的一个很好的理由。
  • 就像问题中指出的那样,亚像素渲染依赖于硬件实现。它适用于通过并排放置 3 个颜色单元(例如 LCD 监视器)来组成颜色的显示器。对于所有其他显示器类型(等离子、投影仪、旧 CRT),它不起作用。
  • 亚像素渲染仅增加水平分辨率。这种限制对于字体光栅化来说不是问题,因为通常水平方向的字体需要更高的分辨率(请参阅粗体和斜体字符和字距调整)。使用“自定义”图形在每个轴上具有不同的分辨率会很奇怪。
  • 子像素渲染不适用于旋转显示。例如,移动设备必须同时使用 RGB 子像素渲染和抗锯齿。
  • 子像素渲染仅适用于显示器的原始分辨率。
  • 看起来色盲的人在亚像素渲染方面有问题。有关更多信息,请参阅本文
  • 子像素渲染在白底黑字或黑底白字的情况下效果很好。对于其他背景,“渲染器”必须知道背景颜色才能调整子像素效果。由于这个原因,Office 2013 停止使用 ClearType。
  • 这更主观,但亚像素渲染和抗锯齿之间的区别非常微妙。子像素渲染的缺点和增加的复杂性可能不值得。

恕我直言,更好的图形的未来是更高的像素密度,如 Apple Retina 显示器。

于 2015-04-28T12:12:19.987 回答
2

有人设法使用 ImageMagick 获得了一些有趣的结果。方法和结果,以及有趣的讨论,都在这里公开:https ://www.imagemagick.org/discourse-server/viewtopic.php?t=19120

有趣的话题,确实。但问题仍然存在:这项技术有多大用处,因为这样的过程只会使未缩放的图像在特定类型的显示器上受益?

于 2016-03-19T02:29:43.563 回答
0

通过定义您自己的转换管道将输出映射到设备像素,antigrain.com 上的 AGG 似乎是可能的。见https://sourceforge.net/p/vector-agg/mailman/search/?q=LCD

于 2016-10-26T01:11:35.807 回答