Блог Стебунова Владимира

Ordered dithering (Порядковый дизеринг)

В отличие от дизеринга Флойда-Стейнберга, порядковый дизеринг часто имитируется художниками пиксель-арта и есть в старых играх. Порядковый дизеринг обладает шаблоном и видом, который ни с чем не перепутаешь. Благодаря нему проще всего добиться эстетики старых компьютерных игр. Этот дизеринг лучше справляется с цветными изображениями, чем с черно-белыми.

Он тоже однопроходной и в отличие от Ф-С не требует знания о соседних пикселях. Достаточно знать координаты точки, и мы получим новый цвет. Перед тем как начать приводить картинку к наименьшей палитре, необходимо выбрать несколько параметров:

Теперь мы “замостим” наше изображение матрицей Байера и будем брать цвет, равный сумме цвета исходного пикселя и элемента матрицы, помноженного на размер допуска. При сложении в RGB режиме пиксель становится светлее, при неправильно выбранном допуске можем получить засвеченную картинку. Либо на абсолютно чёрном фоне появятся серые пиксели при достаточно большой матрице и допуске. Матрица Байера (как я понимаю, это и есть фильтр Байера, используемый в фототехнике) попеременно ставит тёмные и светлые пиксели, делая чётные и нечётные квадраты близкими по цвету.

Пример матрицы для замащивания. Ячейки содержат цвет номера помноженный на допуск.

Пример матрицы для замащивания. Ячейки содержат цвет номера помноженный на допуск.

При поиске конечных цветов одни будут подходить ближе к темной границе света, а другие к светлой. Таким образом образуется не всегда видимый глазу узор, который содержит до нескольких цветов, поэтому получается эмулировать больше цветов, чем даёт нам результирующее устройство - принтер или экран.

Алгоритм очень сильно зависит от начально выбранных параметров и при различных матрицах будет давать разные результаты. Поэтому отлаживать алгоритм сложно. Ниже картина Мойры Ханн, обработанная несколькими фильтрами.

Исходник
Черно-белый с матрицей 2х2
Черно-белый с матрицей 8х8
Цвета ZX Spectrum и матрица 8x8

Кстати, о цветовой палитре Спектрума. Она не совсем обычна. На каждый пиксель выделено четыре бита. Первый бит отвечает за яркость, а остальные за цвет (красный, синий, зелёный), и благодаря такому сочетанию получается пятнадцать цветов. Почему пятнадцать? Черный присутствует и в яркой палитре, и в тёмной, а вот белый не в яркой палитре является серым.

Ссылки:

Следующая статья

Предыдущая статья