以下、図面を参照して、各実施形態について説明する。
(第1の実施形態)
まず、図1及び図2を参照して、第1の実施形態に係る画像処理装置を含む画像処理システムの構成の一例について説明する。図1及び図2に示すように、画像処理システムは、第1の撮像部100、第2の撮像部200及び画像処理装置300等を備える。
第1の撮像部100は、図1に示すように、例えば任意の角度に回転可能な回転台401に載置された被写体402を撮像し、当該被写体402を含む画像(以下、被写体402のデプス画像と表記)を出力するための撮像装置である。デプス画像は、距離画像とも称され、画素毎に第1の撮像部100からの距離が規定された画像である。第1の撮像部100としては、例えばデプスセンサ等が用いられる。
第2の撮像部200は、図2に示すように、上記した回転台401に載置され、衣服403を着用した被写体402を撮像し、当該衣服403を着用した被写体402を含む画像(以下、衣服撮像画像と表記)を出力するための撮像装置である。衣服撮像画像は、ビットマップ画像であり、画素毎に被写体402(が着用した衣服403)の色彩及び輝度等を示す画素値が規定された画像である。第2の撮像部200としては、例えば汎用のカメラ等が用いられる。
ここで、本実施形態において、第1の撮像部100及び第2の撮像部200によって撮像される被写体402は、衣服を試着する対象である。図1及び図2においては、被写体402が例えば人体の形状を模したマネキンである場合が想定されている。以下の説明においては、被写体402はマネキンであるものとして説明するが、当該被写体402は、例えば犬や猫等のペットの形状を模したマネキン及びその他の物体であってもよいし、例えば人物やペット等の生物であってもよい。
第1の撮像部100によって出力された被写体402のデプス画像及び第2の撮像部200によって出力された衣服撮像画像は、画像処理装置300によって取得される。画像処理装置300は、取得された被写体402のデプス画像及び衣服撮像画像を用いて、上記した衣服403を着用した被写体402とは異なる状態(例えば、向き、姿勢または体型等)の被写体が衣服403を着用した場合における当該衣服403の状態を表す画像(以下、衣服画像と表記)を生成する機能を有する。このように画像処理装置300によって生成された衣服画像は、当該画像処理装置300内に蓄積(格納)される。
本実施形態に係る画像処理装置300内に蓄積された衣服画像は、仮想試着に用いられる。具体的には、例えば衣服403を販売する店舗内のユーザと対面した位置に設けられた表示装置に、撮像部によって撮像されたユーザを含む画像上に画像処理装置300内に蓄積された衣服画像(つまり、衣服403の画像)を重畳した合成画像を表示することによって、当該ユーザは、当該衣服403を仮想的に試着する(以下、仮想試着と表記)ことができる。
なお、図1及び図2においては省略されているが、画像処理システムは、例えばネットワークを介して画像処理装置300と通信可能に接続されたサーバ装置を更に備える構成であっても構わない。この場合、画像処理装置300によって生成された衣服画像は、サーバ装置に蓄積(格納)されてもよい。
図3は、本実施形態に係る画像処理装置300の主として機能構成を示すブロック図である。図3に示すように、画像処理装置300は、3Dモデル取得部301、3Dモデル投影部302、制御点設定部303、制御点変更部304、衣服撮像画像取得部305、衣服領域抽出部306、メッシュデータ生成部307、影響度算出部308、メッシュデータ変形部309、衣服画像生成部310、提示処理部311及び衣服画像格納部312を含む。
本実施形態において、これらの各部301〜311の一部または全ては、例えば画像処理装置300に備えられるCPU等のコンピュータにプログラムを実行させること、すなわち、ソフトウェアによって実現されるものとする。なお、各部301〜311の一部または全ては、IC(Integrated Circuit)等のハードウェアによって実現されてもよいし、ソフトウェア及びハードウェアの組み合わせ構成として実現されてもよい。また、本実施形態において、衣服画像格納部312は、画像処理装置300に備えられる例えばHDD(Hard Disk Drive)等の記憶装置に格納されているものとする。なお、衣服画像格納部312は、例えば画像処理装置300と通信可能に接続される外部装置(サーバ装置)等に備えられていてもよい。
3Dモデル取得部301は、上述した第1の撮像部100から出力された被写体402のデプス画像を取得する。3Dモデル取得部301は、取得された被写体402のデプス画像に基づいて当該被写体402をモデル化することによって、当該被写体402の3次元モデル(以下、3Dモデルと表記)を取得(生成)する。ここで、3Dモデル取得部301によって取得される被写体402の3Dモデルは、第1の撮像部100によって撮像された被写体402の状態(向き、姿勢及び体型等)を表すモデルである。
また、3Dモデル取得部301は、例えば取得された3Dモデルを変形することによって当該3Dモデルとは異なる3Dモデルを取得する。
以下の説明においては、被写体402のデプス画像に基づいて取得された3Dモデル(第1の3次元モデル)を変形前3Dモデル、当該変形前3Dモデルを変形することによって取得された3Dモデル(第2の3次元モデル)を変形後3Dモデルと称する。なお、変形後3Dモデルには、例えば変形前3Dモデルの向き、姿勢または体型等が変更された3Dモデルが含まれる。
上記したように3Dモデル取得部301によって取得される3Dモデル(変形前3Dモデル及び変形後3Dモデル)は複数の頂点から構成されており、当該複数の頂点の各々には当該頂点の3次元位置(座標)が付加されている。3Dモデルを構成する複数の頂点の各々には、当該頂点を識別するための番号(以下、頂点番号と表記)が割り当てられているものとする。なお、変形前3Dモデル及び変形後3Dモデルにおいて対応する頂点(つまり、3Dモデルにおける構造的に同一の位置の頂点)には同一の頂点番号が割り当てられている。
3Dモデル投影部302は、3Dモデル取得部301によって取得された3Dモデル(変形前3Dモデル及び変形後3Dモデル)を例えばスクリーン面に投影する。この場合、3Dモデル投影部302は、上述した第2の撮像部200の視点位置及び画角(つまり、衣服撮像画像を撮像した視点位置及び画角)に合わせて3Dモデルを投影する。
制御点設定部303は、3Dモデル取得部301によって取得された変形前3Dモデル上に複数の制御点(第1の制御点)を設定する。この場合、制御点設定部303は、3Dモデル投影部302によってスクリーン面に投影された変形前3Dモデルを参照して、当該変形前3Dモデルを構成する複数の頂点の中から制御点を設定(選択)する。
同様に、制御点設定部303は、3Dモデル取得部301によって取得された変形後3Dモデル上に複数の制御点(第2の制御点)を設定する。この場合、制御点設定部303は、変形後3Dモデルを構成する複数の頂点のうち、変形前3Dモデル上に設定された制御点に対応する制御点を設定(選択)する。
制御点変更部304は、例えば画像処理装置300に対するユーザの操作に応じて、制御点設定部303によって設定された制御点を変更する。
衣服撮像画像取得部305は、上述した第2の撮像部200から出力された衣服撮像画像を取得する。
衣服領域抽出部306は、衣服撮像画像取得部305によって取得された衣服撮像画像から、当該衣服撮像画像に含まれる被写体402が着用した衣服403の領域(以下、衣服領域と表記)を抽出する。
メッシュデータ生成部307は、衣服領域抽出部306によって抽出された衣服領域をメッシュ状に分割することによって、メッシュ化された当該衣服領域を表すメッシュデータを生成する。なお、メッシュデータ生成部307によって生成されるメッシュデータは、衣服領域がメッシュ化されることによって表される複数の頂点を有する。
影響度算出部308は、例えば変形前3Dモデルが変形した(つまり、被写体402の向き、姿勢または体型等が変化した)場合における当該変形前3Dモデル上に設定された複数の制御点の各々の移動が、メッシュデータ生成部307によって生成されたメッシュデータが有する複数の頂点の各々(の移動)に対して与える影響の度合いを表す影響度(つまり、当該頂点に対する当該制御点の影響度)を算出する。なお、影響度算出部308は、制御点設定部303によって変形前3Dモデル上に設定された複数の制御点の各々及びメッシュデータ生成部307によって生成されたメッシュデータが有する複数の頂点の各々の組み合わせ毎に影響度を算出する。
メッシュデータ変形部309は、制御点設定部303によって変形前3Dモデル上に設定された複数の制御点、当該制御点設定部303によって変形後3Dモデル上に設定された複数の制御点、メッシュデータ生成部307によって生成されたメッシュデータ及び影響度算出部308によって算出された影響度に基づいて、当該メッシュデータを変形する処理を実行する。このメッシュデータ変形部309によって実行される処理の詳細については後述するが、メッシュデータ変形部309は、変形前3Dモデル上に設定された複数の制御点から変形後3Dモデル上に設定された制御点への移動量に基づいて、メッシュデータ生成部307によって生成されたメッシュデータを変形する。以下の説明においては、メッシュデータ変形部309によって変形されたメッシュデータを変形後メッシュデータと称する。
衣服画像生成部310は、衣服撮像画像(から抽出された衣服領域)及び変形後メッシュデータを用いて衣服403の画像(つまり、衣服画像)を生成する。この衣服画像生成部310によって生成される衣服画像は、変形後3Dモデル(によって表される向き、姿勢及び体型の被写体)が衣服403を着用した場合における当該衣服403の状態を表す画像である。
衣服画像生成部310によって生成された衣服画像は、提示処理部311によって画像処理装置300の管理者等に提示(表示)される。また、衣服画像生成部310によって生成された衣服画像は、衣服画像格納部312に格納(蓄積)される。
次に、図4のフローチャートを参照して、本実施形態に係る画像処理装置300の処理手順について説明する。
まず、3Dモデル取得部301は、第1の撮像部100から出力された被写体402のデプス画像に基づいて、当該被写体402の3Dモデル(変形前3Dモデル)を取得する(ステップS1)。なお、ここでは変形前3Dモデルが被写体402のデプス画像に基づいて取得されるものとして説明したが、当該変形前3Dモデルは、構造が一致していれば例えば3Dスキャナ等を用いて取得されても構わない。
ここで、図5は、3Dモデル取得部301によって取得された変形前3Dモデル501を示す。図5に示す例では、変形前3Dモデル501は、例えば第1の撮像部100に対して略正面方向を向いた被写体402のデプス画像に基づいて取得された3Dモデルの例を示している。なお、変形前3Dモデル501は複数の頂点から構成されている。また、この複数の頂点の各々には、当該頂点の3次元位置(座標)が付加されている。更に、複数の頂点の各々には、頂点番号が割り当てられている。
再び図4に戻ると、衣服撮像画像取得部305は、第2の撮像部200から出力された衣服撮像画像を取得する(ステップS2)。この衣服撮像画像は、上述した第1の撮像部100による撮像時と同等の状態(姿勢等)で衣服403を着用した被写体402を含む画像である。
次に、衣服領域抽出部306は、衣服撮像画像取得部305によって取得された衣服撮像画像に対して例えばマスク処理を実行することによって、当該衣服撮像画像から衣服領域(つまり、当該衣服撮像画像に含まれる被写体402が着用した衣服403の型)を抽出する(ステップS3)。
ここで、図6は、衣服領域抽出部306によって抽出された衣服領域601(つまり、衣服領域抽出部306による抽出結果)を示す。このような衣服領域601の抽出は、例えば汎用の画像編集ツール等を用いて実現されても構わない。
なお、衣服領域抽出部306によって抽出された衣服領域601を利用することによって、衣服撮像画像取得部305によって取得された衣服撮像画像から図7に示すような衣服画像(つまり、第2の撮像部200によって撮像された被写体402が着用した状態の衣服403の画像)701を取得する(切り取る)ことができる。このように取得された衣服画像701は、上述した仮想試着に用いるために衣服画像格納部312に蓄積される。
再び図4に戻ると、制御点設定部303は、3Dモデル取得部301によって取得された変形前3Dモデル501上に複数の制御点を設定する(ステップS4)。この場合、3Dモデル投影部302は、例えば3Dモデル取得部301によって取得された変形前3Dモデル501を、第2の撮像部200の視点位置及び画角に合わせてスクリーン面に投影する。なお、第1の撮像部100及び第2の撮像部200の位置関係は予めキャリブレーションされているものとする。これにより、制御点設定部303は、変形前3Dモデル501を構成する複数の頂点のうち、変形前3Dモデル501がスクリーン面に投影された際に最前面に現れる頂点であって、当該投影された場合における変形前3Dモデルの最外周に位置する頂点を制御点として設定(選択)する。この場合、制御点設定部303は、変形前3Dモデル501上に設定された複数の制御点の各々に割り当てられている頂点番号を当該制御点設定部303内部に保持する。
ここでは、変形前3Dモデルを構成する全ての頂点の中から制御点が選択されるものとして説明したが、体の向き、姿勢または体型の変化に影響を受けやすい頂点(つまり、身体的特徴点に該当する頂点)を予め選択しておき、当該頂点の中から制御点が選択されるようにしてもよい。具体的には、複数の向き、姿勢または体型等の3Dモデルにおける代表的な頂点(例えば、肩、ひじ及び腰等に位置する頂点)が予め選択されていればよい。
更に、衣服領域抽出部306によって抽出された衣服領域の形状(つまり、衣服403の種類)等に基づいて、当該衣服403と関連のある頂点を予め選択しておき、当該頂点の中から制御点が選択されるようにしてもよい。具体的には、衣服403が例えばトップスのような上半身に着用するものであれば、当該衣服403と関連のある頂点としては変形前3Dモデルの上半身に位置する頂点が予め選択されていればよい。一方、衣服403が例えばボトムのような下半身に着用するものであれば、当該衣服403と関連のある頂点としては変形前3Dモデルの下半身に位置する頂点が予め選択されていればよい。
ここで、図8は、図5に示す変形前3Dモデル501上に設定された制御点の一例を示す。図8においては便宜的に1つの制御点のみに参照符号が付されているが、変形前3Dモデル501上には、制御点501aを含む複数の制御点が設定(配置)されている。図8に示す例では、衣服403が上半身に着用するものであり、変形前3Dモデルの上半身に位置する頂点の中から制御点が設定された場合の例を示している。
なお、図8に示すような制御点設定部303によって複数の制御点が設定された変形前3Dモデル501は、例えば管理者等に提示される。これにより、管理者は、変形前3Dモデル501上に設定された複数の制御点を確認することができる。ここで、例えば管理者が複数の制御点を確認した結果、制御点の変更等を望む場合、制御点変更部304は、例えば管理者の操作に応じて当該制御点の変更(例えば、制御点の移動、追加及び削除等)を行う。これによれば、ユーザの意図する頂点を変形前3Dモデル501上に設定することが可能となる。
再び図4に戻ると、メッシュデータ生成部307は、衣服領域抽出部306によって抽出された衣服領域601をメッシュに変換する(つまり、メッシュ状に分割する)ことによって当該衣服領域601のメッシュデータ(つまり、メッシュ化された衣服領域601を表すメッシュデータ)を生成する(ステップS5)。
ここで、図9は、メッシュデータ生成部307によって生成されたメッシュデータ801を示す。図9においては便宜的に1つの頂点のみに参照符号が付されているが、メッシュデータ801は、頂点801aを含む複数の頂点を有する。この複数の頂点は、メッシュ状に分割された衣服領域601中の小さな領域の各々の頂点である。このようなメッシュデータの生成は、例えば汎用のCG(Computer Graphics)ツール等を用いて実現されても構わない。
再び図4に戻ると、影響度算出部308は、制御点設定部303によって変形前3Dモデル501上に設定された複数の制御点の各々及びメッシュデータ生成部307によって生成されたメッシュデータ801が有する複数の頂点の各々の組み合わせ毎の影響度(つまり、各頂点に対する各制御点の影響度)を算出する(ステップS6)。
ここで、複数の頂点のうちの1の頂点(以下、対象頂点と表記)801aに対する複数の制御点のうちの1の制御点(以下、対象制御点と表記)501aの影響度を算出する際の処理について具体的に説明する。
この場合、影響度算出部308は、図10に示すように、上述した3Dモデル投影部302が変形前3Dモデル501をスクリーン面に投影した画像901に対して、メッシュデータ生成部307によって生成されたメッシュデータ(つまり、メッシュ化された衣服領域601を表すメッシュデータ)を重ね合わせた画像902を生成する。なお、画像902は、被写体402が衣服403を着用した状態を表す画像である。
次に、影響度算出部308は、対象頂点801aに対する対象制御点501aの影響度として、画像902における変形前3Dモデル501の領域(つまり、変形前3Dモデル501をスクリーン面に投影した領域)とメッシュデータ801の領域(つまり、メッシュデータ801によって表される衣服領域601)との和領域903内での対象制御点501aと対象頂点801aとの間の距離を算出する。
ここで、図11を参照して、影響度算出部308によって影響度として算出される対象制御点501aと対象頂点801aとの間の距離について具体的に説明する。図11は、図10に示す領域903(変形前3Dモデル501の領域とメッシュデータ801の領域との和領域)を拡大した図である。
図11に示す例では、対象制御点501aは、変形前3Dモデル501(の領域)の腕の内側の位置に設定されているものとする。一方、対象頂点801aは、メッシュデータ801の中央部付近に配置されているものとする。
この場合、影響度算出部308は、領域903内を通る対象頂点801aから対象制御点501aまでの最短経路1001を算出し、当該算出された最短経路に基づいて当該対象制御点501aと対象頂点801aとの間の距離を算出する。
なお、対象制御点501aと対象頂点801aとの間の距離が影響度として算出される場合、当該影響度は、値(つまり、距離)が小さいほど対象頂点801aに対する対象制御点501aの影響が大きいことを表す。
ここで、図11に示す例のように、対象頂点801aから対象制御点501aまでの経路が折れ曲がる場合には、当該折れ曲がる角度に応じた値を乗算または加算等することによって、当該経路に基づいて算出される距離を増大する(つまり、対象頂点801aに対する対象制御点501aの影響が小さくなる)ようにしてもよい。
また、対象頂点801aから対象制御点501aまでの経路が変形前3Dモデル(被写体402)のスケルトン(骨)と交差する場合には、当該経路に基づいて算出される距離を増大するようにしてもよい。なお、変形前3Dモデルのスケルトン(の位置)は、当該変形前3Dモデルにおける関節の位置等から推定されるものとする。
本実施形態においては、このような対象制御点501aと対象頂点801aとの間の距離を影響度として算出することにより、例えば3Dモデル501の腕の位置に設定された制御点と胴の位置に設定された制御点が相互に影響しないようにすることができる。
再び図4に戻ると、3Dモデル取得部301は、ステップS1において取得された変形前3Dモデル501を変形することによって変形後3Dモデルを取得する(ステップS7)。なお、この変形後3Dモデルは、例えば変形前3Dモデルの向き、姿勢及び体型の少なくとも1つを変形(変更)することによって生成されるものとする。
ここで、図12は、3Dモデル取得部301によって取得された変形後3Dモデル502を示す。図12に示す例では、変形後3Dモデル502は、上述した図5に示す変形前3Dモデル501の向きを10度程度変更した3Dモデルの例を示している。変形後3Dモデル502は、変形前3Dモデル501と同様の複数の頂点から構成されている。変形前3Dモデルと変形後3Dモデルとでは、対応する頂点(つまり、構造的に同一の位置の頂点)には同一の頂点番号が割り当てられている。
なお、変形前3Dモデルとの間で頂点(に割り当てられている頂点番号)の対応が取れるのであれば、例えば上述した回転台401を回転させることによって向きが変更された被写体402を第1の撮像部100が撮像することによって出力されたデプス画像に基づいて変形後3Dモデルが取得(生成)されても構わない。
再び図4に戻ると、制御点設定部303は、3Dモデル取得部301によって取得された変形後3Dモデル502上に複数の制御点を設定する(ステップS8)。この場合、制御点設定部303は、変形後3Dモデル502を構成する複数の頂点のうち、変形前3Dモデル501上に設定された制御点に対応する制御点を設定する(つまり、変形前3Dモデル501上に制御点として設定された頂点に対応する頂点を制御点として設定する)。具体的には、制御点設定部303は、上述したステップS4において制御点設定部303に保持された頂点番号(つまり、変形前3Dモデル501上に設定された複数の制御点の各々に割り当てられている頂点番号)と同一の頂点番号が割り当てられている頂点を制御点として設定する。
ここで、図13は、図12に示す変形後3Dモデル502上に設定された制御点の一例を示す。図13においては便宜的に1つの制御点のみに参照符号が付されているが、変形後3Dモデル502上には、制御点502aを含む複数の制御点が設定(配置)されている。なお、図8に示す変形前3Dモデル501上に設定されている制御点501aと同一の位置(左腕部)に設定されている制御点502aは、当該制御点501aに対応する制御点(つまり、当該制御点501aと同一の頂点番号が割り当てられた制御点)である。
再び図4に戻ると、メッシュデータ変形部309は、ステップS4において変形前3Dモデル上に設定された複数の制御点、ステップS7において算出された影響度(つまり、各頂点に対する各制御点の影響度)及びステップS8において変形後3Dモデル上に設定された複数の制御点に基づいて、ステップS5において生成されたメッシュデータを変形する(ステップS9)。この場合、メッシュデータ変形部309は、例えば変形前3Dモデル及び変形後3Dモデル上に設定された対応する制御点の移動量(ベクトル)を影響度で加重平均することによって、メッシュデータが有する複数の頂点の各々の位置を決定(変更)する。このような処理が実行されることによって、図14に示すように、図9に示すメッシュデータ801が変形されたメッシュデータ(変形後メッシュデータ)802が生成される。
なお、このメッシュデータの変形アルゴリズムとしては、例えばRigid Deformationの手法を用いることができる。この手法において用いられる距離としては、上述した影響度を用いればよい。
以下、Rigid Deformationの手法を用いた場合におけるメッシュデータの変形処理について具体的に説明する。ここでは、メッシュデータが有する複数の頂点のうちのある頂点jの位置を決定する場合について説明する。なお、jは、メッシュデータが有する頂点のインデックスである。
まず、メッシュデータ変形部309は、以下の式(1)に基づいて、全ての制御点iについてwiを算出する。なお、iは、変形前3Dモデル501上に設定された制御点のインデックスである。
この式(1)において、Diは、頂点jから制御点iまでの距離(つまり、頂点jに対する制御点iの影響度)である。また、式(1)におけるαは、定数であり、例えば1または2等とすることができる。
次に、メッシュデータ変形部309は、以下の式(4)に基づいて、μを算出する。
次に、メッシュデータ変形部309は、以下の式(6)に基づいて、Aiを算出する。
本実施形態においては、上記した式(1)〜式(10)を用いて、メッシュデータが有する複数の頂点の全てについて変形後メッシュデータにおける2次元座標が算出される。メッシュデータが有する複数の頂点の各々の位置を、このように算出された2次元座標とすることで、図9に示すメッシュデータ801を変形後メッシュデータ802に変形することができる。
メッシュデータにおけるメッシュの面を構成するための頂点間の接続関係は、ステップS9の処理においては変化しないものとする。また、上記したようにメッシュデータの変形アルゴリズムにおいて用いられるベクトルは、全て行ベクトルであるものとする。
なお、上述したように対象頂点801aから対象制御点501aまでの経路が変形前3Dモデルのスケルトンと交差する場合に当該経路に基づいて算出される距離を増大させるようにした場合、スケルトンに近い領域で変形後メッシュデータ802内のメッシュが裏返る等の歪みが生じる場合がある。この場合には、変形後メッシュデータ802の輪郭付近の頂点を固定し、当該変形後メッシュデータ802が有する各頂点(座標)に対しラプラシアンフィルタを適用することによって、当該変形後メッシュデータ802から歪みが除去されるようにしてもよい。
次に、衣服画像生成部310は、衣服撮影画像及び変形後メッシュデータ802を用いて衣服403の画像(衣服画像)を生成する(ステップS10)。
ここで、上述したステップS5において生成されたメッシュデータ(以下、変形前メッシュデータと表記)801によって表される衣服領域601の形状は、衣服撮像画像に含まれる衣服403の形状と一致する。このため、変形前メッシュデータ801が有する複数の頂点に対応する色彩は衣服撮影画像から特定可能である。
このため、衣服画像生成部310は、変形後メッシュデータ802が有する複数の頂点の各々に対して対応する色彩を付加していくことにより、例えば図15に示すような衣服画像702を生成することができる。なお、図15に示す衣服画像702は、上述した図7に示す衣服画像701を変形したものであり、変形後3Dモデル502が衣服403を着用した場合における当該衣服403の状態(つまり、第2の撮像部200によって撮像された被写体402が着用した衣服403とは向きを変えた状態)を表す画像である。
次に、提示処理部311は、衣服画像生成部310によって生成された衣服画像702を提示する(ステップS11)。これにより、管理者は、衣服画像生成部310によって衣服画像702を確認することができる。
ここで、管理者は、衣服画像702を確認した結果、当該衣服画像702が適切でない(つまり、衣服画像702の修正が必要である)と判断される場合には、上述した変形前3Dモデル501上に設定された制御点の変更(例えば、制御点の移動、追加及び削除等)を指示することができる。
この場合、変形前3Dモデル501上に設定された制御点の変更が指示されたか否かが判定される(ステップS12)。
制御点の変更が指示されたと判定された場合(ステップS12のYES)、例えば管理者の操作に応じて当該制御点が変更された上で、上述したステップS6に戻って処理が繰り返される。
一方、制御点の変更が指示されていないと判定された場合(ステップS12のNO)、すなわち、衣服画像702の修正が必要でない場合には、当該衣服画像702は、衣服画像格納部312に蓄積される(ステップS13)。この場合、衣服画像702は、例えば変形後3Dモデル502の状態(向き、姿勢及び体型等)と対応づけて蓄積される。
ここでは、例えば変形前3Dモデル501の向きを変更した変形後3Dモデル502を取得することによって、被写体402が着用した衣服403とは向きを変えた状態を表す衣服画像702が生成されるものとして説明したが、例えば図16に示すように腕の位置を変更した変形後3Dモデル503を取得することによって、被写体402が着用した衣服403とは袖の位置を変えた状態の衣服画像を生成することも可能である。このように本実施形態においては、変形前3Dモデル501の向き、姿勢及び体型を変更した様々な変形後3Dモデルを取得(生成)することによって、様々な状態(向き、姿勢または体型)の被写体が衣服403を着用した場合における当該衣服403の状態を表す衣服画像を生成することが可能となる。具体的には、変形前3Dモデル501の向いている角度(例えば、回転角度0度)から±5度及び±10度の向きの衣服画像、腕の開き方が異なる衣服画像、異なる体型にフィットした状態の衣服画像等を生成することが可能となる。
上記したように本実施形態においては、被写体402の変形前3Dモデル(第1の3次元モデル)501を取得し、衣服撮像画像から抽出された衣服領域601をメッシュ状に分割することによってメッシュデータ801を生成し、変形前3Dモデル501を変形することによって変形後3Dモデル(第2の3次元モデル)502を取得する。更に、本実施形態においては、変形前3Dモデル501上に設定された複数の制御点(第1の制御点)から変形後3Dモデル502上に設定された複数の制御点(第2の制御点)への移動量に基づいてメッシュデータ801を変形し、衣服撮影画像及び変形されたメッシュデータ802を用いて衣服画像を生成する。
すなわち、本実施形態においては、このような構成により、衣服403を着用した、特定の向き、姿勢及び体型の被写体(例えば、マネキン)402を第2の撮像部200によって撮像するのみで、異なる向き、姿勢及び体型の被写体が衣服403を着用した場合における当該衣服403の状態を表す衣服画像(つまり、被写体402が着用した衣服403の画像701を2次元的に変形した衣服画像)702を生成することが可能となる。このため、本実施形態においては、衣服画像の生成に必要なコスト及び時間を削減することができ、仮想試着に用いられる衣服画像を容易に生成することが可能となる。
また、本実施形態においては、変形前3Dモデル501が変形した場合における当該変形前3Dモデル501上に設定された複数の制御点の各々の移動が、メッシュデータ801が有する複数の頂点の各々に対して与える影響の度合いを表す影響度を算出し、当該影響度を用いてメッシュデータを変形する。なお、本実施形態において算出される影響度は、被写体402が衣服403を着用した状態を表すように変形前3Dモデル501上にメッシュデータ801を重ね合わせた場合における当該変形前3Dモデル501の領域と当該メッシュデータ801によって表される衣服領域601との和領域内での各制御点と各頂点との間の距離を含む。本実施形態においては、このような構成により、例えば3Dモデル上に設定された腕の制御点と胴の制御点が互いに影響しないようにメッシュデータを変形することが可能となるため、より適切にメッシュデータを変形でき、結果として精度の高い衣服画像702を生成することが可能となる。
また、本実施形態においては、例えば変形前3Dモデル501の外周に位置する頂点であって、当該変形前3Dモデル501における身体的特徴点に該当する頂点を制御点として当該変形前3Dモデル501上に設定することにより、変形前3Dモデル501及び変形後3Dモデル502間での制御点の移動を適切に反映するようにメッシュデータを変形することが可能となる。
本実施形態に係る画像処理装置300によって様々なパターン(向き、姿勢及び体型)の衣服画像を蓄積しておくことによって、上述したように店舗内においてユーザが仮想試着を行う際には、例えば撮像部によって撮像された当該ユーザの体型パラメータを取得し、当該体型パラメータと類似する体型パラメータに対応づけられた衣服画像を選択することができる。これにより、ユーザが衣服を着用した状態(衣服がユーザの向き、姿勢及び体型にフィットした状態)を表す精度の高い合成画像を表示することが可能となる。
なお、本実施形態においては、様々なパターンの衣服画像を蓄積しておくものとして説明したが、例えば衣服403毎に、当該衣服403を着用した被写体402の3Dモデル(つまり、変形前3Dモデル)501及び衣服撮像画像のみを蓄積しておき、上記した仮想試着時に、ユーザの状態に応じた変形後3Dモデルを取得して、当該ユーザの向き、姿勢及び体型にフィットする衣服画像を生成するようにしても構わない。すなわち、本実施形態における衣服画像の生成は、店舗内における仮想試着時に実行されても構わない。
(第2の実施形態)
次に、第2の実施形態について説明する。図17は、本実施形態に係る画像処理装置の主として機能構成を示すブロック図である。なお、前述した図3と同様の部分には同一参照符号を付してその詳しい説明を省略する。ここでは、図3とは異なる部分について主に述べる。
また、本実施形態に係る画像処理装置を含む画像処理システムの構成は、前述した第1の実施形態と同様であるため、適宜、図1及び図2を用いて説明する。
図17に示すように、本実施形態に係る画像処理装置1100は、境界情報取得部1101及び奥行き情報算出部1102を含む。
ここで、例えば被写体402が着用した衣服403が腕または胴体に膨らみがある(ルーズな)衣服である場合には、衣服撮像画像から抽出された衣服領域において腕と胴体とが一体化する可能性がある。このように腕と胴体とが一体化した場合には、例えば腕の位置に設定されている制御点と胴体に配置されている頂点との間の最短距離が短くなる(つまり、当該頂点に対する当該制御点の影響度が大きくなる)ため、メッシュデータを変形する際に、腕の位置の変化に応じて胴体にも歪みが生じる場合がある。
そこで、本実施形態において、境界情報取得部1101は、衣服領域抽出部306によって抽出された衣服領域の境界を示す境界情報を取得する。なお、境界情報取得部1101によって取得された境界情報は、後述するように変形前3Dモデル上に設定された複数の制御点の各々とメッシュデータが有する複数の頂点の各々との間の距離(つまり、各頂点に対する各制御点の影響度)を算出する際に用いられる。
また、前述した第1の実施形態における衣服領域のメッシュデータは、2次元データである。このため、メッシュデータを変形した場合に、例えば腕と胴体とのメッシュ同士が重なり合うことがある。このようなメッシュデータを用いて衣服画像を生成した場合には、当該衣服画像が正しく描画されない可能性がある。
そこで、本実施形態において、奥行き情報算出部1102は、メッシュデータ生成部307によって生成されたメッシュデータが有する複数の頂点の各々に対応する奥行き情報を算出する。なお、この複数の頂点の各々に対応する奥行き情報(座標)は、制御点設定部303によって変形後3Dモデル上に設定された制御点(頂点)に付加されている3次元位置(座標)に含まれる奥行き情報(当該制御点の第2の撮像部200に対する奥行き方向の位置を示す情報)に基づいて算出される。奥行き情報算出部1102によって算出された奥行き情報は、後述するように変形後メッシュデータを用いて衣服画像を生成する際に用いられる。
次に、図18のフローチャートを参照して、本実施形態に係る画像処理装置1100の処理手順について説明する。
まず、前述した図4に示すステップS1〜S3の処理に相当するステップS21〜S23の処理が実行される。
次に、境界情報取得部1101は、衣服領域抽出部306によって衣服撮像画像から抽出された衣服領域の境界(領域境界)を示す境界情報を取得する(ステップSS24)。
具体的には、上記したステップS23において衣服領域が抽出された場合、当該衣服領域は、管理者等に対して提示される。これにより、管理者は、衣服領域抽出部306によって抽出された衣服領域(つまり、抽出結果)を確認することができる。
ここで、図19は、衣服撮像画像取得部305によって取得された衣服撮像画像の一例を示す。また、図20は、図19に示す衣服撮像画像から抽出された衣服領域の一例を示す。この図20に示す衣服領域においては、腕と胴体とが一体化している。このような衣服領域(がメッシュ化されたメッシュデータ)では、後述する影響度の算出処理において、例えば腕の位置に設定されている制御点と胴体に配置されている頂点との間の最短距離が短く算出されてしまうため、影響度が適切でない。
この場合、管理者は、図21に示すように、例えば提示された衣服領域上で、境界(を表す境界情報)を指定することができる。図21に示す例では、衣服領域の両脇の部分において境界1201及び1202が指定されている。
これにより、ステップS24において、境界情報取得部1101は、上記したように管理者によって指定された境界情報を取得することができる。
このように境界情報取得部1101によって取得された境界情報は、属性情報として衣服領域に付加される(与えられる)。
ステップS24の処理が実行されると、前述した図4に示すステップS4及びS5の処理に相当するステップS25及びS26の処理が実行される。
次に、奥行き情報算出部1102は、メッシュデータ生成部307によって生成されたメッシュデータが有する複数の頂点の各々に対応する奥行き情報を算出する(ステップS27)。
具体的には、奥行き情報算出部1102は、例えば上述したように被写体402が衣服403を着用した状態を表すように変形前3Dモデル上にメッシュデータを重ね合わせた場合における、当該メッシュデータが有する複数の頂点の各々の近傍に位置する制御点(つまり、変形前3Dモデルを構成する頂点)に対応する変形後3Dモデルに付加されている3次元位置(座標)から当該頂点の奥行き方向の位置を示す座標(つまり、奥行き情報)を算出(補間)する。このように奥行き情報算出部1102によって算出されたメッシュデータが有する複数の頂点の各々に対応する奥行き情報は、当該頂点に付加される。
次に、影響度算出部308は、制御点設定部303によって変形前3Dモデル上に設定された複数の制御点の各々及びメッシュデータ生成部307によって生成されたメッシュデータが有する複数の頂点の各々の組み合わせ毎の影響度(各頂点に対する各制御点の影響度)を算出する(ステップS28)。
この場合、影響度算出部308は、前述した第1の実施形態において説明したように、各頂点から各制御点までの最短経路に基づいて、各頂点に対する各制御点の影響度(つまり、各頂点と各制御点との間の距離)を算出する。本実施形態において、この場合における最短経路は、図22に示すように、上記した衣服領域(のメッシュデータ)に付加された境界情報によって示される境界1201及び1202を跨がない経路(例えば、経路1301)であるものとする。
ステップS28の処理が実行されると、図4に示すステップS7〜S9の処理に相当するステップS29〜S31の処理が実行される。
次に、衣服画像生成部310は、変形後メッシュデータが有する複数の頂点の各々に対して対応する色彩を付加していくことにより衣服画像を生成する(ステップS32)。このとき、衣服画像生成部310は、例えばZバッファを併用することにより正しい奥行き関係で衣服画像を生成する。具体的には、衣服画像生成部310は、変形後メッシュデータが有する複数の頂点の各々に付加された奥行き情報に基づいて隠面消去処理等を実行する。
ステップS32の処理が実行されると、前述した図4に示すステップS11〜S13の処理に相当するステップS33〜S35の処理が実行される。なお、ステップS34において制御点の変更が指示されたと判定された場合、上述したステップS27に戻って処理が繰り返される。
上記したように本実施形態においては、メッシュデータが有する複数の頂点の各々に対して当該頂点に対応する奥行き情報を付加し、衣服画像を生成する際に、変形されたメッシュデータ(変形後メッシュデータ)に付加された奥行き情報に基づいて隠面消去処理を実行することにより、正しい奥行き関係での描画を行うことが可能となるため、精度の高い衣服画像を生成することが可能となる。
更に、本実施形態においては、抽出された衣服領域の境界を示す境界情報を取得し、当該境界情報を用いて各制御点と各頂点との間の距離を算出することにより、適切な影響度を算出することが可能となり、結果として、変形前3Dモデル及び変形後3Dモデルの変化に応じた正確な衣服画像を生成することが可能となる。
(第3の実施形態)
次に、第3の実施形態について説明する。図23は、本実施形態に係る画像処理装置の主として機能構成を示すブロック図である。なお、前述した図3と同様の部分には同一参照符号を付してその詳しい説明を省略する。ここでは、図3と異なる部分について主に述べる。
また、本実施形態に係る画像処理装置を含む画像処理システムの構成は、前述した第1の実施形態と同様であるため、適宜、図1及び図2を用いて説明する。
図23に示すように、本実施形態に係る画像処理装置1400は、衣服撮像画像取得部1401及び衣服画像生成部1402を含む。
衣服撮像画像取得部1401は、第2の撮像部200から出力された、衣服403を着用した被写体402を含む衣服撮像画像を取得する。この衣服撮像画像取得部1401によって取得される衣服撮像画像には、例えば第1の状態の被写体402を含む衣服撮像画像(第1の衣服撮像画像)及び当該第1の状態とは異なる第2の状態の被写体402を含む衣服撮像画像(第2の衣服撮像画像)が含まれる。具体的には、第1の衣服撮像画像は第2の撮像部200(及び第1の撮像部100)に対して例えば略正面方向を向いた被写体402を含む衣服撮像画像を含み、第2の衣服撮像画像は当該略正面方向から10度程度回転した方向(角度)を向いた被写体402を含む衣服撮像画像を含む。
なお、本実施形態において、3Dモデル取得部301によって取得される変形前3Dモデルは、被写体402の第1の状態(例えば、向き、姿勢及び体型等)を表すモデルとする。一方、3Dモデル取得部301によって取得される変形後3Dモデルは、被写体402の第2の状態(例えば、向き、姿勢及び体型等)を表すモデルとする。
衣服画像生成部1402は、衣服撮像画像取得部1401によって取得された第2の衣服撮像画像及びメッシュデータ変形部309によって変形されたメッシュデータ(変形後メッシュデータ)を用いて衣服403の画像を生成する。
次に、図24のフローチャートを参照して、本実施形態に係る画像処理装置1400の処理手順について説明する。
まず、3Dモデル取得部301は、第1の撮像部100から出力された第1の状態の被写体402のデプス画像に基づいて、当該第1の状態の被写体402の3Dモデル(変形前3Dモデル)を取得する(ステップS41)。このステップS41において取得される変形前3Dモデルは、例えば略正面方向を向いた被写体402を表すモデルである。
次に、衣服撮像画像取得部1401は、第2の撮像部200から出力された第1の衣服撮像画像を取得する。この第1の衣服撮像画像は、上述した第1の撮像部100による撮像時と同等の状態(つまり、第1の状態)で衣服403を着用した被写体402を含む画像である。換言すれば、第1の衣服撮像画像は、例えば衣服403を着用し、かつ、略正面方向を向いた被写体402を含む画像である。
また、衣服撮像画像取得部1401は、第1の衣服撮像画像に加えて、第1の状態とは異なる状態(つまり、第2の状態)で衣服403を着用した被写体402を含む第2の衣服撮像画像を取得する。この第2の衣服撮像画像は、例えば衣服403を着用し、かつ、略正面方向から10度程度回転した向き(角度)を向いた被写体402を含む画像である。
すなわち、衣服撮像画像取得部1401は、衣服403を着用した第1の状態の被写体402を含む第1の衣服撮像画像及び衣服403を着用した第2の状態の被写体402を含む第2の衣服撮像画像を取得する(ステップS42)。
上記した第1及び第2の衣服撮像画像は、例えば前述した回転台401を手動で回転させながら第2の撮像部200が被写体402を撮像することによって取得されてもよいし、自動的に回転させた回転台401に載置された被写体402を回転角度に応じて自動的に撮像するように第2の撮像部200を制御することによって取得されても構わない。
以下、前述した図4に示すステップS3〜S9の処理に相当するステップS43〜S49の処理が実行される。
ここで、ステップS47において取得される変形後3Dモデルは、例えば略正面方向から10度程度回転した向き(角度)を向いた被写体402(つまり、第2の状態の被写体402)を表すモデルとする。
この場合、ステップS49において変形されたメッシュデータ(変形後メッシュデータ)は、上述した第2の衣服撮像画像に含まれる第2の状態の被写体402が着用した衣服403の領域に相当する領域を表すデータとなる。
このため、衣服画像生成部1402は、第2の衣服撮像画像に対して変形後メッシュデータ(マスク画像)を適用する(つまり、マスク処理を実行する)ことによって、当該第2の衣服撮像画像から衣服403の領域を切り抜くことができる(ステップS50)。これにより、衣服画像生成部1402は、衣服画像を生成する。
ステップS50の処理が実行されると、前述した図4に示すステップS11〜S13の処理に相当するステップS51〜S53の処理が実行される。なお、ステップS52において制御点の変更が指示されたと判定された場合には、例えば管理者の操作に応じて当該制御点が変更された上で、ステップS46に戻って処理が繰り返される。
上記したように本実施形態においては、前述した第1の実施形態と同様に変形されたメッシュデータ(変形後メッシュデータ)を、衣服403を着用した第2の状態の被写体402を含む第2の衣服撮像画像に適用することによって衣服画像が生成される。
ここで、前述した第1の実施形態においては変形後メッシュデータが有する複数の頂点の各々に対して対応する色彩を付加していくことにより衣服画像を生成するため、当該衣服画像における衣服403の色彩(及び模様)等が実際の衣服403と異なってしまう場合がある。これに対して、本実施形態においては、第2の衣服撮像画像から衣服403の領域(部分)を切り抜くことが可能となるため、前述した第1の実施形態における衣服画像と比較して、より精度の高い衣服画像を生成することが可能となる。
なお、本実施形態においては、上述したように被写体402が載置された回転台401を自動的に回転させることによって様々な回転角度の衣服撮像画像を連続的に撮像(取得)しておくことにより、当該様々な角度(向き)に対応する衣服画像を容易に生成することが可能となる。同様に、異なる姿勢または体型の被写体402を含む衣服撮像画像を撮像しておくことにより、当該姿勢または体型に対応する衣服画像を生成することも可能である。
また、本実施形態においては、第2の衣服撮像画像中の衣服403の領域と上述した変形後メッシュデータによって表される衣服403の領域とが完全に一致しない場合がある。このため、変形後メッシュデータ(つまり、マスク画像)の主として境界部分に多段階(例えば、0〜255)の透過度を持たせるような構成とすることも可能である。これによれば、第2の衣服撮像画像中の衣服403の領域と上述した変形後メッシュデータによって表される衣服403の領域とに誤差が生じている場合であっても、当該誤差の影響を軽減することが可能となる。
(第4の実施形態)
次に、第4の実施形態について説明する。図25は、本実施形態に係る画像処理装置の主として機能構成を示すブロック図である。なお、前述した図3及び図23と同様の部分には同一参照符号を付してその詳しい説明を省略する。ここでは、図3及び図23と異なる部分について主に述べる。
また、本実施形態に係る画像処理装置を含む画像処理システムの構成は、前述した第1の実施形態と同様であるため、適宜、図1及び図2を用いて説明する。
なお、本実施形態は、前述した第1の実施形態と第3の実施形態とを組み合わせた構成とする点で、前述した各実施形態とは異なる。
図25に示すように、本実施形態に係る画像処理装置1500は、第1画像生成部1501、第2画像生成部1502及び衣服画像生成部1503を含む。
第1画像生成部1501は、前述した第1の実施形態において説明した衣服画像生成部310に相当する機能部であり、変形後メッシュデータが有する複数の頂点の各々に対して対応する色彩を付加していくことにより衣服403の画像(以下、第1の画像と表記)を生成する。なお、変形後メッシュデータが有する複数の頂点の各々に対応する色彩は、衣服撮影画像(第1の衣服撮影画像)から特定可能である。
第2画像生成部1502は、前述した第3の実施形態において説明した衣服画像生成部1402に相当する機能部であり、第2の衣服撮影画像に対して変形後メッシュデータを適用することにより衣服403の画像(以下、第2の画像と表記)を生成する。
衣服画像生成部1503は、第1画像生成部1501によって生成された第1の画像及び第2画像生成部1502によって生成された第2の画像を用いて衣服画像を生成する。
次に、図26のフローチャートを参照して、本実施形態に係る画像処理装置1500の処理手順について説明する。
まず、前述した図24に示すステップS41〜S49の処理に相当するステップS61〜S69の処理が実行される。
次に、第1画像生成部1501は、第1の衣服撮影画像及び変形後メッシュデータを用いて第1の画像を生成する(ステップS70)。なお、第1画像生成部1501は、前述した図4に示すステップS10の処理と同様の処理を実行することによって第1の画像を生成する。
また、第2画像生成部1502は、第2の衣服撮影画像及び変形後メッシュデータを用いて第2の画像を生成する(ステップS71)。なお、第2画像生成部1502は、前述した図24に示すステップS50の処理と同様の処理を実行することによって第2の画像を生成する。
次に、衣服画像生成部1503は、第1画像生成部1501によって生成された第1の画像と第2画像生成部1502によって生成された第2の画像とを混合することによって衣服画像を生成する(ステップS72)。
ここで、前述した第1の実施形態において説明した処理によって生成される衣服画像(つまり、第1の画像)は変形後メッシュデータ(が有する複数の頂点の各々)に対応する色彩を付していくことによって生成された画像であるため、当該画像中に背景領域等が含まれることはないが、上述したように当該画像における衣服403の色彩が実際の衣服403と異なってしまう場合がある。
一方、前述した第3の実施形態において説明した処理によって生成される衣服画像(つまり、第2の画像)は第2の衣服撮影画像から衣服403の領域を切り抜くことによって生成された画像であるため、当該画像における衣服403の色彩等に関しては高い精度を有する。しかしながら、第2の衣服撮影画像中の衣服403の領域と変形後メッシュデータによって表される衣服403の領域とが完全に一致しない場合には、当該第2の衣服撮影画像中の衣服403の領域が削られてしまうまたは衣服画像中に背景領域が含まれてしまう場合がある。
このため、本実施形態においては、図27に示すように、輪郭付近の領域(以下、第1の領域)1601には第1の画像を採用し、当該輪郭付近以外の領域(以下、第2の領域)には第2の画像を採用するように、衣服画像が生成される。
なお、第1の領域は、例えば第1の画像における衣服403の輪郭線から内側方向に一定ピクセル数分の幅を有する領域と定義することができる。
ステップS72の処理が実行されると、前述した図4に示すステップS11〜S13(図23に示すステップS51〜S53)の処理に相当するステップS73〜S75の処理が実行される。なお、ステップS74において制御点の変更が指示されたと判定された場合には、例えば管理者の操作に応じて当該制御点が変更された上で、ステップS66に戻って処理が繰り返される。
上記したように本実施形態においては、前述した第1の実施形態において説明した処理によって生成される第1の画像と前述した第3の実施形態において説明した処理によって生成される第2の画像とを混合することによって衣服画像が生成される。本実施形態においては、このような構成により、例えば背景領域等が含まれることなく、色彩に関する精度の高い衣服画像を生成することが可能となる。
なお、本実施形態では第1の領域及び第2の領域にそれぞれ異なる画像(つまり、第1の画像及び第2の画像)を採用して衣服画像を生成するため、当該衣服画像において、第1の領域部分と第2の領域部分とが分離しているような不自然な状態となる場合がある。このため、本実施形態においては、図28に示すように、第1の領域と第2の領域との境界領域において第1の画像及び第2の画像の不透明度(または透明度)を変化させる構成とすることで、当該画像間の境界が滑らかとなるようにすることも可能である。
以上説明した少なくとも1つの実施形態によれば、仮想試着に用いられる衣服の画像を容易に生成することが可能な画像処理装置、画像処理システム、画像処理方法及びプログラムを提供することが可能となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。