(57)【要約】【課題】仮想三次元空間における、視線方向とオブジェクトの位置の双方を同時に変更する。【解決手段】画像処理装置の設定部２７は、仮想三次元空間における、原稿画像を配置する配置面を設定する。表示制御部２８は、仮想三次元空間における、配置面に原稿画像を配置した状態を、予め定めた視点位置から視線方向に視認した二次元画像に変換した表示画像を、表示部に表示する制御を行う。受付部２５は、視線方向の変更指示と、原稿画像の配置位置の変更指示と、を含む同時変更指示を受付ける。表示制御部２８は、同時変更指示を受付けた場合、配置面に沿った仮想面に沿って、視線方向の変更指示に応じた方向に原稿画像を移動させた状態を、視点位置から変更後の視線方向に視認した二次元画像に変換した表示画像を、表示部に表示する制御を行う。【選択図】図２
2018010473.tif 000002
【特許請求の範囲】
【請求項１】
仮想三次元空間における、オブジェクトを配置する配置面を設定する設定部と、
前記仮想三次元空間における、前記配置面に前記オブジェクトを配置した状態を、予め定めた視点位置から視線方向に視認した二次元画像に変換した表示画像を、表示部に表示する制御を行う表示制御部と、
前記視線方向の変更指示と、前記オブジェクトの配置位置の変更指示と、を含む同時変更指示を受付ける受付部と、
を備え、
前記表示制御部は、
前記同時変更指示を受付けた場合、前記配置面に沿った仮想面に沿って、前記視線方向の変更指示に応じた方向に前記オブジェクトを移動させた状態を、前記視点位置から変更後の視線方向に視認した二次元画像に変換した前記表示画像を、前記表示部に表示する制御を行う、
画像処理装置。
【請求項２】
前記受付部が、予め定めた角度以上の視線方向の変更指示を含む前記同時変更指示を受付けたか否かを判別する判別部と、
予め定めた角度以上の視線方向の変更指示を含む前記同時変更指示を受付けたと判別したときに、前記仮想三次元空間における、前記配置面を視線方向の変更に応じて変更した平面を、新たな前記配置面として再設定する再設定部と、を備え、
前記表示制御部は、再設定された前記配置面に前記オブジェクトを配置した状態を、前記視点位置から変更後の視線方向に視認した二次元画像に変換した前記表示画像を、前記表示部に表示する制御を行う、
請求項１に記載の画像処理装置。
【請求項３】
前記再設定部は、予め定めた角度以上の視線方向の変更指示を含む前記同時変更指示を受付けたと判別したときに、前記仮想三次元空間における、変更後の視線方向に直交する平面を、新たな前記配置面として再設定する、請求項２に記載の画像処理装置。
【請求項４】
前記表示制御部は、前記仮想三次元空間の三次元空間画像における、前記配置面に前記オブジェクトを配置した状態を、前記視点位置から前記視線方向に視認した二次元画像に変換した表示画像を、前記表示部に表示する制御を行い、
前記三次元空間画像は、全方位の撮影によって得られる全天球パノラマ画像である、請求項１〜請求項３の何れか１項に記載の画像処理装置。
【請求項５】
前記オブジェクトは、二次元画像である、請求項１〜請求項４の何れか１項に記載の画像処理装置。
【請求項６】
光源の光源効果を示す光源情報を受け付ける光源受付部を備え、
前記表示制御部は、
前記仮想三次元空間における、前記配置面に、前記光源情報によって示される光源効果を付与した前記オブジェクトを配置した状態を、予め定めた視点位置から視線方向に視認した二次元画像に変換した前記表示画像を、前記表示部に表示する
請求項１〜請求項５の何れか１項に記載の画像処理装置。
【請求項７】
仮想三次元空間における、オブジェクトを配置する配置面を設定する設定ステップと、
前記仮想三次元空間における、前記配置面に前記オブジェクトを配置した状態を、予め定めた視点位置から視線方向に視認した二次元画像に変換した表示画像を、表示部に表示する表示ステップと、
前記視線方向の変更指示と、前記オブジェクトの配置位置の変更指示と、を含む同時変更指示を受付ける受付ステップと、
を含み、
前記表示ステップは、
前記同時変更指示を受付けた場合、前記配置面に沿った仮想面に沿って、前記視線方向の変更指示に応じた方向に前記オブジェクトを移動させた状態を、前記視点位置から変更後の視線方向に視認した二次元画像に変換した前記表示画像を、前記表示部に表示する、
画像処理方法。
【請求項８】
仮想三次元空間における、オブジェクトを配置する配置面を設定する設定ステップと、
前記仮想三次元空間における、前記配置面に前記オブジェクトを配置した状態を、予め定めた視点位置から視線方向に視認した二次元画像に変換した表示画像を、表示部に表示する表示ステップと、
前記視線方向の変更指示と、前記オブジェクトの配置位置の変更指示と、を含む同時変更指示を受付ける受付ステップと、
をコンピュータに実行させるための画像処理プログラムであって、
前記表示ステップは、
前記同時変更指示を受付けた場合、前記配置面に沿った仮想面に沿って、前記視線方向の変更指示に応じた方向に前記オブジェクトを移動させた状態を、前記視点位置から変更後の視線方向に視認した二次元画像に変換した前記表示画像を、前記表示部に表示する、
画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、および画像処理プログラムに関する。
【背景技術】
【０００２】
仮想三次元空間における、視線方向に応じた画像を表示する技術が知られている。例えば、パノラマ画像における視線方向をユーザの操作に応じて変化させ、視線方向に応じた画像を表示する技術が知られている。また、現実世界または仮想世界を表す三次元空間において決定される視線方向にオブジェクトを配置し、該視線方向によって決められる視野範囲の画像を表示する技術が知られている。
【０００３】
例えば、特許文献１には、三次元空間に設定される基準面にオブジェクトを配置する第１制御モードと、基準面から離れた位置にオブジェクトを配置する第２制御モードと、を視線方向に応じて切替えることが開示されている。具体的には、特許文献１には、視線方向の変更によってオブジェクトが非表示となる場合、基準面から離れた位置にオブジェクトを配置することが開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、従来では、視線方向とオブジェクトの位置の双方を同時に変更することは出来なかった。本発明は、上記に鑑みてなされたものであって、仮想三次元空間における視線方向とオブジェクトの位置の双方を、同時に変更することを課題とする。
【課題を解決するための手段】
【０００５】
上述した課題を解決し、目的を達成するために、本発明の画像処理装置は、仮想三次元空間における、オブジェクトを配置する配置面を設定する設定部と、前記仮想三次元空間における、前記配置面に前記オブジェクトを配置した状態を、予め定めた視点位置から視線方向に視認した二次元画像に変換した表示画像を、表示部に表示する制御を行う表示制御部と、前記視線方向の変更指示と、前記オブジェクトの配置位置の変更指示と、を含む同時変更指示を受付ける受付部と、を備え、前記表示制御部は、前記同時変更指示を受付けた場合、前記配置面に沿った仮想面に沿って、前記視線方向の変更指示に応じた方向に前記オブジェクトを移動させた状態を、前記視点位置から変更後の視線方向に視認した二次元画像に変換した前記表示画像を、前記表示部に表示する制御を行う。
【発明の効果】
【０００６】
本発明によれば、仮想三次元空間における視線方向とオブジェクトの位置の双方を、同時に変更することができる、という効果を奏する。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施の形態の画像処理装置の模式図である。
【図２】図２は、画像処理部の機能構成を示すブロック図である。
【図３】図３は、デバイス座標と、指定される表示領域と、の説明図である。
【図４】図４は、表示領域情報のデータ構造の一例を示す図である。
【図５】図５は、ユーザによって指定された表示領域の４頂点と、表示領域を示す画像と、の関係の一例を示す図である。
【図６】図６は、光源情報テーブルのデータ構造の一例を示す図である。
【図７】図７は、原稿反射情報テーブルのデータ構造の一例を示す図である。
【図８】図８は、設定部の機能ブロック図である。
【図９】図９は、仮想三次元空間に仮配置した原稿面を示す説明図である。
【図１０】図１０は、初期配置座標の一例を示す図である。
【図１１】図１１は、射影行列の算出の説明図である。
【図１２】図１２は、ＯｐｅｎＧＬによる変換ステージと射影行列との関係の説明図である。
【図１３】図１３は、デバイス座標と、傾き・位置行列と、投影行列Ｂと、の関係を示す説明図である。
【図１４】図１４は、画像処理部における表示処理の一連の流れを示す模式図である。
【図１５】図１５は、表示画面の一例を示す図である。
【図１６】図１６は、移動、拡大縮小、回転の説明図である。
【図１７】図１７は、視線方向変更の説明図である。
【図１８】図１８は、視線方向を変更した場合の、表示画像の一例を示す模式図である。
【図１９】図１９は、表示画像の一例を示す模式図である。
【図２０】図２０は、仮想三次元空間における原稿画像の位置を示す模式図である。
【図２１】図２１は、表示処理の流れの説明図である。
【図２２】図２２は、画像処理の一例を示すフローチャートである。
【図２３】図２３は、画像処理装置のハードウェア構成図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施の形態を詳細に説明する。
【０００９】
図１は、本実施の形態の画像処理装置１０の模式図である。
【００１０】
画像処理装置１０は、表示画像を表示部２０へ表示する装置である。
【００１１】
画像処理装置１０は、撮影部１２と、画像処理部１４と、記憶部１６と、入力部１８と、表示部２０と、を備える。撮影部１２、画像処理部１４、記憶部１６、入力部１８、及び表示部２０は、バスにより電気的に接続されている。
【００１２】
なお、画像処理装置１０は、少なくとも画像処理部１４を備えた構成であればよく、撮影部１２、記憶部１６、入力部１８、及び表示部２０の少なくとも１つを別体として設けた構成であってもよい。
【００１３】
また、画像処理装置１０は、携帯可能な携帯端末であってもよいし、位置を固定された固定型の端末であってもよい。本実施の形態では、一例として、画像処理装置１０は、撮影部１２と、画像処理部１４と、記憶部１６と、入力部１８と、表示部２０と、を一体的に備えた、携帯可能な端末である場合を説明する。
【００１４】
撮影部１２は、表示画像を表示する実空間における観察環境を撮影する。観察環境は、表示部２０に表示された画像をユーザが視認（観察）するときの環境である。また、観察環境は、オブジェクトを印刷した記録媒体を観察する環境であってもよい。撮影によって、撮影部１２は、実空間における観察環境の撮影画像として、背景画像を取得する。
【００１５】
背景画像は、仮想三次元空間の三次元空間画像の一例である。背景画像は、静止画像であってもよいし、動画像であってもよい。実空間の観察環境は、例えば、オフィス、展示会場、駅の構内、駅のホーム、各種建物内などである。撮影部１２は、撮影によって撮影画像を得る公知の撮影装置である。なお、背景画像は、ＣＧ（Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ）などで描画された画像であってもよく、撮影部１２で得られた画像に限定されない。
【００１６】
本実施の形態では、撮影部１２が、撮影によって全天球パノラマ画像を得る撮影装置である場合を説明する。全天球パノラマ画像とは、全天球の範囲（３６０°）の撮影によって得られるパノラマ画像である。また、本実施の形態では、背景画像（三次元空間画像）が、全天球パノラマ画像である場合を、一例として説明する。
【００１７】
表示部２０は、各種画像を表示する。表示部２０は、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）などの公知の表示装置である。本実施の形態では、表示部２０には、後述する表示画像が表示される。
【００１８】
また、本実施の形態では、一例として、表示部２０と撮影部１２は、画像処理装置１０の筐体（図示省略）において、表示部２０の画面と、撮影部１２の撮影方向と、が互いに逆方向を向くように配置されている場合を説明する。このため、例えば、画像処理装置１０の位置を固定したまま、撮影部１２で撮影した背景画像を表示部２０に表示した場合、表示部２０に表示された背景画像と、表示部２０の背景（表示部２０の画面の対向側）に位置する実空間の風景と、は同じとなる。
【００１９】
入力部１８は、ユーザから各種操作を受け付ける。
【００２０】
なお、入力部１８と表示部２０とを一体的に構成したＵＩ（ユーザ・インターフェース）部２２としてもよい。ＵＩ部２２は、例えば、公知のタッチパネルである。
【００２１】
本実施の形態では、ＵＩ部２２は、入力部１８と表示部２０とを一体的に構成したタッチパネルである場合を説明する。
【００２２】
記憶部１６は、メモリやハードディスクドライブ装置（ＨＤＤ）等の記憶媒体であり、後述する各処理を実行するための各種プログラムや、各種データを記憶する。
【００２３】
画像処理部１４は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、及びＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを含んで構成されるコンピュータである。なお、画像処理部１４は、汎用のＣＰＵ以外の回路などであってもよい。画像処理部１４は、画像処理装置１０に設けられた装置各部を制御する。
【００２４】
画像処理部１４は、表示画像を表示部２０へ表示する制御を行う。本実施の形態では、表示画像は、背景画像上に、オブジェクトの二次元画像を重畳した表示画像である。このような表示処理は、例えばＯｐｅｎＧＬ（Ｏｐｅｎ  Ｇｒａｐｈｉｃｓ  Ｌｉｂｒａｒｙ）などの３Ｄエンジンにより実現する。
【００２５】
本実施の形態では、表示画像は、仮想三次元空間を球体として表し、該球体の内壁に沿った画像となるように全天球パノラマ画像（背景画像）を配置する。そして、この仮想三次元空間内に、オブジェクトを配置した三次元モデルを、二次元面に投影した画像である場合を説明する。
【００２６】
また、なお、表示画像は、更に、他の画面を含んだ画像であってもよい。
【００２７】
他の画面としては、例えば、透明な色材を用いて形成する透明画像の表示された画面や、特色（金、白、透明など）の色材を用いて紙に与える表面効果を規定した表面効果画像の表示された画面等が挙げられるが、これらに限られない。
【００２８】
表示画像が、複数の画面を含む場合には、表示画像は、これらの複数の画面を、Ｚ軸方向（表示部２０の画面に対して垂直方向）に異なる位置に配置した画像とすればよい。
【００２９】
図２は、画像処理部１４の機能構成を示すブロック図である。画像処理部１４は、取得部２４と、受付部２５と、指定部２６と、設定部２７と、表示制御部２８と、光源受付部２９と、オブジェクト移動部３０と、オブジェクト拡大縮小部３１と、オブジェクト回転部３２と、視線方向変更部３３と、視線・配置位置変更部３４と、再設定部３５と、判別部３６と、を含む。
【００３０】
取得部２４、受付部２５、指定部２６、設定部２７、表示制御部２８、光源受付部２９、オブジェクト移動部３０、オブジェクト拡大縮小部３１、オブジェクト回転部３２、視線方向変更部３３、視線・配置位置変更部３４、再設定部３５、および判別部３６の一部またはすべては、例えば、ＣＰＵなどの処理装置にプログラムを実行させること、すなわち、ソフトウェアにより実現してもよいし、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などのハードウェアにより実現してもよいし、ソフトウェア及びハードウェアを併用して実現してもよい。
【００３１】
取得部２４は、オブジェクトを取得する。オブジェクトは、表示対象の画像である。オブジェクトは、二次元画像であってもよいし、三次元画像であってもよい。本実施の形態では、オブジェクトが、二次元画像である場合を一例として説明する。二次元画像は、例えば、印刷対象の原稿を示す原稿画像である。
【００３２】
以下では、オブジェクトを、原稿画像と称して説明する場合がある。
【００３３】
取得部２４は、例えば、記憶部１６から原稿画像を読取ることで、原稿画像を取得する。例えば、表示制御部２８が、記憶部１６に記憶されている原稿画像（オブジェクト）の一覧を表示部２０に表示する。ユーザは、入力部１８を操作することで、表示対象の原稿画像を選択する。取得部２４は、選択された原稿画像を読取ることで、原稿画像を取得する。なお、取得部２４は、撮影部１２で撮影された画像を原稿画像として取得してもよい。また、取得部２４は、図示を省略する公知のスキャナ装置で読取った画像を、原稿画像として取得してもよい。この場合、画像処理部１４とスキャナ装置とを電気的に接続した構成とすればよい。
【００３４】
また、取得部２４は、背景画像を取得する。例えば、取得部２４は、記憶部１６に記憶されている複数の背景画像の中から、ユーザによる入力部１８の操作指示によって選択された背景画像を読取ることで、該背景画像を取得する。なお、取得部２４は、撮影部１２で撮影された撮影画像（本実施の形態では全天球パノラマ画像）を、背景画像として取得してもよい。本実施の形態では、取得部２４は、撮影部１２から背景画像を取得する。
【００３５】
受付部２５は、表示部２０の画面上における、原稿画像の表示領域の指定をユーザから受け付ける。表示部２０の画面は、二次元の平面状である。ユーザは、表示部２０の画面上で、原稿画像の表示領域を指定する。受付部２５は、表示部２０の画面上における、指定された表示領域の位置を示す二次元座標を受け付けることで、表示領域の指定を受け付ける。
【００３６】
なお、本実施の形態では、表示部２０の画面上における二次元座標を、表示領域の指定として受け付ける。すなわち、表示領域の指定として受け付ける二次元座標は、表示部２０の画面上、すなわちデバイス上の座標となる。このため、表示領域の指定として受け付ける二次元座標を、以下では、デバイス座標と称して説明する。
【００３７】
原稿画像の表示領域の形状は、限定されない。例えば、指定される表示領域の形状は、円形状（真円、楕円）、三角形、四角形、五角形以上の多角形、などである。本実施の形態では、一例として、指定される表示領域の形状が、４頂点を有する矩形状（すなわち、四角形）である場合を説明する。
【００３８】
すなわち、本実施の形態では、受付部２５は、表示部２０の画面上における矩形状領域の指定を、表示領域の指定として受け付ける。なお、受付部２５は、表示部２０の画面上における矩形状領域の４頂点の指定を、表示領域の指定として受け付けてもよい。詳細には、表示部２０の画面上における、矩形状領域の４頂点の二次元座標を、表示領域の指定として受け付けてもよい。
【００３９】
図３は、デバイス座標と、指定される表示領域と、の説明図である。ユーザは、例えば、表示部２０を参照しながら、表示部２０の画面上において、オブジェクトの表示領域を示す４頂点を指定する。上述したように、本実施の形態では、入力部１８と表示部２０は、一体的に構成されたタッチパネル（ＵＩ部２２）である。このため、ユーザは、表示部２０の画面上を操作することで、原稿画像の表示領域を表示部２０の画面上で指定することができる。
【００４０】
例えば、画像処理部１４では、表示領域の各頂点の指定順と、四角形の表示領域の各頂点の相対位置と、の関係を予め定める。各頂点の相対位置は、例えば、左上座標、右上座標、左下座標、右下座標、などで示される。
【００４１】
ユーザは、表示部２０の画面における、原稿画像の表示領域を示す４頂点の各々を、予め定めた指定順に沿って指定する。このため、例えば、ユーザは、左上座標に応じた頂点５１Ａ、右上座標に応じた頂点５１Ｂ、左下座標に応じた頂点５１Ｃ、右下座標に応じた頂点５１Ｄ、の４頂点をＵＩ部２２（入力部１８）の操作により順次指定する。これによって、受付部２５は、指定された４頂点のデバイス座標を、指定された表示領域として受け付ける。
【００４２】
このとき、表示制御部２８は、表示部２０に、指定順に応じた各頂点の指定を促すメッセージ（例えば、「次に、左上座標を指定して下さい」など）を表示してもよい。また、同じデバイス座標が連続して指定された場合には、表示制御部２８は、表示部２０に、再度の入力を促すメッセージを表示してもよい。
【００４３】
なお、詳細は後述するが、ユーザは、４頂点の内の１頂点を指定し、所望の位置にドラッグ操作などにより移動させることができる。
【００４４】
指定部２６は、受付部２５で受け付けた表示領域を、指定された表示領域として設定する。詳細には、指定部２６は、指定された表示領域の４頂点のデバイス座標を表示領域情報として記憶部１６に記憶する。
【００４５】
図４は、表示領域情報のデータ構造の一例を示す図である。表示領域情報は、例えば、指定順と、原稿画像の頂点の名称と、指定されたデバイス座標と、を対応づけたデータである。原稿画像の頂点の名称として、図４に示す例では、左上座標、右上座標、左下座標、右下座標、の各々を用いる。
【００４６】
図２に戻り、指定部２６は、指定された表示領域の、各頂点のデバイス座標を、指定された表示領域として、設定部２７へ出力する。
【００４７】
なお、指定部２６は、一点選択移動部２６Ａを含んだ構成であってもよい。
【００４８】
一点選択移動部２６Ａは、取得部２４で取得した原稿画像から、原稿画像の縦横の各々のサイズを読取る。そして、一点選択移動部２６Ａは、該原稿画像の中央と、表示部２０の画面の中央と、が一致するように、表示部２０の画面上に読取ったサイズの原稿画像を配置したときの、該原稿画像の４頂点の二次元座標（デバイス座標）を算出する。
【００４９】
この場合、表示制御部２８は、表示部２０の画面における、算出されたデバイス座標の位置に、４頂点の各々を示すマークを表示する。例えば、表示制御部２８は、表示部２０の画面における、算出された４頂点のデバイス座標に相当する各位置に、４頂点の各々を示すマーク（例えば、円マーク）を表示する（図３参照）。また、表示制御部２８は、表示部２０における、算出された４頂点のデバイス座標に相当する各位置に、表示対象の原稿画像の４頂点の各々を一致させた原稿画像を表示してもよい。
【００５０】
ユーザは、入力部１８を操作することで、表示部２０に表示された４頂点の内、１頂点を選択し、表示部２０の画面上における任意の箇所に移動させる。詳細には、ユーザは、表示部２０に表示された４頂点の内、位置を変更する対象の１頂点の表示された付近を指示してドラッグし、任意の位置にまで移動させる。これにより、ユーザは、表示領域を変更することができる。
【００５１】
受付部２５は、矩形状領域の４頂点の内の１頂点の選択及び移動を受け付け、移動後の１頂点と、他の３頂点と、を頂点として含む矩形状領域を、表示領域の指定として受け付ける。
【００５２】
この場合、一点選択移動部２６Ａは、表示部２０に表示されている４頂点の内、ユーザによって指示された位置に最も近い頂点を、選択された１頂点とすればよい。例えば、ユーザによって指示された位置の、表示部２０の画面におけるデバイス座標が（Ｘａ，Ｙａ）であったとする。この場合、一点選択移動部２６Ａは、４頂点の内の１頂点（Ｘ１，Ｙ１）までの距離を、下記式（１）により算出する。
【００５３】
【数１】
2018010473.tif 000003
【００５４】
一点選択移動部２６Ａは、同様にして、指定された１頂点のデバイス座標（Ｘａ，Ｙａ）から残り３頂点（Ｘ２，Ｙ２）、（Ｘ３，Ｙ３）、（Ｘ４，Ｙ４）の各々までの距離を算出し、４頂点の内、最も距離の近い頂点を、ユーザによって選択された１頂点とすればよい。
【００５５】
例えば、４頂点の内の１頂点（Ｘ１，Ｙ１）が、デバイス座標（Ｘａ，Ｙａ）から最も近い１頂点であったとする。この場合、一点選択移動部２６Ａは、最初にユーザによって指定されたデバイス座標（Ｘａ，Ｙａ）と、４頂点の内、該デバイス座標に最も近い１頂点のデバイス座標（Ｘ１，Ｙ１）と、を対応づけて記憶部１６に記憶する。
【００５６】
次に、ユーザは、入力部１８の操作指示によって、選択した１頂点のデバイス座標（Ｘａ，Ｙａ）の位置をドラッグする。受付部２５は、ドラッグ中のデバイス座標を取得する。ここで、ドラッグ中のデバイス座標を（Ｘｂ，Ｙｂ）とする。すると、最初にユーザによって指定されたデバイス座標に最も近い１頂点（Ｘ１，Ｙ１）の移動後のデバイス座標は、（Ｘ１＋Ｘｂ−Ｘａ，Ｙ１＋Ｙｂ−Ｙａ）で表せる。
【００５７】
このため、一点選択移動部２６Ａは、選択された１頂点以外の３頂点のデバイス座標（Ｘ２，Ｙ２）、（Ｘ３，Ｙ３）、（Ｘ４，Ｙ４）と、ユーザによる入力部１８の指示によって移動した移動後の１頂点のデバイス座標（Ｘ１＋Ｘｂ−Ｘａ，Ｙ１＋Ｙｂ−Ｙａ）と、によって、定まる矩形状の領域を、指定された表示領域として設定する。
【００５８】
なお、このとき、一点選択移動部２６Ａは、ドラッグ中のデバイス座標を、順次設定部２７へ出力してもよい。後述する設定部２７の処理によって、ユーザは、表示画像に含まれる、指定した表示領域に応じた大きさ及び形状の原稿画像を参照しながら、表示領域を調整することができる。
【００５９】
また、取得部２４が背景画像を取得している場合、表示部２０には、背景画像上に、調整中の表示領域の形状、位置、及び大きさに調整された原稿画像を重畳した表示画像が表示されることとなる。このため、ユーザは、表示部２０に表示された原稿画像を参照しながら、背景画像上の任意の領域に表示領域を指定することができる。
【００６０】
また、表示制御部２８は、表示部２０の画面に、ユーザによって指定された表示領域を示す画像を表示する場合、画面上における、ユーザによって指定されたデバイス座標から相対位置分だけ移動させた位置に、表示領域を示す画像を表示することが好ましい。このため、表示部２０の画面上における、ユーザによって指示された箇所が、ユーザの指やポインタデバイスなどで見えなくなることが抑制され、ユーザは、表示領域を容易に指定することができる。
【００６１】
また、表示部２０の画面上における、ユーザによって指示された位置（例えば、４頂点の位置）と、指定された表示領域を示す画像の表示位置は、完全に一致した形態に限定されない。
【００６２】
図５は、ユーザによって指定された表示領域の４頂点と、表示領域を示す画像と、の関係の一例を示す図である。図５に示すように、ユーザによって表示領域５１として指定された４頂点（５１Ａ、５１Ｂ、５１Ｃ、５１Ｄ）の各々のデバイス座標と、該表示領域を表示した画像５２の４頂点のデバイス座標と、は異なっていてもよい。
【００６３】
すなわち、ユーザによって指定された４頂点の各々のデバイス座標から、表示部２０に表示する表示領域の画像の４頂点の各々のデバイス座標を算出することができれば、ユーザによって指定された表示領域５１と、該表示領域５１を表示した画像５２と、の各々の４頂点の位置は、必ずしも一致していなくてもよい。
【００６４】
この場合、指定部２６は、例えば、ユーザによって指定された表示領域５１の４頂点の各々のデバイス座標から、４頂点の重心のデバイス座標を算出する。そして、指定部２６は、重心から各４頂点の各々に到るベクトルを定数倍することで、表示部２０に表示する表示領域５１の画像の４頂点のデバイス座標を算出することができる。このため、例えば、指定された表示領域５１の４頂点を強調した画像を表示部２０に表示した場合であっても、領域調整中の表示領域５１の画像の見映えに対する影響を減らすことができる。
【００６５】
なお、表示対象の原稿画像（オブジェクト）は、本実施の形態では、二次元画像であり、長方形などの四角形である。しかし、四角形以外の形状で原稿画像を表示させたい場合もある。すなわち、表示領域として、円形状などの、四角形以外の形状が指定される場合もある。このような場合には、表示制御部２８は、原稿画像における各画素の画素値に、透過度を表すアルファ値を追加し、利用しない部分の画素値のアルファ値を、完全透過を示す値に調整する透過処理を実行すればよい。透過処理については、表示制御部２８によるグラフィックエンジンで処理できる。このようにすれば、様々な形状の表示領域に対応することができる。
【００６６】
図２に戻り、光源受付部２９は、光源情報及び原稿反射情報を受け付ける。光源情報は、仮想三次元空間に配置される仮想光源の反射特性を示す情報である。原稿反射特性は、記録媒体の種類に応じた反射特性を示す情報である。例えば、光源受付部２９は、記憶部１６に予め光源情報テーブル及び原稿反射情報テーブルを記憶する。そして、光源受付部２９は、ユーザによる入力部１８の操作指示によって、光源情報テーブル及び原稿反射情報テーブルの各々から選択された、光源情報及び原稿反射情報を受け付ける。
【００６７】
図６は、光源情報テーブルのデータ構造の一例を示す図である。光源情報テーブルは、光源の種類を識別する光源ＩＤと、光源名と、光源情報と、を対応づけた情報である。なお、光源情報テーブルは、データベースであってもよく、データ形式は限定されない。
【００６８】
光源情報は、対応する光源ＩＤによって特定される光源の、光属性を示す情報である。光属性は、表示画像表示時の光を演出するための、反射量を特定するための情報である。光源情報は、光源の色温度に関する項目である鏡面光、拡散光、及び環境光の各々における、ＲＧＢの色成分ごとの光量（輝度）で表される。ＲＧＢの各色成分の光の値は、最大「１．０」であり、最小値「０」である。具体的には、図６中、鏡面光の値の一例として記載した“（１．００，０．９５，０．９５）”は、Ｒ成分、Ｇ成分、Ｂ成分の各々の鏡面光の光量が、各々、１．００，０．９５，０．９５であることを示す。
【００６９】
図７は、原稿反射情報テーブルのデータ構造の一例を示す図である。原稿反射情報テーブルは、記録媒体の種類を識別する原稿ＩＤと、反射種と、原稿反射情報と、を含む。反射種は、対応する原稿ＩＤによって識別される種類の記録媒体の、反射の種類を示す。すなわち、記録媒体の紙質の種類などによって、反射率は異なるものとなる。原稿反射情報は、鏡面光反射率、拡散光反射率、及び環境光反射率を含む。鏡面光反射率は、入射角と反射角の等しくなる反射率である。拡散光反射率は、乱反射する反射率である。環境光反射率は、繰り返し乱反射して得られる光の反射率である。本実施の形態では、ＲＧＢの各成分の値により、これらの鏡面光反射率、拡散光反射率、及び環境光反射率の各々の反射率を規定している。具体的には、図７中、鏡面光反射率の値の一例として記載した“（０．５，０．５，０．５）”は、Ｒ成分、Ｇ成分、Ｂ成分の各々の鏡面光反射率が“０．５”であることを示す。
【００７０】
なお、表示画像表示時の光を演出するための反射量は、光源の光量（光源情報）と、物体の反射率（上記図７に示す原稿反射情報に示される反射率）と、の乗算値により定まる。または、光源情報に仮想三次元空間での光源の座標位置を加え、ＯｐｅｎＧＬに反射量を計算させてもよい。
【００７１】
表示制御部２８は、記憶部１６に記憶されている光源情報テーブルを読取り、光源情報テーブルに登録されている光源情報の一覧を、選択可能に表示部２０に表示する。ユーザは、表示された光源情報の一覧の中から、所望の光源名に対応する光源情報を入力部１８の操作指示により入力する。これにより、光源受付部２９は、光源情報を受け付ける。
【００７２】
同様に、表示制御部２８は、記憶部１６に記憶されている原稿反射情報テーブルを読取り、原稿反射情報テーブルに登録されている原稿反射情報の一覧を、選択可能に表示部２０に表示する。ユーザは、表示された原稿反射情報の一覧の中から、所望の反射種に対応する原稿反射情報を入力部１８の操作指示により入力する。これにより、光源受付部２９は、原稿反射情報を受け付ける。
【００７３】
なお、ユーザによる入力部１８の操作指示などにより、新たな光源情報や新たな原稿反射情報を、原稿情報テーブル及び原稿反射情報テーブルに登録してもよいし、登録されているこれらの情報を編集可能としてもよい。
【００７４】
図２に戻り、次に、設定部２７について説明する。
【００７５】
設定部２７は、仮想三次元空間における、指定された表示領域に対応する仮想領域を算出する。また、設定部２７は、仮想三次元空間における、原稿画像（オブジェクト）を配置する配置面を設定する。
【００７６】
まず、仮想領域の算出について説明する。上述したように、表示領域５１は、表示部２０の二次元の画面上で指定された、二次元座標（デバイス座標）によって表される。設定部２７は、この二次元のデバイス座標によって示される表示領域５１を仮想三次元空間に配置し、該仮想三次元空間に配置した該表示領域５１の三次元座標、傾き、位置等を示す仮想領域を算出する。
【００７７】
まず、仮想領域の算出における、設定部２７の処理の概要を説明する。設定部２７は、仮想三次元空間の予め定めた基準位置に仮配置した原稿面を表示部２０の画面上における二次元空間に射影する射影行列と、指定された表示領域５１の二次元座標と、原稿画像と、を用いて、仮想三次元空間における指定された表示領域５１に対応する仮想領域を算出する。
【００７８】
仮想三次元空間に仮配置した原稿面とは、表示対象のオブジェクトの縦横の長さを元に、該大きさ及び形状のオブジェクトの４頂点を仮想三次元空間に仮配置した画像を示す。すなわち、原稿面は、仮想三次元空間に仮配置した原稿画像（オブジェクト）を示す。本実施の形態では、原稿面は、矩形状である場合を説明する。
【００７９】
仮想三次元空間の基準位置とは、仮想三次元空間における、Ｚ＝０のＸＹ平面を意味する。Ｚ＝０の位置は、ＯｐｅｎＧＬにおいて仮想三次元空間を写す仮想カメラの位置に相当し、−Ｚ軸方向は、仮想カメラの撮影方向の反対方向（１８０°反対方向）を意味する。
【００８０】
そして、設定部２７は、ユーザによって指定された表示領域５１の４頂点のデバイス座標と、仮想三次元空間に仮配置した原稿面（原稿画像）の４頂点の座標と、仮想三次元空間に仮配置した原稿面を二次元空間に射影する射影行列と、を用いて、傾き・位置行列を算出する。
【００８１】
傾き・位置行列は、仮想三次元空間における、指定された表示領域５１に対応する仮想領域に配置した、オブジェクトの傾きと位置（奥行）を算出するための行列である。
【００８２】
そして、設定部２７は、仮想三次元空間に仮配置した原稿面の４頂点の三次元座標を、傾き・位置行列に適用することで、三次元空間内における、指定された表示領域５１に対応する仮想領域の４頂点の三次元座標を算出する。
【００８３】
これにより、設定部２７は、仮想三次元空間における、指定された表示領域５１に対応する、仮想領域を算出する。
【００８４】
図８は、設定部２７の機能ブロック図である。設定部２７は、仮配置部２７Ａと、第１算出部２７Ｂと、第２算出部２７Ｃと、第３算出部２７Ｄと、制限部２７Ｆと、第４算出部２７Ｇと、配置面設定部２７Ｈと、を含む。
【００８５】
仮配置部２７Ａ、第１算出部２７Ｂ、第２算出部２７Ｃ、第３算出部２７Ｄと、制限部２７Ｆ、第４算出部２７Ｇ、および配置面設定部２７Ｈの一部またはすべては、例えば、ＣＰＵなどの処理装置にプログラムを実行させること、すなわち、ソフトウェアにより実現してもよいし、ＩＣなどのハードウェアにより実現してもよいし、ソフトウェア及びハードウェアを併用して実現してもよい。
【００８６】
仮配置部２７Ａは、指定部２６で設定された表示領域５１を取得する。詳細には、仮配置部２７Ａは、ユーザによって指定された表示領域５１の各頂点のデバイス座標（二次元座標）を取得する。
【００８７】
また、仮配置部２７Ａは、表示対象の原稿画像（オブジェクト）の縦横サイズを取得する。
【００８８】
そして、仮配置部２７Ａは、表示対象の原稿画像の縦横サイズの原稿面を、仮想三次元空間における、Ｚ＝０のＸＹ平面上に仮配置する。すなわち、仮配置部２７Ａは、まず、表示対象のオブジェクトを、三次元空間におけるＺ＝０のＸＹ平面に仮配置し、仮想三次元空間に仮配置した原稿面とする。
【００８９】
図９は、仮想三次元空間に仮配置した原稿面５４を示す説明図である。仮配置部２７Ａは、原稿面５４の中心を、仮想三次元空間におけるＸＹ平面の原点Ｏに重ね、該原稿面５４の４頂点の座標（三次元座標）を初期値として設定することで、原稿面５４を仮配置する。
【００９０】
ここで、原稿画像の横幅をｗｉｄｔｈ、高さをｈｅｉｇｈｔとし、Ｏｘ＝ｗｉｄｔｈ／２、Ｏｙ＝ｈｅｉｇｈｔ／２とする。すると、仮配置した原稿面５４の４頂点の各々の、仮想三次元空間における初期配置座標は、図１０に示す値となる。
【００９１】
図１０に示すように、例えば、仮配置した原稿面５４の４頂点（左上（ｔｏｐｌｅｆｔ）、右上（ｔｏｐｒｉｇｈｔ）、左下（ｂｏｔｔｏｍｌｅｆｔ）、右下（ｂｏｔｔｏｍｒｉｇｈｔ））の各々の初期配置座標は、図１０に示される値となる。
【００９２】
そして、仮配置部２７Ａは、仮配置した原稿面５４の初期配置座標を保持する。
【００９３】
図８に戻り、第１算出部２７Ｂは、射影行列Ｆを算出する。
【００９４】
図１１は、射影行列Ｆ及び射影行列Ｇの算出の説明図である。射影行列Ｆは、仮想三次元空間に仮配置した原稿面５４の初期配置座標を（図１１（Ｂ）参照）、二次元空間のデバイス座標（図１１（Ａ）参照）に射影する射影行列である。
【００９５】
すなわち、第１算出部２７Ｂは、仮想三次元空間に仮配置した原稿面５４における右上（ｔｏｐｒｉｇｈｔ）の１頂点Ｏの初期配置座標（Ｏｘ，Ｏｙ，０）を、二次元空間における１頂点Ｄのデバイス座標（Ｄｘ，Ｄｙ）に射影するための、射影行列Ｆを算出する。
【００９６】
また、第１算出部２７Ｂは、その逆の射影を行うための射影行列Ｇを算出する。すなわち、第１算出部２７Ｂは、二次元空間のデバイス座標を、仮想三次元空間に仮配置した原稿面５４の初期配置座標に射影するための射影行列Ｇを算出する。
【００９７】
なお、上述したように、本実施の形態では、ＯｐｅｎＧＬを用いた表示処理を行う。このため、本実施の形態では、第１算出部２７Ｂは、ＯｐｅｎＧＬによる変換ステージに従い、射影行列Ｆ、及び射影行列Ｇを算出する。
【００９８】
図１２は、ＯｐｅｎＧＬによる変換ステージと射影行列との関係の説明図である。第１算出部２７Ｂは、ＯｐｅｎＧＬの変換ステージに従い、二次元空間のデバイス座標（図１２中、ハードウェア依存二次元座標参照）を、正規化行列Ｎ１の逆行列Ｎ１−１で正規化二次元座標に変換した後に、射影行列Ｆ、及び射影行列Ｇを算出する。なお、第１算出部２７Ｂは、射影行列の算出のための公知の計算式、もしくは、同等の任意の計算式を用いて、射影行列Ｆ及び射影行列Ｇを算出すればよい。また、第１算出部２７Ｂは、ｏｐｅｎＣＶ（Ｏｐｅｎ  Ｓｏｕｒｃｅ  Ｃｏｍｐｕｔｅｒ  Ｖｉｓｉｏｎ  Ｌｉｂｒａｒｙ）などのコンピュータビジョン向けライブラリを利用して、射影行列Ｆ及び射影行列Ｇを算出してもよい。
【００９９】
第１算出部２７Ｂが算出する射影行列Ｆ、射影行列Ｇを以下に示す。
【０１００】
【数２】
2018010473.tif 000004
【０１０１】
【数３】
2018010473.tif 000005
【０１０２】
式（２）は、射影行列Ｆを示す。式（３）は、射影行列Ｇを示す。射影行列は、その定義により、定数倍の不定性が存在する。このため、射影行列は、任意のスケール係数（０ではない値）を乗算しても同じ変換であるとする。なお、射影行列Ｆについては、三行一列のベクトルを左から各々ｆ１、ｆ２、ｆ３、ｆ４と表す。
【０１０３】
第２算出部２７Ｃは、傾き・位置行列を算出する。傾き・位置行列は、上述したように、仮想三次元空間における、指定された表示領域５１に対応する仮想領域に配置した、原稿画像の傾きと位置（奥行）を算出するための行列である。
【０１０４】
第２算出部２７Ｃは、第１算出部２７Ｂから射影行列Ｆを取得する。また、第２算出部２７Ｃは、撮影部１２の光学特性パラメータを取得する。撮影部１２の光学特性パラメータは、撮影部１２の焦点距離、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）イメージセンサにおける、１画素分の幅、高さ、画像中心、画素単位の焦点距離（レンズ中心から画像平面までの距離）、などのパラメータである。記憶部１６は、撮影部１２の光学特性パラメータを予め記憶する。第２算出部２７Ｃは、記憶部１６から光学特性パラメータを読取ればよい。
【０１０５】
第２算出部２７Ｃは、射影行列Ｆと、撮影部１２の光学特性パラメータと、を用いて、傾き・位置行列を算出する。本実施の形態では、第２算出部２７Ｃは、射影行列Ｆと、後述する投影行列Ａと、を用いて、傾き・位置行列を算出する。
【０１０６】
まず、第２算出部２７Ｃは、撮影部１２の光学特性パラメータから、仮想三次元空間に配置された三次元像を二次元像に投影（すなわち、仮想三次元空間の三次元座標を二次元空間の二次元座標に投影）するための投影行列（以下、投影行列Ａとする）を算出する。投影行列Ａは、以下の式（４）によって示される。
【０１０７】
【数４】
2018010473.tif 000006
【０１０８】
式（４）中、ａｘ及びａｙは、撮影部１２の焦点距離を示す。詳細には、ａｘ及びａｙは、撮影部１２のレンズ中心から撮影素子配列（ＣＣＤ）を配置した平面までの距離を示す。ｃｘ及びｃｙは、主点を示し、本実施の形態では、画像中心を示す。画像中心とは、撮影によって得た二次元の撮影画像の中心を示す。
【０１０９】
第２算出部２７Ｃは、表示画像の生成時に用いる背景画像の取得時の、撮影部１２の光学特性パラメータを用いて、投影行列Ａを算出することが好ましい。撮影部１２の光学特性パラメータから算出した投影行列Ａを用いることで、背景画像の撮影条件と同じ光学条件の原稿画像を含む、表示画像とすることができる。すなわち、背景画像に映り込む物体と同様の二次元化を行うことができる。
【０１１０】
本実施の形態では、第２算出部２７Ｃは、画像処理装置１０に搭載されている撮影部１２の光学特性パラメータから、投影行列Ａを予め算出し、記憶部１６に予め記憶する。また、背景画像を撮影する複数の撮影部１２の各々の光学特性パラメータを用いて算出した、複数の投影行列Ａを予め記憶部１６に記憶してもよい。そして、画像処理部１４では、複数の投影行列Ａをユーザに対して選択可能に表示部２０に表示し、第２算出部２７Ｃは、ユーザによる入力部１８の操作指示によって選択された投影行列Ａを採用してもよい。また、ユーザによる入力部１８の操作指示によって、任意の光学特性パラメータ及び投影行列Ａを設定してもよい。
【０１１１】
そして、第２算出部２７Ｃは、射影行列Ｆと、投影行列Ａと、を用いて、傾き・位置行列を算出する。例えば、第２算出部２７Ｃは、ホモグラフィ分解法を用いて、射影行列Ｆと投影行列Ａとから、傾き・位置行列を算出する。なお、ホモグラフィ分解法を用いた場合、値の定まらない場合や虚数解が得られる場合がある。傾き・位置行列は、式（５）で示される。
【０１１２】
【数５】
2018010473.tif 000007
【０１１３】
なお、式（５）では、傾き・位置行列の三行一列のベクトルを、左から各々γ１、γ２、γ３、ｔと表している。なお、γ３は、γ１とγ２の外積である。
【０１１４】
第２算出部２７Ｃは、以下の式（６）を用いて、傾き・位置行列を算出する。
【０１１５】
【数６】
2018010473.tif 000008
【０１１６】
式（６）中、μ１は、式（７）で表せる。式（６）中、μ２は、式（８）で表せる。
【０１１７】
本実施の形態では、第２算出部２７Ｃは、ＯｐｅｎＧＬを利用する。このため、第２算出部２７Ｃは、式（５）に示す傾き・位置行列に、行ベクトル（０，０，０，１）を足して４×４行列に変換したものを、傾き・位置行列として算出する（式（９）参照）。
【０１１８】
【数７】
2018010473.tif 000009
【０１１９】
第２算出部２７Ｃは、算出した傾き・位置行列（上記式（９）参照）を保持する。なお、第２算出部２７Ｃは、前回算出した傾き・位置行列についても保持する。
【０１２０】
次に、第２算出部２７Ｃは、算出した傾き・位置行列と、射影行列Ｆと、算出に用いた光学特性パラメータと、を、第３算出部２７Ｄへ出力する。
【０１２１】
第３算出部２７Ｄは、仮想三次元空間に配置された三次元像を二次元像に投影（すなわち、仮想三次元空間の三次元座標を二次元空間の二次元座標に投影）するための投影行列Ｂを算出する。
【０１２２】
傾き・位置行列に、光沢特性パラメータから求めた投影行列Ａを乗算しても、射影行列Ｆに一致しない。このため、第３算出部２７Ｄは、傾き・位置行列に対して乗算した乗算結果が射影行列Ｆに一致するように、投影行列Ｂを算出する。ここで、傾き・位置行列と投影行列Ｂとの乗算値を、射影行列Ｆに一致させるための３行３列の補正行列を、Ｍとする。第３算出部２７Ｄは、ホモグラフィ分解法により、以下の式（１０）及び式（１１）を導出し、式（１５）により、補正行列Ｍを算出する。
【０１２３】
【数８】
2018010473.tif 000010
【０１２４】
なお、式（１０）及び式（１１）中、μ１は、式（１２）によって表され、μ２は、式（１３）によって表される。また、式（１０）及び式（１１）中、λは、式（１４）によって表される。
【０１２５】
このため、投影行列Ｂは、式（１６）で表せる。
【０１２６】
【数９】
2018010473.tif 000011
【０１２７】
ここで、第３算出部２７Ｄは、ＯｐｅｎｎＧＬ用に、式（１６）中の投影行列Ａと、補正行列Ｍと、を式（１７）に示すように変更する。
【０１２８】
【数１０】
2018010473.tif 000012
【０１２９】
式（１７）中、ｎとｆは、ＯｐｅｎＧＬ上でｚ軸方向における投影範囲を定めるものである。具体的には、ｎは、ｚ軸の負の方向に沿ったクリップ距離の近い方を示す。ｆは、ｚ軸の負の方向に沿ったクリップ距離の遠い方を示す。
【０１３０】
第３算出部２７Ｄが算出した投影行列Ｂを、仮想三次元空間に配置された三次元像を二次元像に投影（すなわち、仮想三次元空間の三次元座標を二次元空間の二次元座標に投影）するための投影行列として用いることで、後述する表示制御部２８は、仮想三次元空間に配置した原稿面５４を、デバイス座標で指定された表示領域５１に投影する。
【０１３１】
ここで、第３算出部２７Ｄは、ユーザによる入力部１８の操作指示に応じて、補正部２７Ｅを呼び出す。すなわち、第３算出部２７Ｄは、補正部２７Ｅを含む。
【０１３２】
第３算出部２７Ｄが算出した投影行列Ｂは、光学特性パラメータから著しく異なる値を取り得る。このため、補正部２７Ｅは、投影行列Ｂに示される各要素の値が予め定めた範囲から逸脱する場合、各要素の値が予め定めた範囲内に収まるように、投影行列Ｂの各要素を補正する。
【０１３３】
例えば、補正部２７Ｅは、投影行列Ｂの一行一列目の要素と、二行二列目の要素と、が当初の投影行列Ｂの１割以上変動する場合には、最大で一割の変動となるように、行列の要素の値を補正する。なお、当初の投影行列Ｂとは、オブジェクトを仮想三次元空間の予め定めた基準位置に当初に仮配置した原稿面の領域に対する相似領域を、表示部２０の画面上の二次元空間に仮配置した時点を示す。
【０１３４】
例えば、ユーザの操作指示によって、表示部２０の画面上におけるユーザ所望の領域に表示領域５１を配置するまでは、補正を行わず、配置完了後に、ユーザによる操作指示に従い、補正部２７Ｅによる補正を実行してもよい。
【０１３５】
また、投影行列Ｂの一行一列目の要素と、二行二列目の要素と、の変動の上限を０割とすることで、撮影部１２の当初の光学特性パラメータを投影行列として用いることができる。このような処理を行うことで、後述するオブジェクト移動部３０による移動処理において、背景画像に映り込む物体と異なる二次元化による違和感を、低減することができる。
【０１３６】
第３算出部２７Ｄは、前回算出した投影行列Ｂと、今回算出した投影行列Ｂと、の２つの投影行列Ｂを保持する。また、第３算出部２７Ｄは、今回算出した投影行列Ｂを、制限部２７Ｆへ出力する。
【０１３７】
図１３は、デバイス座標と、傾き・位置行列と、投影行列Ｂと、の関係を示す説明図である。
【０１３８】
図１３に示すように、傾き・位置行列は、仮想三次元空間における、指定された表示領域５１に対応する仮想領域に配置した、オブジェクトの傾きと位置（奥行）を算出するための行列である。このため、三次元仮想空間内に仮配置した原稿面５４の４頂点の座標に、傾き・位置行列を適用することで、指定された表示領域５１に応じた傾き及び奥行（位置）を反映させることができる。投影行列Ｂは、仮想三次元空間に配置された三次元像を二次元像に投影（すなわち、仮想三次元空間の三次元座標を二次元空間の二次元座標に投影）するために用いる。
【０１３９】
図８に戻り、制限部２７Ｆは、ユーザによって指定された表示領域５１の形状が、実際にはあり得ない形状となるか否かを判定し、ありえない形状であると判定した場合、前回指定された表示領域５１を用いるように制御する。
【０１４０】
実際にはあり得ない形状とは、例えば、指定された表示領域５１の内角の合計値が１８０°以上である場合や、指定された表示領域に対応する仮想領域の、仮想三次元空間における位置が、仮想三次元空間における奥行方向の原点（すなわち、仮想空間における上記基準位置より視点位置側＋Ｚ軸方向）に位置する場合である。
【０１４１】
詳細には、制限部２７Ｆは、仮配置した原稿面５４の４頂点の初期配置座標を仮配置部２７Ａから取得する。そして、制限部２７Ｆは、最新の投影行列Ｂを第２算出部２７Ｃから取得し、傾き・位置行列を第２算出部２７Ｃから取得する。そして、図１２に示すように、制限部２７Ｆは、仮配置した原稿面５４の４頂点の初期配置座標と、傾き・位置行列と、投影行列Ｂと、から、該４頂点の各々の、正規化二次元座標を算出する。このとき、制限部２７Ｆは、該４頂点の全ての正規化二次元座標におけるＺ座標（奥行方向の座標）が０以上である場合、すなわち、仮想三次元空間を写す仮想カメラの後方側（撮影方向の反対側、すなわち、仮想三次元空間における奥行方向の原点より視点位置側）に位置する場合、異常と判断する。なお、仮想カメラは、仮想三次元空間の原点に配置され、−Ｚ軸方向を撮影方向としている。
【０１４２】
図８に戻り、第４算出部２７Ｇは、制限部２７Ｆが異常と判断したか否かを判別する。制限部２７Ｆによって異常であると判断された場合、第４算出部２７Ｇは、異常信号を、指定部２６（図２参照）と、第２算出部２７Ｃと、第３算出部２７Ｄと、に通知する。
【０１４３】
指定部２６は、異常信号を受け付けると、最新の指定された表示領域５１を、前回指定された表示領域５１で上書きする。第２算出部２７Ｃは、異常信号を受け付けると、最新の傾き・位置行列を、前回算出した傾き・位置行列で上書きする。補正部２７Ｅは、異常信号を受け付けると、最新の投影行列Ｂを、前回算出した投影行列Ｂで上書きする。そして、第４算出部２７Ｇは、前回仮配置された原稿面５４の４頂点の初期配置座標と、前回の傾き・位置行列と、前回の投影行列Ｂと、を第４算出部２７Ｇ及び表示制御部２８へ通知する。
【０１４４】
一方、第４算出部２７Ｇは、制限部２７Ｆによって異常ではないと判断された場合、仮配置された原稿面５４の４頂点の初期配置座標と、最新の傾き・位置行列（仮想領域）と、最新の投影行列Ｂと、を第４算出部２７Ｇ及び表示制御部２８へ通知する。
【０１４５】
第４算出部２７Ｇは、仮想三次元空間に仮配置した原稿面５４の４頂点の三次元座標（初期配置座標）を、傾き・位置行列に適用することで、仮想三次元空間における、指定された表示領域５１に対応する仮想領域の４頂点の三次元座標を算出する。これにより、第４算出部２７Ｇは、仮想三次元空間における、指定された表示領域５１に対応する仮想領域を算出する。そして、第４算出部２７Ｇは、算出した仮想領域の三次元座標を、表示制御部２８へ通知する。
【０１４６】
配置面設定部２７Ｈは、仮想三次元空間における、オブジェクトを配置する配置面を設定する。配置面は、実空間における平面状の領域である。例えば、実空間が、複数の壁面で構成された室内であるとする。この場合、配置面は、この複数の壁面の内の１つの壁面である。また、実空間が、床面、天井面、床面と天井面とに連続する４つの壁面で構成された立方体状の室内であるとする。この場合、配置面は、立方体状の室内を構成する６つの壁面の内の１つである。
【０１４７】
例えば、配置面設定部２７Ｈは、仮想三次元空間における、予め定めた視線方向に対して直交する平面を、配置面として設定する。ここで、上述したように、ユーザによって表示領域５１が指定される場合がある。このため、本実施の形態では、配置面設定部２７Ｈは、第４算出部２７Ｇが算出した仮想領域に沿った平面を、配置面として設定してもよい。また、配置面設定部２７Ｈは、第４算出部２７Ｇが算出した仮想領域に沿った平面を、仮想三次元空間における視点位置から離れる方向に向かって移動させ、上記実空間の壁面などの平面状の領域まで移動させた位置の平面（壁面）を、配置面として設定する。
【０１４８】
図２に戻り、表示制御部２８は、仮想三次元空間における、設定された配置面に原稿画像７２（図１４参照）を配置する。詳細には、表示制御部２８は、仮想三次元空間に設定された配置面における仮想領域に、原稿画像７２を配置して三次元オブジェクトとする。すなわち、表示制御部２８は、仮想三次元空間の配置面における、三次元座標によって示される仮想領域に原稿画像７２を配置することで、三次元オブジェクトとする。さらに詳細には、表示制御部２８は、仮想三次元空間の配置面における、三次元座標によって示される仮想領域の４頂点の各々に、原稿画像（オブジェクト）の４頂点の各々が一致するように配置する。
【０１４９】
そして、表示制御部２８は、仮想三次元空間における、配置面に原稿画像（オブジェクト）を配置した状態を、予め定めた視点位置から予め定めた視線方向に視認した二次元画像に変換した表示画像を、表示部２０に表示する制御を行う。すなわち、表示制御部２８は、仮想三次元空間の配置面における、表示領域５１に対応する仮想領域に原稿画像７２が一致するように配置した状態を、予め定めた視点位置から予め定めた視線方向に視認した二次元空間に投影した表示画像を、表示部２０に表示する制御を行う。
【０１５０】
ここで、上述したように、本実施の形態では、背景画像７４は、全天球パノラマ画像である。このため、表示制御部２８は、全天球パノラマ画像を、視点位置から視線方向に予め定めた視野角で視認した範囲を、表示画像として用いる背景画像７４として使う。このため、表示画像に含まれる背景画像７４は、具体的には、全天球パノラマ画像における、視点位置から視線方向に予め定めた視野角で視認した範囲である。
【０１５１】
なお、視点位置から視線方向に視認、とは、仮想三次元空間を球体と仮定した場合、該球体の中心を視点位置として視線方向に視認することを示す。
【０１５２】
視点位置は、具体的には、仮想三次元空間の上記基準位置に仮配置された原稿面５４に対する垂線に沿った−Ｚ軸方向の位置である。視点位置は、ＯｐｅｎＧＬの処理により、ユーザによって指定された任意の位置に変更可能である。また、視線方向も、ユーザによる入力部１８の操作指示によって変更可能である（詳細後述）。
【０１５３】
すなわち、表示制御部２８は、オブジェクト、背景画像、仮想三次元空間に仮配置した原稿面５４の４頂点の三次元座標（初期配置座標）、配置面の三次元座標、ＯｐｅｎＧＬ内でのＭＯＤＥＬ−ＶＩＥＷ行列として最新の傾き・位置行列、ＰＲＯＪＥＣＴＩＯＮ行列として投影行列Ｂ、及び、光源受付部２９で受け付けた光源情報ならびに原稿反射情報を受け付ける。
【０１５４】
そして、表示制御部２８は、ＯｐｅｎＧＬを用いて、仮想三次元空間に背景画像（本実施の形態では、球状の全天球パノラマ画像）を配置する。すなわち、表示制御部２８は、球状の仮想三次元空間の内壁に沿って全天球パノラマ画像を配置する。そして、表示制御部２８は、仮想三次元空間に（すなわち、この球状の全天球パノラマ画像内に）、受け付けた光源情報および原稿反射情報に応じた仮想光源を配置すると共に、仮想三次元空間における、指定された表示領域に対応する、配置面における仮想領域に、原稿画像７２を配置し、光源情報に応じた光源効果を付加された原稿画像とする。
【０１５５】
そして、表示制御部２８は、この仮想三次元空間における配置面に原稿画像（オブジェクト）を配置した状態を、予め定めた視点位置から予め定めた視線方向に視認した表示画像を、表示部２０に表示する制御を行う。
【０１５６】
表示制御部２８は、原稿画像（オブジェクト）を二次元空間に投影して表示画像を作成する際には、第３算出部２７Ｄが算出した投影行列Ｂを用いる。
【０１５７】
表示部２０に表示画像が表示されると、ユーザは、入力部１８を操作することで、表示画像に含まれる原稿画像の位置を、表示部２０の画面上における任意の位置に移動させることが可能となる。
【０１５８】
例えば、ユーザは、タッチパネルとして構成されたＵＩ部２２の画面を操作することで、表示されている原稿画像またはその周辺にタッチし、任意の移動先の位置にまでドラッグする。受付部２５は、ドラッグ中、新たな二次元座標が指定されるたびに、新たに指定された表示領域５１のデバイス座標を受け付け、指定部２６は、受付部２５で受け付けた、指定された表示領域の各頂点のデバイス座標を表示領域情報として記憶部１６に記憶する。
【０１５９】
そして、設定部２７は、指定部２６で新たなデバイス座標が指定されるたびに、上記処理を行い、表示制御部２８は、上記と同様にして表示画像を表示部２０へ表示する。このように、ドラッグ中、表示領域５１の新たなデバイス座標が指定される度に、画像処理部１４は、上記表示画像の表示処理を繰り返し実行する。
【０１６０】
なお、ユーザによる、表示領域５１の二次元座標の指定が終了したときに、設定部２７は処理を終了してもよいし、補正部２７Ｅによる投影行列の補正処理を行ってもよい。
【０１６１】
図１４は、画像処理部１４における表示処理の一連の流れを示す模式図である。
【０１６２】
まず、取得部２４が背景画像７４と、原稿画像７２と、を取得する（図１４（Ａ）参照）。受付部２５が、原稿画像７２の表示領域５１の指定を受け付ける（図１４（Ｂ）参照）。上述したように、本実施の形態では、表示領域５１の４頂点のデバイス座標を入力部１８から受け付けることで、表示領域５１の指定を受け付ける（図１４（Ｂ）参照）。これらの４頂点は、ユーザがタッチパネルとして構成されたＵＩ部２２を用いて指定したものである。この場合、仮想三次元空間における、該表示領域５１に沿った平面が、設定部２７によって、配置面５０として設定される。
【０１６３】
また、ユーザが入力部１８の操作によって、表示領域５１の４頂点の内の１頂点を背景画像７４上におけるユーザ所望の位置にドラッグすることで、ユーザ所望の位置に各頂点を移動させることができる（図１４（Ｃ）参照）。この場合、仮想三次元空間における、該表示領域５１に沿った平面が、設定部２７によって、配置面５０として設定されることとなる。
【０１６４】
次に、設定部２７が、仮想三次元空間Ｋ内における、指定された表示領域５１に対応する仮想領域５３を算出する（図１４（Ｄ）参照）。また、設定部２７は、仮想三次元空間Ｋ内における、仮想領域５３に沿った平面を、配置面５０として設定する（図１４（Ｄ）参照）。
【０１６５】
そして、表示制御部２８は、仮想三次元空間Ｋの該配置面５０における仮想領域５３に、原稿画像７２を配置する（図１４（Ｄ）参照）。このとき、表示制御部２８は、仮想三次元空間Ｋ内に、受け付けた光源情報を示す仮想光源ＬＡを配置することで、受け付けた光源情報に応じた光源効果を付加された原稿画像７２とすることが好ましい。
【０１６６】
具体的には、上述したように、設定部２７は、仮想三次元空間Ｋに仮配置した原稿面を二次元空間に射影する射影行列Ｆを算出する。また、設定部２７は、指定された表示領域５１の二次元座標と、仮想三次元空間Ｋ内に仮配置した原稿面の三次元座標と、射影行列と、を用いて、仮想三次元空間Ｋ内における、指定された表示領域に対応する仮想領域に配置したオブジェクトの傾きと位置を算出するための傾き・位置行列を算出する。さらに、設定部２７は、仮想三次元空間Ｋに仮配置した原稿面の４頂点の三次元座標を、傾き・位置行列に適用することで、仮想三次元空間Ｋ内における、指定された表示領域５１に対応する仮想領域５３（図１４（Ｄ）参照）の三次元座標を算出する。また、ユーザの入力に応じて、仮想三次元空間Ｋ内における、三次元オブジェクト５５の位置や姿勢を変更する。
【０１６７】
表示制御部２８は、ユーザの入力に応じて、各機能部を呼び出す。また、表示制御部２８は、表示部２０へ表示する画像を制御する。表示制御部２８は、３Ｄグラフィックエンジン（例えば、ＯｐｅｎＧＬ）を利用して、原稿画像７２を、仮想三次元空間Ｋにおける、指定された表示領域５１に応じて設定された、配置面５０における仮想領域５３に配置する。そして、表示制御部２８は、該原稿画像７２を二次元空間に投影することで、背景画像７４（全天球パノラマ画像）に二次元の原稿画像７２を重畳した表示画像８０を、表示部２０に表示する。
【０１６８】
これによって、表示制御部２８は、仮想三次元空間Ｋの配置面５０における仮想領域５３に、原稿画像７２を配置した状態を、視点位置Ｐから視線方向Ｌに視認した二次元画像に変換した表示画像８０を、表示部２０に表示することができる（図１４（Ｄ）、図１４（Ｅ）参照）。
【０１６９】
図２に戻り、次に、オブジェクト移動部３０、オブジェクト拡大縮小部３１、オブジェクト回転部３２、視線方向変更部３３、視線・配置位置変更部３４、および再設定部３５について説明する。
【０１７０】
オブジェクト移動部３０、オブジェクト拡大縮小部３１、およびオブジェクト回転部３２は、指定された表示領域５１に対応する位置に配置された原稿画像７２を、仮想三次元空間の中で移動、拡大縮小、または回転させる。また、視線方向変更部３３は、仮想三次元空間における視線方向を変更する。また、視線・配置位置変更部３４は、仮想三次元空間における、視線方向および原稿画像７２の双方の配置位置を変更する。また、再設定部３５は、配置面５０を再設定する。
【０１７１】
表示制御部２８は、ユーザによる入力部１８の操作指示に応じて、オブジェクト移動部３０、オブジェクト拡大縮小部３１、オブジェクト回転部３２、視線方向変更部３３、視線・配置位置変更部３４、および再設定部３５を呼び出す。例えば、ユーザは、表示部２０に表示された表示画面を参照しながら入力部１８を操作することで、原稿画像７２の移動、拡大縮小、回転、視線方向の変更、視線方向および原稿画像７２の配置位置の変更指示、などを指示する。
【０１７２】
図１５は、表示画面６０の一例を示す図である。
【０１７３】
表示画面６０は、表示画像の表示領域７０と、背景画像選択ボタン６１と、オブジェクト選択ボタン６２と、配置ボタン６３と、移動・拡大縮小ボタン６４と、３Ｄ回転ボタン６５と、平面回転ボタン６６と、を含む。
【０１７４】
表示領域７０には、表示画像が表示される。背景画像選択ボタン６１は、ユーザが背景画像７４を選択するときに操作する指示領域である。オブジェクト選択ボタン６２は、ユーザが原稿画像７２を選択するときに操作する操作領域である。配置ボタン６３は、表示領域５１の指定時にユーザが操作する指示領域である。移動・拡大縮小ボタン６４、３Ｄ回転ボタン６５、及び平面回転ボタン６６は、原稿画像７２を仮想三次元空間Ｋの中で移動、拡大、縮小、回転させるときにユーザによって指示される。詳細には、移動・拡大縮小ボタン６４は、表示画像に含まれる原稿画像７２の移動、拡大、または縮小を指示するときにユーザが操作する指示領域である。３Ｄ回転ボタン６５は、表示画像に含まれる原稿画像７２を三次元に回転させるときにユーザが操作する指示領域である。平面回転ボタン６６は、表示画像に含まれる原稿画像７２を二次元に回転させるときにユーザが操作する指示領域である。
【０１７５】
配置ボタン６３、移動・拡大縮小ボタン６４、３Ｄ回転ボタン６５、及び平面回転ボタン６６は排他的に選択可能となっており、一つのボタンが指示されると、別のボタンの選択が解除される。なお、アプリケーション起動時には、配置ボタン６３が選択された状態となっており、表示領域５１の指定及び変更が可能な状態となっている。
【０１７６】
図１６は、移動、拡大縮小、回転の説明図である。
【０１７７】
ユーザが、移動・拡大縮小ボタン６４、３Ｄ回転ボタン６５、または平面回転ボタン６６を選択したとする。なお、これらの選択の後に、ユーザは、配置ボタン６３を選択することも可能である。
【０１７８】
まず、移動・拡大縮小ボタン６４について説明する。表示画像に含まれる二次原稿元画像５６を移動したり、拡大したり、縮小したりする処理は、もっともよく利用される機能である。このため、本実施の形態では、これらの複数の処理を指示するためのボタンを、１つの移動・拡大縮小ボタン６４としている。ＵＩ部２２をタッチパネルで構成した場合、移動指示はドラッグ、拡大縮小指示はピンチアウト／ピンチインで行われる。このため、表示部２０の画面にタッチしているユーザの指の数が異なっており、同一のボタンであってもどちらの処理をユーザが利用しようとしているのか切り分けできる。すなわち、移動・拡大縮小ボタン６４が選択された状態で、ユーザによってドラッグの指示がなされると、画像処理部１４は、「移動指示」と判断すればよい。また、移動・拡大縮小ボタン６４が選択された状態で、ユーザによってピンチアウト／ピンチインがなされると、画像処理部１４は、「拡大指示」または「縮小指示」がなされたと判断すればよい。
【０１７９】
表示制御部２８は、設定部２７に、選択されているボタンを示す指示情報（配置ボタン６３、移動・拡大縮小ボタン６４、３Ｄ回転ボタン６５、及び平面回転ボタン６６の何れか）と、ユーザによって指示されたデバイス座標を出力する。
【０１８０】
設定部２７は、表示制御部２８から受け付けた指示情報及びデバイス座標に応じて、オブジェクト移動部３０、オブジェクト拡大縮小部３１、またはオブジェクト回転部３２を呼び出す。
【０１８１】
オブジェクト移動部３０は、移動・拡大縮小ボタン６４を示す指示情報を受け付け、且つ、ユーザによって原稿画像７２のドラッグ操作がなされた場合（図１６（Ａ）参照）、起動する。なお、オブジェクト移動部３０は、これらの指示情報（移動指示）やドラッグ操作を、入力部１８から受付部２５を介して受け付ける。
【０１８２】
そして、オブジェクト移動部３０は、ドラッグ開始時のデバイス座標を記憶する。また、オブジェクト移動部３０は、指定部２６から、指定された表示領域５１の各頂点のデバイス座標を取得し、４頂点の重心Ｐを求める。言い換えれば、オブジェクト移動部３０は、表示されている表示画像に含まれる原稿画像７２の各頂点のデバイス座標と、重心Ｐと、を求める（図１６（Ｂ）参照）。
【０１８３】
なお、オブジェクト移動部３０は、重心Ｐに代えて、４頂点の何れか１頂点を求めても良いし、任意の１点でもよい。具体的には、任意の１点から、原稿画像７２の４頂点の各々のオブジェクト座標を算出可能な、該任意の１点であればよい。ここでは、制御が簡単な重心Ｐを利用する場合を説明する。
【０１８４】
そして、オブジェクト移動部３０は、ドラッグ開始時の原稿画像７２の重心Ｐのオブジェクト座標を保持する。
【０１８５】
次に、オブジェクト移動部３０は、ユーザによるドラッグ操作中は、現座標（現在指示している二次元座標）からドラッグ開始時の二次元座標を差し引き、表示部２０の画面上における移動ベクトルを算出する。そして、オブジェクト移動部３０は、算出した移動ベクトルを、ドラッグ開始時の重心Ｐに加算することで、現在の重心Ｐ’のデバイス座標を算出する（図１６（Ｂ）参照）。
【０１８６】
次に、オブジェクト移動部３０は、算出した現在の重心Ｐ’の位置に、設定部２７が保持している射影行列Ｇを適用することで、仮想三次元空間Ｋにおける原稿画像７２の位置を算出する。なお、この算出時には、Ｚ座標の値は０とする。これにより、原稿画像７２は、仮想三次元空間Ｋ内の、ＸＹ平面を、原稿画像７２Ａの位置から原稿画像７２Ｂの位置へと移動することとなる（図１６（Ｃ）参照）。
【０１８７】
表示制御部２８による表示画像の表示時には、原稿画像７２がＸＹ平面上を移動することとなる。ここで、原稿画像７２Ａの位置から原稿画像７２Ｂの位置への移動を示す行列をＴとする。オブジェクト移動部３０は、第２算出部２７Ｃで算出された傾き・位置行列に、この行列Ｔを乗算した行列（ＲＴ×Ｔ）を、新たな傾き・位置行列として第４算出部２７Ｇ及び表示制御部２８へ引き渡せばよい。なお、ＲＴは、傾き・位置行列を示す。
【０１８８】
また、設定部２７は、この行列Ｔを利用して、デバイス座標を算出し、新たな表示領域５１（変更後の表示領域５１）として、指定部２６へ引き渡せばよい。
【０１８９】
このように、ユーザは、表示画像に含まれる原稿画像７２を、容易に移動させることができるので、仮想三次元空間Ｋに配置された仮想光源ＬＡによる反射位置の変化を、容易に確認することができる。
【０１９０】
オブジェクト拡大縮小部３１は、移動・拡大縮小ボタン６４を示す指示情報を受け付け、且つ、ユーザによって原稿画像７２のピンチアウト／ピンチイン操作がなされた場合（図１６（Ｄ）参照）、起動する。なお、オブジェクト拡大縮小部３１は、これらの指示情報（拡大縮小指示）やピンチアウト／ピンチイン操作を、入力部１８から受付部２５を介して受け付ける。
【０１９１】
そして、オブジェクト拡大縮小部３１は、ピンチアウト／ピンチイン開始時の２頂点間の距離を算出し、記録する。また、ピンチアウト／ピンチイン中も、オブジェクト拡大縮小部３１は、２頂点間の距離を算出する。そして、ピンチアウト／ピンチイン中の２頂点間の距離を、ピンチアウト／ピンチイン開始時の２頂点間の距離で割ったものを、指定倍率として扱う。オブジェクト初期座標は、ＸＹ平面上にあり、倍率はＸＹ座標だけに適応する。オブジェクト拡大縮小部３１は、原稿画像７２をピンチアウト／ピンチインするときの行列を、行列Ｓとし記憶する。
【０１９２】
さらに、オブジェクト拡大縮小部３１は、第２算出部２７Ｃで算出された傾き・位置行列に、行列Ｓを乗算した行列（ＲＴ×Ｓ）を、新たな傾き・位置行列として第４算出部２７Ｇ及び表示制御部２８へ引き渡せばよい。なお、オブジェクト移動部３０による移動の後に、拡大縮小が指示された場合には、オブジェクト拡大縮小部３１は、第２算出部２７Ｃで算出された傾き・位置行列に、行列Ｔと、行列Ｓと、を乗算した行列（ＲＴ×Ｔ×Ｓ）を、新たな傾き・位置行列として第４算出部２７Ｇ及び表示制御部２８へ引き渡せばよい。これにより、拡大した原稿画像７２を含む表示画像が表示される。
【０１９３】
設定部２７は、オブジェクト移動部３０のときと同様にしてデバイス座標を算出し、新たな表示領域５１（変更後の表示領域５１）として、指定部２６へ引き渡せばよい。また、設定部２７は、拡大縮小の倍率を、表示制御部２８に引き渡す。表示制御部２８は、受け付けた倍率を、表示画像と共に表示部２０に表示するように制御する。この倍率を表示部２０に表示することで、背景画像中に、基準となる大きさを示す物体などの画像が含まれる場合、原稿画像７２の倍率をどの程度にすればよいか、ユーザは容易に推測可能となる。具体的には、ユーザは、表示されている倍率から、例えば、原稿画像７２をＡ３サイズのポスターとして出力するか、Ａ１サイズのポスターとして出力するか、などを、表示画像を確認しながら考察することができる。
【０１９４】
オブジェクト回転部３２は、３Ｄ回転ボタン６５、または平面回転ボタン６６を示す指示情報を受け付けた場合（図１６（Ｅ）参照）、起動する。なお、オブジェクト回転部３２は、これらの指示情報（二次元回転指示、三次元回転指示）を、入力部１８から受付部２５を介して受け付ける。
【０１９５】
オブジェクト回転部３２は、３Ｄ回転ボタン６５を示す指示情報（三次元回転指示）を受け付けた場合、ユーザによる入力部１８の指示などによるドラッグに合わせて、原稿画像７２を三次元回転させる。具体的には、オブジェクト回転部３２は、マウス等による入力部１８のドラッグに応じた、３次元の回転行列を生成する。
【０１９６】
本実施の形態では、この３次元の回転行列の生成に、既知のトラックボールコントロール技術を利用する。この三次元の回転行列をＲ３とする。この場合、オブジェクト回転部３２が、下記式（１８）によって示される行列を、新たな傾き・位置行列として第４算出部２７Ｇ及び表示制御部２８に引き渡すことで、三次元回転された原稿画像７２を含む表示画像が表示部２０に表示される。
【０１９７】
ＲＴ×Ｒ３・・・式（１８）
【０１９８】
なお、オブジェクト移動部３０による移動、及びオブジェクト拡大縮小部３１による拡大縮小の後に、さらに、三次元回転が指示された場合には、オブジェクト回転部３２は、下記式（１９）によって示される行列を、新たな傾き・位置行列として第４算出部２７Ｇ及び表示制御部２８に引き渡すことで、三次元回転された原稿画像７２を含む表示画像が表示部２０に表示される。
【０１９９】
ＲＴ×Ｔ×Ｒ３×Ｓ・・・式（１９）
【０２００】
設定部２７は、オブジェクト移動部３０のときと同様にしてデバイス座標を算出し、新たな表示領域５１（変更後の表示領域５１）として、指定部２６へ引き渡せばよい。三次元回転された原稿画像７２を含む表示画像が表示部２０に表示されることで、ユーザは、光源反射効果を容易に確認できる。
【０２０１】
オブジェクト回転部３２は、平面回転ボタン６６を示す指示情報（二次元回転指示）を受け付けた場合（図１６（Ｅ）参照）、ユーザによる入力部１８の指示などによるドラッグに合わせて、仮想三次元空間Ｋ内における原稿画像７２をＸＹ平面に沿って二次元回転させる。具体的には、オブジェクト回転部３２は、マウス等による入力部１８のドラッグに応じた、二次元の回転行列を生成する。
【０２０２】
この場合、オブジェクト回転部３２は、ドラッグ開始点からの移動量を、予め定めた係数をかけたラジアンとして取り扱う。オブジェクト回転部３２は、このラジアンを利用して、二次元の回転行列Ｒ２を生成する。オブジェクト回転部３２が、下記式（２０）によって示される行列を、新たな傾き・位置行列として第４算出部２７Ｇ及び表示制御部２８に引き渡すことで、二次元回転された原稿画像７２を含む表示画像が表示部２０に表示される。
【０２０３】
ＲＴ×Ｒ２・・・式（２０）
【０２０４】
なお、オブジェクト移動部３０による移動、オブジェクト拡大縮小部３１による拡大縮小、三次元回転、の後に更に二次元回転が指示された場合、オブジェクト回転部３２は、下記式（２１）によって示される行列を、新たな傾き・位置行列として第４算出部２７Ｇ及び表示制御部２８に引き渡すことで、さらに二次元回転された原稿画像７２を含む表示画像が表示部２０に表示される。
【０２０５】
ＲＴ×Ｔ×Ｒ３×Ｒ２×Ｓ・・・式（２１）
【０２０６】
設定部２７では、オブジェクト移動部３０のときと同様にしてデバイス座標を算出し、新たな表示領域５１（変更後の表示領域５１）として、指定部２６へ引き渡せばよい。設定部２７は、背景画像に平行なＸＹ平面に原稿画像７２を配置するが、背景画像が常に垂直や水平な状態になっているとは限らず、傾いていることもあるため、この回転を利用することが好ましい。また、机などの背景画像の上にオブジェクトを配置する場合、座っているユーザからみて正しく置かれている状態にしたいため、平面回転を行う。三次元回転に比べて、二次元回転の方が大変容易である。
【０２０７】
なお、オブジェクト移動部３０、オブジェクト拡大縮小部３１、及びオブジェクト回転部３２の少なくとも２つを組み合わせて利用してもよい。また、ユーザによる操作により配置ボタン６３が指示され、表示領域５１の指定をやり直す場合には、Ｔ、Ｒ３、Ｒ２、Ｓを単位行列にすればよい。
【０２０８】
移動・拡大縮小ボタン６４、３Ｄ回転ボタン６５、及び平面回転ボタン６６を用いて、原稿画像７２を移動、拡大縮小、回転させることができるので、原稿画像７２の４頂点の全てを操作して移動を行うことなく、一度確定した表示領域５１の形状を維持した状態で、三次元仮想空間Ｓ内における原稿画像７２の姿勢を容易に変更することができる。
【０２０９】
また、ユーザは、表示画像における原稿画像７２の位置を容易に調整することができる。
【０２１０】
次に、視線方向変更部３３、視線・配置位置変更部３４、再設定部３５、の各々について説明する。
【０２１１】
図１７は、視線方向変更の説明図である。視線方向変更部３３は、仮想三次元空間における視線方向を変更する。ユーザは、視線方向の変更を入力する。受付部２５は、視線方向の変更指示を示す指示情報を受付ける。視線方向変更部３３は、入力部１８から受付部２５を介して、視線方向の変更を示す指示情報を受付ける。
【０２１２】
例えば、ユーザは、表示部２０に表示された表示画像８０における、原稿画像７２以外の領域をタッチして矢印Ｂ１方向へドラッグしたとする。これによって、該ドラッグの方向とは逆方向の矢印Ｂ２方向への視線方向の変更指示が入力される。
【０２１３】
具体的には、視線方向変更部３３は、表示画像８０における、原稿画像７２以外の領域のタッチされた位置を示すデバイス座標を、受付部２５を介して入力部１８から受付ける。そして、視線方向変更部３３は、タッチ開始時のデバイス座標を保存しておき、タッチ中（すなわちドラッグ中）、タッチ開始時からのデバイス座標の移動量を利用して回転角度を算出する。そして、視線方向変更部３３は、タッチ開始時の回転角度に、タッチ中（すなわちドラッグ中）の回転角度を加算した方向を、変更後の視線方向Ｌとして特定する。
【０２１４】
図１７（Ａ）に示すように、例えば、仮想三次元空間Ｋをなす背景画像７４（全天球パノラマ画像）における、ある位置に原稿画像７２が配置されていたとする。そして、表示画像８０Ａとして、該背景画像７４を視点位置Ｐから視線方向Ｌ１に視認した視野角の範囲７４Ａの二次元画像が表示されていたとする。そして、ユーザが、表示部２０に表示された表示画像８０Ａにおける、原稿画像７２以外の領域をタッチして矢印Ｂ１方向へドラッグしたとする。これによって、該ドラッグの方向とは逆方向の矢印Ｂ２方向への視線方向の変更指示が入力される。
【０２１５】
すると、視線方向変更部３３は、入力された、矢印Ｂ２方向へ視線方向Ｌを移動することで、視線方向Ｌ１から視線方向Ｌ２に視線方向を変更する。視線方向変更部３３は、上述したように、タッチ開始時からのデバイス座標の移動量を利用して、回転角度を算出し、変更後の視線方向Ｌ２を特定すればよい。このため、該背景画像７４を視点位置Ｐから視線方向Ｌに視認した視野角の範囲が、範囲７４Ａから範囲７４Ｂへ移動される（図１７（Ｂ）参照）。
【０２１６】
この場合、表示制御部２８は、仮想三次元空間Ｋにおける視線方向Ｌ１を、視線方向Ｌ２へ変更し、背景画像７４（全天球パノラマ画像）を視点位置Ｐから視線方向Ｌ２に視認した状態を示す該範囲７４Ｂの表示画像８０Ｂを、表示部２０へ表示する。
【０２１７】
このため、この場合、仮想三次元空間Ｋにおける原稿画像７２の位置は固定したまま、視線方向Ｌのみを変更した状態を示す表示画像８０Ｂが、表示部２０に表示されることとなる。なお、表示制御部２８は、視線方向Ｌの変更に応じて、原稿画像７２を変形することが好ましい。
【０２１８】
なお、視線方向Ｌの変更は、画像処理装置１０の姿勢から判別してもよい。例えば、画像処理装置１０の姿勢（例えば、表示部２０の表示面に対する垂線方向）を、視線方向Ｌとして扱っても良い。この場合、画像処理装置１０に、画像処理装置１０の姿勢を検出するための公知のセンサ（例えば、ジャイロセンサやＧＰＳなど）を備えた構成とすればよい。そして、画像処理部１４では、画像処理装置１０の姿勢の変化方向および変化量を、視線方向Ｌの変更方向および変更量（回転角度）として用いればよい。また、ヘッドマウントディスプレイを利用して、ヘッドマウントディスプレイと連携できるジャイロセンサを用いて、視線方向Ｌの変化量を求めてもよい。
【０２１９】
図１８は、視線方向Ｌを変更した場合の、表示画像８０の一例を示す模式図である。図１８（Ａ）は、視線方向Ｌが図１７（Ａ）に示す状態であるときの、表示画像８０の一例（表示画像８０Ａ）を示す模式図である。図１８（Ｂ）は、視線方向Ｌが図１７（Ｂ）に示す状態であるときの、表示画像８０の一例（表示画像８０Ｂ）を示す模式図である。
【０２２０】
図１８に示すように、視線方向Ｌの変更指示によって、仮想三次元空間Ｋにおける原稿画像７２の位置は固定であるが、視線方向Ｌが変更されることで、原稿画像７２の見え方が変化する。このため、ユーザは、視線方向Ｌの変更によって、原稿画像７２がどのような見え方（表示位置や形状）となるかを容易に確認することができる。
【０２２１】
次に、視線・配置位置変更部３４について説明する。視線・配置位置変更部３４は、仮想三次元空間Ｋにおける、視線方向Ｌおよび原稿画像７２の双方の配置位置を変更する。
【０２２２】
例えば、受付部２５は、視線方向Ｌの変更指示と、原稿画像（オブジェクト）７２の配置位置の変更指示と、を含む同時変更指示を、入力部１８から受付ける。すなわち、同時変更指示は、視線方向Ｌと原稿画像７２の双方を同時に移動させるための指示である。
【０２２３】
受付部２５が同時変更指示を受付けると、視線・配置位置変更部３４は、仮想三次元空間Ｋにおける、配置面５０に沿った仮想面に沿って、視線方向Ｌの変更指示に応じた方向に原稿画像７２を移動させる。
【０２２４】
配置面５０に沿った仮想面とは、仮想三次元空間Ｋにおいて、配置面５０の位置および姿勢を維持したまま、仮想三次元空間Ｋにおいて該配置面５０を拡大した二次元平面である。このため、仮想面の一部領域が配置面５０と一致する。
【０２２５】
表示制御部２８は、同時変更指示を受付けたときに、配置面５０に沿った仮想面に沿って、視線方向Ｌの変更指示に応じた方向に原稿画像７２を移動させた状態を、視点位置Ｐから変更後の視線方向Ｌへ視認した二次元画像に変換した、表示画像８０を、表示部２０に表示する制御を行う。
【０２２６】
また、判別部３６は、受付部２５が、予め定めた角度以上の視線方向Ｌの変更指示を含む、同時変更指示を受付けたか否かを判別する。予め定めた角度は、例えば、９０°、１８０°などである。
【０２２７】
再設定部３５は、予め定めた角度以上の視線方向Ｌの変更指示を含む同時変更指示を受付けたと判別したときに、仮想三次元空間Ｋにおける、配置面５０を視線方向Ｌの変更に応じて変更した平面を、新たな配置面５０として再設定する。例えば、再設定部３５は、仮想三次元空間Ｋにおける、変更後の視線方向Ｌに対して直交する平面（垂直に交差する平面）を、新たな配置面５０として再設定する。
【０２２８】
例えば、再設定部３５は、現在の視線方向Ｌと現在設定されている配置面５０の法線方向を取得する。ここで、配置面５０の法線方向をＡ０＝（α０，β０，γ０）、時刻ｔの視線方向をＡｔ＝（αｔ，βｔ，γｔ）とする。すると、相対的な方向は、Ａｔ−Ａ０で表される。再設定部３５は、予め定めた角度（すなわち相対角度）、視線方向Ｌが回転した場合、原稿画像７２の配置面５０を切り替えることで、再設定する。
【０２２９】
この再設定により、例えば、再設定部３５は、一般的な直方体の建物の垂直面に対して、配置面５０を切り替えることができる。この時の配置面５０の法線方向は、Ａ０＝（α０＋π／２＊Ｓα，β０＋π／２＊Ｓβ，γ０＋π／２＊Ｓγ）で表される。ここで、Ｓは、表示部２０の姿勢の変化を表す整数変数｛０，１，２，３｝である。表示部２０の姿勢を変更するタイミングは、姿勢の変化量｜Ａｔ−Ａ０｜が閾値ψ（４５＜ψ＜９０）を超えた時とする。
【０２３０】
なお、配置面５０を再設定した後も、同様に、再設定部３５は、予め定めた角度以上の視線方向Ｌの変更指示を受付けた場合、配置面５０を再設定すればよい。
【０２３１】
表示制御部２８は、再設定された配置面５０に原稿画像（オブジェクト）７２を配置した状態を、視点位置Ｐから変更後の視線方向へ視認した二次元画像に変換した表示画像８０を、表示部２０に表示する制御を行う。
【０２３２】
例えば、ユーザによるＵＩ部２２の操作によって、異なる２点（例えば、原稿画像７２上と、背景画像７４上）が同時にタッチされたとする。すると、画像処理部１４は、これらの２点の各々のデバイス座標を受付ける。本実施の形態では、画像処理部１４は、原稿画像７２上の点と、背景画像７４上の点と、を示す２点のデバイス座標を同時に受付けた場合、同時変更指示を受付けたと判断する。なお、画像処理部１４は、原稿画像７２の４頂点のデバイス座標を把握していることから、原稿画像７２上の点と、背景画像７４上の点と、を示す２点のデバイス座標を同時に受付けたことを判別することができる。
【０２３３】
そして、ユーザは、例えば、原稿画像７２上のタッチ位置は固定としたまま、背景画像７４におけるタッチ位置を所望の方向にドラッグする。この操作により、ユーザは、原稿画像７２の配置位置と視線方向Ｌの双方を同時に移動させることを示す、同時変更指示を入力する。
【０２３４】
視線・配置位置変更部３４は、受付けた同時変更指示に応じて、仮想三次元空間Ｋにおける、視線方向Ｌおよび原稿画像７２の双方の配置位置を変更する。
【０２３５】
図１９は、同時変更指示の受付けにより、視線方向Ｌと原稿画像７２の位置を同時に変更したときの、表示画像８０（表示画像８０Ｃ〜表示画像８０Ｅ）の一例を示す模式図である。図２０は、同時変更指示の受付けにより、視線方向Ｌと原稿画像７２の位置を同時に変更したときの、仮想三次元空間Ｋにおける原稿画像７２の位置を示す模式図である。
【０２３６】
例えば、図１９（Ａ）に示すように、ユーザが、表示部２０における原稿画像７２上の点（タッチ位置Ｔ１）と、背景部分の点（タッチ位置Ｔ２ａ）と、を同時にタッチしたとする。そして、ユーザは、タッチ位置Ｔ１を固定したまま、背景部分のタッチ位置Ｔ２ａを所望の方向（例えば、矢印Ｂ３方向）にドラッグする。この操作により、ユーザは、原稿画像７２の配置位置と視線方向Ｌの双方を同時に移動させることを示す、同時変更指示を入力する。この場合、ユーザは、該矢印Ｂ３方向の逆方向（矢印Ｂ４）に視線方向Ｌを移動させることを示す指示と、原稿画像７２も同時に移動させることを示す指示と、を入力したこととなる。
【０２３７】
図１９（Ａ）に示す操作を受付けると、図２０に示すように、視線・配置位置変更部３４は、仮想三次元空間Ｋ（背景画像（全天球パノラマ画像）７４）における視線方向Ｌ１を、該ドラッグ量に応じた回転角度θ回転し、視線方向Ｌ２へ変更する。また、視線・配置位置変更部３４は、仮想三次元空間Ｋにおける原稿画像７２を、該原稿画像７２の配置されている配置面５０Ａに沿った仮想面５０Ａ’に沿って、視線方向Ｌの変更方向（ここでは、矢印Ｂ４方向）に、該回転角度θ移動させる。このため、原稿画像７２は、仮想三次元空間Ｋ内を、仮想面５０Ａ’に沿って、原稿画像７２Ａの位置から原稿画像７２Ｂの位置へと移動される。なお、仮想面５０Ａ’における、移動後の原稿画像７２Ｂの位置は、視点位置Ｐを中心として、視線方向Ｌ１を回転角度θ回転させた位置に相当する。
【０２３８】
そして、表示制御部２８は、仮想三次元空間Ｋにおける、仮想面５０Ａ’に沿って移動させた原稿画像７２Ｂを、視点位置Ｐから視線方向Ｌ２に視認した状態を示す表示画像８０を、表示部２０へ表示する。
【０２３９】
このため、この場合、表示部２０には、図１９（Ｂ）に示す表示画像８０Ｄが表示されることとなる。すなわち、仮想三次元空間Ｋにおける視線方向Ｌが矢印Ｂ４へ移動することで、背景画像７４が反対の方向（矢印Ｂ３方向）に流れた状態を示す表示画像８０Ｄが、表示部２０に表示される。このとき、同時変更指示がなされず、視線方向Ｌのみを変更する場合には、原稿画像７２もまた矢印Ｂ３方向へ流れる。しかし、同時変更指示がなされた場合、原稿画像７２を配置面５０Ａに沿った仮想面５０Ａ’に沿って、視線方向Ｌの変更方向（ここでは、矢印Ｂ４方向）に移動させる。このため、この場合、原稿画像７２も仮想三次元空間Ｋを移動し、表示画像８０Ｄに含まれて表示されることとなる。
【０２４０】
そして、さらに、ユーザが、表示部２０における原稿画像７２上の点（タッチ位置Ｔ１）をタッチしたまま、背景部分の点（タッチ位置Ｔ２ｂ）をタッチしたまま矢印Ｂ３方向にドラッグし、タッチ位置Ｔ２ｃへドラッグしたとする（図１９（Ｃ）参照）。
【０２４１】
この操作により、ユーザは、原稿画像７２の配置位置と視線方向Ｌの双方を同時に移動させることを示す、同時変更指示を更に入力する。この場合、ユーザは、該矢印Ｂ３方向の逆方向（矢印Ｂ４）に、更に視線方向Ｌを移動させることを示す指示と、原稿画像７２も同時に移動させることを示す指示と、を入力したこととなる。そして、この操作によって、変更前の視線方向Ｌ１から、予め定めた角度以上の視線方向Ｌの変更指示が入力されたとする。すなわち、図２０における回転角度θが、該予め定めた角度（例えば９０°）以上となったと仮定する。なお、回転角度θは、視点位置Ｐを中心とする、変更前の視線方向Ｌ１と、変更後の視線方向Ｌ２と、の成す角度から求めればよい。また、回転角度θは、原稿画像７２の姿勢を示す行列から求めてもよい。
【０２４２】
この場合、再設定部３５は、仮想三次元空間Ｋにおける、変更後の視線方向Ｌ２に直交する平面を、新たな配置面５０（例えば、配置面５０Ｂ）として再設定する。
【０２４３】
ここで、画像処理部１４は、単位ベクトルを回転角度θで回転させたときに得られるベクトルを、配置面５０の法線ベクトルＡとする。なお、法線ベクトルＡとなる配置面５０は、仮想三次元空間Ｋ内に複数存在する。すなわち、配置面５０は、視点位置Ｐからの距離が変動可能である。このようにしておくことで、奥行きについて自由に原稿画像７２を配置することができる。一方、配置面５０の方向は一方向に決定してしまうが、屋内や屋外での建造物は、複数の壁面が平行な関係で配置されることが多い。このため、一度の設定で、ユーザは奥行きを変更するだけで、平行な面に原稿画像７２を自由に移動させることができる。そして、再設定部３５は、回転角度θを、配置面５０の再設定に用いる。
【０２４４】
このため、図２０に示す場合、表示制御部２８は、仮想面５０Ａ’に配置されていた原稿画像７２Ｂを、再設定された配置面５０Ｂに配置する（図２０中、矢印Ｑ参照）。このため、原稿画像７２Ｂは、配置面５０Ｂに配置された原稿画像７２Ｃとなる。
【０２４５】
そして、表示制御部２８は、仮想三次元空間Ｋにおける、再設定された配置面５０Ｂに配置された原稿画像７２Ｃを、視点位置Ｐから視線方向Ｌ２に視認した状態を示す表示画像８０を、表示部２０へ表示する。
【０２４６】
このため、この場合、表示部２０には、図１９（Ｃ）に示す表示画像８０Ｅが表示されることとなる。すなわち、仮想三次元空間Ｋにおける視線方向Ｌが矢印Ｂ４へ所定角度以上変更されることで、変更後の視線方向Ｌ２に直交する新たな平面が配置面５０Ｂとして再設定され、該配置面５０Ｂ上に原稿画像７２が配置される。そして、表示画像８０Ｅは、再設定された配置面５０Ｂに原稿画像７２Ｃを配置した状態を、視点位置Ｐから変更後の視線方向Ｌ２に視認した二次元画像に変換した表示画像８０となる。
【０２４７】
次に、画像処理部１４が実行する表示処理の流れを説明する。図２１は、画像処理部１４が実行する表示処理の流れの説明図である。
【０２４８】
まず、取得部２４がオブジェクトと背景画像を取得し、表示制御部２８へ出力する（ＳＥＱ１００）。光源受付部２９は、光源情報及び原稿反射情報を受け付け、表示制御部２８へ出力する（ＳＥＱ１０２）。
【０２４９】
受付部２５は、表示部２０の画面上における、原稿画像７２の表示領域の指定をユーザから受け付け、指定部２６へ出力する（ＳＥＱ１０４）。指定部２６は、受付部２５で受け付けた表示領域を、指定された表示領域として設定し、設定部２７の仮配置部２７Ａに出力する（ＳＥＱ１０６）。
【０２５０】
仮配置部２７Ａは、指定部２６で設定された表示領域５１を取得する。そして、仮配置部２７Ａは、表示対象のオブジェクトを、三次元空間におけるＺ＝０のＸＹ平面に仮配置し、原稿面５４とする。そして、仮配置部２７Ａは、仮配置した原稿面５４の初期配置座標（三次元座標）を、第１算出部２７Ｂへ出力する（ＳＥＱ１０８）。
【０２５１】
第１算出部２７Ｂは、仮想三次元空間に仮配置した原稿面５４の初期配置座標を、二次元空間のデバイス座標に射影する射影行列Ｆと、その逆の射影行列Ｇを算出する。そして、射影行列Ｆを第２算出部２７Ｃへ出力する（ＳＥＱ１１０）。
【０２５２】
第２算出部２７Ｃは、第１算出部２７Ｂから取得した射影行列Ｆと、撮影部１２の光学特性パラメータと、を用いて、傾き・位置行列を算出する。次に、第２算出部２７Ｃは、算出した傾き・位置行列と、射影行列Ｆと、算出に用いた光学特性パラメータと、を、第３算出部２７Ｄへ出力する（ＳＥＱ１１２）。
【０２５３】
第３算出部２７Ｄは、仮想三次元空間に配置された三次元像を二次元像に投影（すなわち、仮想三次元空間の三次元座標を二次元空間の二次元座標に投影）するための投影行列Ｂを算出する。
【０２５４】
制限部２７Ｆは、仮配置した原稿面５４の４頂点の初期配置座標を仮配置部２７Ａから取得する（ＳＥＱ１１４）。そして、制限部２７Ｆは、傾き・位置行列を第２算出部２７Ｃから取得し（ＳＥＱ１１６）、最新の投影行列Ｂを第２算出部２７Ｃから取得する（ＳＥＱ１１８）。そして、制限部２７Ｆは、仮配置した原稿面５４の４頂点の初期配置座標と、傾き・位置行列と、投影行列Ｂと、から、該４頂点の各々の、正規化二次元座標を算出する。このとき、制限部２７Ｆは、該４頂点の全ての正規化二次元座標におけるｚ座標が０以上である場合、すなわち、仮想三次元空間を写す仮想カメラの後方側（撮影方向の反対側）に位置する場合、異常と判断する（ＳＥＱ１２０）。
【０２５５】
第４算出部２７Ｇは、制限部２７Ｆが異常と判断したか否かを判別する（ＳＥＱ１２２）。制限部２７Ｆによって異常であると判断された場合、第４算出部２７Ｇは、異常信号を、指定部２６（図２参照）と、第２算出部２７Ｃと、第３算出部２７Ｄと、に通知する。一方、第４算出部２７Ｇは、制限部２７Ｆによって異常ではないと判断された場合、仮配置された原稿面５４の４頂点の初期配置座標と、最新の傾き・位置行列（仮想領域）と、最新の投影行列Ｂと、を、表示制御部２８へ通知する（ＳＥＱ１２４）。
【０２５６】
表示制御部２８は、仮想三次元空間における、算出された仮想領域に原稿画像７２を配置する。すなわち、表示制御部２８は、仮想三次元空間における、三次元座標によって示される仮想領域に原稿画像７２を配置する。そして、表示制御部２８は、表示画像８０を生成し、表示部２０に表示する制御を行う（ＳＥＱ１２６）。
【０２５７】
なお、このとき、ユーザによるドラッグなどの操作によって、新たな表示領域５１が指定されると、ＳＥＱ１００またはＳＥＱ１０４へ戻る。
【０２５８】
次に、表示画像８０が表示された後に、ユーザによる入力部１８の操作指示によって、視線方向、同時変更（原稿画像７２と視線方向Ｌの双方）、原稿画像７２の配置位置の変更、の何れかが入力された場合に、画像処理部１４が実行する画像処理の一例を説明する。図２２は、本実施の形態の画像処理装置１０が実行する、画像処理の一例を示すフローチャートである。
【０２５９】
まず、受付部２５が、ＵＩ部２２を介して受付けた、ユーザによる操作指示内容を判断する（ステップＳ２００）。ステップＳ２００で視線方向Ｌの変更指示を受付けたと判断した場合、ステップＳ２０２へ進む。
【０２６０】
ステップＳ２０２では、視線方向変更部３３がステップＳ２００で受付けた視線方向Ｌの変更指示に応じて、視線方向Ｌを変更する（ステップＳ２０２）。そして、表示制御部２８は、ステップＳ２０２で変更した、変更後の視線方向Ｌに応じた表示画像８０を生成し、表示部２０へ表示する（ステップＳ２０４、ステップＳ２０６）。そして、本ルーチンを終了する。
【０２６１】
一方、ステップＳ２００の判断で、視線方向Ｌの変更と原稿画像７２の移動の同時変更指示を受付けたと判断した場合、ステップＳ２１４へ進む。ステップＳ２１４では、再設定部３５が、予め定めた角度（所定角度）以上の視線方向Ｌの変更指示を含む同時変更指示を受付けたか否かを判断する（ステップＳ２１４）。
【０２６２】
ステップＳ２１４で肯定判断すると（ステップＳ２１４：Ｙｅｓ）、ステップＳ２１６へ進む。ステップＳ２１６では、再設定部３５が、配置面５０を再設定する（ステップＳ２１６）。
【０２６３】
次に、表示制御部２８は、ステップＳ２１６で再設定された配置面５０に原稿画像（オブジェクト）７２を配置した状態を、視点位置Ｐから、同時変更指示に含まれる変更後の視線方向Ｌ２へ視認した二次元画像に変換した表示画像８０を生成する（ステップＳ２１８、ステップＳ２２０）。そして、表示制御部２８は、該表示画像８０を、表示部２０に表示する制御を行う（ステップＳ２２２）。そして、本ルーチンを終了する。
【０２６４】
一方、ステップＳ２１４で否定判断すると（ステップＳ２１４：Ｎｏ）、ステップＳ２２４へ進む。ステップＳ２２４では、視線・配置位置変更部３４が、仮想三次元空間Ｋにおける、配置面５０に沿った仮想面に沿って、視線方向Ｌの変更指示に応じた方向に、変更指示によって示される回転角度θ、原稿画像７２を移動させる（ステップＳ２２４）。
【０２６５】
表示制御部２８は、ステップＳ２２４で、配置面５０に沿った仮想面に沿って、視線方向Ｌの変更指示に応じた方向に原稿画像７２を移動させた状態を、視点位置Ｐから変更後の視線方向Ｌへ視認した二次元画像に変換した、表示画像８０を生成する（ステップＳ２２６）。そして、表示制御部２８は、該表示画像８０を、表示部２０に表示する制御を行う（ステップＳ２２８）。そして、本ルーチンを終了する。
【０２６６】
一方、ステップＳ２００で、原稿画像（オブジェクト）７２の配置位置の変更指示を受付けたと判断した場合、ステップＳ２０８へ進む。ステップＳ２０８では、オブジェクト移動部３０が、該変更指示に応じて、仮想三次元空間Ｋにおける原稿画像７２の位置を移動させることで、配置位置を変更する（ステップＳ２０８）。次に、表示制御部２８は、ステップＳ２０８によって変更された位置に配置された原稿画像７２を、視点位置Ｐから視線方向Ｌに視認した二次元画像に変換した表示画像８０を生成する（ステップＳ２１０）。そして、表示制御部２８は、該表示画像８０を表示部２０へ表示し（ステップＳ２１２）、本ルーチンを終了する。
【０２６７】
以上説明したように、本実施の形態の画像処理装置１０は、設定部２７と、表示制御部２８と、受付部２５と、を備える。設定部２７は、仮想三次元空間Ｋにおける、オブジェクト（原稿画像７２）を配置する配置面５０を設定する。表示制御部２８は、仮想三次元空間Ｋにおける、配置面５０にオブジェクト（原稿画像７２）を配置した状態を、予め定めた視点位置Ｐから視線方向Ｌに視認した二次元画像に変換した表示画像８０を、表示部２０に表示する制御を行う。受付部２５は、視線方向Ｌの変更指示と、オブジェクト（原稿画像７２）の配置位置の変更指示と、を含む同時変更指示を受付ける。表示制御部２８は、同時変更指示を受付けた場合、配置面５０に沿った仮想面５０Ａ’に沿って、視線方向Ｌの変更指示に応じた方向にオブジェクト（原稿画像７２）を移動させた状態を、視点位置Ｐから変更後の視線方向Ｌに視認した二次元画像に変換した表示画像８０を、表示部２０に表示する制御を行う。
【０２６８】
従って、本実施の形態の画像処理装置１０では、仮想三次元空間Ｋにおける、視線方向Ｌとオブジェクト（原稿画像７２）の位置の双方を、同時に変更することができる。
【０２６９】
判別部３６は、受付部２５が予め定めた角度以上の視線方向Ｌの変更指示を含む同時変更指示を受付けたか否かを判別する。再設定部３５は、予め定めた角度以上の視線方向Ｌの変更指示を含む同時変更指示を受付けたと判別したときに、仮想三次元空間Ｋにおける、配置面５０を視線方向Ｌの変更に応じて変更した平面を、新たな配置面５０として再設定する。表示制御部２８は、再設定された配置面５０にオブジェクト（原稿画像７２）を配置した状態を、視点位置Ｐから変更後の視線方向Ｌに視認した二次元画像に変換した表示画像８０を、表示部２０に表示する制御を行う。
【０２７０】
再設定部３５は、予め定めた角度以上の視線方向Ｌの変更指示を含む同時変更指示を受付けたと判別したときに、仮想三次元空間Ｋにおける、変更後の視線方向に直交する平面を、新たな配置面５０として再設定する。
【０２７１】
表示制御部２８は、仮想三次元空間Ｋの三次元空間画像（背景画像７４）における、配置面５０にオブジェクト（原稿画像７２）を配置した状態を、視点位置Ｐから視線方向Ｌに視認した二次元画像に変換した表示画像８０を、表示部２０に表示する制御を行う。この三次元空間画像（背景画像７４）は、全方位の撮影によって得られる全天球パノラマ画像である。
【０２７２】
また、オブジェクト（原稿画像７２）は、二次元画像である。
【０２７３】
光源受付部２９は、光源ＬＡの光源効果を示す光源情報を受け付ける。表示制御部２８は、仮想三次元空間Ｋにおける配置面５０に、光源情報によって示される光源効果を付与したオブジェクト（原稿画像７２）を配置した状態を、予め定めた視点位置Ｐから視線方向Ｌに視認した二次元画像に変換した表示画像８０を、表示部２０に表示する。
【０２７４】
本実施の形態の画像処理方法は、仮想三次元空間Ｋにおける、オブジェクト（原稿画像７２）を配置する配置面５０を設定する設定ステップと、仮想三次元空間Ｋにおける配置面５０にオブジェクト（原稿画像７２）を配置した状態を、予め定めた視点位置Ｐから視線方向Ｌに視認した二次元画像に変換した表示画像８０を、表示部２０に表示する表示ステップと、視線方向Ｌの変更指示と、オブジェクト（原稿画像７２）の配置位置の変更指示と、を含む同時変更指示を受付ける受付ステップと、を含む。表示ステップは、同時変更指示を受付けた場合、配置面５０に沿った仮想面５０Ａ’に沿って、視線方向Ｌの変更指示に応じた方向にオブジェクト（原稿画像７２）を移動させた状態を、視点位置Ｐから変更後の視線方向Ｌに視認した二次元画像に変換した表示画像８０を、表示部２０に表示する。
【０２７５】
本実施の形態の画像処理プログラムは、仮想三次元空間Ｋにおける、オブジェクト（原稿画像７２）を配置する配置面５０を設定する設定ステップと、仮想三次元空間Ｋにおける配置面５０にオブジェクト（原稿画像７２）を配置した状態を、予め定めた視点位置Ｐから視線方向Ｌに視認した二次元画像に変換した表示画像８０を、表示部２０に表示する表示ステップと、視線方向Ｌの変更指示と、オブジェクト（原稿画像７２）の配置位置の変更指示と、を含む同時変更指示を受付ける受付ステップと、をコンピュータに実行させるための画像処理プログラムである。表示ステップは、同時変更指示を受付けた場合、配置面５０に沿った仮想面５０Ａ’に沿って、視線方向Ｌの変更指示に応じた方向にオブジェクト（原稿画像７２）を移動させた状態を、視点位置Ｐから変更後の視線方向Ｌに視認した二次元画像に変換した表示画像８０を、表示部２０に表示する。
【０２７６】
次に、上述した画像処理装置１０のハードウェア構成について説明する。
【０２７７】
図２３は、画像処理装置１０のハードウェア構成図である。画像処理装置１０は、ハードウェア構成として、装置全体を制御するＣＰＵ３００と、各種データや各種プログラムを記憶するＲＯＭ３０２と、各種データや各種プログラムを記憶するＲＡＭ３０４と、各種データを記憶するＨＤＤ（ハードディスクドライブ）３０６と、撮影部３０８と、入力機能と表示機能を備えたタッチパネル等のＵＩ部３１０と、を主に備えており、通常のコンピュータを利用したハードウェア構成となっている。なお、撮影部３０８は、図１の撮影部１２に相当し、ＵＩ部３１０は、図１のＵＩ部２２に相当する。またＨＤＤ３０６が、図１の記憶部１６に相当する。
【０２７８】
上記実施の形態の画像処理装置１０で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されてコンピュータプログラムプロダクトとして提供される。
【０２７９】
また、上記実施の形態の画像処理装置１０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、上記実施の形態の画像処理装置１０で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０２８０】
また、上記実施の形態の画像処理装置１０で実行されるプログラムを、ＲＯＭ３０２等に予め組み込んで提供するように構成してもよい。
【０２８１】
上記実施の形態の画像処理装置１０で実行されるプログラムは、上述した各部を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ３００が上記記憶媒体からプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上記各部が主記憶装置上に生成されるようになっている。
【０２８２】
なお、本発明は上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせてもよい。また、種々の変形が可能である。
【符号の説明】
【０２８３】
１０  画像処理装置
２５  受付部
２７  設定部
２８  表示制御部
２９  光源受付部
３５  再設定部
【先行技術文献】
【特許文献】
【０２８４】
【特許文献１】特開２０１４−２１９９４８号公報
【図１】
2018010473.tif 000013
【図２】
2018010473.tif 000014
【図３】
2018010473.tif 000015
【図４】
2018010473.tif 000016
【図５】
2018010473.tif 000017
【図６】
2018010473.tif 000018
【図７】
2018010473.tif 000019
【図８】
2018010473.tif 000020
【図９】
2018010473.tif 000021
【図１０】
2018010473.tif 000022
【図１１】
2018010473.tif 000023
【図１２】
2018010473.tif 000024
【図１３】
2018010473.tif 000025
【図１４】
2018010473.tif 000026
【図１５】
2018010473.tif 000027
【図１６】
2018010473.tif 000028
【図１７】
2018010473.tif 000029
【図１８】
2018010473.tif 000030
【図１９】
2018010473.tif 000031
【図２０】
2018010473.tif 000032
【図２１】
2018010473.tif 000033
【図２２】
2018010473.tif 000034
【図２３】
2018010473.tif 000035