以下、図面を参照して、実施形態について説明する。
図1は、本実施形態に係る画像処理装置を含む画像処理システムの外観の一例を示す。図1に示す画像処理システム10は、筐体11、表示部12、体重測定部13、入力部14及び撮像部を備える。なお、本実施形態に係る画像処理装置は、筐体11の内部に設けられているが、図1においては省略されている。
図1に示すように、画像処理システム10が備える筐体11は矩形形状を有し、当該筐体11の一面には表示部12が組み込まれている。表示部12は、例えば液晶表示装置のような表示装置であり、各種画像等を表示する。
画像処理システム10においては、被写体(以下、第1被写体と表記)Pが各種衣服を試着した状態を示す合成画像Wが表示部12に表示される。なお、画像処理システム10は、このような合成画像Wを印刷する印刷装置や、当該合成画像Wをネットワークを介して外部装置に送信する送信機等を更に備えていても構わない。
ここで、第1被写体Pは、衣服を試着する対象である。なお、第1被写体Pは、衣服を試着する対象であればよく、生物であってもよいし、非生物であってもよい。第1被写体Pが生物である場合には、当該第1被写体Pには例えば人物等が含まれるが、当該第1被写体は人物に限られない。第1被写体Pは、例えば犬や猫等のペットであってもよい。また、第1被写体Pが非生物である場合には、当該第1被写体Pには例えば人体やペットの形状を模したマネキン、衣服及びその他の物体等が含まれるが、当該第1被写体Pはこれら以外であってもよい。また、第1被写体Pは、衣服を着用した状態の生物や非生物であってもよい。
また、衣服とは、第1被写体Pが着用可能な品物(物品)である。衣服としては、例えば上着、スカート、ズボン、靴及び帽子等が挙げられる。なお、衣服は、上着、スカート、ズボン、靴及び帽子等に限定されない。
第1被写体Pは、例えば表示部12に対面した位置から、表示部12に提示(表示)された合成画像Wを視認することができる。
体重測定部13は、表示部12に対面した領域の床部に設けられている。表示部12に対面する位置に第1被写体Pが位置すると、体重測定部13は、第1被写体Pの体重を測定する。
入力部14は、ユーザによる操作指示に応じて各種情報を入力する(受け付ける)、例えばマウス、ボタン、リモコン、キーボード、マイク等の音声認識装置、及び画像認識装置のうちの1つまたは複数を組み合わせたものである。なお、本実施形態におけるユーザとは、第1被写体のような画像処理システム10に対する操作者の総称である。
図1に示す例では、入力部14として画像認識装置が採用された場合について示しているが、この場合には入力部14の前に対峙するユーザの身振り手振り等を、ユーザの各種指示として受け付けることができる。この場合、画像認識装置では、身振り手振り等の各動きに対応する指示情報を予め記憶し、認識された身振りや手振りに対応する指示情報を読み取ることで、ユーザによる操作指示を受け付ければよい。なお、入力部14は、携帯端末等の各種情報を送信する外部装置から、ユーザの操作指示を示す信号を受け付ける通信装置であってもよい。この場合には、入力部14は、外部装置から受信した操作指示を示す信号を、ユーザによる操作指示として受け付ければよい。
また、図1において表示部12及び入力部14は別個に設けられているが、当該表示部12及び入力部14は一体的に構成されていてもよい。具体的には、表示部12及び入力部14は、入力機能及び表示機能の双方を備えたUI(User Interface)部として構成されていてもよい。UI部には、タッチパネル付きLCD(Liquid Crystal Display)等が含まれる。
撮像部は、第1撮像部15A及び第2撮像部15Bを含む。第1撮像部15Aは、所定時間毎に第1被写体Pを連続的に撮像し、当該撮像された第1被写体Pを含む被写体画像(以下、第1被写体Pの被写体画像と表記)を順次取得する。この被写体画像は、ビットマップ画像であり、画素毎に第1被写体Pの色彩及び輝度等を示す画素値の規定された画像である。第1撮像部15Aとしては、被写体画像を取得することが可能な撮像装置(カメラ)が用いられる。
第2撮像部15Bは、所定時間毎に第1被写体Pを連続的に撮像し、当該撮像された第1被写体Pを含むデプス画像(以下、第1被写体Pのデプス画像と表記)を順次取得する。このデプス画像は、距離画像とも称され、画素毎に第2撮像部15Bからの距離を規定した画像である。第2撮像部15Bとしては、デプス画像を取得することが可能な撮像装置(デプスセンサ)が用いられる。
なお、本実施形態において、第1撮像部15A及び第2撮像部15Bは、同じタイミングで第1被写体Pを撮像する。すなわち、第1撮像部15A及び第2撮像部15Bは、図示しない制御部等によって、同じタイミングで同期して撮像を順次行うように制御されている。これにより、第1撮像部15A及び第2撮像部15Bは、同じタイミングで撮像(取得)された第1被写体Pの被写体画像及びデプス画像(の組)を順次取得する。このように同じタイミングで取得された当該第1被写体Pの被写体画像及びデプス画像は、後述する画像処理装置に出力される。
上記した入力部14及び撮像部(第1撮像部15A及び第2撮像部15B)は、図1に示すように筐体11に支持されている。入力部14及び第1撮像部15Aは、筐体11における表示部12の水平方向両端部付近に設けられている。また、第2撮像部15Bは、筐体11における表示部12の上部付近に設けられている。なお、入力部14の設置位置は、この位置に限られない。また、第1撮像部15A及び第2撮像部15Bは、第1被写体Pを撮像可能な位置に設けられていればよく、図1に示す位置に限定されない。
なお、画像処理システム10は、図2に示すように携帯端末として実現されても構わない。この場合、携帯端末としての画像処理システムの筐体11Aには、表示部12及び入力部14の双方の機能を備えたUI部と、第1撮像部15A及び第2撮像部15Bとが設けられている。また、本実施形態に係る画像処理装置は、筐体11Aの内部に設けられる。
図3は、本実施形態に係る画像処理装置の主として機能構成を示すブロック図である。図3に示すように、画像処理装置100は、表示部12、体重測定部13、入力部14、第1撮像部15A、第2撮像部15B及び記憶部16と通信可能に接続されている。図3において、表示部12、体重測定部13、入力部14、撮像部(第1撮像部15A及び第2撮像部15B)及び記憶部16は、画像処理装置100と別個に設けられているが、これらのうちの少なくとも1つが当該画像処理装置100と一体的に構成されていても構わない。
なお、表示部12、体重測定部13、入力部14、第1撮像部15A及び第2撮像部15Bについては、上述した図1において説明した通りであるため、その詳しい説明を省略する。
記憶部16は、各種データを記憶する。具体的には、記憶部16は、第1情報、第2情報、第3情報及び第4情報を予め記憶する。ここでは、まず、第1情報〜第4情報について説明する。
第1情報は、衣服を識別するための識別情報(以下、衣服IDと表記)毎に、複数の衣服サイズと、複数の衣服サイズの各々に対応し、異なる体型を示す複数の体型パラメータと、衣服サイズに対応する体型パラメータの体型の被写体(以下、第2被写体と表記)が当該衣服サイズの衣服を着用した状態を示す複数の衣服画像とを対応づけて含む情報である。
なお、第2被写体は、第1情報に含まれる衣服画像の取得時(つまり、衣服の撮像時)に、当該衣服を着用していた被写体である。第2被写体は、衣服を着用した被写体であればよく、上述した第1被写体と同様に人物等の生物であってもよいし、人体の形状をしたマネキン等の非生物であってもよい。
ここで、図4は、記憶部16に記憶されている第1情報のデータ構造の一例を示す。図4に示す例では、第1情報は、衣服の種類と、衣服IDと、衣服サイズと、体型パラメータと、モデルIDと、姿勢情報と、衣服画像と、属性情報とを対応づけて含む。
衣服の種類は、衣服を予め定めた分類条件で複数の種類に分類したときの、各種類を示す。衣服の種類には例えばトップス、アウター及びボトム等が含まれるが、当該衣服の種類はこれらに限定されない。
衣服IDは、上記したように衣服を識別するための情報である。衣服は、具体的には既製服を示す。衣服IDには例えば製品番号及び衣服の名称等が含まれるが、当該衣服IDはこれらに限られない。製品番号としては、例えばJANコード等を利用することができる。名称としては、例えば衣服の品名等を利用することができる。
衣服サイズは、衣服の大きさを示す情報である。衣服サイズは、既製服のサイズである、S、M、L、LL及びXL等である。なお、衣服サイズの種類は、これらに限定されない。衣服サイズの種類は、例えば既製服の製造元または販売先の国等により表記方法が異なる。
体型パラメータは、第2被写体の体型を示す情報である。体型パラメータは、1または複数のパラメータを含む。このパラメータは、例えば衣服の仕立て時または購入時等に採寸される人体の1または複数の箇所に対応する採寸値や体重等である。具体的には、体型パラメータは、例えば胸囲、胴囲、腰囲、身長、肩幅及び体重のうち少なくとも1つのパラメータを含むものとする。なお、体型パラメータに含まれるパラメータは、これらのパラメータに限定されない。例えば体型パラメータは、袖丈及び股下等のパラメータを更に含んでいてもよい。また、パラメータとしての採寸値は、実際に採寸した値に限定されず、採寸値を推測した値や、採寸値に相当する値(ユーザが任意に入力した値等)を含む。
ここで、同じまたは略同じ体型のユーザであっても、異なる衣服サイズ「S」、「M」、「L」、「LL」の各々衣服を着用する場合がある。換言すれば、ある体型のユーザが着用する衣服サイズは、1つに限定されず、ユーザは、趣向や衣服の種類等により異なる衣服サイズの衣服を着用する場合がある。
このため、本実施形態における第1情報においては、1つの衣服IDの1つの衣服サイズに対して、異なる体型を示す複数の体型パラメータが対応づけられている。
モデルIDは、対応する体型パラメータの体型の第2被写体を識別するための識別情報である。
衣服画像は、画素毎に、衣服の色彩及び輝度等を示す画素値の規定された画像である。第1情報は、体型パラメータの各々に対応する衣服画像を含む。すなわち、第1情報は、1つの衣服IDの1つの衣服サイズに対して、異なる体型を示す複数の体型パラメータを対応づけ、当該複数の体型パラメータのそれぞれに衣服画像を対応づける。
なお、衣服画像は、第1情報における対応する衣服サイズの衣服を、対応する体型パラメータの体型の第2被写体が着用した状態を示す画像である。すなわち、1つの衣服サイズに対応する、異なる体型を示す複数の体型パラメータの各々に対応する衣服画像は、同じ衣服サイズの衣服を異なる体型の複数の第2被写体が着用した状態をそれぞれ示す。
姿勢情報は、衣服画像の取得時の第2被写体の姿勢を示す情報である。姿勢情報は、第2被写体の、上述した撮像部に対する第2被写体の向き及び動き等を示す。
ここで、第2被写体の向きとは、衣服画像の取得時の当該衣服画像の衣服を着用した第2被写体の撮像部に対する向きを示す。例えば、第2被写体の向きとしては、顔及び体が撮像部に対して正面を向いている方向(正面方向)、顔及び体が撮像部に対して左右を向いている方向(左右方向)、これら以外の他の方向等がある。なお、本実施形態において、第2被写体の向きは、例えば正面方向に対して体が向いている方向がなす角度(つまり、回転角度)によって示される。
第2被写体の動きは、衣服画像の衣服を着用した第2被写体の骨格の位置を示す骨格情報によって示される。骨格情報は、衣服画像を構成する各画素の画素位置に対応する、当該衣服画像の衣服を着用した第2被写体の骨格の位置を示す情報を、画素毎に定めた情報である。本実施形態において、姿勢情報は、第2被写体の向きと骨格情報とを含むものとする。
また、本実施形態において、第1情報は、複数の体型パラメータのそれぞれに対応する衣服画像として、異なる姿勢情報のそれぞれ(つまり、各回転角度)に対応する複数の衣服画像を含む。
すなわち、本実施形態において、衣服画像は、ある衣服サイズの衣服が、体型パラメータによって特定される体型の第2被写体によって着用された状態を示す画像であるとともに、第2被写体の撮像時の姿勢に応じた画像である。
属性情報は、対応する衣服IDによって識別される衣服の属性を示す情報である。属性情報は、例えば衣服の名称、衣服の販売元(ブランド名等)、衣服の形状、衣服の色彩、衣服の素材及び衣服の値段等を含む。
なお、第1情報は、例えば衣服IDと、衣服サイズと、体型パラメータと、姿勢情報と、衣服画像とを少なくとも対応づけて含む情報であればよい。すなわち、第1情報は、衣服の種類、モデルID及び属性情報の少なくとも1つを含まなくてもよい。
また、第1情報は、衣服の着方(ボタンを留めた着方、ボタンを空けた着方等)を更に対応づけてもよい。この場合、第1情報においては、1つの姿勢情報に対応する衣服画像として、着方に応じた複数の衣服画像が対応づけられていればよい。
図5は、第1情報を具体的に示す模式図である。図5に示すように、第1情報は、体型パラメータ201の各々に対応する衣服画像を含む。すなわち、第1情報は、1つの衣服IDによって識別される衣服(Aブランド、BBBセーター)の、衣服サイズ(M衣服サイズ、L衣服サイズ、S衣服サイズ)の各々に対して、異なる体型を示す複数の体型パラメータ201を対応づける。また、第1情報は、複数の体型パラメータ201のそれぞれに、衣服画像(ここでは、衣服画像202A〜202C)の各々を対応づけている。なお、図5に示す例では、体型パラメータは、身長、胸囲、胴囲、腰囲及び肩幅をパラメータとして含む。
すなわち、衣服画像202A〜202Cは、同じ衣服サイズの同じ衣服(図5では、Aブランド、BBBセーター、Mサイズ)について、体型の異なる複数の第2被写体の各々が着用した状態を示す画像である。
図6は、記憶部16に記憶されている第2情報のデータ構造の一例を示す。第2情報は、衣服IDと、体型を示すパラメータと、重み付値とを対応づけて含む。体型を示すパラメータは、上記した第1情報における体型パラメータに含まれるパラメータと同様である。重み付値は、対応する衣服IDによって識別される衣服を着用したときの見え方に対するパラメータの影響の度合いを示す。重み付値が小さいほど、衣服を着用したときの見え方に対するパラメータの影響の度合いが小さい。一方、重み付値が大きいほど、衣服を着用したときの見え方に対するパラメータの影響の度合いが大きい。この重み付値は、後述する非類似度の算出に用いられる。第2情報は、衣服の種類を更に対応づけて含む情報であってもよい。
例えば、身長以外のパラメータがある衣服IDによって識別される衣服の着用時の見え方に対して与える影響の度合いが、身長に比べて大きいとする。この場合、画像処理装置100は、図6に示すように、この衣服IDに対応するパラメータの重み付値として、身長の重み付値を他のパラメータの重み付値に比べて相対的に小さくした第2情報を設定する。
また、例えば、衣服IDに対応する衣服の種類が“トップス”である場合、人体の下半身側のパラメータは、衣服を着用したときの見え方に対する影響の度合いが小さい。この場合、画像処理装置100は、衣服の種類“トップス”に対応する衣服IDのパラメータの重み付値として、腰囲及び身長の重み付値を、他のパラメータの重み付値に比べて相対的に小さくした第2情報を設定する。
各衣服IDの各パラメータに対応する重み付値は、ユーザによる入力部14に対する操作指示等によって適宜変更可能である。ユーザは、各衣服IDによって識別される衣服毎に、パラメータの重み付値を予め入力し、第2情報に登録すればよい。
図7は、記憶部16に記憶されている第3情報のデータ構造の一例を示す。第3情報は、衣服の種類と、非類似度の算出に用いられるパラメータとを対応づけて含む。なお、第3情報は、衣服ID毎に、非類似度の算出に用いられるパラメータを対応づけて含む情報であってもよい。また、第3情報は、衣服画像毎に、非類似度の算出に用いられるパラメータを対応づけて含む情報であってもよい。なお、非類似度の算出については後述する。
図7に示す例では、例えば衣服の種類が“アウター”である場合、複数のパラメータのうち、胸囲、腰囲、胴囲及び肩幅が非類似度の算出に用いられ、身長が非類似度の算出には用いられないことが示されている。また、図7に示す例では、衣服の種類が“スカート”である場合、複数のパラメータのうち、胴囲及び腰囲が非類似度の算出に用いられ、胸囲、肩幅及び身長が非類似度の算出に用いられないことが示されている。
また、第3情報は、衣服の種類または衣服ID毎に、固有のパラメータを対応づけて含む情報であってもよい。例えば衣服の種類がトップスまたはアウターである場合、第3情報は、対応するパラメータとして袖丈を更に含んでいてもよい。また、衣服の種類がパンツである場合、第3情報は、対応するパラメータとして、股下を更に含んでいてもよい。
第4情報は、衣服IDと、補正値とを対応づけて含む。補正値は、後述する第1被写体の体型を示す体型パラメータの補正に用いられる。画像処理装置100は、対応する衣服IDによって識別される衣服における体型を隠す度合いが高いほど、「0」以上「1」未満で、かつ、より小さい値を補正値として予め設定する。一方、画像処理装置100は、対応する衣服IDによって識別される衣服における体型を隠す度合いが最も低い場合を「1」とし、この度合いが低いほど、「1」により近い値を補正値として予め設定する。
例えば、衣服IDによって識別される衣服がTシャツまたは下着等の身体に密着する衣服である場合、第4情報は、この衣服IDに対応する補正値として「1」または「1」に近い値を予め設定する。一方、衣服IDによって識別される衣服が、厚い生地のセーターまたはコート等の体型を隠す度合いの高い衣服である場合、第4情報は、この衣服IDに対応する補正値として、「0」以上「1」未満で、かつ、より「0」に近い値(例えば、0.3等)を予め設定する。
第4情報に含まれる衣服ID及び補正値は、ユーザによる入力部14に対する操作指示等によって適宜変更可能である。
再び図3に戻って、本実施形態に係る画像処理装置100の機能構成について説明する。なお、画像処理装置100は、CPU(Central Processing Unit)、RAM(Random Access Memory)及びROM(Read Only Memory)等を含んで構成されるコンピュータである。なお、画像処理装置100は、CPU以外の回路等で構成されても構わない。
図3に示すように、画像処理装置100は、画像取得部101、骨格情報生成部102、判別部103、受付部104、体型パラメータ取得部105、姿勢情報算出部106、特定部107、調整部108、位置算出部109、決定部110、合成画像生成部111、表示制御部112及び更新部113を含む。本実施形態において、これらの各部101〜113の一部または全ては、例えばCPU等にプログラムを実行させること、すなわち、ソフトウェアによって実現されてもよいし、IC(Integrated Circuit)等のハードウェアによって実現されてもよいし、当該ソフトウェア及びハードウェアの組み合わせ構成として実現されてもよい。
画像取得部101は、被写体画像取得部101a及びデプス画像取得部101bを含む。
被写体画像取得部101aは、第1撮像部15Aによって連続的に撮像された第1被写体の被写体画像を順次取得する。具体的には、被写体画像取得部101aは、第1撮像部15Aから出力された被写体画像から人物領域を抽出することにより、第1被写体の被写体画像を取得する。
デプス画像取得部101bは、第2撮像部15Bによって連続的に撮像された第1被写体のデプス画像(デプスマップ)を順次取得する。具体的には、デプス画像取得部101bは、第2撮像部15Bから出力されたデプス画像から人物領域を抽出することにより、第1被写体のデプス画像を取得する。
この場合、デプス画像取得部101bは、例えばデプス画像を構成する各画素の3次元位置のうち、奥行き方向の距離について閾値を設定することで、人物領域を抽出する。例えば、第2撮像部15Bの座標系において第2撮像部15Bの位置を原点とし、Z軸正方向が、第2撮像部15Bの原点から被写体方向に伸びるカメラの光軸であるとする。この場合、デプス画像を構成する各画素のうち、奥行き方向(Z軸方向)の位置座標が予め定めた閾値(例えば、2mを示す値)以上の画素を除外する。これにより、デプス画像取得部101bは、第2撮像部15Bから2mの範囲内に存在する人物領域の画素からなるデプス画像、すなわち、第1被写体のデプス画像を得ることができる。
なお、本実施形態においては、デプス画像が第2撮像部15Bを用いて取得されるものとして説明するが、当該デプス画像は、第1被写体の被写体画像からステレオマッチング等の手法により作成されても構わない。
骨格情報生成部102は、デプス画像取得部101bによって取得された第1被写体のデプス画像から人体(つまり、第1被写体)の骨格位置を示す骨格情報を抽出する。この場合、骨格情報生成部102は、デプス画像に人体形状を当てはめることによって骨格情報を抽出する。
また、骨格情報生成部102は、抽出された骨格情報の各画素の画素位置の座標系(すなわち、第2撮像部15Bの座標系)を、被写体画像取得部101aによって取得された第1被写体の被写体画像の各画素位置の座標系(すなわち、第1撮像部15Aの座標系)に変換する。すなわち、骨格情報生成部102は、第2撮像部15Bによって撮像された第1被写体のデプス画像から抽出された骨格情報の各画素の画素位置の座標系を、当該デプス画像と同じタイミングで第1撮像部15Aによって取得された第1被写体の被写体画像の座標系に変換する。この座標変換は、例えばキャリブレーション等によって行われる。これにより、骨格情報生成部102は、第1被写体の骨格情報(座標変換後の骨格情報)を生成(算出)する。
判別部103は、被写体画像取得部101aによって取得された被写体画像が予め定めた第1条件を満たすか否かを判別する。第1条件は、後述する第1位置の算出処理を実行するか否かを判断するための条件である。なお、第1条件の詳細については後述する。
受付部104は、入力部14から各種情報を受け付ける。具体的には、受付部104は、ユーザによる入力部14に対する操作指示によって、衣服の属性情報(衣服の形状、衣服の名称、衣服の販売元、衣服の色彩、衣服の素材、衣服の値段等)と衣服サイズとを受け付ける。
受付部104は、入力部14から受け付けた属性情報を解析し、受け付けた属性情報に対応する衣服IDを、記憶部16に記憶されている第1情報から検索する。ここで、上記したように第1情報には、1つの衣服IDに対して、衣服サイズ、体型パラメータ及び姿勢情報の異なる複数の衣服画像が対応づけられている。このため、受付部104は、各衣服IDの各々について、代表的な1つの衣服サイズ、1つの体型パラメータ及び1つの姿勢情報に対応する1つの衣服画像を、各衣服IDに対応する代表の衣服画像として第1情報から読み取る。これらの衣服画像の一覧は、表示部12に表示されることにより、ユーザに提示される。
なお、受付部104が検索する、代表的な1つの衣服サイズ、1つの体型パラメータ及び1つの姿勢情報は、予め定められているものとする。また、受付部104は、入力部14から受け付けた衣服サイズを、上記代表的な1つの衣服サイズとしてもよい。
表示部12に衣服画像の一覧が表示されると、ユーザは、入力部14に対する操作指示を行うことによって、当該表示部12に表示された衣服画像の一覧の中から、試着対象の衣服(の衣服画像)を選択する。このようにユーザによって選択された衣服画像の衣服IDは、入力部14から画像処理装置100に対して出力される。また、衣服サイズについても、ユーザによる入力部14に対する操作指示によって入力される。
受付部104は、選択された衣服IDと、入力された衣服サイズとを入力部14から受け付ける。換言すれば、受付部104は、試着対象の衣服IDと、試着対象の衣服サイズとを受け付ける。
なお、受付部104は、少なくとも、試着対象の衣服の衣服IDを取得すればよく、試着対象の衣服サイズを受け付けない形態であってもよい。すなわち、ユーザは、衣服IDを入力部14を介して入力すればよく、衣服サイズを入力しない形態であってもよい。
体型パラメータ取得部105は、第1被写体の体型を示す体型パラメータ(以下、第1被写体の体型パラメータと表記)を取得する。この体型パラメータは、上述した第1情報に含まれる体型パラメータと同様に1または複数のパラメータを含む。
この場合、体型パラメータ取得部105は、例えばユーザによる入力部14に対する操作指示によって入力された体型パラメータを、受付部104を介して取得する。
具体的には、例えば第1被写体の体型パラメータの入力画面が表示部12に表示される。この入力画面は、例えば胸囲、胴囲、腰囲、身長、肩幅及び体重等のパラメータの入力欄を含む。ユーザは、表示部12に表示された入力画面を参照しながら入力部14に対する操作を行うことで、各パラメータの入力欄に値を入力する。受付部104は、入力部14から受け付けた体型パラメータを受付部104に対して出力する。これにより、体型パラメータ取得部105は、受付部104から体型パラメータを取得する。
なお、体型パラメータ取得部105は、第1被写体の体型パラメータを推定してもよい。本実施形態においては、体型パラメータ取得部105が第1被写体の体型パラメータを推定するものとして説明する。
この場合、体型パラメータ取得部105は、デプス画像取得部101bによって取得された第1被写体のデプス画像から、第1被写体の体型パラメータを推定する。
この場合、体型パラメータ取得部105は、例えば第1被写体のデプス画像に人体の三次元モデルデータを当てはめる。体型パラメータ取得部105は、デプス画像と、当該デプス画像に当てはめた三次元モデルデータとを用いて、体型パラメータに含まれる各パラメータの値(例えば、身長、胸囲、胴囲、腰囲及び肩幅の各々の値)を算出する。
また、体型パラメータ取得部105は、上記した第1被写体の体型パラメータ(に含まれるパラメータ)として、当該第1被写体の体重を取得する。この第1被写体の体重は、例えば体重測定部13から取得することができる。なお、第1被写体の体重は、例えばユーザによる入力部14に対する操作指示によって取得されても構わない。
これにより、体型パラメータ取得部105は、上記したように推定されたパラメータと体重とを含む第1被写体の体型パラメータを取得することができる。
なお、体型パラメータ取得部105は、第1被写体の体重を取得しないような構成であっても構わない。この場合、体型パラメータ取得部105は、体重以外のパラメータを含む体型パラメータを取得する。
ここで、図8及び図9を参照して、体型パラメータ取得部105による体型パラメータの推定について説明する。図8は、人体の三次元モデルデータの一例を示す図である。図9は、第1被写体のデプス画像に人体の三次元モデルデータを当てはめた画像(モデル画像)300を示す図である。なお、図9に示すモデル画像300Aは、第1被写体の背面の三次元モデルを示す画像である。一方、図9に示すモデル画像300Bは、第1被写体の側面の三次元モデルを示す画像である。
詳細には、体型パラメータ取得部105は、人体の三次元モデルデータ(三次元ポリゴンモデル)を、第1被写体のデプス画像に当てはめる。体型パラメータ取得部105は、第1被写体のデプス画像に当てはめられた人体の三次元モデルデータにおける、複数のパラメータ(身長、胸囲、胴囲、腰囲及び肩幅等)の各々に対応する部位の距離から上述した採寸値を推定する。具体的には、体型パラメータ取得部105は、デプス画像に当てはめられた人体の三次元モデルデータ上における頂点間の距離及びある2頂点を結ぶ稜線の長さ等から、身長、胸囲、胴囲、腰囲及び肩幅等の各パラメータの値を算出する。2頂点とは、デプス画像に当てはめられた人体の三次元モデルデータ上における算出対象のパラメータの各々に対応する部位の一端と他端を示す。なお、第2被写体の第2体型パラメータに含まれる各パラメータの値についても同様にして算出されればよい。
また、体型パラメータ取得部105は、受付部104によって受け付けられた衣服IDによって識別される衣服における体型を隠す度合いが高いほど値が小さくなるように、デプス画像から推定された体型パラメータを補正することが好ましい。
この場合、体型パラメータ取得部105は、受付部104によって受け付けられた衣服IDに対応する補正値を記憶部16に記憶されている第4情報から読み取る。体型パラメータ取得部105は、デプス画像から推定された体型パラメータに含まれる各パラメータの値に読み取られた補正値を乗算することによって当該各パラメータの値を補正する。
例えば、第1被写体が厚着をした状態で撮像部によって撮像された場合、体型パラメータ取得部105がデプス画像から推定する体型パラメータの値は、実際の第1被写体の体型とは異なるものとなる場合がある。このため、体型パラメータ取得部105によって推定された体型パラメータは補正されることが好ましい。
本実施形態においては、例えば受付部104によって受け付けられた衣服ID(つまり、ユーザから受け付けた試着対象の衣服ID)に対応する衣服を、実際に第1被写体が現在着用している衣服と仮定して補正を行う。補正値は、上述したように体型を隠す度合いが最も低い場合に「1」とし、体型を隠す度合いが高いほどより0に近い値とする。このような補正をすることによって、体型パラメータ取得部105は、第1被写体のより正確な体型を示す体型パラメータを推定することができる。
なお、補正を指示するための指示ボタンを表示部12に表示し、ユーザによる入力部14に対する操作指示によって当該指示ボタンが指定(指示)されたときに、上記した補正処理が行われても構わない。
再び図3に戻ると、姿勢情報算出部106は、第1被写体の姿勢情報を算出する。姿勢情報算出部106は、骨格情報生成部102によって生成された第1被写体の骨格情報から当該第1被写体の姿勢情報を算出する。この場合、姿勢情報算出部106は、第1被写体の骨格情報によって示される各関節の位置から第1被写体の向きを算出する。
ここで、図10を参照して、姿勢情報算出部106による姿勢情報の算出について説明する。
骨格情報生成部102によって生成された第1被写体の骨格情報によって示される、第1被写体の左肩に相当する画素位置(図10における画素位置401d)の座標を、第1撮像部15Aの座標系でPslとする。また、骨格情報生成部102によって生成された骨格情報によって示される、第1被写体の右肩に相当する画素位置(図10における画素位置401c)の座標を、第1撮像部15Aの座標系でPsrとする。
姿勢情報算出部106は、これらの座標情報から、第1被写体の第1撮像部15Aに対する向きを、下記の式(1)を用いて算出する。
第1被写体の向き=arctan(Psl.z−Psr.z/Psl.x−Psr.x) ・・・式(1)
この式(1)において、Psl.zは、第1被写体の左肩に相当する画素位置のz座標値を示す。Psr.zは、第1被写体の右からに相当する画素位置のz座標値を示す。また、式(1)において、Psl.xは、第1被写体の左肩に相当する画素位置のx座標値を示す。Psr.xは、第1被写体の右肩に相当する画素位置のx座標値を示す。
姿勢情報算出部106は、このような算出処理により、第1被写体の向き(を示す第1被写体の回転角度)を姿勢情報として算出することができる。
再び図3に戻ると、特定部107は、記憶部16に記憶されている第1情報における、受付部104によって受け付けられた衣服IDに対応する複数の衣服画像のうち、出力対象の衣服画像を特定する。なお、出力対象とは、表示部12または外部装置等に出力する対象であることを示す。出力先が表示部12である場合、出力対象は、表示対象を意味する。
ここで、以下の説明においては、便宜のため、体型パラメータ取得部105によって取得された体型パラメータ(つまり、第1被写体の体型パラメータ)を第1体型パラメータと称する。一方、記憶部16に記憶されている第1情報に含まれる体型パラメータを第2体型パラメータと称する。
この場合、特定部107は、第1情報における、受付部104によって受け付けられた衣服IDに対応する複数の衣服画像のうち、第1体型パラメータとの非類似度が閾値以下の第2体型パラメータに対応する衣服画像を特定する。非類似度は、第1体型パラメータと第2体型パラメータとが非類似である度合いを示す。非類似度が低いほど、第1体型パラメータと第2体型パラメータは、より類似することを示す。非類似度が高いほど、第1体型パラメータと第2体型パラメータは、より非類似であることを示す。
特定部107は、記憶部16に記憶されている第1情報における、受付部104によって受け付けられた衣服IDに対応する複数の第2体型パラメータの各々について、第1体型パラメータとの非類似度を算出する。なお、本実施形態においては、第1体型パラメータと第2体型パラメータとの差分が非類似度として用いられる。
この場合、特定部107は、例えばL1ノルムまたはL2ノルムを用いて、第1体型パラメータと第2体型パラメータとの差分を算出する。
L1ノルムを用いる場合、特定部107は、第1体型パラメータに含まれる各パラメータの各々の値と受付部104によって受け付けられた衣服IDに対応する複数の第2体型パラメータに含まれる各パラメータの各々の値とについて、同じパラメータ毎に値の差(以下、第1の差と表記)を算出する。特定部107は、第1体型パラメータと第2体型パラメータとの各々に含まれる同じパラメータ毎の第1の差の絶対値の合計値を、当該第1体型パラメータと第2体型パラメータとの差分(つまり、非類似度)として算出する。
具体的には、L1ノルムを用いる場合、特定部107は、下記の式(2)を用いて非類似度を算出する。なお、この式(2)は、第1体型パラメータ及び第2体型パラメータが、パラメータとして身長、胸囲、胴囲、腰囲、肩幅及び体重を含む場合の式である。
非類似度=|A1−A2|+|B1−B2|+|C1−C2|+|D1−D2|+|E1−E2|+|F1−F2| ・・・式(2)
この式(2)において、A1は第1体型パラメータに含まれる第1被写体の身長を示し、A2は第2体型パラメータに含まれる身長を示す。B1は第1体型パラメータに含まれる第1被写体の胸囲を示し、B2第2体型パラメータに含まれる胸囲を示す。C1は第1体型パラメータに含まれる第1被写体の胴囲を示し、C2は第2体型パラメータに含まれる胴囲を示す。D1は第1体型パラメータに含まれる第1被写体の腰囲を示し、D2は第2体型パラメータに含まれる腰囲を示す。E1は第1体型パラメータに含まれる第1被写体の肩幅を示し、E2は第2体型パラメータに含まれる肩幅を示す。F1は第1体型パラメータに含まれる第1被写体の体重を示し、F2は第2体型パラメータに含まれる体重を示す。
一方、L2ノルムを用いる場合、特定部107は、第1体型パラメータと第2体型パラメータとの各々に含まれる同じパラメータ毎の値の差(つまり、第1の差)の絶対値の二乗の合計値を、これらの第1位体型パラメータと第2体型パラメータとの差分(つまり、非類似度)として算出する。
具体的には、L2ノルムを用いる場合、特定部107は、下記の式(3)を用いて非類似度を算出する。なお、この式(3)は、第1体型パラメータ及び第2の体型パラメータが、パラメータとして身長、胸囲、胴囲、腰囲、肩幅及び体重を含む場合の式である。
非類似度=|A1−A2|2+|B1−B2|2+|C1−C2|2+|D1−D2|2+|E1−E2|2+|F1−F2|2 ・・・式(3)
この式(3)におけるA1、A2、B1、B2、C1、C2、D1、D2、E1、E2、F1及びF2は、上記した式(2)において説明した通りであるため、その詳しい説明を省略する。
なお、この非類似度(本実施形態においては差分)の算出時に、例えば第2体型パラメータに含まれるパラメータの各々について、当該第2体型パラメータに含まれるパラメータから第1体型パラメータに含まれるパラメータを減算した値(減算値)が0より大きい場合の重みが、当該減算値が0未満である場合の重みより大きくなるように、当該非類似度に変換関数を適用してもよい。
このような処理により、画像処理装置100は、第1被写体の被写体画像と衣服画像とを合成した合成画像の表示時に、第1被写体に対して衣服画像が大きく表示されることを抑制することができる。
また、上述した記憶部16に記憶されている第2情報に含まれる重み付値に応じて、第1体型パラメータ及び第2体型パラメータの各々に含まれる各パラメータの値を変換した後に非類似度が算出されてもよい。この場合には、特定部107は、受付部104によって受け付けられた衣服IDに対応する複数のパラメータのそれぞれの重み付値を第2情報から読み取る。特定部107は、上記した差分の算出前に、第1体型パラメータ及び第2体型パラメータの各々に含まれるパラメータの値に対して当該読み取られた対応するパラメータの重み付値を乗算した乗算値を算出する。特定部107は、各パラメータに対応する算出した乗算値を、各パラメータの値として用いて非類似度を算出する。
上述したように、重み付値は、第2情報における、対応する衣服IDによって識別される衣服を着用したときの見え方に対する影響の度合いを示す。このため、重み付値を加味した非類似度の算出が実行されることで、より適切な非類似度を算出することができ、結果としてより第1被写体の体型に応じた衣服画像を特定することができる。
また、特定部107は、各パラメータの重み付値を算出し、当該算出された重み付値を第2情報によって示される重み付値に代えて用いても構わない。
この場合、特定部107は、姿勢情報算出部106によって算出された第1被写体の姿勢情報に応じて、各パラメータに対応する重み付値を算出する。
具体的には、特定部107は、姿勢情報算出部106によって算出された第1被写体の姿勢情報が、当該第1被写体が正面方向(第1撮像部15Aに対して正面の向き)を向いていることを示すものとする。この場合、特定部107は、パラメータの重み付値として、肩幅及び身長の重み付値を他のパラメータの重み付値に比べて相対的に大きくする。
これは、第1被写体を正面から撮像することによって取得されたデプス画像は、正面以外から撮像した場合に比べて、第1被写体の肩幅及び身長を他のパラメータに比べて正確に取得(推定)することができるためである。
また、第1被写体の体重は、体重測定部13または入力部14から入力される。すなわち、第1被写体の体重についても他のパラメータに比べて正確な値を取得することができるため、特定部107は、体重の重み付値についても他のパラメータの重み付値に比べて相対的に大きくする。
このように正確な値を取得することができるパラメータについては他のパラメータに対して相対的に大きな重み付値を算出することで、非類似度をより正確に算出することが可能となる。
なお、特定部107は、第1体型パラメータ及び第2体型パラメータに含まれる複数のパラメータのうち、一部のパラメータを用いて非類似度を算出してもよい。
具体的には、特定部107は、第1体型パラメータ及び第2体型パラメータに含まれる複数のパラメータのうち、受付部104によって受け付けられた衣服IDの衣服の種類に対応する、非類似度の算出に用いるパラメータを第3情報から読み取る。衣服の種類に対応する衣服IDは、第1情報から読み取ればよい。なお、第3情報において衣服ID毎に非類似度の算出に用いるパラメータが設定されている場合には、特定部107は、受付部104によって受け付けられた衣服IDに対応する、非類似度の算出に用いるパラメータを第3情報から読み取ればよい。これにより、特定部107は、第1体型パラメータ及び第2体型パラメータに含まれる複数のパラメータのうち、第3情報から読み取られた非類似度の算出に用いられるパラメータを用いて、非類似度を算出することができる。
なお、第1体型パラメータに含まれるパラメータの種類と第2体型パラメータに含まれるパラメータの種類とが異なる場合には、特定部107は、双方に共通して含まれるパラメータを用いて非類似度を算出すればよい。
以上の処理により、特定部107は、第1情報における、受付部104によって受け付けられた衣服IDに対応する複数の第2体型パラメータの各々について、第1体型パラメータとの非類似度を算出する。
特定部107は、上述したように算出された非類似度が閾値以下の第2体型パラメータを特定する。すなわち、特定部107は、第1情報における、受付部104によって受け付けられた衣服IDに対応する複数の第2体型パラメータのうち、第1体型パラメータと類似する第2体型パラメータを特定する。
上述したように、非類似度は、第1体型パラメータと第2体型パラメータとの非類似の度合いを示す。このため、第1体型パラメータと第2体型パラメータとの非類似度が低いほど、第1体型パラメータと第2体型パラメータとの類似度が高い。
そこで、特定部107は、算出された非類似度が閾値以下の第2体型パラメータを特定する。なお、非類似度の閾値は、予め定められているものとする。また、非類似度の閾値は、ユーザによる入力部14に対する操作指示等により適宜変更可能である。
これにより、特定部107は、非類似度が閾値以下であるとして特定された第2体型パラメータに対応する衣服画像を出力対象の衣服画像として特定する。
なお、上述したように記憶部16に記憶されている第1情報には、例えば非類似度が閾値以下であるとして特定された第2体型パラメータに対応する衣服画像として、異なる姿勢情報(つまり、第1被写体の向き)のそれぞれに対応する複数の衣服画像が含まれている。よって、特定部107は、非類似度が閾値以下であるとして特定された第2体型パラメータに対応する複数の衣服画像のうち、姿勢情報算出部106によって算出された姿勢情報(第1被写体の向きを示す回転角度)に対応する衣服画像を出力対象の衣服画像として特定する。
ここで、図11を参照して、特定部107による衣服画像の特定について説明する。なお、図11においては、第1体型パラメータ及び第2体型パラメータに含まれる3つのパラメータの各々がX軸、Y軸及びZ軸(の座標値)として示されている場合について説明する。
また、図11において、体型パラメータ取得部105によって取得(推定)された第1体型パラメータは、第1体型パラメータ500であるものとする。また、受付部104によって受け付けられた衣服IDに対応する複数の第2体型パラメータは、第2体型パラメータ501〜503であるものとする。更に、第2体型パラメータ501〜503のうち、第1体型パラメータ500との非類似度が閾値以下の第2体型パラメータは、図11において最も距離の近い第2体型パラメータ501であるものとする。この場合、特定部107は、第2体型パラメータ501を特定する。
次に、特定部107は、第2体型パラメータ501〜503の各々に対応する衣服画像501A〜503Aのうち、特定された第2体型パラメータ501に対応する衣服画像501Aを出力対象の衣服画像として特定する。
なお、非類似度が閾値以下の第2体型パラメータ(に対応する衣服画像)が特定部107によって複数特定された場合、最も非類似度の小さい1つの第2体型パラメータに対応する衣服画像が出力対象の衣服画像として特定されればよい。
また、特定部107は、受付部104によって入力部14から受け付けられた衣服サイズを加味して衣服画像を特定してもよい。この場合、特定部107は、第1情報における、受付部104によって受け付けられた衣服ID及び衣服サイズに対応する複数の衣服画像のうち、非類似度が閾値以下の第2体型パラメータに対応する衣服画像を特定すればよい。
また、特定部107は、上述したように出力対象の衣服画像を特定する際に、第1被写体の姿勢情報及び第1情報に含まれる姿勢情報を用いる。
この場合、特定部107は、第1情報における、受付部104によって受け付けられた衣服IDに対応する複数の衣服画像のうち、姿勢情報算出部106によって算出された姿勢情報(第1被写体の向きを示す当該第1被写体の回転角度)に対応する衣服画像を出力対象の衣服画像として特定する。なお、このような衣服画像の特定処理は、画像処理システム10(画像処理装置100)において追従モード(第1の動作モード)が設定されている場合に実行される。この追従モードは、衣服がユーザの体にフィットした状態を表す合成画像をユーザに対して提示(表示)するためのモードである。
また、詳細については後述するが、特定部107は、姿勢情報算出部106によって算出された第1被写体の向きを示す当該第1被写体の回転角度に基づいて、当該第1被写体の回転角度とは異なる回転角度に対応する衣服画像を出力対象の衣服画像として特定することも可能である。なお、このような衣服画像の特定処理は、画像処理システム10(画像処理装置100)において姿見モード(第2の動作モード)が設定されている場合に実行される。この姿見モードは、上述した追従モードが設定されている場合と比べて、試着対象の衣服の雰囲気を容易に確認することができるような合成画像をユーザに対して提示(表示)するためのモードである。
ここで、図12は、第1情報に含まれる姿勢情報を概念的に表す図である。ここでは、図12に示すように、非類似度が閾値以下の第2体型パラメータ(例えば、図11に示す第2体型パラメータ501)に対応する衣服画像として、筐体11に設けられた第1撮像部15Aに対して正面の向きである「正面(±0度)」、当該正面から右に20度回転した向きである「+20度」、当該正面から右に40度回転した向きである「+40度」の各々の姿勢情報に対応する衣服画像601〜603が記憶部16(に記憶されている第1情報)において予め登録されていたものとする。また、姿勢情報算出部106によって算出された第1被写体の向きを示す第1被写体の回転角度は、「+20度」であるものとする。
画像処理システム10において追従モードが設定されている場合、特定部107は、第1情報における、受付部104によって受け付けられた衣服ID及び非類似度が閾値以下の第2体型パラメータに対応する複数の衣服画像601〜603のうち、姿勢情報算出部106によって算出された姿勢情報(つまり、第1被写体の回転角度「+20度」)に対応する衣服画像602に対応する衣服画像を出力対象の衣服画像として特定する。
一方、画像処理システム10において姿見モードが設定されている場合、特定部107は、第1情報における受付部104によって受け付けられた衣服ID及び非類似度が閾値以下の第2体型パラメータに対応する複数の衣服画像601〜603のうち、姿勢情報算出部106によって算出された姿勢情報に含まれる第1被写体の向きに応じた回転角度「+20度」とは異なる回転角度である例えば「+40度」に対応する衣服画像を出力対象の衣服画像として特定する。
すなわち、本実施形態においては、画像処理システム10(画像処理装置100)において設定されている動作モードに応じて、異なる姿勢情報に対応する衣服画像が出力対象の衣服画像として特定される。なお、この各動作モードが設定されている場合における衣服画像の特定処理の詳細については後述する。また、この動作モードの切り替えは、例えばユーザによる入力部14に対する操作指示によって切り替え可能である。
なお、特定部107は、例えば出力対象の衣服画像を特定するための第2体型パラメータを段階的に絞り込むような構成であっても構わない。
この場合、特定部107は、第1体型パラメータ及び第2体型パラメータに含まれる複数のパラメータのうちの1つのパラメータについて上記した非類似度を算出し、当該非類似度が閾値以下の複数の第2体型パラメータを特定する。更に、特定部107は、特定された複数の第2体型パラメータのうち、前段階の特定で用いられていないパラメータについて同様に非類似度を算出し、当該非類似度が閾値以下の第2体型パラメータの特定を行う。特定部107は、この一連の処理を、予め定められた数の第2体型パラメータが特定されるまで、パラメータを順次変えて繰り返し実行する。これにより、特定部107は、段階的に第2体型パラメータ(に対応する衣服画像)を特定してもよい。
また、このように段階的に第2体型パラメータを特定する場合、特定部107は、各段階で用いられるパラメータとして、1つのパラメータを用いてもよいし、複数のパラメータを用いてもよい。
また、特定部107は、例えば図6に示す重み付値の高いパラメータを順に用いることによって、段階的に第2体型パラメータを特定してもよい。
また、各段階で用いられるパラメータの種類が予め記憶部16に記憶されていてもよい。すなわち、記憶部16は、段階を示す情報と、当該段階で用いられるパラメータの種類を示す情報とを対応づけて記憶しておく。これによれば、特定部107は、各段階で用いられるパラメータの種類(を示す情報)を記憶部16から読み取り、当該種類に対応するパラメータを用いて、段階的に第2体型パラメータを特定してもよい。
更に、特定部107は、上記した各段階においてまたは最終的に、出力対象の衣服画像として複数の衣服画像が特定された場合、当該特定された複数の衣服画像のうち、ユーザによって指定された1つの衣服画像を、出力対象の衣服画像として特定してもよい。具体的には、表示制御部112は、特定部107によって特定された複数の衣服画像の一覧を表示部12に表示する。この場合、ユーザは、表示部12に表示された衣服画像の一覧を閲覧しながら入力部14に対する操作を行うことによって、出力対象とする1つの衣服画像を選択することができる。これにより、特定部107は、表示部12に表示された複数の衣服画像のうち、ユーザによって選択された衣服画像を、出力対象の衣服画像として特定することができる。
また、同様に複数の衣服画像が特定された場合には、後述するテンプレートマッチングの処理時に1つの衣服画像が出力対象の衣服画像として特定されてもよい。具体的には、本実施形態においては、出力対象の衣服画像と被写体画像とが合成される前に、衣服画像の特徴領域(例えば、肩領域)と、第1被写体のデプス画像の特徴領域(例えば、肩領域)とを用いたテンプレートマッチングが行われる。この場合において、特定部107によって特定された複数の衣服画像の各々の肩領域と、第1被写体のデプス画像の肩領域との一致度合いが最も高い衣服画像が、出力対象の1つの衣服画像として特定されてもよい。
また、特定部107によって特定された1または複数の衣服画像は、被写体画像との合成前に表示部12に表示されても構わない。なお、ここで表示部12に表示される衣服画像は、例えば上述した第2被写体が当該衣服を着用した状態を示す画像であるものとする。
これによれば、ユーザ(第1被写体)は、当該第1被写体が試着対象として指定した衣服を、当該第1被写体の体型に一致または類似する体型の第2被写体が着用した状態で確認することが可能となる。
また、受付部104によって試着対象の衣服を識別するための衣服ID及び衣服サイズが入力部14から受け付けられた場合には、当該衣服サイズの衣服を第1被写体の体型に一致または類似する体型の第2被写体が着用した状態を示す衣服画像が表示部12に表示されるものとする。これによれば、ユーザ(第1被写体)は、当該第1被写体が試着対象として指定した衣服サイズの衣服を、当該第1被写体の体型に一致または類似する体型の第2被写体が着用した状態で確認することが可能となる。
すなわち、このように特定部107によって特定された1または複数の衣服画像が被写体画像との合成前に表示部12に表示されることによって、被写体画像への合成前であっても第1被写体の体型に応じた試着状態を示す衣服画像をユーザに対して提示(提供)することが可能となる。
再び図3に戻ると、調整部108は、デプス画像取得部101bによって取得された第1被写体のデプス画像の座標系(すなわち、第2撮像部15Bの座標系)を、被写体画像取得部101aによって取得された第1被写体の被写体画像の座標系(すなわち、第1撮像部15Aの座標系)に変換する。調整部108は、座標変換後の第1被写体のデプス画像を構成する各画素位置の画素が、同じタイミングで取得された第1被写体の被写体画像を構成する各画素の画素位置に対応する位置となるように射影することで、第1被写体のデプス画像の解像度を被写体画像と同じ解像度に調整する。
例えば、第2撮像部15Bによって得られたデプス画像(つまり、デプス画像取得部101bによって取得されたデプス画像)の解像度が640×480ピクセルであり、第1撮像部15Aによって得られた被写体画像(つまり、被写体画像取得部101aによって取得された被写体画像)の解像度が1080×1920ピクセルであったとする。この場合、デプス画像を構成する各画素を、1ピクセル×1ピクセルの点として被写体画像上に射影すると、デプス画像を構成する各画素の間に隙間が生じてしまう。このため、調整部108では、必要に応じて、ガウシアンフィルタまたはモルフォロジー演算等による演算を用いたフィルタを適用し、被写体画像上に射影されたデプス画像を構成する各画素の間に隙間が生じないように調整する。
調整部108は、特定部107によって特定された出力対象の衣服画像と当該衣服画像に対応する姿勢情報に含まれる骨格情報に基づいて、当該衣服画像における特徴領域の大きさを算出する。また、調整部108は、解像度が調整された第1被写体のデプス画像と骨格情報生成部102によって生成された第1被写体の骨格情報に基づいて、第1被写体の被写体画像における特徴領域の大きさを算出する。
なお、特徴領域は、人体の形状を推定可能な領域である。この特徴領域としては、人体の肩に対応する肩領域、腰に対応する腰領域、足の長さに対応する足領域等を用いることができるが、これらに限られない。本実施形態においては、特徴領域として人体の肩に対応する肩領域を用いる場合を説明するが、他の領域が用いられても構わない。
例えば特徴領域として人体の肩に対応する肩領域を用いた場合、調整部108は、出力対象の衣服画像における特徴領域の大きさとして、当該衣服画像における肩幅を算出する。
調整部108は、算出された出力対象の衣服画像における特徴領域の大きさ及び被写体画像取得部101によって取得された被写体画像における特徴領域の大きさに基づいて、当該衣服画像及び当該被写体画像の少なくとも一方を拡大または縮小する。これによれば、衣服画像の輪郭の少なくとも一部と、被写体画像の輪郭の少なくとも一部とが一致するような拡大または縮小が行われる。
調整部108は、拡大または縮小後の出力対象の衣服画像と被写体画像とから、後述する第1位置を算出する際に用いられる当該各画像の特徴領域(例えば、肩領域)を抽出する。
ここで、調整部108による特徴領域の抽出についてより詳細に説明する。まず、図13及び図14を参照して、上記した特徴領域の大きさの算出について説明する。ここでは、デプス画像取得部101bによって取得された第1被写体のデプス画像の解像度は、被写体画像取得部101aによって取得された被写体画像と同じ解像度に調整されているものとする。
この場合、調整部108は、特定部107によって特定された出力対象の衣服画像に対応する姿勢情報に含まれる骨格情報から、当該衣服画像上の関節位置のうち、左肩に相当する位置の画素のY座標と、右肩に相当する位置の画素のY座標と平均のY座標を求める。次に、調整部108は、求められたY座標の位置(高さ)において、上記した左肩に相当する位置の画素のX座標から、衣服の外側に相当する領域に向かって探索を行い、衣服の左肩側の境界線の位置に相当するX座標を求める。同様に、調整部108は、求められたY座標の位置(高さ)において、上記した右肩に相当する位置の画素のY座標から、衣服の外側に相当する領域に向かって探索を行い、衣服の右肩側の境界線の位置に相当するX座標を求める。
調整部108は、このような2つのX座標の差を求めることにより、図13に示すように例えば衣服画像700上の肩幅(ピクセル数)Scを求めることができる。
なお、肩関節の位置に相当する画素のY座標から求められた1つのY座標に基づいて肩幅を求めるのではなく、肩関節のY座標を中心にY座標の上下方向に幅を持たせて、複数の水平方向のラインについて探索を行い、当該複数の水平方向のラインについて求められたX座標の平均を両側において求めることで、衣服画像上における肩幅が求められてもよい。
次に、調整部108は、被写体画像と同じ解像度に調整された第1被写体のデプス画像と、第1被写体の骨格情報(骨格情報生成部102によって生成された骨格情報)とを用いて、第1被写体の被写体画像上の肩幅を算出する。
図14に示すように、調整部108は、第1被写体のデプス画像における、左肩に相当する位置の画素のY座標と、右肩に相当する位置の画素のY座標との平均のY座標を求める。次に、調整部108は、左肩に相当する位置の画素のX座標から、第1被写体の外側に相当する領域に向かって探索を行い、当該第1被写体の領域の一方の境界線であるX座標を求める。
更に、調整部108は、第1被写体のデプス画像における、右肩に相当する位置の画素のX座標から、第1被写体の外側に相当する領域に向かって探索を行い、当該第1被写体の領域のもう一方の境界線であるX座標を求める。
調整部108は、このような2つのX座標の差を求めることにより、図14に示すように例えばデプス画像(被写体画像)800上の肩幅(ピクセル数)Shを求めることができる。
なお、肩関節の位置に相当する画素のY座標から求められた1つのY座標に基づいて肩幅を求めるのではなく、肩関節のY座標を中心にY座標の上下方向に幅を持たせて、複数の水平方向のラインについて探索を行い、当該複数の水平方向のラインについて求められたX座標の平均を両側において求めることで、被写体画像上の肩幅が求められてもよい。
次に、調整部108は、上記したように算出された特徴領域の大きさ、すなわち衣服画像上の肩幅Scと、被写体画像上の肩幅Shとを用いて、当該衣服画像のスケーリング値(拡大縮小率)を決定する。
具体的には、調整部108は、被写体画像上の肩幅Shを衣服画像上の肩幅Scで除算した除算値(Sh/Sc)を、スケーリング値として算出する。このスケーリング値は、衣服の実際の大きさ、または衣服画像領域の幅及び高さに相当する画素数等の値を用いて、異なる式から算出されても構わない。
調整部108は、出力対象の衣服画像を、算出されたスケーリング値(拡大縮小率)で拡大または縮小する。また、調整部108は、出力対象の衣服画像に対応する姿勢情報に含まれる骨格情報を同様のスケーリング値(拡大縮小率)で拡大または縮小する。
次に、調整部108は、拡大または縮小後の衣服画像及び被写体画像から、位置算出部109において用いられる特徴領域を抽出する。
特徴領域は、上述したように衣服画像及び被写体画像の各々における、人体の形状を推定可能な領域を示す。特徴領域は、例えば人体の肩または腰等を示す領域である。本実施形態においては、調整部108は、衣服画像及び被写体画像の各々の輪郭における、人体の肩に相当する領域(肩領域)を、特徴領域として抽出する場合を説明する。
まず、調整部108は、被写体画像と同じ解像度に調整された第1被写体のデプス画像から輪郭を抽出する。また、調整部108は、上記したように拡大または縮小された衣服画像から輪郭を抽出する。調整部108は、このように抽出された輪郭から、人体の肩に相当する肩領域の輪郭を、特徴領域として抽出する。なお、輪郭の抽出には、種々の手法を利用することが可能である。
ここで、調整部108は、衣服画像(に含まれる衣服の領域)の形状に応じて輪郭を抽出することが好ましい。以下、図15を参照して、輪郭の抽出の一例について説明する。
図15に示すように、拡大または縮小された出力対象の衣服画像(に含まれる衣服の領域)901の形状が人体の正面側に縦長の開口部を有する形状であるものとする。このような衣服画像901の場合、図15に示すように、人体の中央部にも示される輪郭902が抽出されることとなる。このような輪郭902を用いて後述するテンプレートマッチングが行われると、人体の中央部分に相当する領域のマッチング精度が低下する場合がある。
このため、調整部108は、図15に示す輪郭902から人体の中央部に相当する領域の輪郭を除去することにより、人体の外形に沿った部分の輪郭を衣服画像から抽出することが好ましい。
なお、画像処理装置100では、後述する更新部113が各衣服画像を記憶部16(第1情報)に登録する際に、当該衣服画像の衣服を試着していた第2被写体のデプス画像を当該衣服画像に対応づけておくものとする。調整部108は、このデプス画像から当該デプス画像における輪郭に連続する内側の領域の一部を例えばモルフォロジー演算等の画像フィルタ処理により削除する。このような削除処理後のデプス画像903を用意することにより、調整部108は、図15に示すように、輪郭902からデプス画像903と重なる領域(の輪郭)を削除することで、人体の外形に沿った部分の輪郭904を出力対象の衣服画像の輪郭として抽出することができる。
調整部108は、上記したように抽出された出力対象の衣服画像及びデプス画像(被写体画像)の各々の輪郭から、人体の肩に相当する肩領域を特徴領域として抽出する。
なお、出力対象の衣服画像に含まれる衣服がタンクトップやベアトップ等であり、当該衣服画像から人体の外形に沿った形状(肩の輪郭等)抽出することが困難な場合がある。このような場合には、上記したように衣服を試着させた第2被写体のデプス画像を記憶部16に予め記憶しておき、当該第2被写体の肩部から肩領域の輪郭を抽出(算出)してもよい。
再び図3に戻ると、位置算出部109は、調整部108によって抽出された出力対象の衣服画像の特徴領域の位置と、被写体画像取得部101aによって取得された被写体画像の特徴領域の位置とが一致する、被写体画像上における衣服画像の第1位置を算出する。
なお、位置算出部109は、被写体画像取得部101aによって取得された被写体画像が第1条件を満たすと判別部103によって判別された場合に、第1位置の算出を行う。
位置算出部109は、被写体画像の特徴領域に対して、出力対象の衣服画像の特徴領域をテンプレートとして、テンプレートマッチングを行うことで被写体画像(デプス画像)を探索する。これにより、位置算出部109は、特徴領域が一致する被写体画像(デプス画像)上の位置を第1位置として算出する。なお、位置算出部109によって行われるテンプレートマッチングには、種々の手法を利用することが可能である。
第1位置は、被写体画像上における位置座標によって示される。具体的には、第1位置は、出力対象の衣服画像の特徴領域と被写体画像の特徴領域とが一致したときの、当該被写体画像上における当該特徴領域の中心位置とする。
また、位置算出部109は、出力対象の衣服画像の特徴点の位置と、被写体画像の特徴点の位置とが一致する、当該被写体画像上における当該衣服画像の第2位置を算出する。
ここで、特徴点は、衣服を試着する第1被写体の体型を推定可能な位置である。特徴点は、特徴領域に応じて予め定められる。具体的には、特徴点は、上記した特徴領域の中央に相当する位置に定める。すなわち、特徴点は、特徴領域として用いられる領域に応じて予め設定される。また、特徴点は、画像上の位置座標で示される。本実施形態において特徴領域として肩領域が用いられる場合、肩領域の中心位置(つまり、人体の両肩の中央に相当する位置)が特徴点として定められる。
ここで、図16を参照して、位置算出部109による第2位置の算出の一例について説明する。
位置算出部109は、例えば図16に示す出力対象の衣服画像1001aに対応する骨格情報1001bから、両肩間の中心位置Q1を求める。また、位置算出部109は、図16に示す被写体画像1002aの骨格情報(つまり、当該被写体画像1002aから生成された骨格情報)1002bから、両肩間の中心位置Q2を求める。位置算出部109は、出力対象の衣服画像1001aにおける両肩間の中心位置Q1と、被写体画像1002aにおける両肩間の中心位置Q2が一致する、被写体画像1002a上における衣服画像1001aの第2位置を算出する。すなわち、本実施形態において、位置算出部109は、被写体画像1002a上における両肩間の中心位置Q2を、第2位置として算出することとなる。
再び図3に戻ると、決定部110は、被写体画像取得部101aによって取得された被写体画像が第1条件を満たすと判別部103によって判別された場合、位置算出部109によって算出された第1位置を、当該被写体画像に対する出力対象の衣服画像の重畳位置として決定する。
また、決定部110は、被写体画像取得部101aによって取得された被写体画像が第1条件を満たさないと判別部103によって判別された場合、当該被写体画像より前に取得された被写体画像に対して算出された第1位置と当該被写体画像から位置算出部109によって算出された第2位置との差分から、重畳位置を決定する。
具体的には、決定部110は、被写体画像取得部101aによって取得された被写体画像に基づいて位置算出部109によって算出された第2位置を、上記した差分に応じてずらした位置を重畳位置として決定する。
すなわち、この決定部110において用いられる差分は、今回被写体画像取得部101aによって取得された被写体画像より前に取得された第1条件を満たす被写体画像から位置算出部109によって算出された第1位置と、当該被写体画像から位置算出部109によって算出された第2位置との差分である。
合成画像生成部111は、被写体画像取得部101aによって取得された被写体画像における、決定部110によって決定された重畳位置に、特定部107によって特定された出力対象の衣服画像を重畳した合成画像を生成する。
詳細には、合成画像生成部111は、被写体画像取得部101aによって取得された被写体画像上の重畳位置に、出力対象の衣服画像を重畳する。これにより、合成画像生成部111は、合成画像を生成する。
具体的には、合成画像生成部111は、特定部107によって特定され、調整部108によって調整された衣服画像について、画素毎に定義された色値(Cr,Cg,Cb)、及びアルファ値(a)を参照する。なお、アルファ値aは、0以上1以下の値である。また、第1被写体の被写体画像についても、画素毎の色値(Ir,Ig,Ib)を参照する。合成画像生成部111は、同じ画素位置の画素毎に、下記の式(4)を用いて画素値(色値及びアルファ値)を定めることにより、合成画像を生成する。
Ox=(1−a)×Ix+a×Cx ・・・式(4)
この式(4)において、xは、r、g、bを示す。また、衣服画像が第1被写体の被写体画像の一部の領域のみを占有する場合、当該衣服画像の占有領域外の領域では、アルファ値の値は“0”(a=0)として計算する。
上記したように、合成画像生成部111によって合成画像が生成される際に用いられる第1位置は、特徴領域についてテンプレートマッチングを行うことによって算出される。一方、合成画像生成部111によって合成画像が生成される際に用いられる第2位置は、特徴点の位置から算出される。このため、第1位置を用いた場合には、精度の高い合成画像を生成することができる。一方、第2位置を用いた場合に生成される合成画像は、第1位置を用いた場合に生成される合成画像よりも精度が低くなる。しかしながら、第2位置の算出における負荷は第1位置の算出における負荷よりも低いため、第2位置を用いた場合には、より低い負荷で合成画像を生成することができる。
表示制御部112は、各種画像を表示部12に表示する。具体的には、表示制御部112は、上述した衣服画像の一覧、第1被写体の体型を示す体型パラメータの入力画面及び合成画像生成部111によって生成された合成画像等を表示する。
更新部113は、上述した第1情報の登録及び更新を行う。ここで、図17を参照して、更新部113による第1情報の登録及び更新について説明する。
まず、衣服IDによって識別される衣服毎に、各衣服サイズの衣服を用意する。各衣服サイズの衣服は、例えば体型の異なる複数の第2被写体に着用される。すなわち、第1情報の登録及び更新の際には、図17に示すように衣服サイズの異なる衣服1101の各々を着用したマネキン等の複数の第2被写体1102が用意される。なお、図17においては、便宜的に、衣服1101及び第2被写体1102は、それぞれ1つのみが示されている。
このような衣服1101を着用した第2被写体1102を画像処理システム10における撮像部と同様の装置で撮像することにより、当該第2被写体1102の被写体画像及びデプス画像を得ることができる。更新部113は、このように得られた被写体画像に含まれる衣服領域を切り出すことによって、衣服画像を切り出す。具体的には、更新部113は、衣服領域を示すマスクを設定する。これにより、更新部113は、図17に示すように、各衣服サイズの衣服1101を異なる体型の第2被写体1102が着用した状態を示す複数の衣服画像1103を切り出す。なお、図17においては、便宜的に1つの衣服画像1103のみが示されている。
また、更新部113は、図17に示すように、骨格情報生成部102と同様にして第2被写体1102の骨格情報を算出し、姿勢情報算出部106と同様にして、第2被写体1102の姿勢情報を算出する。
更に、更新部113は、上述した体型パラメータ取得部105と同様に、デプス画像から第2被写体1102の体型を示す体型パラメータを取得する。この体型パラメータは、ユーザによる入力部14に対する操作等により取得されてもよいし、別途、身体のラインが明確となる衣服(例えば、下着等)を着用した状態の第2被写体1102を撮像したデプス画像を用いて推定されてもよい。なお、体型パラメータの推定については、上述した体型パラメータ取得部105による第1体型パラメータの推定と同様であるため、その詳しい説明を省略する。
上記した衣服1101を識別するための衣服IDと、当該衣服1101の衣服サイズと、取得された体型パラメータ(第2体型パラメータ)と、第2被写体1102のモデルIDと、算出された姿勢情報と、切り出された衣服画像と対応づけて含む第1情報は、記憶部16に記憶される。これにより、第1情報が登録または更新される。なお、このような処理は、各衣服サイズの衣服1101の各々を着用した各体型の第2被写体1102の各々を撮像する度に実行される。なお、更新部113は、ユーザによる入力部14の操作指示によって入力された、衣服の種類または属性情報を受け付け、衣服IDに更に対応づけることも可能である。
次に、図18のフローチャートを参照して、本実施形態に係る画像処理装置100の処理手順について説明する。なお、図18に示す処理は、画像処理システム10に備えられる撮像部(第1撮像部15A及び第2撮像部15B)から被写体画像及びデプス画像の各々を1枚受け付ける度に実行される。なお、画像処理装置100が撮像部から例えば複数フレームからなる動画像を受け付ける場合には、当該画像処理装置100は、当該フレーム毎に図18に示す処理を実行する。
まず、被写体画像取得部101a及びデプス画像取得部101bは、被写体画像及びデプス画像を取得する(ステップS1)。以下、ステップS1において取得された被写体画像及びデプス画像を、便宜的に、対象被写体画像及び対象デプス画像と称する。
次に、骨格情報生成部102は、対象デプス画像から第1被写体の骨格情報を生成する(ステップS2)。具体的には、骨格情報生成部102は、対象デプス画像から骨格情報を抽出し、当該抽出された第1被写体の骨格情報の座標系(すなわち、第2撮像部15Bの座標系)を第1撮像部15Aの座標系に変換することによって第1被写体の骨格情報を生成する。
次に、判別部103は、対象被写体画像が第1条件を満たすか否かを判別する(ステップS3)。
ここで、第1条件は、例えば撮像部によって撮像される領域(以下、撮像領域と表記)に存在する第1被写体が異なる第1被写体に入れ替わったとき、が挙げられる。つまり、このような第1条件によれば、第1被写体が異なる第1被写体に入れ替わったときにはステップS3において対象被写体画像が第1条件を満たすと判別される。一方、第1被写体が異なる第1被写体と入れ替わっていないとき、すなわち、当該第1被写体が撮像領域内にとどまって所望の衣服を試着した状態を示す合成画像の確認等をしている場合には、ステップS3において対象被写体画像が第1条件を満たさないと判別される。換言すれば、第1被写体が異なる第1被写体と入れ替わっていなければ、例えば当該第1被写体が当該撮像領域内で体を回転させているような場合であっても対象被写体画像が第1条件を満たさないと判別される。
このような第1条件の場合、判別部103は、対象デプス画像における第1被写体の関節位置の座標値から、被写体画像中において表示部12から予め定めた距離内に人物が存在するか否かを判別する。これにより、例えばある時刻において第1被写体として人物が存在し、その後の時刻において第1被写体として人物が存在せず、更にその後の時刻において第1被写体として人物が存在したと判別部103が判別した場合に、当該判別部103は、撮像領域に存在する第1被写体(人物)が異なる第1被写体に入れ替わったと判別する。この場合には、判別部103は、対象被写体画像が第1条件を満たすと判別する。
例えば、表示部12の前に位置して試着を行う第1被写体が入れ替わった場合には、新たに第1位置及び第2位置を算出することが好ましい。このため、撮像領域に存在する第1被写体が異なる第1被写体に入れ替わったときを、判別部103の判別の条件として設定することで、重畳位置の精度向上を図ることができる。
なお、表示部12の前に位置する第1被写体が移動中に撮像された被写体画像から第1位置を算出すると、当該第1位置の算出精度が低下する可能性がある。このため、判別部103は、撮像領域に存在する第1被写体が異なる第1被写体に入れ替わってから所定時間経過後であって、当該第1被写体の静止が検出された後に取得された被写体画像を、第1条件を満たす被写体画像と判別することが好ましい。なお、これらの第1被写体(人物)の移動及び当該第1被写体の静止等の検出には、種々の手法を利用することが可能である。
ここでは、第1条件が撮像領域に存在する第1被写体が異なる第1被写体に入れ替わったときであるものとして説明したが、当該第1条件は他の条件であっても構わない。以下、他の条件について簡単に説明する。
他の第1条件としては、例えばユーザによる入力部14に対する操作指示によって、試着対象の衣服IDとして、表示中の合成画像に含まれる衣服画像とは異なる衣服の衣服IDが指定されたとき、が挙げられる。
この場合、判別部103は、対象被写体画像が、ユーザによる入力部14に対する操作指示によって、新たな衣服IDが指示された直後に取得された被写体画像であるか否かを判別する。すなわち、対象被写体画像が新たな衣服IDが指示された後に取得された被写体画像であると判別された場合に、判別部103は、当該対象被写体画像が第1条件を満たすと判別する。
なお、表示部12の前に位置して試着を行う第1被写体が入力部14を操作指示するために移動中であるときに撮像された被写体画像から第1位置を算出すると、当該第1位置の算出精度が低下する可能性がある。このため、判別部103は、ユーザによる入力部14に対する操作指示がされたと判別されてから所定時間後であって、かつ、第1被写体(人物)の静止が検出された後に取得された被写体画像を、第1条件を満たす被写体画像と判別することが好ましい。
また、他の第1条件としては、対象被写体画像が、第1位置を算出する対象の被写体画像であると前回判別されてから予め定められた枚数の被写体画像が取得された後に取得された被写体画像であるとき、が挙げられる。
この場合、判別部103は、対象被写体画像が、前回第1位置算出対象として判別された被写体画像の取得から予め定められた枚数が取得された後に取得された被写体画像であるか否かを判別する。すなわち、対象被写体画像が予め定められた枚数が取得された後に取得された被写体画像であると判別された場合に、判別部103は、当該対象被写体画像が第1条件を満たすと判別する。
なお、この予め定められた枚数としては、例えば15枚(動画像である場合には15フレーム)等が挙げられるが、この数に限られない。また、この予め定められた枚数は、位置算出部109の処理負荷が高くなるほど大きい値を設定してもよいし、第1被写体の移動量が大きいほど大きい値を設定してもよい。また、これらの設定条件を組み合わせてもよい。
また、判別部103は、対象被写体画像が、前回第1位置算出対象として判別された被写体画像の取得から予め定められた時間を経過した後に取得された被写体画像であるか否かを判別してもよい。すなわち、対象被写体画像が予め定められた時間を経過した後に取得された被写体画像であると判別された場合に、判別部103は、当該対象被写体画像が第1条件を満たすと判別する。
この場合においても、判別部103は、位置算出部109の処理負荷または第1被写体の移動量等に応じて上記した時間を定めればよい。
また、他の第1条件としては、所定の姿勢情報と、第1被写体の姿勢情報(骨格情報生成部102によって生成された骨格情報)とが一致したとき、が挙げられる。なお、所定の姿勢情報には、例えば正面向きで、腕が10度程度開いている姿勢を示す姿勢情報等が含まれる。
この場合、判別部103は、対象被写体画像から骨格情報生成部102によって生成された骨格情報(第1被写体の骨格情報)と、例えば記憶部16に記憶されている所定の姿勢情報に含まれる骨格情報とが一致したか否かを判別する。すなわち、第1被写体の骨格情報と所定の姿勢情報に含まれる骨格情報とが一致したと判別された場合に、判別部103は、対象被写体画像が第1条件を満たすと判別する。
第1被写体の姿勢と、所定の姿勢とが不一致である場合には、位置算出部109でテンプレートマッチングを行っても、十分な精度のテンプレートマッチングを行うことが難しい場合がある。
そこで、所定の姿勢情報と、第1被写体の姿勢情報とが一致する場合に、判別部103は、対象被写体画像が第1条件を満たすと判別することが好ましい。
また、他の第1条件としては、第1被写体の移動量が予め定めた値以下であるとき、が挙げられる。
この場合、判別部103は、対象デプス画像における第1被写体の関節位置の座標値から、対象被写体画像中における第1被写体の位置を判別する。第1被写体の移動量は、判別部103によって判別された、前回取得されたデプス画像における第1被写体の位置と今回取得されたデプス画像(つまり、対象デプス画像)における第1被写体の位置とを比較することによって算出される。このように算出された第1被写体の移動量が予め定めた値以下であると判別された場合に、判別部103は、対象被写体画像が第1条件を満たすと判別する。
また、他の第1条件としては、対象被写体画像に含まれる第1被写体が腕を下げた状態である場合、が挙げられる。
この場合、判別部103は、対象デプス画像における第1被写体の関節位置の座標値から、第1被写体の腕部に相当する位置が第1被写体の肩部より下側(足側)に伸びる方向に位置している(つまり、第1被写体が腕を下げた状態である)か否かを判別する。第1被写体が腕を下げた状態であると判別された場合に、判別部103は、対象被写体画像が第1条件を満たすと判別する。
第1被写体が腕を上げた姿勢である場合、出力対象の衣服画像の姿勢情報と第1被写体の姿勢情報とが異なる可能性が高い。このような姿勢の第1被写体の被写体画像を用いて位置算出部109によるテンプレートマッチングが行われると、当該テンプレートマッチングの精度が低下する場合がある。そこで、判別部103は、対象被写体画像に含まれる第1被写体が腕を下げた状態であると判別された場合に、当該対象被写体画像が第1条件を満たすと判別することが好ましい。
なお、ここでは第1条件の例として複数の条件について説明したが、第1条件は、上記した条件のうちの1つであってもよいし、当該条件のうちの複数であってもよい。
ステップS3において対象被写体画像が第1条件を満たすと判別された場合(ステップS3のYES)、第1衣服画像特定処理が実行される(ステップS4)。この第1衣服画像特定処理においては、出力対象の衣服画像が特定部107によって特定される。また、第1衣服画像特定処理においては、特定部107によって特定された出力対象の衣服画像(以下、対象衣服画像と表記)及び対象被写体画像に対する調整処理が調整部108によって行われる。この調整処理においては、後述する第1位置算出処理で用いられる対象衣服画像及び対象被写体画像の特徴領域の抽出等が行われる。なお、第1衣服画像特定処理の詳細については後述する。
次に、位置算出部109は、第1位置算出処理を実行する(ステップS5)。この第1位置算出処理においては、第1衣服画像特定処理において抽出された対象衣服画像の特徴領域の位置と対象被写体画像の特徴領域の位置とが一致する、対象被写体画像上における対象衣服画像の第1位置が算出される。なお、第1位置算出処理の詳細については後述する。
第1位置算出処理によって算出された第1位置は、対象被写体画像を特定可能な情報に対応づけて記憶部16に記憶される(ステップS6)。この対象被写体画像を特定可能な情報としては、例えば当該対象被写体画像の取得日時等が用いられる。
次に、位置算出部109は、第2位置算出処理を実行する(ステップS7)。この第2位置算出処理においては、対象衣服画像の特徴点の位置と対象被写体画像の特徴点の位置とが一致する、対象被写体画像上における対象衣服画像の第2位置を算出する。なお、第2位置算出処理の詳細については後述する。
第2位置算出処理によって算出された第2位置は、対象被写体画像を特定可能な情報に対応づけて記憶部16に記憶される(ステップS8)。この対象被写体画像を特定可能な情報としては、例えば上記したステップS6と同様の情報が用いられる。
次に、決定部110は、ステップS5において算出された第1位置と、ステップS7において算出された第2位置とを記憶部16から読み取る。決定部110は、読み取られた第1位置及び第2位置の差分を算出する(ステップS9)。
決定部110によって算出された差分は、ステップS6及びS8で用いられた対象被写体画像を特定可能な情報に対応づけて記憶部16に記憶される(ステップS10)。
なお、記憶部16に既に第1位置と第2位置との差分が記憶されている場合には、ステップS9において算出された差分が当該既に記憶されている差分に上書きされることによって、最新の差分のみが記憶部16に記憶されるようにしてもよい。
次に、決定部110は、重畳位置を決定する(ステップS11)。この場合、決定部110は、ステップS5において算出された第1位置を、対象被写体画像における対象衣服画像の重畳位置として決定する。
すなわち、上記したステップS3〜S11の処理によれば、対象被写体画像が第1条件を満たすと判別された場合には、位置算出部109によって算出された第1位置が当該対象被写体画像上における対象衣服画像の重畳位置として決定される。
一方、ステップS3において対象被写体画像が第1条件を満たさないと判別された場合(ステップS3のNO)、第2衣服画像特定処理が実行される(ステップS12)。この第2衣服画像特定処理においては、上述した第1衣服画像特定処理とは異なる処理が実行されることによって、出力対象の衣服画像が特定部107によって特定される。なお、この出力対象の衣服画像を特定する際の処理手順は、画像処理システム10(画像処理装置100)において設定されている動作モードに応じて異なる。
具体的には、例えば動作モードとして上述した追従モードが画像処理システム10において設定されている場合、第2衣服画像特定処理においては、記憶部16に記憶されている(第1情報に含まれる)複数の衣服画像のうち、姿勢情報算出部106によって算出された第1被写体の向きを示す当該第1被写体の回転角度に対応する衣服画像が出力対象の衣服画像として特定される。
一方、例えば動作モードとして上述した姿見モードが画像処理システム10において設定されている場合、第2衣服画像特定処理においては、記憶部16に記憶されている(第1情報に含まれる)複数の衣服画像のうち、姿勢情報算出部106によって算出された第1被写体の向きを示す回転角度とは異なる回転角度に対応する衣服画像が出力対象の衣服画像として特定される。
また、第2衣服画像特定処理においては、上述した第1衣服画像特定処理と同様に、特定部107によって特定された出力対象の衣服画像(対象衣服画像)及び対象被写体画像に対する調整処理が調整部108によって行われる。なお、第2衣服画像特定処理の詳細については後述する。
次に、位置算出部109は、第2位置算出処理を実行する(ステップS13)。なお、このステップS13において実行される第2位置算出処理は、上記したステップS7において実行される第2位置算出処理と同様の処理である。
決定部110は、ステップS13における第2位置算出処理によって算出された第2位置に基づいて重畳位置を決定する(ステップS14)。
具体的には、決定部110は、今回取得された被写体画像(つまり、対象被写体画像)より前に取得された被写体画像から算出された第1位置と、当該第1位置の算出に用いた被写体画像から算出された第2位置との差分を記憶部16から読み取る。過去に算出された複数の差分が記憶部16に蓄積されているような場合には、決定部110は、当該複数の差分のうち、最新の差分(すなわち、前回算出された差分)を読み取る。決定部110は、ステップS13における第2位置算出処理によって算出された第2位置を、読み取られた差分に応じてずらした位置を、重畳位置として決定する。
なお、第2位置をずらす方向は、記憶部16に記憶されている第2位置(つまり、前回位置算出部109によって算出された第2位置)を始点、当該記憶部16に記憶されている第1位置(つまり、前回位置算出部109によって算出された第1位置)を終点とする方向ベクトルに対して平行な方向である。
上記したステップS11またはS14の処理が実行されると、合成画像生成部111は、合成画像を生成する(ステップS15)。この場合、合成画像生成部111は、対象被写体画像上の重畳位置(つまり、決定部110によって決定された重畳位置)に、対象衣服画像を重畳することで合成画像を生成する。
上記したように合成画像生成部111によって合成画像が生成されると、表示制御部112は、当該合成画像をユーザ(例えば、第1被写体)に提示するための制御を行う。これによれば、合成画像生成部111によって生成された合成画像は、例えば表示部12に表示される(ステップS16)。
次に、画像処理装置100では、画像処理を終了するか否かが判別される(ステップS17)。ここで、画像処理装置100には、当該画像処理装置100における画像処理の終了を指示するための終了指示ボタン(図示せず)が設けられているものとする。この終了指示ボタンがユーザによって指定(指示)された場合には、画像処理装置100は、当該画像処理装置100における画像処理の終了指示を示す信号(以下、終了指示信号と表記)を受け付ける。すなわち、この終了指示信号が画像処理装置100において受け付けられた場合には、画像処理を終了すると判別される。
このように画像処理を終了すると判別された場合(ステップS17のYES)、画像処理装置100における画像処理は終了される。
一方、画像処理を終了しないと判別された場合(ステップS17のNO)、上記したステップS1に戻って処理が繰り返される。
次に、図19のフローチャートを参照して、上述した第1衣服画像特定処理(図18に示すステップS4の処理)の処理手順について説明する。
まず、受付部104は、試着対象の衣服の衣服ID及び衣服サイズを入力部14から受け付ける(ステップS21)。
なお、衣服ID及び衣服サイズを受け付けるステップS21の処理は、例えば上述した図18に示す処理の前に実行されていても構わない。
次に、体型パラメータ取得部105は、対象デプス画像(図18に示すステップS1においてデプス画像取得部101bによって取得されたデプス画像)から、第1被写体の第1体型パラメータを推定する(ステップS22)。これにより、体型パラメータ取得部105は、推定された第1被写体の第1体型パラメータを取得する。
なお、体型パラメータ取得部105が体重測定部13から体重を取得した場合、当該体型パラメータ取得部105は、当該取得された体重及び対象デプス画像から推定された各パラメータを含む第1体型パラエータを取得する。
次に、姿勢情報算出部106は、骨格情報生成部102によって生成された第1被写体の骨格情報に基づいて当該第1被写体の姿勢情報を算出する(ステップS23)。この場合、姿勢情報算出部106は、第1被写体の骨格情報によって示される各関節の位置から第1被写体の向きを算出する。第1被写体の向きは、例えば第1撮像部15Aに対して正面の向きを基準とした場合における当該第1被写体の回転角度によって示される。これにより、姿勢情報算出部106は、第1被写体の向き(及び骨格情報)を含む姿勢情報を算出する。なお、姿勢情報算出部106によって算出された姿勢情報は、例えば対象被写体画像を特定可能な情報に対応づけて記憶部16に記憶されるものとする。この対象被写体画像を特定可能な情報としては、例えば上述した図18に示すステップS6と同様の情報を用いることができる。
次に、特定部107は、記憶部16に記憶されている第1情報における、受付部104によって受け付けられた衣服ID及び衣服サイズに対応する複数の衣服画像のうち、体型パラメータ取得部105によって取得(推定)された第1体型パラメータとの非類似度が閾値以下の第2体型パラメータと、姿勢情報算出部106によって算出された姿勢情報(つまり、第1被写体の回転角度)とに対応する衣服画像を特定する(ステップS24)。
表示制御部112は、特定部107によって特定された衣服画像を表示部12に表示する(ステップS25)。
ここで、ユーザによる入力部14に対する衣服画像の選択指示が受付部104によって受け付けられたか否かが判別される(ステップS26)。
選択指示が受け付けられていないと判別された場合(ステップS26のNO)、受付部104は、ユーザによる入力部14に対する操作指示に応じて、当該入力部14から例えば上記したステップS21において受け付けられた衣服サイズとは異なる衣服サイズを取得する(ステップS27)。ステップS27の処理が実行されると、ステップS24に戻って処理が繰り返される。これにより、ステップS21において受け付けられた衣服サイズをステップS27において取得された衣服サイズに変更してステップS24以降の処理を実行することができる。
なお、ステップS27においては衣服サイズが取得されるものとして説明したが、当該ステップS27において衣服ID及び衣服サイズが取得されても構わない。この場合には、ステップS21において受け付けられた衣服ID及び衣服サイズをステップS27において取得された衣服ID及び衣服サイズに変更してステップS24以降の処理を実行することができる。
一方、選択指示が受け付けられたと判別された場合(ステップS26のYES)、当該選択指示された衣服画像が出力対象の衣服画像として特定される。すなわち、第1衣服画像特定処理においては、上述したステップS21〜S27の処理が実行されることによって、出力対象の衣服画像が特定される。なお、第1衣服画像特定処理によって特定される出力対象の衣服画像は、上記した姿勢情報算出部106によって算出された姿勢情報(第1被写体の回転角度)に対応する衣服画像(つまり、衣服が第1被写体の体にフィットした状態を示すための衣服画像)である。このように第1衣服画像特定処理(ステップS21〜S27の処理)において特定された出力対象の衣服画像を識別するための衣服ID及び衣服サイズ(つまり、ユーザによって指定された衣服ID及び衣服サイズ)は記憶部16に記憶される。以下、記憶部16に記憶された衣服ID及び衣服サイズは、便宜的に、指定衣服ID及び指定衣服サイズと称する。
次に、調整部108は、対象デプス画像を調整する(ステップS28)。具体的には、調整部108は、対象デプス画像の各画素の画素位置の座標系(第2撮像部15Bの座標系)を第1撮像部15Aの座標系に変換する。調整部108は、座標変換後の対象デプス画像を構成する各画素の位置が、同じタイミングで取得された対象被写体画像(図18に示すステップS1において被写体画像取得部101aによって取得された被写体画像)を構成する各画素の位置に対応する位置となるように射影する。これにより、調整部108は、対象デプス画像の解像度を、対象被写体画像と同じ解像度に調整する。
次に、調整部108は、対象衣服画像(ステップS21〜S27の処理が実行されることによって特定された出力対象の衣服画像)における特徴領域の大きさ、及び対象被写体画像における特徴領域の大きさの各々を算出する(ステップS29)。なお、本実施形態においては、特徴領域として肩領域を用いる。このため、調整部108は、特徴領域の大きさとして、対象衣服画像における肩幅と対象被写体画像における肩幅との各々を算出する。
調整部108は、算出された特徴領域の大きさ、すなわち、対象衣服画像における肩幅と対象被写体画像における肩幅とから、対象衣服画像のスケーリング値(拡大縮小率)を決定する(ステップS30)。
調整部108は、決定されたスケーリング値を用いて、対象衣服画像及び当該対象衣服画像に対応する姿勢情報に含まれる骨格情報を拡大または縮小(つまり、スケーリング)する(ステップS31)。
次に、調整部108は、拡大または縮小された後の、対象衣服画像と、対象被写体画像とから、特徴領域を抽出する。
この場合、調整部108は、拡大または縮小された後の対象衣服画像と、対象被写体画像との各々の輪郭を抽出する(ステップS32)。
次に、調整部108は、対象衣服画像及び対象被写体画像の特徴領域として、抽出された対象衣服画像の輪郭及び対象被写体画像の輪郭の各々における肩領域を抽出する(ステップS33)。ステップS33の処理が実行された場合、第1衣服画像特定処理は終了される。
なお、上記したステップS31においては対象衣服画像及び対象被写体画像における特徴領域の大きさ(肩幅)から決定されたスケーリング値を用いて対象衣服画像を拡大または縮小するものとして説明したが、例えば対象衣服画像の輪郭及び対象被写体画像の輪郭の少なくとも一部が一致するように、対象衣服画像及び対象被写体画像の少なくとも一方が拡大または縮小されればよい。よって、例えばステップS30において決定されたスケーリング値の逆数を用いて、対象被写体画像が拡大または縮小されるような構成であっても構わない。
上記したように第1衣服画像特定処理においては、ステップS28〜S33の処理が実行されることによって、対象衣服画像及び対象被写体画像の少なくとも一方が拡大または縮小され、当該拡大または縮小後の対象衣服画像及び対象被写体画像から特徴領域として肩領域が抽出される。
なお、衣服画像の特徴領域は、例えば第1情報において当該衣服画像に予め対応づけられていても構わない。この場合、調整部108が第1情報に含まれている(登録されている)衣服画像の各々について上述したステップS32及びS33の処理を予め実行すればよい。なお、このような構成の場合における第1衣服画像特定処理においては、ステップS30において決定されたスケーリング値に基づいて出力対象の衣服画像として特定された衣服画像の特徴領域を拡大または縮小することによって、後に実行される第1位置算出処理で用いられる特徴領域を得ることができる。
次に、図20のフローチャートを参照して、上述した第1位置算出処理(図18に示すステップS5の処理)の処理手順について説明する。
まず、位置算出部109は、調整部108によって抽出された特徴領域としての対象衣服画像の肩領域と対象被写体画像の肩領域とを用いて、テンプレートマッチングを実行する(ステップS41)。ここでは、位置算出部109は、テンプレートマッチングによって、調整部108によって調整された対象デプス画像を探索し、当該対象デプス画像(対象被写体画像)上における対象衣服画像の特徴領域(肩領域)と一致する位置を第1位置として算出する。
次に、位置算出部109は、算出された第1位置を決定部110に出力する(ステップS42)。
ステップS42の処理が実行されると、第1位置算出処理は終了される。なお、位置算出部109によって算出された第1位置は、上述したように記憶部16に記憶される。
次に、図21のフローチャートを参照して、上述した第2位置算出処理(図18に示すステップ7及びS13の処理)の処理手順について説明する。
まず、位置算出部109は、対象衣服画像の特徴領域に応じて定められる当該対象衣服画像の特徴点の位置を算出する。ここで、対象衣服画像の特徴領域が上述したように肩領域であるものとすると、位置算出部109は、対象衣服画像の特徴点として、当該対象衣服画像における第2被写体(が着用している衣服)の両肩間の中心位置を算出する(ステップS51)。この場合、位置算出部109は、対象衣服画像に対応する姿勢情報に含まれる骨格情報(上述した第1衣服画像特定処理において拡大または縮小された骨格情報)から、例えば第2被写体の両肩間の中心位置を算出する。
同様に、位置算出部109は、対象被写体画像の特徴領域に応じて定められる当該対象被写体画像の特徴点の位置を算出する。ここで、対象被写体画像の特徴領域が上述したように肩領域であるものとすると、位置算出部109は、対象被写体画像の特徴点として、当該対象被写体画像における第1被写体の両肩間の中心位置を算出する(ステップS52)。この場合、位置算出部109は、図18に示すステップS2において骨格情報生成部102によって生成された第1被写体の骨格情報から、当該第1被写体の両肩間の中心位置を算出する。
次に、位置算出部109は、ステップS51において算出された中心位置と、ステップS52において算出された中心位置とが一致するように第2位置を算出する(ステップS53)。本実施形態においては、位置算出部109は、ステップS52において算出された対象被写体画像における第1被写体の両肩間の中心位置を第2位置として算出する。
ステップS53の処理が実行されると、第2位置算出処理は終了される。なお、位置算出部109によって算出された第2位置は、上述したように記憶部16に記憶される。
ここで、図22を参照して、上述した図18に示すステップS3において第1条件を満たすと判別された場合における合成画像の生成について説明する。
ここでは、出力対象の衣服画像(対象衣服画像)が図22に示す衣服画像1201であり、第1被写体のデプス画像(対象デプス画像)が図22に示すデプス画像1301であるものとする。
この場合、図22に示すように、調整部108による調整処理によって、衣服画像1201から輪郭1202が抽出される(ステップS61)。更に、調整部108による調整処理によって、特徴領域として肩領域1203が抽出される(ステップS62)。
同様に、図22に示すように、調整部108による調整処理によって、デプス画像1301から輪郭1302が抽出される(ステップS63)。更に、調整部108による調整処理によって、特徴領域として肩領域1303が抽出される(ステップS64)。
次に、衣服画像の肩領域1203とデプス画像(被写体画像)の肩領域1303とを用いたテンプレートマッチングが行われる(ステップS65)。これにより、上述した第1位置を算出する。ここでは、この第1位置が重畳位置として決定される。
この場合、第1被写体の被写体画像(対象被写体画像)上の重畳位置(第1位置)に、衣服画像1201が重畳される。これにより、合成画像Wが生成される(ステップS66)。
すなわち、上述した図18に示すステップS3において第1条件を満たすと判別された場合には、衣服が第1被写体の体にフィットした状態を示す合成画像Wをユーザに提示(表示)することができる。
ここで、図23は、合成画像Wの一例を示す図である。上述したように合成画像Wは、被写体画像(に含まれる第1被写体P)上に、衣服画像1201が重畳された画像である。なお、この衣服画像1201は、受付部104によって受け付けられた衣服IDによって識別される衣服を、第1被写体の体型に一致または類似する体型の第2被写体が着用した状態を示す衣服画像である。このため、本実施形態においては、図23に示すように、第1被写体の体型に応じた試着状態を示す合成画像Wをユーザに対して提示することができる。
次に、上述した第2衣服画像特定処理(図18に示すステップS12の処理)について説明する。なお、第2衣服画像特定処理の処理手順は、上述したように画像処理システム10において設定されている動作モードに応じて異なる。以下、画像処理システム10の動作モードとして追従モードが設定されている場合及び姿見モードが設定されている場合についてそれぞれ説明する。ここでは、上述した第1衣服画像特定処理が実行された後にユーザが撮像領域内で体を回転させた場合を想定している。
まず、図24のフローチャートを参照して、画像処理システム10の動作モードとして追従モードが設定されている場合の第2衣服画像特定処理の処理手順について説明する。
追従モードが設定されている場合の第2衣服画像特定処理においては、前述した図19に示すステップS22及びS23の処理に相当するステップS71及びS72が実行される。
次に、特定部107は、記憶部16に記憶されている第1情報における、前に実行された第1衣服画像特定処理において受付部104によって受け付けられた衣服ID及び衣服サイズ(つまり、記憶部16に記憶されている指定衣服ID及び指定衣服サイズ)に対応する複数の衣服画像のうち、ステップS71において取得(推定)された第1体型パラメータとの非類似度が閾値以下の第2体型パラメータと、ステップS72において算出された姿勢情報(つまり、第1被写体の回転角度)とに対応する衣服画像を出力対象の衣服画像として特定する(ステップS73)。
なお、図24においては省略されているが、前述した図19に示すステップS25〜S27の処理に相当する処理が更に実行されることによって指定衣服サイズ等が変更されても構わない。
次に、前述した図19に示すステップS28〜S31の処理に相当するステップS74〜S77の処理が実行されて、第2衣服画像特定処理は終了される。
なお、ステップS77において拡大または縮小された骨格情報は、第2衣服画像特定処理の後に実行される第2位置算出処理において用いられる。この第2位置算出処理は、上述した図21において説明した通りであるため、その詳しい説明を省略する。
上記したように画像処理システム10において追従モードが設定された状態で、例えば第1衣服画像特定処理が実行された後に第1被写体が撮像領域内で体を回転させたような場合には、図24に示す第2衣服画像特定処理が実行されることによって、第1被写体が体を回転させた後の回転角度に対応する衣服画像(衣服がユーザの体にフィットした状態を示すための衣服画像)が特定される。
次に、図25のフローチャートを参照して、画像処理システム10の動作モードとして姿見モードが設定されている場合の第2衣服画像特定処理の処理手順について説明する。
姿見モードが設定されている場合の第2衣服画像特定処理においては、前述した図19に示すステップS21及びS22(図24に示すステップS71及びS72)の処理に相当するステップS81及びS82の処理が実行される。
次に、特定部107は、今回算出された姿勢情報(つまり、ステップS82において算出された姿勢情報)及び前回算出された姿勢情報(つまり、前回の第1または第2衣服画像特定処理において記憶部16に記憶された姿勢情報)に基づいて第1被写体の回転速度を算出する(ステップS83)。
この場合、特定部107は、今回算出された姿勢情報に含まれる第1被写体の回転角度(第1の回転角度)及び前回算出された姿勢情報に含まれる第1被写体の回転角度(第3の回転角度)の変化量に基づいて第1被写体の回転速度を算出する。
ここで、前回算出された姿勢情報に含まれる第1被写体の回転角度(以下、前回の回転角度と表記)は、前回の図18に示す処理において取得された被写体画像(つまり、今回の図18に示す処理において取得された被写体画像よりも前に取得された被写体画像)等に基づいて算出された第1被写体の回転角度である。一方、今回算出された姿勢情報に含まれる第1被写体の回転角度(以下、今回の回転角度と表記)は、今回の図18に示す処理において取得された被写体画像等に基づいて算出された第1被写体の回転角度である。
この場合、特定部107は、例えば今回の回転角度及び前回の回転角度の差分を被写体画像の取得間隔(すなわち、撮像部によって第1被写体が撮像される間隔)で除算することによって第1被写体の回転速度を算出する。
次に、特定部107は、今回の回転角度及び算出された回転速度に基づいて、当該今回の回転角度とは異なる回転角度(第2の回転角度)を算出する(ステップS84)。このステップS84において算出される回転角度は、後述する出力対象の衣服画像を特定するために用いられる。以下、ステップS84において算出される回転角度を、便宜的に、姿見用の回転角度と称する。
ここで、ステップS84における算出処理について具体的に説明する。ここでは、姿見用の回転角度として、今回の回転角度よりも大きい回転角度が算出される場合について説明する。
この場合、特定部107は、今回の回転角度(つまり、実際の第1被写体の向き)に応じて一意に定まる、少なくとも当該今回の回転角度以下とはならない値(以下、基準値と表記)を算出する。この基準値は、例えばシグモイド関数を用いて算出することが可能であるが、他の関数等を用いて算出されても構わない。
次に、特定部107は、算出された回転速度に応じたオフセット値を所定の関数等に基づいて決定する。具体的には、例えば算出された回転速度が大きな値であるほど、オフセット値としては大きな値が決定されるものとする。特定部107は、このように決定されたオフセット値を基準値に加算することによって姿見用の回転角度を算出する。
特定部107は、このような処理を実行することによって、今回の回転角度より大きい姿見用の回転角度を算出することができる。
上記したステップS85において姿見用の回転角度が算出されると、特定部107は、記憶部16に記憶されている第1情報における、前に実行された第1衣服画像特定処理において受付部104によって受け付けられた衣服ID及び衣服サイズ(つまり、記憶部16に記憶されている指定衣服ID及び指定衣服サイズ)に対応する複数の衣服画像のうち、ステップS81において取得(推定)された第1体型パラメータとの非類似度が閾値以下の第2体型パラメータと、ステップS84において算出された姿見用の回転角度とに対応する衣服画像を出力対象の衣服画像として特定する(ステップS85)。
なお、図25においては省略されているが、前述した図19に示すステップS25〜S27の処理に相当する処理が更に実行されることによって指定衣服サイズ等が変更されても構わない。
次に、前述した図19に示すステップS28〜S31(図24に示すステップS74〜S77)の処理に相当するステップS86〜S89の処理が実行されて、第2の衣服画像特定処理は終了される。
なお、ステップS89において拡大または縮小された骨格情報は、第2衣服画像特定処理の後に実行される第2位置算出処理において用いられる。この第2位置算出処理は、上述した図21において説明した通りであるため、その詳しい説明を省略する。
上記したように画像処理システム10において姿見モードが設定された状態で、例えば第1衣服画像特定処理が実行された後に第1被写体が撮像領域内で体を回転させたような場合には、図25に示す第2衣服画像特定処理が実行されることによって、第1被写体が体を回転させた後の回転角度よりも大きい姿見用の回転角度に対応する衣服画像(つまり、実際の第1被写体の体の回転よりも回転した衣服の状態を示すための衣服画像)が特定される。
なお、図25に示す第2の衣服画像特定処理においては、ステップS83において第1被写体の回転速度を算出し、今回の回転角度及び当該算出された回転速度に基づいて姿見用の回転角度を算出するものとして説明したが、例えばステップS83の処理を省略し、姿見用の回転角度が今回の回転角度のみから算出されるような構成であっても構わない。この場合には、上述した例えばシグモイド関数等を用いて算出される基準値を姿見用の回転角度として利用すればよい。なお、姿見用の回転角度の算出において、回転速度(つまり、オフセット値)を利用する否かについては、適宜設定により変更可能であるものとする。
また、ここでは今回の回転角度より大きい姿見用の回転角度が算出されるものとして説明したが、例えば今回の回転角度が予め定められた値(所定角度)を超えている場合には予め定められている回転角度を姿見用の回転角度として算出するような構成とすることも可能である。なお、この場合において姿見用の回転角度として算出される回転角度は、ユーザが確認したい所望の角度となるように適宜設定可能であるものとする。
ここで、上述した図18に示すステップS3において第1条件を満たさないと判別された場合であって、画像処理システム10において追従モードが設定されている場合に提示される合成画像及び姿見モードが設定されている場合において提示される合成画像について説明する。ここでは、上述した図23に示す合成画像Wが提示された後に、第1被写体Pが体を右回りで回転した場合について説明する。
まず、図26は、追従モードが設定されている場合に提示される合成画像W1の一例を示す。図26に示す合成画像W1は、第1被写体Pの体が例えば右回りに80度程度回転した向きを向いている被写体画像上に、衣服画像1400が重畳された画像である。
ここで、図27は、追従モードが設定されている場合における、被写体画像における第1被写体Pの回転角度と当該被写体画像に重畳される衣服画像に対応する回転角度(つまり、表示する衣服の回転角度)との対応関係の一例を表している。図27に示すように、本実施形態において追従モードが設定されている場合、表示する衣服の回転角度は、第1被写体Pの体の回転角度と一致する。
これにより、本実施形態において追従モードが設定されている状態において第1被写体Pが体を回転させた場合には、図26に示すように、衣服が第1被写体Pの体にフィットした状態を示す(つまり、第1被写体Pの体の回転角度と衣服の回転角度とが一致した)合成画像W1を提示することができる。
一方、図28は、姿見モードが設定されている場合に提示される合成画像W2の一例を示す。図28に示す合成画像W2は、上記した図26の場合と同様に、第1被写体Pの体が例えば右回りに80度程度回転した向きを向いている被写体画像上に、衣服画像1500が重畳された画像である。
ここで、図29は、姿見モードが設定されている場合における、被写体画像における第1被写体Pの回転角度と当該被写体画像に重畳される衣服画像に対応する回転角度(つまり、表示する衣服の回転角度)との対応関係の一例を表している。図29に示す表示する衣服の回転角度は、対応する第1被写体Pの回転角度を用いて算出された姿見用の回転角度であるが、図29においては便宜的に上述したシグモイド関数等を用いて当該第1被写体Pの回転角度から算出される基準値を姿見用の回転角度としている。この場合、図29に示すように、表示する衣服の回転角度は、少なくとも対応する第1被写体Pの回転角度以下とはならない値となっている。なお、図29に示す表示する衣服の回転角度に対して上述したオフセット値を加算した値を姿見用の回転角度としても構わない。
これにより、本実施形態において姿見モードが設定されている状態において第1被写体Pが体を回転させた場合には、図28に示すように、追従モードの場合と比較して衣服が第1被写体Pの体にフィットしないものの、衣服を着用した後ろ姿等の状態を簡易的に示すような合成画像W2を提示することができる。
なお、図29は上述したシグモイド関数を用いて算出された姿見用の回転角度(基準値)を示しているが、例えば図30及び図31に示すように、上述した第1被写体Pの回転角度が所定角度(第1所定角度)を超えた場合には、所定角度(第2所定角度)を姿見用の回転角度(つまり、表示する衣服の回転角度)とするような構成であってもよい。図30は、第1被写体Pの体が60度(または−60度)以上回転した向きを向いている場合には、表示する衣服の回転角度を60度(または−60度)とする例が表している。また、図31は、第1被写体Pの体が60度(または−60度)以上回転した向きを向いている場合には、表示する衣服の回転角度を80度(または−80度)とする例を表している。
上記したように本実施形態においては、第1被写体の回転角度及び当該第1被写体の回転速度に基づいて当該第1被写体の回転角度とは異なる姿見用の回転角度を算出し、記憶部16に記憶されている複数の衣服画像のうち、当該姿見用の回転角度に対応する衣服画像を特定し、被写体画像上に当該特定された衣服画像を重畳した合成画像を生成する。この場合における姿見用の回転角度は、例えば第1被写体の回転角度に応じて一意に定まる、少なくとも当該回転角度以下とはならない基準値に対して、第1被写体の回転速度に応じたオフセット値を加算することによって算出される。
すなわち、本実施形態においては、第1被写体の体の回転角度に対して、当該回転角度及び回転速度に応じて重み付けした回転角度に対応する衣服画像を重畳した合成画像を生成することによって、当該第1被写体の体の実際の回転角度が小さい場合であっても回転角度の大きい衣服画像を表示することができる。本実施形態においては、このような構成により、衣服を仮想試着した後ろ姿等の状態をユーザ(第1被写体)は少ない負担で確認することができるため、仮想試着時のユーザの負担を軽減し、ユーザビリティを向上させることが可能となる。
また、第1被写体が体を回転させた状態で表示部12を参照すると当該体が動いてしまう場合があり、その都度表示される衣服の回転角度が変化してしまう場合がある。また、第1被写体が体を回転させることによって所望の角度からの衣服(画像)を確認する場合には、当該所望の角度の衣服が表示されるように当該第1被写体の体の回転(角度)を調整する必要がある。これに対して、本実施形態においては、例えば上述した図30に示すように第1被写体の回転角度が所定角度(例えば、60度)を超えている場合には姿見用の回転角度を当該所定角度(例えば、60度)とする構成とした場合には、第1被写体は体の回転(角度)の微調整を行うことなく所望の角度の衣服画像を表示することが可能となるため、仮想試着時のユーザの負担を軽減することが可能となる。同様に、例えば上述した図31に示すように第1被写体の回転角度が所定角度(例えば、60度)を超えている場合には姿見用の回転角度を当該所定角度より大きい所定角度(例えば、80度)とするような構成とした場合には、例えば第1被写体は少ない回転であっても所望の角度の衣服画像を表示することが可能となるため、仮想試着時のユーザの負担を軽減することが可能となる。
また、本実施形態においては、追従モードが設定されている場合には第1被写体の実際の回転角度に対応する衣服画像を出力対象の衣服画像として特定し、姿見モードが設定されている場合には上記した姿見用の回転角度に対応する衣服画像を出力対象の衣服画像として特定する。更に、本実施形態においては、ユーザの指示に応じて追従モード及び姿見モードを切り替えることが可能である。本実施形態においては、このような構成により、ユーザが例えば衣服が第1被写体の体にフィットした状態を確認したいような場合には追従モードを設定し、一方、例えば衣服の全体的な雰囲気等を確認したいような場合には姿見モードを設定することができるため、ユーザの意図に応じた合成画像を提示することが可能となる。
また、本実施形態においては、1または複数の衣服サイズの各々に対応する衣服を第1被写体の体型と一致または類似する体型の第2被写体が着用した状態の衣服画像を出力対象の衣服画像として特定し、当該衣服画像と第1被写体の被写体画像との合成画像を生成する。このため、本実施形態によれば、第1被写体の体型に応じた試着状態を提供することが可能となる。
なお、本実施形態に係る画像処理装置100は、例えば画像処理システム10(画像処理装置100)において設定されている動作モード(追従モードまたは姿見モード)をユーザ(第1被写体)に通知するための機能を有していてもよい。具体的には、合成画像生成部111が合成画像を生成する際に、被写体画像に重畳される衣服画像(特定部107によって特定された出力対象の衣服画像)に対して追従モードまたは姿見モードが設定されていることを通知するための加工を施すようにしてもよい。これによれば、設定されている動作モードに応じて衣服画像に対して異なる加工を施すことによって、追従モード及び姿見モードのいずれが設定されているかをユーザに対して通知することが可能となる。衣服画像に対して施される加工としては、例えば当該衣服画像の輪郭に対して施される画像エフェクト、または当該衣服画像に対して付加されるアニメーション等が含まれる。なお、例えば表示部12の所定の領域において、設定されている動作モードを表す文字列またはマーク等を表示することによって、当該設定されている動作モードを通知するような構成としても構わない。
また、本実施形態においては、前述した図18に示すステップS3において第1条件を満たさないと判別された場合に、画像処理システム10において設定されている動作モードに応じて異なる第2衣服画像特定処理が実行される。これに対して、図18に示すステップS3において第1条件を満たすと判別された場合には、設定されている動作モードにかかわらず図19に示す第1衣服画像特定処理が実行されるものとして説明したが、当該第1衣服画像特定処理においても当該設定されている動作モードに応じて異なる処理が実行されても構わない。具体的には、追従モードが設定されている場合には図19において説明したように第1衣服画像特定処理において第1被写体の実際の回転角度に対応する衣服画像を出力対象の衣服画像として特定し、姿見モードが設定されている場合には当該第1衣服画像特定処理において第1被写体の実際の回転角度等から上述した姿見用の回転角度を算出して、当該姿見用の回転角度に対応する衣服画像を出力対象の衣服画像として特定するような構成とすることも可能である。
また、本実施形態においては、受付部104が試着対象の衣服を識別するための衣服IDとして1つの衣服IDを受け付ける場合を想定して説明したが、当該受付部104は、試着対象の衣服を識別するための衣服IDとして複数の衣服IDを受け付けても構わない。具体的には、例えば第1被写体が複数の衣服を組み合わせて試着したいような場合には、受付部104は、ユーザによる入力部14に対する操作指示に応じて複数の衣服IDを受け付けることができる。このように複数の衣服IDが受付部104によって受け付けられた場合には、当該複数のIDの各々について上述した処理が実行されればよい。
なお、この場合には、画像処理装置100において次の処理が実行されてもよい。すなわち、特定部107は、まず、受付部104によって受け付けられた複数の衣服IDのうちの1つについて、当該衣服IDに対応する出力対象の衣服画像を特定する。そして、特定部107は、受け付けられた複数の衣服IDのうちの他の衣服IDについては、当該他の衣服IDの各々に対応する複数の衣服画像のうち、特定済みの衣服画像のモデルIDに対応する衣服画像を、合成対象として特定すればよい。
なお、前述した図19に示す第1衣服画像特定処理においては、受付部104が衣服ID及び衣服サイズを入力部14からから受け付けるものとして説明したが、当該受付部104は、衣服IDを受け付け、衣服サイズについては入力部14から受け付けない構成であってもよい。
この場合、特定部107は、衣服IDに対応する全ての衣服サイズの各々について、第1体型パラメータとの非類似度が閾値以下の第2体型パラメータに対応する衣服画像を特定すればよい。
なお、本実施形態に係る画像処理装置100の適用範囲は限定されない。すなわち、画像処理装置100は、例えば店舗等に設置された機器に搭載されていてもよいし、携帯端末、パーソナルコンピュータ(PC)、テレビ等の電子機器に内蔵されていてもよい。また、画像処理装置100は、電子黒板システム(サイネージシステム)に適用されても構わない。画像処理装置100が店舗等に設置されて機器に搭載される場合、当該画像処理装置100を含む画像処理システム10は、例えば図1に示すような態様で実現されればよい。一方、画像処理装置100が電子機器に内蔵された構成とする場合、画像処理システム10は、例えば図2に示すような態様で実現されればよい。
以下、図32を参照して、本実施形態における画像処理システム10の模式的なシステム構成について説明する。
画像処理システム10は、例えば記憶装置10Aと処理装置10Bとが通信回線10Cを介して接続されている。記憶装置10Aは、前述した図2に示す記憶部16を備えた装置であり、例えばパーソナルコンピュータ等を含む。処理装置10Bは、前述した図1及び図2に示す画像処理装置100、表示部12、入力部14及び撮像部15(第1撮像部15A及び第2撮像部15B)を備えた装置である。なお、前述した図1及び図2と同様の部分については同一参照符号を付してその詳しい説明を省略する。通信回線10Cは、例えばインターネット等の通信回線であり、有線通信回線及び無線通信回線を含む。
図32に示すように、記憶部16を、通信回線を介して処理装置10Bに接続された記憶装置10Aに設けた構成とすることにより、複数の処理装置10Bから同じ記憶B16にアクセスすることが可能となる。これにより、記憶部16に記憶されているデータの一元管理が可能となる。
なお、処理装置10Bは、任意の箇所に設置可能である。具体的には、処理装置10Bは、ユーザが合成画像を視認する場所、例えば店舗等に設置してもよい。また、処理装置10Bの各機能は、携帯端末等に搭載されてもよい。
次に、図33を参照して、本実施形態に係る画像処理装置100のハードウェア構成について説明する。図33は、本実施形態に係る画像処理装置100のハードウェア構成の一例を示すブロック図である。
図33に示すように、画像処理装置100においては、CPU(Central Processing Unit)1601、RAM(Random Access Memory)1602、ROM(Read Only Memory)1603、HDD(Hard Disk Drive)1604、通信I/F部1605、提示部1606、入力部1607及び撮像部1608等がバス1609により相互に接続されている。すなわち、画像処理装置100は、通常のコンピュータを利用したハードウェア構成を有する。
CPU1601は、画像処理装置100の全体の処理を制御する演算装置である。RAM1602は、CPU1601による各種処理に必要なデータを記憶する。ROM1603は、CPU1601による各種処理を実現するプログラム等を記憶する。HDD1604は、上述した記憶部16に記憶されるデータを格納する。通信I/F部1605は、外部装置または外部端末に通信回線等を介して接続し、接続された外部装置または外部端末との間でデータを送受信するためのインタフェースである。提示部1606は、上述した表示部12に相当する。入力部1607は、上述した入力部14に相当する。撮像部1608は、上述した撮像部15に相当する。
なお、本実施形態に係る画像処理装置100において実行される上記各種処理を実行するためのプログラムは、ROM1603等に予め組み込んで提供される。また、このプログラムは、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。更に、このプログラムは、例えばネットワークを介して画像処理装置100にダウンロードされても構わない。
なお、上記したHDD1604に格納されている各種情報、すなわち、記憶部16に記憶されている各種情報は、外部装置(例えば、サーバ装置)等に格納されていてもよい。この場合には、外部装置とCPU1601とがネットワーク等を介して接続された構成とすればよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。