(57)【要約】【課題】画像の特徴量算出における処理負荷を低減する。【解決手段】入力画像の特徴量を導出する画像処理装置は、所与の座標を基準として配置されるＮ個の画素の相対座標を示す座標情報を記憶する記憶手段と、座標情報に基づいて、入力画像における着目画素を所与の座標とした場合の該入力画像における画素の画素値を取得し、該入力画像に含まれる２個の画素の画素値を比較し第１の比較結果を出力する第１の比較手段と、第１の比較結果に基づいて、着目画素の特徴量を導出する導出手段と、を有する。第１の比較手段は、２個の画素の画素値の比較をＭ回実行してＭ個の第１の比較結果を出力し、第ｎ回目（２≦ｎ≦Ｍ）で比較する２個の画素は第（ｎ−１）回目で比較した２個の画素の一方を含み、導出手段は、第１の比較手段により出力されたＭ個の第１の比較結果を連結して着目画素の特徴量として導出する。【選択図】図２
2019016065.tif 000002
【特許請求の範囲】
【請求項１】
入力画像の特徴量を導出する画像処理装置であって、
所与の座標を基準として配置されるＮ個の画素の相対座標を示す座標情報を記憶する記憶手段と、
前記座標情報に基づいて、前記入力画像における着目画素を前記所与の座標とした場合の該入力画像における画素の画素値を取得し、該入力画像に含まれる２個の画素の画素値を比較し第１の比較結果を出力する第１の比較手段と、
前記第１の比較結果に基づいて、前記着目画素の特徴量を導出する導出手段と、
を有し、
前記第１の比較手段は、２個の画素の画素値の比較をＭ回実行してＭ個の前記第１の比較結果を出力し、第ｎ回目（２≦ｎ≦Ｍ）で比較する２個の画素は第（ｎ−１）回目で比較した２個の画素の一方を含み、
前記導出手段は、前記第１の比較手段により出力されたＭ個の前記第１の比較結果を連結して前記着目画素の特徴量として導出する
ことを特徴とする画像処理装置。
【請求項２】
前記第１の比較手段は、第ｎ回目の比較において、前記座標情報に含まれる第｛ｃ＋（ｎ−１）×ｋ１｝番目（ここで、ｃは任意の整数であり、ｋ１は｛ｃ＋（ｎ−１）×ｋ１｝≦Ｎを満たす正整数）の画素の画素値と第｛（ｃ＋ｎ×ｋ１）ｍｏｄＮ｝番目の画素値とを比較する
ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記第１の比較手段は、比較した２個の画素における画素値の大小を示す１ビット値を前記第１の比較結果として出力し、
前記導出手段は、前記第１の比較手段により出力されたＭ個の前記第１の比較結果をビット連結して得られるＭビット長の値を前記着目画素の特徴量として導出する
ことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記第１の比較手段は、比較した２個の画素における画素値の差分に対して所与の演算を行って得られる複数ビット値を前記第１の比較結果として出力し、
前記導出手段は、前記第１の比較手段により出力されたＭ個の前記第１の比較結果を連結して得られる配列を前記着目画素の特徴量として導出する
ことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項５】
前記Ｎ個の画素の画素値に含まれる２個の画素の画素値を比較し第２の比較結果を出力する第２の比較手段を更に有し、
前記第２の比較手段は、２個の画素の画素値の比較をＭ回実行してＭ個の前記第２の比較結果を出力し、第ｎ回目の比較において、前記座標情報に含まれる第｛ｃ＋（ｎ−１）×ｋ２｝番目（ここで、ｋ２≠ｋ１を満たす正整数）の画素の画素値と第｛（ｃ＋ｎ×ｋ２）ｍｏｄＮ｝番目の画素値とを比較し、
前記導出手段は、更に前記第２の比較手段により出力されたＭ個の前記第２の比較結果を連結して前記着目画素の特徴量として導出する
ことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項６】
前記第１の比較手段は、比較した２個の画素における画素値の大小を示す１ビット値を前記第１の比較結果として出力し、
前記第２の比較手段は、比較した２個の画素における画素値の大小を示す１ビット値を前記第２の比較結果として出力し、
前記導出手段は、前記第１の比較手段により出力されたＭ個の前記第１の比較結果と前記第２の比較手段により出力されたＭ個の前記第２の比較結果とをビット連結して得られる２Ｍビット長の値を前記着目画素の特徴量として導出する
ことを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記座標情報におけるＮ個の画素の相対座標は、前記所与の座標を中心とした１辺がＫ画素の正方領域（ただし、Ｋは、Ｎ＜Ｋ２を満たす正整数）に対して配置される
ことを特徴とする請求項１乃至６の何れか１項に記載の画像処理装置。
【請求項８】
入力画像の特徴量を導出する画像処理装置の制御方法であって、
所与の座標を基準として配置されるＮ個の画素の相対座標を示す座標情報に基づいて、前記入力画像における着目画素を前記所与の座標とした場合の該入力画像における画素の画素値を取得し、該入力画像に含まれる２個の画素の画素値を比較し比較結果を出力する比較工程と、
前記比較結果に基づいて、前記着目画素の特徴量を導出する導出工程と、
を含み、
前記比較工程では、２個の画素の画素値の比較をＭ回実行してＭ個の前記比較結果を出力し、第ｎ回目（２≦ｎ≦Ｍ）で比較する２個の画素は第（ｎ−１）回目で比較した２個の画素の一方を含み、
前記導出工程では、前記比較工程により出力されたＭ個の前記比較結果を連結して前記着目画素の特徴量として導出する
ことを特徴とする画像処理装置の制御方法。
【請求項９】
コンピュータを、請求項１乃至７の何れか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像の特徴量の算出技術に関するものである。
【背景技術】
【０００２】
近年、画像間の各画素の対応付けを行う技術の重要性が高まっている。対応とは、基準画像の画素と同一であるとみなす参照画像の画素の関係であり、二点の座標で表現できる。ステレオや多視点画像を入力した場合は、画素の対応関係から被写体の奥行きを算出できるため、３次元画像処理に応用することも可能である。また、連続して撮像された画像（動画）を入力し、その対応関係を相対座標として表現すれば、それは動きベクトルとなる。画素ごとの動きベクトル（以下オプティカルフロー）を利用することによって、動体追跡、動画の防振などが可能となる。着目画素を対応付けは、着目画素を中心とするパッチと、複数の参照候補画素を中心とするパッチを設定し、それぞれのパッチの相関（類似度）を算出して、相関が最も高い参照候補画素を参照画素とすることで行われる。パッチの相関を算出する方式にとしては、大きく２つの方式がある。
【０００３】
１つはテンプレートマッチングと呼ばれる方法で、２つのパッチの画素値の差の絶対値の合計、あるいは、二乗和の合計を計算する。それぞれ、ＳＡＤ（Sum Of Absolute Difference）やＳＳＤ（Sum of Squared Difference）と呼ばれ、この積算値が小さいほど相関が高いことになる。
【０００４】
もう１つの方式は、パッチ内の二点の画素値の差を算出し、この画素値の差を複数まとめた多次元ベクトルを特徴量として算出し、特徴量を比較する方式である。着目画素に対応する多次元ベクトルと参照候補画素に対応する多次元ベクトルの差のノルムを算出し、このノルムが小さいほど相関が高いとみなす。具体的には、ＳＩＦＴ（Scale-Invariant Feature Transform）やＢＲＩＥＦ（Binary Robust Independent Elementary Features）（非特許文献１）などのアルゴリズムがある。ＳＩＦＴの特徴量は多値の多次元ベクトルで表現される。一方、ＢＲＩＥＦの特徴量はビットの集合であるビット列で表現されバイナリ特徴量ともよばれる。このビット列のノルムは、特別にハミング距離とも呼ばれ、２つのビット列のＸＯＲ（排他的論理和）をとり１の個数をカウントすることで得られる。ＢＲＩＥＦに代表されるハミング距離を算出して相関を得る方式は、相関算出がビット演算で行えるため演算負荷が非常に小さい。そのため、ハードウェア（ＬＳＩなど）による実装及びソフトウェアによる実装の双方に適している。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】BRIEF: Binary Robust Independent Elementary Features, Computer Vision - ECCV 2010, Volume 6314 of the series Lecture Notes in Computer Science, pp 778-792
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、パッチ内の画素の画素値の差から特徴量を算出するにあたっては、画像の画素値を得ることが必要である。そして、メモリに展開された画像の画素値を得るためには、当該画素値が格納されたアドレスの計算と、当該アドレスへのメモリアクセスが必要となる。そのため、参照する画素数に応じた処理量の増加が発生することになる。
【０００７】
本発明はこのような問題を鑑みてなされたものであり、画像の特徴量算出における処理負荷を低減可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述の問題点を解決するため、本発明に係る画像処理装置は以下の構成を備える。すなわち、入力画像の特徴量を導出する画像処理装置は、
所与の座標を基準として配置されるＮ個の画素の相対座標を示す座標情報を記憶する記憶手段と、
前記座標情報に基づいて、前記入力画像における着目画素を前記所与の座標とした場合の該入力画像における画素の画素値を取得し、該入力画像に含まれる２個の画素の画素値を比較し第１の比較結果を出力する第１の比較手段と、
前記第１の比較結果に基づいて、前記着目画素の特徴量を導出する導出手段と、
を有し、
前記第１の比較手段は、２個の画素の画素値の比較をＭ回実行してＭ個の前記第１の比較結果を出力し、第ｎ回目（２≦ｎ≦Ｍ）で比較する２個の画素は第（ｎ−１）回目で比較した２個の画素の一方を含み、
前記導出手段は、前記第１の比較手段により出力されたＭ個の前記第１の比較結果を連結して前記着目画素の特徴量として導出する。
【発明の効果】
【０００９】
本発明によれば、画像の特徴量算出における処理負荷を低減可能とする技術を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】第１実施形態に係る画像処理装置の構成を示すブロック図である。
【図２】第１実施形態における特徴量の生成を示すフローチャートである。
【図３】特徴量の生成における比較パターンを例示的に示す図である。
【図４】第２実施形態における特徴量の生成を示すフローチャートである。
【図５】第３実施形態に係る画像処理装置の構成を示すブロック図である。
【図６】特徴量を生成する相対座標を規定するテーブルを例示的に示す図である。
【図７】１５×１５領域で規定されたインデックスを例示的に示す図である。
【図８】第４実施形態における特徴量の生成を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、図面を参照して、この発明の実施の形態の一例を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
【００１２】
（第１実施形態）
本発明に係る画像処理装置の第１実施形態として、画像のバイナリ特徴量を導出する装置を例に挙げて以下に説明する。具体的には、着目画素の座標を基準として、順序（インデックス）が付された複数の相対画素位置（座標）を予め決めておく。そして、連続する２つのインデックスの相対画素位置の画素の画素値に基づいてバイナリ特徴量を導出する。
【００１３】
＜前提事項＞
第１実施形態を説明するにあたって、前提となる事項について説明する。以下の説明では、画像は８ビット整数（２５６階調）のモノクロ画像とする。また、着目画素のバイナリ特徴量を算出する方法を説明するが、着目画素とは、画像の画素を順次走査する際の対象画素、あるいは、画像から特徴点検出をおこなった結果として複数の特徴点を順次走査する際の対象画素であるものとする。着目画素の選び方については説明は省略するが、任意の手法が利用可能である。取得された特徴量は、時間的に連続する他の画像で得た画素の特徴量と比較される（つまりハミング距離が計算される）。ハミング距離が最も短い画素同士をマッチングさせ、マッチングした画素の相対座標を得ることで、画素の動きとすることができる。そのため、物体認識などにも応用することできる。
【００１４】
＜装置構成＞
図１は、第１実施形態に係る画像処理装置の構成を示すブロック図である。
【００１５】
画像処理装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＲＯＭ１０３、ハードディスクドライブ（ＨＤＤ）などの記憶部１０４を有している。また、画像処理装置１００は、外部装置の記憶部である外部メモリ１０８からデータを入力するための入力インターフェース（Ｉ／Ｆ）１０５、および、表示装置１０９にデータを出力するための出力インターフェース（Ｉ／Ｆ）１０６を有している。画像処理装置１００の各部は、バス１０７を介して相互に通信可能に接続されている。
【００１６】
ＣＰＵ１０１は、ＲＡＭ１０２に読み込まれたプログラムを実行するプロセッサである。ＲＡＭ１０２は、ワークメモリであり、画像及び、計算結果などのデータを一時的に格納する。また、ＲＯＭ１０３や記憶部１０４には実行プログラムが記憶される。特別な記述がないかぎりＣＰＵ１０１がバス１０７を介して、データを入出力する。記憶部１０４は、画像や処理結果などのデータ、実行プログラムを記録する装置である。プログラム実行時は、プログラム、および、画像を記憶部１０４からＲＡＭ１０２へ読み込み、処理結果をメモリ１０２から記憶部１０４へ書き込む。
【００１７】
＜装置の動作＞
図２は、第１実施形態における特徴量の生成を示すフローチャートである。以下のフローチャートの説明において、各ステップの符号をＳと表記することとする。ここでは、着目画素に対する６４ビットのバイナリ特徴量を生成する。なお、本実施形態では、図中の矢印で示される順で処理が実施されるものとして説明するが、同一の結果を生成するフローであれば、他の処理の順序やループ処理を用いてもよい。
【００１８】
Ｓ２０１０では、ＣＰＵ１０１は、ｎを”０”で初期化する。ｎは後述するループの制御変数である。Ｓ２０２０では、ＣＰＵ１０１は、第ｎ番目の相対座標データを取得する。相対座標データは、水平、垂直座標値を（ｘｎ，ｙｎ）のように表現するものとする。ここでは、ｘｎ，ｙｎは、それぞれ、−１５〜１５の範囲の値で表現されるものとする。また、相対座標データは６５個の座標データを含み、ｎは０〜６４の値をとるものとする。相対座標は、特徴量算出処理の事前に用意すればよく、ＨＤＤに予め記憶してあるものをメモリで呼び出してもよいし、図２に示す処理の実行直前に生成してもよい。
【００１９】
図６は、特徴量を生成する相対座標を規定するテーブルを例示的に示す図である。当該テーブルは、ループ回数のインデックス”ｎ”、相対座標の座標情報”ｘｎ”及び”ｙｎ”、および後述するインデックス値”ｉｄｘ”を関連づけるテーブルである。当該テーブルに規定される相対座標の特性については図３を参照して後述する。
【００２０】
Ｓ２０３０では、ＣＰＵ１０１は、着目画素に対し第ｎ番目の相対座標が示す画素の画素値を入力画像から参照（画素値取得）して、その画素値をＡとする。現在の着目画素の座標が（ｘｔ，ｙｔ）である場合、（ｘｔ＋ｘｎ，ｙｔ＋ｙｎ）の座標の画素に対するアドレスを計算し、画素値を取得する。入力画像の幅をｗとすると、（０，０）座標のメモリ上のアドレス値をＢａｓｅＡｄｄｒとすると、画素値Ａは、（ｙｔ＋ｙｎ）×ｗ（ｘｔ＋ｘｎ）＋ＢａｓｅＡｄｄｒで計算できるアドレス値の値を読むことで参照できる。
【００２１】
Ｓ２０４０では、ＣＰＵ１０１は、第ｎ＋１番目の相対座標を参照（画素値取得）する。Ｓ２０５０では、ＣＰＵ１０１は、着目画素に対し第ｎ＋１番目の相対座標が示す画素の画素値を入力画像から参照して、その画素値をＢとする。これは、座標（ｘｔ＋ｙｎ＋１，ｙｔ＋ｙｎ＋１）の画素値を取得することになる。
【００２２】
Ｓ２０６０では、ＣＰＵ１０１は、ＡとＢを比較し、Ａ＞Ｂが真の場合はＳ２０７０へ、偽の場合はＳ２０８０へ遷移する。なお、本実施形態では、"＞"という比較を用いたが，これに限定されず、”＜”，”≧”、”≦”の何れを用いてもよい。
【００２３】
Ｓ２０７０では、ＣＰＵ１０１は、ｂ＝１とする。Ｓ２０８０では、ＣＰＵ１０１は、ｂ＝０とする。Ｓ２０９０では、ＣＰＵ１０１は、ｂｉｔｓ［ｎ］＝ｂとする。ｂｉｔｓの要素はビットで［］を使ったインデックス操作でアクセスできるものとする。詳細は後述するがｎをインクリメントし、順次、ｂｉｔｓ［ｎ］に値を代入することで、ビット列が生成されることになる。
【００２４】
Ｓ２１００では、ＣＰＵ１０１は、Ａ＝Ｂとする。Ｓ２０４０からＳ２１２０のループ処理において、次の処理のために値をストアしておくものである。Ｓ２１１０では、ＣＰＵ１０１は、ｎ＝ｎ＋１とする（ｎをインクリメントする）。Ｓ２１２０では、ＣＰＵ１０１は、ｎ＜要素数、を判定し、判定結果が真の場合はＳ２０４０へ、偽の場合は処理を終了する。要素数とは生成するビットの数、つまり生成するバイナリ特徴量のビット長（Ｍビット長）であり、ここではＭ＝６４になる。Ｓ２０４０からＳ２１２０は処理を既定の回数繰り返す（Ｍ回実行する）ループ構造をとる。これらの処理によりバイナリ特徴量としての６４ビットのビット列が得られる。
【００２５】
＜相対座標データの説明＞
図３は、特徴量の生成における比較パターンを例示的に示す図である。具体的には、所与の座標である着目画素を基準として配置される複数（Ｎ個）の画素の相対座標を例示的に示している。図３（ａ）は、従来技術であるＢＲＩＥＦにおける線分の配置パターンである。図３（ｂ）は、第１実施形態における線分の配置パターンである。
【００２６】
従来技術であるＢＲＩＥＦは、比較する二点、つまり、独立した線分ごとに２点の相対座標データを保持し画素値を参照しビット列を生成する。つまり、ＢＲＩＥＦでは、図３（ａ）に示されるような離散した複数の線分の配置パターンを利用している。この場合、１２８個の相対座標データから６４ビットのバイナリ特徴量が生成される。
【００２７】
一方、第１実施形態では、相対座標データのリストで指定された複数の画素に連続的にアクセスし、現在アクセスした画素と１回前にアクセスした画素の画素値を大小比較し、比較結果をビット値とする。そして、生成したビット値を６４個（Ｍ個）ビット連結してバイナリ特徴量を生成する。つまり、第１実施形態では、図３（ｂ）に示されるような連続する複数の線分の配置パターンを利用している。すなわち、複数の線分があたかも一筆書きのように配置されている。そして、６５個の相対座標データから６４ビットのバイナリ特徴量が生成される。つまり、第１実施形態では、相対座標データの個数（画素の参照回数）がＢＲＩＥＦに比較しほぼ半減している。
【００２８】
上述のＳ２０３０でも説明したとおり、画素の参照は、アドレス計算、つまり、乗算を伴い、演算コストが非常に高い。そのため画素の参照回数の低減は処理負荷や処理時間の削減に大きく寄与する。なお、上述の説明においては６５点のデータを持つものと説明したが６５点目（ｎ＝６４）のデータを１点目（ｎ＝０）と同一としてもよい。
【００２９】
次に相対座標データの特性について説明する。上述したようにｘｎ、ｙｎは、−１５〜１５の範囲の乱数によって決められるが、線分が重複しないように設定される。すなわち、Ｎ個の画素の相対座標は、第ｎ番目の画素の座標と第ｎ＋１番目の画素の座標とにより構成される線分が、任意のｎについて一致しないよう構成される。上述の図６は、以下の制約を持った相対座標データのリストの例である。
・連続する２つの相対座標は少なくとも１画素以上離れて設定される。つまり、任意のｎについて、√｛（ｘｎ−ｘｎ＋１）２＋（ｙｎ−ｙｎ＋１）２｝≧１を満足する。ただし、２画素以上離したほうが後述の識別能力が高くなる。
・始点が同一の線分は少なくとも終点が１画素以上離れている。つまり、任意のｎについて、ｘｎ＝ｘｎ＋ｓかつｙｎ＝ｙｎ＋ｓ、ならば、√｛（ｘｎ＋１−ｘｎ＋ｓ＋１）２＋（ｙｎ＋１−ｙｎ＋ｓ＋１）２｝≧１を満足する。ここで、ｓは非ゼロの整数である。ただし、２画素以上離したほうが後述の識別能力が高くなる。
・線分の始点と終点が逆転したのみの線分は許可しない。つまり、任意のｎについて、ｘｎ＝ｘｎ＋ｓ＋１かつｙｎ＝ｙｎ＋ｓ＋１の場合、ｘｎ＋１≠ｘｎ＋ｓ及びｙｎ＋１≠ｙｎ＋ｓの少なくとも一方を満たす。
【００３０】
隣接画素は、光学的なボケ、画像処理の平滑化などにより、近似した値になりやすい。つまり、ある線分に対し、始点と終点が隣接する線分では比較結果も似る傾向にあり、特徴量を比較した場合に差が発生しにくい。つまり、識別能力が低くなり情報の価値が低いといえる。そこで、本実施形態では、相対座標の配置に制約を与えることにより、識別能力が高くなりより情報としての価値の高いビット列、つまり特徴量を生成することができる。二点の特徴量を算出しハミング距離を計算すれば、画像の相関を得ることができる。
【００３１】
上述の説明においては、連続した線分（図３（ｂ））に基づき生成したビット列を特徴量として利用するものとして説明したが、生成したビット列に付加的に情報を追加してもよい。例えば、図３（ｃ）のように、着目画素（中心点）を始点として同心円状に配置した点を終点として、線分を配置し、始点の画素値と終点の画素値を比較して作ったビット列を追加してもよい。この例では８ビットのビット列が生成できて、生成した６４ビットのバイナリ特徴量に連結すれば、７２ビットのバイナリ特徴量を生成したことになる。中心画素は、着目画素の特徴を最も表現する画素である場合が多く、この画素値を重点的に利用したビット列を生成することは、特徴量の識別能力を高めることにもつながる。また、Ｓ２０３０では、画素値を直接参照したが、３×３のフィルタを施した画像の画素値を取得する構成であってもよい。
【００３２】
以上説明したとおり第１実施形態によれば、連続した複数の線分のそれぞれにおける始点及び終点を利用して順次画素値の参照を行いバイナリ特徴量を生成する。この構成により、バイナリ特徴量の生成に必要な画素の参照回数を低減することが可能となり、処理負荷／処理時間を低減することが可能となる。
【００３３】
なお、本実施形態では、画素値を連続的に比較してバイナリ特徴量を生成している。そのため、バイナリ特徴量を解析することにより、着目画素とその周辺領域の画像成分の特性を得ることができる。バイナリ特徴量における０の数の比率が１００％の場合、連続して画素値を比較しているため一連の画素値が同一になることが保証される。これは、比較する画素をサンプリングしているものの、着目画素とその周辺領域の画素が一様である確率が十分に高いことを示す。画素が一様であれば、ハミング距離を算出してマッチングする場合、値が同一となりマッチング結果の信頼性が低く、画素が一様でなければ、マッチング結果の信頼性は高いといえる。よって、バイナリ特徴量の０から算出できる特徴量の信頼度ｒは、以下の式で計算できる。なお、ＢＲＩＥＦ特徴量は０と１の比率に意味がないため、この特性は本特徴量に独自の特性である。
【００３４】
【数１】
2019016065.tif 000003
【００３５】
また、第１実施形態においては、Ｎ個の画素の画素値において、相対座標データのリスト（図６）においてインデックスが連続する２つの画素を順に比較することにより、特徴量を生成した。すなわち、第ｎ回目の比較において、第ｎ番目の画素と第（ｎ＋１）番目の画素とを比較した。しかしながら、比較する２つの画素においてインデックスが連続する必要はなく、現在のループで比較する２個の画素の一方が、先行するループで比較した２個の画素の一方を含むように構成すれば足りる。すなわち、第ｎ回目の比較において、第｛ｃ＋（ｎ−１）×ｋ１｝番目の画素の画素値と第｛（ｃ＋ｎ×ｋ１）ｍｏｄＮ｝番目の画素値とを比較すれば足りる。ここで、ｃは、１回目のループで比較した１個目の画素のインデックス（オフセット）に相当する値であり任意の整数である。なお、ｋ１は任意の正整数であり、Ｓ４０４０からＳ４１２０のループ演算中に固定値としてもよいし変化するよう設定してもよい。ｋ１を固定値とした場合、ｋ１個毎の２つの画素を順に比較することになる。
【００３６】
例えば、Ｎ＝８（第０番目〜第７番目の計８画素）、ｋ１＝３（固定値）で、６ビットのビット列を生成する場合は、各ループで以下の２つの画素の画素値を比較する。なお、ｍｏｄは剰余演算を示す。
１回目のループ：第０番目の画素と第３番目の画素
２回目のループ：第３番目の画素と第６番目の画素
３回目のループ：第６番目の画素と第１（＝（６＋３）ｍｏｄ８）番目の画素
４回目のループ：第１番目の画素と第４番目の画素
５回目のループ：第４番目の画素と第７番目の画素
６回目のループ：第７番目の画素と第２（＝（７＋３）ｍｏｄ８）番目の画素
【００３７】
このように、先行するループで比較した２個の画素の一方の画素値と、現在のループで新たに取得する画素（Ｓ２０４０）の画素値とを比較して１ビット値を生成することで、画素の参照回数を低減することができる。すなわち、図３（ｂ）に示すように、各ループで比較する２個の画素で規定される線分が一筆書きとなるようにすることで画素の参照回数を低減することができる。
【００３８】
（第２実施形態）
第２実施形態では、着目画素に関して設定された３４個の相対座標の画素値に基づいて、当該着目画素に対する６４ビットの特徴量を生成する例について説明する。具体的には、着目画素の座標を基準とした順序（インデックス）が付された複数の相対画素位置（座標）を予め決めておく。１つ飛びの２つのインデックスの相対画素位置の画素の画素値に基づいてバイナリ特徴量を導出する。なお、装置構成は第１実施形態（図１）と同様であるため説明は省略する。
【００３９】
＜装置の動作＞
図４は、第２実施形態における特徴量の生成を示すフローチャートである。上述のように、ここでは、３４個の相対座標データから６４ビットの特徴量を生成することを想定する。また、以下の説明では、第１実施形態（図２）と異なる部分についてのみ説明する。
【００４０】
Ｓ４０１０では、ＣＰＵ１０１は、ｎ＝０とする。ｎは後述するループ処理の制御変数である。Ｓ４０２０では、ＣＰＵ１０１は、第ｎ番目の相対座標データを取得する。相対座標データは、水平、垂直座標値を（ｘｎ，ｙｎ）のように表現するものとする。本実施形態では、ｘｎ，ｙｎは、それぞれ、−１５〜−１５の範囲の値であるものとする。また、相対座標データは３４個の要素が存在し、ｎは０〜３３の値をとるものとする。
【００４１】
Ｓ４０３０では、ＣＰＵ１０１は、着目画素に対し第ｎの相対座標が示す画素値を入力画像から参照して、Ｐ［ｎ］とする。つまり、入力画像に対し、（ｘｔ＋ｙｎ，ｙｔ＋ｙｎ）の画素値を取得することになる。
【００４２】
Ｓ４０４０では、ＣＰＵ１０１は、ｎ＝ｎ＋１とする。Ｓ４０５０では、ＣＰＵ１０１は、ｎ＜相対座標要素数、であるか否かを判定する。本実施形態では、相対座標要素数は前述したとおり”３４”である。判定結果が真の場合は、Ｓ４０２０へ遷移する。偽の場合にはＳ４０６０へ遷移する。Ｓ４０２０からＳ４０５０はｎを制御するループ処理になっており、連続する画素値の配列が作られることになる。
【００４３】
Ｓ４０６０では、ＣＰＵ１０１は、ｍ＝０とする。ｍは後述するループの制御変数である。Ｓ４０７０では、ＣＰＵ１０１は、Ｐ［ｍ］＞Ｐ［ｍ＋１］を判定する。判定結果が真の場合にはＳ４０８０へ、偽の場合には、Ｓ４０９０へ遷移する。Ｓ４０８０では、ＣＰＵ１０１は、ｂ０＝１とする。その後４１００へ遷移する。Ｓ４０９０では、ＣＰＵ１０１は、ｂ０＝０とする。その後４１００へ遷移する。
【００４４】
Ｓ４１００では、ＣＰＵ１０１は、Ｐ［ｍ］＞Ｐ［ｍ＋ｋ］を判定する。本実施形態ではｋ＝２とする。判定結果が真の場合にはＳ４１１０へ、偽の場合には、Ｓ４１２０へ遷移する。Ｓ４１１０では、ＣＰＵ１０１は、ｂ１＝１とする。その後４１３０へ遷移する。Ｓ４１２０では、ＣＰＵ１０１は、ｂ１＝０とする。その後４１３０へ遷移する。
【００４５】
Ｓ４１３０では、ＣＰＵ１０１は、ｂｉｔｓ［２ｍ］＝ｂ０，ｂｉｔｓ［２ｍ＋１］＝ｂ１とする。これは生成した２つのビットを連結する処理ともいえる。
【００４６】
Ｓ４１４０では、ＣＰＵ１０１は、ｍ＝ｍ＋１とする。Ｓ４１５０では、ＣＰＵ１０１は、２×ｍ＋１＜要素数、を判定する。判定結果が真の場合は、Ｓ４０７０へ遷移する。偽の場合には処理を終了する。上述の通り、本実施形態では要素数は”６４”である。Ｓ４０７０からＳ４１４０はｍを制御変数とするループ処理になっており、１回のループ処理で２ビット長のビット列が作られ、Ｍ個（ここではＭ＝３２）のループ全体で６４ビット長（２Ｍビット長）のビット列が作られる。
【００４７】
以上説明したとおり第２実施形態によれば、第１実施形態に比較し約半分の回数の画素参照でバイナリ特徴量を生成可能となる。
【００４８】
なお、上述の説明では、連続する２つの相対座標データが示すポイントから２ビットを作る例を説明したが、これに限定されない。基準となるｐ［ｍ］に対して、ｐ［ｍ＋１］、ｐ［ｍ＋２］、ｐ［ｍ＋３］など３点以上の点を比較する構成をよってもよい。ただし、減らしすぎると生成された特徴量の識別能力を低下させることになるため、ビット列のビット数が十分に大きい場合に適用するとよい。
【００４９】
また、上述の説明では、隣接する画素間の比較（ｋ１＝１）と１つ飛びの画素間の比較（ｋ２＝２）により構成しているがこれに限定されない。ｋは任意の数でよい。例えば、連続する線分のパターンを十六角形（つまり、Ｎ＝１６）にしたとき、ｋ１＝３及びｋ２＝９の双方を行い、生成された２つのビット列を連結して１つのビット列を生成してもよい。
【００５０】
さらに、Ｓ４０２０からＳ４０５０のループとＳ４０７０からＳ４１４０のループという二段構成をとったが、必ずしも二段構成である必要はない。画素値を参照直後にビットを生成する構成をとってもよい。この場合、配列Ｐは、全ての画素値を保持する領域を持つ必要がなくなる。
【００５１】
（第３実施形態）
第３実施形態では、ハードウェア回路によりバイナリ特徴量を生成する装置を構成する場合の実装例について説明する。
【００５２】
＜装置構成＞
図５は、第３実施形態に係る画像処理装置の構成を示すブロック図である。以下では、図５（ａ）に示すバイナリ特徴量の生成装置に関して説明する。
【００５３】
生成装置５００は、バス５０１を介して、ＣＰＵ５０２により制御される。メモリ５０３は、処理対象の画像データなどが格納されるワークメモリとして配置される。生成装置５００は、比較演算器５０４、ビット列格納メモリ５０５、コントローラ５０６、バッファ５０７、相対座標データ格納メモリ５０８、レジスタ５０９、５１０、コピー回路５１１を有している。なお、ここでは、相対座標データ格納メモリ５０８は、図６に示す相対座標データを格納しているとする。なお、ここでは、生成装置５００、ＣＰＵ５０２、メモリ５０３を別体として示しているが一体の構成としてもよい。
【００５４】
以下では、着目画素からビットを１ビットずつ生成し、最終的に６４ビットのビット列を生成する動作について図５（ａ）を使って説明する。
【００５５】
ＣＰＵ５０１は、メモリ５０３に格納された画像データのうち、着目画素を中心とする１５ｘ１５領域の画素をバッファ５０７に読み込ませる。以下、ｎ（ｎは０〜６３）ビット目のビットを生成する動作として説明する。
【００５６】
コントローラ５０６は、相対座標データを順に相対座標データ格納メモリ５０８から読み込み、対応する画素の画素値をレジスタ５０９に格納する。ここでは、一回の動作で、図６の相対座標データの”ｉｄｘ”列で指定されたインデックス値を順に参照する。さらに、インデックス値に対し、図７に示すインデクスマップの対応する位置の画素値を取得する。図７は、１５×１５領域のインデックスマップを説明する図である。各画素に対応する領域には、０〜２２４のインデックス値が割り当てられている。すなわち、図６の相対座標データの”ｉｄｘ”列は図７に示すインデックス値が指定される。すなわち、図６に示されるＮ個の画素の相対座標は、図７に示される着目座標を中心とした１辺がＫ画素（ここではＫ＝１５）の正方領域に対して配置される。なお、Ｋは、Ｎ＜Ｋ２を満たす正整数である。コピー回路５１１は、レジスタ５０９に格納されている画素値をレジスタ５１０にコピーし格納する。
【００５７】
その後、コントローラ５０６は、相対座標データにおける次の相対座標に対応する画素値データをレジスタ５０９へ書き込む。比較演算器５０４は、レジスタ５０９の値（ここでは”Ａ”）とレジスタ５１０の値（ここでは”Ｂ”）を比較し、Ａ＞Ｂの場合には”１”を、それ以外の場合には”０”をビット列格納メモリ５０５に出力する。ビット列格納メモリ５０５は、入力したビットを順次結合する。
【００５８】
以後、コピー回路５１１による値のコピー、コントローラ５０６の画素値データの読み込みとレジスタ５０９への書き込み、比較演算器５０４による比較演算とビットの出力が順次行われ、ビット列が生成される。ＣＰＵ５０１は、６４ビットのビット列が生成された時点で、ビット列格納メモリから当該ビット列を読み込み、メモリ５０３に書き込む。
【００５９】
以上の動作が着目画素ごとに繰り返され複数の特徴量が生成される。このようなハードウェア構成により、第１実施形態と同様の特徴量を生成することが可能となる。
【００６０】
なお、図５（ａ）ではコピー回路５１１を利用して値をコピーする実装例を示したが、この構成に限定されるものではない。例えば、図５（ｂ）に示す構成としてもよい。図５（ｂ）では、コントローラ５０６は、画素値をレジスタ５０９、レジスタ５１０へ交互に書き込む動作を行う。このためコピー回路５１１が必要ない。なお、この場合、レジスタ５０９の値（ここでは”Ａ”）とレジスタ５１０の値（ここでは”Ｂ”）を、常にＡ＞Ｂとして比較した場合、図５（ａ）の場合とは異なるビットが生成される。ただし、同一の装置で特徴量を生成している限りはこの値を特徴量として用いても問題はない。なお、第１実施形態と同様の特徴量を生成する場合には、比較演算器５０４において”Ａ＞Ｂの判定”と”Ｂ＜Ａの判定”を交互に実施する必要がある。
【００６１】
また、上述の説明においては、１つの比較演算器がビットを生成しビット列を生成する構成を示したが、これに限定されない。２つ以上の比較演算器やレジスタを持つ構成をとっても良い。このときは、画素参照しながらビットを生成する処理が並列に行われることになる。
【００６２】
以上説明したとおり第３実施形態によれば、ハードウェアにより第１実施形態と同様のバイナリ特徴量を生成することが可能となる。なお、上述の説明では、第１実施形態と同等の処理を行うハードウェア構成について説明したが、第２実施形態と同様の処理を行うハードウェア構成とすることも可能である。だたし、その場合、追加のレジスタが必要になる。
【００６３】
（第４実施形態）
第４実施形態では、配列として示される特徴量を生成する形態について説明する。すなわち、第１〜第３実施形態では、１要素が１ビット値で表現されるバイナリ特徴量を生成する例について説明したが、第４実施形態では、１要素が複数ビット値で表現される特徴量を生成する。
【００６４】
＜装置の動作＞
図８は、第４実施形態における特徴量の生成を示すフローチャートである。特別な記載がない場合には、第１実施形態（図２）で説明した動作と同等である。ここでは、最終的に生成する特徴量（多次元ベクトル）は、ａｒｒで表す配列とする。第４実施形態では６４個の要素を持つ、つまり、６４次元ベクトルになる。Ｓ２０１０〜Ｓ２０５０、Ｓ２１００〜Ｓ２１２０は、図２の同符号における動作と同じである。Ｓ２０５０の処理を実施後、Ｓ８０９０を実行する。
【００６５】
Ｓ８０９０では、ＣＰＵ１０１は、ＡとＢを引き数として、関数ｆを計算し、結果をａｒｒ［ｎ］に代入する。関数ｆは、ＡとＢの比較結果を数値化するものであり、例えば、差分を示す以下の式を用いることが出来る。
ｆ（ａ，ｂ）＝ａ−ｂ    ・・・（１）
【００６６】
ここで、ＡとＢはそれぞれ８ビット値であるため、ａｒｒの１要素は、９ビット以上の整数を表現できるものとする。利用する数式は数式（１）に限定されず、以下の数式（２）あるいは数式（３）を用いてもよい。
【００６７】
以下の数式（２）は、計算結果が「符号ありの８ビット」に収まるように係数を掛けた式である。数式（２）では、ａｒｒの１要素を８ｂｉｔに収めることができる。
ｆ（ａ，ｂ）＝１２７×（ａ−ｂ）／２５５    ・・・（２）
【００６８】
また、以下の数式（３）のように任意の係数ｋを掛け、符号あり８ビットに収まるように飽和させてもよい。ｍａｘ（ａ，ｂ）は、ａ，ｂのうち大きい値を返す関数であり、ｍｉｎ（ａ，ｂ）は、ａ，ｂのうち小さい値を返す関数である。係数ｋは、画像のコントラスト（例えば、入力画像の標準偏差）に比例した値を設定するとよい。数式（３）でも、ａｒｒの１要素を８ｂｉｔに収めることができる。
ｆ（ａ，ｂ）＝ｍｉｎ（ｍａｘ（ｋ（ａ−ｂ），１２８），１２７）    ・・・（３）
【００６９】
このように、ｆはＡ，Ｂの大小関係を表現する値を計算する限り、様々に定義できる。Ｓ８０９０の処理の後に、Ｓ２１００に遷移する。フロー終了時点でａｒｒとして特徴量が生成される。
【００７０】
以上説明したとおり第４実施形態によれば、１要素が多ビットで表現される特徴量を算出することが可能となる。なお、上述の説明では、８ビット整数（２５６階調）画像を扱うものとしてが、これに限定されず、１６ビット整数、あるいは、浮動小数点数で表現された画像に適用することも可能である。
【００７１】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７２】
５００  生成装置；  ５０１  バス；  ５０２  ＣＰＵ；  ５０３  メモリ；  ５０４  比較演算器；  ５０５  ビット列格納メモリ；  ５０６  コントローラ；  ５０７  バッファ；  ５０８  相対座標データ格納メモリ；  ５０９  レジスタ；  ５１０  レジスタ
【図１】
2019016065.tif 000004
【図２】
2019016065.tif 000005
【図３】
2019016065.tif 000006
【図４】
2019016065.tif 000007
【図５】
2019016065.tif 000008
【図６】
2019016065.tif 000009
【図７】
2019016065.tif 000010
【図８】
2019016065.tif 000011