Приветствую! Я, Егор Ершов, руководитель группы «Цветовая вычислительная фотография» в AIRI и заведующий сектором репродукции и синтеза цвета ИППИ РАН, продолжаю выкладывать статьи по мотивам своих лекций по вычислительной фотографии. Наша глобальная задача, напомню, разобраться, как сделать так, чтобы камера сотового телефона достаточно хорошо смогла уловить цвета, а монитор или принтер — их передать.
Прошлые три текста были посвящены общей теории цвета, описанию зрительной системы, а также стандартам и цветовым пространствам (их можно прочесть тут, тут и тут). Теперь же я расскажу непосредственно о конвейерах (или пайплайнах) формирования изображения — какая именно магия происходит внутри сенсоров, начиная с момента нажатия на кнопку затвора и заканчивая сохранением изображения в галерее.
Приятного чтения!
Виды современных конвейеров
В 2021 году коллеги из Google Research и Йоркского университета в Торонто выпустили замечательный обзор истории развития и современных тенденции мобильной вычислительной фотографии. Среди прочего, они выделили два классических пайплайна формирования изображений, которые представлены на рисунке ниже:

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

А о каких, собственно, площадях идёт речь? Современные технологии создания фоточувствительных элементов, пикселей и матриц шагнули достаточно далеко — линейный размер одного пикселя составляет примерно полмикрона. Для сравнения, толщина человеческого волоса — это 50–100 микрон. Легко себе представить, что количество фотонов, которые приходится на такую маленькую единицу площади, невелико, а, значит, невелико и количество полезного сигнала. И всё же современные конвейеры справляются даже с такой задачей.
Фильтры Байера
Прежде всего нам нужно понять, откуда берётся три цветовых канала, если каждый пиксель считает одно число фотонов. Главным технологическим решением здесь стало использование так называемого байеровского паттерна (шаблона, маски). Суть этого метода в том, что с некоторой специальной периодичностью над каждым пикселем размещаются световые фильтры трёх разных цветов.
Фильтры каждого цвета имеют строгую периодичность, но периоды у разных цветов могут различаться. Как правило, зеленых делают больше в два раза — по всей видимости потому, что в этом диапазоне длин волн, как мы знаем из прошлой статьи, мы особенно хорошо различаем градации интенсивности цвета (про кривую видности можно больше узнать тут), и это важная опорная информация для интерполяции. Кроме того, распределить три цвета периодично и равномерно на прямоугольной решетке не представляется возможным.

Разумеется, фильтр призван поглощать фотоны с «неправильной» длинной волны, по сути, исключая их из формирования из без того слабого сигнала. В реальности ситуация ещё хуже: ведь матрица состоит не только из светочувствительных сенсоров, но и разнообразных вспомогательных элементов, перегородок, дорожек. Они также поглощают заметную долю излучения. Сегодня эта проблема решается с помощью массивов микролинз, которые помогают световым лучам избегать преград и достигать светочувствительной площади.

Спектральные чувствительности
Итак, допустим мы сделали снимок и собрали в каждом пикселе пропущенные через фильтры и микролинзы фотоны. Но это пока всё ещё одно число, и соответствующие изображение, если его построить, будет в оттенках серого.

Прежде чем говорить о цвете, мы должны вспомнить, что у стандартного наблюдателя каждому цветовому каналу соответствует своя спектральная чувствительность. Но совпадают ли они со спектральными чувствительностями сенсоров в матрице, которые зависят и от оптических свойств фотодиодов, и от спектров пропускания фильтров? В общем случае, очевидно, не совпадают.
Более того, эти характеристики оказываются различны у разных производителей телефонов — их выбор, как правило, диктуется производственными обстоятельствами. Но даже в рамках одной производственной партии не бывает двух идентичных устройств. А поскольку процесс измерения спектральной чувствительности очень трудоёмок, контроль, как правило, ограничивается одним девайсом в партии.

Всё вместе это определяет фундаментальные трудности, с которыми приходиться жить разработчикам алгоритмов цветопередачи. Изменение спектральной чувствительности сказывается на восприятии и воспроизведении света, а потому конвейеры обработки необходимо проектировать так, чтобы их можно было адаптировать и калибровать под каждое следующее устройство.
Но, допустим, у нас есть некоторые калиброванные спектральные чувствительности для данного устройства, и мы сделали кадр. Как дальше происходит процесс формирования изображения?
Согласно линейной модели, мы должны каждое значение в пикселе поэлементно умножить со спектральными чувствительностями сенсора и проинтегрировать. Получающаяся таким образом величина называется спектр‑стимулом. Проделав это для каждого пикселя, мы получим три изображения, соответствующие R, G и B каналам.

Для получения цветного изображения их следует объединить, но эта задача не такая простая, как кажется на первый взгляд, поскольку размер каждого из изображений будет определяться структурой соответствующей маски в байеровском фильтре. Корректное объединение называется операцией дебайеринга, но прежде, чем переходить к ней, в пайплайне предусмотрено ещё множество шагов.
Начнём мы с вопросов линейности. Это фундаментальное свойство, на котором зиждется вся дальнейшая обработка изображения, цвета, его формирования и преобразования.
Линейность
Допустим, что у нас есть некоторый источник освещения и некоторый регулятор, которым мы можем менять яркость или энергетическую составляющую светового потока. Идея о линейности предполагает, что, если источник стал светить в два раза мощнее, то и отклик сенсора за тот же период времени будет таким же. Считается, что подавляющее число кремниевых сенсоров, которые находятся во всех наших устройствах, этим важным свойством обладают.
На самом деле всё несколько сложнее, поскольку работа сенсоров опирается на регистры и ёмкости. Эти элементы не могут бесконечно подсчитывать фотоны за бесконечный период времени, — рано или поздно регистры будут насыщаться, выдавая некоторое максимальное значение. Дальше идёт процесс аналогово‑цифрового преобразования, в процессе которого происходит дискретизация, неизбежно привносящая погрешность в регистрируемый сигнал.

Частично это пытаются невелировать нелинейными мэппингами. Этот этап работы сигналом обязателен ещё до того, как пайплайн перейдёт непосредственно к дебайерингу.
Треугольник экспозиции
На то, какие значения будут записаны в каждый пиксель, влияют и другие факторы, которые можно корректировать, чтобы сделать задачу улучшения изображения заведомо проще. Речь идет о трёх важных параметрах: коэффициенте усиления (ISO), скорости затвора (или, что тоже самое, времени экспозиции) и апертуре (размере диафрагмы). Их всех можно настраивать в профессиональных камерах, в то время как в мобильных телефонах апертура обычно зафиксирована.
Взаимосвязь этих трёх величин обычно описывают с помощью так называемого треугольника экспозиции. Изменение ISO меняет, по сути, лишь множитель, на который домножается посчитанное число фотонов перед сохранением в память. Время выдержки влияет на то, как долго конкретный сенсор будет наблюдать за сценой: большое значение позволит получить больше света в каждом пикселе, но подвижные объекты начнут смазываться сильнее. Наконец, размер диафрагмы позволяет камере физически собирать больше или меньше света. Эти параметры принято описывать как вершины треугольника, поскольку речь идет о балансировании яркости с учетом других существенных параметров: время экспозиции повлияет на резкость, размер диафрагмы определит глубину резкости, а ISO — чистоту изображения.

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

В мире научной измерительной техники: микроскопии, астрономии и им подобных — с шумами стараются бороться, например, стабилизируя и охлаждая матрицы жидким азотом. Но требования к точности регистрации изображения в повседневной жизни существенно меньше, да и возможности к технической защите от шумов сильно скромнее.
Хорошая новость в том, статистические свойства тепловых токов довольно предсказуемы: среднее значение и дисперсия стабильны и хорошо поддаются измерению даже вне лаборатории. Производители как правило указывают их. Например, у камеры Canon 600D темновой ток равен 2048 (в 16-разрядной системе) со стандартным отклонением, примерно равным 50. Такой шум нужно обязательно вычитать, чтобы достигать заметно более чётких результатов, потому что на мелких текстурах и на каких‑то незначительных контрастах его влияние может быть значимым.

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

Маскирование битых пикселей
Ещё один неизбежный факт: почти все камеры, которые мы используем, сломаны! Речь в данном случае идёт о том, что в каждой матрице есть битые пиксели, которые не работают по причине каких‑либо ошибок на производстве и, в целом, неидеальности сборочного процесса.

Но если битые пиксели мониторов обычно сразу видно (хотя сегодня и это пытаются исправлять), то в случае с камерами производители отлавливают их при калибровке темнового тока. Для всех обнаруженных битых пикселей вычисляется специальная маска, которая исправляет их ещё до формирования RAW картинки. Это важно, чтобы пользовательский опыт от работы с новой камерой был положительным. Если же вы видите битые пиксели на сделанных камерой изображениях, они, скорее всего, появились уже после продажи.
Коррекция по белому полю
После того, как произведена коррекция битых пикселей, также требуется устранить так называемый эффект цветового виньетирования. Наверняка те из вас, кто пользовался полноразмерными фотоаппаратами с объективами и работал с сырыми изображениями, имели удовольствие его наблюдать.
Любая оптическая система, описываемая двоякой выпуклой линзой, имеет один и тот же закон падения интенсивности от центра к периферии — косинус в четвертой степени. Поэтому даже если фотографировать равномерное световое поле, середина снимка будет ярче, чем края.
Эта проблема также старая, и метод борьбы с ней известен давно. Калибровка для данного объектива и для данного аппарата включает в себя фотографирование равномерного поля и вычисление двумерного профиля для эффекта виньетирования. Впоследствии при работе камеры снимок попиксельно делят на этот профиль, и эффект исчезает. Такая калибровка называется калибровкой по белому (плоскому) полю.

Дебайеринг
И вот, наконец, после избавления от битых пикселей, тёмного тока и виньетирования, мы получили нормальное изображение, однако оно все ещё серое. Напомню, пока это значения в пикселях, каждый из которых был накрыт собственным цветным фильтром согласно байеровскому паттерну.
Байеровские паттерны
То, как мы должны извлекать цвета, напрямую зависит от типа паттерна — и их обзор достоин отдельной статьи. Выше я уже приводил изображение самого популярного паттерна, который можно встретить в большинстве камер. Его главной проблемой является то, что фильтры существенно сокращают количество света, долетающего до сенсоров.
Чтобы смягчить эту проблему, коллеги из компании Kodak предложили паттерн, содержащий не только синие, зеленые и красные фильтры, но еще и прозрачные. Такой приём действительно позволяет улавливать больше света, и, по задумке создателей, увеличивать соотношение сигнал/шум.

Очевидный минус такой схемы — меньшая плотность пикселей, несущих информацию о цвете, а не только о его интенсивности. Другая проблема связана с контрастом значений между белыми и цветными пикселями. Оказалось, что современные сенсоры справляются с этим не всегда хорошо: появляются эффекты взаимного зашумления (crosstalk). Эти паразитные эффекты частично нивелируют ценность подхода, поэтому большого распространения такие маски не получили.
Ещё один способ, который практикуют в Fujifilm, — это паттерны с попарными пикселями, одни из которых работают с одной экспозицией, а другие с удвоенной (это можно настраивать). Объединяя эти изображения, можно реализовать HDR‑улучшение на аппаратном уровне.

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

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

Эта идея достаточно разумна в предположении, что у нас не сильно меняется значение каждого цвета на изображении, и соседние пиксели должны быть друг к другу близки. К сожалению, это не всегда так. Если оказывается, что пиксель располагается на какой‑то текстурированной точке сцены или на какой‑то границе, то такой подход приведет к размытию границ.
С этим тоже можно справиться с помощью различных модификаций. Например, мы может задать условие для интерполяции: если вдоль одного из направлений наблюдается резкий скачок данного цвета, то алгоритм восстанавливает его лишь по другому направлению.

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

Но и на этом конвейер не закончится, ведь нам ещё нужно провести обширную программную обработку сырых изображений, чтобы улучшить их. Но всё это мы рассмотрим в следующих статьях!
EOShipnyagov
Как раз недавно приобрел Fujifilm X T-5 с их x-trans`ом. Забавно, что у компании есть среднеформатные камеры и кропы, фуллфреймов нет. Также интересно было бы увидеть сырую картинку с матриц (до каких либо преобразований) профессиональных камер и с камер тововых смартфонов вроде Xiaomi 15 ultra (где, вроде как, дюймовый сенсор)