Вычислительная Фотография
Будущее фотографии — это код
04 июня 2019 :: 184 комментария :: 146515 просмотров :: 7998 слов

Вышла версия статьи на английском

Сегодня ни одна презентация смартфона не обходится без облизывания его камеры. Каждый месяц мы слышим об очередном успехе мобильных камер: Google учит Pixel снимать в темноте, Huawei зумить как бинокль, Samsung вставляет лидар, а Apple делает самые круглые в мире уголочки. Мало где сейчас так жирно текут инновации.

Зеркалки, при этом, как будто трутся на месте. Sony ежегодно осыпает всех новыми матрицами, а производители лениво обновляют последнюю цифру версии и продолжают лениво нюхать кокс в сторонке. У меня на столе лежит зеркалка за $3000, но в путешествия я беру айфон. Почему?

Как говорил классик — я вышел в интернет с этим вопросом. Там обсуждают какие-то «алгоритмы» и «нейросети», понятия не имея как конкретно они влияют на фотографию. Журналисты громко зачитывают количество мегапикселей, блогеры хором пилят проплаченные анбоксинги, а эстеты обмазываются «чувственным восприятием цветовой палитры матрицы». Всё как обычно.

Пришлось сесть, потратить половину жизни и самому во всём разобраться. В этой статье я расскажу что узнал.

📔 Скачать pdf, epub, mobi
удобно для офлайн-чтения
🤦‍♀️ Бекстейджи ❤️ Лайк

Данный пост писался в сотрудничестве с Георгием Джеджея, чью версию поста читайте у него в блоге. Он рассматривает тему со стороны настоящего фотографа, а не неотёсанного технаря типа меня. Кому интересна практическая сторона фотографии и насрать на эти мерзкие технологии — го туда.

Начнём. Но сначала минутка капитализма.

💰 Спонсоры статьи

🤖 Специализация Data Science

Data Science сейчас в моде. В SkillFactory запустили по нему целую специализацию, где преподаватели делятся тонкостями, про которые не написано ни в одном учебнике. В программе блок обучения Python, повторение матана, статистики и теорвера, Machine Learning, Data Engineering, нейронные сети и менеджмент для дата-саентиста. По промокоду VAS3K будет скидка 10%.

🚀 Курс «Машинное обучение и анализ данных»

Даже вычислительная фотография сегодня во многом опирается на методы машинного обучения. Поэтому ребята из ФРОО с преподавателями Яндекса делают курс, на котором обучают специальности с нуля — от азов питона и линейной алгебры до рекомендательных систем и нейросеток для анализа изображений. По промокоду OLEG скинут 5 тысяч рублей.

По вопросам спонсорства здесь пишите на me@vas3k.ru

Что такое вычислительная фотография?

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

Пионер вычислительной фотографии, профессор Стенфорда Marc Levoy (он же сейчас отвечает за камеру в Google Pixel) приводит другое определение — набор методов компьютерной визуализации, улучшающих или расширяющих возможности цифровой фотографии, при использовании которых получается обычная фотография, которая не могла технически быть снята на данную камеру традиционным способом. В посте я придерживаюсь именно его.

Итак, во всём были виноваты смартфоны.

У смартфонов не было выбора, кроме как дать жизнь новому виду фотографии — вычислительной

Их маленькие шумные матрицы и крохотные несветосильные объективы по всем законам физики должны были приносить только боль и страдание. Они и приносили, пока их разработчики не догадались хитро использовать их сильные стороны, чтобы побороть слабые — быстрые электронные затворы, мощные процессоры и софт.

Большинство громких исследований в области вычислительной фотографии приходятся на 2005-2015 года, что в науке считается буквально вчера. Прямо сейчас на наших глазах и в наших карманах развивается новая область знаний и технологий, которой никогда не было.

Вычислительная фотография — это не только селфи с нейро-боке. Недавняя фотография черной дыры не появилась бы на свет без методов вычислительной фотографии. Чтобы снять такое фото на обычный телескоп, нам бы пришлось сделать его размером с Землю. Однако, объединив данные восьми радиотелескопов в разных точках нашего шарика и написав немного скриптов на питоне, мы получили первую в мире фотографию горизонта событий. Для селфи тоже сгодится.

📝 Computational Photography: Principles and Practice
📝 Marc Levoy: New Techniques in Computational photography

По ходу рассказа я буду вставлять такие жирные ссылки. Они ведут редкие статьи-бриллианты 📝 или видеоролики 🎥, которые позволяют углубиться в тему и понять куда копать дальше, если вдруг вам стало невыносимо интересно. Я же физически не могу рассказать обо всём в одном посте

Начало: цифровая обработка

Представим, что мы вернули 2007-й. Наша мама — анархия, а наши фотографии — шумные 0.6 Mpx джипеги, снятые на скейтборд. Примерно тогда у нас появляется первое непреодолимое желание нафигачить на них пресетов, чтобы скрыть всратость мобильных матриц. Не будем себе отказывать.

Матан и инстаграм

С выходом инстаграма все помешались на фильтрах. Как человек, который в своё время реверс-инжинирил X-Pro II, Lo-Fi и Valencia в, конечно же, исследовательских (кек) целях, я всё еще помню, что состояли они из трёх компонентов:

  • Настроек цвета (Hue, Saturation, Lightness, Contrast, Levels, и.т.д.) — простых цифровых коэффициентов, в точности как в любых пресетах, которыми фотографы пользовались с древних времен.

  • Карты маппинга оттенков (Tone Mapping) — вектора значений, каждое из которых говорило нам «красный цвет с оттенком 128 надо превратить в оттенок 240». Часто его представляли в виде однопиксельной картинки, примерно такой. Это пример для фильтра X-Pro II.

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

Современные фильтры недалеко ушли от этой тройки, лишь стали чуть сложнее по математике. С появлением аппаратных шейдеров и OpenCL на смартфонах их быстро переписали под GPU и это считалось дико круто. Для 2012 года, конечно. Сегодня любой школьник может сделать такое же на CSS и ему всё равно не перепадёт на выпускном.

Однако, прогресс фильтров сегодня не остановился. Ребята из Дехансера, например, отлично упарываются по нелинейным фильтрам — вместо пролетарского тон-маппинга они используют более сложные нелинейные преобразования, что по их словам открывает куда больше возможностей. Следите за их блогом, кому интересно.

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

Автоматика и мечты о кнопке «шедевр»

Когда все привыкли к фильтрам, мы начали встраивать их прямо в камеры. История скрывает кто именно из производителей был первым, но чисто для понимания как давно это было — в iOS 5.0, которая вышла аж в 2011 году, уже был публичный API для Auto Enhancing Images. Одному только Джобсу известно сколько он ещё использовался до открытия на публику.

Автоматика делала то же, что и каждый из нас, открывая фотку в редакторе — вытягивала провалы в свете и тенях, наваливала сатурейшена, убирала красные глаза и фиксила цвет лица. Пользователи даже не догадывались, что «драматически улучшенная камера» в новом смартфоне была лишь заслугой пары новых шейдеров. До выхода Google Pixel и начала хайпа по вычислительной фотографии оставалось еще пять лет.

ML Enhance в пиксельматоре

Сегодня же бои за кнопку «шедевр» перешли на поле машинного обучения. Наигравшись с тон-маппингом все ринулись тренировать CNN'ы и GAN'ы двигать ползуночки вместо пользователя. Иными словами, по входному изображению определять набор оптимальных параметров, которые приближали бы данное изображение к некому субъективному пониманию «хорошей фотографии». Реализовано в том же Pixelmator Pro и других редакторах. Работает, как можно догадаться, не очень и не всегда. По ссылкам ниже можно почитать статьи, взять датасеты и потренироваться самому.

📝 Image Enhancement Papers
📝 DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks

Стекинг
90% успеха мобильных камер

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

Технически, телефон может снимать фото со скоростью видео, а видео с разрешением фото, но всё упирается в скорость шины и процессора. Потому всегда ставят программные лимиты.

Сам по себе стекинг с нами давно. Еще деды ставили плагины на Photoshop 7.0 чтоб собрать несколько фотографий в вырвиглазный HDR или склеить панораму 18000x600 пикселей и... на самом деле никто так и не придумал что с ними делать дальше. Богатые времена были, жаль дикие.

📝 dmitry_novak: Разные виды стекинга. Уменьшение шумов с помощью стекинга средствами Photoshop

Сейчас мы стали взрослые и называем это «эпсилон-фотографией» — когда изменяя один из параметров камеры (экспозицию, фокус, положение) и склеивая полученные кадры мы получаем нечто, что не могло быть снято одним кадром. Но это термин для теоретиков, на практике же прижилось другое название — стекинг. Сегодня по факту на нём строится 90% всех инноваций в мобильных камерах.

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

Когда вы нажимаете кнопку «снять фото» — оно на самом деле уже снято, камера просто берет последнее фото из буфера

Сегодня так работает любая мобильная камера. По крайней мере во всех флагманах не с помоек. Буферизация позволяет реализовать не просто нулевую задержку затвора, о которой так давно мечтали фотографы, а даже отрицательную — при нажатии на кнопку, смартфон заглядывает в прошлое, выгружает 5-10 последних фото из буфера и начинает неистово анализировать их и клеить. Больше не нужно ждать пока телефон нащелкает кадров для HDR или ночного режима — просто забирай их из буфера, пользователь даже не узнает.

Кстати, именно с помощью отрицательного лага затвора реализовано Live Photo в айфонах, а в HTC подобное было еще в 2013-м году под странным названием Zoe.

Стекинг по экспозиции
HDR и борьба с перепадами яркости

Способны ли матрицы фотоаппаратов фиксировать весь диапазон яркости, доступный нашему глазу — старая горячая тема для срачей. Одни говорят нет, ведь глаз способен видеть до 25 f-стопов когда даже из топовой фуллфрейм-матрицы можно вытянуть максимум 14. Другие называют сравнение некорректным, ведь глазу помогает мозг, автоматически подстраивая зрачок и достраивая изображение своими нейросетями, а моментальный динамический диапазон глаза на самом деле не больше 10-14 f-стопов. Оставим эти споры лучшим диванным мыслителям интернета.

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

Решение давно придумано — расширять диапазон яркости с помощью HDR (High-dynamic-range). Нужно снять несколько кадров с разной выдержкой и склеить их вместе. Чтобы один был «нормальный», второй посветлее, третий потемнее. Берём тёмные места из светлого кадра, пересветы заполняем из тёмного — профит. Остаётся лишь решить задачу автоматического брекетинга — насколько сдвинуть экспозицию каждого кадра, чтобы не переборщить, но с определением средней яркости картинки сейчас справится второкурсник технического вуза.

На последних iPhone, Pixel и Galaxy режим HDR вообще включается автоматически, когда нехитрый алгоритм внутри камеры определяет, что вы снимаете что-то контрастное в солнечный день. Можно даже заметить как телефон переключает режим записи в буфер, чтобы сохранять сдвинутые по экспозиции кадры — в камере падает fps, а сама картинка становится сочнее. Момент переключения хорошо заметен на моём iPhone X, если снимать на улице. Присмотритесь к своему смартфону в следующий раз тоже.

Минус HDR с брекетингом по экспозиции — его непроходимая беспомощность в плохом освещении. Даже при свете комнатной лампы кадры получаются такими тёмными, что кумплюктир не может их выровнять и склеить. Для решения проблемы со светом в 2013-м Google показал иной подход к HDR в вышедшем тогда смартфоне Nexus. Он использовал стекинг по времени.

Стекинг по времени
Симуляция длинной выдержки и тайм-лапс

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

Такие рисунки звёзд всегда клеили из нескольких фото. Так было проще контролировать экспозицию

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

Длинная выдержка в три клика

Вернёмся к гуглу с его ночным HDR. Оказалось, с помощью брекетинга по времени можно реализовать неплохой HDR в темноте. Технология впервые появилась в Nexus 5 и называлась HDR+. Остальные же телефоны на Android получили её как бы в подарок. Технология до сих пор настолько популярна, что ей хвалятся даже в презентации последних Pixel.

Работает HDR+ достаточно просто: определив, что вы снимаете в темноте, камера выгружает из буфера 8-15 последних фотографий в RAW чтобы наложить их друг на друга. Таким образом алгоритм собирает больше информации о тёмных участках кадра чтобы минимизировать шумы — пиксели, где по каким-то причинам камера не смогла собрать всю информацию и лажанула.

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

📝 HDR+: Low Light and High Dynamic Range photography in the Google Camera App

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

Реклама Pixel, прославляющая HDR+ и Night Sight

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

Так появился Night Sight — технология «ночной фотографии» в Pixel 2 и 3. В описании так и говорят: «machine learning techniques built on top of HDR+, that make Night Sight work». По сути это является автоматизацией этапа цветокоррекции. Машину обучили на датасете фоточек «до» и «после», чтобы из всякого набора тёмных кривых фотографий делать одну красивую.

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

Вдобавок, в Night Sight используется вычисление вектора движения объектов в кадре, чтобы нормализовать смазы, которые обязательно получатся на длинной выдержке. Так смартфон может взять четкие части с других кадров и приклеить.

📝 Night Sight: Seeing in the Dark on Pixel Phones
📝 Introducing the HDR+ Burst Photography Dataset

Стекинг по движению
Панорама, супер-зум и борьба с шумами

Панорама — популярное развлечение жителей сельской местности. Истории пока не известно случаев, чтобы сосиско-фотка оказалась бы интересна кому-то, кроме её автора, но не упомянуть её нельзя — для многих с этого вообще начался стекинг.

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

📝 A Practical Guide to Creating Superresolution Photos with Photoshop

Другой, уже более интересный подход — Pixel Shifting. Некоторые беззеркалки типа Sony и Olympus начали поддерживать его еще с 2014-го, но клеить результат всё равно заставляли руками. Типичные инновации больших камер.

Смартфоны же преуспели здесь по смешной причине — когда вы снимаете фото, ваши руки трясутся. Эта на первый взгляд проблема легла в основу реализации нативного супер-разрешения на смартфонах.

Чтобы понять как это работает, надо вспомнить как устроена матрица любого фотоаппарата. Каждый её пиксель (фотодиод) способен фиксировать только интенсивность света — т.е. количество залетевших фотонов. Однако, пиксель не может измерить его цвет (длину волны). Чтобы получить RGB-картинку, пришлось и здесь нагородить костылей — накрыть всю матрицу сеткой разноцветных стёклышек. Самая популярная её реализация называется фильтром Байера и используется сегодня в большинстве матриц. Выглядит как на картинке ниже.

Получается, что каждый пиксель матрицы ловит только R, G или B-компоненту, ведь остальные фотоны нещадно отражаются фильтром Байера. Недостающие же компоненты он узнаёт тупым усреднением значений соседних пикселей.

Зелёных ячеек в фильтре Байера больше — так сделали по аналогии с человеческим глазом. Получается, что из 50 миллионов пикселей на матрице зеленый цвет будет улавливать 25 млн, красный и синий — по 12.5 млн. Остальное будет усреднено — этот процесс называется дебайеризация или демозаик, и это такой жирный смешной костыль, на котором всё держится.

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

Другие типы матриц (типа Foveon) пока ну как-то совсем не прижились. Хотя некоторые производители пытаются использовать матрицы без фильтра Байера для улучшения резкости и динамического диапазона.

Когда света мало или детали объекта совсем крошечны, мы теряем кучу информации потому что фильтр Байера нагло отсекает фотоны с неугодной длиной волны. Поэтому и придумали делать Pixel Shifting — смещать матрицу на 1 пиксель вверх-вниз-вправо-влево чтобы поймать их все. Фотография при этом не получается в 4 раза больше, как может показаться, просто процессор использует эти данные чтобы точнее записать значение каждого пикселя. Усредняет не по соседям, так сказать, а по четырём значениям самого себя.

Тряска же наших рук при съемке фото на телефон делает этот процесс естественным следствием. В последних версиях Google Pixel эта штука реализована и включается всегда, когда вы используете зум на телефоне — называется Super Res Zoom (да, мне тоже нравится их беспощадный нейминг). Китайцы тоже скопировали его в свои ляофоны, хотя получилось немного хуже.

📝 SIGGRAPH 2019: Handheld Multi-frame Super-resolution
📝 See Better and Further with Super Res Zoom on the Pixel 3

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

Стекинг по фокусу
Любая глубина резкости и рефокус в пост-продакшене

Метод пришел из макросъемки, где маленькая глубина резкости всегда была проблемой. Чтобы весь объект был в фокусе приходилось делать несколько кадров со сдвигом фокуса вперёд-назад, чтобы потом сшить их в один резкий. Тем же методом часто пользовались любители съемки ландшафтов, делая передний и задний план резкими как понос.

Стекинг по фокусу в макро. По-другому такое не снять

Всё это тоже переехало и на смартфоны, правда без особого хайпа. В 2013-м выходит Nokia Lumia 1020 с «Refocus App», а в 2014 и Samsung Galaxy S5 с режимом «Selective Focus». Работали они по одной и той же схеме: по нажатию на кнопку они быстро делали 3 фотографии — одну с «нормальным» фокусом, вторую со сдвинутым вперед и третью со сдвинутым назад. Программа выравнивала кадры и позволяла выбрать один из них, что преподносилось как «настоящее» управление фокусом в пост-продакшене.

Никакой дальнейшей обработки не было, ведь даже этого простого хака было достаточно чтобы вбить еще один гвоздь в крышку Lytro и аналогов с их честным рефокусом. Кстати, поговорим о них (мастер переходов 80 lvl).

Вычислительные матрицы
Световые поля и пленоптика

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

🎥 The Science of Camera Sensors

Мы уже давно пытаемся изобрести что-то получше. Много попыток и исследований в этой области гуглится по запросу «computational sensor» или «non-bayer sensor», и даже пример с Pixel Shifting выше можно отнести к попыткам улучшения матриц с помощью вычислений.

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

Чтобы вы не уснули от предвкушения надвигающихся сложных слов, вброшу инсайд, что камера последних Google Pixel как раз «немного» пленоптическая. Всего на два пикселя, но даже это позволяет ей вычислять честную оптическую глубину кадра и без второй камеры как у всех.

Пленоптика — мощное оружие, которое пока еще не выстрелило. Ниже положу ссылку на одну из моих любимых недавних статей о возможностях пленоптических камер и нашем с ними будущем, откуда я взял позаимствовал примеры.

📝 Вычисляемое видео в 755 мегапикселей: пленоптика вчера, сегодня и завтра

Пленоптическая камера
Скоро будет каждая

Придумана в 1994-м, собрана в Стенфорде в 2004. Первая потребительская камера — Lytro, выпущена в 2012-м. С похожими технологиями сейчас активно экспериментирует VR-индустрия.

От обычной камеры пленоптическая отличается лишь одной модификацией — матрица в ней накрыта сеткой из линз, каждая из которых покрывает несколько реальных пикселей. Как-то так:

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

🎥 Видео без звука, где показан процесс редактирования RAW-файла

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

Веселье же на этом только начинается. Если взять другой пиксель из каждого кластера и снова склеить картинку — получится снова нормальная фотография, только как будто снятая со сдвигом на один пиксель. Таким образом, имея кластеры 10x10 пикселей, мы получим 100 изображений предмета с «немного» разных точек.

Больше размер кластера — больше изображений, но меньше разрешение. В мире смартфонов с 41-мегапиксельными матрицами мы хоть и можем немного пренебречь разрешением, но у всего есть предел. Приходится сохранять баланс.

📝 plenoptic.info — сайт о пленоптике с примерами кода на питоне

Окей, мы собрали пленоптическую камеру, и что это нам даёт?

Честный рефокус

Фича, о которой жужжали все журналисты в статьях про Lytro — возможность честной корректировки фокуса в пост-продакшене. Под честной имеется в виду, что мы не применяем всякие алгоритмы деблюринга, а используем исключительно имеющиеся под рукой пиксели, выбирая или усредняя их из кластеров в нужном порядке.

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

Например, чем дальше находится кластер от места падения оригинального луча, тем более этот луч получается в расфокусе. Потому что оптика. Чтобы получить смещённое по фокусу изображение, нам лишь надо выбрать пиксели на нужном нам удалении от оригинального — либо ближе, либо дальше.

Картинку надо читать справа налево — мы как бы восстанавливаем изображение, зная пиксели на матрице. Сверху получаем чёткий оригинал, снизу — вычисляем то, что было за ним. То есть вычислительно сдвигаем фокус

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

Карта глубины и 3D с одной камеры

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

Недавно Google купил и убил Lytro, но использовал их технологии для своего VR и... для камеры в Pixel. Начиная с Pixel 2 камера впервые стала «немного» пленоптической, правда с кластерами всего по два пикселя. Это дало возможность гуглу не ставить вторую камеру как все остальные ребята, а вычислять карту глубины исключительно по одной фотографии.

Картинки, которые видят левый и правый субпиксель камеры Google Pixel. Самая правая анимирована для наглядности (придётся всмотреться)

Карта глубины дополнительно обрабатывается нейросетками чтобы блюр фона был более равномерным

📝 Portrait mode on the Pixel 2 and Pixel 2 XL smartphones

Карта глубины строится по двум кадрам, сдвинутых на один суб-пиксель. Этого вполне хватает, чтобы вычислить бинарную карту глубины и отделить передний план от заднего чтобы размыть его в модном нынче боке. Результат такого расслоения еще сглаживается и «улучшается» нейросетями, которые натренированы улучшать карты глубины (а не блюрить, как многие думают).

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

Нарезка на слои и объекты

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

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

Из приходящих на ум примеров применения: вырезать деревья между камерой и объектом или удалять падающие конфетти, как на видео ниже.

«Оптическая» стабилизация без оптики

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

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

Больше матрица и объектив — больше окно для движений — больше возможностей — больше озоновых дыр от обеспечения всего этого цирка электричеством и охлаждением. Еее, технологии!

Борьба с фильтром Байера

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

В статьях это называют «вычисляемым супер-разрешением», но я бы тут снова засомневался — ведь по сути мы сначала уменьшаем реальное разрешение матрицы в те самые десятки раз, чтобы потом как бы гордо его восстановить. Чтобы такое кому-то продать, придётся сильно постараться.

Хотя технически оно всё равно интереснее, чем дрожать матрицей в приступе pixel shifting'а.

Вычисляемая форма диафрагмы (боке)

Любители снимать боке-сердечки здесь будут в восторге. Раз уж мы умеем управлять рефокусом, можно пойти и дальше — брать лишь некоторые пиксели из расфокусированного изображения, а другие из обычного. Так можно получить диафрагму любой формы на радость фотопабликам.

Много других плюшек для видео

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

🎥 Watch Lytro Change Cinematography Forever

Световые поля (Light Field)
Не столько фотография, сколько VR

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

Разберёмся простым языком что такое световое поле и зачем оно нам.

Любая традиционная фотография двумерна — где луч вошел в объектив, там и загорелся пиксель на фотографии. Камере насрать откуда этот луч пришел — случайно упал сбоку или отразился от задницы прекрасной дамы. Фотография фиксирует только точку пересечения луча с поверхностью матрицы.

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

Математических моделей световых полей дофига. Эта — одна из самых наглядных

Световое поле по сути визуально описывает пространство вокруг. Любую фотографию в рамках этого пространства мы теперь можем спокойно вычислить математически. Точка съемки, глубина резкости, диафрагма — всё это тоже вычислимо.

Мне тут нравится проводить аналогию с городом. Фотография — это как путь от дома до ларька с пивком, который вы помните наизусть, а световое поле — это карта всего города. Имея карту, мы можем вычислить в ней любой маршрут из точки А в Б. Точно так же мы можем вычислить любую фотографию, зная световое поле.

Для простой фотографии такая штука — оверкилл, но на сцену медленно выползает VR. В нём световые поля являются одним из перспективных направлений. Слепок светового поля позволит рассмотреть объект в виртуальной реальности из любой точки пространства. Больше не надо строить 3D-модель комнаты, чтобы походить по ней — достаточно «всего-лишь» записать все лучи света в этой комнате. Всего-лишь, ага. Над тем и бьёмся.

📝 Google AR and VR: Experimenting with Light Fields

Вычислительная оптика

Под оптикой мы с ребятами из Стенфорда имеем в виду не только линзы и объективы, но и всё, что между объектом и матрицей — даже диафрагму и затвор. Фотоснобы здесь будут в ярости.

Многокамерность

В 2014 году вышел HTC One (M8) и стал первым смартфоном с двумя камерами и весьма комичными возможностями вычислительной фотографии типа замены фона на дождь или блёстки как в лучших пабликах Одноклассников.

Началась гонка. Все стали ставить два, три, пять объективов в свои смартфоны, пытаясь попутно выяснить что лучше — телевик или ширик. В итоге дошли до появления Light L16, в которой было, как можно догадаться, аж 16 объективов.

Light L16

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

Телевик-перископ, P30 Pro

Среди её 16 объективов были ширики на 28 мм и телевики на 70 и 150 мм. Каждый телевик был перископическим, то есть свет не напрямую шёл через линзу на матрицу, а отражался зеркалом вглубь корпуса. Такое расположение позволяло впихнуть достаточно длинный телевик в плоский корпус, а не торчать из него трубой. Тот же финт недавно провернули китайцы в Huawei P30 Pro.

Каждое фото L16 снималось одновременно на 10 и более объективов, а потом камера их хитро склеивала чтобы получить 52 Мп изображение. По задумке авторов, одновременная съемка на несколько объективов позволяла поймать такое же количество света, как и в большой объектив зеркалки, но при этом хитро обойти все законы оптики и необходимость в длинной подзорной трубе.

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

В марте 2018 года Light L16 вышла на рынок и... с треском провалилась. Технологически она действительно находилась в будущем, но при цене в $2000 не имела никакой оптической стабилизации, из-за чего фотографии постоянно получались смазанными (не удивительно при линзах в 70-150 мм), автофокус был слишком медленный, склейка из нескольких кадров давала странные перепады резкости, а в темноте камера вообще была бесполезна, потому что в ней не было алгоритмов типа гугловского HDR+ или Night Sight. Современные мыльницы за $500 с поддержкой RAW уделывали её со старта, потому продажи быстро прекратили после первой партии.

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

🎥 Light L16 Review: Optical Insanity

Некруглые диафрагмы
(Coded Aperture)
Карта глубины по одной камере, деблюр

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

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

Как это всё работает?

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

Математики называют такие операции свёрткой (convolution) и обратной свёрткой (deconvolution). Запомним эти слова, ведь они круто звучат!

Технически, мы можем развернуть любую свёртку обратно, если знаем ядро. Но это математики так говорят. В реальности же у нас ограниченные диапазоны матрицы и неидеальные линзы объективов, из-за чего все наши «боке» далеки от математического идеала и полностью восстановить их невозможно.

📝 Владимир Южиков: Восстановление расфокусированных и смазанных изображений

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

Проблема в том, что обычная круглая диафрагма остаётся круглой на любом уровне размытия. Наше ядро всегда примерно одинаковое — это стабильно, но не очень полезно. В случае с кодированной диафрагмой, лучи с разной степенью расфокуса будут закодированы с разным ядром. Читатели с IQ > 150 уже догадались что будет дальше.

Остаётся лишь одна проблема — понять с каким ядром закодирована каждая из областей изображения. Можно попробовать это сделать руками, примеряя разные ядра и смотря где свёртка получается точнее, но это не наш путь. Давным давно человеки изобрели для этого преобразование Фурье! Чтобы не насиловать людей матаном, приложу ссылку на моё любимое его объяснение для тех, кому это вообще интересно.

🎥 But what is the Fourier Transform? A visual introduction

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

А так как это форма кодированной диафрагмы всегда разная в зависимости от расстояния до объекта — мы можем вычислить это расстояние чисто математически, используя только один простой кадр, снятый на обычную матрицу!

Применив операцию обратной свёртки по этому ядру, мы можем восстановить разблюренные области изображения. Вернуть все разбросанные пиксели на место, так сказать.

Сверху справа как раз показано ядро свертки

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

Минусом кодирующих диафрагм является потеря света и появление шумов, а ими мы всё еще не можем пренебрегать. Появление же лидаров и достаточно точных ToF-камер вообще свело на нет все идеи использования кодирующих диафрагм в потребительских гаджетах. Если вы где-то их встречали — напишите в комментах.

📝 Image and Depth from a Conventional Camera with a Coded Aperture
📝 Coded Aperture. Computational Photography WS 07/08
🎥 Coded aperture projection (SIGGRAPH 2008 Talks)

Фазовое кодирование
(Phase Coding, Wavefront Coding)

Согласно последним ГОСТам, свет — наполовину волна. Кодируя диафрагму, мы управляли прозрачностью линзы, что в переводе на волновой язык означает управляли его амплитудой. Кроме амплитуды есть фаза и её тоже можно кодировать.

Делают это с помощью дополнительной линзы, которая переворачивает фазу проходящего через неё света. Как на обложке Pink Floyd, да.

Дальше всё работает как в любом другом оптическом кодировании. Разные области изображения оказываются закодированы по-разному, а мы можем их алгоритмически распознать и как-то пофиксить. Например, сдвинуть фокус.

Плюс фазового кодирования — мы не теряем в яркости. Все фотоны честно долетают до матрицы, в отличии от кодированной диафрагмы, где они стукаются о непроходимые её части (ведь во второй половине ГОСТа, свет — это частица).

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

📝 Computational Optics by Jongmin Baek, 2012

Кодированный затвор
(Flutter Shutter)
Борьба со смазом движения

Последнее, что мы можем закодировать на пути света до матрицы — затвор. Вместо привычного цикла «открыли — подождали — закрыли» будем несколько раз двигать затвором за кадр, чтобы в сумме получить нужную выдержку. Почти как в мультиэкспозиции — когда один кадр экспонируется несколько раз.

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

Можно снять тот же кадр в несколько движений затвора — чтобы автомобиль был размазан не равномерно, а как бы лесенкой с заранее известным шагом. Конечно, если он не валит со скоростью заниженной четырки с района, но этот вариант наука игнорирует.

Получается, мы закодировали смаз случайной последовательностью открытий-закрытий затвора и можем попытаться раскодировать его с помощью той же обратной свёртки. Оказывается, это работает в разы лучше, чем пытаться так же вернуть равномерно смазанные от длинной выдержки пиксели.

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

📝 Coded exposure photography: motion deblurring using fluttered shutter
🎥 Flutter Shutter Coded Filter

Вычислительное освещение

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

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

Наши движения к вычислительному освещению пока еще хаотичны и мало кому понятны.

Программируемая вспышка

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

Для начала все перешли на Dual LED вспышки — сочетание оранжевого и синего светодиодов, яркость которых пытается подстроиться под цветовую температуру кадра. В айфонах это зовут True Tone и управляет им небольшой кусок кода по хитрой формуле. Даже разработчикам не дают ими управлять.

📝 Demystifying iPhone’s Amber Flashlight

Когда в смартфонах появились датчики глубины и нейросети, мы захотели решить ими главную проблему всех вспышек — пересвеченные лица и вообще передний план. Каждый сделал это по-своему. В айфонах появился Slow Sync Flash — камера искусственно увеличивала выдержку в темноте. В Google Pixel и других андроидах — алгоритм объединения кадров со вспышкой и без. Телефон быстро делает две фотографии — со вспышкой и без. Части кадра, находящиеся близко к камере, берутся из кадра без вспышки, а подсвеченные детали фона из кадра со вспышкой. Получается примерно равномерное освещение.

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

📝 Non-photorealistic Camera:
Depth Edge Detection and Stylized Rendering using Multi-Flash Imaging

Кодированный свет
(Lightstage)

Кодировать свет всегда было проще всего. Мы можем хоть сотню раз за кадр менять освещение и всё равно даже не приблизимся к скорости его скорости. Поэтому уже в далёком 2005-м вот эти ребята придумали Lighstage.

🎥 Демо-видео Lighstage

Суть метода в том, чтобы в каждом кадре реального 24 fps'ового кино успеть подсветить объект со всех возможных сторон. Для этого используется 150+ ламп и высокоскоростная камера, которая на один кадр фильма снимает сотню кадров с разным освещением. Вот так глупо выглядят любые инновации, когда их начинаешь объяснять.

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

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

Лидар и time-of-flight камера

Лидар — устройство, определяющее расстояние до объекта. Сегодняшнему прогрессу в области лидаров мы обязаны дикому хайпу по самоуправляемым автомобилям в последние годы. Видели, наверное, крутящиеся штуки на их крышах — это как раз лидары.

В смартфон лазерный лидар пока не впихнуть, потому сейчас мы обходимся его младшим братом — time-of-flight камерой. Суть работы до нелепости проста: специальная отдельная камера, над которой стоит LED-вспышка. Камера фиксирует как быстро свет достигает объектов и строит по этому карту глубины кадра.

Точность современных ToF-камер — около сантиметра. Последние флагманы Samsung и Huawei используют их для создания карты боке и для лучшей работы автофокуса в темноте. Последнее, кстати, довольно неплохо. Всем бы такое.

Знание точной глубины кадра будет полезно в эпоху наступающей дополненной реальности — пулять лидаром по поверхностям чтобы сделать первчный маппинг в 3D будет куда точнее и проще, чем анализируя изображения камер.

Проекторное освещение
(Projector Illumination)

Чтобы всерьез заняться вычислительным освещением на смартфонах, нам придётся перейти от обычных LED-вспышек к проекторам — любым штукам, умеющим проецировать 2D-картинку на плоскость. Для начала сойдет и простая монохромная сетка.

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

В автомобилях управляемым светом уже лет пять никого не удивишь

Второе, более реальное применение проектора — проецирование невидимой глазу сетки на кадр. С ней можно забить на все эти нейросети для определения глубины — по ней все расстояния до объектов в кадре рассчитываются простейшими алгоритмами компьютерного зрения. Так делали еще во времена Microsoft Kinect, царство ему небесное, и было охеренно.

Естественно, здесь нельзя не вспомнить Dot Projector для Face ID в iPhone X и выше . Это пока наш первый шаг в сторону проекторных технологий, но уже весьма заметный.

Dot Projector в iPhone X

Будущее фотографии
Управление 3D-сценой и дополненная реальность

Время поразмышлять. Судя по происходящему в крупных технологических компаниях, наши ближайшие десять лет будут плотно посвящены дополненной реальности. Это сейчас AR выглядит как игрушка — как способ пощупать трёхмерную вайфу, примерить кроссовки, посмотреть как будет смотреться макияж или тренировать армию США. Завтра мы и не заметим как станем пользоваться AR постоянно. Плотные потоки бабла от Google и Nvidia уже ощущаются.

Для фотографии это означает, что в моду войдёт AR-фото — возможность управлять 3D сценой. Сканировать пространство, как это делают смартфоны с Tango, добавлять в него новые объекты, как в HoloLenz, вот это вот всё. Пусть вас не смущает пока всратая графика современных AR-приложений — как только сюда придут игровые компании с мыльным кинцом, всё станет куда лучше.

Помните как эпично бомбанул Huawei с их фейковым Moon Mode? Для тех, кто пропустил как это работало: если камера хуавея определяла, что вы хотите снять луну на небе, она вклеивала в кадр заранее подготовленную фотографию луны высокого разрешения. Так ведь и правда круче. Настоящий китайский киберпанк. Мы всем интернетом смеялись сильно громче обычного.

Life goal: уметь лить в уши как Huawei

Потом я купил себе новые лёгкие и задумался — а ведь дядька Ляо на сцене был прав. Он дал людям ровно то, что обещано — луна была настоящей, камера позволяла её ТАК снять, а остальные вопросы пишите в спортлото. Ведь если завтра смартфон будет предлагать приклеить красивый закат или синее небо вместо облаков — пять миллионов жителей Петербурга будут в восторге!

В будущем машины будут «дорисовывать» наши фотографии. Так вижу

Уже сейчас в камерах Pixel, Galaxy и других Android-смартфонов есть какой-нибудь глупый AR-режим. В одном можно добавлять модели персонажей из мультиков чтобы сфотографироваться с ними, во втором лепить эмодзи по всей комнате, в третьем наложить маски на лицо как в снапчате.

Всё это лишь наши первые наивные шаги. Сегодня у того же гугла в камере есть Google Lens, который гуглит для вас информацию о любом объекте, на который вы навели камеру. У Samsung то же самое умеет Bixby. Пока эта фичи сделаны только чтобы унижать людей с айфонами, но несложно представить как в следующий раз, когда вы будете делать селфи на фоне Эйфелевой Башни, телефон скажет: знаешь, твоё селфи — полное говно, я вставил на фон нормальную резкую фотку башни с того же ракурса, а тебе там пофиксил причёску и замазал прыщ под губой. Лучше всего сюда подойдет фильтр VSCO L4. Не благодари.

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

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

Фотографии «объективной реальности» будут казаться скучными как фотки семьи за новогодним столом с оливье. Они не умрут, но станут чем-то типа бумажных книг — увлечением эстетов, которые видят в этом особый смысл. «Кому вообще может быть интересно заморачиваться с правильным светом и композицией объектов на сцене, если мой телефон дорисовывает то же самое за меня» — будут недоумевать одни. «Ко-ко-коко-ко» — будут парировать другие.

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

И да, как всегда, всё начнётся с подростков с их «непонятными глупыми увлечениями для дегенератов». Так всегда всё начинается. Как только вы что-то перестаёте понимать — это и есть будущее. Следите за ними.

Современные смартфоны
с точки зрения вычислительной фотографии

Составить чёткую таблицу отличий в камерах смартфонов сложно, потому что из-за огромной конкуренции на рынке, фичи в них появляются практически одновременно. Объективный обзор здесь невозможен, ведь когда какой-нибудь Google анонсирует новый Night Mode, через месяц Samsung копирует его в своей новой прошивке и «объективно» как бы не докопаешься. Потому я здесь не буду объективным.

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

Место для историй о вашем любимом смартфоне

Я взял для сравнения только четыре флагмана, но рынок на этом далеко не заканчивается. У вас есть интересный смартфон, напишите в комментариях к этому блоку о фичах его камеры и своих личных впечатлениях от него (нравится или подумываете сменить на что-то другое). Пожалуйста, без флуда в этом блоке, место для срачей у нас в конце поста.

Заключение

На протяжении истории каждая человеческая технология становилась более совершенной как только переставала копировать живые организмы. Сегодня тяжело представить автомобиль с суставами и мышцами вместо колёс. Самолёты с фиксированными крыльями летают 800+ км/ч — птицы машут и завидуют. Аналогов компьютерному процессору вообще не существует в природе.

Самое интересное — чего нет в этом списке. Матриц фотоаппаратов. Мы до сих пор не придумали ничего лучше, как имитировать структуру глаза. Тот же объектив-хрусталик и набор RGGB-колбочек как у сетчатки.

Компьютерная фотография добавила к этому процессу «мозг» — процессор, который обрабатывает визуальную информацию не просто считывая пиксели через зрительный нерв, но и дополняю картинку на основе своего опыта. Да, сегодня это открывает нам кучу возможностей, но есть подозрение, что мы всё еще пытаемся махать крыльями в перьях вместо того, чтобы пойти изобрести самолёт. Который оставит позади все эти затворы, диафрагмы и фильтры Байера.

Прелесть ситуации в том, что мы даже понятия сегодня не имеем что это будет.

Большинство из нас умрёт, так и не узнав.

И это прекрасно.

Еще? Тогда вот