(57)【要約】  符号化された特徴量サイズを小さくする。特徴量符号化装置は、画像から特徴点を検出して座標値を出力する特徴点検出部と、特徴点の座標値を中心とする局所領域から局所特徴量を抽出する局所特徴量抽出部と、特定の走査方法に従って座標値をインデックス値に変換する座標値走査部と、インデックス値をソートするソート部と、ソートされたインデックス値の隣接する２つのインデックス値の差分値を算出して差分値の系列を出力する差分算出部と、差分値の系列を系列順に符号化する差分符号化部と、ソートされたインデックス値と同じ順列で、対応する特徴点の局所特徴量を符号化する局所特徴量符号化部と、を備える。
2013073624.tif 000002
【特許請求の範囲】
【請求項１】
画像から特徴点を検出して座標値を出力する特徴点検出部と、
前記特徴点の座標値を中心とする局所領域から局所特徴量を抽出する局所特徴量抽出部と、
特定の走査方法に従って前記座標値をインデックス値に変換する座標値走査部と、
前記インデックス値をソートするソート部と、
前記ソートされたインデックス値の隣接する２つのインデックス値の差分値を算出して差分値の系列を出力する差分算出部と、
前記差分値の系列を系列順に符号化する差分符号化部と、
前記ソートされたインデックス値と同じ順列で、対応する特徴点の前記局所特徴量を符号化する局所特徴量符号化部と、
を備える特徴量符号化装置。
【請求項２】
請求項１に記載の特徴量符号化装置であって、
前記差分符号化部は、
前記差分値が符号化可能な値域内であれば差分値を符号化し、差分値が符号化可能な値域外であれば、差分値が符号化可能な値域外であることを示すエスケープコードを符号化する第１の符号化部と、
前記第１の符号化部がエスケープコードを符号化した場合に、前記第１の符号化部とは異なる符号化方法で前記差分値を符号化する第２の符号化部と、
を備える特徴量符号化装置。
【請求項３】
請求項２に記載の特徴量符号化装置であって、
前記差分符号化部は、
前記差分値の系列から、符号化した差分値の系列の符号長が最短になるように、前記第１の符号化部及び前記第２の符号化部が行う符号化のパラメータを決定する最適符号化パラメータ決定部をさらに備える、
特徴量符号化装置。
【請求項４】
請求項２または３に記載の特徴量符号化装置であって、
前記第１の符号化部はＭビットの固定ビット長符号化を行い、
前記第２の符号化部はＭよりも大きいＮビットの固定ビット長符号化を行う、
特徴量符号化装置。
【請求項５】
コンピュータが、
画像から特徴点を検出して座標値を出力し、
前記特徴点の座標値を中心とする局所領域から局所特徴量を抽出し、
特定の走査方法に従って前記座標値をインデックス値に変換し、
前記インデックス値をソートし、
前記ソートされたインデックス値の隣接する２つのインデックス値の差分値を算出して差分値の系列を出力し、
前記差分値の系列を系列順に符号化し、
前記ソートされたインデックス値と同じ順列で、対応する特徴点の前記局所特徴量を符号化する、
特徴量符号化方法。
【請求項６】
コンピュータに、
画像から特徴点を検出して座標値を出力する機能と、
前記特徴点の座標値を中心とする局所領域から局所特徴量を抽出する機能と、
特定の走査方法に従って前記座標値をインデックス値に変換する機能と、
前記インデックス値をソートする機能と、
前記ソートされたインデックス値の隣接する２つのインデックス値の差分値を算出して差分値の系列を出力する機能と、
前記差分値の系列を系列順に符号化する機能と、
前記ソートされたインデックス値と同じ順列で、対応する特徴点の前記局所特徴量を符号化する機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特徴量符号化装置、特徴量符号化方法、及びプログラムに関する。
【背景技術】
【０００２】
画像内の被写体を、撮影サイズや角度の変化、オクルージョンに対して頑健に識別可能とするために、画像内の特徴的な点（特徴点）を多数検出し、各特徴点周辺の局所領域の特徴量（局所特徴量）を抽出する方式が提案されている。その代表的な方式として、特許文献１や非特許文献１には、ＳＩＦＴ（Ｓｃａｌｅ  Ｉｎｖａｒｉａｎｔ  Ｆｅａｔｕｒｅ  Ｔｒａｎｓｆｏｒｍ）特徴量を用いる局所特徴量抽出装置が開示されている。また、他の方式として、非特許文献２には、ＳＵＲＦ（Ｓｐｅｅｄｅｄ  Ｕｐ  Ｒｏｂｕｓｔ  Ｆｅａｔｕｒｅｓ）特徴量を用いる局所特徴量抽出装置が開示されている。【０００３】
これらの局所特徴量抽出装置では、画像から検出された複数の特徴点のそれぞれに対して、特徴点の座標値と抽出された局所特徴量が出力される。すなわち、座標値と局所特徴量の集合を、画像全体を表す特徴量としている。画像間を照合は、複数の特徴点の座標値と局所特徴量の両方が用いられる。【０００４】
これらの局所特徴量を保存したり伝送したりする場合は、符号化を行うのが一般的である。図７は、局所特徴量の符号化する特徴量符号化装置の一般的な構成の一例を示す図である。図７に示すように、特徴量符号化装置は、特徴点検出部２００、局所特徴量抽出部２１０、局所特徴量符号化部２２０、及び座標値固定長符号化部２３０を備えている。【０００５】
特徴点検出部２００は、画像から特徴的な点（特徴点）を多数検出し、各特徴点の座標値を出力する。座標値は具体的にはＸ座標値とＹ座標値の２つが出力される。局所特徴量抽出部２１０は、検出された各特徴点の座標値を用いて、それぞれの座標値を中心とする局所領域から特徴量を抽出し、局所特徴量として出力する。例えば上述のＳＩＦＴ特徴量を用いる場合、局所特徴量抽出部２１０は、局所領域を４×４＝１６ブロックに分割し、各ブロックに対して８方向に量子化された勾配方向ヒストグラムを生成し、１６ブロック×８勾配方向＝１２８次元の勾配方向ヒストグラムを局所特徴量とすることができる。局所特徴量符号化部２２０は、抽出された局所特徴量を符号化する。例えば上述のＳＩＦＴ特徴量を用いる場合、局所特徴量符号化部２２０は、１つの特徴点に対する１２８次元の特徴量を、例えば１次元を１バイトで符号化し、計１２８バイトで符号化することができる。座標値固定長符号化部２３０は、各特徴点の座標値を固定ビット長で符号化する。座標値はＸ座標値とＹ座標値を含む。一般的に座標値は浮動小数点数として抽出されるため、例えば４バイトや８バイトの情報として表現される。そのため、座標値固定長符号化部２３０は、１つの特徴点に対するＸ座標値とＹ座標値を８バイト（４バイト×２）や１６バイト（８バイト×２）で符号化する。局所特徴量符号化部２２０が出力する符号化された局所特徴量と、座標値固定長符号化部２３０が出力する符号化された座標値と、を合わせて符号化特徴量とする。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第６７１１２９３号明細書
【非特許文献】
【０００７】
【非特許文献１】David G. Lowe著、「Distinctive image features from scale-invariant keypoints」、（米国）、International Journal of Computer Vision、60(2)、2004年、p. 91-110
【非特許文献２】Herbert Bay、Andreas Ess、Tinne Tuytelaars、Luc Van Gool著、「SURF：Speeded Up Robust Features」、（米国）、Computer Vision and Image Understanding (CVIU)、Vol. 110、No. 3、2008年、p. 346-359
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述した特徴量符号化装置は、座標値を固定ビット長で符号化するため、そのサイズが大きくなってしまうという問題点がある。上述したように、１つの特徴点に対する座標値は８バイトや１６バイトなどで符号化される。ＳＩＦＴ特徴量の場合は、一般的に画像から検出される特徴点の数が数百から数千にもなるので、特徴点の座標値だけで数Ｋバイトから数十Ｋバイトのデータ量となる。このように符号化特徴量のサイズが大きくなってしまうと、画像の照合（マッチング）のために符号化特徴量を用いる場合に問題が生じることがある。例えば、ユーザ端末（例えばカメラ付きの携帯端末など）が、画像から特徴量を抽出して符号化し、当該画像に類似する画像を検索するために符号化特徴量をサーバに送信する場合、符号化特徴量のサイズが大きいと通信時間が長くなってしまう。そのため、画像の検索結果が得られるまでの時間が長くなってしまう。また、符号化特徴量を用いた画像検索の場合、画像の符号化特徴量をメモリ上に格納することとなるが、符号化特徴量のサイズが大きいとメモリ上に符号化特徴量を格納可能な画像数が少なくなってしまう。そのため、大量の画像を対象とする大規模検索には適さないこととなる。【０００９】
そこで、本発明は、符号化された特徴量サイズを小さくすることを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一側面に係る特徴量符号化装置は、画像から特徴点を検出して座標値を出力する特徴点検出部と、特徴点の座標値を中心とする局所領域から局所特徴量を抽出する局所特徴量抽出部と、特定の走査方法に従って座標値をインデックス値に変換する座標値走査部と、インデックス値をソートするソート部と、ソートされたインデックス値の隣接する２つのインデックス値の差分値を算出して差分値の系列を出力する差分算出部と、差分値の系列を系列順に符号化する差分符号化部と、ソートされたインデックス値と同じ順列で、対応する特徴点の局所特徴量を符号化する局所特徴量符号化部と、を備える。【００１１】
また、本発明の一側面に係る局所特徴量抽出方法では、コンピュータが、画像から特徴点を検出して座標値を出力し、特徴点の座標値を中心とする局所領域から局所特徴量を抽出し、特定の走査方法に従って座標値をインデックス値に変換し、インデックス値をソートし、ソートされたインデックス値の隣接する２つのインデックス値の差分値を算出して差分値の系列を出力し、差分値の系列を系列順に符号化し、ソートされたインデックス値と同じ順列で、対応する特徴点の局所特徴量を符号化する。【００１２】
また、本発明の一側面に係るプログラムは、コンピュータに、画像から特徴点を検出して座標値を出力する機能と、特徴点の座標値を中心とする局所領域から局所特徴量を抽出する機能と、特定の走査方法に従って座標値をインデックス値に変換する機能と、インデックス値をソートする機能と、ソートされたインデックス値の隣接する２つのインデックス値の差分値を算出して差分値の系列を出力する機能と、差分値の系列を系列順に符号化する機能と、ソートされたインデックス値と同じ順列で、対応する特徴点の局所特徴量を符号化する機能と、を実現させるためのものである。【００１３】
なお、本発明において、「部」とは、単に物理的手段を意味するものではなく、その「部」が有する機能をソフトウェアによって実現する場合も含む。また、１つの「部」や装置が有する機能が２つ以上の物理的手段や装置により実現されても、２つ以上の「部」や装置の機能が１つの物理的手段や装置により実現されてもよい。
【発明の効果】
【００１４】
本発明によれば、符号化された特徴量サイズを小さくすることが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態である特徴量符号化装置の構成を示す図である。
【図２】座標値の走査方法の例を示す図である。
【図３】特徴量符号化装置における処理の一例を示すフローチャートである。
【図４】本発明の第２の実施形態である特徴量符号化装置の差分符号化部の構成を示す図である。
【図５】第２の実施形態の特徴量符号化装置における差分符号化部の処理の一例を示すフローチャートである。
【図６】本発明の第３の実施形態である特徴量符号化装置の差分符号化部の構成を示す図である。
【図７】特徴量符号化装置の一般的な構成の一例を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明の実施形態について説明する。
【００１７】
＝＝第１の実施形態＝＝
図１は、本発明の第１の実施形態である特徴量符号化装置の構成を示す図である。特徴量符号化装置１Ａは、特徴点検出部１０、局所特徴量抽出部１２、局所特徴量符号化部１４、座標値走査部１６、ソート部１８、差分算出部２０、及び差分符号化部２２を含んで構成される。特徴量符号化装置１Ａは、例えば、パーソナルコンピュータや携帯情報端末等の情報処理装置を用いて構成することができる。そして、特徴量符号化装置１Ａを構成する各部は、例えば、メモリ等の記憶領域を用いたり、記憶領域に格納されているプログラムをプロセッサが実行したりすることにより実現することができる。なお、後述する他の実施形態における構成要素についても同様に実現することができる。
【００１８】
特徴点検出部１０は、画像から特徴的な点（特徴点）を多数検出し、各特徴点の座標値を出力する。座標値は具体的にはＸ座標値とＹ座標値の２つ（２次元の情報）が出力される。なお出力される座標値の表現精度は任意である。出力される座標値は、ピクセル精度（画素精度）でもよいし、サブピクセル精度（画素精度よりも細かい精度）でもよいし、ピクセル精度よりも粗い精度でもよい。
【００１９】
局所特徴量抽出部１２は、検出された各特徴点の座標値を用いて、それぞれの座標値を中心とする局所領域から特徴量を抽出し、局所特徴量として出力する。例えば、局所特徴量抽出部１２は、上述のＳＩＦＴ特徴量を用いて局所特徴量を出力することができる。具体的には、局所特徴量抽出部１２は、例えば、局所領域を４×４＝１６ブロックに分割し、各ブロックに対して８方向に量子化された勾配方向ヒストグラムを生成し、１６ブロック×８勾配方向＝１２８次元の勾配方向ヒストグラムを局所特徴量として出力してもよい。なお、抽出される局所特徴量はＳＩＦＴ特徴量に限られず、どのような特徴量であってもよい。
【００２０】
座標値走査部１６は、画像をある特定の走査方法に従って走査し、特徴点の２次元座標値（Ｘ座標値とＹ座標値）を１次元のインデックス値に変換する。このインデックス値は、走査に従った原点からの走査距離である。
【００２１】
走査方法の例を図２に示す。走査方法は例えば図２の走査方法Ａのように、画像の左上を原点にして、１行ずつ左から右へと横方向にスキャンしていくラスタスキャンでもよい。また図２の走査方法Ｂのように、縦方向にスキャンするラスタスキャンでもよい。また図２の走査方法Ｃや走査方法Ｄのように、走査する方向を１行ごとに逆方向にしてもよい。なお走査方法は、図２に示した例に限られない。
【００２２】
次に、２次元座標値を１次元のインデックス値に変換する方法の例を示す。例えば２次元座標値がピクセル精度（画素精度）で、画像の横方向のピクセル数をwidth、縦方向のピクセル数をheight、画像の左上を原点としてＸ座標値をx（x = 0〜width−1）、Y座標値をy（y = 0〜height−1）、と表現する。この場合、図２の走査方法Ａに従うと、座標値走査部１６は、２次元座標値（x, y）を、次式（１）で１次元のインデックス値（0〜width×height−1）に変換することができる。
【００２３】
y×width＋x                                      ・・・（１）
この例では、座標値走査部１６は、ピクセル精度（画素精度）の２次元座標値を同じ表現精度で１次元のインデックス値に変換している。なお、座標値走査部１６は、インデックス値への変換を行うときに、表現精度を変換してもよい。例えば、座標値走査部１６は、インデックス値への変換を行うときに、２画素精度（２×２画素を１画素に縮退）や４画素精度（４×４画素を１画素に縮退）などに表現精度を変換してもよい。また２次元座標値が浮動小数点数で表現される場合、座標値走査部１６は、２次元座標値の表現精度を任意の表現精度（固定小数点数）に変換してから、１次元のインデックス値に変換してもよい。例えば、座標値走査部１６は、２次元座標値の表現精度をピクセル精度（画素精度）に変換してから、１次元のインデックス値に変換してもよい。
【００２４】
ソート部１８は、特徴点のインデックス値をソートし、ソート後の順列の情報を出力する。ここでソート部１８は、例えば昇順にソートする。また降順にソートしてもよい。
【００２５】
差分算出部２０は、ソートされたインデックス値における、隣接する２つのインデックス値の差分値を算出し、差分値の系列を出力する。ソートされたインデックス値の系列をＶi（i=0, 1, 2, …）とした場合、差分算出部２０は、差分値の系列Ｄi（i=0, 1, 2, …）を、次式（２）により計算することができる。ただし、Ｄ0＝Ｖ0とする。
【００２６】
Ｄi＝Ｖi−Ｖi-1                                ・・・（２）
差分符号化部２２は、差分値の系列を系列順に符号化する。差分値の系列の符号化は、例えば固定ビット長の符号化でもよい。固定ビット長で符号化する場合、そのビット長はあらかじめ規定されていてもよいが、これでは考えられうる差分値の最大値を表現するのに必要なビット数を要するため、符号化サイズは小さくならない。そこで、差分符号化部２２は、固定ビット長で符号化する場合、入力された差分値の系列に基づいてビット長を決定することができる。具体的には、例えば、差分符号化部２２は、入力された差分値の系列から差分値の最大値を求め、その最大値を表現するのに必要なビット数（表現ビット数）を求め、求められた表現ビット数で差分値の系列を符号化することができる。
【００２７】
例えば差分値の系列の最大値をＤMAXとした場合、差分符号化部２２は、差分値の系列を符号化するための表現ビット数Ｎを、次式（３）により計算することができる。ただし、差分値の最小値を０とする。
【００２８】
【数１】
2013073624.tif 000003
この場合、符号化された差分値の系列の復号ができるように、差分符号化部２２は、表現ビット数の値の情報、すなわちＮ、も符号化する。具体的には、例えば、差分符号化部２２は、符号化された差分値の系列の先頭に、符号化された表現ビット数の値の情報を付加することができる。通常、２次元座標値よりも、ソートされたインデックス値の差分値は、表現に必要なビット数が小さくなる。そのため、より小さい符号化サイズで座標値を表現することができる。
【００２９】
また、差分符号化部２２は、差分値の系列を、一意に復号可能な可変長符号で符号化してもよい。例えば、差分符号化部２２は、ハフマン符号や算術符号を用いてもよい。また、差分符号化部２２は、ゴロム符号やゴロム・ライス符号を用いてもよい。
【００３０】
また、差分符号化部２２は、差分値の系列の要素数（すなわち特徴点数）の情報、または符号化された差分値の系列の符号化サイズの情報も符号化してもよい。これにより、符号化された差分値の系列の復号が行われるときに、差分値の系列の終端を判断することができる。
【００３１】
また、差分符号化部２２は、差分値の系列の符号化に加えて、元の２次元座標値を復元するのに必要なその他の情報も符号化してもよい。例えば、差分符号化部２２は、座標値走査部１６における、１行分の走査幅（図２の走査方法Ａ・走査方法Ｃにおける横幅、走査方法Ｂ・走査方法Ｄにおける縦幅）などの情報を符号化してもよい。また例えば、座標値走査部１６において表現精度が変換される場合、差分符号化部２２は、表現精度を特定する情報や、元の２次元座標系の値域に復元するための変換係数などの情報を符号化してもよい。また例えば、座標値走査部１６において、使用される走査方法があらかじめ１つに限定されておらず、複数の走査方法の中から選択可能である場合、差分符号化部２２は、座標値走査部１６で使用された走査方法を特定する情報を符号化してもよい。
【００３２】
局所特徴量符号化部１４は、ソートされた特徴点のインデックス値と同じ順列で、対応する特徴点の局所特徴量を符号化する。ソートされたインデックス値と同じ順列で符号化することで、差分符号化部２２で符号化された座標値と、それに対応する局所特徴量とを１対１で対応付けることが可能となる。局所特徴量符号化部１４は、例えば上述のＳＩＦＴ特徴量を用いることにより、１つの特徴点に対する１２８次元の特徴量を、例えば１次元を１バイトで符号化し、計１２８バイトで符号化することができる。
【００３３】
局所特徴量符号化部１４が出力する符号化された局所特徴量と、差分符号化部２２が出力する符号化された座標値と、を合わせたものを符号化特徴量とする。
【００３４】
図３は、特徴量符号化装置１Ａにおける処理の一例を示すフローチャートである。まず、特徴量検出部１０は、画像から特徴点を検出して座標値を出力する（Ｓ３０１）。特徴点が検出されると、局所特徴量抽出部１２は、検出された特徴点の座標値を中心とする局所領域から局所特徴量を抽出する（Ｓ３０２）。そして、座標値走査部１６は、特定の走査方法に従って検出された座標値をインデックス値に変換する（Ｓ３０３）。次に、ソート部１８は、インデックス値をソートする（Ｓ３０４）。差分算出部２０は、ソートされたインデックス値の隣接する２つのインデックス値の差分値を算出して差分値の系列を出力する（Ｓ３０５）。そして差分符号化部２２は、差分値の系列を系列順に符号化する（Ｓ３０６）。最後に、局所特徴量符号化部１４は、ソートされたインデックス値と同じ順列で、対応する特徴点の局所特徴量を符号化する（Ｓ３０７）。なお、ここに述べた例は特徴量符号化装置１Ａにおける処理の一例であり、この順序に限られない。例えば、局所特徴量の抽出（Ｓ３０２）は、特徴量の検出（Ｓ３０１）の後であれば、どの時点で実行してもよい。また、局所特徴量の符号化（Ｓ３０７）は、インデックス値のソート（Ｓ３０４）の後であれば、どの時点で実行してもよい。
【００３５】
次に、特徴量符号化装置１Ａで符号化した符号化特徴量の復号方法について述べる。符号化された座標値は、まず差分値が復号され、差分値の系列Ｄi（i=0, 1, 2, …）が復元される。次に、差分値の系列の先頭から、差分値を加算していくことで、インデックス値の系列Ｖi（i=0, 1, 2, …）が復元される。具体的には、Ｖ0＝Ｄ0として、次式（４）により復元される。
【００３６】
Ｖi＝Ｖi-1+Ｄi                                  ・・・（４）
そして、１次元のインデックス値が２次元の座標値に変換され、座標値が復号される。符号化された局所特徴量を復号して得られる局所特徴量の系列は、復元された座標値の系列と同じ順列である。したがって、復号された局所特徴量と、復号された座標値とは、１対１で対応付けられている。こうして、局所特徴量及び対応する座標値を復号することができる。この方法により、特徴量符号化装置１Ａで符号化した符号化特徴量を復号する特徴量復号装置を構成することができる。
【００３７】
第１の実施形態の効果を述べる。第１の実施形態の特徴量符号化装置１Ａでは、差分符号化部２２が、ソートされたインデックス値の差分値を符号化する。ソートされたインデックス値の差分値は小さい値に集中するため、通常、元の２次元座標値よりも、表現に必要なビット数が小さくなるため、より小さい符号量で座標値を表現することができる。したがって、符号化された特徴量サイズを小さくすることが可能となる。
【００３８】
＝＝第２の実施形態＝＝
次に第２の実施形態について説明する。図４は、本発明の第２の実施形態における特徴量符号化装置の差分符号化部２２の構成を示す図である。第２の実施形態の特徴量符号化装置は、第１の実施形態の特徴量符号化装置１Ａの差分符号化部２２を、図４に示す差分符号化部２２Ｂに変更したものである。第２の実施形態の特徴量符号化装置におけるその他の構成は、図１に示した第１の実施形態の特徴量符号化装置１Ａと同じであるため説明を省略する。
【００３９】
図４に示すように、差分符号化部２２Ｂは、第１の符号化部２４と第２の符号化部２６を含んで構成される。差分符号化部２２Ｂにおいては、第１の符号化部２４と第２の符号化部２６による２段構成の符号化によって差分値の系列が符号化される。第１の符号化部２４と第２の符号化部２６は、それぞれ異なる符号化方法で符号化をする。なお、異なる符号化方法とは、例えば、符号化方式（ここでの符号化方式とは、固定長符号、ハフマン符号、ゴロム符号などのアルゴリズム方式のことをいう）が異なるものであってもよいし、同じ符号化方式においてパラメータが異なるもの（例えば固定長符号であっても、異なるビット長で符号化する、など）であってもよい。
【００４０】
第１の符号化部２４は、差分値が、符号化可能な値域内であれば差分値を符号化し、差分値が符号化可能な値域外であれば、そのことを示すエスケープコードを符号化する。エスケープコードには、第１の符号化部２４が符号化できる符号のうちの１つを割り当てておく。例えば、第１の符号化部２４が符号化できる最大値をエスケープコードに割り当てることができる。なお、「符号化可能な値域」とは、エスケープコードを除くものとする。
【００４１】
第２の符号化部２６は、第１の符号化部２４がエスケープコードを符号化した場合に、第１の符号化部２４とは異なる符号化方法で、差分値を符号化する。なお、このときに符号化する差分値には、第１の符号化部２４で符号化可能な値域は含まれない。そのため、第２の符号化部２６は、第１の符号化部２４で符号化可能な値域を除外したうえで、差分値を符号化するのに必要な最小のビット長で符号化してもよい。
【００４２】
具体的な例で第１の符号化部２４と第２の符号化部２６の動作を説明する。この例では、第１の符号化部２４も第２の符号化部２６も固定長符号化を行うものとし、第１の符号化部２４はＭビットの固定ビット長符号化、第２の符号化部２６はＮビットの固定ビット長符号化を行う。ただしＭ＜Ｎである。第１の符号化部２４はＭビットの符号化を行うので、０〜２M−１の値を符号化できる。このうち、最大値である２M−１をエスケープコードに割り当てる。そうすると、第１の符号化部２４が差分値を符号化可能な値域は０〜２M−２となる。
【００４３】
入力された差分値が０〜２M−２の値域内であれば、第１の符号化部２４は差分値をＭビットで固定長符号化し、符号を出力する。この場合、第２の符号化部２６は何も行わないため、第１の符号化部２４は、差分値の系列における次の差分値の符号化を行う。
【００４４】
入力された差分値が０〜２M−２の値域外（すなわち２M−２より大きい場合）であれば、第１の符号化部２４はエスケープコードである２M−１をＭビットで固定長符号化して、符号を出力する。第２の符号化部２６は、第１の符号化部２４がエスケープコードを符号化した場合に、差分値をＮビットで固定ビット長符号化する。ここでＮは、例えば、考えられうる差分値の最大値を符号化できる最小ビット長があらかじめ規定されていてもよい。また例えば、第２の符号化部２６は、入力された差分値の系列から差分値の最大値を求め、その最大値を符号化できる最小ビット長によりＮを決定してもよい。例えば、差分値の系列の最大値をＤMAXとした場合、第２の符号化部２６は、それを符号化できる最小のビット長Ｎを、次式（５）により計算することができる。ただし、差分値の最小値を０とする。
【００４５】
【数２】
2013073624.tif 000004
ここで、ceil()は小数点以下を切り上げる関数である。また、第１の符号化部２４が符号化可能な値域である０〜２M−２の２M−１個の数値は除外できるので、第２の符号化部２６は、これらを除外したうえで、差分値を符号化してもよい。この場合、第２の符号化部２６は、差分値を符号化する最小のビット長Ｎを、次式（６）により計算することができる。
【００４６】
【数３】
2013073624.tif 000005
これらのように、差分値の系列の最大値からＮを決定する場合、符号化された差分値の系列の復号ができるように、第２の符号化部２６は、このビット長Ｎの情報も符号化する。例えば、第２の符号化部２６は、符号化された差分値の系列の先頭に、符号化されたビット長Ｎの情報を付加することができる。
【００４７】
なお、第１の符号化部２４が行う固定符号化のビット長Ｍも、例えば予め規定されていてもよいし、第１の符号化部２４が適応的に求めてもよい。ビット長Ｍを適応的に求める場合、符号化された差分値の系列の復号ができるように、第１の符号化部２５は、このビット長Ｍの情報も符号化する。
【００４８】
ここでは、第１の符号化部２４と第２の符号化部２６が固定長符号化で符号化する例で説明したが、これらの符号化方法に限られない。例えば、ハフマン符号、算術符号、ゴロム符号、ゴロム符号、ゴロム・ライス符号、などを用いてもよい。例えば、第１の符号化部２４がゴロム符号を用いて符号化し、第２の符号化部２６が固定長符号化で符号化してもよい。この場合、例えば、第１の符号化部２４はゴロム符号で符号化する最大ビット長をあらかじめ規定しておく。そしてその設定で、ゴロム符号化できる最大値をエスケープコードとして割り当て、それ未満の数値を符号化可能な値域とする。そして第１の符号化部２４は、差分値がその値域内であれば、差分値をゴロム符号化し、符号を出力する。一方、差分値が値域外であれば、第１の符号化部２４は、エスケープコードをゴロム符号化して出力する。この場合、第２の符号化部２６が、差分値を固定長符号化する。
【００４９】
図５は、第２の実施形態の特徴量符号化装置における差分符号化部２２Ｂの処理の一例を示すフローチャートである。差分符号化部２２Ｂは、差分値の系列における各差分値を順に処理していく。まず、第１の符号化部２４は、差分値が符号化可能な値域内であるか否かを判定する（Ｓ４０１）。符号化可能な値域内であれば、第１の符号化部２４は、差分値を符号化する（Ｓ４０２）。そしてステップＳ４０５へ移行する。符号化可能な値域内でない場合（値域外）は、第１の符号化部２４は、エスケープコードを符号化する（Ｓ４０３）。そして次に、第２の符号化部２６は、第１の符号化部２４とは異なる符号化方法で差分値を符号化する（Ｓ４０４）。そしてステップＳ４０５へ移行する。ステップ４０５では、第１の符号化部２４は、処理された差分値が、差分値の系列の最後の要素であるかを判定する（Ｓ４０５）。最後である場合は、処理が終了する。最後でない場合は、再度ステップＳ４０１へ移行し、差分値の系列の次の差分値に対する処理が実行される。
【００５０】
次に、第２の実施形態の特徴量符号化装置における差分符号化部２２Ｂが符号化した差分値の系列の復号方法について述べる。差分値の系列の先頭から各差分値が順に復元されていく。まず符号化された差分値の系列の最初の要素の値が復号される。この値は第１の符号化部２４が符号化した値であるため、第１の符号化部２４の符号化パラメータに従って復号される。例えば上述のＭビットの固定ビット長符号化の場合は、Ｍビット分が復号される。復号された値がエスケープコードでない場合は、この値が差分値として復元され、次の差分値の復元へ移行する（再び第１の符号化部２４が符号化した値の復号を行う）。復号された値がエスケープコードである場合は、次の要素の値が復号される。この値は第２の符号化部２６が符号化した値なので、第２の符号化部２６の符号化パラメータに従って復号される。例えば上述のＮビットの固定ビット長符号化の場合は、Ｎビット分が復号される。そしてこの値を差分値として復元され、次の差分値の復元へ移行する（再び第１の符号化部２４が符号化した値の復号を行う）。こうして、差分値の系列を復号することができる。この方法で符号化された差分値の系列を復号する差分復号部を備えた特徴量復号装置を構成することができる。
【００５１】
第２の実施形態の効果を述べる。第２の実施形態の特徴量符号化装置では、差分符号化部２２Ｂが第１の符号化部２４と第２の符号化部２６とによる、２段構成の符号化を行う。ソートされたインデックス値の差分値は、通常小さい値に集中するが、大きい値も含まれる（すなわち、小さい値の出現頻度が高く、大きい値の出現頻度が低い）。２段構成にすることで、第１の符号化部２４が出現頻度の高い小さい値を短い符号長で符号化し、第２の符号化部２６が出現頻度の低い大きい値を符号化することができるため、１段構成の符号化と比較して平均の符号長をより小さくすることができる。したがって、符号化された特徴量サイズを小さくすることが可能となる。
【００５２】
＝＝第３の実施形態＝＝
次に第３の実施形態について説明する。図６は、本発明の第３の実施形態における特徴量符号化装置の差分符号化部２２Ｃの構成を示す図である。第３の実施形態の特徴量符号化装置は、第１の実施形態の特徴量符号化装置１Ａの差分符号化部２２を、図６に示す差分符号化部２２Ｃに変更したものである。その他の構成は、図１に示した第１の実施形態における特徴量符号化装置１Ａと同じであるため説明を省略する。
【００５３】
図６に示すように、差分符号化部２２Ｃは、第１の符号化部２４、第２の符号化部２６、及び最適符号化パラメータ決定部２８を含んで構成される。このように、差分符号化部２２Ｃは、図４に示した第２の実施形態の差分符号化部２２Ｂに、最適符号化パラメータ決定部２８が追加された構成である。なお、第１の符号化部２４と第２の符号化部２６は、第２の実施形態の差分符号化部２２Ｂに含まれる構成と同じであるため、同一の符号を付して説明を省略する。
【００５４】
最適符号化パラメータ決定部２８は、差分値の系列から、符号化した差分値の系列の符号長が最短になるように、第１の符号化部２４と第２の符号化部２６が行う符号化のパラメータを決定する。
【００５５】
第１の符号化部２４と第２の符号化部２６は、決定された符号化パラメータを用いて、第２の実施形態の場合と同様に符号化を行う。
【００５６】
具体的な例で、最適符号化パラメータ決定部２８の動作を説明する。ここでは、第２の実施形態で述べた、第１の符号化部２４がＭビットの固定ビット長符号化、第２の符号化部２６がＮビットの固定ビット長符号化を行う（ただしＭ＜Ｎ）場合について、最適符号化パラメータ決定部２８の動作を説明する。
【００５７】
この場合、最適符号化パラメータ決定部２８は、符号化した差分値の系列の符号長が最短になるように、ＭとＮを決定する。また、最適符号化パラメータ決定部２８は、符号化した差分値の系列の復号ができるように、決定したＭとＮの情報も差分値の系列と共に符号化する。例えば、最適符号化パラメータ決定部２８は、符号化された差分値の先頭の先頭に、符号化されたＭとＮの情報を付加することができる。
【００５８】
例えば、最適符号化パラメータ決定部２８は、ＭとＮを変化させたときの、符号化した差分値の系列の全体の符号長を算出し、その符号長が最短となるＭとＮと決定することができる。具体的には、例えば、第２の実施形態で述べたように、最適符号化パラメータ決定部２８は、差分値の系列の最大値から式（５）を用いて、最適なＮを決定することができる。そして、Ｍが決定されれば、最適符号化パラメータ決定部２８は、式（６）を用いて、より短いビット長となるＮを決定することができる。
【００５９】
また、最適符号化パラメータ決定部２８は、Ｍを変化させたときの、符号化した差分値の系列の全体の符号長を算出し、その符号長が最短となるようにＭを決定することとしてもよい。
【００６０】
また、最適符号化パラメータ決定部２８は、第１の符号化部２４が符号化できる値域内にある差分値の数（または値域外にある差分値の数（第２の符号化部２６が符号化する数））を集計することにより、符号化した差分値の系列の符号長を効率的に算出することができる。すなわち、値域内にある差分値の数をＡ、差分値の系列における差分値の個数をＺとすると、全体の符号長はＭ×Ａ＋（Ｍ＋Ｎ）×（Ｚ−Ａ）となる。最適符号化パラメータ決定部２８は、この式から、全体の符号長が最短となるＭを算出することができる。
【００６１】
第３の実施形態の効果を述べる。第３の実施形態の特徴量符号化装置では、差分符号化部２２の最適符号化パラメータ決定部２８が、符号化した差分値の系列の符号長が最短になるように符号化のパラメータを決定するので、最短の符号長で符号化することができる。したがって、符号化された特徴量サイズを小さくすることが可能となる。
【００６２】
なお、本実施形態は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更／改良され得るととともに、本発明にはその等価物も含まれる。
【００６３】
この出願は、２０１１年１１月１８日に出願された日本出願特願２０１１−２５３２２５を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【００６４】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００６５】
本実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）画像から特徴点を検出して座標値を出力する特徴点検出部と、前記特徴点の座標値を中心とする局所領域から局所特徴量を抽出する局所特徴量抽出部と、特定の走査方法に従って前記座標値をインデックス値に変換する座標値走査部と、前記インデックス値をソートするソート部と、前記ソートされたインデックス値の隣接する２つのインデックス値の差分値を算出して差分値の系列を出力する差分算出部と、前記差分値の系列を系列順に符号化する差分符号化部と、前記ソートされたインデックス値と同じ順列で、対応する特徴点の前記局所特徴量を符号化する局所特徴量符号化部と、を備える特徴量符号化装置。
（付記２）付記１に記載の特徴量符号化装置であって、前記差分符号化部は、前記差分値が符号化可能な値域内であれば差分値を符号化し、差分値が符号化可能な値域外であれば、差分値が符号化可能な値域外であることを示すエスケープコードを符号化する第１の符号化部と、前記第１の符号化部がエスケープコードを符号化した場合に、前記第１の符号化部とは異なる符号化方法で前記差分値を符号化する第２の符号化部と、を備える特徴量符号化装置。
（付記３）付記２に記載の特徴量符号化装置であって、前記差分符号化部は、前記差分値の系列から、符号化した差分値の系列の符号長が最短になるように、前記第１の符号化部及び前記第２の符号化部が行う符号化のパラメータを決定する最適符号化パラメータ決定部をさらに備える、特徴量符号化装置。
（付記４）付記２または３に記載の特徴量符号化装置であって、前記第１の符号化部はＭビットの固定ビット長符号化を行い、前記第２の符号化部はＭよりも大きいＮビットの固定ビット長符号化を行う、特徴量符号化装置。
（付記５）コンピュータが、画像から特徴点を検出して座標値を出力し、前記特徴点の座標値を中心とする局所領域から局所特徴量を抽出し、特定の走査方法に従って前記座標値をインデックス値に変換し、前記インデックス値をソートし、前記ソートされたインデックス値の隣接する２つのインデックス値の差分値を算出して差分値の系列を出力し、前記差分値の系列を系列順に符号化し、前記ソートされたインデックス値と同じ順列で、対応する特徴点の前記局所特徴量を符号化する、特徴量符号化方法。
（付記６）コンピュータに、画像から特徴点を検出して座標値を出力する機能と、前記特徴点の座標値を中心とする局所領域から局所特徴量を抽出する機能と、特定の走査方法に従って前記座標値をインデックス値に変換する機能と、前記インデックス値をソートする機能と、前記ソートされたインデックス値の隣接する２つのインデックス値の差分値を算出して差分値の系列を出力する機能と、前記差分値の系列を系列順に符号化する機能と、前記ソートされたインデックス値と同じ順列で、対応する特徴点の前記局所特徴量を符号化する機能と、を実現させるためのプログラム。
【符号の説明】
【００６６】
１Ａ  特徴量符号化装置
１０  特徴点検出部
１２  局所特徴量抽出部
１４  局所特徴量符号化部
１６  座標値走査部
１８  ソート部
２０  差分算出部
２２  差分符号化部
２４  第１の符号化部
２６  第２の符号化部
２８  最適符号化パラメータ決定部
【図１】
2013073624.tif 000006
【図２】
2013073624.tif 000007
【図３】
2013073624.tif 000008
【図４】
2013073624.tif 000009
【図５】
2013073624.tif 000010
【図６】
2013073624.tif 000011
【図７】
2013073624.tif 000012
【国際調査報告】
2013073624.tif 000013
2013073624.tif 000014