(57)【要約】本発明は、イベントベースの視覚センサを使用したオプティカルフローの計算に関する。【特許請求の範囲】
【請求項１】
複数のピクセルを含み、変更イベントストリームを出力するよう構成されたイベントベースの視覚センサによってキャプチャされたシーンのオプティカルフローを計算する方法であって、各変更イベントは、ピクセルの１つによって検出された輝度の変化に対応し、タイムスタンプと、輝度の変化を検出したピクセルのピクセルアドレスと、その輝度変化の兆候を示すパラメータとを含み、
変更イベントは、少なくとも３つのタイムスライスフレーム、つまり、時刻tから始まる第１の現タイムスライスフレーム、時刻ｔ−ｄから始まる第２のタイムスライスフレーム、時刻ｔ−２*ｄから始まる第３のタイムスライスフレーム（ｔ−２*ｄ）に蓄積され、ｄは、それぞれのタイムスライスフレームの持続時間であり、
変更イベントは、前記持続時間ｄにわたって現在の第１のタイムスライスフレームに蓄積され、
第２のタイムスライスフレーム（ｔ−ｄ）の参照ブロックであって、現在の第１のタイムスライスフレーム（ｔ）の最新の変更イベントのピクセルを中心とするピクセルを含む参照ブロックを、第３のタイムスライスフレーム（ｔ−２*ｄ）の検索ブロックと比較して、距離メトリックを使用してその参照ブロックに最も類似した検索ブロックを見つけ、そして
現在の第１のタイムスライスフレーム（ｔ）が第２のタイムスライスフレーム（ｔ−ｄ）になり、第２のタイムスライスフレーム（ｔ−ｄ）が第３のタイムスライスフレーム（ｔ−２*ｄ）になり、第３のタイムスライスフレーム（ｔ−２*ｄ）がクリアされて現在の第１のタイムスライスフレーム（ｔ）になるよう３つのタイムスライスフレームの交換を周期的に行う、方法。
【請求項２】
前記距離メトリックは、参照ブロックピクセルと検索ブロックピクセルとの絶対差の合計である、ことを特徴とする請求項１に記載の方法。
【請求項３】
前記イベントベースの視覚センサの元のアドレス空間をサブサンプリングする複数のタイムスライスフレーム群が使用される、ことを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記タイムスライスフレームの交換は、一定の時間間隔で行われる、ことを特徴とする請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記タイムスライスフレームの交換は、前記第１のタイムスライスフレーム（ｔ）に蓄積された特定の、特に一定の合計イベントカウントで行われる、ことを特徴とする請求項１〜３のいずれか一項に記載の方法。
【請求項６】
前記タイムスライスフレームの交換は、現在の第１のタイムスライス（ｔ）のサブエリアが特定数の変更イベントを蓄積する場合に行われる、ことを特徴とする請求項１〜３のいずれか一項に記載の方法。
【請求項７】
前記タイムスライスフレームの交換は、タイムスライスフレームの最後の交換から統合された全運動が閾値を超える場合に行われる、ことを特徴とする請求項１〜３のいずれか一項に記載の方法。
【請求項８】
前記タイムスライスフレームの交換後の持続時間ｄは、参照ブロックと各最も類似した検索ブロックとの平均一致距離（Ｄ）に応じて制御され、この平均一致距離は、計算されたオプティカルフロー分布のヒストグラムにより決定される、ことを特徴とする請求項１〜３のいずれか一項に記載の方法。
【請求項９】
前記総イベントカウントは、参照ブロックと各最も類似する検索ブロックとの平均一致距離（Ｄ）に応じて制御され、この平均一致距離は、計算されたオプティカルフロー分布のヒストグラムにより決定される、ことを特徴とする請求項５に記載の方法。
【請求項１０】
前記特定数は、参照ブロックと各最も類似する検索ブロックとの平均一致距離（Ｄ）に応じて制御され、この平均一致距離は、計算されたオプティカルフロー分布のヒストグラムにより決定される、ことを特徴とする請求項６に記載の方法。
【請求項１１】
前記第１、第２、第３のタイムスライスフレームは、それぞれ、バイナリビットマップのタイムスライスフレームを形成する、ことを特徴とする請求項１〜１０のいずれか一項に記載の方法。
【請求項１２】
前記第１、第２、第３のタイムスライスフレームは、それぞれ、マルチビットピクセルのタイムスライスフレームを形成する、ことを特徴とする請求項１〜１０のいずれか一項に記載の方法。
【請求項１３】
各第３のタイムスライスフレームの徹底的な検索を行って、最も類似する検索ブロックを見つける、ことを特徴とする請求項１〜１２のいずれか一項に記載の方法。
【請求項１４】
ダイアモンド検索により前記最も類似した検索ブロックを見つける、ことを特徴とする請求項１〜１２のいずれか一項に記載の方法。
【請求項１５】
外れ値を棄却するために十分な所定数の有効ピクセルを含む参照ブロック及び検索ブロックのみが比較され、有効ピクセルは、変更イベントが蓄積されたピクセルである、ことを特徴とする請求項１〜１４のいずれか一項に記載の方法。
【請求項１６】
前記参照ブロックと前記最も類似する検索ブロックとの間の距離が距離閾値を超える場合、最も類似する検索ブロックは外れ値として棄却される、ことを特徴とする請求項１〜１５のいずれか一項に記載の方法。
【請求項１７】
前記最新の変更イベントのいくつかは現在の第１のタイムスライスに蓄積されるが、スキップされることによってリアルタイムな性能を改善するための参照ブロックのセンタリングには使用されない、ことを特徴とする請求項１〜１６のいずれか一項に記載の方法。
【請求項１８】
前記方法の実施に用いられる装置がまだ前の変更イベントからのオプティカルフローの処理でビジー状態である場合、前記スキップが行われる、ことを特徴とする請求項１７に記載の方法。
【請求項１９】
ピクセル位置（ｘ，ｙ）、速度ベクトル（ｖｘ，ｖｙ）、特に、速度ベクトルの方向の速度を含むオプティカルフローイベントは、各参照ブロック及び最も類似する検索ブロックから計算される、ことを特徴とする請求項１〜１８のいずれか一項に記載の方法。
【請求項２０】
前記オプティカルフローイベントは、規則的に間隔を空けて、必要に応じて、サブサンプリングされたモーションフィールドに蓄積される、ことを特徴とする請求項１９に記載の方法。
【請求項２１】
基準ブロックと探索ブロックとの間の絶対距離の合計が並行して計算される、ことを特徴とする請求項１〜２０のいずれか一項に記載の、特に請求項２及び請求項４に記載の方法。
【請求項２２】
絶対距離の最小合計が並行して計算される、ことを特徴とする請求項１〜２１のいずれか一項に記載の、特に請求項２及び４に記載の方法。
【請求項２３】
左右のイベントベースの視覚センサ（ｌ、ｒ）からステレオ視を計算する方法であって、各イベントベースの視覚センサ（ｌ、ｒ）は複数のピクセルを含み、変更イベントストリームを出力するよう構成され、各変更イベントは、ピクセルの１つによって検出された輝度の変化に対応し、タイムスタンプと、輝度の変化を検出したピクセルのピクセルアドレスと、その輝度変化の兆候を示すパラメータとを含み、
各視覚センサ（ｌ、ｒ）について、変更イベントは、少なくとも２つのタイムスライスフレーム、つまり、時刻tから始まる第１の現タイムスライスフレーム（ｔ（ｌ）、ｔ（ｒ））と、時刻ｔ−ｄから始まる第２のタイムスライスフレーム（（ｔ−ｄ）（ｌ）、（ｔ−ｄ）（ｒ））に蓄積され、
左視覚センサ（ｌ）の変更イベントは、前記持続時間ｄにわたって、左視覚センサ（ｌ）の現在の第１のタイムスライスフレーム（ｔ（ｌ））に蓄積され、右視覚センサ（ｒ）の変更イベントは、前記持続時間ｄにわたって、右視覚センサ（ｒ）の現在の第１のタイムスライスフレーム（ｔ（ｒ））に蓄積され、
右視覚センサ（ｒ）の第２のタイムスライスフレーム（（ｔ−ｄ）（ｒ））の参照ブロック、右視覚センサ（ｒ）の現在の第１のタイムスライスフレーム（ｔ（ｒ））の最新の変更イベントのピクセルを中心とするピクセルを含む参照ブロックを、左視覚センサ（ｌ）の第２のタイムスライスフレーム（（ｔ−ｄ）（ｌ））の検索ブロックと比較して、距離メトリックにより前記参照ブロックに最も類似した検索ブロックを見つけ、左視覚センサ（ｌ）の第２のタイムスライスフレーム（（ｔ−ｄ）（ｌ））の更なる参照ブロック、左視覚センサ（ｌ）の現在の第１のタイムスライスフレーム（ｔ（ｌ））の最新の変更イベントのピクセルを中心とするピクセルを含む更なる参照ブロックを、右視覚センサ（ｒ）の第２のタイムスライスフレーム（（ｔ−ｄ）（ｒ））の更なる検索ブロックと比較して、距離メトリックにより前記更なる参照ブロックに最も類似した更なる検索ブロックを見つけ、
左視覚センサ（ｌ）の現在の第１のタイムスライスフレーム（ｔ（ｌ））が左視覚センサ（ｌ）の第２のタイムスライスフレーム（（ｔ−ｄ）（ｌ））になり、右視覚センサ（ｒ）の第１のタイムスライスフレーム（ｔ（ｒ））が右視覚センサ（ｒ）の第２のタイムスライスフレーム（（ｔ−ｄ）（ｒ））になり、左右の視覚センサ（ｌ、ｒ）の第１のタイムスライスフレーム（ｔ（ｌ）、ｔ（ｒ））がクリアされるよう４つのタイムスライスフレーム（ｔ（ｌ）、ｔ（ｒ）、（ｔ−ｄ）（ｌ）、（ｔ−ｄ）（ｒ））の交換を周期的かつ同時に行う方法。
【請求項２４】
イベントベースの視覚センサによってキャプチャされたシーンのオプティカルフローを計算する装置であって、複数のピクセルを含み、変更イベントストリームを出力するよう構成されたイベントベースの視覚センサを備え、各変更イベントは、ピクセルの１つによって検出された輝度の変化に対応し、タイムスタンプと、前記輝度の変化を検出したピクセルのピクセルアドレスと、その輝度変化の兆候を示すパラメータとを含み、
前記装置は、少なくとも３つのタイムスライスフレーム、つまり、時刻tから始まる第１の現タイムスライスフレーム（ｔ）と、時刻ｔ−ｄから始まる第２のタイムスライスフレーム（ｔ−ｄ）と、時刻ｔ−２*ｄから始まる第３のタイムスライスフレーム（ｔ−２＊ｄ）とに変更イベントを蓄積するよう構成され、ｄは、各タイムスライスフレームの持続時間であり、
前記装置は、前記持続時間ｄにわたって現在の第１のタイムスライスフレームに変更イベントを蓄積するようさらに構成され、
前記装置は、第２のタイムスライスフレーム（ｔ−ｄ）の参照ブロックであって、現在の第１のタイムスライスフレーム（ｔ）の最新の変更イベントのピクセルを中心とするピクセルを含む参照ブロックを、第３のタイムスライスフレーム（ｔ−２＊ｄ）の検索ブロックと比較して、距離メトリックによりその参照ブロックに最も類似した検索ブロックを見つけるようさらに構成され、
前記装置は、現在の第１のタイムスライスフレーム（ｔ）が第２のタイムスライスフレーム（ｔ−ｄ）になり、第２のタイムスライスフレーム（ｔ−ｄ）が第３のタイムスライスフレーム（ｔ−２＊ｄ）になり、第３のタイムスライスフレーム（ｔ−２＊ｄ）がクリアされて現在の第１のタイムスライスフレーム（ｔ）になるよう３つのタイムスライスフレーム（ｔ、ｔ−ｄ、（ｔ−２＊ｄ））の交換を周期的に行うようさらに構成されている、装置。
【請求項２５】
シーンをキャプチャする左右のイベントベースの視覚センサ（ｌ、ｒ）を備えた、ステレオ視を計算する装置であって、各イベントベースの視覚センサ（ｌ、ｒ）は、複数のピクセルを含み、変更イベントストリームを出力するよう構成され、各変更イベントは、ピクセルの１つによって検出された輝度の変化に対応し、タイムスタンプと、前記輝度の変化を検出したピクセルのピクセルアドレスと、その輝度変化の兆候を示すパラメータとを含み、
前記装置は、各視覚センサ（ｌ、ｒ）について、少なくとも２つのタイムスライスフレーム、つまり、時刻tから始まる第１の現在のタイムスライスフレーム（t（）ｌ、t（ｒ））と、時刻ｔ−ｄから始まる第２のタイムスライスフレーム（（ｔ−ｄ）（ｌ）、（ｔ−ｄ）（ｒ））に変更イベントをそれぞれ蓄積するよう構成され、
前記装置は、前記持続時間ｄにわたって、左視覚センサ（ｌ）の変更イベントを左視覚センサ（ｌ）の現在の第１のタイムスライスフレーム（ｔ（ｌ））に蓄積するようさらに構成され、前記装置は、前記持続時間ｄにわたって、右視覚センサ（ｒ）の変更イベントを右視覚センサ（ｒ）の現在の第１のタイムスライスフレーム（ｔ（ｒ））に蓄積するようさらに構成され、
前記装置は、右視覚センサ（ｒ）の第２のタイムスライスフレーム（（ｔ−ｄ）（ｒ））の参照ブロックであって、右視覚センサ（ｒ）の現在の第１のタイムスライスフレーム（ｔ（ｒ））の最新の変更イベントのピクセルを中心とするピクセルを含む参照ブロックを、左視覚センサ（ｌ）の第２のタイムスライスフレーム（（ｔ−ｄ）（ｌ））の検索ブロックと比較して、距離メトリックにより前記参照ブロックに最も類似した検索ブロックを見つけるようさらに構成され、前記装置は、左視覚センサ（ｌ）の第２のタイムスライスフレーム（（ｔ−ｄ）（ｌ））の更なる参照ブロックであって、左視覚センサ（ｌ）の現在の第１のタイムスライスフレーム（ｔ（ｌ））の最新の変更イベントのピクセルを中心とするピクセルを含む更なる参照ブロックを、右視覚センサ（ｒ）の第２のタイムスライスフレーム（（ｔ−ｄ）（ｒ））の更なる検索ブロックと比較して、距離メトリックにより前記更なる参照ブロックに最も類似した更なる検索ブロックを見つけるようさらに構成され、
前記装置は、左視覚センサ（ｌ）の現在の第１のタイムスライスフレーム（ｔ（ｌ））が左視覚センサ（ｌ）の第２のタイムスライスフレーム（（ｔ−ｄ）（ｌ））になり、右視覚センサ（ｒ）の第１のタイムスライスフレーム（ｔ（ｒ））が右視覚センサ（ｒ）の第２のタイムスライスフレーム（（ｔ−ｄ）（ｒ））になり、左右の視覚センサ（ｌ、ｒ）の第１のタイムスライスフレーム（ｔ（ｌ）、ｔ（ｒ））がクリアされるよう４つのタイムスライスフレームの交換を周期的かつ同時に行うようさらに構成されている、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的視覚センサ（ＤＶＳ）（例えば、特許文献１）などのイベントベースの視覚センサを使用してオプティカルフローを計算する方法及び装置に関するものである。特に、本発明は、ＦＰＧＡでＯＦを計算するイベントベースのブロックマッチングアルゴリズムに関するものである。
【背景技術】
【０００２】
以下では、このようなイベントベースの視覚センサは、イベントベースのカメラ又はＤＶＳとも呼ばれる。
【０００３】
オプティカルフロー（ＯＦ）の計算を高速かつ低電力で行うことは、ロボット工学において有用となり得る。イベントベースの視覚センサは、高速でまばらな出力を生成し、高いダイナミックレンジを備えているが、従来のＯＦアルゴリズムはフレームベースであり、そのようなイベントベースのカメラで直接使用することはできない。
【０００４】
以前のＤＶＳのＯＦ法は、高密度のテクスチャ入力ではうまく機能せず、論理回路での実装用には設計されていない。
【０００５】
オプティカルフロー（ＯＦ）の推定は、コンピュータ・ビジョンにおいて常に中心的なトピックであり、セグメンテーション、３Ｄ再構築、ナビゲーションで広く使用されている。昆虫や哺乳類の運動知覚を理解するために、神経科学の分野において最初に研究が行われた。コンピュータ・ビジョンにおいて、ＯＦは、カメラ／視覚センサの空間内の動きによって生じるモーションフィールドを表している。
【０００６】
特に、オブジェクト及び／又は視覚センサ／カメラが動いている（例えば、３Ｄ）シーンの画像シーケンスでは、（カメラ又は視覚センサ中心の座標系での）シーンの各点は、画像平面に投影された場合、速度ｄｒ（ｔ）／ｄｔを有する２Ｄパス、ｒ（ｔ）＝（ｘ（ｔ），ｙ（ｔ））を生成する３Ｄパスに沿って移動する。目に見えるすべての表面点の２Ｄ速度は、モーションフィールドと呼ばれる。オプティカルフロー計算の目的は、モーションフィールドの近似値を計算することである。
【０００７】
２つの周知の安価なオプティカルフローアルゴリズムとしては、Ｌｕｃａｓ−Ｋａｎａｄｅ法［１］と、Ｈｏｒｎ−Ｓｃｈｕｎｃｋ法［２］がある。多くのＯＦ法の中核は、可能性のあるフローを検索して、各画像又は特徴の位置で最も可能性の高いフローを選択することである。この高密度な画像ブロックによる検索には費用がかかり、埋め込みプラットフォームでリアルタイムに計算を行うのは困難である。
【０００８】
イベントベースの視覚センサは、通常のサンプル駆動ではなくデータ駆動である。通常サンプル駆動は、カメラが固定間隔で出力データを送信することを意味するため、一般にフレームベースのカメラとして示される。ただし、イベントベースの視覚センサ／カメラの出力は、固定サンプル間隔ではなく、輝度（又は光強度）の変化によって駆動される。従って、新しいＯＦ法の設計が必要とされている。
【０００９】
Ｂｅｎｏｓｍａｎ他［３］により、２Ｄイベントとタイムスタンプを３Ｄ空間に結合し、ＯＦがローカル平面フィッティングによって得られる時間曲面法が提案された。［４］では、イベントの短い２Ｄヒストグラムを収集し、それらの輝度の恒常性制約を解決するＬｕｃａｓ−Ｋａｎａｄｅ勾配ベース法が提案された。２０１５年には、Ｃｏｎｒａｄｔ［５］によって、ＡＲＭ７マイクロコントローラでのリアルタイムＤＶＳオプティカルフローアルゴリズムの実装が提案された。Ｂａｒｒａｎｃｏ［６］は、高周波テクスチャ領域に対してより高価な位相ベースの方法を提案した。［７］では、これらの方法のいくつかをＪａｖａ（登録商標）フレームワークｊＡＥＲ［８］に再実装し、指向エッジの飛行時間に基づいて最も初期のｊＡＥＲ法と比較した。その結論は、いずれの方法でも、シャープでまばらなエッジに対して同等の精度が得られたが、基礎となる仮定（例えば、滑らかな勾配や孤立したエッジ）に違反しているため、テクスチャ化された入力や低空間周波数の入力ではすべて失敗するというものであった。また、カメラの回転からグラウンドトゥルースのグローバルオプティカルフローを取得する統合カメラ慣性計測ユニット（ＩＭＵ）の使用を紹介し、ここで使用する２４０×１８０ピクセルＤＶＳカメラから標準データセットを公開した。既存の作業のほとんどは、ＰＣソフトウェアアルゴリズム［３］、［４］、［６］、［７］に基づいている。［５］は埋め込みシステムに基づいており、リアルタイムで動作するが、空間を介したカメラの並進ではなく、カメラの回転のみを特徴としており、イベントの直接の飛行時間を使用すると、テクスチャ化されたシーンとうまく機能し難くなり、またエッジの開口部の問題に悩まされることになる。
【００１０】
ビデオ技術では、ＯＦは動き推定（ＭＥ）と呼ばれ、ＭＰＥＧ−４やＨ．２６３［９］などのビデオ圧縮標準のビデオシーケンスの時間的冗長性を活用するのに広く使用されている。ＭＥのパイプラインにはブロックマッチングが含まれる。ブロックマッチングとは、フレーム間でピクセルの長方形ブロックを一致させて、最適な一致を見つけることである。ブロックマッチングは計算コストが高くなる。それが現在、専用ロジック回路に広く実装されている理由である。この問題に対処するため、ブロックマッチングに基づくロジックＭＥ実装の例をＳｈａｈｒｕｋｈ［９］に示す。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】米国特許第７，７２８，２６９号
【発明の概要】
【００１２】
上記に基づき、本発明が解決する問題は、動的視覚センサを使用してオプティカルフローを計算するための、特に、ステレオ視（ステレオビジョン）を計算するための効率的な方法及び装置を提供することである。
【００１３】
本発明のこれらの態様の好ましい実施形態は、従属請求項に記載され、及び／又は以下に説明される。
【００１４】
請求項１によれば、複数のピクセルを含み、変更イベントストリームを出力するよう構成されたイベントベースの視覚センサによってキャプチャされたシーンのオプティカルフローを計算する方法が開示され、各変更イベントは、ピクセルの１つによって検出された輝度の変化に対応し、（例えば、マイクロ秒の）タイムスタンプ（すなわち、変更イベントが発生した時間）と、輝度の変化を検出したピクセルのピクセルアドレスと、その輝度変化の兆候を示すパラメータ（例えば、バイナリ極性）とを含み、
変更イベントは、少なくとも３つのタイムスライスフレーム、つまり、時刻ｔから始まる第１の現タイムスライスフレーム、時刻ｔ−ｄから始まる第２のタイムスライスフレーム、時刻ｔ−２＊ｄから始まる第３のタイムスライスフレームに蓄積され、ｄは、スライス交換（例えば、回転）法に従って、特に異なる時間を含むそれぞれのタイムスライスフレームの持続時間であり、
変更イベントは、前記持続時間ｄにわたって現在の第１のタイムスライスフレームに蓄積され（現在のタイムスライスフレームは、変更イベントが発生する対応ピクセルでそれぞれの変化イベントを蓄積する）、第２のタイムスライスフレームの参照ブロック、現在の第１のタイムスライスフレームの最新の変更イベントのピクセルを中心とするピクセル（例えば、ピクセルの平方）を含む参照ブロックを、第３のタイムスライスフレームの検索ブロックと比較して、距離メトリックによりその参照ブロックに最も類似した検索ブロックを見つけ（特に、最新の変更イベントのピクセルに対する最も類似した検索ブロックの中心ピクセルの相対位置は、最新の変更イベントのピクセルの位置でのオプティカルフローを示し、特に、オプティカルフローの方向は、最新の変更イベントのピクセルから最も類似した検索ブロックの中心ピクセルを指す速度ベクトルによって与えられ、速度は、速度ベクトルの長さを第３のタイムスライスフレーム（ｔ−２＊ｄ）の終わりから第２のタイムスライスフレーム（ｔ−ｄ）までの持続時間ｄで割った値によって与えられる）、
現在の第１のタイムスライスフレーム（ｔ）が第２のタイムスライスフレーム（ｔ−ｄ）になり、第２のタイムスライスフレーム（ｔ−ｄ）が第３のタイムスライスフレーム（ｔ−２＊ｄ）になり、第３のタイムスライスフレーム（ｔ−２＊ｄ）がクリアされて現在の第１のタイムスライスフレーム（ｔ）になるよう３つのタイムスライスフレームの交換（例えば、回転）を周期的に行う。
【００１５】
特に、本発明は、新しいブロックマッチングに基づくイベントベースの視覚センサのＯＦアルゴリズムを提案する。このアルゴリズムは、ソフトウェアとＦＰＧＡの両方に実装されている。特に、一実施形態によれば、各イベントについて、９つの方向のうちの１つとして運動方向を計算する。特に、運動速度はサンプル間隔によって設定される。その結果、平均角誤差が以前の方法と比較して３０％改善できることが分かる。ＯＦは、イベントごとに０．２μ８の５０ＭＨｚクロック（１１クロックサイクル）のＦＰＧＡで計算でき、これはデスクトップＰＣで実行されるＪａｖａ（登録商標）ソフトウェア実装より２０倍速い。サンプルデータは、この方法がエッジ、まばらな特徴、及び密集したテクスチャで占められたシーンで機能することを示す。特に、イベントベースの視覚センサの各ピクセルは、ピクセルが生成する光電流に（例えば、単調に）関連する信号を生成する。この光電流は、各ピクセルに入射する光の強度に比例し、各ピクセルは、それぞれのピクセルに入射する光による各信号が、各ピクセルからの最後の変更イベント以降、第１の閾値よりも大きい量だけ増加するか、第２の閾値よりも大きい量だけ減少する場合にのみ変更イベントを出力する。
【００１６】
例えば、ピクセル（例えば、ピクセル回路）は、光電流を、各ピクセルの光電流の（例えば、自然な）対数である信号に変換するよう設計されている。しかしながら、ピクセル（又はピクセル回路）は、例えば、別の単調に変化する関数、例えば、平方根関数を光電流に適用する、又は、時間とともにゆっくり変化して応答を最適化する（例えば、応答の感度範囲を時間平均入力値を中心に最適に制御する）他の関数を適用することにより、光電流を信号に変換するよう設計されていてもよい。特に、各ピクセルの本質的な特徴は、光電流の変化を検出し、これらの変化に応じて変更イベントを放出することである。特に、そのすべてのピクセルから一定レートで信号を出力する標準的な視覚センサとは対照的に、これらの変更イベントは非同期イベントである。
【００１７】
本発明に係る方法の一実施形態によれば、上記距離メトリックは、参照ブロックピクセルと検索ブロックピクセルとの絶対差の合計である。
【００１８】
さらに、本発明に係る方法の一実施形態によれば、イベントベースの視覚センサの元のアドレス空間をサブサンプリングする複数のタイムスライスフレーム群が使用される。
【００１９】
さらに、本発明に係る方法の一実施形態によれば、上記第１、第２、第３のタイムスライスフレームの交換（例えば、回転）は、一定の時間間隔で行われる。
【００２０】
さらに、本発明に係る方法の一実施形態によれば、上記第１、第２、第３のタイムスライスフレームの交換（例えば、回転）は、各第１のタイムスライスフレームに蓄積された特定の、特に一定の合計イベントカウントで行われる。
【００２１】
さらに、本発明に係る方法の一実施形態によれば、上記第１、第２、第３のタイムスライスフレームの交換は、現在の第１のタイムスライスのサブエリアが特定数の変更イベントを蓄積する場合に行われる。
【００２２】
さらに、本発明に係る方法の一実施形態によれば、上記第１、第２、第３のタイムスライスフレームの交換（例えば、回転）は、最後のタイムスライスフレームの交換から統合された全運動が閾値を超える場合に行われる。特に、この統合された全運動は、累積測定オプティカルフローの要約統計量、例えば、測定ローカルオプティカルフローのベクトル和の長さ、又は、オプティカルフロー（速度）ベクトルの大きさの合計である。
【００２３】
さらに、本発明に係る方法の一実施形態によれば、上記第１、第２、及び第３のタイムスライスフレームの交換（例えば、回転）後の持続時間ｄは、参照ブロックと各最も類似した検索ブロックとの平均一致距離Ｄに応じて制御され、この平均一致距離は、計算されたオプティカルフロー分布のヒストグラムにより決定される。
【００２４】
さらに、本発明に係る方法の一実施形態によれば、上記総イベントカウントは、参照ブロックと各最も類似する検索ブロックとの平均一致距離Ｄに応じて制御され、この平均一致距離は、計算されたオプティカルフロー分布のヒストグラムにより決定される。
【００２５】
さらに、本発明に係る方法の一実施形態によれば、上記特定数は、参照ブロックと各最も類似する検索ブロックとの平均一致距離Ｄに応じて制御され、この平均一致距離は、計算されたオプティカルフロー分布のヒストグラムにより決定される。
【００２６】
さらに、本発明に係る方法の一実施形態によれば、上記第１、第２、第３のタイムスライスフレームは、それぞれ、バイナリビットマップのタイムスライスフレームを形成する。
【００２７】
さらに、本発明に係る方法の代替実施形態によれば、上記第１、第２、第３のタイムスライスフレームは、それぞれ、マルチビットピクセルのタイムスライスフレームを形成する。
【００２８】
さらに、本発明に係る方法の一実施形態によれば、各第３のタイムスライスフレームの徹底的な検索を行って、上記最も類似する検索ブロックを見つける。
【００２９】
さらに、本発明に係る方法の一実施形態によれば、ダイアモンド検索により上記最も類似した検索ブロックを見つける。
【００３０】
さらに、本発明に係る方法の一実施形態によれば、外れ値を棄却するために十分な所定数の有効ピクセルを含む参照ブロック及び検索ブロックのみが比較され、有効ピクセルは、変更イベントが蓄積されたピクセルである。
【００３１】
さらに、本発明に係る方法の一実施形態によれば、参照ブロックと上記最も類似する検索ブロックとの間の（例えば、距離メトリックによる）距離が距離閾値を超える場合、最も類似する検索ブロックは外れ値として棄却される。ここで、概念距離はブロックの非類似性に関係している、つまり、ブロックの非類似性の尺度である。特に、最も一致する参照ブロックと検索ブロックがあまりにも類似していない場合、一致は棄却され、フローイベントは出力されない。
【００３２】
さらに、本発明に係る方法の一実施形態によれば、上記最新の変更イベントのいくつかは現在の第１のタイムスライスに蓄積されるが、スキップされることによって本発明に係る方法のリアルタイムな性能を改善するための参照ブロックのセンタリングには使用されない。
【００３３】
さらに、本発明に係る方法の一実施形態によれば、本発明に係る方法の実施に用いられるハードウェア／装置がまだ前の変更イベントからのオプティカルフローの処理でビジー状態である場合、上記スキップが行われる。
【００３４】
さらに、本発明に係る方法の一実施形態によれば、ピクセル位置、速度ベクトル、特に、速度ベクトルの方向の速度を含むオプティカルフローイベントは、各参照ブロック及び最も類似する検索ブロックから計算され、特に、速度に関して、持続時間ｄからも計算される（上記も参照）。
【００３５】
さらに、本発明に係る方法の一実施形態によれば、上記オプティカルフローイベントは、規則的に間隔を空けて、必要に応じて、サブサンプリングされたモーションフィールドに蓄積される。
【００３６】
さらに、本発明に係る方法の一実施形態によれば、基準ブロックと探索ブロックとの間の絶対距離の合計が並行して計算される。
【００３７】
さらに、本発明に係る方法の一実施形態によれば、絶対距離の最小合計が並行して計算される。
【００３８】
本発明のさらなる態様によれば、左右のイベントベースの視覚センサからステレオ視を計算する方法が開示され、各イベントベースの視覚センサは複数のピクセルを含み、変更イベントストリームを出力するよう構成されている。各変更イベントは、ピクセルの１つによって検出された輝度の変化に対応し、（例えば、マイクロ秒の）タイムスタンプ（すなわち、変更イベントが発生した時間）と、輝度の変化を検出したピクセルのピクセルアドレスと、その輝度変化の兆候を示すパラメータ（例えば、バイナリ極性）とを含み、
各視覚センサについて、変更イベントは、少なくとも２つのタイムスライスフレーム、つまり、時刻ｔから始まる第１の現タイムスライスフレームと、時刻ｔ−ｄから始まる第２のタイムスライスフレームに蓄積され、
左視覚センサの変更イベントは、上記持続時間ｄにわたって、左視覚センサの現在の第１のタイムスライスフレームに蓄積され、右視覚センサの変更イベントは、上記持続時間ｄにわたって、右視覚センサの現在の第１のタイムスライスフレームに蓄積される（現在のタイムスライスフレームは、それぞれ、変更イベントが発生する対応ピクセルで各変更イベントを蓄積する）、
右視覚センサの第２のタイムスライスフレームの参照ブロック、右視覚センサの現在の第１のタイムスライスフレームの最新の変更イベントのピクセルを中心とするピクセル（例えば、ピクセルの平方）を含む参照ブロックを、左視覚センサの第２のタイムスライスフレームの検索ブロックと比較して、距離メトリックによりその参照ブロックに最も類似した検索ブロックを見つけ、左視覚センサの第２のタイムスライスフレームの追加参照ブロック、左視覚センサの現在の第１のタイムスライスフレームの最新の変更イベントのピクセルを中心とするピクセル（例えば、ピクセルの平方）を含む追加参照ブロックを、右視覚センサの第２のタイムスライスフレームの追加検索ブロックと比較して、距離メトリックによりその追加参照ブロックに最も類似した追加検索ブロックを見つけ、
左視覚センサの現在の第１のタイムスライスフレームが左視覚センサの第２のタイムスライスフレームになり、右視覚センサの第１のタイムスライスフレームが右視覚センサの第２のタイムスライスフレームになり、左右の視覚センサの第１のタイムスライスフレームがクリアされるよう４つのタイムスライスフレームの交換（例えば、回転）を周期的かつ同時に行う。
【００３９】
特に、ステレオ視を計算する方法は、オプティカルフローの計算を行うための本発明に係る方法に関連して説明された従属請求項の特徴／主題によってさらに特徴付けられ得る。
【００４０】
本発明のさらに別の態様によれば、オプティカルフローを計算する装置が開示されている。
【００４１】
イベントベースの視覚センサによってキャプチャされたシーンのオプティカルフローを計算する装置は、複数のピクセルを含み、変更イベントストリームを出力するよう構成されたイベントベースの視覚センサを備え、各変更イベントは、ピクセルの１つによって検出された輝度の変化に対応し、（例えば、マイクロ秒の）タイムスタンプ（すなわち、変更イベントが発生した時間）と、輝度の変化を検出したピクセルのピクセルアドレスと、その輝度変化の兆候を示すパラメータ（例えば、バイナリ極性）とを含み、
上記装置は、少なくとも３つのタイムスライスフレーム、つまり、時刻ｔから始まる第１の現タイムスライスフレームと、時刻ｔ−ｄから始まる第２のタイムスライスフレームと、時刻ｔ−２＊ｄから始まる第３のタイムスライスフレームとに変更イベントを蓄積するよう構成され、ｄは、各タイムスライスフレームの持続時間であり、上記装置は、この持続時間にわたって現在の第１のタイムスライスフレームに変更イベントを蓄積するようさらに構成され（現在のタイムスライスフレームは、変更イベントが発生する対応ピクセルでそれぞれの変化イベントを蓄積する）、
上記装置は、第２のタイムスライスフレームの参照ブロック、現在の第１のタイムスライスフレームの最新の変更イベントのピクセルを中心とするピクセル（例えば、ピクセルの平方）を含む参照ブロックを、第３のタイムスライスフレームの検索ブロックと比較して、距離メトリックによりその参照ブロックに最も類似した検索ブロックを見つけるようさらに構成され、
上記装置は、現在の第１のタイムスライスフレームが第２のタイムスライスフレームになり、第２のタイムスライスフレームが第３のタイムスライスフレームになり、第３のタイムスライスフレームがクリアされて現在の第１のタイムスライスフレームになるよう３つのタイムスライスフレームの交換（例えば、回転）を周期的に行うようさらに構成されている。
【００４２】
対応する実施形態では、本発明に係る装置は、本発明に係る方法の工程を実施するようさらに構成することができる。特に、本発明に係るオプティカルフロー計算方法に関する従属請求項／実施形態の主題は、本発明に係る装置をさらに特徴付けるのに使用可能である。以下に説明するステレオ視用の装置にも同じことが言える。
【００４３】
本発明のさらに別の態様によれば、シーンをキャプチャする左右のイベントベースの視覚センサを備えた、ステレオ視を計算する装置であって、各イベントベースの視覚センサは、複数のピクセルを含み、変更イベントストリームを出力するよう構成され、各変更イベントは、ピクセルの１つによって検出された輝度の変化に対応し、（例えば、マイクロ秒の）タイムスタンプ（すなわち、変更イベントが発生した時間）と、輝度の変化を検出したピクセルのピクセルアドレスと、その輝度変化の兆候を示すパラメータ（例えば、バイナリ極性）とを含み、
上記装置は、各視覚センサについて、少なくとも２つのタイムスライスフレーム、つまり、時刻ｔから始まる第１の現タイムスライスフレームと、時刻ｔ−ｄから始まる第２のタイムスライスフレームに変更イベントを蓄積するよう構成され、
上記装置は、上記持続時間ｄにわたって、左視覚センサの変更イベントを左視覚センサの現在の第１のタイムスライスフレームに蓄積するようさらに構成され、上記持続時間ｄにわたって、右視覚センサの変更イベントを右視覚センサの現在の第１のタイムスライスフレームに蓄積するようさらに構成され、
上記装置は、右視覚センサの第２のタイムスライスフレームの参照ブロック、右視覚センサの現在の第１のタイムスライスフレームの最新の変更イベントのピクセルを中心とするピクセル（例えば、ピクセルの平方）を含む参照ブロックを、左視覚センサの第２のタイムスライスフレームの検索ブロックと比較して、距離メトリックによりその参照ブロックに最も類似した検索ブロックを見つけるようさらに構成され、左視覚センサの第２のタイムスライスフレームの追加参照ブロック、左視覚センサの現在の第１のタイムスライスフレームの最新の変更イベントのピクセルを中心とするピクセル（例えば、ピクセルの平方）を含む追加参照ブロックを、右視覚センサの第２のタイムスライスフレームの追加検索ブロックと比較して、距離メトリックによりその追加参照ブロックに最も類似した追加検索ブロックを見つけるようさらに構成され、
上記装置は、左視覚センサの現在の第１のタイムスライスフレームが左視覚センサの第２のタイムスライスフレームになり、右視覚センサの第１のタイムスライスフレームが右視覚センサの第２のタイムスライスフレームになり、左右の視覚センサの第１のタイムスライスフレームがクリアされるよう４つのタイムスライスフレームの交換（例えば、回転）を周期的かつ同時に行うようさらに構成されている。
【図面の簡単な説明】
【００４４】
【図１】本発明に係る方法の実施に使用可能な装置／システム（ＯＦアーキテクチャ）を示す図である。
【図２】図１に示す装置の有限状態機械を示す図である。
【図３】特に１つの９×９ブロックマッチのハミング距離の実装に対するハミング距離計算回路を示す図であり、特に、９つの流れ方向に対して回路が９つある場合を示す。
【図４】最小距離計算回路、特に、９つではなく５つの入力に対して簡略化された、ＨＤＯのソートアルゴリズム実装ブロックを示す図であり、特に、ブロックが９つある場合を示す。
【図５】ＯＦ計算の結果を示す図であって、矢印はフローベクトルであり、その長さは速度（スライス期間ｄによって決定される）を表す。イベントベースの視覚センサのオンイベントは緑で、オフイベントは赤である。カラーホイールは、フローベクトルの方向の色を示す。各カラーホイール上の２Ｄグレースケールヒストグラムは、タイムスライス内のフローイベントの方向（ここでは９つの方向ビンを使用）の分布を示す。最も明るいビンは、グローバルモーションの可能性の高い方向を決定する。（Ａ）は、ｄ＝４０ｍｓの［７］のボックスシーンを示し、（Ｂ）は、ｄ＝１０ｍｓの下向きのイベントベースの視覚センサによって記録された舗装を示し、（Ｃ）は、ｄ＝３ｍｓの砂利エリアを示す。明確にするために、ダウンサンプリングによって１００個の変更イベントごとに１つのフローイベントを計算した。
【図６】ブロック半径とＡＡＥの関係を示す図である。
【図７】複数のスケールとイベントスキップによるイベント蓄積とＯＦ処理の実装を示す図である。
【図８】スライス回転のイベント蓄積をカウントするための画像空間のＡｒｅａＥｖｅｎｔＣｏｕｎｔ分割を示す図である。
【図９】イベント数制御を示す図である。
【図１０】ｃｏｎｆｉｄｅｎｃｅＴｈｒｅｓｈｏｌｄとｖａｌｉｄＰｉｘＯｃｃｕｐａｎｃｙによる外れ値棄却の例を示す図であり、（Ａ）は外れ値棄却を行わない場合を示し、（Ｂ）は外れ値棄却を行う場合を示す。
【図１１】さまざまな画像特徴のブロックマッチングの例を示す図であり、赤は参照ブロックのスライスピクセル、緑は検索領域のスライスピクセル、青いピクセルは、一致したブロックピクセルを示す。（Ａ）はエッジ、（Ｂ）はコーナー、（Ｃ）は孤立した特徴、（Ｄ）はテクスチャをそれぞれ示す。
【図１２】イベントスキップによって得られたマルチスケール・マルチビットフロー結果の例を示す図であり、シーンは、屋外シーンを歩行中にキャプチャされたものである。Ｎｓ＝３スケールを使用し、各スケールの検索距離はｒ＝４で、最大スライス値は＋１−１符号付き変更イベントであった。面積法を使用して、３２×３２ピクセルの面積を有するスライスを回転させ、カウントＮＲ＝４０００イベントの回転を行なった。この時点での最後のタイムスライス間隔は２１ｍｓであった。
【図１３】図１２のオプティカルフロー（ＯＦ）ヒストグラムの詳細と、図１２に表示された１０ミリ秒イベントパケットの各スケールでのフローイベントのカウントを示す図である。赤い丸及び青いボックスの中心にあるＯＦヒストグラムの中心はゼロモーションに対応する。青いボックス内の領域が灰色の場合、これらの方向には一致するフローイベントブロックはない。白い点は、ほとんどの一致が下と右にあることを示し、これは、図１２の右下を指すフローベクトルの優位性に対応している。赤い丸は、ＯＦブロックマッチの平均半径を示す。上記のアルゴリズムでは、スライス持続時間を制御するのに使用される。「スケールカウント：」の横の数字２４４  ７１  １０５は、フル解像度（ｓ＝０）から４解像度（ｓ＝２）でサブサンプリングされた解像度までの各スケールでのフローイベントのカウントである。このパケットの場合、３つのスケールすべてに最適なマッチがほぼ均等に分布している。この時点では、スライス蓄積ではなく、フロー処理のために１１２イベントがスキップされる。最新のスライス間隔は２１．４ｍｓであった。
【図１４】モーションフィールド（ＭＦ）出力の図１２のシーンの後半部分の例を示す図である。ＯＦイベントは、１６×１６ピクセル領域でＭＦにサブサンプリングされる。１４４ｍｓの時間間隔の各ローパスフィルタ時定数が経過した後に、拡散工程が適用される。下向きのフローベクトルが優勢であることから、画像の上部にある建物に向かって地面をカメラが移動していることがわかる。
【図１５】さらなるシーンを示す図である。（Ａ）は屋外で砂利の上を回転しているシーンを示し、（Ｂ）は屋内の廊下を歩いているシーンを示し、（Ｃ）は屋外で海岸沿いの砂の上を歩いているシーンを示し、（Ｄ）は電車の窓からのシーンを示す。すべてのシーンは、同一の３スケール、１１ピクセルのブロックサイズ、ダイアモンド検索、３ピクセルの検索距離を使用してキャプチャされたものである。スライスの最大値は、＋１−１である。ＡｒｅａＥｖｅｎｔＮｕｍｂｅｒ法により、フィードバック制御下でスライスイベント数を設定した。
【発明を実施するための形態】
【００４５】
本発明のさらなる特徴、利点及び実施形態について、図面を参照して以下に説明する。
【００４６】
イベントベースの視覚センサ又はＤＶＳの出力は、輝度変化イベントのストリームである。各変更イベントには、例えば、マイクロ秒のタイムスタンプと、（変更イベントを検出したピクセルの）ピクセルアドレスと、輝度変化の兆候を示すパラメータ（例えば、バイナリの極性）とが含まれる。各イベントは、ピクセルからの最後のイベントから約１５％の輝度変化を表す。ＦＰＧＡ実装の結果が利用できる最も単純な実装では、最小のロジックとメモリサイズを実現するために、イベントは、特に上記のパラメーター（イベント極性）を無視して、バイナリイメージとしてタイムスライスフレーム（又はタイムスライスメモリ）に蓄積される。ここでは、これらのビットマップフレームをスライスと呼ぶ。ブロックは、到着したイベントの場所を中心とした正方形である。マッチングは、距離メトリックに基づいている。特に、一実施形態によれば、距離メトリックとしてハミング距離（ＨＤ）が使用される。ＨＤは、異なるビット数のカウントである。ビットマップの場合、ＨＤはよく知られている絶対差の和（ＳＡＤ）と同じである。
【００４７】
ハードウェア評価システム／装置は２つの部分に分かれている。１つはデータのシーケンスと監視用で、もう１つはアルゴリズムの実装用である。一方では、セビリア大学が設計したモニターシーケンサーボード［１３］が使用される。このシーケンサは、イベントベースの標準データセット［７］をＯＦのＦＰＧＡに送信されるリアルタイムのハードウェアイベントに変換する。ＯＦ計算中に、モニターはＯＦイベントを収集し、ＵＳＢ経由でｊＡＥＲに送信してレンダリングと分析を行う。このようにして、ＯＦアルゴリズムのソフトウェア処理とハードウェア処理を比較できる。本明細書で説明する実施例／実施形態のフレームワークでは、事前に記録されたデータを使用することで、ソフトウェア実装とハードウェア実装の体系的な比較が可能となる。
【００４８】
本発明に係る装置／ＯＦアーキテクチャの実施形態を図１に示す。これには、有限状態機械（ＦＳＭ）、ランダムアクセスメモリブロックメモリ（ＲＡＭ）、回転制御ロジックの３つの主要なモジュールが含まれている。ＦＳＭのアーキテクチャを図２に示す。このＦＳＭは、データ受信モジュール、ＯＦ計算モジュール、データ送信モジュールの３つの部分から構成されている。データ送信モジュールとデータ受信モジュールは、モニターシーケンサーと通信を行う。ＯＦモジュールについては、以下でさらに詳しく説明する。
【００４９】
３つの２４０×１８０ピクセルの変更イベントビットマップスライスがＲＡＭに保存される。これらのスライスは、タイムスライスメモリとも呼ばれ、従来のカメラのバイナリイメージフレームに似ているが、イベントベースの視覚センサ（ＤＶＳなど）の場合、スライス間隔を任意に選択できる。１つは時刻ｔから始まる現在の収集タイムスライスであり、他の２つは時刻ｔ−ｄ（若いタイムスライスメモリ）とｔ−２＊ｄ（古いタイムスライスメモリ）から始まる過去２つのスライスである。時間間隔ｄはスライス持続時間、例えば、１０ｍｓである。特に、一例によれば、データセットのスローモーションに合わせてｄ＝１００ｍｓが使用された。ｔ−ｄの間隔で、回転制御ロジックは３つのスライスを回転（又は交換）する。ｔスライスは新しいデータを蓄積する。空で始まり、徐々にイベントを蓄積するため、過去のスライスとのマッチングには使用できない。２つの過去のスライスｔ−ｄ及びｔ−２＊ｄはＯＦに使用されるが、ＯＦ計算はｔスライスに格納された各イベントの場所で実行されるため、これらのイベントによって駆動される。スライスはＦＰＧＡのブロックＲＡＭに保存される。このＲＡＭの合計サイズは２４０×１８０×３で、イベントベースの視覚センサのピクセル配列サイズに一致し、ザイリンクスのＩＰコアによって生成される。
【００５０】
一実施形態によれば、本発明に係るオプティカルフローアルゴリズム／オプティカルフロー法をまとめると以下のようになる。
【００５１】
イベントが到着すると、タイムスライスｔ−ｄからの単一の参照ブロックとタイムスライスｔ−２＊ｄからの９つのブロックがＨＤモジュールに送信されて、距離が計算される。この参照ブロックと検索領域は、変更イベントのｘ、ｙ位置（すなわち、最新の変更イベントが検出されたピクセル位置）を中心としている。現在のＦＰＧＡ実装では、一実施形態によれば、ブロックは９×９個のピクセルを含む。ｔ−ｄタイムスライスの場合、一実施形態によれば、１つの中央ブロックのみが基準として使用される。本発明に係るアルゴリズム／方法は、ｔ−２＊ｄタイムスライス上の最も類似したブロックを見つける。ＯＦの輝度恒常性の仮定によると、実際のＯＦに最もよく一致するブロックのｔ−２＊ｄタイムスライスに同様のブロックが表示されるはずである。特に、このアルゴリズムは、現在のイベントアドレスの８つの近傍を中心とする８つのブロックと参照を中心とする１つのブロックを検索し、最小距離のブロックを選択する。
【００５２】
１．ハミング距離：１つのハミング距離（ＨＤ）ブロックの実装を図３に示す。合計８１個のＸＯＲ論理ゲートが、スライス上の対応するピクセルから入力を受け取る。ＸＯＲ出力を合計してＨＤを計算する。絶対差の合計（ＳＡＤ）は、後でアルゴリズムのより一般的な形式で使用される。
【００５３】
２．最小距離の計算：アルゴリズムの最後のステップは、最小距離の候補を見つけることである。新規の最小回路の一部を図３に示す。最小距離方向のインデックスを出力する並列実装である。例えば、５つのデータから最小値を見つける必要がある場合、つまり、ＨＤＯ−４（図４からの出力）の場合、回路は５つの部分に分割できる。図３の最初の部分は、ＨＤ０を他のすべてのデータと比較し、データＯがＨＤ１−４よりも大きくなる回数のカウントを出力する。他の４つの部分は同じように実装され、それらの部分はすべて同時に計算される。最後に、合計がゼロの部分が最小候補である。従って、最小距離候補は１クロックサイクルで決定される。
【実施例】
【００５４】
ザイリンクスのＳｐａｒｔａｎ６ファミリチップｘｃ６ｓｌｘ１５０ｔを使用して、本発明に係るアルゴリズム／方法を実装した。１８４３０４個のフリップフロップと９２１５２個のＬＵＴ、４ＭＢのブロックメモリを備えている。実装されたＯＦデザインは、フリップフロップの０．９％、ＬＵＴの５％、ブロックＲＡＭの５％を占有する。テストデータセットには、［７］のイベントベースのオプティカルフロー標準データセットが使用され、評価方法とグラウンドトゥルースも得られた。さらに、粗いテクスチャと密なテクスチャの例には、追加の自然のシーンデータも使用された。
【００５５】
３つのサンプルデータセットのテストが行われた。それらはすべて実際のＤＶＳデータである（図５参照）であって、エッジ、まばらな点、高密度テクスチャにそれぞれ対応するボックスの平行移動（Ａ）、舗装（Ｂ）、砂利（Ｃ）である。ボックスのシーンには、前景にボックスがあり、背景にクラッタがあり、カメラは左にパンし、主に拡張エッジが全体的に右方向へ平行移動する。舗装データセットでは、カメラは下向きで、手で運ばれ、フローは右下を指す。舗装の欠陥によって、まばらな特徴が生じる。砂利のデータセットは外部に記録され、密度の高いテクスチャを有し、東向きの移動である。
【００５６】
ブロックマッチングのＯＦ結果を図５に示す。各シーンでは、ほとんどのベクトルが、ボックスの平行移動の場合は東を、舗装シーンの場合は南東を、砂利シーンの場合には東を正しく指していることがわかる。エラーは、主に、イベントベースの視覚センサのノイズや拡張エッジの開口の曖昧さが原因である。
【００５７】
精度分析に関して、［７］では、従来のＯＦに使用される同様のメトリクスに基づいて、イベントベースのＯＦ精度を計算する２つの方法を提案した。１つは平均終点誤差（ＡＥＥ）と呼ばれ、もう１つは平均角度誤差（ＡＡＥ）である。ＡＡＥでは、推定フローの方向の誤差を測定し、ＡＥＥには速度誤差が含まれる。これらの２つの方法はすでにｊＡＥＲ［８］で実装されている。純粋なカメラ回転からのＩＭＵデータとレンズ焦点距離を使用して、各変更イベントのグラウンドトゥルースＯＦを計算する。シーケンサの出力データにはＩＭＵデータがないため、ＯＦ精度はＰＣ実装によって測定された。ＦＰＧＡとＰＣ間のアルゴリズムパイプラインは同一であるため、精度には影響を与えない。その結果も［７］と比較され、イベントベースのＬｕｃａｓ−Ｋａｎａｄｅ及び局所面アルゴリズムの２つの変形例が選択された。すべてのアルゴリズムのエラーを以下の表Ｉに示す。ＰＭｈｄは、ＨＤメトリックによるブロックマッチングアルゴリズムを表す。ブロック半径とＡＡＥの関係を図６に示す。
【００５８】
【表１】
2020522067.tif 000002
【００５９】
さらに、ソフトウェアの時間計算量は、ブロックサイズに応じて二次的に増加するのに対し、ＦＰＧＡでは直線的にしか増加しない。アルゴリズムの処理時間には、３つのスライスからのデータの読み取り、ＨＤ計算、最小値の検索の３つの部分が含まれる。複数のデータを１つのＲＡＭから同時に読み取ることはできないため、ＰＣ上のＦＰＧＡ実装とソフトウェア実装の両方で、ＲＡＭからのデータの読み取りに線形時間がかかる。ただし、後者の２つの部分はＦＰＧＡで一定の時間（２クロックサイクル）を要し、ＰＣでは２次時間を要する。要約すると、ＦＰＧＡでの処理時間は（ブロック次元＋２）サイクルである。例によれば、ＦＰＧＡは５０ＭＨｚの周波数で動作し、ブロック次元は９である。従って、アルゴリズム全体では、変更イベントごとに２２０ｎｓ、つまり０．２２μ８しかかからない。ＰＣでは、Ｊａｖａ（登録商標）実装がアルゴリズムを実行するのには、イベントごとに４．５μ８かかる。ＦＰＧＡでの実装は、ＰＣでの実装より２０倍高速である。例によれば、実装では単一ポートＲＡＭを使用するが、複数のバンクを使用することでさらなる高速化が可能である。
【００６０】
本発明によれば、特にＦＰＧＡ上でリアルタイムにイベントベースのオプティカルフローを推定する新しい方法が提供される。ハミング距離のソフトウェア計算コストは、ブロックサイズが増加するにつれて二次的に増加するが、ＦＰＧＡでは、ブロック内のすべてのビットを同時に計算できるため、すべてのブロックサイズで一定の時間がかかる。これにより、ＦＰＧＡ実装の全体的な計算時間が大幅に短縮され、ソフトウェア実装よりも２０倍高速になる。現在の実装では、すべての到着イベントが処理される（わずか５０ＭＨｚのごく平均的なＦＰＧＡクロックを使用して、最大５Ｍｅｐｓの入力イベントレートの処理を可能にする）。ただし、図５（Ｃ）に示すように、すべての変更イベントを処理する必要はない。ＯＦ計算のダウンサンプリングが行われるが、イベントベースの視覚センサ（ＤＶＳなど）の変更イベントは、依然としてフローを推定する場所を示す。
【００６１】
上述の本発明の一般的な実施形態には、さらなる変更を加えることができる。対応する実施形態を以下に説明する。特に、３つの改善点がある。現在の実装では、フローの方向のみを推定し、速度は推定しない。速度の測定にはさらなる検索距離が必要となり、効率的な検索を行うための周知のアルゴリズムが存在する［１４］。次に、スライスに収集されたイベントシーケンスは通常、ノイズのために異なる長さを有し、ＨＤがやや曖昧であるため、他の距離メトリックも使用できる［１５］。最後に、所望のサンプルレートで処理可能なイベントベースの視覚センサ（ＤＶＳ）のイベント出力のユニークな機能をより活用するために、スライス期間にフィードフォワード及びフィードバック制御を実行することができる。この機能は、サンプルレートと処理速度が密接に結びついているフレームベースのビジョンとは異なる重要な特徴である。イベントベースの視覚センサ（ＤＶＳなど）のブロックマッチング法が可能になり、検索距離が小さく、適度なハードウェアリソースのみでも高いＯＦ精度を実現する。
【００６２】
さらなる実施形態によれば、マルチビットタイムスライスを使用することができる。
【００６３】
バイナリビットマップタイムスライスを使用する場合の制限は、ビットマップピクセル位置に最初のイベントが蓄積された後にピクセル値が飽和することである。また、イベントベースのセンサのイベント極性（ＯＮ／ＯＦＦ）を無視するため、逆極性のエッジを誤って一致させてしまう可能性がある。
【００６４】
改善点としては、マルチビット符号付きタイムスライスを使用することである。イベントは前述のようにピクセルメモリに蓄積されるが、ピクセル値は（必要に応じて）符号付きで、値の範囲を取るｎビット表現を有する、つまり、ｎ＝２ビットの場合、符号なし範囲は０、１、２、３となる。符号付き２ビットバージョンの場合、２の補数バイナリ表現によるｎ＝２の範囲は、バイナリ値１１、１０、００、０１でエンコードされた２、１、０、１である。ｎ＝２ビットの場合、１つのＯＮイベントと３つのＯＦＦイベントがピクセルごとに蓄積されると、結果として得られるスライスピクセルの値は符号なしの場合は３、符号付きの場合は−２になる。オーバーフローによってカウントが最低値に戻ったりせず、最大絶対値のままとなるよう、マルチビット値の更新には、飽和演算を使用することが好ましい。
【００６５】
マルチビットタイムスライスのメモリコストは、ｎに正比例する。ＸＯＲゲートが全加算器に置き換えられ、参照ブロックと検索ブロック領域間の絶対差の合計（ＳＡＤ）が計算されるため、演算コストもｎに比例する。
【００６６】
本発明に係る方法／システムのさらなる実施形態によれば、拡張され最適化された検索を使用することができる。
【００６７】
前述の実装では、ターゲットブロックとその８つの最近傍のみで検索が行われた。検索範囲をより大きな距離範囲ｒに拡張することで改善される。上記の実装では、ｒ＝１である。ｒを大きくすると、より細かい範囲の動きベクトルの角度と速度を計算できる。（２ｒ＋１）２の検索位置を徹底的に検索することは可能であるが、２ステップ検索（ＴＳＳ）やダイアモンド検索（ＤＳ）などの周知の方法によって必要な労力が大幅に削減される。ＤＳアルゴリズムのソフトウェア実装では、ｒ＝１２、ブロック寸法が９（ｒ＝５）の場合、ＤＳを使用することで、フル検索の場合の３７７μ８／βνβηiからＤＳを使用した場合の１３μ８／βνβηiへとイベント処理時間が２９倍短縮される。
【００６８】
本発明に係る方法／システムのさらなる実施形態によれば、マルチスケール空間タイムスライスを使用することができる。
【００６９】
これまでに説明した方法の制限は、マッチングでは基準位置の周りの平方半径ｒの空間範囲しかカバーできないため、方法の動的速度範囲が制限されることである。検索時間を直線的に増やすだけで検索範囲を広げる方法の１つとしては、マルチスケールピラミッドを使用することである。この方法では、変更イベントがタイムスライスのスタックに蓄積される。スタック内の各スライスは、ｘ及びｙ方向の元のイベントアドレスを、前のスケールよりも２倍だけサブサンプリングする。つまりスケールｓがタイムスライスの空間スケールであり、ｓ＝０が元のフル解像度スケールである場合、まずはイベントｘ及びｙアドレスをｓビットだけ右にシフトし、結果のイベントをスケールｓスライスに蓄積することにより、イベントがスケールｓに蓄積される。例えば、ｓ＝１スケールスライスでは、各ピクセルは、フル解像度の元のピクセルアドレス空間の２×２ピクセル領域からイベントを蓄積する。従って、各イベントを蓄積する特定の動作は、現在のリファレンス実装から取られた次のＪａｖａ（登録商標）コードスニペットによって行われる。
【００７０】
private void accumulateEvent(PolarityEvent e) {／／ e is the DVS event
for (int s = 0; s < numScales; s++) { ／／iterate over all scales
final int xx = e.x ≫ s; ／／ subsample the x address
final int yy = e.y ≫ s; ／／ subsample the y address
int cv = currentSlice[s][xx][yy]; ／／find current value of slice at scale s
cv += rectifyPolarties ? 1 : (e. polarity == PolarityEvent.Polarity.On ? 1 : -1); ／／ optionally, rectify the polarity
if (cv > sliceMaxValue) { ／／ apply saturating math to limit range of result slice value to maximum allowed
cv = sliceMaxValue;
} else if (cv < -sliceMaxValue) {
cv = -sliceMaxValue;
}
currentSlice[s][xx][yy] = (byte) cv; ／／store the new slice value in the slice
}
}
【００７１】
図７に、これらの複数のスケールを使用して、各スケールでサブサンプリングされたスライスを使用して範囲ｒまで検索を実行する方法を示す。そして、最終結果は、すべてのスケールで最も一致するブロックから選択することができる。検索範囲全体が半径まで拡張される。
【００７２】
複数の空間スケールを使用する代償としては、スライスを保存するためのメモリの増加と、これらのスケールに対するさらなる検索が挙げられる。並列ハードウェアユニットは、個別のメモリブロックを使用するため、すべてのスケールを同時に検索できる。この利点としては、スケールｓでの検索が２Ｕｓｒの画像空間の半径をカバーすることである。総コストは、ロジック又は時間の１ファクター（ｎｓ＋１）だけ増加する。例えば、ｎｓ＝３を使用すると、検索の線形範囲は８倍になり、検索領域は６４倍になるが、面積又は時間のコストはたった３倍である。
【００７３】
複数のスケールを使用すると、動きが遅い場合により細かい速度と角度分解能が得られるという利点もある。従って、速度が低い場合、フロー推定の精度が維持される。
【００７４】
サブサンプリングされたタイムスライスは、元のフルスケールスライスよりも１ピクセルにつきより多くのイベントを収集するため、マルチビット技術とマルチスケール技術を組み合わせることが好ましい。これにより、より簡単に飽和が可能となる。実際には、図１１及び図１２のデータ例に示すように、３つのスケールを使用する場合、飽和の防止には、最大１６個のイベントを蓄積できるマルチビットビット解像度ｎ＝４の適度な値で十分であることがわかった。
【００７５】
さらに、適応スライス持続時間に関して、ビットマップスライスを蓄積するための３つのソフトウェア法が実装されている。これらの方法は、ＣｏｎｓｔａｎｔＤｕｒａｔｉｏｎ、ＣｏｎｓｔａｎｔＥｖｅｎｔＮｕｍｂｅｒ、ＡｒｅａＥｖｅｎｔＮｕｍｂｅｒと示されている。現在のハードウェアＦＰＧＡデザインでは、ＣｏｎｓｔａｎｔＤｕｒａｔｉｏｎ法しか実装されていないが、その他の方法もハードウェアへの実装が容易である。
【００７６】
ＣｏｎｓｔａｎｔＤｕｒａｔｉｏｎ：ここでは、スライスは期間ｄのタイムスライスに均一に蓄積される。この方法は、従来のフレームベースの方法に最も密接に対応している。シーンの動きが速すぎる場合、スライス間の移動が大きすぎて、指定された検索距離を使用できない可能性があるという欠点がある。動きが遅すぎると、特徴がスライス間で十分に移動せず、フロー速度と角度分解能が低下する場合がある。
【００７７】
ＣｏｎｓｔａｎｔＥｖｅｎｔＮｕｍｂｅｒ：ここでは、変更イベントＫの合計総数が固定されるまでスライスが蓄積される。Ｋが大きい場合、スライスのｄは大きくなる傾向がある。しかし、シーンがより速く移動すると、変更イベントの割合も増加し、固定Ｋの場合はｄが減少する。従って、ＣｏｎｓｔａｎｔＥｖｅｎｔＮｕｍｂｅｒ法は、ｄをシーン全体の平均的なダイナミクスに自動的に適合させる。
【００７８】
ＡｒｅａＥｖｅｎｔＮｕｍｂｅｒ：ＣｏｎｓｔａｎｔＥｖｅｎｔＮｕｍｂｅｒ法の欠点は、その全体的な性質である。均一に高いテクスチャを持つシーンに対してＫが適切に設定されている場合、孤立した特徴を持つシーンで同じＫを使用すると、全体的な変更イベントレートが低くなるため、ｄがはるかに長くなる。従って、すべてのシーンで最適なマッチングを行うのに適切なｄが維持されない。
【００７９】
この問題に対処する実用的な方法は、ＡｒｅａＥｖｅｎｔＮｕｍｂｅｒと呼ばれる。ここでは、センサーピクセルアレイ全体が粗いブロックに細分される。２ＤメモリアレイＡは、ブロックごとのイベントカウントをトラックする。Ａは、スライスの回転後にゼロになる。Ａの任意の要素がＫ個のイベントを蓄積すると、スライスが回転し、回転時間ｄが記録されて速度の計算が可能になる。このエリアブロック配置の例を図８に示す。ここで、画像領域は、２６×２６＝６４×６４ピクセル領域を意味するａｒｅａＥｖｅｎｔＮｕｍｂｅｒＳｕｂｓａｍｐｌｉｎｇ６で配列Ａに分割されている。任意のサブエリア（Ａの要素）が（ｓｌｉｃｅＥｖｅｎｔＣｏｕｎｔ(スライスイベントカウント）プロパティのソフトウェアＧＵＩに示されているように）１４３２個のイベントを蓄積すると、スライスは回転／交換される。この方法で計算された最後のスライス間隔は、この例では、ｄ＝２１ｍｓであった。
【００８０】
ＡｒｅａＥｖｅｎｔＮｕｍｂｅｒ法を使用すると、スライスの回転／交換は変更イベントの蓄積によってデータ駆動されるが、この方法では、シーンの最速移動領域に一致するようにスライスの持続時間を調整する。これにより、スライス間で一致するには動きが大きすぎるアンダーサンプリングが防止される。
【００８１】
ＡｒｅａＥｖｅｎｔＮｕｍｂｅｒのハードウェアコストは、通常のスライスの蓄積に類似している。粗いサブサンプリングされたスライスへの蓄積とほぼ同じであるが、イベントの極性は無視でき、エリアメモリレジスタは、通常、実際には１ｋ〜１Ｏｋ個のイベントの値をとる非常に大きな最大イベントカウントＫに対応できる幅でなければならない。ただし、これらの幅の広いレジスタは、要素の数がはるかに少ないためオフセットよりもはるかに多くなる。例えば、図８では、４ビットのマルチビットスライス値を使用するフル解像度スライスメモリの３４６×２６０×４＝３６０ｋビットと比較して、たった５×５×１６＝４００ビットでＡが形成される。従って、Ａはスライスメモリの９０分の１のメモリしか必要としない。
【００８２】
スライス持続時間のフィードバック制御：異なるシーンに応じてスライス時間又はイベント数を自動的に調整する別の方法は、フィードバック制御によって実行可能である。本実施形態では、オプティカルフロー分布ヒストグラムを作成して、現在のスライスパラメータの精度を測定する。ヒストグラムの加重平均一致距離Ｄが計算される。Ｄがｒ／２よりも大きい場合、タイムスライスが長すぎるため、スライス持続時間又はイベント数が減少していることを意味する。それ以外の場合、平均一致距離がｒ／２より小さい場合、スライス持続時間が短すぎることを示し、スライスの継続時間又はイベント数が増加する。このフィードバック制御法は、さらなるポリシーステップを用いて安定性を確保することで改善できる。さもなければ、非常に長いスライス持続時間は、ゼロモーション（小さな一致距離）への検索アルゴリズムのバイアスの結果である非常に短い一致距離のＯＦ結果をもたらす可能性がある。実際には、アプリケーション特有の制限内であるスライス持続時間の範囲を制限することにより、安定性を確保することができる。
【００８３】
以下のＪａｖａ（登録商標）コードスニペットは、このアルゴリズムの１つの実装の特定のステップを示す。
【００８４】
private void adaptSliceDuration() {
{
／／ measure last hist to get control signal on slice duration
／／ measures avg match distance.
float radiusSum = 0;
int countSum = 0;
final int totSD = search Distance ≪ (numScales - 1 );
for (int xx = -totSD; xx <= totSD; xx++) {
for (int yy = -totSD; yy <= totSD; yy++) {
int count = resultHistogram[xx + totSD][yy + totSD];
if (count > 0) {
final float radius = (float) Math.sqrt((xx *xx) + (yy * yy));
countSum += count;
radiusSum += radius * count;
}
}
}
if (countSum > 0) {
avgMatchDistance = radiusSum ／ (countSum); ／／ compute average match distance from reference block
}
switch (sliceMethod) {
case ConstantDuration:
int durChange = (int) (errSign *adapativeSliceDurationProportionalErrorGain * sliceDurationUs);
setSliceDurationUs(sliceDurationUs + durChange);
break;
case ConstantEventNumber:
case AreaEventNumber:
setSliceEventCount(Math.round(sliceEventCount * (1 + adapativeSliceDurationProportionalErrorGain *errSign)));
}    }
}
【００８５】
図９のデータは、６４×６４ピクセルの領域を使用するＡｒｅａＥｖｅｎｔＮｕｍｂｅｒフィードバック制御法によるイベント数制御の例を示す。シーンには、時間の経過とともにあらゆる速度が見られた。青いトレースは、平均ＯＦ一致距離を示す。イベント数のフィードバック制御によって、約０．５の（正規化された）平均値で平均一致距離が保持された。オレンジ色のトレースはイベント数を示す。イベント数の定常状態（正規化）値は約０．２３である。パケット１８００前後では、イベント数は手動で大きな値に摂動され、結果として平均一致距離が減少した。イベント数は、ただちに定常状態の値に戻る。パケット１９００付近では、イベント数が手動で小さな値に減らされ、一致距離が非常に小さくなり、再び定常状態の値に戻る。このデータは、平均速度に大きなばらつきがあるデータのイベント数制御の安定性を示す。
【００８６】
精度を改善するために、本発明のさらなる実施形態によれば、外れ値棄却を採用することで、マッチング品質が低いイベントを除外する。特に、外れ値の棄却には２つのパラメータが用いられる。
【００８７】
１つのパラメータはｖａｌｉｄＰｉｘＯｃｃｕｐａｎｃｙと呼ばれ、比較する２つのブロック内の有効ピクセルの割合を決定する。有効ピクセルとは、変更イベントが蓄積されたピクセルを指す。このパラメータを設定する理由は、ブロックがあまりにもまばらであり、距離メトリックが無意味な結果になることがあるためである。十分な有効ピクセルで満たされたブロックを計算するだけで、誤解を招く結果を排除することができる。参照ブロック又は検索ブロックの占有率が不十分な場合、ＯＦ一致距離の結果は最大値に設定される。
【００８８】
もう１つの外れ値棄却パラメータは、ｃｏｎｆｉｄｅｎｃｅＴｈｒｅｓｈｏｌｄと呼ばれる。参照ブロックと候補ブロックとの間の最小距離（類似度）は、ｃｏｎｆｉｄｅｎｃｅＴｈｒｅｓｈｏｌｄよりも小さく（大きく）する必要があり、そうでない場合、ＯＦイベントは外れ値と見なされて棄却される。従って、最適な一致検索ブロックは実際には不十分な一致である可能性があり、ｃｏｎｆｉｄｅｎｃｅＴｈｒｅｓｈｏｌｄによって一致距離が大きすぎる場合に最適な一致を棄却することができる。
【００８９】
これらのパラメータの効果を、図１０のデータ例において、黒のバーが右上に移動する単純な例で示す。フローの結果は、これらの外れ値の棄却基準により、明らかにはっきりとした結果となる。
【００９０】
いずれの外れ値棄却メカニズムも、ハードウェアで簡単に実装できる。例えば、一実施形態によれば、有効ピクセル占有率は、両方のオペランドがゼロの場合に大きな値を出力するピクセル減算ユニットによって実現することができる。信頼閾値は、長すぎる距離にフラグを立てる最終的なベストマッチ出力結果のコンパレータによって実現できる。
【００９１】
さらに、オプティカルフローのすべての到着変更イベントを処理する必要はない。現在のタイムスライスで収集された変更イベントは、新しい視覚データがある場所の指標である。参照ブロックの中心位置を設定する場合を除いて、実際にはマッチングの計算には使用されない。従って、これらのイベントを現在のタイムスライスに蓄積できるが、ハードウェア又はソフトウェアが前のイベントの処理でビジー状態であるか、イベントパケットを処理するためのタイムバジェットを超過した場合、これらのイベントの処理フローをスキップすることができる。
【００９２】
従って、一実施形態によれば、適応型イベントスキップが実行される。ここでは、ｓｋｉｐＰｒｏｃｅｓｓｉｎｇＥｖｅｎｔＣｏｕｎｔと呼ばれるパラメータにより、スキップされたイベント数を保存する。この数は適応的に変更される。イベントスキップアルゴリズムは以下のように設計されている。
【００９３】
１．平均フレーム／秒（ＦＰＳ）は、アプリケーションから計算される。
２．得られたＦＰＳが低すぎる場合、ｓｋｉｐＰｒｏｃｅｓｓｉｎｇＥｖｅｎｔＣｏｕｎｔが増加する。そうでなければ、得られたＦＰＳが十分に高い場合、ｓｋｉｐＰｒｏｃｅｓｓｉｎｇＥｖｅｎｔＣｏｕｎｔが増加する。
３．また、ｓｋｉｐＰｒｏｃｅｓｓｉｎｇＥｖｅｎｔＣｏｕｎｔの最大値は、多くのイベントと情報を見逃さないように設定されている。
【００９４】
このイベントスキップアルゴリズムにより、イベント処理時間が劇的に短縮されるため、比較的非効率なソフトウェア実装でもソフトウェアの実時間性能が可能になる。
【００９５】
ハードウェアでは、イベントスキップの一実装例を図７に示す。変更イベントは、ＯＦソフトウェア又はハードウェアブロックが利用可能な場合に処理される。ＯＦユニットが作業中のイベントを処理している間、変更イベントは常にタイムスライスメモリに蓄積される（この例では、３つのスケールを使用するため、そのうち３つ）。現在の変更イベントは現在のスライスｔに蓄積されるので、メモリアービターは必要ないが、ＯＦブロックは、最新の変更イベントアドレス（どこが検索の中心かを知るため）と過去のｔ−ｄ及びｔ−２＊ｄタイムスライスにしかアクセスしない。
【００９６】
本発明のさらなる実施形態によれば、オプティカルフローモーションフィールドのフィルタリングを行うことができる。
【００９７】
ここで、上記方法から出力される生のＯＦイベントは、規則的に間隔を空けて、必要に応じてサブサンプリングされたモーションフィールド（ＭＦ）に蓄積することができる。このＭＦは、空間と時間にわたって複数のＯＦイベントをフィルタリングしてノイズを削減し、ＭＦの滑らかさなどの制約を課す。このようなＭＦを正規化する方法としては、多数の方法がある。ここでは、本発明の一実施形態に係る基本的な実装を説明する。それによれば、ＯＦ出力のノイズは削減されるが、（一時的なローパスフィルタリングによる）時間遅延の増加と、（サブサンプリングと拡散による）空間分解能の低下が生じてしまう。従来の処理の利点は、一定間隔のＭＦグリッドとして表現されることである
【００９８】
次のＪａｖａ（登録商標）コードスニペットは、ＭＦ処理を示す。この方法は、位置ｘ、ｙ、速度ベクトルｖｘ、ｖｙ、（事前計算済み）速度のＯＦイベントを用いて。モーションフィールド配列値を更新する。任意のアルゴリズムフラグにより以下が可能となる。
【００９９】
１．ゼロフローに向けたＭＦ値の任意の周期的減衰、
２．既存のＭＦ値と一致する場合にのみＯＦイベントを追加する任意の一貫性チェック（例えば、ＯＦベクトルとＭＦベクトルのドット積が正であるかどうかをチェックし、同じ方向を指していることを示す）
３．調整可能な時定数でＭＦ値をＯＦ値に向けて更新するローパスフィルタリング工程、
４．そして、ＭＦ値とその近傍を平均化する任意の拡散工程。
【０１００】
／**
* updates motion field
*
* @param timestamp in us
* @param x1 location pixel x before subsampling
* @param y1
* @param vx flow vx, pps
* @param vy
*／
synchronized public void update(int timestamp, int x, int y, float vx, float vy, float speed) {
int dtDecay = timestamp - lastDecayTimestamp;
if (decayTowardsZeroPendiclly && dtDecay > motionFieldTimeConstantMs * 1000 II dtDecay < 0) {
decayAIITowardsZero(timestamp);
lastDecayTimestamp = timestamp;
}
int x1 = x ≫ motionFieldSubsamplingShift, y1 = y ≫ motionFieldSubsamplingShift;
if (x1 < 0 II x1 >= velocities. length || y1 < 0 || y1 >= velocities[0]. length) { return;
}
if (checkConsistent(timestamp, x1 , y1 , vx, vy)) {
velocities[x1 ][y1 ].filter(vx, vy, speed, timestamp);
if (motionFieldDiffusionEnabled) {
／／ diffuse by average of neighbors and ourselves
int n = 0;
float dvx = 0, dvy = 0, dvs = 0;
for (int dx = -1 ; dx <= 1 ; dx++) {
int x2 = x1 + dx;
if (x2 >= 0 && x2 < velocities. length) {
for (int dy = -1 ; dy <= 1 ; dy++) {
int y2 = y1 + dy;
if (dx == 0 && dy == 0) {
continue; ／／don't count ourselves
}
if (y2 >= 0 && y2 < velocities[0]. length) {
n++;
Point3D p = velocities[x2][y2].getValue3D();
dvx += p.x;
dvy += p.y;
dvs += p.z;
}
}
}
}
float r = 1 f ／ n ; ／／ recip of sum to compute average
LowpassFilter3D v = velocities[x1][y1 ];
Point3D c = v.getValue3D();
v.setlnternalValue3D(.5f * (c.x + r * dvx), .5f * (c.y + r * dvy), .5f *(c.z + r * dvs));
}
}
lastTs[x1 ][y1] = ts;
}
【０１０１】
本発明のさらなる実施形態によれば、ブロックマッチングによってステレオ視マッチングを行う。
【０１０２】
オプティカルフローについて説明した装置と方法は、ステレオ立体視の密接に関連する問題に非常に簡単に適用できる。オプティカルフローでは、参照ブロックは検索領域で過去のタイムスライスと照合される。ステレオ視では、片方の目からの参照ブロックが、いわゆるエピポーラ線によって定義された検索曲線上で、もう一方の目からの同じタイムスライスに一致する。
【０１０３】
ステレオ視の場合、本発明に係るアルゴリズム／方法の最も単純な実施形態は、前述のスライス回転／交換方法の１つ（例えば、ＣｏｎｓｔａｎｔＤｕｒａｔｉｏｎ、ＣｏｎｓｔａｎｔＥｖｅｎｔＮｕｍｂｅｒ、ＡｒｅａＥｖｅｎｔＮｕｍｂｅｒ）により、両目からスライスを同時に回転させる。イベント数法の１つを用いる場合、回転／交換はどちらかの目での蓄積によってトリガできる。
【０１０４】
オプティカルフロー法とステレオ法は、蓄積タイムスライスとブロックマッチングのみに依存するため、組み合わせることができる。ステレオマッチングとオプティカルフローの計算は、どちらかの目から現在のタイムスライスに蓄積されたイベントによってトリガできる。
【０１０５】
本発明に係る強化されたオプティカルフローアルゴリズム／方法の例
【０１０６】
図１１は、さまざまなタイプの画像特徴に対するブロックマッチングの実際のＤＶＳデータの例を示す。ここで、赤は参照ブロックスライスピクセル、緑は検索領域スライスピクセル、青のピクセルは一致したブロックピクセルを示す。（Ａ）はエッジ、（Ｂ）はコーナー、（Ｃ）は孤立した特徴、（Ｄ）はテクスチャをそれぞれ示す。
【０１０７】
図１２、図１３、図１４、図１５は、上記の改良されたフロー法の結果の例を示す。
【０１０８】
以下において、本発明のさらなる態様及び実施形態を項目として述べるが、本発明の請求項として定式化されてもよい。
【０１０９】
項目１：イベントベースの視覚センサーからオプティカルフローを計算するための装置又は方法
ａ．タイムスライス蓄積イベントカウント２Ｄ画像メモリｔ、ｔ−ｄ、ｔ−２＊ｄ
ｂ．現在のタイムスライスイベントカウントメモリｔへのイベントカウントの累積。
ｃ．最小ブロック画像距離一致基準によって、過去のタイムスライスｔ−ｄのスライスｔにおける最新のイベント位置を中心とする参照ブロックをタイムスライスｔ−２＊ｄの検索領域に一致させる。
ｄ．現在のスライスｔがスライスｔ−ｄに、スライスｔ−ｄがスライスｔ−２＊ｄに、スライスｔ−２＊ｄがクリアされてスライスｔになるように、タイムスライスメモリを定期的に回転させる。
【０１１０】
項目２：項目１に加えて、参照ブロックピクセルと検索ブロックピクセル間の絶対差の合計であるブロックマッチング距離マッチングメトリック。
【０１１１】
項目３：項目１に加えて、センサの元のアドレス空間をサブサンプリングする複数のタイムスライスメモリ群を使用する。
【０１１２】
項目４：項目１に加えて、一定の時間間隔でタイムスライスを回転させる方法。
【０１１３】
項目５：項目１に加えて、スライスｔに蓄積された一定の合計イベント数でタイムスライスを回転させる方法。
【０１１４】
項目６：項目１に加えて、スライスｔのサブ領域に特定数のイベントが蓄積される場合にタイムスライスを回転させる方法。
【０１１５】
項目７：項目１に加えて、最後のスライス回転以降に統合されたモーションの合計が閾値を超えた場合にタイムスライスを回転させる方法。
【０１１６】
項目８：項目１に加えて、平均一致距離からのフィードバック制御に基づいてスライス回転間隔の持続時間を制御する方法。
【０１１７】
項目９：項目１に加えて、平均一致距離からのフィードバック制御に基づいてスライスの合計イベント数を制御する方法。
【０１１８】
項目１０：項目１に加えて、スライスｔのサブブロックに特定数のイベントが蓄積される場合に平均一致距離からのフィードバック制御に基づいてスライスを制御する方法。
【０１１９】
項目１１：項目１に加えて、イベントカウント２Ｄ画像をバイナリマップに蓄積する方法。
【０１２０】
項目１２：項目１に加えて、イベントカウント２Ｄ画像をマルチビットマップに蓄積する方法。
【０１２１】
項目１３：項目１に加えて、全領域を徹底的に検索する方法。
【０１２２】
項目１４：項目１に加えて、ダイアモンド検索の方法。
【０１２３】
項目１５：項目１に加えて、ブロックの有効ピクセルの割合により外れ値を棄却する。
【０１２４】
項目１６：項目１に加えて、距離閾値により外れ値を棄却する。
【０１２５】
項目１７：項目１に加えて、一部のイベントの完全な処理をスキップするイベントダウンサンプリングを行う一方、現在のタイムスライスにそれらを蓄積して、実時間性能を改善する。
【０１２６】
項目１８：項目１７に加えて、平均フレーム／秒からのフィードバック制御に基づいてスキップイベント数を制御する方法。
【０１２７】
項目１９：項目１に加えて、定期的な間隔を空けて、必要に応じてサブサンプリングされたモーションフィールドにイベントを蓄積する方法。
【０１２８】
項目２０：項目２と項目４に加えて、ブロックの絶対距離の合計を並列に計算する論理回路の実装
【０１２９】
項目２１：項目２と項目４に加えて、絶対距離の最小合計を並列に計算する論理回路の実装
【０１３０】
項目２２：イベントベースの視覚センサからステレオを計算するための装置又は方法は、以下を用いる。
ａ．右（ｒ）及び左（ｌ）の目からのタイムスライスの蓄積イベントカウント２Ｄ画像メモリｔ（ｒ）、（ｔ−ｄ）（ｒ）、ｔ（ｌ）、（ｔ−ｄ）（ｌ）
ｂ．イベントカウントの現在のタイムスライスイベントカウントメモリｔ（ｒ）、ｔ（ｌ）への蓄積。
ｃ．左右の目からのイベントについて、最小ブロック画像距離マッチング基準により、スライス（ｔｄ）（ｒ）のスライスｔ（ｒ）の最新のイベント位置を中心とする参照ブロックを、タイムスライス（ｔｄ）（ｌ）の検索領域に一致させる、その逆も同様。
ｄ．現在のスライスｔ（ｒ）がスライス（ｔｄ）（ｒ）になり、スライスｔ（ｌ）がスライス（ｔｄ）（ｌ）になり、スライスｔ（ｒ）とｔ（ｌ）が  クリアされるよう、タイムスライスメモリの回転を周期的かつ同時に行う。
【０１３１】
項目２３：項目２２に加えて、項目１〜２１のいずれか１つ又は複数の特徴。
【０１３２】
引用文献
［１］Ｂａｋｅｒ  Ｓ，  Ｍａｔｔｈｅｗｓ  Ｉ．  Ｌｕｃａｓ−Ｋａｎａｄｅ  ２０年：統合フレームワーク［Ｊ］。コンピュータ・ビジョンの国際ジャーナル、２００４年、５６（３）：２２１−２５５．
［２］Ｈｏｒｎ  Ｂ  Ｋ  Ｐ、Ｓｃｈｕｎｃｋ  Ｂ  Ｇ．オプティカルフローの決定［Ｊ］．人工知能、１９８１、１７（１−３）：１８５−２０３．
［３］Ｂｅｎｏｓｍａｎ  Ｒ、Ｃｌｅｒｃｑ  Ｃ、Ｌａｇｏｒｃｅ  Ｘ他 イベントベースの視覚的フロー［Ｊ］。ニューラルネットワーク及び学習システムでのＩＥＥＥトランザクション、２０１４年、２５（２）：４０７−４１７。
［４］Ｒ．Ｂｅｎｏｓｍａｎ、Ｓ．−Ｈ．ｌｅｎｇ、Ｃ．Ｃｌｅｒｃｑ、Ｃ．Ｂａｒｔｏｌｏｚｚｉ、Ｍ．Ｓｒｉｎｉｖａｓａｎ、非同期フレームレスイベントベースのオプティカルフロー、Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ、ｖｏｌ．２７、ｐｐ．３２−３７、２０１２。
［５］Ｃｏｎｒａｄｔ  Ｊ．イベントベースの小型視覚センサ用のオンボードリアルタイムオプティカルフロー。／／２０１５  ＩＥＥＥ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｒｏｂｏｔｉｃｓ  ａｎｄ  Ｂｉｏｍｉｍｅｔｉｃｓ（ＲＯＢＩＯ）。ＩＥＥＥ、２０１５：１８５８−１８６３。
［６］Ｂａｒｒａｎｃｏ  Ｆ、Ｆｅｒｍｕｌｌｅｒ  Ｃ、Ａｌｏｉｍｏｎｏｓ  Ｙ．イベント駆動型センサーを使用したバイオにヒントを得たモーション推定［Ｃ］。人工神経回路網に関する国際作業会議。Ｓｐｒｉｎｇｅｒ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｐｕｂｌｉｓｈｉｎｇ、２０１５：３０９−３２１。
［７］Ｒｕｅｃｋａｕｅｒ  Ｂ、Ｄｅｌｂｒｕｃｋ  Ｔ．慣性測定センサからのグラウンドトゥルースを伴うオプティカルフローのイベントベースのアルゴリズムの評価［Ｊ］。神経科学のフロンティア、２０１６、１０。
［８］「ｊＡＥＲオープンソースプロジェクト」、ｊＡＥＲオープンソースプロジェクト。［オンライン］。利用可能：ｈｔｔｐ：／／ｊａｅｒｐｒｏｊｅｃｔ．ｏｒｇ。
［９］  Ａｇｈａ  Ｓ、Ｄｗａｙｅｒ  Ｖ  Ｍ．  ＭＰＥＧ−４動き推定のためのアルゴリズムとＶＬＳＩアーキテクチャ［Ｊ］。電子システム及び制御部門の研究、２００３：２４−２７。
［１０］  ｈｔｔｐｓ：／／ｓｏｕｒｃｅｆｏｒｇｅ．ｎｅｔ／ｐ／ｊａｅｒ／ｃｏｄｅＨＥＡＤ／ｔｒｅｅ／ｊＡＥＲ／ｔｒｕｎｋ／ｓｒｃ／ｃｈ／ｕｎｉｚｈ／ｉｎｉ／ｊａｅｒ／ｐｒｏｊｅｃｔｓ／ｍｉｎｌｉｕ／ＰａｔｃｈＭａｔｃｈＦｌｏｗ．ｊａｖａ。
［１１］Ｗｏｎｇ  Ｓ、Ｖａｓｓｉｌｉａｄｉｓ  Ｓ、ＣｏｔｏｆａｎａＳ  ＦＰＧＡハードウェアの絶対差合計の実装［Ｃ］、Ｅｕｒｏｍｉｃｒｏ  Ｃｏｎｆｅｒｅｎｃｅ、２００２。第２８号会報。ＩＥＥＥ、２００２：１８３−１８８。
［１２］  Ｌｉｃｈｔｓｔｅｉｎｅｒ  Ｐ、Ｐｏｓｃｈ  Ｃ、Ｄｅｌｂｒｕｃｋ  Ｔ．Ａ  １２８×１２８  １２０  ｄＢ  １５  ｕｓ  レイテンシー非同期時間コントラスト視覚センサ［Ｊ］。ＩＥＥＥジャーナルオブソリッドステートサーキット、２００８、４３（２）：５６６−５７６。
［１３］  Ｂｅｒｎｅｒ  Ｒ、Ｄｅｌｂｒｕｃｋ  Ｔ、Ｃｉｖｉｔ−Ｂａｌｃｅｌｌｓ  Ａ他  ５  Ｍｅｐｓ  ￥＄１００  ＵＳＢ２．０アドレスイベントモニタ・シーケンサーインタフェース［Ｃ］。／／２００７ＩＥＥＥ  回路とシステムに関する国際シンポジウム。ＩＥＥＥ、２００７年：２４５１−２４５４。
［１４］  Ｂａｒｊａｔｙａ  Ａ．動き推定のためのブロックマッチングアルゴリズム［Ｊ］。ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  Ｅｖｏｌｕｔｉｏｎ  Ｃｏｍｐｕｔａｔｉｏｎ、２００４、８（３）：２２５−２３９。
［１５］  Ｚｈａｎｇ  Ｌ、Ｚｈａｎｇ  Ｙ、Ｔａｎｇ  Ｊ他  重み付きハミング距離を使用したバイナリコードのランキング［Ｃ］  ／／コンピュータ・ビジョンとパターン認識に関するＩＥＥＥ会議の議事録。２０１３：１５８６−１５９３。
【図１】
2020522067.tif 000003
【図２】
2020522067.tif 000004
【図３】
2020522067.tif 000005
【図４】
2020522067.tif 000006
【図５（Ａ）】
2020522067.tif 000007
【図５（Ｂ）】
2020522067.tif 000008
【図５（Ｃ）】
2020522067.tif 000009
【図６】
2020522067.tif 000010
【図７】
2020522067.tif 000011
【図８】
2020522067.tif 000012
【図９】
2020522067.tif 000013
【図１０（Ａ）】
2020522067.tif 000014
【図１０（Ｂ）】
2020522067.tif 000015
【図１１】
2020522067.tif 000016
【図１２】
2020522067.tif 000017
【図１３】
2020522067.tif 000018
【図１４】
2020522067.tif 000019
【図１５（Ａ）】
2020522067.tif 000020
【図１５（Ｂ）】
2020522067.tif 000021
【図１５（Ｃ）】
2020522067.tif 000022
【図１５（Ｄ）】
2020522067.tif 000023
【国際調査報告】
2020522067.tif 000024