LoginSignup
5
3

More than 5 years have passed since last update.

タイムラプス動画の自動速度調整の試み(前編)

Posted at

モチベーション

夏にアメリカをレンタカーで少し回ったのですが
サクションカップマウントを買って一定間隔で画像を撮りました。
(確か5秒間隔だったと思います)

シカゴからピッツバーグに向かう途中の前半部分のライムラプスが以下になります。

0:34 付近で高速のゲートのバーが上がらずバックしているのですが
こういうイベントが発生しているところはゆっくり再生して
他の延々と道路が続いているところはよしなに速く再生する
的なこと自動でして欲しいと思いました。

かといって 1:08 くらいのサービスエリア的なところは少し長すぎるなと感じます。
2秒くらいですが長いので、長くても1秒くらいにしたいことにします。

https://youtu.be/BOHDtW9_tlQ

ffmpeg

ffmpegで連番画像から動画生成 / 動画から連番画像を生成 ~コマ落ちを防ぐには~ - Qiita
上記サイトを参考に動画を作成してみました。

ffmpeg -framerate 30 -start_number 416 -i ./data/images/001/DSC%05d.JPG -vframes 6000 -vcodec libx264 -pix_fmt yuv420p -r 60 out.mp4

タイムラプスにしたい画像が DSC00416.JPG から DSC03415.JPG だとします。
1秒間に 30 画像使って出力動画のフレームレートが 60
1つの画像を2回使うので、 全部で 6000 フレームという意味だと思います。
-vrames オプションは指定しなくてもいいと思いますが、小さくテストしたい時に 180 とか指定してました。

$ ffmpeg --help | grep -E "(-framerate)|(-start_number)|(-vframes)|(-vcodec)|(-pix_fmt)|(-r )"
-pix_fmts           show available pixel formats
-vframes number     set the number of video frames to output
-r rate             set frame rate (Hz value, fraction or abbreviation)
-vcodec codec       force video codec ('copy' to copy stream)

$ ffmpeg -pix_fmts | grep -E "(FLAGS NAME)|(yuv420p )"
FLAGS NAME            NB_COMPONENTS BITS_PER_PIXEL
IO... yuv420p                3            12

詳細は ffmpeg --help full

phash

以前、類似画像検索をした際に

類似画像検索について簡単にまとめてみた - Qiita

上で紹介されていた phash を ruby から使うライブラリを使ったのですが
今回は python から opencv を使って連携させたいと思ったので python から phash が使えるものを探してみました。

ありました。

各フレーム間のハッシュ値の距離をプロットして
タイムラプス動画を合わせてみました。
真ん中が phash です。
https://youtu.be/oIoNYs4yLio

橋とかで空が隠れてブレてます汗
Screen Shot 2016-12-11 at 17.45.18.png

ここらへんを抽出したいですね。。。
Screen Shot 2016-12-11 at 17.47.01.png

ここを短縮したいですね!(これはいけそうな気がします)
Screen Shot 2016-12-11 at 17.50.20.png

後編へ

ウィンドウサイズ決めて、ローカルな分散とか見て色々やってみたいと思っていますが
正直、同じようなことやっている人はいると思うので
時間をかける前に情報収集ですね。

参考

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3