Raspberry Piのカメラモジュールに関する話。
Rasbianでカメラモジュールを使う方法はいろいろなサイトで解説されているので略すとして、とりあえず1枚の画像を記録する場合は、
# raspistill -o filename.jpg
というコマンドを打つと思う。このとき、コマンドを実行してすぐには撮影が行われない。timeout (Time before takes picture and shuts down (raspistillのhelpより))がデフォルトで5秒に設定されているためである。私は最初これを知って、なぜ5秒も待たなければならないのか、と思った。Raspberry Piにディスプレイが設定されている場合は、この5秒の間にプレビューが表示されるので意味もあるだろうが、固定カメラサーバーとしてディスプレイをつながず運用する場合には、この5秒は無駄であろう。このtimeoutは次のようにすれば変更できる。
# raspistill -t 1 -o filename.jpg
上の場合はtimeoutを1sに設定しているのだが、この設定にして多少薄暗い場所で5分に一度撮影を行うようスクリプトをcronに登録して運用したところ、なぜか撮影される画像が真っ暗になってしまう。しかしそれは毎回必ずというわけではないのだ。感度を上げれば解決するかと思い、
# raspistill -t 1 -ISO 1600 filename.jpg
などとしても症状が改善されない。大体が真っ暗な画像で、たまに綺麗に撮れている。なぜだ?と思い、撮影された画像のEXIF情報をチェックしてみると、どうやら真っ暗になるときというのは、シャッタースピードが早く(1/2000sくらい)、ちゃんとモノが写っているときはシャッタースピードが遅い(1/20sくらい)ようである。まぁ、ISOを固定しているので、当たり前っちゃぁ当たり前の話である。が、ここからが重要で、
# raspistill -ISO 1600 filename.jpg
と-tオプションのtimeout設定をなくすと、症状がなくなるのである。ここまで読めば大体の人は理解しただろう。どうやら、Rasberry Piのカメラモジュールは、この5秒の間に、写り込む画像からシャッタースピードやISOを(オプションで設定されていなければ)調整するようなのである。で、どうやらそれに要する時間は1秒だと短すぎるらしい。これが3秒だとどうか、というのは試していないので分からないが、まぁデフォルトの5秒なら安心なのだろう、ということでtimeoutのオプションをスクリプトから除いて運用を再開した。
Post a Comment