Создание 3D-панорамы. Редактирование проекций и создание 3D-панорамы
Продолжаем серию уроков “Создание 3D-панорамы”
В предыдущих статьях было рассмотрено:
1. По каким принципам надо снимать, чтобы фотографии сшились в единую панораму
2. На примере одной из программ, была показана последовательность действий для создания сферической проекции панорамы
В этой статье отредактируем изображение панорамы, полученное в предыдущем уроке, достроим зенит и создадим 3D-панораму.
Скачать панораму, полученную во второй части серии уроков (6.6 Мб)
Вместе с тем я рекомендую, создать эту панораму самостоятельно, потому как в данной статье я буду ссылаться на выводы полученные в процессе ее создания.
1. Программное обеспечение для работы с панорамами
Нам потребуются программы:
1) Для работы с проекциями: Pano2VR (ссылка на триал-версию).
2) Для создания 3d-панорамы на основе сферической проеции:
Данные программы основаны на функционале просмотрщика панорам krpano. Этот просмотрщик имеет широкие возможности по созданию 3d-панорам, но при этом не имеет графического интерфейса. Все редактирование панорамы осуществляется через командную строку и редактирование xml файлов.
Autopano Tour предлагает функционал krpano в более удобном и привычном виде, но вместе с тем требует лицензию на krpano. Без этой лицензии у вас будут ограничения на разрешение 3D-панорамы.
Купить лицензию на krpano можно тут.
3) Для работы с изображениями, само собой, потребуется Adobe Photoshop.
2. Заполнение зенита
На этом этапе необходимо панораму привести к необходимым размерениям.
У полной сферической проекции панорамы обзор составляет 3600 по горизонтали и 1800 по вертикали. Следовательно в сферической проекции соотношение сторон должно быть два к одному.
В нашей панораме получилось разрешение 7066х3272, а для сферической проекции необходимо 7066х3533.
По прошлому уроку мы видели, что исходя из значения угла Phi, у нас получилось что от горизонта до надира у нас полное заполнение (т.к. Phi Min = 900), а от горизонта до зенита нет (т.к. Phi Max < 90). Значит в данном случае нужно заполнить панораму в верхней части
Открываем панораму в Photohop-е
Главное меню (которое в самом верху) -> Image -> Canvas Size. Ставим Anchor в нижнюю часть квадрата и устанавливаем Height = 3533.
А что делать если в панораме присутствуют недостроенные и зенит и надир?
В этом случае определите линию горизонта, и дозаполните до 1/4 ширины выше и ниже горизонта.
Например, получившаяся панорама имеет разрешение 10000х3500, а линию горизонта на уровне 2000 пикселей от верхней границы.
Получается, что необходимо достроить вверх (10000/4)-2000=500 пикселей, а вниз (10000/4)-(3500-2000)=1000 пикселей.
В результате получится высота 3500+500+1000=5000 пикселей, т.е. ровно половина от ширины. Условия соотношения сторон два к одному соблюдаются.
3. Преобразование из сферической проекции панорамы в кубическую
Из-за того, что в сферической проекции (подробнее о проекциях в первой статье) в верхней и нижней границе присутствуют сильные искажения, редактирование изображений в этих областях очень затруднительно.
Для того чтобы достроить зенит – преобразуем панораму из сферической проекции в кубическую.
Запустите программу Pano2VR
В область Импорт из проводника или файлового менеджера перетащите файл панорамы.
Программа автоматически попытается определить тип проекции. В данном примере Pano2VR тип проекции установила верно – эквидистантная (другое название сферической проекции)
Вместе с тем, если присутствует предварительное заполнение надира или зенита, то иногда она это делает неправильно. Если такое произошло – нажмите кнопку Выбрать и вручную укажите нужный тип.Для того чтобы изменить тип проекции нажмите кнопку Изменить, после чего откроется окно преобразования текстуры.
Выберите тип проекции Стороны Куба и нажмите Process
Программа Pano2VR может работать с несколькими типами проекций: эквидистантная, цилиндрическая и кубическая.
Кроме того в списке типов есть различные стрипы, кресты, Т-проекции. По сути это таже кубическая проекция, отличающаяся лишь тем как расположены отдельные стороны куба в изображении панорамы. Данные типы могут пригодится, когда необходимо редактировать в панораме объекты которые находятся сразу на нескольких сторонах куба.
Например, если большую часть панорамы занимает длинное здание, на котором получились дефекты (изломы, засечки).
В этом случае, при устранение дефектов, в таких проекциях удобно следить, чтобы стороны куба хорошо стыковались друг с другом. Вместе с тем, здесь есть минус – большой размер выходного файла, так как изображение панорамы в таких проекциях имеет большее разрешение, и поэтому его сложнее будет редактировать.
4. Редактирование панорамы
Итак, после преобразование панораму из сферической в проекцию Стороны Куба мы получили 6 файлов. Особое внимание следует уделить сторонам надира и зенита (они под номерами 5 и 6). В данной панораме сторона надира не имеет дефектов, а вот в центре зенита – черный многоугольник, соответствующий той области, которую мы заполняли в сферической проекции.
Откроем сторону зенита в photoshop-е и достроим кадр зенита. Для этого скопируем часть изображения в новый слой и расположим его поверх черного многоугольника.
Отредактируем его так, чтобы провода располагались по одной линии. Для этого воспользуемся инструментом Free Transform (Главное меню -> Edit-> Free Transform)
. Напомню, что вы можете перемещать углы редактируемой области при помощи мыши если зажать клавишу Ctrl.Применим к слою маску (Главное меню -> Layer->Layer Mask->Reveall All) и при помощи кисти замажем резкие границы слоя.
После чего воспользуемся штампом, чтобы скрыть небольшой перепад яркости.
Теперь кадр зенита достроен.
Выделим все 6 файлов сторон куба и перетащим мышкой в область импорта в программе Pano2VR.
Затем нажмем кнопку Изменить и преобразуем панораму из кубической проекции обратно в эквидистантную.
В результате получилась полная сферическая проекция панорамы с углами обзора 360х180.
5. Создание 3d-панорамы.
Запустим программу Autopano Tour.
Перетащим файл панорамы из проводника или файлового браузера в левую верхнюю область окна программы и кликнем по самой панораме.
Меню Hotspot Editor
Здесь можно указать месторасположение солнца (для создания линзовых эффектов), и обозначить точки перехода между панорамами.
Точки перехода применяются в виртуальных турах, и при их помощи можно перейти от просмотра одной панорамы к другой.
В текущем уроке мы пока не создаем виртуальный тур, а солнца на панораме не видно за низкими облаками. Поэтому в данном меню нам настраивать нечего.
Меню 3D Editor
Здесь вы можете посмотреть превью будущей 3D-панорамы. Покрутите проекцию, определите понравившийся ракурс, нажмите правую кнопку мыши и выберите set a start position. С этой точки будет запускаться ваша 3D-панорама.
В этом эдиторе Yaw, Pitch — это углы по горизонтали и вертикали на которые повернута камера.
Fov — угол зрения. Влияет на угловые размеры изображаемого пространства и перспективные искажения картинки. Тут угол можно поставить исходя из своих предпочтений (я обычно ставлю fov = 55)
Вкладка Panorama Properties
Здесь указываются основные свойства панорамы.
Field of view. Углы обзора панорамы. В данном случае у нас панорама с полным обзором, поэтому выставлено Horizontal=360, Vertical=180.
Autopano Giga при сборке панорамы сохраняет значения углов в самой панораме (в файлах изображений имеются специальные служебные области, куда программы могут прописывать необходимые им данные).
Autopano Tour считывает параметры оставленные Autopano Giga или пытается автоматически вычислить углы (как в нашем случае).
Но иногда происходит следующая ситуация: Autopano Giga прописала углы в файл, а мы отредактировали панораму через Photoshop и Pano2VR.
В процессе редактирования искусственно изменили реальные значения углов. Например, как в нашем случае, мы достроили зенит и довели вертикальный угол обзора до 180. И получается что в файле прописаны старые углы обзора, а исходя из соотношения сторон панорамы, видно что углы изменились. Autopano Tour в такой ситуации не всегда может правильно выставить углы обзора. Поэтому необходимо перепроверять значение этих параметров.
А что тогда такое Vertical offset?
Данный параметр показывает насколько градусов надо сместить линию горизонта если угол Phi Min не равен Phi Max (подробнее об этих углах в предыдущей статье).
Горизонт в 3d-панораме должен проходить через центр, когда камера находится горизонтально. Но если Phi Min не равен Phi Max, то расстояние в пикселях от горизонта до верхней границы и от горизонта до нижней не равны друг другу. В этом случае необходимо сместить панораму по вертикали, чтобы выровнять положение горизонта.
Vertical offset = (Phi Min+ Phi Max)/2
Здесь следует учитывать, что Phi Min идет со знаком “-”.
Pictures parameters
Preview Width
Перед тем как панорама полностью загрузится, чтобы пользователь не скучал перед черным экраном, показывается превью. Здесь задается ширина данного превью. По умолчанию данный параметр равен 800, что вполне подходит для большинства случаев.
Jpeg Quality
Изображение для панорамы кодируется в jpeg-файл. Здесь устанавливается значение качества. Если панорама подготавливается для интернета, то рекомендуется устанавливать качество 6-9.
Cube Face Size /Partial Panorama Width
Изображения для 3D-панорамы сохраняются в кубической развертке. Если панорама сферическая – то предлагается ввести ширину стороны куба (Cube Face Size). Для интернета в этом случае подойдет значение 1500-2000.
Если панорама с углом обзора по вертикали не 180, то здесь необходимо ввести ширину панорамы в сферической развертке. Опять таки, если панорама подготавливается для размещения в интернете, подойдет значение 5000-7000.
Если нажать на кнопку Compute Optimal Size, то программа предложит свое значение с точки зрения оптимальности Cube Face Size /Partial Panorama Width. Вместе с тем предложенные значения не всегда подходят.
Nadir Patch
Если в надире вы хотите разместить логотип, или какое-либо изображение то выберите здесь файл и отрегулируйте размер этого изображения (параметр Scale)
В данном примере мы не будем использовать эту возможность.
Camera Parameters
Yaw, Pitch определяет начальные углы камеры (эти параметры определяются автоматически, если в 3d editor-е использовалась функция set a start position)
Fov — угол обзора камеры.
Следует заметить, что Fov камеры и Fov в 3d Editor-е это независимые значения. Для создаваемой 3d-панорамы необходимо выставить Fov именно в Camera parameters. В данном случае установим Fov=55.
Параметры Min и Max определяют соответственно минимальный и максимальный fov камеры, если пользователь будет изменять масштаб. Т.е. эти параметры определяют в каких пределах пользователь может приближать и удалять картинку.
Поставим Min=20, а Max=100.
Вкладка Project Properties
First Displayed Panorama
Если вы создаете виртуальный тур, состоящий из нескольких панорам, то здесь здесь можно выбрать, какая панорама будет показываться первой.
Insert navigation menu
Позволяет вставить навигационное меню. Оно показывается в нижней части панорамы.
Use auto rotation
Использовать автовращение. Если пользователь некоторое время не двигает мышкой, то панорама начинает плавно вращаться по горизонтали.
Add full screen button
Позволяет возле навигационного меню поместить кнопку для просмотра панорамы в полноэкранном режиме.
Insert panoramas list
Позволяет разместить разворачивающийся список панорам (актуально для виртуальных туров с множеством панорам). После выбора данной опции есть возможность определить угол, в котором будет выводиться данный список.
Logo
Данная опция позволяет вывести логотип поверх панорамы. Также можно задать ссылку на сайт, которой будет открываться при клике по логотипу. После выбора данной опции появится возможность определить угол, в котором логотип будет выводиться.
Export
В данном пункте можно настроить параметры экспорта.
3d-панорама собирается из нескольких файлов:
— Swf – исполняемый флеш файл панорамы.
— Xml – текстовый файл с описанием настроек панорамы.
— Ряд jpg файлов панорамы, которые представляют собой набор файлов изображений панорамы в кубической проекции.
Напрямую работать с этими файлами нет необходимости, программа Autopano tour может сама все оформить. Вместе с тем надо указать как именно ей необходимо собирать 3D-панораму.
Embed all data
Данная настройка позволяет упаковать все вышеобозначенные файлы в единый swf-файл. Это удобно для размещения 3D-панорамы в интернете, и для распространения на дисках.
Embed XML files
Эта настройка позволяет определить, надо ли упаковывать XML файл в общий swf-файл. Возможность “неупаковки” может потребоваться если вы хотите вручную настроить данный XML-файл.
HTML Template
Определяет шаблон создания HTML файла для размещения панорамы в интернете. Данный шаблон показывает в каком разрешении выводить панораму, и возможность разворачивания панорамы на весь монитор.
По умолчанию данные шаблоны находятся в:
папка_куда_вы_инсталировали_Autopano_Giga\Temlates\html
Сюда можно разместить свои шаблоны и после перезагрузки Autopano Tour автоматически добавит в список.
В данном примере выберем шаблон simpleWithFullScreen.html. Это простой шаблон вывода 3D-панорамы c возможностью развернуть полностью на экран.
6. Просчет 3d-панорамы и размещение ее в интернете
Теперь мы настроили экспорт изображения панорамы в flash-файл и запускаем на просчет.
— Export Flash
В результате получим 2 файла: swf файл панорамы, и html шаблон для размещения ее в интернете. Оба типа файла можно посмотреть при помощи браузера.
Для того чтобы разместить 3d-панораму в интернете, разместите оба файла на вашем хостинге, и укажите ссылку на html-файл.
Финальная 3D-панорама.
Таким образом мы пошагово создали 3d-панораму. В этих трех уроках было показана на практическом примере общая последовательность действий, работа со специализированными программами и основные принципы создания 3d-панорам.
Автор статьи: Александр Слободенюк
Сайт: 1panorama.ru
Mail: [email protected]
1panorama.ru — Фотосъемка панорам. Создание интерактивных виртуальных туров.
Прошлые части статьи:
Создание 3D-панорамы. Часть I: Теория и фотосъемка
Создание 3D-панорамы. Часть II: Сборка фотографий в единую панораму
Создание 3D-панорамы. Сборка фотографий в единую панораму.
Данная статья будет посвящена созданию панорамы из готовых снимков.
Как создавать фотографии для панорамы, используя панорамную головку или обходясь без нее, можно ознакомиться в предыдущей статье: “Как создать 3D-панораму. Часть 1: теория и фотосъемка.”
Для этого урока потребуется программа Autopano Giga (ссылка на триал-версию). В примерах будет использоваться версия 2.0.6. В настоящий момент уже доступна версия 2.5. У нее конечно, есть отличия, но они не настолько значительны. Поэтому при помощи этой статьи в ней также можно разобраться.
Чтобы описать работу по созданию 3d-панорамы с практической точки зрения были выложены исходные файлы к панораме Черекского ущелья (Приэльбрусье).
Скачать исходные файлы для 3d-панорамы Черекского ущелья (7.4 Мб)
Вы наверное уже попробовали фотографировать панораму как описано в прошлой статье и получили первые результаты. Вы можете попробовать работать со своими материалами, но лучше использовать предлагаемые фотографии.
Эти снимки хорошо сшиваются в панораму, но при этом имеют некоторые типичные проблемы которые будут разобраны в этой и следующей статье.
Кроме того здесь отсутствует снимок зенита. Вернее он первоначально был, но специально не был положен в архив, чтобы показать в последующем уроке как можно достраивать зенит панорамы.
Как видно, данная панорама была сфотографирована в 2 ряда, плюс к этому был создан снимок надира. Фотография надира сделана с рук и поэтому она несколько не точная.
Плюс к этому видны лишние элементы (нижние конечности). Но в большинстве случаев Autopano Giga хорошо справляется с этими элементами, и они не проявляются в готовой панораме.
Создание панорамы
1. Обработка и выбор снимков для создания панорамы.
В исходных файлах этот этап уже сделан, в архиве выложены необходимые уже обработанные файлы.
При работе со своими файлами необходимо сделать следующее:
- Выделите снимки, которые относятся к панораме. Среди дубликатов выделите лучшие фотографии. Не следует использовать несколько вариантов одного снимка при сшивке панорам, это усложнит работу со связями в программе сшивки панорамы.
- Если вы снимаете в формате RAW, то необходимо изначально обработать снимки в программе LightRoom. Следует попытаться нейтрализовать засветы и слишком темные тени. Затем необходимо экспортировать в jpg в максимальном качестве.
2. Настройка Autopano Giga.
Откройте Autopano Giga. При первом запуске желательно провести основные настройки программы.
Выберите Главное меню -> Правка -> Параметры
Укажите временную папку на диске где у вас есть 10 и более Гб свободного места.
Когда вы работаете с выложенными файлами Черекского ущелья, то этот параметр не критичен (их разрешение уменьшено). Но когда вы будете работать с реальными снимками, то чем больше у вас снимков и их разрешение, тем больше потребуется свободного места для работы программы.
Также выделите какую-нибудь папку с простым путем. Autopano Giga при создании панорамы может завершить работу некорректно (к сожалению, такое иногда случается). В этом случае временные файлы она не удаляет. Вам придется тогда вручную почистить данную папку.
Если у вас достаточно мощная видеокарта, то активизируйте GPU processing. Нажмите кнопку Check и во вкладке Render проверьте картинку GPU processing. Если она повторяет Reference picture, значит ваша видеокарта поддерживается.
Во вкладке Создание, выберите высокое Detection quality. В этом случае обработка снимков будет происходить дольше, но качество сшивки будет лучше
Так же можете установить Control Points в значение около 100.
Это основные корректировки настроек. Позже, по желанию, можно остальные настройки изменить под свои нужды.
Перезапустите программу, чтобы активировать настройки.
3. Сшивка фотографий в единую панораму.
Итак, у вас открыто главное окно программы Autopano Giga.
Добавьте группу снимков.
Новая группа
Выделите все фотографии Черекского ущелья в проводнике или файловом менеджере и перетащите в пока пустую область группы.
После добавления снимков нажмите —
Создать
После просчета программа сошьет все снимки в единую панораму.
4. Редактирование панорамы в программе Autopano Giga.
Нажмем кнопку редактировать и проанализируем качество сшивки панорамы.
Слева расположены основные информационные элементы меню.
Пункт “Информация”
Качество сборки выражается в виде среднего RMS. Данное число вычисляется в виде средней погрешности при анализе общих областей фотографий. В идеале оно равно от 0.0 до 1.0, что бывает редко.
Чтобы получить такое RMS необходимо очень хорошо отрегулировать панорамную головку (нодальная точка располагается точно на осях вращения, вращающиеся элементы головки не разболтаны и нет прогибов головки от веса оборудования), снимать панорамы без движущихся объектов, а зенит и надир фотографировать с помощью дополнительного оборудования.
К счастью, такое низкое RMS не требуется. Панорамы хорошо сшиваются и с RMS до 5-7. В крайнем случае погрешности, в большинстве случаев, можно быстро поправить в фотошопе.
Пункт “История”
Здесь показаны уменьшенные снимки паноромы и история редактирования. При помощи кнопки Создать снимок вы можете, собственно, создать дополнительный снимок, чтобы сравнить с предыдущим и оценить насколько положительны внесенные изменения в панораму.
Пункт “Слои”
Здесь показаны в виде разворачивающегося списка фотографии которые участвовали в создании панорамы. Вы можете их сгрупировать по определенным признакам (выдержке, фокусному расстоянию и т.д.). Также можно посмотреть свойства снимков и добавить или удалить определенные снимки.
Если вы собираетесь добавлять новые фотографии в панораму обязательно сохраните текущий проект. Данная функция иногда работает нестабильно и может привести к “вылету” программы.
В верхнем меню расположены следующие управляющие элементы:
Сохранение проекта
Отменить/Вернуть внесенные изменения в панораму
Тип проекции
Меркатор – применятся если вы сшиваете несколько снимков для создания фотографии с большим углом обзора по горизонтали и вертикали (но если угол по вертикали близок к 1800 необходимо выбрать тип проекции “Сфера”).
Плоскость – необходима если вы создаете общий снимок со средним углом обзора по горизонтали и вертикали . Если вы видите что получаются сильные искажения, то попробуйте тип проекции “меркатор” или “цилиндр”
Цилиндр – применяется для создания 3d-панорам с большими углами по горизонтали и средними углами по вертикали (около 600)
Сфера – необходима для создания интерактивной 3d-панорамы с большими углами обзора по горизонтали и углами близкими к 1800 градусов по вертикали
В идеале для создания 3d-панорамы применяются панорамы с углами обзора 3600 по горизонтали и 1800 по вертикали, т.е. с полным обзором пространства.
Как оценить какой получившийся угол обзора?
В нижнем правом углу окна показаны числа углов Phi и Theta
В данном случае:
Theta Min/Max (-180/180), т.е. у нас полный обзор по горизонтали в 360 градусов (сложение по модулю значений Min и Max)
Phi Min/Max (-90/76.70). Видно, что по вертикали от надира до горизонта полное заполнение, а от горизонта до зенита нет. Т.е. не хватает как раз снимка зенита. Позже восстановим недостающий снимок в фотошопе.
Три кнопки поворота панорамы на 180 и 90 градусов.
Кнопка изменения угла вращения, наклона, поворота камеры./p>
Кнопка включения режима подгонки. Подгоняется размер панорамы так, чтобы с краев панорамы оставались минимально возможные пустые пространства.
Кнопка ручной обрезки панорамы.
Центральная точка. Позволяет изменить положение центра панорамы. В идеале центральная точка должна находиться на линии горизонта в центре панорамы.
Кнопка автоматического горизонта. Программа попытается определить линию горизонта на основе анализа изображения. Данная функция не всегда работает корректно, а особенно когда линия горизонта явно не видна. На текущей панораме как раз такой случай.
Кнопка “установить вертикали”. Если вы видите что некоторые объекты в панораме выставлены не вертикально, то задайте при помощи этого инструмента вертикали и нажмите Enter.
Режим слоев. Показывает как у вас располагаются снимки на панораме, какой их порядковый номер и какие изменение вносятся в снимок исходя из выбранной проекции.
Каждому снимку в программе присваивается порядковый номер. И если вы хотите совершить над ним какую-нибудь операцию, например удалить из панорамы, то вы можете по этому номеру его легко отыскать внизу окна в разделе меню “Слои”.
Режим перемещения изображений. Если у вас включен в настройках режим GPU processing то здесь вы можете при помощи мыши изменять положение и ориентацию панорамы.
Режим редактирования связей. Один из самых необходимых режимов при работе с панорамами. При нажатие по этой кнопке открывается окно со списком используемых фотографий в панораме и их связей между собой. При этом на предыдущем окне показываются все связи и их RMS.
Исходя из числовых значений и цвета связей можно оценить где в панораме наибольшие погрешности. Видно, что в данной панораме больше всего ошибок при стыковки надира с остальными снимками. Причина такой погрешности в том, что фотография надира снималась с рук.
В данном уроке не будем останавливаться на редактировании связей. В этой панораме все достаточно хорошо сошьется.
Коррекция цвета панорамы. Можно выбрать из несколько типов коррекции.
LDR (Low Dynamic Range) – в местах пересечений фотографий цвет пикселей обрабатывается по специальным алгоритмам изменения яркости снимков с целью выравнивания экспозиции всей панорамы.
HDR (High Dynamic Range) – во главу угла ставится максимальная проработка изображения. Происходит вычисление, в какой из фотографий более детализирован фрагмент изображения. Именно этот фрагмент используется в панораме.
Без цветокоррекции цвета – показываются естественные цвета фотографий. В местах пересечения происходит усреднения цвета.
Auto режим в качестве метода цветокоррекции использует LDR. Обычно в этом режиме панорама получается более контрастной чем по методу HDR.
Фактически, используя описываемый способ сборки панорамы не существенно какой метод вы используете.
Кнопка редактирования якоря цвета
Достаточно обширная тема. Если описывать кратко, то якоря позволяют задать какой снимок является базовым. Под яркость этого снимка происходит цветокоррекция всех остальных фотографий в панораме.
Изменение типа якорей происходит по выбору пункта меню при правом клике мыши.
Обычно используется следующая схема:
- На самый светлый снимок назначается фиксирующий якорь. Лучше всего использовать 1 якорь такого типа. При использовании нескольких фиксирующих якорей получится разноосвещенная панорама.
- На все остальные фото лучше назначить якорь “моно” коррекция экспозиции.
Применим эту же схему и на этой панораме. Получим следующее распределение якорей.
Используя такую схему минимизируются пересвеченные места панорамы.
Вместе с тем если изначально фотографии сделаны с ошибками (неверно выставлена экспозиция или слишком большое изменение экспозиции в соседних снимках), то такая схема может дать сильно контрастную панораму. В этом случае лучше обозначить фиксирующим якорем менее освещенный снимок.
Здесь приводится обычная гистограмма снимка. По горизонтали откладывается яркость (слева черный цвет, справа белый). Высота столбиков показывает количество пикселей такой яркости.
В отдельном уроке, попробую разобрать подробнее работу с гистограммами применительно к анализу и обработке изображений. Для особо интересующихся, в интернете достаточно много уроков на эту тему.
На данный момент мы разобрали основные инструменты Autopano Giga. Наверное может показаться, что слишком много технической информации и сложно в этом всем разобраться. Попробуйте для начала просто поснимать панорамы и посшивать в данной программе не особо вникая в настройки. В большинстве случаев Autopano Giga автоматически обеспечивает приемлемый результат. Создавая свои панорамы вы постепенно освоите функционал этой программы.
Ну а теперь обязательно сохраняем проект и запускаем панораму на рендер (просчет).
Нажимаем кнопку “Собрать”.
Сверху показан размер панорамы, который получится в результате рендера.
Алгоритмы в данной статье разбирать не будем. В целом выставленные по умолчанию настройки дают хороший результат.
Формат
Если используется панорама для размещения в интернете, то можно использовать формат jpg. Если планируется использование панорамы в полиграфии, то лучше выбрать форматы без потери качества (tif или png). В данном случае предполагаем, что панорама нам нужна для интернета.
Слои
Слои – это фотографии, откорректированные с учетом используемой проекции, и применяемые для создания панорамы.
Лучше использовать настройку “один на файл”. В этом случае если возникнут какие-то проблемы в панораме, то можно будет попытаться их устранить, используя материал из полученных слоев.
Если выбрать формат PSD, то можно слои упаковать в сам файл (используется настройка “Внутри”). Вместе с тем, в этом случае, получится очень громоздкий файл панорамы, и достаточно сложно поддающийся редактированию в фотошопе.
Выходной файл
Здесь указываем выходную папку файла.
В имени файла прописываем строку “%a%l”. Это задаст программе шаблон формирования названия файлов так, чтобы получилось уникальное имя файлов панорамы и слоев.
Нажимаем кнопку “Собрать” и через некоторое время получим готовую панораму.
В следующем уроке будет показано, как можно достроить зенит панорамы, как работать с проекциями и как в конце концов получить интерактивную 3d-панораму.
Удачных сборок панорам.
Автор статьи: Александр Слободенюк
Сайт: 1panorama.ru
Mail: [email protected]
1panorama.ru — Фотосъемка панорам. Создание интерактивных виртуальных туров.
“Как создать 3D-панораму. Часть 1: теория и фотосъемка.”
Другие части статьи:
Создание 3D-панорамы. Часть I: Теория и фотосъемка
Создание 3D-панорамы. Часть III: Редактирование проекций и создание 3D-панорамы
Создание 3D-панорамы. Теория и фотосъемка
Панорамная фотография это фотография имеющая большой угол обзора.
3D-панорама – это панорамная фотография спроецированная на сферу или куб, которую можно рассмотреть смещая точку обзора.
Часто на простых цифровых фотоаппаратах существует режим панорамной съемки. Это не совсем то что нам нужно. Чаще всего производителями фототехники под панорамой подразумевается просто вытянутый по горизонтали снимок. Т.е. у обычного снимка обрезается верхняя и нижняя часть. Получается имитация панорамной фотографии.
Вместе с тем, в последнее время производители расширили понимание режима панорамной съемки.
При фотографировании создается несколько снимков, а затем фотоаппарат, или программное обеспечение прилагаемое к нему, сшивают их в единую панораму. Также встречается метод сканирование одним рядом пикселей матрицы пространства при повороте камеры.
Да, благодаря такому подходу можно создать панорамный снимок. Вместе с тем он не позволяет создать 3d-панораму с углом обзора 360х180 (т.е. когда можно посмотреть и на небо и под ноги). К тому же зачастую результат полученной панорамы не так уж и хорош.
Поэтому, в данной статье будет применен другой подход к панорамной съемке: фотографирование по определенным правилам, и последующей склейке полученных снимков в специализированных программах в единую панораму.
Для начала разберемся с основными терминами, и какое они отношение имеют к панораме.
Сферическая панорама (из википедии) – один из видов панорамной фотографии. Предназначена в первую очередь для показа на компьютере (при помощи специального программного обеспечения).
В основе сферической панорамы лежит собранное из множества отдельных кадров изображение в сферической или кубической проекции. Характерной чертой сферических панорам является максимально возможный угол охвата (360х180 градусов), позволяющий полностью отобразить окружающее пространство.
Если изображение сферической или кубической проекции поместить на сферу или куб соответственно, то получим 3d-панораму.
Рассматривается 3d-панорама изнутри сферы или куба. Вращая эту 3d-фигуру, получаем возможность изменения точки наблюдения, а меняя фокусное расстояние – управление масштабом.
Для того чтобы создать сферическую проекцию для 3d-панорамы необходимо сфотографировать все окружающее пространство и сшить их в специальном программном обеспечении.
Кубическую же проекцию можно получить путем преобразования из сферической.
Нодальная точка и параллакс.
Те, кто впервые пытались собирать панораму из отснятых с рук фотографий, часто сталкивались с тем, что часто снимки не сшиваются в единую панораму.
Причина всему этому параллакс – изменение видимого положения объекта относительно удалённого фона в зависимости от положения наблюдателя.
Например, если посмотреть сначала одним, а затем другим глазом, то видно, что картинка изменяется. Особенно это заметно на объектах ближнего плана.
Посмотрим влияние параллакса на снимок при повороте камеры.
Видно, что при повороте камеры происходит смещение объектов ближнего и дальнего плана относительно друг друга. Чтобы этого не происходило необходимо вращать фотоаппарат вокруг специальной точки, называемой нодальной.
Нодальная точка находится, если говорить упрощенно, на оптической оси объектива в месте пересечения лучей (строение объектива показано схематично).
При вращении камеры вокруг нодальной точки смещения объектов ближнего и дальнего плана не происходит.
Расположение нодальной точки индивидуально для каждого объектива.
Для того чтобы фотоаппарат можно было вращать вокруг именно этой точки применяются панорамные головки, которые накручиваются непосредственно на штатив.
Иногда панорамными головками называют обычные шаровые головки обеспечивающие поворот фотоаппарата на 360 градусов. Это не совсем верно.
Снять панораму с разноплановыми объектами при помощи них почти невозможно. Необходимо обеспечить поворот фотоаппарата вокруг именно нодальной точки. А данные головки позволяют лишь просто поворачивать корпус фотоаппарата.
Вместе с тем шаровые головки могут помочь при съемке панорам, когда объекты ближнего плана отсутствуют. В этом случае эффект параллакса будет почти незаметным.
Отдельные модели панорамных головок могут приспособлены только для съемки цилиндрических панорам (фотоаппарат можно вращать только по горизонтали).
Но большинство головок позволяют создавать как сферические, так и цилиндрические панорамы. В этом случае вращение фотоаппарата возможно и по вертикали и по горизонтали
Видно, что при любом вращении головки, точка пересечение вертикальной и горизонтальной оси не смещается. Если расположить фотоаппарат так, чтобы нодальная точка его объектива совпала с вышеобозначенной точкой пересечения, то эффекта параллакса наблюдаться не будет.
Иногда для съемки панорам можно обойтись и вообще без панорамной головки. Что это за случаи рассмотрим чуть ниже.
Как определить где находится нодальная точка у вашего фотоаппарата?
Если у вас зеркальный фотоаппарат, то для вашего объектива наверняка есть информация в интернете. Чаще всего можно найти, если задать запрос в поисковике: “модель_вашего_объектива nodal point”
Если у вас не зеркальный цифровой фотоаппарат или вы не нашли информацию по вашему объективу, но у вас есть панорамная головка, то можно воспользоваться следующим способом:
1. Установите фотоаппарат в панорамную головку. Убедитесь что оптическая ось проходит через центр вращения. Для этого направьте фотоаппарат вертикально вниз. Вертикальная ось вращения должна проходить через центр кадра.
2. На расстоянии 30-50 см установите по центру перед объективом вертикально какой-либо тонкий предмет. Это может быть линейка, проволока, ручка, и т.д.
3. На расстоянии несколько метров установите второй предмет небольшой толщины. Расположите фотоаппарат так чтобы сам фотоаппарат, и два предмета находились на одной линии.
4. Поверните фотоаппарат так, чтобы ближний предмет был возле правой границы кадра.
Теперь перемещайте фотоаппарат вдоль оптической оси объектива до тех пор пока ближний и дальний предмет снова не станут находиться на одной прямой.
Повторите с левой границей.
5. Проверьте правильность найденной точки. Попробуйте повращать фотоаппарат, глядя на экран. Ближний и дальний предметы должны постоянно находиться на одной прямой.
Если вы заметили отклонение повторите пункт 4.
Теперь вы нашли нодальную точку вашего объектива. Она находится точно на пересечение осей вращения. Сделайте пометки на панорамной головке, чтобы в условиях съемки вам не пришлось вновь искать нодальную точку.
Но что делать если панорамной головки пока нет?
Можно попробовать сымитировать эту панорамную головку. Найдите у себя дома что-либо на что можно положить фотоаппарат и вращать его. Это может быть, например, старый проигрыватель пластинок, или тарелка с вращающейся подставкой из микроволновой печи.
Положите поверх, например тарелки, чистый лист. Отметьте на нем центр вращения, и нарисуйте проходящую через него линию.
Расположите фотоаппарат так, чтобы оптическая ось, при взгляде сверху, совпадала с линией. Следуйте пунктам 2-5, сдвигая фотоаппарат вдоль нарисованной линии, пока ближний и дальний предмет не будут находиться на одной линии.
Нодальная точка будет располагаться на пересечение оси вращения тарелки и оптической оси объектива.
Съемка панорам
Итак, мы нашли нодальную точку, и теперь если вращать вокруг нее фотоаппарат то эффекта параллакса наблюдаться не будет. В этом случае фотографии обычно быстро и качественно сшиваются в единую панораму.
Иногда могут возникнуть некоторые проблемы в особых случаях (например: съемка морской панорамы, или леса в ветреную погоду). Но эти случаи заслуживают отдельной статьи.
Съемка панорамы заключается в последовательном фотографировании с поворотом фотоаппарата вокруг нодальной точки.
Рядом расположенные снимки должны иметь общие области в районе 20%. Анализ именно этих областей позволит программе потом сшить все кадры в единую панораму.
Если позволяет ваш фотоаппарат лучше всего снимать в формат RAW+JPG. Формат RAW позволяет исправить некоторые недостатки изображений, а JPG позволяет быстро просматривать снятые изображения.
При съемке панорам необходимо:
- Переведите фотоаппарат в полностью ручной режим (обычно обозначается символом М).
- Поставьте самое малое фокусное расстояние. Настройте свою панорамную головку так, что при повороте от кадра к кадру обеспечивалось 20%-ное перекрытие снимков. Если у вас нет панорамной головки, то необходимо будет запоминать что было сфотографировано на предыдущем кадре и снимать так, чтобы обеспечить необходимое перекрытие снимков.
- Настройте вручную фокусировку так, чтобы у всех объектов съемки была необходимая резкость.
- Чтобы глубина резкости фотографий была достаточной, и если позволяет свет, установите число диафрагмы на более высокое значение (например, F9.0).
- Установите значение ISO исходя из освещенности.
- Скорректируйте выдержку так, чтобы на снимке не было засвеченных и слишком темных областей.
Конечно, если у вас fish-eye объектив с достаточным углом обзора, то вам могут не потребоваться дополнительные ряды кадров. Вместе с тем, в этом случае у вас получится панорама с небольшой разрешающей способностью.
Если у вас вызывают затруднения съемка в ручном режиме, то попробуйте для начала поснимать в автоматическом. Обычно для этого подходит режим съемки “ландшафт” (может называться “природа” или каким-либо подобным образом).
Без панорамной головки, конечно, съемка панорамы усложняется. Основное затруднение – обеспечить поворот фотоаппарата вокруг нодальной точки. Хоть как-то помочь в этом деле может опора фотоаппарата на каком-то вертикальном предмете. Это может быть штатив, или на крайний случай, сук или палка.
В таких случаях постарайтесь выбирать сюжет для съемок, когда ближний план отсутствует, а почти все объекты находятся на дальнем плане. Например, большая поляна в лесу, или центральная площадь города.
Тогда эффект параллакса почти не проявит себя и панорама нормально сошьется.
Как снимать зенит и надир?
Напомню, зенит – это линия перпендикуляра вверх от плоскости горизонта в точке, в которой вы находитесь, а надир – вниз. Т.е. снимок зенита – это если повернуть фотоаппарат вертикально вверх, а надира – вертикально вниз.
Снимать надир можно с рук, или со специальных приспособлений. В любом случае необходимо обеспечить положение фотоаппарата, как будто он стоял бы на панорамной головке. Для этого его можно сначала поставить на головке вертикально вниз, затем отсоединить фотоаппарат и удерживая его на вытянутой руке в таком положении, другой рукой убрать в сторону штатив. И затем сделать снимок надира.
Снимок зенита снимается достаточно просто. Поворачиваем фотоаппарат вертикально вверх и фотографируем. Но если в качестве зенита выступает небо, и на нем нет четких облаков, то фактически этот снимок окажется бесполезным. Программа сшивки фотографий в панораму не сможет определить взаимосвязи с другими снимками, ей просто будет не за что “зацепиться”. В этом случае придется достраивать зенит панорамы в фотошопе. Но об этом уже поговорим в следующих статьях.
Теперь последовательно снимайте кадр за кадром поворачивая фотоаппарат. Если на следующем кадре изменяются условия освещенности, то корректируйте величину экспозиции при помощи изменения выдержки. На зеркальных фотоаппаратах это удобно делать при помощи колесика.
Попробуйте сначала снять один ряд кадров для панорамы. В этом случае получится 3d-панорама с ограниченным углом обзора по вертикали.
Для сферической панорамы (360х180) необходимо уже делать дополнительные ряды таким образом, чтобы обеспечить перекрывание в 20%, и покрыть снимками все окружающее пространство.
Автор статьи: Александр Слободенюк
Сайт: 1panorama.ru
Mail: [email protected]
1panorama.ru — Фотосъемка панорам. Создание интерактивных виртуальных туров.
Другие части статьи:
Создание 3D-панорамы. Часть II: Сборка фотографий в единую панораму
Создание 3D-панорамы. Часть III: Редактирование проекций и создание 3D-панорамы
Как происходит создание 3d сферических панорам и виртуальных туров?
Изготовление качественной виртуальной панорамы – процесс, состоящий из нескольких этапов. Каждый из этапов, даже самый простой, требует специальных знаний, навыков и опыта.
Сначала объект, конечно, фотографируется. Для съемки используется цифровая зеркальная камера со сверхширокоугольным объективом или объективом типа fisheye. Камерой, прикрепленной на стабильном штативе со специальной панорамной головкой, снимается серия кадров.
Для успешной склейки кадры должны перекрываться в местах сшива. Минимально для создания сферической панорамы необходимо два кадра, но такая панорама не будет иметь высокого качества. Обычно для создания панорамы хорошего качества фишай – объективом снимаются 4-8 исходных кадров (при съемке другим объективом исходных кадров нужно больше).
При сложном освещении (большом диапазоне яркости) иногда приходится применять технологию HDRI, в этом случае количество исходных кадров может увеличиться в несколько раз. Наличие в кадре движущихся объектов (люди, автомобили и т.д.) также зачастую требует дополнительных снимков. Время съемки одной сцены варьируется от 5 до 30 и более минут, в зависимости от оборудования, условий и используемой технологии съемки.
Серия исходных снимков
Следующим шагом по созданию 3D сферических панорам является обработка исходных снимков и их соединение в единое изображение – равноугольную (эквидистантную) проекцию панорамы. На этом этапе изображение доводится до совершенства: ретушируются движущиеся предметы и тени, подгоняется цветокоррекция, резкость и т.д.
Равноугольная (эквидистантная) проекция сферической панорамы
Стороны куба — здесь в проекции под названием «Горизонтальный крест»
Далее с помощью специальных программ стороны куба или равноугольная проекция преобразуются в нужный формат 3д сферической панорамы – Flash, HTML5 или другой.
Щелчком по картинке откроется готовая сферическая панорама в формате Flash или HTML5
При создании виртуального тура в каждую сферическую панораму добавляются активные зоны, разрабатывается графическое оформление тура, при необходимости добавляется звуковое сопровождение, всплывающие окна с текстом или картинками и прочие «прибамбасы».
Подробно о технике создания 3D панорам читайте в разделе «Технологии».
Создание сферических панорам для 3D
В этом уроке я покажу вам как делаются современные сферические панорамы с точки зрения практического применения в 3D. Почему то очень многие люди до сих пор думают что для того что бы сделать сферическую панораму необходимо снять шарик покрытый хромом. Причем использовать надо два шара, один с зеркальной поверхностью для снятия отражения, второй матовый, для снятия карты освещенности на которую потому и ориентируются люди освещающие 3D сцену.
На самом деле, уже давно, с приходом цифровых технологий, все поменялось. Теперь для получения сферической панорамы для 3D в идеале необходимо иметь зеркальный фотоаппарат с функциями брекетинговой съемки и фишай(«рыбий глаз») объективом. Объектив фишай дает возможность всего из двух фоток противоположных направлений создать сферическую панораму. Брекетинговая съемка позволяет добиться глубины цвета 32 бита (HDR), так как фотоаппарат за один снимок может захватить только 12-16 бит цвета делается серия снимков с разной экспозицией (или выдержкой), после чего снимки соединяют в одно 32 битное изображение в специальной программе. Для примера монитор компьютера позволяет воспроизвести только 6-8 бит цвета, этого слишком мал из-за чего невозможно прищурившись рассмотреть засвеченные объекты, или присмотревшись рассмотреть темные, потому что там этих цветов просто нет, монитор их отрезал. Чего не допускается делать в 3D графике, программа все должна знать что у вас в тенях и что на свете, иначе картинка будет не контрастная и не реалистичная. Это все равно что использовать ЧБ картинку против цветной, только хуже.
В итоге введение цифровых технологий позволило добиться качественного скачка сразу по нескольким пунктам. Во первых, отснятый материал получается идеального качества, без царапин и пятен, как это бывает на шарах. Во вторых, резко выросло разрешение панорам и как следствие детализация при их использовании. В третьих, резко выросла глубина цвета картинки, с 6-8 бит при съемке шара до 32 бит при съемке без шара, что позволяет ее использовать не только как референс, но и карту настоящего окружения для просчета света и отражений.
Но что делать если нету профессиональной камеры и фишай объектива. Об этом и будет статья, будем делать сферическую панораму имея обычную мыльницу или любительскую зеркалку без функции брекетинговой съемки и без фишай объектива.
Для начало нам понадобиться сам материал. Для этого берем камеру и идем на месте где будем снимать. Выбираем точку и запоминаем ее положения, все снимки должны делаться именно из этой точки, иначе панорама не сойдется. Фотографии лучше делать в портретном режиме, так их потом проще сшить. Сначало делаем один снимок, поворачиваемся на половину зоны видимости видеоискателя(там где раньше был центр должен оказаться край, я для этого примечаю объекты) и делаем следующий снимок, и так пока не вернемся к исходной точке. Так мы получили горизонтальную круговую панораму, теперь надо доснять верх и низ. Для этого поворачиваем камеру вниз на половину зоны видимости и еще раз проделываем такой круг, потом еще раз и снимаем уже пол вокруг себя. Потом по томуже принципу снимаем верх. Принцип хорош тем что пригоден для всех тип камер с любым углом у объектива, причем чем меньше угол тем больше разрешение будет у финальной панорамы. Если имеется функция брекетинговой съемки — пользуемся. Если боитесь что кадров не хватит, смело фоткайте дополнительные, они не помешают, будут только на пользу, особенно стоит обратить вниманеи на точку на которой вы стоите, чтобы сфотографировать точку под собой можно сдвинуться с места. Снимать лучше в ручном режиме, если такой имеется, если нету можно в полуручном или на автомате.
В итоге у нас должен получиться примерно вот такой набор фотографий
Отснятые фотографии
Теперь настало время собирать панорамы, для этого есть множество инструментов но мы рассмотрим два основных это старый Stitcher и современный AutopanoGiga.
AutodeskStitcher
http://usa.autodesk.com/adsk/servlet/pc/index?siteID=123112&id=11390049
Некогда очень хорошая программа которая купила Autodesk и просто перестало ее разрабатывать. Последняя версия датируется 2009 годом, да и в той улучшения только в названии компании. Очень хороший продукт с очень оригинальным подходом к сборке панорам, хорошие возможности по ручной сборки панорам. К сожалению не поддерживает RAW а поэтому перед работой необходимо с конвертировать все снимки в TIFF. Кроме того все картинки должны быть одного размера, не должно быть повернутых снимков.
Работать в ней очень просто и приятно, достаточно открыть программу, нажать добавить снимки и они выстраиваются на полоске снизу. Для начало построения панорамы выбираем первую фотку и вытаскиваем ее на рабочую панель.
- Первая фотография на рабочей области
Далее выбираем следующую картинку, вытаскиваем ее на рабочую панель примерно в то положение где она должна находиться, так программе будет проще сориентироваться. Потом с зажатым cntrl выбираем ту картинку к которой мы хотим привязаться и нажимаем кнопку StitchShot. И все, картинка привязалась к панораме, со следующими картинками действуем по тому же принципу.
Склеивание фотографий
Так собираем полную горизонтальную круговую панораму. Если панорама сама не собралась в круговую последнюю картинку склеиваем как с предыдущей так и с самой первой. После того как собралась горизонтальная панорама можно собирать и низ. Для этого вытаскиваем первую фотку с нижнего ракурса и соединяем ее с самой первой фоткой и снова идем по кругу, Пересекающиейся фотки будут связываться автоматически, т.е. одна фотка в этот раз будет уже привязана к 2-4 другим. Если какая то фотка не может привязаться или привязывается не туда, не пугайтесь, её можно привязать вручную. Для этого выбираем так же выбираем две фотки и нажимаем ManualStitch. В появившемся окне выставляем совпадающие точки, от 6 до 9 будет вполне достаточно, но точки должны быть максимально далеко друг от друга.
- Ручное склеивание панорамы
Если панорама начала не клеиться, попробуйте зайдите с другой стороны, иногда помогает. После того как собрали низ можно собирать вверх, там уже все проще и быстрее. Если какая либо картинка не привязывается можно просто закрепить ее на текущем месте, достаточно просто выбрать Force. Особенно полезно это будет при сборке ясного неба, где привязываться не к чему.
- Forc’им небо вручную
Ну и когда вся панорама будет собрана можно наконец нажать на кнопку рендер, выставить необходимые параметры, и окончательно склеить уже нашу сферическую панораму. Стоит обратить внимание на опцию Blend Mode в различных ситуациях панораму без швов можно и не собрать. После склеивания наша панорама наконец примет свой нормальный вид.
- Получившаяся панорама
Stitcher отличная программа, особенно для своего времени, но к сожалению давно не разрабатывается, многие алгоритмы уступают конкурентам, плохая поддержка форматов, 32 битные картинки можно сделать только если использовалась брекетинговая съемка.
Kolor AutopanoGiga
http://www.kolor.com/image-stitching-software-autopano-giga.html
После гибели Stitcher AutopanoGiga постепенно заняла место лучшей программы для создания панорам. Работает она по принципу максимально автоматической сборки, поддерживает все современные форматы фотографий, позволяет получить 32 битные картинка даже без брекетинговой съемки, достаточно просто снять одно и тоже место с разной выдержки без брекетинга, программа сама все выравняет. Кроме того программа довольно таки точно определяет какие фотки стоит склеить друг с другом и растравляет их в нужное положение.
Работать с программой тоже очень просто. Достаточно выбрать изображения из которых будет собираться панорама и нажать кнопку создать. После чего будет создана панорама.
- Забрасываем изображения в программу и нажимаем создать
Если вам повезет, что бывает крайне редко, панорама будет собрана без ошибок, если нет то придется доводить ее до ума, для этого щелкаем по кнопке редактировать. Происходит переход на окошко в котором предлагается отрегулировать связи вручную. Для этого достаточно либо вручную проставить точки, либо выбрать одинаковые области и программа сама заполнит их однотипными точками.
- Ручное указание идентичных точек
Если в панораме имеются дырки, то необходимые картинки необходимо доставить вручную, для этого догружаем картинку и вручную ставим картинку на том месте где она должна стоит, особенно актуально для ясного неба. Также необходимо выставить горизонт, сама программа его адекватно редко когда его определяет. После всех настроек щелкаем собрать панораму и любуемся результатом.
- Получившаяся панорама
На готовой панораме скорее всего будет несколько неверных элементов. Во первых это не сошедшиеся элементы, происходит это по двум причинам, имеется несколько фотографий одного и того же места но с другого положения, такие копии нужно удалить вручную, и вторая причина это съемка с рук, с рук не возможно снять всю панораму с одной и той же точки, из-за чего возникает смещение которое программа не способна восполнить. Для того чтобы избавиться от таких смещений существуют специальные крепления на штатив, но стоит эти крепления дороже чем топовые зеркальные фотоаппараты. Во вторых это неровно освещенное ясное небо, на контрастных объектах такие артефакты менее заметны, да и программа их пытается сравнять. Для того что бы избавиться от таких засветов необходимо снимать с блендой, чтобы свет не попадал на объектив. В третьих программа неверно устанавливает середину панорамы. Все эти артефакты не так тяжело замазать в фотошопе.
- Неверно сшитые элементы панорамы
Обе программы работают не идеально и как правило приходиться докрашивать не сошедшиеся элементы в фотошопе. Данные методы не просты, но зато позволяют не имея дорогой техники создать панорамы, пусть и с некоторыми усилиями. Естественно ясное небо это самый сложный случай, делать панорамы помещений куда проще, там всегда есть к чему привязаться и нету одноцветного неба.
Практическое применение панорам
А теперь как применяются эти панорамы. Во первых она может использована в качестве отражающегося объекта в зеркальных объектах. Во вторых она может использоваться как источник света. В нашем случае получилась всего 16 битная картинка, но и ее уже вполне удачно можно применить.
- На панораме изображен белый круг
На картинке видно как работает панорама в качестве источника света. Каждая точка панорамы несет информацию о яркости, цвете и насыщенности из каждой точки заданного направления. Если на панораме одна большая белая точка то и работает она на подобие точечного источника света. Если вся панорама цветная то работает она так же как будто каждый пиксель окружающей панорамы является лампочкой с параметрами цвета взятой из панорамы. Соответственно чем больше глубина цвета картинки, тем точнее будет передача света.
На картинке два объекта, чайник для того чтобы определить как ведет себя свет и автомобиль (из библиотеки Evermotion) на котором видно как ведет себя отражение. На чайнике видно что он освещен точно так же как и окружающие его объекты, кроме того у чайника имеются тени от окружающего света точно такой же как и окружающих объектах. А на автомобиле отражение ведет себя именно так как оно и должно себя везти. Для освещения и отражения использовалась только наша панорама. К сожалению панорама всего 16-битная и того контраста которого хотелось бы добиться не получилось, но эту картинку можно обработать и добиться необходимого фотореализма. А вот для построения падающей тени придется добавить точечный источник света и настроить его яркость и цвет вручную. Связано это тем что пока панорамы не способны передать такого рода информацию.
В итоге мы имея всего 1 любительскую зеркальную камеру или мыльницу получили вполне качественную панораму которая позволяет нам получить фотореалестичное освещение и отражения. Если имеются вопросы пишите комментарии, буду править статью по мере возникновения вопросов и устранения неточностей.
Не забудьте посетить страницу автора, там много чего интересного www.labeg.ru
виды панорамной съемки, создание 3d туров и панорам 360
Как сделать виртуальную экскурсию? Таким вопросом задаются те, кому необходимо продемонстрировать бизнес, объект недвижимости или какую-нибудь территорию в интернете. Конечно можно воспользоваться услугами профессионального фотографа и заказать съемку 3D панорам у специалистов.
Но создать виртуальный тур для сайта можно и самостоятельно. В этой статье мы подробно пройдем по всем этапам работы. Разберем нюансы панорамной фотосъемки и монтажа 3D тура. Рассмотрим виды затрат на необходимое оборудование и основные ошибки.
Содержание страницы
Теория и определения
Виды панорам
Плоская панорама — фотопанорама в классическом понимании. Это широкоформатная фотография, сделанная из двух и более кадров. Несколько снимков объединяются с целью увеличения угла обзора. Чтобы получить такую панораму, нужно сделать несколько фотографий, но так, чтобы соседние кадры перекрывали друг друга на 20-25 процентов. Затем следует «склеить» полученные фото в любом графическом редакторе. В результате получится «длинная» фотография, которая вмещает значительно больше информации чем обычная фотография.
Плоская панорамаСферическая панорама (3D панорама) – панорама, которая имеет угол обзора 360 градусов по горизонтали и 180 по вертикали. Она спроецирована на внутреннюю поверхность сферы с помощью специального софта. Зритель находится, как бы, в центре сферы и может вращать ее как угодно и видеть все, что находится вокруг. Сферическая панорама, способна передать полную картину окружающего пространства. В силу своих особенностей, сферическую панораму можно просмотреть только на компьютере или мобильном устройстве.
Сферическая панорамаЦилиндрическая панорама – панорамная фотография с охватом по горизонтали в 360 градусов. Угол обзора по вертикали у такой панорамы ограничен. По сути цилиндрическая панорама является частным случаем сферической, у которой отсутствует зенит и надир (верхняя и нижняя части).
Цилиндрическая панорамаЧто такое виртуальный тур
Из нескольких сферических панорам можно сделать виртуальный тур. Для этого существует несколько специализированных приложений, который мы рассмотрим ниже. В 3D панорамах размещаются точки перехода (стрелки) из одной сцены в другую. Нажимая на стрелки, зритель перемещается из комнаты в комнату. Таким образом формируется виртуальный 3D тур по какому-нибудь заведению (музей, ресторан, завод) или территории (город, парк, достопримечательность).
Виртуальный тур по ресторану (клик для просмотра)Для чего нужен виртуальный 3д тур
3D панорамы могут рассказать о месте съемки значительно больше чем видео. Поэтому они нашли применение в самых разных сферах деятельности.
- Создание виртуальных туров, как нельзя кстати, подходит для продажи недвижимости. С помощью 3D тура можно легко продемонстрировать квартиру или дом будущему покупателю.
- Панорамный тур по отелю или ресторану поможет показать интерьер и привлечь клиентов.
- Сферические панорамы, сделанные в исторических местах или заповедниках, могут использоваться в образовательных и туристических целях.
В общем, приводить примеры можно долго… Цель виртуальной экскурсии — продемонстрировать помещение или территорию. Особенно приятно, что организовать презентацию можно дистанционно. Для этого достаточно разместить виртуальный тур на сайте или в социальных сетях.
Оборудование для панорамной съемки
Если рассматривать виды затрат на создание виртуальных экскурсий, оборудование для панорамной съемки – это самая ощутимая их часть. Но создание виртуальных туров значительно упрощается с применением профессиональной техники. Далее приведен полный список и описание всех необходимых аксессуаров.
Оборудование для панорамной съемкиФотоаппарат
Главный инструмент — это, конечно, фотоаппарат. На самом деле, сферическую панораму можно снять абсолютно любой фотокамерой, даже на мыльницу или мобильный телефон. Но качество результата на 50% зависит от правильного выбора.
Лучше всего использовать зеркальную камеру, а еще лучше, если у нее будет полно кадровая матрица. Такая матрица принимает на себя больше света, поэтому фотографии получаются лучшего качества чем с матрицами меньшего размера. К тому же, фулл фрейм фотоаппараты имеют большее количество пикселей и разрешение панорамы в результате получится выше.
Чем больше размер матрицы и количество пикселей, тем выше разрешение панорамы.
Чем еще лучше зеркалка?
- Сменные объективы.
- Съемка в RAW формате дает большие возможности в дальнейшем редактировании снимков.
- Гибкие настройки чувствительности матрицы, экспозиции, баланса белого.
- Съемка в ручном режиме.
- Съемки с эксповилкой.
- Возможность применения дистанционного пульта управления затвором.
Все эти настройки позволят получить качественный результат и значительно упростят процесс сборки и обработки панорам.
Объектив
Чтобы получить сферическую панораму, нужно сфотографировать все пространство вокруг. Это сделать намного проще, если угол обзора вашего объектива будет как можно выше.
Объектив «рыбий глаз»Так, например, имея стандартный фотоаппарат с кроп-фактором 1,6 и китовый объектив с фокусным расстоянием 18 мм, предстоит сделать три ряда фотографий, по 12 фото в каждом. Шаг съемки равен 30-ти градусам, плюс фото зенита и надира и того 38 кадров.
Кадры панорамной съемки в 3 рядаС объективом типа рыбий глаз (fisheye) достаточно всего 3-8 кадров, что значительно меньше. Только стоит учесть, чем меньше кадров в панораме, тем меньше ее разрешение. Но современные зеркалки позволяют сделать панорамную съемку высокого качества и с объективом fisheye.
Лучший выбор – широкоугольный fisheye объектив.
Панорамная головка
Панорамная головка с фотоаппаратом и безЕще один немаловажный инструмент – панорамная головка. Это приспособление позволяет закрепить камеру на штативе таким образом, чтобы она вращалась вокруг нодальной точки объектива. Благодаря этому, параллакс между соседними кадрами сводится к нулю. Панорама при этом сшивается без особых проблем.
Нодальная точка – точка на оси объектива, расположенная в месте пересечения оптических лучей:
Нодальная точка объективаЕсли вращать фотоаппарат вокруг нодальной точки, то предметы на заднем и переднем плане не будут смещаться относительно друг друга, т.е. параллакс будет равен нулю. Это крайне важно для успешного объединения фотографий в общую панораму.
Как пользоваться панорамной головкой и настроить нодальную точку рассмотрим чуть ниже.
Уровневая платформа
Уровневая база – служит для регулировки уровня горизонта. Устанавливается на штатив под панорамной головкой. Из-за ограниченного угла наклона, уровневая база не всегда может быть эффективна (например, в горной местности). От этого элемента можно отказаться совсем, если выставить уровень регулировкой длины ног штатива. Такой способ немного сложнее и занимает больше времени.
Штатив
ШтативВыбор штативов огромен и почти каждый подойдет для панорамной съемки. Но есть ряд требований, которые облегчат работу:
- Штатив должен быть устойчивым, чтобы исключить тряску во время съемки. Некоторые модели вибрируют даже при работе затвора фотоаппарата. Чаще всего устойчивость влечет за собой большой вес. Поэтому стоит подыскать золотую середину, когда надежность не будет мешать удобству транспортировки.
- Запас по высоте – удобно, когда штатив имеет выдвижную центральную колонну. В некоторых условиях съемки это просто необходимо.
- На штативной головке нежелательны торчащие ручки, которые попадают в кадр. Точнее они могут быть, но в дальнейшем придется потратить дополнительно время на их устранение в Photoshop.
Пульт управления затвором
Пульт дистанционного управления затфоромЕсли использовать кнопку спуска затвора при съемке, возможно тряска от прикосновения. Поэтому пульт крайне необходим. Он может быть, как беспроводным, так и со шнуром. Первый более предпочтителен, т.к. с его помощью можно снимать на значительном удалении от камеры. Это будет полезно в замкнутых пространствах, когда в кадр попадает тень или отражение фотографа. Есть вариант съемки без пульта – использовать функцию отложенного спуска затвора. Но в этом случае продолжительность съемки существенно возрастет.
Фотосъемка сферических панорам
Теперь мы подошли к вопросу о том, как сделать круговую панораму. Лучший вариант съемки – на штативе с панорамной головкой. Эти аксессуары помогут вращать фотоаппарат на 360 градусов без каких-либо проблем. Но существуют и другие способы панорамной съемки.
Виды панорамной съемки
На сферическую камеру 360
Если использовать панорамную камеру, процесс сильно упрощается. Такие камеры имею две и более линз и одним кадром снимают сразу все 360 градусов.
Панорамные камерыВ результате получается готовая панорамная фотография в эквидистантной проекции. Полностью устраняется этап склейки. Казалось бы, одни плюсы, но это не совсем так.
- Бюджетные сферические камеры выдают небольшое разрешение снимка, в отличие от панорам, снятых на зеркальный фотоаппарат.
- Во время съемки фотограф не может находиться рядом с камерой. После установки штатива требуется выйти из комнаты или спрятаться за большим предметом, чтобы не попадать в зону видимости объектива.
С рук без штатива
Если под рукой есть только фотоаппарат, то возможна панорамная съемка без штатива. Сразу отметим, что этот способ подходит для фотографов с опытом. Лучше всего использовать объектив «рыбий глаз», на который достаточно снять 3-4 кадра.
Панорамная съемка без штативаСуть заключается в том, чтобы вращать фотоаппарат вокруг нодальной точки. Только в роли панорамной головки будут руки фотографа.
- Стоит выбрать самое удобное положение, потому что перехватиться во время съемки не получится.
- Для наглядности, можно привязать на объектив (на уровне нодальной точки) веревку с грузом.
- На земле необходимо положить небольшой предмет (пуговицу, монетку) для ориентира.
- Разместите фотоаппарат над меткой, чтобы груз почти касался ее. Веревка при этом должна быть натянутой.
- Сделайте первый снимок и перемещайтесь вокруг метки к следующему кадру. Наклон фотоаппарата сохраняйте неизменным во время съемки всего ряда. Не забывайте про перекрытие соседних фотографий. Для полной уверенности, делайте дополнительные кадры (3-5 штук) каждого ракурса, чтобы в дальнейшем выбрать наиболее удачный.
- Сделайте фото зенита и надира.
На этом фотосъемка завершается. Кажется, что ничего сложного нет. Но для получения желаемого результата потребуется тренировка.
Во время съемки без штатива не стоит использовать длинные выдержки и эксповилку.
На штативе с панорамной головкой
Этот способ самый надежный и дает наиболее качественный результат. Весь список необходимого оборудования приведен выше. Далее мы рассмотри процесс панорамной съемки именно этим методом.
Настройка оборудования для панорамной съемки
Как настроить панорамную головку?
В первую очередь необходимо определить где находится нодальная точка у конкретной модели объектива. Расположение нодальной точки у различных объективов отличается. Рассчитать положение нодальной точки вашего объектива можно при мощи небольшого эксперимента.
Сначала настроим пересечение оптической оси объектива и оси вращения.
- Установите фотоаппарат на панорамную головку и штатив.
- Поверните камеру объективом ровно вниз, чтобы в кадре был штатив.
- Переместите камеру таким образом, чтобы ось вращения была строго в центре видоискателя.
На большинстве панорамных головках есть специальная «мишень», облегчающая данный процесс.
Приступим к поиску нодальной точки
- Перед камерой, ровно по центру, друг за другом разместите два предмета (например, карандаши). Сделайте первый снимок.
- Затем поверните панорамную головку влево, чтобы карандаши находились у правого края кадра. Сделайте второй снимок.
- Теперь поверните фотоаппарат на такой же угол от первоначального положения вправо. Карандаши будут в левой части кадра. Получаем третий снимок.
Так как панорамная головка еще не настроена, можно заметить, что на левом и правом снимках карандаши смещаются друг относительно друга. Это и есть эффект параллакса. Если им пренебречь, то склейка панорамы из полученных фотографий будет невозможна.
Теперь нам предстоит найти нодальную точку. Поворачиваем фотоаппарат влево, как на втором шаге. Перемещаем камеру на перекладине панорамной головки вперед-назад. При этом следим за положением объектов в кадре. Когда оба карандаша выстроятся в одну линию, т.е. передний перекроет дальний, это и будет та самая заветная точка. Теперь, при вращении камеры в любую сторону, параллакса не будет.
Определение нодальной точки объективаКак найти нодальную точку
Значение нодальной точки для многих объективов уже известно. Существует специальная таблица, в которой указаны необходимые параметры линз и камер. Поэтому весь процесс значительно упрощается. Нужно всего лишь посчитать длину отрезка по формуле:
L=a+b
- a – расстояние от основания объектива до нодальной точки;
- b – расстояние от гнезда крепления фотоаппарата до основания объектива.
Когда длина отрезка L известна, остается только выставить ее на шкале панорамной головки и зафиксировать положение.
Установка нодальной точкиНастроим шаг вращения панорамной головки
Нужно определить угол, при повороте на который, камера будит фиксироваться каждый раз. Это значение напрямую зависит от угла обзор объектива и размера матрицы фотоаппарата. Не забывайте, что перекрытие соседних снимков должно быть 20-25%. Это минимальное значение, в некоторых случаях надежнее увеличить наложение до половины кадра (50%).
Примеры угла вращения:
- кроп-фактором 1,6 и фокусное расстояние 18 – шаг 30° (съемка в 3 ряда по 12 кадров)
- кроп-фактором 1,6 и фокусное расстояние 10 — шаг 60° (съемка в 2 ряда по 6 кадров)
- кроп-фактором 1 и фокусное расстояние 12 — шаг 90° (съемка в 1 ряд, 4 кадра)
Многие панорамные головки имеют ротатор, который настраивается на требуемый угол поворота.
Штатив и уровень
При наличии уровневой платформы, выставить горизонт достаточно просто. Меняем наклон базы до тех пор, пока пузырек в уровне не займет центральное положение.
Если же уровневой базы нет, то настроить горизонт поможет штатив. Для этого, меняя длину ног трипода, выставляем нужный наклон. В этом случае так же ориентируемся на пузырьковый уровень.
Настройка горизонта при помощи штативаНастройка фотоаппарата и объектива
В результате съемки мы получим несколько кадров, которые будут объединены в одну панораму. Каждая фотография должна иметь одинаковую экспозицию, цвет, резкость и т.д. Поэтому для панорамной фотосъемки используется только ручной режим.
Настройки фотоаппарата- Выбираем качество снимков – RAW.
- Устанавливаем ручной режим (M). Недопустимо, чтобы снимки имели различную экспозицию. Это сильно усложнит дальнейшую работу.
- Прикрываем диафрагму до значения F10-12 и выставляем значение выдержки, ориентируясь на окружающее освещение.
- Значение чувствительности (ISO) так же должно быть фиксированным.
- Устанавливаем режим автоматического брекетинга. Для этого выбираем серийную съемку и шаг экспозиции 2.
- Выбираем точное значение баланса белого (если настройки позволяют).
- Фокусируемся на нужном объекте, после чего авто фокус обязательно отключаем.
Процесс фотосъемки панорам 360
Съемка 3D тура начинается с выбора точек съемки – мест где будет устанавливаться штатив. Навигация по виртуальному туру облегчается, когда между соседними 3D панорамами есть прямая видимость.
Когда все настройки оборудования произведены (см. выше), остается только снять панорамное фото на 360 градусов. Делаем первый кадр, затем вращаем панорамную головку на заданный шаг и снова снимок. И так до тех пор, пока не будут готовы все части будущей круговой панорамы. Чтобы не запутаться, стоит начинать с отметки 0° и крутиться по часовой стрелке. Как только вы вернетесь в начальное положение, можно приступать к следующему ряду. В резултате получаем такой набор фотографий:
Кадры панорамной фотосъемкиДалее сделаем фотографии зенита и надира. Для этого направляем камеру вверх и вниз.
Съемка зенита и надираЕсли фотографировать надир (низ) с панорамной головки, на фото окажется штатив. Есть два способа, чтобы убрать его:
- С помощью графического редактора. Если в надире находится однообразные элементы (плитка, паркет, трава, асфальт и т.д.), то скорректировать его в Photoshop будет несложно.
- Сфотографировать надир без штатива и вставить его во время склейки 3д панорамы. Для этого можно использовать трипод в сложенном состоянии или просто сделать снимок на вытянутой руке. В обоих случаях нужно стараться приблизить камеру к первоначальному положению. Этот метод особенно необходим, когда на полу имеется какой-то узор или элемент дизайна.
Правила успешной съемки
- Избегайте отражений. Во время съемки фотографа подстерегают препятствия в виде зеркал и глянцевых поверхностей. На это стоит обращать особое внимание. Лучше отойти в сторону (используя беспроводной пульт) перед снимком, чем потратить время на то, чтобы убрать свое изображение в зеркале при помощи Photoshop. По возможности, выбирайте такой ракурс, чтобы отражений не было вовсе.
- Следите за чистотой линзы и матрицы. Перед фотосъемкой убедитесь в отсутствии мусора на стекле и сенсоре. Пыль доставит вам много хлопот на этапе обработки фото.
- Резкий свет от солнца или осветительных приборов может значительно навредить. Фишай линзы легко ловят блики (зайцев), поэтому найдите такое положение камеры, которое сведет их к минимуму.
- Смотрите за движущимися объектами (люди, машины). Если съемка проводится в людном месте, придется выждать время, чтобы в кадре никого не будет. Если этого не избежать, снимайте в тот момент, когда объект находится с краю кадра в зоне перекрытия.
- Устойчивость штатива. Проследите, чтобы штатив стоял надежно и никому не мешал. Если сдвинуть трипод во время съемки, то панораму придется полностью переснимать. Когда штатив легкий, повесьте на крюк центральной штанги какой-нибудь груз, например, рюкзак с оборудованием. Так он будет стоять надежнее.
- Не забывайте фокусироваться. Настраивайте резкость для каждой панорамы. Если вы применяете гиперфокал, используйте изоленту для фиксации фокусировочного кольца. Это поможет вам сохранить настройку объектива при переходе от одной точки съемки к другой.
Основные ошибки панорамной съемки
Во время создания панорам на 360 градусов могут возникнуть проблемы. Они приводят к усложнению последующей обработки или даже к невозможности сборки сферической панорамы. Рассмотренные выше нюансы настройки оборудования и правила съемки помогут избежать все ошибки. Если это ваш первый опыт в создании 3D туров, совету обратить на этот раздел особое внимание.
- Забыли установить качество RAW для снимков – можете попрощаться с гибкими возможностями обработки сделанных фотографий.
- Автоматический режим съемки приведет к большому разбросу в экспозиции всех фотографий. Приготовьтесь к кропотливой работе на стадии конвертации снимков.
- Ошибка при настройке экспозиции приведет к появлению глубоких теней или засветов. Используйте эксповилку, чтобы иметь максимальную возможность устранения этих недочетов.
- Заваленный уровень, конечно ошибка, но ее можно исправить. На этапе склейки панорамы есть инструменты для выравнивания горизонта.
- Неточная настройка панорамной головки приведет к некачественной сшивке круговой панорамы. В таких случаях, в сферической панораме появляются «засечки» — видимые стыки соседних кадров. В некоторых случаях, их можно устранить в Фотошопе.
- Отсутствие части панорамы встречается если не доснять одни или несколько кадров. Придется выезжать на место съемки повторно.
Обработка фотографий
Полученные фотографии предстоит обработать и конвертировать из формата RAW в Jpeg. Для этого лучше всего использовать программу Adobe Lightroom. Здесь есть все основные инструменты, которые позволяю скорректировать баланс белого и экспозицию, вытянуть тени, произвести цветокоррекцию и др. Специальные плагины помогут получить HDR изображения из серии фотографий сделанных с разной выдержкой. Но это не обязательно, панораму можно сразу собрать в HDR на следующем этапе.
Adobe Lightroom Adobe LightroomСклейка панорам
Вот мы и подошли к этапу создания панорамы, а точнее к склейке эквидистантной проекции. Эквидистантная проекция — это плоское изображение сферической панорамы, на которой отображены сразу 360 градусов пространства. Такая проекция имеет большие искажения и чем дальше от линии экватора, тем эти искажения больше.
Эквидистантная проекция сферической панорамыВыбор программы для объединения фотографий в панораму не будет долгим. Самая популярная из них — PTGui Pro. Подробное описание работы в этого приложения изложено в статье – Как сделать сферическую панораму в PTGui Pro.
Если коротко, то суть программы в объединение фотографий, полученных после съемки, в одну панораму. За счет перекрытия между кадрами PTGui Pro отыскивает общие точки и на основе этих данных создается эквидистантная проекция.
В нижней части полученной панорамы видны ноги штатива и черная полоса. Все это можно убрать несколькими способами:
- В фотошопе с помощью плагина Super Cubic – он преобразует зенит и надир в нормальный вид, а после редактирования инструментами Photoshop, возвращает измененные части в эквидистантную проекцию.
- В программа Pano2VR есть инструмент по извлечению любой части панорамы, например, надира. Полученное изображение ретушируется в графическом редакторе и вставляется обратно в сферу.
- Автоматическое заполнение надира в стиле Google Street View в Photoshop.
- Просто закрыть надир графическим элементом, например, окружностью или логотипом.
- Ограничить зону надира при просмотре панорамы.
Как это сделать описано в отдельной статье – 5 способов редактирования зенита и надира в сферической панораме.
Как сделать виртуальный тур
Это заключительный этап создания 3D тура. С помощью специализированного софта выполняются следующие действия:
- Создаются виртуальные панорамы из сделанных ранее эквидистантных проекций.
- Устанавливаются точки перехода между сценами.
- Монтируется меню навигации – кнопки для управления обзором и дополнительными функциями.
- Добавляются интерактивные возможности – информационные вставки, план-карта, звуковое сопровождение, фотографии и видеоролики.
Самые распространенные программы для изготовления виртуальных туров:
Krpano – мощный программный продукт для создания виртуальных экскурсий. Krpano имеет огромные возможности для творческой реализации. Туры, созданные в этой программе, будут работать на всех устройствах, в том числе и со шлемами виртуальной реальности.
Krpano не имеет привычного интерфейса, поэтому подойдет не каждому.
Pano2VR – популярное приложение от разработчика Garden Gnome, известного своей программой для создания предметных фотографий на 360 градусов. Pano2VR более легка в изучении и имеет богатый функционал. Отличительной особенностью является наличие инструментов для публикации и редактированию панорам в картах Google. Все возможности этой программы описаны в статье — создание виртуального тура в программе Pano2vr.
Какую бы программы вы не выбрали для создания виртуального тура, в целом, результат будет один и тот же:
Виртуальный тур по ресторану (клик для просмотра)Публикация 3D тура
Когда виртуальная экскурсия полностью готова, ее необходимо продемонстрировать зрителю. Это можно сделать при непосредственном общении, запустив просмотр тура на компьютере. Но для увеличения охвата следует разместить 3D тур в сети интернет. Для этого есть несколько возможностей:
- 3d тур на сайт компании
- В социальных сетях – Facebook, Вконтакте, Instagram
- На видео хостинге Youtube
- В сервисе бронирования отелей Booking.com
- Сайт объявлений Avito
- В картах Google
- В Яндекс картах
Это достаточно обширная тема, все варианты публикации панорам описаны в этой статье.
Итоги
Вот мы и рассмотрели все этапы создания панорамного 3D тура. Надеемся, вам стало понятно, как самому сделать виртуальный тур. Если вопросы все же остались, задавайте их в комментариях. Мы поможем в решении возникших проблем.
Как сделать сферическую 3D панораму в PTGui Pro – создание эквидистантной проекции
В прошлый раз мы рассмотрели все этапы создания виртуального тура. После съемки получен ряд фотографий готовых к созданию сферических панорам. В этой статье подробно остановимся на процессе склейки эквидистантной проекции панорамы. Для этого будем использовать одну из самых популярных программ – PTGui.
Содержание страницы
Что такое PTGui Pro?
PTGui Pro – это мощный программный комплекс для качественной сборки и редактирования всех видов панорам на операционных системах Windows и MacOS. Программа позволяет работать с плоскими панорамами (в том числе гигапиксельными), цилиндрическими и сферическими панорамами на 360 градусов.
Купить программу PTGui Pro
PTGui платная программа, но полностью оправдывает свою цену до последней копейки. Есть пробная тридцатидневная версия приложения. В ознакомительной версии можно изучить работу всех инструментов, правда тут не обошлось без большого «НО». При выводе результатов сборки на панораме будут присутствовать водяные знаки в виде красных смайликов. Это ограничение не позволит использовать полученную панораму для создания 3D тура.
Как же убрать смайлики? Все очень просто, необходимо купить лицензию PTGui и ввести регистрационные данные. После этого водяные знаки полностью пропадут.
Думаю, во время установки трудностей не возникнет. Можно приступать к описанию работы программы.
Загрузка фотографий
При запуске PTGui, нажимаем кнопку «Advanced» (в правой части окна), которая открываем расширенные настройки. Они будут необходимы в дальнейшем.
На первом этапе мы должны выбрать изображения, с которыми будем работать. Для этого используем кнопку «Load Images» или просто выделяем фотографии в папке и перетаскиваем их в рабочую зону программы.
PTGui Pro загрузка фотографийPTGui автоматически определяет параметры объектива и камеры на основе Exif данных фотографий. Если убрать галочку «Automatic», тогда появится возможность выбрать тип объектива и угол обзора самостоятельно.
Иногда конкретной модели объектива или фотоаппарата нет в базе программы. Тогда появится окно, в котором необходимо ввести фокусное расстояние и кроп-фактор матрицы вручную.
PTGui Pro воод параметров объектива и фотоаппаратаСклейка панорамы
Теперь остается нажать кнопку «Align images» для объединения фотографий в панораму. Запустится процесс просчета и генерации контрольных точек между соседними кадрами. После его завершения, откроется окно «Panorama Editor» с первыми результатами сшивки.
PTGui Pro Panorama EditorНа этом этапе можно посмотреть панораму в сферическом виде. Для этого жмем кнопку в виде глаза и выбираем «Open in PTGui viewer».
Если съемка производилась с эксповилкой, программа определит это и перед сборкой попросит указать способ HDR съемки:
PTGui Pro выбор варианта HDR- Съемка со штатива – будут определяться контрольные точки только основных кадров. Для соответствующих снимков со смещенной экспозицией применятся те же значения.
- Съемка с рук – контрольные точки вычисляются для всех кадров, в том числе и для снимков одного ряда брекетинга.
- Это не HDR изображение.
Бывает так, что во время съемки брекетинг применялся, но PTGui не определяет этого и собирает панораму в обычном режиме. Такое возможно, если фотосъемка производилась не в ручном режиме, а, например, с приоритетом диафрагмы. Тогда выдержка соседних ракурсов будет отличаться. Программа распознает HDR именно по этому параметру.
Не стоит расстраиваться, эту оплошность можно исправить. Для этого переходим во вкладку «Image Parameters». Здесь изменим выдержку группы кадров каждого ракурса. Она должна быть одинакова, например – 1/15, 1/125, 1/2, 1/15, 1/125, 1/2, … 1/15, 1/125, 1/2.
Выставление контрольных точек
В «Panorama Editor» видно, что панорама собралась полностью. Это означает, что в зоне перекрытия кадров достаточно информации.
Когда программе не удается найти общих фрагментов в соседних снимках, контрольные точки нужно указать вручную. Чтобы увидеть, где именно не хватает контрольных точек, нажимаем кнопку в виде лампочки «Control Point Assistant»:
Откроется окно:
Пары фотографий без контрольных точекво вкладке «Control Point Assistant» (1) указаны пары снимков, между которыми контрольные точки не найдены автоматически (2). Как правило, это фотографии с малым количеством информации в зоне перекрытия, например, голая стена, небо, снег.
Чтобы добавить контрольные точки, переходим во вкладку «Control Points» (1):
Добавление контрольных точекВыбираем пару нужных фотографий — в списке слева отмечаем первый снимок (2), а справа соседний с ним кадр (3). Теперь укажем общие точки: отмечаем точку левой кнопкой мыши на первом фото, затем кликаем в соответствующем месте второго кадра. Для удобства, рядом с курсором появляется увеличенный фрагмент области:
Добавление контрольных точекКогда все недостающие точки расставлены, необходимо произвести оптимизацию панорамы.
Оптимизация панорамы
Это сложный процесс, в течение которого, PTGui сводит дистанцию между парами контрольных точек к минимуму. Открываем таблицу «Tools > Control Points Table» (кнопка в виде лампочки) и удаляем все точки, расстояние между которыми более 10 пикселей:
Удаление лишних контрольных точекОткрываем вкладку «Optimizer» и жмем кнопку «Run Optimizer»:
Отимизация панорамыЗапустится процесс оптимизации, а после появится окно с результатами:
Результаты оптимизацииРезультат достаточно хороший (very good). Учитывая высокое разрешение панорамы, максимальная дистанция между контрольными точками в 5 пикселей – вполне приемлемо.
Выравнивание горизонта
Этот этап очень важен, особенно если уровень горизонта не был настроен во время съемки. Если горизонт в панораме завален, то при просмотре возникает ощущение, что все стены кривые.
Выбор вертикалейСнова обратимся к вкладке «Control Points», но в этот раз в левой и правой части выберем одну и ту же фотографию. В строке «CP type» автоматически отобразится «Vertical line».
Разметка вертикальных линийНам нужно указать программе на вертикальные линии. Для этого находим их на фотографии. Это могут быть рамы окон, двери, наличники, откосы. На левом изображении отмечаем начало линии, а на правом её конец. Таким образом вертикаль отмечена. Рекомендуется указать хотя бы одну вертикальную прямую на каждом ракурсе.
Когда все линии установлены, необходимо провести повторную оптимизацию. После этого, в «Panorama Editor» можно увидеть, как изменилась панорама. Горизонт выровнялся и вертикали стали вертикальными.
Результат выравнивания горизонтаРабота с масками
Иногда во время съемки панорам в кадр попадают движущиеся объекты. Такое часто случается на улице или в людных местах. Лучше всего выждать момент, когда посторонние объекты не мешают. Но если это невозможно, поможет инструмент «Маски». Рассмотрим пример, когда в кадр попала часть машины.
Если собрать панораму без использования масок, половина автомобиля будет портить вид:
Перейдем на вкладку «Mask». Здесь можно увидеть инструмент карандаш, его можно настроить в зависимости от обстоятельств:
- Красный – для скрытия выделяемой области.
- Зеленый – для того, чтобы выбранная область точно присутствовала в панораме.
- Белый – для удаления маски.
- Изменить размер.
Выбираем красный и закрашиваем машину:
Удаление объекта маскамиРезультат тут же виден в «Panorama Editor», объект полностью удален:
Пример использования зеленой маски рассмотрим на другом ракурсе, где в кадр попал человек.
Результат сборки панорамы явно нас не устроит:
Такой эффект часто называю «призраками». Хорошо, что маски помогают бороться с привидениями. Применим, зеленую маску — выделяем область без человека, но так, чтобы она полностью перекрывала прохожего. Для этого на соседней фотографии появляется курсор, демонстрирующий положение маски.
Удаление объекта маскамиТеперь можно убедиться, что исправления вступили в силу.
Настройка HDR
Перейдем на вкладку «Exposure / HDR», здесь можно выбрать вариант объединения кадров брекетинга:
- Если съемка производилась с эксповилкой: True HDR – по технологии HDR, Exposure fusion – коррекция экспозиции на основе слияния трех снимков с разными параметрами.
- Если брекетинг не применялся.
- Автоматическая и ручная оптимизация экспозиции.
Нажимая кнопки «Tone Map Settings» и «Fusion Settings», мы попадем в соответствующие настройки. В окне пред просмотра виды изменения панорамы в зависимости от настраиваемых параметров.
Не будет подробно останавливаться на этих настройках. Они напрямую зависят от параметров, выставляемых во время съемки и конвертации фотографий.
PTGui HDR Tone Mapping PTGui Exposure FusionСборка панорамы
Теперь все готово к выводу панорамной фотографии. На вкладке «Create Panorama» выбираем:
PTGui вывод панорамыОстается только нажать кнопку «Create Panorama» и дождаться окончания процесса обработки. В результате мы получим эквидистантную проекцию панорамы.
Эквидистантная проекция панорамыИтоги
Вот мы и разобрали все шаги по склейки панорамы из нескольких фотографий в PTGui. Полученные изображение можно использовать для создания виртуального 3D тура, например, в KRPano или Pano2VR. Но в некоторых случаях потребуется дополнительная работа по редактированию надира и зенита, ретушированию отражений. Эти моменты мы рассмотрим в отдельной статье.
Надеемся, наша инструкция поможет вам в освоении этой замечательной программы. Если вопросы еще остались, задавайте их в комментариях.
Сшивание панорам OpenCV — PyImageSearch
В сегодняшнем сообщении блога я продемонстрирую, как выполнить сшивание изображений и построение панорамы с помощью Python и OpenCV. Получив два изображения, мы «сшиваем» их вместе, чтобы создать простую панораму, как показано в примере выше.
Чтобы построить нашу панораму изображения, мы будем использовать методы компьютерного зрения и обработки изображений, такие как: обнаружение ключевых точек и локальные инвариантные дескрипторы; сопоставление ключевых точек; RANSAC; и искривление перспективы.
Поскольку существует основных различий в том, как OpenCV 2.4.X и OpenCV 3.X обрабатывают обнаружение ключевых точек и локальные инвариантные дескрипторы (такие как SIFT и SURF), я уделил особое внимание предоставлению кода, совместимого с обе версии (при условии, что вы скомпилировали OpenCV 3 с поддержкой opencv_contrib
, конечно).
В будущих сообщениях блога мы расширим наш код сшивания панорамы для работы с несколькими изображениями, а не только с двумя.
Прочтите, чтобы узнать, как выполняется сшивание панорамы с помощью OpenCV.
Сшивание панорамы OpenCV
Наш алгоритм создания панорамы состоит из четырех шагов:
- Шаг № 1: Определите ключевые точки (DoG, Harris и т. Д.) И извлеките локальные инвариантные дескрипторы (SIFT, SURF и т. Д.) Из двух входных изображений.
- Шаг № 2: Сопоставьте дескрипторы между двумя изображениями.
- Шаг № 3: Используйте алгоритм RANSAC для оценки матрицы гомографии с использованием наших согласованных векторов признаков.
- Шаг № 4: Примените преобразование деформации, используя матрицу гомографии, полученную из Шаг № 3 .
Мы инкапсулируем все четыре шага в Panorama.py
, где мы определим класс Stitcher
, используемый для построения наших панорам.
Класс Stitcher
будет полагаться на пакет imutils Python, поэтому, если он еще не установлен в вашей системе, вы захотите продолжить и сделать это сейчас:
$ pip install imutils
Давайте продолжим и начнем с просмотра панорамы .py
:
# импортируем необходимые пакеты импортировать numpy как np импорт imutils импорт cv2 класс Stitcher: def __init __ (сам): # определяем, используем ли мы OpenCV v3.X self.isv3 = imutils.is_cv3 (or_better = True)
Мы начинаем с строк 2-4 , импортируя наши необходимые пакеты. Мы будем использовать NumPy для операций с матрицами / массивами, imutils
для набора удобных методов OpenCV и, наконец, cv2
для наших привязок OpenCV.
Отсюда мы определяем класс Stitcher
в Line 6 . Конструктор Stitcher
просто проверяет, какую версию OpenCV мы используем, вызывая метод is_cv3
. Поскольку существуют существенные различия в том, как OpenCV 2.4 и OpenCV 3 обрабатывают обнаружение ключевых точек и локальные инвариантные дескрипторы, важно, чтобы мы определяли версию OpenCV, которую мы используем.
Далее, давайте начнем работать над методом стежка
:
def stitch (self, images, ratio = 0.75, reprojThresh = 4.0, showMatches = False): # распаковать изображения, затем определить ключевые точки и извлечь # локальных инвариантных дескриптора из них (imageB, imageA) = изображения (kpsA, featuresA) = self.detectAndDescribe (imageA) (kpsB, featuresB) = self.detectAndDescribe (imageB) # совпадение характеристик между двумя изображениями M = self.matchKeypoints (kpsA, kpsB, featuresA, featuresB, ratio, reprojThresh) # если совпадений нет, то совпадений недостаточно # ключевые точки для создания панорамы если M равно None: return None
Метод stitch
требует только одного параметра, images
, который представляет собой список (двух) изображений, которые мы собираемся сшить вместе, чтобы сформировать панораму.
Мы также можем дополнительно предоставить соотношение
, используемое для теста отношения Дэвида Лоу при сопоставлении функций (подробнее об этом тесте соотношения позже в руководстве), reprojThresh
, который представляет собой максимальное «пространство для маневра» пикселей, разрешенное алгоритмом RANSAC, и наконец showMatches
, логическое значение, используемое для указания, должны ли совпадения ключевых точек визуализироваться или нет.
Строка 15 распаковывает список изображений
(который опять же, как мы предполагаем, содержит только два изображения).Порядок изображений в списке
важен: мы ожидаем, что изображения будут поставляться в порядке слева направо, . Если изображения , а не , поставляются в этом порядке, то наш код все равно будет работать, но наша выходная панорама будет содержать только одно изображение, а не оба.
После того, как мы распаковали список изображений
, мы вызываем метод detectAndDescribe
в строках 16 и 17 . Этот метод просто обнаруживает ключевые точки и извлекает локальные инвариантные дескрипторы (т.е.е., SIFT) из двух изображений.
Учитывая ключевые точки и функции, мы используем matchKeypoints
( строки 20 и 21 ), чтобы сопоставить функции на двух изображениях. Мы определим этот метод позже на уроке.
Если возвращенные совпадения M
— Нет
, то было сопоставлено недостаточно ключевых точек для создания панорамы, поэтому мы просто возвращаемся к вызывающей функции (, строки 25 и 26, ).
В противном случае мы готовы применить перспективное преобразование:
# в противном случае примените перспективную деформацию для сшивания изображений # вместе (совпадения, H, статус) = M результат = cv2.warpPerspective (imageA, H, (imageA.shape [1] + imageB.shape [1], imageA.shape [0])) результат [0: imageB.shape [0], 0: imageB.shape [1]] = imageB # проверить, должны ли быть визуализированы совпадения ключевых точек если showMatches: vis = self.drawMatches (imageA, imageB, kpsA, kpsB, совпадения, статус) # вернуть кортеж сшитого изображения и # визуализация return (результат, vis) # возвращаем сшитое изображение вернуть результат
При условии, что M
не Нет
, мы распаковываем кортеж в Строке 30 , давая нам список ключевых точек , соответствующих
, матрицу гомографии H
, полученную из алгоритма RANSAC, и, наконец, статус
, список индексов, указывающих, какие ключевые точки в совпадают с
были успешно пространственно проверены с помощью RANSAC.
Учитывая нашу матрицу гомографии H
, теперь мы готовы сшить два изображения вместе. Сначала мы вызываем cv2.warpPerspective
, который требует трех аргументов: изображение, которое мы хотим деформировать (в данном случае правое изображение ), матрицу преобразования 3 x 3 ( H
) и наконец, форма выходного изображения. Мы получаем форму из выходного изображения, суммируя ширину обоих изображений, а затем используя высоту второго изображения.
Строка 30 проверяет, следует ли нам визуализировать совпадения ключевых точек, и если да, мы вызываем drawMatches
и возвращаем кортеж панорамы и визуализации вызывающему методу ( Строки 37-42 ).
В противном случае мы просто вернули сшитое изображение (, строка 45, ).
Теперь, когда определен метод stitch
, давайте рассмотрим некоторые вызываемые им вспомогательные методы. Начнем с detectAndDescribe
:
def detectAndDescribe (себя, изображение): # преобразовать изображение в оттенки серого серый = cv2.cvtColor (изображение, cv2.COLOR_BGR2GRAY) # проверяем, используем ли мы OpenCV 3.X если self.isv3: # обнаруживать и извлекать особенности изображения дескриптор = cv2.xfeatures2d.SIFT_create () (kps, features) = descriptor.detectAndCompute (изображение, Нет) # в противном случае мы используем OpenCV 2.4.X еще: # обнаруживаем ключевые точки на изображении детектор = cv2.FeatureDetector_create ("SIFT") kps = Detect.detect (серый) # извлекать особенности из изображения экстрактор = cv2.DescriptorExtractor_create ("SIFT") (kps, features) = extractor.compute (серый, kps) # преобразовываем ключевые точки из объектов KeyPoint в NumPy # массивов kps = np.float32 ([kp.pt для kp в kps]) # возвращаем кортеж ключевых точек и функций возврат (км / с, характеристики)
Как следует из названия, метод detectAndDescribe
принимает изображение, затем обнаруживает ключевые точки и извлекает локальные инвариантные дескрипторы. В нашей реализации мы используем детектор ключевых точек Различия Гаусса (DoG) и экстрактор признаков SIFT.
В строке 52 мы проверяем, используем ли мы OpenCV 3.X. Если да, то мы используем функцию cv2.xfeatures2d.SIFT_create
для создания экземпляров как нашего детектора ключевых точек DoG, так и экстрактора функций SIFT. Вызов detectAndCompute
обрабатывает извлечение ключевых точек и функций (, строки 54 и 55, ).
Важно отметить, что вы должны скомпилировать OpenCV 3.X с включенной поддержкой opencv_contrib. Если вы этого не сделали, вы получите сообщение об ошибке, например AttributeError: объект 'module' не имеет атрибута 'xfeatures2d'
.Если это так, перейдите на мою страницу руководств по OpenCV 3, где я подробно расскажу, как установить OpenCV 3 с поддержкой opencv_contrib
, включенной для различных операционных систем и версий Python.
Строки 58-65 обрабатывают, если мы используем OpenCV 2.4. Функция cv2.FeatureDetector_create
создает экземпляр нашего детектора ключевых точек (DoG). Обращение к detect
возвращает наш набор ключевых точек.
Оттуда нам нужно инициализировать cv2.DescriptorExtractor_create
, используя ключевое слово SIFT
, чтобы настроить нашу функцию SIFT экстрактор
.Вызов метода compute
экстрактора
возвращает набор векторов признаков, которые количественно определяют область, окружающую каждую из обнаруженных ключевых точек на изображении.
Наконец, наши ключевые точки преобразуются из объектов KeyPoint
в массив NumPy (, строка 69, ) и возвращаются вызывающему методу (, строка 72, ).
Теперь давайте посмотрим на метод matchKeypoints
:
def matchKeypoints (self, kpsA, kpsB, featuresA, featuresB, ratio, reprojThresh): # вычисляем необработанные совпадения и инициализируем список фактических # совпадения совпадение = cv2.DescriptorMatcher_create ("BruteForce") rawMatches = matcher.knnMatch (featuresA, featuresB, 2) совпадения = [] # перебрать необработанные совпадения для m в rawMatches: # убедитесь, что расстояние находится в определенном соотношении между каждым # другое (например, тест соотношения Лоу) если len (m) == 2 и m [0] .distanceДля функции
matchKeypoints
требуется четыре аргумента: ключевые точки и векторы признаков, связанные с первым изображением, за которыми следуют ключевые точки и векторы признаков, связанные со вторым изображением.Также предоставляются тестовая переменная отношенияДэвида Лоу и порог повторного проецирования RANSAC.
На самом деле сопоставление функций - довольно простой процесс. Мы просто перебираем дескрипторы обоих изображений, вычисляем расстояния и находим наименьшее расстояние для каждой пары дескрипторов. Поскольку это очень распространенная практика в компьютерном зрении, OpenCV имеет встроенную функцию под названием
cv2.DescriptorMatcher_create
, которая создает для нас сопоставление функций.ЗначениеBruteForce
указывает, что мы собираемся исчерпывающе вычислить евклидово расстояние между всеми векторами признаков из обоих изображений и найти пары дескрипторов, которые имеют наименьшее расстояние.Вызов
knnMatch
на Строке 79 выполняет сопоставление k-NN между двумя наборами векторов признаков, используя k = 2 (что указывает на то, что возвращаются два верхних совпадения для каждого вектора признаков).Причина, по которой мы хотим, чтобы два первых совпадения , а не только первое совпадение, заключалась в том, что нам необходимо применить тест отношения Дэвида Лоу для отсечения ложноположительных совпадений.
Опять же, Line 79 вычисляет
rawMatches
для каждой пары дескрипторов - но есть вероятность, что некоторые из этих пар являются ложными срабатываниями, что означает, что участки изображения на самом деле не соответствуют действительности. В попытке отсечь эти ложноположительные совпадения, мы можем перебрать каждый изrawMatches
индивидуально (, строка 83, ) и применить тест соотношения Лоу, который используется для определения качественных совпадений характеристик. Типичные значения коэффициента Лоу обычно находятся в диапазоне [0.7, 0,8] .После того, как мы получили
совпадения
с помощью теста отношения Лоу, мы можем вычислить гомографию между двумя наборами ключевых точек:# для вычисления гомографии требуется не менее 4 совпадений если len (соответствует)> 4: # построить два набора точек ptsA = np.float32 ([kpsA [i] для (_, i) в совпадениях]) ptsB = np.float32 ([kpsB [i] для (i, _) в совпадениях]) # вычисляем гомографию между двумя наборами точек (H, статус) = cv2.findHomography (ptsA, ptsB, cv2.RANSAC, reprojThresh) # возвращаем совпадения вместе с матрицей гомографии # и статус каждой совпавшей точки возврат (совпадения, H, статус) # в противном случае нельзя было бы вычислить гомографию return NoneДля вычисления гомографии между двумя наборами точек требуется как минимум для начального набора из четырех совпадений. Для более надежной оценки гомографии у нас должно быть значительно больше, чем четыре совпадающих точки.
Наконец, последний метод в нашем методе
Stitcher
,drawMatches
, используется для визуализации соответствий ключевых точек между двумя изображениями:def drawMatches (self, imageA, imageB, kpsA, kpsB, match, status): # инициализировать изображение визуализации вывода (hA, wA) = imageA.shape [: 2] (hB, wB) = imageB.shape [: 2] vis = np.zeros ((max (hA, hB), wA + wB, 3), dtype = "uint8") vis [0: hA, 0: wA] = imageA vis [0: hB, wA:] = imageB # перебрать совпадения для ((trainIdx, queryIdx), s) в zip (совпадения, статус): # обрабатывать совпадение только в том случае, если ключевая точка была успешно # соответствует если s == 1: # нарисуйте матч ptA = (int (kpsA [queryIdx] [0]), int (kpsA [queryIdx] [1])) ptB = (int (kpsB [trainIdx] [0]) + wA, int (kpsB [trainIdx] [1])) cv2.строка (vis, ptA, ptB, (0, 255, 0), 1) # вернуть визуализацию вернуться вЭтот метод требует, чтобы мы передали два исходных изображения, набор ключевых точек, связанных с каждым изображением, начальные совпадения после применения теста соотношения Лоу и, наконец, список
статуса
, полученный при вычислении гомографии. Используя эти переменные, мы можем визуализировать «входящие» ключевые точки, проведя прямую линию от ключевой точки N на первом изображении до ключевой точки M на втором изображении.Теперь, когда у нас определен класс
Stitcher
, перейдем к созданию сценария драйвераstitch.py
:# импортируем необходимые пакеты из pyimagesearch.panorama import Stitcher import argparse импорт imutils импорт cv2 # создать аргумент, синтаксический анализ и анализ аргументов ap = argparse.ArgumentParser () ap.add_argument ("- f", "--first", required = True, help = "путь к первому изображению") ap.add_argument ("- s", "--second", required = True, help = "путь ко второму изображению") args = vars (ap.parse_args ())Мы начинаем с импорта необходимых пакетов на строках 2-5 . Обратите внимание, как мы поместили классы
Panorama.py
иStitcher
в модульpyimagesearch
, чтобы наш код был аккуратным.Примечание: Если вы следите за этим сообщением и у вас возникли проблемы с организацией кода, обязательно загрузите исходный код, используя форму внизу этого сообщения. Файл .zip для загрузки кода будет запущен из коробки без ошибок.
Отсюда Строки 8-14 анализируют аргументы нашей командной строки:
- первое
, которое является путем к первому изображению в нашей панораме ( крайнее левое изображение ), и- второе
, путь ко второму изображению на панораме (крайнее правое изображение ).Помните, что эти пути к изображениям необходимо указывать в порядке слева направо, !
Остальная часть скрипта драйвера
stitch.py
просто обрабатывает загрузку наших изображений, изменение их размера (чтобы они могли поместиться на нашем экране) и построение нашей панорамы:# загружаем два изображения и изменяем их размер до 400 пикселей в ширину # (для более быстрой обработки) imageA = cv2.imread (args ["первый"]) imageB = cv2.imread (args ["второй"]) imageA = imutils.resize (imageA, ширина = 400) imageB = imutils.resize (imageB, ширина = 400) # сшиваем изображения вместе, чтобы создать панораму stitcher = брошюровщик () (результат, vis) = stitcher.stitch ([imageA, imageB], showMatches = True) # показать изображения cv2.imshow («Изображение A», изображениеA) cv2.imshow ("Изображение B", изображениеB) cv2.imshow ("Ключевые точки совпадений", vis) cv2.imshow («Результат», результат) cv2.waitKey (0)После загрузки и изменения размера наших изображений мы инициализируем наш класс
Stitcher
в строке , строка 23, . Затем мы вызываем методstitch
, передавая наши два изображения (снова , в порядке слева направо) и указываем, что мы хотели бы визуализировать совпадения ключевых точек между двумя изображениями.Наконец, Строки 27-31 отображают наши выходные изображения на нашем экране.
Результаты склейки панорамы
В середине 2014 года я поехал в Аризону и Юту, чтобы насладиться национальными парками.По пути я останавливался во многих местах, включая Брайс-Каньон, Гранд-Каньон и Седону. Учитывая, что в этих местах есть красивые живописные виды, я, естественно, сделал несколько фотографий, некоторые из которых идеально подходят для построения панорам. Я включил образцы этих изображений в сегодняшний блог, чтобы продемонстрировать сшивание панорамы.
Итак, давайте попробуем наш сшиватель панорам OpenCV. Откройте терминал и введите следующую команду:
$ python stitch.py - первые изображения / bryce_left_01.png \ --second images / bryce_right_01.pngРисунок 1: (вверху) Два входных изображения из каньона Брайс (в порядке слева направо). (внизу) Совпадающие соответствия ключевых точек между двумя изображениями.В верхней части этого рисунка мы видим два входных изображения (размер которых изменен, чтобы соответствовать моему экрану, необработанные файлы .jpg имеют гораздо более высокое разрешение). А на нижнем мы можем видеть совпадающие ключевые точки между двумя изображениями.
Используя эти согласованные ключевые точки, мы можем применить перспективное преобразование и получить окончательную панораму:
Рисунок 2: Создание панорамы из двух наших входных изображений.Как мы видим, два изображения успешно сшиты!
Примечание: На многих из этих примеров изображений вы часто увидите видимый «шов», проходящий через центр сшитых изображений. Это связано с тем, что я сделал много фотографий, используя свой iPhone или цифровую камеру с поворотом автофокуса на , поэтому фокусировка немного отличается для каждого снимка . Сшивание изображений и построение панорамы работают лучше всего, когда вы используете один и тот же фокус для каждой фотографии.Я никогда не собирался использовать эти отпускные фотографии для сшивания изображений, иначе я бы позаботился о настройке датчиков камеры. В любом случае имейте в виду, что шов возникает из-за различных свойств сенсора в то время, когда я делал снимок, и не был преднамеренным.
Давайте попробуем еще один набор изображений:
$ python stitch.py --first images / bryce_left_02.png \ --вторые изображения / bryce_right_02.pngРисунок 3: Еще одно успешное применение сшивания изображений с помощью OpenCV.И снова наш класс
Stitcher
смог построить панораму из двух входных изображений.А теперь перейдем к Гранд-Каньону:
.$ python stitch.py --first images / grand_canyon_left_01.png \ --second images / grand_canyon_right_01.pngРисунок 4: Применение сшивания изображений и построения панорамы с помощью OpenCV.На приведенных выше входных изображениях мы видим сильное перекрытие между двумя входными изображениями. Основное дополнение к панораме - это , правая сторона сшитых изображений, где мы можем видеть больше «выступов», добавляется к выходным данным.
Вот еще один пример из Гранд-Каньона:
$ python stitch.py --first images / grand_canyon_left_02.png \ --вторые изображения / grand_canyon_right_02.pngРисунок 5: Использование сшивания изображений для построения панорамы с использованием OpenCV и Python.Из этого примера мы видим, что на панораму было добавлено больше из огромных просторов Гранд-Каньона.
Наконец, давайте завершим это сообщение в блоге примером сшивки изображения от Sedona, AZ:
$ python stitch.py --first images / sedona_left_01.png \ --секундные изображения / sedona_right_01.pngРисунок 6: Последний пример применения сшивания изображений.Лично я считаю, что страна красных скал Седона - одна из самых красивых мест, которые я когда-либо посещал. Если у вас когда-нибудь будет шанс, обязательно загляните - вы не будете разочарованы.
Итак, у вас есть сшивание изображений и построение панорамы с использованием Python и OpenCV!
Сводка
В этом сообщении блога мы узнали, как сшивать изображения и создавать панорамы с помощью OpenCV.Исходный код был предоставлен для сшивания изображений для и OpenCV 2.4, и OpenCV 3.
Наш алгоритм сшивания изображений требует четырех шагов: (1) обнаружение ключевых точек и извлечение локальных инвариантных дескрипторов; (2) сопоставление дескрипторов между изображениями; (3) применение RANSAC для оценки матрицы гомографии; и (4) применение преобразования деформации с использованием матрицы гомографии.
Несмотря на простоту, этот алгоритм хорошо работает на практике при построении панорам для двух изображений.В одном из следующих постов блога мы рассмотрим, как создавать панорамы и сшивать изображения для более чем двух изображений .
В любом случае, я надеюсь, вам понравился этот пост! Обязательно воспользуйтесь формой ниже, чтобы загрузить исходный код и попробовать.
Загрузите исходный код и БЕСПЛАТНОЕ 17-страничное руководство по ресурсам
Введите свой адрес электронной почты ниже, чтобы получить ZIP-архив кода и БЕСПЛАТНОЕ 17-страничное руководство по компьютерному зрению, OpenCV и глубокому обучению. Внутри вы найдете мои тщательно отобранные учебники, книги, курсы и библиотеки, которые помогут вам освоить CV и DL!
.Программное обеспечение Panorama
Кросс-платформенная публикация
Публикуйте один раз, просматривайте везде. Поддержка просмотра на нескольких платформах, установив флажок компонентов и образцов, а также пользователей не нужно учитывать совместимость. Поддержка нескольких пользовательских компонентов, таких как фоновая музыка, индикатор выполнения, всевозможные кнопки управления, контекстное меню, эффект маленькой планеты, эффект перехода, начальная настройка автоматического воспроизведения и т. д.Легко поделиться
Предложите бесплатную платформу для публикации EP-Sky и поделитесь работами с EP-Sky одним щелчком мыши. Поделитесь работами в Facebook, Twitter, Google+ и др. Для просмотра сертифицированы как панорамыБрендинг Бесплатно
Предлагает пользователям защиту авторских прав, Поддержка настройки логотипа потолка / пола ; Настройка окна загрузки / Настройка URL-ссылки в контекстном меню и т. д.Поддержка нескольких языков
Поддержка нескольких языков: английский, китайский, японский, французский, немецкий, испанский и итальянский.Модуль обработки единичных пакетов
Пакетная вышивка, Пакетная публикация, Пакетное преобразование сферических / кубических изображений
Поддержка: автоматическое сшивание и автоматическая публикация Поддержка: пакетное сшивание и пакетная публикация с предустановленными параметрами
Поддержка: использование образцов для пакетной обработки и пакетной публикацииМодуль обработки одиночного HDR
Создание HDR-изображения для решения проблемы переэкспонирования / недоэкспонирования Поддержка HDR-изображений, объединяющее число: 2-10 стопов / группа Поддержка: несколько пакетов HDR-изображений интеграция Поддержка: панорамы / нормальные изображения HDR интегрирующий вывод: jpeg, png, bmp, exr, tiff, hdr.Снять штатив
Переместите штатив назад примерно на 3 фута и наклоните горизонтальную ось на 60 °, чтобы снять искусственный пол. Добавить совпадение точки и установите штатив как невидимую область с помощью маски.
Как использовать ›Мощная настройка изображения
Визуализированный редактор: в любой момент можно увидеть результат после настройки панорамы
Функция маски : Вручную выберите части для
Оставить или выбросить в перекрывающихся областях Принять расчет Easypano PWblend (лучше, чем Smartblend)Настройка GPS
Долгота, широта и северная панорама поддерживаются в панорамах (автоматическая ссылка на карту)
.