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