Тремтячі руки поліпшили якість знімків Google Pixel 3

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


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


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

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

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

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

Раніше Google почала використовувати у своїх сервісах алгоритм RAISR, що підвищує дозвіл зображень. Він аналізує контури об'єктів на зображенні і підвищує роздільну здатність без додавання зображення «пікселізованості».

COM_SPPAGEBUILDER_NO_ITEMS_FOUND