SSPライブラリでRaspberry Pi Camera Moduleを動かしてみる

インターフェース誌で2016年12月号から3号連続で特集されているSSPライブラリを導入してみる。イメージセンサーの素の画像データ(RAWデータ)を取り出すことで,基本的な画質調整から試せるだけでなく,RAWデータの保存と画像処理を分離することで,撮影不能時間を短くしたり,raspivid以上の高速/高解像度の動画撮影が可能になる(らしい)。

hendigi.karaage.xyz

環境構築

SSPライブラリのインストール

インストール法は次のページを参考。概ね書いてあるとおりに実行していけばインストールできた。

www.visionproc.org

ただし最新のバージョンでは,ラズパイに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を入れ替える。