Сшивка панорам
Oct. 9th, 2010 12:31 amНе в первый раз уже спрашивают, как/чем сшивать панорамы. Я тоже не так давно задался этим вопросом, ибо PTGui своими косяками задрал уже давно, а всё время сшивать в фотошопе муторно, очень уж много уходит времени и усилий. Само собой, существует великое множество программ и рецептов для сшивки панорам. Тут уж каждый сам выбирает что ему по душе, поэтому я могу рассказать только о том, что подошло мне.
Меня интересовали в основном круговые панорамы (сферические как-то не прижились). Так вот, оказалось, что помимо приснопамятного PTGui, на первых страницах результатов Яндексе присутствует в основном только растиражированная с Хабрахабра статья, где используется связка Pano2VR + Microsoft ICE. Естественно, я опробовал этот рецепт, и результатом также остался несколько недоволен. А вот на третьей-четвёртой странице пошли ссылки на менее известные программы, и одна из них реально пришлась по вкусу. Со мной такое вообще-то редко бывает, но это действительно крепко сбитый немецкий натурпродукт. Во-первых, практически всё автоматом, настраивать и подгонять почти ничего не надо - тык-тык, две минуты жужжит, результат готов. Во-вторых, почти не лажается при сшивке (PTGiu лажался постоянно - приходилось вручную сводить по точкам). В-третьих, умеет делать флэш. В-четвёртых, работает с уймой графических форматов, даже никоновский рав кушает с аппетитом. Есть и недостатки: нет откатки (то есть нельзя отменить последнюю выполненную операцию), а интерфейс только английский (русского нет), хотя для меня это особой проблемы не представляет.
Программа называется PanoramaStudio 2Pro. Ищите в интернете, а я пока расскажу, как сшить в ней панораму. Для начала снимаем круговую панораму (можно и частичную, то есть меньше 360 градусов), располагая кадр вертикально. Сегменты должны быть сняты с некоторым "перехлёстом", чтобы в панораме нечаянно не образовалось "щелей", из-за которых сшивка не получится. Но при этом перехлёст не должен быть больше 50% - тогда объекты на панораме могут начать двоиться (на одной из первых панорам у меня получилось рядом два памятника Орлёнку). То же самое относится к первому и последнему кадрам - если они перехлёстываются более чем на 50%, последний кадр лучше удалить. Ниже показан исходный материал с цифровой камеры.
Запускаем программу и выбираем "Create single-row panorama" (создать панораму в один ряд).
Сшивка работает в четыре этапа: Import > Align > Render > Save.
Этап первый, загрузка картинок. Выбираем меню File > Import Images (импорт изображений).
Выделяем все исходные файлы, а затем нажимаем кнопку "Открыть".
Картинки грузятся в окно, тут их можно проскроллить и, если где-нибудь найден перехлёст более 50%, удалить лишние изображения (через контекстное меню). Этап второй - Align (выравнивание). Если это круговая панорама, выбираем "Align a 360 degree panorama", а если частичная - то "Align (partial) panorama".
После этого программа выполняет разнообразные проверки и может задать самые разные вопросы. Может, например, спросить, не уменьшить ли картинки, поскольку суммарная ширина изображения превысила максимально допустимую, или не сконвертировать ли их с меньшей глубиной цвета, чтоб меньше памяти занимали. В данном случае программа нашла различия в фокусном расстоянии - видимо, я кольцо зума нечаянно сдвинул, когда снимал. Отвечаем так, чтобы продолжить сшивку. Следующий вопрос - про линию горизонта, будем ли её регулировать. Говорим, что будем.
Красная линия - это и есть линия горизонта. Перетаскиваем её туда, где она находится на снимках. Приблизительно, особая точность не нужна.
Через минуту жужжания получаем некоторое подобие сшивки. Вот тут видим лажу - нестыковка по уровню горизонта. Я специально подобрал пример, где возникла эта проблема, чтобы показать, как её решать - на самом деле в полусотне сшитых панорам она возникла всего два раза. На то, что соседние сегменты отличаются по цвету, не смотрите - всё это будет автоматически исправлено на следующем шаге. Итак, исправляем нестыковку: Edit > Change Image Alignment (изменить выравнивание изображений).
Теперь тыкаемся в место нестыковки (стык выделяется красным) и перетаскиваем одну часть изображения относительно другой, пытаясь их совместить.
Примерно так. Полного совпадения не добиться, но оно и не нужно - после нажатия на кнопку "Done" программа снова выравнивает этот стык.
Проскрольте панораму ещё раз. Если всё нормально, нажмите "Render" (рендеринг).
Красным выделяются границы обрезки. Можно, ничего не меняя, нажать "ОК", а можно сначала поскроллить - иногда сверху-снизу удается безболезненно добавить десяток-другой пикселей.
Через минуту-две получаем практически готовую панораму. В меню Optimize можно ещё кое-что подправить при необходимости (яркость-контраст, кривые, уровни, цветовой баланс - обычный набор), но подробно я об этом рассказывать не буду, понадобится - разберётесь самостоятельно.
Последний этап - сохранение. В меню Save - три варианта: Save as image (сохраняет в виде большого JPEG-файла), Save as Flash or Java panorama (для Интернета) и Save as Screensaver/.EXE (сохраняет как экранную заставку или как EXE-файл).
Тут показано сохранение в EXE/SCR. Если экранная заставка мне без надобности (баловство это всё), то EXE - очень полезная функция, очень удобно отдать такую панораму кому-нибудь на флешке, потому что для просмотра больше ничего не надо - запускай и смотри. Из всей массы параметров здесь я настраиваю только "Panorama output size" (выходной размер), обычно выбираю 85%.
А это сохранение в виде флэшки для публикации в Интернете. Здесь "Panorama output size" нужно выбрать поменьше (я выбираю 35%), чтобы файл получился не слишком большим. И ещё - вместо Java нужно выбрать Flash.
Ну и уж до кучи, раз уж начал, расскажу как выложить такую панораму в ЖЖ. В результате сохранения получается четыре файла: html, xml, jpg и panoStudioViewer.swf. Флешка одна на все панорамы, она подгружает в себя xml и jpg. Допустим, сайт будет называться mysite.narod.ru. Вносим изменения в .xml (розовым выделено то, что нужно добавить):
Вносим изменения в .html (розовым выделено то, что нужно добавить):
Теперь файлы panoStudioViewer.swf, .xml и .jpg загружаем на сайт (все три в один и тот же каталог).
При написании поста в ЖЖ копируем из .html код, выделенный голубым, не забыв заключить его в <lj-embed>...</lj-embed>, как код для видеороликов на Ютубе. И не забывайте, что панорама - это всегда трафик, поэтому обязательно, при любых условиях, убирайте её под кат.
Не знаю, зачем я так много и так подробно про это расписал, там действительно всё делается очень просто и быстро. Но вдруг кому-нибудь пригодится.
Меня интересовали в основном круговые панорамы (сферические как-то не прижились). Так вот, оказалось, что помимо приснопамятного PTGui, на первых страницах результатов Яндексе присутствует в основном только растиражированная с Хабрахабра статья, где используется связка Pano2VR + Microsoft ICE. Естественно, я опробовал этот рецепт, и результатом также остался несколько недоволен. А вот на третьей-четвёртой странице пошли ссылки на менее известные программы, и одна из них реально пришлась по вкусу. Со мной такое вообще-то редко бывает, но это действительно крепко сбитый немецкий натурпродукт. Во-первых, практически всё автоматом, настраивать и подгонять почти ничего не надо - тык-тык, две минуты жужжит, результат готов. Во-вторых, почти не лажается при сшивке (PTGiu лажался постоянно - приходилось вручную сводить по точкам). В-третьих, умеет делать флэш. В-четвёртых, работает с уймой графических форматов, даже никоновский рав кушает с аппетитом. Есть и недостатки: нет откатки (то есть нельзя отменить последнюю выполненную операцию), а интерфейс только английский (русского нет), хотя для меня это особой проблемы не представляет.
Программа называется PanoramaStudio 2Pro. Ищите в интернете, а я пока расскажу, как сшить в ней панораму. Для начала снимаем круговую панораму (можно и частичную, то есть меньше 360 градусов), располагая кадр вертикально. Сегменты должны быть сняты с некоторым "перехлёстом", чтобы в панораме нечаянно не образовалось "щелей", из-за которых сшивка не получится. Но при этом перехлёст не должен быть больше 50% - тогда объекты на панораме могут начать двоиться (на одной из первых панорам у меня получилось рядом два памятника Орлёнку). То же самое относится к первому и последнему кадрам - если они перехлёстываются более чем на 50%, последний кадр лучше удалить. Ниже показан исходный материал с цифровой камеры.
Запускаем программу и выбираем "Create single-row panorama" (создать панораму в один ряд).
Сшивка работает в четыре этапа: Import > Align > Render > Save.
Этап первый, загрузка картинок. Выбираем меню File > Import Images (импорт изображений).
Выделяем все исходные файлы, а затем нажимаем кнопку "Открыть".
Картинки грузятся в окно, тут их можно проскроллить и, если где-нибудь найден перехлёст более 50%, удалить лишние изображения (через контекстное меню). Этап второй - Align (выравнивание). Если это круговая панорама, выбираем "Align a 360 degree panorama", а если частичная - то "Align (partial) panorama".
После этого программа выполняет разнообразные проверки и может задать самые разные вопросы. Может, например, спросить, не уменьшить ли картинки, поскольку суммарная ширина изображения превысила максимально допустимую, или не сконвертировать ли их с меньшей глубиной цвета, чтоб меньше памяти занимали. В данном случае программа нашла различия в фокусном расстоянии - видимо, я кольцо зума нечаянно сдвинул, когда снимал. Отвечаем так, чтобы продолжить сшивку. Следующий вопрос - про линию горизонта, будем ли её регулировать. Говорим, что будем.
Красная линия - это и есть линия горизонта. Перетаскиваем её туда, где она находится на снимках. Приблизительно, особая точность не нужна.
Через минуту жужжания получаем некоторое подобие сшивки. Вот тут видим лажу - нестыковка по уровню горизонта. Я специально подобрал пример, где возникла эта проблема, чтобы показать, как её решать - на самом деле в полусотне сшитых панорам она возникла всего два раза. На то, что соседние сегменты отличаются по цвету, не смотрите - всё это будет автоматически исправлено на следующем шаге. Итак, исправляем нестыковку: Edit > Change Image Alignment (изменить выравнивание изображений).
Теперь тыкаемся в место нестыковки (стык выделяется красным) и перетаскиваем одну часть изображения относительно другой, пытаясь их совместить.
Примерно так. Полного совпадения не добиться, но оно и не нужно - после нажатия на кнопку "Done" программа снова выравнивает этот стык.
Проскрольте панораму ещё раз. Если всё нормально, нажмите "Render" (рендеринг).
Красным выделяются границы обрезки. Можно, ничего не меняя, нажать "ОК", а можно сначала поскроллить - иногда сверху-снизу удается безболезненно добавить десяток-другой пикселей.
Через минуту-две получаем практически готовую панораму. В меню Optimize можно ещё кое-что подправить при необходимости (яркость-контраст, кривые, уровни, цветовой баланс - обычный набор), но подробно я об этом рассказывать не буду, понадобится - разберётесь самостоятельно.
Последний этап - сохранение. В меню Save - три варианта: Save as image (сохраняет в виде большого JPEG-файла), Save as Flash or Java panorama (для Интернета) и Save as Screensaver/.EXE (сохраняет как экранную заставку или как EXE-файл).
Тут показано сохранение в EXE/SCR. Если экранная заставка мне без надобности (баловство это всё), то EXE - очень полезная функция, очень удобно отдать такую панораму кому-нибудь на флешке, потому что для просмотра больше ничего не надо - запускай и смотри. Из всей массы параметров здесь я настраиваю только "Panorama output size" (выходной размер), обычно выбираю 85%.
А это сохранение в виде флэшки для публикации в Интернете. Здесь "Panorama output size" нужно выбрать поменьше (я выбираю 35%), чтобы файл получился не слишком большим. И ещё - вместо Java нужно выбрать Flash.
Ну и уж до кучи, раз уж начал, расскажу как выложить такую панораму в ЖЖ. В результате сохранения получается четыре файла: html, xml, jpg и panoStudioViewer.swf. Флешка одна на все панорамы, она подгружает в себя xml и jpg. Допустим, сайт будет называться mysite.narod.ru. Вносим изменения в .xml (розовым выделено то, что нужно добавить):
Вносим изменения в .html (розовым выделено то, что нужно добавить):
Теперь файлы panoStudioViewer.swf, .xml и .jpg загружаем на сайт (все три в один и тот же каталог).
При написании поста в ЖЖ копируем из .html код, выделенный голубым, не забыв заключить его в <lj-embed>...</lj-embed>, как код для видеороликов на Ютубе. И не забывайте, что панорама - это всегда трафик, поэтому обязательно, при любых условиях, убирайте её под кат.
Не знаю, зачем я так много и так подробно про это расписал, там действительно всё делается очень просто и быстро. Но вдруг кому-нибудь пригодится.
no subject
Date: 2012-05-23 11:27 am (UTC)no subject
Date: 2012-05-23 12:42 pm (UTC)