以下に、本願の開示する画像処理装置、画像処理方法および画像処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、本実施例に係る画像処理装置の構成を示す機能ブロック図である。図1に示すように、画像処理装置100は、カメラ50および表示装置60に接続される。カメラ50は、撮像範囲の画像データを画像処理装置100に順次出力する装置である。表示装置60は、画像処理装置100から出力される情報を表示する表示装置である。表示装置60は、液晶ディスプレイやタッチパネル等に対応する。
画像処理装置100は、画像取得部110、線分検出部120、線分特徴検出部130、線分対応付け検出部140、3次元構造推定部150、3次元構造保持部160、カメラ位置・姿勢推定部170、出力情報生成部180を有する。
画像取得部110は、カメラ50から対象環境の画像データを順次取得する処理部である。画像取得部110は、画像データを線分検出部120に出力する。
線分検出部120は、画像データから線分を検出する処理部である。線分検出部120は、フレーム毎に画像データから線分を検出する。線分検出部120は、LSD(Line Segment Detector)法を用いて、線分を検出する。線分検出部120は、フレーム毎に画像データから検出した線分の情報を、線分特徴検出部130に出力する。
例えば、線分検出部120は、画像データをグレースケールの画像データに変換し、各画素の微分値に基づく勾配ベクトルを計算し、近傍の画素同士で勾配ベクトルの方向を比較する。線分検出部120は、勾配ベクトルの方向の差が閾値未満となる画素同士をグループ化していく。線分検出部120は、画素のグループを反復的に増大させていき、最終的にグループの画素集合に矩形領域を当てはめ、そのパラメータについて線分を計算する。例えば、LSD法は「“A fast line segment detector with a false detection control.“IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 32, No. 4, pp. 722-732, 2010.」に開示されている。
線分特徴検出部130は、画像データから検出された各線分の特徴を検出する処理部である。線分特徴検出部130は、線分周辺の画素の明度の分布と、線分の方向とを線分の特徴として検出する。線分特徴検出部130は、線分と線分の特徴とを対応付けた情報を、線分対応付け検出部140に出力する。線分特徴検出部130が、線分の特徴を検出する具体的な説明は後述する。
線分対応付け検出部140は、nフレームの画像データから検出された線分の特徴と、n+1フレームの画像データから検出された線分の特徴とを基にして、nフレームの線分とn+1フレームの線分との対応関係を検出する。また、線分対応付け検出部140は、各フレームの画像データの線分の特徴と、3次元構造情報とを基にして、画像データの線分と、3次元空間上の3次元構造物を構成する線分との対応関係を検出する。3次元構造情報は、3次元空間上の3次元構造物を構成する線分の配置を示す情報であり、3次元構造保持部160に保持される。
線分対応付け検出部140は、各フレームの画像データの線分と3次元空間上の線分との対応関係の情報を、3次元構造推定部150に出力する。また、線分対応付け検出部140は、3次元構造保持部160に保持された3次元構造情報と、対応関係の情報とを、カメラ位置・姿勢推定部170に出力する。
3次元構造推定部150は、各フレームの画像データの線分と3次元空間上の線分との対応関係を基にして、画像データから検出される各線分に対応する3次元構造を推定する処理部である。例えば、3次元構造推定部150は、画像データの線分に対応する3次元構造上の線分が存在しない場合には、現在の3次元構造を他の3次元構造に変更し、変更した3次元構造情報を、3次元構造保持部160に格納する。
例えば、3次元構造推定部150は、画像データの線分に対応する3次元構造上の線分が存在しない場合には、複数の3次元構造情報の線分と、画像データの線分とを比較し、画像データの線分に対応する線分を有する3次元構造情報を特定する。3次元構造推定部150は、特定した3次元構造情報を、3次元構造保持部160に格納する。
3次元構造保持部160は、3次元構造推定部150に推定された3次元構造情報を保持する。例えば、3次元構造情報は、3次元空間上の3次元構造物を構成する線分の長さや、各線分の座標の情報等を有する。
カメラ位置・姿勢推定部170は、3次元構造情報と、対応関係の情報とを基にして、カメラ位置およびカメラの姿勢を推定する処理部である。例えば、カメラ位置・姿勢推定部170は、LBOI(Line Based Orthogonal Iteration)法に基づいて、カメラ位置および姿勢を推定する。例えば、LBOI法は「“A new line-based orthogonal iteration pose estimation algorithm.”In Information Engineering and Computer Science,2009. ICIECS 2009.International Conference on, pp. 1-4. IEEE, 2009」に開示されている。
なお、カメラ位置・姿勢推定部170は、3次元構造情報および対応関係とカメラ位置・姿勢とを対応付けたテーブルまたは式を用いて、カメラ位置およびカメラの姿勢を推定しても良い。
出力情報生成部180は、カメラ位置・姿勢推定部170によって推定されたカメラ50の位置および姿勢に基づいて、画像データに所定の画像を重畳することで出力情報を生成する処理部である。例えば、出力情報生成部180は、カメラ50の位置および姿勢と、所定の画像を重畳する画像データ上の位置とを対応付けたテーブルを用いて、所定の画像を重畳する画像データ上の位置を特定し、特定した画像データ上の位置に、所定の画像を重畳する。
次に、線分特徴検出部130が、画像データから検出された線分の特徴を検出する処理について具体的に説明する。線分特徴検出部130は、線分の特徴を検出する場合に、LEHFを計算する。以下に、LEHFを算出する処理について説明する。
線分特徴検出部130は、線分の周辺で微分値を計算し、各微分値に基づいて勾配ベクトルを算出する。線分特徴検出部130は、線方向に応じて勾配ベクトルを足し合わせることで勾配ヒストグラムを複数計算し、LEHFを得る。特に、線分特徴検出部130は、線分方向に対応するように、勾配方向の定義と勾配ヒストグラムの配列順を決定することで、線分の特徴に方向依存性を持たせる。
線分特徴検出部130は、高速かつ安定的にLEHFを算出するために、線分の周囲で一定数のサンプル点を取り、そのサンプル点上で微分計算を行う。また、回転不変性を得るために、線分特徴検出部130は、サンプル点上で計算された勾配ベクトルの勾配方向と線分とのなす角を改めて勾配方向として定義する。回転不変性を得るために、画像データそのものを回転計算しないので、処理時間を短縮することが可能となる。
図2は、本実施例に係るLEHFの計算方式の例を説明するための図である。図2では、画像データ上の線分20のLEHFを算出する場合について説明する。線分特徴検出部130は、線分20の周辺に均一にサンプル点P11〜PSiSjをとる。図2において、Sjはj方向に取るサンプル点の数であり、Siはi方向に取るサンプル点の数である。j方向は、線分20の平行な方向であり、i方向は、線分20と直行する方向である。
ここで、各サンプル点をpij(pxij,pyij)とする。LEHFでは、勾配方向ヒストグラムを特徴量とするため、サンプル点毎に微分計算を行う。線分特徴検出部130は、サンプル点pijにおけるx方向の画素の明度の微分値dxijは、式(1)によって計算する。線分特徴検出部130は、サンプル点pijにおけるy方向の画素の明度の微分値dyijは、式(2)によって計算する。式(1)、(2)のI(pxij,pyij)は、画像データ上の座標(pxij,pyij)の画素の明度値を示す。
線分特徴検出部130は、微分値dxij,dyijに基づいて、勾配強度Lij、勾配方向θijをもつ勾配ベクトルを算出する。線分特徴検出部130は、式(3)を基にして、勾配強度Lijを算出する。線分特徴検出部130は、式(4)を基にして、勾配方向θijを算出する。
dxij=I(pxij+1,pyij)−I(pxij-1,pyij)・・・(1)
dyij=I(pxij,pyij+1)−I(pxij,pyij-1)・・・(2)
Lij=√(dxij 2+ dyij 2)・・・(3)
θij=arctan(dyij/dxij)・・・(4)
線分特徴検出部130は勾配ベクトルを算出した後に、勾配ベクトルを基にして、サンプル点毎に8方向勾配ヒストグラムを計算する。あるサンプル点の8方向勾配ヒストグラムhiを式(5)に示す。線分特徴検出部130は、8方向勾配ヒストグラムを算出する線分が順方向であるか否かに応じて、勾配ベクトルθを補正した後に、下記の処理を行う。線分特徴検出部130は、線分が逆方向である場合には、勾配ベクトルθからπを減算する補正を行う。線分特徴検出部130が、線分が順方向であるか否かを判定する処理は後述する。
hi=(hi,0、hi,1、hi,2、hi,3、hi,4、hi,5、hi,6、hi,7)・・・(5)
線分特徴検出部130は、勾配ベクトルの勾配方向が「0以上、π/4未満」の場合には、「hi,0」に勾配ベクトルの勾配強度を格納し、「hi,1、hi,2、hi,3、hi,4、hi,5、hi,6、hi,7」に0を格納する。線分特徴検出部130は、勾配ベクトルの勾配方向が「π/4以上、π/2」未満の場合には、「hi,1」に勾配ベクトルの勾配強度を格納し、「hi,0、hi,2、hi,3、hi,4、hi,5、hi,6、hi,7」に0を格納する。線分特徴検出部130は、勾配ベクトルの勾配方向が「π/2以上、3π/4未満」の場合には、「hi,2」に勾配ベクトルの勾配強度を格納し、「hi,0、hi,1、hi,3、hi,4、hi,5、hi,6、hi,7」に0を格納する。
線分特徴検出部130は、勾配ベクトルの勾配方向が「3π/4以上、π未満」の場合には、「hi,3」に勾配ベクトルの勾配強度を格納し、「hi,0、hi,1、hi,2、hi,4、hi,5、hi,6、hi,7」に0を格納する。線分特徴検出部130は、「π以上、5π/4未満」の場合には、「hi,4」に勾配ベクトルの勾配強度を格納し、「hi,0、hi,1、hi,2、hi,3、hi,5、hi,6、hi,7」に0を格納する。
線分特徴検出部130は、「5π/4以上、3π/2未満」の場合には、「hi,5」に勾配ベクトルの勾配強度を格納し、「hi,0、hi,1、hi,2、hi,3、hi,4、hi,6、hi,7」に0を格納する。線分特徴検出部130は、「3π/2以上、7π/4未満」の場合には、「hi,6」に勾配ベクトルの勾配強度を格納し、「hi,0、hi,1、hi,2、hi,3、hi,4、hi,5、hi,7」に0を格納する。線分特徴検出部130は、「7π/4以上、2π未満」の場合には、「hi,7」に勾配ベクトルの勾配強度を格納し、「hi,0、hi,1、hi,2、hi,3、hi,4、hi,5、hi,6」に0を格納する。
ここで、線分特徴検出部130は、式(5)に基づいて、サンプル点毎に8方向勾配ヒストグラムを算出した後に、それぞれのiに対して8方向勾配ヒストグラムを並べることで、LEHFを得る。線分特徴検出部130は、線分の方向が順方向である場合には、8方向配列ヒストグラムを、式(6)に従って並べる。また、線分の方向が逆方向である場合には、8方向配列ヒストグラムを、式(7)に従って並べる。
LEHF=(h1、h2、h3、h4、・・・、hSi)・・・(6)
LEHF=(hSi、hSi-1、・・・、h1)・・・(7)
LEHFの次元数は、例えば、サンプル点pi,jとpi+1,jとの間の距離を3画素とし、Sj=45、Si=13とした場合に104次元となる。なお、線分特徴検出部130は、各iについて式(8)に示すような重み付けwiを行っても良い。線分特徴検出部130は、式(8)に示す重み付けを行うことで、線分により近いLEFHに比重をかけることができる。式(8)に含まれるGは、分散σの正規分布に対応し、Gの引数は中央からの距離である。
wi=G((i-Si+1/2)/3))・・・(8)
ここで、線分特徴検出部130が、LEHFを算出する処理手順の一例について説明する。図3は、本実施例に係る線分特徴検出部の処理手順を示すフローチャートである。図3に示すように、線分特徴検出部130は、線分の方向を計算する(ステップS10)。線分特徴検出部130は、線分の方向が逆方向の場合には、Θにπを足す(ステップS11)。
線分特徴検出部130は、LEHF(h1、h2、h3、h4、・・・、hSi)を初期化する(ステップS12)。線分特徴検出部130は、サンプル点pijにおいて、微分値dxij,dyijを計算する(ステップS13)。線分特徴検出部130は、微分値dxij,dyijを基にして勾配強度Lijおよび勾配方向θijを算出する(ステップS14)。線分特徴検出部130は、勾配方向θijからΘを引くことで勾配方向θijを修正する(ステップS15)。
線分特徴検出部130は、勾配方向θijを8方向に量子化し、8方向勾配ヒストグラムhiを計算する(ステップS16)。線分特徴検出部130は、8方向勾配ヒストグラムhiを重みで更新する(ステップS17)。ステップS17において、線分特徴検出部130は、式(9)によって、8方向勾配ヒストグラムhiを更新する。
hi,id=hi,id+wi×Lij・・・(9)
線分特徴検出部130は、全てのサンプル点を選択していない場合には(ステップS18,No)、ステップS13に移行する。一方、線分特徴検出部130は、全てのサンプル点を選択した場合には(ステップS18,Yes)、8方向勾配ヒストグラムを並べ、LEHFを得る(ステップS19)。線分特徴検出部130は、LEHFを正規化し(ステップS20)、処理を終了する。
ところで、ステップS19において、線分特徴検出部130は、線分の方向が順方向の場合には、上記式(6)に基づき、LEHFを得る。線分特徴検出部130は、線分の方向が逆方向の場合には、上記式(7)に基づき、LEHFを得る。
本実施例に係る線分特徴検出部130は、線分の方向情報を後述する技術で定義し、それに基づいてLEHFを定義した上で方向情報に合わせて予め並べ替えておく。このため、類似したLEHFを持つ線分が180度回転した形で隣接している場合での誤Matchingを低減することが可能となる。
また、処理速度に関して、下記の効果を得ることができる。LEHFを形成するベクトル成分の次元数を,従来の8×(n+1)次元から8×n次元に削減を図ることが可能となり、LEHFのMatchingの際の処理時間を低減することが可能となる。LEHFのMatchingの際に,従来は回転を考慮して2回の計算が必要であったものが、1回で済むようになり、LEHFのMatchingの処理時間を1/2に低減することが可能となる。
次に、本実施例に係る線分特徴検出部130が線分の方向が順方向であるか否かを判定する処理について具体的に説明する。元々線分は、線分の両サイドに明暗差が特定の値より大きい画素を結んだ集合体として定義することができる。このため、線分の一方のサイドが他方のサイドよりも明度が高くなるという特徴を有している。そこで、線分特徴検出部130は、線分の方向を定める場合に、線分を挟む両サイドの明度の強弱を基準に判定する。
図4は、線分の方向を判定する処理を説明するための図(1)である。図4に示す例では、線分20aを挟んで上サイドが暗く、下サイドが明るい場合を示している。線分20aの方向を矢印で表した場合に、矢印の始点から終点を見て右サイドが明るくなるような方向を、矢印の方向として定義する。このように定義すると線分20aの方向は、左から右方向となる。例えば、線分特徴検出部130は、線分の方向を特定し、線分の方向が左から右方向であれば、係る線分の方向を順方向とする。これに対して、線分特徴検出部130は、線分の方向を特定し、方向が右から左方向であれば、係る線分の方向を逆方向とする。
なお、線分特徴検出部130は、線分20aの両サイドの明暗を判定する場合には、下記の処理を行う。線分特徴検出部130は、線分20aから予め定めた特定距離の画素の明度を各サイドから取得し、各サイドの画素の明度の平均値を算出する。線分特徴検出部130は、一方のサイドの明度の平均値と、他方のサイドの明度の平均値とを比較して、両サイドの明暗を判定する。
次に、本実施例に係る線分の方向が順方向であるか否かを判定するその他の処理について説明する。LEHFは、勾配ベクトルを用いて定義されている。そのため、線分上の画素の勾配ベクトルの方向成分は、そのまま線分の当該画素での線分の両サイドの明度の大小を表しており、勾配ベクトルの強度成分は明度の大小の差の大きさを表している。そのため、LEHFの線分上の成分に当たる8方向勾配ヒストグラムhiは、線分の両サイドの明暗の大小を反映している。
図5は、線分の方向を判定する処理を説明するための図(2)である。図5に示す例では、線分20bを挟んで左サイドが暗く、右サイドが明るい場合の例を示している。この時の線分20bに対する8方向勾配ベクトルhiをヒストグラムの形で表すとグラフ30に示すものとなる。グラフ30の横軸は、勾配方向を示し、縦軸は、勾配強度の和を示す。図30に示すように、例えば、線分20bの右サイド側に当たる勾配方向6にヒストグラムのピークが表れる。
このため、線分20bの矢印の始点から終点を見て右サイドにヒストグラムのピークが来る場合に、現矢印の方向が線分の方向であると特定する。そして、線分の方向が左から右方向であれば、係る線分の方向を順方向とする。これに対して、線分特徴検出部130は、線分の方向を特定し、線分の方向が右から左方向であれば、係る線分の方向を逆方向とする。
次に、線分対応付け検出部140が、nフレームの画像データから検出された線分の特徴と、n+1フレームの画像データから検出された線分の特徴とを対応付ける処理について具体的に説明する。線分対応付け検出部140は、nフレームの画像データの線分を、n+1フレームの画像データに投影する。線分対応付け検出部140は、n+1フレームの画像データに含まれる各線分のうち、投影位置付近に位置する線分に対して類似度の判定を行うことで、Matcingを行う。
図6は、本実施例に係る線分対応付け検出部の処理を説明するための図である。図6において、線分40は、nフレームの画像データの線分を、n+1フレームの画像データに投影した線分である。線分51〜58は、n+1フレームの画像データから検出された線分である。線分特徴検出部130は、線分40から所定の距離に含まれる線分51〜54を選択し、線分40と、線分51〜54とをそれぞれ比較して、類似度を算出する。
例えば、nフレームの画像データから投影した線分AのLEHFを(ha1、ha2、ha3、ha4、・・・、haSi)とし、n+1フレームの画像データ上の線分BのLEHFを(hb1、hb2、hb3、hb4、・・・、hbSi)とする。線分対応付け検出部140は、式(10)に基づいて、線分A,Bの類似度を算出する。式(10)を用いると、各線分が類似すればするほど類似度の値は小さくなる。この他にも類似度の算出には一般的な他の方法を用いても良い。
類似度=((ha1-hb1)2+(ha2-hb2)2+(ha3-hb3)2+(ha4-hb4)2+・・・+(haSi-hbSi)2)1/2・・・(10)
線分対応付け検出部140は、線分Aと線分Bとの組みについて、類似度が予め定めた第1基準値未満となる場合に、該線分Aと線分Bとのなす角度を算出する。線分対応付け検出部140は、線分Aと線分Bとのなす角度が、第2基準値未満であるか否かを判定する。線分対応付け検出部140は、線分Aと線分Bとについて、類似度が第1基準値未満となり、かつ、なす角度が第2基準値未満となる場合に、線分Aと線分Bとの組みを、対応する線分の候補に追加する。
線分対応付け検出部140は、対応する線分の候補を抽出した後に、複数の線分の候補が含まれる場合には、各候補の評価指数を算出する。例えば、線分対応付け検出部140は、評価指数を、式(11)を基にして算出する。式(11)に含まれるα、βは、所定の補正係数である。線分対応付け検出部140は、複数の線分の候補のうち、評価指数が最小となる組みを、対応する線分の候補に決定する。
評価指数=α×類似度+β×なす角度・・・(11)
例えば、線分対応付け検出部140は、線分Aに対応する線分の候補として、線分B1と線分B2とが存在し、線分Aと線分B1との評価指数が、線分Aと線分B2との評価指数よりも小さい場合には、線分Aに対応する線分を、線分B1として決定する。なお、線分対応付け検出部140は、対応する線分の候補が単一の場合には、評価指数の計算をスキップし、かかる単一の線分を、対応する線分として決定する。
次に、線分対応付け検出部140が、各フレームの線分と、3次元構造情報とを基にして、画像データの線分と、3次元空間上の3次元構造物を構成する線分を対応付ける処理について具体的に説明する。
線分対応付け検出部140は、3次元構造保持部160に保持される3次元構造情報を取得し、3次元構造物の各線分を、nフレームの画像データ上に投影する。例えば、線分対応付け検出部140は、3次元上の各線分の座標を、2次元の座標に変換する変換テーブルを利用して、3次元構造物の各線分を、nフレームの画像データ上に投影する。線分対応付け検出部140は、画像データ上の線分と、投影した線分とを対応付ける。
線分対応付け検出部140が、画像データ上の線分と、投影した線分とを対応付ける処理は、上述したnフレームの画像データの線分と、n+1フレームの画像データの線分とを対応付ける処理と同様である。
線分対応付け検出部140は、画像データ上の線分と、投影した線分とを対応付けた結果を、3次元構造推定部150に出力する。なお、線分対応付け検出部140は、画像データ上の線分に対応する3次元構造情報の線分が存在しない場合には、対応する線分が存在しない旨の情報を、3次元構造推定部150に出力する。
次に、本実施例に係る画像処理装置100の処理手順について説明する。図7は、本実施例に係る画像処理装置の処理手順を示すフローチャートである。図7に示す処理は、カメラ50から画像データを取得する度に繰り返し実行される。
図7に示すように、画像処理装置100は、カメラ50から画像データを取得し(ステップS101)、線分を検出する(ステップS102)。画像処理装置100は、LEFHを検出し(ステップS103)、線分の特徴を検出する(ステップS104)。
画像処理装置100は、線分の対応付けを行う(ステップS105)。ステップS105において、画像処理装置100は、nフレームの画像データの線分と、n+1フレームの画像データの線分とを対応付ける。また、画像処理装置100は、nフレームの画像データの線分と、3次元構造情報の線分とを対応付ける。
画像処理装置100は、3次元構造情報の線分に対応しない新たな線分が、画像データの線分に存在するか否かを判定する(ステップS106)。画像処理装置100は、新たな線分が存在しない場合には(ステップS106,No)、カメラ位置および姿勢を推定する(ステップS107)。
画像処理装置100は、コンテンツを提供する(ステップS108)。ステップS108において、画像処理装置100は、例えば、カメラ50の位置および姿勢に基づいて、画像データに所定の画像を重畳することで出力情報を生成し、表示装置60に出力する。
画像処理装置100は、処理を終了しない場合には(ステップS109,No)、再度、ステップS101に移行する。一方、画像処理装置100は、処理を終了する場合には(ステップS109,Yes)、処理を終了する。
ところで、画像処理装置100は、ステップS106において、新たな線分が存在する場合には(ステップS106,Yes)、画像データ間で線分追跡を行う(ステップS110)。画像処理装置100は、画像データに含まれる線分に対応する3次元構造の線分の位置を推定し(ステップS111)、3次元構造を推定し(ステップS112)、ステップS109に移行する。
次に、図7のステップS105に示した線分対応付け処理の処理手順について説明する。図8は、線分対応付け処理の処理手順を示すフローチャートである。図8に示すように、画像処理装置100は、直前の画像データ中の線分を投影し(ステップS201)、投影した線分位置の近傍の線分を抽出する(ステップS202)。
画像処理装置100は、LEHFの類似度を算出し(ステップS203)、類似度が第1基準値未満であるか否かを判定する(ステップS204)。画像処理装置100は、類似度が第1基準値未満でない場合には(ステップS204,No)、ステップS208に移行する。
一方、画像処理装置100は、類似度が第1基準値未満の場合には(ステップS204,Yes)、なす角度を算出する(ステップS205)。画像処理装置100は、なす角度が第2基準値未満であるか否かを判定する(ステップS206)。画像処理装置100は、なす角度が第2基準値未満でない場合には(ステップS206,No)、ステップS208に移行する。
一方、画像処理装置100は、なす角度が第2基準値未満の場合には(ステップS206,Yes)、対応する線分の候補に設定する(ステップS207)。ステップS207において、画像処理装置100は、各線分の類似度が第1基準値未満となり、各線分のなす角度が第2基準値未満となる線分の組みを、対応する線分の候補に設定する。
画像処理装置100は、未処理の線分がある場合には(ステップS208,Yes)、再度、ステップS203に移行する。一方、画像処理装置100は、未処理の線分が存在しない場合には(ステップS208,No)、線分の候補が一つであるか否かを判定する(ステップS209)。画像処理装置100は、線分の候補が一つである場合には(ステップS209,Yes)、ステップS212に移行する。
一方、画像処理装置100は、線分の候補が一つでない場合には(ステップS209,No)、対応する線分が存在するか否かを判定する(ステップS210)。画像処理装置100は、対応する線分が存在する場合には(ステップS210,Yes)、評価指数を算出する(ステップS211)。画像処理装置100は、各線分の評価指数を基にして、対応する線分を決定する(ステップS212)。例えば、画像処理装置100は、各線分の内、評価指数が最小となる各線分を、対応関係にある線分の組みと判定する。
一方、ステップS210において、画像処理装置100は、対応する線分が存在しない場合には(ステップS210,No)、線分を除外する(ステップS213)。
次に、本実施例に係る画像処理装置100の効果について説明する。画像処理装置100は、画像データの線分を対応付ける場合に、線分の特徴として、線分のLEHFと線分の方向とを用いて、8方向配列ヒストグラムを求め、各線分の対応付けを行う。このため、画像処理装置100によれば、線分の対応付けを精度良く実行することができる。
また、画像処理装置100によれば、仮想現実技術の中で用いる、複数のカメラ撮影画像間もしくはカメラ撮影画像と別途生成した3次元構造間での線分の対応付けの際に、従来の線分周辺の画素の明度の分布情報に加えて、線分の方向情報を用いて対応付けを行うことで、特にその配置が180度回転した線分同士の誤対応の低減を図ることが可能となり、従来技術より高精度かつカメラの移動への追従性の高い拡張現実技術の実現が可能となる。
また、画像処理装置100は、線分周辺の画素の明度の分布情報を線分の方向情報に基づいて正規化している。このため、画像処理装置100によれば、線分同士のMatchingの際の計算回数を低減でき,従来技術より高速でリアルタイム処理に適した拡張現実技術の実現が可能となる。
また、LEHFを形成するベクトル成分の次元数を、従来の8×(n+1)次元から8×n次元に削減することができ、LEHFのMatchingの際の処理時間を低減することができる。また、LEHFのMatchingの際に、従来は回転を考慮して2回の計算を行っていたが、画像処理装置100は1回の計算で済み、LEHFのMachingの処理時間を1/2に低減することが可能となる。
また、画像処理装置100は、線分の周辺範囲の画素の明暗の分布を基にして線分の方向を特定し、線分上および線分周辺の画素の明暗の分布を基にして計算される複数の勾配方向ヒストグラムの配列順を、線分の方向に従って決定する。このため、線分の方向を一意に特定することが可能となり、線分の方向情報を用いた線分Matchingの高精度化をはかることが可能となる。
また、画像処理装置100は、線分の両サイドに予め定めた特定範囲の明度の強弱を基準にして、線分の方向を特定する。このため、線分の方向を検出するために別の処理を行う事無く、LEHFの線分特徴の計算結果のみを用いて線分の方向情報を検出できる。これにより、処理時間の短縮を図ることが可能となり,同時に、線分の方向特徴を用いた線分Matchingの高精度化を図ることが可能となる。
また、画像処理装置100は、各線分の類似度およびなす角度を算出し、対応する線分の組みを決定する。このため、対応する線分同士を高精度に対応付けることが可能となる。
次に、上記実施例に示した画像処理装置と同様の機能を実現する画像処理装置を実行するコンピュータの一例について説明する。図9は、画像処理プログラムを実行するコンピュータの一例を示す図である。
図9に示すように、このコンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ディスプレイ203を有する。また、コンピュータ200は、記憶媒体からプログラム等を読取る読み取り装置204と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置205とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM206と、ハードディスク装置207を有する。そして、各装置201〜207は、バス208に接続される。
ハードディスク装置207は、線分検出プログラム207a、線分特徴検出プログラム207b、対応付け検出プログラム207c、3次元構造推定プログラム207d、カメラ位置姿勢推定プログラム207e、出力プログラム207fを有する。CPU201は、各プログラム207a〜207fを読み出してRAM206に展開する。また、ハードディスク装置207は、図示しない3次元構造情報を有する。3次元構造情報は、3次元構造保持部160が保持する情報に対応する。
線分検出プログラム207aは、線分検出プロセス206aとして機能する。線分特徴検出プログラム207bは、線分特徴検出プロセス206bとして機能する。対応付け検出プログラム207cは、対応付け検出プロセス206cとして機能する。3次元構造推定プログラム207dは、3次元構造推定プロセス206dとして機能する。カメラ位置姿勢推定プログラム207eは、カメラ位置姿勢推定プロセス206eとして機能する。出力プログラム207fは、出力プロセス206fとして機能する。
例えば、線分検出プロセス206aは、線分検出部120に対応する。線分特徴検出プロセス206bは、線分特徴検出部130に対応する。対応付け検出プロセス206cは、線分対応付け検出部140に対応する。3次元構造推定プロセス206dは、3次元構造推定部150に対応する。カメラ位置姿勢推定プロセス206eは、カメラ位置・姿勢推定部170に対応する。出力プロセス206fは、出力情報生成部180に対応する。
なお、各プログラム207a〜207fについては、必ずしも最初からハードディスク装置207に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ200がこれらから各プログラム207a〜207fを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)カメラから取得する画像データから線分を検出する線分検出部と、
前記線分検出部に検出される線分周辺の画素の明度の分布と前記線分の方向とを前記線分の特徴として検出する線分特徴検出部と、
3次元空間上の3次元構造物を構成する各線分の配置を示す3次元構造情報を保持する3次元構造保持部と、
前の画像データから検出される線分の特徴と、後の画像データから検出される線分の特徴とを基にして、前の画像データの線分と後の画像データの線分との対応関係を検出し、
画像データから検出される線分の特徴と前記3次元構造情報とを基にして、該画像データから検出される線分と、前記3次元空間上の線分との対応関係を検出する対応付け検出部と
を有することを特徴とする画像処理装置。
(付記2)前記対応付け検出部に検出される対応関係を基にして、前記線分に対応する3次元構造を推定する3次元構造推定部と、前記3次元構造推定部の推定結果と、前記対応付け検出部に検出される対応関係とを基にして、前記カメラの位置および姿勢を推定するカメラ位置姿勢推定部と、前記カメラ位置姿勢推定部に推定されるカメラの位置および姿勢を基にして、前記画像データに所定の画像を重畳表示する出力部とを有することを特徴とする付記1に記載の画像処理装置。
(付記3)前記線分特徴検出部は、前記線分の周辺範囲の画素の明暗の分布を基にして前記線分の方向を特定し、前記線分上および前記線分周辺の画素の明暗の分布を基にして計算される複数の勾配方向ヒストグラムの配列順を、前記線分の方向に従って決定することで前記線分の特徴を検出することを特徴とする付記1または2に記載の画像処理装置。
(付記4)前記線分特徴検出部は、前記線分の両サイドに予め定めた特定範囲の明度の強弱を基準にして、前記線分の方向を特定することを特徴とする付記3に記載の画像処理装置。
(付記5)前記線分特徴検出部は、前記線分上の画素の明暗の分布を基にして計算される勾配方向毎のヒストグラムを基にして、前記線分の方向を特定することを特徴とする付記3に記載の画像処理装置。
(付記6)前記対応付け検出部は、前の画像データの線分を後の画像データに投影し、後の画像データの第1の線分と、該第1の線分の周辺に位置する投影した1ないし複数の第2の線分との特徴を基にして、第1の線分および第2の線分の類似度を算出し、前記第1の線分と前記第2の線分とのなす角度を算出し、前記類似度と前記なす角度とを基にして、対応する線分を検出することを特徴とする付記1に記載の画像処理装置。
(付記7)前記対応付け検出部は、3次元構造情報に含まれる線分を画像データに投影し、画像データの第1の線分と、投影した1ないし複数の第3の線分との特徴を基にして、第1の線分および第3の線分の類似度を算出し、前記第1の線分と前記第3の線分とのなす角度を算出し、前記類似度と前記なす角度とを基にして、対応する線分を検出することを特徴とする付記1に記載の画像処理装置。
(付記8)コンピュータが実行する画像処理方法であって、
カメラから取得する画像データから線分を検出し、
検出した線分周辺の画素の明度の分布と前記線分の方向とを前記線分の特徴として検出し、
3次元構造保持部から、3次元空間上の3次元構造物を構成する各線分の配置を示す3次元構造情報を取得し、
前の画像データから検出される線分の特徴と、後の画像データから検出される線分の特徴とを基にして、前の画像データの線分と後の画像データの線分との対応関係を検出し、
画像データから検出される線分の特徴と前記3次元構造情報とを基にして、該画像データから検出される線分と、前記3次元空間上の線分との対応関係を検出する
各処理を実行することを特徴とする画像処理方法。
(付記9)前記対応関係を基にして、前記線分に対応する3次元構造を推定し、推定結果と、前記対応関係とを基にして、前記カメラの位置および姿勢を推定し、前記カメラの位置および姿勢を基にして、前記画像データに所定の画像を重畳表示する処理を更に実行することを特徴とする付記8に記載の画像処理方法。
(付記10)前記線分の特徴を検出する処理は、前記線分の周辺範囲の画素の明暗の分布を基にして前記線分の方向を特定し、前記線分上および前記線分周辺の画素の明暗の分布を基にして計算される複数の勾配方向ヒストグラムの配列順を、前記線分の方向に従って決定することで前記線分の特徴を検出することを特徴とする付記8または9に記載の画像処理方法。
(付記11)前記線分の特徴を検出する処理は、前記線分の両サイドに予め定めた特定範囲の明度の強弱を基準にして、前記線分の方向を特定することを特徴とする付記10に記載の画像処理方法。
(付記12)前記線分の特徴を検出する処理は、前記線分上の画素の明暗の分布を基にして計算される勾配方向毎のヒストグラムを基にして、前記線分の方向を特定することを特徴とする付記10に記載の画像処理方法。
(付記13)前記対応付ける処理は、前の画像データの線分を後の画像データに投影し、後の画像データの第1の線分と、該第1の線分の周辺に位置する投影した1ないし複数の第2の線分との特徴を基にして、第1の線分および第2の線分の類似度を算出し、前記第1の線分と前記第2の線分とのなす角度を算出し、前記類似度と前記なす角度とを基にして、対応する線分を検出することを特徴とする付記8に記載の画像処理方法。
(付記14)前記対応付ける処理は、3次元構造情報に含まれる線分を画像データに投影し、画像データの第1の線分と、投影した1ないし複数の第3の線分との特徴を基にして、第1の線分および第3の線分の類似度を算出し、前記第1の線分と前記第3の線分とのなす角度を算出し、前記類似度と前記なす角度とを基にして、対応する線分を検出することを特徴とする付記8に記載の画像処理方法。
(付記15)コンピュータに、
カメラから取得する画像データから線分を検出し、
検出した線分周辺の画素の明度の分布と前記線分の方向とを前記線分の特徴として検出し、
3次元構造保持部から、3次元空間上の3次元構造物を構成する各線分の配置を示す3次元構造情報を取得し、
前の画像データから検出される線分の特徴と、後の画像データから検出される線分の特徴とを基にして、前の画像データの線分と後の画像データの線分との対応関係を検出し、
画像データから検出される線分の特徴と前記3次元構造情報とを基にして、該画像データから検出される線分と、前記3次元空間上の線分との対応関係を検出する
各処理を実行させることを特徴とする画像処理プログラム。
(付記16)前記対応関係を基にして、前記線分に対応する3次元構造を推定し、推定結果と、前記対応関係とを基にして、前記カメラの位置および姿勢を推定し、前記カメラの位置および姿勢を基にして、前記画像データに所定の画像を重畳表示する処理を更にコンピュータに実行させることを特徴とする付記15に記載の画像処理プログラム。
(付記17)前記線分の特徴を検出する処理は、前記線分の周辺範囲の画素の明暗の分布を基にして前記線分の方向を特定し、前記線分上および前記線分周辺の画素の明暗の分布を基にして計算される複数の勾配方向ヒストグラムの配列順を、前記線分の方向に従って決定することで前記線分の特徴を検出することを特徴とする付記15または16に記載の画像処理プログラム。
(付記18)前記線分の特徴を検出する処理は、前記線分の両サイドに予め定めた特定範囲の明度の強弱を基準にして、前記線分の方向を特定することを特徴とする付記17に記載の画像処理プログラム。
(付記19)前記線分の特徴を検出する処理は、前記線分上の画素の明暗の分布を基にして計算される勾配方向毎のヒストグラムを基にして、前記線分の方向を特定することを特徴とする付記17に記載の画像処理プログラム。
(付記20)前記対応付ける処理は、前の画像データの線分を後の画像データに投影し、後の画像データの第1の線分と、該第1の線分の周辺に位置する投影した1ないし複数の第2の線分との特徴を基にして、第1の線分および第2の線分の類似度を算出し、前記第1の線分と前記第2の線分とのなす角度を算出し、前記類似度と前記なす角度とを基にして、対応する線分を検出することを特徴とする付記15に記載の画像処理プログラム。
(付記21)前記対応付ける処理は、3次元構造情報に含まれる線分を画像データに投影し、画像データの第1の線分と、投影した1ないし複数の第3の線分との特徴を基にして、第1の線分および第3の線分の類似度を算出し、前記第1の線分と前記第3の線分とのなす角度を算出し、前記類似度と前記なす角度とを基にして、対応する線分を検出することを特徴とする付記15に記載の画像処理プログラム。