Русский Русский English English

Форматы хранения 3D-стерео изображений

Стереопара представляет собой два слегка отличных изображения одинакового размера, записанные для левого и правого глаза (с двух ракурсов камеры). Эта пара может быть представлена в файле в самых разнообразных вариантах:

  • Моно - представлено только одно изображение (нет стерео)
  • Два потока - каждый ракурс сохранён в отдельном потоке или файле
  • Перекрёсная пара, параллельная пара - два изображения расположены в горизонтально (Side-by-Side)
  • Вертикальная пара - два изображения расположены вертикально (Over/Under)
  • Чересстрочно - ракурсы чередуются через каждую строку (устаревший формат)
  • Анаглиф - изображение подготовлено для очков со цветофильтрами (устаревший формат)
  • Чередование кадров - ракурсы чередуются каждый кадр в потоке (Frame-sequential)
  • 2x720p в 1080p - два 720p ракурса упакованы в 1080p изображение (использовался некоторыми кабельными TV Европы)

Для корректного отображения программа должна знать, в каком формате сохранена стереоинформация. sView определяет исходный формат используя следующие механизмы:

  • Несколько потоков (*.mpo, *.mkv, *.wmv). Два видеопотока одного размера автоматически определяются как стереопара с левым ракурсом в первом потоке.
  • JPEG изображение содержащее JPS маркер (VRex расширение).
  • PNG изображение содержащее sTER маркер (Extensions to the PNG).
  • WMV метаданные (*.wmv). Следующие теги интерпретируются sView:
    • StereoscopicLayout определяет один из стереоформатов (SideBySideRF, SideBySideLF, OverUnderLT, OverUnderRT)
    • StereoscopicHalfHeight и StereoscopicHalfWidth определяют анаморфное видео
    • StereoscopicHorizontalParallax задаёт разделение между ракурсами в пикселях
  • MKV метаданные (*.mkv, *mkv3d). Спецификации формата Matroska включают отдельные поля определяющие стереоформат (StereoMode). FFmpeg библиотека конвертирует эту информацию в форме метаданных потока в тег STEREO_MODE (со значениями mono, right_left, left_right, bottom_top, top_bottom, row_interleaved_rl, row_interleaved_lr, block_lr, block_rl, anaglyph_cyan_red, anaglyph_green_magenta). Механизм обраюотки метаданных в sView не привязан к формату *.mkv, а значит данный тег может быть использован и в других контейнерах.
  • h264 SEI сообщения (покадровая информация, *.mp4, *.mkv). Некоторые кодеки могут хранить информацию об исходном стереформате в каждом кадре. С технической точки зрения такая особенность позволяет менять стерео/моно в рамках одного видеопотока (что может быть полезно в вещании). FFmpeg передаёт эту информацию в виде структуры AVStereo3D - таким образом sView сможет прочитать её из любых декодеров FFmpeg, поддерживающих данную функциональность сейчас или в будущем.
  • Расширение файла (*.pns, *.jps). Файлы изображений с расширениями *.pns (PNG изображение) и *.jps (JPEG изображение) интерпретируются sView как горизонтальная стереопара с правым ракурсом идущим первым.
  • Имя файла. sView поддерживает идентификацию стереоформата по специальным суффиксам в имени файла:
    • half-ou, -hou, -abq определяют анаморфную вертикальную стереопару
    • half-sbs, -hsbs, -lrq, -rlq определяют анаморфную горизонтальную стереопару
    • -ba, -ab определяют вертикальную стереопару
    • -sbs, -lr, -rl определяют горизонтальную стереопару

Формат анаморфной горизонтальной или вертикальной стереопары появился на вскоре после выхода первых бытовых 3D-стерео телевизоров с целью совместимости со встроенными проигрывателями в этих телевизорах а также с огромным парком аппаратных проигрывателей, не поддерживающих HDMI 1.4a+ стандарт передачи данных. Видео, сохранённое в этом формате, имеет искажённые пропорции (пиксель сплющен горизонтально или вертикально), идентифицируя себя как обычное видео формата Full HD 1080p (1920x1080) с соотношением сторон 16:9. Оба параметра важны для совместимости - существующие проигрыватели, как правило, были не способны декодировать видео большего разрешения, а пропорции 16:9 предотвращали масштабирование или обрезание картинки при передаче её по каналу HDMI. В целом формат был придуман как временное решение, однако прижился на более длительный срок, чем ожидалось…


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

Side-by-side

Ракурсы хранятся целостностно по-горизонтали (то есть невооружённым глазом видны две картинки, расположенные бок о бок по-горизонтали). Принято хранить ракурсы в порядке: правый, левый (так называемая “косоглазая” или “перекрёстная” стереопара), поскольку эта последовательность используется при чтении *.jps (JPEG Stereo) и *.pns (PNG Stereo) изображений программами просмотра NVIDIA (идёт в комплекте со стереодрайвером), sView и многими другими. Существует также вариант “параллельной” стереопары (порядок: левый, правый). Среди стереолюбителей даже возникают прения по поводу правильной очерёдности ракурсов. В целом, это самый удобный формат для хранения стереофото и широко распространён. При этом для видео чаще используется параллельная стереопара.

Over/Under

В данном формате ракурсы хранятся целостностно по-вертикали (то есть невооружённым глазом видны две картинки, расположенные по вертикали). Последовательность ракурсов не стандартизирована. Это самый распространённый на сегодня формат для хранения стереоскопических видеоматериалов, но практически не используется для картинок.

Interlaced (чересстрочный)

Ракурсы хранятся не целостностно, а по-строчно: строки соответствуют по-очереди левому/правому ракурсам. При ярко выраженном стерео (левый и правый ракурсы заметно отличаются), такая картинка в исходном (не стерео) виде выглядит будто с “помехами”. Изначально, этот формат возник, видимо, после появления на рынке стереодисплеев, для которых он является родным. Сегодня формат практически не используется для хранения.

Anaglyph (Анаглиф)

Формат непосредственно связан с методом для его просмотра - цветными анаглифными очками. Ракурсы наложены друг на друга, а разделение происходит по цвету. Этот формат легко определить по красно-голубому двоению.

Существует несколько вариаций анаглифного изображения, в зависимости от используемой схемы разбиения цветового пространства RGB (Red Green Blue - красный, зелёный, синий) на две части (для каждого ракурса). Красно-голубое разделение = R + GB; изумруд+пурпур = RB + G; жёлто-синий(ColorCode) = RG + B. Все эти варианты анаглифа в той или иной степени использовались в фильмах. Выбор на стадии производства делается как правило исходя из цветовой окраски фильма. Выбор левый/правый в различных фильмах также не одинаков (возможно это связано с желанием избежать отчислений по глупым патентам).

Использование данного формата было оправдано в те годы, когда альтернативы анаглифным очкам были крайне малочисленны. Не требуется особого проигрывателя или дисплея - необходимы лишь сами очки с определёнными цветофильтрами. Такое изображение НЕВОЗМОЖНО преобразовать в полноцветную стереопару (для просмотра с помощью других технологий). Однако существуют алгоритмы, позволяющие относительно качественно ‘раскрасить’ стереопару, если в наличии есть один полноцветный ракурс (что достаточно часто встречается). К счастью, анаглифное кинопроизводство выкидывается сегодня с рынка в пользу полноцветного стерео.

Существует также особая форма спектрального разбиения стереопары - Dolby3D, с более тонкой нарезкой спектральных разделительных линий. Он используется в кинотеатральных системах для вывода стерео с очками (качество много выше анаглифного), но НЕ для хранения стереоматериалов.

Как определить правильную последовательность?

Если вы испытываете сильное напряжение при просмотре изображения или не чувствуете объёма, возможно материал сохранён в обратной последовательности. Попробуйте поменять ракурсы местами и проверить свои ощущения снова. Если вы убедились, что материал с обратной последовательностью, то сохраните картинку с рекомендуемой последовательностью или пометьте доступным способом, если это фильм (чтобы каждый раз не проверять). Некоторые программы для проигрывания стереоскопических видеоматериалов позволяют сохранять выбранную информацию в специальном “ярлыке” для каждого файла.

Copyright © Kirill Gavrilov, 2008-2017