背景
Raspberry pi で定点観測カメラシステムを作成しているのですが、古い webcam (Buffalo の BSW20KM01H) でfswebcamを用いて撮影していると、いまいちピントが合いませんでした。
結論
--skip オプションである程度オートフォーカスと自動露光のための時間(例 --skip 10)を取ってから、実際に撮影する露光時間を短くする(例 -F 1)とすると、きれいに撮影できました。
内容
fswebcamにはいろいろなオプションが用意されています。主要なものは、
-p, --palette:どのような色画像にするか(png, jpeg, grey など)
-r, --resolution:解像度(webcamに合わせて設定、デフォルトが384x288だが、640x480、1280x1024などでもよい)
-F, --frames:撮影するフレームの数(露光時間に対応)、短いほどぶれない
-S, --skip:撮影しないが露光を行い、webcamによってはオートフォーカスや自動露光を行う
-l, --loop:指定した時間でループさせて撮影を行う (-l 10 で10sごとに撮影を行う)
-v, --verbose:撮影中の追加情報を見れる
--log:ログをファイルに出力できる
です。この中でも -F と -S の調整が重要です。
ちなみに、僕のwebcamは10fpsほどしか出ないので、-F 10 とすると、撮影に1秒かかります。
オプションを変化させた結果
カメラの前で手を振った写真を上記のオプションを変えながら撮影しました。-r は 640x480 です。
-F 1 -S 0
-F 1 -S 10
-F 1 -S 20
-F 10 -S 0
-F 20 -S 0
綺麗に撮れた写真がどちらも真ん中に被写体がないのが申し訳ないのですが、-F 1 としている分だけブレが少ないのに対し、-F 10 以上に設定しているものは、ブレブレなのがわかります。
また、-F 1 -S 0 にしたものは、露光時間が短すぎて全体的に暗い写真になってます。
ただし、これらのパラメータはwebcamの性能によって大きく変わるので、最近のwebcamであれば、解像度を上げたり、-S を短くしても問題ないかもしれません