(57)【特許請求の範囲】
【請求項１】
撮像装置によって撮像された第１の回転角度で回転したユーザを含む第１のユーザ画像上に、撮像装置によって撮像された前記第１の回転角度との差が予め定められた値以内である第２の回転角度で回転した被写体が着用した衣服を含む第１の衣服画像を合成するための第１の合成データを格納する格納手段と、
前記第１の回転角度とは異なる第３の回転角度で回転した前記ユーザを含む第２のユーザ画像と、前記第２のユーザ画像に含まれるユーザの形状に関するユーザデータとを取得する第１の取得手段と、
前記第３の回転角度との差が予め定められた値以内である第４の回転角度で回転した前記被写体が着用した前記衣服を含む第２の衣服画像と、前記第２の衣服画像に含まれる衣服を着用した被写体の形状に関する被写体データとを取得する第２の取得手段と、
前記第１の合成データ、前記ユーザデータ及び前記被写体データに基づいて、前記第２のユーザ画像上に前記第２の衣服画像を合成するための第２の合成データを算出する算出手段と、
前記第２の合成データに基づいて、前記第２のユーザ画像上に前記第２の衣服画像を合成する合成手段と
を具備することを特徴とする画像処理装置。
【請求項２】
前記第１のユーザ画像は、予め定められた条件を満たす画像であり、
前記第２のユーザ画像は、前記条件を満たさない画像である
ことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記条件は、前記ユーザの回転角度が予め定められた範囲内の角度であることを含み、
前記第１の回転角度は、前記予め定められた範囲内の角度であり、
前記第３の回転角度は、前記予め定められた範囲内の角度でない
ことを特徴とする請求項２記載の画像処理装置。
【請求項４】
前記第１の合成データは、前記第１のユーザ画像に含まれるユーザの形状に関するユーザデータ及び前記第１の衣服画像に含まれる衣服を着用した被写体の形状に関する被写体データに基づいて算出されることを特徴とする請求項１記載の画像処理装置。
【請求項５】
前記第１の合成データは、前記第１のユーザ画像中のユーザのサイズ及び前記第１の衣服画像中の衣服のサイズを一致させるための第１のサイズデータと、当該第１のサイズデータに基づいて前記第１のユーザ画像中のユーザのサイズと前記第１の衣服画像中の衣服のサイズを一致させて前記第１のユーザ画像中のユーザと前記第１の衣服画像中の衣服とを重畳させる際の前記第１のユーザ画像上の前記第１の衣服画像の位置を示す第１の位置データとを含み、
前記第２の合成データは、前記第２のユーザ画像中のユーザのサイズ及び前記第２の衣服画像中の衣服のサイズを一致させるための第２のサイズデータと、当該第２のサイズデータに基づいて前記第２のユーザ画像中のユーザのサイズと前記第２の衣服画像中の衣服のサイズを一致させて前記第２のユーザ画像中のユーザと前記第２の衣服画像中の衣服とを重畳させる際の前記第２のユーザ画像上の前記第２の衣服画像の位置を示す第２の位置データとを含む
ことを特徴とする請求項４記載の画像処理装置。
【請求項６】
前記第１及び第２の合成データは、前記ユーザデータ及び前記被写体データが複数の種別のデータを含む場合、予め定められた優先順位の高いデータに基づいて算出されることを特徴とする請求項４記載の画像処理装置。
【請求項７】
前記第１のユーザ画像に含まれるユーザの形状に関するユーザデータ及び前記第１の衣服画像に含まれる衣服を着用した被写体の形状に関する被写体データに基づいて、前記第２のユーザ画像に含まれるユーザの形状に関するユーザデータを補正する補正手段を更に具備することを特徴とする請求項４記載の画像処理装置。
【請求項８】
前記第３の回転角度よりも小さい第５の回転角度で回転した前記ユーザの形状に関するユーザデータと、前記第３の回転角度よりも大きい第６の回転角度で回転した前記ユーザの形状に関するユーザデータとに基づいて、前記第２のユーザ画像に含まれるユーザの形状に関するユーザデータを補間する補間手段を更に具備することを特徴とする請求項１記載の画像処理装置。
【請求項９】
前記ユーザの操作に基づいて、前記第２のユーザ画像上に前記第２の衣服画像を合成する方法を変更する変更手段を更に具備することを特徴とする請求項１記載の画像処理装置。
【請求項１０】
撮像装置によって撮像された第１の回転角度で回転したユーザを含む第１のユーザ画像上に、撮像装置によって撮像された前記第１の回転角度との差が予め定められた値以内である第２の回転角度で回転した被写体が着用した衣服を含む第１の衣服画像を合成するための第１の合成データを格納する格納手段を利用する画像処理装置が実行する画像処理方法であって、
前記第１の回転角度とは異なる第３の回転角度で回転した前記ユーザを含む第２のユーザ画像と、前記第２のユーザ画像に含まれるユーザの形状に関するユーザデータとを取得するステップと、
前記第３の回転角度との差が予め定められた値以内である第４の回転角で回転した前記被写体が着用した前記衣服を含む第２の衣服画像と、前記第２の衣服画像に含まれる衣服を着用した被写体の形状に関する被写体データとを取得するステップと、
前記第１の合成データ、前記ユーザデータ及び前記被写体データに基づいて、前記第２のユーザ画像上に前記第２の衣服画像を合成するための第２の合成データを算出するステップと、
前記第２の合成データに基づいて、前記第２のユーザ画像上に前記第２の衣服画像を合成するステップと
を具備することを特徴とする画像処理方法。
【請求項１１】
撮像装置によって撮像された第１の回転角度で回転したユーザを含む第１のユーザ画像上に、撮像装置によって撮像された前記第１の回転角度との差が予め定められた値以内である第２の回転角度で回転した被写体が着用した衣服を含む第１の衣服画像を合成するための第１の合成データを格納する格納手段を利用する画像処理装置のコンピュータによって実行されるプログラムであって、
前記コンピュータに、
前記第１の回転角度とは異なる第３の回転角度で回転した前記ユーザを含む第２のユーザ画像と、前記第２のユーザ画像に含まれるユーザの形状に関するユーザデータとを取得するステップと、
前記第３の回転角度との差が予め定められた値以内である第４の回転角度で回転した前記被写体が着用した前記衣服を含む第２の衣服画像と、前記第２の衣服画像に含まれる衣服を着用した被写体の形状に関する被写体データとを取得するステップと、
前記第１の合成データ、前記ユーザデータ及び前記被写体データに基づいて、前記第２のユーザ画像上に前記第２の衣服画像を合成するための第２の合成データを算出するステップと、
前記第２の合成データに基づいて、前記第２のユーザ画像上に前記第２の衣服画像を合成するステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年では、例えばユーザが試着対象の衣服を仮想的に試着すること（以下、仮想試着と表記）が可能な技術が開発されている。
【０００３】
この技術によれば、撮像部によって撮像されたユーザを含む画像（以下、ユーザ画像と表記）上に衣服の画像（以下、衣服画像と表記）を重畳した合成画像を表示部に表示することができる。これにより、ユーザは、実際に試着を行うことなく、当該ユーザが試着対象の衣服を着用した状態を確認することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−０７１５０１号公報
【特許文献２】特開２０１４−２２５３０１号公報
【特許文献３】特開２００２−０３２７８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記した仮想試着においては、ユーザ画像中のユーザのサイズ及び位置と衣服画像中の衣服のサイズ及び位置とが一致しているような精度の高い合成画像（フィッティング精度の高い合成画像）を表示する必要がある。
【０００６】
そこで、本発明が解決しようとする課題は、仮想試着時に表示される合成画像の精度を向上させることが可能な画像処理装置、画像処理方法及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
実施形態に係る画像処理装置は、格納手段と、第１の取得手段と、第２の取得手段と、算出手段と、合成手段とを具備する。前記格納手段は、撮像装置によって撮像された第１の回転角度で回転したユーザを含む第１のユーザ画像上に、撮像装置によって撮像された前記第１の回転角度との差が予め定められた値以内である第２の回転角度で回転した被写体が着用した衣服を含む第１の衣服画像を合成するための第１の合成データを格納する。前記第１の取得手段は、前記第１の回転角度とは異なる第３の回転角度で回転した前記ユーザを含む第２のユーザ画像と、前記第２のユーザ画像に含まれるユーザの形状に関するユーザデータとを取得する。前記第２の取得手段は、前記第３の回転角度との差が予め定められた値以内である第４の回転角度で回転した前記被写体が着用した前記衣服を含む第２の衣服画像と、前記第２の衣服画像に含まれる衣服を着用した被写体の形状に関する被写体データとを取得する。前記算出手段は、前記第１の合成データ、前記ユーザデータ及び前記被写体データに基づいて、前記第２のユーザ画像上に前記第２の衣服画像を合成するための第２の合成データを算出する。前記合成手段は、前記第２の合成データに基づいて、前記第２のユーザ画像上に前記第２の衣服画像を合成する。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係る画像処理装置の外観の一例を示す斜視図。
【図２】画像処理装置の機能構成を示すブロック図。
【図３】ユーザ画像の一例を示す図。
【図４】ユーザデータに含まれるモデルデータの一例を示す図。
【図５】ユーザデータに含まれるシルエットデータの一例を示す図。
【図６】ユーザデータに含まれるスケルトンデータの一例を示す図。
【図７】衣服画像の一例を示す図。
【図８】被写体データに含まれるモデルデータの一例を示す図。
【図９】被写体データに含まれるシルエットデータの一例を示す図。
【図１０】被写体データに含まれるスケルトンデータの一例を示す図。
【図１１】画像処理装置の処理手順の一例を示すフローチャート。
【図１２】第１算出処理の処理手順の一例を示すフローチャート。
【図１３】モデルデータを用いた第１サイズデータの算出処理の一例について説明するための図。
【図１４】シルエットデータを用いた第１サイズデータの算出処理の一例について説明するための図。
【図１５】スケルトンデータを用いた第１サイズデータの算出処理の一例について説明するための図。
【図１６】モデルデータを用いた第１位置データの算出処理の一例について説明するための図。
【図１７】第１位置データに含まれる座標値の一例について説明するための図。
【図１８】シルエットデータを用いた第１位置データの算出処理の一例について説明するための図。
【図１９】スケルトンデータを用いた第１位置データの算出処理の一例について説明するための図。
【図２０】第２算出処理の処理手順の一例を示すフローチャート。
【図２１】補間が必要であると判定される場合について説明するための図。
【図２２】補間処理に必要なデータの一例を示す図。
【図２３】補間処理に必要なデータの一例を示す図。
【図２４】補正が必要であると判定される場合について説明するための図。
【図２５】補正関数の一例を示す図。
【図２６】補正関数の一例を示す図。
【図２７】補正関数の一例を示す図。
【図２８】モデルデータを用いた第２サイズデータの算出処理の一例について説明するための図。
【図２９】シルエットデータを用いた第２サイズデータの算出処理の一例について説明するための図。
【図３０】スケルトンデータを用いた第２サイズデータの算出処理の一例について説明するための図。
【図３１】モデルデータを用いた第２位置データの算出処理の一例について説明するための図。
【図３２】シルエットデータを用いた第２位置データの算出処理の一例について説明するための図。
【図３３】スケルトンデータを用いた第２位置データの算出処理の一例について説明するための図。
【図３４】適切でないと判定されるシルエットデータの一例を示す図。
【図３５】適切でないと判定されるシルエットデータの一例を示す図。
【図３６】適切であると判定されるシルエットデータの一例を示す図。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、実施形態について説明する。
【００１０】
図１は、本実施形態に係る画像処理装置の外観を示す斜視図である。本実施形態において、画像処理装置は、例えばスマートフォン、タブレットコンピュータ及びパーソナルコンピュータ（ＰＣ）等を含む。図１においては、画像処理装置がスマートフォンである場合を示している。
【００１１】
図１に示す画像処理装置は、本体１１とタッチスクリーンディスプレイ１２とを備える。本体１１は、薄い箱型の筐体を有している。タッチスクリーンディスプレイ１２は、本体１１の上面に重ね合わせるように取り付けられている。
【００１２】
タッチスクリーンディスプレイ１２は、ユーザの指の接触等を検出する機能を有する。このタッチスクリーンディスプレイ１２によれば、ユーザは、当該タッチスクリーンディスプレイ１２に指を接触させて画像処理装置１０を操作することが可能となる。
【００１３】
本実施形態に係る画像処理装置１０は、ユーザが試着対象の衣服を仮想的に試着すること（以下、仮想試着と表記）を実現する機能を有する。画像処理装置１０は、この機能により、例えばカメラ等の撮像装置によって撮像されたユーザを含む画像（以下、ユーザ画像と表記）上に衣服の画像（以下、衣服画像と表記）を合成した画像（以下、合成画像と表記）を生成して、当該合成画像をタッチスクリーンディスプレイ１２に表示する。これによれば、ユーザ（被合成対象となる被写体）は、タッチスクリーンディスプレイ１２に表示された合成画像を閲覧することによって、当該ユーザが衣服を仮想的に試着した状態を確認することが可能となる。
【００１４】
図２は、本実施形態に係る画像処理装置１０の機能構成を示すブロック図である。図２に示すように、画像処理装置１０は、第１格納部１０１、ユーザ画像取得部１０２、第２格納部１０３、衣服画像取得部１０４、判定部１０５、第１算出部１０６、第３格納部１０７、第２算出部１０８及び合成部１０９を含む。
【００１５】
本実施形態において、ユーザ画像取得部１０２、衣服画像取得部１０４、判定部１０５、第１算出部１０６、第２算出部１０８及び合成部１０９の一部または全ては、例えば画像処理装置１０に備えられるＣＰＵ等のコンピュータにプログラムを実行させること、すなわち、ソフトウェアによって実現されるものとする。なお、これらの各部１０２、１０４〜１０６、１０８及び１０９の一部または全ては、ＩＣ（Integrated Circuit）等のハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせ構成として実現されてもよい。なお、コンピュータに実行させるプログラムは、例えば画像処理装置１０に備えられる記憶装置に格納されていればよい。
【００１６】
また、本実施形態において、第１格納部１０１、第２格納部１０３及び第３格納部１０７は、画像処理装置１０に備えられる例えばＨＤＤ（Hard Disk Drive）等の記憶装置に格納されているものとする。なお、第１格納部１０１、第２格納部１０３及び第３格納部１０７は、例えば画像処理装置１０と通信可能に接続される外部装置（サーバ装置）等に備えられていてもよい。
【００１７】
第１格納部１０１には、例えば床面に対する垂線を回転軸として回転したユーザを含む複数のユーザ画像が格納されている。具体的には、第１格納部１０１には、予め定められた回転角度毎に、当該回転角度で回転したユーザを含むユーザ画像が格納される。ユーザ画像は、ビットマップ画像であり、画素毎にユーザの色彩及び輝度等を示す画素値が規定された画像である。ユーザ画像は、上記した撮像装置を用いてユーザを撮像しておくことによって予め第１格納部１０１に格納されているものとする。
【００１８】
また、第１格納部１０１には、ユーザ画像に対応づけて当該ユーザ画像に含まれるユーザの形状に関するデータ（以下、ユーザデータと表記）が格納されている。ユーザデータは、例えば上記したようにユーザ画像が第１格納部１０１に格納される際に生成されて、当該ユーザ画像に対応づけて第１格納部１０１に格納される。
【００１９】
以下の説明において、ユーザ画像に対応づけて第１格納部１０１に格納されているユーザデータ（つまり、当該ユーザ画像に含まれるユーザの形状に関するデータ）を便宜的にユーザ画像に対応するユーザデータと称する。
【００２０】
ユーザ画像取得部１０２は、ユーザ画像及び当該ユーザ画像に対応するユーザデータを、第１格納部１０１から順次取得する。
【００２１】
第２格納部１０３には、例えば床面に対する垂線を回転軸として回転させたマネキン等の被写体が着用した衣服を含む複数の衣服画像が格納されている。具体的には、第２格納部１０３には、予め定められた回転角度毎に、当該回転角度で回転させた被写体が着用した衣服を含む衣服画像が格納される。衣服画像は、ビットマップ画像であり、画素毎に衣服の色彩及び輝度等を示す画素値が規定された画像である。なお、衣服画像は、上記した撮像装置を用いて衣服を着用した被写体撮像しておくことによって予め第２格納部１０３に格納されているものとする。衣服画像は、衣服を着用した被写体を含む画像から、当該被写体が着用している衣服の領域のみが切り出された画像である。
【００２２】
また、第２格納部１０３には、衣服画像に対応づけて当該衣服画像に含まれる衣服を着用した被写体（合成対象の衣服を着用させた被写体）の形状に関するデータ（以下、被写体データと表記）が格納されている。被写体データは、例えば上記したように衣服画像が第２格納部１０３に格納される際に生成されて、当該衣服画像に対応づけて第２格納部１０３に格納される。
【００２３】
以下の説明において、衣服画像に対応づけて第２格納部１０３に格納されている被写体データ（つまり、当該衣服画像に含まれる衣服を着用した被写体の形状に関するデータ）を便宜的に衣服画像に対応する被写体データと称する。
【００２４】
衣服画像取得部１０４は、ユーザ画像取得部１０２によって取得されたユーザ画像に含まれるユーザの回転角度との差が予め定められた値以内である回転角度で回転した被写体が着用した衣服を含む衣服画像及び当該衣服画像に対応する被写体データを、第２格納部１０３から取得する。
【００２５】
判定部１０５は、ユーザ画像取得部１０２によって取得されたユーザデータに基づいて、当該ユーザ画像取得部１０２によって取得されたユーザ画像が予め定められている条件（以下、第１条件と表記）を満たすか否かを判定する。これにより、判定部１０５は、上述した合成画像を生成及び表示するために実行されるべき処理が第１算出部１０６によって実行される処理であるか、または第２算出部１０８によって実行される処理であるかを判定（決定）する。
【００２６】
第１算出部１０６は、ユーザ画像取得部１０２によって取得されたユーザ画像（第１のユーザ画像）上に、衣服画像取得部１０４によって取得された衣服画像（第１の衣服画像）を合成するための合成データ（第１の合成データ）を算出する。第１算出部１０６によって算出される合成データは、サイズデータ及び位置データを含む。
【００２７】
第１算出部１０６は、第１サイズ算出部１０６ａ及び第１位置算出部１０６ｂを含む。第１サイズ算出部１０６ａは、ユーザ画像取得部１０２によって取得されたユーザデータ及び衣服画像取得部１０４によって取得された被写体データに基づいてサイズデータ（第１のサイズデータ）を算出する。サイズデータは、ユーザ画像取得部１０２によって取得されたユーザ画像中のユーザのサイズ及び衣服画像取得部１０４によって取得された衣服画像中の衣服のサイズを一致させるためのデータである。
【００２８】
第１位置算出部１０６ｂは、ユーザ画像取得部１０２によって取得されたユーザデータ、衣服画像取得部１０４によって取得された被写体データ、第１サイズ算出部１０６ａによって算出されたサイズデータに基づいて位置データ（第１の位置データ）を算出する。位置データは、サイズデータに基づいてユーザ画像中のユーザのサイズと衣服画像中の衣服のサイズとを一致させて当該ユーザ画像中のユーザと当該衣服画像中の衣服とを重畳させる際の当該ユーザ画像上の当該衣服画像の位置を示すデータである。
【００２９】
第１算出部１０６によって算出された合成データ（サイズデータ及び位置データ）は、第３格納部１０７に格納される。第３格納部１０７に格納された合成データは、第２算出部１０８によって実行される処理において用いられる。
【００３０】
また、第３格納部１０７には、第１算出部１０６によって合成データが算出される際に用いられたユーザデータ及び被写体データが格納される。
【００３１】
第２算出部１０８は、ユーザ画像取得部１０２によって取得されたユーザ画像（第２のユーザ画像）上に、衣服画像取得部１０４によって取得された衣服画像（第２の衣服画像９を合成するための合成データ（第２の合成データ）を算出する。第２算出部１０８によって算出される合成データは、サイズデータ及び位置データを含む。
【００３２】
第２算出部１０８は、第２サイズ算出部１０８ａ、第２位置算出部１０８ｂ及び補正部１０８ｃを含む。
【００３３】
第２サイズ算出部１０８ａは、第３格納部１０７に格納されたデータ（合成データ、ユーザデータ及び被写体データ）、ユーザ画像取得部１０２によって取得されたユーザデータ及び衣服画像取得部１０４によって取得された被写体データに基づいてサイズデータ（第２のサイズデータ）を算出する。
【００３４】
第２位置算出部１０８ｂは、第３格納部１０７に格納されたデータ（合成データ、ユーザデータ及び被写体データ）、ユーザ画像取得部１０２によって取得されたユーザデータ、衣服画像取得部１０４によって取得された被写体データ及び第２サイズ算出部１０８ａによって算出されたサイズデータに基づいて位置データ（第２の位置データ）を算出する。
【００３５】
補正部１０８ｃは、例えば第３格納部１０７に格納されたデータ等に基づいて、第２算出部１０８における合成データの算出に用いられるユーザデータを補正する。換言すれば、第２サイズ算出部１０８ａ及び第２位置算出部１０８ｂは、補正部１０８ｃによって補正されたユーザデータを用いてサイズデータ及び位置データを算出する。
【００３６】
合成部１０９は、ユーザ画像が第１条件を満たす（つまり、合成画像を生成及び表示するために実行されるべき処理が第１算出部１０６によって実行される処理である）と判定されている場合、第１算出部１０６によって算出された合成データに基づいてユーザ画像上に衣服画像を合成する。一方、合成部１０９は、ユーザ画像が第１条件を満たさない（つまり、合成画像を生成及び表示するために実行されるべき処理が第２算出部１０８によって実行される処理である）と判定されている場合、第２算出部１０８によって算出された合成データに基づいてユーザ画像上に衣服画像を合成する。合成部１０９による合成後の画像（以下、合成画像と表記）は、ユーザが試着対象の衣服を仮想的に試着した状態を示す画像である。
【００３７】
ここで、図２に示す第１格納部１０１に格納されているユーザ画像及びユーザデータについて説明する。
【００３８】
図３は、第１格納部１０１に格納されているユーザ画像の一例を示す。第１格納部１０１には、上記したように各回転角度で回転したユーザを含む複数のユーザ画像が格納されている。なお、ユーザ画像は、例えば任意の角度に回転可能に構成された回転台に乗って回転するユーザを撮像装置で撮像することによって得られる画像である。
【００３９】
図３に示す例では、回転角度が０度（撮像装置に対して正面向き）のユーザを含むユーザ画像（以下、回転角度が０度のユーザ画像と表記）、回転角度が９０度（撮像装置に対して横向き）のユーザを含むユーザ画像（以下、回転角度が９０度のユーザ画像と表記）及び回転角度が１８０度（撮像装置に対して後ろ向き）のユーザを含むユーザ画像（以下、回転角度が１８０度のユーザ画像と表記）が示されている。
【００４０】
なお、第１格納部１０１には、回転角度が０度、９０度及び１８０度のユーザ画像以外のユーザ画像（つまり、回転角度が他の角度のユーザを含むユーザ画像）が格納されていても構わない。第１格納部１０１には、試着対象の衣服を仮想的に試着した状態を確認したい角度から撮像されたユーザを含むユーザ画像が格納されている。
【００４１】
図４〜図６は、ユーザ画像に対応するユーザデータ（つまり、当該ユーザ画像に含まれるユーザの形状に関するデータ）の一例を示す。ユーザデータは、例えばモデルデータ、シルエットデータ及びスケルトンデータを含む。
【００４２】
図４は、ユーザデータに含まれるモデルデータの一例を示す。モデルデータは、対応するユーザ画像に含まれるユーザの形状（例えば、体型、姿勢及び向き等）を示すデータである。
【００４３】
モデルデータは、例えば上記したユーザ画像が第１格納部１０１に格納される際等に事前に取得（導出）される。具体的には、モデルデータは、例えばデプスセンサを用いて測定される当該デプスセンサからユーザまでの距離（が規定されたデプス画像）に基づいて自動的に生成することが可能である。モデルデータは、デプスセンサの代わりにレーザレンジファインダを用いて生成されてもよい。また、モデルデータは、人手により作成されてもよい。
【００４４】
モデルデータは、３次元データの頂点群からなる３次元モデルデータ（３次元ポリゴンデータ）であってもよいし、２次元画像上に射影した２次元データの頂点群からなる２次元モデルデータであってもよい。なお、異なるモデルデータ間において対応する頂点（構造的に同一の位置の頂点）には同一の頂点番号が付加されているものとする。
【００４５】
図４に示す例では、回転角度が０度、９０度及び１８０度のモデルデータが示されている。回転角度が０度のモデルデータは、回転角度が０度のユーザ画像に対応するモデルデータであり、当該ユーザ画像に含まれるユーザ（つまり、正面向きのユーザ）の形状を示す。同様に、回転角度が９０度のモデルデータは、回転角度が９０度のユーザ画像に対応するモデルデータであり、当該ユーザ画像に含まれるユーザ（つまり、横向きのユーザ）の形状を示す。また、回転角度が１８０度のモデルデータは、回転角度が１８０度のユーザ画像に対応するモデルデータであり、当該ユーザ画像に含まれるユーザ（つまり、後ろ向きのユーザ）の形状を示す。
【００４６】
なお、第１格納部１０１には各回転角度で回転したユーザを含む複数のユーザ画像が格納されているが、当該複数のユーザ画像の各々に対応するモデルデータの全てが第１格納部１０１に格納されていなくてもよい。つまり、第１格納部１０１には、第１格納部１０１に格納されている複数のユーザ画像のうちの一部のユーザ画像に対応するモデルデータのみが格納されていてもよい。具体的には、回転角度が０度のユーザ画像に対応するモデルデータが第１格納部１０１に格納されており、当該０度以外のユーザ画像に対応するモデルデータは第１格納部１０１に格納されていなくてもよい。
【００４７】
図５は、ユーザデータに含まれるシルエットデータの一例を示す。シルエットデータは、対応するユーザ画像に含まれるユーザの輪郭線を示すデータである。
【００４８】
シルエットデータは、例えば上記したデプス画像に基づき、デプスセンサからの距離が所定の範囲内に含まれる領域を当該デプス画像から抽出することによって生成することができる。シルエットデータは、例えばクロマキー処理等によって特定の色彩以外の領域をユーザ画像から抽出することによって生成されても構わない。また、シルエットデータは、人手により作成されてもよい。
【００４９】
図５に示す例では、回転角度が０度、９０度及び１８０度のシルエットデータが示されている。回転角度が０度のシルエットデータは、回転角度が０度のユーザ画像に対応するシルエットデータであり、当該ユーザ画像に含まれるユーザ（つまり、正面向きのユーザ）の輪郭線を示す。同様に、回転角度が９０度のシルエットデータは、回転角度が９０度のユーザ画像に対応するシルエットデータであり、当該ユーザ画像に含まれるユーザ（つまり、横向きのユーザ）の輪郭線を示す。また、回転角度が１８０度のシルエットデータは、回転角度が１８０度のユーザ画像に対応するシルエットデータであり、当該ユーザ画像に含まれるユーザ（つまり、後ろ向きのユーザ）の輪郭線を示す。
【００５０】
なお、第１格納部１０１には例えば複数のユーザ画像の各々に対応するシルエットデータが格納されているが、当該複数のユーザ画像のうちの一部のユーザ画像に対応するシルエットデータのみが第１格納部１０１に格納に格納されていてもよい。
【００５１】
図６は、ユーザデータに含まれるスケルトンデータの一例を示す。スケルトンデータは、対応するユーザ画像に含まれるユーザの骨格を示すデータである。図６に示すように、スケルトンデータは、各関節の位置を表す複数のジョイントデータを含む。
【００５２】
スケルトンデータは、例えば上記したデプス画像からユーザの形状を抽出した上で、当該ユーザの形状に対して骨格を表すテンプレートを当てはめることによって取得する（推定する）ことができる。また、スケルトンデータは、人手により作成されてもよい。
【００５３】
図６に示す例では、回転角度が０度、９０度及び１８０度のスケルトンデータが示されている。回転角度が０度のスケルトンデータは、回転角度が０度のユーザ画像に対応するスケルトンデータであり、当該ユーザ画像に含まれるユーザ（つまり、正面向きのユーザ）の骨格を示す。同様に、回転角度が９０度のスケルトンデータは、回転角度が９０度のユーザ画像に対応するスケルトンデータであり、当該ユーザ画像に含まれるユーザ（つまり、横向きのユーザ）の骨格を示す。また、回転角度が１８０度のスケルトンデータは、回転角度が１８０度のユーザ画像に対応するスケルトンデータであり、当該ユーザ画像に含まれるユーザ（つまり、後ろ向きのユーザ）の骨格を示す。
【００５４】
なお、第１格納部１０１には例えば複数のユーザ画像の各々に対応するスケルトンデータが格納されているが、当該複数のユーザ画像のうちの一部のユーザ画像に対応するスケルトンデータのみが第１格納部１０１に格納されていてもよい。
【００５５】
図示しないが、ユーザデータには、回転角度データが含まれるものとする。回転角度データは、当該回転角度データ（ユーザデータ）に対応するユーザ画像に含まれるユーザの回転角度を示す。具体的には、回転角度データとしては、例えばユーザを撮像する撮像装置に対するユーザの回転角度を示す数値データを用いることができる。
【００５６】
更に、ユーザデータには、動きデータが含まれていても構わない。動きデータは、当該動きデータに対応するユーザ画像に含まれるユーザの動き量を示すデータである。動きデータは、例えばスケルトンデータに含まれる特定のジョイントデータの位置を監視することによって取得することができる。動きデータとしては、ジョイントデータの３次元空間中の移動量または当該ジョイントデータが画像上で変化（異動）したピクセル数等の数値データを用いることができる。
【００５７】
次に、図２に示す第２格納部１０３に格納されている衣服画像及び被写体データについて説明する。
【００５８】
図７は、第２格納部１０３に格納されている衣服画像の一例を示す。第２格納部１０３には、上記したように各回転角度で回転した被写体（例えば、マネキン）が着用した衣服を含む複数の衣服画像が含まれる。なお、衣服画像は、上記した回転台に乗って回転する衣服を着用した被写体を撮像装置で撮像し、当該被写体を含む画像から当該衣服（の領域）を切り出すことによって得られる画像である。
【００５９】
図７に示す例では、回転角度が０度（撮像装置に対して正面向き）の被写体が着用した衣服を含む衣服画像（以下、回転角度が０度の衣服画像と表記）、回転角度が９０度（撮像装置に対して横向き）の被写体が着用した衣服を含む衣服画像（以下、回転角度が９０度の衣服画像と表記）及び回転角度が１８０度の被写体が着用した衣服を含む衣服画像（以下、回転角度が１８０度の衣服画像と表記）が示されている。
【００６０】
なお、図７においては、回転角度が０度、９０度及び１８０度の衣服画像以外については省略されている。第２格納部１０３には、例えば１回転する被写体を所定の回転角度の間隔で撮像することによって得られる複数の衣服画像が格納されている。この場合における回転角度の間隔は、例えば５度、１０度または１５度等とすることができる。
【００６１】
衣服画像に対応する被写体データ（つまり、当該衣服画像に含まれる衣服を着用した被写体の形状に関するデータ）は、上記したユーザデータと同様に、例えばモデルデータ、シルエットデータ及びスケルトンデータを含む。
【００６２】
被写体データに含まれるモデルデータは、対応する衣服画像に含まれる衣服を着用した被写体の形状（例えば、体型、姿勢及び向き等）を示すデータである。図８は被写体データに含まれるモデルデータ（衣服画像に対応するモデルデータ）の一例を示すが、当該モデルデータの詳細については前述した図４において説明した通りであるため、ここではその詳しい説明を省略する。
【００６３】
被写体データに含まれるシルエットデータは、対応する衣服画像に含まれる衣服を着用していた被写体（つまり、衣服画像に含まれる衣服を脱がせた状態の被写体）の輪郭線を示すデータである。図９は被写体データに含まれるシルエットデータ（衣服画像に対応するシルエットデータ）の一例を示すが、当該シルエットデータの詳細については前述した図５において説明した通りであるため、ここではその詳しい説明を省略する。
【００６４】
被写体データに含まれるスケルトンデータは、対応する衣服画像に含まれる衣服を着用していた被写体の骨格を示すデータである。図１０は被写体データに含まれるスケルトンデータ（衣服画像に対応するスケルトンデータ）の一例を示すが、当該スケルトンデータの詳細については前述した図６において説明した通りであるため、ここではその詳しい説明を省略する。
【００６５】
なお、上述したユーザデータと同様に、被写体データには、回転角度データが含まれるものとする。また、被写体データには、動きデータが含まれていてもよい。
【００６６】
次に、図１１のフローチャートを参照して、本実施形態に係る画像処理装置１０の処理手順について説明する。
【００６７】
ここでは、第１格納部１０１には、各回転角度で回転したユーザを含む複数のユーザ画像及び当該ユーザ画像の各々に対応するユーザデータが予め格納されているものとする。また、第２格納部１０３には、各回転角度で回転した被写体が着用した衣服を含む複数の衣服画像及び当該衣服画像の各々に対応する被写体データが予め格納されているものとする。
【００６８】
なお、複数のユーザ画像の各々に含まれるユーザの各回転角度及び複数の衣服画像の各々に含まれる衣服を着用した被写体の各回転角度は必ずしも一致している必要はないが、当該ユーザの形状（体型等）と当該被写体の形状（体型等）は似ていることが好ましい。また、ユーザデータ及び被写体データには、それぞれ上述したモデルデータ、シルエットデータ、スケルトンデータ、回転角度データ及び動きデータが含まれているものとする。
【００６９】
本実施形態においては、第１格納部１０１に格納されている複数のユーザ画像の各々について以下のステップＳ１〜Ｓ８の処理が実行される。以下の説明においては、この処理の対象となるユーザ画像を便宜的に対象ユーザ画像と称する。
【００７０】
まず、ユーザ画像取得部１０２は、対象ユーザ画像及び当該対象ユーザ画像に対応するユーザデータ（以下、対象ユーザデータと表記）を、第１格納部１０１から取得する（ステップＳ１）。
【００７１】
また、衣服画像取得部１０４は、対象ユーザデータに含まれる回転角度データによって示される回転角度（つまり、対象ユーザ画像に含まれるユーザの回転角度）との差が予め定められた値（閾値）以内である回転角度で回転した被写体が着用した衣服を含む衣服画像及び当該衣服画像に対応する被写体データを、第２格納部１０２から取得する（ステップＳ２）。なお、ユーザの回転角度との差が閾値以内である回転角度とは、当該ユーザの回転角度と同じまたは近い回転角度を意味する。
【００７２】
この場合、衣服画像取得部１０４は、対象ユーザデータに含まれる回転角度データによって示される回転角度との差が閾値以内である回転角度を示す回転角度データを含む被写体データを特定し、当該被写体データに対応する衣服画像及び当該被写体データを取得する。
【００７３】
具体的には、回転角度が０度の衣服画像が第２格納部１０３に格納されている場合であって、対象ユーザデータに含まれる回転角度データが０度を示す場合には、衣服画像取得部１０４は、当該回転角度が０度の衣服画像及び当該衣服画像に対応する被写体データを取得する。
【００７４】
一方、例えば１０度間隔の各回転角度で回転した被写体を撮像することによって得られた複数の衣服画像が第２格納部１０３に格納されているものの、対象ユーザデータに含まれる回転角度データによって示される回転角度が当該被写体の回転角度と一致しない場合を想定する。この場合には、対象ユーザデータに含まれる回転角度データによって示される回転角度との差が例えば±５度以内である衣服画像及び当該衣服画像に対応する被写体データが取得される。
【００７５】
以下、ステップＳ２において取得された衣服画像及び被写体データを便宜的に対象衣服画像及び対象被写体データと称する。
【００７６】
次に、判定部１０５は、対象ユーザデータに基づいて、対象ユーザ画像が第１条件を満たすか否かを判定する（ステップＳ３）。
【００７７】
ここで、第１条件について説明する。第１条件は、例えば対象衣服画像を対象ユーザ画像上に高い精度で合成することができる（つまり、精度よく合成データを算出することができる状態である）か否かという観点から定められる。
【００７８】
具体的には、第１条件は、「対象ユーザデータ（及び対象被写体データ）に含まれる回転角度データによって示される回転角度が予め定められた範囲内の角度（例えば、０度または絶対値が５度以内の角度等）であること」を含む。この第１条件は、横向きまたは後ろ向きのユーザを含むユーザ画像では例えば当該ユーザの髪の毛等の影響により正確な合成ができない場合があるのに対し、正面向きのユーザを含むユーザ画像（及び正面向きの被写体が着用した衣服を含む衣服画像）であれば比較的高い精度での合成が可能であるという観点に基づくものである。
【００７９】
また、第１条件は、「対象ユーザデータに含まれる動きデータによって示される動き量が予め定められた値（例えば、１０ピクセル等）以下であること」を含む。この第１条件は、動き量が少ない方が対象ユーザ画像におけるぶれ量が少ないと推測されるため、高い精度での合成が可能であるという観点に基づくものである。
【００８０】
更に、上述したように複数のユーザ画像（及び衣服画像）の各々に対応するモデルデータの全てが第１格納部１０１に格納されていなくてもよいため、対象ユーザ画像によっては、対象ユーザデータにはモデルデータが含まれていない場合がある。このため、モデルデータを用いた方が高い精度での合成が可能であるという観点から、第１条件は、「対象ユーザデータにモデルデータが含まれていること」を含んでいてもよい。
【００８１】
ここで説明した第１条件は一例であるため、第１条件として上記した以外の条件が設定されていてもよい。また、第１条件は、ユーザによって選択（指定）されても構わない。更に、例えば「対象ユーザデータに含まれる回転角度データによって示される回転角度が予め定められた範囲内の角度であり、かつ、動きデータによって示される動き量が予め定められた値以下であること」のように複数の条件を論理結合子を用いて結合して第１条件とすることも可能である。
【００８２】
対象ユーザ画像が第１条件を満たすと判定された場合（ステップＳ３のＹＥＳ）、第１算出部１０６は、第１算出処理を実行する（ステップＳ４）。第１算出処理は、第１条件満たす対象ユーザ画像（例えば、正面向きのユーザを含むユーザ画像等）上に対象衣服画像を合成するための合成データを算出するための処理である。以下の説明において、ステップＳ４において算出された合成データを便宜的に第１合成データと称する。なお、第１算出処理の詳細については後述する。
【００８３】
ステップＳ４の処理が実行されると、第１算出部１０６は、対象ユーザデータ、対象被写体データ及び第１合成データを第３格納部１０７に格納する（ステップＳ５）。
【００８４】
次に、合成部１０９は、ステップＳ４において算出された合成データに基づいて対象ユーザ画像上に対象衣服画像を合成（重畳）することによって合成画像を生成する（ステップＳ６）。合成画像は、ユーザが対象衣服画像に含まれる衣服を仮想的に試着した状態を示す画像である。合成部１０９によって生成された合成画像は、例えば画像処理装置１０内で蓄積される。
【００８５】
一方、ステップＳ３において対象ユーザ画像が第１条件を満たさないと判定された場合（ステップＳ３のＮＯ）、第２算出部１０８は、第２算出処理の実行に必要なデータがあるか否かを判定する（ステップＳ７）。この場合、第３格納部１０７に第１合成データが格納されている場合には、第２算出処理の実行に必要なデータがあると判定される。一方、第３格納部１０７に第１合成データが格納されていない場合には、第２算出処理の実行に必要なデータがないと判定される。
【００８６】
第２算出処理の実行に必要なデータがないと判定された場合（ステップＳ７のＮＯ）、後述するステップＳ９の処理が実行される。
【００８７】
一方、第２算出処理の実行に必要なデータがあると判定された場合（ステップＳ７のＹＥＳ）、第２算出部１０８は、第２算出処理を実行する（ステップＳ８）。第２算出処理は、第１条件を満たさない対象ユーザ画像（例えば、横向きまたは後ろ向きのユーザを含むユーザ画像）上に対象衣服画像を合成するための合成データを算出するための処理である。第２算出処理においては、必要に応じて対象ユーザデータに対する補間処理及び補正処理等が実行される。以下の説明において、ステップＳ８において算出された合成データを便宜的に第２合成データと称する。なお、第２算出処理の詳細については後述する。
【００８８】
ステップＳ８の処理が実行されると、上記したステップＳ６の処理が実行される。具体的には、合成部１０９は、ステップＳ８において算出された合成データに基づいて対象ユーザ画像上に対象衣服画像を合成（重畳）することによって合成画像を生成する。上述したように、合成部１０９によって生成された合成画像は、画像処理装置１０内で蓄積される。
【００８９】
ステップＳ６の処理が実行されると、第１格納部１０１に格納されている全てのユーザ画像について上記したステップＳ１〜Ｓ８の処理が実行されたか（つまり、合成画像が生成されたか）否かが判定される（ステップＳ９）。
【００９０】
全てのユーザ画像について処理が実行されていないと判定された場合（ステップＳ９のＮＯ）、ステップＳ１に戻って処理が繰り返される。この場合、処理が実行されていないユーザ画像を対象ユーザ画像としてステップＳ１以降の処理が実行される。
【００９１】
一方、全てのユーザ画像について処理が実行されたと判定された場合（ステップＳ９のＹＥＳ）、処理は終了される。
【００９２】
図１１に示す処理によれば、第１格納部１０１に格納されている各回転角度で回転したユーザを含む複数のユーザ画像の各々に対して衣服画像を適切に合成した合成画像を生成して蓄積することができる。このように蓄積された合成画像は、ユーザの操作等に応じて例えばタッチスクリーンディスプレイ１２に表示することができる。これにより、ユーザは、当該ユーザが衣服を仮想的に試着した状態を様々な角度から閲覧（確認）することができる。
【００９３】
本実施形態においては、第１条件を満たさないユーザ画像上に衣服画像を合成するための第２合成データの算出には第１合成データを用いる。このため、第１格納部１０１には、第１条件を満たすユーザ画像が少なくとも１つは格納されているものとする。
【００９４】
すなわち、図１１に示す処理においては、まず第１条件を満たすユーザ画像を対象ユーザ画像として第１合成データを算出しておき、その後、第１条件を満たさないユーザ画像について処理が実行されるものとする。
【００９５】
なお、第１格納部１０１に第１条件を満たすユーザ画像が格納されていない場合には、全てのユーザ画像について第２算出処理の実行に必要なデータがないと判定されるため、第２合成データが算出されず、結果的に合成画像も生成することができないものとする。
【００９６】
また、第２格納部１０３には、各回転角度で回転した被写体が着用した衣服を含む複数の衣服画像（及び当該衣服画像に対応する被写体データ）が、異なる衣服毎に格納されていてもよい。この場合、ステップＳ２においてはユーザによって選択された衣服を含む衣服画像が取得されればよい。この場合、ユーザは、様々な衣服のうちの所望の衣服を仮想的に試着した状態を閲覧（確認）することができる。また、衣服毎に図１１に示す処理が実行されても構わない。これによれば、ユーザは、様々な衣服を仮想的に試着した状態を閲覧（確認）することができる。
【００９７】
次に、図１２のフローチャートを参照して、上述した第１算出処理（図１１に示すステップＳ４の処理）の処理手順について説明する。第１算出処理においては、対象ユーザデータ及び対象被写体データに基づいて第１合成データが算出される。第１合成データは、第１サイズデータ及び第１位置データを含む。
【００９８】
まず、第１算出部１０６は、予め定められた条件（以下、第２条件と表記）に従って、第１サイズデータの算出に用いるデータ（の種別）を決定する（ステップＳ１１）。
【００９９】
第２条件としては、例えば対象ユーザデータ及び対象被写体データに含まれるモデルデータ、シルエットデータ及びスケルトンデータの各々に対する優先順位等が規定されているものとする。具体的には、第２条件おいては、スケルトンデータ、シルエットデータ及びモデルデータの順に優先順位を高くなる（つまり、モデルデータが最も優先順位が高い）ことが規定されているものとする。この第２条件では精度のよい第１サイズデータ（つまり、高い精度の合成画像を生成することが可能な第１サイズデータ）を算出可能な傾向にあるデータの優先順位を高くしているが、当該優先順位（第２条件）は適宜変更されてもよい。
【０１００】
このような第２条件によれば、対象ユーザデータ及び対象被写体データにモデルデータ、シルエットデータ及びスケルトンデータが含まれている場合には、第１サイズデータの算出に用いるデータとしてモデルデータが決定される。一方、対象ユーザデータ及び対象被写体データにモデルデータが含まれていない場合には、第１サイズデータの算出に用いるデータとしてシルエットデータが決定される。なお、例えば処理速度を優先させるような場合には、第１サイズデータの算出に用いるデータとしてスケルトンデータが決定されるような第２条件が規定されていてもよい。
【０１０１】
次に、第１算出部１０６に含まれる第１サイズ算出部１０６ａは、ステップＳ１１において決定されたデータを用いて第１サイズデータを算出する（ステップＳ１２）。第１サイズ算出部１０６ａは、ユーザ及び被写体の特定の部位（身体的特徴点）間の距離の比率に応じて第１サイズデータを算出する。
【０１０２】
第１サイズデータは、対象ユーザ画像中のユーザのサイズ及び対象衣服画像中の衣服のサイズを一致させるためのデータである。具体的には、第１サイズデータは、対象衣服画像中の衣服のサイズを対象ユーザ画像中のユーザのサイズに一致させる際の、当該対象衣服画像に対する拡大または縮小率（以下、スケーリングパラメータと表記）を含む。なお、対象ユーザ画像中のユーザのサイズとは、当該ユーザ全体のサイズではなく、対象衣服画像中の衣服を着用する部位（例えば、上半身または下半身等）のサイズをいうものとする。
【０１０３】
ここで、第１サイズデータの算出処理について具体的に説明する。図１３は、モデルデータを用いた第１サイズデータの算出処理について説明するための図である。
【０１０４】
図１３に示す例では、対象ユーザデータ及び対象被写体データに含まれるモデルデータ２０１及び２０２における特定の部位間の距離として、例えば両肩に位置する頂点間の距離ｗｐｂ及びｗｃｂを用いる。なお、モデルデータ２０１における両肩に位置する頂点とモデルデータ２０２における両肩に位置する頂点とは、それぞれ上記した互いに対応する頂点（つまり、構造的に同一の位置の頂点）であるものとする。
【０１０５】
この場合、第１サイズ算出部１０６ａは、横方向のスケーリングパラメータｓｗｂを、ｓｗｂ＝ｗｐｂ／ｗｃｂにより算出する。
【０１０６】
また、対象ユーザデータ及び対象被写体データに含まれるモデルデータ２０１及び２０２における特定の部位間の距離として、例えば首の付け根に位置する頂点及び股の付け根に位置する頂点間の距離ｈｐｂ及びｈｃｂを用いる。なお、モデルデータ２０１における首の付け根に位置する頂点とモデルデータ２０２における首の付け根に位置する頂点とは、互いに対応する頂点であるものとする。同様に、モデルデータ２０１における股の付け根に位置する頂点とモデルデータ２０２における股の付け根に位置する頂点とは、互いに対応する頂点であるものとする。
【０１０７】
この場合、第１サイズ算出部１０６ａは、縦方向のスケーリングパラメータｓｈｂを、ｓｈｂ＝ｈｐｂ／ｈｃｂにより算出する。
【０１０８】
これにより、第１サイズ算出部１０６ａは、スケーリングパラメータｓｗｂ及びｓｈｂを含む第１サイズデータを算出する。なお、横方向のスケーリングパラメータｓｗｂ及び縦方向のスケーリングパラメータｓｈｂは、ｓｂ＝（ｓｗｂ，ｓｈｂ）のようなベクトルで表記される。
【０１０９】
図１４は、シルエットデータを用いた第１サイズデータの算出処理について説明するための図である。
【０１１０】
図１４に示す例では、対象ユーザデータ及び対象被写体データに含まれるシルエットデータ２１１及び２１２における特定の部位間の距離として、例えば肩幅の距離ｗｐｂ及びｗｃｂを用いる。
【０１１１】
この場合、第１サイズ算出部１０６ａは、横方向のスケーリングパラメータｓｗｂを、ｓｗｂ＝ｗｐｂ／ｗｃｂにより算出する。
【０１１２】
これにより、第１サイズ算出部１０６ａは、スケーリングパラメータｓｗｂを含む第１サイズデータを算出する。
【０１１３】
なお、シルエットデータからは正確な縦方向の特定の部位間の距離（例えば、首の付け根から股の付け根までの距離）を得ることができない場合があるため、図１４においては、横方向のスケーリングパラメータｓｗｂのみを含む第１サイズデータが算出されるものとして説明したが、モデルデータを用いた場合の第１サイズデータの算出処理において説明したように、縦方向のスケーリングパラメータｓｈｂが算出されるような構成であってもよい。
【０１１４】
図１５は、スケルトンデータを用いた第１サイズデータの算出処理について説明するための図である。
【０１１５】
図１５に示す例では、対象ユーザデータ及び対象被写体データに含まれるスケルトンデータ２２１及び２２２における特定の部位間の距離として、例えばスケルトンデータ２２１及び２２２における両肩の関節位置（を示すジョイントデータ）間の距離ｗｐｂ及びｗｃｂを用いる。
【０１１６】
この場合、第１サイズ算出部１０６ａは、横方向のスケーリングパラメータｓｗｂを、ｓｗｂ＝ｗｐｂ／ｗｃｂにより算出する。
【０１１７】
また、対象ユーザデータ及び対象被写体データに含まれるスケルトンデータ２２１及び２２２における特定の部位間の距離として、例えば首の付け根付近の関節位置及び胴体の中心付近に位置する関節位置（を示すジョイントデータ）間の距離ｈｐｂ及びｈｃｂを用いる。
【０１１８】
この場合、第１サイズ算出部１０６ａは、縦方向のスケーリングパラメータｓｈｂを、ｓｈｂ＝ｈｐｂ／ｈｃｂにより算出する。
【０１１９】
これにより、第１サイズ算出部１０６ａは、スケーリングパラメータｓｗｂ及びｓｈｂを含む第１サイズデータを算出する。
【０１２０】
このように、ステップＳ１２の処理においては、ステップＳ１１において決定されたモデルデータ、シルエットデータ及びスケルトンデータのうちの少なくとも１つを用いて第１サイズデータ（スケーリングパラメータ）を算出することができる。なお、第１サイズデータは、モデルデータ、シルエットデータ及びスケルトンデータのうちの２つ以上を用いて算出されても構わない。
【０１２１】
再び図１２に戻ると、第１算出部１０６は、予め定められた条件（以下、第３条件と表記）に従って、第１位置データの算出に用いるデータ（の種別）を決定する（ステップＳ１３）。
【０１２２】
第３条件としては、例えば対象ユーザデータ及び対象被写体データに含まれるモデルデータ、シルエットデータ及びスケルトンデータの各々に対する優先順位等が規定されているものとする。具体的には、第３条件においては、スケルトンデータ、モデルデータ及びシルエットデータの順に優先順位が高くなる（つまり、シルエットデータが最も優先順位が高い）ことが規定されているものとする。この第３条件では、精度のよい第１位置データ（高い精度の合成画像を生成することが可能な第１位置データ）を算出可能な傾向にあるデータの優先順位を高くしているが、当該優先順位（第３条件）は適宜変更されてもよい。
【０１２３】
このような第３条件によれば、対象ユーザデータ及び対象被写体データにモデルデータ、シルエットデータ及びスケルトンデータが含まれている場合には、第１位置データの算出に用いるデータとしてシルエットデータが決定される。
【０１２４】
次に、第１算出部１０６に含まれる第１位置算出部１０６ｂは、ステップＳ１２において算出された第１サイズデータ及びステップＳ１３において決定されたデータを用いて第１位置データを算出する（ステップＳ１４）。第１位置算出部１０６ｂは、ユーザ及び被写体の特定の部位（身体的特徴点群）が一致する（近くなる）ような位置を示す第１位置データを算出する。
【０１２５】
第１位置データは、第１サイズデータに基づいて対象ユーザ画像中のユーザのサイズと対象衣服画像中の衣服のサイズを一致させて対象ユーザ画像中のユーザと対象衣服画像中の衣服とを重畳させる際の当該対象ユーザ画像上の当該衣服画像の位置を示すデータである。
【０１２６】
ここで、第１位置データの算出処理について具体的に説明する。図１６は、モデルデータを用いた第１位置データの算出処理について説明するための図である。
【０１２７】
モデルデータを用いた第１位置データの算出処理においては、対象被写体データに含まれるモデルデータを第１サイズデータ（スケーリングパラメータ）に基づいて拡大または縮小（以下、スケーリングと表記）する。なお、図１６において、モデルデータ２０１は対象ユーザデータに含まれるモデルデータであり、モデルデータ２０２は対象被写体データに含まれるモデルデータをスケーリングしたモデルデータ（つまり、スケーリング後のモデルデータ）である。
【０１２８】
図１６に示す例では、モデルデータ２０１における特定の部位として、当該モデルデータ２０１における頂点２０１ａ〜２０１ｃを用いる。同様に、モデルデータ２０２における特定の部位として、当該モデルデータ２０２における頂点２０２ａ〜２０２ｃを用いる。なお、モデルデータ２０１における頂点２０１ａ〜２０１ｃとモデルデータ２０２における頂点２０２ａ〜２０２ｃとはそれぞれ対応する頂点（つまり、構造的に同一の位置の頂点）である。
【０１２９】
この場合、第１位置算出部１０６ｂは、モデルデータ２０２における頂点２０２ａ〜２０２ｃがそれぞれモデルデータ２０１における頂点２０１ａ〜２０１ｃと一致する（または近くに位置する）ように、当該モデルデータ２０１上にモデルデータ２０２を重ね合わせる。
【０１３０】
第１位置算出部１０６ｂは、このように重ね合わされたときのモデルデータ２０１及び２０２の位置関係と対象ユーザ画像中のユーザ及び対象衣服画像中の衣服の位置関係とが一致するように対象ユーザ画像と対象衣服画像とを重ね合わせたときの、当該対象ユーザ画像に対する対象衣服画像の位置を示す第１位置データを算出する。
【０１３１】
なお、第１位置データは、図１７に示すように、対象ユーザ画像２５１及び対象衣服画像２５２における対応する基準点２５１ａ及び２５２ａ間の距離（差分）を表す座標値ｔｂ（ｔｘｂ，ｔｙｂ）を含む。このような第１位置データによれば、合成画像が生成される際に、対象ユーザ画像２５１の基準点２５１ａからｘ座標方向にｔｘｂ、ｙ座標方向にｔｙｂ移動させた位置に対象衣服画像２５２の基準点２５２ａが配置されるように対象ユーザ画像２５１上に対象衣服画像２５２を重畳すればよいことが示されている。
【０１３２】
図１８は、シルエットデータを用いた第１位置データの算出処理について説明するための図である。
【０１３３】
シルエットデータを用いた第１位置データの算出処理においては、対象被写体データに含まれるシルエットデータを第１サイズデータ（スケーリングパラメータ）に基づいてスケーリングする。なお、図１８において、シルエットデータ２１１は対象ユーザデータに含まれるシルエットデータであり、シルエットデータ２１２は対象被写体データに含まれるシルエットデータをスケーリングしたシルエットデータ（つまり、スケーリング後のシルエットデータ）である。
【０１３４】
図１８に示す例では、シルエットデータ２１１における特定の部位として、当該シルエットデータ２１１における肩領域２１１ａを用いる。同様に、シルエットデータ２１２における特定の部位として、当該シルエットデータ２１２における肩領域２１２ａを用いる。
【０１３５】
この場合、第１位置算出部１０６ｂは、シルエットデータ２１２における肩領域２１２ａがシルエットデータ２１１における肩領域２１１ａと一致する（または近くに位置する）ように、当該シルエットデータ２１１上にシルエットデータ２１２を重ね合わせる。
【０１３６】
第１位置算出部１０６ｂは、このように重ね合わされたときのシルエットデータ２１１及び２１２の位置関係と対象ユーザ画像中のユーザ及び対象衣服画像中の衣服の位置関係とが一致するように対象ユーザ画像と対象衣服画像とを重ね合わせたときの、当該対象ユーザ画像に対する対象衣服画像の位置を示す第１位置データを算出する。シルエットデータを用いて算出される第１位置データの詳細については、図１７において説明した通りであるため、ここではその詳しい説明は省略する。
【０１３７】
なお、ここでは、シルエットデータ２１１及び２１２における特定の部位として肩領域２１１ａ及び２１２ａを用いるものとして説明したが、当該肩領域２１１ａ及び２１２ａに代えてシルエットデータ２１１及び２１２における全体の領域を用いてもよいし、他の一部の領域を用いてもよい。
【０１３８】
図１９は、スケルトンデータを用いた第１位置データの算出処理について説明するための図である。
【０１３９】
スケルトンデータを用いた第１位置データの算出処理においては、対象被写体データに含まれるスケルトンデータを第１サイズデータ（スケーリングパラメータ）に基づいてスケーリングする。なお、図１９において、スケルトンデータ２２１は対象ユーザデータに含まれるシルエットデータであり、スケルトンデータ２２２は対象被写体データに含まれるスケルトンデータをスケーリングしたスケルトンデータ（つまり、スケーリング後のスケルトンデータ）である。
【０１４０】
図１９に示す例では、スケルトンデータ２２１における特定の部位として、当該スケルトンデータ２２１に含まれる両肩の関節位置を示すジョイントデータを含む領域（以下、肩幅領域と表記）２２１ａを用いる。同様に、スケルトンデータ２２２における特定の部位として、当該スケルトンデータ２２２に含まれる両肩の関節位置を示すジョイントデータを含む領域（肩幅領域）２２２ａを用いる。
【０１４１】
この場合、第１位置算出部１０６ｂは、スケルトンデータ２２２における肩幅領域２２２ａがスケルトンデータ２２１における肩幅領域２２１ａと一致する（または近くに位置する）ように、当該スケルトンデータ２２１上にスケルトンデータ２２２を重ね合わせる。
【０１４２】
第１位置算出部１０６ｂは、このように重ね合わされたときのスケルトンデータ２２１及び２１２の位置関係と対象ユーザ画像中のユーザ及び対象衣服画像中の衣服の位置関係とが一致するように対象ユーザ画像と対象衣服画像とを重ね合わせたときの、当該対象ユーザ画像に対する対象衣服画像の位置を示す第１位置データを算出する。スケルトンデータを用いて算出される第１位置データの詳細については、図１７において説明した通りであるため、その詳しい説明は省略する。
【０１４３】
なお、ここではスケルトンデータ２２１及び２２２における特定の部位として肩幅領域２２１ａ及び２２２ａを用いるものとして説明したが、スケルトンデータ２２１及び２２２における全てのジョイントデータを用いてもよいし、他の一部のジョイントデータを用いてもよい。
【０１４４】
上記したように第１算出処理によれば、第１サイズデータ及び第１位置データ（を含む第１合成データ）が算出される。このように第１算出処理において算出された第１サイズデータ及び第１位置データは、前述した図１１に示すステップＳ６の処理において合成部１０９が合成画像を生成する際に用いられる。
【０１４５】
具体的には、合成部１０９は、第１サイズデータに基づいて衣服画像をスケーリングし、対象ユーザ画像（中のユーザ）及び対象衣服画像（中の衣服）のサイズを一致させる。合成部１０９は、上記した第１位置データ（座標値ｔｂ（ｔｘｂ、ｔｙｂ））に基づいて、対象ユーザ画像の基準点からｘ座標方向にｔｘｂ、ｙ座標方向にｔｙｂ移動させた位置にスケーリング後の対象衣服画像の基準点が配置されるように、対象ユーザ画像上に対象衣服画像を重畳（配置）する。これによれば、対象ユーザ画像中のユーザの体（例えば、上半身または下半身等）の上に衣服画像中の衣服が重ね合わされた合成画像（つまり、ユーザが衣服を着用した状態を示す画像）を生成することができる。
【０１４６】
なお、上述したステップＳ１１及びＳ１３の処理により、ステップＳ１２及びＳ１４においては、予め定められた優先順位の高いデータに基づいて第１合成データ（第１サイズデータ及び第１位置データ）が算出される。換言すれば、第１算出処理においては、対象ユーザデータ及び対象被写体データに含まれるデータの種別に応じて（つまり、第２条件及び第３条件に従って）、第１サイズデータの算出方法（処理内容）及び第１位置データの算出方法（処理内容）を切り替えることが可能である。
【０１４７】
次に、図２０のフローチャートを参照して、上述した第２算出処理（図１１に示すステップＳ８の処理）の処理手順について説明する。第２算出処理においては、対象ユーザデータ、対象被写体データ及び第３格納部１０７に格納されたデータに基づいて第２合成データが算出される。第３格納部１０７に格納されたデータには、第１合成データと、当該第１合成データを算出する際に用いられたユーザデータ及び被写体データとが含まれる。第２合成データは、第２サイズデータ及び第２位置データを含む。
【０１４８】
まず、第２算出部１０８は、対象ユーザデータに対して補間が必要であるか否かを判定する（ステップＳ２１）。上述したようにデプス画像からシルエットデータが生成されると、特定の回転角度のときにシルエットが欠けてしまうような場合がある。ステップＳ２１においては、例えば図２１に示すように対象ユーザデータに含まれるシルエットデータが実際のユーザ（の形状）の輪郭線と比較して欠けているような場合には対象ユーザデータ（シルエットデータ）に対して補間が必要であると判定される。
【０１４９】
なお、シルエットデータが欠けているか否かは、シルエットデータによって示される輪郭線によって形成される形状（つまり、シルエット）から判別されてもよいし、シルエットデータにおける横方向（または縦方向）の幅等が正常値であるか否か等に基づいて判別されてもよい。シルエットデータが欠けていると判別される場合には、当該シルエットデータにおいて欠けている箇所（以下、欠損箇所と表記）が特定される。
【０１５０】
対象ユーザデータに対して補間が必要であると判定された場合（ステップＳ２１のＹＥＳ）、第２算出部１０８は、対象ユーザデータに対する補間のためのデータ（以下、補間用データと表記）がある（揃っている）か否かを判定する（ステップＳ２２）。なお、補間用データは、過去に第２サイズデータ及び第２位置データが算出された際に用いられたデータ（ユーザデータ及び被写体データ）、当該第２サイズデータ及び当該第２位置データを含む。
【０１５１】
補間用データがあると判定された場合（ステップＳ２２のＹＥＳ）、第２算出部１０８に含まれる補正部１０８ｃは、例えば当該補完用データを用いて対象ユーザデータを補間する処理（以下、補間処理と表記）を実行する（ステップＳ２３）。
【０１５２】
ここで、補間処理について説明する。ここでは、図２１に示す対象ユーザデータに含まれるシルエットデータ３００を補間する場合について説明する。
【０１５３】
この場合、補間用データとしては、対象ユーザデータに含まれる回転角度データによって示される回転角度（第３の回転角度）より小さい回転角度（第５の回転角度）で回転したユーザの形状に関するユーザデータ（シルエットデータ）及び当該回転角度より大きい回転角度（第６の回転角度）で回転したユーザの形状に関するユーザデータ（シルエットデータ）が用いられる。
【０１５４】
具体的には、対象ユーザデータに含まれる回転角度データによって示される回転角度（つまり、シルエットデータ３００におけるユーザの回転角度）が１１０度である場合には、補正部１０８ｃは、図２２に示すようなユーザの回転角度が１００度であるシルエットデータ３１０と、図２３に示すようなユーザの回転角度が１４０度であるシルエットデータ３２０とを補間用データとして用いる。
【０１５５】
補正部１０８ｃは、このようなシルエットデータ３１０及び３２０に基づいて、シルエットデータ３００を補間する。
【０１５６】
ここで、図２１に示すように、シルエットデータ３００における欠損箇所（ここでは、肩）を含む当該シルエットデータ３００（によって示される輪郭線によって形成される形状）の横方向の幅をｗｐｔとする。また、図２２に示すように、シルエットデータ３００における欠損箇所に対応する箇所を含むシルエットデータ３１０の横方向の幅をｗｐｓ０とする。更に、図２３に示すように、シルエットデータ３００における欠損箇所に対応する箇所を含むシルエットデータ３２０の横方向の幅をｗｐｓ１とする。この場合、このｗｐｓ０及びｗｐｓ１を用いて、シルエットデータ３００の横方向の幅ｗｐｔを補間した後の値ｗｐｔ´を算出する。
【０１５７】
ｗｐｔ´は、例えばｋ０＊ｗｐｓ０＋ｋ１＊ｗｐｓ１によって算出されるものとする。ｋ０及びｋ１は、回転角度の差によって決定される係数であり、ｋ０＋ｋ１＝１である。
【０１５８】
上記したようにシルエットデータ３００におけるユーザの回転角度が１１０度であり、シルエットデータ３１０におけるユーザの回転角度が１００度であり、シルエットデータ３２０におけるユーザの回転角度が１４０度である場合、ｗｐｔ´は、例えば０．７５＊ｗｐｓ０＋０．２５＊ｗｐｓ１によって算出される。
【０１５９】
この場合、欠損箇所を含むシルエットデータ３００の横方向の幅ｗｐｔが上記したｗｐｔ´となるように、当該シルエットデータ３００を加工（変形）することによって、シルエットデータ３００（対象ユーザデータ）に対する補間処理は終了する。
【０１６０】
再び図２０に戻ると、ステップＳ２１において対象ユーザデータに対して補間が必要でないと判定された場合（ステップＳ２１のＮＯ）、ステップＳ２２及びＳ２３の処理は実行されない。
【０１６１】
次に、第２算出部１０８は、対象ユーザデータに対して補正が必要であるか否かを判定する（ステップＳ２４）。なお、ステップＳ２４の処理における対象ユーザデータは、上記した補間処理が実行された場合には当該補間処理が実行された対象ユーザデータであり、補間処理が実行されていない場合には当該補完処理が実行されていない対象ユーザデータである。
【０１６２】
ここで、図２４を参照して、ステップＳ２４の処理について説明する。ここでは、対象ユーザデータに含まれるシルエットデータに対して補正が必要であるか否かを判定する場合について説明する。
【０１６３】
図２４に示されるシルエットデータ４１０ａは、第３格納部１０７に格納されているユーザデータ（つまり、第１合成データの算出に用いられたユーザデータ）に含まれるシルエットデータである。シルエットデータ４１０ｂは、第３格納部１０７に格納されている被写体データ（つまり、第１合成データの算出に用いられた被写体データ）に含まれるシルエットデータである。シルエットデータ４２０ａは、対象ユーザデータ（現在処理対象としているユーザデータ）に含まれるシルエットデータである。シルエットデータ４２０ｂは、対象被写体データ（現在処理対象としている被写体データ）に含まれるシルエットデータである。
【０１６４】
ここで、対象ユーザ画像に含まれるユーザが例えば横向き（ユーザの回転角度が９０度）である場合、シルエットデータ４２０ａは、髪の毛を含むユーザの輪郭線を示している。このようなシルエットデータ４２０ａとシルエットデータ４２０ｂとを用いた場合、当該シルエットデータ４２０ａ及び４２０ｂ（によって示される輪郭線によって形成される形状）間の差異が大きいため、適切な第２サイズデータ及び第２位置データを算出することはできない。すなわち、ユーザの髪の毛の影響でシルエット（データ）が実際のユーザの形状と大きく異なってしまっているような場合には、シルエットデータに対して補正が必要であると判定される。
【０１６５】
具体的には、第２算出部１０８は、シルエットデータ４１０ｂの例えば肩の位置での横方向の幅（肩幅の距離）ｗｃｂに対するシルエットデータ４１０ａの肩の位置での横方向の幅（肩幅の距離）ｗｐｂの比率ｗｒｂ（＝ｗｐｂ／ｗｃｂ）を算出する。また、第２算出部１０８は、シルエットデータ４２０ｂの肩の位置での横方向の幅ｗｃｔに対するシルエットデータ４２０ａの肩の位置での横方向の幅ｗｐｔの比率ｗｒｔ（＝ｗｐｔ／ｗｃｔ）を算出する。
【０１６６】
なお、第１サイズ算出部１０６ａによってシルエットデータを用いた第１サイズデータの算出処理が実行されている場合、ｗｒｂは当該第１サイズ算出部１０６ａによって算出された横方向のスケーリングパラメータｓｗｂに相当する値である。この場合、第３格納部１０７に格納されている第１サイズデータに含まれるスケーリングパラメータｓｗｂをｗｒｂとして用いてもよい。
【０１６７】
次に、第２算出部１０８は、このように算出されたｗｒｂに対するｗｒｔの比率ｒｔ（＝ｗｒｔ／ｗｒｂ）を算出する。
【０１６８】
ここで、ｗｒｂは、上述したユーザの髪の毛等の影響が少ない状態（例えば、ユーザが正面を向いている状態）のシルエットデータ４１０ａ及び４１０ｂから算出された値である。このため、シルエットデータ４２０ａにおいてユーザの髪の毛等の影響が少なく、当該シルエットデータ４２０ａを補正する必要がない場合には、ｗｒｔは概ねｗｒｂと等しい値、つまり、ｒｔは１．０に近い値となることが推測される。
【０１６９】
このような観点によれば、ｒｔが１．０から予め定められた範囲内にある場合、第２算出部１０８は、シルエットデータ４２０ａ（対象ユーザデータ）に対して補正が必要でないと判定する。一方、ｒｔが１．０から予め定められた範囲内にない場合には、第２算出部１０８は、シルエットデータ４２０ａ（対象ユーザデータ）に対して補正が必要であると判定する。
【０１７０】
再び図２０に戻ると、対象ユーザデータに対して補正が必要であると判定された場合（ステップＳ２４のＹＥＳ）、補正部１０８ｃは、第２算出部１０８によって算出されたｒｔ（＝ｗｒｔ／ｗｒｂ）に基づいて対象ユーザデータを補正する処理（以下、補正処理と表記）を実行する（ステップＳ２５）。
【０１７１】
補正処理においては、例えば図２５〜図２７に示すような予め用意されている補正関数ｆを用いて、ｒｔの補正値であるｒｔ´（＝ｆ（ｒｔ））を算出する。
【０１７２】
ここで、ｗｐｔを補間した後の値をｗｐｔ´とすると、ｒｔ´＝（ｗｐｔ´／ｗｃｔ）／ｗｒｂの式が得られるため、この式に対して上記したｒｔ´、ｗｃｔ、ｗｒｂを代入することにより、補正部１０８ｃはｗｐｔ´を算出する。
【０１７３】
この場合、シルエットデータ４２０ａの肩の位置での横方向の幅ｗｐｔが上記したｗｐｔ´となるように、当該シルエットデータ４２０ａを加工（変形）することによって、シルエットデータ４２０ａ（対象ユーザデータ）に対する補正処理は終了する。
【０１７４】
再び図２０に戻ると、対象ユーザデータに対して補正が必要でないと判定された場合（ステップＳ２４のＮＯ）、ステップＳ２５の処理は実行されず、ステップＳ２６以降の処理が実行される。ステップＳ２６以降の処理における対象ユーザデータは、上記した補正処理が実行された場合には当該補正処理が実行された対象ユーザデータであり、補正処理が実行されていない場合には当該補正書が実行されていない対象ユーザデータである。
【０１７５】
なお、ここでは対象ユーザデータに含まれるシルエットデータに対して補間処理及び補正処理を実行する場合について主に説明したが、当該対象ユーザデータに含まれるモデルデータ及びスケルトンデータに対して補間処理及び補正処理が実行されても構わない。
【０１７６】
次に、第２算出部１０８は、予め定められた条件（以下、第４条件と表記）に従って、第２サイズデータの算出に用いるデータ（の種別）を決定する（ステップＳ２６）。第４条件は、例えば上述した第２条件と同様であるため、ここではその詳しい説明を省略する。
【０１７７】
第２算出部１０８に含まれる第２サイズ算出部１０８ａは、ステップＳ２６において決定されたデータ及び第３格納部１０７に格納されているデータ（第１合成データ、ユーザデータ及び被写体データ）を用いて第２サイズデータを算出する（ステップＳ２７）。以下、第３格納部１０７に格納されているユーザデータ及び被写体データを基準ユーザデータ及び基準被写体データと称する。
【０１７８】
第２サイズ算出部１０８ａは、基準ユーザデータ及び基準被写体データにおける特定の部位（身体的特徴点）間の距離の比率と、対象ユーザデータ及び対象被写体データにおける特定の部位間の距離の比率との変化率に基づいて、第１合成データに含まれる第１サイズデータを調整することによって第２サイズデータを算出する。
【０１７９】
第２サイズデータは、上述した第１サイズデータと同様に、対象衣服画像中の衣服のサイズを対象ユーザ画像中のユーザのサイズに一致させる際の、当該対象衣服画像に対する拡大または縮小率（スケーリングパラメータ）を含む。
【０１８０】
ここで、第２サイズデータの算出処理について具体的に説明する。図２８は、モデルデータを用いた第２サイズデータの算出処理について説明するための図である。
【０１８１】
図２８に示す例では、基準ユーザデータ及び基準被写体データに含まれるモデルデータ５１０ａ及び５１０ｂにおける特定の部位間の距離として、例えば両肩に位置する頂点間の距離ｗｐｂ及びｗｃｂを用いる。
【０１８２】
この場合、第２サイズ算出部１０８ａは、モデルデータ５１０ａ及び５１０ｂにおける特定の部位間の距離の比率ｗｒｂを、ｗｒｂ＝ｗｐｂ／ｗｃｂにより算出する。
【０１８３】
一方、対象ユーザデータ及び対象被写体データに含まれるモデルデータ５２０ａ及び５２０ｂにおける特定の部位間の距離として、例えば胸部に位置する頂点及び背中に位置する頂点間の距離ｗｐｔ及びｗｃｔを用いる。なお、モデルデータ５２０ａ及び５２０ｂにおける胸部に位置する頂点及び背中に位置する頂点は、それぞれ互いに対応する頂点であるものとする。
【０１８４】
この場合、第２サイズ算出部１０８ａは、モデルデータ５２０ａ及び５２０ｂにおける特定の部位間の距離の比率ｗｒｔを、ｗｒｔ＝ｗｐｔ／ｗｃｔにより算出する。
【０１８５】
第２サイズ算出部１０８ａは、このように算出されたｗｒｂ及びｗｒｔを用いて、横方向のスケーリングパラメータｓｗｔを、ｓｗｔ＝（ｗｒｔ／ｗｒｂ）ｓｗｂにより算出する。なお、ｓｗｂは、第１サイズデータに含まれる横方向のスケーリングパラメータである。
【０１８６】
更に、基準ユーザデータ及び基準被写体データに含まれるモデルデータ５１０ａ及び５１０ｂにおける特定の部位間の距離として、例えば首の付け根に位置する頂点及び股の付け根に位置する頂点間の距離ｈｐｂ及びｈｃｂを用いる。
【０１８７】
この場合、第２サイズ算出部１０８ａは、モデルデータ５１０ａ及び５１０ｂにおける特定の部位間の距離の比率ｈｒｂを、ｈｒｂ＝ｈｐｂ／ｈｃｂにより算出する。
【０１８８】
一方、対象ユーザデータ及び対象被写体データに含まれるモデルデータ５２０ａ及び５２０ｂにおける特定の部位間の距離として、例えば首の付け根に位置する頂点及び股の付け根に位置する頂点間の距離ｈｐｔ及びｈｃｔを用いる。なお、モデルデータ５２０ａ及び５２０ｂにおける首の付け根に位置する頂点及び股の付け根に位置する頂点は、それぞれ互いに対応する頂点であるものとする。
【０１８９】
この場合、第２サイズ算出部１０８ａは、モデルデータ５２０ａ及び５２０ｂにおける特定の部位間の距離の比率ｈｒｔを、ｈｒｔ＝ｈｐｔ／ｈｃｔにより算出する。
【０１９０】
第２サイズ算出部１０８ａは、このように算出されたｈｒｂ及びｈｒｔを用いて、縦方向のスケーリングパラメータｓｈｔを、ｓｈｔ＝（ｈｒｔ／ｈｒｂ）ｓｈｂにより算出する。なお、ｓｈｂは、第１サイズデータに含まれる縦方向のスケーリングパラメータである。
【０１９１】
これにより、第２サイズ算出部１０８ａは、スケーリングパラメータｓｗｔ及びｓｈｔを含む第２サイズデータを算出する。なお、横方向のスケーリングパラメータｓｗｔ及び縦方向のスケーリングパラメータｓｈｂは、ｓｔ＝（ｓｗｔ，ｓｈｔ）のようなベクトルで表記される。
【０１９２】
なお、上述した第１算出処理においてモデルデータが用いられている場合、モデルデータを用いた第２サイズデータの算出処理において算出されるｗｒｂ及びｈｒｂは、第１サイズデータに含まれるスケーリングパラメータｓｗｂ及びｓｈｂと同じ値である。よって、この場合には上記したｗｒｂ及びｈｒｂに代えて第１サイズデータに含まれるスケーリングパラメータｓｗｂ及びｓｈｂを利用してもよい。
【０１９３】
図２９は、シルエットデータを用いた第２サイズデータの算出処理について説明するための図である。
【０１９４】
図２９に示す例では、基準ユーザデータ及び基準被写体データに含まれるシルエットデータ５３０ａ及び５３０ｂにおける特定の部位間の距離として、例えば肩幅の距離ｗｐｂ及びｗｃｂを用いる。
【０１９５】
この場合、第２サイズ算出部１０８ａは、シルエットデータ５３０ａ及び５３０ｂにおける特定の部位間の距離の比率ｗｒｂを、ｗｒｂ＝ｗｐｂ／ｗｃｂにより算出する。
【０１９６】
一方、対象ユーザデータ及び対象被写体データに含まれるシルエットデータ５４０ａ及び５４０ｂにおける特定の部位間の距離として、当該シルエットデータ５４０ａ及び５４０ｂの肩の位置での横方向の幅ｗｐｔ及びｗｃｔを用いる。
【０１９７】
この場合、第２サイズ算出部１０８ａは、シルエットデータ５４０ａ及び５４０ｂにおける特定の部位間の距離の比率ｗｒｔを、ｗｒｔ＝ｗｐｔ／ｗｃｔにより算出する。
【０１９８】
第２サイズ算出部１０８ａは、このように算出されたｗｒｂ及びｗｒｔを用いて、横方向のスケーリングパラメータｓｗｔを、ｓｗｔ＝（ｗｒｔ／ｗｒｂ）ｓｗｂにより算出する。上述したように、ｓｗｂは、第１サイズデータに含まれる横方向のスケーリングパラメータである。
【０１９９】
これにより、第２サイズ算出部１０８ａは、スケーリングパラメータｓｗｔを含む第２サイズデータを算出する。
【０２００】
なお、上述したようにシルエットデータからは正確な縦方向の特定の部位間の距離を得ることができない場合があるため、図２９においては、横方向のスケーリングパラメータｓｗｔのみを含む第２サイズデータが算出されるものとして説明したが、モデルデータを用いた場合の第２サイズデータの算出処理において説明したように、縦方向のスケーリングパラメータｓｈｔが算出されるような構成であってもよい。
【０２０１】
図３０は、スケルトンデータを用いた第２サイズデータの算出処理について説明するための図である。
【０２０２】
図３０に示す例では、基準ユーザデータ及び基準被写体データに含まれるスケルトンデータ５５０ａ及び５５０ｂにおける特定の部位間の距離として、例えばスケルトンデータ５５０ａ及び５５０ｂにおける両肩の関節位置（を示すジョイントデータ）間の距離ｗｐｂ及びｗｃｂを用いる。
【０２０３】
この場合、第２サイズ算出部１０８ａは、スケルトンデータ５５０ａ及び５５０ｂにおける特定の部位間の距離の比率ｗｒｂを、ｗｒｂ＝ｗｐｂ／ｗｃｂにより算出する。
【０２０４】
一方、対象ユーザデータ及び対象被写体データに含まれるモデルデータ５６０ａ及び５６０ｂにおける特定の部位間の距離として、例えば胸部付近の関節位置（を示すジョイントデータ）及び背中付近の関節位置（を示すジョイントデータ）間の距離ｗｐｔ及びｗｃｔを用いる。
【０２０５】
この場合、第２サイズ算出部１０８ａは、スケルトンデータ５６０ａ及び５６０ｂにおける特定の部位間の距離の比率ｗｒｔを、ｗｒｔ＝ｗｐｔ／ｗｃｔにより算出する。
【０２０６】
第２サイズ算出部１０８ａは、このように算出されたｗｒｂ及びｗｒｔを用いて、横方向のスケーリングパラメータｓｗｔを、ｓｗｔ＝（ｗｒｔ／ｗｒｂ）ｓｗｂにより算出する。なお、ｓｗｂは、第１サイズデータに含まれる横方向のスケーリングパラメータである。
【０２０７】
更に、基準ユーザデータ及び基準被写体データに含まれるスケルトンデータ５５０ａ及び５５０ｂにおける特定の部位間の距離として、例えば首の付け根付近の関節位置及び胴体の中心付近に位置する関節位置（を示すジョイントデータ）間の距離ｈｐｂ及びｈｃｂを用いる。
【０２０８】
この場合、第２サイズ算出部１０８ａは、スケルトンデータ５５０ａ及び５５０ｂにおける特定の部位間の距離の比率ｈｒｂを、ｈｒｂ＝ｈｐｂ／ｈｃｂにより算出する。
【０２０９】
一方、対象ユーザデータ及び対象被写体データに含まれるスケルトンデータ５６０ａ及び５６０ｂにおける特定の部位間の距離として、例えば首の付け根付近の関節位置及び胴体の中心付近に位置する関節位置（を示すジョイントデータ）間の距離ｈｐｔ及びｈｃｔを用いる。
【０２１０】
この場合、第２サイズ算出部１０８ａは、スケルトンデータ５６０ａ及び５６０ｂにおける特定の部位間の距離の比率ｈｒｔを、ｈｒｔ＝ｈｐｔ／ｈｃｔにより算出する。
【０２１１】
第２サイズ算出部１０８ａは、このように算出されたｈｒｂ及びｈｒｔを用いて、縦方向のスケーリングパラメータｓｈｔを、ｓｈｔ＝（ｈｒｔ／ｈｒｂ）ｓｈｂにより算出する。なお、ｓｈＢは、第１サイズデータに含まれる縦方向のスケーリングパラメータである。
【０２１２】
これにより、第２サイズ算出部１０８ａは、スケーリングパラメータｓｗｔ及びｓｈｔを含む第２サイズデータを算出する。
【０２１３】
このようにステップＳ２６の処理においては、ステップＳ２５において決定されたモデルデータ、シルエットデータ及びスケルトンデータのうちの少なくとも１つ及び第１サイズデータを用いて第２サイズデータ（スケーリングパラメータ）を算出することができる。なお、第２サイズデータは、モデルデータ、シルエットデータ及びスケルトンデータのうちの２つ以上を用いて算出されても構わない。
【０２１４】
再び図２０に戻ると、第２算出部１０８は、予め定められた条件（以下、第５条件と表記）に従って、第２位置データの算出に用いるデータ（の種別）を決定する（ステップＳ２８）。第５条件は、例えば上述した第３条件と同様であるため、ここではその詳しい説明を省略する。
【０２１５】
第２算出部１０８に含まれる第２位置算出部１０８ｂは、ステップＳ２７において算出された第２サイズデータ、ステップＳ２８において決定されたデータ及び第３格納部１０７に格納されているデータ（第１合成データ、基準ユーザデータ及び基準被写体データ）を用いて第２位置データを算出する（ステップＳ２９）。
【０２１６】
第２位置算出部１０８ｂは、第１合成データに含まれる第１位置データと基準ユーザデータ及び基準被写体データにおける特定の部位の位置関係とを基準とし、対象ユーザデータ及び対象被写体データにおける特定の部位の位置関係が当該基準とした位置関係と一致するような位置を示す第２位置データを算出する。
【０２１７】
ここで、第２位置データの算出処理について具体的に説明する。図３１は、モデルデータを用いた第２位置データの算出処理について説明するための図である。
【０２１８】
図３１に示す例では、基準ユーザデータ及び基準被写体データに含まれるモデルデータ６１０ａ及び６１０ｂにおける特定の部位として、当該モデルデータ６１０ａ及び６１０ｂ（によって示される形状）の胸部（中心）付近に位置する頂点ｐｐｂ及びｐｃｂを用いる。なお、モデルデータ６１０ａ及び６１０ｂにおける頂点ｐｐｂ及びｐｃｂはそれぞれ対応する頂点である。
【０２１９】
また、対象ユーザデータ及び対象被写体データに含まれるモデルデータ６２０ａ及び６２０ｂにおける特定の部位として、当該モデルデータ６２０ａ及び６２０ｂ（によって示される形状）の胸部（中心）付近に位置する頂点ｐｐｔ及びｐｃｔを用いる。なお、モデルデータ６２０ａ及び６２０ｂにおける頂点ｐｐｔ及びｐｃｔはそれぞれ対応する頂点である。
【０２２０】
ここで、モデルデータ６１０ａ及び６１０ｂを重ね合わせる（合成する）ことを想定する。この場合、モデルデータ６１０ａにおける頂点ｐｐｂ及びモデルデータ６１０ｂにおける頂点ｐｃｂが一致するように当該モデルデータ６１０ａ及び６１０ｂを合成することになるが、当該モデルデータ６１０ａ及び６１０ｂの形状は完全には一致していない場合が多い。このため、頂点ｐｐｂ及びｐｃｂを一致させたとしてもモデルデータ６１０ａ及び６１０ｂ間ではずれが生じる。そこで、このずれの量を低減させるためには、モデルデータ６１０ｂを第１サイズデータに基づいてスケーリングした上で、上記した第１位置データ（座標値ｔｂ）を用いて６１０ｂにおける頂点ｐｃｂ（の位置）を調整する。このような調整を行った後の頂点ｐｃｂ´（の位置）は、ｐｃｂ´＝ｓｂ＊ｐｃｂ＋ｔｂで表される。ｓｂは第１合成データに含まれる第１サイズデータであり、ｓｂ＊ｐｃｂは、モデルデータ６１０ｂが当該第１サイズデータ（スケーリングパラメータ）に基づいてスケーリングされた後の当該ｐｃｂの位置を表す。
【０２２１】
なお、上記した調整を行ったとしても、ｐｃｂ´の位置はｐｐｂの位置とずれている可能性がある。そこで、第２位置算出部１０８ｂは、ｐｃｂ´とｐｐｂとのずれ量ｕｂを、ｕｂ＝ｐｃｂ´−ｐｐｂにより算出する。
【０２２２】
一方、第２位置データとして算出される座標値をｔｔ（ｔｘｔ，ｔｙｔ）とし、上記したモデルデータ６１０ｂにおける頂点ｐｃｂと同様の調整をモデルデータ６２０ｂにおける頂点ｐｃｔに対して行った場合を想定する。この場合、調整を行った後の頂点ｐｃｔ´（の位置）は、ｐｃｔ´＝ｓｔ＊ｐｃｔ＋ｔｔ（以下、第１式と表記）で表される。ｓｔはステップＳ２６において算出された第２サイズデータであり、ｓｔ＊ｐｃｔは、モデルデータ６２０ｂが当該第２サイズデータ（スケーリングパラメータ）に基づいてスケーリングされた後の当該ｐｃｔの位置を表す。
【０２２３】
ここで、本実施形態においては、ユーザ及び被写体が回転したとしても、このように算出されるずれ量ｕｂが一定に保たれることを前提とする。これによれば、ｐｃｔ´は、ｐｃｔ´＝ｐｐｔ＋ｕｂ（以下、第２式と表記）と表すこともできる。
【０２２４】
モデルデータを用いた第２位置データの算出処理においては、このような第１式及び第２式から導出されるｔｔ＝ｐｐｔ＋ｕｂ−ｓｔ＊ｐｔｂにより、座標値ｔｔ（を含む第２位置データ）を算出することができる。
【０２２５】
図３２は、シルエットデータを用いた第２位置データの算出処理について説明するための図である。
【０２２６】
図３２に示す例では、基準ユーザデータ及び基準被写体データに含まれるシルエットデータ６３０ａ及び６３０ｂにおける特定の部位として、当該シルエットデータ６３０ａ及び６３０ｂによって示される輪郭線によって形成される形状（つまり、シルエット）の中心点ｐｐｂ及びｐｃｂを用いる。
【０２２７】
また、対象ユーザデータ及び対象被写体データに含まれるシルエットデータ６４０ａ及び６４０ｂにおける特定の部位として、当該シルエットデータ６４０ａ及び６４０ｂによって示される輪郭線によって形成される形状（つまり、シルエット）の中心点ｐｐｔ及びｐｃｔを用いる。
【０２２８】
ここで、シルエットデータ６３０ａ及び６３０ｂを重ね合わせる（合成する）ことを想定する。この場合、シルエットデータ６３０ａにおける中心点ｐｐｂ及びシルエットデータ６３０ｂにおける中心点ｐｃｂが一致するように当該シルエットデータ６３０ａ及び６３０ｂを合成することになるが、当該シルエットデータ６３０ａ及び６３０ｂの形状は完全には一致していない場合が多い。このため、中心点ｐｐｂ及びｐｃｂを一致させたとしてもシルエットデータ６３０ａ及び６３０ｂ間ではずれが生じる。そこで、このずれの量を低減させるためには、シルエットデータ６３０ｂを第１サイズデータに基づいてスケーリングした上で、上記した第１位置データ（座標値ｔｂ）を用いてシルエットデータ６３０ｂにおける頂点ｐｃｂ（の位置）を調整する。このような調整を行った後の中心点ｐｃｂ´（の位置）は、ｐｃｂ´＝ｓｂ＊ｐｃｂ＋ｔｂで表される。上記したようにｓｂは第１合成データに含まれる第１サイズデータであり、ｓｂ＊ｐｃｂは、シルエットデータ６３０ｂが当該第１サイズデータ（スケーリングパラメータ）に基づいてスケーリングされた後の当該ｐｃｂの位置を表す。
【０２２９】
また、上記したようにｐｃｂ´とｐｐｂとのずれ量ｕｂがｕｂ＝ｐｃｂ´−ｐｐｂにより算出される。
【０２３０】
一方、第２位置データとして算出される座標値をｔｔ（ｔｘｔ，ｔｙｔ）とし、上記したシルエットデータ６３０ｂにおける中心点ｐｃｂと同様の調整をシルエットデータ６４０ｂにおける中心点ｐｃｔに対して行った場合を想定する。この場合、調整を行った後の中心点ｐｃｔ´（の位置）は、ｐｃｔ´＝ｓｔ＊ｐｃｔ＋ｔｔ（第１式）で表される。ｓｔはステップＳ２６において算出された第２サイズデータであり、ｓｔ＊ｐｃｔは、シルエットデータ５４０ｂが当該第２サイズデータ（スケーリングパラメータ）に基づいてスケーリングされた後の当該ｐｃｔの位置を表す。
【０２３１】
また、上記したようにユーザ及び被写体が回転したとしてもずれ量ｕｂが一定に保たれることを前提とすると、ｐｃｔ´は、ｐｃｔ´＝ｐｐｔ＋ｕｂ（第２式）と表すこともできる。
【０２３２】
シルエットデータを用いた第２位置データの算出処理においては、上記したモデルデータを用いた場合と同様に、このような第１式及び第２式から導出されるｔｔ＝ｐｐｔ＋ｕｂ−ｓｔ＊ｐｔｂにより、座標値ｔｔ（を含む第２位置データ）を算出することができる。
【０２３３】
図３３は、スケルトンデータを用いた第２位置データの算出処理について説明するための図である。
【０２３４】
図３３に示す例では、基準ユーザデータ及び基準被写体データに含まれるスケルトンデータ６５０ａ及び６５０ｂにおける特定の部位として、当該スケルトンデータ６５０ａ及び６５０ｂの胸部（中心）付近の関節位置（を示すジョイントデータ）ｐｐｂ及びｐｃｂを用いる。
【０２３５】
また、対象ユーザデータ及び対象被写体データに含まれるスケルトンデータ６６０ａ及び６６０ｂにおける特定の部位として、当該スケルトンデータ６６０ａ及び６６０ｂの胸部（中心）付近の関節位置（を示すジョイントデータ）ｐｐｔ及びｐｃｔを用いる。
【０２３６】
ここで、スケルトンデータ６５０ａ及び６５０ｂを重ね合わせる（合成する）ことを想定する。この場合、スケルトンデータ６５０ａにおける関節位置ｐｐｂ及びスケルトンデータ６５０ｂにおける関節位置ｐｃｂが一致するように当該スケルトンデータ６５０ａ及び６５０ｂを合成することになるが、当該スケルトンデータ６５０ａ及び６５０ｂの形状は完全には一致していない場合が多い。このため、関節位置ｐｐｂ及びｐｃｂを一致させたとしてもスケルトンデータ６５０ａ及び６５０ｂ間ではずれが生じる。そこで、このずれの量を低減させるためには、スケルトンデータ６５０ｂを第１サイズデータに基づいてスケーリングした上で、上記した第１位置データ（座標値ｔｂ）を用いてスケルトンデータ６５０ｂにおける関節位置ｐｃｂ（の位置）を調整する。このような調整を行った後の関節位置ｐｃｂ´は、ｐｃｂ´＝ｓｂ＊ｐｃｂ＋ｔｂで表される。上記したようにｓｂは第１合成データに含まれる第１サイズデータであり、ｓｂ＊ｐｃｂは、スケルトンデータ６５０ｂが当該第１サイズデータ（スケーリングパラメータ）に基づいてスケーリングされた後の当該ｐｃｂの位置を表す。
【０２３７】
また、上記したようにｐｃｂ´とｐｐｂとのずれ量ｕｂがｕｂ＝ｐｃｂ´−ｐｐｂにより算出される。
【０２３８】
一方、第２位置データとして算出される座標値をｔｔ（ｔｘｔ，ｔｙｔ）とし、上記したスケルトンデータ６５０ｂにおける関節位置ｐｃｂと同様の調整をスケルトンデータ６６０ｂにおける関節位置ｐｃｔに対して行った場合を想定する。この場合、調整を行った後の関節位置ｐｃｔ´は、ｐｃｔ´＝ｓｔ＊ｐｃｔ＋ｔｔ（第１式）で表される。ｓｔはステップＳ２６において算出された第２サイズデータであり、ｓｔ＊ｐｃｔは、スケルトンデータ６６０ｂが当該第２サイズデータ（スケーリングパラメータ）に基づいてスケーリングされた後の当該ｐｃｔの位置を表す。
【０２３９】
また、上記したようにユーザ及び被写体が回転したとしてもずれ量ｕｂが一定に保たれることを前提とすると、ｐｃｔ´は、ｐｃｔ´＝ｐｐｔ＋ｕｂ（第２式）と表すこともできる。
【０２４０】
スケルトンデータを用いた第２位置データの算出処理においては、上記したモデルデータまたはシルエットデータを用いた場合と同様に、このような第１式及び第２式から導出されるｔｔ＝ｐｐｔ＋ｕｂ−ｓｔ＊ｐｔｂにより、座標値ｔｔ（を含む第２位置データ）を算出することができる。
【０２４１】
なお、上記した第２位置データの算出処理におけるベクトル同士の積は、例えばアダマール積（要素毎の積）で算出されるものとする。
【０２４２】
再び図２０に戻ると、上記したステップＳ２７における第２サイズデータ及びステップＳ２９における第２位置データの算出に用いられたデータ（ユーザデータ及び被写体データ、当該ステップＳ２７において算出された第２サイズデータ及び当該ステップＳ２９において算出された第２位置データが第２算出部１０８内に格納（蓄積）される（ステップＳ３０）。このように第２算出部１０８内に格納された各種データは、上記した補間用データとして後の処理において利用される。
【０２４３】
上記したように第２算出処理によれば、第２サイズデータ及び第２位置データ（を含む第２合成データ）が算出される。このように第２算出処理において算出された第２サイズデータ及び第２位置データは、合成部１０９が合成画像を生成する際に用いられる。第２サイズデータ及び第２位置データを用いた場合の合成部１０９の処理については、上述した第１サイズデータ及び第１位置データを用いて合成画像を生成する際の処理と同様であるため、その詳しい説明を省略する。
【０２４４】
なお、上述したステップＳ２６及びＳ２８の処理により、ステップＳ２７及びＳ２９においては、予め定められた優先順位の高いデータに基づいて第２合成データ（第２サイズデータ及び第２位置データ）が算出される。換言すれば、第２算出処理においては、対象ユーザデータ及び対象被写体データに含まれるデータの種別に応じて（つまり、第４条件及び第５条件に従って）、第２サイズデータの算出方法（処理内容）及び第２位置データの算出方法（処理内容）を切り替えることが可能である。
【０２４５】
一方、上述したシルエットデータ３１０及び３２０のような補間用データが第２算出部１０８内に格納されていない場合には、上記したステップＳ２２において補間用データがないと判定され（ステップＳ２２のＮＯ）、第２算出処理は終了される。すなわち、この場合においては補間が必要であるが補間処理を実行することができないため、第２サイズデータ及び第２位置データは算出されないものとする。図１１においては図示されていないが、このように図２０に示す第２算出処理において第２サイズデータ及び第２位置データが算出されない場合には、図１１に示すステップＳ６の処理は実行されず、ステップＳ９の処理が実行される。この場合における対象ユーザ画像についての第２合成データは、他のユーザ画像について図１１に示すステップＳ１〜Ｓ８の処理が実行された後に（つまり、補間用データが第２算出部１０８内に揃った後に）、再度第２算出処理が実行されることによって算出される。
【０２４６】
なお、補間が必要なユーザデータと補間が必要でないユーザデータとを予め規定しておくような構成としても構わない。このような構成の場合、上記したように図１１に示すステップＳ１〜Ｓ８の処理が繰り返される際に、例えば図１１に示すステップＳ１において補間が必要でないユーザデータから取得される（つまり、補間が必要なユーザデータよりも先に補間が必要でないユーザデータから先に処理される）ように、当該ユーザデータの取得順序が制御されるものとする。同様に、ステップＳ１において第１条件を満たすユーザデータが優先的に取得されるような制御が行われることによって、ステップＳ７において必要なデータがないと判定されることを回避することも可能である。
【０２４７】
上記したように本実施形態においては、第１の回転角度で回転したユーザを含む基準となるユーザ画像（第１のユーザ画像）上に衣服画像（第１の衣服画像）を合成するための第１合成データ、ユーザデータ及び被写体データに基づいて、第１の回転角度とは異なる第３の回転角度で回転したユーザを含む対象ユーザ画像（第２のユーザ画像）上に衣服画像（第２の衣服画像）を合成するための第２合成データを算出し、当該第２合成データに基づいて対象ユーザ画像上に衣服画像を合成する。なお、基準となるユーザ画像は、衣服画像を当該ユーザ画像上に高い精度で合成することができるか否かという観点から予め定められた第１条件（例えば、当該第１のユーザ画像に含まれるユーザの回転角度が予め定められた範囲内の角度であること等）を満たす画像であり、対象ユーザ画像は、当該第１条件を満たさない画像である。
【０２４８】
本実施形態においては、このような構成により、例えば第１条件を満たさない対象ユーザ画像上に衣服画像を合成するための第２合成データを算出する際に、当該第１条件を満たすような基準となるユーザ画像上に衣服画像を合成するための第１合成データを用いることによって、仮想試着時に表示される合成画像の精度（フィッティング精度）を向上させることが可能となる。具体的には、例えば正面向きのユーザを含むユーザ画像以外の横向きまたは後ろ向きのユーザを含むユーザ画像等（つまり、回転コンテンツ）を扱う場合であっても、高い精度の合成画像を生成することが可能となる。
【０２４９】
また、本実施形態において、ユーザ画像上に衣服画像を合成するための合成データ（第１合成データ及び第２合成データ）は、ユーザ画像中のユーザのサイズ及び衣服画像中の衣服のサイズを一致させるためのサイズデータと、ユーザ画像中のユーザと衣服画像中の衣服とを重畳させる際のユーザ画像上の衣服画像の位置を示す位置データとを含む。このような構成によれば、サイズデータに基づいてユーザ画像または衣服画像をスケーリングした上で、ユーザ画像中のユーザ上に衣服画像中の衣服を適切な位置に重畳させることが可能となるため、高い精度の合成画像を生成することが可能となる。
【０２５０】
更に、本実施形態において、ユーザデータ及び被写体データが複数の種別のデータ（例えば、モデルデータ、シルエットデータ及びスケルトンデータ等）を含む場合、合成データが予め定められた優先順位の高いデータに基づいて算出される構成により、より高い精度の合成画像を生成することが可能な合成データを算出することができる。
【０２５１】
また、本実施形態においては、基準となるユーザ画像に対応するユーザデータ及び当該ユーザ画像上に合成される衣服画像に対応する被写体データに基づいて、対象ユーザ画像に対応するユーザデータを補正する。更に、本実施形態においては、対象ユーザ画像に含まれるユーザの回転角度よりも小さい及び大きい回転角度で回転したユーザの形状に関するユーザデータに基づいて対象ユーザ画像に対応するユーザデータを補間する。本実施形態においては、このような構成により、例えばユーザの髪の毛（または当該ユーザが着用している衣服）等の影響を受けることによって対象ユーザ画像に対応するユーザデータが適切でないような場合であっても、当該ユーザデータを補正または補間することが可能であるため、結果として精度の高い合成画像を生成することが可能となる。
【０２５２】
なお、本実施形態においては、対象ユーザ画像（第１条件を満たさないユーザ画像）に対応するユーザデータ（例えば、横向きまたは後ろ向きのユーザの輪郭線を示すシルエットデータ）を補正または補間するものとして説明したが、ユーザが正面向きの場合（つまり、第１条件を満たすユーザ画像の場合）であっても、当該ユーザの髪の毛等の影響により適切なシルエットデータが得られていない場合がある。このような場合には、第１サイズデータ及び第１位置データの算出処理においてシルエットデータを用いない構成としてもよい。
【０２５３】
ユーザデータに含まれるシルエットデータが適切であるか否かは、例えば当該シルエットデータ（によって示される輪郭線によって形成されるシルエット）に対して人体（人物）の形状を表すテンプレート等を適用することによって判定されるものとする。具体的には、テンプレートの適用結果を解析することによって、シルエット（の形状）において人体の肩のラインが表れている等、当該シルエットが人体の形状に近いことが確認できる場合には、シルエットデータが適切であると判定されるものとする。例えば、図３４及び図３５に示すシルエットデータの場合には当該シルエットデータは適切でないと判別され、図３６に示すシルエットデータの場合には当該シルエットデータは適切であると判別される。
【０２５４】
なお、図３４〜図３６においてはユーザの髪の毛の影響について主に説明したが、シルエットデータが適切であるか否かは、上記したようにユーザが既に着用している衣服の影響（例えば、襟の大きさ及び形状等）も考慮して判定される。
【０２５５】
このような構成によれば、ユーザの状況（状態）に応じた適切なデータを用いて第１サイズデータ及び第１位置データ（つまり、第１合成データ）を算出することが可能となる。
【０２５６】
また、本実施形態においては、第２サイズデータに基づいてスケーリングされた衣服画像をユーザ画像上に重畳することによって合成画像を生成するものとして説明したが、当該第２サイズデータに基づいてスケーリングされたユーザ画像上に衣服画像を重畳することによって合成画像を生成してもよい。また、本実施形態に係る画像処理装置１０は、例えばユーザの操作に応じて、上記したユーザ画像上に衣服画像を合成する方法（つまり、第２サイズデータに基づいてスケーリングされた衣服画像をユーザ画像上に重畳することによって合成画像を生成するか、または当該第２サイズデータに基づいてスケーリングされたユーザ画像上に衣服画像を重畳することによって合成画像を生成するか）を変更する変更部（図示せず）を備える構成であってもよい。
【０２５７】
また、本実施形態においては、ユーザデータ及び被写体データにはモデルデータ、シルエットデータ及びスケルトンデータ等が含まれるものとして説明したが、上述した合成データが算出可能であれば、ユーザデータ及び被写体データにはこれらのデータのうちの少なくとも１つが含まれていればよい。
【０２５８】
また、本実施形態においては、図１１に示す処理が画像処理装置１０において実行されるものとして説明したが、当該処理の一部が画像処理装置１０の外部の装置（例えば、サーバ装置等）で実行される構成とすることも可能である。更に、上述したように例えば第１格納部１０１、第２格納部１０３及び第３格納部１０７がサーバ装置に備えられる構成である場合には、図１１に示す処理の全てがサーバ装置等で実行されて、当該サーバ装置において生成された合成画像をユーザが所持するスマートフォン等で表示するような構成とすることも可能である。
【０２５９】
更に、本実施形態においては、衣服画像が合成される被合成対象となる被写体がユーザ（人物）であるものとして説明したが、当該被合成対象となる被写体はマネキン等であっても構わない。また、被合成対象となる被写体と合成対象の衣服を着用させた被写体とが同一であってもよい。
【０２６０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。  
【符号の説明】
【０２６１】
１０…画像処理装置、１１…本体、１２…タッチスクリーンディスプレイ、１０１…第１格納部、１０２…ユーザ画像取得部（第１の取得手段）、１０３…第２格納部、１０４…衣服画像取得部（第２の取得手段）、１０５…判定部、１０６…第１算出部、１０６ａ…第１サイズ算出部、１０６ｂ…第１位置算出部、１０７…第３格納部（格納手段）、１０８…第２算出部（算出手段）、１０８ａ…第２サイズ算出部、１０８ｂ…第２位置算出部、１０８ｃ…補正部、１０９…合成部（合成手段）。
【図１】
0006517611.tif 000002
【図２】
0006517611.tif 000003
【図３】
0006517611.tif 000004
【図４】
0006517611.tif 000005
【図５】
0006517611.tif 000006
【図６】
0006517611.tif 000007
【図７】
0006517611.tif 000008
【図８】
0006517611.tif 000009
【図９】
0006517611.tif 000010
【図１０】
0006517611.tif 000011
【図１１】
0006517611.tif 000012
【図１２】
0006517611.tif 000013
【図１３】
0006517611.tif 000014
【図１４】
0006517611.tif 000015
【図１５】
0006517611.tif 000016
【図１６】
0006517611.tif 000017
【図１７】
0006517611.tif 000018
【図１８】
0006517611.tif 000019
【図１９】
0006517611.tif 000020
【図２０】
0006517611.tif 000021
【図２１】
0006517611.tif 000022
【図２２】
0006517611.tif 000023
【図２３】
0006517611.tif 000024
【図２４】
0006517611.tif 000025
【図２５】
0006517611.tif 000026
【図２６】
0006517611.tif 000027
【図２７】
0006517611.tif 000028
【図２８】
0006517611.tif 000029
【図２９】
0006517611.tif 000030
【図３０】
0006517611.tif 000031
【図３１】
0006517611.tif 000032
【図３２】
0006517611.tif 000033
【図３３】
0006517611.tif 000034
【図３４】
0006517611.tif 000035
【図３５】
0006517611.tif 000036
【図３６】
0006517611.tif 000037