よくある質問#

CMUcam1 と CMUcam2 の違いは何ですか?#

はじめに#

CMUcam2 は、CMUcam1 のすべての機能を強化された形で含み、さらに多くの機能を備えています。以下では、新機能と相違点を簡単に説明します。CMUcam1 と CMUcam2 のどちらを購入するかを決める際の質問への回答も参照するとよいでしょう。

ハードウェアの概要#

重要な主要なハードウェアの違いが2つあります。CMUcam2 は CMUcam1 とは異なるプロセッサを使用しており、また CMUcam2 はフレームバッファチップを組み込んでいますが CMUcam1 は組み込んでいません。

CMUcam2 は SX52 プロセッサを使用し、CMUcam1 は SX28 プロセッサ を使用しています。どちらも Ubicom の SX プロセッサシリーズのものです。どちらの場合もプロセッサは 75 MHz で動作するため、プロセッサ速度や計算能力に違いはありません。SX52 プロセッサの利点は、RAM が多く(262 対 136 バイト)、ROM が多く(4096 対 2048 ワード)、I/O ピンが多いことです。RAM と ROM が多いことで、より複雑なコードを書くことができ、CMUcam2 により多くの機能を組み込むことができました。I/O ピンが多いことで、より多くのサーボ、より多くの設定ジャンパーなど、他の機能に使えるピンが多く残りました。

2つのシステムの大きな違いは、CMUcam2 が AverLogic 社の AL422B フレームバッファチップを搭載しているのに対し、CMUcam1 は搭載していないことです。これにより、CMUcam2 のハードウェアは単一の完全なフレームをすばやくキャプチャしてフレームバッファメモリに保存できます。これには多くの利点があります:

  • より複雑な処理。 CMUcam1では、プロセッサはカメラモジュールから出力されるピクセルデータストリームをその場で処理しなければなりませんでした。この設計はシステムハードウェアの複雑さとコストの削減に役立ちました。しかし、ピクセル間または画像の行間でリアルタイムに処理を実行しなければならなかったため、処理の複雑さが制限されていました。CMUcam2のプロセッサはフレームバッファからピクセルデータを独自のペースでアクセスするため、ピクセルごとにより複雑な処理を実行できます。

  • 処理の高速化。 カメラモジュールのピクセルストリームと同期を保つ必要がないことの裏返しとして、プロセッサはピクセルデータが必要なときにカメラモジュールを待つ必要がありません。この待ち時間をなくすことで、CMUcam2のプロセッサは、プロセッサ自体の性能が向上していなくても、実際にはCMUcam1よりも速くフレームを処理できます。

  • フレームごとの複数操作。 フレームバッファに格納された画像は変化しないため、CMUcam2は単一のフレームに対して複数の操作を実行できます。例えば、動きの検出、領域統計の計算、複数の色のトラッキングを、すべて単一のフレーム上で行えます。

  • フレームダンプの改善。 CMUcam1は送信するフレームダンプデータをカメラモジュールのデータストリームと同期させる必要があったため、カメラフレームごとに1列のデータしか送信できませんでした。これは画像の異なる部分が異なるタイミングで取り込まれることを意味し、そのため素早く動く物体はCMUcam1のフレームダンプ全体にわたって滲んで写ってしまいました。CMUcam2はフレームバッファ内の固定されたデータから画像を送信するため、これはもはや問題ではありません。

  • 低ボーレートへの対応改善。 フレームバッファを持つことは、CMUcam2が送信するデータのタイミングを、カメラモジュールから読み出されるデータのタイミングから完全に切り離せることも意味します。これは、フレームダンプやビットマップラインモードからのCMUcam2のデータが通信ボーレートの変化によって変わらないことを意味し、CMUcam2はボーレートに関わらず同じフレームまたはビットマップデータをホストプロセッサに送信します。ただし、1つのフレームのすべてのデータの送信を最終的に完了してからでないと次のフレームを処理できないため、毎秒処理されるフレーム数は遅いボーレートでは依然として変化する可能性があります。

  • カメラモジュール動作の改善。 CMUcam1のプロセッサがカメラモジュールからのデータストリームと同期を保てるようにするため、カメラモジュールのフレームレートを17 fpsまで下げる必要がありました。CMUcam2が使用するフレームバッファにより、カメラモジュールをフルフレーム速度で動作させることができます。この利点の1つは、カメラの自動露出およびホワイトバランス調整がより速く動作できることです。なぜなら、調整はフレームごとに1回しか行えず、今では毎秒あたりのフレーム数が増えているためです。2つ目の利点は、白黒アナログビデオ出力(モジュールがフルフレームレートで動作しているときのみ機能する)を、CMUcam2が画像データを処理している間に使用できることです。これはCMUcam1では不可能でした。

機能の概要#

CMUcam2 は CMUcam1 のすべての機能を実装し、さらに多くの新機能を追加しています。以下はその概要です。

  • カラートラッキング。 CMUcam2は、CMUcam1と同様にカラートラッキングを実装しています。CMUcam1と同じく、トラッキングされたピクセルのビットマップを送信するオプションのビットマップラインモードが実装されています。さらにいくつかの機能強化もあります。新しいオプションのラインモードでは、トラッキングされたピクセルの平均、最小、最大位置を含む、各行のトラッキングされたピクセルの統計情報が提供されます。これはライン追従に非常に役立ちます。また、トラッキング境界の解釈を反転できる新しいオプションのモードもあります。このモードでは、トラッキング境界の外側のピクセルが "good" とみなされます。これは均一な背景に対して物体をトラッキングするのに役立ちます -- ブルースクリーンの特殊効果を思い浮かべてください。また、ピクセル差分(後述)が有効な場合にエッジを検出するのにも役立ちます。ノイズフィルタリングオプションも強化され、ノイズの多い状況に応じてフィルタリング量を調整できるようになりました。

  • 画像統計。 CMUcam2は、CMUcam1と同様に画像領域の平均と分散の統計計算を実装しています。CMUcam1と同じく、画像の各ラインの平均を送信するオプションのラインモードが実装されています。また、ライン単位で分散情報をオプションで含める、新しい強化されたラインモードもあります。

  • 動き検出。 CMUcam2で完全に新しくなったのは、動き検出(フレーム差分)コマンドです。これらのコマンドを使用して、CMUcam2に現在の画像の低解像度バージョンを取り込み、それを新たに入力される画像と継続的に比較するよう指示できます。CMUcam2からのパケットは、画像のいずれかの部分が指定された量以上に変化した場合、それを報告します。これは動きを示している可能性があります。これらのパケットは、変化した画像ブロックの重心と範囲を記述したり、どの画像ブロックが変化したかのビットマップを提供したりできます。このモードはピクセル差分(後述)と組み合わせることもでき、照明の変化に対して動き検出をより堅牢にできます。

  • ヒストグラム化。 CMUcam2で完全に新しくなったのは、ヒストグラム計算コマンドです。これらのコマンドを使用して、単一の色チャンネルの1次元ヒストグラムを最大28ビンの解像度で取得できます。ヒストグラムは画像の外観を要約する有用な情報を提供します。ホストプロセッサ上での追加のプログラミングにより、この情報を障害物、特定の物体、または場所の検出を支援するために使用できます。

  • 画像ウィンドウ化。 CMUcam2は、CMUcam1と同様に、処理を全体画像の小さな領域(サブウィンドウ)に制限する機能を実装しています。CMUcam2では、フレームバッファに格納された単一画像のサブウィンドウを詳細に検査するのに使用できるため、この機能はさらに有用です。また、垂直ウィンドウサイズを縮小することで、処理が必要なピクセル数を大幅に減らし、毎秒処理されるフレーム数を大幅に増やすために使用できます。

  • 出力パケットのカスタマイズ。 CMUcam2は、CMUcam1よりもはるかに柔軟なパケットのカスタマイズを実装しています。各コマンドが生成する各パケットを、特定のアプリケーションに必要な値のみを返すようにカスタマイズできるコマンドがあります。これにより、多くの状況でホストプロセッサに送信され処理されるデータ量を大幅に減らせます。

  • ピクセル差分。 CMUcam2で完全に新しくなったのは、オプションのピクセル差分モードです。ピクセル差分モードでは、ピクセルは残りのCMUcam2コードに渡される前に前処理されます。この前処理ステップは、現在のピクセル値と直前のピクセル値の差を、残りのコードに新しいピクセル値として送ります。基本的にこれが行うのは、画像内の垂直エッジ以外をすべて除去することです。これは非常に強力な操作であり、ホストプロセッサ上での追加のプログラミングにより、障害物検出やライン追従を支援するために使用できます。

  • ダウンサンプリング。 CMUcam2で完全に新しくなったのは、オプションのダウンサンプリングモードです。ダウンサンプリングモードでは、CMUcam2のソフトウェアが処理前にカメラ画像の解像度を下げます。この利点は、処理して送信するピクセルがはるかに少なくなることです。ソフトウェアで行われるため、ダウンサンプリングによる処理速度の向上はごくわずかです。大きなメリットは送信データ量の削減にあります。画像フレームをダンプする場合、ダウンサンプリングによってデータサイズを容易に2分の1、4分の1、あるいはそれ以上に削減でき、その結果送信時間を短縮できます。同様に、ビットマップラインモードを使用する場合、ビットマップ画像のサイズを大幅に削減でき、ホストプロセッサが受信して処理しなければならないデータ量を減らせます。

  • サーボ制御。 元のCMUcam1は単一のサーボのみをサポートしており、そのサーボは特定のボーレートで、かつCMUcam1がストリーミングモードにあるときのみ正しく動作しました。CMUcam2は最大5個のサーボをサポートします。CMUcam2のサーボコントローラコードはバックグラウンドプロセスとして実装されているため、サーボ出力は常に安定を保ち、他のサーボコントローラと同じように使用できます。さらに、CMUcam2はパンおよびチルトサーボを自動的に制御するよう構成できます。このモードでは、CMUcam2はカラートラッキングデータの計算を指示されるたびにサーボ位置を更新します。

  • 省電力。 CMUcam2で完全に新しくなったのは、省電力モードです。一部のアプリケーションでは、CMUcam2は画像データを継続的に処理する必要がありません。そのような場合、CMUcam2をさまざまなパワーダウン(またはスリープ)モードに移行させるよう指示できます。CMUcam2がこれらのモードのいずれかにあるときは、トラッキングコマンドやサーボ制御は行われません。単純なシリアルコマンドを送信すると、数ミリ秒でカメラが再び起動します。

CMUcam2 で OV6620 モジュールと OV7620 モジュールを使うことの違いは何ですか?#

はじめに#

性能の面では、OV7620センサはOV6620センサ(356x292の生センサ位置)よりも高解像度のセンサ(664x492の生センサ位置)です。しかし、この事実は、これらのセンサのどちらがCMUcam2のアプリケーションに最も適しているかを検討する際に生じる問題とはほとんど関係ありません。以下は検討事項のリストです。

解像度#

OV7620 センサーが OV6620 より高解像度のセンサーであるのは事実ですが、CMUcam2 のフレームバッファのメモリサイズが固定されているため、CMUcam2 は OV7620 センサーに対して 160x239 の単一解像度しかサポートしません。CMUcam2 は OV6620 センサーに対して 88x143 の低解像度モードと 176x255 の高解像度モードをサポートします。したがって、OV6620 を高解像度モードで使用すると、OV7620 センサーで利用できる単一解像度モードよりも実際に高い解像度での動作を実現できます。

フレームレート#

解像度に関連するもう1つの問題は、画像のストリームを連続的に処理する際の最大フレームレートです。解像度が低いほど、処理する必要のあるピクセルが少なくなり、達成可能なフレームレートが高くなります。ダウンサンプリングレートと仮想ウィンドウサイズを変更することでフレームレートを上げることはできますが、センサが出力する実際のピクセル数の方がはるかに大きな影響を及ぼします。このため、CMUcam2は、OV7620で利用可能な単一解像度モードよりも、OV6620を低解像度モードで動作させたときの方が、はるかに高いフレームレートを達成できます。

アナログビデオ出力#

2つのセンサ間のもう1つの違いは、2つのセンサのアナログビデオ出力の形式です。OV6620センサはアナログPAL形式で出力し、OV7620センサはアナログNTSC形式で出力します。どちらの場合も、出力は白黒です。

CMUcam2のほとんどの使用では、アナログ出力は使用されないことに注意することが重要です。典型的なアプリケーションでは、画像を処理した結果または生のピクセルが、シリアルポートを介してデジタルでホストコンピュータまたはマイクロコントローラに送信されるため、これは問題になりません。しかし、ライブの白黒ビデオが重要な場合は、アナログビデオ出力の形式を考慮したほうがよいでしょう。

概要#

私たちの推奨は、特にその低コストとこのモジュールで達成可能なより速い処理時間を考慮すると、OV6620モジュールがほぼすべてのアプリケーションに最適な選択であるということです。NTSCモノクロアナログビデオ出力が必要な稀なアプリケーションでは、OV7620を検討したほうがよいかもしれません。

現在のCMUcam2ファームウェアリリースに既知の問題はありますか?#

はい。1.00 リリースでは「RM」(Raw Mode)コマンドが正しく動作しませんでした。1.01 リリースでその問題が修正されています。

CMUcam2 のファームウェアはアップグレード可能ですが、そのためには SX-Key(または互換の)プログラマが必要です。ROM イメージの「hex」ファイルは ダウンロード ページで入手できます。