(57)【要約】  勾配方向ヒストグラム演算のためのハードウェアアクセレレータ（３１２）において、勾配演算構成要素（４００）が、或る画素の勾配Ｇｘ及びＧｙを演算する。ビン識別構成要素（４０２）が、代表的な方位角、Ｇｘ、並びにＧｘ及びＧｙの符号に基づいて、その画素についての角度ビンのビン識別子を決定する。大きさ構成要素（４０４）が、代表的な方位角及びビン識別子に基づいて勾配の大きさＧｍａｇを決定する。
2020518052.tif 000002
【特許請求の範囲】
【請求項１】
勾配方向ヒストグラムの演算のためのハードウェアアクセレレータであって、
或る画素の勾配Ｇｘ及びＧｙを演算するように構成される勾配演算構成要素、
複数の代表的な方位角、Ｇｘと、Ｇｘ及びＧｙの符号とに基づいて、前記画素についての角度ビンのビン識別子を決定するように構成されるビン識別構成要素、及び
前記複数の代表的な方位角と前記ビン識別子とに基づいて前記勾配の大きさＧｍａｇを決定するように構成される大きさ構成要素、
を含む、ハードウェアアクセレレータ。
【請求項２】
請求項１に記載のハードウェアアクセレレータであって、前記複数の代表的な方位角の各々が０〜９０度の象限にある、ハードウェアアクセレレータ。
【請求項３】
請求項１に記載のハードウェアアクセレレータであって、前記ビン識別構成要素がさらに、
前記複数の代表的な方位角の代表的な方位角各々に対して、θを前記代表的な方位角としてＧｙ＝Ｇｘ＊ｔａｎ（θ）によりＧｙの値を推定し、
前記勾配の実際の方位角に最も近い前記代表的な方位角を選択するため、Ｇｙの前記推定された値を前記勾配演算構成要素によって演算された前記Ｇｙと比較し、
前記選択された代表的な方位角及び前記符号を用いて前記ビン識別子を決定する、
ように構成される、ハードウェアアクセレレータ。
【請求項４】
請求項３に記載のハードウェアアクセレレータであって、前記大きさ構成要素がさらに、
前記複数の代表的な方位角の代表的な方位角各々に対して、θを代表的な方位角としてＧｍａｇ＝Ｇｘ＊ｓｅｃ（θ）によりＧｍａｇの値を生成し、
前記ビン識別子を決定するために用いられた前記選択された代表的な方位角に対応する前記Ｇｍａｇ値を選択する、
ように構成される、ハードウェアアクセレレータ。
【請求項５】
請求項４に記載のハードウェアアクセレレータであって、前記大きさ構成要素がさらに、前記ビン識別子及び前記符号を用いて前記Ｇｍａｇ値を選択するように構成される、ハードウェアアクセレレータ。
【請求項６】
請求項４に記載のハードウェアアクセレレータであって、前記ビン識別子構成要素が、Ｇｘ＊ｔａｎ（θ）を演算するため、制限された範囲の座標回転デジタルコンピュータ（ＣＯＲＤＩＣ）エンジンを実装し、前記大きさ構成要素が、Ｇｘ＊ｓｅｃ（θ）を演算するため、制限された範囲のＣＯＲＤＩＣエンジンを実装する、ハードウェアアクセレレータ。
【請求項７】
ハードウェアアクセレレータにおける勾配方向ヒストグラムの演算のための方法であって、
前記ハードウェアアクセレレータの勾配演算構成要素において、或る画素の勾配Ｇｘ及びＧｙを演算すること、
前記ハードウェアアクセレレータのビン識別構成要素において前記画素について角度ビンのビン識別子を決定することであって、複数の代表的な方位角、Ｇｘ、並びにＧｘ及びＧｙの符号に基づいて前記ビン識別子が決定される、前記ビン識別子を決定すること、及び
前記ハードウェアアクセレレータの大きさ構成要素において前記勾配Ｇｍａｇの大きさを決定することであって、前記複数の代表的な方位角及び前記ビン識別子に基づいて前記大きさが決定される、前記勾配Ｇｍａｇの大きさを決定すること、
を含む、方法。
【請求項８】
請求項７に記載の方法であって、前記複数の代表的な方位角の各々が０〜９０度の象限にある、方法。
【請求項９】
請求項７に記載の方法であって、ビン識別子を決定することがさらに、
前記複数の代表的な方位角の代表的な方位角各々に対して、θを前記代表的な方位角としてＧｙ＝Ｇｘ＊ｔａｎ（θ）によりＧｙの値を推定すること、
前記勾配の実際の方位角に最も近い前記代表的な方位角を選択するため、Ｇｙの前記推定された値を前記勾配演算構成要素によって演算された前記Ｇｙと比較すること、及び
前記選択された代表的な方位角及び前記符号を用いて前記ビン識別子を決定すること、
を含む、方法。
【請求項１０】
請求項９に記載の方法であって、前記勾配の大きさを決定することがさらに、
前記複数の代表的な方位角の代表的な方位角各々に対して、θを代表的な方位角としてＧｍａｇ＝Ｇｘ＊ｓｅｃ（θ）によりＧｍａｇの値を生成すること、及び
前記ビン識別子を決定するために用いられた前記選択された代表的な方位角に対応する前記Ｇｍａｇ値を選択すること、
を含む、方法。
【請求項１１】
請求項１０に記載の方法であって、前記Ｇｍａｇ値を選択することがさらに、前記ビン識別子及び前記符号を用いて前記Ｇｍａｇ値を選択することを含む、方法。
【請求項１２】
請求項１０に記載の方法であって、制限された範囲の座標回転デジタルコンピュータ（ＣＯＲＤＩＣ）エンジンを用いてＧｘ＊ｔａｎ（θ）を演算し、制限された範囲のＣＯＲＤＩＣエンジンを用いてＧｘ＊ｓｅｃ（θ）を演算する、方法。
【請求項１３】
システムオンチップ（ＳＯＣ）であって、
勾配方向ヒストグラム（ＨＯＧ）演算のためのハードウェアアクセレレータであって、或る画像における各画素に対してビン識別子及び勾配大きさを生成するように構成可能である、前記ハードウェアアクセレレータ、
前記ビンＩＤ及び勾配大きさをストアするように前記ハードウェアアクセレレータに結合されるメモリ、
前記メモリに結合されるＨＯＧジェネレータであって、前記ハードウェアアクセレレータによって生成された前記ビンＩＤ及び勾配大きさを用いてＨＯＧ記述子を生成するように構成可能である、前記ＨＯＧジェネレータ、及び
前記メモリ及び前記ハードウェアアクセレレータに結合されるプロセッサであって、複数のオブジェクトを検出するようにプログラムされるビジョン処理応用例を実行するように動作可能である前記プロセッサ、
を含み、
前記ビジョン処理応用例が、前記ビンＩＤ及び勾配大きさを生成するように前記ハードウェアアクセレレータを構成し、また、前記ビンＩＤ及び勾配大きさを用いて前記複数のオブジェクトの各オブジェクトに対してＨＯＧ記述子を生成するように前記ＨＯＧジェネレータを構成する、ソフトウェア命令を含む、
ＳＯＣ。
【請求項１４】
請求項１３に記載のＳＯＣであって、前記ハードウェアアクセレレータが、
或る画素の勾配Ｇｘ及びＧｙを演算するように構成される勾配演算構成要素、
複数の代表的な方位角、Ｇｘ、並びにＧｘ及びＧｙの符号に基づいて前記画素について角度ビンのビン識別子を決定するように構成されるビン識別構成要素、及び
前記複数の代表的な方位角及び前記ビン識別子に基づいて前記勾配Ｇｍａｇの大きさを決定するように構成される大きさ構成要素、
を含む、ＳＯＣ。
【請求項１５】
請求項１４に記載のＳＯＣであって、前記複数の代表的な方位角の各々が０〜９０度の象限にあり、前記ビジョン処理応用例が、前記ハードウェアアクセレレータにおいて前記複数の代表的な方位角を構成する、ＳＯＣ。
【請求項１６】
請求項１４に記載のＳＯＣであって、前記ビン識別構成要素がさらに、
前記複数の代表的な方位角の代表的な方位角各々に対して、θを前記代表的な方位角とするＧｙ＝Ｇｘ＊ｔａｎ（θ）によりＧｙの値を推定し、
前記勾配の実際の方位角に最も近い前記代表的な方位角を選択するため、Ｇｙの前記推定された値を前記勾配演算構成要素によって演算された前記Ｇｙと比較し、
前記選択された代表的な方位角及び前記符号を用いて前記ビン識別子を決定する、
ように構成される、ＳＯＣ。
【請求項１７】
請求項１６に記載のＳＯＣであって、前記大きさ構成要素がさらに、
前記複数の代表的な方位角の代表的な方位角各々に対して、θを代表的な方位角とするＧｍａｇ＝Ｇｘ＊ｓｅｃ（θ）によりＧｍａｇの値を生成し、
前記ビン識別子を決定するために用いられた前記選択された代表的な方位角に対応する前記Ｇｍａｇ値を選択する、
ように構成される、ＳＯＣ。
【請求項１８】
請求項１７に記載のＳＯＣであって、前記大きさ構成要素がさらに、前記ビン識別子及び前記符号を用いて前記Ｇｍａｇ値を選択するように構成される、ＳＯＣ。
【請求項１９】
勾配方向のヒストグラム（ＨＯＧ）演算ためのハードウェアアクセレレータを用いるための方法であって、
前記ハードウェアアクセレレータによって或る画像における各画素に対してビン識別子及び勾配大きさを決定すること、及び
前記ビンＩＤ及び勾配大きさを用いて複数のタイプのオブジェクトの分類のためのＨＯＧ記述子を演算すること、
を含む、方法。
【請求項２０】
請求項１９に記載の方法であって、少なくとも１つのタイプのオブジェクトについての検出ウィンドウサイズが、別のタイプのオブジェクトの検出ウィンドウサイズと異なる、方法。
【請求項２１】
請求項１９に記載の方法であって、ビン識別子及び勾配大きさを決定することがさらに、
前記ハードウェアアクセレレータの勾配演算構成要素において或る画素の勾配Ｇｘ及びＧｙを演算すること、
前記ハードウェアアクセレレータのビン識別構成要素において前記画素について角度ビンのビン識別子を決定することであって、複数の代表的な方位角、Ｇｘ、並びにＧｘ及びＧｙの符号に基づいて前記ビン識別子が決定される、前記ビン識別子を決定すること、及び
前記ハードウェアアクセレレータの大きさ構成要素において前記勾配Ｇｍａｇの大きさを決定することであって、前記複数の代表的な方位角及び前記ビン識別子に基づいて前記大きさが決定される、前記勾配Ｇｍａｇの大きさを決定すること、
を含む、方法。
【請求項２２】
請求項２１に記載の方法であって、前記複数の代表的な方位角の各々が０〜９０度の象限にある、方法。
【請求項２３】
請求項２１に記載の方法であって、角度ビンのビン識別子を決定することがさらに、
前記複数の代表的な方位角の代表的な方位角各々に対して、θを前記代表的な方位角としてＧｙ＝Ｇｘ＊ｔａｎ（θ）によりＧｙの値を推定すること、
前記勾配の実際の方位角に最も近い前記代表的な方位角を選択するため、Ｇｙの前記推定された値を前記勾配演算構成要素によって演算された前記Ｇｙと比較すること、及び
前記選択された代表的な方位角及び前記符号を用いて前記ビン識別子を決定すること、
を含む、方法。
【請求項２４】
請求項２３に記載の方法であって、前記勾配大きさを決定することがさらに、
前記複数の代表的な方位角の代表的な方位角各々に対して、θを代表的な方位角としてＧｍａｇ＝Ｇｘ＊ｓｅｃ（θ）によりＧｍａｇの値を生成すること、及び
前記ビン識別子を決定するために用いられた前記選択された代表的な方位角に対応する前記Ｇｍａｇ値を選択すること、
を含む、方法。
【請求項２５】
請求項２４に記載の方法であって、前記Ｇｍａｇ値を選択することがさらに、前記ビン識別子及び前記符号を用いて前記Ｇｍａｇ値を選択することを含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
先進運転者支援システム（ＡＤＡＳ）における歩行者認識などの埋込みコンピュータビジョン応用例の場合、高速の加重勾配（角度）計算が必要とされる。例えば、キャニー及びその他の角度エッジ及び特徴検出アルゴリズムには、正確な狭いエッジの保証に役立つよう、画像画素上の勾配方向の計算が必要とされる。別の例において、勾配方向ヒストグラム（ＨＯＧ：histogram of oriented gradients）の特徴が、一般の物体検出のための多くのビジョンアルゴリズムによって用いられ、こうした一般の物体検出は、画像の複数のウィンドウにおける画素毎の勾配方向の計算及びウィンドウ毎の勾配方向のヒストグラム分布の計算を必要とする。
【背景技術】
【０００２】
勾配方向及びヒストグラムの計算は計算コストがかかる。例えば、ＨＯＧアルゴリズムの場合、或る画素についてのｘ及びｙ勾配の方位角θ並びに勾配の大きさは、下記によって与えられる。
θ（ｘ，ｙ）＝ｔａｎ−１（Ｇｙ／Ｇｘ）
2020518052.tif 000003
ここで、Ｇｘ及びＧｙは、それぞれの水平及び垂直勾配である。方位角θ及びＧｍａｇは、或る画像における複数の重なった検出ウィンドウにおける各画素に対して計算される。埋込みコンピュータビジョン応用例における大画像に対してこのような計算をリアルタイムで実施することは、埋込みデバイスにおいて現在用いられるプロセッサの演算パワーの全部ではないにしても大部分を消費し得る。
【発明の概要】
【０００３】
説明される例は、勾配方向のヒストグラムの演算を加速させるための方法及び装置に関する。一態様において、勾配方向ヒストグラムの演算のためのハードウェアアクセレレータが提供される。ハードウェアアクセレレータは、或る画素の勾配Ｇｘ及びＧｙを演算するように構成される勾配演算構成要素、複数の代表的な方位角、Ｇｘ、並びにＧｘ及びＧｙの符号に基づいて、その画素についての角度ビンのビン識別子を決定するように構成されるビン識別構成要素、及び、複数の代表的な方位角とビン識別子とに基づいて勾配の大きさＧｍａｇを決定するように構成される大きさ構成要素を含む。
【０００４】
一態様において、ハードウェアアクセレレータにおける勾配方向ヒストグラムの演算のための方法が提供される。この方法は、ハードウェアアクセレレータの勾配演算構成要素において或る画素の勾配Ｇｘ及びＧｙを演算すること、ハードウェアアクセレレータのビン識別構成要素においてその画素について角度ビンのビン識別子を決定すること、及び、ハードウェアアクセレレータの大きさ構成要素において勾配Ｇｍａｇの大きさを決定することを含み、ビン識別子は、複数の代表的な方位角、Ｇｘ、並びにＧｘ及びＧｙの符号に基づいて決定され、勾配Ｇｍａｇの大きさは、複数の代表的な方位角とビン識別子とに基づいて決定される。
【０００５】
一態様において、システムオンチップ（ＳＯＣ）が提供される。ＳＯＣは、勾配方向ヒストグラム（ＨＯＧ）の演算のためのハードウェアアクセレレータであって、或る画像における各画素に対してビン識別子及び勾配大きさを生成するように構成可能なハードウェアアクセレレータ、ビンＩＤ及び勾配大きさをストアするようにハードウェアアクセレレータに結合されるメモリ、メモリに結合されるＨＯＧジェネレータであって、ハードウェアアクセレレータによって生成されるビンＩＤ及び勾配大きさを用いてＨＯＧ記述子を生成するように構成可能なＨＯＧジェネレータ、及び、メモリ及びハードウェアアクセレレータに結合されるプロセッサを含む。プロセッサは、複数のオブジェクトを検出するようにプログラムされるビジョン処理応用例を実行するように動作可能である。ビジョン処理応用例は、ビンＩＤ及び勾配の大きさを生成するようにハードウェアアクセレレータを構成し、ビンＩＤ及び勾配大きさを用いて複数のオブジェクトの各オブジェクトに対してＨＯＧ記述子を生成するようにＨＯＧジェネレータを構成する、ソフトウェア命令を含む。
【０００６】
一態様において、勾配方向ヒストグラム（ＨＯＧ）の演算のためのハードウェアアクセレレータを用いるための方法が提供される。この方法は、ハードウェアアクセレレータによって或る画像における各画素に対してビン識別子及び勾配大きさを決定すること、及び、ビンＩＤ及び勾配大きさを用いて複数のタイプのオブジェクトの分類のためのＨＯＧ記述子を演算することを含む。
【図面の簡単な説明】
【０００７】
【図１】勾配方向のヒストグラム（ＨＯＧ）を計算するための方法のフローチャートである。
【０００８】
【図２】歩行者認識のためのＨＯＧ演算の例である。
【０００９】
【図３】例示のマルチプロセッサシステムオンチップ（ＳＯＣ）のハイレベルブロック図である。
【００１０】
【図４】図３のＳＯＣの例示のＨＯＧアクセレレータのハイレベルブロック図である。
【００１１】
【図５】或る画素についてのビン識別子及び大きさを決定するための方法のフローチャートである。
【００１２】
【図６】ＨＯＧ記述子を生成するための方法のフローチャートである。
【発明を実施するための形態】
【００１３】
図面において、一貫性のために同様の要素は同様の参照数字で示す。
【００１４】
図１は、勾配方向のヒストグラムを計算するための方法のフローチャートである。この方法を図２の例を参照して説明する。図２は、歩行者認識のために実施されるＨＯＧ演算を表す。他のオブジェクト認識アルゴリズムにおいて、異なるウィンドウサイズについて同様のＨＯＧ演算が実施される。概して、ＨＯＧは、オブジェクト認識タスクのための特徴セットとして用いられる。基本的な考え方は、局所オブジェクトの外観及び形状が、対応する勾配又はエッジ位置を精密に知ることなく、局所強度勾配又はエッジ方向の分布によって特徴付けられるということである。
【００１５】
図２の例において、初期の歩行者の場所を決定するために、或る画像にわたって検出ウィンドウ２００がシフトされるスライディングウィンドウ手法が用いられる。各検出ウィンドウに対して、ウィンドウにおける画素からＨＯＧ特徴セットが生成され、歩行者の存在について評価される。この例では、検出ウィンドウ２００は、６４×１２８画素と仮定する。
【００１６】
ここで図１を参照すると、検出ウィンドウ２００における各画素の勾配Ｇｘ及びＧｙが、大きさＧｍａｇとともに演算される（１００）。勾配ベクトル又は画像勾配とも称する画素の勾配は、画素の周りでｘ方向及びｙ方向に沿って画素値の変化を測定したものである。概して、或る画素についての勾配は、画素を中心とする畳み込みフィルタによって、画像における画素がフィルタによって覆われる状態で演算される。フィルタのサイズ及び構成は変わり得る。大きさＧｍａｇは、
2020518052.tif 000004
により演算される。
【００１７】
各画素に対して勾配の方位角θも演算される（１０２）。或る画素についての方位角θは、
θ＝ｔａｎ−１（Ｇｙ／Ｇｘ）
により演算される。次いで、これらの方位角を用いて各画素に対して角度ビンが決定される（１０４）。ビンを決定するために、検出ウィンドウ２００は、セルと称する局所空間領域に分割される。図２の例において、セル２０２は８×８画素である。各セルにおける６４画素を離散化して、それらの方位角に従った角度ビンにする。角度ビンは、勾配が符号付きか符号なしかによって、０〜１８０度又は０〜３６０度にわたって均一に広がる。例えば、符号付き勾配の場合、０〜１８０度にわたって均一に広がる９個の角度ビンがあり得る。或る画素についての方位角θにより、その画素についての特定のビンが決まる。
【００１８】
次いで、勾配方向のヒストグラムが、検出ウィンドウ２００における各セルに対し、そのセルにおけるビンと画素の大きさとに基づいて演算される（１０６）。或るビンに割り当てられる画素の勾配の大きさにより、そのビンに対応するヒストグラムにおけるバーの高さが決まる。すなわち、ヒストグラムにおけるバーの高さは、対応するビンに割り当てられた画素の勾配大きさの関数である。例えば、高さは、画素の大きさの合計又は加重合計であり得る。
【００１９】
勾配強さは、影、照明の局所変動、及び前景／背景コントラストなどの要因のため広範囲にわたって変動する。したがって、局所コントラスト正規化が必要とされる。そのために、ブロックと称する空間領域として隣接セルの群を考える。図２の例において、ブロック２０４は２×２の隣接セルの群である。各ブロックは、Ｌ２ノルムを用いるなどの、正規化された、対応する４個のセルのヒストグラムの連結によって表される。検出ウィンドウ２００についての最終的なＨＯＧ記述子は、正規化されたブロック応答の連結によって表される。
【００２０】
上述したように、埋込みコンピュータビジョン応用例において、大画像に対して勾配方向のヒストグラムをリアルタイムで演算することは、埋込みデバイスにおいて現在用いられるプロセッサの演算パワーの全部ではないにしても大部分を消費し得る。例示の実施形態は、ＨＯＧ演算のためのハードウェアアクセレレータを提供する。より具体的には、ハードウェアアクセレレータの例が、勾配方向のヒストグラムを演算するために必要とされる画素のビン識別子及び勾配大きさの決定を加速する。
【００２１】
図３は、コンピュータビジョン処理をサポートするように構成される例示のマルチプロセッサシステムオンチップ（ＳＯＣ）３００のハイレベルブロック図である。ＳＯＣ３００は、デュアル汎用プロセッサ（ＧＲＰ）３０２、デュアルデジタルシグナルプロセッサ（ＤＳＰ）３０４、ビジョンプロセッサ３０６、ＨＯＧジェネレータ３１４、及びＨＯＧアクセレレータ３１２を含み、これらは高速相互接続３２２を介して結合される。
【００２２】
ビジョンプロセッサ３０６は、加速テストによる特徴（ＦＡＳＴ）の特徴演算、ディープニューラル畳み込みネットワーク演算など、様々なコンピュータビジョン及びその他の信号処理タスクに対して調整されるベクトルプロセッサである。ＧＲＰ３０２は、オペレーティングシステムをホストし、ＨＯＧアクセレレータ３１２によって成される処理のスケジューリングを含めてＳＯＣ３００の動作の全体的な制御を提供する。ＤＳＰ３０４は、ＨＯＧジェネレータ３１４の出力を用い得る、オブジェクト検出及び分類などのコンピュータビジョン処理に対するサポートを提供する。
【００２３】
ＳＯＣ３００はさらに、ダイレクトメモリアクセス（ＤＭＡ）構成要素３０８、外部カメラ３２４に結合されるカメラ捕捉構成要素３１０、ディスプレイ管理構成要素３１６、例えばコンピュータ可読媒体などのオンチップランダムアクセスメモリ（ＲＡＭ）３１８、及び、様々な入力／出力（Ｉ／Ｏ）周辺装置３２０を含み、これらはすべて、相互接続３２２を介して、プロセッサ、ＨＯＧアクセレレータ３１２、及びＨＯＧジェネレータ３１４に結合される。カメラ３２４は、アナログ接続、イーサネットケーブル、低電圧差動シグナリング（ＬＶＤＳ）ケーブル、又は他の適切な有線又は無線接続を介して、ＳＯＣ３００に結合され得る。
【００２４】
図４を参照してより詳細に説明するように、ＨＯＧアクセレレータ３１２は、カメラ３２４によって捕捉される画像における画素のビン識別子及び勾配の大きさを決定するための機能を有する。ＤＳＰ３０４上で実行されるコンピュータビジョン応用例が、その応用例によって特定されるパラメータに従って、画像における画素のビン識別子及び勾配大きさを生成するようにＨＯＧアクセレレータ３１２を構成する。例えば、応用例は、セルヒストグラムにおけるビンの数、及び各ビンの代表的な方位角などの、ＨＯＧアクセレレータ３１２のパラメータを構成し得る。代表的な方位角及びＨＯＧアクセレレータ３１２の構成を、図４を参照して説明する。ＨＯＧアクセレレータ３１２は、構成されたパラメータに従って画像における各画素に対してビン識別子及び勾配大きさを決定し、ＨＯＧジェネレータ３１４による使用のため、このデータをＲＡＭ３１８にストアする。
【００２５】
ＨＯＧジェネレータ３１４は、ＨＯＧアクセレレータ３１２によって生成されたビン識別子及び勾配大きさを用いて検出ウィンドウのためのＨＯＧ記述子を生成するための機能を有する。より具体的には、ＨＯＧジェネレータ３１４は、コンピュータビジョン応用例が画像において探索するオブジェクトのタイプに従ってＨＯＧアクセレレータ３１２によって生成されるデータを用いてＨＯＧ記述子を生成するように構成可能である。例えば、歩行者検出の場合、応用例は、検出ウィンドウサイズ、ＨＯＧ記述子を生成するために用いる画像の部分（これは、画像のサブセット又は画像全体とし得る）、セルサイズ、及びブロックサイズなどの、ＨＯＧジェネレータ３１４のパラメータを構成し得る。車両検出の場合、応用例は上記と異なるようにパラメータを構成し得る。
【００２６】
ＨＯＧジェネレータ３１４は、ストアされたデータを用いて、特定された検出ウィンドウサイズ、セルサイズ、及びブロックサイズに従った、特定された画像部分における検出ウィンドウのためのＨＯＧ記述子を生成する。より具体的には、ＨＯＧジェネレータ３１４は、画像の特定部分に対応するＨＯＧアクセレレータ３１２によって生成されるデータにわたって特定サイズの検出ウィンドウがシフトされるスライディングウィンドウ手法を実装する。ＨＯＧジェネレータ３１４は、各検出ウィンドウに対してＨＯＧ記述子を生成する。上述したように、検出ウィンドウのためのＨＯＧ記述子の生成は、セルに対してＨＯＧを生成すること、セルのブロックのＨＯＧを正規化すること、及び、得られた正規化されたＨＯＧを連結して検出ウィンドウのためのＨＯＧ記述子を形成することを含む。ビンのＩＤ及び大きさは、ＨＯＧアクセレレータ３１２によって或る画像について一度に生成され得、ビジョン処理応用例によって構成されるように異なるオブジェクトタイプの検出のためのＨＯＧ記述子を生成するためにＨＯＧジェネレータ３１４によって複数回用いられ得ることに留意されたい。
【００２７】
図４は、例示のＨＯＧアクセレレータ３１２のブロック図である。ＨＯＧアクセレレータ３１２のアーキテクチャは下記の観察に基づいている。上述したように、或る画素の勾配大きさＧｍａｇは、
2020518052.tif 000005
により演算され得る。ここで、Ｇｘ及びＧｙは、それぞれ、ｘ方向の画素の勾配及びｙ方向の画素の勾配である。或いは、勾配の大きさＧｍａｇは、
Ｇｍａｇ＝Ｇｘ＊ｓｅｃ（θ）
により演算され得る。ここで、ｓｅｃ（θ）＝１／ｃｏｓ（θ）であり、θは勾配の方位角である。したがって、勾配大きさ及びｔａｎ−１（Ｇｙ／Ｇｘ）を演算するための２つの基本式が、
Ｇｍａｇ＝Ｇｘ＊ｓｅｃ（θ）
Ｇｙ＝Ｇｘ＊ｔａｎ（θ）
と表され得る。
【００２８】
また、表１に示すように、方位角θの象限は、勾配Ｇｘ及びＧｙの符号に基づいて決定され得る。したがって、すべての象限についてｔａｎ−１（Ｇｙ／Ｇｘ）を演算する必要がない。代わりに、方位角演算は、例えば０〜９０度の、１つの象限について実施され得、符号ビットを用いて方位角θの実際の象限を決定し得る。
【表１】
2020518052.tif 000006
【００２９】
ＨＯＧアクセレレータ３１２は、勾配演算構成要素４００、ビン識別構成要素４０２、及び、勾配大きさ演算構成要素４０４を含む。勾配演算構成要素４００は、或る画素についてｘ及びｙの勾配Ｇｘ及びＧｙを演算する。勾配を演算するための任意の適切な技術が用いられ得る。幾つかの例において、勾配は、
Ｇｘ＝［１  ０  −１］＊Ｉ
Ｇｙ＝［１  ０  −１］Ｔ＊Ｉ
により演算される。ここで、Ｉは画素を含む画像であり、＊は畳み込みである。勾配演算構成要素４００の出力は、Ｇｘ、Ｇｙ、及び勾配の符号を含む。
【００３０】
ビン識別構成要素４０２は、勾配演算構成要素４００からの演算された勾配Ｇｘ及びＧｙ、及び勾配についての符号ビットを受け取り、これらの入力を用いてその画素についての角度ビンを識別する。或る画素についての角度ビンを識別するために、ビン識別構成要素４０２は、０度と９０度の間とする必要がある代表的な方位角のいずれが勾配の実際の方位角に最も近いかを決定し、次いで、この情報及び符号ビットを用いてその画素の角度ビンを識別する。上述したように、ビジョン処理応用例が、ヒストグラムにおけるビンの数、及び、第１の象限、すなわち、０度と９０度の間の象限、におけるビンについての代表的な方位角を特定し得る。
【００３１】
ビン識別構成要素４０２は、Ｇｙ推定構成要素４０６、比較器構成要素４０８、及びビン決定構成要素４１０を含む。Ｇｙ推定構成要素４０６は、複数の代表的な方位角についてＧｙの推定値を演算するように構成される。つまり、Ｇｙ推定構成要素４０６は、特定された代表的な方位角各々に対して、
Ｇｙ＝Ｇｘ＊ｔａｎ（θ）
を演算するように構成される。これらの演算は並行して実施され、特定され得る代表的な方位角の数は実装に依存する。或る応用例が、Ｇｙ推定構成要素４０６によってサポートされる最大値までの任意の数の角度について値を特定し得る。幾つかの例において、最大４５個の角度についての並列演算をサポートするための回路要素が存在する。上述したように、各特定された角度値は、第１の象限におけるビンに対応する。Ｇｙ推定構成要素４０６の出力は、特定された代表的な方位角についてのＧｙの推定値である。
【００３２】
比較器構成要素４０８は、Ｇｙ推定構成要素４０６によって出力された推定Ｇｙ値出力の各々を、勾配演算構成要素４００によって出力された実際のＧｙ値と比較し、各推定Ｇｙ値に対して０又は１を出力するように構成され、実際のＧｙ値が推定Ｇｙ値より大きいかどうかが示される。
【００３３】
ビン決定構成要素４１０は、比較器構成要素４０８の出力及び勾配演算構成要素４００からの符号ビットを用いて、３６０度の範囲で画素についてのビン識別子を決定するための機能を含む。幾つかの例において、ビン決定構成要素４１０は、表２のルックアップテーブルなどのルックアップテーブルを用いて、第１の象限におけるビン識別子を決定する。表２は、比較器構成要素による１の出力が、Ｇｙの実際の値が対応する推定Ｇｙ値より大きいことを示すと仮定している。表の行の最後の０の位置がビン識別子を決める。すべての出力が１の場合、実際のＧｙはどの推定Ｇｙ値よりも大きく、ビン識別子は１である。
【００３４】
次いで、ビン決定構成要素４１０は、符号ビットを用いて表１により実際の象限を決定し、実際の象限が第１の象限でない場合、ビン決定構成要素４１０は実際の象限においてビン識別子を決定する。正接は対称関数なので、第１の象限における各ビンに対し他の３つの象限の各々に対称ビンがある。例えば、第１の象限におけるビン識別子がｎの場合、他の象限における対称ビン識別子は、ｎの決定論的関数である。ビン決定構成要素４１０の出力は、画素についてのビン識別子である。０度と９０度の間の１つの象限のみにおいて、４００で生成された符号ビットを比較器４０８の出力とともに用いることによって、ビン決定構成要素４１０は、全３６０度空間において実際の画素ビンを正確に識別し得る。
【表２】
2020518052.tif 000007
【００３５】
大きさ構成要素４０４は、ビン識別構成要素４０２からビン識別子を受け取り、勾配演算構成要素４００から勾配Ｇｘ及び符号ビットを受け取り、これらの入力を用いて画素の勾配の大きさを決定する。或る画素について大きさを決定するために、大きさ構成要素４０４は、特定された代表的な方位角の各々に対して大きさを演算し、符号ビット及びビン識別子を用いて、ビン識別子を決定する際に用いられる方位角に対応する演算された大きさを選択する。
【００３６】
大きさ構成要素４０４は、大きさ演算構成要素４１２、大きさセレクタ構成要素４１６、及びマルチプレクサ４１４を含む。大きさ演算構成要素４１２は、複数の代表的な方位角に対応する大きさを演算するように構成される。すなわち、大きさ演算構成要素４１２は、各特定された代表的な方位角を用いて、
Ｇｍａｇ＝Ｇｘ＊ｓｅｃ（θ）
を演算するように構成される。こういった演算は並列に成され、代表的な方位角はＧｙ推定構成要素４０６によって用いられるものと同じである。大きさ演算構成要素の出力は、特定された代表的な方位角に対応する演算された大きさである。
【００３７】
マルチプレクサ４１４は、大きさ演算構成要素４１２の出力の１つを、大きさセレクタ構成要素４１６によって決定されるセレクタを用いて、画素についての大きさとして選択するように構成される。
【００３８】
大きさセレクタ構成要素４１６は、ビン識別構成要素４０２からのビン識別子及び勾配演算構成要素４００からの勾配の符号ビットを用いて、マルチプレクサ４１４のためのセレクタ値を決定するように構成される。代表的な方位角が単一の象限に限定される一方で、ビン識別子は４つの象限のいずれかにあり得るので、ビン識別子は、大きさ演算構成要素４１２の出力の数より大きくなり得る。大きさセレクタ構成要素４１６は、対称正接グラフに従って、すなわち、ビン識別子の複数の値が単一のセレクタ値にマッピングされるように、ビン識別子を量子化するための機能を含む。４つまでのビン識別子値が、同じセレクタにマッピングされ得る。大きさセレクタ構成要素４１６は、或る象限におけるビン数とともに符号ビットを用いて、このマッピングを実施する。
【００３９】
例えば、ＨＯＧアクセレレータ３１２が４０ビンヒストグラムに対して構成される場合、象限当たり１０個のビンがある。ビン決定構成要素４１０が、或る画素についてのビン識別子が１２であり、これが第２の象限に含まれると決定すると仮定する。このビン識別子に対する大きさＧｍａｇは、ビンＩＤ２、２２、及び３２についての大きさと同じである。Ｇｍａｇが正しく分解されることを保証するために、大きさセレクタ構成要素４１６は、ビンＩＤ２、１２、２２、及び３２を同じセレクタ値にマッピングする。
【００４０】
ＨＯＧアクセレレータ３１２はさらに、ビジョン処理応用例によって設定される様々な制御及び構成パラメータをストアするために用いられるメモリマッピングレジスタ（これは特に示されていない）を含む。パラメータには、第１の象限における代表的な方位角値及びビンの数が含まれる。ビジョン処理応用例は、各ビンに対し１つの代表的な方位角値を特定する。
【００４１】
上述したように、Ｇｙ推定構成要素４０６は、代表的な方位角各々に対して、
Ｇｙ＝Ｇｘ＊ｔａｎ（θ）
を演算し、大きさ演算構成要素４１２は、代表的な方位各々に対して、
Ｇｍａｘ＝Ｇｘ＊ｓｅｃ（θ）
を演算する。Ｇｘ＊ｔａｎ（θ）及びＧｘ＊ｓｅｃ（θ）を演算するために任意の適切な技術がこれらの構成要素において用いられ得る。例えば、こういった演算は、ｔａｎ（θ）及びｓｅｃ（θ）についてのルックアップテーブルに基づき得る。
【００４２】
幾つかの例において、こういった演算は、座標回転デジタルコンピュータ（ＣＯＲＤＩＣ）アルゴリズムに基づいて実装される。ＣＯＲＤＩＣは、正接や正割などの三角法関数を計算するための単純シフト可算演算を用いる。すなわち、ｔａｎ（θ）及びｓｅｃ（θ）は、ｉΣ（−１）ｍＸ（２）−ｉ→ＣＯＲＤＩＣ実装と表され得る。ここで、ｉは−８と＋８の間の整数であり、ｍは１又は２である。例えば、ＣＯＲＤＩＣ実装において、Ｇｘｔａｎ＊（２０）≒Ｇｘ＊０．３６が、Ｇｘ＊（０．２５＋０．１２５−０．０１５６２５）→Ｇｘを２だけ左にシフト＋Ｇｘを４だけ左にシフト−Ｇｘを６だけ左にシフトと計算され得、Ｇｘｓｅｃ＊（２０）≒Ｇｘ＊１．００６２５が、Ｇｘ＊ｓｅｃ（２０）→Ｇｘ＋Ｇｘを４だけ右にシフトと計算され得る。幾つかのこのような例において、全ＣＯＲＤＩＣエンジンを実装するのではなく、制限された範囲のＣＯＲＤＩＣエンジンが実装される。ここで、制限された範囲は、アクセレレータがサポートするように設計されるビン／方位角の最大数によって決定される。例えば、或る制限された範囲のＣＯＲＤＩＣエンジンが、３２個のビン／方位角の最大値の計算をサポートするように実装され得る。
【００４３】
図５は、ＨＯＧアクセレレータ３１２などのハードウェアアクセレレータによって成され得る、或る画素についてのビン識別子及び大きさを決定するための方法のフローチャートである。まず、その画素の勾配Ｇｘ及びＧｙが演算される（５００）。勾配を演算するために任意の適切なアルゴリズムを用いられ得る。
【００４４】
次いで、０度と９０度の間の複数の代表的な方位角についてＧｙの値が推定される（５０２）。代表的な方位角の数及び値は、ビジョン処理応用例によって決定され、最大数はハードウェア設計によって設定される。Ｇｙの推定値は、代表的な方位角各々に対して、
Ｇｙ＝Ｇｘ＊ｔａｎ（θ）
により演算される。
【００４５】
推定Ｇｙ値が、実際のＧｙ値と比較されて（５０４）、その画素について最良の代表的な方位角が選択される。上述したように、選択プロセスは、ルックアップテーブルを用いて実装され得る。勾配の符号及び選択された代表的な方位角を用いて（５０６）、その画素についてのビン識別子を決定する。上述したように、勾配の符号は、方位角の実際の象限を決定するために用いられる。
【００４６】
代表的な方位角の各々に対応する大きさＧｍａｇも、
Ｇｍａｇ＝Ｇｘ＊ｓｅｃ（θ）
により演算され（５０８）、ビン識別子及び勾配符号ビットを用いて、ビン識別子を決定するために用いられる代表的な方位角に対応する演算された大きさを選択する（５１０）。
【００４７】
図６は、図３のＳＯＣ３００によって成され得る、或る画像のＨＯＧ記述子を生成するための方法のフローチャートである。まず、カメラ３２４によって捕捉される画像における各画素についてのビン識別子及び大きさが、ＨＯＧアクセレレータ３１２によって決定される（６００）。ＤＳＰ３０４上で実行するビジョン処理応用例が、画像の画素についてのビンＩＤ及び大きさを決定し、そのデータをＲＡＭ３１８にストアするようにＨＯＧアクセレレータ３１２を構成する。ビジョン処理応用例は、ビジョン処理応用例が検出するようにプログラミングされる特定のタイプのオブジェクトに従って、代表的な方位角値及びビン数を用いるようにＨＯＧアクセレレータ３１２を構成する。
【００４８】
次いで、ビンＩＤ及び大きさを用いて複数タイプのオブジェクトの分類に用いるため、ＨＯＧ記述子がＨＯＧジェネレータ３１４によって演算される（６０２）。すなわち、ビジョン処理応用例が検出するようにプログラミングされるオブジェクトの各タイプに対し、ビジョン処理応用例は、ＲＡＭ３１８にストアされたビンＩＤ及び大きさを用いて各オブジェクトタイプに適切な、検出ウィンドウ、セル、及びブロックサイズのためのＨＯＧ記述子を生成するようにＨＯＧジェネレータ３１４を構成する。例えば、ビジョン処理応用例が、歩行者、車両、及び道路標識を検出するようにプログラムされる場合、ビジョン処理応用例は、歩行者を検出するためのＨＯＧ記述子を生成するようにＨＯＧジェネレータ３１４をプログラムする。このタスクが完了すると、ビジョン処理応用例は、車両のためのＨＯＧ記述子を生成するようにＨＯＧジェネレータ３１４をプログラムする。このタスクが完了すると、ビジョン処理応用例は、道路標識のためのＨＯＧ記述子を生成するようにＨＯＧジェネレータ３１４をプログラムする。ＨＯＧジェネレータ３１４は、これらのＨＯＧ記述子生成タスクの各々に対して、ＲＡＭ３１８にストアされたビンＩＤ及び大きさを再利用する。
【００４９】
他の例
本明細書において説明される幾つかの例において、ビン決定構成要素４１０は、第１の象限におけるビン識別子を決定するために、表２のルックアップテーブルなどのルックアップテーブルを用い、次いで、符号を適用して、実際の象限及び真のビン識別子を決定する。他の例において表は符号を含む。
【００５０】
本明細書では、一度に１つの画素に作用するＨＯＧアクセレレータの例を説明している。他の例において、ＨＯＧアクセレレータは、複数の画素に並列に作用する付加的な機能を有する。
【００５１】
幾つかの例において、ＳＯＣはＨＯＧジェネレータを含まず、ＨＯＧジェネレータの機能（ＨＯＧアクセレレータの出力を用いるＨＯＧ記述子の生成など）は、ＳＯＣのプロセッサの１つに対して実行される応用例によって成される。
【００５２】
本明細書において説明される幾つかの例において、任意の象限に存し得るビン識別子が、大きさセレクタ構成要素によって量子化されて、大きさのためのセレクタが生成される。他の例において、第１の象限に対して生成された当初のビン識別子が、大きさを選択するために用いられ、大きさセレクタ構成要素は存在しない。
【００５３】
幾つかの例において、ＨＯＧジェネレータ及びＨＯＧアクセレレータが単一のアクセレレータにおいて組み合わされる。
【００５４】
本明細書において、構成可能なＨＯＧジェネレータの例を本明細書で説明している。他の例において、ＨＯＧアクセレレータは、所定の角度値及び所定のビン数を有する。
【００５５】
幾つかの例において、ＲＡＭにおけるピンポンバッファを用いてＨＯＧアクセレレータの出力をストアし、そのため、ＨＯＧジェネレータは、一方のバッファにおいて１つの画像のためのデータを用いることができ、その間に、ＨＯＧアクセレレータは、別の画像についてビンＩＤ及び大きさを生成し、そのデータを他方のバッファにストアしている。
【００５６】
特許請求の範囲内で、説明した実施形態における改変が可能であり、他の実施形態が可能である。
【図１】
2020518052.tif 000008
【図２】
2020518052.tif 000009
【図３】
2020518052.tif 000010
【図４】
2020518052.tif 000011
【図５】
2020518052.tif 000012
【図６】
2020518052.tif 000013
【国際調査報告】
2020518052.tif 000014