マイコン工作実験日記

Microcontroller を用いての工作、実験記録

インターバル撮影動画を目指す

2012-05-26 09:51:44 | CMOSカメラ
カメラ画像をJPEGとして保存することはできたので、次の段階として動画として保存する段階へ進むことにします。本来であれば、VGAサイズの画像を保存するところまでやってみたかったのですが、SAM3S4Bの48K RAMではメモリが不足してJPEGへの変換ができないので断念です。SAM3S8Bになると内蔵RAMが64Kに増えているので、なんとかできそうなのですが。

動画もファイルとして保存するわけですが、コンテナ形式としては比較的簡単そうなAVIファイルを選択することにします。Windows環境では古くから使われている形式ですし、手元にAVIを出してくれるデジカメがあることもこのファイル形式を選択する理由のひとつです。AVIファイルの中に実際に格納する画像の圧縮形式にはMotion JPEG (MJPG)形式を選択することとします。Motion JPEGは、JPEG画像を連続して並べることで、動画像を表現します。パラパラ漫画と同じですね。前の画像との差分をとったりというような処理は一切しない単純な方式なので、当然のことながら動画のサイズは大きくなってしまいます。それでも非圧縮の場合に比べれば1/4程度には圧縮できます。ファイルサイズが小さいことは、SDカードへの書き込み時間も短いことを意味します。何しろメモリ容量が限られているので、JPEG圧縮をしながら順次カードへの書き込みをおこなっています。書き込み用のバッファサイズを最低限に抑えるために、1セクタ(512バイト)分の書き込みデータが溜まったところで、カードへの書き込みを行っています。複数セクター分の書き込みを一度におこなった方が書き込み時間が短縮できるのですが、メモリ節約が最優先です。

このようにメモリ制約がキツイので、圧縮処理と書き込み処理を並行して実行させるためにダブルバッファリングを使うこともできません。そのため圧縮と書き込みには1秒程度の時間がかかっていまい、とてもじゃありませんが20fpsとかの速度で画像を記録することなんてできません。しかし、用途をインターバル撮影用途に限定してしまえば、圧縮/記録時間がかかっても問題になりません。マイコンで周期的に撮影、圧縮、記録を繰り返しながら動画ファイルを作成してやろうというわけです。植物や景色を継続的に撮影するのに利用できます。おもちゃとしては楽しめそうだと思っていたのですが、すでにキングジムからレコロという製品が発売されているのですね。知らなかった。自分が目指していたコンセプトそのものです。レコロがVGAサイズまでできるのにこちらはQVGAですので、解像度の点では負けていますがメゲずに作ってみることにします。

KING JIM インターバルレコーダー レコロ IR5オレ オレンジ
キングジム
キングジム


うーん、レコロって値段も手頃だなぁ。カミさんに「作るより安いじゃん」と言われてしまいそう。使う事よりも自作する過程を楽しみにしている自分ですら、「リファレンスに買ってみようか」と思ってしまいます。もちろん自作すれば、レコロには用意されていない機能を備えることも可能になります。例えば、
  • 撮影の開始、終了時刻を設定する。
  • ちゃんとファイル作成日付をつけられる。画像中に時刻を埋め込める。
  • 明るさセンサと連動して、昼間だけ撮影する。
いつも、そこまで完成度の高いものに仕上げる前に、違うことやり始めてしまうのですが。。。