【文献】
齋藤 康之、小谷 一孔,“眼鏡顔画像における眼鏡フレーム領域の抽出と除去”,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,1997年 1月24日,Vol.96, No.499,pp.49-54
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0018】
本発明の実施の形態について図面を参照しながら説明する。本実施の形態に係る画像処理装置1は、
図1に例示するように、制御部11と、記憶部12と、操作部13と、表示部14と、入出力部15とを含んで構成される。
【0019】
本実施の形態の制御部11は、CPU等のプログラム制御デバイスであり、記憶部12に格納されたプログラムに従って動作する。本実施の形態では、この制御部11は、顔が撮像された画像の情報を取得し、当該取得した画像情報内に眼鏡のレンズ部分があれば、当該眼鏡のレンズ部分内の画素がどれであるかを推定する。そしてこの制御部11は、推定された眼鏡のレンズ部分内の画素を、当該眼鏡のレンズ部分内の他の位置の画素に写像する変換を行う。この制御部11の詳しい処理の内容については後に述べる。
【0020】
記憶部12は、メモリデバイスや、ディスクデバイスを含んで構成される。この記憶部12には、制御部11によって実行されるプログラムが保持される。このプログラムは、DVD−ROM等のコンピュータ可読な記録媒体に格納されて提供され、この記憶部12に格納されたものであってもよい。また、このプログラムは、ネットワークを介して配信され、この記憶部12に格納されたものであってもよい。
【0021】
本実施の形態の一例では、記憶部12には、制御部11の処理の対象となる画像情報が格納される。またこの記憶部12は、制御部11のワークメモリとしても動作する。
【0022】
操作部13は、キーパッド等であり、利用者の指示操作を受け入れて制御部11に出力する。表示部14は、例えば制御部11から入力される指示に従って表示するべき画像を表すテレビジョン信号を生成して出力する信号生成部である。またこの表示部14は、液晶ディスプレイ等を含み、制御部11から入力される画像を表示するものであってもよい。
【0023】
入出力部15は、例えばネットワークインタフェース等であり、制御部11から入力される指示に従い、ネットワークを介して送信される情報を受信して制御部11に出力する。またこの入出力部15は、メモリカードリーダを含んでもよい。この場合、入出力部15は、例えば挿入されたメモリカードから画像情報等を読み出して制御部11に出力する。
【0024】
本実施の形態の一例において制御部11は、機能的には、
図2に例示するように、画像取得部21と、推定部22と、変換部23とを含んで構成される。画像取得部21は、入出力部15または記憶部12から顔が撮像された画像の情報を取得する。顔が撮像された画像は、例えば記憶部12に蓄積された画像情報のうちから、操作部13に対する利用者の指示操作により顔の撮像された画像情報を選択して読み出すこととすればよい。
【0025】
推定部22は、画像取得部21が取得した画像情報を処理対象として、この処理対象の画像情報のうちから眼鏡のレンズ部分内の画素がどれであるかを推定する。なお、この推定部22は、眼鏡のレンズ部分内の画素と推定される部分がなければ(レンズ部分がないと判断されると)、処理を終了する。また変換部23は、推定された眼鏡のレンズ部分内の画素を、当該眼鏡のレンズ部分内の他の位置の画素に写像する変換を行う。これら推定部22及び変換部23の具体的な処理の内容を次に、いくつかの例とともに説明する。
【0026】
[レンズ部分を輪郭線の不連続点で推測する例]
一例としてこの推定部22は、次のようにして眼鏡のレンズ部分内の画素がどれであるかを推定する。すなわち本実施の形態の一例に係る推定部22は、処理対象となった画像情報のうちから人物の顔として認識される部分を抽出する。この処理は広く知られた顔認識処理を適用できる。
【0027】
以下の説明で推定部22と変換部23とは、この抽出した部分ごと(顔画像ごと)に処理を行う。なお、ここでは簡単のため、顔画像がひとつだけの場合を例として説明するが、顔が複数あれば、以下の処理を、顔ごとに繰返して行えばよい。
【0028】
推定部22は、抽出した顔画像部分のうちから、瞳の位置を表す情報、顔の上下方向を表す情報、顔面を通る正中線(頭部と矢状面との交差する線)を表す情報など、顔を特徴づける情報を生成する。以下ではこの正中線に平行な軸をY軸とする。Y軸は顔の上方向を正の方向とする。またY軸に直交し、顔の右側(顔に向って右側)を正の方向とする軸をX軸とする。各軸の原点は、例えば左右の瞳の位置を結ぶ線分と、正中線との交点などとして適宜定める。そして瞳の位置などの情報は、このXY直交軸の座標として表しておくこととする。
【0029】
本実施の形態のある例に係る推定部22は、抽出した顔画像部分から、さらに顔の輪郭線を抽出する。すなわちこの例の推定部22は、本発明の抽出手段としても動作する。顔の輪郭線を抽出する処理については、Cannyのエッジ検出法等、広く知られた方法があるのでここでの詳しい説明は省略する。
【0030】
推定部22は、抽出した輪郭線が不連続となる部分があるか否かを調べる。具体的にこの推定部22は、抽出された輪郭線上に複数の点を設定する。一般に輪郭線は閉曲線となるので、当該閉曲線の内側に一点をとり(顔の中心でよい)、この一点から所定角度ごとに放射状に仮想的な線分を複数引いて、各線分と輪郭線との各交点を得て、これらの交点を、上記複数の点として設定すればよい。
【0031】
推定部22は、当該輪郭線上に設定した複数の点に対して少なくとも一つ(一般には複数)のBスプライン曲線(複数ある場合はBスプライン曲線群)により輪郭線を表す曲線を生成するカーブフィッティングの処理を行う。このとき、カーブフィッティングの処理に用いる点の組を異ならせつつ、Bスプライン曲線群の組の候補を複数組得ておき、各組について予め定めた情報量基準等によりフィッティングの評価を行う。そして最も評価の高いBスプライン曲線群の組を参照し、当該組に含まれるBスプライン曲線群のうちに、同じ点を端点(節点)とする一対のBスプライン曲線があれば、当該一対のBスプライン曲線のうち、X軸方向の長さよりもY軸方向の長さの長いもの(Bスプライン曲線の両端点のY座標成分の差の絶対値がX座標成分の差の絶対値より大きいもの)を選択する。そしてこの選択したBスプライン曲線のうち、他方のBスプライン曲線と同じ位置にある節点の位置で輪郭線が不連続となっていると推定し、当該節点の座標を不連続の点(不連続点)の座標として記憶する。
【0032】
ここで本来輪郭線は閉曲線であるため、上記の選択されたBスプライン曲線β1で不連続点が見出された場合、当該選択されたBスプライン曲線β1と同じ不連続点の節点(一方側端とする)を持つ他のBスプライン曲線β2の他方側端もまた、不連続点であることとなる。つまりBスプライン曲線β2は両端が不連続点となる。そしてこのBスプライン曲線β2の他方側端と同じ不連続点の節点を持つ、さらに他のBスプライン曲線β3を、「隣接すべきBスプライン曲線」と呼ぶ。そして推定部22は、ある選択されたBスプライン曲線における不連続点と、それに隣接すべきBスプライン曲線における不連続点であって、これらの不連続点が、両端が不連続点となる別のBスプライン曲線で結ばれている不連続点同士を組(ペア)として、それぞれの座標を記憶しておく。またこのとき不連続点を含み、上記のように選択されるBスプライン曲線には、
図3に例示するように、
(1)不連続点を含むBスプライン曲線であって、当該不連続点のY座標が瞳の位置EのY座標より大きく、かつ他の端点のY座標が不連続点のY座標より大きい(B1)
(2)不連続点を含むBスプライン曲線であって、当該不連続点のY座標が瞳の位置EのY座標より大きく、かつ他の端点のY座標が不連続点のY座標より小さい(B2)
(3)不連続点を含むBスプライン曲線であって、当該不連続点のY座標が瞳の位置EのY座標より小さく、かつ他の端点のY座標が不連続点のY座標より大きい(B3)
(4)不連続点を含むBスプライン曲線であって、当該不連続点のY座標が瞳の位置EのY座標より小さく、かつ他の端点のY座標が不連続点のY座標より小さい(B4)
の4通りの場合がある。そしてB1のBスプライン曲線に含まれる不連続点については外側不連続点、B2のBスプライン曲線に含まれる不連続点については内側不連続点、B3のBスプライン曲線に含まれる不連続点については内側不連続点、B4のBスプライン曲線に含まれる不連続点については外側不連続点であるとの属性情報を関連付けておく。上記記憶される組に含まれる不連続点の座標は、いずれか一方が外側不連続点の座標となり、他方が内側不連続点の座標となる。
【0033】
なお、Bスプライン曲線を利用した不連続点の検出方法は、井元,小西,「Bスプラインによる不連続曲線推定と変化点探索」,広島大学における講演録(http://bonsai.hgc.jp/~imoto/imoto_hiroshima2000.pdf)に記載された、広く知られた方法であるので、ここでのより詳しい説明は省略する。
【0034】
またここでは輪郭線の検出にエッジ検出を用い、不連続点の検出にBスプラインを用いる方法を例示したが、本実施の形態における顔の輪郭線検出と、その不連続点の検出法は、他の方法であっても構わない。
【0035】
推定部22は、例えば上記の処理により検出した不連続点がある場合に、当該不連続点の位置にレンズフレームのある眼鏡が着用された顔であるとして、当該不連続点の位置を表す情報を出力する。なお、眼鏡は通常、目の周辺にあることを考慮して、推定部22は、顔のうちから目を検出し(目の検出処理も広く知られた方法があるので、ここでの詳しい説明を省略する)、検出した目の位置を中心として予め定めた半径の範囲に、不連続点が検出された場合に、当該不連続点の位置にレンズフレームのある眼鏡が着用された顔であるとして不連続点の位置を表す情報を出力してもよい。
【0036】
ここまでの処理により、具体的には、
図4(a)に例示するように、眼鏡のレンズにより不連続となった輪郭線上の点(不連続点)101が一般に複数組検出される。
図4(a)では、眼鏡のレンズフレームの外側の輪郭線部分に相当する、端点101bを含むBスプライン曲線β1と、端点101bと端点101aとを結ぶBスプライン曲線β2と、端点101aと端点101cとを結ぶ(眼鏡のレンズフレームの内側の輪郭線部分を表す)Bスプライン曲線β3とが検出される。そしてこれらのうちY軸方向の長さがX軸方向の長さより長い、Bスプライン曲線β1,β3が選択され、それぞれにおける不連続点101b,101a,101c…が見出される。また、この選択されたBスプライン曲線における不連続点と他の端点との関係から、不連続点101bが外側不連続点とされ、不連続点101a,cが内側不連続点とされる。さらに互いに隣接するべきBスプライン曲線β1,β3における不連続点101a,bは、両端が不連続点であるBスプライン曲線β2によって結ばれているので、推定部22は、これらの不連続点101a,bの各座標を組として記憶することとなる。以下同様にして、推定部22はこれらの不連続点101a,b,…,p,q…(
図4(a)の例では不連続点101a,bの座標が組として記憶されている)と、先に特定した左右の瞳の位置102L,102Rとを用いて、例えば次の処理によりレンズ部分内の画素がどれであるかを推定する。
【0037】
すなわちある例に係る推定部22は、検出された顔の正中線より左側(X軸負の方向)にある瞳の位置102Lと、当該瞳の位置102Lよりもさらに左側(X軸負の方向)にある、不連続点101a,b…とに外接する矩形103Lを得る。また推定部22は、検出された顔の正中線より右側(X軸正の方向)にある瞳の位置102Rと、当該瞳の位置102Rよりもさらに右側(X軸正の方向)にある、不連続点101p,q…とに外接する矩形103Rを得る。
【0038】
また、本実施の形態の別の例に係る推定部22では、検出された顔の正中線より左側にある瞳の位置102Lを含む目の範囲(顔認識時の処理においてこの範囲を検出しておけばよい)を特定し、この目の範囲の右端側(目の正中線側の端)よりも正中線側に予め定めた方法で定めた距離だけ離れた位置にある点Aを求める。この予め定めた方法には、予め距離を定数として定めておく方法のほか、目の範囲の右端側から正中線までの距離に所定の定数(1未満の定数)を乗じた値などとしておく方法があり得る。
推定部22は、そして、この点Aと、瞳の位置102Lよりもさらに左側にある、不連続点101a,b…とに外接する矩形103Lを得ることとしてもよい。
この例では推定部22は、検出された顔の正中線より右側にある瞳の位置102Rを含む目の範囲を特定し、この目の範囲の左端側(目の正中線側の端)よりも正中線側に予め定めた方法で定めた距離だけ離れた位置にある点A′を、先と同様の方法で求める。
推定部22は、そして、この点A′と、瞳の位置102Rよりもさらに右側にある、不連続点101p,q…とに外接する矩形103Rを得ることとしてもよい。
本発明の実施の形態のさらに別の例に係る推定部22では、さらに、
図4(b)に例示するように、検出された顔の正中線より左側にある瞳の位置102Lを通り正中線に平行な線分lを用い、この線分lについて不連続点101a,b…と線対称な位置にある点101a′,101b′…を求めてもよい。そしてこの例の推定部22は、不連続点101a,b…と、これら求められた点101a′,101b′…に外接する矩形103Lを得ることとしてもよい。
この例の推定部22は、また、検出された顔の正中線より右側にある瞳の位置102Rを通り正中線に平行な線分l′を用い、この線分l′について不連続点101p,q…と線対称な位置にある点101p′,101q′…を求めてもよい。そしてこの例の推定部22は、不連続点101p,q…と、これら求められた点101p′,101q′…に外接する矩形103Rを得ることとしてもよい。
そして本実施の形態の推定部22は、ここに例示したいずれかの方法等により得た矩形103L,Rを特定する情報(例えば矩形103L,Rのそれぞれの頂点座標の組)を、レンズ部分を表す情報(レンズ部分内の画素を画定する情報)として出力する。またこのとき推定部22は、瞳の位置102L,Rと、不連続点101a,b,…p,q,…の位置座標を表す情報も併せて出力してもよい。
【0039】
変換部23は、推定部22により推定された眼鏡のレンズ部分内の画素を、当該眼鏡のレンズ部分内の他の位置の画素に写像する変換を行う。具体的にある例に係る変換部23は、推定部22が出力する情報で特定される矩形103L,Rの各々について、当該矩形内にある瞳の位置102と、当該矩形内にある不連続点101の座標の組とを用い、次のような処理を実行する。
【0040】
変換部23は、不連続点101の座標の組ごとに、当該組に含まれる、内側不連続点の属性情報が関連付けられた不連続点101iと、外側不連続点の属性情報が関連付けられた不連続点101eと、瞳の位置102との間の距離(ユークリッド距離でよい)をそれぞれdi,deとして演算する。またその比m=de/di(拡縮率に相当する)を算出する。
【0041】
そして変換部23は、眼鏡のレンズ部分内にあると推定された画素について、瞳の位置を中心として、距離m倍の位置に変倍する拡縮処理を実行する。具体的に変換部23は、矩形103等、眼鏡のレンズ部分内の画素塊(元の画素塊)と同形状、同サイズの画素塊(変換後画素塊)を記憶部12内に仮想的に生成し、この変換後画素塊の各画素を順次注目画素として選択して、瞳の位置から注目画素までの距離dと方向(X軸からの角度などでよい)を算出する。そして変換部23は、元の画素塊において、瞳の位置から同じ方向に向ってd/mの距離にある画素の値を、注目画素の値として設定する。または、変換部23は注目画素の値を、瞳の位置から同じ方向に向ってd/mの距離の点近傍にある複数画素の平均(上記点と各画素中心までの距離により重み付けを行ってもよい)の値に設定する。変換後画素塊内のすべての画素値の設定が終了すると、変換部23は、この変換後画素塊内の各画素の値を、元の画素塊内の対応する各画素の値に複写して処理を終了する。
【0042】
これにより、レンズにより歪んで撮像された顔の一部が、瞳の位置を中心として放射状に拡大縮小され、レンズがない場合に撮像されていたと推定される画像に近似した画像が得られる。
【0043】
[瞳中心ではなくレンズ中心を推定して処理する例]
また、上述の例では、瞳の位置を中心として拡縮処理を実行していたが、本実施の形態はこれに限られず、レンズの中心を、拡縮処理の中心としてもよい。この場合、推定部22は眼鏡のフレーム(リム、ブリッジ、ヨロイ等の各部)を顔画像部分のうちから検出する。この検出の処理については、齋藤康之, 剣持雪子,小谷一孔,「パラメトリックな眼鏡フレームモデルを用いた顔画像内の眼鏡フレーム領域の抽出と除去」,電子情報通信学会論文誌 D, J82-D2(5): 880-890, 1999(特に同論文における
図4の眼鏡フレーム抽出の処理)に記載された方法など、広く知られた方法を採用できるので、ここでの詳しい説明を省略する。
【0044】
推定部22は、検出した眼鏡のフレームからレンズ部分内の画素がどれであるかを推定し、レンズの中心の座標を演算する。具体的に眼鏡のフレームには、リムがレンズ全体を取り囲んでいるフルリム、レンズの上部(または下部)等の一部にのみリムが配されるハーフリム、リムのないツーポイント等のタイプがある。ただしブリッジ及びヨロイのない眼鏡は一般には利用されていないので、推定部22は眼鏡のフレームのうち、ブリッジ及びヨロイ(智)の端部(レンズのX軸方向の両端部に相当する)については、必ずその座標情報を得ることとなる。
【0045】
以下では推定部22による、フルリム、ハーフリム、ツーポイントの各種フレームの場合のレンズ部分内の画素がどれであるかを推定する処理について説明する。
【0046】
(a)フルリムの場合
フルリムの場合、推定部22は上述に例示した方法によりリムの輪郭上の各画素の座標を得ることができる。このリムの輪郭がそのままレンズ部分の外周輪郭と推定でき、当該リムの輪郭上の各画素で囲まれる範囲内の画素がレンズ部分内の画素と推定される。そこで推定部22は、このリムの輪郭上の各画素の座標の平均(算術平均でよい)を演算し、当該演算の結果を、レンズの中心の座標とすればよい。
【0047】
(b)ハーフリムの場合
ハーフリムの場合、推定部22は上述に例示した方法によりリムの輪郭上の一部の画素の座標を得ることができる。この例では推定部22はまた、上述の通り、顔輪郭の不連続点を検出する。すると、リムの輪郭上の一部の画素の座標、ブリッジ及びヨロイの端部の座標、並びに不連続点の座標を得ることとなる。
【0048】
これらの各座標はいずれもレンズの外周部にあると考えられるので、推定部22は、例えばSnakes曲線等のカーブフィッティング技術を用いて、これらの座標を含む輪郭線を形成し、この形成した輪郭線がレンズ部分の外周輪郭であるとして処理を行う。すなわちこの例では、推定部22は、形成した輪郭線上の各画素の座標の平均(算術平均でよい)を演算し、当該演算の結果を、レンズの中心の座標とすればよい。
【0049】
(c)ツーポイントの場合
ツーポイント等、リムのない眼鏡の場合、推定部22はまた、上述の通り、顔輪郭の不連続点を検出する。そして推定部22は、ブリッジ及びヨロイ(智)の端部、並びに不連続点の座標を得ることとなる。これらの各座標はいずれもレンズの外周部にあると考えられるので、推定部22は、例えばSnakes曲線等のカーブフィッティング技術を用いて、これらの座標を含む輪郭線を形成し、この形成した輪郭線がレンズ部分の外周輪郭であるとして処理を行う。すなわちこの例では、推定部22は、形成した輪郭線上の各画素の座標の平均(算術平均でよい)を演算し、当該演算の結果を、レンズの中心の座標とすればよい。または推定部22は、得られたブリッジ及びヨロイ(智)の端部、並びに不連続点の座標に外接する矩形を求め、この矩形がレンズ部分の外周輪郭であるとして処理を行う。すなわちこの例では、推定部22は、求めた矩形の中心座標(対角線の交点)を演算し、当該演算の結果を、レンズの中心の座標とすればよい。
【0050】
推定部22は、以上の処理により求められたレンズ部分の外周輪郭を特定する情報と、レンズ部分の中心の座標とを出力する。
【0051】
変換部23は、推定部22が出力する情報で特定されるレンズ部分の外周輪郭内(レンズ部分内)の画素を、当該眼鏡のレンズ部分内の他の位置の画素に写像する変換を行う。具体的に変換部23は、
図5に例示するように、推定部22により得られた不連続点101の座標の組ごとに、当該組に含まれる、内側不連続点の属性情報が関連付けられた不連続点101iと、外側不連続点の属性情報が関連付けられた不連続点101eと、レンズの中心104の座標との間の距離(ユークリッド距離でよい)をそれぞれdi,deとして演算する。またその比m=de/di(拡縮率に相当する)を算出する。
【0052】
そして変換部23は、推定部22が出力する情報で特定されるレンズ部分の外周輪郭内(レンズ部分内)の各画素について、レンズの中心104の座標を中心として、距離m倍の位置に変倍する拡縮処理を実行する。具体的に変換部23は、推定部22が出力する情報で特定されるレンズ部分の外周輪郭内の画素塊と同じ形状の画素塊を記憶部12内に仮想的に生成する。そして変換部23は、この仮想的に生成した画素塊内の各画素を順次注目画素として選択して、レンズの中心104に対応する画素から注目画素までの距離dならびに方向(X軸からの角度等でよい)を算出する。そして変換部23は、元の顔画像内の画素塊において、レンズの中心104から上記の方向に向ってd/mの距離にある画素の値を、注目画素の値として設定する。または、変換部23は注目画素の値を、レンズの中心104から上記の方向に向ってd/mの距離の点近傍にある複数画素の平均(上記点と各画素中心までの距離により重み付けを行ってもよい)の値に設定する。仮想的に生成した画素塊内のすべての画素値の設定が終了すると、変換部23は、この画素塊の各画素の値を、元の顔画像内の対応する各画素の値に複写して処理を終了する。
【0053】
これにより、レンズにより歪んで撮像された顔の一部が、レンズの中心104を中心として放射状に拡大縮小され、レンズがない場合に撮像されていたと推定される画像に近似した画像が得られる。
【0054】
[レンズ部分検出のさらに別の例]
また本実施の形態の別の例では、推定部22がレンズ部分内の画素がどれであるかを推定する処理として、顔部分の各画素の明度の情報を生成し、隣接画素の明度との差が予め定めたしきい値を超える部分を色味のエッジとして検出することで、瞳の位置周辺で当該エッジを検出した画素間をカーブフィッティングして、レンズ部分内の画素がどれであるかを推定することとしてもよい。この場合、フレームの検出は必ずしも必要ではない。
【0055】
なお、ここまでの説明において推定部22がレンズ部分内の画素がどれであるかを推定する処理として、顔の輪郭線の不連続点を見出して用いる方法と、眼鏡のフレームを検出する方法と、画素の明度差を用いる方法とを説明したが、これらはそれぞれ単独で用いるだけでなく、組み合せて用いられてもよい。すなわち、いずれかの方法でレンズ部分内にあるとされた画素のすべてをレンズ部分内の画素であると推定することとしてもよいし、いずれか複数の方法で(あるいはすべての方法で)レンズ部分内にあるとされた画素のすべてをレンズ部分内の画素と推定することとしてもよい。
【0056】
[変換処理の別の例]
さらに本実施の形態の一例において、変換部23は、上述のようにレンズ部分とされた画像部分の内部で拡大縮小処理を行うのではなく、次のように処理を行ってもよい。
【0057】
すなわち本実施の形態の別の例においては、記憶部12に、予め、眼鏡のレンズの種類(レンズの「度」や、乱視矯正の有無などで種類が相違する)ごとに、当該レンズ部分内の像の写像に係るパラメータである変換テーブルデータを関連付けて記憶しておく(
図6)。ここで変換テーブルデータは、
図7に例示するように、N×M(N,Mはそれぞれ正の整数)個の二次元座標情報(dest)を含んでなる。具体的に
図7に例示した変換テーブルデータでは、二次元座標情報(dest)においては、左上隅から右へi個、下へj個(ただしi≦N,j≦M)だけ移動した位置にある画素の座標情報((i,j)の位置の座標情報)が例えば(i′,j′)というように設定されている。これは、元の画像において(i′,j′)の位置にある画素を、この(i,j)の位置に移動することを意味する。
【0058】
変換部23は、変換を行う際には、この二次元座標情報(dest)の中心(予めどの画素が中心の画素であるかを定めておくか、あるいは(N/2,M/2)の位置の画素を中心とすればよい)と、推定部22が推定したレンズ部分の中心の座標とを一致させる。そして変換部23は、推定部22が推定したレンズ部分に含まれる各画素に対応する、二次元座標情報(dest)上の値を参照して、画素値を写像したレンズ部分内の画像を生成し、元の画像内のレンズ部分内の各画素の値を当該生成した画像の対応する画素の値で置き換える。
【0059】
この処理を模式的に
図8を用いて説明すると、次のようになる。
図8では、元のレンズ部分内の画像に対応するものとして3×3の画素があるとし、左上から右下に向って各画素値がA,B,…,Iとなっているものとする。なお、その中心は2行2列目の位置の画素とする。またここでは元の画素塊内のη行ξ列目の画素値を複写することを(ξ,η)と表すこととし、5×3画素分の二次元座標情報(dest)として、左上から右へ(1,1)、(3,1)、(3,1)、(3,1)、(5,1)一行下へ行って再び左端から(1,2)、(3,2)、(3,2)、(3,2)、(5,2)さらに次の行で左端から(1,3)、(3,3)、(3,3)、(3,3)、(5,3)となっているものとする。なお、5×3画素分の二次元座標情報(dest)の中心は2行3列目の位置の画素とする。
【0060】
この場合、変換部23は、元のレンズ部分の画像と同じ形状の3×3の画像を新たに生成する(その中心を元の画像と同じ2行2列目とする)。そしてこの生成した画像における1行1列目の位置の画素を注目画素とする。変換部23は、二次元座標情報(dest)の中心である2行3列目を当該生成した画像の中心である2行2列目に一致させたときに、二次元座標情報(dest)上で注目画素に対応する画素を見出す。この場合、中心2行3列目から左列へ1,上行へ1画素だけ移動した画素である1行2列目が対応する画素であるので、その値(3,1)を読み出す。この位置(3,1)、つまり1行3列目は、元のレンズ部分の画像における1行2列目の画素(画素値がBの画素)に対応する。
【0061】
そして変換部23は、生成した画像の1行1列目の位置の画素値を、元のレンズ部分の画像において対応する1行2列目の位置の画素値「B」に設定する。
【0062】
以下、変換部23は同様の手順により、1行2列目の位置の画素値を、元のレンズ部分の画像における1行2列目の画素値「B」に設定し、1行3列目の位置の画素値を、元のレンズ部分の画像における1行2列目の画素値「B」に設定し…というようにそれぞれ画素値を設定していく。こうして元のレンズ部分画像と同じ形状の3×3画素の各画素の設定が終了すると、変換部23は、この画素の設定を行った画像を、元のレンズ部分画像に置き換える。この例では、レンズ部分内の画像は各行の画素がそれぞれ「B」,「E」,「H」となった状態に置き換えられる。
【0063】
また、ここでは対応する画素を直接記述する方法を採用したが、本実施の形態はこれに限られない。いわゆる変換行列(アフィン変換行列や、透視変換行列等)が生成できるのであれば変換行列を生成して、当該変換行列を変換テーブルデータとして、レンズの種類ごとに記憶部12に格納しておいてもよい。変換部23は、この場合に変換を行うときには、変換行列を用いてレンズ部分内の画像を写像する。この処理は、例えばOpenCV等において、remap関数による処理等として広く知られているので詳しい説明は省略する。
【0064】
このような例による変換部23を用いるときには、変換部23は、記憶部12に格納されている、各レンズ種類に対応する変換テーブルデータを順次読み出して、レンズ部分内の画像をそれぞれの変換テーブルデータを用いて変換した後の画像を生成する。そして各生成した画像のうち、推定部22にて推定した各組ごとの、2つの不連続点に対応する画素の位置の差が最も小さくなる画像を選択して、元のレンズ部分内の画像を、当該選択した画像で置き換えればよい。つまり、抽出した輪郭線が連続となると判断される変換テーブルデータを選択して用いるようにすればよい。
また変換テーブルデータはさらに、眼鏡のレンズの種類ごと、かつ顔の向きごとに用意されてもよい。この例では、変換部23は、顔画像部分を検出したときの当該顔画像部分の角度の情報を取得する。この角度の情報の取得には例えば鼻の位置等により検出する方法等、広く知られた方法を採用すればよい。
変換部23は、当該取得した角度に対応する、各眼鏡のレンズの種類ごとの変換テーブルデータから、抽出した輪郭線が連続となると判断される変換テーブルデータを選択することとすればよい。
【0065】
この例によると、単純な拡大縮小に限られない変換が可能となるので、例えば遠近両用の眼鏡など複雑な像の歪みが生じ得る眼鏡にも対応が可能になる。また、変換テーブルデータの選択により、対応する眼鏡のレンズの種類が推定できるようになり、このレンズ種類の推定結果もまた、別の処理に利用可能となる。
また、変換テーブルデータの選択においては、予め人物ごとに、当該人物を特定する情報に関連付けて、当該人物が着用している眼鏡のレンズに対応する変換テーブルデータを関連付けて保持しておいてもよい。この例によれば、上記方法で変換テーブルデータを選択したときに、当該選択したテーブルデータに関連付けた情報を出力することで、当該情報により人物を特定するといった処理が可能となる。
あるいは、本実施の形態の画像処理装置1を、人物認証のために用いるのではなく、眼鏡着用時の違和感を軽減するといった目的で使用する場合、変換部23は、抽出した輪郭線が連続となると判断される変換テーブルデータを選択することに代え、あるいはそれに併せて、人物を眼鏡着用の状態で認識させ、あるいは当該人物を特定する情報を利用者に入力させ、当該認識の結果、あるいは入力された情報で特定される人物を特定する情報に関連付けられた変換テーブルデータを選択することとしてもよい。
この場合も、人物を特定する情報ごと、かつ顔の向きごとに変換テーブルデータが用意されてもよい。この場合も、変換部23は、顔画像部分を検出したときの当該顔画像部分の角度の情報を取得する。そして変換部23は、当該取得した角度に対応する、人物を特定する情報ごとの変換テーブルデータから、認識の結果、あるいは入力された情報で特定される人物を特定する情報に関連付けられた変換テーブルデータを選択することとすればよい。
【0066】
また、ここまでの説明の処理においては、顔画像部分を検出した後、顔画像部分を正面向きに変換する処理を行ってから、推定部22及び変換部23の処理を行ってもよい。またこの場合、変換後に元の角度に戻す処理を行ってもよい。このような顔を正面向き、あるいは任意の角度に変換する技術は、例えば向川康博、中村裕一、大田裕一「複数の顔画像の組合せによる任意方向・任意表情の顔画像の生成」,電子情報通信学会論文誌D-II, J80-D2(6): 1555-1562, 1997等の技術があり、これらを採用できる。なお、顔の向きは正中線と瞳との相対的な位置などにより推定する方法等、種々の方法が知られているのでここでの詳しい説明は省略する。
【0067】
本発明の実施の形態の一例に係る画像処理装置1は、以上の構成を備えてなり、次のように動作する。処理の対象となった画像を受け入れた画像処理装置1は、
図9に例示する処理を開始し、当該処理の対象となった画像のうちから顔部分を検出する(S1)。そして検出した顔部分のうち、未だ選択していない一つを注目部分として選択し(S2)、当該注目部分に含まれる顔の特徴量(瞳の位置の情報や輪郭線の情報など)の情報を生成するとともに(S3)、当該注目部分から眼鏡のレンズ部分内の画素がどれであるかを検出し、レンズ中心の推定を試みる処理を実行する(S4)。
【0068】
この処理S4では、上述の通り、眼鏡のフレームを検出する処理や、明度差、あるいは輪郭線の不連続点等を用いてレンズ部分内の画素がどれであるかを検出することとなる。また、眼鏡のフレームを検出する処理や明度差を利用する処理により、レンズ部分の中心(眼鏡のレンズ中心に相当する位置、以下レンズ中心と呼ぶ)が推定できた場合は、当該レンズ中心の座標情報も併せて得ておくこととする。一般に眼鏡用レンズは、円形のレンズをフレームの形状に合わせて加工しているが、この加工前のレンズの円形の中心がここでのレンズ中心となる。レンズ中心に相当する位置は、通常、眼鏡着用者が正面を向いたときに、瞳の位置に重なるように加工・調整される。また、不連続点のみが検出できた場合は、レンズ中心までは推定できないので、この場合は輪郭線上の不連続点が、レンズ部分内の画素がどれであるかの検出結果となる。
【0069】
画像処理装置1は、処理S4においてレンズ部分内の画素がどれであるかが検出できたか(不連続点が見出されるか、あるいはフレームが検出できたか)を調べ(S5)、検出できていたならば(Yesならば)、さらに、レンズ中心が見出されたか否かを判断する(S6)。
【0070】
ここでレンズ中心が見出されていれば(Yesならば)、レンズ中心を中心として、レンズ内の画像を変換する変換処理を実行する(S7)。この処理S7の変換処理では、レンズ中心を中心として放射状に拡大縮小し、輪郭線上の不連続点の座標(不連続点の位置にある画素の位置)を変換し、輪郭線が連続するように変換する処理を行ってもよい。また、この処理S7の処理としては、画素値の写像先を直接表す情報により、輪郭線上の不連続点の座標(不連続点の位置にある画素の位置)を変換し、輪郭線が連続するように変換する処理を行ってもよい。さらに、この処理S7では、変換行列を用いた写像(map)の処理により、輪郭線上の不連続点の座標(不連続点の位置にある画素の位置)を変換し、輪郭線が連続するように変換する処理を行ってもよい。なお、眼鏡のレンズ部分は一般に顔の左右にあるので、画像処理装置1は、それぞれについて処理S4からS7の処理を実行する。
【0071】
画像処理装置1は、処理対象となった画像に含まれるすべての顔画像についての処理を終了したか否かを調べる(S8)。そしてすべての顔画像についての処理を終了したと判断すると(Yesの場合)、処理後の画像を表示部14や入出力部15を介して出力して(あるいは記憶部12に格納して)、処理を終了する。また処理S8において、未選択の顔画像があると判断すると(Noの場合)、処理S2に戻って処理を続ける。
【0072】
また処理S5において、レンズ部分内の画素がどれであるかが検出できなかったと判断した場合(つまりNoならば)、処理S8に移行して処理を続ける。さらに処理S6においてレンズ中心が見出されていないと判断すると(Noならば)、瞳の位置を中心として、レンズ内の画像を変換する変換処理を実行する(S9)。この処理S9では例えば、瞳の位置を中心として放射状に拡大縮小し、輪郭線上の不連続点の座標(不連続点の位置にある画素の位置)を変換し、輪郭線が連続するように変換する処理を行う。なお、眼鏡のレンズ部分は一般に顔の左右にあるので、画像処理装置1は、それぞれについて処理S9の処理を実行することになる。そして画像処理装置1は、処理S8に移行して処理を続ける。
【0073】
本実施の形態によれば、レンズ中心が見出された場合、瞳の位置も含めて、眼鏡のレンズによる歪みを解消できるので、瞳の間隔など、人間の顔認識を行う際に利用されるパラメータも補正されることとなり、顔認識の精度を向上できる。また、眼鏡のレンズの種類を特定できる場合、顔画像に基づいて、現在利用している眼鏡のレンズの種類を推定する等の処理を実行できる。
【0074】
さらに、本実施の形態の上述の処理においては、一対の眼鏡のレンズのそれぞれについて輪郭線の不連続点が連続となるよう変換する処理を行っている。つまり、各レンズについて拡縮率(比m)を演算しているが、本実施の形態はこれに限られない。例えば、顔の向きにより一方のレンズにおいてのみ拡縮率が演算できる場合、他方のレンズにおいてもこの拡縮率を用いた変換を行うこととしてもよい。
【0075】
さらに、本実施の形態においては拡縮率に相当する比mが1を超える場合、つまり近眼用眼鏡レンズ(輪郭線が顔中心側へ歪む)の場合に限り変換部23による変換処理を行うこととしてもよい。