Предыдущая статья: субдискретизация.
Как мы уже выяснили, для кодирования цветного изображения каждый пиксель описывается несколькими каналами — RGB в большинстве случаев для оригинальных данных, и часто что-нибудь другое, например, YCbCr в закодированном файле. Однако это в любом случае некие цифровые (в наше время) данные.
В большинстве случаев, по крайней мере на момент написания этой статьи, каждый канал готового к публикации изображения описывается одним байтом на отсчет. Этого вполне достаточно для нормального восприятия изображения человеческим глазом. Давайте убедимся в этом.
Мониторы и глаза у всех разные, поэтому возможно несколько вариантов:
Левая часть картинки выглядит для вас естественно. На правой небо безнадежно испорчено, однако, обратите внимание, паруса и море почти не пострадали. Вероятнее всего, это справедливо для большинства читателей.
-
Вы видите явную «полосатость» неба в левой половине. Тут две возможности:
а) у вас профессиональный монитор и очень хорошее зрение, поздравляю!,
б) у вас дешевый монитор, матрица которого показывает только 6 бит вместо 8, и тогда небо испорчено, хотя и в меньшей степени, чем справа.
Кадр сделан на вполне приличный фотоаппарат в формате RAW с глубиной цвета 12 бит, с правильной экспозицией, поэтому вариант изначально дефектной картинки мы с негодованием отметаем.
Почему же для парусов и моря оказалось достаточно всего 4 бит на канал? Ответ прост: именно в этих областях изображения очень много мелких деталей. Психофизиология восприятия устроена так, что мы не замечаем в этом случае незначительные искажения яркости и оттенка отдельных пикселей. На этом же принципе основан дизеринг — преднамеренное добавление шума для устранения «полосатости».
В большинстве случаев для показа на современных экранах используют глубину цвета 8 бит, и этого вполне достаточно для практических целей.
При печати дело обстоит аналогично. В цветовой модели CMYK, используемой в полиграфии, часто ограничиваются шкалой от 0 до 100 в каждом из каналов. При этом не каждая комбинация значений описывает уникальный цвет, условия просмотра с бумаги обычно хуже, чем с экрана (непредсказуемое и неравномерное освещение, дефекты носителя и печати), так что и здесь 8-битного RGB-исходника достаточно. То же и с дорогой качественной фотопечатью: наверное, технически можно создать изображение с большей глубиной цвета, но зритель этого не увидит.
Зачем же тогда вообще нужно больше 8 бит на канал?
Мы живем в мире с очень высокой контрастностью. Зрение позволяет различать детали и в тенях, и в наиболее светлых участках за счет аккомодации, то есть бессознательной регулировки интенсивности падающего на сетчатку светового потока. В ясный солнечный день мы можем рассматривать предметы на открытой местности и внутри строения с маленькими окнами без искусственного освещения, но только по очереди, не одновременно. Эта особенность кажется нам естественной, мы привыкли к ней с раннего детства, и поэтому обычно не замечаем.
Иначе обстоит дело при фото- и видеосъемке. Камера не знает, на какой участок изображения следует обратить внимание, и поэтому вынуждена фиксировать всю картину как есть. Если сохранять изображение, полученное с матрицы, с глубиной цвета 8 бит на канал, будет неизбежно потеряна детализация или в светах, или в тенях, а чаще сразу и там, и там. Именно так происходит при сохранении снимков в формате JPEG, и впоследствии никакая дополнительная обработка не позволяет «вытянуть» ранее потерянную информацию.
Если же при съемке задать пониженную контрастность, чтобы в динамический диапазон файла «влезли» и света, и тени, то картинка будет выглядеть блеклой и невыразительной. Потребуется дополнительная обработка, в результате которой середина диапазона яркостей будет растянута, а края сжаты.
Если у вас качественный монитор и хорошее зрение, вы увидите разницу между верхней и следующей полосой. Ниже я продублировал ту же ситуацию, но с уменьшенной глубиной цвета для наглядности иллюстрации принципа. Прошу прощения за некоторую математическую неточность, выразившуюся в смещении центра — на ход рассуждений она не влияет. (Фотошоп лучше знает, как должен выглядеть градиент.)
На итоговом результате это будет выглядеть как полосы в областях плавного изменения яркости, или, выражаясь профессиональным языком фотографов, бандинг.
С цветными изображениями все еще хуже, поскольку к яркостным полосам добавится еще и заметное искажение оттенков, которое очень трудно исправить. Тот же эффект будет наблюдаться в большей или меньшей степени при любых операциях с цветом.
Для борьбы с этим дефектом исходный материал сохраняют с большей глубиной цвета — 10, 12 и даже 14 бит, в зависимости от технических возможностей оборудования. Обычно это формат RAW для фото и MPEG 10 бит 4:2:2 для видео, хотя видеокамеры среднего и высокого уровня тоже умеют сохранять RAW. Тогда при сохранении готового изображения в 8-битном представлении после обработки градиенты остаются визуально плавными. Важно всю обработку проводить при глубине цвета не меньшей, чем у оригинала, и загрублять данные только при финальном сохранении.
Другое применение большей глубины цвета — HDR, технология, позволяющая сохранить детализацию на небольших по площади участках кадра с очень высокой яркостью. Например, если в кадр попадает Солнце, оно не размазывается в невыразительную кляксу, а остается на изображении точечным источником небольшим кругом, вблизи которого небо имеет более или менее естественный вид. У этой технологии есть несколько разновидностей, но общий принцип одинаков: младшие биты яркостной составляющей используются для описания «нормальной» яркости, которую без проблем воспринимает глаз, а старшие подключаются для очень ярких участков, которые не могут быть слишком большими из-за технологических ограничений (например, слишком высокого потребления энергии и перегрева).
HDR используется не только для отображения на «продвинутых» мониторах и телевизорах, но и в приложениях компьютерной графики для текстур, над которыми при рендеринге сцены совершаются дополнительные операции, и важно не потерять точность, когда результат нормально помещается в 8 бит.
Наконец, большая глубина цвета (обычно до 16 бит) применяется в научных приложениях, где точность важна сама по себе, безотносительно возможностей восприятия глазом.
И на закуску упомяну ныне экзотический формат, 16 бит на три канала (RGB). Каждый канал получает по 5 бит, что почти эквивалентно правой половине показанной в самом начале фотографии, а оставшийся бит используется как альфа-канал или отдается зеленому, поскольку к нему человеческий глаз наиболее чувствителен. Такая схема широко применялась в системах с недостаточным количеством видеопамяти, и в последние годы встречается редко.
Комментарии (7)
Zara6502
08.11.2023 15:41+3а) у вас профессиональный монитор и очень хорошее зрение, поздравляю!,
У меня вроде бы обычный монитор с матрицей PVA откалиброванный для работы с фото и печати на струйнике. Вижу много разных дефектов которые не видно на TN матрицах, но в вашем примере небо для меня равномерное без дефектов.
Но у меня есть самописная программа, которая использует какую-то библиотеку по обработке изображений и там я часто дефекты смотрю с помощью фильтра CLAHE, ниже собственно результат фильтра, я им иногда пользуюсь чтобы убрать "квадратные" зоны на градиентах, так как при печати они могут коварны проявиться.
А вот ниже левую верхнюю часть я обработал размытием гаусса
И вот оно же с CLAHE
GeorgeTudosi Автор
08.11.2023 15:41Прекрасно, спасибо :). Я тоже пользуюсь разными трюками для выявления дефектов. Например, в студии часто снимаю на белом или на черном фоне — и тогда очень помогает накинутый поверх слой с выкрученными уровнями, чтобы даже на посредственном мониторе увидеть грязь на фоне.
Ваш фильтр занимается неким преобразованием, в результате применения которого становится видно то, что он считает дефектами, при сохранении узнаваемости изображения. Однако результаты его деятельности нужно осмысливать, а не просто верить ему, что «вот тут плохо». На обоих ваших иллюстрациях с этим фильтром может показаться, что левая половина неба хуже правой, но это неверно.
Гауссом тоже не стоит слишком сильно увлекаться — картинка становится «пластилиновой». В вашем случае даже пропали еле заметные облака, которые не являются дефектом. Наверное, выбранная мной в качестве примера фотография в этом смысле не очень удачна — не все и не на всех мониторах их увидят.
Наконец, шум не всегда является дефектом изображения. Обычно разумное количество шума полезно, хоть и съедается компрессией. Я не случайно упомянул в статье дизеринг — он делает градиенты визуально более плавными, даже при 8 битах на канал.
Zara6502
08.11.2023 15:41Ваш фильтр занимается неким преобразованием
Это нормализация гистограмм. Весьма широко применяется в областях очень далеких от фотографии как таковой. Но я иногда с его помощью создаю маску резких контуров, что помогает например при реставрации старых фото. Или выравниваю темные снимки например художественных картин, позволяет увидеть в темноте больше деталей, но это скорее из области хобби. Как найду один из примеров то закину фото сюда.
не все и не на всех мониторах их увидят
Да, я мне их не видно.
На обоих ваших иллюстрациях с этим фильтром может показаться, что левая половина неба хуже правой, но это неверно.
Ну сравнение идёт в контексте, я же неразрывно работаю и с исходником.
GeorgeTudosi Автор
08.11.2023 15:41Другое дело, что ваш фильтр на первой картинке проявил несовершенство камеры — чуть разное усиление при чтении разных строк, что заметно в виде горизонтальных равноотстоящих друг от друга линий. Это известный тип дефекта, бороться с которым теоретически можно калибровкой, но на практике ни в одном софте я такой функции не видел.
Astroscope
Так уж получилось, что читаю с телефона. Процитированное для меня справедливо в обоих режимах - "естественные цвета" и "насыщенные цвета".
GeorgeTudosi Автор
А что не так? Левая половина нормальная, правая — испорченная.
Astroscope
Вроде бы все так. :)