« 武蔵中原から柿生までの電車移動で、640円も取られた話 | トップページ | ついにタモリ倶楽部がハイビジョン対応、そして、オープニングおしり映像もリニューアル »

2010年7月10日 (土)

FFmpegとImageMagickを使ってミニチュア風動画を作る方法

(注意:前置きが長いんで、方法だけが知りたい方は、ガーっとスクロールさせてね)

ミニチュア風というか、ジオラマ風というか、箱庭風というか、そんな感じの写真ってあるじゃないですか。

私が最初にこの手の写真を知ったのが、この写真集、

small planet
small planet

えらく精巧なミニチュアを作ったんだなー。・・・、え、本物?みたいな感じ。

で、専門の人はティルトシフトレンズなるものを使ってこういう写真を撮るんでしょうけど、素人には手のでなさそうなものみたい。

ASCII.jp:見慣れた風景をジオラマにしてみよう

ということでなかなか面白い効果が得られるレンズだが、値段もそれ相応に高い。例えばキヤノンからティルト・シフト撮影が可能な一眼レフ用交換レンズが3本リリースされているが、いずれも定価18万前後と高い。

無理ぃ。

でも、大丈夫。画像の加工で似たような写真に仕上げることができるんです。

上記リンクでは、

tiltshiftmaker.com - Transform your photos into tilt-shift style miniatures

というサイトを紹介しているんですが、画像をアップロードするだけで、ミニチュア風に変換してくれます。

私も試してみました。(画像はNHKクリエイティブ・ライブラリーの動画からキャプチャしたものを使用)

ミニチュア風変換前
↓tiltshiftmaker.comでティルトシフト風に変換↓
ミニチュア風変換後

ね、なんだか、それっぽくなったでしょ。上記は縮小していますが、もっと高解像度のものも作れます。

やっていることとしては、コントラストを独特な感じで強めて、上下をぼかす程度。

コントラストを変えることによって、例えば実物の自動車の色とかテカリ具合が、チープな感じになって、ミニカーっぽく見えるようになったりします。

上下をぼかすと、被写界深度がせばまったように見えて、まるで小さいものをマクロ撮影で撮ったみたいに見えるんですよね。

で、そんな画像を動画化したものを、めざましテレビの占いのコーナーで見たんですよ。すごく面白い仕上がりで、じっくり見たいのに、すぐに前面に占いの文字がかぶさって、よく見えなくなってしまうという。ぜいたくな使い方。

こんな感じの動画を作ってみたい。

理屈から言えば、動画の全フレームを静止画で取り出して、上記のような加工をほどこして、また動画として結合すればいいはず。でも、画像の加工を1枚ずつやっていくのは、ちょっと大変。普通の動画って1秒あたり30フレームくらいありますからね。10フレーム/秒くらいに間引いたとしても、ちょっと大変そう。

で、そこで登場するのがImageMagickというフリーソフト、コマンドライン操作から画像を加工できるので、バッチ処理すれば、画像が何千枚あろうと大丈夫。

で、やっと本題に入ります。

【1】動画から静止画を切り出す(ffmpeg)

ffmpegでできます。↓こんな感じ。

ffmpeg -ss 0 -vframes 1 -i xxx.mp4 -f image2 xxx.jpg

-ss: 切り出したい時間位置
-vframes: 何フレーム切り出すか(静止画なので1)
-i: 入力動画ファイル名
-f image2: 静止画として切り出す

最後のxxx.jpgが出力ファイル名。これをxxx.bmpとか変えれば、ビットマップでも切り出し可能。

上記の-ssを、0, 0.1, 0.2, 0.3, ..., 0.9 って変化させれば、最初の1秒分を10分割で切り出しできます。繰り返しはバッチかなんかで、上手に書いてください。(私は苦手)

【2】静止画をミニチュア風に加工(ImageMagick)

これは下記に書いてある内容をそのまま利用させてもらいました。

Photo Handling -- IM v6 Examples

Thank you, Anthony Thyssen!

上記リンク先の内容をざっと書くと、

2-1 コントラストをsigmoidal(S字状)に強める
convert xxx.jpg -sigmoidal-contrast 15x30% xxx2.jpg

2-2 上下をぼかすマスクを作る
convert xxx2.jpg -sparse-color Barycentric "0,0 black 0,%[fx:h-1] white" -function polynomial 4,-4,1 mask.jpg

入力は何でもいいんでしょうけど、元画像にしておくとサイズが合うというだけだと思います。

2-3 上下をぼかす
convert xxx2.jpg mask.jpg -compose Blur -set option:compose:args 20 -composite xxx3.jpg

できあがったものが、ミニチュア風の静止画1枚になります。ファイル名を通し番号にして、大量に変換する必要があります。

【3】静止画を連結して動画にする(ffmpeg)

またもやffmpegの登場。↓こんな感じ

ffmpeg -i %05d.jpg xxx.mpg

%5dってのは5桁の通し番号という意味。つまり用意する静止画は、00001.jpg、00002.jpg、00003.jpg、・・・となっている必要があります。

ここに情報あり↓
ffmpeg静止画→動画作成苦戦しまくり

とりあえず上記でくっついた動画になります。

形式を変えたい場合は、拡張子を買えたり、-fや-vcodecで明に指定してね。

フレームレートを元の動画のものを調べて、同じにしてやれば元と同じ速さの動画になります。「-r 29.97」みたいな感じで。

ffmpegで細かい指定がよく分からないという人は、中間的に非圧縮AVIにしておいて、お手持ちの変換ツールを使って、お好みの形式にするもよし。下記、非圧縮AVIの例。

ffmpeg -i %05d.jpg -vcodec rawvideo -r 29.97 xxx.avi

ただし、rawvideoにするとxxx.aviは馬鹿でかくなるので要注意。

人様に見せるような立派なもんじゃないんですが、コマンドの指定の仕方とか、連番のつけ方とかが分かると思うので、perlで書いたプログラムを置いておきます。変換フレーム数とか、フレームレートもハードコーディングしちゃっているので、まあ、参考程度にして自分で改良してください。

動画ミニチュア風変換 perlコード サンプル

で、上記のやり方で変換した、動画がこれです。
素材はNHKクリエイティブ・ライブラリーのものを使わせてもらいました。愛してるぜNHK。

中盤の引いていく空撮あたりがちょっと面白くないですか?おもちゃの街の夜景みたいで。

空撮やビルからの風景のような、近景と遠景を含むような絵の方がミニチュアっぽさが出るようです。映像の上が遠景、下が近景となるように、斜め上から見た視点ですね。

近景と遠景がぼやけて、真ん中がくっきり写ると、より被写界深度が小さくなっている風な感じに見えるからなんですかね。■

[2010年7月12日追記]
より高画質にすべく、自分で撮影したビデオ映像を加工してみました。

2010年7月11日(日) ミニチュア風動画 HD版

[2010年7月12日追記]
ImageMagickの部分だけちょっと変えると、いろいろなバリエーションで遊べます。下記は、線画スケッチ風にしたもの。

2010年7月12日(月) FFmpegとImageMagickを使ってスケッチ風動画を作る方法

FFmpegで作る動画共有サイト
FFmpegで作る動画共有サイト

|

« 武蔵中原から柿生までの電車移動で、640円も取られた話 | トップページ | ついにタモリ倶楽部がハイビジョン対応、そして、オープニングおしり映像もリニューアル »

パソコン・インターネット」カテゴリの記事

映画・テレビ」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/517450/60883184

この記事へのトラックバック一覧です: FFmpegとImageMagickを使ってミニチュア風動画を作る方法:

« 武蔵中原から柿生までの電車移動で、640円も取られた話 | トップページ | ついにタモリ倶楽部がハイビジョン対応、そして、オープニングおしり映像もリニューアル »