Java*-парсер для фотографий с поддержкой глубины

Опубликовано: 02/20/2016, Последнее обновление: 02/20/2016

Загрузить PDF  [PDF 684 KB]
Загрузить образцы кода  [ZIP 25 KB]

Java*-парсер для фотографий с поддержкой глубины обрабатывает файлы изображений в формате XDM (eXtensible Device Metadata) и извлекает метаданные, внедренные в файлы изображений, создавая XML-файлы. Кроме того, это приложение анализирует XML-файлы, извлекая из них данные цветных изображений и данные карт глубины. Это основа для использования фотографий с поддержкой глубины, например для просмотра изображений, изменения глубины резкости, параллакса и измерений.

В качестве входных данных приложение использует файлы изображений XDM,
а на выходе мы получаем XML-файлы, файлы цветных изображений и файлы карт глубины.

XDM

Сначала мы описываем входные данные для этого приложения: файлы изображений XDM. XDM — стандарт для хранения метаданных в контейнере изображения при сохранении совместимости с существующими программами для просмотра изображений. Этот стандарт предназначен для технологии Intel® RealSenseTM. Метаданные включают информацию, связанную с устройством: карту глубины, положение устройства и камеры, модель перспективы объектива, данные о постав­щике, облако точек. На следующем рисунке показан пример, где в файле XDM хранится карта глубины (справа) в качестве метаданных вместе с цветным изображением (слева).

Стандарт Adobe XMP *

В настоящее время спецификация XDM поддерживает четыре типа форматов изображений-контейнеров: JPEG, PNG, TIFF и GIF. Метаданные XDM проходят сериализацию и внедряются в файл изображения-контейнера. Формат хранения основывается на стандарте XMP — стандарте расширяемой платформы метаданных Adobe. Это приложение разработано специально для формата JPEG. Затем мы вкратце описываем, как метаданные XMP внедряются в файлы изображений JPEG и как анализатор обрабатывает XMP-пакеты.

В стандарте XMP фрагменты данных обозначаются двухбайтовыми маркерами. Маркеры типа 0xFFE0–0xFFEF обычно используются для данных приложений, они имеют имя вида APPn. Маркер APPn начинается со строки, указывающей назна­чение. Эта строка называется строкой пространства имен или строкой подписи. Маркер APP1 указывает метаданные EXIF и TIFF; маркер APP13 обозначает ресурсы изображения Photoshop *, содержащие метаданные IPTC, еще один или несколько маркеров APP1 обозначают расположение XMP-пакетов.

В следующей таблице показан формат записей в разделе StandardXMP в файлах JPEG.

  • 2-байтовый маркер APP1 0xFFE1.
  • Длина этого XMP-пакета — 2 байта.
  • Стандартное пространство имен StandardXMP (http://ns.adobe.com/xap/1.0/) длиной 29 байт.
  • XMP-пакет длиной не более 65 503 байт.

Если размер XMP-пакета после сериализации превышает 64 КБ, то этот пакет может быть разделен на основной сегмент (StandardXMP) и расширенный сегмент (ExtendedXMP), хранящиеся в нескольких указанных маркерами сегментах JPEG. Формат записей в сегменте ExtendedXMP аналогичен сегменту StandardXMP,
но используется другое пространство имен: http://ns.adobe.com/xmp/extension/.

На следующем рисунке показаны сегменты StandardXMP и ExtendedXMP, внедренные в файл изображения JPEG.

Это приложение определяет три класса следующим образом.

  1. XDMJavaParser. Это основной класс, который осуществляет анализ изображения XDM, выводит XML-файлы и анализирует XML-файл XMP для вывода цветных изображений и изображений карт глубины.
  2. XMLJavaParser. Этот класс анализирует XML-файл XMP.
  3. XMLJavaParserHandler. Это класс-обработчик, реализующий анализ
    XML-файла XMP.

В следующем фрагменте кода показаны две функции, использующиеся для анализа XDM-изображения в классе XDMJavaParser.

  • findMarker. Анализ JPEG-файла (т. е. буфера), начиная с указанного места (расположение), и поиск маркера 0xFFE1. Если маркер обнаружен, возвращается расположение маркера, если нет, возвращается –1.
  • findHeader. Поиск пространства имен StandardXMP (http://ns.adobe.com/xap/1.0/) и пространства имен ExtendedXMP (http://ns.adobe.com/xmp/extension/) в JPEG-файле (т. е. в буфере), начиная с указанного места (расположение). При обнаружении возвращается соответствующее пространство имен, в противном случае возвращается пустая строка.

XML

Метаданные XMP можно внедрять непосредственно в XML-документ 4. Согласно спецификации XDM, структура данных XML определяется следующим образом.

Файл изображения содержит следующие элементы, как показано в приведенной выше таблице, в формате RDF/XML. Вот описание общей структуры.

  • Изображение-контейнер. Это внешнее изображение (по отношению к XDM), его можно просматривать в приложениях, не поддерживающих XDM.
  • Device. Рутовый объект документа RDF/XML согласно стандарту Adobe XMP.
    • Revision — версия спецификации XDM.
    • VendorInfo — информация о производителе устройства.
    • DevicePose — положение устройства по отношению к окружающему миру.
    • Cameras — последовательность RDF одной или нескольких камер.
      • Camera — вся информация для одной камеры. Для получения любых изображений должна быть хотя бы одна камера. Изображение-контейнер сопоставляется с первой камерой, которая считается основной камерой изображения.
        • VendorInfo — информация о производителе камеры.
        • CameraPose — положение камеры по отношению к устройству.
        • Image — изображение, предоставленное камерой.
        • ImagingModel — модель получения изображения (модель объектива).
        • Depthmap — информация о глубине, включая карту глубины и модель шума.
          • NoiseModel — свойства матрицы камеры, касающиеся шума.
        • PointCloud — данные облака точек.

Следующий фрагмент кода является основной функцией этого приложения в классе XDMJavaParser. Он анализирует входной JPEG-файл, пытаясь найти в нем маркер APP1 0xFFE1. Если такой маркер найден, выполняется поиск строк пространств имен StandardXMP и ExtendedXMP. Если найдена первая строка, код вычисляет началь­ную точку и размер метаданных, извлекает метаданные и создает XML-файл StandardXMP. Если найдена вторая строка, код вычисляет начальную точку и размер метаданных, извлекает метаданные и создает XML-файл ExtendedXMP. Приложение выводит два XML-файла.

Следующий фрагмент кода — класс XDMJavaParser, отвечающий за анализ
XML-файла XMP:

Следующий фрагмент кода в классе XMLJavaParserHandler анализирует XML-файл и извлекает цветное изображение и карту глубины для фотографирования с поддержкой глубины. Все работает очень просто. Функция startElement() ищет атрибут с именем IMAGE:DATA и извлекает соответствующие данные, то есть цветное изображение, в JPEG-файл. При обнаружении нескольких атрибутов создается несколько JPEG-файлов. Функция также ищет атрибут с именем DEPTHMAP:DATA и извлекает соответствующие данные, то есть карту глубины, в PNG-файл. При обнаружении нескольких атрибутов создается несколько
 PNG-файлов. На выходе приложения мы получаем JPEG- и PNG-файлы.

Заключение

В этом документе описывается формат файлов XDM, стандарт Adobe XMP и структура данных XML. Анализатор Java для фотографий с поддержкой глубины обрабатывает файлы изображений XDM и выдает XML-файлы StandardXMP и ExtendedXMP. Затем он обрабатывает XML-файлы и извлекает из них файлы цветных изображений и файлы карт глубины. Это приложение не зависит ни от каких других программ. Оно является базовым для различных сценариев использования фотографий с поддержкой глубины.  

Справочные материалы

«Спецификация eXtensible Device Metadata (XDM), версия 1.0»: /ru-ru/articles/the-extensible-device-metadata-xdm-specification-version-10

Технология Intel® RealSenseTM: http://www.intel.com/content/www/ru/ru/architecture-and-technology/realsense-overview.html

Центр разработки Adobe XMP: http://www.adobe.com/devnet/xmp.html

«Спецификация XML 1.0», консорциум World Wide Web. Получено 22 августа 2010 г.

Использованные компоненты и решения

В этом проекте используется API SAX (http://www.saxproject.org) для XML в Java. Проект SAX не относится к общественному достоянию. Информацию об авторских правах на этот проект см. по следующей ссылке: http://www.saxproject.org/copying.html

Об авторе

Ю Бай (Yu Bai) — инженер по разработке приложений в отделе Intel® Software and Services Group (SSG). Она работает с внешними независимыми разработчиками программного обеспечения, добиваясь безупречной работы их приложений на платформах Intel®. До поступления в SSG она работала в компании Rudolph Technologies в качестве старшего инженера по программному обеспечению, занималась разработкой приложений, используемых при работе высокоточного фотолитографического оборудования, используемого в промышленном оборудовании для производства полупроводников. До компании Rudolph она работала в компании Marvell Semiconductor в качестве штатного инженера и занималась анализом электропитания и моделированием электропитания для прикладных процессоров этой компании. Ю перешла в компанию Marvell при приобретении этой компанией технологии Intel® XScale в 2006 году.

Ю получила учетную степень магистра, а затем и доктора наук в области электротехники и информатики в Университете Брауна. Ее дипломная работа была посвящена проектированию архитектуры компьютеров высокой производительности с низким потреблением электроэнергии. Ю владеет шестью патентами США и опубликовала в журналах и материалах международных конференций более 10 статей, посвященных управлению и оптимизации мощности и электропитания.

java-parser-for-depth-photo-whitepaper.pdf (684,22 КБ)

sample-codes-java-parser-for-depth-photo.zip (24,25 КБ)

Дополнительные сведения об оптимизации компиляторов см. в уведомлении об оптимизации.

Приложение Размер
java-parser-for-depth-photo-whitepaper.pdf 684.2 KB
sample-codes-java-parser-for-depth-photo.zip 58.7 KB
4.PNG 31.8 KB
1.png 333.1 KB
2.PNG 21.8 KB

Информация о продукте и производительности

1

Компиляторы Intel могут не обеспечивать для процессоров других производителей уровень оптимизации, который не является присущим только процессорам Intel. В состав этих оптимизаций входят наборы команд SSE2, SSE3 и SSSE3, а также другие оптимизации. Корпорация Intel не гарантирует доступность, функциональность или эффективность работы любых приложений оптимизации для микропроцессоров других производителей. Содержащиеся в данной продукции оптимизации, предназначены для использования с конкретными микропроцессорами Intel. Некоторые оптимизации, не относящиеся к микроархитектуре Intel, зарезервированы для микропроцессоров Intel. Пожалуйста, см. соответствующее руководство пользователя или справочные руководства для получения дополнительной информации о конкретных наборах команд, к которым относится данное уведомление.

Редакция уведомления № 20110804