Разбор raw в браузере: как мы это делали

Разбор raw в браузере: как мы это делали

Здравствуй, Хабр.Хочется поделиться эйфорией — мы закончили разбор проприетарных RAW форматов скамерCanon и Nikon для отечественного сервиса Pics.io. Для тех, кто не в курсе: главная мысль Pics.io содержится в том, дабы дать людям возможность трудиться с RAW фотографиями прямо в браузере. Без установки каких-либо программ, плагинов и расширений – настоящий zero footprint.
Смотрите кроме этого: Гугл разрешит создавать напоминания из строчка поиска в браузере

Команда разработчиков Гугл добавила новую функцию, благодаря которой пользователи смогут создавать напоминания Гугл Now прямо из строчка поиска в настольной версии браузера. Для этого нужно ввести команду Remind me to, к примеру, Remind me to go grocery shopping (Напомни мне сходить в гастроном ) либо Remind me to get pizza when I’m in New York (Напомни мне заказать пиццу, в то время, когда я буду в Нью-Йорке). Сразу после запроса будет отображена карточка, которая предложит установить напоминание на определённое время или при прибытии в конкретное место. По окончании создания напо

В то время, когда мы начинали трудиться, было познание, что в ближайщее время цифровая фотография переедет в «облако». Мы знали, что тренд мобильности будет усиливаться, а цены на облачные хранилища понижаться. Тогда web’у не хватало лишь одного кусочка мозаики — адекватной обработки снимков. Было множество онлайн редакторов, в большинстве собственном написанных на Flash, каковые не могли удовлетворить фотографов в силу последовательности ограничений: они трудились с 8-bit JPEG, PNG и имели ограничение на размер файла.

Мы решили сделать редактор с помощью RAW.В то время у нас было пара прототипов, трудящихся с DNG, каковые обосновывали, что всё это возможно сделать на JavaScript и WebGL. Но мы, к сожалению, не могли вынудить всех людей мира преобразовать собственные фотографии в DNG. Кроме того у Adobe это не получилось.

Мы осознавали, что была нужна помощь «родных» форматов, и пара месяцев назад мы взялись за самые популярные проприетарные форматы от Canon и Nikon.Разбор DNG и проприетарных RAW форматовПо сравнению с CR2 либо NEF, у DNG достаточно множество плюсов. Начиная от возможности и открытости формата встраивать в него XMP и заканчивая более оптимальным форматом хранения данных и метаданных в DNG-контейнера.

Об особенностях и отличиях форматов мы уже писали у себя в блоге, был пост на Хабре и, в случае если поискать, то информации достаточно большое количество. Тут же обратим внимание на технические моменты, скрытые от рядового пользователя.Большая часть RAW форматов (CR2, NEF и DNG) базируются на формате TIFF, что есть теговым форматом.

А так как TIFF предоставляет возможность расширять себя приватными тегами, Canon и Nikon деятельно этим пользуются, записывая кучу нужной информацим в личные теги в собственном же формате. Обстоятельства, из-за чего производителикамерделают так для меня остаются тайной и, в случае если у кого-то имеется предположения на это счет, прошу вас, выскажитесь в комментариях.По сути, разбор любого RAW имеет несколько шагов: декомпрессия данных из JPG, в следствии чего получается «сырое» изображение, захваченное матрицей камеры, и дематризация (кроме этого дебайеризация) нужная для восстановления цветовой информации (так как сенсор камеры фиксирует яркость, а не цвет).

Декомпрессия JPGТак матрица фотокамеры «видит» изображение Первое, что необходимо сделать разбирая RAW, это вычитать метаданные нужные для метода декомпрессии. В том месте сохраняются необходимые размеры, смещения, метод хранения данных и т.д. С DNG всё легко, в спецификации чётко написано что и где лежит (и лежит бережно, а не разбросано по файлу). Декомпрессия данных преобразовывается в наслаждение.

Формат CR2 мало сложнее, поскольку переменные разбросаны по различным группам тегов и метод декомпрессии мало варьируется от камеры к камере. Nikon в собственном формате постоянно использует одинаковый метод, изменяются лишь деревья Хаффмана, применяемые для декомпрессии. Эти деревья, в отличие от Canon, не требуется перестраивать любой раз, а возможно вычитать из метаданных.

Метаданные же сохраняются глубоко в секции Makernote, которая имеет собственный личный формат. Но самым главным недочётом есть то, что в CR2 и NEF запакованные эти сохраняются одним куском (в действительности Canon хранит пара кусков, каковые позже необходимо склеить в один _Некоторые камеры, каковые поддерживают DNG, смогут писать незапакованные эти, размер файла больше, но возможно пропустить ход декомпрессии.Дематризация «сырых» данныхВторой громадный ход — дематризация.

Метаданные, нужные на этом шаге, производители записывают в личные структуры в TIFF-тегов, каковые изменяются с выходом новых моделей. Додавая новые возможности в камеры, производители додают новые теги в собственные закрытые форматы, и тем самым усложняют помощь этих функций в стороннем программном обеспечении. А в то время, когда дело доходит до восстановления верного баланса белого либо гамма-коррекции нам приходится учитывать и производителя, и конкретные модели камер.

Мы, само собой разумеется, мало экономим кэшируя метаданные, поскольку уже знаем изюминке камер и их «металлическую» начинку, но чтобы получить параметры, зависящих от условий съёмки приходится поддерживать целый зоопарк форматов.По большому счету, процесс дематризации достаточно ресурсоёмкий. Необходимо последовательно выполнить пара операций над каждым пикселем (либо окружающими его пикселями), и на изображениях в 20 мегапикселей это выполняется совсем не скоро. =( Тут мы вовсю используем WebWorker’ы и параллелим, как можем.

Но всё равняется, необходимо и хочется ещё стремительнее, исходя из этого на данный момент мы вовсю наблюдаем на SIMD, WebCL и другие техно-эйфории, каковые окажут помощь ускорить процесс. ПослесловиеРазрабатывая конвертер, мы достаточно большое количество определили про то, как устроены RAW’ы, и в случае если кому-то увлекательна эта тема, задавайте вопросы в коментариях.Попытаться сконвертировать собственные CR2 и NEF файлы уже на данный момент возможно на страничке отечественного RAW конвертера.

Трудится не скоро, нужно будет подождать в среднем 15-20 секунд, но сейчас последний камень на пути фотографов в «облако» сдвинут. А вместе с апрельским понижением цен на Гугл Drive практически в пять раз… Имеете возможность себе представить. Так что ожидайте «Лайтрум в браузере».

Мы уже трудимся над ним.UPD: Выложили новую версию, в которой пофиксили разбор Canon 5D Mark III, Nikon D5000, Nikon D700. Благодарю Snowly, scumware, fetis26UPD2: В случае если у кого-то были неприятности с сообщением «Format not supported yet…», на данный момент должно трудиться корректно.UPD3: Добавили в редактор градиентый фильтр. Один из лучший отечественных инструментов сейчас.

Взглянуть возможно тут.

Случайная статья:

16 ВЕЩЕЙ, КОТОРЫЕ МЫ ИСПОЛЬЗУЕМ НЕ ТАК, КАК ЗАДУМАНО


Похожие статьи:

Комментирование и размещение ссылок запрещено.

Обсуждение закрыто.