abbra (abbra) wrote,
abbra
abbra

Category:

Франкенкамера 2.0

Иногда в работе на большие корпорации бывают свои прелести -- например, возможность пообщаться с университетскими исследователями, до которых добраться в реальной жизни получится еще нескоро. К нам приезжал циркпрофессор стенфордского университета Марк Левой, группа аспирантов которого работает над созданием полностью программируемой камеры. Текущая версия собрана из отобранных у бедныхчастей других устройств -- кнопка спуска от PowerShot G6, сенсор Aptina MT9P031 взят от N95, закреплен на подложку Elphel 10338, байонет Canon EF в исполнении Birger Engineering. По поводу последнего, Марк Левой отметил, что обратная инженерия байонета от Canon легальна, тут нет никаких проблем (байонет от Birger был разработан для Red One Cinema, производителя ведущей цифровой видеокамеры для киноиндустрии). Так что камера получает всю информацию, которую сообщают о своей работе объективы.

Внутренности Франкенкамеры представлены OMAP3530, упрощенной версией чипа, который стоит в Nokia N900. На этом OMAP3 запушен GNU/Linux, собранный Eino-Ville Talvala. Эдди (как он предпочитает себя называть на американский манер) также улучшил и поддерживает драйвера для работы с сигнальным процессором ISP внутри OMAP3 (внутри OMAP3 на самом деле четыре процессора -- ARMv7, Neon, DSP и ISP). Качество драйверов от TI довольно посредственное, так что любые улучшения в этой области только приветствуются, тем более, что версия от Эдди работает на 2.6.31, самом распоследнем ядре.

Сама по себе камера напоминает Лейку где-нибудь так 50-60 лет назад. Качество получаемой картинки приблизительно соответствует Nokia N95. С этой стороны весь проект можно было бы и закрыть, особенно для обывателя (подумаешь, изобрели велосипед). На самом деле, все только тут и начинается.

Все дело в вычислительной фотографии. С отдельными ее проявлениями (сжатие с потерями, основанное на восприимчивости человеческого глаза, широкий динамический диапазон, построение панорамы) знакомы практически все. Последние лет двадцать дали существенный толчок развитию и других направлений, например в теории светового поля появились многомерные (пять и выше) пленоптические функции, позволяющие более точно описать происходящее со светом на записаном кадре. Результат -- многие усовершенствования в расчетах искусственных изображений, а также возможность исправлять "недостатки" реальности. Например, устранять блики на линзах объективов или убирать нежелательные объекты с фотографий.

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

Вот тут-то и поджидает самый большой "обломинго". Производители массовых камер не заинтересованы в проникновении в их "святая святых" обыкновенных фотографов. Получить доступ ко всем параметрам, которые выдает объектив через байонет, или к данным прямо с сенсора, без предварительной обработки, практически невозможно. Не говоря уже о том, что у всех производителей более-менее серьезных камер свое ПО запустить внутри камеры невозможно. Для Canon есть CHDK, хак, который позволяет переписать определенные действия после съемки кадра. Добраться же до начальных этапов (измерение и фокусировка) или до обработки данных (демозаика, устранение шума, баланс белого), увы нельзя.

Марк Левой провел несколько лет, пытаясь убедить азиатских производителей фотоаппаратов открыть доступ для исследователей. Бесполезно. В 2007 году Nokia поддержала его работу по вычислительной фотографии и в рамках этого проекта (Camera 1.0) было выполнено довольно много интересных работ. Некоторые из них даже попали в устройства -- N86 8MP в новой прошивке содержит алгоритм получения панорамы во время работы видоискателя, разработанный одним из талантливейших аспирантов из команды Левоя -- Эндрю Адамсом -- вместе с сотрудниками Nokia Research Center в Пало-Альто. По утверждению Левоя, мощности современных телефонов достаточно для выполнения многих задач вычислительной фотографии.

Впрочем, и этого мало. Франкенкамера -- это попытка создать действительно полностью адаптируемую к задачам пользователя камеру как на уровне программного обеспечения, так и на уровне аппаратной платформы. Нужно заменить сенсор? Поставить другую оптику? Изменить логику обработки данных из сенсора? Использовать другой механизм синхронизации затвора и вспышки? Все это должно быть возможно в Camera 2.0, прототипом которой и служит Франкенкамера.

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

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

Пока что имеющийся объем кода позволяет делать некоторые обнадеживающие эксперименты. Например, видоискатель с широким динамическим диапазоном. На имеющейся франкенкамере с 5Мп камерой удается сделать видоискатель с частотой 15 кадров в секунду с автоматическим выравниванием динамического диапазона. Замечу -- не перетонировка после съемки, а прямо в живом видоискателе. Работает неплохо, хотя код совсем неоптимизирован под платформу -- голый C, никаких оптимизаций под использование возможностей Neon или DSP.

Следующий шаг, обещанный Марком Левоем -- поддержка N900 в качестве платформы для начинки Camera 2.0, чтобы можно было расширить круг исследователей и разработчиков хотя бы в трех из пяти областей вычислительной фотографии, которые профессор обозначает в качестве целевых. Две оставшиеся требуют модификации оптического или регистрирующего трактов. Надеюсь, к началу 2010 у нас будет о чем говорить.

И еще интересный момент. В Стенфорде 96 франкенкамер были объединены в многокамерный массив и использовались для съемки с последующей программной перефокусировкой получившегося многомегапиксельного изображения. Две главные проблемы, возникшие в рамках этого проекта -- как гарантировано быстро передавать данные между камерами для обработки, а также как добиться стабильности оптической системы. Даже объективы из одной партии обладали такой разбежкой в качестве сборки и оптики, что потребовалось разработать новые алгоритмы борьбы с бликами и прочими подобными артефактами. В результате, докторская диссертация Эдди Талвалы получилась вовсе не о Франкенкамере, а о борьбе с засветками.

На вопросы публики, что же реально влияет на качество картинки, профессор ответил просто: "Влияет всё. Но если у вас плохая оптика, то ничего не спасет." Так что первый вопрос, который был направлен профессором нам, звучал так: "Можно ли в N900 заменить оптику на внешнюю?" Конечно, какой-либо стандартный байонет из мира DSLR в N900 отсутствует, но умельцы профессора явно не остановятся перед препарированием пациента. Впрочем, у нашего пациента и штатный объектив не такой уж плохой -- он лучше N95. Весь вопрос в последующей обработке.
Tags: camera2.0, floss, maemo
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 56 comments