Как смартфоны обрабатывают фотографии? Разбор

Берем современный смартфон. Открываем камеру. Фотографируем. И сразу получаем хороший снимок. Вообще ничего не настраивая, вообще не задумываясь, а справится ли эта камера!

Сырой снимок, до обработки всеми алгоритмами, выглядит довольно серо и уныло. Но мы получаем яркий, насыщенный кадр.

Но как мы дошли до жизни чудесной такой, что современные смартфоны делают такие крутые снимки, как по волшебству?  Но это не волшебство…


Сегодня мы поговорим про шесть этапов, которые проходит цифровая фотография прежде, чем превратиться в шедевр в памяти вашего смартфона.

1. Фотоны света


Итак, первый этап. Свет проходит через объектив и попадает на матрицу. И дальше начинается магия… В нашем случае магия будет происходить на флагмане Samsung Galaxy S20 Fan Edition.

Мы знаем, что матрица состоит из миллионов пикселей. В данном случае — 12 Мп. Тут тройная камера: широкоугольная, сверхширокоугольная и трехкратный зум.

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

Смотрите, фотодиод состоит из кремния. А кремний — это материал с интересными свойствами. Например, если подать на него ток, он становится чувствительным к электромагнитному излучению в диапазоне от 400 до 1100 нм. А это как раз, перекрывает видимый человеком спектр излучения. Мы видим длину волны от 380 до 740 нм, а кремний от 400 до 1100 нм. Получается, что кремний видит практически то же самое что и мы, плюс немного инфракрасного излучения.

f1b1a087f05c8b383baa7e142f532e5a.png

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

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

И вот тут есть важный момент. На данном этапе для матрицы важно не растерять ни один фотон света. Чем больше фотонов преобразуется в электроны тем эффективнее работает матрица.

И положа руку на сердце, еще года 3 назад, матрицы были не особо эффективны. Где-то на 10 фотонов вырабатывалось 4–6 электронов. Этот показатель называется квантовой эффективностью и раньше она была 40–60%.

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

47ae57438b898f3b97317ea3593d5a64.png

Это проблему решила компания Samsung представив технологию ISOCELL Plus. По сути, это технология изолированных ячеек. Они со всех сторон пикселя нарастили тонкие стенки, которые полностью изолируют один пиксель от другого.

afc23cca3cdc3f99b089bf52a1c2a14e.png

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

64b0fc8e69e84fb2dca7a9b4bd6b1e91.png

Всё это позволило увеличить долю работающих фотонов (это называется квантовой эффективностью) пикселя до 120%. Это значит, что один фотон света возбуждает больше одного электрона. Отсюда потрясающая светочувствительность матриц ISOCELL Plus.

1814dc3889ae3836c38a1488c114680b.png

К примеру, вот Galaxy S20 Fan Edition, тут стоит на мой взгляд, самый оптимальный сенсор от Samsung — Samsung S5K2LD.

Почему самый оптимальный. Ну смотрите, во-первых разрешение — 12МП?, а больше и не надо. Это ISOCELL Plus. И главное, размер пикселя тут 1.8 мкм! А это очень много…

2. RAW


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

Дело в том, что RAW файлами можно манипулировать как тебе вздумается. Можно поправить баланс белого, вытягивать тени, и даже яркие участки, если повезло. Можно играться с шумоподавлением и прочее.

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

3. Дебайеризация


Третий этап — дебайеризация. Чо это такое?

Мы помним, что кремний реагирует на достаточно широкий спектр света. Но при этом он не различает цвета. Поэтому, чтобы получить цветное изображение на матрицу накладывается сетка цветовых фильтров. Наиболее распространённый вариант компоновки такой сетки — это RGB фильтр Байера: где на каждый синий и красный сектор приходятся два зеленых. Это кстати интересная особенность восприятия нами изображения.

 aad47286f338ba825e862985340b83bc.png

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

8c7787df69659c8d28a24aaed3ee243c.png

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

aec7bb061556782ff954319f7d794650.png

Раньше этот этап был достаточно прямолинейным. Но после появления технологии ISOCELL и подобных производители научились делать очень маленькие пиксели меньше размером, то есть всего меньше одного микрона. И они стали объединять четыре пикселя, такие матрицы называются TetraCell, или даже девять пикселей — это Nonacell — под одним цветовым фильтром. Как в S20 Ultra например.

Это позволило при недостаточном освещении объединять пиксели и получать один суперпиксель, состоящий из четырёх или девяти пикселей. А днем наоборот можно снимать в полном разрешении используя обратный алгоритм дебайеризации.

2bafa4e5030c14be2edf2a3224b31348.png

В этом смартфоне, все основные модули имеют обычную Quad Bayer структуру, а вот фронтальная камера — TetraCell. Потому можно выбирать какой селфи вы хотите сделать — на 8 или на 32 МП.

4.HDR


И вот мы склеили цветной снимок. Думаете на этом все обработки заканчиваются. Нет? они только начинаются. Дальше, для того чтобы повысить динамический диапазон снимка и снизить шум, в бой вступают алгоритмы HDR. Традиционно, есть два способа получения HDR снимка — это либо Image Stacking, либо Image Bracketing. Что это такое?

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

Но есть другой вариант — Image Bracketing. Или на фото жаргоне — вилка по экспозиции. Тут уже делается как минимум 3 снимка, один нормальный, один переэкспонированный, чтобы там были видны детали в тенях, и один недоэкспонированный, чтобы не было засветов. А потом всё это сшивается как Франкенштейн.

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

5. Сегментация и NPU


И вот, у нас получается практически идеальный снимок. И пару лет назад склейка HDR была бы последним этапом. Но, когда в смартфоны стали встраивать нейропроцессоры, всё поменялось. И появился пятый этап — нейронная обработка.

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

Возможности машинного обучения нейропроцессора (NPU) внутри Exynos автоматически обнаруживают объекты в сцене, позволяя процессору обработки изображений (ISP) генерировать и применять определенные параметры съемки, адаптированные к конкретному объекту, благодаря чему качество кадра повышается. В зависимости от того какую сцену или объект он распознал заранее будет подправлены параметры съемки. Если в кадре быстро пробегает собака, камера снизит выдержку, чтобы объект не смазался. Если вы фотографируете человека NPU в процессоре Exynos автоматически подкорректирует баланс белого, чтобы получить идеальный тон кожи, а экспозиция подстроится под лицо. А после того как снимок сделан, NPU сегментирует изображение, чтобы добиться оптимального контраста и текстуры для разных объектов. И всё это происходит в доли секунды благодаря плотной интеграции центрального процессора, ISP и NPU.

Например, при помощи процессора Exynos смартфоны могут не только делать фото с размытым фоном, но и видео, в режиме реального времени.  Также, в зависимости от того на какой объектив было снято изображение, могут появиться дополнительные этапы обработки — вроде исправления искажения на сверхширокоугольном объективе.

А при тридцатикратном зуме, который умеет делать этот смартфон, подключается алгоритмы апскейлинга.

6. Склейка и сохранение финального JPEG


1b1a9ee90a2a902244a5116df4a3dd7f.jpg

И уже после всего это сложного процесса обработок идет сохранение игрового JPEG. И всё это происходит мгновенно!

Но поражает не это, а то что сейчас смартфоны стали настолько мощными, что научились одновременно мгновенно склеивать не просто один супер HDR-снимок. А то что теперь они это делают со всех камер одновременно.

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

Кстати, в смартфонах есть ещё режим стабилизации видео — Super Steady — вообще какая-то дикая фича.

© Habrahabr.ru