Предыстория


Пару лет назад на Хабре была статья, посвящённая Адаму Мадьяру Камера Эйнштейна: как один фотограф изображает время. Мне она показалась очень интересной, но, если честно, то я так и не понял технологию для съёмки видео Stainless. Особенно меня восхитили его фотографии поезда метро. После чего я задался мыслью: а могу ли я сам создать нечто подобное?

Постановка задачи


Недалеко от села, где живут мои родственники, проходит железная дорога и поехав однажды в гости, я прихватил с собой камеру и штатив. Суть задачи, которую я поставил перед собой сводилась к тому чтобы создать панорамное изображение поезда, достаточно длинное, чтобы его невозможно было снять просто собрав плоскую панораму. То есть, я собрался отснять видео и вырезав по центральной полоске с каждого кадра объединить их в надежде получить очень длинную и красивую панораму. Поскольку я являлся счастливым обладателем камеры Canon EOS 600D (технические характеристики) с максимальной частотой 60 FPS при разрешении видео 1280x720, то расчитывать на более высокую частоту не приходилось. С другой стороны панорама высотой 1280 пикселей превосходит вертикальное разрешение большинства мониторов. Поэтому, я полагал, качество результата должно меня устроить.

Примеры в сети Интернет


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

Съёмка! Мотор! Поехали!


Итак, я установил штатив на расстоянии порядка 10 метров от рельсов (чем ближе к рельсам, тем сильнее тряска камеры) и установил камеру в вертикальном положении. Поскольку нам из всего видео кадра нужна лишь средняя полоска, то правильнее всего устанавливать камеру именно в вертикальном, а не горизонтальном положении, так как в этом случае разрешение панорамы будет выше. Например, при горизонтальная ориентация 1920Х1080 даст нам панораму высотой 1080 пикселей, а вертикальная ориентация 1080x1920 даст нам панораму высотой 1920 пикселей.

Съёмку видео лучше всего вести в ручном режиме, т. е. без участия автоматики. Когда объект попадает в кадр, то может сильно измениться освещенность сцены, что заставит камеру поменять выдержку или диафрагму, а это делать нежелательно. Иначе разные части, например, поезда могут быть различными по яркости. Частота кадров для выбранного разрешения естественно должна быть максимальной. Съёмку начинаем секунд за 5-10 до того момента как объект попадёт в кадр. Во-первых, на всякий случай, во-вторых, камера перестала шевелиться после нажатия на кнопку записи, и в-третьих чтобы можно было выбрать фоновый кадр (если освещение быстро меняется, например из-за облаков). Заканчиваем съёмку тоже не сразу, а спустя секунд 5. На своём личном опыте я убедился, что при съёмке желательно просчитать будет ли входить объект в кадр полностью и не будет ли лишнего пустого пространства. У меня на нескольких панорамах верхняя часть поездов немного обрезана. Ну и конечно, желательно выставить ручной фокус и заранее сфокусироваться на объекте (хоть это и трудно бывает сделать, ведь самого объекта пока ещё нет).

Программная часть


Мною была написана программа Trainz Pano (C++ Builder XE3). Приложение 64-разрядное, ОС — Windows 7/8/10. Она заточена именно на создании панорам из видео. Программа доступна как коммерческий продукт и легко гуглится.

Работа с приложением


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

Открытие видео




Я не стал заморачиваться с декодированием видео самостоятельно, моё приложение использует FFMPEG и сначала получает из видео набор изображений, а потом уже с ними работает.

Настройка параметров фона




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

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


При съёмке видео камера, по отношению к объекту может быть расположена не прямо, а под некоторым углом. Кроме того, камера может быть расположена под углом к траектории движения объекта. Чтобы компенсировать их влияние в приложении имеются два элемента управления: Вращение и Перспектива. Они определяются путём подбора таким образом, чтобы получаемое изображение не имело зазубрин при стыковке отдельных участков. Ещё один параметр — это Ширина. Он нужен для указания ширины полосок, которые будут вырезаться из текущего кадра и добавляться в результирующую панораму. Все три параметра можно менять в процессе сборки панорамы. Однако чаще всего Вращение и Перспектива настраиваются на начальном этапе и в дальнейшем не меняются. А вот параметр Ширина может меняться, так как скорость движения объекта может быть непостоянной. В моём случае я много раз сталкивался с ускорением и замедлением движения поездов.

Если мы снимаем видео в вертикальной ориентации, то нам понадобится указать в главном меню угол поворота кратный 90 градусам. Есть ещё один момент, который следует учитывать. Когда я писал программу, то исходил из того, что движение объекта осуществляется справа-налево. Что делать, если в действительности движение объекта осуществляется слева-направо? Для этого можно на этапе сборки использовать пункт отразить слева-направо, при этом все надписи мы получим в зеркальном отражении. А на этапе ретуширования воспользуемся командой Отражение панорамы слева-направо и всё встанет на свои места.

Ретуширование панорамы




Чтобы избавиться от повторяющегося фона (если программа не смогла сделать это сама) или восстановить изображение объекта, если он был неверно определён как фон загружаем наше изображение (точнее слои изображения, там их 3) в программу Trainz Pano Editor. Вот краткий список функций, который предоставляет программа:
  • Ретуширование
  • Добавление столбов
  • Удаление столбцов
  • Вертикальная заливка фоном
  • Добавление строк
  • Удаление строк
  • Горизонтальная заливка фоном
  • Градиентный переход
  • Ускоренное движение


Видео работы с программой


On-line справка находится здесь.

Просмотр панорам


При сохранении панорам выявилась одна неприятная деталь, а именно — формат JPEG имеет ограничение на размеры изображения. Для длины и ширины используются 2 байта, поэтому записать панораму длиной более 65535 пикселей не удастся. В то же время у меня были панорамы длиной по 200 000 пикселей и более. Сохранение в BMP и PNG проблем не создаёт, вот только изображения в этих форматах занимают много места на диске. При попытке открыть для просмотра большие панорамы тоже возникли некоторые проблемы. XnView и XnViewMP показывают месиво из пикселей, о чём я написал автору программы, надеюсь в ближайших версиях этот баг пофиксят. Встроенный просмотровщик Windows Фотографии открыл на ура, не подкачал и InfanView. В общем следует исходить из того, что не все вьюверы покажут нам длинные панорамы корректно.

Примеры моих работ


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



Возможная область применения


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

Планы по улучшению приложения


  • Чтение кадров напрямую в приложение без необходимости промежуточного сохранения изображений на диск.
  • Улучшить скорость сборки панорам.
  • Написать новый алгоритм определения фона.
  • Написать JavaScript библиотеку с использованием HTML5 Canvas для отображения очень длинных панорам.


Выводы


  • В настоящее время на рынке нет приложений для создания панорамных изображений из видео файлов.
  • Те единичные примеры панорам, что доступны в сети, как правило, созданы с использованием домашних заготовок, не являющихся готовыми коммерческими продуктами.
  • Программа Trainz Pano в какой то мере решает озвученную выше задачу.
  • К сожалению, в программе Trainz Pano пока что реализована недостаточно качественная технология отделения объектов от фона, что (в общем случае) приводит к необходимости ретуширования панорамы в довольно большом объеме.
  • Вместе с тем, при грамотном использовании (выборе удачного места съёмки против монотонного фона) программа вполне может быть использована как профессионалами так и любителями цифрового фото.
Встречали ли Вы раньше длинные панорамные изображения поездов, колонн людей, авто и мото техники?

Проголосовал 431 человек. Воздержалось 108 человек.

Вы сами увлекаетесь панорамной фотосъёмкой?

Проголосовало 450 человек. Воздержалось 93 человека.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Комментарии (69)


  1. maisvendoo
    23.04.2016 00:00
    +2

    Такой знакомый и в чем-то даже родной электровоз ЭП1М )


  1. Kidar
    23.04.2016 00:05
    -1

    Тот случай, когда для удобнее вертикальное видео.

    Имеются ли подобные панорамы с колонной автомобилей (или просто улицей), людьми, животными или насекомыми (например, муравейник).


    1. alekseev_ap
      23.04.2016 09:05

      С автомобилями есть. Но, если честно, есть определённые проблемы с ними. Если в центральной области в один момент пересекаются автомобили едущие в разные стороны или хотя бы с разной скоростью, то получается как на этой панораме у Адама Мадьяра . Т.е. не соблюдаются пропорции объектов. Они начинают зависеть от скорости движения объектов. А мне это не очень нравится. Я бы хотел чтобы объекты на панораме имели те же пропорции, что и в обычной жизни. Поэтому такие вещи не публикую.

      Что касается людей, то в самом ближайшем времени планирую осуществить съёмку.

      А по поводу животных и насекомых пока планов не имею.


      1. tautomer
        23.04.2016 15:37

        «Линейный размер зависит от скорости движения объекта» — это как будь-то цитата из следствий теории относительности. Может такие панорамы смогут наглядно проиллюстрировать этот эффект?


        1. alekseev_ap
          24.04.2016 12:40

          А я и привёл ссылку в предыдущем комментарии. Посмотрите на панораму внимательно, думаю всё сразу станет ясно.


  1. chersanya
    23.04.2016 00:13

    А скорость программа сама почему не определяет?


    1. alekseev_ap
      23.04.2016 08:58

      Да, предложение дельное. В будущем так и планирую сделать. А на первом этапе для съёмки поездов я считал, что скорость более менее постоянная.


  1. ivlis
    23.04.2016 00:25
    -1

    Не понятно чем это отличается от того, что я просто нашлёпаю поезд со, скажем, 30FPS (в jpg это не проблема для зеркалки, даже не особо крутой) и потом склею в Lightroom.


    1. Randl
      23.04.2016 00:31
      +2

      Топовый Canon EOS 1D X Mark II дает 16 FPS максимум. У какой (тем более не особо крутой) зеркалки 30 FPS фото?


      1. ivlis
        23.04.2016 00:49
        -2

        Да, действительно, 30 FPS я загнул. Хотя беззеркалки и 60 могут:
        «In March 2014, Nikon claims its Nikon 1 V3 mirrorless interchangeable-lens camera has the world's fastest burst mode of 20fps Auto Focus tracking and 60fps at the first shot autofocus, both in 18.4MP full resolution.»
        Непонятно в чём проблема сделать такое же в зеркалке, зеркало то всё равно блокируется, ну не суть.

        Но пусть будет 6.3 FPS, как в моём 50D. Пусть поезд идёт 60км/ч, значит за время между кадрами он приходит 2.6 м. Чтобы это расстояние попало в пол кадра, нужно чтобы размер области кадра был примерно 5-6 метров по горизонтали. Но это с полным кадром, то есть 3168 пикселей по вертикали, а у автора 1000. Всё равно не понятно, зачем нужна специальная программа.


        1. Randl
          23.04.2016 00:59
          -1

          Проблема, наверное, в том, что матрица в разы больше.


          На поезд, конечно и FPS и буфера средней зеркалки хватит, а вот что-то более быстрое или долгое может и не получиться.


          1. ivlis
            23.04.2016 01:33
            -1

            Ну а что-то более быстрое и долгое продемонстрировано не было. Даже если и писать видео, то можно писать в RAW, потом выдернуть отдельные кадры и скормить любой программе для обработки фотографий.


        1. barkalov
          23.04.2016 04:54

          У беззеркалок затвор электронный, у зеркалок — механический. Недолго он протрещит на 30fps.


          1. alekseev_ap
            23.04.2016 09:07
            +1

            При съёмке видео и те и другие используют электронный затвор.


            1. barkalov
              24.04.2016 06:35
              -1

              Да, но в ветке речь шла о серийной съемке.


        1. creat0r
          23.04.2016 11:37
          -1

          Буфера не хватит столько кадров за раз записать. А сразу на флешку только свежие модели (типа 70D) могут успевать писать непрерывно, и то — среднего разрешения jpeg'и.


    1. alekseev_ap
      23.04.2016 09:32
      +2

      Отличие в том, как Вы потом будете это склеивать. Вот типичный пример. Проходит состав (порядка 90 вагонов). Время прохождения состава 1 минута. Итого имеем для обработки 30*60=1800 кадров. Так вот, каждый кадр (необязательно, но очень вероятно, чтобы добиться хороших результатов) надо слегка повернуть, применить эффект перспективы, из каждого кадра надо вырезать полоску определённой длины и удалить фон.

      Вы не запаритесь?

      Trainz Pano же, большую часть операций выполнит в автоматическом режиме.

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

      Товарищ Kropilak, кстати, именно так и делал (судя по изображениям). Но его не надолго хватило. Относительно большого размера части панорамы очень небольшой длины, а вся панорама целиком крайне невысокого разрешения. Думаю это именно потому что трудозатраты на ретуширование при таком подходе достаточно велики и вряд ли найдётся много людей готовых создать подобным образом панораму из нескольких десятков вагонов.


      1. sim31r
        23.04.2016 10:30
        -1

        Некоторые операции может выполнять Irfan View, бесплатная смотрелка фотографий в batch режиме обработке изображений, как через gui, так и через командную строку, crop, rotate, resize фильтры и т.п.


      1. DrZlodberg
        24.04.2016 11:05
        -1

        На самом деле программы для автоматического сшивания панорам справятся с этим без проблем. Та же Pano Tools например. Но делать она это будет ооооооооооочень долго, если вообще памяти хватит. Главное указать цилиндрическую проекцию на выходе, а то могут быть весёлые эффекты. Возможно потребуется также задать нестандартные параметры объектива, чтобы панорама не обвивалась сама вокруг себя пару десятков раз :)

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


        1. alekseev_ap
          24.04.2016 12:37
          -2

          Полагаю, что нет. По крайней мере у меня в PTGui не получилось.



          Проблема в том, что программа находит контрольные очки не только на объекте, но и на фоне.



          Это означает что Вам придётся все автоматически найденные точки удалить и всю работу проделать самому. Я так и сделал.



          Но это ещё не всё. Программа — она умная, и знает, что окружность состоит из 360 градусов. Что это означает применительно к данному вопросу? Это означает, что она будет накладывать продолжение состава сначала на голову поезда, а потом пойдёт по кругу. Результат налицо.



          Указанным Вами способом можно собрать панораму из пары вагонов, но чтобы собрать состав понадобиться разбить работу на отдельные куски, собрать их, а потом, соединить в единое целое. Трудоёмкость зашкаливает к сожалению…


          1. DrZlodberg
            25.04.2016 08:13
            -1

            Про фон да, это я не подумал. А про перехлёст я писал: возможно поможет задание нестандартного очень узкого объектива. Если не снимать на ширик то на качестве это сильно сказаться не должно. Но полностью не уверен.


  1. Zenker
    23.04.2016 00:36
    +5

    В принципе, каждый наверняка хоть раз встречал такие «панорамы» во время спортивных трансляций, потому что по этому принципу как раз работает фотофиниш, выдавая иногда очень причудливые картинки. Только там используют специально предназначенные для этого линейные камеры.


    1. alekseev_ap
      23.04.2016 08:43
      +1

      Всё верно, но они очень дорогие. Я ставил перед собой задачу написать софт для обычных фото или видео камер. Кстати, современные экшен-камеры сильно продвинулись по частоте и моя Xiaomi Yi даёт 120 FPS при HD разрешении и 240 FPS при разрешении 848x480.


  1. frog
    23.04.2016 01:51
    -1

    > нет приложений
    Несколько лет назад делал из видео панорамы. Точно помню, что программа была microsoft'овская.
    Вроде бы вот эта:
    http://research.microsoft.com/en-us/um/redmond/projects/ice/


    1. alekseev_ap
      23.04.2016 08:55
      -1

      Эта программа, судя по описанию на сайте подходит для создания обычных плоских или сферических (цилиндрических) панорам. Возможность выбора или удаления объектов есть во многих похожих редакторах. Сам я лично для подобных задач использую PTGui. Чтобы скрыть объект или наоборот какой то из них выделить в PTGui используются маски (так же как и в обычных графических редакторах). Для тех примеров, что приведены на сайте по Вашей ссылке она бы точно подошла. Но эта и многие (если не все) программы не позволит Вам создать панораму поезда или колонны людей. Здесь своя специфика.


  1. justmara
    23.04.2016 02:20

    Милота какая. На каждой результирующей картинке стабильно один и тот же rolling shutter. Мимими. Ну уж его-то вообще убрать при подобной обработке- самое милое дело.


    1. alekseev_ap
      23.04.2016 09:36
      -1

      Честно говоря не заметил. Ткните пальцем, на какой картинке?


      1. justmara
        23.04.2016 11:41
        -1

        На всех. Если вам не бросается в глаза, то открываете в редакторе и сверяете вертикальные линии.
        image


        1. justmara
          23.04.2016 11:45
          -1

          уж не говоря, что конкретно на этой картинке окно в левой двери волшебное стало :)


        1. alekseev_ap
          23.04.2016 12:21
          -1

          Если он там и присутствует, то его значение очень мало. Что касается окна, то, да — неравномерность движения даёт о себе знать. Идеальная сборка потребует достаточно много времени.


          1. justmara
            23.04.2016 13:57

            Здесь тоже мало?

            imageimage

            Это ж зависит от того, с какой скоростью ехал поезд во время съёмки. Ну и от личного восприятия геометрии на картинке.
            При переходе на сайт мне сразу бросается в глаза наличие этого искажения (на примерах в статье вообще ад). С дргой стороны — я не заказчик :) Если вас такой результат устраивает, то и ваше личное дело. Я лишь обратил внимание на то, что вы, похоже, не заметили.


            1. justmara
              23.04.2016 14:07
              +1

              Возможно, что здесь не только shutter, но и отклонение вертикали при установке самой камеры добавляется, потому что небольшая лесенка при склейке горизонталей всё же есть местами. Но то, что shutter есть — это 100%. Потому что искажение прямых углов тоже есть, его видно.


              1. Meklon
                23.04.2016 15:46

                Может еще вагоны криво ездят, нет?


              1. ehs
                24.04.2016 14:31
                +1

                Это однозначно не Rolling Shutter если автор снимал видио в портретной ориентации, а я так понял именно так он и снимал. Rolling Shutter по своей природе проявляется на движушихся паралельно с длинной стороне матрицы объектах.


          1. CAJAX
            23.04.2016 23:09
            +1

            Вообще, при том, что камера повернута на 90 градусов, rolling shutter если и должен проявляться, то только в виде сплющивания/растягивания, а не наклона.


  1. djsonic
    23.04.2016 09:44
    +1

    Меня вот интересует вопрос, существует-ли в природе программа, которая из видео может сделать цилиндрическую панораму? Работа по принципу сканера, камера на штативе, режим видео, делаешь оборот 360 градусов и в программе получаешь сшитый jpeg, уже исключая возможные дефекты из-за параллакса, т.к. из каждого кадра берется область шириной 1 пиксель и подшивается в финальный результат + контроль скорости движения оборота по общему видео, на случай неравномерного поворота.


    1. STFBEE
      25.04.2016 18:43

      Microsoft ICE?


      1. djsonic
        26.04.2016 13:33

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


  1. 1vanK
    23.04.2016 10:17
    -1

    Не знаю как с остальными панорамными фото, но в данном случае я бы просто один вагон сфотал и продублировал хоть 1000 раз. Реально кто-то видит разницу между ними? Заодно и всех этих артефактов не будет


    1. sim31r
      23.04.2016 10:38
      +1

      +можно вагон случайно чередовать с его зеркальным отображением, немного расширять и суживать. Так можно сделать бесконечную панораму и генерировать её в реальном времени.


    1. alekseev_ap
      23.04.2016 10:46

      Если стоит задача просто создать некую виртуальную фотографию состава, то почему бы и нет?

      Но для меня, и думаю для многих, важна аутентичность фотографии.


      1. 1vanK
        23.04.2016 12:29
        -1

        О какой аутентичности идет речь, когда вырезан фон и размазаны рельсы?


        1. alekseev_ap
          23.04.2016 16:35

          О той её части, что осталась после вырезания фона, а именно о аутентичности самого объекта съёмки. Фон, в данном случае, я объектом не считаю.


    1. darkfrei
      23.04.2016 13:08
      +1

      А если товарняк с разными вагонами?


      1. 1vanK
        23.04.2016 13:14
        -1

        Поэтому я уточнил про данный случай )


  1. mezastel
    23.04.2016 11:16
    -1

    Вообще интересная идея, единственное что разрешение низковато. Можно конечно делать то же самое на 4К, но даже так, вертикальное разрешение будет 2160, что соответствует примерно 20см по вертикали при печати с 300dpi. То есть, картинка более чем достаточна чтобы выкладывать в интернет, но с печатью уже проблемы.

    И еще, у большинства бытовых пользователей нет камеры с global shutter, а следовательно у них, как и у вас, все вертикали будут не совсем вертикальны из-за rolling shutter эффекта. Это конечно можно пофиксить программно, но делая shear на градус-другой вы рискуете потерять информацию, которой и без того мало.


    1. creat0r
      23.04.2016 11:38
      +1

      Что-то мне кажется, что rolling shutter при вертикальной съёмке не особо заметен будет.


      1. mezastel
        23.04.2016 11:41
        -1

        Да, то что я наблюдаю на кадрах — это наверное не rolling shutter вообще, это просто движение. Интересно что кадр не кажется сильно «мыльным».


    1. alekseev_ap
      23.04.2016 12:34

      Разрешение собранной панорамы 1280 пикселей по высоте. Это больше чем разрешение монитора FullHD.

      Можно конечно делать то же самое на 4К, но даже так, вертикальное разрешение будет 2160, что соответствует примерно 20см по
      вертикали при печати с 300dpi.

      Если делать так, как я описал в статье, то вертикальное разрешение будет 4K.

      То есть, картинка более чем достаточна чтобы выкладывать в интернет, но с печатью уже проблемы.

      Эта программа для создания сверхдлинных панорам (многие десятки вагонов). Если Вы распечатаете её на рулоне шириной 20 см (А4 в альбомной ориентации), то не во всякой комнате сможете её повесить (стена будет слишком короткая).

      По поводу rolling shutter эффекта я уже писал — нет там его (минимален). Кроме того, если уж здесь все такие специалисты по этому эффекту, то я хочу напомнить, что этот эффект не свойство программы — это свойство конкретной матрицы. Покупайте другую камеру — не будет у Вас rolling shutter.


      1. mezastel
        23.04.2016 12:36
        -1

        Да, я уже понял что неправ в этом плане. Тут не rolling shutter, но вертикаль все же немного неровная — мы можете сами это проверить открыв картинку в редакторе. Например двери вагонов не совсем вертикальные. Это некритично конечно — там градус-два, не более.

        Насчет rolling shutter, это к сожалению во всех консюмерных матрицах так. Есть конечно всякие Black Magic, но это экзотика.


  1. ANTPro
    23.04.2016 12:59
    +1

    Я нарезал панораму на вагоны, чтобы снять ограничение на размер изображения. Панорама генерировалась полностью автоматически(не в реальном времени, а после проезда поезда).
    Вот эта использовалась для распознавания номера:
    https://habrastorage.org/files/f8a/fbe/c09/f8afbec0997e40c7b925e06c6859a698.png


    1. user11111
      23.04.2016 16:33
      -1

      А чем «Панорама генерировалась полностью автоматически»?


      1. ANTPro
        23.04.2016 20:43

        ПО сами писали. Камера была с глобал шаттером. Калибровали дисторсию и «выравнивали» плоскость поезда с камерой. Лет 5 назад — это было.


        1. alekseev_ap
          23.04.2016 20:54
          -1

          Здорово! А где можно посмотреть результаты Вашего труда? Та картинка, ссылку на которую Вы опубликовали не особо информативна.


          1. ANTPro
            23.04.2016 21:27

            Там не только мой труд :) ПО не публичное. А на домашнем компе вроде нет других скриншотов.


  1. darkfrei
    23.04.2016 13:04
    -1

    Попадалась как-то «ekspozzer», там пытался делать круговую панораму из видео, но камера вращалась с различной скоростью и хорошого результата достичь не удалось.


  1. SkyHunter
    23.04.2016 14:16
    -1

    Круто.

    Только
    «Светлота» — это, наверное, «Яркость», да? :-)


    1. Meklon
      23.04.2016 15:47
      +1

      Так обычно называют канал Lightness в HSL цветовом пространстве


  1. engine9
    23.04.2016 14:28

    Круто, прекрасная идея и реализация.


  1. deema35
    23.04.2016 17:33
    +10

    image


    1. Nilis
      23.04.2016 21:24
      -1

      Видео в ужасном инстаграмовском качестве (кликабельно): image

      Только тут принцип наоборот — видео из поезда


  1. Moskus
    23.04.2016 19:30

    Уткнулись в ограничения форматов по ширине? Почему бы не использовать менее примитивные форматы, например — Jpeg2000 или BigTIFF?
    И rolling shutter во всей красе, да…


    1. alekseev_ap
      23.04.2016 20:50

      Потому что не вижу смысла в использовании TIFF (это не формат для публикации изображений в Интернет), а для последующей обработки без потери качества приложение умеет делать экспорт в PNG и BMP. JPEG является самым популярным форматом в Сети и файлы в этом формате весят заметно меньше, чем те же PNG или BMP. Что касается JPEG2000, то вот что написано в Википедии:

      Пока этот формат мало распространён и поддерживается не всеми современными браузерами.


      1. Moskus
        23.04.2016 21:51

        Вам шашечки или ехать?
        Если «популярные и распространенные» форматы что-то не могут делать принципиально без нарезки на тайлы, например, то использовать для хранения полного разрешения менее популярный, но предназначенный именно для хранения изображений гигантских (по меркам того, что публикуется в сети) — совершенно логично.
        А уж для нужд представления можно нарезать его на тайлы в JPEG, подключить их к leaflet и так далее.


        1. alekseev_ap
          23.04.2016 22:55

          Совершенно верно. Именно поэтому моя программа (повторюсь специально для Вас) умеет экспортировать в такие форматы как BMP и PNG. В JPEG экспорт тоже возможен, но если размер панорамы не превышает 64K пикселей. В противном случае (так как публикация по-любому будет идти в JPEG в целях экономии трафика и места на хостинге) сперва идёт сохранение в PNG/BMP, а далее или (как Вы сказали) нарезка на тайлы, или масштабирование до размеров 64K (или менее) в графическом редакторе и сохранение в JPEG.

          По-моему я достаточно подробно объяснил.


  1. silvansky
    25.04.2016 13:03

    Круть! Я сам недавно писал программу для щелевой съёмки, но в отличие от Вас я не делал щель переменного размера, ограничился шириной в один пиксель (поэтому с склейкой проблем не получил). Сначала это была съёмка в реальном времени на iPhone, но потом и десктопную версию для пост-обработки видео сделал (туда добавил ещё и rolling-shutter эффект).

    Вот теперь, вдохновлённый Вашим постом, попробую ещё и поезд сфоткать. ;)

    Пара кадров с разными режимами
    С телефона:


    Из видео:


    Из видео с YouTube:


    Rolling-shutter:


    Ещё примеры фоток с телефона


    1. alekseev_ap
      25.04.2016 17:25
      -1

      Здорово! А какая кадров в секунду у Вашего iPhone?


      1. silvansky
        25.04.2016 17:39
        -1

        Мой 6+ выдаёт в моей программе порядка 60 FPS, новые модели до 120 выдают, но в теории могут и больше — 120 у меня сейчас ограничение искусственное. Надо кстати попробовать его смягчить для последних моделей.

        А видео я снимаю 240 FPS для пост-обработки. Так красивее всего выходит. =)
        Вот и поезд я планирую сначала заснять в 240 FPS, а затем прогнать через мою утилитку. И посмотрю, что получится.


        1. alekseev_ap
          25.04.2016 19:15
          -1

          Скиньте ссылку на результат, когда сделаете. Интересно было бы посмотреть.