Зряча математика

Ще не так давно виробники смартфонів прагнули підкреслити, якою чудовою камерою забезпечена та чи інша модель. Користувачі хвалилися кількістю мегапікселів і вважали, що чим чутливіша матриця, тим краще вона буде знімати. Насправді розвиток можливостей смартфонів в області фотографії пішов іншим шляхом. Не так важливо, яка у вас стоїть камера, куди важливіше, які алгоритми нею керують. Розповідаємо про можливості обчислювальної фотографії, що перетворює звичайний смартфон на справжню фотостудію.

Традиційно цифровий знімок, в тому числі знятий на смартфон, являв собою досить просту операцію. Камера (або допитливий фотограф) вибирає параметри зйомки, після чого матриця починає записувати світло, що падає на неї. «Сире» зображення можна було обробити, додавши йому різкості або трохи підправивши кольори фільтрами, а можна було викласти в Instagram у вихідному вигляді.


Однак сьогодні в мобільній фотографії застосовувати термін «у вихідному вигляді» фактично безглуздо. Справа в тому, що кадр, доступний в галереї відразу після зйомки, - це насправді продукт багатостадійної обробки алгоритмами, і саме від них, а не від матриці або об'єктива, в першу чергу залежить якість отриманого знімка.

Цю концепцію прийнято називати обчислювальною фотографією. Вона передбачає, що алгоритми здатні замінити собою такі апаратні засоби, як довгофокусний об'єктив або матриця з широким динамічним діапазоном, а то і значно поліпшити їх характеристики.

Багато методів, що застосовуються в обчислювальній фотографії, або лежать в їх основі принципи розроблені вже давно, але саме в останні роки вони, нарешті, стали доступні користувачам самих звичайних смартфонів. Крім того, як і в багатьох інших сферах, різкий прогрес як мобільної фотографії стався завдяки розвитку алгоритмів машинного навчання і зростанню потужності мобільних процесорів.

По суті, просте програмне підвищення різкості знімка, яким багато виробників смартфонів захоплювалися (часом надто) багато років тому, формально відноситься до обчислювальної фотографії, тому з його допомогою розробники компенсували низьку якість об'єктива або відсутність стабілізації. Але, звичайно, дивно було б називати настільки банальну функцію стартовою точкою розквіту обчислювальної фотографії.

Уподібнюючись до ока

Справжній переломний момент повинен бути пов'язаний з впровадженням технології, здатної дати техніці якісно нові можливості, що набагато перевершують елементарне поліпшення об'єктиву або інших частин камери. Такий момент настав, коли в смартфонах почали застосовувати алгоритми HDR (High Dynamic Range - «розширений динамічний діапазон»).

Динамічний діапазон означає здатність матриці відображати в одному кадрі як дуже світлі, так і дуже темні ділянки. Наприклад, коли ми виходимо вдень на вулицю і відчинимо під'їзні двері, ми бачимо як темні стіни під'їзду, так і набагато більш яскраво освітлену вулицю. Однак для фотоматриць, тим більше мобільних, з такою ж спритністю поєднати яскраві і темні ділянки на одному знімку - все ще досить складне завдання.


Для таких ситуацій давно придумано рішення - брекетинг. Суть його полягає в тому, що фотоапарат робить не один, а два або більше кадрів з різною експозицією. Часто застосовується схема з трьома кадрами: експозиція першого кадру оптимальна для «усередненого» за яскравістю знімка, другий кадр зосереджується на його темних областях, а третій - на світлих.

Кадри робляться швидко, тому їх неважко відразу ж накласти один на одного, з'єднавши в одну якісну фотографію. На ній, звичайно, залишаться більш темні і більш світлі області, але не буде пересвітів і чорних плям. Знімок збереже деталі на всіх частинах кадру і буде показувати світ приблизно таким же, яким його бачать наші очі.

У сучасних смартфонах простий варіант HDR з'явився давно, але розробники, природно, не зупинилися на досягнутому.

У 2013 році Google представила смартфон Nexus 5 з алгоритмом HDR +. З назви ясно, що це «прокачаний» HDR. Під його керівництвом камера робить велику серію знімків з однаковими параметрами і однаковою для всіх короткою витримкою, так щоб всі кадри вийшли недосвіченими.

Потім алгоритм вибирає найчіткіший знімок і приймає його за основу. З ним поєднуються всі інші з урахуванням їх яскравості так, щоб в результаті вийшов чіткий знімок, у всіх областях якого можна розгледіти деталі.

За рахунок тремтіння рук

Подальший розвиток HDR в основному пішов цим шляхом і «перекочував» у нічний режим, замінивши довгу витримку. По-перше, поєднуючи кілька кадрів, алгоритми досить ефективно прибирають з них шум, неминуче виникає при зйомці темних сцен. По-друге, щоб зняти безліч кадрів з невеликими витримками, не обов'язково ставити смартфон на штатив. Можна тримати його в руках, нехай навіть на створення знімка потрібно пара секунд, за які раніше знімок обов'язково змастився б.

Забавно, але виявилося, що невелике тремтіння рук під час зйомки може бути навіть корисним. Розробники Google навчилися використовувати цей ефект на благо для підвищення точності передачі кольорів і деталізації.


Роботу цього алгоритму можна описати досить коротко, але для початку необхідно згадати пристрій більшості фотоматриць. Вони являють собою величезну сітку з фотодіодів, кожен з яких виконує просту роботу - реєструє світло, що падає на нього. За колір в матрицах відповідають накриваючі фотодіоди фільтри певних кольорів - червоного, зеленого і синього.

Зазвичай у матрицах кольорофільтри чергуються подібно до клітин шахової дошки. Колір кожного пікселя розраховується, виходячи зі значень декількох сусідніх фотодіодів. Це неминуче призводить до втрати точності кольору.

У деяких режимах камера Google Pixel не «прикидає» значення кольорів за показами сусідніх пікселів, а просто поєднує кілька знімків, заповнюючи порожні значення кольорів на фотодіодах. Це працює саме тому, що при зйомці з рук фотоматриця весь час трохи «гуляє» в різні боки.

У 2018 році Google додала у всі свої смартфони функцію Night Sight. По суті, це той же HDR +, але використовує ще кілька програмних хитрощів для поліпшення знімків. Наприклад, у нічному режимі смартфон запускає нейромережеві алгоритми, щоб визначити, що знаходиться перед камерою, і підлаштувати баланс білого. Крім того, смартфон сам вибирає потрібну витримку залежно від сцени, інтенсивності рухів рук та інших параметрів.

Зірки на смартфоні

Слідом за Google схожі режими стали впроваджувати й інші виробники смартфонів, наприклад Huawei і Apple. Оскільки в нашій редакції нещодавно з'явився iPhone 11 Pro з новими алгоритмами камери, ми вирішили продемонструвати його роботу наочно, захопивши в поїздку під Переславль-Залеський не велику камеру зі знімними об'єктивами, а смартфон.


Місце, в якому ми робили ці знімки, розташоване далеко від великих міст, тому нам не заважало засвічування. А ще на нашому боці було сухе морозне повітря.

До речі, знімали ми не з рук, а зі штативу. Справ у тому, що останній iPhone, орієнтуючись на показання акселерометра і гіроскопа, вміє визначати, що його положення нерухоме, і збільшувати максимальну тривалість витримки. У нашому випадку вона постійно «скакала» між 10 і 28 секундами. Ми кілька разів встигли «зловити» знімок з 28-секундною витримкою і отримали ось такі кадри нічного неба:

Зйомка зі штатива не така показова, як зйомка з рук, але навіть на штативі смартфон дворічної давності міг видати набагато гіршу картинку, тому що алгоритми сучасних нічних режимів значно «витягують» темні місця і пригнічують шум, поєднуючи кілька кадрів.

У смартфонах Google Pixel останніх двох років з останньою версією програми з'явився окремий режим для зйомки зірок, що працює трохи інакше. У своєму блозі розробники Google розкрили технічні нововведення цього режиму.

Pixel може витрачати на створення одного знімка до чотирьох хвилин, знімаючи до 15 знімків по 16 секунд кожен. Крім того, камера розмічає об'єкти в кадрі і, наприклад, застосовує окремий алгоритм шумоподавлення для неба.


Судячи зі знімків користувачів, розробникам вдалося сильно підвищити якість шумоподавлення без втрати деталей, хоча, на жаль, компанія не розкриває, як їм це вдалося.

Все тим же програмним чином розробники усунули і такі типові недоліки цифрових матриць, як темновий струм і «гарячі пікселі», видаляючи браковані пікселі зі знімка.

Не втрачаючи миттєвостей

Нічний режим - дуже вражаюча функція, але в реальному житті для звичайного користувача від неї мало користі. Тому зусилля розробників сконцентровані насамперед на дрібницях, що покращують звичайні «денні» знімки.

У багатьох флагманських смартфонах програмно реалізована навколонульова затримка затвора. Це означає, що після натискання на кнопку камери смартфон не «замислюється» на якийсь час, а відображає саме потрібний момент.

Справа в тому, що, коли користувач відкриває камеру на Pixel, сучасних iPhone і деяких інших смартфонах, камера вже починає робити знімки і записувати їх у кільцевий буфер. Оскільки буфер не нескінченний, його доводиться постійно перезаписувати і, звичайно ж, камера не зможе взяти з нього знімок, зроблений у тлі хвилину тому. Але, наприклад, те, що сталося півсекунди тому, вона згадає і видасть користувачеві кадр, знятий у момент натискання на кнопку, а не через деякий час.


Ще одна область, в якій смартфони частково замінили камери з великими об'єктивами, - це портретна зйомка. У сучасних смартфонах камера може імітувати характерне для професійного фотообладнання розмиття фону за людиною. Для цього смартфони, як правило, використовують нейромережі, здатні розпізнати людину і відокремити її від фону, після чого ще один алгоритм розмиває фон, не чіпаючи людину.

Спочатку такі алгоритми допускали нерівну обрізку, особливо в області волосся. Але потім на допомогу прийшли апаратні засоби - не об'єктиви або матриці, а потужні процесори, що дозволяють робити всі обчислення в реальному часі або хоча б протягом декількох секунд, тому що багато користувачів навряд чи готові чекати довше.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND