(57)【要約】【課題】三次元モデルの投影像を重畳表示させる際の作業負荷を軽減すること。【解決手段】処理部１２は、撮像装置により撮像された構造物を含む撮影画像４０を取得し、構造物の投影像３１，３２，３３，…を記憶部１１から取得する。処理部１２は、投影像３１，３２，３３，…の内、撮影画像４０に含まれる構造物の形状に応じた投影像３２（第１の投影像）を特定し、特定した投影像３２に含まれる三次元モデルの稜線（稜線群５１）と、撮影画像４０から抽出されたエッジ線（エッジ線群５２）とを表示する。処理部１２は、表示した稜線に含まれる所定数の稜線を、表示したエッジ線に含まれる所定数のエッジ線にそれぞれ対応付ける操作を受け付けると、所定数の稜線の位置が、所定数の稜線に対応付けられた所定数のエッジ線の位置にそれぞれ対応する三次元モデルの投影像（第２の投影像）を生成する。処理部１２は、生成した投影像を撮影画像に重畳表示する。【選択図】図１
2020194482.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
撮像装置により撮像された構造物を含む撮影画像を取得し、
前記構造物の三次元モデルから生成された複数の投影像を取得し、
取得した前記複数の投影像の内、取得した前記撮影画像に含まれる前記構造物の形状に応じた第１の投影像を特定し、
特定した前記第１の投影像に含まれる前記三次元モデルの稜線と、前記撮影画像から抽出されたエッジ線とを表示し、
表示した前記稜線に含まれる所定数の稜線を、表示した前記エッジ線に含まれる所定数のエッジ線にそれぞれ対応付ける操作を受け付けると、前記所定数の稜線の位置が、前記所定数の稜線に対応付けられた前記所定数のエッジ線の位置にそれぞれ対応する前記三次元モデルの第２の投影像を生成し、
生成した前記第２の投影像を前記撮影画像に重畳表示する、
ことを特徴とする表示制御方法。
【請求項２】
前記第１の投影像の特定では、前記複数の投影像それぞれの第１のアウトラインを示す情報と前記撮影画像に含まれる前記構造物の第２のアウトラインを示す情報とを比較し、前記第２のアウトラインとの一致の度合いが最も高い前記第１のアウトラインに対応する前記第１の投影像を特定する、請求項１記載の表示制御方法。
【請求項３】
前記第１のアウトラインを示す情報は、前記第１のアウトラインの描画命令を含む第１のテキスト情報であり、前記第２のアウトラインを示す情報は、前記第２のアウトラインの描画命令を含む第２のテキスト情報であり、
前記第１および前記第２のアウトラインを示す情報の比較では、前記第２のテキスト情報と記述内容が一致する度合いが最も高い前記第１のテキスト情報に対応する前記第１の投影像を特定する、
請求項２記載の表示制御方法。
【請求項４】
前記第１および前記第２のテキスト情報の記述内容の比較では、複数の描画命令それぞれの前記第１のテキスト情報における出現位置を示す転置インデックスに基づいて、前記第１および前記第２のテキスト情報それぞれに含まれる描画命令と前記描画命令の出現順序とを比較する、請求項３記載の表示制御方法。
【請求項５】
前記コンピュータが、更に、前記撮影画像を取得すると、前記撮影画像に含まれる前記構造物の形状を表すアウトライン候補の線を表示し、前記撮影画像における前記アウトライン候補の線の抽出範囲の指定、または、前記アウトライン候補の線を補完する線の入力を受け付ける、請求項１乃至４の何れか１項に記載の表示制御方法。
【請求項６】
コンピュータに、
撮像装置により撮像された構造物を含む撮影画像を取得し、
前記構造物の三次元モデルから生成された複数の投影像を取得し、
取得した前記複数の投影像の内、取得した前記撮影画像に含まれる前記構造物の形状に応じた第１の投影像を特定し、
特定した前記第１の投影像に含まれる前記三次元モデルの稜線と、前記撮影画像から抽出されたエッジ線とを表示し、
表示した前記稜線に含まれる所定数の稜線を、表示した前記エッジ線に含まれる所定数のエッジ線にそれぞれ対応付ける操作を受け付けると、前記所定数の稜線の位置が、前記所定数の稜線に対応付けられた前記所定数のエッジ線の位置にそれぞれ対応する前記三次元モデルの第２の投影像を生成し、
生成した前記第２の投影像を前記撮影画像に重畳表示する、
処理を実行させることを特徴とする表示制御プログラム。
【請求項７】
構造物の三次元モデルから生成された複数の投影像を記憶する記憶部と、
撮像装置により撮像された前記構造物を含む撮影画像を取得し、前記構造物の前記複数の投影像を前記記憶部から取得し、取得した前記複数の投影像の内、取得した前記撮影画像に含まれる前記構造物の形状に応じた第１の投影像を特定し、特定した前記第１の投影像に含まれる前記三次元モデルの稜線と、前記撮影画像から抽出されたエッジ線とを表示し、表示した前記稜線に含まれる所定数の稜線を、表示した前記エッジ線に含まれる所定数のエッジ線にそれぞれ対応付ける操作を受け付けると、前記所定数の稜線の位置が、前記所定数の稜線に対応付けられた前記所定数のエッジ線の位置にそれぞれ対応する前記三次元モデルの第２の投影像を生成し、生成した前記第２の投影像を前記撮影画像に重畳表示する処理部と、
を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は表示制御方法、表示制御プログラムおよび情報処理装置に関する。
【背景技術】
【０００２】
種々の構造物の設計に三次元ＣＡＤ（Computer Aided Design）が用いられている。また、製造者などのユーザは、検品などの作業において、製造された構造物が設計通りに製造されているか否かを確認することがある。そこで、情報処理技術により、ユーザの検品などの作業を支援することが考えられている。例えば、製作された構造物を撮像した撮像画像と、三次元ＣＡＤの構造物のモデルとを重畳表示する表示制御装置の提案がある。
【０００３】
なお、三次元モデルが特定の視点に基づいて仮想平面に写像された場合の輪郭に含まれる複数の位置を表す特徴情報と、複数の位置に対応する三次元における位置と、を対応付けたテンプレートを特定の視点ごとに作成する情報処理装置の提案もある。提案の情報処理装置は、対象物の撮像画像におけるエッジを表す特徴情報と、テンプレートの特徴情報とに基づいて、対象物の三次元での位置および姿勢を導出する。
【０００４】
また、プラント建設用の製品資材の形状寸法、配置角度等を非接触で測定し、測定した情報から得られる製品資材の物体境界情報と、予め設計時に作成しておいた三次元モデル情報を照合するプラント建設支援装置の提案もある。提案のプラント建設支援装置は、照合により製品資材の個体認識番号を取得して、プラント建設用の製品資材のプラント建設サイトへの到着を判定する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１８−１４２１０９号公報
【特許文献２】特開２０１７−１８２２７４号公報
【特許文献３】特開２０１２−１８０１９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
情報処理装置により、構造物の撮影画像と当該構造物に対応する三次元モデルとを画面に表示し、三次元モデルの姿勢を変更させるユーザの操作に応じて、表示中の三次元モデルの姿勢を変更して、構造物の撮影画像と三次元モデルとを対比可能にすることがある。この場合、三次元モデルを最初に表示するときの三次元モデルの姿勢が問題になる。
【０００７】
例えば、予め定められた特定の初期姿勢で三次元モデルを表示することも考えられる。しかし、撮影画像における構造物の姿勢と、三次元モデルの初期姿勢との乖離の度合いが大きいほど、両者の対比を適切に行うための、ユーザによる三次元モデルの姿勢変更の操作が難しくなる。
【０００８】
１つの側面では、本発明は、三次元モデルの投影像を重畳表示させる際の作業負荷を軽減できる表示制御方法、表示制御プログラムおよび情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、表示制御方法が提供される。この表示制御方法では、コンピュータが、撮像装置により撮像された構造物を含む撮影画像を取得し、構造物の三次元モデルから生成された複数の投影像を取得し、取得した複数の投影像の内、取得した撮影画像に含まれる構造物の形状に応じた第１の投影像を特定し、特定した第１の投影像に含まれる三次元モデルの稜線と、撮影画像から抽出されたエッジ線とを表示し、表示した稜線に含まれる所定数の稜線を、表示したエッジ線に含まれる所定数のエッジ線にそれぞれ対応付ける操作を受け付けると、所定数の稜線の位置が、所定数の稜線に対応付けられた所定数のエッジ線の位置にそれぞれ対応する三次元モデルの第２の投影像を生成し、生成した第２の投影像を撮影画像に重畳表示する、処理を実行する。
【００１０】
また、１つの態様では、表示制御プログラムが提供される。
また、１つの態様では、情報処理装置が提供される。
【発明の効果】
【００１１】
１つの側面では、三次元モデルの投影像を重畳表示させる際の作業負荷を軽減できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の情報処理装置を示す図である。
【図２】第２の実施の形態の情報処理装置のハードウェア例を示す図である。
【図３】情報処理装置の機能例を示す図である。
【図４】姿勢候補テーブルの例を示す図である。
【図５】姿勢候補画像の例を示す図である。
【図６】転置インデックステーブルの例を示す図である。
【図７】撮影画像の例を示す図である。
【図８】撮影画像に含まれるアウトラインの例を示す図である。
【図９】姿勢候補画像に含まれるエッジの例を示す図である。
【図１０】姿勢候補画像のアウトライン上の点の例を示す図である。
【図１１】各姿勢候補画像に含まれる線分の例を示す図である。
【図１２】視線方向に応じたアウトラインの変化の例を示す図である。
【図１３】姿勢候補の絞込み例を示す図である。
【図１４】姿勢候補の絞込み例（続き）を示す図である。
【図１５】ＰｏｓｔＳｃｒｉｐｔに対する転置インデックスの例を示す図である。
【図１６】転置インデックスのハッシュ化の例を示す図である。
【図１７】転置インデックスのハッシュ値の例を示す図である。
【図１８】転置インデックスの復元例を示す図である。
【図１９】転置インデックスの絞込み例を示す図である。
【図２０】アウトラインの誤検出の例を示す図である。
【図２１】アウトラインの誤検出時の修正例を示す図である。
【図２２】アウトライン抽出の例を示すフローチャートである。
【図２３】姿勢候補の絞込み例を示すフローチャートである。
【図２４】３Ｄモデル重畳制御例を示すフローチャートである。
【図２５】姿勢候補画像の初期表示例を示す図である。
【図２６】姿勢候補画像の初期表示の比較例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１４】
図１は、第１の実施の形態の情報処理装置を示す図である。
情報処理装置１０は、構造物の撮影画像と三次元モデルとの対比を支援する。情報処理装置１０は、表示装置２０に接続される。情報処理装置１０は、記憶部１１および処理部１２を有する。
【００１５】
記憶部１１は、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部１２は、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。処理部１２はプログラムを実行するプロセッサであってもよい。「プロセッサ」は、複数のプロセッサの集合（マルチプロセッサ）を含み得る。
【００１６】
記憶部１１は、構造物の三次元モデルから生成された複数の投影像を記憶する。例えば、記憶部１１は、対象の構造物の三次元モデルから生成された投影像３１，３２，３３，…を記憶する。投影像３１，３２，３３，…は、三次元モデルの姿勢を回転角度Ａ１、仰角Ａ２刻みで変化させたときの、三次元モデルから生成された二次元画像である。投影像３１，３２，３３，…の座標系（例えば、横方向をｘ軸、縦方向をｙ軸とする）は、予め正規化される。投影像３１，３２，３３の原点位置は所定の位置（例えば各画像の中心）となる。
【００１７】
処理部１２は、撮像装置により撮像された構造物を含む撮影画像を取得する。図１では撮像装置の図示を省略している。例えば、処理部１２は、撮影画像４０を取得する。撮影画像４０は、構造物画像４１を含む。構造物画像４１は、撮像装置により撮像された構造物の画像である。構造物画像４１は、撮像した方向から見たときの構造物の形状を示す画像であるとも言える。
【００１８】
処理部１２は、構造物の三次元モデルから生成された複数の投影像を取得する。例えば、処理部１２は、構造物画像４１に対応する構造物の三次元モデルから生成された投影像３１，３２，３３，…を記憶部１１から取得する。
【００１９】
処理部１２は、取得した複数の投影像の内、取得した撮影画像に含まれる構造物の形状に応じた第１の投影像を特定する。例えば、処理部１２は、投影像３１，３２，３３，…の内、撮影画像４０に含まれる構造物の形状に応じた投影像３２を特定する。
【００２０】
より具体的には、処理部１２は、撮影画像４０の座標系を、投影像３１，３２，３３，…の座標系に合わせて正規化する。撮影画像４０の原点位置は、投影像３１，３２，３３，…それぞれの原点位置に対応する位置となる。処理部１２は、正規化した撮影画像４０から構造物画像４１に含まれるエッジの位置、エッジの延びる方向、および、曲線の位置などを抽出する。処理部１２は、構造物画像４１から抽出したエッジの位置、エッジの延びる方向、および、曲線の位置などを、投影像３１，３２，３３，…それぞれに含まれる稜線の位置、稜線の延びる方向、および、曲線の位置と照合する。処理部１２は、投影像３１，３２，３３，…のうち、照合により、構造物画像４１と最も良く一致する投影像３２を特定する。
【００２１】
処理部１２による照合の方法には種々の方法が考えられる。例えば、処理部１２は、ページ記述言語（ＰＤＬ：Page Description Language）で表されたデータ（ＰＤＬデータ）を用いて照合を行ってもよい。ＰＤＬは、画像をテキスト情報で表現するデータ形式である。ＰＤＬの一例として、ＰｏｓｔＳｃｒｉｐｔ（登録商標）が挙げられる。処理部１２は、構造物画像４１に基づく構造物の形状を表すＰＤＬデータと、投影像３１，３２，３３，…それぞれに基づく三次元モデルの形状を表すＰＤＬデータとを照合することで、構造物画像４１と最も良く一致する投影像３２を特定してもよい。ＰＤＬデータを用いて照合を行うことで、画像データを用いて照合を行うよりも、照合を高速に実行できる。
【００２２】
あるいは、処理部１２は、ＰＤＬデータの転置インデックスを照合に用いてもよい。例えば、処理部１２は、投影像３１，３２，３３，…それぞれのＰＤＬデータに対して転置インデックスを作成しておくことが考えられる。処理部１２は、転置インデックスに基づいて、投影像３１，３２，３３，…それぞれのＰＤＬデータのうち、構造物画像４１のＰＤＬデータと記述内容が類似する、投影像に対応するＰＤＬデータを検索してもよい。転置インデックスを用いることで、より高速に照合を実行できる。
【００２３】
更に、処理部１２は、構造物画像４１と投影像３１，３２，３３，…との比較にＰＤＬデータを用いる場合、構造物画像４１における構造物の形状のアウトラインや投影像３１，３２，３３，…それぞれに基づく三次元モデルの形状のアウトラインに対応するＰＤＬデータを作成してもよい。アウトラインに対応するＰＤＬデータを用いることで、アウトライン以外のエッジを用いるよりも高精度に照合を行える。なお、処理部１２は、ＰＤＬデータを用いない場合に、両画像のウトライン同士の比較を行ってもよい。
【００２４】
処理部１２は、特定した投影像に含まれる三次元モデルの稜線と、撮影画像から抽出されたエッジ線とを表示する。例えば、処理部１２は、表示画像５０を表示装置２０に表示させる。表示画像５０は、稜線群５１とエッジ線群５２とを含む。稜線群５１は、投影像３２に含まれる三次元モデルの稜線の集合である。エッジ線群５２は、撮影画像４０から抽出された構造物画像４１のエッジ線の集合である。
【００２５】
処理部１２は、表示した稜線に含まれる所定数の稜線を、表示したエッジ線に含まれる所定数のエッジ線にそれぞれ対応付ける操作を受け付ける。例えば、情報処理装置１０は、入力装置（図示を省略している）に接続される。ユーザは、入力装置を用いて、表示された稜線と表示されたエッジ線とを対応付ける操作を行える。例えば、ユーザは、表示画像５０を見ながら、稜線群５１に含まれる所定数の稜線を、エッジ線群５２に含まれる所定数のエッジ線にそれぞれ対応付ける操作を行える。処理部１２は、入力装置を介して、稜線とエッジ線とを対応付ける、ユーザの操作を受け付ける。
【００２６】
処理部１２は、所定数の稜線の位置が、所定数の稜線に対応付けられた所定数のエッジ線の位置にそれぞれ対応する三次元モデルの第２の投影像を生成する。処理部１２は、生成した第２の投影像を撮影画像に重畳表示する。図１では第２の投影像の図示を省略している。これにより、ユーザは、実際に製造された構造物の画像と、三次元モデルの画像とを比較可能となり、製造された構造物が設計通りに製造されているか否かを確認できる。
【００２７】
情報処理装置１０によれば、撮像装置により撮像された構造物を含む撮影画像が取得される。構造物の三次元モデルから生成された複数の投影像が取得される。取得された複数の投影像の内、取得した撮影画像に含まれる構造物の形状に応じた第１の投影像が特定される。特定された第１の投影像に含まれる三次元モデルの稜線と、撮影画像から抽出されたエッジ線とが表示される。表示された稜線に含まれる所定数の稜線を、表示されたエッジ線に含まれる所定数のエッジ線にそれぞれ対応付ける操作が受け付けられる。所定数の稜線の位置が、所定数の稜線に対応付けられた所定数のエッジ線の位置にそれぞれ対応する三次元モデルの第２の投影像が生成される。生成した第２の投影像が撮影画像に重畳表示される。
【００２８】
これにより、三次元モデルの投影像を重畳表示させる際の作業負荷を軽減できる。
例えば、予め定められた特定の初期姿勢で三次元モデルを表示することも考えられる。しかし、撮影画像における構造物の姿勢と、三次元モデルの初期姿勢との乖離の度合いが大きいほど、両者の対比を適切に行うための、ユーザによる三次元モデルの姿勢変更の操作が難しくなる。
【００２９】
そこで、情報処理装置１０は、撮像された構造物の姿勢に近い初期姿勢の三次元モデルの投影像（第１の投影像）を特定し、特定した投影像を表示することで、撮影画像における構造物の姿勢と、三次元モデルの初期姿勢との乖離を小さくする。このため、ユーザは、例えば、表示画像５０において、三次元モデルの初期姿勢に対応する稜線群５１の所定数の稜線を、エッジ線群５２に含まれる所定数のエッジ線に対応付ける操作を行うことも可能である。すなわち、ユーザは、三次元モデルの初期姿勢を、ユーザ自身の操作によって変更しなくてもよい。このように、ユーザによる操作を省略可能にすることで、ユーザの作業負荷を軽減できる。
【００３０】
また、三次元モデルの稜線と、撮影画像から抽出されたエッジ線とのユーザによる対応付け操作を適切に行えるようになるので、撮影画像に写り込んだ構造物の姿勢に対して、当該姿勢に対応する第２の投影像を適切に生成し、重畳表示することが可能になる。こうして、情報処理装置１０は、三次元モデルと製造された構造物との差異のユーザによる確認作業を容易に行えるように支援できる。
【００３１】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図２は、第２の実施の形態の情報処理装置のハードウェア例を示す図である。
【００３２】
情報処理装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、出力ＩＦ（InterFace）１０４、入力ＩＦ１０５，１０６、媒体リーダ１０７およびＮＩＣ（Network Interface Card）１０８を有する。なお、ＣＰＵ１０１は、第１の実施の形態の処理部１２に対応する。ＲＡＭ１０２またはＨＤＤ１０３は、第１の実施の形態の記憶部１１に対応する。
【００３３】
ＣＰＵ１０１は、プログラムの命令を実行するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを含んでもよい。また、情報処理装置１００は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【００３４】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、情報処理装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００３５】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、情報処理装置１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００３６】
出力ＩＦ１０４は、ＣＰＵ１０１からの命令に従って、情報処理装置１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなど、任意の種類のディスプレイを用いることができる。
【００３７】
入力ＩＦ１０５は、情報処理装置１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、情報処理装置１００に、複数の種類の入力デバイスが接続されていてもよい。
【００３８】
入力ＩＦ１０６は、ＣＰＵ１０１からの命令に従って、情報処理装置１００に接続されたカメラ１１３から、カメラ１１３により撮像された画像データを取得し、ＲＡＭ１０２やＨＤＤ１０３に格納する。カメラ１１３は、製造された物体（構造物）を撮像する撮像装置である。カメラ１１３は、ステレオカメラでもよい。
【００３９】
媒体リーダ１０７は、記録媒体１１４に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１４として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００４０】
媒体リーダ１０７は、例えば、記録媒体１１４から読み取ったプログラムやデータを、ＲＡＭ１０２やＨＤＤ１０３などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ１０１によって実行される。なお、記録媒体１１４は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体１１４やＨＤＤ１０３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【００４１】
ＮＩＣ１０８は、ネットワーク１１５に接続され、ネットワーク１１５を介して他のコンピュータと通信を行うインタフェースである。ＮＩＣ１０８は、例えば、ネットワーク１１５に属するスイッチやルータなどの通信装置とケーブルで接続される。
【００４２】
図３は、情報処理装置の機能例を示す図である。
情報処理装置１００は、ＣＡＤデータ記憶部１２０、姿勢候補データ記憶部１３０、転置インデックス記憶部１４０、撮影画像記憶部１５０、姿勢候補管理部１６０および表示制御部１７０を有する。
【００４３】
ＣＡＤデータ記憶部１２０、姿勢候補データ記憶部１３０、転置インデックス記憶部１４０および撮影画像記憶部１５０は、ＲＡＭ１０２やＨＤＤ１０３の記憶領域を用いて実現される。姿勢候補管理部１６０および表示制御部１７０は、ＲＡＭ１０２に記憶されたプログラムがＣＰＵ１０１により実行されることで実現される。
【００４４】
ＣＡＤデータ記憶部１２０は、三次元モデルのＣＡＤデータを記憶する。以下では、三次元モデルを「３Ｄ（Dimensions）モデル」と略記することがある。ＣＡＤデータは、構造物（製品）の設計工程において、ＣＡＤソフトウェアにより生成され、ＣＡＤデータ記憶部１２０に予め格納される。
【００４５】
姿勢候補データ記憶部１３０は、３Ｄモデルの姿勢候補データを記憶する。姿勢候補データは、複数の姿勢候補画像を含む。姿勢候補画像は、３Ｄモデルを様々な方向から眺めて３Ｄモデルを写した二次元画像（２Ｄ画像）である。
【００４６】
転置インデックス記憶部１４０は、複数の姿勢候補画像それぞれに基づいて作成された転置インデックスを記憶する。転置インデックスは、姿勢候補画像から作成されたＰＤＬデータに基づいて作成される。第２の実施の形態では、ＰＤＬの一例として、ＰｏｓｔＳｃｒｉｐｔを想定する。ただし、ＰｏｓｔＳｃｒｉｐｔ以外の他のＰＤＬでもよい。
【００４７】
撮影画像記憶部１５０は、カメラ１１３により撮像された撮影画像を記憶する。
姿勢候補管理部１６０は、ＣＡＤデータ記憶部１２０に記憶されたＣＡＤデータに基づいて、複数の姿勢候補画像および姿勢候補画像毎の転置インデックスを生成する。姿勢候補管理部１６０は、姿勢候補データ生成部１６１、第１ＰＤＬデータ生成部１６２および転置インデックス生成部１６３を有する。
【００４８】
姿勢候補データ生成部１６１は、ＣＡＤデータ記憶部１２０に記憶されたＣＡＤデータに基づいて、３Ｄモデルの姿勢を、所定の回転角度、所定の仰角刻みで変更したときの複数の姿勢候補画像を生成する。姿勢候補データ生成部１６１は、姿勢候補画像を、３Ｄモデルの回転角、仰角に対応付けて、姿勢候補データ記憶部１３０に格納する。
【００４９】
第１ＰＤＬデータ生成部１６２は、姿勢候補データ記憶部１３０に記憶された姿勢候補画像に基づいて、姿勢候補画像に含まれる３Ｄモデルの形状を表すＰＤＬデータ（本例ではＰｏｓｔＳｃｒｉｐｔデータ）を生成する。第１ＰＤＬデータ生成部１６２は、姿勢候補画像から３Ｄモデルの形状のアウトラインを抽出し、アウトラインに対応するＰＤＬデータを生成する。第１ＰＤＬデータ生成部１６２は、生成したＰＤＬデータを、転置インデックス記憶部１４０に格納する。
【００５０】
ここで、アウトラインに着目する理由は、構造物の内側に存在するエッジは撮影位置によって取得できる場合と取得できない場合とがあるが、検査対象の構造物とそれ以外のものとの境界線であるアウトラインは必ず存在し、比較的精度良く取得できるためである。このため、アウトラインに対応するＰＤＬデータを用いることで、後述される姿勢候補の絞込みの精度を向上させることができる。
【００５１】
転置インデックス生成部１６３は、第１ＰＤＬデータ生成部１６２により生成されたＰＤＬデータに基づいて、転置インデックスを生成する。転置インデックス生成部１６３は、生成元のＰＤＬデータまたは姿勢候補画像に対応付けて、生成した転置インデックスを転置インデックス記憶部１４０に格納する。
【００５２】
表示制御部１７０は、ユーザにより検品作業などが行われる際に、カメラ１１３により撮像された撮影画像に含まれる構造物画像と、当該構造物の３Ｄモデルとをディスプレイ１１１に表示させることで、ユーザの作業を支援する。例えば、撮影画像に重ねて３Ｄモデルなどの画像を表示させる技術は、ＡＲ（Augmented Reality）と呼ばれる。表示制御部１７０は、第２ＰＤＬデータ生成部１７１、検索部１７２および表示処理部１７３を有する。
【００５３】
第２ＰＤＬデータ生成部１７１は、撮影画像に含まれる構造物画像の形状を表すＰＤＬデータ（本例ではＰｏｓｔＳｃｒｉｐｔデータ）を生成する。第２ＰＤＬデータ生成部１７１は、構造物画像から構造物の形状のアウトラインを抽出し、アウトラインに対応するＰＤＬデータを生成する。第２ＰＤＬデータ生成部１７１は、生成したＰＤＬデータを、検索部１７２に提供する。第２ＰＤＬデータ生成部１７１は、生成したＰＤＬデータを、撮影画像記憶部１５０に格納してもよい。
【００５４】
検索部１７２は、転置インデックス記憶部１４０に記憶されたＰＤＬデータまたは転置インデックスに基づいて、第２ＰＤＬデータ生成部１７１により生成されたＰＤＬデータに最も良く一致する３Ｄモデルの姿勢のＰＤＬデータまたは転置インデックスを検索する。検索部１７２は、検索したＰＤＬデータまたは転置インデックスに対応する３Ｄモデルの識別情報を、表示処理部１７３に提供する。
【００５５】
表示処理部１７３は、検索部１７２から取得した識別情報に対応する姿勢候補画像（初期姿勢の姿勢候補画像）を姿勢候補データ記憶部１３０から取得する。表示処理部１７３は、撮影画像記憶部１５０に記憶された撮影画像に含まれる構造物画像と、取得した姿勢候補画像とをディスプレイ１１１により表示させる。
【００５６】
表示処理部１７３は、撮影画像に含まれる構造物画像のエッジ（エッジ線と言うこともある）と、姿勢候補画像に含まれるエッジとを対応付けるユーザの操作を受け付ける。表示処理部１７３は、ＣＡＤデータ記憶部１２０に記憶されたＣＡＤデータに基づいて、姿勢候補画像におけるエッジの位置が、当該エッジに対応付けられた撮影画像内のエッジの位置にそれぞれ対応する３Ｄモデルの投影像を生成する。表示処理部１７３は、生成した投影像を撮影画像に重畳表示する。
【００５７】
図４は、姿勢候補テーブルの例を示す図である。
姿勢候補テーブル１３１は、姿勢候補データ記憶部１３０に記憶される姿勢候補データの一例である。姿勢候補テーブル１３１は、姿勢候補データ生成部１６１により生成される。姿勢候補テーブル１３１は、姿勢候補ＩＤ（IDentifier）、回転角、仰角および姿勢候補画像の項目を含む。
【００５８】
姿勢候補ＩＤの項目には、姿勢候補の識別情報である姿勢候補ＩＤが登録される。回転角の項目には、姿勢候補に対応する３Ｄモデルの回転角の情報が登録される。回転角は、例えば、３Ｄモデルが設置される水平面上に互いに直交するｘ軸およびｙ軸を定義したとき、ｘ軸およびｙ軸に直交する鉛直方向のｚ軸回りの角度で与えられてもよい。あるいは、回転角は、上記ｘ軸、ｙ軸およびｚ軸それぞれの回りの角度で与えられてもよい。仰角の項目には、姿勢候補に対応する、３Ｄモデルを眺めたときの仰角（３Ｄモデルを見る視線と水平面との角度）の情報が登録される。姿勢候補画像の項目には、３Ｄモデルの姿勢候補の２Ｄ画像（姿勢候補画像）のデータが登録される。
【００５９】
例えば、姿勢候補テーブル１３１には、姿勢候補ＩＤ「１」、回転角「Ｚ１１」、仰角「Ｚ２１」、当該回転角および仰角に対応する姿勢候補画像を含むレコードが登録されている。
【００６０】
一例では、姿勢候補データ生成部１６１は、１つの３Ｄモデルに対して、回転角を３０°刻み、仰角を１５°刻みで、それぞれ変化されたときの姿勢候補画像を生成し、姿勢候補テーブル１３１に登録する。ただし、姿勢候補データ生成部１６１は、更に細かい角度刻み、あるいは粗い角度刻みで、姿勢候補画像を生成して、姿勢候補テーブル１３１に登録してもよい。
【００６１】
次に、姿勢候補データ生成部１６１により生成される姿勢候補画像の例を説明する。
図５は、姿勢候補画像の例を示す図である。
姿勢候補画像Ｐ１〜Ｐ１２は、ある３Ｄモデルについて、仰角４５°に対応する回転角３０°刻みで生成された１２個の姿勢候補画像である。姿勢候補画像Ｐ１は回転角０°の場合である。姿勢候補画像Ｐ２は回転角３０°の場合である。姿勢候補画像Ｐ３は回転角６０°の場合である。以降、同様に、姿勢候補画像Ｐ４〜Ｐ１２も、回転角３０°刻みで変化させた場合の姿勢候補画像となる。ここでは、仰角４５°の場合が例示されているが、仰角０°、１５°、４５°、６０°…それぞれに対して１２個の姿勢候補画像が生成され、姿勢候補テーブル１３１に登録される。
【００６２】
図６は、転置インデックステーブルの例を示す図である。
転置インデックステーブル１４１は、転置インデックス記憶部１４０に記憶される。転置インデックステーブル１４１に登録される情報は、第１ＰＤＬデータ生成部１６２および転置インデックス生成部１６３により生成される。転置インデックステーブル１４１は、姿勢候補ＩＤ、ＰＤＬデータおよび転置インデックスの項目を含む。
【００６３】
姿勢候補ＩＤの項目には、姿勢候補ＩＤが登録される。ＰＤＬデータの項目には、ＰＤＬデータ（本例ではＰｏｓｔＳｃｒｉｐｔデータ）が登録される。ＰＤＬデータは、第１ＰＤＬデータ生成部１６２により姿勢候補画像に基づいて生成される。転置インデックスの項目には、転置インデックスが生成される。転置インデックスは、転置インデックス生成部１６３によりＰＤＬデータに基づいて生成される。
【００６４】
例えば、転置インデックステーブル１４１には、姿勢候補ＩＤ「１」、ＰＤＬデータ「ＰＤＬ−Ｄ１」、転置インデックス「ＩＮＤＥＸ−Ｔ１」を含むレコードが登録されている。転置インデックステーブル１４１には、他の姿勢候補画像に対するＰＤＬデータおよび転置インデックスのレコードも登録される。
【００６５】
次に、例示した３Ｄモデルに対して製造された構造物を撮像した撮影画像の例を説明する。
図７は、撮影画像の例を示す図である。
【００６６】
撮影画像１５１は、製造された構造物がカメラ１１３により撮像されることで、生成される。情報処理装置１００は、カメラ１１３から撮影画像１５１を取得し、撮影画像記憶部１５０に格納する。撮影画像１５１は、構造物画像１５１ａを含む。構造物画像１５１ａは、構造物の２Ｄ画像である。
【００６７】
図８は、撮影画像に含まれるアウトラインの例を示す図である。
アウトライン画像１５２は、アウトライン１５２ａを含む画像である。アウトライン１５２ａは、構造物画像１５１ａの外周のエッジを繋いだ輪郭線である。アウトライン１５２ａは、撮影画像１５１に基づいて、第２ＰＤＬデータ生成部１７１により特定される。例えば、第２ＰＤＬデータ生成部１７１は、撮影画像１５１において画素値が比較的大きく異なる（例えば、画素値に閾値以上の差がある）領域間の境界線を特定することで、撮影画像１５１に含まれるエッジを検出する。第２ＰＤＬデータ生成部１７１は、検出された複数のエッジのうちの幾つかのエッジに囲われた領域を検出し、当該領域を囲う各エッジを繋いだ閉じた線をアウトライン１５２ａとして抽出する。
【００６８】
あるいは、カメラ１１３は、物体を２つの異なる方向から同時に撮影するステレオカメラ（双眼カメラ）、または、左右に可動可能な単眼カメラでもよい。この場合、第２ＰＤＬデータ生成部１７１は、既存の技術によって、カメラ１１３により撮像された２つの撮影画像に基づき、視差による構造物のアウトライン１５２ａの識別を行うこともできる。
【００６９】
次に、第１ＰＤＬデータ生成部１６２により姿勢候補画像から抽出されるエッジの例を説明する。一例として、前述の姿勢候補画像Ｐ２に対するエッジの例を説明する。
図９は、姿勢候補画像に含まれるエッジの例を示す図である。
【００７０】
姿勢候補画像Ｐ２ａは、姿勢候補画像Ｐ２に含まれるエッジのうち、当該姿勢候補に対応する３Ｄモデルの形状のアウトラインＰ２１ａを強調したものである。姿勢候補画像Ｐ２ａのうち、太線で表した線が、アウトラインＰ２１ａに相当する。第１ＰＤＬデータ生成部１６２は、第２ＰＤＬデータ生成部１７１と同様の処理により、姿勢候補画像Ｐ２ａからアウトラインＰ２１ａを抽出する。
【００７１】
姿勢候補画像Ｐ２ｂは、姿勢候補画像Ｐ２に含まれる、アウトラインＰ２１ａに属さないエッジの一部であるエッジＰ２１ｂ，Ｐ２２ｂ，Ｐ２４ｂ，Ｐ２３ｂを強調したものである。姿勢候補画像Ｐ２ｂのうち、太線で表した４つの線分がエッジＰ２１ｂ，Ｐ２２ｂ，Ｐ２４ｂ，Ｐ２３ｂに相当する。ここで、エッジは、３Ｄモデルにおける２つの面により形成される稜線であるとも言える。
【００７２】
図１０は、姿勢候補画像のアウトライン上の点の例を示す図である。
アウトラインＰ２１ａの形状は、アウトラインＰ２１ａ上の点の座標および点間を結ぶ線（線分または曲線）により表される。アウトラインＰ２１ａ上の点として、２つのエッジが接続する点（アウトラインＰ２１ａ上の節点）が用いられる。
【００７３】
例えば、姿勢候補画像Ｐ２に対して、正規化された座標が定義される。姿勢候補画像Ｐ２の横方向の座標をＸ軸とし、左側から右側へ向かう方向をＸ軸の正方向とする。また、姿勢候補画像Ｐ２の縦方向の座標をＹ軸とし、下側から上側へ向かう方向をＹ軸の正方向とする。座標の原点Ｏは、姿勢候補画像Ｐ２における３Ｄモデルの中心の点（例えば、アウトラインＰ２１ａで表される形状の重心など）である。そして、各姿勢候補画像におけるＸ軸方向のサイズ、および、Ｙ軸方向のサイズが一定サイズになるように、姿勢候補画像Ｐ２のＸ軸方向のサイズおよびＹ軸方向のサイズが正規化される。
【００７４】
図８で例示したアウトライン１５２ａについても同様に、姿勢候補画像とサイズが一致するように正規化された座標系を定義し、各点の座標や各点を結ぶ線（線分または曲線）の情報を用いることで、アウトライン１５２ａの形状を表すことができる。例えば、線分であれば線分の位置や線分の延びる方向を含むベクトルの情報、曲線であれば曲線の位置や曲線を定義する制御点の情報を得ることができ、これらの線分や曲線の情報の組み合わせにより、アウトライン１５２ａの形状が表される。
【００７５】
ここで、各姿勢候補画像のアウトラインおよびアウトライン１５２ａに対して、各点および２つの点を結ぶ線の抽出順は、第１ＰＤＬデータ生成部１６２および第２ＰＤＬデータ生成部１７１に予め定められる。第１ＰＤＬデータ生成部１６２および第２ＰＤＬデータ生成部１７１は、それぞれ予め定められた抽出順に従って、アウトラインに対応するＰＤＬデータを生成する。例えば、第１ＰＤＬデータ生成部１６２および第２ＰＤＬデータ生成部１７１は、物体の中心を基準点（原点）として正規化した画像のうち、ＸＹが共に正の領域内に存在する、原点から最も遠い点（始点）から時計回りに各点を辿るようにアウトラインに相当するＰＤＬデータを生成する。ここで、「物体の中心」は、例えば、３Ｄモデルや構造物画像のアウトラインで表される形状の重心などである。
【００７６】
図１０の例では、アウトラインＰ２１ａ上の点として、１２個の点Ａ〜Ｌおよび２個の点α，βが示されている。制御点Ｂ，α，β，Ｃは、点Ｂ，Ｃを端点とするベジェ曲線を表す。この場合、点Ａ〜Ｌおよび点α，βそれぞれの座標と、点Ａ〜Ｌの各点を結ぶ線（線分または曲線）を、アウトラインＰ２１ａの形状を表す情報として用いることができる。例えば、図１０の例では、ＸＹが共に正の領域内に存在する、原点から最も遠い点は、点Ａである。したがって、第１ＰＤＬデータ生成部１６２は、点Ａ，Ｂ，α，β，Ｃ，Ｄ，…，Ｌのように時計回りに、順番に、点および点間を結ぶ線を記述したＰＤＬデータを生成する。
【００７７】
図１１は、各姿勢候補画像に含まれる線分の例を示す図である。
点Ａは、姿勢候補画像Ｐ１〜Ｐ１２それぞれにおける３Ｄモデルのアウトラインの始点である。点Ｂは、姿勢候補画像Ｐ１〜Ｐ１２それぞれにおける始点の次の点である。姿勢候補画像Ｐ１〜Ｐ１２それぞれにおける点Ａ，Ｂを結ぶ線分がアウトラインに対するＰＤＬデータで最初に記述される線分（エッジ）である。
【００７８】
図１１で例示されるように、同じ３Ｄモデルであっても、アウトラインにより表される形状は姿勢候補画像毎に異なる。これは、３Ｄモデルを様々な角度から観察したときの視線方向に対して視認可能な３Ｄモデルのエッジが異なるためである。
【００７９】
図１２は、視線方向に応じたアウトラインの変化の例を示す図である。
例えば、透明でない三角柱の３ＤモデルＶ１を考える。３ＤモデルＶ１は、高さ方向のエッジＶ１１，Ｖ１２，Ｖ１３を有する。観察点ａは、エッジＶ１１，Ｖ１３を含む面に臨む。したがって、観察点ａから３ＤモデルＶ１が観察されたとき、エッジＶ１１，Ｖ１３は観察されるが、エッジＶ１２は観察されない。また、観察点ｂは、エッジＶ１２，Ｖ１３を含む面に臨む。したがって、観察点ｂから３ＤモデルＶ１が観察されたとき、エッジＶ１２，Ｖ１３は観察されるが、エッジＶ１１は観察されない。
【００８０】
図１２の例は単純な形状を例示したが、複雑な形状を有する３Ｄモデルでは、姿勢候補画像毎に、観察可能なエッジが異なるため、姿勢候補画像に対するアウトラインにより表される形状も異なることになる。
【００８１】
検索部１７２は、姿勢候補画像毎のアウトラインに含まれる線分を基に、撮影画像に含まれるアウトラインに類似する姿勢候補画像のアウトラインを特定する。次に、検索部１７２による姿勢候補の絞込み例を説明する。
【００８２】
図１３は、姿勢候補の絞込み例を示す図である。
ここでは、一例として、アウトライン画像１５２に対する姿勢候補画像Ｐ１〜Ｐ１２の絞込みを説明する。アウトライン画像１５２は、アウトライン１５２ａで表される形状の中心を原点として正規化後のＸＹ座標系において、ＸＹが共に正である領域に点Ａ，Ｂを含む。姿勢候補画像Ｐ１〜Ｐ１２のうち、正規化後のＸＹ座標系において、ＸＹが共に正である領域に点Ａ，Ｂが含まれている姿勢候補画像は、姿勢候補画像Ｐ２，Ｐ６〜Ｐ９である。
【００８３】
したがって、検索部１７２は、姿勢候補画像Ｐ１〜Ｐ１２から姿勢候補画像Ｐ２，Ｐ６〜Ｐ９に絞り込む。検索部１７２は、姿勢候補画像Ｐ１，Ｐ３〜Ｐ５，Ｐ１０〜Ｐ１２を候補から除外する。
【００８４】
図１４は、姿勢候補の絞込み例（続き）を示す図である。
アウトライン画像１５２は、正規化後のＸＹ座標系において、ＸＹが共に正である領域に、端点として点Ｂ，Ｃを含み、点Ｂ，Ｃ以外に点α，βを制御点とする曲線を含む。姿勢候補画像Ｐ２，Ｐ６〜Ｐ９のうち、正規化後のＸＹ座標系において、ＸＹが共に正である領域に、端点として点Ｂ，Ｃを含み、点Ｂ，Ｃ以外に点α，βを制御点とする曲線を含む姿勢候補画像は、姿勢候補画像Ｐ２である。
【００８５】
したがって、検索部１７２は、姿勢候補画像Ｐ２，Ｐ６〜Ｐ９から姿勢候補画像Ｐ２に絞り込む。検索部１７２は、姿勢候補画像Ｐ６〜Ｐ９を候補から除外する。
こうして、検索部１７２は、姿勢候補画像Ｐ１〜Ｐ１２の中から、アウトライン１５２ａに最も良く類似する３Ｄモデルのアウトラインに対応する姿勢候補画像Ｐ２を特定する。
【００８６】
検索部１７２は、図１３，図１４で例示した照合を、アウトラインに対応するＰＤＬデータまたはＰＤＬデータの転置インデックスを用いて行える。次に、ＰＤＬデータとして、ＰｏｓｔＳｃｒｉｐｔデータを用いる場合の転置インデックスの例を説明する。ただし、ＰｏｓｔＳｃｒｉｐｔに限定されるものではなく、ＰｏｓｔＳｃｒｉｐｔ以外の形式のＰＤＬデータでもよい。
【００８７】
図１５は、ＰｏｓｔＳｃｒｉｐｔに対する転置インデックスの例を示す図である。
図１５に示す例では、アウトライン２００のＰｏｓｔＳｃｒｉｐｔデータを生成する場合を説明する。アウトライン２００は、線分２０１、曲線２０２、線分２０３および線分２０４により形成される。線分２０１は、点Ａ，Ｂを端点とする線分である。曲線２０２は点Ｂ，Ｃを端点とする曲線であり、制御点Ｂ，Ｃ，α，βにより曲線の形状が決定されるベジェ曲線である。
【００８８】
第１ＰＤＬデータ生成部１６２および第２ＰＤＬデータ生成部１７１は、点Ａ，Ｂ，Ｃ，Ｄ，α，βを基にして、アウトライン２００のＰｏｓｔＳｃｒｉｐｔデータ２１０を生成する。ＰｏｓｔＳｃｒｉｐｔデータ２１０は、ＰＤＬデータの一例である。
【００８９】
ＰｏｓｔＳｃｒｉｐｔデータ２１０は、パラメータ「Ｘａ，Ｙａ」、「Ｘｂ，Ｙｂ」、「Ｘα，Ｙα」、「Ｘβ，Ｙβ」、「Ｘｃ，Ｙｃ」を含む。「Ｘａ，Ｙａ」は、点Ａの座標を示す。「Ｘｂ，Ｙｂ」は、点Ｂの座標を示す。「Ｘα，Ｙα」は、点αの座標を示す。「Ｘβ，Ｙβ」は、点βの座標を示す。「Ｘｃ，Ｙｃ」は、点Ｃの座標を示す。
【００９０】
ＰｏｓｔＳｃｒｉｐｔデータ２１０は、複数の種類のコマンドを含む。具体的には、コマンド「ｎｅｗｐａｔｈ」、「ｍｏｖｅｔｏ」、「ｌｉｎｅｔｏ」、「ｃｕｒｖｅｔｏ」、「ｓｔｒｏｋｅ」、「ｓｈｏｗｐａｇｅ」である。コマンドは、制御文と呼ばれてもよい。
【００９１】
転置インデックス生成部１６３は、ＰｏｓｔＳｃｒｉｐｔデータ２１０に含まれる文字列を、上段の行から順番に読み込み、読み込んだ文字列を並べることで、ＰｏｓｔＳｃｒｉｐｔ変換データ２２０を生成する。
【００９２】
転置インデックス生成部１６３は、ＰｏｓｔＳｃｒｉｐｔ変換データ２２０に含まれるコマンドまたは座標と、当該コマンド又は座標の出現位置とに基づいて、転置インデックス２３０を生成する。転置インデックス２３０の横軸は、オフセットに対応する値である。転置インデックス２３０の縦軸は、コマンドまたは座標に対応する軸である。
【００９３】
オフセットは、ＰｏｓｔＳｃｒｉｐｔ変換データ２２０の先頭からの位置を示す。ＰｏｓｔＳｃｒｉｐｔ変換データ２２０の先頭位置のオフセットを「０」とし、その後は、コマンドまたは座標の単位で、オフセットに１が加算される。例えば、ＰｏｓｔＳｃｒｉｐｔ変換データ２２０の例では、「ｎｅｗｐａｔｈ」、「Ｘａ，Ｙａ」、「ｍｏｖｅｔｏ」、…のオフセットは、それぞれ、「０」、「１」、「２」、…となる。
【００９４】
転置インデックス生成部１６３は、ＰｏｓｔＳｃｒｉｐｔ変換データ２２０を走査して、「オフセット」と、「コマンドまたは座標」との対応関係を特定する。転置インデックス生成部１６３は、特定した「オフセット」と、「コマンドまたは座標」の対応関係を基に、転置インデックス２３０にフラグ「１」を設定する。転置インデックス２３０のフラグ「１」以外の箇所は、「０」となる。
【００９５】
例えば、ＰｏｓｔＳｃｒｉｐｔ変換データ２２０のオフセット「０」には、コマンド「ｎｅｗｐａｔｈ」が出現する。このため、転置インデックス生成部１６３は、転置インデックスのオフセット「０」と、コマンド「ｎｅｗｐａｔｈ」とが交差する位置に、フラグ「１」を設定する。転置インデックス生成部１６３は、ＰｏｓｔＳｃｒｉｐｔ変換データ２２０に含まれるコマンドまたは座標を、オフセット「０」から順に辿り、上記の処理を繰り返し実行することで、転置インデックス２３０を生成する。
【００９６】
転置インデックス生成部１６３は、転置インデックスをハッシュ化することで、転置インデックスのデータサイズを小さくしてもよい。例えば、転置インデックス生成部１６３は、ビットマップの折り返し技術を用いて、転置インデックスを素数（底）でハッシュ化し得る。
【００９７】
図１６は、転置インデックスのハッシュ化の例を示す図である。
図１６で説明する例では、３２ビットレジスタを想定する。例えば、転置インデックス生成部１６３は、情報処理装置１００が有する３２ビットのレジスタを用いて、転置インデックスのハッシュ化を行える。また、一例として、転置インデックス生成部１６３は、「２９」と「３１」の素数（底）を基に、転置インデックスの各行のビットマップをハッシュ化するものとする。ここでは、ビットマップｂ１から、ハッシュ化ビットマップｈ１１およびハッシュ化ビットマップｈ１２を生成する場合について説明する。
【００９８】
ビットマップｂ１は、転置インデックス（例えば、図１５に示した転置インデックス２３０）のある行を抽出したビットマップを示すものとする。ハッシュ化ビットマップｈ１１は、底「２９」によりハッシュ化されたビットマップである。ハッシュ化ビットマップｈ１２は、底「３１」によりハッシュ化されたビットマップである。
【００９９】
転置インデックス生成部１６３は、ビットマップｂ１の各ビットの位置を、１つの底で割った余りの値を、ハッシュ化ビットマップの位置と対応付ける。転置インデックス生成部１６３は、該当するビットマップｂ１のビットの位置に「１」が設定されている場合には、対応付けられたハッシュ化ビットマップの位置に「１」を設定する処理を行う。
【０１００】
ビットマップｂ１から、底「２９」のハッシュ化ビットマップｈ１１を生成する処理の一例について説明する。まず、転置インデックス生成部１６３は、ビットマップｂ１の位置「０〜２８」の情報を、ハッシュ化ビットマップｈ１１にコピーする。
【０１０１】
ビットマップｂ１のビットの位置「３５」を、底「２９」で割った余りは「６」となるので、ビットマップｂ１の位置「３５」は、ハッシュ化ビットマップｈ１１の位置「６」と対応付けられる。転置インデックス生成部１６３は、ビットマップｂ１の位置「３５」に「１」が設定されているため、ハッシュ化ビットマップｈ１１の位置「６」に「１」を設定する。
【０１０２】
ビットマップｂ１のビットの位置「４３」を、底「２９」で割った余りは「１４」となるので、ビットマップｂ１の位置「４３」は、ハッシュ化ビットマップｈ１１の位置「１４」と対応付けられる。転置インデックス生成部１６３は、ビットマップｂ１の位置「４３」に「１」が設定されているため、ハッシュ化ビットマップｈ１１の位置「１４」に「１」を設定する。
【０１０３】
転置インデックス生成部１６３は、ビットマップｂ１の位置「２９」以上の位置に関し、「１」が設定されている位置について、上記処理を繰り返し実行することで、ハッシュ化ビットマップｈ１１を生成する。なお、転置インデックス生成部１６３は、ビットマップｂ１の位置「２９」以上の位置に関し、「０」が設定されている位置についてはスキップして次の位置の処理を行う。
【０１０４】
次に、ビットマップｂ１から、底「３１」のハッシュ化ビットマップｈ１２を生成する処理の一例について説明する。まず、転置インデックス生成部１６３は、ビットマップｂ１の位置「０〜３０」の情報を、ハッシュ化ビットマップｈ１２にコピーする。
【０１０５】
ビットマップｂ１のビットの位置「３５」を、底「３１」で割った余りは「４」となるので、ビットマップｂ１の位置「３５」は、ハッシュ化ビットマップｈ１２の位置「４」と対応付けられる。転置インデックス生成部１６３は、ビットマップｂ１の位置「３５」に「１」が設定されているため、ハッシュ化ビットマップｈ１２の位置「４」に「１」を設定する。
【０１０６】
ビットマップｂ１のビットの位置「４３」を、底「３１」で割った余りは「１２」となるので、ビットマップｂ１の位置「４３」は、ハッシュ化ビットマップｈ１２の位置「１２」と対応付けられる。転置インデックス生成部１６３は、ビットマップｂ１の位置「４３」に「１」が設定されているため、ハッシュ化ビットマップｈ１２の位置「１２」に「１」を設定する。
【０１０７】
転置インデックス生成部１６３は、ビットマップｂ１の位置「３１」以上の位置に関し、「１」が設定されている位置について、上記処理を繰り返し実行することで、ハッシュ化ビットマップｈ１２を生成する。なお、転置インデックス生成部１６３は、ビットマップｂ１の位置「３１」以上の位置に関し、「０」が設定されている位置についてはスキップして次の位置の処理を行う。
【０１０８】
転置インデックス生成部１６３は、転置インデックスの各行について上記の折り返し技術による圧縮を行うことで、ハッシュ化転置インデックスを生成する。なお、底「２９」、「３１」のハッシュ化ビットマップは、生成元のビットマップの行（コマンドまたは座標）の情報が付与される。
【０１０９】
図１７は、転置インデックスのハッシュ値の例を示す図である。
ハッシュ化ビットマップｈ２１は、コマンド「ｍｏｖｅｔｏ」に対応するハッシュ化ビットマップの一例である。ハッシュ化ビットマップｈ２２は、コマンド「ｌｉｎｅｔｏ」に対応するハッシュ化ビットマップの一例である。ハッシュ化ビットマップｈ２３は、座標「Ｘａ，Ｙａ」に対応するハッシュ化ビットマップの一例である。このように、ＰｏｓｔＳｃｒｉｐｔデータに含まれるコマンドおよび座標毎に、ハッシュ化ビットマップが生成される。転置インデックス生成部１６３は、転置インデックスに代えて、ハッシュ化ビットマップを転置インデックス記憶部１４０に保存することで、転置インデックスのサイズが比較的大きい（本例では６４ビットより大きい）場合に、保存するデータサイズを圧縮できる。
【０１１０】
ハッシュ化ビットマップが用いられる場合、検索部１７２は、次のようにして、ハッシュ化ビットマップから転置インデックスを復元し、姿勢候補の絞込みに用いる。
図１８は、転置インデックスの復元例を示す図である。
【０１１１】
ここでは一例として、検索部１７２が、ハッシュ化ビットマップｈ１１およびハッシュ化ビットマップｈ１２を基にして、ビットマップｂ１を復元する場合を説明する。
図１８（Ａ）は、転置インデックスの復元の手順のうち、ハッシュ化ビットマップから中間ビットマップへ展開するステップを示す。
【０１１２】
検索部１７２は、底「２９」のハッシュ化ビットマップｈ１１から、中間ビットマップｈ１１ａを生成する。検索部１７２は、ハッシュ化ビットマップｈ１１の位置０〜２８の値を、中間ビットマップｈ１１ａの位置０〜２８にそれぞれ、コピーする。
【０１１３】
検索部１７２は、中間ビットマップｈ１１ａの位置２９以降の値については、「２９」毎に、ハッシュ化ビットマップｈ１１の位置０〜２８の値を、それぞれコピーする処理を繰り返し実行する。図１８では、中間ビットマップｈ１１ａの位置２９〜４３の位置に、ハッシュ化ビットマップｈ１１の位置０〜１４の値を、コピーした例を示す。
【０１１４】
検索部１７２は、底「３１」のハッシュ化ビットマップｈ１２から、中間ビットマップｈ１２ａを生成する。検索部１７２は、ハッシュ化ビットマップｈ１２の位置０〜３０の値を、中間ビットマップｈ１２ａの位置０〜３０にそれぞれ、コピーする。
【０１１５】
検索部１７２は、中間ビットマップｈ１２ａの位置３１以降の値については、「３１」毎に、ハッシュ化ビットマップｈ１２の位置０〜３０の値を、それぞれコピーする処理を繰り返し実行する。図１８では、中間ビットマップｈ１２ａの位置３１〜４３の位置に、ハッシュ化ビットマップｈ１２の位置０〜１２の値を、コピーした例を示す。
【０１１６】
こうして、ハッシュ化ビットマップから中間ビットマップが生成される。
図１８（Ｂ）は、転置インデックスの復元の手順のうち、中間ビットマップ同士のＡＮＤ演算を行うステップを示す。
【０１１７】
検索部１７２は、中間ビットマップｈ１１ａと、中間ビットマップｈ１２ａとをＡＮＤ演算することで、ハッシュ化前のビットマップｂ１を復元する。検索部１７２は、他のハッシュ化されたビットマップについても、同様の処理を繰り返し実行することで、コマンドまたは座標に対応するビットマップを生成することができる。こうして、転置インデックスが復元される。
【０１１８】
図１９は、転置インデックスの絞込み例を示す図である。
検索部１７２は、転置インデックスの絞込みにより、撮影画像１５１から抽出されるアウトライン１５２ａに対応する姿勢候補画像の検索を行う。例えば、検索部１７２は、第２ＰＤＬデータ生成部１７１からアウトライン１５２ａに対応するＰｏｓｔＳｃｒｉｐｔデータを取得する。そして、検索部１７２は、ＰｏｓｔＳｃｒｉｐｔデータに含まれるコマンドまたは座標が、各姿勢候補画像に対応するＰｏｓｔＳｃｒｉｐｔデータに含まれるかを、転置インデックスを用いて照合する。
【０１１９】
例えば、アウトライン１５２ａに対応するＰｏｓｔＳｃｒｉｔｐデータのオフセット「６」〜「９」に対応する位置（あるいは別の位置でもよい）に「ｎｅｗｐａｔｈ  Ｘａ  Ｙａ  ｍｏｖｅｔｏ  …」の文字列が含まれているとする。なお、図中、「ｎｅｗｐａｔｈ」を「ｎｐ」と略記し、「ｍｏｖｅｔｏ」を「ｍｔ」と略記することがある。
【０１２０】
この場合、検索部１７２は、転置インデックスのコマンド「ｎｅｗｐａｔｈ」に対応するビットマップを復元する（ステップＳＴ１）。図１９では、オフセット「６」がフラグ「１」であるビットマップの一例として、ビットマップｂ１１が示されている。
【０１２１】
検索部１７２は、ビットマップｂ１１を左シフトし、ビットマップｂ１２を得る（ステップＳＴ２）。検索部１７２は、該当の転置インデックスの座標「Ｘａ  Ｙａ」に対応するビットマップを復元する（ステップＳＴ３）。
【０１２２】
検索部１７２は、ビットマップｂ１２，ｂ１３のＡＮＤ演算を行い、ビットマップｂ１４を得る（ステップＳＴ４）。ビットマップｂ１４において、オフセット「７」がフラグ「１」の場合、該当の転置インデックスに対応するＰｏｓｔＳｃｒｉｐｔデータは、オフセット「６」、「７」に対応する位置に「ｎｅｗｐａｔｈ  Ｘａ  Ｙａ」の文字列を含むことが分かる。この時点で、「ｎｅｗｐａｔｈ  Ｘａ  Ｙａ」の文字列を含まない転置インデックスに対応する姿勢候補は、候補としての優先度（アウトライン１５２ａに対する類似度）が下げられるか、または、候補から除外される。
【０１２３】
続いて、検索部１７２は、ビットマップｂ１４を左シフトし、ビットマップｂ１５を得る（ステップＳＴ５）。検索部１７２は、該当の転置インデックスのコマンド「ｍｏｖｅｔｏ」に対応するビットマップｂ１６を復元する（ステップＳＴ６）。
【０１２４】
検索部１７２は、ビットマップｂ１５，ｂ１６のＡＮＤ演算を行い、ビットマップｂ１７を得る（ステップＳＴ７）。ビットマップｂ１７において、オフセット「８」がフラグ「１」の場合、該当の転置インデックスに対応するＰｏｓｔＳｃｒｉｐｔデータは、オフセット「６」〜「８」に対応する位置に「ｎｅｗｐａｔｈ  Ｘａ  Ｙａ  ｍｏｖｅｔｏ」の文字列を含むことが分かる。この時点で、「ｎｅｗｐａｔｈ  Ｘａ  Ｙａ  ｍｏｖｅｔｏ」の文字列を含まない転置インデックスに対応する姿勢候補は、候補としての優先度が下げられるか、または、候補から除外される。
【０１２５】
以降、同様に、検索部１７２は、ビットマップｂ１７を左シフトし、ビットマップｂ１８を得る（ステップＳＴ８）。そして、検索部１７２は、ビットマップｂ１８に基づいて、（姿勢候補画像に対応するＰｏｓｔＳｃｒｉｐｔデータにおいて）後続するコマンドまたは座標を特定し、アウトライン１５２ａのＰｏｓｔＳｃｒｉｐｔデータのコマンドまたは座標と照合できる。例えば、検索部１７２は、転置インデックスを用いた照合によって、各姿勢候補画像から生成されたアウトラインのＰｏｓｔＳｃｒｉｐｔデータのうち、アウトライン１５２ａのＰｏｓｔＳｃｒｉｐｔデータに含まれる一連の文字列と一致する度合い（類似度）が最も高いものを検索する。
【０１２６】
ところで、製造された構造物をカメラ１１３により撮像する際に、構造物の周囲の他の構造物（他の物体）が撮影画像に写り込んだりすることで、構造物のアウトラインを撮影画像から適切に抽出できないことがある。
【０１２７】
図２０は、アウトラインの誤検出の例を示す図である。
撮影画像１５３は、対象の構造物の構造物画像１５３ａと、他の構造物の構造物画像１５３ｂとを含む。例えば、カメラ１１３による撮像時、他の構造物が、対象の構造物の手前に置かれていると、撮影画像１５３で示されるように、構造物画像１５３ｂにより、対象の構造物の一部が隠れた構造物画像１５３ａが取得されることがある。
【０１２８】
この場合、第２ＰＤＬデータ生成部１７１は、撮影画像１５３に基づいて、アウトライン画像１５４を生成する可能性がある。アウトライン画像１５４は、構造物画像１５３ａ，１５３ｂに基づいて検出されたアウトライン１５４ａを含む。しかし、アウトライン１５４ａは、対象の構造物以外の構造物の輪郭も含んでおり、対象の構造物のアウトラインとしては不適切である。
【０１２９】
そこで、表示処理部１７３は、こうしたアウトラインの誤検出時の修正機能を提供する。
図２１は、アウトラインの誤検出時の修正例を示す図である。
【０１３０】
図２１（Ａ）は、アウトラインの抽出範囲の指定例を示す。例えば、表示処理部１７３は、アウトライン１５４ａをディスプレイ１１１により表示させ、アウトライン１５４ａが適切であるか否かのユーザの確認を促す。ユーザによりアウトライン１５４ａが不適切であると判断される場合、表示処理部１７３は、撮影画像１５３におけるアウトラインの抽出範囲の、ユーザによる指定を受け付ける。例えば、ユーザは、入力デバイス１１２によりポインタＫ１を操作して、撮影画像１５３における対象の構造物のアウトラインの抽出範囲Ｒ１を指定できる。表示処理部１７３は、指定された抽出範囲Ｒ１の情報を第２ＰＤＬデータ生成部１７１に提供する。第２ＰＤＬデータは、取得した抽出範囲Ｒ１の範囲内で、再度、アウトラインの抽出を実行する。
【０１３１】
図２１（Ｂ）は、アウトラインの補完例を示す。例えば、表示処理部１７３は、アウトライン１５４ａをディスプレイ１１１により表示させ、アウトライン１５４ａが適切であるか否かのユーザの確認を促す。ユーザによりアウトライン１５４ａが不適切であると判断される場合、表示処理部１７３は、アウトライン１５４ａにおいて不足している線分１５４ｂの、ユーザによる補完を受け付ける。例えば、ユーザは、入力デバイス１１２によりポインタＫ１を操作して、アウトライン画像１５４における追加の線分１５４ｂを入力できる。図２１（Ｂ）では、追加された線分であることが分かり易いように、線分１５４ｂの両端に丸印を付している。線分１５４ｂの両端の丸印は、線分１５４ｂの両端に相当する他、線１５４ｃの両端、線１５４ｄ（図中、点線で表されている）の両端にも相当している。
【０１３２】
この場合、表示処理部１７３は、アウトライン１５４ａの一部である線１５４ｃと、追加された線分１５４ｂとの組み合わせを、修正後のアウトラインとして選択するユーザの操作を更に受け付けてもよい。すると、第２ＰＤＬデータ生成部１７１は、表示処理部１７３により取得された情報に基づいて、アウトライン１５４ａの一部である線１５４ｄを除去し、線分１５４ｂと線１５４ｃとを組み合わせた線を、修正後のアウトラインとして検出する。
【０１３３】
なお、第２ＰＤＬデータ生成部１７１は、撮影画像１５１や撮影画像１５３において、画素値などによる物体の境界の判別が適切に行えずにエッジを細切れに検出し、アウトラインを形成するエッジの組み合わせを抽出できないこともある。この場合にも、第２ＰＤＬデータ生成部１７１は、図２１（Ｂ）で例示したようにユーザによる線分の追加を受け付けることで、アウトラインを補完することができる。
【０１３４】
次に、情報処理装置１００による処理手順を説明する。なお、各姿勢候補画像および各姿勢候補画像に対するＰＤＬデータ（例えば、ＰｏｓｔＳｃｒｉｐｔデータ）や転置インデックスは、下記の手順が開始される前に作成され、姿勢候補データ記憶部１３０および転置インデックス記憶部１４０に予め格納される。
【０１３５】
図２２は、アウトライン抽出の例を示すフローチャートである。
（Ｓ１０）第２ＰＤＬデータ生成部１７１は、撮影画像記憶部１５０に記憶された撮影画像１５１を解析し、画素値に所定値以上の差がある領域の境界線を特定する。
【０１３６】
（Ｓ１１）第２ＰＤＬデータ生成部１７１は、特定した境界線をエッジとして抽出する。第２ＰＤＬデータ生成部１７１は、抽出したエッジにより形成されるアウトラインを含むアウトライン画像を生成する。表示処理部１７３は、撮影画像１５１と、生成されたアウトライン画像とをディスプレイ１１１により表示させ、ユーザによる確認を促す。なお、アウトラインの抽出範囲のユーザによる指定がある場合、第２ＰＤＬデータ生成部１７１は、指定された範囲に含まれるエッジに基づいてアウトラインを検出し、アウトライン画像を生成する。
【０１３７】
（Ｓ１２）第２ＰＤＬデータ生成部１７１は、ユーザによるアウトラインの抽出範囲の変更入力があるか否かを判定する。変更入力がある場合、ステップＳ１３に処理が進む。変更入力がない場合、ステップＳ１４に処理が進む。
【０１３８】
（Ｓ１３）第２ＰＤＬデータ生成部１７１は、アウトラインの抽出範囲を、ユーザにより指定された範囲に変更する。そして、ステップＳ１１に処理が進む。
（Ｓ１４）第２ＰＤＬデータ生成部１７１は、ユーザによるアウトラインの補完入力があるか否かを判定する。補完入力がある場合、ステップＳ１５に処理が進む。補完入力がない場合、ステップＳ１６に処理が進む。
【０１３９】
（Ｓ１５）第２ＰＤＬデータ生成部１７１は、ユーザによるアウトラインの補完の入力内容で、アウトラインを補完する。
（Ｓ１６）第２ＰＤＬデータ生成部１７１は、抽出したアウトラインのＰＤＬデータ（例えば、ＰｏｓｔＳｃｒｉｐｔデータ）を生成し、検索部１７２に提供する。そして、アウトライン抽出の処理が終了する。
【０１４０】
このように、第２ＰＤＬデータ生成部１７１は、撮影画像１５１を取得すると、撮影画像１５１に含まれる構造物の形状を表すアウトライン候補の線を表示し、撮影画像１５１におけるアウトライン候補の線の抽出範囲の指定、または、アウトライン候補の線を補完する線の入力を受け付ける。これにより、撮影画像１５１に写る構造物のアウトラインを適切に取得することができる。その結果、後段の処理における姿勢候補画像の特定精度を向上させることができる。
【０１４１】
図２３は、姿勢候補の絞込み例を示すフローチャートである。
（Ｓ２０）検索部１７２は、姿勢候補画像の全てのアウトラインのＰＤＬデータと、撮影画像１５１から取得したアウトラインのＰＤＬデータとを比較する。ここで、検索部１７２は、当該比較に転置インデックスを用いることができる。検索部１７２は、転置インデックスを用いることで、姿勢候補の絞込みを高速に実行できる。ただし、検索部１７２は、転置インデックスを用いずに、ＰＤＬデータ同士を比較してもよい。また、検索部１７２は、撮影画像１５１から取得したアウトラインのＰＤＬデータに対しても転置インデックスを生成し、転置インデックス同士を照合してもよい。
【０１４２】
（Ｓ２１）検索部１７２は、２つのＰＤＬデータ（姿勢候補画像のアウトラインのＰＤＬデータおよび撮影画像１５１から取得したアウトラインのＰＤＬデータ）に含まれる座標情報やベクトル情報を基に、当該２つのＰＤＬデータの類似度を算出する。例えば、検索部１７２は、撮影画像１５１から取得したアウトラインのＰＤＬデータに含まれるコマンドや座標を表す一連の文字列に一致する度合いが高いほど、該当の姿勢候補画像のアウトラインのＰＤＬデータの類似度を大きくする。検索部１７２は、例えば、座標間の距離が短いほど、座標間の一致度合いを大きくすることが考えられる。
【０１４３】
（Ｓ２２）検索部１７２は、類似度が最も高い３Ｄモデルの姿勢候補の姿勢候補ＩＤを、表示処理部１７３に提供する。表示処理部１７３は、姿勢候補テーブル１３１に基づいて、該当の姿勢候補ＩＤに対応する姿勢候補画像Ｐ２を出力する。具体的には、表示処理部１７３は、撮影画像１５１と共に、該当の姿勢候補ＩＤに対応する姿勢候補画像Ｐ２を、ディスプレイ１１１により表示させる。そして、姿勢候補の絞込みの処理が終了する。
【０１４４】
なお、ステップＳ２２において、表示処理部１７３は、撮影画像１５１に代えて、または、撮影画像１５１と共に、撮影画像１５１から抽出された複数のエッジを出力してもよい。また、表示処理部１７３は、姿勢候補画像Ｐ２に代えて、または、姿勢候補画像Ｐ２と共に、姿勢候補画像Ｐ２から抽出された複数のエッジを出力してもよい。
【０１４５】
ユーザは、撮影画像１５１と共に表示された姿勢候補画像Ｐ２を確認して、姿勢候補画像Ｐ２に含まれるエッジと撮影画像１５１に含まれるエッジとを対応付ける操作を行える。
【０１４６】
このように、検索部１７２は、姿勢候補画像（第１の投影像）の特定の際、複数の候補画像それぞれの第１のアウトラインを示す情報と撮影画像１５１に含まれる構造物の第２のアウトラインを示す情報とを比較し、第２のアウトラインとの一致の度合いが最も高い第１のアウトラインに対応する姿勢候補画像を特定する。
【０１４７】
例えば、第１のアウトラインを示す情報は、第１のアウトラインの描画命令を含む第１のテキスト情報（ＰＤＬデータ）である。また、第２のアウトラインを示す情報は、第２のアウトラインの描画命令を含む第２のテキスト情報（ＰＤＬデータ）である。検索部１７２は、第１および第２のアウトラインを示す情報の比較では、第２のテキスト情報と記述内容が一致する度合いが最も高い第１のテキスト情報に対応する姿勢候補画像を特定する。これにより、撮影画像に対応する姿勢候補画像を効率的に特定できる。例えば、姿勢候補画像の特定精度が向上する。また、姿勢候補画像を高速に検索できる。
【０１４８】
また、検索部１７２は、第１および第２のテキスト情報の記述内容の比較では、図１９で例示したように、複数の描画命令それぞれの第１のテキスト情報における出現位置を示す転置インデックスに基づいて、第１および第２のテキスト情報それぞれに含まれる描画命令と描画命令の出現順序とを比較する。これにより、姿勢候補画像を一層高速に検索できる。
【０１４９】
図２４は、３Ｄモデル重畳制御例を示すフローチャートである。
（Ｓ３０）表示処理部１７３は、３Ｄモデルの姿勢候補画像Ｐ２のエッジ（稜線）と撮影画像１５１のエッジとを対応付ける、ユーザの操作を受け付ける。
【０１５０】
（Ｓ３１）表示処理部１７３は、ＣＡＤデータ記憶部１２０に記憶された３ＤモデルのＣＡＤデータに基づいて、撮影画像１５１のエッジに、３Ｄモデルのエッジを対応付けた３Ｄモデルの投影像を生成する。表示処理部１７３は、既存の技術により、撮影画像１５１のエッジに、３Ｄモデルのエッジを対応付けた３Ｄモデルの投影像を生成できる。
【０１５１】
（Ｓ３２）表示処理部１７３は、生成した３Ｄモデルの投影像を、撮影画像１５１に重畳表示する。そして、３Ｄモデル重畳制御の処理が終了する。
ユーザは、撮影画像１５１に重畳表示された３Ｄモデルの投影像を、撮影画像１５１における構造物画像１５１ａと見比べることで、製造された構造物の検品などの作業を容易に行うことができる。
【０１５２】
図２５は、姿勢候補画像の初期表示例を示す図である。
図２５では、図２３のステップＳ２２の処理により、ディスプレイ１１１に表示される画面３００の例を示す。画面３００は撮影画像１５１および姿勢候補画像Ｐ２を含む。
【０１５３】
姿勢候補画像Ｐ２における３Ｄモデルの姿勢は、撮影画像１５１における構造物の姿勢に近似する。したがって、ユーザは、姿勢候補画像Ｐ２に映し出されている３Ｄモデルの姿勢を変更する操作を行わなくても、姿勢候補画像Ｐ２における３Ｄモデルのエッジと、撮影画像１５１における構造物のエッジとを対応付ける操作を容易に行うことができる。例えば、ユーザは、入力デバイス１１２によりポインタＫ１を操作して、撮影画像１５１に含まれる点Ｑ１１，Ｑ１２を結ぶエッジと、姿勢候補画像Ｐ２に含まれる点Ｑ２１，Ｑ２２を結ぶエッジとを容易に対応付けることができる。
【０１５４】
図２６は、姿勢候補画像の初期表示の比較例を示す図である。
図２６では、比較例として、撮影画像１５１と、予め定められた初期姿勢の姿勢候補画像Ｐ３とを含む画面４００の例を示す。この場合、姿勢候補画像Ｐ３における３Ｄモデルの初期姿勢は、３Ｄモデルを仰角９０°の方向から眺めたときの姿勢であり、撮影画像１５１における構造物の姿勢（構造物を仰角約４５°の所定方向から眺めたときの姿勢）と乖離している。このため、ユーザは、姿勢候補画像Ｐ３に映し出されている３Ｄモデルの姿勢を変更（回転）する操作を行わなければ、撮影画像１５１における構造物のエッジと、姿勢候補画像Ｐ３における３Ｄモデルのエッジとの対応を確認することが難しい。このため、入力デバイス１１２によりポインタＫ１を操作して、姿勢候補画像Ｐ３における３Ｄモデルの姿勢を変更する操作を、ユーザに強いることになる。３Ｄモデルの姿勢を変更して、撮影画像１５１における構造物の姿勢に合わせる操作は、比較的経験の浅いユーザにとって難しいこともある。
【０１５５】
そこで、情報処理装置１００は、図２５で例示したように、ユーザによる３Ｄモデルの姿勢変更の操作を省略可能にし、ユーザによる作業の効率化（例えば、作業時間の短縮）を図れる。
【０１５６】
特に、アウトラインに対応するＰＤＬデータ（例えば、ＰｏｓｔＳｃｒｉｐｔデータ）を利用することにより、３Ｄモデルの姿勢候補を精度良く絞り込むことができる。
また、姿勢候補の絞込みに転置インデックスを用いることで、絞込みの処理を高速化できる。
【０１５７】
なお、第１の実施の形態の情報処理は、処理部１２にプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、ＣＰＵ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１１４に記録できる。
【０１５８】
例えば、プログラムを記録した記録媒体１１４を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１１４に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１５９】
１０  情報処理装置
１１  記憶部
１２  処理部
２０  表示装置
３１，３２，３３  投影像
４０  撮影画像
４１  構造物画像
５０  表示画像
５１  稜線群
５２  エッジ線群
【図１】
2020194482.tif 000003
【図２】
2020194482.tif 000004
【図３】
2020194482.tif 000005
【図４】
2020194482.tif 000006
【図５】
2020194482.tif 000007
【図６】
2020194482.tif 000008
【図７】
2020194482.tif 000009
【図８】
2020194482.tif 000010
【図９】
2020194482.tif 000011
【図１０】
2020194482.tif 000012
【図１１】
2020194482.tif 000013
【図１２】
2020194482.tif 000014
【図１３】
2020194482.tif 000015
【図１４】
2020194482.tif 000016
【図１５】
2020194482.tif 000017
【図１６】
2020194482.tif 000018
【図１７】
2020194482.tif 000019
【図１８】
2020194482.tif 000020
【図１９】
2020194482.tif 000021
【図２０】
2020194482.tif 000022
【図２１】
2020194482.tif 000023
【図２２】
2020194482.tif 000024
【図２３】
2020194482.tif 000025
【図２４】
2020194482.tif 000026
【図２５】
2020194482.tif 000027
【図２６】
2020194482.tif 000028