Этап третий:
   Оптимизация
Итак, мы имеем у себя настроенную, практически готовую к расчету панораму, однако расчет можно повредить.
Поэтому соберем волю в кулак и не будем спешить.
От прошлой демонстрации безсилия автомата у нас остались точки соответсвия, созданные программой AutoPano.Exe, их всех надо удалить. В большинстве своем, они не верны, да и сгруппированы они как-то неправильно.. Ничего в них хорошего нет. Удаляйте, не жалейте.
Мы расставили горизонтальные точки. Оптимизатор может работать, но он как на салазках будет ездить по этим горизонтальным и точного совмещения нам опять не добиться. Чтобы это произошло, нам надо переключиться на обыкновенный тип точек (Horiz. + Vert. t0) и образно выражаясь "прибить" ими изображения друг к другу. Достаточно будет двух удаленных друг от друга точек типа t0. Их расстановку я оставляю вам, пробуйте. Задача немножко творческая, немножко утомительная, потому что не все места могут быть точками соотвествия, как бы контрастно и вроде-бы незыблемо они не казались, не забывайте, мы имеем дело с облаками, которые ничем в своем движении не ограничены.
Когда вы расставите все точки, мы переходим к оптимизации.
Мы не будем выбирать reference image, потому что это в общем-то и не надо.
Объясню почему:
  1. Линия горизонта у нас есть, мы ее прибили точками соответсвия типа t2
  2. Базовое изображение, которое должно быть в середине панорамы у нас будет
    отсутствовать, но автоматически ей станет, наверное, 3е в списке, это
    "CRW_6285-01_sm.jpg" как это и почему произойдет, я объясню позже.
Когда вы доберетесь до пары 4-5 и поставите там пару точек соответсвия, то вернитесь на шаг 1 там будет список изображений и краткая информация по предполагаемым искажениям, которые рекомендует нам оптимизатор, если вы ничего не делали, то там везде должны быть нули, ведь, то что оптимизатор надумал в режиме автомата, эти точки мы удалили, а новые, мы пока еще не обсчитали, однако, если вы что-либо успели поделать, то жмите кнопку "Reset All", она сбросит уже установленные параметры сдвигов и поворотов для всех изображений, не будем тащить промежуточные настройки, начнем с нуля, вернее сказать, с нулей.

Переходим к шагу 4, оптимизатор.
Итак, у нас есть вся информация, чтобы получить готовую панораму. Вроде бы. Но это не совсем так.
Ошибка в позиционировании в одной паре фотографий, отражается на всех. Чтобы этого избежать, надо изолировать потенциальные ошибки. Для этого в окне "Use Control Points From:" снимем все галочки и установим их только для первого и второго изображения, в поле "Lens Paramaters (All Images)" снимем все галочки, эту часть мы вообще не будем оптимизировать, потому что мы точно знаем эти параметры. Жмем кнопку "Manual Optimize".

В открывшемся окне нас должна интересовать только цифра около ACPD (Average Control Point Distance) среденее значение расстояния между двумя частями точки соответсвия. Для нашего случая, промах должен быть менее 1 пикселя. Один пиксель - это не сведенный в единое целое горизонт. Снимайте галку с "Show Additional Control Point Information", эту информацию вы сами сейчас увидете.
Итак, у вас результат более одного пикселя. (Скорее всего, я так думаю... Если нет, вы молодец, но то что внизу все равно прочитайте, информация лишней не бывает, вдруг, вам повезло ? :-) Возвращаетесь на шаг 3 и смотрите в окно под изображениями, там описаны ваши точки соответсвия, координаты в левом и правом изображении, тип выравнивания и "Optimized Distance", эта та дистанция, которая будет отделять две эти точки друг от друга на конечной панораме, то есть длинна нестыковки. Смотрим, на точку, имеющую самую большую дистанцию. Горизонтальные не трогаем, они нужны, они наш фундамент, точками типа "t0" мы вносим однозначность оптимизатору. И только ими мы управляем ситуацией. В общем, вы промахнулись! Выделяйте "t0" с самой большой дистанцией и удаляйте ее, это место не подходит для точки, ищите другую. Если не можете, ну что-ж.. можно обойтись и одной.
Нашли ? Поставили ? Шаг 4, кнопка "Manual Optimize" и так, до тех пор, пока не получите нужный результат.

Если вы читаете здесь, то значит оптимизатор уговорил вас расставить точки так, чтобы он выдавал вам нужный результат.
В таком случае, мы имеем два хорошо и качественно совмещенных друг с другом изображения, теперь нам нельзя рушить их гармонию, а раз так, то надо изъять их из следующего процесса оптимизации, так как неверные результаты следующего изображения могут внести погрешность в предыдущий обсчет, а нам это не надо.
Поэтому, в окне "Use Control Points From:" снимаем галочку с Img1 и ставим галочку напротив Img3. Теперь мы будем работать с парой 2-3. Однако, если мы запустим процесс оптимизации сейчас, то изображения 2 и 3 у нас совместятся, но связка 1-2 у нас разъедется, так как изображение "2" у нас сдвинется, чтобы совместиться с 3м, а этого допустить нельзя. Мы сделаем так, чтобы 3е изображение подстраивалась под уже существующую композицию, но при этом 1ое и 2ое с места не сдвинулись.

Для этого надо снять галочки в окнах для Yaw, Pitch, Roll для Img2.
В окне "Use Control Points From", мы говорим оптимизатору, чтобы он использовал точки сопоставления из второго и третьего изображения, но при этом, мы даем ему указание, что для маневров он может использовать только Img3 и не может использовать остальные, в частности 2ое. Таким образом 3е изображение встает в гармоничный ряд с уже настроенными друг на друга изображениями 1 и 2, не нарушая их гармонии.
Теперь все как раньше, если промах больше одного пикселя, то на 3ий шаг и поиск более правильной точки.
Точно так же делаем для всех остальных изображений.

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

Шаг №5.
Жмем кнопку Auto Size Parameters.
Что здесь что:
Как строится панорама

Panorama Tools, всегда расчитывает панораму на шаре размером 360 на 180 градусов. Виртуальная камера, изображение которой вычисляется и потом отдается в виде результирущей картинки панорамы, настроена на точку 0:0. Если панорама сдвинута влево или вправо, то есть в полях Yaw, напротив изображений доминируют либо положительные, либо отрицательные числа, камере приется увеличить HFOV (горизонтальный охват), чтобы запечатлеть вашу панораму.
Если вы кладете примерно средний кадр в качестве Reference Image, то ожидаемый HFOV будет примерно равен углу обзора результирующей панорамы, если нет, то возможны сдвиги.

Вот что стоит помнить при вычислении панорам:
Рабочим форматом для PTStitcher'а является формат TIFF. Неиспользуемое поле, в случае сдвига панорамы от центра, будет занимать физическое место и физическое место в памяти при обработке изображении..
Промежуточные файлы PTStitcher делает сразу в указанном поле охвата и в указанных Width и Heght, это означает что если результирующая панорама из 5 кадров занимает 93 градуса, но из-за сдвига, чтобы ее отразить требуется охват в 210 градусов, то все 5 обрабатываемых файлов составляющие панораму, будут преобразовываться к 210 градусовому формату в указанных значениях ширины и высоты, из них полезными будут только 93/5 градуса (без учета взаимного пересечения, с учетом, будет еще меньше), а остальное пространство будет просто черным, на которое никогда не будет наложена полезная информация, тем не менее, в работе оно будет принимать свое пассивное участие, потребляя ресурс и память.
Panorama Parameters 
Horiz FOVГоризонтальный охват вашей панорамы. Вычисляется из параметров YAW и значения HFOV объектива. Если YAW сильно сдвинут в минус, то возможно появление черного поля справа, то есть картинка панорамы сдвигается, как бы влево, если сильно в плюс, то сдвиг вправо с появлением черного поля слева. Чуть увеличив его, можно уменьшить результирующую панораму, если некоторые ее части выходят за пределы обсчитанной панорамы. Все как в видео камере, чем меньше HFOV, тем вы ближе к своей панораме, тем меньшую часть общей панорамы вам будет видно, чем больше HFOV, тем большую часть панорамы вы сможете увидеть, а те места в которых информации о вашей панораме нет, будут заполнены черным.
Одним словом, полная аналогия с трансфокацией в видеокамере.
FeatherЭто количество точек, которые будут отданы на пересечение изображений. Становясь к краям от четкого до прозрачного они позволяют сделать плавный переход из одного изображения в другое. Очень помогает, в случае нестыковок, позволяя отказаться от использования "Morph-to-fit", в случае облаков, волн и других объектов не несущих явно выраженной смысловой нагрузки и имеющей в своей основе хаотический характер.
Create Preview (Small) Panorama 
Width, HeightШирина и высота будущей панорамы в точках. Очень интересный момент. Здесь вы задаете что-то типа масштаба, для вашей панорамы, к этим размерам она будет приведена. Пропорциональные-же размеры всегда фиксированы и складываются из значений YAW, PITCH и HFOV объектива, для каждого составляющего панораму изображения. Здесь вы на них никак не повлияете.
Преобразование к этим размерам происходит на самом начальном этапе расчета, поэтому регулируя размер вы можете более детально просматривать свою будущую панораму, чем изначально вам предлагает сделать PTAssembler.
Show/Edit ScriptА это то, о чем я упомянал в самом начале, про скрипт-файл для PTStitcher'a. Здесь вы можете посмотреть на него и если посчитаете возможным, отредактировать. Открытое окно скрипта имеет проритет над остальными действиями, обсчет будет происходить с параметрами указаннымим в окне редактора скрипта. Как только вы его закроете, все вернется в исходное состояние и кнопкам вернется вновь свой "вес и значение".
Create Final
(Full-Size) Panorama
 
Width, HeightШирина и высота будущей панорамы. Верно все, что я описал ранее. Не буду повторяться.
Output File Format (n)Тут стоит отдельно отметить только "TIFF / Enblend (TIFF_m)"
Enblend: - программа по сшиванию двух изображений, на основе информации альфа канала, который создается PTStitcher'ом в TIFF файлах-заготовках. PTStitcher создает набор файлов (преобразованные файлы из оригинальных с учетом результирующего HFOV) в формате совместимом с входными параметрами программы Enblend. Процесс Enblend, стоит помнить очень жруч до памяти. Впрочем, PTStitcher тоже в этом плане не подарок. У меня был проект, который на моем ноуте с 256Mb обсчитывался более 4х часов, нещадно мордуя жесткий диск, который не гас светодиодом ни на секунду.

Ладно, нажали, получили:

Ёх.. что это ?
А это те черные поля, которые я описал выше.... 208 градусов охвата, вместо 93х..
Камере пришлось раздвинуть HFOV, чтобы наша панорама вообще отобразилась, ибо сдвнута она огого, кстати, надо отметить, что это вычисление делает PTAssembler, низкий поклон Max Lyon'у за это. Поначалу, когда я пользовал скрипты напрямую, я частенько сталкивался с тем, что у меня куда-то пропадало изображение :-). Там это надо указывать в ручную. Ну да ладно...

Сдвиг появился у нас из-за того, что мы делали все в пошаговом, режиме, оптимизатор выбирая сдвиг для первых двух, не знал, что его поджидают еще три изображения и потому выбрал точку, которая на его взгляд была более подходящая для двух изображений.
Сейчас мы это поправим. Но сначала чуть теории.
Виртуальная камера смотрит на точку 0:0, поэтому, чтобы панорама поместилась перед камерой, ее надо туда как-то перенести, за положение у нас отвечают параметры YAW и PITCH, как-то их изменяя, надо перетащить собранную панораму в поле зрения виртуальной камеры, да так, чтобы она не развалилась опять на части.

Я не знаю, какие у вас сейчас параметры проекта, но давайте рассмотрим некую панораму из 3х изображений, Yaw параметры, которых "-150", "-80", "-10", числа придумал из головы.
Первый взгляд: слишком много минусов, результирующая панорама должна быть смещена влево и черное поле справа нам гарантировано. Чтобы перетащить панораму поближе к центру камеры.. Поместим начало нашего второго изображения на 0, так как край изображения уполз в "+" на "80", то все остальные изображения должны сдвинуться вслед за ним, так-же на 80. (-150)+80, (-80)+80, (-10)+80... то есть -70, 0, +70. Вот теперь, у нас панорама по центру и черного пространства практически не будет, так же мы уменьшили рабочий объем файлов, которыми придется ворочать PTStitcher'у и возможно Enblend'у. И вообще, картинка стала гораздо приятней.

Ну ладно, вернемся к нашему проекту, надеюсь теперь вам станет понятно, то что произойдет с цифирками после нажатия на кнопку "Equalize". В блоке Yaw, нажмите на кнопку Equalize, произойдут те же самые процессы, которые я описал чуть выше на примере. Теперь ваша панорама отцентрована по горизонтали, по логике, тоже самое надо проделать с Equalize в блоке Pitch, однако, почему-то этот финт не проходит, и панорама искажается, поэтому делать "Equalize" для Pitch не будем.
Теперь вы понимаете, почему мы не выбрали Reference Image для нашей будущей панорамы ?
Мы это сделали автоматически, выровняв части нашей будущей панорамы по средней точке.

Перемещаемся на шаг №5 и жмем "Auto Size Parameters" и после "Preview", обращая внимание, как изменился ожидаемый охват...
Заметили ?
Смотрим результат:


А вот что произошло, если бы мы нажали на "Equalize" в блоке "Pitch".


Для сравнения, две панорамы, одна сделана с выводом в JPG (feather=0), другая сделана через обработку изображений Enblend'ом.
Output: Jpeg (feather=0)Output: TIFF / Enblend (TIFF_m)

Файл проекта можно взять здесь: "CRW_6283-01_sm-CRW_6287-01_sm.ptp " Size:~3Kb.

Настало время расставаться...
Я очень надеюсь, что этот материал поможет вам разобраться с пониманием процессов происходящих при сборке панорамы, возможно, после этого вы более критично посмотрите на то, что у вас есть. Хочется верить, что этот материал поможет вам создать более красивые, более качественные панорамные снимки и не отступать перед проблемами, которые вам встретятся на пути к совершенству.
Panorama Tools это инструмент, при помощи которого можно создать что угодно, и я постарался вам это продемонстрировать.

Hosted by uCoz