(57)【要約】【課題】物体を認識するための特徴量を、計算量を抑えて算出できるようにする。【解決手段】ＨＯＧ特徴やＳＩＦＴ特徴の代わりに、近似する法線方向ヒストグラム特徴を用いてその演算量を削減する。法線方向ヒストグラム特徴を算出する際には、隣接する２画素間で明度差を判定して二値エッジ画像を生成し、そして、二値エッジ画像の行ごとに、着目した行のビット列とその１行ないし数行上のビット列とを比較して法線方向を識別し、その法線方向の全ての行を通した頻度を求める。【選択図】図１
2015191568.tif 000002
【特許請求の範囲】
【請求項１】
入力画像から物体の少なくとも一部を含む部分画像を取得する取得手段と、
前記取得手段によって取得された部分画像を構成する行ごとに前記物体の輪郭の法線方向を算出する算出手段と、
前記算出手段によって算出された行ごとの法線方向の頻度を示すヒストグラムを、画像認識に用いる特徴量として生成する生成手段と、
を備えることを特徴とする画像認識装置。
【請求項２】
前記算出手段は、前記行に含まれる個々の画素がエッジであるか否かを示すビット列を生成し、該生成されたビット列を他の行のビット列と比較することによって前記物体の輪郭の法線方向を算出することを特徴とする請求項１に記載の画像認識装置。
【請求項３】
前記算出手段は、前記生成されたビット列と他の行のビット列との距離に基づいて前記物体の輪郭の法線方向を算出することを特徴とする請求項２に記載の画像認識装置。
【請求項４】
前記算出手段は、前記生成されたビット列と前記他の行のビット列との排他的論理和を取得し、前記取得した排他的論理和のビット数を数えることによって前記距離を算出することを特徴とする請求項３に記載の画像認識装置。
【請求項５】
前記生成手段によって生成された特徴量を用いて前記部分画像が前記物体であるか否かを認識する認識手段をさらに備えることを特徴とする請求項１〜４の何れか１項に記載の画像認識装置。
【請求項６】
入力画像から物体の少なくとも一部を含む部分画像を取得する取得工程と、
前記取得工程において取得された部分画像を構成する行ごとに前記物体の輪郭の法線方向を算出する算出工程と、
前記算出工程において算出された行ごとの法線方向の頻度を示すヒストグラムを、画像認識に用いる特徴量として生成する生成工程と、
を備えることを特徴とする画像認識方法。
【請求項７】
入力画像から物体の少なくとも一部を含む部分画像を取得する取得工程と、
前記取得工程において取得された部分画像を構成する行ごとに前記物体の輪郭の法線方向を算出する算出工程と、
前記算出工程において算出された行ごとの法線方向の頻度を示すヒストグラムを、画像認識に用いる特徴量として生成する生成工程と、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特に、高速に画像認識を行うために用いて好適な画像認識装置、画像認識方法及びプログラムに関する。
【背景技術】
【０００２】
従来、ある画像から顔や人体などの物体を検出する物体検出技術が知られている。一般的にこの物体検出技術においては、その画像の任意の部分画像から特徴量を抽出し、学習機械によりその特徴量が物体を成すか否かを識別する。この物体検出技術で用いられる特徴量として、非特許文献１には、人体の検出を実現する輝度勾配ヒストグラム特徴、いわゆるＨＯＧ特徴が開示されている。
【０００３】
ＨＯＧ特徴とは、部分画像をさらに正方形の局所領域（セル）に分割し、そのセル内の画素ごとに輝度の勾配方向と勾配強度とを求め、その画素ごとの勾配強度を勾配方向ごとに累積ヒストグラム化し、ヒストグラムを正規化したものである。ある画素での勾配強度は、その画素の輝度とその画素の上や左に隣接する画素の輝度との差の二乗和の平方根であり、その画素での勾配方向は、これらの画素の輝度差の比の逆正接である。ＨＯＧ特徴は、人体の動作、体格、カメラ視点等の幾何学的変換や、照明状況、環境光等の変動に剛健であることが知られている。
【０００４】
また、特許文献１には、ＨＯＧ特徴を利用して特徴量の演算を高速化する手法が開示されている。この手法によれば、ＨＯＧ特徴を演算すると輝度勾配の強度をセル内で正規化する計算量が大きいことから、一対の異なるセル間での輝度勾配の強度差を特徴量とし、正規化を省略している。
【０００５】
さらに、特許文献２には、局所特徴によるマッチングを実現するＳＩＦＴ（Ｓｃａｌｅ−Ｉｎｖａｒｉａｎｔ  Ｆｅａｔｕｒｅ  Ｔｒａｎｓｆｏｒｍ）特徴が開示されている。この局所特徴の演算は、特徴点演算、勾配主方向演算、及び特徴量の演算に分かれており、この特徴量をＳＩＦＴ特徴ではデスクリプタと呼ばれている。このデスクリプタの演算においては、ＨＯＧ特徴と同様に正方形のセルごとに輝度の勾配方向ごとのヒストグラムを取得する。また、ＳＩＦＴ特徴は、ＨＯＧ特徴と同様に幾何学的変換や光量の変動に剛健であることが知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第４６２６６９２号公報
【特許文献２】米国特許第６７１１２９３号明細書
【非特許文献】
【０００７】
【非特許文献１】Ｎａｖｎｅｅｔ  Ｄａｌａｌ  ａｎｄ  Ｂｉｌｌ  Ｔｒｉｇｇｓ．  Ｈｉｓｔｏｇｒａｍｓ  ｏｆ  Ｏｒｉｅｎｔｅｄ  Ｇｒａｄｉｅｎｔｓ  ｆｏｒ  Ｈｕｍａｎ  Ｄｅｔｅｃｔｉｏｎ．  ＣＶＰＲ２００５
【発明の概要】
【発明が解決しようとする課題】
【０００８】
物体検出技術は、その利用法によっては実時間で動作することが要求され、計算量を抑えて高速に動作することが望ましい。一方、特徴量ある領域の輝度勾配ヒストグラム特徴の計算量は、ＨＯＧ特徴もＳＩＦＴデスクリプタも、画素ごとに二乗和の平方根や逆正接を求めるため、その計算量はその領域の画素数に比例し、計算量が膨大であるという問題点がある。
【０００９】
本発明は前述の問題点に鑑み、物体を認識するための特徴量を、計算量を抑えて算出できるようにすることを目的としている。
【課題を解決するための手段】
【００１０】
本発明に係る画像認識装置は、入力画像から物体の少なくとも一部を含む部分画像を取得する取得手段と、前記取得手段によって取得された部分画像を構成する行ごとに前記物体の輪郭の法線方向を算出する算出手段と、前記算出手段によって算出された行ごとの法線方向の頻度を示すヒストグラムを、画像認識に用いる特徴量として生成する生成手段と、を備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、物体を認識するための特徴量を、計算量を抑えて算出することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に係る画像認識装置の機能構成例を示すブロック図である。
【図２】本発明の実施形態に係る画像認識装置のハードウェア構成例を示すブロック図である。
【図３】入力画像から取得される部分画像及びその法線方向ヒストグラム特徴を説明するための図である。
【図４】法線方向ヒストグラム特徴を用いて画像認識を行う処理手順の一例を示すフローチャートである。
【図５】法線方向ヒストグラム特徴を取得する詳細な処理手順の一例を示すフローチャートである。
【図６】本発明の実施形態において、行ごとにＢＩＮを振り分ける方法を説明するための図である。
【図７】二値エッジ画像ごとに法線方向ヒストグラム特徴を算出して加算する詳細な処理手順の一例を示すフローチャートである。
【図８】バイトごとに法線方向の近似を算出する詳細な処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
（第１の実施形態）
以下、本発明の第１の実施形態について図面を参照しながら説明する。
図２は、本実施形態に係る画像認識装置１００のハードウェア構成例を示すブロック図である。
図２において、撮像素子２０１はＣＣＤ、ＣＭＯＳ等で構成され、被写体像を光から電気信号に変換する。信号処理回路２０２は、撮像素子２０１から得られた被写体像に関する時系列信号を処理し、デジタル信号に変換する。
【００１４】
ＣＰＵ２０３は、ＲＯＭ２０４に格納されている制御プログラムを実行し、画像認識装置１００全体を制御する。ＲＯＭ２０４は、ＣＰＵ２０３が実行する制御プログラムや各種パラメータデータを格納する。制御プログラムは、ＣＰＵ２０３で実行され、後述するフローチャートに示す各処理を実行するための各種手段として、当該装置を機能させる。ＲＡＭ２０５は、画像データや各種情報を記憶する。また、ＲＡＭ２０５は、ＣＰＵ２０３のワークエリアやデータの一時待避領域として機能する。ディスプレイ２０６は、画像等を表示する表示装置である。
【００１５】
なお、本実施形態では、後述するフローチャートの各ステップに対応する処理を、ＣＰＵ２０３を用いてソフトウェアで実現することとするが、その処理の一部または全部を電子回路などのハードウェアで実現しても構わない。また、本実施形態の画像認識装置１００は、撮像素子２０１や信号処理回路２０２を省いて汎用ＰＣを用いて実現してもよいし、画像処理専用装置として実現しても構わない。また、ネットワークまたは各種記憶媒体を介して取得したソフトウェア（プログラム）をパーソナルコンピュータ等の処理装置（ＣＰＵ、プロセッサ）にて実行してもよい。
【００１６】
図１は、本実施形態に係る画像認識装置１００の機能構成例を示すブロック図である。
図１において、部分画像取得部１０１は、入力画像から所定のサイズの部分画像を取得し、特徴量演算部１０３は、部分画像の輪郭の法線方向ヒストグラム特徴を求める。そして、画像認識部１０２は、演算した法線方向ヒストグラム特徴を用いて入力画像の認識を行う。ここで、入力される部分画像は、縦画素数と横画素数とが等しく、ある画像の一部分を表す画像であるものとする。
【００１７】
本実施形態では、特徴量として法線方向ヒストグラム特徴を算出して出力する。法線方向ヒストグラム特徴とは、部分画像がある物体を示すか否かの識別に用いられる画像特徴であって、部分画像内におけるある物体の輪郭の形状を示す特徴量である。また、この法線方向ヒストグラム特徴は、非特許文献１に開示されているＨＯＧ特徴や特許文献２に開示されているＳＩＦＴ特徴と近似しており、非特許文献１及び特許文献２に記載されている物体か否かの識別手法に適用できる。
【００１８】
本実施形態において、法線方向ヒストグラム特徴を演算する特徴量演算部１０３は、法線方向演算部１１１とヒストグラム生成部１１２とから構成されている。特徴量演算部１０３においては、部分画像に含まれる行及び列のそれぞれについて、法線方向演算部１１１がその行もしくは列における輪郭の法線方向の近似を取得する。次に、ヒストグラム生成部１１２がその法線方向の近似にしたがって法線方向ヒストグラム特徴を更新する。本実施形態では、以降、部分画像もしくはその二値化結果を９０度回転することにより、ある行における輪郭の法線と、ある列における輪郭の法線とを同一処理で求めるものとする。
【００１９】
法線方向演算部１１１は、さらに二値エッジ画像生成部１２１、距離取得部１２２、及び法線方向判断部１２３から構成されている。二値エッジ画像生成部１２１は、部分画像の微分画像を二値化し、エッジ画像を求めた上で、そのエッジ画像内の特徴量演算部１０３で着目した行もしくは列について、その各ピクセルをビットと捉えたビット列を生成する。
【００２０】
距離取得部１２２は、二値エッジ画像生成部１２１で生成したビット列を数ビットシフトしたビット列と、その１行もしくは数行上のビット列とを比較し、その距離を求める。シフト量及び行間は、法線方向の近似精度にしたがって事前に決定される。また、求める距離はハミング距離であって、ビット列同士の排他的論理和についてセットされているビット数を数える。
【００２１】
法線方向判断部１２３は、距離取得部１２２で取得した距離にしたがって、二値エッジ画像生成部１２１で着目した行もしくは列における法線方向を求める。例えば着目している行のビット列を左に１ビットシフトしたビット列が、１行上のビット列と近い場合には、その着目している行における輪郭の法線方向は右上方向と判定する。この処理の詳細については図６を参照しながら後述する。
【００２２】
図３（ａ）は、入力画像から取得される部分画像の一例を示す図である。図３（ａ）に示すように、部分画像は少なくとも物体の一部を含み、１画素あたり多値を持つ例えばＲＧＢ画像の任意の１プレーンの画像であって、かつ縦横の画素数が等しい画像である。一辺の画素数は、演算の効率化の視点から２の累乗であることが好ましく、例えば６４画素とすることが好ましい。
【００２３】
出力される法線方向ヒストグラム特徴は、部分画像を一定の正方形のセルに分割し、そのセルごとの輪郭の法線方向の頻度である。輪郭の法線方向の頻度とは、その角度の定義域を適宜分割し、輪郭上の各画素における法線方向が、個々のカテゴリに属する頻度を意味する。
【００２４】
図３（ｂ）は、図３（ａ）に示した部分画像の法線方向ヒストグラム特徴の一例を示す図である。図３（ｂ）において、各格子はセルを表しており、格子内の放射形状は法線方向のヒストグラムの強さをＢＩＮ別に表している。セルの個数は、縦方向及び横方向で同数であり、例えば８×８個を好適とする。ヒストグラムのＢＩＮ数については、図３の（ｃ）に示すように、法線方向の分割数は８を好適とし、さらに画像上に輪郭がない場合と、分類不能な場合との２つのＢＩＮを追加する。その結果、出力するヒストグラムは８×８セル×１０ＢＩＮを構成する配列となる。
【００２５】
次に、本実施形態によって算出される法線方向ヒストグラム特徴を用いて画像認識を行う手順について説明する。本実施形態では、ＨＯＧ特徴を法線方向ヒストグラム特徴で近似して画像認識を行う例について説明する。
【００２６】
図４（ａ）は、本実施形態において、法線方向ヒストグラム特徴を用いて画像認識を行う処理手順の一例を示すフローチャートである。なお、図４（ａ）に示す処理を行う前提として、事前に多数の物体画像から法線方向ヒストグラム特徴の傾向が統計的に処理されており、その結果を登録辞書として保持されているものとする。この統計的処理には、例えば非特許文献１に記載されているＳｕｐｐｏｒｔ  Ｖｅｃｔｏｒ  Ｍａｃｈｉｎｅを用いる。
【００２７】
まず、ステップＳ４０１において、入力画像の任意の部分画像について、Ｓｌｉｄｉｎｇ  Ｗｉｎｄｏｗ法に従い、ステップＳ４０２〜ステップＳ４０３の処理を繰り返す。この部分画像は法線方向ヒストグラム特徴が取得可能な正方形であって、かつ演算に適切な６４×６４画素のサイズである。
【００２８】
まず、ステップＳ４０１で着目した部分画像について、ステップＳ４０２において、特徴量演算部１０３は、法線方向ヒストグラム特徴を算出する。この法線方向ヒストグラム特徴を算出する処理の詳細については後述する。次に、ステップＳ４０３において、画像認識部１０２は、ステップＳ４０２で取得した法線方向ヒストグラム特徴に対し、登録辞書における法線方向ヒストグラム特徴と比較し、特徴が近似するか否かを識別する。この識別は、前述した統計的処理手法と一対であり、前述したＳｕｐｐｏｒｔ  Ｖｅｃｔｏｒ  Ｍａｃｈｉｎｅを用いる。
【００２９】
ステップＳ４０１〜ステップＳ４０３により全ての部分画像について物体領域か否かを識別すると、次のステップＳ４０４に進む。そして、ステップＳ４０４において、画像認識部１０２は、物体領域として判定された部分画像のうち、同一の物体を構成すると思われる部分画像を統合し、その領域を求める。そして、物体の認識結果として出力する。
【００３０】
図５は、図４のステップＳ４０２において特徴量演算部１０３が法線方向ヒストグラム特徴を算出する処理手順の一例を示すフローチャートである。以下、部分画像の大きさは６４×６４画素であって、１チャンネルとし、さらにセルの数は８×８セルとして、法線方向を８分割し、ヒストグラムのＢＩＮ数を１０とした例について説明する。
【００３１】
まず、ステップＳ５０１において、法線方向演算部１１１は、法線方向ヒストグラム特徴を初期化する。すなわち、すべてのセルと法線方向との組み合わせについて０を設定する。
【００３２】
続いてステップＳ５０２において、二値エッジ画像生成部１２１は、横方向の二値エッジ画像を生成する。具体的には、部分画像の全ての画素について、その左隣の画素との明度の差を求め、その明度差を事前に設定した閾値で二値化し、その二値化の結果をビットとして並べる。すなわち、隣接する２画素間で明度差が大きい場合はビットが設定される。二値化の閾値は、例えば人体領域と背景領域との境界に相当する画素でビットが設定され、かつ同一領域である場合は可能な限りビットが設定されない様に好適な値を設定する。二値エッジ画像がメモリに占める大きさは部分画像の大きさが６４×６４画素の画像である場合には８×６４バイトとなる。
【００３３】
次に、ステップＳ５０３において、作成した横方向の二値エッジ画像について、法線方向ヒストグラム特徴を算出する。この処理の詳細については後述する。次に、ステップＳ５０４において、二値エッジ画像生成部１２１は、縦方向の二値エッジ画像を生成する。この処理では、画像を時計回り方向に９０度回転した上で、ステップＳ５０２と同等の処理を行う。そして、ステップＳ５０５において、縦方向の二値エッジ画像について、法線方向ヒストグラム特徴を算出して加算する。この処理もステップＳ５０３と同様に後述する。図５の処理により、ステップＳ５０３およびステップＳ５０５で算出された法線方向ヒストグラム特徴が出力される。
【００３４】
なお、図５に示したフローチャートでは、０度及び９０度の回転のみを考慮したが、回転せずに法線方向ヒストグラム特徴を算出してもよい。さらに１８０度ないし２７０度回転した画像について法線方向ヒストグラム特徴を算出してもよい。
【００３５】
また、法線方向ヒストグラム特徴を算出する際には、二値エッジ画像の行ごとにその法線方向を識別し、その法線方向の全ての行を通した頻度を求める。以下、法線方向が８方向の場合に、行ごとに法線方向を識別する手法について図６を参照しながら説明する。
【００３６】
法線方向の識別は、着目した行のビット列及びその１行ないし数行上のビット列のビット演算結果の判断により行われる。図６において、項目６０１は着目した行のビット列及びその１行・２行上のビット列を示しており、項目６０２は判断基準を示し、項目６０３は判断結果となる法線方向を示す。法線方向は、図３（ｃ）に示したように、水平方向を０度とし、反時計回りにおおよそ２２．５度おきに刻み、それぞれＢＩＮを０から７に割り当てるものとする。本実施形態の場合には、実際は０度、約２６．５６５度、４５度、約６３．４３５度、９０度、１１６．５６５度、１３５度、１５３．４３５度となる。
【００３７】
法線方向を識別する際には、図６の例６１１〜６２０のそれぞれについて順に識別する。まず、例６１１に示すように、着目したビット列にエッジが存在しない場合には、その法線方向は存在しないものとし、ＢＩＮは８となる。また、例６１２に示すように、着目したビット列にエッジが存在し、かつ１行上のビット列にエッジが存在しない場合は、その法線方向は９０度方向であり、ＢＩＮを４とする。一方、例６１３に示すように、着目したビット列と１行上のビット列とでエッジが近い場合は、その法線方向は０度方向であり、ＢＩＮを０とする。
【００３８】
例６１４に示すように、着目したビット列を右に１ビットシフトしたものと１行上のビット列とでエッジが近い場合は、その法線方向は１３５度方向であり、ＢＩＮを６とする。また、例６１５に示すように、着目したビット列を右に１ビットシフトしたものと１行上のビット列とでエッジが近く、かつ着目したビット列を右に１ビットシフトしたものと２行上のビット列とでエッジが近い場合がある。この場合には、その法線方向は１５３．４３５度であり、ＢＩＮを７とする。一方、例６１６に示すように、着目したビット列を右に１ビットシフトしたものと１行上のビット列とでエッジが近く、かつ着目したビット列を右に２ビットシフトしたものと１行上のビット列とでエッジが近い場合もある。この場合には、その法線方向は１１６．５６５度となり、ＢＩＮを５とする。
【００３９】
右にシフトして判定する場合と同様に、着目したビット列を左にシフトして判定する場合にも、例６１７〜６１９に示す通りに識別し、そのＢＩＮはそれぞれ２、１、３となる。また、例６２０に示すように、例６１１〜６１９のいずれにも属さない場合には、分類不能としてＢＩＮを９とする。なお、この場合は、明確な輪郭を持たない領域であって、ノイズやテクスチャである可能性が高く、認識率には大きな影響は与えないと考えられる。
【００４０】
例６１３〜６１９に示したビット演算において、２つのビット列が近いか否かについては、本実施形態においては、そのハミング距離が１以下であるか否かによって判断する。２つのビット列のハミング距離を求める際には、２つのビット列の排他的論理和を求め、そのビット列で真となるビット数を数える。あるビット列で真となるビット数を数えるには、いわゆるＰｏｐＣｏｕｎｔを用いる。
【００４１】
本実施形態では、前述したたように、部分画像の１行あたりの画素数は６４であり、１画素が１ビットに二値化されているので、１行あたりのビット長は６４であり、セルのビット長は８である。よって、６４ビット列ｘについて８ビットごとにＰｏｐＣｏｕｎｔ８を求める。ＰｏｐＣｏｕｎｔ８の値は、以下の式（１）の演算を終えた状態のｘの値である。
ｘ＝（（ｘ＆０ｘａａａａａａａａａａａａａａａａＵＬ）＞＞１）＋（ｘ＆０ｘ５５５５５５５５５５５５５５５５ＵＬ）
ｘ＝（（ｘ＆０ｘｃｃｃｃｃｃｃｃｃｃｃｃｃｃｃｃＵＬ）＞＞２）＋（ｘ＆０ｘ３３３３３３３３３３３３３３３３ＵＬ）
ｘ＝（（ｘ＆０ｘｆ０ｆ０ｆ０ｆ０ｆ０ｆ０ｆ０ｆ０ＵＬ）＞＞４）＋（ｘ＆０ｘ０ｆ０ｆ０ｆ０ｆ０ｆ０ｆ０ｆ０ｆＵＬ）
ｘ＝（（ｘ＆０ｘｆｆ００ｆｆ００ｆｆ００ｆｆ００ＵＬ）＞＞８）＋（ｘ＆０ｘ００ｆｆ００ｆｆ００ｆｆ００ｆｆＵＬ）
・・・（１）
【００４２】
但し、式（１）において、「＝」は代入を表し、「＆」は論理和を表す。また、接頭詞０ｘは１６進数を表しており、接尾詞ＵＬは６４ビット符号なし整数を表し、「＋」は加算を表している。式（１）の演算は定数時間で行うことができ、ビットシフトおよび排他的論理和の計算も定数時間で行うことができるため、例６１３〜６１９の識別は、そのビット長に対し定数時間で終了することができる。すなわち、ある行における輪郭の法線方向を、その列方向の画素数に対し定数時間で求めることができる。
【００４３】
図７は、図５のステップＳ５０３及びＳ５０５において、二値エッジ画像から法線方向ヒストグラム特徴を算出して加算する詳細な処理手順の一例を示すフローチャートである。この処理を行う際には、二値エッジ画像Ｂ、今までに算出して加算された法線方向ヒストグラム特徴ＨＩＳＴ、及び画像が回転されているか否かのフラグを用いるものとする。
【００４４】
まず、ステップＳ７０１において、二値エッジ画像Ｂのすべての行ｙについて、ステップＳ７０２〜ステップＳ７０５の処理を繰り返す。以下、着目した行ｙのビット列をＢyと表記し、ビット列Ｂyは６４ビット長のビット列であるものとする。行ｙを選択する際には、二値エッジ画像Ｂの全ての行について選択してもよいし、二値エッジ画像Ｂからランダムに選択したり数行おきに選択したりしてもよい。例えば二値エッジ画像Ｂが、乱択アルゴリズムが機能する程に大きい場合には、ランダムに行ｙを選択することによって処理を高速化することができる。
【００４５】
ステップＳ７０２においては、距離取得部１２２は、図６の項目６０２に示した判断基準について、８ビットずつ、連続する８セル分まとめて距離を演算する。具体的には、以下の式（２）に示す演算を行う。
Ｔ［０］＝ＰｏｐＣｏｕｎｔ８（Ｂｙ  ｘｏｒ  Ｂy-1）
Ｔ［１］＝ＰｏｐＣｏｕｎｔ８（（Ｂｙ＜＜１）  ｘｏｒ  Ｂy-2）
Ｔ［２］＝ＰｏｐＣｏｕｎｔ８（（Ｂｙ＜＜１）  ｘｏｒ  Ｂy-1）
Ｔ［３］＝ＰｏｐＣｏｕｎｔ８（（Ｂｙ＜＜２）  ｘｏｒ  Ｂy-1）
Ｔ［５］＝ＰｏｐＣｏｕｎｔ８（（Ｂｙ＞＞２）  ｘｏｒ  Ｂy-1）
Ｔ［６］＝ＰｏｐＣｏｕｎｔ８（（Ｂｙ＞＞１）  ｘｏｒ  Ｂy-1）
Ｔ［７］＝ＰｏｐＣｏｕｎｔ８（（Ｂｙ＞＞１）  ｘｏｒ  Ｂy-2）
・・・（２）
【００４６】
ただし、Ｔはビット演算結果であって、Ｔの括弧内の添え字は図３（ｃ）に示す方向θに対応している。また、「＝」は代入を表し、「＜＜１」、「＜＜２」、「＞＞１」、「＞＞２」はそれぞれ、１ビット左シフト、２ビット左シフト、１ビット右シフト、２ビット左シフトを表している。「ｘｏｒ」は、排他的論理和の演算を表しており、Ｂy-1は着目しているビット列Ｂyの１行上のビット列を表し、Ｂy-2は着目しているビット列Ｂyの２行上のビット列を表している。さらにＰｏｐＣｏｕｎｔ８の値は、式（１）により算出される。
【００４７】
次に、行ｙのビット列Ｂyを構成するｘ番目のバイトＢyx（０≦ｘ≦７）のそれぞれについて、ステップＳ７０４からステップＳ７０５の処理を繰り返す。まず、ステップＳ７０４においては、法線方向判断部１２３は、バイトＢyxにおける法線方向の近似θを求める。この処理の詳細については後述する。
【００４８】
続いて、ステップＳ７０５においては、ヒストグラム生成部１１２は、法線方向の近似θに従い、法線方向ヒストグラム特徴ＨＩＳＴのｙ、ｘ、θに対応するＢＩＮに頻度を加算する。ここで、セルのサイズが８×８であるため、法線方向ヒストグラム特徴上ではｙを８で割った商がそのＢＩＮの添え字に相当する。また、画像が時計回り方向に回転されている場合には、法線方向の近似θを適宜入れ替える必要がある。具体的には、画像が回転されていない場合と画像が回転されている場合とで場合分けし、以下の式（３）に従う。
画像が回転されていないなら、
ＨＩＳＴ［ｘ］［ｙ＞＞３］［θ］  ＋＋
画像が回転されていて、かつθ≦４なら
ＨＩＳＴ［ｙ＞＞３］［ｘ］［θ−４］  ＋＋
画像が回転されていて、かつ４＜θ≦７なら
ＨＩＳＴ［ｙ＞＞３］［ｘ］［θ＋４］  ＋＋
・・・（３）
【００４９】
ただし、「＞＞３」は３ビット右シフト、すなわち８で割った商を表し、「＋＋」は先行する変数へ１を加算したことを表す。以上のようにステップＳ７０４〜ステップＳ７０５の処理を全ての行のバイトについて処理を行う。
【００５０】
図８は、ステップＳ７０４において法線方向判断部１２３がバイトＢyxの法線方向の近似θを算出する処理手順の一例を示すフローチャートである。
【００５１】
まず、ステップＳ８０１において、θを初期値である９、すなわち分類不可に初期化する。そして、ステップＳ８０２において、図６の例６１１に相当する識別を行う。すなわち、ビット列Ｂy上のバイトＢyxにエッジがあるか否かを識別する。この識別の結果、エッジがない場合には、ステップＳ８０７において、θを８、すなわちエッジなしに設定して処理を終了する。なお、ビット列Ｂy上のバイトＢyx上のエッジ数は、以下の式（４）により算出される。
Ｂy＆＆（０ｘｆｆ＜＜（ｘ＜＜３））        ・・・（４）
【００５２】
一方、ステップＳ８０２の識別の結果、ビット列Ｂy上のバイトＢyxにエッジがある場合には、さらに、ステップＳ８０３において、図６の例６１２に相当する識別を行う。すなわち、ビット列Ｂy-1上のバイトＢy-1xにエッジがあるか否かを識別する。この判定の結果、エッジがない場合には、ステップＳ８０８において、θを４に設定して処理を終了する。
【００５３】
一方、ステップＳ８０３の識別の結果、ビット列Ｂy、Ｂy-1上のバイトの双方にエッジがある場合には、図６の例６１２〜６１９に相当する識別を、ステップＳ８０４からステップＳ８０６までのループで近似する。すなわち、まず、ステップＳ８０４において、θが０，２，６，７，１，３，５などの順で法線方向の候補Ｃａｎｄを設定する。そして、ステップＳ８０５において、法線方向の候補Ｃａｎｄに対しｘ番目のバイトにおいてセットされているビット数を求め、そのビット数が１以下か否かを識別する。
【００５４】
この識別の結果、セットされているビット数が１以下である場合は、ステップＳ８０６において、その候補Ｃａｎｄをθとして保存する。ここで、ステップＳ８０４で法線方向θの候補Ｃａｎｄに順序を設けることにより、θ＝２かつθ＝１の双方の条件を満たす様な場合に、より後に識別されるθ＝１が選択されるようになる。また、ステップＳ８０５において、バイトＢyxにおけるビット数が１以下であるか否かは、以下の式（５）によって得られる。
（Ｔ［Ｃａｎｄ］＆＆（０ｘｆｅ＜＜（ｘ＜＜３）））＝＝０    ・・・（５）
【００５５】
ここで、＝＝０は、０と等しいか否かを識別する演算子である。ビット数が１以下である場合には式（５）は真となり、ビット数が１を超える場合には偽となる。以上のようにステップＳ８０１〜ステップＳ８０３、およびステップＳ８０６のうち、いずれかで設定された法線方向の近似θが図７のステップＳ７０５の処理に用いられる。
【００５６】
以上のように本実施形態によれば、画像認識や画像検索などにおいて、ＨＯＧ特徴の代わりに、近似する法線方向ヒストグラム特徴を用いるため、その演算量を削減することができる。すなわち、ＨＯＧ特徴の演算量は、求める領域の縦横の画素数に比例するが、本実施形態に係る法線方向ヒストグラム特徴の演算量は、求める正方領域の一辺の画素数に比例する。
【００５７】
さらにＨＯＧ特徴では、二乗和の平方根や逆正接などを用いてその勾配方向及び勾配強度を演算するが、法線方向ヒストグラム特徴では、排他的論理和とＰｏｐＣｏｕｎｔとの組み合わせにより法線方向を取得する。これにより、メモリを共有できない状態で並列化や回路化して二乗和、平方根、逆正接等のルックアップテーブルを共有できない場合に、このルックアップテーブルを演算装置ごとに保持することを不要にすることができる。
【００５８】
（第２の実施形態）
第１の実施形態では、ＨＯＧ特徴を法線方向ヒストグラム特徴に近似して画像認識を行う例について説明した。本実施形態では、特許文献２に開示されているＳＩＦＴ特徴を法線方向ヒストグラム特徴に近似して画像認識を行う例について説明する。なお、本実施形態における画像認識装置の構成については図１及び図２と同様であり、以下、第１の実施形態と異なるてんについて説明する。
【００５９】
図４（ｂ）は、本実施形態において、法線方向ヒストグラム特徴を用いて画像認識を行う処理手順の一例を示すフローチャートである。なお、図４（ｂ）に示す処理を行う前提として、事前に物体の画像から特徴点ごとの法線方向ヒストグラム特徴群を取得しており、それらを登録辞書として保持しているものとする。
【００６０】
まず、ステップＳ４１１において、部分画像取得部１０１は、入力画像から特徴点を取得する。特許文献２に記載の方法と同様に、その近傍及び拡大縮小画像中でガウス畳み込みした値が極致となり、かつその周囲のコントラストが比較的大きくなるような座標と拡大縮小率との組み合わせを特徴点とする。
【００６１】
次に、ステップＳ４１２において、取得した特徴点のそれぞれについて、ステップＳ４１３〜ステップＳ４１５を繰り返す。まず、ステップＳ４１３において、特徴量演算部１０３は、特徴点の周囲の主勾配方向を取得し、主勾配方向を水平方向にするよう特徴点の周囲からなる画像を回転する。このとき、例えば、特許文献２に記載の方法と同様に、主勾配方向を領域内の輝度の勾配が最大となる方向とする。また、本実施形態では、部分画像の代わりに特徴点の周囲からなる画像を用いる。次に、ステップＳ４１４において、回転した画像について、図４（ａ）のステップＳ４０２と同様の手順により法線方向ヒストグラム特徴を取得する。
【００６２】
次に、ステップＳ４１５において、画像認識部１０２は、登録辞書内の法線方向ヒストグラム特徴の中にステップＳ４１４で取得した法線方向ヒストグラム特徴と近いものがあるか否かを探索し、存在しない場合にはその特徴点を消去する。例えば２つの法線方向ヒストグラム特徴のマンハッタン距離が事前に設定した閾値を下回る特徴点を消去するようにする。登録辞書内の物体に対応するすべての特徴点の法線方向ヒストグラム特徴を取得した後、ステップＳ４１６において、画像認識部１０２は、その特徴点の凸包を求めることによって物体領域を求める。そして、認識結果として出力する。
【００６３】
以上のように本実施形態によれば、画像認識や画像検索などにおいて、ＳＩＦＴ特徴の代わりに、近似する法線方向ヒストグラム特徴を用いるため、その演算量を削減することができる。
【００６４】
（その他の実施形態）
前述した各実施形態は、画像から物体を検出する場合のみならず、輝度勾配ヒストグラム特徴を用いる画像検索などの他の画像処理技術にも適用可能である。また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００６５】
１０１  部分画像取得部
１０２  画像認識部
１０３  特徴量演算部
１１１  法線方向演算部
１１２  ヒストグラム生成部
【図１】
2015191568.tif 000003
【図２】
2015191568.tif 000004
【図３】
2015191568.tif 000005
【図４】
2015191568.tif 000006
【図５】
2015191568.tif 000007
【図６】
2015191568.tif 000008
【図７】
2015191568.tif 000009
【図８】
2015191568.tif 000010