(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-19
(45)【発行日】2023-12-27
(54)【発明の名称】画像処理装置、画像処理方法、及びプログラム
(51)【国際特許分類】
G06T 1/00 20060101AFI20231220BHJP
G06T 7/00 20170101ALI20231220BHJP
G06T 15/50 20110101ALI20231220BHJP
H04N 23/60 20230101ALI20231220BHJP
【FI】
G06T1/00 340A
G06T7/00 660A
G06T15/50
H04N23/60 500
(21)【出願番号】P 2019206348
(22)【出願日】2019-11-14
【審査請求日】2022-11-11
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】金子 千晶
【審査官】▲徳▼田 賢二
(56)【参考文献】
【文献】特開2003-216970(JP,A)
【文献】特開2007-048084(JP,A)
【文献】佐々木悠真 他,毛髪繊維の遮蔽を考慮した毛髪画像の陰影編集,情報処理学会 研究報告,情報処理学会,2014年11月13日,2014-CG-157
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/00
G06T 7/00
G06T 15/50
H04N 23/60
(57)【特許請求の範囲】
【請求項1】
被写体を撮像して得られる画像データと、前記被写体の三次元形状データとに基づいて、前記被写体が有する繊維の三次元の流れ方向を判定する判定手段と、
前記三次元の流れ方向に基づいて、光源から入射する光に対する前記被写体からの反射光成分を算出する算出手段と、
を備えることを特徴とする画像処理装置。
【請求項2】
前記判定手段は、前記画像データが表す画像において前記被写体が有する繊維の特徴量を判定し、前記特徴量及び前記三次元形状データに基づいて、前記三次元の流れ方向を判定することを特徴とする、請求項1に記載の画像処理装置。
【請求項3】
前記判定手段は、
前記画像データが表す画像を基に、前記被写体が有する繊維の前記画像上の流れ方向を判定する第1の判定手段と、
前記画像上の流れ方向及び前記三次元形状データを基に、前記三次元の流れ方向を判定する第2の判定手段と、
を備えることを特徴とする、請求項1又は2に記載の画像処理装置。
【請求項4】
前記第1の判定手段は、前記画像における明るさの勾配方向に基づいて、前記画像上の流れ方向を判定することを特徴とする、請求項3に記載の画像処理装置。
【請求項5】
前記第1の判定手段は、前記画像の各位置における前記被写体の陰影を示す陰影マップを生成し、前記陰影マップにおける勾配方向に基づいて、前記画像上の流れ方向を判定することを特徴とする、請求項4に記載の画像処理装置。
【請求項6】
前記第1の判定手段は、前記画像の各位置における前記画像上の流れ方向を示す情報に対して、さらに平滑化処理を行うことを特徴とする、請求項3から5のいずれか1項に記載の画像処理装置。
【請求項7】
前記反射光成分に基づき前記画像データが表す画像中の前記被写体の光沢を補正することにより、補正画像を生成する補正手段をさらに備えることを特徴とする、請求項1から6のいずれか1項に記載の画像処理装置。
【請求項8】
前記補正手段は、前記被写体から前記画像の撮像視点への前記反射光成分を前記画像に付加することを特徴とする、請求項7に記載の画像処理装置。
【請求項9】
前記光源から前記被写体への光の入射方向を設定する設定手段をさらに備えることを特徴とする、請求項8に記載の画像処理装置。
【請求項10】
前記算出手段は、前記画像の各位置に対応する前記反射光成分を算出することを特徴とする、請求項8又は9に記載の画像処理装置。
【請求項11】
前記算出手段は、前記画像の各位置に対応する前記反射光成分に対し、前記位置における明るさの勾配強度に応じた補正を行うことを特徴とする、請求項10に記載の画像処理装置。
【請求項12】
前記算出手段は、前記画像の各位置に対応する前記反射光成分に対し、前記位置の周辺における、被写体が有する繊維の流れ方向の一致度に応じた補正を行うことを特徴とする、請求項10又は11に記載の画像処理装置。
【請求項13】
前記算出手段は、
前記画像の各位置における前記被写体の陰影を示す陰影マップを、指定された繊維質の変更度に従って、前記画像上の流れ方向に沿って平滑化し、
前記画像の各位置に対応する前記反射光成分に対し、前記平滑化後の陰影に応じた補正を行うことを特徴とする、請求項10から12のいずれか1項に記載の画像処理装置。
【請求項14】
前記算出手段は、前記三次元の流れ方向への反射光の拡がりと、前記三次元の流れ方向に垂直な方向への反射光との拡がりとが異なるように、前記反射光成分を算出することを特徴とする、請求項1から13のいずれか1項に記載の画像処理装置。
【請求項15】
前記三次元形状データは、前記画像データが表す画像の各位置に対応する前記被写体の表面の向きを示すことを特徴とする、請求項1から14のいずれか1項に記載の画像処理装置。
【請求項16】
被写体を撮像して得られる画像データと、前記被写体の三次元形状データとに基づいて、前記被写体が有する繊維の三次元の流れ方向を判定する工程と、
前記三次元の流れ方向に基づいて、光源から入射する光に対する前記被写体からの反射光成分を算出する工程と、
を備えることを特徴とする画像処理方法。
【請求項17】
コンピュータを、請求項1乃至
15の何れか1項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法、及びプログラムに関し、例えば画像中の被写体の光沢を調整するための画像処理に関する。
【背景技術】
【0002】
撮像画像中の人物の頭髪に対して画像処理により光沢を付与する処理が知られている。特許文献1は、髪が写っている領域(髪領域)の輪郭線の形状に基づく光沢を画像に付与する技術を開示している。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1の技術を横分けのヘアスタイルや細かいカールヘアなどに適用した場合、不自然な光沢が付与されるという課題が見いだされた。一般に、髪に生じる光沢は、髪の毛の流れ(毛流)に垂直な方向に広がる一方で、髪領域の輪郭線は必ずしも毛流に応じた形状を成すとは限らないことが、その理由であると考えられる。
【0005】
本発明では、画像中の毛に対してより自然な光沢付与処理を行うことを目的とする。
【課題を解決するための手段】
【0006】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。すなわち、
被写体を撮像して得られる画像データと、前記被写体の三次元形状データとに基づいて、前記被写体が有する繊維の三次元の流れ方向を判定する判定手段と、
前記三次元の流れ方向に基づいて、光源から入射する光に対する前記被写体からの反射光成分を算出する算出手段と、
を備えることを特徴とする。
【発明の効果】
【0007】
画像中の毛に対してより自然な光沢付与処理を行うことができる。
【図面の簡単な説明】
【0008】
【
図1】一実施形態に係る画像処理装置のハードウェア構成を示す図。
【
図2】一実施形態に係る係る画像処理装置の機能ブロックを示す図。
【
図3】一実施形態に係る画像処理方法のフローチャート。
【
図7】光源の回転角度及び入射光の向きを説明する図。
【発明を実施するための形態】
【0009】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0010】
本発明の一実施形態に係る画像処理装置は、被写体が有する毛の三次元空間中の流れ方向を判定し、この流れ方向に基づいて、光源から入射する光に対する被写体からの反射光成分を算出する。本実施形態によれば、被写体の毛流を考慮して光沢付与が行われるため、被写体の毛により自然な光沢を付与することができる。以下では、髪の毛に光沢を付与する場合について説明するが、本実施形態の方法は任意の毛に光沢を付与する場合に適用可能である。また、本明細書において、毛は生物の毛に限られず、糸などの人工物を含む。
【0011】
画像処理装置は、プロセッサとメモリとを備えるコンピュータにより実現することができる。
図1は、本実施形態に係る画像処理装置100のハードウェア構成例を示す。画像処理装置100は、CPU101、RAM102、ROM103、HDD104、HDDI/F105、入力I/F106、出力I/F107、及びシステムバス108を備える。
【0012】
CPU101は、RAM102をワークメモリとして用いながら、ROM103及びハードディスクドライブ(HDD)104に格納されたプログラムを実行し、システムバス108を介して後述する各部を制御することができる。HDDインタフェイス(I/F)105は、HDD104又は光ディスクドライブなどの二次記憶装置を接続できるインタフェイスである。CPU101は、HDDI/F105を介して、HDD104からデータを読み出すこと、及びHDD104へデータを書き込むことができる。さらに、CPU101は、HDD104に格納されたデータをRAM102に展開し、RAM102に展開されたデータをHDD104に保存することが可能である。そしてCPU101は、RAM102に展開したデータをプログラムとみなし、実行することができる。このように、CPU101のようなプロセッサが、RAM102、ROM103、又はHDD104のようなメモリに格納されたプログラムを実行することにより、後述する
図2等に示される各部の機能を実現することができる。
【0013】
入力I/F106は、マウス・キーボード109等の入力デバイスが接続されるインタフェイスである。CPU101は、入力I/F106を介してマウス・キーボード109から各種の信号を読み込むことができる。出力I/F107は、ディスプレイ110等の表示デバイスが接続されるインタフェイスである。CPU101は、出力I/F107を介してディスプレイ110にデータを送り、ディスプレイ110に表示を行わせることができる。なお、USB又はIEEE1394等の双方向通信インタフェイスを利用する場合、入力I/F106と出力I/F107を統合することができる。
【0014】
図2は、画像処理装置100の機能ブロック図である。上述のように、
図2に示される画像処理装置100の機能はコンピュータによって実現されることができるが、画像処理装置100が有する一部又は全部の機能が専用のハードウェアによって実現されてもよい。また、本発明の一実施形態に係る画像処理装置は、例えばネットワークを介して接続された複数の情報処理装置によって構成されていてもよい。
【0015】
画像取得部201は、被写体の画像データを取得する。以下、被写体の画像データのことを入力画像と呼ぶ。また、形状取得部202は被写体の三次元形状データを取得する。被写体の三次元形状データを参照することにより、入力画像の各画素に対応する被写体の外面の向き(法線方向)を得ることができる。例えば、被写体の三次元形状データは、入力画像の各位置に対応する被写体の表面の向きを示していてもよい。三次元形状データの種類は特に限定されないが、以下の例においては三次元形状データとして、法線情報を含む法線マップが用いられる。
【0016】
画像取得部201及び形状取得部202は、HDD104にあらかじめ記憶されている入力画像及び三次元形状データを、HDDI/F105を介して取得することができる。また、画像取得部201及び形状取得部202は、画像処理装置100に接続されたデジタルカメラ又は3Dスキャナのような図示しない撮像装置から、これらのデータを取得してもよい。画像取得部201は、取得した入力画像を第1特徴量算出部203及び画像補正部207へ送る。また、形状取得部202は、取得した三次元形状データを第2特徴量算出部204及び反射光算出部206へ送る。
【0017】
図4は、入力画像及び法線マップの例を示す。
図4(A)に示す入力画像において、画素(i,j)の画素値は、この画素に対応する被写体のRGB値Ir(i,j)、Ig(i,j)、Ib(i,j)である。すなわち、入力画像の画素値I(i,j)=(Ir(i,j),Ig(i,j),Ib(i,j))である。また、
図4(B)に示す法線マップにおいて、画素(i,j)には、被写体の形状を表す単位法線ベクトルが格納されている。具体的には、法線マップの画素(i,j)の画素値は、入力画像の画素(i,j)に対応する被写体表面の単位法線ベクトルのxyz成分値Nx(i,j),Ny(i,j),Nz(i,j)である。すなわち、法線マップの画素値N(i,j)=(Nx(i,j),Ny(i,j),Nz(i,j))である。ここでは、入力画像の座標系を基準とするxyz座標系が用いられている。具体的には、
図5に示すように、入力画像の水平方向右向きがx軸、垂直方向上向きがy軸、奥行き方向(すなわち撮像装置の光軸方向)がz軸である。
【0018】
法線マップにより髪の毛1本1本の表面形状を詳細に表すためには、1本の毛の幅よりも法線マップの画素サイズが小さい必要がある。つまり、法線マップが十分に高解像度でなければならない。しかしながら、そのような高解像度の法線マップを取得できることは容易ではない。本実施形態において、法線マップの画素サイズ(1つの画素が表す被写体上の領域の大きさ)は、1本の毛の幅と同等又はそれより大きい。すなわち、法線マップは、髪領域において、髪の毛1本1本の形状を表すのではなく、髪に覆われた頭部の概略形状を表している。
【0019】
第1特徴量算出部203及び第2特徴量算出部204は、被写体の画像及び三次元形状データに基づいて、被写体が有する毛の三次元空間中の流れ方向を判定する。以下、本実施形態における第1特徴量算出部203及び第2特徴量算出部204の具体的な構成例について説明する。
【0020】
第1特徴量算出部203は、被写体が有する毛の画像上における特徴量を判定する。本実施形態において、第1特徴量算出部203は、入力画像上における、被写体が有する毛の流れ方向を判定する。より具体的には、第1特徴量算出部203は、入力画像平面上における毛流の角度を算出することができる。一般に、髪領域では、髪の毛同士の重なりによって毛流に沿った陰影が生じる。そこで本実施形態で第1特徴量算出部203は、入力画像の画素値を用いて画素ごとに明るさの勾配方向を求め、この方向に基づいて毛流の角度を推定する。このようにして第1特徴量算出部203は、入力画像の各画素について、毛の流れ方向を示す情報である、毛流の角度を算出することができる。処理の詳細は後述する。第1特徴量算出部203は、入力画像上における毛の流れ方向を示す情報を、第2特徴量算出部204へ送る。
【0021】
第2特徴量算出部204は、被写体が有する毛の三次元空間中の流れ方向を判定する。このために第2特徴量算出部204は、第1特徴量算出部203から取得した、被写体が有する毛の画像上における特徴量を用いることができる。本実施形態において、第2特徴量算出部204は、入力画像上における毛の流れ方向を示す情報と、形状取得部202が取得した被写体の三次元形状データを用いる。例えば、第2特徴量算出部204は、入力画像の各画素について、画素に対応する被写体表面の法線方向に基づいて、この画素における入力画像上での毛の流れ方向を、この画素に対応する被写体表面における毛の三次元の流れ方向に変換することができる。本実施形態において第2特徴量算出部204は、入力画像データについて、法線マップと入力画像上の毛流の角度とに基づいて、被写体の毛流を表す三次元の傾きを推定する。処理の詳細は後述する。第2特徴量算出部204は、算出した毛の三次元空間中の流れ方向を示す情報を、反射光算出部206へ送る。
【0022】
光源設定部205は、被写体を照らす光源の設定を行う。例えば、光源設定部205は、光源から被写体への光の入射方向を設定することができる。本実施形態において光源設定部205は、光源に関する設定を行うためのUIを、出力I/F107を介してディスプレイ110に表示する。また、光源設定部205は、このUI上でユーザにより指示された値を入力I/F106を介して取得する。処理の詳細は後述する。光源設定部205は、設定された光源の設定情報を反射光算出部206へ送る。
【0023】
反射光算出部206及び画像補正部207は、被写体が有する毛の三次元空間中の毛の流れ方向に応じて、入力画像上における被写体が有する毛についての色情報を補正する。まず、反射光算出部206は、被写体が有する毛の三次元空間中の流れ方向に基づいて、光源から入射する光に対する被写体からの反射光成分を算出する。ここで、反射光算出部206は、さらに光源の設定情報に従って、入力画像中の被写体に関する反射光成分を算出することができる。この際に、反射光算出部206は、さらに被写体の三次元形状データを参照することができる。反射光算出部206は、毛の三次元空間上の傾きに基づく異方性を考慮して、反射光成分量を算出することができる。処理の詳細は後述する。反射光算出部206は、算出した反射光成分を、画像補正部207へ送る。
【0024】
画像補正部207は、反射光算出部206から取得した反射光成分に基づいて、入力画像中の被写体の光沢を補正することにより補正画像を生成する。画像補正部207は、入力画像中の被写体に、反射光成分に基づく光沢を付与することにより、補正画像データを生成することができる。本実施形態においては、画像補正部207が毛の三次元空間上の傾きに基づく反射光成分を用いることにより、入力画像に被写体の毛流に応じた形状の光沢が付与される。処理の詳細は後述する。画像補正部207は、生成した補正画像データを、表示のためにディスプレイ110へ送ることができる。また、画像補正部207は、生成した補正画像データを、保存のためにHDD104へ送ることができる。
【0025】
図3は、画像処理装置100が行う処理手順を示すフローチャートである。以下、各処理の詳細を説明する。ステップS301において、画像取得部201が上述のように入力画像データを取得し、形状取得部202は上述のように法線マップを取得する。
【0026】
ステップS302において第1特徴量算出部203は、ステップS301で取得した入力画像の各画素について、画像平面上における毛流の角度を算出する。先に述べたように、髪領域では、髪の毛同士の重なりによって毛流に沿った陰影が生じる。本実施形態で、第1特徴量算出部203は、この陰影の明るさの勾配方向に垂直な方向を、画像上の毛流の方向として算出する。ここで、入力画像の画素(i,j)において、毛流の方向が画像の横方向となす角を、毛流の角度θi,jと表す。
【0027】
第1特徴量算出部203は、入力画像の各画素(i,j)についての毛流の角度θ
i,jを、例えば式(1)~(3)に従って推定することができる。
【数1】
ここで、(u
i(i,j),u
j(i,j))は入力画像の画素(i,j)における明るさの勾配方向を表す二次元ベクトルであり、S(i,j)はその勾配の強度である。
【0028】
また、S
i(i,j)及びS
j(i,j)は、それぞれ画像の横方向及び縦方向に関する一次微分フィルタの出力値であり、例えば公知のSobelフィルタを用いて式(4)~(5)により算出することができる。
【数2】
ここで、Sobel
i(i’,j’)は横方向のSobelフィルタ係数であり、Sobel
j(i’,j’)は縦方向のSobelフィルタ係数であり、Nはフィルタサイズである。また、Y(i,j)は、入力画像のRGB値I
R(i,j)、I
G(i,j)、及びI
B(i,j)から、変換式を用いて得られる輝度値である。このとき、式(3)の勾配強度S(i,j)は、画像のエッジが明瞭であるほど大きな値を持つ。また、式(2)の勾配方向ベクトル(u
i(i,j),u
j(i,j))は、暗い画素から明るい画素への向きを表す単位ベクトルとなる。
【0029】
図5は毛流の角度θ
i,jの例を示す。なお、本実施形態では、毛流の角度に関して、髪の毛の生える向き(毛根から毛先に向かう向き)との関係は考慮されない。すなわち、θ
i,j=αと、θ
i,j=α+πとは、区別されず、同じ角度として扱われる。なお、上記の例ではSobelフィルタが用いられているが、その他の一次微分フィルタが用いられてもよい。また、式(4)~(5)においては輝度値Yが用いられているが、明度、又はGチャンネルの画素値I
G等の、明るさを表す他の指標が替わりに用いられてもよい。
【0030】
ステップS303において第2特徴量算出部204は、ステップS301で取得された法線マップとステップS302で算出された毛流の角度とを用いて、ステップS301で取得された入力画像の各画素について、被写体の毛流を表す三次元の傾きを推定する。本実施形態では、入力画像に写る毛流は、法線マップにより表される被写体表面上を這っていると仮定する。このとき、三次元空間(xyz座標空間)における毛流の傾きは、被写体表面の法線方向と直交する。第2特徴量算出部204は、これらの条件から、入力画像の各画素に対応する、被写体の三次元空間中の毛流の傾きを算出することができる。
【0031】
例えば、第2特徴量算出部204は、三次元空間中の毛流を表す三次元ベクトルV(i,j)を算出することができ、この三次元ベクトルV(i,j)の傾きを、毛流の三次元の傾きとして用いることができる。ここで、三次元ベクトルV(i,j)は、以下の式(6)~(7)を満たす。式(6)は、
図5に示すように、三次元ベクトルV(i,j)を入力画像平面上に投影して得られたベクトルと画像の横方向とのなす角が、入力画像上の毛流の角度θ
i,j(すなわち入力画像上の毛流と画像の横方向とのなす角)と一致することを表している。式(7)は、法線マップに示される画素(i,j)における単位法線ベクトルN(i,j)と、ベクトルV(i,j)と、が直交することを表している。式(6)~(7)を整理すると、ベクトルV(i,j)は式(8)で表されることがわかる。
【数3】
第2特徴量算出部204は、この式(8)を用いて、入力画像の各画素(i,j)についてベクトルV(i,j)を算出することができる。
【0032】
ステップS304において光源設定部205は、光源に関する設定を行うためのUIをディスプレイ110に表示する。また、光源設定部205は、このUIを介して取得した設定値に基づいて、光源から被写体へ向かう入射光の向きを設定する。
図6はUIの例を示す。画像表示領域601は、入力画像、又は後述する処理により生成される補正画像が表示される領域である。光源アイコン602は光源の位置を表すオブジェクトである。光源アイコン602は円盤状のオブジェクトであり、光源アイコン602付近にはこのオブジェクトを移動できることを示す矢印も示されている。天頂ガイド曲線と呼ばれるガイド曲線603の交差する点は天頂を表す。また、移動ガイド曲線と呼ばれるガイド曲線604は、現在の光源の設定位置を基準とした左右方向と上下方向とを表す。
【0033】
ユーザは、UIに表示された各種の画像、アイコン、及びガイド曲線を参照しながら、光源の回転角度θ
L及びψ
Lに対応付けられたスライダ605,606を操作することにより、入射光の向きを設定することができる。回転角度θ
L,ψ
Lと、入射光の向きとの対応関係の一例を
図7に示す。
図7においてψ
Lはy軸回りの回転角度である。また、θ
Lは、y軸を中心にψ
Lだけ回転させたx軸をx’軸としたときの、x’軸に対してなす角である。すなわち、ψ
Lはxz平面上の方位角を表すことができ、θ
Lはxz平面に対する仰角を表すことができる。本実施形態では、点(1,0,0)をψ
Lおよびθ
Lだけ回転移動した点から原点(0,0,0)に向かう単位ベクトルが、入射光の向きL’として設定される。具体的には、ユーザによりスライダ605が操作されると、このスライダの位置に対応する値がθ
Lとして設定される。また、スライダ606が操作されると、このスライダの位置に対応する値がψ
Lとして設定される。そして、これらの角度に基づき、次式に従い入射光の向きL’が算出される。
【数4】
【0034】
図6の例では、スライダ605の左端がθ
L=0に、右端がθ
L=πに対応付けられている。また、スライダ606の左端がψ
L=πに、右端がψ
L=2πに対応付けられている。ここで、ψ
Lの値を固定すると、スライダ605を左に動かすと被写体はより手前側から照らされ(
図6(B))、スライダ605を右に動かすと被写体はより奥側から照らされる(
図6(C))。一方、θ
Lを0≦θ
L<π/2となる値に固定すると、スライダ606を左に動かすと被写体はより左側(-x方向)から照らされ、スライダ606を右に動かすと被写体はより右側(+x方向)から照らされる(
図6(D)(E))。また、θ
Lをπ/2<θ
L≦πとなる値に固定すると、スライダ606を左に動かすと被写体はより右側(+x方向)から照らされ(
図6(f))、スライダ606を右に動かすと被写体はより左側(-x方向)から照らされる。もっとも、UIを使うことは必須ではない。光源設定部205は、予め定められている光源に関する設定を取得してもよく、例えば、予め定められている光源方向を設定してもよい。また、光源設定部205は、光源の強さなどの、光源に関するその他の情報を設定してもよい。
【0035】
ステップS305において反射光算出部206は反射光成分を算出する。ここで、反射光算出部206は、毛流に応じた反射光量の違い(すなわち異方性反射)を考慮することができる。本実施形態において反射光算出部206は、毛の三次元空間中の流れ方向への反射光の拡がりと、毛の三次元空間中の流れ方向に垂直な方向への反射光との拡がりが異なるように、反射光成分を算出する。例えば、反射光算出部206は、毛流の方向に沿った反射光量分布の拡がりと、毛流と垂直な方向に沿った反射光量分布の拡がりと、が異なるように、反射光成分を算出することができる。本実施形態において反射光算出部206は、ステップS301で得られた法線マップ、ステップS303で算出された毛流を表す三次元の傾き、及びステップS304で設定された入射光の向きを用いて、反射光成分を算出する。反射光算出部206は、入力画像の各位置に対応する反射光成分を算出することができる。反射光算出部206は、例えば、入力画像の各画素について、被写体の対応する位置から入力画像の撮像視点への反射光成分を算出することができる。
【0036】
このような反射光成分の算出のためには異方性反射モデルを利用可能である。本実施形態では、Ashikhminモデルにおける鏡面反射成分ρ
Sの算出式である次式が用いられる。
【数5】
【0037】
式(10)(11)において、Lは被写体位置から光源位置へ向かう光源ベクトル、Eは被写体位置から視点位置へ向かう視線ベクトル、Fはフレネル反射係数である。また、式(10)(12)において、Nは単位法線ベクトル、Uは接線方向を表す接線ベクトル、Vは従法線方向を表す従法線ベクトルであり、それぞれは互いに直交する単位ベクトルである。そして、式(12)(13)において、nuは接線方向の反射特性を制御する係数である。この係数nuの値が小さいほど、接線方向における反射光の強度の変化が緩やかになり、反射光の分布が接線方向に拡がる。また、nvは従法線方向の反射特性を制御する係数である。この係数nvの値が大きいほど、従法線方向における反射光の強度の変化が急峻になり、反射光の分布が従法線方向に狭まる。
【0038】
本実施形態においては、入力画像の画素(i,j)について、N=N(i,j)、L=-L’、E=(0,0,-1)、U=(V(i,j)/|V(i,j)|)×N(i,j)、及びV=V(i,j)/|V(i,j)|が用いられる。こうして、反射光算出部206は、式(10)~(13)に従って得られるρSを計算することにより、入力画像の各画素(i,j)についての反射光成分ρS(i,j)を算出することができる。この例では、従法線ベクトルVとして、S303で算出されたベクトルV(i,j)を正規化して得られたベクトルが用いられており、すなわち、毛流の傾きに沿った方向が従法線方向となっている。したがって、nu<nvを満たすように係数nu及びnvを定めることで、反射光の分布が毛流に垂直な方向に拡がり、このような反射光の分布を用いることにより髪の光沢を表現できる。なお、係数nu及びnvは、予め定められていてもよいし、UI上でユーザが指定してもよい。
【0039】
ステップS306において画像補正部207は、ステップS305で算出された反射光成分に基づいて、ステップS301で取得された入力画像中の被写体に光沢を付与することにより、補正画像データを生成する。画像補正部207は、ステップS305で画素ごとに算出された、被写体から画像の撮像視点への反射光成分を、入力画像の各画素に付加することができる。例えば、画像補正部207は、入力画像の各画素(i,j)に対応する、補正画像の画素の画素値(I’r(i,j),I’g(i,j),I’b(i,j))を、式(14)~(16)に従い算出することかできる。
【数6】
【0040】
ここで、αr、αg、及びαbは、それぞれ光源のR、G、及びB成分の強さを表す係数である。これらの値は予め定められていてもよいし、UI上でユーザによって指定されてもよい。
【0041】
画像補正部207はさらに、生成した補正画像データを、
図6に示すUI上の画像表示領域601に表示することができ、また、HDD104へ保存のために出力することができる。
図8は、
図6(B)に示す光源位置に対応する補正画像の例を示す。
【0042】
以上のような本実施形態の処理によれば、被写体の毛流に応じた形状の光沢を入力画像に付与することができる。なお、上記のステップS305においては、入力画像の画素位置によらず一定の視線ベクトル(0,0,-1)(すなわち、撮像光軸の反対向き)が用いられた。しかしながら、別の実施形態においては、撮像装置の光学中心と画素に対応する被写体部分との位置関係を考慮して、画素ごとに視線ベクトルを設定することができる。例えば、撮像面から被写体までの撮像光軸方向の距離と、撮像装置の画角とに基づいて、画素ごとに、撮像装置の光学中心に対する、対応する被写体部分の相対的な三次元座標を求め、この三次元座標に基づいて視線ベクトルを設定することができる。このような画素ごとの視線ベクトルを用いることにより、より現実に則した光沢を付与することが可能となる。
【0043】
なお、上記の例では、入力画像全体に対して補正処理が適用されたが、上記の補正処理は髪領域のみに対して行われてもよい。例えば、前処理として入力画像データから髪領域を抽出し、髪領域に対して上記の光沢付与処理を行ってもよい。
【0044】
以下、上述の実施形態の変形例について説明する。下記の変形例のうち任意の1以上は組み合わせて用いることができる。
【0045】
[変形例1]
変形例1において、第1特徴量算出部203は、入力画像データから、入力画像の各位置における被写体の陰影を示す陰影マップを生成し、陰影マップに基づいて入力画像平面上における毛流の角度を算出する。この陰影マップは、毛流に沿った細かな陰影を表すことができる。本変形例では、入力画像上の微小領域とその近傍領域には、類似した反射特性を有する被写体が、ほぼ同一の照明条件下で写っているものと仮定する。この仮定の下では、各画素の明るさを近傍の画素の明るさに対する相対値で表すことにより、被写体自体が持つ色や照明の配光に起因する大局的な明るさの違いが除去された、毛流に沿った陰影を抽出することができる。このように大局的な明るさの違いを除去することにより、第1特徴量算出部203が算出する入力画像平面上における毛流の角度の信頼性が向上することが期待される。
【0046】
例えば、第1特徴量算出部203は、ステップS302において、まず入力画像の各画素について、式(17)に従って近傍に対する相対的な明るさY’(i,j)を算出することができる。第1特徴量算出部203は、算出された値を陰影マップの画素値として格納する。
【数7】
ここで、Bは画素(i,j)を中心とするサイズb×bの微小なブロック領域である。また、B’は画素(i,j)を中心とするサイズbN
B×bN
Bのブロック領域であり、すなわちブロック領域Bの近傍領域である。式(17)に従って得られる陰影マップの画素値Y’(i,j)は、入力画像の画素(i,j)を中心とする微小領域の明るさが近傍領域に比べて明るいほど大きくなる。
【0047】
その後、第1特徴量算出部203は、入力画像データの代わりに陰影マップを用いて、入力画像平面上における毛流の角度を算出する。第1特徴量算出部203は、陰影マップの画素値の勾配方向に垂直な方向を毛流の方向と推定することができる。具体的には、第1特徴量算出部203は、入力画像に基づく輝度値Y(i,j)の代わりに、陰影マップの画素値Y’(i,j)を用いて、式(1)~(5)に従って角度θi,jを算出することができる。
【0048】
[変形例2]
変形例2において、第1特徴量算出部203は、入力画像上の毛流の角度を補正する。例えば、第1特徴量算出部203は、入力画像の各位置における、毛の画像上の流れ方向を示す情報に対して、さらに平滑化処理を行うことができる。本実施形態では、勾配の強度を用いて入力画像上の毛流の角度が補正される。例えば、勾配強度の値が大きい画素、及びこの画素について算出された毛流の角度に、高い信頼性が与えられる。そして、第1特徴量算出部203は、信頼性の高い画素に大きい重みを与えながら、毛流の角度を平滑化する。こうして、第1特徴量算出部203は、明るさの変化が小さく、毛流の向きが判別しにくい画素における、毛流の角度を補正することができる。このような補正により、第1特徴量算出部203が算出する入力画像平面上における毛流の角度の信頼性が向上することが期待される。
【0049】
例えば、ステップS302において、第1特徴量算出部203は、式(1)~(5)に従って得られた角度θ
i,jを補正することができる。この補正においては、式(3)に従って算出された勾配の強度を、重み付けのために用いることができる。第1特徴量算出部203は、具体的には、まず、入力画像の各画素(i,j)について式(18)~(20)に従って重み付き平均合成ベクトルv
θ’(i,j)を算出することができる。式(19)(20)では、ガウス分布Gと、式(3)で得られる勾配強度Sとが重みとして用いられている。ここで得られるベクトルv
θ’(i,j)は、角度θ
i,jに基づいて定まるベクトル(cos2θ
i,j,sin2θ
i,j)の重み付き平均合成ベクトルである。そして、第1特徴量算出部203は、平均合成ベクトルv
θ’(i,j)に基づいて、式(21)により定まる角度θ’
i,jを、画素(i,j)における補正後の毛流の角度として算出することができる。なお、画素(i’,j’)は画素(i,j)の周辺の画素を表し、変形例1と同様に定義することができる。
【数8】
【0050】
第2特徴量算出部204は、角度θi,jの代わりに、角度θ’i,jを用いて、被写体の三次元空間中の毛流の傾きを算出することができる。
【0051】
[変形例3]
変形例3において、反射光算出部206は、被写体の毛流の状態、又はユーザの好みの毛質に応じて、付与する光沢の強さを補正する。例えば、反射光算出部206は、被写体の毛流にまとまりがない場合、又は毛流を判別しにくい場合に、光沢が弱まるように、反射光成分を補正することができる。また、反射光算出部206は、毛流の陰影を考慮して反射光成分を補正することができる。さらに、反射光算出部206は、ユーザが指定した毛質パラメータに従って反射光成分を補正することができる。
【0052】
まず、被写体の毛流にまとまりがない場合、又は毛流を判別しにくい場合に、光沢が弱まるように、反射光成分を補正する方法について説明する。第1特徴量算出部203は、入力画像の各位置に対応する反射光成分に対し、この位置の周辺における、入力画像上又は三次元空間中の被写体が有する毛の流れ方向の一致度に応じた補正を行うことができる。このような構成により、毛の流れ方向の一致度が小さく毛流にまとまりがない場合に、光沢が弱まるよう反射光成分を補正することができる。また、第1特徴量算出部203は、入力画像の各位置に対応する反射光成分に対し、この位置における明るさの勾配強度に応じた補正を行うことができる。このような構成により、勾配強度が小さく毛流を判別しにくい場合に、光沢が弱まるよう反射光成分を補正することができる。
【0053】
本変形例において、第1特徴量算出部203は、入力画像上の毛流の角度の信頼度を算出することができる。画素(i,j)についての毛流の角度の信頼度は、画素(i,j)の近傍において毛流の角度θi,jが揃っているほど大きくなるように設定することができる。このように、信頼度は、毛流にまとまりがない場合に小さくなるように設定することができる。また、画素(i,j)についての毛流の角度の信頼度は、画素(i,j)における勾配強度Sが大きいほど大きくなるように設定することができる。このように、信頼度は、毛流を判別しにくい場合に小さくなるように設定することができる。
【0054】
具体例として、ステップS302において第1特徴量算出部203は、変形例2に従って算出された平均合成ベクトルv
θ’(i,j)の長さを、入力画像の各画素についての信頼度として求めることができる。例えば、第1特徴量算出部203は、式(22)に従って、画素(i,j)における毛流の角度の信頼度F
R(i,j)を算出することができる。
【数9】
ここで、信頼度F
R(i,j)は、補正前の毛流の角度θ
i,jの分布が、補正後の毛流の角度θ’
i,jの周辺にどの程度集中しているか(一致度)を表している。信頼度F
R(i,j)の値は、画素(i,j)の近傍における補正前の角度θ
i,jが揃っているほど大きな値となり、画素(i,j)の近傍において角度が等しい場合に最大値である1となる。また、画素(i,j)及びその近傍において毛流がはっきりしない場合には勾配強度Sが小さくなるため、この場合にも信頼度F
Rは小さな値となる。
【0055】
そして、反射光算出部206は、上述のように算出された反射光成分を、毛流の角度の信頼度を用いて補正できる。例えば、反射光算出部206は、入力画像の各画素(i,j)について、反射光成分ρS(i,j)に信頼度FR(i,j)を乗算することができる。このような構成により、被写体の毛流にまとまりがない場合、又は毛流を判別しにくい場合に、光沢が弱まるように反射光成分を補正することができる。
【0056】
次に、ユーザの好みの毛質に応じて付与する光沢の強さを補正する方法について説明する。まず、光源設定部205は、毛質の変更度合いに関する設定を取得することができる。例えば、ステップS304において光源設定部205は、入射光の向きと、毛質の変更度合いと、に関する設定を行うためのUIを、出力I/F107を介してディスプレイ110に表示することができる。光源設定部205は、このUI上においてユーザにより指定された値を入力I/F106を介して取得し、この値に従って入射光の向き及び毛質の変更度合いを設定することができる。
【0057】
図9はUIの例を示す。上述のように、ユーザは画像表示領域601に表示された画像、光源アイコン602、及びガイド曲線603,604を参照しながら、スライダ605,606を操作することにより入射光の向きL’を設定することができる。さらに、ユーザがスライダ1101を操作すると、このスライダ1101の位置に対応する値が毛質の変更度合いα
Qとして設定される。
図9の例では、スライダ1101の左端がα
Q=0(最小)に、右端がα
Q=100(最大)に対応付けられており、ユーザがスライダ1101を右に動かすと毛質の変更度合いα
Qが大きくなる。ここで、毛質の変更度合いα
Qを大きくすると、被写体の髪に付与される光沢はより強くなる。
【0058】
こうして設定された毛質の変更度合いに応じて光沢の強さを補正する方法の一例を以下に説明する。以下の例では、毛流の陰影に従って反射光成分の補正が行われる。毛流の陰影を示す情報としては、変形例1で説明した陰影マップを用いることができる。ここで、毛質の変更度合いに応じて光沢の強さを補正するために、反射光算出部206は、毛質の変更度合いに応じて陰影マップを調整することができる。この例で反射光算出部206は、毛流の角度を考慮して陰影マップを平滑化することにより、陰影マップが表す毛流に沿った細かな陰影を滑らかに整える。例えば、反射光算出部206は、入力画像の各位置における被写体の陰影を示す陰影マップを、指定された毛質の変更度に従って、入力画像上における被写体が有する毛の流れ方向に沿って平滑化することができる。
【0059】
具体的には、ステップS305において反射光算出部206は、式(23)(24)に従い、調整後の陰影マップの画素値Y
S(i,j)を算出することができる。ここで、Y
S(i,j)は、画素(i,j)を通る傾きがθ’
i,jの直線に沿った陰影マップの画素値Y’(i,j)の平均値である。もっとも、変形例2で得られるθ’
i,jの代わりに、θ
i,jを用いてもよい。
【数10】
ここで、N
Sは平滑化のために用いられるデータ(すなわち、陰影マップの画素値)の個数であり、この個数が大きいほど陰影マップは強く平滑化される。本実施形態では、毛質の変更度合いα
Qに応じてN
Sの値が設定される。例えば、α
Q=0の場合には、N
S=1とすることができる。この場合、Y
S(i,j)=Y’(i,j)となり、調整前後において陰影マップは変化しない。また、α
Qが大きいほど、N
Sに大きな値が設定される。このように、設定された毛質の変更度合いα
Qが大きいほど、陰影マップが強く平滑化される。なお、i
t,j
tが整数でない場合、式(23)のY’(i
t,j
t)は、近傍の画素値を用いた補間により求めることができる。
【0060】
そして、反射光算出部206は、上述のように算出された反射光成分を、陰影マップを用いて補正できる。例えば、反射光算出部206は、入力画像の各画素(i,j)について、反射光成分ρS(i,j)に、平滑化後の陰影マップの画素値YS(i,j)を乗算することができる。このような構成により、毛流の陰影に従って反射光成分の補正を行うことができる。この例では、陰影マップが毛質の変更度合いに応じて調整されているため、毛質の変更度合いに応じて調整された細かな陰影を反射光成分に加えることができる。上記のように、毛質の変更度合いαQが大きいほど、毛流に沿った陰影が強く平滑化される。この場合、毛流に沿った反射光成分がより均一に近づくため、被写体の髪に付与される光沢がより明瞭になる。
【0061】
上記の補正を全て行う必要はないが、信頼度と調整後の陰影マップとを用いて反射光成分を補正する場合、入力画像の各画素(i,j)についての補正後の反射光成分ρ
S’(i,j)は、式(25)に従って算出することができる。この場合、画像補正部は、反射光成分ρ
S(i,j)の代わりに、補正後の反射光成分ρ
S’(i,j)を用いて、補正画像データを生成することができる。
【数11】
【0062】
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0063】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0064】
201:画像取得部、202:形状取得部、203:第1特徴量算出部、204:第2特徴量算出部、205:光源設定部、206:反射光算出部、207:画像補正部