После того, как мы убедились в том, что PanoTools позволяет получать
весьма неплохие результаты по сшиванию панорамных изображений, возникает вопрос,
нельзя ли как-нибудь облегчить свою работу, да и работу самой программы. Вспомним о том,
что из всех параметров, которые подвергаются уточнению в процессе оптимизации, 4, по крайней
мере теоретически, характеризуют свойства самого объектива и не должны зависить от условий получения
исходных снимков. Речь идет о горизонтальном поле зрения объектива и 3-х параметрах a, b и c,
которые по существу являются коффициентами полинома 3-й степени, аппроскимирующего кривую
радиального смещения ('бочки-подушки') для данного конкретного объектива. Таким образом,
если бы нам удалось каким-то образом получить значения этих 4-х параметров, то очевидно,
что процесс получения панорамных изображений мог бы быть существенно упрощен. По крайней мере
количество контрольных точек, расстановка которых является является наиболее трудоемкой процедурой
в этом процессе, может стать значительно меньше.
Способ получения указанных выше параметров существует и носит название 'калибровка объектива'.
Впервые он был описан австралийцем
Питером Мерфи (Peter Murphy) в 1999 г. Подход оказался
плодотворным и был впоследствии неоднократно использован другими фотографами для получения
параметров их конкретных объективов и фотоаппаратов.
Мы также воспользуемся этим способом для получения поля зрения и параметров a, b, и с объектива
Sigma 8 mm F4 EX в сочетании с цифровым аппаратом Canon Digital Rebel.
Получение искомых параметров осуществляется путем выполнения следующей последовательности действий:
(а) выбор натуры для получения исходных (калибровочных) снимков,
(б) само получение калибровочных снимков,
(в) написание исходного (пустого) скрипта, соответствующего начальным параметрам съемки,
(г) регистрация контрольных точек и
(д) оптимизация искомых параметров.
Натура для решения задачи калибровки должна содержать объект (или объекты) с большим количеством
потенциальных контрольных точек, таких как здание с множеством окон или стелаж с книгами.
Для получения снимков необходимо использовать устойчивый штатив с панорамной головкой,
пригодной для закрепления данного фотоаппарата. В нашем случае мы воспользуемся комбинацией,
состоящей из штатива Manfrotto 3205, 3D головки Manfrotto 3025 в качестве горизонтирующей
площадки и панорамной рамки Kaidan KiWi 900/950, к которой неожиданно удачно подошел
цифровой Canon. Воспользуемся трещеткой на 18 положений, что даст нам возможность поворачивать
аппарат с дискретностью в 20º. После тщательного нивелирования панорамной рамки с помощью
3D головки и установленных на рамке уровней и нивелирования самого аппарата в рамке с помощью
установленного в 'горячий башмак' призматического уровня сделаем 3 последовательных снимка
выбранной нами натуры (стелаж с книгами), поворачивая аппарата каждый раз на 2 положения
трещетки, т.е. на 40º. Как мы уже знаем из статьи 'Объективы fish-eye' кружок изображения, создаваемый 8 мм объективом
Sigma на матрице аппарата Canon Digital Rebel, выходит за границы матрицы по ее короткой стороне и
полностью вписывается в контур матрицы по ее длинной стороне. Поэтому для получения искомых параметров
эталонные снимки необходимо получать при портретной ориентации объектива.
После форматирования снимков до границ кружка изображения (2048 х 3012 пикселей) увеличим размер холста
каждого снимка до 3012 х 3012 пикселей. Эта операция позволяет смоделировать кадр, содержащий в себе
полный кружок изображения, создаваемого круговым fish-eye'ем.
Пустой файл для решения нашей задачи будет выглядить следующим образом:
p f2 w4200 h3000 v260 u10 n"PSD_mask"
i f2 w3012 h3012 y0 p0 r0 v180 a0.01 b0.01 c0.01 n"n0.jpg"
i f2 w3012 h3012 y40 p1 r1 v=0 a=0 b=0 c=0 n"n1.jpg"
i f2 w3012 h3012 y80 p2 r2 v=0 a=0 b=0 c=0 n"n2.jpg"
v v0 a0 b0 c0 y1 p1 r1 y2 p2 r2
Обратимся к уже проверенной нами программе ControlPoint и приступим к расстановке контрольных
точек. Делать это надо предельно тщательно, стараясь выбирать точки по всему (видимому) полю
изображений. Причем помимо пар смежных снимков в расмотрение необходимо включить и пару n0-n2.
После того, как контрольные точки расставлены, можно непосредственно из программы ControlPoint,
нажав кнопку '!' на нижней панели программы, инициировать инициировать процесс оптимизации.
Затем вызовите список контрольных точек и полученных в результате оптимизации параметров.
Просмотрите его и, если в нет явных отклонений от нормы (в первую очередь в самих оптимизируемых
параметрах, а затем в расстояниях между ожидаемыми и реальными положениями контрольных точек),
поздравьте себя с успехом. Желательно проделать этот эксперимент несколько раз со сменой натуры,
углов поворота аппарата и т.п. В нашем случае было проделано 6 сеансов получения калибровочных
снимков и оптимизации параметров, которые сведены в таблицу ниже.
Попробуем проанализировать полученные результаты. В первую очередь отметим их консистентность.
Так, весьма мало отличаются друг от друга значения всех 6-ти значений поля зрения объектива.
Небольшие их отклонения от ожидаемых 180º по всей видимости обусловлены неточностью
форматирования исходных снимков. Значения параметров a и c лежат в пределах нескольких сотых,
что вполне согласуется с данными других авторов. Параметр b, который представляет наибольший
интерес в силу своего значительного влияния на характер кривой, характеризующий радиальное
смещение (отрицательное b ведет к бочкообразным искажениям, положительное b - к подушкообразным),
также достаточно стабилен во всей серии нашего эксперимента. Все это говорит о том, что
в качестве постоянных параметров для нашей пары фотоаппарат-объектив можно принять их средние
значения, полученные по 6-ти проведенным нами сеансов съемки-оптимизации:
поле зрения = 178.224º,
коффициент a = 0.010412,
коффициент b = -0.144489,
коффициент c = 0.018564 и
коффициент d = 1.115513.
Теперь возникает вопрос, а что делать с полученными оптимальными параметрами, как их использовать
на практике? Существуют по крайней мере 2 способа применения этих параметров.
Первый из них заключается в том, что они включаются в 'пустой' скрипт, составляемый вами
для получения панорамы. Причем в качестве искомых параметров остаются лишь углы y, p и r.
В качестве примера попробуем сшить 3 снимка, полученных нами для калибровки объектива:
p f2 w4200 h3000 v260 u10 n"PSD_mask"
i f2 w3012 h3012 y0 p0 r0 v178.224 a0.010412 b-0.144489 c0.018564 n"n0.jpg"
i f2 w3012 h3012 y40 p1 r1 v=0 a=0 b=0 c=0 n"n1.jpg"
i f2 w3012 h3012 y80 p2 r2 v=0 a=0 b=0 c=0 n"n2.jpg"
v y1 p1 r1 y2 p2 r2
Важным преимуществом при таком подходе является то, что количество контрольных точек можно
сократить до 2-х на каждую пару смежных снимков. Извлечение из оптимизированного скрипта
с расстояниями между положениями контрольных точек приведено ниже.
# ====================================================================
# Control Points: Distance between desired and fitted Position (in Pixels)
# Control Point No 0: 1.4356
# Control Point No 1: 1.43753
# Control Point No 2: 0.64574
# Control Point No 3: 0.644996
Как видите эти расстояния в нашем примере составляют весьма незначительные величины. Использование
полученного скрипта для сшивания панорамы также дало (коррекция тональностей не производилась)
с виду неплохой результат:
При более тщательном просмотре в правой верхней части панорамы и в нижней ее части обнаружились
геометрические нестыковки смежных изображений, характеризуемые величинами примерно в полтора-два
пикселя, т.е. около 0,04-0,05%.
Таким образом получено практическое подтверждение правильности использованного нами
подхода.
Второй способ больше предназначен для тех, кому не по душе постоянная расстановка (даже 2-х)
контрольных точек, работа с масками и ручная тональная коррекция (к коим автор
этого сайта относит и себя). Способ заключается в том, что вы продолжаете пользоваться
привычной для вас программой (или программами) автоматического сшивания панорам, но делаете
это после предварительной корректировки исходных изображений с помощью плагинов, входящих
в состав Panorama Tools, и полученных в результате калибровки параметрами объектива.
Поясним эту процедуру на примере уже рассмотренных нами снимков. Пропустим эти снимки последовательно
через фильтр-плагин Correct > Radial Shift, а затем через Remap, отметив в левой части
столбца Fisheye hor., а в правой - PSphere:
Результатом работы плагинов будут следующие 3 скорректированных снимка в эквидистантной
проекции:
Сформатируем их с целью удаления образовавшихся в результате перепроецирования
белых 'ушей' по бокам каждого снимка. Теперь они готовы к сшиванию. Для получения
панорамы воспользуемся программой PhotoVista. Заметим (и это важно), что
режим коррекции перспективных искажений должен быть отменен (Disable warping).
После тщательного изучения полученной панорамы с целью выявления геометрических
погрешностей (нестыковок, фантомов и т.п.) с удовлетворением отметим, что результат
может считаться более чем превосходным.
Кроме того программа прекрасно справилась с тональными несоответствиями снимков, на
устранение которых в случае ручной корректировки ушла бы масса времени.
Заметим, что подобным же образом можно получить полную круговую панораму.
Подготовку снимков (Correct + Remap) для их использования с программой автоматического
сшивания можно, также, в один шаг осуществить с помощью плагина Adjust. Но мы думаем,
что читатель вполне сможет проделать это самостоятельно.
Таким образом мы завершаем раздел, посвященный составным панорамам, и, в частности,
изложение материала, описывающего подходы к сшиванию панорамных изображений и методы
их практической реализации. Незатронутой осталась тема получения сферических панорам.
Не описан полный спектр возможностей работы с графикой, предоставляемых пакетом PanoTools.
Мы, также, совершенно не коснулись вопросов коррекции и ретуширования готовых панорам.
Этот список можно продолжить. Постараемся по мере возможностей возвращаться ко всем
этим вопросам в приложениях и дополнениях к основному материалу.
|