Вычислительная фотография Почему телефоны снимают лучше, чем могут
То один, то другой профессионал фотосъемки – особенно это касается журналистов и прочих репортажников – признается со вздохом: «У меня лежит кофр с техникой на тысячи долларов, но он покрылся пылью, потому что снимаю я телефоном». Рынок фототехники рухнул, компания Nikon официально объявила, что отказывается от разработки зеркальных камер. Специализированная техника остается для энтузиастов и студийных фотографов, более 90% изображений создается камерами смартфонов. И это хорошие, качественные, пригодные для профессионального использования изображения. То есть смартфон с крошечной линзочкой и матрицей с ноготок мизинца сравнялся в качестве картинки с камерами, в бленду объективов которых можно насыпать десяток айфонов.
Но как? Неужели учебник оптики пора выкинуть на помойку?
Все это обман!
Уровень качества съемки сейчас принимает львиную долю дифирамбов на презентации очередного топового телефона. Смартфоны снимают в темноте, в движении, против солнца, издалека, в макро, в ультрашир… На селфи, сделанном айфоном, пользователь выглядит на 30% успешнее, на 50% богаче, на 42% счастливее и на пять лет моложе, чем в паспорте!
Откроем маленький секрет – на самом деле смартфоны снимают отвратительно. Крошечная несветосильная оптика, отсутствие физического трансфокатора, ничтожный размер пиксела на маленькой шумной матрице… Помните унылые, мутные мыльные картинки с первых телефонов, ради которых пришлось придумывать фильтры в запрещенной сети квадратных фоток еды? Так вот – ничего с тех пор не изменилось. Телефоны снимают все так же гадко. Физика – жестокая госпожа. Чем меньше объектив и линейный размер матрицы, тем меньше фотонов приходится на пиксел. Чем меньше засветка пиксела – тем хуже соотношение сигнал/шум.
А поскольку физику не обманешь, обманывать приходится пользователя!
Я сам обманываться рад
Еще один шокирующий сюрприз – пользователь, то есть любой человек с глазами, видит вовсе не то, на что он смотрит. Простой пример: когда вы смотрите вперед двумя глазами, то не видите своего носа. А если один глаз закрыть – то видите. Наш мозг достраивает картинку, суммируя изображения с двух глаз и вычитая из них нос. Физически наш орган зрения не слишком совершенен, и это приходится компенсировать «постобработкой» изображения, которую осуществляет «центральный процессор». То, что мы считаем окружающим миром, – синтезированная, а не реальная картинка. Она смоделирована на основе многих лет обучения (поэтому младенцы плохо различают предметы), и мозг подставляет на место наблюдаемого объекта тот, который мы должны, по его мнению, видеть. Например – лица. Мы узнаем людей несмотря на то, что они отрастили бороды, растолстели, сбрили волосы, нанесли макияж и опустили капюшон. Хотя с разных углов и расстояния черты лица видятся совершенно по-разному, наш мозг подставляет вместо реальной картинки синтезированную – сформированный за время общения «усредненный» образ лица. Поэтому претензии женщин: «Ты что, не видишь, что я брови выщипала?» – часто безосновательны.
Не видим. Эту деталь мозг не учитывает как малозначимую для идентификации объекта (Ладно, ладно – мужской мозг!), подставляя вместо реального привычное изображение – с бровями.
Так вот, смартфоны делают ровно то же самое!
Дорисовать реальность
Вычислительная фотография – это совокупность методов постобработки, позволяющих получить изображение такого качества, которое недостижимо традиционным способом. Как я уже писал выше, «традиционным способом» смартфон не может снять приблизительно ничего, поэтому то, что мы увидим потом на экране, не является результатом работы камеры, то есть связки «оптика-матрица». Это результат работы процессора. Фактически программа рисует нам картинку сама. Опираясь на изображение, полученное с сенсора – но и только.
Стекинг – многое в одном
Основа большинства методов вычислительной фотографии, то, что делает ее возможной в принципе, – это так называемый «стекинг», объединение нескольких картинок в одну. Малоизвестный факт – камера смартфона начинает снимать не в тот момент, когда вы тапнули по кружочку на экране, а как только вы запустили ее приложение. И, когда вы таки тапнули, снимать она не перестает. Если вдуматься, то это достаточно очевидно – раз вы видите на экране изображение с камеры, значит она в данный момент снимает. Менее очевидно, что она при этом сохраняет кадры максимального разрешения в циклический буфер, где хранит их пару секунд, замещая новыми. Когда вы нажали на кнопку, камера берет кадры из буфера, добавляет к ним кадры еще нескольких секунд после нажатия и склеивает их в одну картинку. Это и есть стекинг, или, как его еще называют, «эпсилон-фотография».
В эпоху увлечения HDR настоящие большие фотографы водружали свои настоящие большие камеры на штативы, делали несколько кадров с разной экспозицией (так называемый «брэкетинг»), а потом совмещали их при помощи специального ПО в одну картинку. Это позволяло взять светлые участки с одного кадра, темные – с другого, и тем компенсировать недостаточный динамический диапазон матрицы. Буферизация кадров в смартфоне позволяет проделывать это автоматически – когда программа определяет пересвет на отдельных участках матрицы, то отправляет в буфер кадры с разной экспозицией, собирая из них потом HDR. А еще за счет этого буфера реализуется, например, функция Live Photo в iPhone.
Темнота и машина времени
Еще одно использование стекинга – режимы ночной съемки. Маленькая апертура (отношение диаметра входного зрачка объектива к его заднему фокусному расстоянию) камеры смартфона позволяет получить хоть сколько-то фотонов на пиксел только при ярком солнце, но при этом они ухитряются как-то снимать в почти полной темноте. Это реализовано за счет встроенной машины времени. Когда вы выставляете «ночной режим» (или за вас это делает автоматика), то камера отправляет себя в прошлое. Недалеко, кадров на десять из буфера. Тех кадров, которые сделаны до момента съемки. Наложив друг на друга десять темных участков кадра, можно получить в десять раз больше информации об объекте и тем уменьшить шумы. Экспозиция суммируется, имитируя большую выдержку. На классической камере вам пришлось бы держать затвор открытым несколько секунд, причем со штатива, чтобы не размазать кадр «шевеленкой», а у смартфона эти секунды уже в памяти.
Кстати, шевеленки на легоньком телефончике, который люди держат в дрожащих лапках, тоже нет! Как это?
Неподвижность подвижного
Ждать от пользователя, чтобы у него не тряслись ручки, как этого требуют производители фототехники от фотографов, в случае смартфонов бессмысленно – устройство слишком легкое. Поэтому в случае мобильной фотографии этот недостаток сделали преимуществом – за счет «стекинга по движению». Дело в том, что для разделения света, попавшего на матрицу, на RGB-картинку приходится использовать так называемый «фильтр Байера» – композицию разноцветных микростекол разного цвета. Тогда каждый элемент матрицы получает один из трех цветов, а не три сразу, а потом картинка усредняется, «дебайрезируется». Чтобы улучшить этот процесс, в камерах используют Pixel Shifting – смещение матрицы на 1 пиксель в разные стороны для усреднения по четырем пикселам. В смартфоне это не нужно, потому что смещение обеспечивается дрожанием рук пользователя!
Наложение друг на друга немного смещенных фотографий позволяет собрать больше информации о цвете каждого пикселя, а значит, уменьшить шумы, увеличить резкость и поднять разрешение, не увеличивая физическое число пикселов. Кстати, благодаря тому же эффекту обеспечивается цифровой зум смартфонных камер – изображение «приближается» за счет использования нескольких кадров с микросмещением и вычисления итоговой картинки.
Покажем фокус?
В большинстве смартфонов нет реального «железного» трансфокатора – фокус оптической системы фиксированный. И даже там, где «оптический зум» заявлен, возможности его невелики. Засунуть оптику с переменным фокусом в маленькую плоскую коробочку не так-то просто. Однако игры с фокусом – один из главных приемов в фотографии, позволяющий, например, получать «эффект бокэ» – размытие заднего плана на портретах, поэтому в смартфонах для проработки переднего и заднего планов используют «стекинг по фокусу», делая несколько кадров с «нормальным» фокусом, со сдвинутым вперед и со сдвинутым назад. Иногда это делается одной камерой, иногда – несколькими с разным фокусным расстоянием, но еще чаще – фон просто размывается в постобработке после того, как ИИ камеры вычислит, что именно вы снимаете. Поэтому лучше всего такое «программное бокэ» работает на портретах – находить лица на изображениях проще всего.
И это далеко не все приемы, позволяющие не снять картинку, а «вычислить» ее. Но почему она выходит лучше снятой?
Вычисление лучше реальности
Проблема фотографии в том, что объект перед глазами и плоская картинка воспринимаются нашим мозгом по-разному. (Хорошо, что вообще воспринимаются – многие животные не способны узнавать объекты в плоских изображениях.) Фотография – точное отображение, но наш мозг не любит точности. Он привык к «дополненной реальности», которая как раз и является для нас естественной. Так, например, на фотографии нам узнать человека гораздо сложнее, чем в жизни.
Если обычная, классическая фотография старается показать реальность с минимумом искажений, то вычислительная пытается трансформировать ее так, как это привычнее нашему мозгу, то есть учитывает те искажения, которые в реальность вносим мы сами. AI-алгоритмы постобработки подстраиваются под пользователя и дают ему не то, что видит камера, а то, что ожидает увидеть он. Воспроизводит те же искажения, которые вносит в картинку система «глаза – мозг».
Это не фотоаппараты проиграли смартфонам, это реальность проиграла красивой иллюзии.
Использованные источники: