SSPライブラリでRaspberry Pi Camera Moduleを動かしてみる
インターフェース誌で2016年12月号から3号連続で特集されているSSPライブラリを導入してみる。イメージセンサーの素の画像データ(RAWデータ)を取り出すことで,基本的な画質調整から試せるだけでなく,RAWデータの保存と画像処理を分離することで,撮影不能時間を短くしたり,raspivid以上の高速/高解像度の動画撮影が可能になる(らしい)。
環境構築
SSPライブラリのインストール
インストール法は次のページを参考。概ね書いてあるとおりに実行していけばインストールできた。
ただし最新のバージョンでは,ラズパイにOpenCVをインストールする方法にあるとおり,ファイル拡張は不要(というかできない)。
インストールできたかは次のコマンドで確認
$ cd ~/libssp/1.31/sample/
$ sudo stillsample/stillsample profiles/IMX219\(1280x720@60Hz\).xml stillsampletest.raw
$ ls -l stillsampletest.raw
実際に画を見るには,windowsでダウンロードページにあるRAWViwer1.3.exeを使う。
VisionProcessingFramework(VPF) 環境構築
まず,GUIで必要なgtkパッケージを入れる(VPFではgtk2を使うようで,gtk3だけでは不可)。
$ sudo apt-get install libgtk2.0-dev libgtk-3-dev
次に,OpenCVを入れる。なお,OpenCVのインストールに関してはraspberry pi opencv ビデオで顔認識(コンパイルなし!) - KOKENSHAの技術ブログも参考。
$ sudo apt-get install libopencv-dev
続いて,次のページに書いてあるとおりに実行。
www.visionproc.org
ASTROの導入
VPFでも解像度が小さいうちはいいが,大きいとRpiの画面(実際にはVNC viewer内)に入りきらず不便なので,Gain(感度;実際にはアナログゲインとデジタルゲイン),Coarse Integration Time(露出時間)を指定できるように変更したプログラムを利用する。Vision Processing Community:Downloadからastro_20171201.zipをダウンロードし,「~/libssp/1.31/astro」に展開。
ここまで来れば,例えば,次のコードで,3200X2400pxのJPGとRAWファイルが出力される(アナログゲイン:200,デジタルゲイン:300,露出時間:600)。
$ cd ~/libssp/1.31/sample/
$ ./still.sh output 200 300 600
これをPCへ移行させればよいのだが,RAWViwer1.3.exeではRAWファイルを読めなかった。RawTherapeeでは読める。ただし,このソフトでは最初の画素がBから始まることを仮定しており,チャネルミキサでRとBを入れ替える。