linuxgraphics.ru
Навигация
Главная
Статьи
FAQ
Форум
База знаний
Ссылки
Архив новостей
Обратная связь
Поиск
Гость
Имя

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Сейчас на сайте
Гостей: 1
На сайте нет зарегистрированных пользователей

Всего пользователей: 497
Новый пользователь: Stiff
Последние статьи
LProf и реальное упр...
Экспериментальное сж...
Как нарисовать пальм...
Как нарисовать дерев...
Обзор GIMP 2.4
Форматы панорам

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

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

Существует два основных сферических формата: эквидистантный и кубический. Оба могут показывать полную окружающую нас сферу — 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° изображению «рыбий глаз» с надиром в центре и зенитом на краю окружности.

© Erik Krause

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

© Erik Krause

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

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

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

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.info и далее
Лицензия: GNU Free Documentation License
Перевод и компоновка текста: Александр Прокудин


Примечания переводчика

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

Во-вторых, специально для статьи снова обновлён перевод hugin, теперь уже среза CVS от 29 мая 2006. Его можно забрать отсюда. Имейте в виду, что для сборки hugin нужна версия panotools никак не меньше 2.8.1. Если у вас не получилось собрать panotools 2.8.1 (ошибка в PTmender.c, это же касается и версии 2.8.3), добавьте в конец libpano/javastub.c следующие две строки:

void InsertFileName( char* text ) {
}

При желании можно снять срез CVS panotools, где это уже исправлено. Проще всего, разумеется, дождаться следующей версии panotools (2.8.4 и выше).

Как всегда, комментарии по переводу приветствуются.


Опубликовал prokoudine 13/06/2006 02:10:040 Комментариев · 1852 Прочтений - Для печати
Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Copyright © 2007

Hosted by uCoz