ヒントとコツ#

デモモード#

デモモードでは、マスタープロセッサなしでCMUcam4をデモできます。デモモードでは、CMUcam4は "TW"(Track Window)コマンドを実行し、トラッキングされている物体に向けて2つの標準的なホビーサーボを駆動すると同時に、トラッキングされた物体を標準的なTVに表示します。CMUcam4が一度デモモードに入ると、リセットされるまでデモモードを終了しません。デモモードに入るには、以下の手順に従ってください:

  1. CMUcam4の reset button を押し続けます

  2. CMUcam4の user button を押し続けます

  3. reset button を離します(user button は離さないでください)

  4. 赤い補助 LED が点灯するまで待ちます(2秒

  5. 赤い補助 LED が 10 Hz で点滅し始めるまで待ってから、ユーザーボタン を離します

    • CMUcam4 がテレビに接続されていれば、テレビがオンになるはずです(テレビにスプラッシュ画面が表示されるはずです)

  6. CMUcam4 はこれから 5秒間 照明条件に調整します

    • 次の 5秒間 は、トラッキングしたい物体をCMUcam4の前に置かないでください

  7. 赤い補助 LED が 10 Hz での点滅を停止するまで待ちます

    • CMUcam4 は照明条件への調整を完了しました

    • パンとチルトのサーボピンは 50 Hz1500 μs のパルスを出力するはずです

  8. トラッキングしたい物体をCMUcam4の前に置き、user button を押します

    • 赤色の補助LEDが 10 Hz で点滅し始めたら、OV9665 カメラモジュールの接続を調べます

      • OV9665 カメラモジュールが破損している可能性があり、おそらく交換が必要です

  9. CMUcam4 がテレビに接続されていれば、追跡された物体(または類似のもの)がテレビに表示されるはずです

    • 接続されていれば、パンとチルトのサーボも追跡対象の物体に向かってカメラを駆動しようとします

  10. さまざまな環境でさまざまな物体を使ってこの手順を試し、何が最もうまく機能するか確認してください

  11. CMUcam4 はデモモードで動作しています

reset button を押してデモモードを終了します。

パンサーボの非反転動作では、1500 µs未満のパルス長でカメラモジュールのX位置を(カメラモジュールの視点から見て)右に移動させ、1500 µsより大きいパルス長でカメラモジュールのX位置を(カメラモジュールの視点から見て)左に移動させる必要があります。

チルトサーボの非反転動作では、1500 µs未満のパルス長でカメラモジュールのY位置を(カメラモジュールの視点から見て)下に移動させ、1500 µsより大きいパルス長でカメラモジュールのY位置を(カメラモジュールの視点から見て)上に移動させる必要があります。

ハルトモード#

ハルトモードでは、Arduinoに接続したままCMUcam4を停止できます。ハルトモードでは、CMUcam4の消費電力は非常に少なく、ArduinoのシリアルポートをブロックしてArduinoのプログラミングを妨げることはありません。ハルトモードは、CMUcam4がArduinoのプログラミングプロセスに干渉する場合にのみ必要です。干渉しない場合、ハルトモードは不要です - 通常はこちらのケースです。CMUcam4が一度ハルトモードに入ると、リセットされるまでハルトモードを終了しません。ハルトモードに入るには、以下の手順に従ってください:

  1. CMUcam4の reset button を押し続けます

  2. CMUcam4の user button を押し続けます

  3. reset button を離します(user button は離さないでください)

  4. 赤い補助 LED が点灯するまで待ちます(2秒

  5. user button を離します

  6. CMUcam4 は無期限に停止しました

reset button を押してハルトモードを終了します。

より良いトラッキングに関するメモ#

オートゲインとホワイトバランスによるトラッキングの改善#

オートゲインは、環境に最適になるように画像の明るさレベルを調整する内部制御です。手動で調整した画像の全体的な明るさに近づくように、画像内の明暗を正規化しようとします。この処理は、カメラが明るさレベルを自動的に調整するにつれて、多くのフレームにわたって繰り返されます。例えば、照明が点灯して環境が明るくなると、カメラは全体の画像を暗くするように明るさを調整しようとします。

一方、ホワイトバランスはカメラの色ゲインを補正しようとします。画像内の周囲光は純白でないかもしれません。この場合、カメラは色を異なって見ます。カメラは、各カラーチャンネルにどれだけのゲインを与えるかの初期推定から始めます。アクティブな場合、ホワイトバランスはこれらのゲインをフレームごとに調整し、画像の平均色がグレーに近づくようにします。経験的に、この「グレーワールド」法は比較的よく機能することがわかっています。グレーワールドホワイトバランスの問題は、単色がカメラの視野を満たすと、ホワイトバランスがゲインをゆっくりと設定し、その色が本来の色ではなくグレーに見えるようになることです。そして単色が取り除かれると、グレーの平均を再確立するまで画像には望ましくない色ゲインが残ります。

デモモードのように色を追跡するときは、オートゲインとホワイトバランスを短時間実行してからオフにするとよいでしょう。約5秒間オンにしている間に、カメラは明るさゲインと色ゲインを適切と判断した値に設定できます。その後オフにすると、レンズに近づけた物体や影などによってカメラが不必要に設定を変更するのを防げます。オートゲインとホワイトバランスを無効にせず、カメラが RGB または YCbCr の値の設定を変更してしまうと、新しく測定された値が、最初に選択したカラートラッキングのしきい値の範囲外になる場合があります。

カメラモジュールでホワイトバランスを利用するには、オートゲインを有効にする必要があります。

YUV(YCbCr)色空間#

YCbCr は、より一般的に知られる RGB 空間とは異なる色空間の定義です。YCbCr では、照明データが別のチャンネルに格納されます。この性質のため、YCbCr モードではカメラが照明の変化に対してより耐性を持つ場合があります。異なる色空間であるため、YCbCr の画像はフレームダンププログラムで直接マッピングしても標準的な RGB 画像のようには見えません。RGB チャンネルは CrYCb にマッピングされます。したがって YCbCr モードでは、赤パラメータとして返される値は実際には Cr、緑パラメータは Y、青パラメータは Cb です。そのため赤い物体を追跡したい場合は、ダンプしたフレームを見て、その物体の色が YCbCr で何にマッピングされるかを確認する必要があります。そうすれば、照明があまり重要でないことを示す非常に緩い Y の範囲を与えつつ、Cb と Cr の範囲を見つけることができるはずです。YCbCr を使用するときは、すべての CMUcam4 の I/O において、赤が Cr に、緑が Y に、青が Cb にマッピングされることを考慮に入れてください。

RGBチャンネルがYCbCrではなくCrYCbを与えるようにマッピングされることに注意してください。

カメラモジュールについて#

電源投入から、カメラが自動的に光に適応するまでに最大5秒かかることがあります。照明のオン・オフなど、環境の急激な変化も同様の再調整時間を引き起こすことがあります。屋外でカメラを使用する場合、太陽の強力な赤外線放射のため、比較的曇った日でも、周囲の光レベルを下げるためにIRフィルタまたはNDカメラフィルタのいずれかを使用する必要があるでしょう。

カメラボードが提供する機能は、ユーザーにカラービジョン機能のツールボックスを提供することを目的としています。実際のアプリケーションは大きく異なる場合があり、ユーザーの想像力に委ねられています。表示ウィンドウの変更、色や光の統計の取得、色の追跡といった機能を、ホストプロセッサが組み合わせることで、より高レベルの機能を作り出すことができます。