ssgen ([personal profile] ssgen) wrote2010-10-09 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>, как код для видеороликов на Ютубе. И не забывайте, что панорама - это всегда трафик, поэтому обязательно, при любых условиях, убирайте её под кат.



Не знаю, зачем я так много и так подробно про это расписал, там действительно всё делается очень просто и быстро. Но вдруг кому-нибудь пригодится.

Ой, спасибо :)

[identity profile] uraldaily.livejournal.com 2010-10-09 03:37 am (UTC)(link)
Евгений, а я думала, вы забыли про меня совсем:) То есть, конечно же, про мой вопрос, как делать такие красивые штучки (безусловно, вас об этом спрашивала не только я, но мне-то приятнее думать, что вы для меня отвечали) :)))

СПАСИБО ОГРОМНОЕ

буду пробовать!:)

Re: Ой, спасибо :)

[identity profile] ssgen.livejournal.com 2010-10-09 05:29 am (UTC)(link)
На здоровье :)
Нет, не забыл, просто времени не всегда хватает.

[identity profile] sorry-chel.livejournal.com 2010-10-18 08:21 pm (UTC)(link)
Спасибо за такой подробный рассказ.
Как раз вовремя.

[identity profile] ssgen.livejournal.com 2010-10-19 01:28 am (UTC)(link)
На здоровье :)

[identity profile] 4882000.livejournal.com 2010-10-29 07:49 am (UTC)(link)
интересно.
пользовался несколькими программами для сшивки - постоянно в чем-то лажа. некоторые точки не могут нормально выискивать совпадающие из-за этого в кадре постоянно то разрывы присутствуют, то наложения "не там где надо". некоторые сшивают нормально, но разницу в яркости неправильно воспринимают и объект получается сначала светлым, а после линии сшивки - темным или наоборот.
в этом отношении Microsoft ICE более менее удовлетворил. сшивает хорошо на автомате, косяки только с яркостью.
PTGui - слишком сложным показался, да и сшивку проводил не очень качетсвенно, постоянно получались отсутствующие фрагменты.
PanoramaPro - плохая сшивка, часто при перекрытии более 50% отказывался сшивать, приходилось обрезать вручную.

[identity profile] 4882000.livejournal.com 2010-10-29 08:07 am (UTC)(link)
а где можно посмотреть примеры панорамных снимков?

[identity profile] ssgen.livejournal.com 2010-10-29 08:09 am (UTC)(link)
Один - в конце этого поста, остальные - http://ssgen.narod.ru/

[identity profile] 4882000.livejournal.com 2010-10-29 08:22 am (UTC)(link)
только флеш?

[identity profile] ssgen.livejournal.com 2010-10-29 08:25 am (UTC)(link)
А, вон какие панорамы нужны :)
Флешка там одна на все панорамы - она подгружает в себя джипег.
А джипеги называются так же, как и страницы.
Например панораме http://ssgen.narod.ru/smolino1.html
соответствует изображение http://ssgen.narod.ru/smolino1.jpg

[identity profile] 4882000.livejournal.com 2010-10-29 08:29 am (UTC)(link)
клево. из дома позырю.

[identity profile] 4882000.livejournal.com 2010-10-29 08:23 am (UTC)(link)
на что снимаете? важно ли качество фотика при снимках панорамм?

[identity profile] ssgen.livejournal.com 2010-10-29 08:30 am (UTC)(link)
У меня Nikon D90, объектив Tamron 18-270.
Когда сшивал в фотошопе, кадры с мыльницы склеивались куда проще, чем с зеркалки. С никона постоянно приходилось где-то что-то подтягивать. Панорамастудия сшивает автоматом, лажается редко.
Впрочем, я просто любитель, у профессионалов возможно более строгие требования.

[identity profile] 4882000.livejournal.com 2010-10-29 09:13 am (UTC)(link)
я тоже мягко говоря не профессионал, снимаю вообще на мыльницу.
однажды попробовал панорамму сшить - понравилось, загорелся.
теперь вот думаю купит себе зеркалку. денег поднакоплю только.
честно говоря, поймал себя на мысли что если бы нужно было купить телевизор большой или холодильник хороший - уже давно купил бы, а вот на фотоаппарат - приходится копить.

[identity profile] il-e.livejournal.com 2010-11-29 06:18 pm (UTC)(link)
Спасибо!

[identity profile] kypbe3bl.livejournal.com 2011-04-16 07:02 pm (UTC)(link)
Спасибо.

(Anonymous) 2011-04-18 07:42 pm (UTC)(link)
Огромное спасибо за такое подробное описание! Очень помогло!
Кстати, это не совсем относиться к теме, но все же, вы случайно принцип (алгоритм) автоматической сшивки фотографий не знаете, очень понадобился, но к сожалению, никак не могу нигде найти. Если вдруг знаете киньте на почту буду очень благодарен, (если возможно, с более ли менее подробным описанием).
Заранее благодарю за помощь!
(max84_84@list.ru)

[identity profile] ssgen.livejournal.com 2011-04-19 01:11 am (UTC)(link)
На здоровье.
К сожалению нет, по алгоритмам не помогу ;)

[identity profile] nordroden.livejournal.com 2011-04-28 08:54 am (UTC)(link)
Давно хотел сделать панорамы из отснятого материала.
Огромное спасибо за туториал, буквально за пять минут собрал панораму, действительно никаких сложностей.

[identity profile] ssgen.livejournal.com 2011-04-28 08:55 am (UTC)(link)
На здоровье :) Рад, что получилось

[identity profile] nordroden.livejournal.com 2011-05-13 09:02 am (UTC)(link)
Панорамы сшивать получается, а вот в ЖЖ воткнуть никак. Делаю по твоему мануалу. В журнале окошко черное появляется, а загрузка стоит на нуле, проц на 99% сразу загружается. Перепроверил всё что можно, не знаю где искать. В качестве хоста использую народ на яндексе. Может файлохранилище сменить?

[identity profile] ssgen.livejournal.com 2011-05-13 11:17 am (UTC)(link)
Я тоже на народе держу. На всех браузерах однаково не работает?

[identity profile] nordroden.livejournal.com 2011-05-14 09:13 am (UTC)(link)
Пробовал на Эксплорере, Хроме. Картина одинаковая. А на народе файлы где размещаешь, на созданном сайте или в файлообменнике?

[identity profile] ssgen.livejournal.com 2011-05-14 09:29 am (UTC)(link)
На сайте конечно.

[identity profile] nordroden.livejournal.com 2011-05-14 09:59 am (UTC)(link)
Если тебе не трудно, поясни как размещать файлы на сайте. (я в сайтостроении полный ноль)
Что я сделал.
Создал страничку
В менюшке управления файлами загрузил файлы.
Понимая, что ссылки на файлы должны быть доступны из любого места, на сайте создал текстовый блок со ссылками на файлы
Скопировал ссылки по твоей инструкции на файлы в xml и html.
Блин, не работает, черное окно с баром загрузки, 0%

[identity profile] ssgen.livejournal.com 2011-05-14 10:04 am (UTC)(link)
Наверное в ссылках дело.
Менюшкой не пользовался, файлы загружаю прямо в корневой каталог - http://help.yandex.ru/narod/?id=1112763

[identity profile] nordroden.livejournal.com 2011-05-14 11:57 am (UTC)(link)
Спасибо, всё заработало!

[identity profile] ssgen.livejournal.com 2011-05-14 01:05 pm (UTC)(link)
Отлично :)

[identity profile] bashmanov.livejournal.com 2012-02-05 01:37 am (UTC)(link)
Спасибо за совет. Редко шил панорамы. Раньше это приходилось делать фотошопом с соответствующим гемором и неудовлетворительным результатом. по этой причине желание заниматься этим надолго пропало. Потом появился Sony NEX 5 с функцией внутренней сшивки панорам из серийной съёмки, но фотка при этом получалась существенно меньше по высоте, чем разрешение фотоаппарата, а регулировать экспонирование в этом случае было невозможно, только автоматический вариант.
Сегодня решил поискать программы по автоматической сшивке отдельных кадров и нашёл вашу статью.

Программа неплохо сшила предложенные ей 6 снимков. Лажанулась лишь в одном месте, да и то так мягко, что я не сразу заметил место глюка. :) Думаю, что если снимать со штатива, а не с рук и соблюдать корректное соотношение перекрытий, то глюков не будет вовсе.
В любом случае попробую ещё посоветованный в комментах Microsoft ICE. Глюк с освещённостью для меня не страшен, поскольку снимаю на ручных настройках в RAW, а затем пакетно обрабатываю все кадры с одними настройками в JPEG или TIFF устраняя искажения перспективы и бочко-подушко-образности.

[identity profile] foxxxof.livejournal.com 2012-05-23 11:27 am (UTC)(link)
У меня почему то кнопка сохранить не активна, наверное программа платная. Где можно скачать серийник или что-то в этом роде ?

[identity profile] ssgen.livejournal.com 2012-05-23 12:42 pm (UTC)(link)
без малейшего понятия. разве что в гугле поискать.

(Anonymous) 2012-09-13 04:00 pm (UTC)(link)
Большое Вам спасибо, благодаря Вашей статье научился шить панорамы.
Но что жалко при 360гр, нет центровки самой панорамы, тоесть нет сдвига для центральной точки панорамы, т.е.верх, низ, линия горизонта, можно править, но центровать нельзя. Если есть возможность, не подскажете как сферические собирать, хотя бы кратко, просто хочу попробовать.
Еще раз Вам БОЛЬШОЕ спасибо!!!

[identity profile] ssgen.livejournal.com 2012-09-13 04:58 pm (UTC)(link)
На здоровье :)
Сферические - точно так же, только вместо "Create single-row panorama" нужно выбирать "Create multi-row panorama"

(Anonymous) 2013-01-20 05:31 pm (UTC)(link)
У меня в *.ехе не сохраняет

(Anonymous) 2013-03-06 12:24 pm (UTC)(link)
Спасибо огромное!