Форматы панорам

Формат панорамы в общих словах определяется типом проекции полной или частичной трёхмерной сцены на плоскость, например, экран монитора или распечатку.

Полные сферические панорамы

Существует два основных сферических формата: эквидистантный и кубический. Оба могут показывать полную окружающую нас сферу — 360° вдоль горизонта, 90° вверх and 90° вниз. Для их просмотра нужны специальные программы.

Эквидистантная проекция

В этом случае части поверхности сферы проецируются на плоскость. Этот тип проекции ещё называется «непроекционным», или plate carre, поскольку горизонтальной координатой попросту является долгота, а вертикальной — широта, причём никакой трансформации или масштабирования не производится. Эквидистантная проекция используется при создании карт с тех пор, как она была придумана в 100 году до н.э. Маринусом Тирским. См. подробное описание математической модели этой проекции на странице Mathworld.

В эквидистантном панорамном изображении все вертикали остаются вертикалями, а горизонт становится прямой линией, проходящей через центр. Координаты изображения линейно соотносятся с углом панорамы (pan angle) и углом наклона в реальном мире. Полюсы (зенит и надир) находятся на верхнем и нижнем краях и растянуты по всей ширине изображения. Области рядом с полюсами растянуты по горизонтали.

Пример эквидистантной проекции

Эквидистантная проекция — обычный формат для поворачивающейся (сканирующей) панорамной камеры с объективом типа «рыбий глаз» — 180° «рыбьим глазом», дающим полную сферу при повороте на 360°. Сканирующие камеры иногда покрывают больше 360° за один поворот, но программное обеспечение часто считает, что эквидистантные изображения покрывают 360° по горизонтали и 180° по вертикали, т.е. делают ваши эквидистантные изображения в правильной пропорции 2:1. Посмотрите на значения размеров: файлу в 1650 x 824 пикселов не хватает одного пиксела по короткой стороне, что и приводит в замешательство некоторые приложения.

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

Кубическая проекция

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

Пример кубической проекции

Четыре стороны куба показывают фронт, право, тыл и лево, ещё одна показывает зенит и последняя — надир, причём у каждой поле зрения равно 90°x90°. На каждой стороне куба все прямые линии остаются прямыми, что делает такое изображение удобным для редактирования. См. статью Извлечение и вставка прямолинейных видов, в которой изложены другие варианты извлечения сторон куба из эквидистантного изображения и их обратной вставки.

Изображения в кубической проекции часто используются в качестве исходных просмотрщиками сферических панорам, такими как SPi-V и Quicktime.

«Маленькая планета»

Это несколько необычный формат, в котором земля выглядит как небольшая планета, окружённая пространством (небом), т.е. эквидистантная полная сферическая панорама перераспределяется по виртуальному 360° изображению «рыбий глаз» с надиром в центре и зенитом на краю окружности.

Пример «маленькой планеты»

Частичные форматы

Существует несколько способов показать частичную панораму — панорамы такого типа так или иначе не заполняют всю сферу. Частичные панорамы можно показать напрямую, если они не покрывают больше чем примерно 120° по короткой стороне (но вполне покрывать 360° по большей стороне). Основными форматами этого типа являются цилиндрический и прямолинейный, но возможны и частично сферические панорамы.

Цилиндрическая проекция

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

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

Пример цилиндрической проекции

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

Цилиндрическая проекция является обычным форматом «вывода» сканирующей панорамной камеры (например, Panoscan, Spheron и др.) с прямолинейным объективом, либо от фотоаппарата с вращающимся в горизонтальной плоскости объективом (Горизонт, Noblex).

Другие варианты цилиндрической проекции, которые могут показывать полюса (например, проекция Меркатора), общеприняты в картографии, но как правило не используются при создании панорам.

Прямолинейная проекция

Это тип проекции части поверх сферы на плоскость, также называемый гномоническим (”gnomic”, “gnomonic” или “tangent-plane”). Эту проекцию можно представить себе как прикладывание плоского листа бумаги к сфере касательно по одной-единственной точке и освещение этого листа из центра сферы. На странице Mathworld приведено подробное математическое описание гномонической проекции.

В панорамах это фундаментальный тип проекций, потому что большинство «обычных» объективов (т.е. не объективов типа «рыбий глаз») дают изображение, очень близкое к прямолинейному по всему полю зрения. Камеры с диафрагмой малого сечения (pin-hole cameras), по сути дела, обеспечивают точную касательную раскладку сферы на плоскость детектора (detector plane), причём примерно то же действительно для большинства фотографирующих устройств (в том числе, любительских камер). Таким образом, это самый популярный тип проекции изображений для частичных панорам.

Пример прямолинейной проекции

Основополагающее свойство прямолинейной проекции состоит в том, что прямые линии в реальном трёхмерном пространстве накладываются на прямые линии в спроецированном изображении. Это свойство делает прямолинейные изображения крайне полезными для печати панорам с не слишком большим диапазоном долготы или широты (например, <120°). Многие средства просмотра панорам, показывающие только часть картинки за раз, делают это, используя прямолинейную проекцию (вне зависимости от того, в какой проекции находилось исходное полное сферическое изображение).

Кубическая проекция является особым подвидом прямолинейной проекции.

Арочная проекция

Это особый тип цилиндрической проекции, при которой панорама принимает вид арки. Подробности о создании такой панорамы при помощи PTGui можно узнать в соответствующем разделе статьи «Необычные проекции».

Пример арочной проекции

Частично сферическая проекция

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

Пример частичной сферической проекции

Поддерживаемые типы проекций в свободном ПО для создания панорам

Panotools и Hugin: эквидистантная, цилиндрическая, прямолинейная, полнокадровый «рыбий глаз», стереографическая, Меркатора, поперечная Меркатора и синусоидная.

Свободные и бесплатные просмотрщики панорам

Полностью просмотрщики панорам для разных платформ перечислены в исходной статье. Здесь же приведены ссылки лишь на свободные и бесплатные просмотрщики, работающие под Linux.

PTViewer

  • написан на Java;
  • показывает эквидистантные и цилиндрические панорамы, причём горизонтальный угол обзора равен 360°, вертикальный — 0°-180°;
  • показывает прямолинейные панорамы через опциональное расширение PTZoom;
  • показывает панорамы форматов Quicktime QTVR panoramas (цилиндрические и кубические) и Object (через расширение PTMViewer);
  • есть функции перемещения, наклона и масштабирования, полноценная навигация с мыши и клавиатуры;
  • возможность интерполяции с использование алгоритма Lanczos2;
  • версия на сайте Хельмута Дерша новее и лучше той, что на SourceForge.

Immervision PURE Player

  • написан на Java;
  • показывает цилиндрические, эквидистантные, кубические и плоские панорамы;
  • полноэкранный просмотр в высоком разрешении;
  • быстрый движок отрисовки;
  • поддерживает формат файлов OpenPanorama file;
  • доступен в виде бета-версии.

Panoglview

  • написан на wxWidgets 2.4.x;
  • для отрисовки использует OpenGL;
  • показывает эквидистантные панорамы;
  • в настоящее время его можно скачать со страницы hugin.

Источник: Статья о форматах панорам на panotools.org и далее
Частичные авторские права на фото: Erik Krause