Карта глубины и 3D с одной камеры Одна из самых простых операций в пленоптике — получение карты глубины. Для этого надо просто собрать два разных кадра и расчитать насколько сдвинуты объекты на них. Больше сдвиг — дальше от камеры.
Недавно Google купил и убил Lytro, но использовал их технологии для своего VR и... для камеры в Pixel. Начиная с Pixel 2 камера впервые стала «немного» пленоптической, правда с кластерами всего по два пикселя. Это дало возможность гуглу не ставить вторую камеру как все остальные ребята, а вычислять карту глубины исключительно по одной фотографии.
Картинки, которые видят левый и правый субпиксель камеры Google Pixel. Самая правая анимирована для наглядности (придётся всмотреться)
Карта глубины дополнительно обрабатывается нейросетками чтобы блюр фона был более равномерным Карта глубины строится по двум кадрам, сдвинутых на один суб-пиксель. Этого вполне хватает, чтобы вычислить бинарную карту глубины и отделить передний план от заднего чтобы размыть его в модном нынче боке. Результат такого расслоения еще сглаживается и «улучшается» нейросетями, которые натренированы улучшать карты глубины (а не блюрить, как многие думают).
Фишка еще в том, что пленоптика в смартфонах нам досталась почти бесплатно. Мы и так ставили линзы на эти крошечные матрицы, чтобы хоть как-то увеличить световой поток. В следующих Pixel гугл планирует пойти дальше накрыть линзой четыре фотодиода.
Нарезка на слои и объекты Вы не видите своего носа, потому что мозг склеивает вам итоговое изображение из двух разных глаз. Закройте один и вы заметите с краю целую египетскую пирамиду.
Тот же эффект достижим в пленоптической камере. Собрав сдвинутые относительно друг друга изображения из пикселей разных кластеров, мы сможем посмотреть на предмет как будто с нескольких точек. Прямо как наши глаза. Что открывает нам две крутые возможности: оценку примерного расстояния до объектов, что, как и в жизни, позволяет нам легко отделить передний план от заднего, а так же, если размеры объекта небольшие, позволяет полностью удалить его из кадра. Как нос. Оптически, по-настоящему и без фотошопа.
Из приходящих на ум примеров применения: вырезать деревья между камерой и объектом или удалять падающие конфетти, как на видео ниже.
«Оптическая» стабилизация без оптики Из пленоптического RAW'а можно собрать сотню фотографий, снятых со сдвигом в несколько пикселей по всей площади матрицы. Получается, у нас есть труба диаметром с наш объектив, в рамках которой мы можем свободно перемещать точку съемки, компенсируя тем самым тряску изображения.
Технически, стабилизация всё еще оптическая, потому что нам не надо ничего вычислять — мы просто выбираем пиксели в нужных местах. С другой стороны, любая пленоптическая камера жертвует количеством мегапикселей в угоду пленоптических возможностей, а точно так же работает любой цифровой стаб. То есть бонусом это фичу иметь приятно, но использовать исключительно ради неё — так себе затея.
Больше матрица и объектив — больше окно для движений — больше возможностей — больше озоновых дыр от обеспечения всего этого цирка электричеством и охлаждением. Еее, технологии! Борьба с фильтром Байера Даже в пленоптической камере он всё еще необходим, ведь мы так и не придумали другого способа получить цветное цифровое изображение. Зато теперь мы можем усреднять цвет не только по группке соседних пикселей, как в классическом демозаике, а по десяткам его копий в соседних кластерах.
В статьях это называют «вычисляемым супер-разрешением», но я бы тут снова засомневался — ведь по сути мы сначала уменьшаем реальное разрешение матрицы в те самые десятки раз, чтобы потом как бы гордо его восстановить. Чтобы такое кому-то продать, придётся сильно постараться.
Хотя технически оно всё равно интереснее, чем дрожать матрицей в приступе pixel shifting'а.
Любители снимать боке-сердечки здесь будут в восторге. Раз уж мы умеем управлять рефокусом, можно пойти и дальше — брать лишь некоторые пиксели из расфокусированного изображения, а другие из обычного. Так можно получить диафрагму любой формы на радость фотопабликам.
Световые поля (Light Field) От фотографии к полноценному VR Обычно с них начинают объяснять пленоптику, но я так и не понял зачем морочить ими голову с самого начала. Итак, да, с физической точки зрения, пленоптическая камера — это инструмент фиксации светового поля. Даже название пошло отсюда — plenus, от латинского «полный», то есть собирающий всю информации о лучах света. Как пленарное заседание.
Разберёмся простым языком что такое световое поле и зачем оно нам.
Любая традиционная фотография двумерна — где луч вошел в объектив, там и загорелся пиксель на фотографии. Камере насрать откуда этот луч пришел — случайно упал сбоку или отразился от задницы прекрасной дамы. Фотография фиксирует только точку пересечения луча с поверхностью матрицы.
Изображение же светового поля, в свою очередь, фиксирует то же самое, но с добавлением новой компоненты — откуда этот луч пришел. Иными словами, фиксирует вектор луча в пространстве. Как расчёт освещения уровня в видеоигре, только наоборот — мы пытаемся понять модель освещения реального мира. Световое поле, получается, и есть набор всех световых лучей в рамках нашей сцены. Как падающих от источников света, так и отражённых.
Световое поле по сути визуально описывает пространство вокруг. Любую фотографию в рамках этого пространства мы теперь можем спокойно вычислить математически. Точка съемки, глубина резкости, диафрагма — всё это тоже вычислимо.
Мне тут нравится проводить аналогию с городом. Фотография — это как путь от дома до ларька с пивком, который вы помните наизусть, а световое поле — это карта всего города. Имея карту, мы можем вычислить в ней любой маршрут из точки А в Б. Точно так же мы можем вычислить любую фотографию, зная световое поле.
Для простой фотографии такая штука — оверкилл, но на сцену медленно выползает VR. В нём световые поля являются одним из перспективных направлений. Слепок светового поля позволит рассмотреть объект в виртуальной реальности из любой точки пространства. Больше не надо строить 3D-модель комнаты, чтобы походить по ней — достаточно «всего-лишь» записать все лучи света в этой комнате. Всего-лишь, ага. Над тем и бьёмся.
Вычислительная оптика Под оптикой мы с ребятами из Стенфорда имеем в виду не только линзы и объективы, но и всё, что между объектом и матрицей — даже диафрагму и затвор. Фотоснобы здесь будут в ярости.
В 2014 году вышел HTC One (M8) и стал первым смартфоном с двумя камерами и весьма комичными возможностями вычислительной фотографии типа замены фона на дождь или блёстки как в лучших пабликах Одноклассников.
Началась гонка. Все стали ставить два, три, пять объективов в свои смартфоны, пытаясь попутно выяснить что лучше — телевик или ширик. В итоге дошли до появления Light L16, в которой было, как можно догадаться, аж 16 объективов.
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, которая страшный сон трипофоба. Ждём новых инноваций, потому что идея явно богатая.
Лидар — отдельное устройство, определяющее расстояние до объекта. Чаще всего он выпускает перед собой импульс света и считает время, за которое он вернулся. Прогрессу в области лидаров мы обязаны недавнему хайпу по самоуправляемым автомобилям в последние годы. Странные крутящиеся штуки на их крышах — это как раз лидары.
В смартфон лазерный лидар пока не впихнуть, потому сейчас мы обходимся его младшим братом — time-of-flight камерой. Суть работы до нелепости проста: специальная отдельная камера, над которой стоит LED-вспышка. Камера делает много импульсов, фиксирует до каких объектов свет достигает первыми и строит по этому карту глубины кадра.
Точность мобильных лидаров — до сантиметра. Флагманские смартфоны используют их для создания карты боке и для лучшей работы автофокуса в темноте.
Знание точной глубины кадра будет полезно в эпоху наступающей дополненной реальности — пулять лидаром по поверхностям чтобы сделать первичный маппинг в 3D будет куда точнее и проще, чем анализируя изображения камер.
В смартфоны лидары ставят в основном по трём причинам:
Для расчета глубины кадра и наложения программных размытий. Для более точного маппинга пространства для AR/VR-приложений. Для ускорения работы автофокуса в темноте.
некруглые диафрагмы (Coded Aperture) Карта глубины по одной камере, деблюр Начинается зона телескопов, рентгенов и прочего тумана войны. Сильно заходить в неё не будем, но ремни лучше заранее пристегнуть. История кодирующих диафрагм начиналась там, где фокусировка лучей была физически невозможна — для гамма и рентгеновского излучения. Обратитесь к ближайшему учителю физики, он вам объяснит почему.
Суть кодированной диафрагмы заключается в замене стандартной её дырки на некий паттерн. Расположение отверстий должно быть таким, чтобы их общий вид максимально различался в зависимости от степени расфокуса. Чем разнообразнее — тем лучше. Астрономы напридумывали целую гору таких паттернов для своих телескопов, здесь я приведу самый классический.
Когда мы фокусируемся на объекте, всё, что вне глубины нашей резкости, размывается. Физически, размытие — это когда одна точка по причине расфокуса проецируется линзой на несколько пикселей матрицы. Так уличный фонарь превращается в круглый блин боке.
Математики называют такие операции свёрткой (convolution) и обратной свёрткой (deconvolution). Запомним эти слова, ведь они круто звучат!
Технически, мы можем развернуть любую свёртку обратно, если знаем ядро. Но это математики так говорят. В реальности же у нас ограниченные диапазоны матрицы и неидеальные линзы объективов, из-за чего все наши «боке» далеки от математического идеала и полностью восстановить их невозможно. Мы всё равно можем попытаться, если узнаем ядро свёртки. Не буду долго тянуть, но этим ядром в фотографии как раз и является форма диафрагмы. Диафрагма делает математическую свёртку чисто оптически.
Проблема в том, что обычная круглая диафрагма остаётся круглой на любом уровне размытия. Наше ядро всегда примерно одинаковое — это стабильно, но не очень полезно. В случае с кодированной диафрагмой, лучи с разной степенью расфокуса будут закодированы с разным ядром. Читатели с IQ > 150 уже догадались что будет дальше.
Остаётся лишь одна проблема — понять с каким ядром закодирована каждая из областей изображения. Можно попробовать это сделать руками, примеряя разные ядра и смотря где свёртка получается точнее, но это не наш путь. Давным давно человеки изобрели для этого преобразование Фурье!
Всё, что нужно знать простому человеку: преобразование Фурье позволяет достать из кучи наложенных друг на друга волн те паттерны, которые в них преобладают. В случае музыки Фурье покажет частоты входящий нот в сложный аккорд, а в случае с фотографией — преобладающий паттерн, с которым куча световых волн наложилась друг на друга. То есть ядро свёртки. Профит.
А так как это форма кодированной диафрагмы всегда разная в зависимости от расстояния до объекта — мы можем вычислить это расстояние чисто математически, используя только один простой кадр, снятый на обычную матрицу!
Применив операцию обратной свёртки по этому ядру, мы можем восстановить разблюренные области изображения. Вернуть все разбросанные пиксели на место, так сказать.
Так работает большинство инструментов деблюра. Причём это прокатывает даже с обычной круглой диафрагмой, но результат получается менее точным.
Минусом кодирующих диафрагм является потеря света и появление шумов, а ими мы всё еще не можем пренебрегать. Появление же лидаров и достаточно точных ToF-камер вообще свело на нет все идеи использования кодирующих диафрагм в потребительских гаджетах. Если вы где-то их встречали — напишите в комментах.
Вычислительное освещение Скоро мы зажрёмся настолько, что захотим контролировать в пост-продакшене в том числе и освещение. Менять пасмурную погоду на солнечную или выравнивать тени на лице после съемки — сейчас это кажется дикостью, но посмотрим лет через десять.
Мы уже изобрели одно глупое устройство, позволяющее в прямом смысле «в лоб» управлять освещением — вспышку. Сначала она была нужна из-за технических ограничений камер, потом враги стали ставить её во все мыльницы чтобы портить ваши семейные фото, а в эпоху смартфонов все используют её как фонарик.
Наши движения к вычислительному освещению пока еще хаотичны и мало кому понятны.
Программируемая вспышка Старые нокии обожали пощеголять вспышкам на ксеноне, выжирающими по проценту батарейки с каждой фотографией. Сегодня жизнь стала скучнее и везде ставят простой энергоэффективный LED. Со светодиодом особо не разгуляешься, но мы всё равно попытались.
Для начала все перешли на Dual LED вспышки — сочетание оранжевого и синего светодиодов, яркость которых пытается подстроиться под цветовую температуру кадра. В айфонах это зовут True Tone и управляет им небольшой кусок кода по хитрой формуле. Даже разработчикам не дают ими управлять.
Когда в смартфонах появились датчики глубины и нейросети, мы захотели решить ими главную проблему всех вспышек — пересвеченные лица и вообще передний план. Каждый сделал это по-своему. В айфонах появился Slow Sync Flash — камера искусственно увеличивала выдержку в темноте. В Google Pixel и других андроидах — алгоритм объединения кадров со вспышкой и без. Телефон быстро делает две фотографии — со вспышкой и без. Части кадра, находящиеся близко к камере, берутся из кадра без вспышки, а подсвеченные детали фона из кадра со вспышкой. Получается примерно равномерное освещение.
Дальнейшее применение программируемых мультивспышек весьма туманно. Интересное применение нашли разве что в областях компьютерного зрения, где нужно было с большей четкостью определять границы объектов. Например, так можно сделать схему по сборке шкафа из икеи.
Lightstage Кодировать свет всегда было проще всего. Мы можем хоть сотню раз за кадр менять освещение и всё равно даже не приблизимся к скорости его скорости. Поэтому уже в далёком 2005-м вот эти ребята придумали Lighstage.
Суть метода в том, чтобы в каждом кадре реального 24 fps'ового кино успеть подсветить объект со всех возможных сторон. Для этого используется 150+ ламп и высокоскоростная камера, которая на один кадр фильма снимает сотню кадров с разным освещением. Вот так глупо выглядят любые инновации, когда их начинаешь объяснять.
Сейчас подобный этому подход используется при съемках комбинированной CGI графики в кино. Он позволяет полностью управлять освещением объекта в пост-продакшене, помещая его в сцены с абсолютно случайным освещением. Просто берём подсвеченные с нужных сторон кадры, немного тонируем, профит.
Жаль на мобильных девайсах такое будет сделать проблематично, но идея может кому-то и пригодится. Видел приложение ребят, которые снимали 3D-модель лица, подсвечивая его фонариком телефона с разных сторон. Проекторное освещение (Projector Illumination) Чтобы всерьез заняться вычислительным освещением на смартфонах, нам придётся перейти от обычных LED-вспышек к проекторам — любым штукам, умеющим проецировать 2D-картинку на плоскость. Для начала сойдет и простая монохромная сетка.
Первый плюс проектора — он может подсветить только ту часть кадра, которая действительно нуждается в подсветке. Больше никаких выжженных лиц на переднем плане — их можно распознать и игнорировать, как это делают лазерные фары современных автомобилей, которые не слепят встречку в движении, но подсвечивают пешеходов. Даже при минимальном разрешении проектора, типа 100х100 точек, возможности выборочной подсветки весьма интересны.
В автомобилях управляемым светом уже лет пять никого не удивишь Второе, более реальное применение проектора — проецирование невидимой глазу сетки на кадр. С ней можно забить на все эти нейросети для определения глубины — по ней все расстояния до объектов в кадре рассчитываются простейшими алгоритмами компьютерного зрения. Так делали еще во времена Microsoft Kinect, царство ему небесное, и было охеренно.
Естественно, здесь нельзя не вспомнить Dot Projector для Face ID в iPhone X и выше . Это пока наш первый шаг в сторону проекторных технологий, но уже весьма заметный.
Будущее фотографии Управление 3D-сценой и дополненная реальность?
Время поразмышлять. Судя по происходящему в крупных технологических компаниях, наши ближайшие десять лет будут плотно посвящены дополненной реальности. Это сейчас AR выглядит как игрушка — как способ пощупать трёхмерную вайфу, примерить кроссовки, посмотреть как будет смотреться макияж или тренировать армию США. Завтра мы и не заметим как станем пользоваться AR постоянно. Плотные потоки бабла от Google и Nvidia уже ощущаются.
Для фотографии это означает, что в моду войдёт AR-фото — возможность управлять 3D сценой. Сканировать пространство, как это делают смартфоны с Tango, добавлять в него новые объекты, как в HoloLenz, вот это вот всё. Пусть вас не смущает пока всратая графика современных AR-приложений — как только сюда придут игровые компании с мыльным кинцом, всё станет куда лучше.
Помните как эпично бомбанул Huawei с их фейковым Moon Mode? Для тех, кто пропустил как это работало: если камера хуавея определяла, что вы хотите снять луну на небе, она вклеивала в кадр заранее подготовленную фотографию луны высокого разрешения. Так ведь и правда круче. Настоящий китайский киберпанк. Мы всем интернетом смеялись сильно громче обычного.
Потом я купил себе новые лёгкие и задумался — а ведь дядька Ляо на сцене был прав. Он дал людям ровно то, что обещано — луна была настоящей, камера позволяла её ТАК снять, а остальные вопросы пишите в спортлото. Ведь если завтра смартфон будет предлагать приклеить красивый закат или синее небо вместо облаков — пять миллионов жителей Петербурга будут в восторге!
В будущем машины будут «дорисовывать» наши фотографии. Так вижу
Уже сейчас в камерах Pixel, Galaxy и других Android-смартфонов есть какой-нибудь глупый AR-режим. В одном можно добавлять модели персонажей из мультиков чтобы сфотографироваться с ними, во втором лепить эмодзи по всей комнате, в третьем наложить маски на лицо как в снапчате.
Всё это лишь наши первые наивные шаги. Сегодня у того же гугла в камере есть Google Lens, который гуглит для вас информацию о любом объекте, на который вы навели камеру. У Samsung то же самое умеет Bixby. Пока эта фичи сделаны только чтобы унижать людей с айфонами, но несложно представить как в следующий раз, когда вы будете делать селфи на фоне Эйфелевой Башни, телефон скажет: знаешь, твоё селфи — полное говно, я вставил на фон нормальную резкую фотку башни с того же ракурса, а тебе там пофиксил причёску и замазал прыщ под губой. Лучше всего сюда подойдет фильтр VSCO L4. Не благодари.
Дальше камера начнёт заменять траву на более зелёную, друзей на более закадычных, а сиськи на более большие или типа того. Дивный новый мир.
Всё это будет выглядеть нелепо, сначала даже ужасно. У дедов-эстетов будет дико бомбить, а борцы за натуральность пойдут по домам отбирать нейросети у населения. Массовая же аудитория будет в восторге. Потому что для неё фотография — лишь один из способов самовыражения и передачи эмоций. Каждый раз, когда появлялся инструмент чтобы выражать их ярче и эффективнее, все начинали им пользоваться — эмодзи, фильтры, стикеры, маски, аудиосообщения. Список кому-то покажется мерзким, но его легко можно продолжать.
Фотографии «объективной реальности» будут казаться скучными как фотки семьи за новогодним столом с оливье. Они не умрут, но станут чем-то типа бумажных книг — увлечением эстетов, которые видят в этом особый смысл. «Кому вообще может быть интересно заморачиваться с правильным светом и композицией объектов на сцене, если мой телефон дорисовывает то же самое за меня» — будут недоумевать одни. «Ко-ко-коко-ко» — будут парировать другие.
Массовой аудитории насрать на объективность, им надо чтобы алгоритмы делали их лица моложе, а отпуск круче, чем у соседа по офису. Дополненная реальность будет дорисовывать реальность за них даже с более высоким уровнем детализации, чем она есть на самом деле. Как бы смешно ни звучало, мы начнём улучшать графику в реальном мире.
И да, как всегда, всё начнётся с подростков с их «непонятными глупыми увлечениями для дегенератов». Так всегда всё начинается. Как только вы что-то перестаёте понимать — это и есть будущее. Следите за ними.
Заключение На протяжении истории каждая человеческая технология становилась более совершенной как только переставала копировать живые организмы. Сегодня тяжело представить автомобиль с суставами и мышцами вместо колёс. Самолёты с фиксированными крыльями летают 800+ км/ч — птицы машут и завидуют. Аналогов компьютерному процессору вообще не существует в природе.
Самое интересное — чего нет в этом списке. Матриц фотоаппаратов. Мы до сих пор не придумали ничего лучше, как имитировать структуру глаза. Тот же объектив-хрусталик и набор RGGB-колбочек как у сетчатки.
Компьютерная фотография добавила к этому процессу «мозг» — процессор, который обрабатывает визуальную информацию не просто считывая пиксели через зрительный нерв, но и дополняю картинку на основе своего опыта. Да, сегодня это открывает нам кучу возможностей, но есть подозрение, что мы всё еще пытаемся махать крыльями в перьях вместо того, чтобы пойти изобрести самолёт. Который оставит позади все эти затворы, диафрагмы и фильтры Байера.
Прелесть ситуации в том, что мы даже понятия сегодня не имеем что это будет. И это прекрасно.
Заключение от меня Эта статья побудила меня на покупку достаточно дорогого камерофона, чтобы лично убедится, что все описание в ней не фуфло. Примеры снимков с него я выложил выше, буду добавлять и еще в разные темы форума. Технологии действительно прогрессивные и дают великолепный результат. Для меня большие камеры остались актуальны только для очень сильного зума (приближения) Понимаю, что статью вряд ли кто то осилит, но если вдруг появится желание напишите свои комментарии, с чем согласны а с чем нет.