Экспериментальная ночная фотография на смартфонах Google Nexus и Google Pixel

Данный пост - перевод статьи Флориана Кайнца, программиста Google. В 2017 году он провел эксперимент - попытался найти границы того, что можно получить с помощью камеры смартфона в условиях плохой освещенности. Спустя полтора года в смартфонах от Google появится Night Sight - режим, позволяющий делать качественные фотографии при недостатке света.

Вид на мост Золотые Ворота с Marin Headlands, снято на DSLR (Canon 1DX, Zeiss Otus 28mm f/1.4 ZE) Florian Kainz
Вид на мост Золотые Ворота с Marin Headlands, снято на DSLR (Canon 1DX, Zeiss Otus 28mm f/1.4 ZE) Florian Kainz

В прошлом году в полнолунную ночь я взял с собой профессиональную зеркальную камеру, тяжелый объектив, штатив и отправился на вершину холма Marin Headlands к северу от Сан-Франциско. Я хотел сфотографировать мост Золотые Ворота и огни города за ним. Фото вышло настолько хорошим, что я показал его своим коллегам в Gcam, отделе Google Research, занимающимся вычислительной фотографией. Они разрабатывают алгоритмы, помогающие делать снимки на смартфонах и компактных камерах. Увидя мое фото, один из коллег предложил переснять его, используя смартфон. Камеры в смартфонах сильно улучшились, но я не был уверен, что мне удастся хотя бы приблизиться к результату DSLR.

Наверное, самый успешный проект Gcam – HDR+ в смартфонах Nexus и Pixel. Он позволяет фотографировать при недостатке света, быстро делая до десяти снимков с разной выдержкой и затем усредняя полученные данные в одну картинку, уменьшая размытие от тряски телефона и одновременно собирая достаточно света для получения удивительно хороших снимков. Конечно, у HDR+ есть ограничения. Если света слишком мало, телефон просто не может собрать достаточно данных и снимки в сложных условиях, например ночью, остаются невозможными.

Возникшие трудности

Чтобы понять, что можно выжать из камеры смартфона при недостатке света, я установил экспериментальное приложение Марка Ливоя SeeInTheDark, которое он презентовал на ICCV 2015 Extreme Imaging Workshop. Оно может делать снимки при меньшем количестве света, чем HDR+, используя еще больше кадров с разной выдержкой, и объединяя их, будто телефон полностью статичен. То есть, все изменения между разными снимками считаются шумами. Приложение уменьшает шум еще больше, фотографируя с разрешением в 1 мегапиксель. В итоге с ним можно делать снимки ночью при полной луне, но они выходят довольно зернистыми.

Для того, чтобы уменьшить размытие из-за тряски камеры и двигающихся объектов в камере, HDR+ и SeeInTheDark снимают отдельные изображения с выдержкой не больше 1/10 секунды. Так как человек не сможет удержать камеру на одном месте в течение длительного времени, количество снимков тоже ограничено. HDR+ объединяет не больше 10 снимков, а SeeInTheDark использует только определенное количество самых свежих кадров, не объединяя их со старыми. Это ограничивает количество света, которое сенсор может собрать и негативно влияет на качество конечного изображения при недостатке света.

Конечно, если мы хотим сделать качественный снимок ночью при полной луне, нам может помочь выдержка больше 1 секунды и штатив. Google Nexus 6P и Pixel поддерживают выдержки до 4 и 2 секунд соответственно. Если кадр статичен, то мы можем сделать десятки снимков и затем объединить их, даже если это займет некоторое время.

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

Эксперименты и результаты

Учитывая все вышеописанное, я написал простое приложение на Android с ручным контролем над выдержкой, ISO и фокусировкой. После нажатия на кнопку спуска приложение ждет несколько секунд, а затем делает до 64 снимков с заданными настройками в DNG-формате.

Для тестирования я отправился в полнолунную ночь к маяку Point Reyes на калифорнийском побережье. Я сделал 32 кадра с выдержкой в 4 секунды и ISO 1600 на Nexus 6P. После я заклеил камеру черной изолентой и сделал еще 32 кадра. Уже в офисе я открыл Photoshop и начал разбирать фотографии. Кадры были очень зернистыми, что в принципе можно ожидать от такого маленького сенсора, но объединение первых 32 кадров очистило почти весь шум, а вычитание вторых, черных, 32 кадров убрало шум самого сенсора, вызванный разным уровнем черного на нем. Результат получился на удивление хорошим.

Маяк Point Reyes ночью, снято на Google Nexus 6P Florian Kainz
Маяк Point Reyes ночью, снято на Google Nexus 6P Florian Kainz

Лампа на маяке засвечена, но остальная часть снимка четкая, не сильно шумная и с натуральными цветами. Для сравнения, вот так выглядит снимок с рук с включенным HDR+:

Маяк Point Reyes ночью, HDR+ снимок с рук. Прямоугольник справа высветлен, чтобы совпадать по яркости с предыдущей фотографией Florian Kainz
Маяк Point Reyes ночью, HDR+ снимок с рук. Прямоугольник справа высветлен, чтобы совпадать по яркости с предыдущей фотографией Florian Kainz

Удовлетворенный результатами, я хотел попробовать запечатлеть ночной пейзаж со звездами – на фото с маяком они закрыты облаками. На чистом небе самые яркие звезды должны быть хорошо видны при 4-секундной выдержке. Но, звезды не статичны. Они вращаются вокруг полюсов, совершая оборот за 24 часа. На выдержках в несколько секунд это движение не заметно, но при объединении нескольких кадров звезды превращаются в полосы. Например:

Полярная Звезда над горой Burdell, выдержка 2 секунды Florian Kainz
Полярная Звезда над горой Burdell, выдержка 2 секунды Florian Kainz
Объединение 32 снимков с выдержкой в 2 секунды Florian Kainz
Объединение 32 снимков с выдержкой в 2 секунды Florian Kainz

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

Объединение 32 снимков с выдержкой в 2 секунды, выровнено по звездам Florian Kainz
Объединение 32 снимков с выдержкой в 2 секунды, выровнено по звездам Florian Kainz

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

Полярная Звезда над горой Burdell, снято на Google Pixel, финальное изображение Florian Kainz
Полярная Звезда над горой Burdell, снято на Google Pixel, финальное изображение Florian Kainz

Еще меньше света

Фотографии выше были сняты при полной луне, когда на улице можно ходить без фонарика. Но я хотел узнать, можно ли фотографировать на телефон при еще меньшем свете. Я протестировал Pixel при свете неполной луны и без нее совсем. Ожидая больше шума в отдельных кадрах, я сделал 64 снимка. Обработанная финальная версия выглядит неплохо:

Выброшенная на берег рыбацкая лодка в городе Инвернесс и созвездие Большого Ковша, 64 снимка с выдержкой в 2 секунды на Google Pixel Florian Kainz
Выброшенная на берег рыбацкая лодка в городе Инвернесс и созвездие Большого Ковша, 64 снимка с выдержкой в 2 секунды на Google Pixel Florian Kainz
Звезды над Pierce Point Ranch, 64 снимка с выдержкой в 2 секунды на Google Pixel Florian Kainz
Звезды над Pierce Point Ranch, 64 снимка с выдержкой в 2 секунды на Google Pixel Florian Kainz

На второй фотографии огни Залива Сан-Франциско вдалеке подсветили небо оранжевым, но без Луны небо было достаточно темным, чтобы можно было увидеть Млечный Путь. Снимок выглядит намного более зернистым, чем предыдущие, но не слишком.

Расширяя границы

Можем ли мы сделать фото только со звездами – без Луны, света от городов и других искусственных источников света?

Чтобы это протестировать, я отправился на север от дельты реки Russian, где очень темные ночи. Я сделал 64 обычных и 64 черных снимка на Pixel с выдержкой в 2 секунды и ISO 12800. В результате получилось различимое изображение Млечного Пути. Созвездия Скорпиона и Стрельца четко видны, и прищурившись можно разглядеть горизонт с несколькими скалами в море, но все-таки это фото не достойно висеть на стене. Но это вполне может быть фото с наименьшим количеством света, снятое на телефон.

Только звезды, снято на Google Pixel Florian Kainz
Только звезды, снято на Google Pixel Florian Kainz

Здесь мы подходим к границам того, что может сделать камера Pixel. Она не может снимать с выдержкой более 2 секунд. Если бы это ограничение было убрано, мы могли бы снимать с выдержкой в 8 или 10 секунд, и звезды еще не начинали бы превращаться в полосы. На более длительных выдержках можно уменьшить ISO, значительно уменьшая шум.

Возвращаясь к оригинальному предложению – воспроизвести снимок на DSLR с помощью камеры телефона, вот что получилось:

Мост Золотые Ворота ночью, снято на Google Nexus 6P Florian Kainz
Мост Золотые Ворота ночью, снято на Google Nexus 6P Florian Kainz
Луна над Сан-Франциско, снято на Google Nexus 6P Florian Kainz
Луна над Сан-Франциско, снято на Google Nexus 6P Florian Kainz

Разрешение у данных фотографий – 9-10 мегапикселей, что меньше, чем у профессиональной зеркалки. Несмотря на это, снимки довольно качественные – резкие, с малыми шумами, динамического диапазона достаточно, приятные цвета.

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

Альбом Google Photos с данными и другими фотографиями, снятыми с помощью описанного способа.

Florian Kainz
Software Engineer

Google

4545
12 комментариев

Комментарий недоступен

5
Ответить

Отличная статья. Жаль софт в современных системных камерах недотягивает. Например авто hdri для авто режима мысли бы сделать. Сам не пользуюсь никогда авто режимом, но другим бы думаю помогло

1
Ответить

Комментарий недоступен

1
Ответить

Очень старый материал, а "отец" вычислительной фотографии недавно покинул гугл

1
Ответить

А какие есть аналоги для других телефонов андроид?

Ответить
Автор

Многие стали делать свои ночные режимы. Есть еще вариант поставить порт камеры с Pixel

1
Ответить

Ничего не понял где нексус, а где пикскль... И в итогах нет что же лучше

Ответить