Просмотр видео «сбоку»

    Однажды у меня родился в голове вопрос о том, как бы выглядело видео, если посмотреть на него «сбоку». То есть, если сложить все кадры видео в стопку один за другим, потом разрезать эту стопку на части вдоль оси времени, получив тем самым кадры для нового видео:



    Но в интернете я не нашёл ответа. Наконец, дошли руки проделать такой эксперимент.



    Ширина нового видео в таком случае равняется количеству кадров исходного, а количество кадров нового видео — ширине исходного. Я прикинул, что лучше ограничиться небольшим форматом видео (640х360) и отрезком в 640 кадров, чтобы итоговое видео получилось не утомительным по времени и достаточным, для наблюдения эффекта. Экспортировал кадры из VirtualDub в png, набросал программку для Node.js (что первое под руку попалось), обработал, собрал новые кадры обратно в видео. И вот, что получилось.

    Исходное видео:



    Вид сбоку:



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

    Вид сверху:



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

    Исходное видео:



    Вид сбоку:



    тут код, если кому интересно
    var FRAME_WIDTH = 640;
    var FRAME_HEIGHT = 360;
    var FRAMES_COUNT = 640;
    
    var fs = require('fs');
    var PNG = require('node-png').PNG;
    
    function makeFileName(i, prefix) {
        prefix = prefix || "src2/";
        return prefix + ("000" + i).substr(-4) + ".png";
    }
    
    function addStripe(dstFrame, dstFrameIdx, srcFrameIdx, callback) {
        fs.createReadStream(makeFileName(srcFrameIdx)).pipe(new PNG({filterType: 4})).on("parsed", function () {
            for (var p = 0; p < FRAME_HEIGHT; p++) {
                var srcIdx = (FRAME_WIDTH * p + (FRAME_WIDTH - dstFrameIdx - 1)) << 2;
                var dstIdx = (FRAMES_COUNT * p + srcFrameIdx) << 2;
    
                dstFrame.data[dstIdx] = this.data[srcIdx];
                dstFrame.data[dstIdx + 1] = this.data[srcIdx + 1];
                dstFrame.data[dstIdx + 2] = this.data[srcIdx + 2];
                dstFrame.data[dstIdx + 3] = this.data[srcIdx + 3];
            }
    
            if (++srcFrameIdx < FRAMES_COUNT) {
                addStripe(dstFrame, dstFrameIdx, srcFrameIdx, callback);
            } else {
                dstFrame.pack().pipe(fs.createWriteStream(makeFileName(dstFrameIdx, "dst2/"))).on("finish", callback);
            }
        });
    }
    
    function createFrame(dstFrameIdx) {
        addStripe(new PNG({ width: FRAMES_COUNT, height: FRAME_HEIGHT }), dstFrameIdx, 0, function () {
            console.log("done " + dstFrameIdx);
            if (++dstFrameIdx < FRAME_WIDTH) {
                createFrame(dstFrameIdx);
            }
        });
    }
    
    createFrame(+process.argv[2]);
    



    Не старался и не думал об оптимизации, хотел скорее получить хоть какой-то результат. После обработки первых кадров понял, что ждать не много (минут 10-15), если запустить сразу несколько процессов, и успокоился.

    YouTube вроде попортил качество видео немного, поэтому прилагаю оригинальные файлы на всякий случай. Кстати, видео «с другого направления» сжимаются хуже при тех же настройках кодека.

    Если кто-то уже делал нечто подобное или встречал, или есть другие идеи по необычному представлению видео или звука, делитесь в комментариях. Спасибо за внимание :)
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 78

      +3
      Это достаточно старая штука — Slit-scan photography (щелевая съёмка или щелевое сканирование). На хабре как минимум три статьи. Вот такое делают:
        +6
        Это не совсем тоже самое.
          +1
          Почему?
            +7
            в вашем видео ось времени осталась временем, а в статье предложен вариант когда ось времени взята из горизонтальной или вертикальной осей изображений.
              0
              Тут в центре полоска из исходного видео шириной в один пиксель, положение полоски в кадре исходного видео фиксировано. У автора статьи положение полосок из кадров исходного видео не фиксированы — они движутся одного края кадра к другому.
                0
                Судя по приведенной иллюстрации метода — это «срез», плоскость которого перпендикулярна плоскости кадра, полоска не будет двигаться. Она будет двигаться только если «резать» «наискосок».
                  0
                  А, нет, чушь сморозил, не подумавши — vagran прав.
                –4
                Нельзя увидеть плоскость XYO, и то что там находится с оси Z. Нельзя ничего увидеть сбоку страницы книги.
                +9
                «то же самое»
              0
              А с чем связаны явно выраженные ветрикальные полосы?
                +3
                Очевидно, монтажные склейки.
                  0
                  Точно! Я как-то не подумал о них) Было бы интересно посмотреть в таком виде видео без монтажных склеек… только удастся ли найти такое видео? Разве что самостоятельно снять.
                    0
                    Можно «делать срез» предварительно разбив видео на сцены. При этом видео будет варьироваться по ширине в зависимости от длительности каждой сцены.
                      +5
                      Бёрдмэн
                        0
                        В Бёрдмэне десятки склеек, но они действительно хорошо замаскированы. Есть фильм, снятый совсем без склеек, одним дублем. Это фильм 2015 года Виктория. К сожалению, сам фильм, как по мне, средненький.
                        +3
                        Фрагмент из кф «Самый лучший день»
                        Авторы утверждают, что снято без склеек



                        В музыкальных клипах это не так уж редко встречается.
                          0
                          Насчитал четыре :) Но все равно хорошая работа
                            0
                            Я одну — вылет камеры из автобуса, и тут же показ целого автобуса с того бока, откуда камера вылетела. А не подскажите еще? Видел и раньше этот момент — никогда не понимал, как сделано. :) Хотя круто, конечно.
                              0
                              вполне могли «замазать» в редакторе
                                0
                                а перед тем как она из окна вылезла? тоже склейка
                              +1
                              Вот, сделал отрывок из этого клипа. Файл лучше скачать, Яндекс показывает сильно сжатый вариант.
                              +3
                              Сокуров — Русский ковчег
                                0
                                https://www.youtube.com/watch?v=G6u-TomcyD4
                                И другие творения коллектива.
                                  0
                                  Вот отрывок из этого клипа :) (скачать для нормального качества)
                                  +3
                                  Где-то было британское антицензорное видео, 10 часов о том, как сохнет краска. :)
                                    +2
                                    Подозреваю, что это видео выглядит одинаково с любой стороны.
                                    0
                                    Есть фильм «Виктория» — ~2 часа одним дублем. При этом там достаточно много перемещений как по улице и внутри зданий, даже есть отрезок, когда главные герои в машине едут.
                                      0
                                      Я специально для такого эксперимента поставил камеру на забор и заснял прибытие поезда. Практическое применение? По 1 изображению можно оценить скорость при проходе каждого вагона (чем медленнее, тем длиннее вагон). В случае с разными сценами можно сразу увидеть моменты переключения.
                                      А вот фантазии на действительно красивое видео не хватило.
                                      • UFO just landed and posted this here
                                          0

                                          Русский ковчег — 87 минут без склеек.
                                            0
                                            Ну уж, коли начали перечислять.

                                            Джон Ашер — Кто-нибудь, женитесь на мне
                                            Мирослав Момчилович — Смерть человека на Балканах
                                            Линда Вендель — Один кадр
                                            Юрий Зельцер — Круг
                                            Майк Фиггис — Тайм-код.
                                        +1
                                        Чуть не сняли с языка про монтажные склейки, которые дают ярко выраженные вертикальные границы.

                                        Отсюда вывод: подобрать фрагмент без монтажных склеек нужной длины, возможно будет визуально самый интересный результат.
                                          +1
                                          Фильм «Birdman» неплохо подойдёт для этого.
                                            +3
                                            Прошу. 54 минуты без монтажа.
                                              0
                                              Ну тут камера неподвижна, картинка почти одна и та же только иногда люди проходят и машины проезжают. Интересно когда съемка непрерывная, но камера плавно движется.
                                                0
                                                Как вариант:
                                                https://www.youtube.com/watch?v=YrdNfX7W38U
                                            –16
                                            Название статьи не соответствует содержанию.
                                              0
                                              Я тут подумал: а неплохо бы иметь подобный инструмент в видеопрограммах. Без движения, разумеется. Полоса — монтажная склейка, сцены как-то узнаются.
                                                +1
                                                Недавно писал реализацию щелевой фотографии на bash — один кадр для видео в Вашем случае)
                                                  0
                                                  У меня деважю или эта статья уже была? Я точно читал про это или тут или на GT.
                                                  +1
                                                  Вращать можно не только на 90°, но и на что-то промежуточное.
                                                    0
                                                    Ага, тоже думал об этом. Кроме поворота оси движения можно еще плоскость сечения наклонять относительно этой оси.
                                                    +3
                                                    Почему-то напомнило
                                                    image
                                                      0
                                                      попробуйте «Викторию» 2015 года так обработать
                                                      +1
                                                      Интересно. Это же у вас фотофиниши в видеосклейке по линии среза.

                                                      Если интересно, поделать фотофиниши, то вот простой скрипт, который я набросал после того, как я прочитал пост «Щелевая съёмка: сжатие времени по горизонтали».

                                                      # взять видео v.mp4
                                                      # для первых 10 секунд видео
                                                      # каждый кадр марштабировать в 800х600,
                                                      # вырезать 2х600 с оффсетом 399:0 (средний столбец)
                                                      # и сохранить как кадр temp-aa-00000.png
                                                      ffmpeg -i v.mp4 -t 10 -vf «scale=800:600,crop=2:600:399:0» temp-aa-%5d.png

                                                      # слить столбцы по горизонтали в одну картинку
                                                      # и уменьшить ширину в два раза
                                                      convert +append temp-aa-* -resize 50%x100 out.png

                                                      #удалить лишнее
                                                      rm temp-aa-*

                                                      +2

                                                      Просто ассоциация, идея чем-то напомнила Интерстеллар:
                                                      image

                                                        0
                                                        автору надо было в первую очередь этот образец брать
                                                        –11
                                                        Видео хранится в виде диффов между кадрами.Откуда целиковые кадры? Хуже, чем статьи про собеседования где возмущаются зачем спрашивают сортировки.
                                                          +5
                                                          Ну, например, ffmpeg позволяет из видео сделать набор кадров.
                                                          –9
                                                          Но… Зачем? Это какая-то интересная и полезная технологическая задача? И тогда причём здесь хабр? Node.js потому что?
                                                          • UFO just landed and posted this here
                                                              0
                                                              Можно использовать в искусстве, например, как разновидность щелевой съемки. Если снять видео целенаправленно, учитывая то, что получается на выходе, можно добиться интересных результатов.
                                                                0
                                                                Террористы так могут шифровать послания. Особо продвинутые смогут шифровать видеообращения.
                                                                +5
                                                                Эх, жалко конечно, что мы ограничены только тремя измерениями и можем видеть четырёхмерные вещи только в проекции.
                                                                А в статье интересный эксперимент получился. Мы видим четырёхмерную реальность в проекции по времени, а как-то так могли бы видеть мир существа, видящие его в проекции на одно из измерений расстояния. Такие существа спокойно могли бы двигаться по времени, но в пространстве они ощущали бы себя лишь в одной плоскости.
                                                                  +2
                                                                  Мы и трёхмерные вещи видим только в проекции)
                                                                    +2
                                                                    Однако мы ощущаем трехмерность и можем перемещаться в трех измерениях, а в четырех перемещаться не можем сами по себе. Мы не можем взглянуть на объект с «другой стороны» и увидеть его из другого времени.
                                                                  0
                                                                  А не получится ли улучшить сжатие, как в свое время вышло с BWT?
                                                                    0
                                                                    Даже если получится, такое видео будет непригодно к потоковому воспроизведению
                                                                    0
                                                                    Напоминает игрушку из детства Калейдоскоп. Толку от этого помоему столько же — просто прикольные картинки, а тех применения нет.
                                                                      0
                                                                      Чем-то напоминает идею фотофиниша.
                                                                        0
                                                                        Я думаю, что примерно так же могли бы наблюдать нашу жизнь трафальмадорцы из «Бойни номер пять...» Воннегута :)
                                                                          +1
                                                                          Теперь можно попробовать сделать щелевое сканирование для полученного видео :)
                                                                            0
                                                                            Круто. А нельзя это как-то приспособить для программ видеомонтажа, ну вот там показывать смены планов и т. п. (вертикальные линии)? Хотя есть, наверное, и проще способы…
                                                                              0
                                                                              Напомнило Line Scan Camera от Elm Chan.
                                                                              Пару картинок
                                                                              поезд:
                                                                              image
                                                                              кукла:
                                                                              image
                                                                                0
                                                                                А что будет, если полученное «видео сбоку» обработать таким же алгоритмом?
                                                                                  0
                                                                                  Получится исходное видео, только в зеркальном отображении и задом наперёд
                                                                                  0
                                                                                  А что если не фильмы брать, а реальные съёмки камерой?
                                                                                  Например, камера снимает за один день улицу, никаких склеек, реальные данные.
                                                                                    +10

                                                                                    Приветствую собрата по сумасшедшей обработке видео! =)


                                                                                    Я делал похожую штуку, жёсткий программный rolling shutter. В совокупности с замедленной съёмкой даёт интересные результаты.



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

                                                                                      +1
                                                                                      Отличная идея и реализация)
                                                                                      0
                                                                                      Возможно, автору будет интересна моя система получения подобного рода изображений:
                                                                                      7act.ru/ekspozzer.php
                                                                                        0
                                                                                        Стало интересно: в той части, где вы «усредняете» изображения, чтобы убрать людей с фото — вы именно среднее арифметическое используете? Кажется, что медиана подойдёт лучше — не будет «призраков» от долго стоящих на одном месте людей (но могут появиться отдельные случайные артефакты).

                                                                                        Кстати, в Photoshop есть аналогичный инструмент для этого (File–Scripts–Statistics...).

                                                                                      Only users with full accounts can post comments. Log in, please.