(57)【特許請求の範囲】
【請求項１】
入力画像パターンを複数のビットの符号に符号化する符号化手段と、
前記符号の各ビットに対する信頼度を計算する計算手段と、
前記符号において前記信頼度が所定値以下のビットまたは前記信頼度の和が所定の合計値以下となるビットの組の少なくとも1つのビットを反転させた類似符号を生成する生成手段と、
前記符号化手段が生成した符号と、前記生成手段が生成した類似符号と、に基づいて前記入力画像パターンを認識する認識手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記符号化手段は、前記入力画像パターン上の複数の特徴量の値の差に基づいて符号化を行い、前記計算手段は、前記入力画像パターンに対する前記特徴量の値の差に基づいて前記符号の各ビットに対する信頼度を計算することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記符号化手段は、前記入力画像パターン上で画素の規定数のペアを設定し、該規定数のペアのそれぞれについて、該ペア中の画素同士の画素値の大小関係を示すビット値を求めることで、前記入力画像パターンを前記規定数のビットの符号に符号化し、
前記計算手段は、前記符号の各ビットに対して、該ビットのビット値を計算するために用いたペア中の２画素の画素値から該ビットに対する信頼度を求めることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記計算手段は、前記符号の各ビットに対して、該ビットのビット値を計算するために用いたペア中の画素同士の画素値の差分を、該ビットに対する信頼度として求めることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記生成手段は、信頼度が所定値以下のビットのうち信頼度がより低いビットから順にビット値を反転させ、該反転のたびに得られるビット列を前記類似符号として生成することを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
前記認識手段は、
複数の学習用画像パターンのそれぞれを前記符号化手段により符号化した符号のうち、前記入力画像パターンから前記符号化手段により求めた符号若しくは前記生成手段が求めた類似符号と一致する符号を特定する特定手段と、
前記特定手段が特定した符号の生成元である学習用画像パターンに関する情報を出力する出力手段と
を備えることを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前記特定手段は、前記複数の学習用画像パターンのそれぞれを前記符号化手段により符号化した符号のうち、前記入力画像パターンから前記符号化手段により求めた符号若しくは前記生成手段が求めた類似符号のそれぞれと一致する符号に対して得点を与え、
前記出力手段は、得点が高い順に１以上の符号について、該符号の生成元である学習用画像パターンに関する情報を出力する
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記認識手段は、前記入力画像パターンを前記符号化手段により符号化した符号と該符号から生成された前記類似符号との類似度を算出し、該符号及び該類似符号を辞書と照合し、該照合の結果に対して前記類似度によって重みづけをして、前記入力画像パターンを認識することを特徴とする請求項１乃至７の何れか１項に記載の情報処理装置。
【請求項９】
情報処理方法であって、
入力画像パターンを複数のビットの符号に符号化する符号化工程と、
前記符号の各ビットに対する信頼度を計算する計算工程と、
前記符号において前記信頼度が所定値以下のビットまたは前記信頼度の和が所定の合計値以下となるビットの組の少なくとも1つのビットを反転させた類似符号を生成する生成工程と、
前記符号化工程で生成した符号と、前記生成工程で生成した類似符号と、に基づいて前記入力画像パターンを認識する認識工程と
を備えることを特徴とする情報処理方法。
【請求項１０】
コンピュータを、請求項１乃至８の何れか１項に記載の情報処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パターン認識技術に関するものである。
【背景技術】
【０００２】
従来から、分類木の集合（アンサンブル）を用いた手法が提案されている。これは、分類木をＬ個（Ｌは２以上の定数）作成し、それら全部を用いることによって、より高い認識性能を実現する技術である。
【０００３】
以下にあげる非特許文献１では、分類木の集合（アンサンブル）を用いた手法をコンピュータビジョンに応用した例が開示されており、この開示されている手法は、以下のような手法である。
【０００４】
まず、１つの登録画像に対して、微小な変形やノイズの付加などを行って、登録画像のバリエーション画像を作る。すなわち、１つの種別の登録画像に対して複数のバリエーション画像を生成する。
【０００５】
次に、画像上の２か所の参照点位置を示す参照点ペアをランダムにＮ個生成する（以下、参照点ペア列と呼ぶ）。次に、参照点ペア列における画像輝度値を比較し、その大小の結果の列を０／１のビット列であらわすことにより、一つの画像と一つの参照点ペア列からＮ桁ビットのバイナリコードを算出する。
【０００６】
そして、バリエーション画像それぞれについて前述のようにＮ桁のバイナリコードを算出し、バイナリコードに対応する登録画像種別との確率を学習する。これが一つの分類木に相当する。このようなＮ桁バイナリコードによる学習を、参照点ペア列をＬ回変えて学習する。すなわち、Ｌ個の分類木を作成する。
【０００７】
検出時には、入力画像に対して、学習時に定めたＮ個の参照点ペアの位置に従って入力画像からＮ桁のバイナリコードを算出する。これを学習時に定めたＬ個の異なる参照点ペア列すべてに対して行う。得られたＬ個のバイナリコードに関連付けられた登録画像の確率の積をとり、最も確率の高い登録画像種別を検出結果とする。
【０００８】
この方法によれば、検出時の処理においては、入力画像の参照点ペアの画素値比較によるバイナリコード化、および、バイナリコードによる辞書テーブル参照、という高速な手法で実施できる。そのため、古典的な分類木による認識処理に比べて非常に高速にできる。また、認識精度も十分高いという報告が論文の中でされている。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Mustafa Ozuysal, Pascal Fua, Vincent Lepetit, "Fast Keypoint Recognition in Ten Lines of Code," cvpr, pp.1-8, 2007 IEEE Conference on Computer Vision and Pattern Recognition, 2007
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従来の技術によれば、学習のために一つの登録画像に対して複数のバリエーション画像を作る必要があり、学習時の作業手順・処理負荷がかかるという問題があった。また、バリエーション数を増やしたことにより学習結果の情報（辞書）のサイズが増大し、メモリを圧迫する、という問題があった。辞書のサイズは、登録する画像の種別数とそのバリエーション数の積に従って増大するため、登録画像の種別数が多い場合にはことさら問題があった。
【００１１】
また、辞書サイズを小さく維持するためにバリエーション数を制限すると、数少ない学習画像だけで学習されることとなり、検出性能が低下する、という問題があった。たとえば、上記の例で示したような、参照点ペア２点の画素比較結果による特徴量は、照明変動・姿勢変動・ノイズによって容易に変わってしまう。したがって、認識をロバストにするためには１つのパターン種別について十分に多いバリエーション画像を学習する必要があり、辞書サイズが増大するという課題があった。
【００１２】
本発明はこのような問題に鑑みてなされたものであり、学習時の処理において学習パターンに対するバリエーションを多数生成しなくても認識処理のロバスト性を向上させることができる技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の目的を達成するために、例えば、本発明の情報処理装置は、入力画像パターンを複数のビットの符号に符号化する符号化手段と、
前記符号の各ビットに対する信頼度を計算する計算手段と、
前記符号において前記信頼度が所定値以下のビットまたは前記信頼度の和が所定の合計値以下となるビットの組の少なくとも1つのビットを反転させた類似符号を生成する生成手段と、
前記符号化手段が生成した符号と、前記生成手段が生成した類似符号と、に基づいて前記入力画像パターンを認識する認識手段と
を備えることを特徴とする。
【発明の効果】
【００１４】
本発明の構成によれば、学習時の処理において学習パターンに対するバリエーションを多数生成しなくても認識処理のロバスト性を向上させることができる。また、多数のバリエーションを学習する必要がないために、学習処理が高速・単純となる。また、学習によって生成される辞書のサイズを少なくすることができる。
【図面の簡単な説明】
【００１５】
【図１】パターン認識装置の構成例を示すブロック図。
【図２】パターン認識装置が行う学習処理のフローチャート。
【図３】参照２点位置リスト１２０の構成例を示す図。
【図４】符号・種別対応テーブル１２２の構成例を示す図。
【図５】分類木１１３の構成例を示す図。
【図６】辞書１１４の構成例を示す図。
【図７】パターン認識装置が行う認識処理のフローチャート。
【図８】ステップＳ２０７における処理の詳細を示すフローチャート。
【図９】ステップＳ７０６における処理のフローチャート。
【図１０】類似符号リスト１２６の構成例を示す図。
【図１１】ステップＳ９０１における処理のフローチャート。
【図１２】信頼度１２８の構成例を示す図。
【図１３】認識結果リスト１２７の構成例を示す図。
【図１４】ステップＳ１１０１における処理のフローチャート。
【図１５】信頼度算出部１１９が行う処理のフローチャート。
【図１６】ステップＳ９０１で行う処理の具体例を示す図。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００１７】
［第１の実施形態］
先ず、情報処理装置として機能する、本実施形態に係るパターン認識装置の構成例について、図１のブロック図を用いて説明する。なお、図１に示した構成は、以下に説明する各処理を実現するための構成の一例に過ぎない。
【００１８】
ＣＰＵ１０１は、メモリ１０５やメモリ１０６に格納されているコンピュータプログラムやデータを用いて処理を実行することで、パターン認識装置全体の動作制御を行うと共に、パターン認識装置が行うものとして後述する各処理を実行する。
【００１９】
出力装置１０３は、パターン認識装置による処理結果を出力するためのもので、図１ではＣＲＴや液晶画面などにより構成される表示装置が示されているが、他の機器であっても良い。例えば、ＬＡＮやインターネットなどのネットワークを介して外部装置に対して出力する装置であっても良い。
【００２０】
入力装置１０４は、キーボードやマウスなどにより構成されており、ユーザが操作することで、各種の指示をＣＰＵ１０１に対して入力することができる。なお、出力装置１０３を表示装置とした場合に、出力装置１０３と入力装置１０４とを一体化させることで、タッチパネル画面を構成しても良い。また、入力装置１０４には、後述する様々な画像を取得するための撮像装置を含めるようにしても良い。
【００２１】
メモリ１０５，１０６には、後述する様々なコンピュータプログラムやデータが格納されている。なお、メモリ１０５，１０６はそれぞれ別個のメモリであっても良いし、１つのメモリ内における別個のメモリ領域であっても良い。
【００２２】
メモリ１０５には、学習用画像ファイル１１０が格納されている。この学習用画像ファイル１１０には、認識対象となるパターン（画像）、或いは、画像に対してエッジ抽出処理、エッジ強調処理、その他の各種特徴抽出処理、を行うことで得られる特徴量画像（エッジ強度マップなど）、が複数格納されている。以下では説明を簡単にするために、学習用画像ファイル１１０には、認識対象となるパターンの１つの種別につき１つの画像が格納されているものとする。なお、本実施形態は、学習するパターンのバリエーションが少なくても、ロバストな検出を可能にするという趣旨のものであるが、１つのパターン種別につき複数のバリエーションの画像があっても支障はない。
【００２３】
学習用画像ファイル１１０中の各画像には、該画像の種別（パターン種別）を表す情報が関連づけられている。関連づける方法には様々な方法が考えられ、如何なる方法を採用しても良い。以下では一例として、１から始まり連続するユニークな数字からなる識別子によって画像の種別を表すことにし、その識別子を該画像のファイル名にすることでその画像とパターン種別との関連付けを行っておく。たとえば、パターン種別の識別子が000001であるようなパターンを表す画像のファイルは「000001.bmp」というファイル名で格納するものとする。
【００２４】
学習用画像ファイル１１０以外にメモリ１０５，１０６に格納されているそれぞれについては、以下の説明で触れるが、次に列挙する各部は何れも、コンピュータプログラムとしてメモリ１０５に格納されているものとする。
【００２５】
・  学習部１１１
・  認識部１１２
・  符号化部１１５
・  辞書照合部１１６
・  結果集計部１１７
・  類似符号算出部１１８
・  信頼度算出部１１９
以下では、これらの各部を処理の主体として説明するが、実際には、ＣＰＵ１０１がこれらの各部に相当するコンピュータプログラムを実行することで、これらの各部が行うものとして後述する各処理を実行することになる。
【００２６】
また、メモリ１０５，１０６に格納されているもののうち、これら各部以外については、データ、ファイル、変数として格納されているものである。もちろん、それぞれのデータ、ファイル、変数は適宜統合しても良いし、別個のものとしても良い。これは、上記のコンピュータプログラムについても同様である。
【００２７】
なお、ＣＰＵ１０１、出力装置１０３、入力装置１０４、メモリ１０５、メモリ１０６は何れもバス１０２に接続されており、このバス１０２を介して互いに通信を行うことができる。
【００２８】
次に、本実施形態におけるパターン認識処理の詳細について説明する。機械学習によるパターン認識手法では、パターンを学習する学習過程と、入力される新規パターンを認識する認識過程の２つの過程が存在する。ここでは、はじめに学習過程について説明し、そのあとで認識過程について説明する。
【００２９】
＜学習処理＞
本実施形態に係るパターン認識装置が行う学習処理について、同処理のフローチャートを示す図２を用いて説明する。ここでは説明を簡単にするために、図２を用いた以下の説明では、一つの分類木を学習して分類木１１３を生成する過程について説明する。この処理が学習処理の手順の主要な部分である。後述するように、学習部１１１は、図２で説明する分類木生成手順を複数回繰り返して複数の分類木を生成し、生成した複数の分類木を結合して辞書１１４を生成する。複数の分類木をまとめて一つの辞書にする処理の詳細については後述する。
【００３０】
ステップＳ２０１では、学習部１１１は、認識するパターンの種別の数（図２のフローチャートにおいて用いる画像の数）Ｎｉｄ、符号化のビット数Ｎｂ（規定数）を設定する。設定方法は、例えば、ユーザが入力装置１０４を操作して入力した種別の数、ビット数をそれぞれ変数Ｎｉｄ、Ｎｂに設定するようにしても良いし、予め定められた値をＮｉｄ、Ｎｂに設定するようにしても良い。なお、ビット数Ｎｂは、後述する方法により符号化されるパターンが互いに識別可能、すなわち、異なるパターンは異なる符号で表されるような値とすることが好ましい。
【００３１】
次に、ステップＳ２０２では、学習部１１１は、メモリ１０６内に、Ｎｂビットのビット列である符号１２１を設定する。この符号１２１を構成するＮｂ個のビットのそれぞれのビット値は所定値（例えば０）に初期化されているものとする。また、学習部１１１は、Ｎｉｄ×２の要素から成るテーブルである符号・種別対応テーブル１２２をメモリ１０６内に設定する。このテーブル中の各要素についても適当な値で初期化しているものとする。
【００３２】
次に、ステップＳ２０３では、学習部１１１は、画像上に設定する２点の座標位置（参照点位置）のペアをＮｂ個生成し、生成したＮｂ個のペアを参照２点位置リスト１２０としてメモリ１０６内に登録する。Ｎｂ個のペアの生成方法については、特定の方法に限るものではない（規定の方法に従って生成しても良いしランダムに生成しても良い）が、例えば、非特許文献１に開示されている方法を採用しても良い。
【００３３】
参照２点位置リスト１２０の構成例を図３に示す。図３では、参照２点位置リスト１２０には、２つの座標位置（ｘ１（１），ｙ１（１））及び（ｘ２（１），ｙ２（１））のペアが１つ目のペアとして登録されている。また、（ｘ１（２），ｙ１（２））及び（ｘ２（２），ｙ２（２））のペアが２つ目のペアとして登録されている。このようにして、（ｘ１（１），ｙ１（１））及び（ｘ２（１），ｙ２（１））のペア〜（ｘ１（Ｎｂ），ｙ１（Ｎｂ））及び（ｘ２（Ｎｂ），ｙ２（Ｎｂ））のペア、即ちＮｂ個のペアが参照２点位置リスト１２０に登録されている。
【００３４】
次に、ステップＳ２０４では、学習部１１１は、これから学習するパターンの種別を表す変数である変数ｉｄを１に初期化する。ステップＳ２０５では、学習部１１１は、変数ｉｄの値がＮｉｄの値以下であるか否かを判断する。この判断の結果、変数ｉｄの値がＮｉｄの値以下である場合には、処理はステップＳ２０６に進み、変数ｉｄの値がＮｉｄの値よりも大きい場合は、処理はステップＳ２１０に進む。ステップＳ２１０では、学習部１１１は、分類木１１３を生成してメモリ１０５に格納する。ステップＳ２１０における処理の詳細については後述する。
【００３５】
一方、ステップＳ２０６では、学習部１１１は、変数ｉｄの値をファイル名とする画像を学習用画像ファイル１１０から読み出し、画像１２３としてメモリ１０６に格納する。例えば、変数ｉｄの値が「１」であれば、「000001.bmp」というファイル名を有する画像を学習用画像ファイル１１０から読み出して、画像１２３としてメモリ１０６に格納する。
【００３６】
ステップＳ２０７では、符号化部１１５は、メモリ１０６に格納されている参照２点位置リスト１２０を用いて画像１２３を符号化し、該符号化の結果を符号１２１としてメモリ１０６に格納する。上記の通り、符号１２１は、Ｎｂビットのビット列である。
【００３７】
ステップＳ２０７における処理の詳細について、図８のフローチャートを用いて説明する。符号化部１１５においては図２におけるＮｂ（符号化するビットの桁数）がアクセスできるものとする。符号化部１１５の処理を実行する際に処理の引数として渡すなどすればよい。
【００３８】
ステップＳ８０１では、符号化部１１５は、符号化するビットのビット位置を表す変数ｂの値を１に初期化する。ステップＳ８０２では、符号化部１１５は、参照２点位置リスト１２０から、（ｘ１（ｂ），ｙ１（ｂ））及び（ｘ２（ｂ），ｙ２（ｂ））のペアを読み出す。そして符号化部１１５は、画像１２３上の座標位置（ｘ１（ｂ），ｙ１（ｂ））における画素の画素値Ｌ１、座標位置（ｘ２（ｂ），ｙ２（ｂ））における画素の画素値Ｌ２を取得する。ここで、画像１２３（ファイル名はｉｄ）上の画素位置（ｘ、ｙ）における画素値ＬをＬ＝ＩＭＧ（ｉｄ）［ｘ、ｙ］と表記する場合、Ｌ１，Ｌ２は下記の式で表される。
【００３９】
Ｌ１＝ＩＭＧ（ｉｄ）［ｘ１（ｂ）、ｙ１（ｂ）］
Ｌ２＝ＩＭＧ（ｉｄ）［ｘ２（ｂ）、ｙ２（ｂ）］
次に、ステップＳ８０３では、符号化部１１５は、ステップＳ８０２で取得した画素値Ｌ１と画素値Ｌ２とを用いて下記の式を計算することで、符号１２１のｂビット目のビット値ｂｉｔ（ｂ）を求める。
【００４０】
ｂｉｔ（ｂ）＝１  （Ｌ１−Ｌ２＞０の場合）
＝０  （Ｌ１−Ｌ２≦０の場合）
ステップＳ８０４では、符号化部１１５は、メモリ１０６内に設定されている符号１２１を構成する各ビットのうち、ｂビット目のビット値を、ｂｉｔ（ｂ）の値に更新する。
【００４１】
ステップＳ８０５では、符号化部１１５は、｜Ｌ１−Ｌ２｜の値を計算し、計算した値を、Ｎｂ個の配列要素を有する配列である画素値差１２５におけるｂ番目の配列要素に格納する。図１に示す如く、この画素値差１２５は、メモリ１０６内に格納されている。
【００４２】
ステップＳ８０６では、符号化部１１５は、変数ｂの値を１つインクリメントする。ステップＳ８０７では、符号化部１１５は、ｂ≦Ｎｂであるか否かを判断する。この判断の結果、ｂ≦Ｎｂであれば、処理はステップＳ８０２に戻り、ｂ＞Ｎｂであれば、処理は図２のステップＳ２０８に進む。
【００４３】
即ち、図８のフローチャートに従った処理を行うことで、画像１２３からＮｂビットのビット列である符号１２１と、Ｎｂ個の配列要素を有する画素値差１２５と、を完成させることができる。
【００４４】
即ち、画像上で２画素から成るペアをＮｂ（Ｎｂは２以上の自然数）個設定し、Ｎｂ個のペアのそれぞれについて、該ペア中の画素同士の輝度値の大小関係を示すビット値を求めることで、Ｎｂビットから成るビット列を符号１２１として求める。また、画素値差１２５中のｂ番目の配列要素には、符号１２１におけるｂビット目のビットに対応する｜Ｌ１−Ｌ２｜の値が格納されている。
【００４５】
図２に戻って、次に、ステップＳ２０８では、学習部１１１は、変数ｉｄの値と、符号１２１と、を関連づけて、符号・種別対応テーブル１２２に登録する。符号・種別対応テーブル１２２の構成例を図４に示す。バイナリ符号４０１として符号１２１を登録し、パターン識別子４０２として、変数ｉｄの値を登録する。図４の場合、パターン識別子４０２が「０００００２」である画像からは、「１００１０１１０」というバイナリ符号４０１が得られたことになる。符号・種別対応テーブル１２２に登録されるバイナリ符号とパターン識別子のセットは、画像の数、即ち、認識するパターンの種別の数Ｎｉｄ個ある。図４にはＮｂ＝８とした例を記載している。
【００４６】
次に、ステップＳ２０９では、学習部１１１は、変数ｉｄの値を１つインクリメントする。そして処理はステップＳ２０５に進む。このようにして、各画像に対するパターン識別子とバイナリ符号とのセットが登録された符号・種別対応テーブル１２２を完成させる。
【００４７】
次に、ステップＳ２１０における処理について説明する。ステップＳ２１０では、図３に例示した参照２点位置リスト１２０と、図４に例示した符号・種別対応テーブル１２２と、から分類木１１３を構成してメモリ１０５に格納する。
【００４８】
分類木１１３の構成例を図５に示す。分類木１１３の先頭部分には、パターン種別数５０１、符号ビット数５０２、参照２点位置リスト５０３が格納されており、これらはそれぞれ、上記のＮｉｄ、Ｎｂ、参照２点位置リスト１２０、である。なお、全ての分類木においてＮｉｄ、Ｎｂが等しい場合には、この２つの情報は辞書１１４に１つだけ格納すればよい。ここでは分類木ごとにこれらの情報が異なる場合を鑑み、分類木ごとにこれらの情報を格納している。
【００４９】
つづく部分には、０から（２Ｎｂ−１）までのバイナリビット列（符号５０４）と、該バイナリビット列に対応するパターン種別情報５０６へのポインタであるパターン種別ポインタ５０５と、のセットを格納している。一つの符号に対して複数のパターン種別情報が対応する可能性があるので、一つの符号とパターン種別情報へのポインタとの対応テーブルになっている。符号５０４の種類はＮｂビットのビット列の種類だけあるので、このセットは、２Ｎｂ個ある。なお、符号５０４は、昇順にソートされているものとする。
【００５０】
符号５０４に対応するパターン種別ポインタ５０５は、符号５０４を求めた画像のパターン種別情報５０６が格納されている格納位置を示すオフセット（５０９）である。パターン種別情報５０６には、符号５０４を求めた画像の数であるパターン個数５０７と、符号５０４を求めたそれぞれの画像のパターン識別子５０８が含まれている。分類木１１３を上記のような構成とすることにより、符号５０４をキーとして、それに対応する複数のパターン識別子５０８のリストにアクセスすることができる。
【００５１】
ステップＳ２１０では、メモリ１０６中に格納されている符号・種別対応テーブル１２２の内容を解析し、以上説明したデータ構造になるようにパターン種別情報５０６に書きだす。符号とパターン種別との対応関係は図４の符号・種別対応テーブル１２２に記載されているので、この処理は容易に実行できる。以下、データ末尾まで、符号・種別対応テーブル１２２にある情報の分だけのパターン種別情報５０６が書き出される。
【００５２】
ここで、学習処理の過程で、学習用画像ファイル１１０内のすべての画像を符号化しても、あり得るすべての符号が出現するわけではなく、符号５０４によっては、対応するパターン識別子がない場合もある。このような場合は、メモリ１０６中の符号・種別対応テーブル１２２中にはその符号がバイナリ符号４０１の部分に登録されないことになる。その場合は、符号に対応するパターン識別子は存在しないので、ステップＳ２１０では、図５におけるパターン種別ポインタ５０５の部分にはNULLをセットする。以上の処理により、学習用画像ファイル１１０を学習した分類木１１３がメモリ１０５中に記録された。
【００５３】
先に述べたように、図２で説明した処理は、分類木を１つだけ学習する処理である。学習部１１１は、符号化するための参照点位置を変えて複数の分類木を生成し、生成した複数の分類木を結合して辞書を生成するものである。以下に、その処理を説明する。
【００５４】
複数の分類木を学習するためには、毎回参照点位置を変えて図２で説明した「１つの分類木を生成する処理」を行えばよい。もちろん、ステップＳ２０３における参照２点位置リスト１２０の生成は、複数回繰り返しても同じものにはならないものとする。繰り返すたびに参照２点位置リスト１２０の内容が変わるので、同じ画像１２３に対して異なる符号１２１が算出され、結果として異なる分類木１１３が複数生成される。図１では、メモリ１０５には１つの分類木１１３しか示していないが、複数個の分類木１１３を生成するためには、複数個の分類木１１３を格納するためのエリアをメモリ１０５内に確保する必要がある。
【００５５】
然るに学習部１１１は、このようにして生成される複数個の分類木１１３を結合して１つの辞書１１４を生成する。辞書１１４の構成例を図６に示す。図６に示す如く、辞書１１４には、辞書１１４中に格納される分類木数６０１と、辞書１１４内におけるそれぞれの分類木のデータ格納位置を示すオフセット６０２と、該それぞれの分類木のデータ６０３と、が格納されている。前述したように、分類木が複数生成される場合には、分類木情報が複数格納されているものとする。
【００５６】
なお、ここでは、複数の分類木を学習する例について説明した。しかし、一つの分類木のみを学習するようにしてもよい。即ち、学習する分類木の数についてはここでの本質ではない。
【００５７】
辞書１１４に含まれる分類木のデータ構造は、昇順に並んだ符号１２１をキーとしたテーブルであり、符号に対応するパターン種別を高速に照合できるという特徴がある。以下で説明する認識手法とは異なる認識手法としては、画像を多次元ベクトルで表し、多次元ベクトル空間上で入力画像と辞書画像の距離が最も近くなる辞書画像を総当たり的に照合しパターンを検出する手法がある。そのような手法に比べると、本手法は一回のテーブル参照のみでパターン検出ができるため非常に高速である。
【００５８】
＜認識処理＞
次に、本実施形態に係るパターン認識装置が行う認識処理について、同処理のフローチャートを示す図７を用いて説明する。なお、図７のフローチャートに従った処理を開始する時点で、入力画像１２４はメモリ１０６に格納されているものとする。この入力画像１２４は、ディジタルカメラなどの撮像装置により撮像された画像をメモリ１０６に入力画像１２４として格納したものであっても良いし、その入力形態については特定の形態に限るものではない。
【００５９】
先ず、ステップＳ７０１では、認識部１１２は、分類木に対するインデックスとして用いる変数ｔを１に初期化する。次にステップＳ７０２では、認識部１１２は、辞書１１４に分類木数６０１として格納されている、辞書１１４に格納されている分類木の数を読み出し、読み出した数を変数Ｎｔに代入する。
【００６０】
ステップＳ７０３では、認識部１１２は、辞書１１４に格納されている分類木のうち先頭からｔ番目に格納されている分類木（分類木ｔ）に対して、該分類木へのオフセットを用いてアクセスする。そして分類木ｔから、パターン種別数５０１、符号ビット数５０２を読み出し、それぞれ変数Ｎｉｄ、Ｎｂに代入する。
【００６１】
ステップＳ７０４では、認識部１１２は、分類木ｔから、参照２点位置リスト５０３を読み出し、読み出した参照２点位置リスト５０３を参照２点位置リスト１２０としてメモリ１０６に格納する。
【００６２】
ステップＳ７０５では、符号化部１１５は、ステップＳ７０４で読み出した参照２点位置リスト１２０を用いて、入力画像１２４に対して、図８のフローチャートに従った処理を行う。これにより、入力画像１２４からＮｂビットから成るビット列である符号１２１と、Ｎｂ個の配列要素を有する配列である画素値差１２５と、を生成する。
【００６３】
ステップＳ７０６では、辞書照合部１１６は、ステップＳ７０５で生成された符号１２１をキーとして辞書１１４との照合を行う。辞書照合部１１６における処理に対しては変数ｔが引数として与えられるものとする。ステップＳ７０６における処理の詳細については後述する。
【００６４】
ステップＳ７０７では、認識部１１２は、ｔ≦Ｎｔであるか否かを判断する。この判断の結果、ｔ≦Ｎｔであれば、処理はステップＳ７１０に進み、ｔ＞Ｎｔであれば、処理はステップＳ７０８に進む。ステップＳ７１０では、認識部１１２は、変数ｔの値を１つインクリメントし、処理はステップＳ７０３に戻る。一方、ステップＳ７０８では、結果集計部１１７は、認識結果の集計と認識結果の出力とを行う。ステップＳ７０８における処理の詳細については後述する。
【００６５】
次に、上記のステップＳ７０６における処理の詳細について、図９のフローチャートを用いて説明する。本処理にはステップＳ７０６より分類木の番号を表す変ｔが渡されてくる。
【００６６】
ステップＳ９０１では、類似符号算出部１１８及び信頼度算出部１１９により、入力画像１２４から生成した符号１２１から類似符号を生成する。そして類似符号算出部１１８は、符号１２１及び該生成した類似符号のそれぞれを対象符号列とし、該対象符号と符号１２１との類似度を求め、該対象符号と、該対象符号と符号１２１との類似度と、を関連づけて類似符号リスト１２６に登録する。類似符号リスト１２６の構成例を図１０に示す。
【００６７】
図１０に示す如く、類似符号リスト１２６には、類似符号リスト１２６に登録する対象符号の数（１個（符号１２１）＋類似符号の数）１００１と、対象符号１００２と、該対象符号と符号１２１との類似度１００３と、が登録されている。ステップＳ９０１における処理の詳細については後述する。
【００６８】
ステップＳ９０２では、ＣＰＵ１０１は、類似符号リスト１２６に登録した全ての類似度の総和ΣＳを求める。ステップＳ９０３では、類似符号算出部１１８は、以下の処理で用いる変数ｉの値を１に初期化する。
【００６９】
ステップＳ９０４では、ＣＰＵ１０１は、辞書１１４を参照して、類似符号リスト１２６中のｉ番目（例えば上からｉ番目）の符号（符号ｉ）と一致する符号を符号５０４から特定し、特定した符号に対応するパターン種別ポインタ５０５を読み出す。
【００７０】
ステップＳ９０５では、ＣＰＵ１０１は、ステップＳ９０４で読み出したパターン種別ポインタ５０５がＮＵＬＬであるか否かを判断する。この判断の結果、ステップＳ９０４で読み出したパターン種別ポインタ５０５がＮＵＬＬである場合には、処理はステップＳ９１３に進み、ステップＳ９０４で読み出したパターン種別ポインタ５０５がＮＵＬＬではない場合は、処理はステップＳ９０６に進む。ステップＳ９１３では、ＣＰＵ１０１は、変数ｉの値を１つインクリメントし、処理はステップＳ９０４に進む。
【００７１】
一方、ステップＳ９０６では、ＣＰＵ１０１は、ステップＳ９０４で読み出したパターン種別ポインタ５０５が指し示すパターン種別情報５０６中のパターン個数５０７を読み出し、読み出したパターン個数５０７を変数Ｎｐに設定する。
【００７２】
ステップＳ９０７では、ＣＰＵ１０１は、ステップＳ９０４で読み出したパターン種別ポインタ５０５が指し示すパターン種別情報５０６中のそれぞれのパターン識別子５０８を特定し、該特定したパターン識別子５０８に与える認識得点Ｐを計算する。認識得点Ｐの計算方法には様々な方法が考え得る。例えば、以下の式を用いて認識得点Ｐを計算しても良い。
【００７３】
Ｐ＝Ｓ／（Ｎｐ×ΣＳ）
ここでＳは、符号ｉと関連づけて類似符号リスト１２６に登録されている類似度１００３である。この算出方法は、符号の類似度の重みによって得点を算出するものである。式中のＳ／ΣＳは、類似度による重みづけを行っており、１／Ｎｐは、１つの符号に対して複数のパターン識別子が対応していた場合の得点の分配を表している。なお、認識得点の算出方法は、この式を用いた方法に限るものではなく、他の方法を用いて認識得点を算出しても良い。
【００７４】
例えば、類似度に対する指数関数的な認識得点を与えてもよい。または、認識得点算出に類似度を用いず、常にＰ＝１．０／Ｎｐとするなどしてもよい。その場合は、上記の類似度１００３は求めなくても良い。
【００７５】
次に、ステップＳ９０８では、ＣＰＵ１０１は、以下の処理で用いる変数ｊを１に初期化する。ステップＳ９０９でＣＰＵ１０１は、ステップＳ９０４で読み出したパターン種別ポインタ５０５が指し示すパターン種別情報５０６中のパターン識別子５０８のうちｊ番目のパターン識別子と、上記認識得点と、を対応づけて認識結果リスト１２７に登録する。認識結果リスト１２７の構成例を図１３に示す。
【００７６】
図１３に示す如く、認識結果リスト１２７は、パターン識別子１３０１と、パターン識別子１３０１に対して求めた認識得点１３０２と、を対応づけて管理する為のものである。
【００７７】
ここで、ステップＳ９０９で上記ｊ番目のパターン識別子を認識結果リスト１２７に登録しようとしたときに、このｊ番目のパターン識別子がすでに認識結果リスト１２７に登録されていたとする。この場合、当然ながら、このｊ番目のパターン識別子に対してはすでに認識得点が関連づけて登録されていることになる。この場合、ステップＳ９０９では、すでに登録されている認識得点に、ステップＳ９０７で求めた認識得点を加算することで、このすでに登録されている認識得点を更新する。もちろん、ｊ番目のパターン識別子がまだ認識結果リスト１２７に登録されていない場合は、ｊ番目のパターン識別子と認識得点とを認識結果リスト１２７に新規登録する。
【００７８】
ステップＳ９１０でＣＰＵ１０１は、ｊ≧Ｎｐであるか否かを判断する。この判断の結果、ｊ≧Ｎｐであれば、処理はステップＳ９１１に進み、ｊ＜Ｎｐであれば、処理はステップＳ９１２に進む。ステップＳ９１２では、ＣＰＵ１０１は、変数ｊの値を１つインクリメントし、処理はステップＳ９０９に進む。
【００７９】
ステップＳ９１１では、ＣＰＵ１０１は、変数ｉの値が、類似符号リスト１２６に登録されている符号数１００１以上であるか否かを判断する。この判断の結果、変数ｉの値が符号数１００１以上である場合には、処理はステップＳ７０７に進み、変数ｉの値が符号数１００１よりも小さい場合には、処理はステップＳ９１３に進む。
【００８０】
次に、上記のステップＳ９０１における処理について説明する。はじめに模式的な説明をし、続いて具体的な処理手順を説明する。そもそも、ステップＳ９０１における処理の意図は以下のようなものである。
【００８１】
Ｌ１とＬ２との差が比較的小さい場合に、これらＬ１とＬ２とから生成されたビット値は、わずかなノイズや撮影条件変動によってその値でなくなる可能性が高い。したがって、差が比較的小さいＬ１及びＬ２から生成されたビット値の信頼度は低いといえる。然るに、符号１２１において信頼度が低いビット値を反転させて得られる符号については、符号１２１との類似度は高いとする。
【００８２】
一方、Ｌ１とＬ２との差が比較的大きい場合に、これらＬ１とＬ２とから生成されたビット値は、少々の変動要因では容易に反転し得ないので、このようなビット値の信頼度は高いといえる。然るに、符号１２１において信頼度が高いビット値を反転させて得られる符号については、符号１２１との類似度は低いとする。このような前提に基づいてステップＳ９０１で行う処理について、図１６に示した具体例を用いて説明する。
【００８３】
図１６において符号１６０１は、入力画像１２４から生成した符号であり、上記の符号１２１に相当する。画素値差１６０２は、符号１６０１の各ビットに対応する｜Ｌ１−Ｌ２｜を保持する配列であり、上記の画素値差１２５に相当する。
【００８４】
信頼度算出部１１９は、画素値差１６０２の各配列要素（｜Ｌ１−Ｌ２｜）から、符号１６０１の各ビットに対する信頼度１６０３を求める。信頼度を求める方法については後述する。
【００８５】
そして、類似符号算出部１１８は、符号１６０１において閾値よりも低い信頼度のビットを反転させた符号を、類似符号として生成する。図１６では、符号１６０１において最も信頼度の低いビットを反転させた符号を、類似符号１６０４として生成している。また、符号１６０１において信頼度が２番目に低いビットを反転させた符号を、類似符号１６０５として生成している。
【００８６】
次に、ステップＳ９０１にて行う処理について、同処理のフローチャートを示す図１１を用いて説明する。ステップＳ１１０１では、信頼度算出部１１９は、符号１２１の各ビットに対して信頼度を算出し、各ビットについて算出した信頼度を信頼度１２８としてメモリ１０６に格納する。信頼度とは上述の通り、符号１２１の各ビットが認識処理にとってどの程度信頼できるか、の度合いを示すものである。信頼度が低いビットに対しては、同じパターン種別の画像であってもノイズその他の理由によりそのビット桁が反転しやすい、ということを表している。
【００８７】
信頼度１２８の構成例を図１２に示す。図１２に示す如く、信頼度１２８には、符号１２１の各ビット位置を示す桁番号１２０１と、該ビット位置に対する信頼度の値１２０２と、が対応づけて管理されている。例えば、桁番号が１のビットに対する信頼度としてＣ１が登録されており、桁番号が２のビットに対する信頼度としてＣ２が登録されており、桁番号がＮｂのビットに対する信頼度としてＣＮｂが登録されている。信頼度算出部１１９による各ビットに対する信頼度の算出処理の詳細については後述する。
【００８８】
次に、ステップＳ１１０２では、類似符号算出部１１８は、メモリ１０６中の、図１０に例示した類似符号リスト１２６を初期化する。この初期化では、符号数１００１を１に初期化し、対象符号１００２と類似度１００３のセットから成るリストを初期化する。その際、対象符号１００２と類似度１００３のセットから成るリストの最上段には、符号１２１と類似度「１」のセットを登録する。
【００８９】
ステップＳ１１０３では、類似符号算出部１１８は、信頼度１２８中の信頼度Ｃ１〜ＣＮｂを検索し、最も低い信頼度Ｃｘを最低信頼度として特定する。そして、変数ｃに最低信頼度Ｃｘの値を設定すると共に、変数ｂｎに最低信頼度Ｃｘを有するビットのビット位置を示すｘの値を設定する。なお、最低信頼度として特定された信頼度は、次回からは検索対象から除外する。この場合、次回以降の検索では、信頼度Ｃ１〜ＣＮｂのうちＣｘ以外の信頼度から最低信頼度を特定する。
【００９０】
ステップＳ１１０４では、類似符号算出部１１８は、ｃ≦予め定められた閾値Ｃｔｈであるか否かを判断する。この判断の結果、ｃ＞Ｃｔｈであれば、処理はステップＳ９０２に進み、ｃ≦Ｃｔｈであれば、処理はステップＳ１１０５に進む。
【００９１】
なお、この閾値Ｃｔｈは、予め定められた値としているが、信頼度の分布によって適応的に閾値Ｃｔｈを定めたり、Ｎ番目に低い信頼度を閾値Ｃｔｈとするなどとしてもよい。本ステップでは、変数ｃが閾値Ｃｔｈを超えていれば処理を終了する。すなわち、信頼度が閾値Ｃｔｈを超えているビットを反転させるような類似符号算出の処理は行わない。以下のステップでは、変数ｃは最大でも閾値Ｃｔｈであることが保証される。
【００９２】
ステップＳ１１０５では、類似符号算出部１１８は、符号１２１においてｂｎ番目のビットのビット値を反転させた符号を類似符号として生成する。ステップＳ１１０６では、類似符号算出部１１８は、ステップＳ１１０５で生成した類似符号と、符号１２１との類似度を算出する。この類似度を算出する方法には、変数ｃに応じて指数的に類似度を変化させる算出方法など、様々な方法が考え得るが、例えば、以下の式を計算してこの類似度を求めるようにしても良い。
【００９３】
Ｓ＝（Ｃｔｈ−ｃ）／Ｃｔｈ
この式で求められる類似度Ｓは、信頼度が０であるビットを反転させた類似符号に対して１となり、信頼度が閾値Ｃｔｈであるビットを反転させた類似符号に対しては０となる。すなわち、信頼度が低いビットを反転させてつくった類似符号は元の符号との類似度が高い、ということを表している。信頼度が閾値Ｃｔｈと同じであるような、すなわち、処理の対象となる信頼度の中で最も信頼度が高いビットを反転して作った類似符号は、類似度がゼロになる。符号１２１中のあるビットの信頼度が低いということは、そのビットが０であるか１であるかの信頼性が少ないということで、わずかな撮影条件の違いでたやすく別の結果になりえる可能性が高い、ということである。したがって、そのようなビットが反転した類似符号は元の符号との類似度が高くなるように評価する。これに対して、信頼度が高いビットのビット値は、少々のノイズや照明条件のわずかな違いがあっても値が反転する可能性は低い。したがってそのようなビットを反転して生成した類似符号は元の符号との類似度が低いと評価する。以上述べたように、同じ１ビットの相違であっても、そのビットの信頼度によって類似度に重みを付ける。
【００９４】
ステップＳ１１０７では、類似符号算出部１１８は、ステップＳ１１０５で生成した類似符号と、ステップＳ１１０６で求めた類似度と、を対応づけて、メモリ１０６内の類似符号リスト１２６に登録すると共に、符号数１００１を１つインクリメントする。そして、処理はステップＳ１１０３に戻る。
【００９５】
なお、ここにあげた例では説明を簡単にするために、ステップＳ１１０３において信頼度が低いビットを一つ検索し、検索したビットが反転した類似符号をステップＳ１１０５において生成したが、類似符号の生成方法は必ずしもこの方法を用いる必要はない。
【００９６】
他の例としては以下のような処理もあり得る。すなわち、ステップＳ１１０３では、複数のビットの信頼度の和であって他の組み合わせの複数の信頼度の和と比べて最小となるような値を変数ｃに格納し、変数ｂｎにはその和の算出に用いたすべてのビットの桁番号をリストとして格納する。そしてステップＳ１１０５では、変数ｂｎのリストに格納されたすべての桁番号に対応するビットを反転させた類似符号を生成する。このようにすることで、複数のビットを反転させた類似符号を作ることができる。複数のビットを反転させて類似符号を生成する場合、類似度の算出式は以下のようになる。
【００９７】
Ｓ＝（Ｃｔｈ−Σｃ）／Ｃｔｈ
ここで、Σｃは、複数のビットのそれぞれの信頼度の和であり、閾値Ｃｔｈを超えないものとする。さらに、反転させるビットの数の多さで類似度を下げるようにしてもよい。例えば、反転させるビットの数をｋｃ（ｋｃは１以上の自然数）、重みパラメタをＷ（Ｗは０．０以上１．０未満の実数）として、以下の式のようにすればよい。
【００９８】
Ｓ＝（（Ｃｔｈ−Σｃ）／Ｃｔｈ）×（Ｗ＾（ｋｃ−１））
上式のようにすることで、複数の組み合わせのビットの反転によって類似度の値が同じになった場合にも、反転させるビットが少ないほうの類似度が高い、とすることができる。
【００９９】
次に、信頼度算出部１１９による信頼度を求める処理について、説明する。符号１２１を構成する各ビットのビット値は、上記の通り、画素値Ｌ１と画素値Ｌ２との大小関係に基づいて決まっていた。この時、画素値Ｌ１と画素値Ｌ２との差分が大きくても小さくても、大小関係が同じであれば、同じビット値となる。しかし、わずかな差でＬ１−Ｌ２＞０になった場合と、大きな差でＬ１−Ｌ２＞０になった場合とでは、その信頼度が異なると考えられる。つまり、わずかな差でＬ１−Ｌ２＞０になったが故にビット値が「１」となったビットは、照明・姿勢・ノイズのわずかな変動によってＬ１−Ｌ２≦０になり得てビット値が反転し得るため、その信頼度は低いといえる。然るに、本実施形態では、信頼度は、画素値差１２５に基づいて決まるものとする。
【０１００】
上記のステップＳ１１０１における、符号１２１を構成する各ビットに対する信頼度を求め、求めたそれぞれの信頼度を信頼度１２８に格納する処理について、同処理のフローチャートを示す図１４を用いて説明する。
【０１０１】
ステップＳ１４０１では、信頼度算出部１１９は、メモリ１０６中の信頼度１２８を初期化する。上記の通り、この信頼度１２８は、図１２に示す如く、符号１２１の各ビット位置を示す桁番号１２０１と、該ビット位置に対する信頼度の値１２０２と、を対応づけて管理するためのものであるため、このような配列を信頼度リストとして初期化する。
【０１０２】
ステップＳ１４０２では、信頼度算出部１１９は、以下の処理で用いる変数ｉの値を１に初期化する。ステップＳ１４０３では、信頼度算出部１１９は、符号１２１を構成する各ビットのうちｉ番目のビットに対する信頼度Ｃｉを以下の式を計算することで求める。
【０１０３】
Ｃｉ＝Ｄｉ／Ｄｍａｘ
ここで、Ｄｉは、画素値差１２５中のｉ番目の配列要素に格納されている値（画素値の差分）である。Ｄｍａｘは、画素値の差分として取り得る最大の値である。この式で算出される信頼度Ｃｉは、Ｄｉが小さいほど０に近づき、Ｄｉが大きいほど１に近づく値である。たとえば、画素値が０〜２５５の整数である場合を考えると、Ｄｍａｘは２５５であり、Ｄｉが０だったときはＣｉは０となり、Ｄｉが２５５だったときにＣｉは１となる。
【０１０４】
次に、ステップＳ１４０４では、信頼度算出部１１９は、信頼度１２８中のｉ番目の桁番号１２０１に「ｉ」を登録すると共に、ｉ番目の信頼度の値１２０２に、ステップＳ１４０３で求めた信頼度Ｃｉを登録する。
【０１０５】
ステップＳ１４０５では、信頼度算出部１１９は、ｉ≦Ｎｂであるか否かを判断する。この判断の結果、ｉ≦Ｎｂである場合には、処理はステップＳ１４０６に進み、ｉ＞Ｎｂである場合には、処理はステップＳ１１０２に進む。ステップＳ１４０６では、信頼度算出部１１９は、変数ｉの値を１つインクリメントし、処理はステップＳ１４０３に進む。
【０１０６】
なお、信頼度の計算方法は、特定の方法に限るものではなく、認識処理における入力画像の符号１２１の各ビットが照明・姿勢・ノイズなどの変動要因によってどの程度変わり得るか、どの程度信頼できるか、が定義できればよい。信頼度算出に関するその他の例については第２の実施形態でも説明する。
【０１０７】
次に、ステップＳ７０８で行う、認識結果の集計と認識結果の出力処理について説明する。ステップＳ７０８では、メモリ１０６に格納された認識結果リスト１２７中に登録されている各認識得点に基づいて、認識結果リスト１２７から読み出すパターン識別子を決定する。そして決定したパターン識別子を読み出し、読み出したパターン識別子を出力する。
【０１０８】
例えば、認識得点の高い順に上位Ｎ（Ｎは１以上の整数）個のパターン識別子を読み出して、出力装置１０３に表示しても良い。もちろん、表示するものはパターン識別子に限るものではなく、パターン識別子によって特定される画像そのものを表示しても良いし、該画像に関する様々な情報を表示しても良い。このＮは、予め定めた値であっても良いし、認識得点の分布に応じて決めても良い。
【０１０９】
以上の説明により、本実施形態によれば、１つのパターン種別に関して１つもしくは少数のパターンを用いて学習を行いながらも、認識処理において入力画像を符号化した符号の各ビットの信頼度にもとづいた類似符号を算出する。これにより、認識のロバスト性を向上できるという効果がある。
【０１１０】
なお、本実施形態に係るパターン認識装置に適用可能な情報処理装置の構成は、下記の構成の一例に過ぎない。先ず、入力画像上で２画素から成るペアをＮｂ（Ｎｂは２以上の自然数）個設定し、Ｎｂ個のペアのそれぞれについて、該ペア中の画素同士の画素値の大小関係を示すビット値を求めることで、Ｎｂビットから成るビット列を求める（第１の計算）。
【０１１１】
そして、このビット列を構成する各ビットに対して、該ビットのビット値を計算するために用いたペア中の２画素の画素値から該ビットに対する信頼度を求める（第２の計算）。
【０１１２】
そして、このビット列を構成する各ビットのうち該各ビットの信頼度に応じて決まるビットのビット値を反転させた類似ビット列を生成する。そして、入力画像から求めたビット列及び類似ビット列を対象ビット列とし、複数の学習用画像のそれぞれについて予め第１の計算によって求めたビット列のうち対象ビット列と一致するビット列を特定する。そして、この特定したビット列の生成元である学習用画像に関する情報を出力する。
【０１１３】
［第２の実施形態］
第１の実施形態では、入力画像として輝度画像を用いていた（然るに第１の実施形態では画素値は輝度値であった）。本実施形態では、入力画像として距離画像を用いる。距離画像とは、カメラなどの撮像装置から撮影対象までの距離を画像として表現したものである。距離画像を生成するための距離計測方法は多数知られており、代表的なものとして光切断法、ステレオ法などがある。
【０１１４】
それぞれの距離計測方法において、距離を計測するとともに計測された距離の値の信頼度を距離画像の画素ごとに定義することが可能である。例えば、「特登録02742192 経路算出装置 日本電信電話株式会社」には、光切断法において、投光したスリット光の反射光の受信レベルの大小によって距離画像の画素ごとに値の信頼度が算出できることが述べられている。本実施形態における距離値の信頼度とは、この文献で述べられている距離値の信頼度のこととすればよい。
【０１１５】
また、「特登録03367170 障害物検出装置 株式会社豊田中央研究所」では、ステレオ法において、複数画像間の対応する小領域の相関の状態を調べることによって、距離画像の画素ごとに距離値の信頼度が算出できることが述べられている。本実施形態における距離値の信頼度とは、この文献で述べられている距離値の信頼度のこととすればよい。
【０１１６】
本実施形態における処理の流れについては概ね第１の実施形態と同様であるが、入力画像として距離画像を取り扱う点、信頼度算出部１１９による信頼度算出処理では距離値の信頼度を用いて符号１２１の各ビットに対する信頼度を算出する点、が異なっている。以下、この２点に関して説明する。
【０１１７】
まず、入力画像が距離画像である点について説明する。距離計測装置を用いて距離画像を生成する方法は従来から知られている。然るに、メモリ１０６に入力画像１２４としてこの距離画像を入力することができるのであれば、如何なる構成を採用しても良い。例えば、ネットワークなどを介して外部装置から送信された距離画像を受信し、受信した距離画像を入力画像１２４としてメモリ１０６に格納するようにしても良い。また例えば、このような距離計測装置を図１の構成に加え、この距離計測装置によって生成された距離画像をメモリ１０６に格納するようにしても良い。
【０１１８】
また、取り扱う画像としては距離画像を用いるが、第１の実施形態で用いた入力画像１２４と同様に扱ってかまわない。また、図１の学習用画像ファイル１１０、画像１２３、入力画像１２４が距離画像となる。符号化部１１５による処理では、画素値が距離値となる点以外は第１の実施形態と同様である。
【０１１９】
また、前述した従来の技術によって、入力画像１２４として距離画像を取得する際に、距離画像の各画素（画素値が距離値）とその信頼度とを対応づけた信頼度マップを作成することが可能である。信頼度マップとは、たとえば、距離画像の縦横幅と同じサイズで値が距離値の信頼度であるような２次元配列として表現したものである。このマップによって、距離画像上の参照位置が得られればその参照位置における距離値の信頼度が得られることになる。距離値の信頼度マップは、入力画像１２４として距離画像を取得した際に作成し、メモリ１０６に格納しておくものとする。
【０１２０】
次に、本実施形態に係る信頼度算出部１１９が行う処理について、同処理のフローチャートを示す図１５を用いて説明する。なお本実施形態では、この時点ですでに、距離画像としての入力画像１２４はメモリ１０６に格納されているものとする。
【０１２１】
ステップＳ１５０１では、信頼度算出部１１９は、第１の実施形態と同様にして、メモリ１０６中の信頼度１２８を初期化する。ステップＳ１５０２では、信頼度算出部１１９は、以下の処理で用いる変数ｉの値を１に初期化する。ステップＳ１５０３では、信頼度算出部１１９は、参照２点位置リスト１２０から、（ｘ１（ｉ），ｙ１（ｉ））及び（ｘ２（ｉ），ｙ２（ｉ））のペアを読み出す。
【０１２２】
ステップＳ１５０４では、信頼度算出部１１９は、上記の信頼度マップから、（ｘ１（ｉ），ｙ１（ｉ））及び（ｘ２（ｉ），ｙ２（ｉ））のそれぞれの画素位置における信頼度を取得する。
【０１２３】
ステップＳ１５０５では、信頼度算出部１１９は、ステップＳ１５０４で取得した２つの信頼度のうち、低い方の信頼度を、信頼度１２８中のｉ番目の信頼度の値１２０２に登録すると共に、信頼度１２８中のｉ番目の桁番号１２０１に「ｉ」を登録する。
【０１２４】
なお、ここでは、２つの信頼度のうち低い方を信頼度１２８に登録しているが、これに限るものではない。例えば、この２つの信頼度からなる何らかの関数によって算出した信頼度を信頼度１２８に登録するようにしても良い。
【０１２５】
また、距離値に対する信頼度が距離値に対する誤差分布として得られる場合などは、２点の比較結果が逆転しない確率を計算し、それを符号１２１における該ビットの信頼度としてもよい。
【０１２６】
ステップＳ１５０６では、信頼度算出部１１９は、ｉ≦Ｎｂであるか否かを判断する。この判断の結果、ｉ≦Ｎｂである場合には、処理はステップＳ１５０７に進み、ｉ＞Ｎｂである場合には、処理はステップＳ９０２に進む。ステップＳ１５０７では、信頼度算出部１１９は、変数ｉの値を１つインクリメントし、処理はステップＳ１５０３に進む。
【０１２７】
以上の説明により、本実施形態によれば、入力パターンの値の信頼度が与えられている入力データに関しては、入力データの信頼度から符号の各ビットの信頼度を算出することができるようになる。入力パターンを取得した際の値の信頼度が分かっている場合に有効である。また、第１の実施形態、第２の実施形態の構成は適宜切り替えて用いるようにしてもかまわない。
【０１２８】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005865043.tif 000002
【図２】
0005865043.tif 000003
【図３】
0005865043.tif 000004
【図４】
0005865043.tif 000005
【図５】
0005865043.tif 000006
【図６】
0005865043.tif 000007
【図７】
0005865043.tif 000008
【図８】
0005865043.tif 000009
【図９】
0005865043.tif 000010
【図１０】
0005865043.tif 000011
【図１１】
0005865043.tif 000012
【図１２】
0005865043.tif 000013
【図１３】
0005865043.tif 000014
【図１４】
0005865043.tif 000015
【図１５】
0005865043.tif 000016
【図１６】
0005865043.tif 000017