マイコン工作実験日記

Microcontroller を用いての工作、実験記録

プレビュー機能

2009-05-05 16:00:42 | CMOSカメラ
CMOSカメラで撮像した画像は、AT91SAM9260のISIがもつプレビュー機能を用いてLCDに表示しています。きょうは、この機能について簡単に説明しておこうと思います。



CMOSカメラが出力する信号形式はレジスタの設定で選択できるようですが、サンプルに従って設定するとYCbCrのコンポーネント信号の形式で出力されます。そこで、この形式での入力を受け付けて処理するようにAT91SAM9260のISIを設定してやります。すると、ISIではYCbCr形式をLCD表示に適したRGB 5:5:5の形式に変換します。カメラが撮像する際の画素数は、リセット時には1.3M画素のSXGAになっていますが、これをVGA (640X480)に変更して使っています。LCDの画素数はQVGA(320X240)ですのでサイズ変換が必要となりますが、ISIにはこのサイズ変換機能が用意されているので、この機能を利用しています。こうして、RGB5:5:5形式でのQVGA用画像データが出力されますが、この出力はISIで設定したフレームバッファメモリの領域に展開されます。フレームバッファ領域は、リンクされたリスト形式で指定することができるので、複数のバッファを指定することが可能です。こうすることで、VSYNC/HSYNC信号に合わせて順次出力されてくる画像を順番にフレーム・バッファに格納していくことができます。ここまでの処理はすべてハードがやってくれるので、ソフトではフレームバッファに書き出されたデータだけを扱えばいいことになります。

使用しているLCDにはRGB 5:6:5で出力する必要がありますので、フレームバッファの内容をそのまま出力することはできませんが、ソフトとしてはバッファの内容にこの変換を施してLCDに書き出せば画像が見えることになります。カメラの撮像画素数はをQVGAに設定すればサイズ変換は不要になるのですが、VGAで撮ったものをQVGAに変換した方が出力された画がきれいに見えるので、VGAを使っています。

CMOSカメラとISIの双方が出力/入力する信号の形式や画素数の選択/設定ができるようになっていますので、両方が一致するように正しい設定をしてやることが必要になりますが、いったんその設定させわかってしまえば、あとはハードに全ておまかせで、画像データが取り出せます。

カメラはVGAの場合で30fpsを出力することができます。したがって、これを順次LCDに出力することでデジカメのようにカメラ画像をLCDでモニタすることができます。LCDへの出力はソフトで処理せねばなりませんが、30fpsくらいなら問題なく処理できそうですので、次はこれを実験してみることにします。