(57)【要約】【課題】物体検出の精度を向上させることができるＨＯＧを生成することができる勾配方向ヒストグラム生成装置を提供する。【解決手段】画像の輝度の勾配方向ヒストグラムを生成するための勾配方向ヒストグラム生成装置１００は、画像に含まれる画素の輝度の勾配ベクトルを算出する算出部１１０と、勾配方向ヒストグラムの複数の方向ビンに対応する複数の基底ベクトルのうちの２つの基底ベクトルに勾配ベクトルを分解することにより、２つの基底ベクトルの係数を導出する分解部１２０と、導出された２つの基底ベクトルの係数を対応する方向ビンに投票する投票部１３０と、を備える。【選択図】図３
2019012326.tif 000002
【特許請求の範囲】
【請求項１】
画像の輝度の勾配方向ヒストグラムを生成するための勾配方向ヒストグラム生成装置であって、
前記画像に含まれる画素の輝度の勾配ベクトルを算出する算出部と、
勾配方向ヒストグラムの複数の方向ビンに対応する複数の基底ベクトルのうちの２つの基底ベクトルに前記勾配ベクトルを分解することにより、前記２つの基底ベクトルの係数を導出する分解部と、
導出された前記２つの基底ベクトルの係数の各々を対応する方向ビンに投票する投票部と、を備える、
勾配方向ヒストグラム生成装置。
【請求項２】
前記分解部は、前記複数の基底ベクトルに含まれる隣り合う２つの基底ベクトルの複数のペアの各々について、前記勾配ベクトルを２つの基底ベクトルに分解し、前記複数のペアの中から、２つの基底ベクトルの係数がともに０以上となるペアを選択し、
前記投票部は、選択された前記ペアに対応する２つの方向ビンに前記２つの基底ベクトルの係数を投票する、
請求項１に記載の勾配方向ヒストグラム生成装置。
【請求項３】
前記分解部は、
前記２つの基底ベクトルの一方の垂直値を、前記勾配ベクトルの水平値の符号が反転された値に乗算して第１乗算結果を出力する第１乗算器と、
前記２つの基底ベクトルの一方の水平値を、前記勾配ベクトルの垂直値に乗算して第２乗算結果を出力する第２乗算器と、
前記２つの基底ベクトルの他方の垂直値を、前記勾配ベクトルの水平値の符号が反転された値に乗算して第３乗算結果を出力する第３乗算器と、
前記２つの基底ベクトルの他方の水平値を、前記勾配ベクトルの垂直値に乗算して第４乗算結果を出力する第４乗算器と、
前記第１乗算結果を前記第２乗算結果に加算する第１加算器と、
前記第３乗算結果を前記第４乗算結果に加算する第２加算器と、を備え、
前記分解部は、前記第１加算器の出力及び前記第２加算器の出力に基づいて、前記２つの基底ベクトルの係数を導出する、
請求項１又は２に記載の勾配方向ヒストグラム生成装置。
【請求項４】
前記複数の方向ビンは、０〜πラジアンの範囲にわたって等間隔で広がる６つの方向ビンであり、
前記複数の基底ベクトルは、水平方向からπ／６ラジアン間隔で順に並ぶ６つの基底ベクトルであり、
前記分解部は、
前記勾配ベクトルの水平値の符号を反転して出力する第１符号反転器と、
前記勾配ベクトルの水平値が０未満である場合に前記勾配ベクトルの垂直値の符号を反転して出力し、前記勾配ベクトルの水平値が０以上である場合に前記勾配ベクトルの垂直値の符号を反転せずに出力する第２符号反転器と、
前記複数の基底ベクトルのうちの２番目の基底ベクトルの垂直値を、前記第１符号反転器の出力値に乗算して第１乗算結果を出力する第１乗算器と、
前記２番目の基底ベクトルの水平値を、前記第２符号反転器の出力値に乗算して第２乗算結果を出力する第２乗算器と、
前記複数の基底ベクトルのうちの３番目の基底ベクトルの垂直値を、前記第１符号反転器の出力値に乗算して第３乗算結果を出力する第３乗算器と、
前記３番目の基底ベクトルの水平値を、前記第２符号反転器の出力値に乗算して第４乗算結果を出力する第４乗算器と、
前記第１乗算結果を前記第２乗算結果に加算する第１加算器と、
前記第３乗算結果を前記第４乗算結果に加算する第２加算器と、
前記第１符号反転器、前記第２符号反転器、前記第１加算器及び前記第２加算器の出力のいずれかを選択して出力する第１選択器と、
前記第１選択器の出力の符号を反転して出力する第３符号反転器と、を備える、
請求項１又は２に記載の勾配方向ヒストグラム生成装置。
【請求項５】
画像の輝度の勾配方向ヒストグラムを生成するための勾配方向ヒストグラム生成方法であって、
前記画像に含まれる画素の輝度の勾配ベクトルを算出し、
勾配方向ヒストグラムの複数の方向ビンを規定する複数の基底ベクトルのうちの２つの基底ベクトルに前記勾配ベクトルを分解することにより、前記２つの基底ベクトルの係数を導出し、
導出された前記２つの基底ベクトルの係数の各々を対応する方向ビンに投票する、
勾配方向ヒストグラム生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像特徴記述子の１つである勾配方向ヒストグラム（ＨＯＧ：Ｈｉｓｔｏｇｒａｍｓ  ｏｆ  Ｏｒｉｅｎｔｅｄ  Ｇｒａｄｉｅｎｔｓ）を生成するための装置及び方法に関する。
【背景技術】
【０００２】
近年、画像中の物体検出の技術は、有益な特徴記述子及び高度な機械学習の出現により、処理速度及び精度の両面において目覚ましい進歩を遂げている。ＨＯＧは、このような物体検出に用いられる特徴記述子の１つであり、画像内の局所的な輝度の勾配方向の発生頻度を表す。例えば、非特許文献１には、ＨＯＧを抽出する方法が開示されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｎａｖｎｅｅｔ  Ｄａｌａｌ  ａｎｄ  Ｂｉｌｌ  Ｔｒｉｇｇｓ，  “Ｈｉｓｔｏｇｒａｍｓ  ｏｆ  Ｏｒｉｅｎｔｅｄ  Ｇｒａｄｉｅｎｔｓ  ｆｏｒ  Ｈｕｍａｎ  Ｄｅｔｅｃｔｉｏｎ”，  Ｐｒｏｃ．  ＩＥＥＥ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  ａｎｄ  Ｐａｔｔｅｒｎ  Ｒｅｃｏｇｎｉｔｉｏｎ（ＣＶＰＲ），ｐｐ．８８６−８９３，２００５．
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このような従来技術に対して、物体検出のさらなる精度の向上のためにＨＯＧの改善が求められている。
【０００５】
そこで、本発明は、物体検出の精度を向上させることができるＨＯＧを生成することができる勾配方向ヒストグラム生成装置及び勾配方向ヒストグラム生成方法を提供する。
【課題を解決するための手段】
【０００６】
本発明の一態様に係る勾配方向ヒストグラム生成装置は、画像の輝度の勾配方向ヒストグラムを生成するための勾配方向ヒストグラム生成装置であって、前記画像に含まれる画素の輝度の勾配ベクトルを算出する算出部と、勾配方向ヒストグラムの複数の方向ビンに対応する複数の基底ベクトルのうちの２つの基底ベクトルに前記勾配ベクトルを分解することにより、前記２つの基底ベクトルの係数を導出する分解部と、導出された前記２つの基底ベクトルの係数の各々を対応する方向ビンに投票する投票部と、を備える。
【０００７】
なお、これらの包括的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【０００８】
本発明の一態様に係るＨＯＧ生成装置は、物体検出の精度向上が可能なＨＯＧを生成することができる。
【図面の簡単な説明】
【０００９】
【図１Ａ】図１Ａは、ＨＯＧにおける基底ベクトルの一例を示す図である。
【図１Ｂ】図１Ｂは、ＨＯＧにおける基底ベクトルの他の一例を示す図である。
【図２Ａ】図２Ａは、従来のＨＯＧにおける勾配ベクトルと方向ビンとの関係の一例を説明するための図である。
【図２Ｂ】図２Ｂは、従来のＨＯＧにおける勾配ベクトルと方向ビンとの関係の他の一例を説明するための図である。
【図３】図３は、実施の形態に係るＨＯＧ生成装置の機能構成を示すブロック図である。
【図４Ａ】図４Ａは、実施の形態に係る勾配ベクトルの分解の説明図である。
【図４Ｂ】図４Ｂは、実施の形態に係る勾配ベクトルの分解の説明図である。
【図５】図５は、実施の形態に係るＨＯＧ生成装置の処理を示すフローチャートである。
【図６】図６は、実施の形態における勾配ベクトルの分解処理を示すフローチャートである。
【図７】図７は、実施の形態における勾配ベクトルの分解処理を表す疑似コードである。
【図８】図８は、変形例における勾配ベクトルの分解処理を示すフローチャートである。
【図９】図９は、変形例における勾配ベクトルの分解処理を表す疑似コードである。
【図１０】図１０は、実施例１における分解部のハードウェア構成を示す図である。
【図１１】図１１は、実施例２における分解部のハードウェア構成を示す図である。
【発明を実施するための形態】
【００１０】
（本発明の基礎となった知見）
上記従来技術において、ＨＯＧの生成では、まず、物体検出の対象となる画像が複数の領域（以下においてセルという）に分割される。そして、各セルにおいて、当該セルに含まれる画素ごとに勾配ベクトルｇ（ｇx，ｇy）が算出される。勾配ベクトルｇは、以下の式（１）及び式（２）に示す大きさＭ及び角度θで定義される。
【００１１】
【数１】
2019012326.tif 000003
【数２】
2019012326.tif 000004
【００１２】
ここで、ｇx及びｇyは、勾配ベクトルｇの水平値（水平勾配）及び垂直値（垂直勾配）を表し、以下の式（３）で定義される。
【００１３】
【数３】
2019012326.tif 000005
【００１４】
ここで、Ｉは輝度（Ｉｎｔｅｎｓｉｔｙ）を表す。このように得られる勾配ベクトルごとに、ヒストグラムの複数の方向ビンのうちの角度θが属する方向ビンにＭが投票される。ここでは、複数の方向ビンは、予め定められた方向の範囲（例えば０からπラジアンまでの範囲（以下、ハーフ範囲という）又は０から２πラジアンまでの範囲（以下、フル範囲という））にわたって等間隔で広がっている。なお、方向ビンは、方向区間あるいは方向カテゴリとも呼ばれる。
【００１５】
図１Ａ及び図１Ｂは、ハーフ範囲及びフル範囲における複数の基底ベクトルの一例を示す図である。図１Ａ及び図１Ｂにおいて、各ｕiは、大きさが１の基底ベクトル（方向単位ベクトルという場合もある）を表す。方向ビンがＮ個の場合、Ｎ個の基底ベクトルｕi（ｉ＝０〜Ｎ−１）は、以下の式（４）で定義される。
【００１６】
【数４】
2019012326.tif 000006
【００１７】
ここで、θi＝ｉθ1であり、θ1は、隣り合う基底ベクトル間の角度を表す。具体的には、θ1は、ハーフ範囲ではπ／Ｎに一致し、フル範囲では２π／Ｎに一致する。なお、図１Ａ及び図１Ｂでは、Ｎ＝６の場合の６つの基底ベクトルが示されており、６つの基底ベクトルは、水平方向からπ／６ラジアン又はπ／３ラジアン間隔で順に並んでいる。
【００１８】
このような複数の基底ベクトルによって複数の方向ビンが定義される。図２Ａ及び図２Ｂは、基底ベクトルと方向ビンとの関係の一例を示す図である。図２Ａでは、基底ベクトルは方向ビンの境界として用いられ、図２Ｂでは、基底ベクトルは方向ビンの中心として用いられている。
【００１９】
例えば、図２Ａでは、勾配ベクトルｇは、基底ベクトルｕ0に対応する方向ビン（影領域）に含まれる。また、図２Ｂでは、勾配ベクトルｇは、基底ベクトルｕ1に対応する方向ビン（影領域）に含まれる。
【００２０】
従来のＨＯＧの生成では、勾配ベクトルごとに、その大きさＭが単一の方向ビンに投票される。例えば、図２Ａでは、勾配ベクトルｇの大きさＭは、インデックスｉ*＝０の単位ベクトルに対応する方向ビンに投票される。また、図２Ｂでは、勾配ベクトルｇの大きさＭは、インデックスｉ*＝１の単位ベクトルに対応する方向ビンに投票される。
【００２１】
したがって、方向ビン内おける勾配ベクトルの方向の違いが投票結果に反映されず、ＨＯＧにおける勾配ベクトルの情報の損失が大きい。その結果、物体検出の精度が低下する場合がある。
【００２２】
そこで、本発明では、ＨＯＧにおいて勾配ベクトルの情報の損失を低減し、物体検出の精度を向上させることができるＨＯＧを生成することができる勾配方向ヒストグラム生成装置及び勾配方向ヒストグラム生成方法を提供する。
【００２３】
本発明の一態様に係る勾配方向ヒストグラム生成装置は、画像の輝度の勾配方向ヒストグラムを生成するための勾配方向ヒストグラム生成装置であって、前記画像に含まれる画素の輝度の勾配ベクトルを算出する算出部と、勾配方向ヒストグラムの複数の方向ビンに対応する複数の基底ベクトルのうちの２つの基底ベクトルに前記勾配ベクトルを分解することにより、前記２つの基底ベクトルの係数を導出する分解部と、導出された前記２つの基底ベクトルの係数の各々を対応する方向ビンに投票する投票部と、を備える。
【００２４】
この構成によれば、勾配ベクトルを２つの基底ベクトルに分解することにより、２つの基底ベクトルの係数を導出し、導出された２つの基底ベクトルの係数を対応する方向ビンに投票することができる。したがって、勾配ベクトルの方向に応じて、勾配ベクトルの大きさを２つの方向ビンに分配することができる。その結果、ＨＯＧにおいて勾配ベクトルの情報の損失を低減し、ＨＯＧを用いた物体検出の精度の向上に貢献することができる。また、勾配ベクトルの分解は、基底ベクトルの水平値又は垂直値と勾配ベクトルの垂直値又は水平値との乗算によって実現することができる。つまり、勾配ベクトルの分解は、定数乗算器によって実現することができるので、分解部を専用電子回路で実現する場合に回路規模の縮小及び消費電力の低減を実現することができる。
【００２５】
また例えば、前記分解部は、前記複数の基底ベクトルに含まれる隣り合う２つの基底ベクトルの複数のペアの各々について、前記勾配ベクトルを２つの基底ベクトルに分解し、前記複数のペアの中から、２つの基底ベクトルの係数がともに０以上となるペアを選択し、前記投票部は、選択された前記ペアに対応する２つの方向ビンに前記２つの基底ベクトルの係数を投票してもよい。
【００２６】
この構成によれば、２つの基底ベクトルの係数がともに０以上となる基底ベクトルのペアを選択することで、勾配ベクトルを挟んで隣り合う２つの基底ベクトルに勾配ベクトルを分解することができる。したがって、方向ビンの範囲あるいは数に関わらず汎用的な方法で勾配ベクトルを分解することができる。
【００２７】
また例えば、前記分解部は、前記２つの基底ベクトルの一方の垂直値を、前記勾配ベクトルの水平値の符号が反転された値に乗算して第１乗算結果を出力する第１乗算器と、前記２つの基底ベクトルの一方の水平値を、前記勾配ベクトルの垂直値に乗算して第２乗算結果を出力する第２乗算器と、前記２つの基底ベクトルの他方の垂直値を、前記勾配ベクトルの水平値の符号が反転された値に乗算して第３乗算結果を出力する第３乗算器と、前記２つの基底ベクトルの他方の水平値を、前記勾配ベクトルの垂直値に乗算して第４乗算結果を出力する第４乗算器と、前記第１乗算結果を前記第２乗算結果に加算する第１加算器と、前記第３乗算結果を前記第４乗算結果に加算する第２加算器と、を備え、前記分解部は、前記第１加算器の出力及び前記第２加算器の出力に基づいて、前記２つの基底ベクトルの係数を導出してもよい。
【００２８】
この構成によれば、基底ベクトルの水平値又は垂直値を勾配ベクトルの垂直値又は水平値に乗算する乗算器と乗算器の出力を加算する加算器とを用いてベクトルの分解を専用電子回路で実現することができる。このとき、基底ベクトルの水平値及び垂直値は定数であるので、乗算器として定数乗算器を用いることができ、回路規模の縮小及び消費電力の低減を実現することができる。
【００２９】
また例えば、前記複数の方向ビンは、０〜πラジアンの範囲にわたって等間隔で広がる６つの方向ビンであり、前記複数の基底ベクトルは、水平方向からπ／６ラジアン間隔で順に並ぶ６つの基底ベクトルであり、前記分解部は、前記勾配ベクトルの水平値の符号を反転して出力する第１符号反転器と、前記勾配ベクトルの水平値が０未満である場合に前記勾配ベクトルの垂直値の符号を反転して出力し、前記勾配ベクトルの水平値が０以上である場合に前記勾配ベクトルの垂直値の符号を反転せずに出力する第２符号反転器と、前記複数の基底ベクトルのうちの２番目の基底ベクトルの垂直値を、前記第１符号反転器の出力値に乗算して第１乗算結果を出力する第１乗算器と、前記２番目の基底ベクトルの水平値を、前記第２符号反転器の出力値に乗算して第２乗算結果を出力する第２乗算器と、前記複数の基底ベクトルのうちの３番目の基底ベクトルの垂直値を、前記第１符号反転器の出力値に乗算して第３乗算結果を出力する第３乗算器と、前記３番目の基底ベクトルの水平値を、前記第２符号反転器の出力値に乗算して第４乗算結果を出力する第４乗算器と、前記第１乗算結果を前記第２乗算結果に加算する第１加算器と、前記第３乗算結果を前記第４乗算結果に加算する第２加算器と、前記第１符号反転器、前記第２符号反転器、前記第１加算器及び前記第２加算器の出力のいずれかを選択して出力する第１選択器と、前記第１選択器の出力の符号を反転して出力する第３符号反転器と、を備えてもよい。
【００３０】
この構成によれば、ハーフ範囲の６つの方向ビンがＨＯＧに適用される場合に、分解部は、２番目及び３番目の基底ベクトルに対応する乗算器を備えればよいので、すべての基底ベクトルに対応する乗算器を備える場合よりも、乗算器の数を削減することができ、回路規模を縮小することができる。
【００３１】
なお、これらの包括的又は具体的な態様は、システム、方法、集積回路、コンピュータプログラム又はコンピュータ読み取り可能なＣＤ−ＲＯＭなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。
【００３２】
以下、実施の形態について、図面を参照しながら具体的に説明する。
【００３３】
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、請求の範囲を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
【００３４】
また、各図は、必ずしも厳密に図示したものではない。各図において、実質的に同一の構成については同一の符号を付し、重複する説明は省略又は簡略化する。
【００３５】
（実施の形態）
［ＨＯＧ生成装置の機能構成］
まず、本実施の形態に係るＨＯＧ生成装置の機能構成について図３〜図４Ｂを参照しながら具体的に説明する。
【００３６】
図３は、実施の形態に係るＨＯＧ生成装置１００の機能構成を示すブロック図である。ＨＯＧ生成装置１００は、算出部１１０と、分解部１２０と、投票部１３０と、を備える。例えば、ＨＯＧ生成装置１００は、算出部１１０、分解部１２０及び投票部１３０に対応する１以上の専用の電子回路によって実現される。１以上の専用の電子回路は、１個のチップ上に集積されてもよいし、別々のチップ上に形成されてもよい。また、ＨＯＧ生成装置１００は、１以上の専用の電子回路の代わりに、汎用プロセッサ（図示せず）と、ソフトウェアプログラム又はインストラクションが格納されたメモリ（図示せず）とによって実現されてもよい。この場合、ソフトウェアプログラム又はインストラクションが実行されたときに、プロセッサは、算出部１１０、分解部１２０及び投票部１３０として機能する。
【００３７】
算出部１１０は、画像に含まれる画素の勾配ベクトルを算出する。具体的には、算出部１１０は、式（１）〜式（３）に基づいて、画像に含まれる各画素の輝度の勾配ベクトルｇを算出する。
【００３８】
分解部１２０は、勾配ベクトルを２つの基底ベクトルに分解することにより、２つの基底ベクトルの係数を導出する。つまり、分解部１２０は、勾配ベクトルを、当該勾配ベクトルと等しい、２つの基底ベクトルの和に変換する。
【００３９】
２つの基底ベクトルｕi及びｕi+1の係数ａi及びｂiは、基底ベクトル及び勾配ベクトルを用いて以下の式（５）のように表される。したがって、２つの基底ベクトルｕi及びｕi+1の係数ａi及びｂiは、式（６）により導出される。
【００４０】
【数５】
2019012326.tif 000007
【数６】
2019012326.tif 000008
【００４１】
ここで、ｉは、方向ビンのインデックスであり、基底ベクトルｕiは、ｉ番目の方向ビンに対応する。
【００４２】
２つの基底ベクトルは、ＨＯＧの複数の方向ビンに対応する複数の基底ベクトル（方向単位ベクトル）に含まれる隣り合う基底ベクトルである。ベクトル分解に用いられる２つの基底ベクトルは、勾配ベクトルｇを挟んで隣り合う２つの単位ベクトルであり、図２Ａ及び図２Ｂでは基底ベクトルｕ0及びｕ1である。
【００４３】
ベクトル分解に用いられる２つの基底ベクトルは、複数の基底ベクトルの中から選択される。例えば、分解部１２０は、複数の基底ベクトルに含まれる隣り合う２つの基底ベクトルの複数のペアの各々について、勾配ベクトルを２つの基底ベクトルに分解し、複数のペアの中から、２つの基底ベクトルの係数がともに０以上となるペアを選択する。この基底ベクトルのペアの選択について、図４Ａ及び図４Ｂを用いて具体的に説明する。
【００４４】
図４Ａでは、勾配ベクトルｇは、２つの基底ベクトルｕ0及びｕ1に分解され、係数ａ0及びｂ0が導出されている。一方、図４Ｂでは、勾配ベクトルｇは、２つの基底ベクトルｕ1及びｕ2に分解され、係数ａ1及びｂ1が導出されている。同様に、他の基底ベクトルｕ2〜ｕ5のうちの隣り合う２つの基底ベクトルのペアについても勾配ベクトルｇが分解される。
【００４５】
このとき、図４Ａに示すように勾配ベクトルｇを挟む２つの基底ベクトルｕ0及びｕ1の係数ａ0及びｂ0はともに０以上となる。一方、勾配ベクトルｇを挟まない２つの基底ベクトルの係数の少なくとも一方は０未満となる。例えば図４Ｂに示すように、２つの基底ベクトルｕ1及びｕ2の係数ａ1及びｂ1の一方（ここではｂ1）は０未満となる。したがって、基底ベクトルの複数のペアの中から、２つの基底ベクトルの係数がともに０以上となるペアを選択することで、勾配ベクトルを挟んで隣り合う２つの基底ベクトルが選択される。
【００４６】
投票部１３０は、勾配ベクトルから導出された２つの基底ベクトルの係数の各々を対応する方向ビンに投票する。つまり、投票部１３０は、２つの基底ベクトルの各々について、当該基底ベクトルに対応する方向ビンの値に当該基底ベクトルの係数を加算する。例えば、投票部１３０は、係数ａ0を基底ベクトルｕ0に対応するインデックスｉ＝０の方向ビンに投票し、係数ｂ0を基底ベクトルｕ1に対応するインデックスｉ＝１の方向ビンに投票する。
【００４７】
［ＨＯＧ生成装置の動作］
次に、以上のように構成されたＨＯＧ生成装置１００の動作について図５〜図７を参照しながら具体的に説明する。図５は、実施の形態に係るＨＯＧ生成装置１００の処理を示すフローチャートである。
【００４８】
まず、ＨＯＧ生成装置１００は、画像を複数のセルに分割する（Ｓ１０１）。セルは、画像内の例えば５ｘ５画素の領域である。
【００４９】
ＨＯＧ生成装置１００は、複数のセルの中から未選択のセルを選択する（Ｓ１０２）。そして、ＨＯＧ生成装置１００は、選択されたセルに含まれる複数の画素の中から未選択の画素を選択する（Ｓ１０３）。
【００５０】
算出部１１０は、選択された画素の勾配ベクトルを算出する（Ｓ１０４）。例えば、算出部１１０は、選択された画素に水平に隣接する２つの画素の輝度値の差分値と、選択された画素に垂直に隣接する２つの画素の輝度値の差分値と、を算出する。
【００５１】
分解部１２０は、算出された勾配ベクトルを２つの基底ベクトルに分解する（Ｓ１０５）。この処理の詳細については図６及び図７を用いて後述する。
【００５２】
投票部１３０は、分解部１２０によって導出された２つの基底ベクトルの係数の各々をＨＯＧの対応する方向ビンに投票する（Ｓ１０６）。つまり、投票部１３０は、２つの基底ベクトルの係数の各々を、当該基底ベクトルに対応する方向ビンの頻度値に加算する。
【００５３】
ＨＯＧ生成装置１００は、選択されたセル内に未選択の画素が存在するか否かを判定する（Ｓ１０７）。ここで、選択されたセル内に未選択の画素が存在する場合（Ｓ１０７のＹｅｓ）、ステップＳ１０３の画素の選択に戻る。一方、選択されたセル内に未選択の画素が存在しない場合（Ｓ１０７のＮｏ）、ＨＯＧ生成装置１００は、画像内に未選択のセルが存在するか否かを判定する（Ｓ１０８）。ここで、画像内に未選択のセルが存在する場合（Ｓ１０８のＹｅｓ）、ステップＳ１０２のセルの選択に戻る。一方、画像内に未選択のセルが存在しない場合（Ｓ１０８のＮｏ）、ＨＯＧ生成装置１００は、セルごとの投票結果をＨＯＧとして出力する（Ｓ１０９）。このとき、ＨＯＧ生成装置１００は、いくつかのセルの集合単位で投票結果の正規化を行ってもよい。
【００５４】
次に、図６及び図７を参照しながら、ステップＳ１０５の処理について具体的に説明する。図６は、実施の形態における勾配ベクトルの分解処理を示すフローチャートである。図７は、実施の形態における勾配ベクトルの分解処理を表す疑似コードである。
【００５５】
分解部１２０は、勾配ベクトルｇの垂直値ｇyが０未満か否かを判定する（Ｓ２０１）。ここで、垂直値ｇyが０未満である場合（Ｓ２０１のＹｅｓ）、分解部１２０は、勾配ベクトルの水平値ｇx及び垂直値ｇyの符号（プラス、マイナス）を反転する（Ｓ２０２）。つまり、π〜２πラジアンの範囲内の角度を有する勾配ベクトルは、πラジアン加算されて０〜πラジアンの範囲内の角度を有する勾配ベクトルに変換される。一方、垂直値ｇyが０以上である場合（Ｓ２０１のＮｏ）、ステップＳ２０２はスキップされる。ステップＳ２０１〜Ｓ２０２は、図７の１〜４行目に相当する。
【００５６】
次に、分解部１２０は、以下の式（７）により係数ｂ0を導出する（Ｓ２０３）。このステップＳ２０３は、図７の５行目に相当する。
【００５７】
【数７】
2019012326.tif 000009
【００５８】
分解部１２０は、カウンタｉに「１」を設定することにより、カウンタｉを初期化する（Ｓ２０４）。そして、分解部１２０は、以下の式（８）により係数ａi-1及びｂiを導出する（Ｓ２０５）。
【００５９】
【数８】
2019012326.tif 000010
【００６０】
分解部１２０は、カウンタｉを１だけインクリメントする（Ｓ２０６）。分解部１２０は、カウンタｉがビン数Ｎより大きいか否かを判定する（Ｓ２０７）。ここで、カウンタｉがビン数Ｎ以下である場合（Ｓ２０７のＮｏ）、ステップＳ２０５に戻る。ステップＳ２０４〜ステップＳ２０７は、図７の６〜９行目に相当する。
【００６１】
一方、カウンタｉがビン数Ｎより大きい場合（Ｓ２０７のＹｅｓ）、分解部１２０は、カウンタｉに「０」を設定することにより、カウンタｉを初期化する（Ｓ２０８）。続いて、分解部１２０は、係数ａi及びｂiの両方が０以上であるか否かを判定する（Ｓ２０９）。ここで、係数ａi及びｂiの一方又は両方が０未満である場合（Ｓ２０９のＮｏ）、カウンタｉを１だけインクリメントして（Ｓ２１０）、ステップＳ２０９に戻る。一方、係数ａi及びｂiの両方が０以上である場合（Ｓ２０９のＹｅｓ）、分解部１２０は、インデックスｉ*にカウンタｉを設定する（Ｓ２１１）。そして、分解部１２０は、インデックスｉ*、係数ａi*及びｂi*を出力して（Ｓ２１２）、処理を終了する。ステップＳ２０８〜ステップＳ２１２は、図７の１０行目に相当する。
【００６２】
［効果等］
以上のように、本実施の形態に係るＨＯＧ生成装置１００によれば、分解部１２０は、勾配ベクトルを２つの基底ベクトルに分解することにより、２つの基底ベクトルの係数を導出することができ、投票部１３０は、導出された２つの基底ベクトルの係数を対応する方向ビンに投票することができる。したがって、ＨＯＧ生成装置１００は、勾配ベクトルの方向に応じて、勾配ベクトルの大きさを２つの方向ビンに分配することができる。その結果、ＨＯＧ生成装置１００は、ＨＯＧにおいて勾配ベクトルの情報の損失を低減し、ＨＯＧを用いた物体検出の精度の向上に貢献することができる。また、勾配ベクトルの分解は、基底ベクトルの水平値又は垂直値と勾配ベクトルの垂直値又は水平値との乗算によって実現することができる。つまり、勾配ベクトルの分解は、定数乗算器によって実現することができるので、分解部を専用電子回路で実現する場合に回路規模の縮小及び消費電力の低減を実現することができる。
【００６３】
また、本実施の形態に係るＨＯＧ生成装置１００によれば、分解部１２０は、２つの基底ベクトルの係数がともに０以上となる基底ベクトルのペアを選択することで、勾配ベクトルを挟んで隣り合う２つの基底ベクトルに勾配ベクトルを分解することができる。したがって、分解部１２０は、方向ビンの範囲あるいは数に関わらず汎用的な方法で勾配ベクトルを分解することができる。
【００６４】
（変形例）
次に、実施の形態の変形例について説明する。本変形例では、基底ベクトルの対称性に基づいて、いくつかの基底ベクトルの係数の計算処理を省略する点が上記実施の形態と異なる。本変形例について、上記実施の形態と異なる点を中心に図８を参照しながら具体的に説明する。
【００６５】
なお、本変形例に係るＨＯＧ生成装置の機能構成は、上記実施の形態と実質的に同一であるので、図示及び説明を省略する。
【００６６】
［ＨＯＧ生成装置の動作］
次に、図８及び図９を参照しながら、本変形例における図５のステップＳ１０５の処理について具体的に説明する。図８は、変形例における勾配ベクトルの分解処理を示すフローチャートである。図９は、変形例における勾配ベクトルの分解処理を表す疑似コードである。
【００６７】
図９の１〜４行目に相当するステップＳ２０１、Ｓ２０２が行われた後に、分解部１２０は、カウンタｉに「０」を設定することにより、カウンタｉを初期化する（Ｓ３０１）。次に、分解部１２０は、以下の式（９）によりｔix及びｔiｙを算出する（Ｓ３０２）。
【００６８】
【数９】
2019012326.tif 000011
【００６９】
分解部１２０は、カウンタｉを１だけインクリメントし（Ｓ３０３）、カウンタｉがＮ／２より大きいか否かを判定する（Ｓ３０４）。ここで、カウンタｉがＮ／２以下である場合（Ｓ３０４のＮｏ）、ステップＳ３０２に戻る。ステップＳ３０１〜Ｓ３０４は、図９の５〜８行目に相当する。
【００７０】
一方、カウンタｉがＮ／２より大きい場合（Ｓ３０４のＹｅｓ）、分解部１２０は、以下の式（１０）により係数ｂ0を導出する（Ｓ３０５）。このステップＳ３０５は、図９の９行目に相当する。
【００７１】
【数１０】
2019012326.tif 000012
【００７２】
次に、分解部１２０は、カウンタｉに「１」を設定することにより、カウンタｉを初期化する（Ｓ３０６）。分解部１２０は、カウンタｉがＮ／２以下か否かを判定する（Ｓ３０７）。ここで、カウンタｉがＮ／２以下である場合（Ｓ３０７のＹｅｓ）、分解部１２０は、以下の式（１１）により係数ｂiを導出する（Ｓ３０８）。
【００７３】
【数１１】
2019012326.tif 000013
【００７４】
一方、カウンタｉがＮ／２より大きい場合（Ｓ３０７のＮｏ）、分解部１２０は、以下の式（１２）により係数ｂiを導出する（Ｓ３０９）。
【００７５】
【数１２】
2019012326.tif 000014
【００７６】
続いて、分解部１２０は、以下の式（１３）により係数ａi-1を導出する（Ｓ３１０）。
【００７７】
【数１３】
2019012326.tif 000015
【００７８】
分解部１２０は、カウンタｉを１だけインクリメントし（Ｓ３１１）、カウンタｉがＮより大きいか否かを判定する（Ｓ３１２）。カウンタｉがＮ以下である場合（Ｓ３１２のＮｏ）、ステップＳ３０７に戻る。ステップＳ３０６〜Ｓ３１２は、図９の１０〜１３行目に相当する。
【００７９】
その後、図９の１４行目に相当するステップＳ２０８〜ステップＳ２１２が実行される。
【００８０】
なお、本実施の形態では、いくつかのセルの集合単位での投票結果の正規化が必要となる。これにより、式（１０）〜式（１３）等において、式（６）の分母の値の計算を省略することができる。
【００８１】
［効果等］
以上のように、本変形例に係るＨＯＧ生成装置によれば、垂直軸に対する複数の基底ベクトルの対称性を利用して、基底ベクトルの垂直値又は水平値と、勾配ベクトルの水平値又は垂直値との乗算回数を削減することができる。したがって、分解部１２０の回路規模あるいは計算負荷を削減することができる。
【００８２】
（実施例１）
次に、実施例１における分解部１２０のハードウェア構成について説明する。本実施例では、図１Ａに示すハーフ範囲の６つの方向ビンがＨＯＧに適用される場合について説明する。
【００８３】
図１０は、実施例１における分解部１２０のハードウェア構成を示す図である。図１０に示すように、分解部１２０は、係数導出部１２００と、ビン選択部１２２０とを備える。
【００８４】
係数導出部１２００は、方向ビンに投票する係数ａi*及びｂi*を出力するための電子回路である。係数導出部１２００は、第１符号反転器１２０１及び第２符号反転器１２０２と、第１〜第４乗算器１２０３〜１２０６と、第１加算器１２０７及び第２加算器１２０８と、第１選択器１２０９及び第２選択器１２１０と、第３符号反転器１２１１と、を備える。
【００８５】
第１符号反転器１２０１は、勾配ベクトルｇの水平値ｇxの符号（プラス、マイナス）を反転し、反転結果ｇx’を出力する電子回路である。また、第２符号反転器１２０２は、（i）勾配ベクトルｇの水平値ｇxが０未満である場合に、勾配ベクトルｇの垂直値ｇyの符号を反転し、（ii）勾配ベクトルｇの水平値ｇxが０以上である場合に、勾配ベクトルｇの垂直値ｇyの符号を反転せずに、反転／非反転結果ｇy’を出力する電子回路である。第１符号反転器１２０１及び第２符号反転器１２０２としては、例えば、符号ビットのバイナリ値のみを反転させる排他的論理和回路を用いることができる。
【００８６】
第１乗算器１２０３は、基底ベクトルｕ1（２番目の基底ベクトル）の垂直値ｕ1yを勾配ベクトルｇの水平値の反転結果ｇx’に乗算して第１乗算結果ｇx’ｕ1yを出力する。
【００８７】
第２乗算器１２０４は、基底ベクトルｕ1の水平値ｕ1xを勾配ベクトルｇの垂直値の反転／非反転結果ｇy’に乗算して第２乗算結果ｇy’ｕ1xを出力する。
【００８８】
第３乗算器１２０５は、基底ベクトルｕ2（３番目の基底ベクトル）の垂直値ｕ2yを勾配ベクトルｇの水平値の反転結果ｇx’に乗算して第３乗算結果ｇx’ｕ2yを出力する。
【００８９】
第４乗算器１２０６は、基底ベクトルｕ2の水平値ｕ2xを勾配ベクトルｇの垂直値の反転／非反転結果ｇy’に乗算して第４乗算結果ｇy’ｕ2xを出力する。
【００９０】
ここで、基底ベクトルｕ1及びｕ2の垂直値ｕ1y、ｕ2y及び水平値ｕ1x、ｕ2xは定数である。したがって、第１〜第４乗算器１２０３〜１２０６としては、符号付き定数乗算器を用いることができる。
【００９１】
第１加算器１２０７は、第１乗算結果ｇx’ｕ1yを第２乗算結果ｇy’ｕ1xに加算して第１加算結果ｇy’ｕ1x＋ｇx’ｕ1yを出力する。この第１加算結果は、式（６）におけるｂ1又はｂ5の分子の値と一致する。つまり、第１加算結果は、係数ｂ1又はｂ5に対応する。
【００９２】
第２加算器１２０８は、第３乗算結果ｇx’ｕ2yを第４乗算結果ｇy’ｕ2xに加算して第２加算結果ｇy’ｕ2x＋ｇx’ｕ2yを出力する。この第２加算結果は、式（６）におけるｂ2又はｂ4の分子の値と一致する。つまり、第２加算結果は、係数ｂ2又はｂ4に対応する。
【００９３】
第１選択器１２０９は、第１選択信号ｓに基づいて、第１加算結果ｇy’ｕ1x＋ｇx’ｕ1y、第２加算結果ｇy’ｕ2x＋ｇx’ｕ2y、勾配ベクトルｇの水平値の反転結果ｇx’、及び、勾配ベクトルｇの垂直値の反転／非反転結果ｇy’のいずれかを選択し、選択結果（−ａi*）を出力する電子回路である。
【００９４】
ここで、第１加算結果は、式（６）における−ａ0又は−ａ4の分子の値と一致する。また、第２加算結果は、式（６）における−ａ1又は−ａ3の分子の値と一致する。また、勾配ベクトルｇの水平値の反転結果は、式（６）における−ａ2の分子の値と一致する。また、勾配ベクトルｇの垂直値の反転／非反転結果は、式（６）における−ａ5の分子の値と一致する。したがって、第１選択器１２０９では、係数ａ0〜ａ5のいずれかに対応する値が選択される。
【００９５】
第２選択器１２１０は、第１選択信号ｓに基づいて、勾配ベクトルｇの垂直値の反転／非反転結果ｇy’、第１加算結果ｇy’ｕ1x＋ｇx’ｕ1y、第２加算結果ｇy’ｕ2x＋ｇx’ｕ2y、及び、勾配ベクトルｇの水平値の反転結果ｇx’のいずれかを選択し、選択結果をインデックスｉ*＋１の方向ビンに投票するための係数ｂi*として出力する電子回路である。
【００９６】
ここで、勾配ベクトルの垂直値の反転／非反転結果は、式（６）におけるｂ0の分子の値と一致する。また、第１加算結果は、式（６）におけるｂ1又はｂ5の分子の値と一致する。また、第２加算結果は、式（６）におけるｂ2又はｂ4の分子の値と一致する。また、勾配ベクトルの水平値の反転結果は、式（６）におけるｂ3の分子の値と一致する。したがって、第２選択器１２１０では、係数ｂ0〜ｂ5のいずれかに対応する値が選択される。
【００９７】
第３符号反転器１２１１は、第１選択器１２０９から出力された値の符号を反転して、インデックスｉ*の方向ビンに投票するための係数ａi*を出力する電子回路である。
【００９８】
ビン選択部１２２０は、係数を投票する方向ビンを特定するインデックスｉ*を出力するための電子回路である。ビン選択部１２２０は、第３選択器１２２１と、第４選択器１２２２と、第５選択器１２２３と、を備える。
【００９９】
第３選択器１２２１は、第２選択信号ｓ1に基づいて、インデックス「１」及び「５」の一方を選択する電子回路である。選択結果は、第５選択器１２２３に出力される。
【０１００】
第４選択器１２２２は、第２選択信号ｓ1に基づいて、インデックス「２」及び「４」の一方を選択する電子回路である。選択結果は、第５選択器１２２３に出力される。
【０１０１】
第５選択器１２２３は、第１選択信号ｓに基づいて、第３選択器１２２１の選択結果、第４選択器１２２２の選択結果、並びに、インデックス「０」及び「３」の中からインデックスｉ*を選択する電子回路である。
【０１０２】
ここで、第１選択信号ｓ及び第２選択信号ｓ1は、以下の式（１４）及び（１５）で表される。
【０１０３】
【数１４】
2019012326.tif 000016
【数１５】
2019012326.tif 000017
【０１０４】
ここで、ｓｉｇｎ（）は、符号関数（シグナム関数）である。ここでは、入力が０以上の場合に符号関数の出力が０となり、入力が０未満の場合に符号関数の出力が１となる。
【０１０５】
なお、基底ベクトルｕ0及びｕ3は、ｘ軸及びｙ軸上の単位ベクトルであるので、基底ベクトルｕ0及びｕ3のための乗算器は省略されている。また、基底ベクトルｕ4及びｕ5は、基底ベクトルｕ2及びｕ1と対称性を有する。したがって、基底ベクトルｕ2及びｕ1の乗算結果は、基底ベクトルｕ4及びｕ5の乗算結果に流用できる。そのため、基底ベクトルｕ4及びｕ5のための乗算器は省略されている。
【０１０６】
以上のように、本実施例に係るハードウェア構成によれば、基底ベクトルの水平値又は垂直値を勾配ベクトルの垂直値又は水平値に乗算する乗算器と乗算器の出力を加算する加算器とを用いてベクトルの分解を専用電子回路で実現することができる。このとき、基底ベクトルの水平値及び垂直値は定数であるので、乗算器として定数乗算器を用いることができ、回路規模の縮小及び消費電力の低減を実現することができる。
【０１０７】
また、本実施例に係るハードウェア構成によれば、ハーフ範囲の６つの方向ビンがＨＯＧに適用される場合に、分解部１２０は、２番目（ｉ＝１）及び３番目（ｉ＝２）の基底ベクトルに対応する乗算器を備えればよいので、すべての基底ベクトルに対応する乗算器を備える場合よりも、乗算器の数を削減することができ、回路規模を縮小することができる。
【０１０８】
（実施例２）
次に、実施例２における分解部１２０のハードウェア構成について説明する。本実施例では、実施例１と同様に、図１Ａに示すハーフ範囲の６つの方向ビンがＨＯＧに適用される場合について説明する。
【０１０９】
図１１は、実施例２における分解部１２０のハードウェア構成を示す図である。図１１に示すように、分解部１２０は、係数導出部２２００と、ビン選択部２２２０とを備える。
【０１１０】
係数導出部２２００は、方向ビンに投票する係数ａi*及びｂi*を出力するための電子回路である。係数導出部２２００は、第１符号反転器２２０１及び第２符号反転器２２０２と、第１〜第４乗算器１２０３〜１２０６と、第１加算器１２０７及び第２加算器１２０８と、第１選択器２２０９、第２選択器２２１０、第３選択器２２１１及び第４選択器２２１２と、第３符号反転器１２１１と、を備える。
【０１１１】
第１符号反転器２２０１は、（i）選択信号ｑflagが０である場合に、勾配ベクトルｇの水平値ｇxの符号を反転し、（ii）選択信号ｑflagが１である場合に、勾配ベクトルｇの水平値ｇxの符号を反転せずに、反転／非反転結果ｇx’を出力する電子回路である。ここで、選択信号ｑflagは以下の式（１６）で表される。
【０１１２】
【数１６】
2019012326.tif 000018
【０１１３】
第２符号反転器２２０２は、（i）勾配ベクトルｇの水平値ｇxが０未満である場合に、勾配ベクトルｇの垂直値ｇyの符号を反転し、（ii）勾配ベクトルｇの水平値ｇxが０以上である場合に、勾配ベクトルｇの垂直値ｇyの符号を反転せずに、反転／非反転結果ｇy’を出力する電子回路である。
【０１１４】
第１符号反転器２２０１及び第２符号反転器２２０２の処理は、以下の式（１７）で表される。
【０１１５】
【数１７】
2019012326.tif 000019
【０１１６】
第１選択器２２０９は、選択信号ｃに基づいて、第１加算結果ｇy’ｕ1x＋ｇx’ｕ1y、第２加算結果ｇy’ｕ2x＋ｇx’ｕ2y、及び、勾配ベクトルｇの水平値の反転／非反転結果ｇx’のいずれかを選択し、選択結果を出力する電子回路である。
【０１１７】
ここで、選択信号ｃは、２ビットの信号であり、第１選択信号の１ビット目ｃ０及び２ビット目ｃ１は、以下の式１８で表される。
【０１１８】
【数１８】
2019012326.tif 000020
【０１１９】
第２選択器２２１０は、選択信号ｃに基づいて、勾配ベクトルｇの垂直値の反転／非反転結果ｇy’、第１加算結果ｇy’ｕ1x＋ｇx’ｕ1y、及び、第２加算結果ｇy’ｕ2x＋ｇx’ｕ2yのいずれかを選択し、選択結果を出力する電子回路である。
【０１２０】
第３選択器２２１１は、選択信号ｑflagに基づいて、第１選択器２２０９による選択結果及び第２選択器２２１０による選択結果の一方を選択し、選択結果（−ａi*）を出力する電子回路である。
【０１２１】
第４選択器２２１２は、選択信号ｑflagに基づいて、第１選択器２２０９による選択結果及び第２選択器２２１０による選択結果の一方を選択し、選択結果をインデックスｉ*＋１の方向ビンに投票するための係数ｂi*として出力する電子回路である。
【０１２２】
ビン選択部２２２０は、係数を投票する方向ビンを特定するインデックスｉ*を出力するための電子回路である。ビン選択部２２２０は、第５選択器２２２１と、第６選択器２２２２と、第７選択器２２２３と、を備える。
【０１２３】
第５選択器２２２１は、選択信号ｃに基づいて、インデックス「０」、「１」及び「２」のいずれかを選択する電子回路である。選択結果は、第７選択器２２２３に出力される。
【０１２４】
第６選択器２２２２は、選択信号ｃに基づいて、インデックス「５」、「４」及び「３」のいずれかを選択する電子回路である。選択結果は、第７選択器２２２３に出力される。
【０１２５】
第７選択器２２２３は、選択信号ｑflagに基づいて、第５選択器２２２１の選択結果、及び、第６選択器２２２２の選択結果の中からインデックスｉ*を選択する電子回路である。
【０１２６】
［効果等］
以上のように、本実施例に係るハードウェア構成によれば、ハーフ範囲の６つの方向ビンがＨＯＧに適用される場合に、分解部１２０は、２番目（ｉ＝１）及び３番目（ｉ＝２）の基底ベクトルに対応する乗算器を備えればよいので、すべての基底ベクトルに対応する乗算器を備える場合よりも、乗算器の数を削減することができ、回路規模を縮小することができる。
【０１２７】
（他の実施の形態）
以上、本発明の１つまたは複数の態様に係るＨＯＧ生成装置について、実施の形態に基づいて説明したが、本発明は、この実施の形態及び変形例に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態及び変形例における構成要素を組み合わせて構築される形態も、本発明の１つまたは複数の態様の範囲内に含まれてもよい。
【０１２８】
例えば、上記実施の形態及び変形例では、ハーフ範囲の６つの方向ビンが利用されていたが、方向ビンの範囲及び数はこれに限られない。例えば、方向ビンの数は、２〜５個であってもよいし、７個以上であってもよい。方向ビンの範囲及び数は、ＨＯＧの利用目的に合わせて適宜決定されればよい。
【０１２９】
なお、上記実施の形態及び変形例では、２つの基底ベクトルの係数を用いて、勾配ベクトルの分解に用いる基底ベクトルのペアを選択していたが、これに限られない。例えば、勾配ベクトルの水平値及び垂直値を用いて基底ベクトルのペアが選択されてもよい。具体的には、ハーフ範囲の４つの方向ビンが採用される場合には、例えば、水平値及び垂直値の符号及び水平値の絶対値及び垂直値の絶対値の比較結果に基づいて基底ベクトルのペアが選択されてもよい。
【０１３０】
なお、上記実施例１及び２は、ハードウェア構成の一例であり、本発明は、このハードウェア構成に限定されない。例えば、分解部１２０は、２番目及び３番目の基底ベクトルのための第１〜第４乗算器１２０３〜１２０６の代わりに、５番目及び６番目の基底ベクトルのための４つの乗算器を備えてもよい。また例えば、ＨＯＧ生成装置１００は、汎用的なプロセッサ及びメモリを備え、メモリに格納された命令が実行されることによってプロセッサが分解部１２０として機能してもよい。
【０１３１】
また、本発明の一態様は、このようなＨＯＧ生成装置だけではなく、ＨＯＧ生成装置に含まれる特徴的な構成部をステップとするＨＯＧ生成方法であってもよい。また、本発明の一態様は、ＨＯＧ生成方法に含まれる特徴的な各ステップをコンピュータに実行させるコンピュータプログラムであってもよい。また、本発明の一態様は、そのようなコンピュータプログラムが記録された、コンピュータ読み取り可能な非一時的な記録媒体であってもよい。
【０１３２】
なお、上記実施の形態及び変形例において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、ＣＰＵまたはプロセッサなどのプログラム実行部が、ハードディスク又は半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記実施の形態又は変形例のＨＯＧ生成装置などを実現するソフトウェアは、次のようなプログラムである。
【０１３３】
すなわち、このプログラムは、コンピュータに、画像の勾配方向ヒストグラムを生成するための勾配方向ヒストグラム生成方法であって、前記画像に含まれる画素の勾配ベクトルを算出し、勾配方向ヒストグラムの複数の方向ビンを規定する複数の基底ベクトルのうちの２つの基底ベクトルに前記勾配ベクトルを分解することにより、前記２つの基底ベクトルの係数を導出し、導出された前記２つの基底ベクトルの係数の各々を対応する方向ビンに投票する、勾配方向ヒストグラム生成方法を実行させる。
【産業上の利用可能性】
【０１３４】
筺体に取付けたスイッチを用いて、入力位置の直視が不可欠な用途に適用できる。
【符号の説明】
【０１３５】
１００  ＨＯＧ生成装置
１１０  算出部
１２０  分解部
１３０  投票部
１２００、２２００  係数導出部
１２０１、２２０１  第１符号反転器
１２０２、２２０２  第２符号反転器
１２０３  第１乗算器
１２０４  第２乗算器
１２０５  第３乗算器
１２０６  第４乗算器
１２０７  第１加算器
１２０８  第２加算器
１２０９、２２０９  第１選択器
１２１０、２２１０  第２選択器
１２１１  第３符号反転器
１２２０、２２２０  ビン選択部
１２２１、２２１１  第３選択器
１２２２、２２１２  第４選択器
１２２３、２２２１  第５選択器
２２２２  第６選択器
２２２３  第７選択器
【図１Ａ】
2019012326.tif 000021
【図１Ｂ】
2019012326.tif 000022
【図２Ａ】
2019012326.tif 000023
【図２Ｂ】
2019012326.tif 000024
【図３】
2019012326.tif 000025
【図４Ａ】
2019012326.tif 000026
【図４Ｂ】
2019012326.tif 000027
【図５】
2019012326.tif 000028
【図６】
2019012326.tif 000029
【図７】
2019012326.tif 000030
【図８】
2019012326.tif 000031
【図９】
2019012326.tif 000032
【図１０】
2019012326.tif 000033
【図１１】
2019012326.tif 000034