(57)【特許請求の範囲】
【請求項１】
ユーザが着用している着用服の着用服領域が、仮想服の仮想服領域と一致しない場合に、前記着用服領域と前記仮想服領域を一致させる処理として、前記着用服領域と前記仮想服領域が一致しない領域を、背景画像以外の画像で置き換える第１の処理を行う画像処理部
を備える画像処理装置。
【請求項２】
前記画像処理部は、前記背景画像以外の画像で置き換えることにより、前記着用服領域を狭める
請求項１に記載の画像処理装置。
【請求項３】
前記画像処理部は、前記着用服領域と前記仮想服領域が一致しない領域を、背景画像で置き換える第２の処理も行う
請求項１に記載の画像処理装置。
【請求項４】
前記背景画像以外の画像で置き換える領域を検出する領域検出部をさらに備える
請求項１に記載の画像処理装置。
【請求項５】
前記領域検出部は、前記ユーザの骨格情報に基づいて、前記背景画像以外の画像で置き換える領域を検出する
請求項４に記載の画像処理装置。
【請求項６】
前記背景画像以外の画像で置き換える領域は、前記ユーザの襟、裾、および袖の領域である
請求項１に記載の画像処理装置。
【請求項７】
前記画像処理部は、前記仮想服領域を拡げる処理を行うことにより、前記仮想服領域と前記着用服領域を一致させる第２の処理も行うことができ、選択された前記第１の処理または前記第２の処理のどちらかを実行する
請求項１に記載の画像処理装置。
【請求項８】
画像処理装置が、
ユーザが着用している着用服の着用服領域が、仮想服の仮想服領域と一致しない場合に、前記着用服領域と前記仮想服領域を一致させる処理として、前記着用服領域と前記仮想服領域が一致しない領域を、背景画像以外の画像で置き換える処理を行う
ステップを含む画像処理方法。
【請求項９】
コンピュータに、
ユーザが着用している着用服の着用服領域が、仮想服の仮想服領域と一致しない場合に、前記着用服領域と前記仮想服領域を一致させる処理として、前記着用服領域と前記仮想服領域が一致しない領域を、背景画像以外の画像で置き換える
処理を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、画像処理装置、画像処理方法、およびプログラムに関し、特に、仮想服を重畳した時の不自然な表現を防止することができるようにする画像処理装置、画像処理方法、およびプログラムに関する。
【背景技術】
【０００２】
AR（Augmented Reality）と呼ばれ、拡張現実と訳される、現実世界を、コンピュータを使って拡張する技術があり、ARを洋服の試着に適用した例がある。具体的には、カメラで撮影されたユーザの画像のうち、ユーザが仮想の服を着用しているように、ユーザの着用している服の部分を、仮想の服に置き換え（ユーザの画像に仮想の服を重畳する）技術である。
【０００３】
このような洋服の試着のARでは、ユーザの体（の画像）に仮想の服をうまく重畳させるために、加速度センサ、地磁気センサ、カメラ、レンジスキャナなどの各種のセンサを用いて、ユーザの動作を検出するモーションキャプチャ技術が採用される。ユーザの動作の検出とは、具体的には、認識対象であるユーザの各関節の位置（の移動）を連続的に取得することをいう。
【０００４】
モーションキャプチャ技術には、マーカありの手法と、マーカなしの手法がある。
【０００５】
マーカありの手法においては、マーカと呼ばれる検出容易な印が、ユーザの関節部に取り付けられる。そして、マーカの位置を検出し、取得することで、認識対象であるユーザの関節位置を知ることができる。
【０００６】
一方、マーカなしの手法においては、各種のセンサから得られた値を処理することで、認識対象であるユーザの関節位置が推定される。例えば、被写体の奥行き方向の距離がわかる３次元計測カメラを用いて撮影されたデプス画像（奥行き情報を示す画像）から、ユーザの姿勢（関節位置）を認識するアルゴリズムがある（例えば、非特許文献１参照）。
【０００７】
マーカなしの手法において、ユーザの関節位置を正確に推定するためには、関節間の距離が必要となる。そこで、一般に、モーションキャプチャを開始する前には、各種のセンサから得られた値に基づいて、関節間の距離を算出するキャリブレーション処理が行われる。なお、メジャーなどを用いて関節間の距離が事前に計測されている場合は、キャリブレーション処理は省略される。
【０００８】
キャリブレーション処理では、推定されるユーザの関節位置が３つ以上同一直線上に並んでいる場合には、原理的に関節間の距離を算出できないため、ユーザには、キャリブレーションポーズと呼ばれる、関節を曲げた特定の姿勢を取ってもらう必要があった。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】“Real-Time Human Pose Recognition in Parts from Single Depth Images”，Microsoft Research、[online]、[平成２３年５月２３日検索]、インターネット＜URL: http://research.microsoft.com/pubs/145347/BodyPartRecognition.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ところで、洋服の試着のARでは、ユーザの撮影画像に仮想服を重畳させて表示する際に、不自然な表現となることがあった。
【００１１】
本技術は、このような状況に鑑みてなされたものであり、仮想服を重畳した時の不自然な表現を防止することができるようにするものである。
【課題を解決するための手段】
【００１２】
本技術の一側面の画像処理装置は、ユーザが着用している着用服の着用服領域が、仮想服の仮想服領域と一致しない場合に、前記着用服領域と前記仮想服領域を一致させる処理として、前記着用服領域と前記仮想服領域が一致しない領域を、背景画像以外の画像で置き換える第１の処理を行う画像処理部を備える。
【００１３】
本技術の一側面の画像処理方法は、画像処理装置が、ユーザが着用している着用服の着用服領域が、仮想服の仮想服領域と一致しない場合に、前記着用服領域と前記仮想服領域を一致させる処理として、前記着用服領域と前記仮想服領域が一致しない領域を、背景画像以外の画像で置き換える処理を行うステップを含む。
【００１４】
本技術の一側面のプログラムは、コンピュータに、ユーザが着用している着用服の着用服領域が、仮想服の仮想服領域と一致しない場合に、前記着用服領域と前記仮想服領域を一致させる処理として、前記着用服領域と前記仮想服領域が一致しない領域を、背景画像以外の画像で置き換える処理を実行させるためのものである。
【００１５】
本技術の一側面においては、ユーザが着用している着用服の着用服領域が、仮想服の仮想服領域と一致しない場合に、前記着用服領域と前記仮想服領域を一致させる処理として、前記着用服領域と前記仮想服領域が一致しない領域を、背景画像以外の画像で置き換える処理が行われる。
【００１６】
なお、プログラムは、伝送媒体を介して伝送することにより、又は、記録媒体に記録して、提供することができる。
【００１７】
画像処理装置は、独立した装置であっても良いし、１つの装置を構成している内部ブロックであっても良い。
【発明の効果】
【００１８】
本技術の一側面によれば、仮想服を重畳した時の不自然な表現を防止することができる。
【図面の簡単な説明】
【００１９】
【図１】本技術が適用された仮想試着システムの一実施の形態の構成例を示す図である。
【図２】仮想試着システムのハードウェア構成例を示すブロック図である。
【図３】仮想試着システムの処理の概要を説明するフローチャートである。
【図４】キャリブレーション処理の詳細を説明するフローチャートである。
【図５】キャリブレーションポーズの仮想服の画像の例を示す図である。
【図６】関節位置推定処理の詳細を説明するフローチャートである。
【図７】関節位置推定処理の詳細を説明する図である。
【図８】仮想服を重畳する処理の詳細を説明するフローチャートである。
【図９】はみ出し領域を説明する図である。
【図１０】はみ出し領域を説明する図である。
【図１１】はみ出し領域調整処理の第２の処理を説明するフローチャートである。
【図１２】サイズ表現提示処理を説明するフローチャートである。
【図１３】触り心地表現提示処理を説明するフローチャートである。
【発明を実施するための形態】
【００２０】
［仮想試着システムの構成例］
図１は、本技術が適用された仮想試着システムの一実施の形態の構成例を示している。
【００２１】
図１において、仮想試着システム１は、AR（Augmented Reality：拡張現実）を洋服の試着に適用したシステムであり、ユーザを撮影し、ユーザが実際に着用している服を、仮想の服（以下、仮想服という。）に置き換えた画像を表示するシステムである。
【００２２】
仮想試着システム１は、ユーザを撮影する撮影部１１、撮影により得られた撮影画像に対し、仮想服を重畳させる処理を行う画像処理部１２、及び、仮想服に置き換えたユーザの画像を表示する表示部１３により構成される。
【００２３】
仮想試着システム１は、撮影部１１として撮影装置、画像処理部１２として画像処理装置、及び、表示部１３として表示装置のように、それぞれ異なる専用のハードウェア（装置）を組み合わせて構成してもよいが、１台の汎用のパーソナルコンピュータにより構成することもできる。
【００２４】
［コンピュータの構成例］
図２は、仮想試着システム１がパーソナルコンピュータで構成される場合の、仮想試着システム１のハードウェア構成例を示すブロック図である。なお、図２において、図１に対応する部分については同一の符号を付してある。
【００２５】
仮想試着システム１としてのパーソナルコンピュータにおいては、CPU（Central Processing Unit）１０１，ROM（Read Only Memory）１０２，及びRAM（Random Access Memory）１０３が、バス１０４により相互に接続されている。
【００２６】
バス１０４には、さらに、入出力インタフェース１０５が接続されている。入出力インタフェース１０５には、撮影部１１、入力部１０６、出力部１０７、記憶部１０８、通信部１０９、及びドライブ１１０が接続されている。
【００２７】
撮影部１１は、例えば、CCD(Charge Coupled Device)やCMOS（Complementary Mental Oxide Semiconductor）センサ等の撮像素子と、撮像素子の画素ごとの奥行き情報を取得可能なレンジスキャナにより構成される。撮影部１１は、認識対象としてのユーザを撮影し、撮影して得られた撮影画像とその各画素の奥行き情報（のデータ）を、入出力インタフェース１０５を介してCPU１０１等に供給する。
【００２８】
入力部１０６は、キーボード、マウス、マイクロホンなどよりなり、入力された情報を受け付け、入出力インタフェース１０５を介してCPU１０１等に供給する。出力部１０７は、液晶ディスプレイなどの表示部１３（図１）、音声を出力するスピーカなどよりなる。記憶部１０８は、ハードディスクや不揮発性のメモリなどよりなり、仮想試着システム１を実行するための各種のデータを記憶する。通信部１０９は、ネットワークインタフェースなどで構成され、ローカルエリアネットワーク、インターネットなどのネットワークに接続して所定の情報を授受する。ドライブ１１０は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブル記録媒体１１１を駆動する。
【００２９】
以上のように構成されるコンピュータでは、CPU１０１が、例えば、記憶部１０８に記憶されているプログラムを、入出力インタフェース１０５及びバス１０４を介して、RAM１０３にロードして実行することにより、以下に後述する仮想試着システム１の一連の処理が行われる。即ち、仮想試着システム１を実現するためのプログラムがRAM１０３にロードされて実行されることにより、以下に述べる各種の機能が実現される。CPU１０１は、少なくとも、ユーザを撮影した撮影画像に仮想服を重畳させる画像処理部と、重畳させた撮影画像を表示部１３に表示させる表示制御部として機能する。
【００３０】
図２のパーソナルコンピュータでは、プログラムは、リムーバブル記録媒体１１１をドライブ１１０に装着することにより、入出力インタフェース１０５を介して、記憶部１０８にインストールすることができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して、通信部１０９で受信し、記憶部１０８にインストールすることができる。その他、プログラムは、ROM１０２や記憶部１０８に、あらかじめインストールしておくことができる。
【００３１】
［仮想試着システム１の処理の概要］
次に、図３のフローチャートを参照して、仮想試着システム１の処理の概要について説明する。この処理は、例えば、キーボードやマウスなどを用いて、仮想試着システム１の処理の実行が指示されたとき開始される。
【００３２】
初めに、ステップＳ１において、仮想試着システム１は、認識対象であるユーザの関節間距離を算出するキャリブレーション処理を行う。
【００３３】
ステップＳ２において、仮想試着システム１は、キャリブレーション処理により得られた正確な関節間距離に基づいて、認識対象であるユーザの１以上の関節位置を検出（認識）するモーションキャプチャ処理を行う。
【００３４】
ステップＳ３において、仮想試着システム１は、モーションキャプチャ処理により得られたユーザの関節位置に基づいて、ユーザを撮影した撮影画像に、試着対象の仮想服（の画像）を重畳する処理を行う。処理結果である撮影画像に仮想服が重畳された画像は、表示部１３に表示される。
【００３５】
ステップＳ４において、仮想試着システム１は、終了操作がされたか否かを判定し、終了操作がされていないと判定された場合、処理はステップＳ２に戻る。これにより、ユーザの動作（各関節位置）が再び検出され、ユーザの動きに合わせて、撮影画像に仮想服を重畳して表示部１３に表示する処理が繰り返される。
【００３６】
一方、ステップＳ４で、終了操作がされたと判定された場合、処理は終了する。
【００３７】
次に、図３のステップＳ１ないしＳ３それぞれの処理の詳細について、順に説明する。
【００３８】
［キャリブレーション処理の詳細について］
まず、図３のステップＳ１の処理であるキャリブレーション処理の詳細について説明する。
【００３９】
図４は、図３のステップＳ１として実行されるキャリブレーション処理の詳細なフローチャートを示している。
【００４０】
キャリブレーション処理では、初めに、ステップＳ１１において、仮想試着システム１は、キャリブレーションポーズの仮想服（の画像）を表示部１３に表示させる。
【００４１】
図５は、ステップＳ１１において、仮想試着システム１によって表示部１３に表示される仮想服の画像の例を示している。
【００４２】
キャリブレーション処理の初期表示として、図５に示されるようなキャリブレーションポーズの仮想服が表示される。ここで、キャリブレーションポーズとは、モーションキャプチャ処理を実行するために必要な関節間の距離を算出するため、ユーザに行わせるポーズ（姿勢）であり、所定の関節を曲げた姿勢である。
【００４３】
このように、キャリブレーションポーズとした仮想服を表示することにより、ユーザに、キャリブレーションポーズを取るように暗に促すことができ、図５の表示を見たユーザは、仮想服に合わせる姿勢を作る。なお、「服と同じポーズを取ってください」の文字を仮想服と同時に表示したり、音声メッセージを出力するなどして、キャリブレーションポーズを取ることをより明確に促す情報の提示を行うようにしてもよい。
【００４４】
図５の例では、上半身の腕の関節を曲げた姿勢の仮想服が表示されている。なお、脚部の関節間距離については、図５に基づいて算出される上半身の関節間距離、即ち、上半身の体型から推定することができる。また、仮想服がズボンやスカートなど下半身用の服である場合には、脚部の関節を曲げた姿勢の下半身用のキャリブレーションポーズの仮想服を表示させるようにしてもよい。
【００４５】
ステップＳ１１でキャリブレーションポーズの仮想服が表示された後、ステップＳ１２において、仮想試着システム１は、撮影部１１で撮影されたユーザの撮影画像を取得する。
【００４６】
ステップＳ１３において、仮想試着システム１は、ユーザの概略の関節位置を推定する関節位置推定処理を実行する。この処理の詳細は、図６を参照して後述するが、この処理により、ユーザの概略の関節位置が推定される。この処理で推定されたユーザの第ｎ番目（ｎ＝１，２，・・・，Ｎ）の関節位置が関節位置ベクトルｐｎ＝（ｐｎｘ，ｐｎｙ，ｐｎｚ）で表されるものとする。
【００４７】
ステップＳ１４において、仮想試着システム１は、推定されたユーザの関節位置と、対応する仮想服の関節位置どうしの誤差を示す関節間誤差ｄを算出する。関節間誤差ｄは、例えば、ｄ＝Σ｜ｐｎ−ｃｎ｜により算出することができ、ｃｎは、関節位置ベクトルｐｎに対応する仮想服の関節位置ベクトルであり、Σは、第１番目から第Ｎ番目までの総和を表す。
【００４８】
ステップＳ１５において、仮想試着システム１は、算出された関節間誤差ｄが予め設定された閾値th1未満であるかを判定する。そして、ステップＳ１５で、算出された関節間誤差ｄが閾値th1以上であると判定された場合、処理はステップＳ１２に戻り、関節間誤差ｄを算出する処理が再度実行される。
【００４９】
一方、ステップＳ１５で、算出された関節間誤差ｄが閾値th1未満であると判定された場合、処理はステップＳ１６に進み、仮想試着システム１は、推定された各関節位置に基づいて、ユーザの関節間距離を推定する。関節間距離を推定する処理については、図６を参照して説明する関節位置推定処理についての説明の後、さらに説明する。ユーザの関節間距離が推定されると、キャリブレーション処理は終了する。
【００５０】
［関節位置推定処理の詳細処理］
図６のフローチャートを参照して、図４のステップＳ１３として実行される関節位置推定処理の詳細について説明する。なお、図６の各ステップの説明に際しては、図７を適宜参照して説明する。
【００５１】
初めに、ステップＳ２１において、仮想試着システム１は、上述したステップＳ１２で取得されたユーザの撮影画像から、背景差分などの手法を用いて、ユーザ領域を抽出する。
【００５２】
図７Aは、ステップＳ１２で取得されたユーザの撮影画像の例を示しており、図７Bは、その撮影画像から抽出されたユーザ領域（白抜きの人型の領域）の例を示している。ステップＳ２１におけるユーザ領域の抽出では、ユーザは、仮想服に合わせた位置でキャリブレーションポーズを取ることが想定されるので、ユーザ領域を検索する領域を、仮想服を表示させている領域に基づいてある程度限定することができる。換言すれば、撮影画像の全領域に対してユーザ領域を検索する処理を行う必要はない。従って、キャリブレーションポーズの仮想服に合わせた姿勢をユーザに取らせることは、ユーザ領域の検索処理を行う領域を限定することができ、計算コストを削減し、処理の高速化も可能となる。
【００５３】
ステップＳ２２において、仮想試着システム１は、抽出されたユーザ領域に基づいて、記憶部１０８に予め記憶されている辞書画像から、ユーザの姿勢と類似の姿勢画像を検索する。
【００５４】
即ち、記憶部１０８には、体型などがさまざまな人物によるキャリブレーションポーズを撮影した画像である多数の姿勢画像が辞書画像として格納されている。この姿勢画像には、その姿勢が撮影されたときのモデルの各関節位置も対応づけて記憶されている。
【００５５】
図７Cは、記憶部１０８に記憶されている辞書画像の例を示しており、図中の白丸（○）で示される位置が関節位置を示している。ステップＳ２２では、ユーザの姿勢と類似の姿勢画像が、パターンマッチング法などにより、辞書画像から検索される。
【００５６】
ステップＳ２３において、仮想試着システム１は、検索の結果得られた姿勢画像に対応付けて記憶されているモデルの各関節位置を記憶部１０８から取得し、その各関節位置が、ユーザ領域の中心にくるように、各関節位置を２次元的に移動させる。２次元的に移動させるとは、モデルの関節位置ベクトルｐ’ｎ＝（ｐ’ｎｘ，ｐ’ｎｙ，ｐ’ｎｚ）のｘ座標とｙ座標のみを移動させることを意味する。
【００５７】
図７Dは、白丸（○）で示される姿勢画像の関節位置が、ユーザ領域に対応して、斜線を付した丸（○）で示される関節位置に移動される様子を示している。
【００５８】
ステップＳ２４において、仮想試着システム１は、所定の関節間距離を拘束条件として、２次元の関節位置から、３次元の関節位置を計算（復元）する。ステップＳ２４では、成人一般の平均値の関節間距離を拘束条件として、２次元の関節位置から、３次元の関節位置が計算される。なお、この処理はキャリブレーション処理の一部であり、キャリブレーションポーズ中は、ユーザが撮影部１１に対して真正面を向いているため、奥行き情報はすべて等しいとみなして、３次元の関節位置を復元することができる。これにより、図７Eに示されるような３次元の関節位置（ボーン）が得られる。
【００５９】
以上のようにして、ユーザの概略の関節位置が推定され、推定された概略の関節位置に基づいて関節間誤差ｄが算出され、関節間誤差ｄが閾値th1未満となると、図４のステップＳ１６においてユーザの関節間距離が推定される。
【００６０】
図４のステップＳ１６において、関節間距離を推定する方法について説明する。キャリブレーションポーズ中は、ユーザが撮影部１１に対して真正面を向いているため、奥行き情報はすべて等しいとみなすことができる。そのため、関節間誤差ｄが閾値th1未満と判定されたときの２次元の関節位置から関節間距離を求め、それを３次元の関節間距離とすることができる。
【００６１】
［モーションキャプチャ処理の詳細について］
次に、図３のステップＳ２の処理であるモーションキャプチャ処理の詳細について説明する。
【００６２】
モーションキャプチャ処理とは、認識対象であるユーザの１以上の関節位置を検出（認識）する処理であるので、図３のステップＳ２の処理は、基本的に、撮影部１１により撮影されたユーザの撮影画像に対して、図６を参照して説明した関節位置推定処理を実行する処理となる。
【００６３】
ただし、キャリブレーション処理の一部としての関節位置推定処理と、キャリブレーション処理後のモーションキャプチャ処理としての関節位置推定処理とでは、次の２点が異なる。
【００６４】
１つ目の相違点は、ステップＳ２３で検索される姿勢画像が異なる点である。即ち、キャリブレーション処理中は、ユーザがキャリブレーションポーズを取っていることが前提であるので、記憶部１０８の辞書画像から検索される姿勢画像はキャリブレーションポーズの姿勢画像に限定して検索することができる。一方、キャリブレーション処理後のモーションキャプチャ処理では、ユーザがとる姿勢は様々であるので、記憶部１０８内の検索対象の姿勢画像は様々な姿勢の画像となる。
【００６５】
２つ目の相違点は、ステップＳ２４で３次元の関節位置を計算する際の拘束条件が異なる点である。即ち、キャリブレーション処理では、成人一般の平均値の関節間距離を拘束条件として３次元の関節位置が計算される。一方、キャリブレーション処理後のモーションキャプチャ処理では、キャリブレーション処理（のステップＳ１６の処理）により得られたユーザの関節間距離を拘束条件として３次元の関節位置が計算される。
【００６６】
なお、以下では、モーションキャプチャ処理により得られたユーザの各関節位置を示す情報を総称して骨格情報ともいう。
【００６７】
［仮想服を重畳する処理の詳細について］
次に、図３のステップＳ３の処理である仮想服を重畳する処理の詳細について説明する。
【００６８】
図８は、図３のステップＳ３として実行される、仮想服を重畳する処理の詳細なフローチャートを示している。
【００６９】
この処理では、モーションキャプチャ処理で撮影部１１により撮影されたユーザの撮影画像であって、ユーザの３次元の関節位置が計算された撮影画像に対して、仮想服を重畳する処理が行われる。
【００７０】
初めに、ステップＳ４１において、仮想試着システム１は、ユーザの撮影画像から抽出されたユーザ領域の画像に対して、上半身の服領域を特定する。例えば、仮想試着システム１は、ユーザ領域の上半身側で、似ている色情報の画素の集まりの範囲を抽出するGraph Cut法などの手法を用いて、上半身の服領域を特定することができる。
【００７１】
ステップＳ４２において、仮想試着システム１は、ユーザの骨格情報に基づいて、試着対象の仮想服を重畳させる撮影画像上の位置を特定し、ユーザの撮影画像に、仮想服を重畳させる。試着対象の仮想服は、所定の順番で決められているか、ユーザの選択操作により決められているものとする。仮想服のデータは、記憶部１０８に予め記憶されており、仮想服の領域は既知であるので、ユーザの骨格情報が分かれば、仮想服を重畳させる位置を特定することができる。
【００７２】
ステップＳ４３において、仮想試着システム１は、特定されたユーザの上半身の服領域（以下、上半身服領域という。）と、仮想服を重畳させた重畳領域とを比較して、上半身服領域が仮想服の重畳領域からはみ出している領域であるはみ出し領域を検索する。
【００７３】
例えば、図９において、実線で囲まれる服の領域は、仮想服の重畳領域を示し、破線で囲まれる服の領域は、ユーザの上半身服領域を示している。そして、図９において斜線を付して示される、実線で囲まれる服の領域より外側、かつ、破線で囲まれる服の領域より内側の領域が、はみ出し領域となる。
【００７４】
ステップＳ４４において、仮想試着システム１は、はみ出し領域が存在するかを判定する。ステップＳ４４で、はみ出し領域が存在しないと判定された場合、処理は、後述するステップＳ４５をスキップして、ステップＳ４６に進む。
【００７５】
一方、ステップＳ４４で、はみ出し領域が存在すると判定された場合、処理はステップＳ４５に進み、仮想試着システム１は、はみ出し領域を調整するはみ出し調整処理を行う。
【００７６】
はみ出し領域が存在する場合には、仮想服の外側に、ユーザが実際に着用している服の一部が見えることになり、不自然な表現となる。そのため、ステップＳ４５では、仮想服を拡げる第１の処理か、または、上半身服領域を狭める第２の処理により、上半身服領域と仮想服の重畳領域とを一致させる処理が、はみ出し調整処理として行われる。より具体的に言えば、第１の処理は、仮想服の重畳領域がユーザの上半身服領域を覆うまで仮想服を外周方向に所定画素拡大して、はみ出し領域の上半身服領域を仮想服に置き換える処理であり、第２の処理は、はみ出し領域の上半身服領域を、背景画像などの所定の画像に置き換える処理である。
【００７７】
ステップＳ４６において、仮想試着システム１は、ユーザの撮影画像に、仮想服を重畳させた重畳画像を表示部１３に表示させ、仮想服を重畳する処理を終了して、図３に戻る。
【００７８】
［はみ出し領域調整処理の詳細処理］
図８のステップＳ４５で行われる、はみ出し領域調整処理について説明する。
【００７９】
上述したように、ステップＳ４５では、仮想服の重畳領域がユーザの上半身服領域を覆うまで仮想服を外周方向に所定画素拡大して、はみ出し領域の上半身服領域を仮想服に置き換える第１の処理か、または、はみ出し領域の上半身服領域を、背景画像などの所定の画像に置き換える第２の処理のいずれかが行われる。第１の処理と第２の処理のどちらを行うかは、設定条件として予め決定されるか、または、ユーザ若しくは店員等の操作によって、その都度、決定することができる。例えば、ユーザが仮想服のサイズを確認したい場合には、仮想服のサイズ（領域）を変更する第１の処理は不適であるので、第２の処理が選択され、実行される。
【００８０】
第２の処理が選択され、実行される場合、図１０の丸で囲んで示した、襟、裾、袖の領域を含むはみ出し領域を一律に、背景画像に置き換えると、例えば、首と仮想服との間が背景画像で分離されたような不自然な表現（画像）となる。
【００８１】
そこで、仮想試着システム１は、第２の処理を実行する場合、はみ出し領域を、背景画像で置き換える領域と、背景画像以外の画像で置き換える領域とに分類し、分類結果に応じて背景画像またはそれ以外の画像で置き換えることにより、はみ出し領域のユーザの服の画像を狭める処理を行う。襟、裾、袖の部分に相当する、背景画像以外の画像で置き換える領域は特別処理領域として領域検出部としてのCPU１０１により検出される。
【００８２】
図１１は、はみ出し領域調整処理の第２の処理のフローチャートを示している。
【００８３】
この処理では、初めに、ステップＳ６１において、仮想試着システム１は、はみ出し領域内の所定の画素を注目画素に設定する。
【００８４】
ステップＳ６２において、仮想試着システム１は、注目画素が特別処理領域であるか、即ち、襟、裾、または袖の領域であるかを判定する。襟、裾、または袖の領域であるか否かは、ユーザの骨格情報に基づいて判定することができる。仮想服が一定の形状である場合には、仮想服の形状から判定してもよい。
【００８５】
ステップＳ６２で、注目画素が特別処理領域ではないと判定された場合、処理はステップＳ６３に進み、仮想試着システム１は、注目画素の画素値を、背景画像の対応する画素の画素値に置き換える。背景画像は、予め撮影され、記憶部１０８に記憶されている。
【００８６】
一方、ステップＳ６２で、注目画素が特別処理領域であると判定された場合、処理はステップＳ６４に進み、仮想試着システム１は、注目画素の画素値を、注目画素周辺の撮影画像の画素値に置き換える。
【００８７】
より具体的には、仮想試着システム１は、注目画素が襟の領域である場合には、首の画像を襟の領域（図１０で下方向）に伸ばすように、注目画素の画素値を首の領域の画素値で置き換える。また、注目画素が裾の領域である場合には、仮想試着システム１は、撮影画像のユーザのズボンまたはスカートなどの下半身の服の画像を、裾の領域（図１０で上方向）に伸ばすように、注目画素の画素値を下半身の服の領域の画素値で置き換える。さらに、注目画素が袖の領域である場合には、仮想試着システム１は、手首の画像を袖の領域に伸ばすように、注目画素の画素値を手首の領域の画素値で置き換える。どの方向に伸ばすかについても、骨格情報から決定することができる。
【００８８】
このように、注目画素が特別処理領域である場合に、背景画像ではなく、注目画素周辺の撮影画像の画素値に置き換えることで、仮想服を重畳した時の不自然な表現（重畳表示）を防止することができる。
【００８９】
ステップＳ６３またはＳ６４の後、ステップＳ６５において、仮想試着システム１は、はみ出し領域内の全ての画素を注目画素としたかを判定する。
【００９０】
ステップＳ６５で、はみ出し領域内の全ての画素をまだ注目画素としていないと判定された場合、処理はステップＳ６１に戻り、それ以降の処理が繰り返される。即ち、はみ出し領域内のまだ注目画素とされてない他の画素が注目画素とされ、注目画素の画素値を所定の画像の画素値に置き換える処理が行われる。
【００９１】
一方、ステップＳ６５で、はみ出し領域内の全ての画素を注目画素としたと判定された場合、はみ出し領域調整処理は終了し、処理は図８に戻される。
【００９２】
以上、説明したように、仮想試着システム１は、キャリブレーション処理において、キャリブレーションポーズの仮想服を初期表示として表示させる。これにより、ユーザに、キャリブレーションポーズを取るように暗に促すことができ、認識対象であるユーザの動きに応じた動作を行わせる操作対象としての仮想服が、キャリブレーション終了後に、突然、キャリブレーションポーズに変化する、というような不自然な動作を防止することができる。
【００９３】
なお、上述した例では、認識対象であるユーザの動きに応じた動作を行わせる操作対象が仮想服である例について説明したが、操作対象としてはCGで作成したキャラクタなども一般的であり、操作対象は人型の仮想オブジェクトとされる。
【００９４】
また、仮想試着システム１は、ユーザの撮影画像に仮想服を重畳させて表示する際に、はみ出し領域が存在するとき、はみ出し領域の画像を、仮想服の画像、背景画像、ユーザの撮影画像などの所定の画像に置き換える処理を行う。これにより、仮想服を重畳させたときに発生し得る不自然な表現を防止することができる。
【００９５】
［仮想試着システム１の応用例］
次に、上述した仮想試着システム１の応用例について説明する。
【００９６】
現実世界において実際に洋服を試着した場合には、洋服のサイズと自分の体格との適合度合いや、生地の厚みや触り心地など、触覚が重要な役割を果たすことがある。しかし、ARのシステムでは、触覚を現実と同様にユーザに提示することは難しい。そこで、以下では、ユーザが実際に洋服を試着した場合の触覚の情報を、視覚または聴覚の情報に変換して提示する処理を付加した仮想試着システム１の例を示す。
【００９７】
［サイズ表現提示の例］
初めに、「腕を曲げると肘の部分が窮屈」など、服を試着したときに触覚で感じる（特に局所的な）サイズに対する感覚を表現するサイズ表現提示処理について説明する。
【００９８】
図１２は、サイズ表現提示処理のフローチャートを示している。
【００９９】
この処理では、初めに、ステップＳ８１において、仮想試着システム１は、ユーザを撮影した撮影画像を取得する。
【０１００】
ステップＳ８２において、仮想試着システム１は、Shape from Silhouette法やデプスカメラを用いる手法などにより、ユーザの体格形状（３次元形状）を、撮影画像から復元する。
【０１０１】
ステップＳ８３において、仮想試着システム１は、撮影画像または復元されたユーザの体格形状から、ユーザの骨格情報を生成する。
【０１０２】
ステップＳ８４において、仮想試着システム１は、生成したユーザの骨格情報に基づいて、重畳させる仮想服を変形させる。即ち、仮想服がユーザの動き（各関節位置）に合わせて変形される。
【０１０３】
ステップＳ８５において、仮想試着システム１は、ユーザの体格形状に対する仮想服の窮屈度を算出する。窮屈度は、例えば、肩、肘など、仮想服に予め設定した１以上の領域に対して、３次元形状どうしの誤差を計算するアルゴリズムであるICP(Iterative Closest Point)アルゴリズム等を用いて計算することができる。窮屈度は、例えば、仮想服とユーザの体格形状との差（誤差）が少ないほど、小さくなるように設定される。なお、仮想服の３次元形状は、予め入力されており、既知である。
【０１０４】
ステップＳ８６において、仮想試着システム１は、窮屈度が所定の閾値Th2未満の領域があるかを判定する。
【０１０５】
ステップＳ８６で、窮屈度が所定の閾値Th2未満の領域があると判定された場合、処理はステップＳ８７に進み、仮想試着システム１は、重畳させる仮想服に、窮屈度に応じた表現を適用し、ユーザの撮影画像に重畳表示させる。具体的には、窮屈度が閾値Th2未満の領域に対して、仮想試着システム１は、仮想服が裂ける、生地が伸びて薄くなる（生地の色が薄くなる）、ビリビリ、などの仮想服が破ける音を出力するなどを行う。
【０１０６】
一方、ステップＳ８６で、窮屈度が所定の閾値Th2未満の領域がないと判定された場合、処理はステップＳ８８に進み、仮想試着システム１は、窮屈度に応じた表現を適用せずにユーザの撮影画像に、ユーザの動きに変形させた仮想服を重畳表示させる。
【０１０７】
以上の処理を行うことにより、服を試着したときに触覚で感じるサイズに対する感覚を、視覚や聴覚で表現してユーザに提示することができる。
【０１０８】
［触り心地表現提示の例］
次に、生地を触ったときの触り心地に対する感覚を表現する触り心地表現提示処理について説明する。この場合、記憶部１０８内の試着対象の仮想服のデータには、その触り心地を示す指標がメタデータとして対応付けて記憶される。触り心地を示す指標としては、例えば、仮想服の生地の摩擦係数や表面の凹凸の標準偏差などを採用することができる。
【０１０９】
図１３は、触り心地表現提示処理のフローチャートを示している。
【０１１０】
ステップＳ１０１乃至Ｓ１０４の処理は、図１２のステップＳ８１乃至Ｓ８４の処理と、それぞれ同様であるので、その説明は省略する。
【０１１１】
ステップＳ１０５において、仮想試着システム１は、ユーザの手の位置を検出する。ユーザの手の位置は、生成した骨格情報から求めてもよいし、撮影画像から手の形状を認識して求めてもよい。
【０１１２】
ステップＳ１０６において、仮想試着システム１は、ユーザの手が動いているかを判定する。
【０１１３】
ステップＳ１０６で、ユーザの手が動いていないと判定された場合、処理はステップＳ１０５に戻る。
【０１１４】
一方、ステップＳ１０６で、ユーザの手が動いていると判定された場合、処理はステップＳ１０７に進み、ユーザの手が重畳させる仮想服の領域にあるかを判定する。
【０１１５】
ステップＳ１０７で、ユーザの手が重畳させる仮想服の領域にはないと判定された場合、処理はステップＳ１０５に戻る。
【０１１６】
一方、ステップＳ１０７で、ユーザの手が重畳させる仮想服の領域にあると判定された場合、処理はステップＳ１０８に進み、仮想試着システム１は、仮想服の触り心地を示す指標に基づいて、重畳させる仮想服に、触り心地を示す表現を適用し、重畳表示させる。
【０１１７】
例えば、仮想試着システム１は、手で仮想服をこすった回数に応じて毛玉を付加した仮想服を描画する、キュキュ、シャカシャカなど、生地に応じて音を鳴らすなどの処理を、仮想服の触り心地を示す指標に基づいて行う。描画する毛玉の数や大きさ、音を鳴らすときの周波数などが、仮想服の触り心地を示す指標に応じて変更される。
【０１１８】
なお、必ずしても手で仮想服をこすった場合に限定されず、仮想服が所定の物体と接触したり、仮想服の生地どうしが接触したときにも、同様の触り心地を示す表現を適用することができる。
【０１１９】
上述した図１２と図１３の処理は、単独の処理フローとして説明したが、上述した図３等の処理ステップに、適宜、追加挿入して実行することができる。
【０１２０】
［硬さ表現提示の例］
次に、生地の厚さなどに起因する服の硬さに対する感覚を表現する硬さ表現提示処理について説明する。
【０１２１】
この場合、記憶部１０８内の試着対象の仮想服のデータには、その生地の硬さを示す指標がメタデータとして対応付けて記憶される。生地の硬さを示す指標としては、生地の厚さや、生地の引っ張り強度などを採用することができる。
【０１２２】
そして、硬さ表現提示処理では、仮想試着システム１は、ユーザの動きに応じて、重畳させる仮想服を変形させる際に、生地の硬さを示す指標に基づいて、仮想服をなびかせる（ひらひらさせる）ようにすることができる。仮想服をなびかせる度合いは、その仮想服の生地の硬さを示す指標に応じて変更される。これにより、本来触覚である生地の硬さを、視覚的に表現して提示することができる。
【０１２３】
［暖かさ表現提示の例］
服の素材や厚みによって、服を着用したときの暖かさは変化する。そのような暖かさを可視化して視覚で表現する暖かさ表現提示処理について説明する。
【０１２４】
この場合、記憶部１０８内の試着対象の仮想服のデータには、その服を着用したときの暖かさを示す指標がメタデータとして対応付けて記憶される。暖かさを示す指標としては、生地の素材（綿、ウールなど）に応じて設定した値を採用することができる。
【０１２５】
そして、暖かさ表現提示処理では、仮想試着システム１は、試着される仮想服の暖かさを示す指標に基づいて、背景画像を、ハワイなどの南国の画像など季節感のあるものに差し替える、背景画像の色調を暖色系もしくは寒色系に変更する、陽炎のように空気に歪みを持たせたエフェクトをかける等の処理を、重畳表示させた画像に対して行う。
【０１２６】
また、ユーザを撮影している場所の気温や、ユーザの体温を温度センサで測定し、測定された温度を、暖かさを示す指標として用いて、重畳表示させた画像に、上述したような画像の変更やエフェクトを施してもよい。あるいは、仮想服を試着した場合のユーザの体感温度を算出し、測定されたユーザの現在の体温との差分を、暖かさを示す指標として用いて、上述したような画像の変更やエフェクトを施してもよい。
【０１２７】
さらには、生地の素材（綿、ウールなど）に応じて設定した値、撮影場所の気温、ユーザの体温などを所定の重みで組み合わせた値を、暖かさを示す指標として用いて、上述したような画像の変更やエフェクトを施してもよい。
【０１２８】
本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる場合はもちろん、必ずしも時系列的に処理されなくとも、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで実行されてもよい。
【０１２９】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０１３０】
本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０１３１】
１  仮想試着システム，  １１  撮影部，  １２  画像処理部，  １３  表示部，  １０１  CPU，  １０２  ROM，  １０３  RAM，  １０７  出力部，  １０８  記憶部
【図１】
0006008025.tif 000002
【図２】
0006008025.tif 000003
【図３】
0006008025.tif 000004
【図４】
0006008025.tif 000005
【図５】
0006008025.tif 000006
【図６】
0006008025.tif 000007
【図７】
0006008025.tif 000008
【図８】
0006008025.tif 000009
【図９】
0006008025.tif 000010
【図１０】
0006008025.tif 000011
【図１１】
0006008025.tif 000012
【図１２】
0006008025.tif 000013
【図１３】
0006008025.tif 000014