2010-12-24[n年前へ]
■iPhone リアルタイム動画像処理コーディング
自分が欲しいと思えるデジタルカメラが欲しくて、iPhoneプログラミングの勉強がてらiPhoneで動画像処理を行うプログラムのスケルトンを作ってみました。そんな「1.カメラ映像→(電子ズーム使用時は解像度変換)→2.OpenCVを使った画像処理→3.処理動画保存→4.画面描画」という処理を行わせるコードを書くときにメモしたことを、忘れないように書いておきます。
特に時間のかかる画像処理を行うのでなければ、AVCaptureSessionPreset640x480、つまり、VGA(640x480)の撮影でも15FPS弱で処理をさせることができます。それを逆に言えば、iPhone4では、リアルタイムVGA動画処理&ファイル保存を15FPSで処理しようと思うと「機械の気持ちにならないとダメ」という感触です(動画保存処理を同時にさせるのでなければ、処理落ちはしないと思います)。
何より一番処理に時間がかかるのは、「3.処理動画保存」の部分でした。この部分は「コードを変えることで処理速度を改善させる」ということがなかなかできないようなので(速く処理を行わせる方法があれば知りたいです)、もしも処理動画をスムースに保存させようと思うなら、それ以外の部分を「機械の気持ち」に沿って地道なダイエットをしないといけないように思われます。
「2.画像処理」部分(とその前段)で「電子ズーム+色変換」を実装&動画保存させてみたのが、下の動画になります(撮影された動画を眺めてみると、「解像度変換・切り出し」における”中央部での丸め処理”が上手くないようですね)。「機械の気持ち」がわかり、自然に話すことができるようになるまでには、まだまだずいぶんと距離がありそうです。
(「テストチャート」のページを映し出しているコンピュータ画面を撮影した動画です)