Как сделать панораму

Забираясь вверх по склону ай-петринской яйлы, вы и подозревать не могли, что всего через каких-то пять метров окажетесь на гребне скалы, за которой начинается море. При виде восхитительного пейзажа пальцы конвульсивно давят по кнопке спуска затвора вовремя оказавшейся под рукой камеры. Но по возвращении домой оказывается, что сделанные фотографии, какими резкими они ни были бы, не передают всего объёма картины, увиденной вами. У вас словно украли часть пейзажа.

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

Есть два способа решить эту проблему. Первый — снимать широкоугольным объективом, а затем в цифровой копии на компьютере отрезать «лишнее» сверху и снизу. Вариант это далеко не идеален, посему рассмотрим гораздо более перспективный второй — сделать панораму.

Принцип создания панорамы чрезвычайно прост. Вы делаете один кадр, затем поворачиваете камеру вправо или влево так, чтобы в кадре осталась часть пейзажа из предыдущего кадра и делаете ещё один снимок. Затем ещё раз поворачиваете камеру — и так пока не надоест.

Кроме того, панораму можно снимать в два-три ряда, а ещё лучше — вертикальными кадрами. Правда во втором случае штатив становится скорее помехой. Крайне желательно, чтобы при съёмке панорамы оптическая ось была строго горизонтальна, а экспозиция была заблокирована.

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

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

Обычно рекомендуется указать не меньше четырёх пар контрольных точек для каждой пары изображений, с тем чтобы панорама не выглядела перекошенной. Это принцип действует и для программы Hugin, на примере которой я и расскажу о том, как в GNU/Linux клеить панорамы.

Hugin — это графический интерфейс к серии программ Panorama tools. Помимо пакетов с исходным кодом в природе встречаются бинарные пакеты для разных дистрибутивов.

Запустите программу и добавьте в проект фотографии в таком порядке, чтобы первой была крайняя слева фотография, а последней — крайняя справа. Добавив исходные фотографии, перейдите со вкладки «Фотографии» на вкладку «Контрольные точки». В левой части откройте фотографию с номером «0», в правой — фотографию с номером «1». Это будет первая пара фотографий.

На фотографии «0» укажите курсором в виде окружности максимально контрастный фрагмент снимка — например, какой нибудь резкий выступ скалы на фоне моря. Подождите, пока программа пройдётся по парной фотографии «1», чтобы найти на ней аналогичный фрагмент. Если точка определена правильно, щёлкните мышкой по кнопке «Добавить» внизу.

Если вы всецело полагаетесь на программу, просто выставьте справа флажок «Сразу добавлять точку». Добавив четыре пары контрольных точек, щёлкните мышкой по кнопке со стрелкой, указывающей направо, чтобы перейти к следующей паре фотографий, и повторите описанную выше процедуру.

Как только с добавлением минимального количества контрольных точек для всех пар будет покончено, переключитесь на вкладку «Оптимизатор». Здесь необходимо выбрать способ, при помощи которого программа совместит изображения по контрольным точкам так, чтобы исключить появление швов.

Что касается способов, то они отличаются друг от друга лишь типом дополнительной коррекции. Например, если злой рок настиг вас в момент съёмки на коротком конце зума панорамы близко находящихся объектов, выберите способ оптимизации «Позиции с учётом бочки (y,p,r,b)». И программа тихо и мирно уберёт «бочку», заботливо «сколоченную» вашими же руками.

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

Теперь остаётся разобраться с ещё одной «засадой». Дело в том, что мы с вами живём в мире, где всё постоянно движется: деревья от ветра, облака — от него же, собачки, человечки… Пока вы меняли ракурс съёмки, облачко переместилось и солнце выглянуло. Солнце выглянуло — освещение поменялось, а значит где-то трава стала светлее, другое облачко — белее, ну и так далее. На панораме такая смена освещения будет выглядеть так, как будто кто-то осветлил её по вертикали в несколько полос, причём границы между этими полосами будут видны невооружённым глазом.

Для того, чтобы сгладить этот эффект, после склеивания Hugin проходится по результату программой enblend, которая делает границы склеенных снимков плавно перетекающими друг в друга. Enblend скачивается и компилируется отдельно.

При желании эту программу можно запускать из командной строки, но в нашем случае она попросту должна быть скомпилирована и установлена перед запуском процесса сшивки панорамы. Остаётся добавить, что при использовании Enblend на вкладке «Сшиватель» нужно указать значение растушёвки равным нулю.

Всё готово? Тогда щёлкните по кнопке «Сшить!» и ждите результата.

К вопросу о производительности. Если панорама клеится из нескольких файлов в формате JPEG, когда размер каждого из них при всём желании никак не больше 3 Мбайт, то на время сшивки можно спокойно переключиться на соседний виртуальный рабочий стол и проверить почту или убить пару монстров (если успеете). На скорости работы почтового клиента или прорисовке юнитов неприятеля это сильно не отразится. А вот если вы скормили Hugin десяток полноразмерных 16-битных файлов в формате TIFF, лучше просто уйти пить чай, чтобы не слышать надрывное жужжание жёсткого диска.

Тем, кто пользуется цифрозеркалками со сменной оптикой, будет интересно поковыряться во вкладке «Камера и объективы», где можно указать массу параметров для текущего объектива вроде угла обзора, фокусного расстояния при съёмке, кроп-фактора и прочего. Hugin умеет читать такие данные из EXIF-тэгов ваших фотографий. Это, в конечном итоге, позволяет добиться более естественного вида панорамы.

По результатам сшивки панорамы вам однозначно захочется кадрировать полученное изображение, чтобы избавиться от неровных краёв. Под GNU/Linux вашим инструментом с большой долей вероятности будет GIMP, который до серии версий 2.5-2.6 работать с 16 битами на канал не будет. Потеря части цветовой информации будет заметно ощутима в том случае, если вы на всех стадиях подготовки панорамы предполагаете работать с 16-битными TIFF (а значит и снимать в RAW). Как только в производственной цепочке появляется JPEG, битность на канал автоматически независимо от инструмента обработки понижается до восьми. Это ограничения формата JPEG.

Поскольку разглядывать панорамы с экрана имеет смысл в том случае, если у вас 23-дюймовый широкоформатный Apple Cinema, следующим шагом после сшивки будет запись файла на CD, который будет отдан в фотолаб. Фотолаб тоже при любом удобном случае помашет ручкой вашему 16-битному на канал снимку и сделает его 8-битным на канал.

Итого, если 16-битная обработка для вас принципиально важна (а ей всё-таки не стоит пренебрегать), рекомендую использовать свободный Cinepaint, коммерческий с закрытым кодом Pixel32 (цена вопроса — от $32 до $100) или покорно ждать интеграции GIMP с GEGL, теперь уже точно намеченной на осень 2005. Пользователи GIMP 2.3-2.4 могут заметно упростить себе жизнь, попросив в любимом фотолабе ICC-профиль их принтера и подключив его через вкладку «Управление цветом» («Color management») в диалоге настройки приложения.

И последнее. GNU/Linux не была бы такой популярной операционной системой, если бы на каждый vim не приходился свой Emacs. Так и в случае с панорамами всегда есть иные варианты решения задачи.

Во-первых, существует модуль для GIMP под названием Stitch Panorama. Он работает при условии, что этот графический редактор собран с поддержкой расширений на Python. Проверить это просто: посмотрите в меню окна GIMP с любым изображением. Если там есть Python-Fu, значит всё в порядке. Если нет — просто пересоберите GIMP с ключом —enable-python.

Имейте в виду, что Panorama stitch нужен GIMP версий 2.2.x. Любые версии ниже 2.2, а также новые (от 2.3.0 и новее) для этого расширения пока или уже не подходят. Скопируйте файл stitch_0.9.5.py в каталог ~/.gimp-2.2/plug-ins/. После перезапуска GIMP вы найдёте это расширение в меню «Расш.->Утилиты» основного окна GIMP.

К файлу сценария прилагается очень внятно написанная документация в формате PDF. Но поскольку принцип действия тот же самый, зарываться в неё с головой вам не придётся. Только не забудьте пройтись по конечному файлу программой enblend.

Во-вторых, есть приложение autopano-sift, написанное на Mono/C# и предназначенное для автоматического определения контрольных точек. Оно прекрасно интегрируется с Hugin, выглядит как один большой мастер создания панорам и рекомендуется для новичков, а также тех, кто не хочет вручную указывать Hugin контрольные точки. Полученный в результате работы программы PTO-файл можно открыть как проектный файл Hugin.

Напоследок хочется пожелать вам ещё раз как следует обдумать вопрос инвестиций в штатив. Нет ничего обиднее шевелёнки в интересном кадре.


Комментарии автора

С момента публикации статьи в журнале кое-что изменилось. В частности:

  1. В настоящее время Cinepaint под именем Glasgow переписывается на библиотеке графических элементов FLTK.
  2. Pixel32 теперь называется просто Pixel т больше не обновляется.
  3. GIMP 2.4 давно выпущен.
  4. Не стоит забывать о графическом редакторе Krita из состава KOffice, который также умеет работать с CMYK- и LAB-изображениями, к тому же, 16-битными.
  5. Многие, если не все упомянутые приложения можно поставить из репозитория пакетов для вашего дистрибутива, не прибегая к сборке из исходного кода.

Немало полезной информации можно найти в вики портала panotools.info.

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*