説明

画像処理装置、画像処理方法、およびプログラム

【課題】キャリブレーション処理を、ユーザに自然に行わせることができるようにする。
【解決手段】仮想試着システムは、ユーザを撮影し、ユーザが現実に着用している服を、仮想服に置き換えた画像を表示するシステムである。仮想試着システムは、認識対象のユーザに対応して操作される操作対象である人型の仮想オブジェクト画像を、モーションキャプチャに必要な情報を抽出するためのポーズで表示させる。本技術は、例えば、AR(Augmented Reality:拡張現実)を洋服の試着に応用した画像処理を行う画像処理装置に適用できる。

【発明の詳細な説明】
【技術分野】
【0001】
本技術は、画像処理装置、画像処理方法、およびプログラムに関し、特に、キャリブレーション処理を、ユーザに自然に行わせることができるようにする画像処理装置、画像処理方法、およびプログラムに関する。
【背景技術】
【0002】
AR(Augmented Reality)と呼ばれ、拡張現実と訳される、現実世界を、コンピュータを使って拡張する技術があり、ARを洋服の試着に適用した例がある。具体的には、カメラで撮影されたユーザの画像のうち、ユーザが仮想の服を着用しているように、ユーザの着用している服の部分を、仮想の服に置き換え(ユーザの画像に仮想の服を重畳する)技術である。
【0003】
このような洋服の試着のARでは、ユーザの体(の画像)に仮想の服をうまく重畳させるために、加速度センサ、地磁気センサ、カメラ、レンジスキャナなどの各種のセンサを用いて、ユーザの動作を検出するモーションキャプチャ技術が採用される。ユーザの動作の検出とは、具体的には、認識対象であるユーザの各関節の位置(の移動)を連続的に取得することをいう。
【0004】
モーションキャプチャ技術には、マーカありの手法と、マーカなしの手法がある。
【0005】
マーカありの手法においては、マーカと呼ばれる検出容易な印が、ユーザの関節部に取り付けられる。そして、マーカの位置を検出し、取得することで、認識対象であるユーザの関節位置を知ることができる。
【0006】
一方、マーカなしの手法においては、各種のセンサから得られた値を処理することで、認識対象であるユーザの関節位置が推定される。例えば、被写体の奥行き方向の距離がわかる3次元計測カメラを用いて撮影されたデプス画像(奥行き情報を示す画像)から、ユーザの姿勢(関節位置)を認識するアルゴリズムがある(例えば、非特許文献1参照)。
【0007】
マーカなしの手法において、ユーザの関節位置を正確に推定するためには、関節間の距離が必要となる。そこで、一般に、モーションキャプチャを開始する前には、各種のセンサから得られた値に基づいて、関節間の距離を算出するキャリブレーション処理が行われる。なお、メジャーなどを用いて関節間の距離が事前に計測されている場合は、キャリブレーション処理は省略される。
【0008】
キャリブレーション処理では、推定されるユーザの関節位置が3つ以上同一直線上に並んでいる場合には、原理的に関節間の距離を算出できないため、ユーザには、キャリブレーションポーズと呼ばれる、関節を曲げた特定の姿勢を取ってもらう必要があった。
【先行技術文献】
【非特許文献】
【0009】
【非特許文献1】“Real-Time Human Pose Recognition in Parts from Single Depth Images”,Microsoft Research、[online]、[平成23年5月23日検索]、インターネット<URL: http://research.microsoft.com/pubs/145347/BodyPartRecognition.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、従来のキャリブレーション処理では、次のような問題があった。即ち、ユーザにとっては、キャリブレーションポーズを取る意味がわからないため、無意味なポーズを取らされている印象をユーザに与えることがあった。
【0011】
また例えば、ユーザの動きに合わせて、CG(Computer Graphics)のキャラクタを動かすようなモーションキャプチャ処理を実行する場合、キャリブレーション処理が終了したときからキャラクタの同期が開始するため、初期表示として標準姿勢で描かれているキャラクタが、キャリブレーション処理が終了した途端に、突然、キャリブレーションポーズに変化する、というようになり、キャラクタの動作が不自然になっていた。
【0012】
本技術は、このような状況に鑑みてなされたものであり、キャリブレーション処理を、ユーザに自然に行わせることができるようにするものである。
【課題を解決するための手段】
【0013】
本技術の一側面の画像処理装置は、認識対象の人間に対応して操作される操作対象である人型の仮想オブジェクト画像を、モーションキャプチャに必要な情報を抽出するためのポーズで表示させる表示制御部を備える。
【0014】
本技術の一側面の画像処理方法は、認識対象の人間に対応して操作される操作対象である人型の仮想オブジェクト画像を、モーションキャプチャに必要な情報を抽出するためのポーズで表示させるステップを含む。
【0015】
本技術の一側面のプログラムは、コンピュータに、認識対象の人間に対応して操作される操作対象である人型の仮想オブジェクト画像を、モーションキャプチャに必要な情報を抽出するためのポーズで表示させる処理を実行させるためのものである。
【0016】
本技術の一側面においては、認識対象の人間に対応して操作される操作対象である人型の仮想オブジェクト画像が、モーションキャプチャに必要な情報を抽出するためのポーズで表示される。
【0017】
なお、プログラムは、伝送媒体を介して伝送することにより、又は、記録媒体に記録して、提供することができる。
【0018】
画像処理装置は、独立した装置であっても良いし、1つの装置を構成している内部ブロックであっても良い。
【発明の効果】
【0019】
本技術の一側面によれば、キャリブレーション処理を、ユーザに自然に行わせることができる。
【図面の簡単な説明】
【0020】
【図1】本技術が適用された仮想試着システムの一実施の形態の構成例を示す図である。
【図2】仮想試着システムのハードウェア構成例を示すブロック図である。
【図3】仮想試着システムの処理の概要を説明するフローチャートである。
【図4】キャリブレーション処理の詳細を説明するフローチャートである。
【図5】キャリブレーションポーズの仮想服の画像の例を示す図である。
【図6】関節位置推定処理の詳細を説明するフローチャートである。
【図7】関節位置推定処理の詳細を説明する図である。
【図8】仮想服を重畳する処理の詳細を説明するフローチャートである。
【図9】はみ出し領域を説明する図である。
【図10】はみ出し領域を説明する図である。
【図11】はみ出し領域調整処理の第2の処理を説明するフローチャートである。
【図12】サイズ表現提示処理を説明するフローチャートである。
【図13】触り心地表現提示処理を説明するフローチャートである。
【発明を実施するための形態】
【0021】
[仮想試着システムの構成例]
図1は、本技術が適用された仮想試着システムの一実施の形態の構成例を示している。
【0022】
図1において、仮想試着システム1は、AR(Augmented Reality:拡張現実)を洋服の試着に適用したシステムであり、ユーザを撮影し、ユーザが実際に着用している服を、仮想の服(以下、仮想服という。)に置き換えた画像を表示するシステムである。
【0023】
仮想試着システム1は、ユーザを撮影する撮影部11、撮影により得られた撮影画像に対し、仮想服を重畳させる処理を行う画像処理部12、及び、仮想服に置き換えたユーザの画像を表示する表示部13により構成される。
【0024】
仮想試着システム1は、撮影部11として撮影装置、画像処理部12として画像処理装置、及び、表示部13として表示装置のように、それぞれ異なる専用のハードウェア(装置)を組み合わせて構成してもよいが、1台の汎用のパーソナルコンピュータにより構成することもできる。
【0025】
[コンピュータの構成例]
図2は、仮想試着システム1がパーソナルコンピュータで構成される場合の、仮想試着システム1のハードウェア構成例を示すブロック図である。なお、図2において、図1に対応する部分については同一の符号を付してある。
【0026】
仮想試着システム1としてのパーソナルコンピュータにおいては、CPU(Central Processing Unit)101,ROM(Read Only Memory)102,及びRAM(Random Access Memory)103が、バス104により相互に接続されている。
【0027】
バス104には、さらに、入出力インタフェース105が接続されている。入出力インタフェース105には、撮影部11、入力部106、出力部107、記憶部108、通信部109、及びドライブ110が接続されている。
【0028】
撮影部11は、例えば、CCD(Charge Coupled Device)やCMOS(Complementary Mental Oxide Semiconductor)センサ等の撮像素子と、撮像素子の画素ごとの奥行き情報を取得可能なレンジスキャナにより構成される。撮影部11は、認識対象としてのユーザを撮影し、撮影して得られた撮影画像とその各画素の奥行き情報(のデータ)を、入出力インタフェース105を介してCPU101等に供給する。
【0029】
入力部106は、キーボード、マウス、マイクロホンなどよりなり、入力された情報を受け付け、入出力インタフェース105を介してCPU101等に供給する。出力部107は、液晶ディスプレイなどの表示部13(図1)、音声を出力するスピーカなどよりなる。記憶部108は、ハードディスクや不揮発性のメモリなどよりなり、仮想試着システム1を実行するための各種のデータを記憶する。通信部109は、ネットワークインタフェースなどで構成され、ローカルエリアネットワーク、インターネットなどのネットワークに接続して所定の情報を授受する。ドライブ110は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブル記録媒体111を駆動する。
【0030】
以上のように構成されるコンピュータでは、CPU101が、例えば、記憶部108に記憶されているプログラムを、入出力インタフェース105及びバス104を介して、RAM103にロードして実行することにより、以下に後述する仮想試着システム1の一連の処理が行われる。即ち、仮想試着システム1を実現するためのプログラムがRAM103にロードされて実行されることにより、以下に述べる各種の機能が実現される。CPU101は、少なくとも、ユーザを撮影した撮影画像に仮想服を重畳させる画像処理部と、重畳させた撮影画像を表示部13に表示させる表示制御部として機能する。
【0031】
図2のパーソナルコンピュータでは、プログラムは、リムーバブル記録媒体111をドライブ110に装着することにより、入出力インタフェース105を介して、記憶部108にインストールすることができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して、通信部109で受信し、記憶部108にインストールすることができる。その他、プログラムは、ROM102や記憶部108に、あらかじめインストールしておくことができる。
【0032】
[仮想試着システム1の処理の概要]
次に、図3のフローチャートを参照して、仮想試着システム1の処理の概要について説明する。この処理は、例えば、キーボードやマウスなどを用いて、仮想試着システム1の処理の実行が指示されたとき開始される。
【0033】
初めに、ステップS1において、仮想試着システム1は、認識対象であるユーザの関節間距離を算出するキャリブレーション処理を行う。
【0034】
ステップS2において、仮想試着システム1は、キャリブレーション処理により得られた正確な関節間距離に基づいて、認識対象であるユーザの1以上の関節位置を検出(認識)するモーションキャプチャ処理を行う。
【0035】
ステップS3において、仮想試着システム1は、モーションキャプチャ処理により得られたユーザの関節位置に基づいて、ユーザを撮影した撮影画像に、試着対象の仮想服(の画像)を重畳する処理を行う。処理結果である撮影画像に仮想服が重畳された画像は、表示部13に表示される。
【0036】
ステップS4において、仮想試着システム1は、終了操作がされたか否かを判定し、終了操作がされていないと判定された場合、処理はステップS2に戻る。これにより、ユーザの動作(各関節位置)が再び検出され、ユーザの動きに合わせて、撮影画像に仮想服を重畳して表示部13に表示する処理が繰り返される。
【0037】
一方、ステップS4で、終了操作がされたと判定された場合、処理は終了する。
【0038】
次に、図3のステップS1ないしS3それぞれの処理の詳細について、順に説明する。
【0039】
[キャリブレーション処理の詳細について]
まず、図3のステップS1の処理であるキャリブレーション処理の詳細について説明する。
【0040】
図4は、図3のステップS1として実行されるキャリブレーション処理の詳細なフローチャートを示している。
【0041】
キャリブレーション処理では、初めに、ステップS11において、仮想試着システム1は、キャリブレーションポーズの仮想服(の画像)を表示部13に表示させる。
【0042】
図5は、ステップS11において、仮想試着システム1によって表示部13に表示される仮想服の画像の例を示している。
【0043】
キャリブレーション処理の初期表示として、図5に示されるようなキャリブレーションポーズの仮想服が表示される。ここで、キャリブレーションポーズとは、モーションキャプチャ処理を実行するために必要な関節間の距離を算出するため、ユーザに行わせるポーズ(姿勢)であり、所定の関節を曲げた姿勢である。
【0044】
このように、キャリブレーションポーズとした仮想服を表示することにより、ユーザに、キャリブレーションポーズを取るように暗に促すことができ、図5の表示を見たユーザは、仮想服に合わせる姿勢を作る。なお、「服と同じポーズを取ってください」の文字を仮想服と同時に表示したり、音声メッセージを出力するなどして、キャリブレーションポーズを取ることをより明確に促す情報の提示を行うようにしてもよい。
【0045】
図5の例では、上半身の腕の関節を曲げた姿勢の仮想服が表示されている。なお、脚部の関節間距離については、図5に基づいて算出される上半身の関節間距離、即ち、上半身の体型から推定することができる。また、仮想服がズボンやスカートなど下半身用の服である場合には、脚部の関節を曲げた姿勢の下半身用のキャリブレーションポーズの仮想服を表示させるようにしてもよい。
【0046】
ステップS11でキャリブレーションポーズの仮想服が表示された後、ステップS12において、仮想試着システム1は、撮影部11で撮影されたユーザの撮影画像を取得する。
【0047】
ステップS13において、仮想試着システム1は、ユーザの概略の関節位置を推定する関節位置推定処理を実行する。この処理の詳細は、図6を参照して後述するが、この処理により、ユーザの概略の関節位置が推定される。この処理で推定されたユーザの第n番目(n=1,2,・・・,N)の関節位置が関節位置ベクトルp=(pnx,pny,pnz)で表されるものとする。
【0048】
ステップS14において、仮想試着システム1は、推定されたユーザの関節位置と、対応する仮想服の関節位置どうしの誤差を示す関節間誤差dを算出する。関節間誤差dは、例えば、d=Σ|p−c|により算出することができ、cは、関節位置ベクトルpに対応する仮想服の関節位置ベクトルであり、Σは、第1番目から第N番目までの総和を表す。
【0049】
ステップS15において、仮想試着システム1は、算出された関節間誤差dが予め設定された閾値th1未満であるかを判定する。そして、ステップS15で、算出された関節間誤差dが閾値th1以上であると判定された場合、処理はステップS12に戻り、関節間誤差dを算出する処理が再度実行される。
【0050】
一方、ステップS15で、算出された関節間誤差dが閾値th1未満であると判定された場合、処理はステップS16に進み、仮想試着システム1は、推定された各関節位置に基づいて、ユーザの関節間距離を推定する。関節間距離を推定する処理については、図6を参照して説明する関節位置推定処理についての説明の後、さらに説明する。ユーザの関節間距離が推定されると、キャリブレーション処理は終了する。
【0051】
[関節位置推定処理の詳細処理]
図6のフローチャートを参照して、図4のステップS13として実行される関節位置推定処理の詳細について説明する。なお、図6の各ステップの説明に際しては、図7を適宜参照して説明する。
【0052】
初めに、ステップS21において、仮想試着システム1は、上述したステップS12で取得されたユーザの撮影画像から、背景差分などの手法を用いて、ユーザ領域を抽出する。
【0053】
図7Aは、ステップS12で取得されたユーザの撮影画像の例を示しており、図7Bは、その撮影画像から抽出されたユーザ領域(白抜きの人型の領域)の例を示している。ステップS21におけるユーザ領域の抽出では、ユーザは、仮想服に合わせた位置でキャリブレーションポーズを取ることが想定されるので、ユーザ領域を検索する領域を、仮想服を表示させている領域に基づいてある程度限定することができる。換言すれば、撮影画像の全領域に対してユーザ領域を検索する処理を行う必要はない。従って、キャリブレーションポーズの仮想服に合わせた姿勢をユーザに取らせることは、ユーザ領域の検索処理を行う領域を限定することができ、計算コストを削減し、処理の高速化も可能となる。
【0054】
ステップS22において、仮想試着システム1は、抽出されたユーザ領域に基づいて、記憶部108に予め記憶されている辞書画像から、ユーザの姿勢と類似の姿勢画像を検索する。
【0055】
即ち、記憶部108には、体型などがさまざまな人物によるキャリブレーションポーズを撮影した画像である多数の姿勢画像が辞書画像として格納されている。この姿勢画像には、その姿勢が撮影されたときのモデルの各関節位置も対応づけて記憶されている。
【0056】
図7Cは、記憶部108に記憶されている辞書画像の例を示しており、図中の白丸(○)で示される位置が関節位置を示している。ステップS22では、ユーザの姿勢と類似の姿勢画像が、パターンマッチング法などにより、辞書画像から検索される。
【0057】
ステップS23において、仮想試着システム1は、検索の結果得られた姿勢画像に対応付けて記憶されているモデルの各関節位置を記憶部108から取得し、その各関節位置が、ユーザ領域の中心にくるように、各関節位置を2次元的に移動させる。2次元的に移動させるとは、モデルの関節位置ベクトルp’=(p’nx,p’ny,p’nz)のx座標とy座標のみを移動させることを意味する。
【0058】
図7Dは、白丸(○)で示される姿勢画像の関節位置が、ユーザ領域に対応して、斜線を付した丸(○)で示される関節位置に移動される様子を示している。
【0059】
ステップS24において、仮想試着システム1は、所定の関節間距離を拘束条件として、2次元の関節位置から、3次元の関節位置を計算(復元)する。ステップS24では、成人一般の平均値の関節間距離を拘束条件として、2次元の関節位置から、3次元の関節位置が計算される。なお、この処理はキャリブレーション処理の一部であり、キャリブレーションポーズ中は、ユーザが撮影部11に対して真正面を向いているため、奥行き情報はすべて等しいとみなして、3次元の関節位置を復元することができる。これにより、図7Eに示されるような3次元の関節位置(ボーン)が得られる。
【0060】
以上のようにして、ユーザの概略の関節位置が推定され、推定された概略の関節位置に基づいて関節間誤差dが算出され、関節間誤差dが閾値th1未満となると、図4のステップS16においてユーザの関節間距離が推定される。
【0061】
図4のステップS16において、関節間距離を推定する方法について説明する。キャリブレーションポーズ中は、ユーザが撮影部11に対して真正面を向いているため、奥行き情報はすべて等しいとみなすことができる。そのため、関節間誤差dが閾値th1未満と判定されたときの2次元の関節位置から関節間距離を求め、それを3次元の関節間距離とすることができる。
【0062】
[モーションキャプチャ処理の詳細について]
次に、図3のステップS2の処理であるモーションキャプチャ処理の詳細について説明する。
【0063】
モーションキャプチャ処理とは、認識対象であるユーザの1以上の関節位置を検出(認識)する処理であるので、図3のステップS2の処理は、基本的に、撮影部11により撮影されたユーザの撮影画像に対して、図6を参照して説明した関節位置推定処理を実行する処理となる。
【0064】
ただし、キャリブレーション処理の一部としての関節位置推定処理と、キャリブレーション処理後のモーションキャプチャ処理としての関節位置推定処理とでは、次の2点が異なる。
【0065】
1つ目の相違点は、ステップS23で検索される姿勢画像が異なる点である。即ち、キャリブレーション処理中は、ユーザがキャリブレーションポーズを取っていることが前提であるので、記憶部108の辞書画像から検索される姿勢画像はキャリブレーションポーズの姿勢画像に限定して検索することができる。一方、キャリブレーション処理後のモーションキャプチャ処理では、ユーザがとる姿勢は様々であるので、記憶部108内の検索対象の姿勢画像は様々な姿勢の画像となる。
【0066】
2つ目の相違点は、ステップS24で3次元の関節位置を計算する際の拘束条件が異なる点である。即ち、キャリブレーション処理では、成人一般の平均値の関節間距離を拘束条件として3次元の関節位置が計算される。一方、キャリブレーション処理後のモーションキャプチャ処理では、キャリブレーション処理(のステップS16の処理)により得られたユーザの関節間距離を拘束条件として3次元の関節位置が計算される。
【0067】
なお、以下では、モーションキャプチャ処理により得られたユーザの各関節位置を示す情報を総称して骨格情報ともいう。
【0068】
[仮想服を重畳する処理の詳細について]
次に、図3のステップS3の処理である仮想服を重畳する処理の詳細について説明する。
【0069】
図8は、図3のステップS3として実行される、仮想服を重畳する処理の詳細なフローチャートを示している。
【0070】
この処理では、モーションキャプチャ処理で撮影部11により撮影されたユーザの撮影画像であって、ユーザの3次元の関節位置が計算された撮影画像に対して、仮想服を重畳する処理が行われる。
【0071】
初めに、ステップS41において、仮想試着システム1は、ユーザの撮影画像から抽出されたユーザ領域の画像に対して、上半身の服領域を特定する。例えば、仮想試着システム1は、ユーザ領域の上半身側で、似ている色情報の画素の集まりの範囲を抽出するGraph Cut法などの手法を用いて、上半身の服領域を特定することができる。
【0072】
ステップS42において、仮想試着システム1は、ユーザの骨格情報に基づいて、試着対象の仮想服を重畳させる撮影画像上の位置を特定し、ユーザの撮影画像に、仮想服を重畳させる。試着対象の仮想服は、所定の順番で決められているか、ユーザの選択操作により決められているものとする。仮想服のデータは、記憶部108に予め記憶されており、仮想服の領域は既知であるので、ユーザの骨格情報が分かれば、仮想服を重畳させる位置を特定することができる。
【0073】
ステップS43において、仮想試着システム1は、特定されたユーザの上半身の服領域(以下、上半身服領域という。)と、仮想服を重畳させた重畳領域とを比較して、上半身服領域が仮想服の重畳領域からはみ出している領域であるはみ出し領域を検索する。
【0074】
例えば、図9において、実線で囲まれる服の領域は、仮想服の重畳領域を示し、破線で囲まれる服の領域は、ユーザの上半身服領域を示している。そして、図9において斜線を付して示される、実線で囲まれる服の領域より外側、かつ、破線で囲まれる服の領域より内側の領域が、はみ出し領域となる。
【0075】
ステップS44において、仮想試着システム1は、はみ出し領域が存在するかを判定する。ステップS44で、はみ出し領域が存在しないと判定された場合、処理は、後述するステップS45をスキップして、ステップS46に進む。
【0076】
一方、ステップS44で、はみ出し領域が存在すると判定された場合、処理はステップS45に進み、仮想試着システム1は、はみ出し領域を調整するはみ出し調整処理を行う。
【0077】
はみ出し領域が存在する場合には、仮想服の外側に、ユーザが実際に着用している服の一部が見えることになり、不自然な表現となる。そのため、ステップS45では、仮想服を拡げる第1の処理か、または、上半身服領域を狭める第2の処理により、上半身服領域と仮想服の重畳領域とを一致させる処理が、はみ出し調整処理として行われる。より具体的に言えば、第1の処理は、仮想服の重畳領域がユーザの上半身服領域を覆うまで仮想服を外周方向に所定画素拡大して、はみ出し領域の上半身服領域を仮想服に置き換える処理であり、第2の処理は、はみ出し領域の上半身服領域を、背景画像などの所定の画像に置き換える処理である。
【0078】
ステップS46において、仮想試着システム1は、ユーザの撮影画像に、仮想服を重畳させた重畳画像を表示部13に表示させ、仮想服を重畳する処理を終了して、図3に戻る。
【0079】
[はみ出し領域調整処理の詳細処理]
図8のステップS45で行われる、はみ出し領域調整処理について説明する。
【0080】
上述したように、ステップS45では、仮想服の重畳領域がユーザの上半身服領域を覆うまで仮想服を外周方向に所定画素拡大して、はみ出し領域の上半身服領域を仮想服に置き換える第1の処理か、または、はみ出し領域の上半身服領域を、背景画像などの所定の画像に置き換える第2の処理のいずれかが行われる。第1の処理と第2の処理のどちらを行うかは、設定条件として予め決定されるか、または、ユーザ若しくは店員等の操作によって、その都度、決定することができる。例えば、ユーザが仮想服のサイズを確認したい場合には、仮想服のサイズ(領域)を変更する第1の処理は不適であるので、第2の処理が選択され、実行される。
【0081】
第2の処理が選択され、実行される場合、図10の丸で囲んで示した、襟、裾、袖の領域を含むはみ出し領域を一律に、背景画像に置き換えると、例えば、首と仮想服との間が背景画像で分離されたような不自然な表現(画像)となる。
【0082】
そこで、仮想試着システム1は、第2の処理を実行する場合、はみ出し領域を、背景画像で置き換える領域と、背景画像以外の画像で置き換える領域とに分類し、分類結果に応じて背景画像またはそれ以外の画像で置き換えることにより、はみ出し領域のユーザの服の画像を狭める処理を行う。襟、裾、袖の部分に相当する、背景画像以外の画像で置き換える領域は特別処理領域として領域検出部としてのCPU101により検出される。
【0083】
図11は、はみ出し領域調整処理の第2の処理のフローチャートを示している。
【0084】
この処理では、初めに、ステップS61において、仮想試着システム1は、はみ出し領域内の所定の画素を注目画素に設定する。
【0085】
ステップS62において、仮想試着システム1は、注目画素が特別処理領域であるか、即ち、襟、裾、または袖の領域であるかを判定する。襟、裾、または袖の領域であるか否かは、ユーザの骨格情報に基づいて判定することができる。仮想服が一定の形状である場合には、仮想服の形状から判定してもよい。
【0086】
ステップS62で、注目画素が特別処理領域ではないと判定された場合、処理はステップS63に進み、仮想試着システム1は、注目画素の画素値を、背景画像の対応する画素の画素値に置き換える。背景画像は、予め撮影され、記憶部108に記憶されている。
【0087】
一方、ステップS62で、注目画素が特別処理領域であると判定された場合、処理はステップS64に進み、仮想試着システム1は、注目画素の画素値を、注目画素周辺の撮影画像の画素値に置き換える。
【0088】
より具体的には、仮想試着システム1は、注目画素が襟の領域である場合には、首の画像を襟の領域(図10で下方向)に伸ばすように、注目画素の画素値を首の領域の画素値で置き換える。また、注目画素が裾の領域である場合には、仮想試着システム1は、撮影画像のユーザのズボンまたはスカートなどの下半身の服の画像を、裾の領域(図10で上方向)に伸ばすように、注目画素の画素値を下半身の服の領域の画素値で置き換える。さらに、注目画素が袖の領域である場合には、仮想試着システム1は、手首の画像を袖の領域に伸ばすように、注目画素の画素値を手首の領域の画素値で置き換える。どの方向に伸ばすかについても、骨格情報から決定することができる。
【0089】
このように、注目画素が特別処理領域である場合に、背景画像ではなく、注目画素周辺の撮影画像の画素値に置き換えることで、仮想服を重畳した時の不自然な表現(重畳表示)を防止することができる。
【0090】
ステップS63またはS64の後、ステップS65において、仮想試着システム1は、はみ出し領域内の全ての画素を注目画素としたかを判定する。
【0091】
ステップS65で、はみ出し領域内の全ての画素をまだ注目画素としていないと判定された場合、処理はステップS61に戻り、それ以降の処理が繰り返される。即ち、はみ出し領域内のまだ注目画素とされてない他の画素が注目画素とされ、注目画素の画素値を所定の画像の画素値に置き換える処理が行われる。
【0092】
一方、ステップS65で、はみ出し領域内の全ての画素を注目画素としたと判定された場合、はみ出し領域調整処理は終了し、処理は図8に戻される。
【0093】
以上、説明したように、仮想試着システム1は、キャリブレーション処理において、キャリブレーションポーズの仮想服を初期表示として表示させる。これにより、ユーザに、キャリブレーションポーズを取るように暗に促すことができ、認識対象であるユーザの動きに応じた動作を行わせる操作対象としての仮想服が、キャリブレーション終了後に、突然、キャリブレーションポーズに変化する、というような不自然な動作を防止することができる。
【0094】
なお、上述した例では、認識対象であるユーザの動きに応じた動作を行わせる操作対象が仮想服である例について説明したが、操作対象としてはCGで作成したキャラクタなども一般的であり、操作対象は人型の仮想オブジェクトとされる。
【0095】
また、仮想試着システム1は、ユーザの撮影画像に仮想服を重畳させて表示する際に、はみ出し領域が存在するとき、はみ出し領域の画像を、仮想服の画像、背景画像、ユーザの撮影画像などの所定の画像に置き換える処理を行う。これにより、仮想服を重畳させたときに発生し得る不自然な表現を防止することができる。
【0096】
[仮想試着システム1の応用例]
次に、上述した仮想試着システム1の応用例について説明する。
【0097】
現実世界において実際に洋服を試着した場合には、洋服のサイズと自分の体格との適合度合いや、生地の厚みや触り心地など、触覚が重要な役割を果たすことがある。しかし、ARのシステムでは、触覚を現実と同様にユーザに提示することは難しい。そこで、以下では、ユーザが実際に洋服を試着した場合の触覚の情報を、視覚または聴覚の情報に変換して提示する処理を付加した仮想試着システム1の例を示す。
【0098】
[サイズ表現提示の例]
初めに、「腕を曲げると肘の部分が窮屈」など、服を試着したときに触覚で感じる(特に局所的な)サイズに対する感覚を表現するサイズ表現提示処理について説明する。
【0099】
図12は、サイズ表現提示処理のフローチャートを示している。
【0100】
この処理では、初めに、ステップS81において、仮想試着システム1は、ユーザを撮影した撮影画像を取得する。
【0101】
ステップS82において、仮想試着システム1は、Shape from Silhouette法やデプスカメラを用いる手法などにより、ユーザの体格形状(3次元形状)を、撮影画像から復元する。
【0102】
ステップS83において、仮想試着システム1は、撮影画像または復元されたユーザの体格形状から、ユーザの骨格情報を生成する。
【0103】
ステップS84において、仮想試着システム1は、生成したユーザの骨格情報に基づいて、重畳させる仮想服を変形させる。即ち、仮想服がユーザの動き(各関節位置)に合わせて変形される。
【0104】
ステップS85において、仮想試着システム1は、ユーザの体格形状に対する仮想服の窮屈度を算出する。窮屈度は、例えば、肩、肘など、仮想服に予め設定した1以上の領域に対して、3次元形状どうしの誤差を計算するアルゴリズムであるICP(Iterative Closest Point)アルゴリズム等を用いて計算することができる。窮屈度は、例えば、仮想服とユーザの体格形状との差(誤差)が少ないほど、小さくなるように設定される。なお、仮想服の3次元形状は、予め入力されており、既知である。
【0105】
ステップS86において、仮想試着システム1は、窮屈度が所定の閾値Th2未満の領域があるかを判定する。
【0106】
ステップS86で、窮屈度が所定の閾値Th2未満の領域があると判定された場合、処理はステップS87に進み、仮想試着システム1は、重畳させる仮想服に、窮屈度に応じた表現を適用し、ユーザの撮影画像に重畳表示させる。具体的には、窮屈度が閾値Th2未満の領域に対して、仮想試着システム1は、仮想服が裂ける、生地が伸びて薄くなる(生地の色が薄くなる)、ビリビリ、などの仮想服が破ける音を出力するなどを行う。
【0107】
一方、ステップS86で、窮屈度が所定の閾値Th2未満の領域がないと判定された場合、処理はステップS88に進み、仮想試着システム1は、窮屈度に応じた表現を適用せずにユーザの撮影画像に、ユーザの動きに変形させた仮想服を重畳表示させる。
【0108】
以上の処理を行うことにより、服を試着したときに触覚で感じるサイズに対する感覚を、視覚や聴覚で表現してユーザに提示することができる。
【0109】
[触り心地表現提示の例]
次に、生地を触ったときの触り心地に対する感覚を表現する触り心地表現提示処理について説明する。この場合、記憶部108内の試着対象の仮想服のデータには、その触り心地を示す指標がメタデータとして対応付けて記憶される。触り心地を示す指標としては、例えば、仮想服の生地の摩擦係数や表面の凹凸の標準偏差などを採用することができる。
【0110】
図13は、触り心地表現提示処理のフローチャートを示している。
【0111】
ステップS101乃至S104の処理は、図12のステップS81乃至S84の処理と、それぞれ同様であるので、その説明は省略する。
【0112】
ステップS105において、仮想試着システム1は、ユーザの手の位置を検出する。ユーザの手の位置は、生成した骨格情報から求めてもよいし、撮影画像から手の形状を認識して求めてもよい。
【0113】
ステップS106において、仮想試着システム1は、ユーザの手が動いているかを判定する。
【0114】
ステップS106で、ユーザの手が動いていないと判定された場合、処理はステップS105に戻る。
【0115】
一方、ステップS106で、ユーザの手が動いていると判定された場合、処理はステップS107に進み、ユーザの手が重畳させる仮想服の領域にあるかを判定する。
【0116】
ステップS107で、ユーザの手が重畳させる仮想服の領域にはないと判定された場合、処理はステップS105に戻る。
【0117】
一方、ステップS107で、ユーザの手が重畳させる仮想服の領域にあると判定された場合、処理はステップS108に進み、仮想試着システム1は、仮想服の触り心地を示す指標に基づいて、重畳させる仮想服に、触り心地を示す表現を適用し、重畳表示させる。
【0118】
例えば、仮想試着システム1は、手で仮想服をこすった回数に応じて毛玉を付加した仮想服を描画する、キュキュ、シャカシャカなど、生地に応じて音を鳴らすなどの処理を、仮想服の触り心地を示す指標に基づいて行う。描画する毛玉の数や大きさ、音を鳴らすときの周波数などが、仮想服の触り心地を示す指標に応じて変更される。
【0119】
なお、必ずしても手で仮想服をこすった場合に限定されず、仮想服が所定の物体と接触したり、仮想服の生地どうしが接触したときにも、同様の触り心地を示す表現を適用することができる。
【0120】
上述した図12と図13の処理は、単独の処理フローとして説明したが、上述した図3等の処理ステップに、適宜、追加挿入して実行することができる。
【0121】
[硬さ表現提示の例]
次に、生地の厚さなどに起因する服の硬さに対する感覚を表現する硬さ表現提示処理について説明する。
【0122】
この場合、記憶部108内の試着対象の仮想服のデータには、その生地の硬さを示す指標がメタデータとして対応付けて記憶される。生地の硬さを示す指標としては、生地の厚さや、生地の引っ張り強度などを採用することができる。
【0123】
そして、硬さ表現提示処理では、仮想試着システム1は、ユーザの動きに応じて、重畳させる仮想服を変形させる際に、生地の硬さを示す指標に基づいて、仮想服をなびかせる(ひらひらさせる)ようにすることができる。仮想服をなびかせる度合いは、その仮想服の生地の硬さを示す指標に応じて変更される。これにより、本来触覚である生地の硬さを、視覚的に表現して提示することができる。
【0124】
[暖かさ表現提示の例]
服の素材や厚みによって、服を着用したときの暖かさは変化する。そのような暖かさを可視化して視覚で表現する暖かさ表現提示処理について説明する。
【0125】
この場合、記憶部108内の試着対象の仮想服のデータには、その服を着用したときの暖かさを示す指標がメタデータとして対応付けて記憶される。暖かさを示す指標としては、生地の素材(綿、ウールなど)に応じて設定した値を採用することができる。
【0126】
そして、暖かさ表現提示処理では、仮想試着システム1は、試着される仮想服の暖かさを示す指標に基づいて、背景画像を、ハワイなどの南国の画像など季節感のあるものに差し替える、背景画像の色調を暖色系もしくは寒色系に変更する、陽炎のように空気に歪みを持たせたエフェクトをかける等の処理を、重畳表示させた画像に対して行う。
【0127】
また、ユーザを撮影している場所の気温や、ユーザの体温を温度センサで測定し、測定された温度を、暖かさを示す指標として用いて、重畳表示させた画像に、上述したような画像の変更やエフェクトを施してもよい。あるいは、仮想服を試着した場合のユーザの体感温度を算出し、測定されたユーザの現在の体温との差分を、暖かさを示す指標として用いて、上述したような画像の変更やエフェクトを施してもよい。
【0128】
さらには、生地の素材(綿、ウールなど)に応じて設定した値、撮影場所の気温、ユーザの体温などを所定の重みで組み合わせた値を、暖かさを示す指標として用いて、上述したような画像の変更やエフェクトを施してもよい。
【0129】
本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる場合はもちろん、必ずしも時系列的に処理されなくとも、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで実行されてもよい。
【0130】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【0131】
本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【0132】
なお、本技術は以下のような構成も取ることができる。
(1)
認識対象の人間に対応して操作される操作対象である人型の仮想オブジェクト画像を、モーションキャプチャに必要な情報を抽出するためのポーズで表示させる表示制御部
を備える画像処理装置。
(2)
前記モーションキャプチャに必要な情報は、前記人間の関節間距離である
前記(1)に記載の画像処理装置。
(3)
前記表示制御部は、前記人間に対して、前記ポーズに合わせた姿勢をとるように促す情報の提示も行う
前記(1)または(2)に記載の画像処理装置。
(4)
前記人型の仮想オブジェクト画像は、試着用の仮想の服の画像である
前記(1)乃至(3)のいずれかに記載の画像処理装置。
(5)
認識対象の人間に対応して操作される操作対象である人型の仮想オブジェクト画像を、モーションキャプチャに必要な情報を抽出するためのポーズで表示させる
ステップを含む画像処理方法。
(6)
コンピュータに、
認識対象の人間に対応して操作される操作対象である人型の仮想オブジェクト画像を、モーションキャプチャに必要な情報を抽出するためのポーズで表示させる
処理を実行させるためのプログラム。
【符号の説明】
【0133】
1 仮想試着システム, 11 撮影部, 12 画像処理部, 13 表示部, 101 CPU, 102 ROM, 103 RAM, 107 出力部, 108 記憶部

【特許請求の範囲】
【請求項1】
認識対象の人間に対応して操作される操作対象である人型の仮想オブジェクト画像を、モーションキャプチャに必要な情報を抽出するためのポーズで表示させる表示制御部
を備える画像処理装置。
【請求項2】
前記モーションキャプチャに必要な情報は、前記人間の関節間距離である
請求項1に記載の画像処理装置。
【請求項3】
前記表示制御部は、前記人間に対して、前記ポーズに合わせた姿勢をとるように促す情報の提示も行う
請求項1に記載の画像処理装置。
【請求項4】
前記人型の仮想オブジェクト画像は、試着用の仮想の服の画像である
請求項1に記載の画像処理装置。
【請求項5】
認識対象の人間に対応して操作される操作対象である人型の仮想オブジェクト画像を、モーションキャプチャに必要な情報を抽出するためのポーズで表示させる
ステップを含む画像処理方法。
【請求項6】
コンピュータに、
認識対象の人間に対応して操作される操作対象である人型の仮想オブジェクト画像を、モーションキャプチャに必要な情報を抽出するためのポーズで表示させる
処理を実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate