フレームレートと解像度が異なる 2 つの異なるカメラから画像を受信しています。カメラの 1 つ (スマート カメラ) がコントローラーとして機能します。他のカメラと独自のイメージ センサーから画像を受信し、オンボード メモリに画像ペアを保存します。ここで、問題があります。画像の各ペアでステレオ マッチングを行う必要があります。したがって、画像は完全に同期されている必要があります (わずか数ミリ秒間隔)。両方のカメラを画面上のストップ ウォッチに向けて、画像をキャプチャし、時間的にどのくらい離れているかを確認します。残念なことに、それらは同期されておらず、単一のペア間の時間オフセットも一定ではありません。Linux と C でのプログラミングに取り組んでいます。個々のカメラから画像をキャプチャするために 2 つの posix スレッドを試しました。最初のスレッド cam1() は、イメージのキャプチャを開始する前に、もう一方のスレッド cam2() に通知します。したがって、2 つのイメージ キャプチャは同時に開始されるはずです。しかし、これもうまくいきません。この点での解決策を本当に感謝します。
1 に答える
クロック同期は、すべてのセンサー ネットワークで非常に困難な問題です。私は専門家ではありませんが、試してみることができる解決策がいくつかあります。
まず、nmは正しいです!ソフトウェアの同期は、2 台のカメラの画像取得の間で FPS (同じ FPS が必要)、露出、タイムスタンプなどを制御する必要がある高 FPS の状況では非常に困難です。カメラの同期は、通常、外部トリガーおよび同期 I/O として知られている外部で行われます。
外部同期カメラでは、2 つのクロックが常に同じであるとは限りません。カメラの時計のクリスタルには、設計で指定されたドリフトが常にあります。2 つの画像が区別できるようにドリフトし、時計をリセットするのにかかる時間を計算できます。しばらくAVTカメラを使用してきました。同社は以下を提案する:
カメラのタイムスタンプを別のクロックに同期することに関心があるユーザーは、カメラのクロックが他のクロックからずれることに注意する必要があります。そのため、タイムスタンプをリセットして定期的に再同期する必要があります。
FPS が低く、ドロップ フレーム数をいつでも把握できる場合は、各フレームの Frame Count という名前の (増加している) 注釈と同期できます。
ステレオ キャリブレーションされた画像がある場合、既定のカメラの画像 (一方を任意に定義するか、もう一方をトリガーするもののみを定義する) の特定の機能が、他のカメラを横切るエピポーラ ライン上または近くにある可能性があります。したがって、エピポーラ ラインは、プログラム ロジックに特定の不変条件を導入して、フィーチャ (検出されたブロブ) をペアリングする場合があります。