Академия Печати : Стохастический растр
Выставка Наталии Резвовой
Стохастический растр

Стохастический растр

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

Для ответа на поставленные вопросы я решил написать статью про принципы построения растра для фотопечати на струйных принтерах.

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

Теперь давайте понятнее. Допустим, мы имеем изображение, разрешением 300dpi (точек на дюйм) и у каждой точки 256 градаций каждого цвета. Мы должны напечатать это изображение в журнале. Печать производится в четыре краски, и никаких оттенков. Для упрощения рассмотрим пример с черно-белым изображением, напечатанным только черной краской. Итак, имеем ч/б изображение, 256 оттенков серого, 300dpi. Для изготовления фотоформ используется фотонаборный автомат, который имеет разрешение, например 2400dpi, но не имеет никаких тоновых градаций, то есть может вывести только два цвета: черный или белый. А как же вся гамма оттенков? Так вот, поступает следующим образом. Разбиваем поле на ячейки 16x16 точек. Количество таких ячеек 150 на дюйм. В каждой ячейке можно поставить от 0 до 256 элементарных точек. Теперь в каждой ячейке мы можем сформировать одну большую точку, из нескольких маленьких. Если мы хотим напечатать серый цвет градация №80 (0-белый, 255-черный), то точку в ячейке мы сформируем из 80 элементарных точек, если хотим, чтобы цвет был светлее, то элементарных точек в ячейке будет меньше, хотим более темный цвет, увеличим количество точек в элементарной ячейке. Таким образом, мы можем получить изображение с разрешением 150 ячеек на дюйм, 256 оттенков цвета в каждой ячейке. Рассматривая изображение в журнале, мы как раз и видим структуру этих самых ячеек, то есть, видим упорядоченный растр.

И на принтере можно напечатать фотографию упорядоченным растром. Но интересно ли нам разглядывать фотографию, на которой четко виден растр? Никак нет. Основная задача фотографического растра - добиться абсолютной незаметности этого растра. Нам необходимо, чтобы изображение воспринималось непрерывным, а не разбитым на ячейки.

Итак, имеется задача. Есть изображение 300dpi, 256 градаций на цвет. Есть принтер, который печатает, допустим, 1440dpi, одним размером капли, то есть 2 градации на цвет. Мы должны напечатать это изображение на принтере, сохранив его непрерывность, то есть на ячейки, в этом случае мы разбивать не можем.

Играем здесь вот на чем. Разрешающая способность человеческого глаза не бесконечна. Рассматривая отпечаток, на котором, с разрешением 1440 dpi, чередуются белая и черная точка, как бы мы не напрягали зрение, мы увидим равномерный серый цвет.

Основная проблема в нашей задачи вот в чем. Печатая изображение, у которого 256 градаций цвета, на принтере, у которого всего 2 градации цвета мы получает паразитный шум (Шум - в данном случае, отклонение от полезного сигнала, передающего изображение). Наша задача состоит в том, чтобы этот шум был за пределами разрешающей способности человеческого глаза. Как автор статьи я понимаю, что этот абзац может быть не совсем понятен читателю, но дальше я все разъясню.

В качестве примера возьмем самый примитивный вариант стохастического растра.

Строится он следующим образом. Сначала изображение интерполируется до разрешения печати (в нашем случае 1440dpi). Теперь мы имеем изображение с разрешением 1440dpi и с 256 градациями цвета, а принтер печатает с разрешением 1440dpi и с 2 градациями цвета. Рассмотрим одну точку изображения. Мы можем либо поставить каплю данного цвета в эту точку, либо не поставить. Теперь смотрим данную точку на изображении. Видим, какую градацию данного цвета она имеет. На основании этого мы ставим каплю в эту точку, с вероятностью, зависящей от градации данного цвета на изображении. Расшифруем это. Мы запускаем генератор случайных чисел от 0 до 255. Если выпадает число меньшее, чем номер градации данного цвета, то капля ставится, если больше, то не ставится (Считаем, что 0 - отсутствие цвета, то есть белая бумага, 255 - максимальная градация цвета). Такая вот "рулетка".

Таким образом, формируется изображение. Теперь рассмотрим то, что получилось. Где полезный сигнал, а где шум? Насколько этот шум заметен? В данном случае величина шума в конкретной точке, это разность между тем, что напечатано (0 или 255) и тем, что должно быть. Как себя ведет этот шум? Как он распределяется? Насколько он замете глазу? При данном алгоритме растрирования ответ на эти вопросы дать невозможно. Ведь шум у нас возникает случайным образом. Поэтому в некоторых случаях напечатанное изображение будет выглядеть гладко, а в других случаях паразитный шум может стать заметнее полезного сигнала, то есть изображения. Как говорится, воля случая. Так как поведение данного шума непредсказуемо, то такой растр относится к растрам класса "Растрирование белым шумом". Здесь белый имеется в виду не цвет, а то, что в спектре белого света есть все частотные составляющие. То есть имеется в виду, что частота данного шума может быть любой, шум непредсказуемый. В общем, как правило, нас такое решение нашей задачи не устраивает.

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

Давайте по порядку. Как сделать так, чтобы глаз не видел паразитный шум? Еще раз рассмотрим следующий пример: Рассматривая отпечаток, на котором, с разрешением 1440dpi, чередуются белая и черная точка, как бы мы не напрягали зрение, мы увидим равномерный серый цвет. Здесь частота паразитного шума 720 колебаний (былый-черный-белый) на дюйм. Из-за высокой частоты глаз этот шум просто не воспринимает, а воспринимает полезный сигнал - серый цвет (хотя мы печатаем черные и белые точки). Нам необходимо, чтобы частота паразитного шума на отпечатке была выше разрешающей способности человеческого глаза. Такое растрирование, в общем случае, называется "Растрированием синим шумом". Синий, имеется в виду не цвет, а то, что в спектре синего света преобладают высокие частоты. То есть, имеется в виду, что паразитный шум у нас высокочастотный.

Теперь рассмотрим принципы построения стохастического растра с "Растрированием синим шумом" на примере растра Error Diffusion (распределение ошибки).

Сначала рассмотрим черно-белое изображение, печатающееся только черной краской.

Имеется картинка. Сначала изображение интерполируется в разрешение печати принтера. Далее смотрим на первую точку (как правило, верхнюю левую). Если её значение более или равно 50% - ставим черную каплю, если менее 50% не ставим. Что получилось. Например, имеем точку в растровом изображении 80%, а вынуждены ставить 100% (так как есть либо 0%, либо 100%). Вот тут то вводится переменная. Называется Error (ошибка). В нашем случае Error = -20%. Суть растра Error Diffusion в распределении этой самой переменой Error по соседним ячейкам (пикселам растрового изображения). В нашем случае Error = -20% распределим следующим образом: вычтем 10% из значения пикселя справа и 10% из нижнего пикселя.

Далее произведем расчет для второго пикселя, за "вычетом" 10%. Заметим, что переменная Error характеризует величину шума.

Давайте рассмотрим некоторые примеры:

1. Заливка 50%. Смотрим первую точку. Она 50%, ставим каплю (100%). Error = -50%. По -25% направо и вниз. Смотрим вторую точку. Изначально она 50%, с учетом Error она 25%, каплю не ставим (0%). Error = 25%. По 12,5 направо и вниз. Смотрим третью точку. Изначально она 50%, с учетом Error она 62,5%, ставим каплю (100%). Error = -37,5%. По -18,75% направо и вниз.

И т.д. В итоге получаем "шахматную доску", которая нам кажется равномерной серой заливкой. Обращаю ваше внимание на то, что ошибка в данном примере каждый раз меняет знак, то есть не накапливается, а целиком исчезает в ближайших ячейках.

2. Заливка 5%. Смотрим первую точку. Она 5%, каплю не ставим (0%). Error = 5%. По 2,5 направо и вниз. Смотрим вторую точку. Изначально она 5%, с учетом Error она 7,5%, каплю не ставим (0%). Error = 7,5%. По 3,75 направо и вниз.

Так вот: Только на 6-ой точке мы поставим каплю. Таким образом, наша ошибка нейтрализовалась только в 6-ой ячейке. Что увидит наш глаз? Конечно распространение ошибки(error) он увидит значительно лучше, чем цвет фоновой заливки. И у нас уже не будет ощущения равномерного серого поля.

Заметим, что частота паразитного шума равна половине количества раз изменения знака переменной Error на дюйм. То есть частота паразитного шума будет 120 колебаний на дюйм. А 120 "деталей" на дюйм глаз увидит.

Как можно с этим бороться?
Можно увеличить разрешение печати. Соответственно увеличится частота паразитного шума, и глаз его уже не увидит. Но увеличение разрешения печати не всегда возможно.
Но есть и другой способ уменьшения паразитного шума.

Вводим в растр дополнительный цвет. Мы рассматриваем печать в одну краску (черную) так что введем дополнительно серые чернила (к примеру, 30% черного). Раньше у нас было только два цвета: черные чернила и белая бумага, теперь три: черные чернила, серые чернила и белая бумага.

Заново рассмотрим пример 2: Заливка 5%. Смотрим первую точку. Она 5%, каплю не ставим (0%). Error = 5%. По 2,5 направо и вниз. Смотрим вторую точку. Изначально она 5%, с учетом Error она 7,5%, каплю не ставим (0%). Error = 7,5%. По 3,75 направо и вниз.

В этот раз мы не будем ждать "6-го хода", что-бы поставить черную каплю. Когда Error превысит 15%, мы поставим серую каплу и нейтрализуем ошибку в 4-ой точке. В данном примере влияние Error на наше цветовосприятие гораздо меньше, чем в примере без серых чернил. И мы видим равномерную светло-серую заливку.

Давайте рассмотрим подробнее, что мы приобрели, введя в растр дополнительный цвет. Во-первых, мы увеличили частоту паразитного шума, а во-вторых, значительно уменьшили амплитуду шума (с 95% до 25%). То есть, вводя дополнительные чернила в растр мы увеличиваем частоту и уменьшаем амплитуду паразитного шума. И первое, и второе положительно сказывается на восприятии отпечатка.

Теперь давайте рассмотрим вариант печати на принтере с каплей переменного размера. Рассмотрим печать в одну краску - черную. Наш принтер может поставить большую каплю, может среднюю, может маленькую, а может вообще не поставить. Исходя из этого мы можем напечатать: большая капля - 100%, средняя капля - 70 %, малая капля - 40 %, нет капли - 0%.

Теперь, строя растр Error Diffusion, мы будем распределять ошибку (Error) между значениями 0%-40%-70%-100%. И мы так же, как и в случае с дополнительными осветленными чернилами, увеличиваем частоту и уменьшаем амплитуду паразитного шума.

Теперь давайте скомбинируем печать на принтере с переменным размером капли и с использованием дополнительных осветленных чернил. Итак, мы можем напечатать: черные чернила большая капля - 100%, средняя капля - 70 %, малая капля - 40 %, серые чернила большая капля - 30%, средняя капля - 21 %, малая капля - 12 %, нет капли 0%.

Теперь, строя растр Error Diffusion, мы будем распределять ошибку (Error) между значениями 0%-12%-21%-30%-40%-70%-100%. Теперь уж точно, ошибка далеко не распространится.

Итак, теперь мы можем ответить себе на вопросы, которые задавали до рассмотрения примера растра Error Diffusion.

Насколько паразитный шум заметен глазу?
Задача растра Error Diffusion максимально увеличить частоту паразитного шума, чтобы глаз уже не мог воспринять этот шум, а воспринимал только полезный сигнал, то есть изображение.

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

Теперь давайте рассмотрим влияние на восприятие отпечатка, в зависимости от сюжета, в случае растрирования растром Error Diffusion.

Рассмотрим пример с печатью 5% заливки. В случае растрирования без использования осветленных чернил и с каплей постоянного размера мы отчетливо увидим артефакты стохастического растра, то есть паразитный шум. Если мы будем растрировать "пестрый" сюжет, то есть сюжет с высокой локальной контрастностью (высокодетализированный сюжет), то переменная Error будет менять знак практически в каждой точке. То есть частота паразитного шума будет высокой, и он не будет восприниматься глазом.

Какой вывод из этого можно сделать. Часто, печатая градиент или плавные переходы из одного цвета в другой, мы видим появляющиеся разрывы в цвете. Видя это, мы считаем, что имеем дело с цветом, который невозможно напечатать на данном принтере. На самом же деле этот цвет в растре присутствует, просто артефакты стохастики (паразитный шум) мы видим лучше, чем этот цвет. Однако в пестром сюжете этот цвет прекрасно напечатается.

Теперь давайте ответим себе на вопрос: С каким разрешением посылать фотографию на печать, чтобы добиться лучшего качества?
Основное, что нам нужно, это разделить частоту полезного сигнала и частоту паразитного шума. Частота полезного сигнала в данном случае, это количество деталей изображения на дюйм. В случае с высокодетализированным сюжетом при печати с разрешением 1440 dpi частота паразитного шума 720 колебаний на дюйм. Изображение должно быть меньшего разрешения. Интерполировать изображение на большее разрешение смысла не имеет. Это и так сделает драйвер. Общий совет по поводу выбора разрешения следующий: Если сюжет высокодетализированный, его лучше печатать с разрешением 360dpi (в большем разрешении смысла нет, глаз этого все равно не увидит), если сюжет малоконтрастный, то в высоком разрешении файла смысла нет. Но в каждом конкретном случае надо анализировать ситуацию самостоятельно. Бывает, что драйвер принтера сначала интерполирует посланное на печать изображение, в какое-то стандартное разрешение (для ускорения работы компьютера), и в этом случае увеличение разрешения нам не даст никакого выигрыша.

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

Александр Резвов.

Все иллюстрации к данной статье смоделированы автором.