ともさんのHP >プロブラミング >USBカメラをJAVAで制御して定点観測 >デジタルスリットカメラの自作
デジタルスリットカメラの製作
パソコンと工業用に市販されているUSBカメラを用いてソフトウエアでスリット
カメラ
楽天 化する方法を解説しています。
スリットカメラとは
スリットカメラは電車の撮影や競馬の着順判定などに使われている特殊なカメラです。
フィルム面に細長いスリットをつけ、フィルムを一定の速度で動かして撮影します。そうすると、フイルムの移動方向は時間軸として記録されます。
この方式で撮影すると動かないものは映らないのですが、動くものだけは映像として記録されます。横が時間軸なので、競馬の着順は正確に判定することができます。
フィルムの長さのぶんだけ横幅を広げられるので、細長い電車も全体を撮影することが可能です。
デジタルスリットカメラ
フィルムではなくデジタルのカメラを用いても、スリットカメラを作ることができます。
デジタルの場合は、
UBSカメラ
楽天 と普通のパソコンを使い、機械的な改造や製作をしなくてもプログラムを作るだけでデジタルスリットカメラにすることが可能です。
デジタルスリットカメラの原理
フィルムカメラでは細いスリットを使いましたが、デジタルスリットカメラでは、撮影した二次元の画像から、1次元の線を取り出します。
USBカメラからは連続して画像が送られてくるので、パソコンに入ってきた画像から1次元の線を取り出して、後から順に並べて二次元の画像にします。
問題点
USBカメラから送られてくる画像は1秒間に何枚かが決められています。この単位をFPSといい、FPSが30であれば、1秒間に30枚となります。
普通のUSBカメラはFPS=30です。
普通の動画であれば30で十分なのですが、デジタルスリットカメラで30ではかなり少ないです。1秒間に30ラインしか追加できないので、早く動くものは短く写ります。
FPS30のUSBカメラでデジタルスリットカメラを作ると、幅640の画像を作るには20秒以上かかってしまいます。この速度で電車を撮影すると、とても短い電車の画像となってしまいます。
下の画像はfps=30で撮影した車です。アパートの3階のベランダから、前の道を通る車を撮影しました。
数年前にデジタルスリットカメラのソフトウェアを作りましたが、この問題があってなかなか良い写真は得られませんでした。
工業用のUSBカメラを使う
AmazonでたまたまFPS=330のUSBカメラを見かけました。これは工業用のもので、本来の目的は製品の検査に使うものです。
USBカメラとしてはちょっと高かったのですが、面白いことができそうなので購入してみました。
使ってみたところ、実際にFPS=330の動画が得られたので、このカメラを利用したスリットカメラアプリケーションを作ってみました。
ソフトウエア
USBカメラから画像を取り出すことは、パソコンを使えば容易にできますが、1本の線だけを取り出し、つなぎ合わせる作業をするには、プログラムを組む必要があります。
私の場合は、Java言語を使い、OpenCVを経由してUSBカメラを制御するようにしました。
USBカメラの画像サイズやFPSは、OpenCVの機能を用いて設定します。USBカメラの機種によっては、OpenCVで設定できない機能もあるようです。
結果
試行錯誤しましたが、以前のカメラとは違い、だいぶ速いスリットカメラを構成することができました。
FPS=30から330なので、11倍多く走査線が得られます。
下の画像は、スリットカメラを車に乗せ、窓からの風景を撮影したものです。FPS=30では横方向に圧縮された感じになってしまいますが、330であればかなり自然な風景になります。
デジタルスリットカメラの用途
円筒形のものを平らに撮影
コーヒーの空き缶を糸でぶら下げてくるくる回し、これを撮影すると空き缶の展開図を撮影することができます。
車窓の風景
電車に乗って窓の外の風景を撮影すると、外の風景を細長く連続して撮影することができます。
スリットを変えてみる
スリットカメラのスリットはフィルム時代の名残で真っ直ぐな直線ですが、デジタルであれば直線でも構わないし、丸でも構いません。色々形を変えれば、思わぬ効果が生まれるでしょうね。
スリットの位置を変える方法もあります。この方法では動かないものは普通に撮影できますが、動くものは歪んで映ります。こんな使い方もしてみると面白いですね。
最終更新日: 2020-04-16 09:10:31
ともさんのHP >プロブラミング >USBカメラをJAVAで制御して定点観測 >デジタルスリットカメラの自作
ツイート