Как снималась эпическая панорама Самары

После того как я опубликовал панораму Самары с горы Тип-Тяв меня неоднократно спросили о подробностях получения столь чёткого изображения. Рассказывать технические детали каждому отдельно занятие то ещё, поэтому фтыкаем тут!

Материал для итогового результата был снят менее чем за десять минут, потом обрабатывался пол-суток компом и часа три руками, но ему предшествовали долгие раздумья и две неудачные попытки. Вот из первой:

Great War of Pixels on ultrazoom

Great War of Pixels on ultrazoom

На этом снимке (точнее это кроп с кадра на 8Мп, без ресайза, из обработки только выправление горизонта) можно увидеть набор пикселей пытающийся изобразить ЖК Ладья. Расстояние до цели около 17.5км.

Блин №1

Как

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

Результат

Панорама Самары из посёлка Южный

7300x1000px, кликабельно, двигабельно.

Ошибки

Во-первых надо было не лениться и на последок ещё раз достать штатив. Оптический стабилизатор он конечно да, но не настолько да. Во-вторых ошибочно выбрана точка съёмки из-за чего красиво получился остров Зелёненький во время паводка, но Самара как-то не очень. В-третьих я тупанул и получил ленты из шести и трёх кадров, между которыми образовалась небольшая, но дырка. Пичалька. В-четвёртых на такой высоте имеют место быть искажения от разнотемпературных потоков от Волги, дымка, пыль…

Блин №2

Как

Учтя предыдущие ошибки я выбрал точку съёмки метров на пятьдесят повыше, а именно свою крышу. Прихватил штатив. Много матерился из-за неустойчивой погоды, чтобы поймать момент с трудом откопал одну рабочую веб-камеру в Самаре и как только веб-камера и окно одновременно показали солнечную погоду, ломанулся на крышу… ломился долго.

Результат

Панорама Самары с Красной Глинки

10900x1000px, где-то 35° из которых десять дождя.

Ошибки

Вообще тут должно было быть подсвечено косыми лучами предзакатного Солнца, но пока я разбирался с доступом на крышу… зато удалось снять как дождь льёт над частью Самары! Дождь получился красиво, спору нет. А вот с освещением как-то не очень.

Высоты опять не хватило, береговая линия по большей части загорожена, хотя уже не Зелёненьким, а дальше. Также ВНЕЗАПНО выяснилось, что в расчёт мешающих съёмке объектов вкрались две ошибки — во-первых верхушки антенн могут существенно превышать высоту дома на пути полёта нужных мне фотонов, во-вторых если труба не дымит это совсем не значит что из неё ничего не идёт — тёплый воздух невооружённым глазом незаметен.

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

Блин №3. Эпический.

Теория

Я конечно знал что атмосфера на самом деле не особо прозрачна, но одно дело знать теоретически, по книгам, фильмам и учебнику астрономии… совсем другое дважды упереться в это на практике. Причём на задачах далёких от этой самой астрономии. Помимо очевидных проблем из-за дождя и тумана вылазят следующие:

  • смог — ну а что вы хотели, не в 15 веке живём… т.е. снимать надо в выходные, когда его меньше
  • дымка над Волгой — тут либо ловить момент, либо забираться выше
  • пыль — что означает желательность съёмки после дождя или в безветренную погоду
  • неравномерность температуры — от воды холод, от суши тепло, в результате всякие преломления
  • трубы — из них идёт если не дым, то тёплый воздух, который превращает кусок кадра в кашу

Следующая точка съёмки напрашивалась сама собой — Лысая гора aka Лыска aka гора Тип-Тяв. Ещё полторы сотни метров высоты это существенно… Оставалось только исправить ошибку вида «камера» методом поиска фотографа с хорошим фотиком и нужным объективом. Хорошенько пнув парочку знакомых я выбил принципиальное согласие и примерные даты аля «ну там через выходные наверное…». Далее полез в гугл с запросом аля «методы устранения шумов матрицы» (шумы эти имеют место быть даже на самых распальцованных камерах, а учитывая предельные режимы съёмки…). Вот тут и началось самое интересное!

Оказывается, умные люди давно изобрели то что в английской терминологии именуется «image stacking» — что обозначает съёмку нескольких одинаковых кадров с разными параметрами. HDR это частный случай данной технологии. Кроме того используется для фокуса, освещения и ещё там чего-то. Меня в данном случае заинтересовала технология применительно к подавлению шумов. Суть в том, что делается несколько одинаковых снимков, далее они математическими методами складываются и получается кадр на котором убраны случайные шумы.

И да, неоднородности атмосферы мешающие съёмке являются случайными, т.е. это такой-же случайный шум, который можно также задавить при помощи большой выборки кадров!

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

Зомби-апокалипсис это конечно хорошо, но вот в чём проблема: тащить на Лысую гору или сооружать там нечто монолитное для фиксации фотика мне как-то не хотелось, поэтому я вбил в гугле что-то аля «методы выравнивания изображений» и получил вполне конкретные рецепты в которых фигурировали слова «align/image/stack».

Подбив теоретическую базу я понял что мне понадобится связка софта ImageMagic+GIMP+Hugin, а также прямые руки и машинка с линуксом. Ну и фотограф с проф.техникой, да.

Практика

Идея была отложена на потом, вкладки закрыты, закладки убраны… но тут вмешалась Вселенная в лице комрада Пирата со словами «Может до Лыски дойдём? Солнце вроде…». Поиск фотографа по понятным причинам отменился, вместо этого принято волевое решение снимать тем что есть.

Сам процесс съёмки выглядел совершенно не эпично: приземлившись на брёвнышко, развернув штатив, закрепив на нём фотик, отхлебнув из армейской фляги и закурив сигарету я тупо сделал тринадцать раз по десятку одинаковых кадров.

Обработка

Совмещение фотографий и обрезка

Первым делом фотки были разложены на 13 папок в каждой из которых были одинаковые снимки. Проблема в том что небольшое дрожание и работа оптического стабилизатора приводят к тому что разные кадры несколько уплывают друг относительно друга. При помощи команды

align_image_stack -C -a 01p *.JPG

фотографии совмещаются и обрезаются. Здесь «*.JPG» это маска по которой отбираются файлы, конкретнее все с расширением жпг. «01p» это префикс, который будет дан именам файлов, получится «01p0000.tif». Ключ «-C» это кроп, т.е. обрезка всех кадров единообразно.

АХТУНГ! Если кадры отличаются слишком сильно, то результат может оказаться удивительным, например 6 кадров нормально и ещё 4 под углом градусов двадцать. Нужно контролировать.

Суммирование кадров

При помощи команды

convert 01p* -evaluate-sequence median pan01.tif

Из десятка кадров получается один. «01p*» это маска по которой будут отобраны кадры, параметр «-evaluate-sequence» указывает что кадры надо сложить, «median» — метод сложения, в данном случае по медиане. Математический смысл в том что яркость каждого пикселя на каждой фотографии выстраивается в ряд и выбирается то значение что оказывается в середине (в случае если кадров чётное количество — вычисляется среднее между двумя значениями). Таким образом все случайные шумы отсекаются тем лучше, чем больше кадров в исходном материале.

Существует множество других методов сложения, для устранения шумов также пригоден «mean» — нахождение среднего арифметического для каждого пикселя. Остальные относятся к художественной обработке.

Хроматические абберации и их устранение

Хромати́ческая аберра́ция — разновидность аберрации оптической системы, обусловленная зависимостью показателя преломления среды от длины волны проходящего через неё излучения (то есть, дисперсией света). (ц) Вики

Проблема в том, что все камеры оптимизируются под средние режимы, а на предельных вылазят каки. Съёмка на 10-30км с 16x зумом несомненно именно такой случай. На практике это означает что по краям картинки красный и синий цвета уезжают друг относительно друга, что выглядит как разноцветные края. Это плохо, а для дальнейшей сборки панорамы фатально — о чёткости и качестве можно забыть.

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

Делал при помощи плагина под названием «Fix Chromatic Aberration» для GIMP… Но плагин под старую версию, компилировал и ставил я его исполняя национальный админский танец «пляски с напильниками», так что рекомендовать сей метод не буду. Ищите альтернативы.

Сборка панорамы

Тут никаких особых сложностей, при помощи программы Hugin всё получается легко и просто. Единственный нюанс — в итоговых изображениях нет данных exif об объективе, поэтому нужно руками указать всякие параметры по углам. Делайте по аналогии с тем что в данных оригинальных фотографий немного скинув на то что они обрезаны.

Постобработка

К сожалению, результат всё ещё далёк от совершенства. Запускаем GIMP и начинаем шаманить с фильтрами… я использовал резкость, нерезкую маску и выделение края. И что-то там ещё, уже не вспомню.

АХТУНГ! Разные куски панорамы сильно по-разному реагируют на наложение фильтров, поэтому нужно внимательно контролировать результат на каждом шаге. Иначе можно получить половину изображения совершенно невменяемого качества при небольшом улучшении другой половины.

Финальным аккордом кроп, дабы обрезать кашу сверху и снизу, и ресайз в полтора раза, чтобы выглядело ещё приличнее.

Результат

Эпическая панорама Самары с горы Тип-Тяв

Разрешение на дальности 20км получилось около 50см на пиксель. Неплохо так для мыльницы?;)

Ошибки

Как обычно не хватило высоты)))) Ну это уже дальше уже усё уже выше уже некуда.

Выдержка. Не стоило все настройки выставлять вручную — получилось что крайняя левая и крайняя правая часть панорамы очень отличается по яркости. Тут нужно было либо позволить искусственному идиоту в фотоаппарате порулить выдержкой либо сделать это самостоятельно. Проблема в том что на ярком Солнце оценить результат на маленьком экранчике нереально.

Формат кадра 4:3. Как-то я забыл что линзы внутри не прямоугольные, а, сцуко, круглые! Правильно снимать на формате 1:1 и никак иначе.

Хроматические аберрации нужно устранять на исходных кадрах.

На исходных кадрах нужно сразу делать кроп, ибо устраняй не устраняй, но края всё равно в кашу.

Больше перекрытия. Я снимал с рассчётом что каждый кадр перекрывается двумя другими на 60%. Надо бы на 100%.

Нужно больше кадров. Далеко не все из 13 итоговых кадров собраны из 10 исходных, многие получились уехавшими, в результате где-то 7, а где-то вообще 5.

Больше кадров! Серия из десятка к сожалению не позволяет полностью задавить атмосферные искажения, по моим прикидкам необходимо где-то от тридцати… лучше бы даже от 50.

БОЛЬШЕ КАДРОВ!!! В идеале нужно делать пять серий кадров с разной экспозицией, чтобы собрать из них HDR.

Снимать на нормальный фотик в формате RAW.

Сфероконные расчёты на калькуляторе показывают что если подойти к делу со всей тщательностью, потребуется от 1Тб места для исходного материала и месяца три обработки на моей машинке… Да, я ахуел!:)

Блин №4. Проектный, ещё более эпический.

Серп и Молот

Серп и Молот

Есть одна точка на карте нашей малой Родины, с которой можно углядеть Самару с более привычного ракурса и ширше ширее ширямше:

Если присмотреться на фотографии можно различить город, причём расстояние получается меньше чем с горы Тип-Тяв. Это место немного выше села Торнового на Самарской Луке.

Ориентируюсь на съёмку пятидесяти серий по тридцать кадров формата 1:1 с кропом и полным перекрытием. Теоретически должен уложиться в 8Гб и неделю машинного времени.

Блин №5. Проектный, астрономический.

Существует метод super resolution, который в теории позволяет обойти даже дифракционный предел. На практике это означает что можно получить фотографию какого-либо объекта в разрешении превышающем физическое разрешение используемой техники.

Жду полнолуния и ясной погоды. Луну я уже снимал (раз, два), теперь хочу то же самое, но в два раза больше и без шумов.

Точки съёмки

Первая панорама снята с A, вторая с B, итоговая — C, проектная — D.

KML-LogoFullscreen-LogoQR-code-logoGeoJSON-LogoGeoRSS-Logo
Точки съёмки эпических панорам

Карта загружается. Пожалуйста, подождите.

посёлок Южный, набережная: 53.368671, 50.180697
посёлок Красная Глинка, 1 квартал: 53.381588, 50.176041
Гора Тип-Тяв: 53.391570, 50.162287
Серп и молот, село Торновое: 53.278343, 49.939985
marker icon
icon-car.png Fullscreen-Logo KML-Logo
посёлок Южный, набережная
marker icon
icon-car.png Fullscreen-Logo KML-Logo
посёлок Красная Глинка, 1 квартал
marker icon
icon-car.png Fullscreen-Logo KML-Logo
Гора Тип-Тяв
marker icon
icon-car.png Fullscreen-Logo KML-Logo
Серп и молот, село Торновое

Глядя на карту некоторые догадались, что эти панорамы это не совсем панорамы. Т.е. они конечно панорамы, но не панорамы))) Реальный угол между крайней левой и крайней правой точкой города составляет градусов эдак тридцать, но при этом расстояние до наблюдателя слева около 12км, а справа примерно 30км. Таким образом весь город с его береговой линией ~18 км поместился потому что был снят сильно под углом.

2 Comments:

  1. Поделил 50 сантиметров (которые на пиксель) на 20 км расстояния. Получилось 0,000025. Это тангенс.
    Взял арктангенс от 0,000025, вышло 0,0014 градуса на пиксель.
    Умножил на 18 000 пикселей по горизонтали. Получил всего-то 25 градусов.
    Т.е. у тебя вышло 18 Кпикселей на 25 градусов. В расчете на полный цилиндр — это в 15 раз больше.
    15*18000 = 270 000 пикселей.

    Блин, да вообще не парься с ошибками. Первая, вторая, третья… сколько там еще?
    Это просто великолепный результат. А уж если учитывать, что на мыльницу…. В общем — супер!

  2. Спасибо!

    По расчёту я сделал проще: померил расстояние до Ладьи, нашёл высоту в вики и посчитал пиксели:)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *