(57)【要約】【課題】仮想オブジェクトを任意の形状の仮想立体物に貼り付けた状態を示す画像を容易に提供する。【解決手段】撮影部１２は、撮影画像を得る。取得部１４Ｄは、仮想三次元空間に配置する仮想オブジェクトの曲げ形状を、表示部２０の表示面を表す二次元デバイス座標で表した、曲げ形状情報を取得する。形状算出部１４Ｅは、曲げ形状情報に応じて、仮想オブジェクトの貼り付け対象を示す仮想立体物の三次元形状を算出する。射影部１４Ｆは、仮想立体物の表面に貼り付けた仮想オブジェクトを、二次元空間に射影したオブジェクト画像を生成する。表示制御部１４Ｈは、撮影画像にオブジェクト画像を重畳した重畳画像を、表示部２０へ表示する。【選択図】図４
2016139201.tif 000002
【特許請求の範囲】
【請求項１】
撮影画像を得る撮影部と、
仮想三次元空間に配置する仮想オブジェクトの曲げ形状を、表示部の表示面を表す二次元デバイス座標で表した、曲げ形状情報を取得する取得部と、
前記曲げ形状情報に応じて、前記仮想オブジェクトの貼り付け対象を示す仮想立体物の三次元形状を算出する形状算出部と、
前記仮想立体物の表面に貼り付けた前記仮想オブジェクトを、二次元空間に射影したオブジェクト画像を生成する射影部と、
前記撮影画像に前記オブジェクト画像を重畳した重畳画像を前記表示部へ表示する表示制御部と、
を備えた画像処理装置。
【請求項２】
前記形状算出部は、前記曲げ形状情報に応じた三次元曲線に沿った曲面を有する、前記仮想立体物の三次元形状を算出する、請求項１に記載の画像処理装置。
【請求項３】
前記曲げ形状情報は、前記仮想オブジェクトの曲げ方向を含み、
前記形状算出部は、前記曲げ方向に曲がった前記曲面を有する、前記仮想立体物の三次元形状を算出する、請求項２に記載の画像処理装置。
【請求項４】
前記曲げ形状情報は、前記仮想オブジェクトの曲げ位置を含み、
前記形状算出部は、前記曲げ位置で折り曲げた隣接する２平面を含む、前記仮想立体物の三次元形状を算出し、
前記射影部は、前記仮想立体物の表面における、前記２平面の境界に前記曲げ位置が一致するように貼り付けた前記仮想オブジェクトを二次元空間に射影した前記オブジェクト画像を生成する、
請求項１に記載の画像処理装置。
【請求項５】
前記曲げ形状情報は、曲げ角度を含み、
前記形状算出部は、隣接する前記２平面の成す角度が前記曲げ角度を示す、前記仮想立体物の三次元形状を算出する、
請求項４に記載の画像処理装置。
【請求項６】
前記形状算出部は、前記仮想オブジェクトの、前記曲げ位置から曲げ方向の一方の辺までの長さを前記２平面の一方の平面の長さとし、前記曲げ位置から他方の辺までの長さを前記２平面の他方の平面の長さとする、前記仮想立体物の三次元形状を算出する、
請求項４または請求項５に記載の画像処理装置。
【請求項７】
前記曲げ形状情報は、前記仮想オブジェクトの曲げ方向を含み、
前記形状算出部は、前記曲げ方向に曲がった前記２平面を含む、前記仮想立体物の三次元形状を算出する、請求項４〜請求項６の何れか１項に記載の画像処理装置。
【請求項８】
前記表示制御部は、
前記仮想オブジェクトを射影した前記オブジェクト画像における、該仮想オブジェクトの貼り付けられた前記仮想立体物の表示面側とは反対側の背面側の領域を非表示とした前記オブジェクト画像を、前記撮影画像に重畳した前記重畳画像を前記表示部へ表示する、
請求項１〜請求項７の何れか１項に記載の画像処理装置。
【請求項９】
前記オブジェクト画像の前記仮想立体物上での移動量および移動方向を、前記二次元座標で示す第１移動指示を受付ける第１受付部と、
前記仮想オブジェクトを、前記第１移動指示に応じた移動量分、前記第１移動指示に応じた移動方向へ、前記仮想立体物上で移動させる移動部と、
を更に備え、
前記射影部は、前記第１移動指示を受付けた場合、前記仮想立体物上の移動された位置に貼り付けられた前記仮想オブジェクトを二次元空間に射影した前記オブジェクト画像を生成する、
請求項１〜請求項８の何れか１項に記載の画像処理装置。
【請求項１０】
前記オブジェクト画像の前記表示面上での移動量および移動方向を、前記二次元座標で示す第２移動指示を受付ける第２受付部と、
前記第２移動指示に応じた移動量および方向に、前記仮想オブジェクトが前記二次元座標上で移動するように、前記仮想オブジェクトを二次元空間に射影するための変換関数を補正する関数補正部と、
をさらに備え、
前記射影部は、前記第２移動指示を受付けた場合、補正された前記変換関数に基づき、前記オブジェクト画像を生成する、
請求項１〜請求項９の何れか１項に記載の画像処理装置。
【請求項１１】
撮影画像を得るステップと、
仮想三次元空間に配置する仮想オブジェクトの曲げ形状を、表示部の表示面を表す二次元デバイス座標で表した、曲げ形状情報を取得するステップと、
前記曲げ形状情報に応じて、前記仮想オブジェクトの貼り付け対象を示す仮想立体物の三次元形状を算出するステップと、
前記仮想立体物の表面に貼り付けた前記仮想オブジェクトを、二次元空間に射影したオブジェクト画像を生成するステップと、
前記撮影画像に前記オブジェクト画像を重畳した重畳画像を前記表示部へ表示するステップと、
を含む、画像処理方法。
【請求項１２】
撮影画像を得るステップと、
仮想三次元空間に配置する仮想オブジェクトの曲げ形状を、表示部の表示面を表す二次元デバイス座標で表した、曲げ形状情報を取得するステップと、
前記曲げ形状情報に応じて、前記仮想オブジェクトの貼り付け対象を示す仮想立体物の三次元形状を算出するステップと、
前記仮想立体物の表面に貼り付けた前記仮想オブジェクトを、二次元空間に射影したオブジェクト画像を生成するステップと、
前記撮影画像に前記オブジェクト画像を重畳した重畳画像を前記表示部へ表示するステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、およびプログラムに関する。
【背景技術】
【０００２】
現実空間の事象に対してコンピュータによる情報を付加する拡張現実（ＡＲ：Ａｕｇｍｅｎｔｅｄ  Ｒｅａｌｉｔｙ）技術が知られている。ＡＲ技術として、カメラで撮影した撮影画像上に仮想オブジェクトを合成して表示する技術も開示されている。
【０００３】
また、仮想物体の立体形状を示す三次元データを用意し、用意した仮想立体物の表面に繊維シートを貼り付けたものを、所定の視点から観察した投影画像を生成する技術が開示されている（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、従来では、繊維シートなどの仮想オブジェクトを貼り付ける三次元データを別途用意する必要があり、仮想オブジェクトを任意の形状の仮想立体物に貼り付けた状態を示す画像を提供することは困難であった。
【課題を解決するための手段】
【０００５】
上述した課題を解決し、目的を達成するために、本発明に係る画像処理装置は、撮影画像を得る撮影部と、仮想三次元空間に配置する仮想オブジェクトの曲げ形状を、表示部の表示面を表す二次元デバイス座標で表した、曲げ形状情報を取得する取得部と、前記曲げ形状情報に応じて、前記仮想オブジェクトの貼り付け対象を示す仮想立体物の三次元形状を算出する形状算出部と、前記仮想立体物の表面に貼り付けた前記仮想オブジェクトを、二次元空間に射影したオブジェクト画像を生成する射影部と、前記撮影画像に前記オブジェクト画像を重畳した重畳画像を前記表示部へ表示する表示制御部と、を備える。
【発明の効果】
【０００６】
本発明は、仮想オブジェクトを任意の形状の仮想立体物に貼り付けた状態を示す画像を容易に提供することができる、という効果を奏する。
【図面の簡単な説明】
【０００７】
【図１】図１は、本実施の形態の画像処理装置の模式図である。
【図２】図２は、画像処理装置の外観の概略図である。
【図３】図３は、表示処理の概要を示す図である。
【図４】図４は、画像処理装置の機能構成を示すブロック図である。
【図５】図５は、重畳画像生成の説明図である。
【図６】図６は、仮想立体物の三次元形状算出の説明図である。
【図７】図７は、仮想立体物の形状算出の詳細な説明図である。
【図８】図８は、曲げ方向の説明図である。
【図９】図９は、オブジェクト画像の説明図である。
【図１０】図１０は、仮想オブジェクトの移動の説明図である。
【図１１】図１１は、三次元形状算出の説明図である。
【図１２】図１２は、仮想立体物の形状算出の説明図である。
【図１３】図１３は、オブジェクト画像の説明図である。
【図１４】図１４は、オブジェクト画像の移動の説明図である。
【図１５】図１５は、姿勢補正の説明図である。
【図１６】図１６は、オブジェクト画像の形状変化の説明図である。
【図１７】図１７は、表示処理の手順を示すフローチャートである。
【図１８】図１８は、第１の割り込み処理の手順を示すフローチャートである。
【図１９】図１９は、第２の割り込み処理の手順を示すフローチャートである。
【図２０】図２０は、画像処理装置のハードウェア構成図である。
【発明を実施するための形態】
【０００８】
以下、実施形態である画像処理装置１０について説明する。
【０００９】
以下に添付図面を参照して、画像処理装置、画像処理方法、およびプログラムの実施の形態を詳細に説明する。
【００１０】
図１は、本実施の形態の画像処理装置１０の模式図である。
【００１１】
画像処理装置１０は、プレビュー画像を表示部２０へ表示する装置である。
【００１２】
画像処理装置１０は、撮影部１２、表示処理部１４、記憶部１６、入力部１８、表示部２０、および検知部２５を備える。撮影部１２、表示処理部１４、記憶部１６、入力部１８、表示部２０、および検知部２５は、バス２２により電気的に接続されている。
【００１３】
なお、画像処理装置１０は、撮影部１２、表示処理部１４、および検知部２５と、記憶部１６、入力部１８、および表示部２０の少なくとも１つと、を別体として設けた構成であってもよい。
【００１４】
また、画像処理装置１０は、携帯可能な携帯端末であってもよいし、固定型の端末であってもよい。本実施の形態では、一例として、画像処理装置１０は、撮影部１２と、表示処理部１４と、記憶部１６と、入力部１８と、表示部２０と、検知部２５と、を一体的に備えた携帯可能な携帯端末である場合を説明する。また、画像処理装置１０は、外部装置と通信するための通信部などの他の機能部を更に設けた構成であってもよい。
【００１５】
撮影部１２は、画像処理装置１０の位置する実空間を撮影し、撮影画像を取得する。実空間は、例えば、室内などである。更に、例えば、実空間は、複数の壁面で構成された室内であり、一例としては、床面、天井面、床面と天井面とに連続する４つの壁面で構成された立方体状の室内である。なお、実空間は、画像処理装置１０の位置する現実の空間であればよく、室内に限定されない。撮影部１２は、撮影によって画像データ（撮影画像）を得る公知の撮影装置である。
【００１６】
表示部２０は、各種画像を表示する。表示部２０は、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）や、画像を投影するプロジェクタ等、公知の表示装置である。本実施の形態では、表示部２０には、後述する重畳画像が表示される。
【００１７】
また、本実施の形態では、一例として、表示部２０と撮影部１２は、画像処理装置１０の筐体において、表示部２０の表示方向と、撮影部１２の撮影方向と、が、反対方向（１８０°の関係）である場合を説明する。
【００１８】
図２は、画像処理装置１０の外観の概略図である。図２（Ａ）は、画像処理装置１０を表示部２０側からみた平面図である。図２（Ｂ）は、画像処理装置１０を側面方向（撮影部１２と表示部２０との対向方向に直交する方向）から視認した状態を示す平面図である。画像処理装置１０の筐体１１には、撮影部１２と表示部２０が設けられている。なお、筐体１１の内部には、検知部２５や表示処理部１４や記憶部１６などが設けられている。
【００１９】
図１に戻り、入力部１８は、ユーザから各種操作を受け付ける。入力部１８は、例えば、マウス、マイクによる音声認識、ボタン、リモコン、およびキーボード等である。
【００２０】
なお、入力部１８と表示部２０とを一体的に構成してもよい。本実施の形態では、入力部１８と表示部２０とを一体的に構成し、ＵＩ部１９とする場合を説明する。ＵＩ部１９は、例えば、表示機能と入力機能の双方を備えたタッチパネルである。
【００２１】
このため、ユーザは、ＵＩ部１９に表示された画像を確認しながら、ＵＩ部１９上を操作することで、各種入力を行うことができる。具体的には、ユーザは、ＵＩ部１９における表示部２０の表示面上を操作指示することで、操作指示に応じた各種入力を行うことができる。なお、表示部２０の表示面は、二次元の平面である。
【００２２】
記憶部１６は、メモリやハードディスクドライブ装置（ＨＤＤ）等の記憶媒体であり、後述する各処理を実行するための各種プログラムや、各種データを記憶する。
【００２３】
検知部２５は、実空間における撮影部１２の姿勢を検出する。なお、上述したように、画像処理装置１０には、撮影部１２とＵＩ部１９（表示部２０）が設けられている。このため、撮影部１２の姿勢は、画像処理装置１０に設けられた表示部２０およびＵＩ部１９の姿勢と同様の意味である。
【００２４】
検知部２５は、傾きや方角（角度）を検知可能な公知の検知装置である。例えば、検知部２５は、ジャイロセンサ（３軸加速度計）、電子コンパス、重力加速度計などである。
【００２５】
なお、検知部２５は、実空間における位置（具体的には、ワールド座標における位置）を検出する公知の機器を更に含む構成であってもよい。例えば、検知部２５は、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）を備えた構成であってもよい。この場合、検知部２５は、姿勢に加えて、実空間における撮影部１２の位置（緯度、経度、高度）を検知することができる。
【００２６】
図１に戻り、表示処理部１４は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、およびＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを含んで構成されるコンピュータである。なお、表示処理部１４は、汎用のＣＰＵ以外の回路などであってもよい。表示処理部１４は、画像処理装置１０に設けられた装置各部を制御する。
【００２７】
表示処理部１４は、重畳画像を表示部２０へ表示する制御を行う。重畳画像は、実空間を撮影した撮影画像に、仮想オブジェクトのオブジェクト画像を重畳した画像である。
【００２８】
仮想オブジェクトは、実空間には含まれない仮想のオブジェクトである。仮想オブジェクトは、例えば、表示処理部１４で扱う事の可能な画像データである。仮想オブジェクトの画像データは、例えば、外部装置や表示処理部１４などで別途作成された画像や印刷物の画像データや、実空間画像の撮影とは異なるタイミングで撮影された撮影画像の画像データなどであるが、これらに限定されない。
【００２９】
オブジェクト画像は、仮想三次元空間に配置された仮想オブジェクトを、二次元空間に射影した画像である。言い換えると、オブジェクト画像は、仮想三次元空間に配置された仮想オブジェクトを、予め定めた視点位置から視認した二次元画像に変換した画像である。
【００３０】
表示処理部１４は、例えば、グラフィックス処理のためのプログラミングインターフェースを用いた３Ｄグラフィックエンジンを用いて、仮想オブジェクトを二次元画像に変換する。例えば、表示処理部１４は、ＯｐｅｎＧＬ（Ｏｐｅｎ  Ｇｒａｐｈｉｃｓ  Ｌｉｂｒａｒｙ）などの３Ｄエンジンにより、表示処理を実現する。
【００３１】
具体的には、表示処理部１４は、変換関数を用いて、仮想三次元空間における三次元座標によって示される仮想オブジェクトを、二次元空間における二次元座標によって示されるオブジェクト画像に射影する。変換関数は、オブジェクト画像を取得するための関数、すなわち、仮想オブジェクトを表示面に射影するための関数である。変換関数は、一般に、行列で表される。
【００３２】
図３は、表示処理部１４による表示処理の概要を示す図である。表示処理部１４は、撮影部１２で撮影した撮影画像５３に、オブジェクト画像３０を重畳した重畳画像５４を表示する。
【００３３】
本実施の形態の画像処理装置１０では、オブジェクト画像３０の形状を、画像処理装置１０の姿勢の変化に応じて、あたかも現実の空間に配置されている物体を撮影しているように変化させる。例えば、図３に示すように、画像処理装置１０は、実空間には存在しない印刷物が壁３１に貼り付けているかのように、画像処理装置１０の姿勢の変化に応じてオブジェクト画像３０の形状を変化させる。
【００３４】
また、本実施の形態の画像処理装置１０では、ユーザによって指定された、実際には存在しない仮想立体物の三次元形状に応じて、オブジェクト画像３０が該仮想立体物に貼り付けられているかのような表示を行う。画像処理装置１０の表示処理部１４では、仮想立体物の表面に、オブジェクト画像３０に対応する仮想オブジェクト４２を貼り付けた状態を、二次元空間に投影することで、オブジェクト画像３０を表示する（詳細後述）。
【００３５】
表示処理部１４について詳細を説明する。
【００３６】
図４は、画像処理装置１０の機能構成を示すブロック図である。上述したように画像処理装置１０は、検知部２５、撮影部１２、記憶部１６、ＵＩ部１９、および表示処理部１４を備える。検知部２５、撮影部１２、記憶部１６、およびＵＩ部１９は、表示処理部１４に信号やデータ授受可能に接続されている。
【００３７】
表示処理部１４は、姿勢検出部１４Ａと、撮影画像取得部１４Ｂと、設定部１４Ｃと、取得部１４Ｄと、形状算出部１４Ｅと、射影部１４Ｆと、合成部１４Ｇと、受付部１４Ｉと、移動部１４Ｌと、姿勢補正部１４Ｎと、光源設定部１４Ｏと、表示制御部１４Ｈと、を備える。
【００３８】
姿勢検出部１４Ａ、撮影画像取得部１４Ｂ、設定部１４Ｃ、取得部１４Ｄ、形状算出部１４Ｅ、射影部１４Ｆ、合成部１４Ｇ、受付部１４Ｉ、移動部１４Ｌ、姿勢補正部１４Ｎ、姿勢補正部１４Ｎ、光源設定部１４Ｏ、および表示制御部１４Ｈの一部またはすべては、例えば、ＣＰＵなどの処理装置にプログラムを実行させること、すなわち、ソフトウェアにより実現してもよいし、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などのハードウェアにより実現してもよいし、ソフトウェアおよびハードウェアを併用して実現してもよい。
【００３９】
姿勢検出部１４Ａは、撮影部１２の初期姿勢からの姿勢変化を表す姿勢情報を検出する。詳細には、姿勢情報は、撮影部１２の初期姿勢の撮影方向（光軸の方向）からの向きの変化を検出する。
【００４０】
具体的には、姿勢検出部１４Ａは、検知部２５による初期姿勢時の検知結果と、検知部２５による現在の検知結果と、を用いて、姿勢情報を検出する。姿勢情報は、例えば、初期姿勢からの回転角の変化量（ロール角の変化量α、ピッチ角の変化量βおよびヨー角の変化量γ）で表される。
【００４１】
設定部１４Ｃは、初期姿勢を設定する。設定部１４Ｃは、撮影開始に先立ち、初期姿勢を設定する。ユーザは、所望のタイミングでＵＩ部１９を操作することにより、初期姿勢の設定指示を入力する。設定部１４Ｃは、ユーザにより初期姿勢の設定指示が入力されたときの、撮影部１２（ＵＩ部１９、画像処理装置１０）の姿勢を、初期姿勢として設定する。
【００４２】
このため、画像処理装置１０では、初期姿勢におけるオブジェクト画像３０の形状を基準とし、初期姿勢からの姿勢変化量に基づきオブジェクト画像３０の形状を変化させることができる。
【００４３】
撮影画像取得部１４Ｂは、撮影部１２から撮影画像を取得する。
【００４４】
取得部１４Ｄは、曲げ形状情報を取得する。曲げ形状情報は、仮想三次元空間に配置する仮想オブジェクト４２の曲げ形状を、表示部２０（ＵＩ部１９）の表示面を表す二次元デバイス座標で表した情報である。
【００４５】
表示部２０の表示面を表す二次元デバイス座標とは、二次元の板状である表示部２０の表示面上の、二次元座標である。すなわち、ユーザがＵＩ部１９の表示面上を操作指示することで、操作指示されたＵＩ部１９の表示面上の位置に応じた二次元座標が、操作指示として入力される。
【００４６】
曲げ形状情報は、ユーザによるＵＩ部１９の操作によって入力される。ユーザは、ＵＩ部１９の表示面を操作することで、表示面上の二次元座標によって示される、仮想オブジェクト４２の曲げ形状を操作入力する。取得部１４Ｄは、ユーザによる各種操作指示をＵＩ部１９から受け付ける受付部１４Ｉを介して、ＵＩ部１９から曲げ形状情報を取得する。
【００４７】
形状算出部１４Ｅは、曲げ形状情報に応じて、仮想オブジェクト４２の貼り付け対象を示す仮想立体物の三次元形状を算出する。
【００４８】
射影部１４Ｆは、形状算出部１４Ｅで算出された三次元形状の仮想立体物の表面に、仮想オブジェクト４２を貼り付ける。そして、射影部１４Ｆは、仮想立体物の表面に貼り付けた仮想オブジェクト４２を、二次元空間に射影したオブジェクト画像を生成する。
【００４９】
合成部１４Ｇは、重畳画像を生成する。図５は、重畳画像生成の説明図である。合成部１４Ｇは、撮影画像５３上に、射影部１４Ｆで生成されたオブジェクト画像３０を合成する。これによって、合成部１４Ｇは、撮影画像５３にオブジェクト画像３０を重畳した重畳画像５４を生成する。
【００５０】
図４に戻り、受付部１４Ｉは、ユーザによるＵＩ部１９の各種操作を受け付ける。受付部１４Ｉは、第１受付部１４Ｊおよび第２受付部１４Ｋを含む。第１受付部１４Ｊおよび第２受付部１４Ｋの詳細は後述する。
【００５１】
表示制御部１４Ｈは、各種画像をＵＩ部１９へ表示する制御を行う。本実施の形態では、表示制御部１４Ｈは、合成部１４Ｇで合成された重畳画像５４を、ＵＩ部１９（表示部２０）へ表示する制御を行う。
【００５２】
図６は、形状算出部１４Ｅによる、仮想立体物の三次元形状算出の説明図である。なお、図６は、貼り付け対象の仮想立体物４０の形状が、曲面を有する（具体的には、例えば、円柱状）である場合を説明する。なお、仮想立体物４０が円柱状などの曲面を有する場合を、仮想立体物４０Ａとして説明する。また、仮想立体物４０Ａに貼り付ける仮想オブジェクト４２を、仮想オブジェクト４２Ａ、仮想オブジェクト４２Ａに対応するオブジェクト画像３０をオブジェクト画像３０Ａとして説明する。
【００５３】
なお、仮想立体物（仮想立体物４０Ａ、後述する仮想立体物４０Ｂなど）を総称して説明する場合、単に仮想立体物４０と称して説明する。同様に、オブジェクト画像、仮想オブジェクトの各々を総称して説明する場合についても、オブジェクト画像３０、仮想オブジェクト４２と称して説明する。
【００５４】
例えば、表示制御部１４Ｈは、貼り付け対象の仮想オブジェクト４２Ａのオブジェクト画像３０ＡをＵＩ部１９に表示する。貼り付け対象の仮想オブジェクト４２Ａは、例えば、ユーザによるＵＩ部１９の操作指示によって選択すればよい。具体的には、記憶部１６に、予め、仮想オブジェクト４２として用いる１または複数の画像データを記憶する。そして、表示制御部１４Ｈは、これらの画像データの画像を選択可能にＵＩ部１９へ表示する。ユーザは、ＵＩ部１９に表示された画像の一覧から１つを選択することで、貼り付け対象の仮想オブジェクト４２Ａを選択する。
【００５５】
射影部１４Ｆは、選択された仮想オブジェクト４２Ａを二次元空間に射影することによって、オブジェクト画像３０Ａを生成する。表示制御部１４Ｈは、選択された仮想オブジェクト４２Ａのオブジェクト画像３０ＡをＵＩ部１９に表示する。オブジェクト画像３０（３０Ａ）は、射影部１４Ｆによって仮想オブジェクト４２（４２Ａ）を射影することで得られたものである。
【００５６】
図６（Ａ）は、選択された仮想オブジェクト４２Ａのオブジェクト画像３０ＡがＵＩ部１９に表示された状態の一例を示す図である。図６に示す例では、オブジェクト画像３０Ａが矩形状である場合を一例として説明する。
【００５７】
ユーザは、ＵＩ部１９に表示されたオブジェクト画像３０Ａを用いて、該オブジェクト画像３０に対応する仮想オブジェクト４２Ａの曲げ形状を操作入力する。図６に示す例では、ユーザは、ＵＩ部１９の表示面上を操作することで、ＵＩ部１９に表示されたオブジェクト画像３０Ａの４頂点の内の２頂点の位置を調整する。例えば、図６（Ｂ）に示すように、オブジェクト画像３０Ａの４頂点（３０１、３０２、３０３、３０４）の内、頂点３０１を３０１０の位置に移動させ、頂点３０２を頂点３０２０の位置に移動させることがユーザによって操作指示されたとする。例えば、ユーザは、オブジェクト画像３０Ａの４頂点をピンチイン／ピンチアウト操作などにより調整することで、各頂点の位置を移動させる。
【００５８】
すると、取得部１４Ｂは、移動後の２つの頂点３０１０および頂点３０２０の、表示面における二次元デバイス座標を含む、曲げ形状情報を取得する。
【００５９】
形状算出部１４Ｅは、曲げ形状情報に応じた三次元曲線に沿った曲面を有する、仮想立体物の三次元形状を算出する。詳細には、形状算出部１４Ｅは、三次元曲線の曲率の初期値を予め設定する（以下、初期曲率と称する）。そして、形状算出部１４Ｅは、曲げ形状情報、すなわち、ピンチ操作の操作量に応じて、初期曲率を変化させることで、操作量に応じた三次元曲率を算出する。ピンチ操作の操作量は、例えば、移動前の２頂点に対する移動後の２頂点の操作量に相当する。
【００６０】
例えば、図６（Ｂ）に示すように、ユーザによるピンチ操作後の２次元曲率が、二次曲線Ｑ１によって示される曲率であったとする。この場合、形状算出部１４Ｅは、ピンチ操作の操作量に応じて、初期曲率を変化させることで、曲げ形状情報に応じた三次元曲線Ｑ２（図６（Ｃ）参照）に沿った曲面を有する、仮想立体物４０Ａの三次元形状を算出する。すなわち、仮想立体物４０Ａの表面の曲率は、ユーザによる操作量に応じた曲率を示す。
【００６１】
このように、ユーザによるＵＩ部１９の操作指示によって、ＵＩ部１９（表示部２０）の二次元デバイス座標によって表される曲げ形状情報が操作入力される。すなわち、ユーザは、任意の曲げ形状を、ＵＩ部１９の二次元デバイス座標を用いて操作入力することができる。そして、形状算出部１４Ｅは、操作入力された曲げ形状情報を用いて、仮想立体物４０の三次元形状を算出する。図６に示す例では、形状算出部１４Ｅは、図６（Ｃ）に示す、三次元曲線Ｑ２に沿った曲面を有する、仮想立体物４０Ａの三次元形状を算出する。
【００６２】
図７は、仮想立体物の形状算出の詳細な説明図である。ユーザによって曲げ形状が操作入力されていない状態では、仮想オブジェクト４２Ａは、仮想三次元空間におけるＸＹ平面に沿って平面状に配置される（図７(Ａ)参照）。形状算出部１４Ｅは、仮想オブジェクト４２Ａを、複数の短冊状の領域に分割して処理する。すなわち、形状算出部１４Ｅは、仮想オブジェクト４２Ａを構成する各短冊状の領域の各々を用いて、操作入力された曲げ形状を表現する（図７（Ｂ）、図７（Ｃ）参照）。
【００６３】
ユーザによるＵＩ部１９の操作指示により、ＵＩ部１９の表示面上で仮想オブジェクト４２Ａに対応するオブジェクト画像３０Ａの頂点の位置が調整されることで、曲げ形状の曲率が設定される。例えば、形状算出部１４Ｅは、ユーザの指によるピンチ操作などによって設定された曲率の二次元曲線から、三次元曲線を算出する。そして、形状算出部１４Ｅは、算出した三次元曲線に沿った曲面を有する、例えば、円柱状の仮想立体物４０Ａ２を算出する（図７（Ｂ）参照）。
【００６４】
また、ユーザの指によるピンチ操作などによって曲率が変更されると、形状算出部１４Ｅは変更後の曲率の二次元曲線から算出した三次元曲線に沿った曲面を有する、円柱状の仮想立体物４０Ａ３を算出する（図７（Ｃ）参照）。
【００６５】
このため、ユーザは、ＵＩ部１９の表示面上のピンチイン／ピンチアウトなどの簡易な操作によって、仮想オブジェクト４２の貼り付け対象の仮想立体物４０の、三次元形状を容易に操作入力することができる。例えば、ユーザは、ＵＩ部１９の表示面上のピンチイン操作で曲率を大きくし、ピンチアウト操作で曲率を小さくするように、操作入力することができる。
【００６６】
そして、形状算出部１４Ｅは、ユーザによるＵＩ部１９の操作指示によって操作入力された、ＵＩ部１９の表示面の二次元座標で表される曲げ形状情報に応じて、仮想立体物４０の三次元形状を容易に算出することができる。
【００６７】
また、曲げ形状情報は、仮想オブジェクト４２の曲げ方向を更に含んでいてもよい。
【００６８】
図８は、曲げ方向の説明図である。例えば、ユーザは、ＵＩ部１９の表示面上で、仮想オブジェクト４２に対応する表示されたオブジェクト画像３０の頂点の位置を調整することで、曲げ方向を操作入力する。
【００６９】
すなわち、ユーザによるＵＩ部１９の操作指示により、ＵＩ部１９の表示面上で仮想オブジェクト４２Ａに対応するオブジェクト画像３０Ａの頂点の位置が調整されることで、曲げ形状の曲率、および曲げ方向が設定される。例えば、ユーザは、オブジェクト画像３０の４頂点の何れかの位置を調整することで、曲げ方向を操作入力する。
【００７０】
曲げ方向には、例えば、４通りの方向がある。例えば、図８（Ａ）に示すように、平面状の仮想オブジェクト４２をＸ軸方向が長辺となるように仮想三次元空間に配置し、三次元座標のＺ軸方向に凸状に湾曲させる、曲げ方向がある。また、図８（Ｂ）に示すように、平面状の仮想オブジェクト４２をＹ軸方向が長辺となるように仮想三次元空間に配置し、三次元座標のＺ軸方向に凸状に湾曲させる、曲げ方向がある。また、図８（Ｃ）に示すように、平面状の仮想オブジェクト４２をＸ軸方向が長辺となるように仮想三次元空間に配置し、三次元座標の−Ｚ軸方向に凸状に湾曲させる、曲げ方向がある。また、図８（Ｄ）に示すように、平面状の仮想オブジェクト４２をＹ軸方向が長辺となるように仮想三次元空間に配置し、三次元座標の−Ｚ軸方向に凸状に湾曲させる、曲げ方向がある。
【００７１】
曲げ形状情報が曲げ方向を含む場合、形状算出部１４Ｅは、該曲げ形状情報に含まれる曲げ方向に曲がった曲面を有する仮想立体物４０の三次元形状を算出すればよい。
【００７２】
そして、射影部１４Ｆは、形状算出部１４Ｅで算出された仮想立体物４０の表面に仮想オブジェクト４２を貼り付ける。このため、図６（Ｃ）に示すように、仮想オブジェクト４２（例えば、仮想オブジェクト４２Ａ）は、形状算出部１４Ｅで算出された三次元形状の仮想立体物４０（例えば、仮想立体物４０Ａ）の表面に貼り付けられた状態となる。
【００７３】
そして、射影部１４Ｆは、この仮想立体物４０の表面に貼り付けられた仮想オブジェクト４２を、二次元空間に射影したオブジェクト画像３０を生成する。図９は、オブジェクト画像３０の説明図である。図９では、仮想オブジェクト４２Ａを仮想立体物４０Ａに貼り付けた状態を示すオブジェクト画像３０Ａを、一例として示した。
【００７４】
図９（Ａ）に示すように、オブジェクト画像３０Ａは、仮想三次元空間において仮想オブジェクト４２Ａを仮想立体物４０Ａの表面に貼り付けた状態を示す、二次元画像である。すなわち、オブジェクト画像３０Ａは、オブジェクト画像３０Ａを仮想三次元空間に配置した仮想オブジェクト４２Ａを、仮想の仮想立体物４０Ａの表面に貼り付けたかのような形状で示した、二次元画像である。
【００７５】
このため、ＵＩ部１９（表示部２０）には、実際には、仮想立体物４０（仮想立体物４０Ａ）は表示されず、オブジェクト画像３０Ａが、表示されない仮想立体物４０の表面に貼り付けられているかのような形状で表示されることとなる。
【００７６】
そして、合成部１４Ｇは、撮影画像５３上にオブジェクト画像３０Ａを合成した重畳画像５４を生成する。表示制御部１４Ｈは、重畳画像５４を、ＵＩ部１９へ表示することとなる。
【００７７】
ここで、更に、本実施の形態の表示処理部１４では、ユーザによるＵＩ部１９の操作指示により、オブジェクト画像３０を仮想オブジェクト４２上で移動させた状態を表示することが可能である。
【００７８】
図４に戻り、具体的には、第１受付部１４Ｊは、オブジェクト画像３０の仮想立体物４０上での移動量および移動方向を、二次元座標で示す第１移動指示を受付ける。この二次元座標は、ＵＩ部１９（表示部２０）の表示面上の二次元座標である。
【００７９】
例えば、ユーザは、ＵＩ部１９に表示されたオブジェクト画像３０をスライド操作する。ＵＩ部１９は、オブジェクト画像３０のスライド操作を受け付ける。すると、ＵＩ部１９は、スライド操作によって示されるＵＩ部１９の表示面上におけるオブジェクト画像３０の移動量および移動方向を、オブジェクト画像３０の仮想立体物４０上での移動量および移動方向として受け付け、第１移動指示として受付部１４Ｉへ出力する。
【００８０】
受付部１４Ｉの第１受付部１４Ｊは、ＵＩ部１９から、第１移動指示を受付ける。
【００８１】
移動部１４Ｌは、ＵＩ部１９に表示されているオブジェクト画像３０に対応する仮想オブジェクト４２を、受付けた第１移動指示に応じた移動量分、該第１移動指示に応じた移動方向へ、仮想立体物４０上で移動させる。
【００８２】
詳細には、移動部１４Ｌは、第１移動指示に含まれる、二次元座標によって示される移動量および移動方向から、上述した逆変換関数を用いて、仮想三次元空間における三次元座標によって示される移動量および移動方向を算出する。そして、移動部１４Ｌは、ＵＩ部１９に表示されているオブジェクト画像３０に対応する仮想オブジェクト４２を、該仮想オブジェクト４２の貼り付けられた仮想立体物４０上で、算出した三次元座標によって示される移動量および移動方向に移動させる。
【００８３】
図９を用いて具体的に説明する。例えば、オブジェクト画像３０Ｂの下方向への移動がユーザによるＵＩ部１９の操作指示によって操作入力されたとする。この場合、第１受付部１４Ｊは、ＵＩ部１９から、該下方向への移動を示す第１移動指示を受付ける。
【００８４】
すると、移動部１４Ｌは、ＵＩ部１９に表示されているオブジェクト画像３０Ａに対応する仮想オブジェクト４２Ａを、受付けた第１移動指示に応じた移動量分、該第１移動指示に応じた移動方向へ、仮想立体物４０Ａ上で移動させる。このため、例えば、表示部２０には、ユーザによる操作指示に応じた移動方向（下方向）および移動量、仮想立体物４０Ａ上を下方向に移動させたオブジェクト画像３０Ａが表示されることとなる（図９（Ｂ）参照）。
【００８５】
ここで、第１受付部１４Ｊが、仮想立体物４０の曲率方向に沿った移動方向を含む第１移動指示を受付けたとする。ここで、仮想立体物４０が円柱状であると仮定する。この場合、移動部１４Ｌは、円柱状の仮想立体物４０の円中心（円状の断面の中心）を回転中心として、仮想オブジェクト４２Ａを、操作指示された移動方向に応じた回転方向に回転させる（図９（Ｃ）参照）。
【００８６】
図１０は、仮想オブジェクト４２Ａの移動の説明図である。例えば、移動部１４Ｌは、図９（Ａ）に示す位置に位置する仮想オブジェクト４２Ａを、仮想立体物４０Ａの円中心を回転中心として、算出した移動方向（回転方向）に回転させる（図１０（Ｂ）参照）。
【００８７】
そして、射影部１４Ｆは、第１受付部１４Ｊが第１移動指示を受付けた場合、仮想立体物４０上の、該第１移動指示に応じて移動部１４Ｌによって移動された位置に貼り付けられた仮想オブジェクト４２Ａ（図１０（Ｂ）参照）を、二次元空間に射影したオブジェクト画像３０Ａを生成すればよい（図９（Ｃ）参照）。
【００８８】
そして、表示制御部１４Ｈは、撮影画像５３にオブジェクト画像３０Ａを重畳した重畳画像５４を表示部２０（ＵＩ部１９）へ表示すればよい。
【００８９】
このように、オブジェクト画像３０に対応する仮想オブジェクト４２を、円柱状の仮想立体物４０の中心を円中心として回転させることで、オブジェクト画像３０に対応する仮想オブジェクト４２が、仮想三次元空間上の仮想立体物４０の表面に沿って移動したかのような表示を行うことができる。このため、表示処理部１４は、ユーザに対して、様々な角度に配置した仮想オブジェクト４２の状態を、二次元のオブジェクト画像３０で確認可能に提供することができる。
【００９０】
このとき、表示制御部１４Ｈは、仮想オブジェクト４２を射影したオブジェクト画像３０における、該仮想オブジェクト４２の貼り付けられた仮想立体物４０の表示面側とは反対側の背面側の領域を非表示としたオブジェクト画像３０を、撮影画像５３に重畳した重畳画像５４を表示部２０へ表示することが好ましい。
【００９１】
すなわち、図１０（Ｂ）に示すように、仮想オブジェクト４２Ａの一部の領域が、視点位置ＺＡ側（すなわち、表示面側）から見たときに、仮想立体物４０Ａの背面側に位置する場合がある。図１０（Ｂ）に示す例では、仮想オブジェクト４２Ａにおける、領域ＰＡは仮想立体物４０Ａの前面側に位置しているが、領域ＰＢは仮想立体物４０Ａの背面側に位置している。
【００９２】
この場合、表示制御部１４Ｈは、仮想オブジェクト４２Ａにおける、仮想立体物４０Ａの背面側の領域ＰＢを非表示とすることが好ましい。
【００９３】
このため、図９（Ｃ）に示すように、表示制御部１４Ｈは、仮想オブジェクト４２Ａにおける、仮想立体物４０Ａの前面側の領域ＰＡのみを二次元空間に射影したオブジェクト画像３０Ａを、表示部２０に表示することとなる。
【００９４】
このため、本実施の形態の画像処理装置１０では、オブジェクト画像３０Ａの位置に応じて、オブジェクト画像３０Ａの一部が、あたかも仮想立体物４０Ａの背面側に隠れているかのような表示することが可能となる。また、画像処理装置１０では、遠近感を考慮した、オブジェクト画像３０Ａの表示が可能となる。
【００９５】
なお、仮想オブジェクト４２の貼り付け対象の仮想立体物４０の形状は、円柱状などの曲面を有する形状に限定されない。例えば、仮想立体物４０の形状は、隣接する２平面を含む形状であってもよい。具体的には、仮想立体物４０の形状は、四角柱などの、複数の平面を有する形状であってもよい。
【００９６】
図１１は、仮想立体物４０が四角柱である場合の、三次元形状算出の説明図である。なお、仮想立体物４０が四角柱である場合を、仮想立体物４０Ｂとして説明する。また、仮想立体物４０Ｂに貼り付ける仮想オブジェクト４２を、仮想オブジェクト４２Ｂとして説明する。
【００９７】
例えば、表示制御部１４Ｈは、貼り付け対象の仮想オブジェクト４２Ｂのオブジェクト画像３０ＢをＵＩ部１９に表示する。貼り付け対象の仮想オブジェクト４２Ｂは、例えば、ユーザによるＵＩ部１９の操作指示によって選択すればよい。射影部１４Ｆは、選択された仮想オブジェクト４２Ｂを二次元空間に射影することによって、オブジェクト画像３０Ｂを生成する。
【００９８】
表示制御部１４Ｈは、選択された仮想オブジェクト４２Ｂのオブジェクト画像３０ＢをＵＩ部１９に表示する。オブジェクト画像３０Ｂは、射影部１４Ｆによって仮想オブジェクト４２Ｂを射影することで得られたものである。
【００９９】
図１１（Ａ）は、選択された仮想オブジェクト４２Ｂのオブジェクト画像３０ＢがＵＩ部１９に表示された状態の一例を示す図である。図１１に示す例では、仮想オブジェクト４２Ｂが矩形状である場合を一例として説明する。
【０１００】
ユーザは、ＵＩ部１９に表示されたオブジェクト画像３０Ｂを用いて、該オブジェクト画像３０Ｂに対応する仮想オブジェクト４２Ｂの曲げ形状を操作入力する。図１１に示す例では、ユーザは、ＵＩ部１９の表示面上を操作することで、ＵＩ部１９に表示されたオブジェクト画像３０Ｂの曲げ位置を調整する。
【０１０１】
例えば、表示制御部１４Ｈは、仮想直線Ｌ１を表示する。ユーザは、画像処理装置１０に表示されたオブジェクト画像３０Ｂにおける、曲げ対象の領域を仮想直線Ｌ１に一致させるように、オブジェクト画像３０Ｂの表示位置をドラッグ操作などにより移動させる。なお、表示制御部１４Ｈは、撮影画像５３を解析し、直線状の領域を公知の画像処理によって抽出してもよい。そして、表示制御部１４Ｈは、撮影画像５３をＵＩ部１９に表示し、抽出した直線状の領域を、仮想直線Ｌ１として用いてもよい。
【０１０２】
取得部１４Ｄは、ＵＩ部１９に表示されたオブジェクト画像３０Ｂにおける、仮想直線Ｌ１に相当する位置を曲げ位置として示す、曲げ形状情報を取得する。
【０１０３】
この場合、形状算出部１４Ｅは、オブジェクト画像３０Ｂに対応する仮想オブジェクト４２Ｂを、曲げ形状情報に含まれる曲げ位置で折り曲げた隣接する２平面を含む、仮想立体物４０Ｂの三次元形状を算出する。
【０１０４】
具体的には、図１１（Ｂ）に示すように、形状算出部１４Ｅは、オブジェクト画像３０Ｂに対応する仮想オブジェクト４２Ｂを、曲げ形状情報に含まれる曲げ位置で折り曲げた２平面を含む、立方体状の仮想立体物４０Ｂを算出する。
【０１０５】
このように、ユーザによるＵＩ部１９の操作指示によって、ＵＩ部１９（表示部２０）の二次元デバイス座標を用いて、曲げ位置を含む曲げ形状情報が入力される。このため、ユーザは、任意の曲げ位置を、ＵＩ部１９の二次元デバイス座標を用いて入力することができる。
【０１０６】
射影部１４Ｆは、形状算出部１４Ｅによって算出された形状（例えば、立方体状）の仮想物体４０Ｂの表面における、２平面の境界に操作指示された曲げ位置が一致するように、仮想オブジェクト４２Ｂを貼り付ける（図１１（Ｃ）参照）。そして、形状算出部１４Ｅは、この仮想立体物４０Ｂの表面に貼り付けた仮想オブジェクト４２Ｂを、二次元空間に射影したオブジェクト画像３０Ｂを生成する。そして、表示制御部１４Ｈは、撮影画像５３にオブジェクト画像３０Ｂを重畳した重畳画像５４を、ＵＩ部１９（表示部２０）へ表示する。
【０１０７】
図１２は、仮想立体物４０の形状算出の説明図である。ユーザによって曲げ位置が操作入力されていない状態では、仮想オブジェクト４２Ｂは、仮想三次元空間におけるＸＹ平面に沿って平面状に配置される。形状算出部１４Ｅは、仮想オブジェクト４２Ｂを、曲げ形状情報によって示される曲げ位置で、ｙ軸に沿って９０°折り曲げる。ユーザによるＵＩ部１９の操作指示によって入力された折り曲げ位置を変えることで、仮想オブジェクト４２Ｂが、仮想立体物４０Ｂの隣接する２平面の境界で折り曲げられながら、仮想立体物４０Ｂの表面を貼り付いた状態で該仮想立体物４０Ｂ上を移動しているかのような表示を行うことが可能となる（図１２（Ａ）、図１２（Ｂ）、および図１２（Ｃ）参照）。
【０１０８】
図１１に戻り、曲げ形状情報は、曲げ角度を含んでもよい。ユーザは、ＵＩ部１９の操作指示によって、曲げ位置を指定すると共に、曲げ角度を操作入力する。例えば、ユーザは、ＵＩ部１９の操作指示によって曲げ位置を指定した後に、ＵＩ部１９の操作指示によって、オブジェクト画像３０Ｂの４頂点の内の２頂点の、折り曲げ後の位置を操作入力する。すると、取得部１４Ｄは、曲げ角度を更に含む曲げ形状情報を取得する。
【０１０９】
この場合、形状算出部１４Ｅは、隣接する２平面の成す角度が、曲げ形状情報に含まれる曲げ角度を示す、仮想立体物４０Ｂの三次元形状を算出すればよい。
【０１１０】
この場合、図１１（Ｂ）に示すように、形状算出部１４Ｅは、隣接する２平面の成す角度が、曲げ形状情報に含まれる曲げ角度θを示す、仮想立体物４０Ｂの三次元形状を算出する。
【０１１１】
また、形状算出部１４Ｅは、仮想オブジェクト４２Ｂにおける、取得した曲げ形状情報に含まれる曲げ位置から曲げ方向の一方の辺までの長さを、２平面の一方の平面の長さとし、曲げ位置から他方の辺までの長さを２平面の他方の平面の長さとする、仮想立体物４０Ｂの三次元形状を算出することが好ましい。
【０１１２】
仮想オブジェクト４２Ｂにおける、曲げ位置から曲げ方向の一方の辺、とは、仮想オブジェクト４２Ｂを、操作入力された曲げ位置で折り曲げたときに、該仮想オブジェクト４２Ｂの該折り曲げ位置に沿った直線に略平行な２辺の内の一方の辺である。そして、上記他方の辺とは、この２辺の内の他方の辺である。
【０１１３】
このため、ユーザは、ＵＩ部１９の表示面上で仮想オブジェクト４２Ｂに対応するオブジェクト画像３０Ｂの形状を調整することで、仮想オブジェクト４２Ａの貼り付け対象の仮想立体物４０Ｂの三次元形状（幅、奥行き、２平面の成す角度）を容易に操作入力することができる。
【０１１４】
また、上記と同様に、曲げ形状情報は、仮想オブジェクト４２Ｂの曲げ方向を更に含んでいてもよい。
【０１１５】
そして、射影部１４Ｆは、形状算出部１４Ｅで算出された三次元形状の仮想立体物４０Ｂの表面に、仮想オブジェクト４２Ｂを貼り付ける。このため、図１１（Ｃ）に示すように、仮想オブジェクト４２Ｂは、形状算出部１４Ｅで算出された三次元形状の仮想立体物４０Ｂの表面の２平面に、曲げ位置Ｌ１で折り曲げられて貼り付けられた状態となる。
【０１１６】
そして、射影部１４Ｆは、この仮想立体物４０Ｂの表面に貼り付けられた仮想オブジェクト４２Ｂを、二次元空間に射影したオブジェクト画像３０Ｂを生成する。図１３は、オブジェクト画像３０Ｂの説明図である。
【０１１７】
図１３（Ａ）に示すように、オブジェクト画像３０Ｂは、仮想三次元空間において仮想オブジェクト４２Ｂを仮想立体物４０Ｂの表面に貼り付けた状態を示す、二次元画像である。合成部１４Ｇは、撮影画像５３上にオブジェクト画像３０を合成した重畳画像５４を生成する。表示制御部１４Ｈは、重畳画像５４を、ＵＩ部１９へ表示することとなる。
【０１１８】
なお、仮想立体物４０は、あくまでの仮想オブジェクト４２の貼り付け対象であって、仮想オブジェクト４２の形状を決定するために用いるものであり、仮想立体物４０はＵＩ部１９へ表示されない。
【０１１９】
また、第１受付部１４Ｊは、オブジェクト画像３０Ｂの仮想立体物４０Ｂ上での移動量および移動方向を、二次元座標で示す第１移動指示を受付ける。受付部１４Ｉの第１受付部１４Ｊは、ＵＩ部１９から、第１移動指示を受付ける。
【０１２０】
移動部１４Ｌは、ＵＩ部１９に表示されているオブジェクト画像３０Ｂに対応する仮想オブジェクト４２Ｂを、受付けた第１移動指示に応じた移動量分、該第１移動指示に応じた移動方向へ、仮想立体物４０Ｂ上で移動させる。
【０１２１】
そして、射影部１４Ｆは、第１受付部１４Ｊが第１移動指示を受付けた場合、仮想立体物４０Ｂ上の、移動部１４Ｌによって移動された位置に貼り付けられた仮想オブジェクト４２Ｂ（図１３（Ａ）、図１３（Ｂ）参照）を、二次元空間に射影したオブジェクト画像３０を生成すればよい。
【０１２２】
そして、表示制御部１４Ｈは、撮影画像５３にオブジェクト画像３０を重畳した重畳画像５４を表示部２０（ＵＩ部１９）へ表示する。
【０１２３】
このため、オブジェクト画像３０Ｂが、仮想立体物４０Ｂ上を第１指示に応じた移動量分、かつ移動方向へ移動した状態が、ＵＩ部１９に表示されることとなる。
【０１２４】
なお、仮想立体物４０が立方体状の仮想立体物４０Ｂである場合についても同様に、曲げ形状情報は、仮想オブジェクト４２Ｂの曲げ方向を更に含んでいてもよい。この場合、形状算出部１４Ｅは、曲げ形状情報に含まれる曲げ方向に、該曲げ形状情報に含まれる曲げ位置で曲げた２平面を有する仮想立体物４０Ｂの三次元形状を算出すればよい。
【０１２５】
なお、仮想立体物４０が立方体状である場合についても同様に、表示制御部１４Ｈは、仮想オブジェクト４２を射影したオブジェクト画像３０における、該仮想オブジェクト４２の貼り付けられた仮想立体物４０の表示面とは反対側の背面側の領域を非表示とすることが好ましい。
【０１２６】
図４に戻り説明を続ける。
【０１２７】
第２受付部１４Ｋは、オブジェクト画像３０の、ＵＩ部１９の表示面上での移動量および移動方向を、二次元座標で示す第２移動指示を受付ける。第２移動指示は、オブジェクト画像３０を、仮想立体物４０上ではなく、ＵＩ部１９の表示面内で移動させることを示す。言い換えると、第２移動指示は、オブジェクト画像３０に対応する仮想オブジェクト４２を、仮想立体物４０に貼り付けた状態のままで、表示面内を移動させることを示す。
【０１２８】
関数補正部１４Ｍは、第２移動指示に応じた移動量および方向に、仮想オブジェクト４２が二次元座標上で移動するように、仮想オブジェクト４２を二次元空間に射影するための変換関数を補正する。
【０１２９】
例えば、関数補正部１４Ｍは、二次元座標での平行移動量を、変換関数の逆関数により三次元座標での平行移動量に変換する。そして、関数補正部１４Ｍは、変換した三次元座標での平行移動量分、仮想オブジェクト４２を移動させるように変換関数を補正する。
【０１３０】
この場合、射影部１４Ｆは、関数補正部１４Ｍで補正された変換関数に基づいて、オブジェクト画像３０を生成する。
【０１３１】
図１４は、オブジェクト画像３０の移動の説明図である。例えば、ユーザによるＵＩ部１９の操作指示によって、オブジェクト画像３０の図１４（Ａ）中右方向への移動が操作指示されたとする。この場合、関数補正部１４Ｍが補正した変換関数を用いて、射影部１４Ｆがオブジェクト画像３０を生成する。すると、図１４（Ｂ）に示すように、オブジェクト画像３０が操作指示によって指示された方向に移動した重畳画像５４が、ＵＩ部１９に表示されることとなる。
【０１３２】
光源設定部１４Ｏは、光源の光源効果を示す光源情報を設定する。本実施の形態では、光源設定部１４Ｏは、受付部１４Ｉで受け付けた光源情報を設定する。ユーザは、ＵＩ部１９を操作することで、オブジェクト画像３０に付与する光源効果を示す光源情報を入力する。受付部１４Ｉは、ＵＩ部１９から光源情報を受付け、光源設定部１４Ｏは、受付けた光源情報を設定する。
【０１３３】
受付部１４Ｉが光源情報を受け付け、光源設定部１４Ｏが光源情報を設定した場合、表示制御部１４Ｈは、オブジェクト画像３０に、光源情報によって示される光源効果を付与することが好ましい。光源効果の付与には、Ｏｐｅｎ  ＧＬを用いればよい。
【０１３４】
姿勢補正部１４Ｎは、仮想オブジェクト４２の姿勢を補正する。図１５は、姿勢補正の説明図である。姿勢補正部１４Ｎは、姿勢検出部１４Ａが検出した姿勢情報に応じて、仮想オブジェクト４２の姿勢を補正する。
【０１３５】
具体的には、実空間における画像処理装置１０の撮影部１２の、初期設定時における初期姿勢からの変化量（姿勢変換量）をＡ＝（α，β，γ）とした場合、姿勢補正部１４Ｎは、仮想オブジェクト４２の姿勢を、姿勢変換量Ａに逆符号を乗じた姿勢補正量Ｂ＝（−α，−β，−γ）分、基準姿勢から回転補正する。
【０１３６】
具体的には、姿勢検出部１４Ａが、姿勢情報として、互いに直交するｘ軸、ｙ軸およびｚ軸のそれぞれを中心とした、初期姿勢からの回転角の変化量（ロール角の変化量α、ピッチ角の変化量βおよびヨー角の変化量γ）を検出する。そして、姿勢補正部１４Ｎは、三次元座標において、仮想オブジェクト４２のロール角、ピッチ角およびヨー角のそれぞれを、予め設定されている基準姿勢から、姿勢情報とは逆符号の回転角分（−α，−β，−γ）、回転させる。これにより、姿勢補正部１４Ｎは、仮想オブジェクト４２の姿勢を画像処理装置１０の撮影部１２の姿勢の変化とは逆に動かすように補正する。
【０１３７】
図１６は、姿勢変化に応じた、オブジェクト画像３０の形状変化の説明図である。姿勢補正部１４Ｎが仮想オブジェクトの姿勢を補正した結果、画像処理装置１０は、撮影方向が変化した場合であっても、静止している物体を異なる方向から撮影したように、オブジェクト画像３０の形状を変化させることができる。
【０１３８】
例えば、図１６に示すように、画像処理装置１０は、撮影方向を例えばＡ１，Ａ２，Ａ３のように変化させた場合には、オブジェクト画像３０が壁３１に貼り付いているかのように、オブジェクト画像３０の形状を変化させることができる。
【０１３９】
次に、表示処理部１４で実行する表示処理を説明する。
【０１４０】
図１７は、本実施の形態の表示処理部１４で実行する表示処理の手順を示すフローチャートである。
【０１４１】
まず、受付部１４Ｉが、貼り付け対象の仮想オブジェクト４２の選択をＵＩ部１９から受け付ける（ステップＳ１００）。次に、撮影部１２が撮影を開始する（ステップＳ１０２）。ステップＳ１０２の処理によって、撮影画像の取得が開始される。
【０１４２】
次に、受付部１４Ｉが、ＵＩ部１９から曲げ形状の操作入力を取得したか否かを判断する（ステップＳ１０４）。ステップＳ１０４で否定判断すると（ステップＳ１０４：Ｎｏ）、本ルーチンを終了する。一方、ステップＳ１０４で肯定判断すると（ステップＳ１０４：Ｙｅｓ）ステップＳ１０６へ進む。
【０１４３】
ステップＳ１０６では、取得部１４Ｄが、曲げ形状情報を取得する（ステップＳ１０６）。次に、形状算出部１４Ｅが、ステップＳ１０６で取得した曲げ形状情報に応じて、仮想立体物４０の三次元形状を算出する（ステップＳ１０８）。
【０１４４】
次に、射影部１４Ｆが、ステップＳ１０８で算出された三次元形状の仮想立体物４０の表面に、ステップＳ１００で受け付けた仮想オブジェクト４２を貼り付ける。そして、貼り付けた仮想オブジェクト４２を二次元空間に射影したオブジェクト画像３０を生成する（ステップＳ１１０）。
【０１４５】
次に、合成部１４Ｇが、撮影画像５３とステップＳ１１０で生成されたオブジェクト画像３０と、を合成した重畳画像５４を生成する（ステップＳ１１２）。表示制御部１４Ｈは、ステップＳ１１２で生成された重畳画像５４をＵＩ部１９（表示部２０）へ表示する（ステップＳ１１４）。
【０１４６】
次に、表示処理部１４は、表示処理を終了するか否かを判断する（ステップＳ１１６）。ステップＳ１１６の判断は、例えば、ＵＩ部１９から終了を示す操作指示がユーザによって操作入力されたか否かを判別することで行う。ステップＳ１１６で否定判断すると（ステップＳ１１６：Ｎｏ）、ステップＳ１０４へ戻る。一方、ステップＳ１１６で肯定判断すると（ステップＳ１１６：Ｙｅｓ）、本ルーチンを終了する。
【０１４７】
表示処理部１４では、図１７の表示処理時に、図１８および図１９に示す割り込み処理（第１の割り込み処理、第２の割り込み処理）を実行する。
【０１４８】
図１８は、第１の割り込み処理の手順を示すフローチャートである。
【０１４９】
まず、第１受付部１４Ｊが、第１移動指示をＵＩ部１９から受け付けたか否かを判断する（ステップＳ２００）。ステップＳ２００で否定判断すると（ステップＳ２００：Ｎｏ）、本ルーチンを終了する。一方、ステップＳ２００で肯定判断すると（ステップＳ２００：Ｙｅｓ）、ステップＳ２０２へ進む。
【０１５０】
ステップＳ２０２では、移動部１４Ｌが、ステップＳ２００で受け付けた第１移動指示に応じた移動量分、該第１移動指示に応じた移動方向へ、仮想オブジェクト４２を仮想立体物４０上で移動させる（ステップＳ２０２）。
【０１５１】
射影部１４Ｆは、仮想立体物４０上の、ステップＳ２０２による処理によって移動された位置に貼り付けられた仮想オブジェクト４２を二次元空間に射影した、オブジェクト画像３０を生成する（ステップＳ２０４）。
【０１５２】
合成部１４Ｇは、撮影画像５３上に、ステップＳ２０４で生成されたオブジェクト画像３０を合成した重畳画像５４を生成する（ステップＳ２０６）。次に、表示制御部１４Ｈは、重畳画像５４をＵＩ部１９（表示部２０）へ表示する（ステップＳ２０８）。そして、本ルーチンを終了する。
【０１５３】
図１９は、第２の割り込み処理の手順を示すフローチャートである。
【０１５４】
まず、第２受付部１４Ｋが、第２移動指示をＵＩ部１９から受け付けたか否かを判断する（ステップＳ３００）。ステップＳ３００で否定判断すると（ステップＳ３００：Ｎｏ）、本ルーチンを終了する。ステップＳ３００で肯定判断すると（ステップＳ３００：Ｙｅｓ）、ステップＳ３０２へ進む。
【０１５５】
ステップＳ３０２では、姿勢補正部１４Ｎが、ステップＳ３００で受け付けた第２移動指示に応じた移動量および方向に、仮想オブジェクト４２が二次元座標上で移動するように、仮想オブジェクト４２を二次元空間に射影するための変換関数を補正する（ステップＳ３０２）。また、姿勢補正部１４Ｎはが、姿勢検出部１４Ａで検出された姿勢に応じて、仮想オブジェクト４２の姿勢を補正する。
【０１５６】
次に、射影部１４Ｆは、ステップＳ３０２で補正された変換関数を用いて、姿勢を補正された仮想オブジェクト４２を射影し、オブジェクト画像３０を生成する（ステップＳ３０４）。次に、合成部１４Ｇが、撮影画像５３上に、ステップＳ３０４で生成されたオブジェクト画像３０を合成した重畳画像５４を生成する（ステップＳ３０６）。次に、表示制御部１４Ｈが、重畳画像５４をＵＩ部１９（表示部２０）へ表示する（ステップＳ３０８）。そして、本ルーチンを終了する。
【０１５７】
なお、表示処理部１４では、姿勢検出部１４Ａが新たな姿勢情報を検出する度に、姿勢補正部１４Ｎが、仮想オブジェクト４２の姿勢を補正する割り込み処理を更に実行する。そして、表示制御部１４Ｈは、姿勢補正部１４Ｎによって姿勢が補正されると、補正後の姿勢の仮想オブジェクト４２を二次元空間に射影したオブジェクト画像３０を表示部２０へ表示すればよい。
【０１５８】
以上説明したように、本実施の形態の画像処理装置１０は、撮影部１２と、取得部１４Ｄと、形状算出部１４Ｅと、射影部１４Ｆと、表示制御部１４Ｈと、を備える。撮影部１２は、撮影画像５３を得る。取得部１４Ｄは、仮想三次元空間に配置する仮想オブジェクト４２の曲げ形状を、表示部２０の表示面を表す二次元デバイス座標で表した、曲げ形状情報を取得する。形状算出部１４Ｅは、曲げ形状情報に応じて、仮想オブジェクト４２の貼り付け対象を示す仮想立体物４０の三次元形状を算出する。射影部１４Ｆは、仮想立体物４０の表面に貼り付けた仮想オブジェクト４２を、二次元空間に射影したオブジェクト画像３０を生成する。表示制御部１４Ｈは、撮影画像５３にオブジェクト画像３０を重畳した重畳画像５４を、表示部２０へ表示する。
【０１５９】
このように、本実施の形態の画像処理装置１０では、ユーザによるＵＩ部１９の操作指示によって操作入力された、ＵＩ部１９（表示部２０）の表示面を表す二次元デバイス座標で表される曲げ形状情報を取得する。そして、画像処理装置１０の形状算出部１４Ｅは、曲げ形状情報に応じて、仮想オブジェクト４２の貼り付け対象である仮想立体物４０の三次元形状を算出する。そして、画像処理装置１０では、算出した三次元形状の仮想立体物４０に貼り付けられた状態の仮想オブジェクト４２に対応するオブジェクト画像３０を、表示部２０に表示する。
【０１６０】
従って、本実施の形態の画像処理装置１０では、仮想オブジェクト４２を任意の形状の仮想立体物４０に貼り付けた状態を示す画像を容易に提供することができる。
【０１６１】
また、形状算出部１４Ｅは、曲げ形状情報に応じた三次元曲線に沿った曲面を有する、仮想立体物４０の三次元形状を算出する。
【０１６２】
また、曲げ形状情報は、仮想オブジェクト４２の曲げ方向を含む。そして、形状算出部１４Ｅは、この曲げ方向に曲がった曲面を有する、仮想立体物４０の三次元形状を算出する。
【０１６３】
また、曲げ形状情報は、仮想オブジェクト４２の曲げ位置を含む。形状算出部１４Ｅは、曲げ位置で折り曲げた隣接する２平面を含む、仮想立体物４０の三次元形状を算出する。そして、射影部１４Ｆは、仮想立体物４０の表面における、２平面の境界に曲げ位置が一致するように貼り付けた仮想オブジェクト４２を二次元空間に射影したオブジェクト画像３０を生成する。
【０１６４】
また、曲げ形状情報は、曲げ角度を含む。そして、形状算出部１４Ｅは、隣接する２平面の成す角度が、曲げ形状情報に含まれる曲げ角度を示す仮想立体物４０の三次元形状を算出する。
【０１６５】
形状算出部１４Ｅは、仮想オブジェクト４２の、曲げ位置から曲げ方向の一方の辺までの長さを２平面の一方の平面の長さとし、曲げ位置から他方の辺までの長さを２平面の他方の平面の長さとする、仮想立体物４０の三次元形状を算出する。
【０１６６】
また、曲げ形状情報は、仮想オブジェクト４２の曲げ方向を含む。形状算出部１４Ｅは、曲げ方向に曲がった２平面を含む、仮想立体物４０の三次元形状を算出する。
【０１６７】
表示制御部１４Ｈは、仮想オブジェクト４２を射影したオブジェクト画像３０における、該仮想オブジェクト４２の貼り付けられた仮想立体物４０の表示面側とは反対側の背面側の領域を非表示としたオブジェクト画像３０を、撮影画像５３に重畳した重畳画像５４を表示部２０へ表示する。
【０１６８】
また、画像処理装置１０は、第１受付部１４Ｊと、移動部１４Ｌと、を更に備える。第１受付部１４Ｊは、オブジェクト画像３０の仮想立体物４０上での移動量および移動方向を、二次元座標で示す第１移動指示を受付ける。移動部１４Ｌは、仮想オブジェクト４２を、第１移動指示に応じた移動量分、第１移動指示に応じた移動方向へ、仮想立体物４０上で移動させる。射影部１４Ｆは、第１受付部１４Ｊが第１移動指示を受付けた場合、仮想立体物４０上の移動された位置に貼り付けられた仮想オブジェクト４２を二次元空間に射影したオブジェクト画像３０を生成する。
【０１６９】
また、画像処理装置１０は、第２受付部１４Ｋと、関数補正部１４Ｍと、を備える。第２受付部１４Ｋは、オブジェクト画像３０の表示面上での移動量および移動方向を二次元座標で示す第２移動指示を受付ける。関数補正部１４Ｍは、第２移動指示に応じた移動量および方向に、仮想オブジェクト４２が二次元座標上で移動するように、仮想オブジェクト４２を二次元空間に射影するための変換関数を補正する。第２受付部１４Ｋが第２移動指示を受付けた場合、射影部１４Ｆは、関数補正部１４Ｍによって補正された変換関数に基づき、オブジェクト画像３０を生成する。
【０１７０】
次に、上述した画像処理装置１０のハードウェア構成について説明する。
【０１７１】
図２０は、画像処理装置１０のハードウェア構成図である。画像処理装置１０は、ハードウェア構成として、装置全体を制御するＣＰＵ２９０１と、各種データや各種プログラムを記憶するＲＯＭ２９０２と、各種データや各種プログラムを記憶するＲＡＭ２９０３と、ＵＩ装置２９０４と、撮影装置２９０５と、検出器２９０６と、を主に備えており、通常のコンピュータを利用したハードウェア構成となっている。なお、ＵＩ装置２９０４は、図１のＵＩ部１９に相当し、撮影装置２９０５は、撮影部１２に相当し、検出器２９０６は、検知部２５に相当する。
【０１７２】
上記実施の形態の画像処理装置１０で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されてコンピュータプログラムプロダクトとして提供される。
【０１７３】
また、上記実施の形態の画像処理装置１０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上記実施の形態の画像処理装置１０で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１７４】
また、上記実施の形態の画像処理装置１０で実行されるプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１７５】
上記実施の形態の画像処理装置１０で実行されるプログラムは、上述した各部を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記録媒体からプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上記各部が主記憶装置上に生成されるようになっている。
【０１７６】
なお、本発明は上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせてもよい。また、種々の変形が可能である。
【符号の説明】
【０１７７】
１０  画像処理装置
１４Ｄ  取得部
１４Ｅ  形状算出部
１４Ｆ  射影部
１４Ｈ  表示制御部
１４Ｊ  第１受付部
１４Ｋ  第２受付部
１４Ｌ  移動部
１４Ｍ  関数補正部
１９  ＵＩ部
２０  表示部
２５  検知部
３０、３０Ａ、３０Ｂ  オブジェクト画像
４０、４０Ａ、４０Ｂ  仮想立体物
４２、４２Ａ、４２Ｂ  仮想オブジェクト
５３  撮影画像
５４  重畳画像
【先行技術文献】
【特許文献】
【０１７８】
【特許文献１】特開２００７−０４８０８４号公報
【図１】
2016139201.tif 000003
【図２】
2016139201.tif 000004
【図３】
2016139201.tif 000005
【図４】
2016139201.tif 000006
【図５】
2016139201.tif 000007
【図６】
2016139201.tif 000008
【図７】
2016139201.tif 000009
【図８】
2016139201.tif 000010
【図９】
2016139201.tif 000011
【図１０】
2016139201.tif 000012
【図１１】
2016139201.tif 000013
【図１２】
2016139201.tif 000014
【図１３】
2016139201.tif 000015
【図１４】
2016139201.tif 000016
【図１５】
2016139201.tif 000017
【図１６】
2016139201.tif 000018
【図１７】
2016139201.tif 000019
【図１８】
2016139201.tif 000020
【図１９】
2016139201.tif 000021
【図２０】
2016139201.tif 000022