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









Стилизация и наложение фильтров
Для реализации подобных цветовых преображений используются различные инструменты. Самым универсальным, но одновременно наиболее ресурсоемким методом выступает трехмерная таблица поиска (3D LUT). В таком сценарии каждому исходному цвету пикселя сопоставляется конкретный целевой оттенок, предварительно рассчитанный дизайнерами или разработчиками под почерк определенного бренда техники. LUT обеспечивают максимальную точность и предсказуемость, но требуют значительных вычислительных мощностей и памяти, что затрудняет их использование в мобильных гаджетах.

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

Существуют и двумерные карты цветовых трансформаций. Анализируя изменения внутри RGB-треугольника, можно наглядно увидеть, насколько сильно различаются фирменные стили съемки разных производителей. Например, нейтральный пресет почти не затрагивает цвета, тогда как ландшафтный режим вносит мощные сдвиги в палитру.

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

Хотя этот метод далек от передовых разработок, он стабильно работает даже со сложными сценами. Тем не менее, сегодня в этой сфере доминируют нейросети. Создавать синтетические обучающие выборки для задач denoising очень легко: достаточно взять чистый кадр, искусственно добавить шум и обучить модель восстанавливать оригинал. Современные алгоритмы глубокого обучения успешно справляются с материалом даже с матриц компактных смартфонов. Важным исключением среди традиционных подходов остается алгоритм BM3D, который до сих пор конкурирует со многими нейросетями по качеству.
Цветовые пространства
Очистив кадр от шумов и подчеркнув детали, я перехожу к финализации результата и выбору правильного цветового пространства. Исторически сложившимся стандартом массово остается sRGB, популяризированный Microsoft еще в девяностые годы. Несмотря на свою вездесущность, сегодня он постепенно сдает позиции из-за узкого цветового охвата.

На смену ему приходят более емкие стандарты вроде DCI-P3 от Apple, активно внедряемые и конкурентами в лице Samsung, Huawei и других производителей. Анализируя современные стандарты как для устройств захвата, так и для экранов воспроизведения, я вижу четкую тенденцию к расширению цветового охвата, что позволяет передавать гораздо больше естественных оттенков окружающего мира.

Сжатие в JPEG
Самым распространенным способом сохранения изображений остается классический JPEG, также зародившийся в девяностых годах. Несмотря на появление альтернатив вроде HEIC, этот формат удерживает лидерство благодаря высокой скорости распаковки и универсальности.

Процесс сжатия начинается с конвертации цветового пространства в YCrCb, где яркостный компонент Y отделяется от цветностных составляющих. Учитывая особенности человеческого зрения, которое гораздо острее реагирует на перепады яркости, алгоритм сильнее сжимает информацию о цвете, практически не затрагивая детализацию по свету. Затем картинка делится на блоки 8 на 8 пикселей, квантуется и кодируется методом Хаффмана.

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