Субпиксельные правила сглаживания

11

Недавно у меня возникла проблема с субпиксельным сглаживанием текста , который производит очень резкие цвета и заставил меня задуматься, как это должно быть сделано правильно:

введите описание изображения здесь

Я нарисовал несколько случаев черной плитки, покрывающей трети пикселей ниже.

введите описание изображения здесь

Цвета совпадают с теми, которые я вижу, однако, когда я смотрю на правильно сглаженный текст, результат получается не таким ярким и отвлекающим:

с www.lagom.nl

Я предполагаю, что должен быть баланс между хорошей интенсивностью света и правильным цветом. Какие методы используются для субпиксельного сглаживания, которые дают такие хорошие результаты?


Обновить:

Я визуализировал белый чайник для изображения с шириной 3х и мультисэмплингом. Ниже я сравниваю усреднение каждые 3 пикселя с назначением каждого RGB. Цвета по- прежнему кажутся слишком яркими в некоторых случаях (особенно по сравнению с примером выше , из здесь ), не то, что мой телефон захватывает их.

введите описание изображения здесьвведите описание изображения здесь

введите описание изображения здесьвведите описание изображения здесь

введите описание изображения здесьвведите описание изображения здесь ОК, мой монитор нуждается в небольшом количестве пыли

jozxyqk
источник
Я считаю, что некоторые экраны имеют разную компоновку основных цветов. Вы смотрели свои результаты на разных типах экрана?
Трихоплакс
@trichoplax нет, но я уверен, что оба моих монитора RGB. Также здесь меня больше интересует, как работают сабпиксельные методы сглаживания, чем исправление моей проблемы.
jozxyqk
Я не имел в виду разные основные цвета, я просто имел в виду, что красный, зеленый и синий расположены в разных геометрических узорах, поэтому ваш алгоритм должен знать, какой рисунок используется для получения хороших результатов.
Трихоплакс
1
@trichoplax да, извините, я должен был уточнить, у обоих мониторов пиксели разделены на трети в порядке RGB слева направо, как на этой фотографии .
jozxyqk
1
В некоторой степени курсивный текст будет иметь менее заметные цветные полосы, поскольку наклонные линии не позволяют одному и тому же цвету присутствовать более чем на нескольких последовательных пикселях по вертикали.
Трихоплакс

Ответы:

3

Я не уверен, что там происходит. Если посмотреть на рендеринг «соображений» в вашем примере, «минусы» выглядят так, как вы получаете, когда делаете грубое подпиксельное сглаживание, не применяя необходимое «исправление», чтобы оно выглядело хорошо. Но тогда «der» в том же слове выглядит так, как будто нет субпиксельного сглаживания.

Вы можете найти хорошую статью о том, как хорошо выглядит субпиксельное сглаживание, здесь https://www.grc.com/ct/ctwhat.htm, а для части «исправить» здесь https: //www.grc. com / ct / freeandclear.htm и здесь https://www.grc.com/ct/cttech.htm

Это сводится к следующему: если вы просто вычисляете интенсивность R / G / B, вычисляя покрытую область для каждого подпикселя, результирующие цветовые полосы будут очень некрасивыми / раздражающими. Чтобы исправить это, вы должны применить горизонтальный размытие / фильтр нижних частот к субпиксельному изображению. В результате получается менее резкое изображение с гораздо менее насыщенными цветами. Т.е. что-то вроде твоего "Check you" примера.

pgroke
источник
2

Какие методы используются для субпиксельного сглаживания, которые дают такие хорошие результаты?

Вы просто растеризуете буквы, как если бы они были в 3 раза шире.

Результаты отличаются тем, как вы растеризуете кривые, особенно в том, какую схему сглаживания / выборки он использует, и использует ли он хинтинг шрифтов . За большой обзор см Тексты растеризации выдержкой по Anti-Grain Geometry (IIRC это то , что Хром / PDFium использует) или субпикселей рендеринга в Википедии.

Что касается прикрепленного изображения, я не верю, что оно имеет какое-либо отношение к субпиксельной визуализации. Это может быть что угодно: неправильная геометрия пикселя , неправильная гамма, неправильное преобразование цветового пространства, ...

Ecir Hana
источник
Я ожидал бы, что проблемы с геометрией пикселя, гаммой или преобразованием цветового пространства будут отображаться как искажение цвета в произвольных точках на изображении, а не в виде регулярного цикла, видимого на изображении вопроса. Тот факт, что он проходит по горизонтали между сглаживанием преувеличенного цвета и чистым сглаживанием в оттенках серого, указывает на то, что первое применение сглаживания было выполнено в другом масштабе.
Трихоплакс
У меня нет полного объяснения, поскольку искажение не похоже на выравнивание между различными строками текста, но кажется, что проблема связана с субпиксельным рендерингом уже растеризованного текста, а не векторного текста.
Трихоплакс
@trichoplax Я пытаюсь сказать, что я сомневаюсь, что есть проблема с субпиксельным рендерингом Anti-Grain. Вместо этого я бы предположил, что ввод искажается раньше, чем он поступает в растеризатор. Или позже, но не в самом растеризаторе.
Ecir Hana
Да, я думаю, что субпиксельный рендеринг применяется правильно, но при применении к предварительно растеризованному тексту невозможно получить хороший результат. Я не думаю, что рендерер сломан, я просто думаю, что он получает неправильный текст.
Трихоплакс