オブジェクト検出方法、オブジェクト検出装置、オブジェクト検出プログラムおよび印刷装置
【課題】効率よく、かつ、漏れのないオブジェクト検出を行う。
【解決手段】少なくとも第1座標軸と第2座標軸についての位置情報を有する画像データが示す画像からオブジェクトを検出するにあたり、前記第1座標軸方向に関して第1移動間隔ずつ周期的に検出窓を順次移動させ、前記第2座標軸方向に関して前記第1移動間隔と異なる大きさの第2移動間隔ずつ周期的に検出窓を順次移動させる。そして、前記検出窓が各位置に移動するごとに当該検出窓内の画像について前記オブジェクトの存在の有無を判定する。
【解決手段】少なくとも第1座標軸と第2座標軸についての位置情報を有する画像データが示す画像からオブジェクトを検出するにあたり、前記第1座標軸方向に関して第1移動間隔ずつ周期的に検出窓を順次移動させ、前記第2座標軸方向に関して前記第1移動間隔と異なる大きさの第2移動間隔ずつ周期的に検出窓を順次移動させる。そして、前記検出窓が各位置に移動するごとに当該検出窓内の画像について前記オブジェクトの存在の有無を判定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、オブジェクト検出方法、オブジェクト検出装置、オブジェクト検出プログラムおよび印刷装置に関し、特に画像に含まれるオブジェクトを検出するオブジェクト検出方法、オブジェクト検出装置、オブジェクト検出プログラムおよび印刷装置に関する。
【背景技術】
【0002】
画像データに含まれる顔画像を検出し、その検出結果を利用して、印刷処理や補正処理や画像入力機器の動作制御が行われている。検出窓を画像データのあらゆる位置に移動させながら、検出窓において顔画像が存在するか否かを判定していくことにより、画像データにおける不特定の位置に存在する顔画像を検出することができる(特許文献1、参照。)かかる文献(図6、参照。)においては、画像データの隅から順に検出窓を移動させている。
【特許文献1】特開2007−48108号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
検出窓において顔画像が存在するか否かを判定するための処理負担は小さいものでないため、検出窓を画像データのあらゆる位置に移動させることにより、全体の検出処理の処理負担は大きくなるという問題があった。画像データのすべての位置(画素)について検出窓を設定すれば、検出漏れを防止することができるが、処理負担が著しく増大してしまう。逆に、画像データの一部の位置(画素)のみについて検出窓を設定すれば、処理負担を軽減することができるが、検出漏れが発生してしまう。
【0004】
本発明は、前記課題にかんがみてなされたもので、効率よく、かつ、漏れのないオブジェクトを検出するオブジェクト検出方法、オブジェクト検出装置、オブジェクト検出プログラムおよび印刷装置の提供を目的とする。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明は、少なくとも第1座標軸と第2座標軸についての位置情報を有する画像データが示す画像からオブジェクトを検出するにあたり、以下の手順を行う。まず、前記第1座標軸方向に関して第1移動間隔ずつ周期的に検出窓を順次移動させ、前記第2座標軸方向に関して前記第1移動間隔と異なる第2移動間隔ずつ周期的に検出窓を順次移動させる。また、前記検出窓が各位置に移動するごとに当該検出窓内の画像について前記オブジェクトの存在の有無を判定する。すなわち、前記第1座標軸方向と前記第2座標軸方向のそれぞれに関して前記検出窓を移動させながら、当該検出窓についてオブジェクトが存在するか否かを判定していく。
【0006】
ここで、前記第1座標軸方向と前記第2座標軸方向のそれぞれに関して前記検出窓を移動させるにあたり、前記第1座標軸方向に関する移動間隔と、前記第2座標軸方向に関する移動間隔を異なる大きさとする。このようにすることにより、一方の座標軸方向については漏れのないオブジェクト検出を行うことができ、他方の座標軸方向については処理負担の少ないオブジェクト検出を行うことができる。すなわち、各方向に応じて最適な前記移動間隔を設定することにより、漏れがなく、かつ、効率のよいオブジェクト検出を行うことができる。なお、前記オブジェクトは、特定の画像的特徴を有するものであればよく、例えば人物・動物の顔や顔器官等を検出することができる。
【0007】
さらに、前記第2座標軸方向において互いに隣接する前記検出窓の移動位置同士は、前記第1座標軸方向において所定量だけずれるようにしてもよい。これにより、前記第2座標軸方向において互いに隣接する複数の前記検出窓の移動位置が、前記第1座標軸方向における同一位置に並ぶことが防止でき、漏れのないオブジェクト検出を行わせることができる。前記第1座標軸方向においてずれる量は、例えば前記第1移動間隔の半分の大きさとしてもよい。
【0008】
また、前記第1座標軸と前記第2座標軸として種々の座標軸系を適用することができる。例えば、前記第1座標軸方向と前記第2座標軸方向を、それぞれ前記画像データが示す画像の縦方向と横方向とするようにしてもよい。このようにすることにより、縦方向と横方向に異なる移動間隔を設定することができる。さらに、前記第1座標軸方向と前記第2座標軸方向を、前記画像データが示す画像の所定位置を中心とした円の径方向と周方向とするようにしてもよい。
【0009】
さらに、本発明の技術的思想は、具体的なオブジェクト検出方法にて具現化されるのみならず、当該方法をオブジェクト検出装置において具現化することもできる。すなわち、上述したオブジェクト検出方法が行う各工程に対応する手段を有するオブジェクト検出装置としても本発明を特定することができる。むろん、上述したオブジェクト検出装置がプログラムを読み込んで上述した各手段を実現する場合には、当該各手段に対応する機能を実行させるプログラムや当該プログラムを記録した各種記録媒体においても本発明の技術的思想が具現化できることは言うまでもない。なお、本発明のオブジェクト検出装置は、単一の装置のみならず、複数の装置によって分散して存在可能であることはいうまでもない。また、プリンタ等の印刷装置やデジタルスチルカメラ等の画像入力装置において本発明のオブジェクト検出方法を実現するようにしてもよい。
【発明を実施するための最良の形態】
【0010】
以下、下記の順序に従って本発明の実施形態を説明する。
1.画像処理装置の構成:
2.画像処理:
2−1.顔検出処理:
2−2.顔判定処理:
2−3.肌色調整および印刷処理:
3.変形例:
3−1.変形例1:
【0011】
1.画像処理装置の構成
図1は、本発明の一実施形態にかかる画像処理装置を具体的に実現するコンピュータの構成を示している。同図において、コンピュータ10はCPU11とRAM12とROM13とハードディスクドライブ(HDD)14と汎用インターフェイス(GIF)15とビデオインターフェイス(VIF)16と入力インターフェイス(IIF)17とバス18とから構成されている。バス18は、コンピュータ10を構成する各要素11〜17の間でのデータ通信を実現するものであり、図示しないチップセット等によって通信が制御されている。HDD14には、オペレーティングシステム(OS)を含む各種プログラムを実行するためのプログラムデータ14aが記憶されており、当該プログラムデータ14aをRAM12に展開しながらCPU11が当該プログラムデータ14aに準じた演算を実行する。
【0012】
また、HDD14には、デジタルスチルカメラやスキャナによって画像入力された画像データ14bが記憶されている。GIF15は、例えばUSB規格に準じたインターフェイスを提供するものであり、外部のプリンタ20をコンピュータ10に接続させている。VIF16はコンピュータ10を外部のディスプレイ40に接続し、ディスプレイ40に画像を表示するためのインターフェイスを提供する。IIF17はコンピュータ10を外部のキーボード50aとマウス50bに接続し、キーボード50aとマウス50bからの入力信号をコンピュータ10が取得するためのインターフェイスを提供する。
【0013】
図2は、コンピュータ10において実行されるプログラムのソフトウェア構成を示している。同図において、オペレーティングシステム(OS)PG1と画像処理アプリケーションPG2とプリンタドライバPG3が実行されている。OS PG1は各プログラム間のインターフェイスを提供し、プリンタドライバPG3はプリンタ20を制御するための処理を実行する。画像処理アプリケーションPG2は、作業画像取得部PG2aと検出窓設定部PG2bと窓画像取得部PG2cと特徴量算出部PG2dと顔判定部PG2eと画質調整部PG2fとから構成されている。画像処理アプリケーションPG2を構成する各モジュールPG2a〜PG2fが実行する処理の詳細については後述する画像処理の流れとともに説明する。
【0014】
2.画像処理
図3は、画像処理の全体の流れを示している。ステップS100では、作業画像取得部PG2aが所定のUI画面をディスプレイ40に表示させるとともに、キーボード50aとマウス50bから操作を受け付ける。それにより、HDD14等に記憶された複数の画像データ14bのなかからユーザーが印刷したい画像データ14bを取得する。作業画像取得部PG2aが画像データ14bの解像度を変換することにより、320画素×240画素(QVGA)の作業画像データWDを生成する。そして、ステップS200においては、検出窓設定部PG2bが顔検出処理を実行させ、作業画像データWDにおいて、順次、検出窓SWを設定する。検出窓SWが設定されるごとに、ステップS400において特徴量算出部PG2dと顔判定部PG2eが検出窓SWについての顔判定処理を実行させ、その判定結果を出力する。その判定結果に応じて、画質調整部PG2eが肌色調整処理をステップS500にて実行し、画質調整後の画像データ14bをプリンタドライバPG3に出力する。するとプリンタドライバPG3が印刷制御処理を実行し、プリンタ20にて画質調整後の画像データ14bを印刷させる。
【0015】
2−1.顔検出処理
図4は、顔検出処理の流れを示し、図5は作業画像データWDを示している。図5において、作業画像データWDに正方形状領域の検出窓(検出領域)SWが設定されており、顔検出処理によって検出窓設定部PG2bが検出窓SWを作業画像データWDにおいて隈無く移動させる。なお、作業画像データWDの長手方向をx軸(第1座標軸)とし、短手方向をy軸(第2座標軸)と表すものとし、x軸とy軸の原点は作業画像データWDの左上隅位置とする。検出窓SWを移動させる際に、検出窓SWのサイズと、検出窓SWの画像面内における回転角度を順次シフトさせる。以上のように検出窓SWをシフトさせるために、以下のパラメータを順次シフトさせる必要がある。
・検出窓SWのサイズのパラメータ:S
・検出窓SWの中心位置のパラメータ:P
・検出窓SWの回転角度のパラメータ:T
ステップS210においては、検出窓設定部PG2bが各カウンタns,nx,ny,ntをリセットする。各カウンタns,nx,ny,ntは、上述したパラメータS,P,Tを順にシフトさせるための整数値であり、リセットによって0とされる。ステップS220においては、サイズカウンタnsに1を加算する。
【0016】
図6は、サイズカウンタnsと検出窓SWのサイズSとの関係を示している。同図において、サイズカウンタnsの増加とともに、検出窓SWのサイズS(縦と横の長さ)が徐々に減少することが示されている。本実施例では、サイズカウンタnsとサイズSとが線形的な関係を有し、サイズカウンタnsが1〜15の間で1増加するごとに、検出窓SWのサイズS(縦および横の長さ)が12画素ずつ小さくなるようにしている。また、サイズカウンタnsが1のときの最大のサイズSが検出窓SWの短手の長さよりわずかに短い200画素となり、サイズカウンタnsが15のときの最小の検出窓SWのサイズSが20画素となる。なお、ここで示したサイズカウンタnsと検出窓SWのサイズSの関係は一例であり、これらが非線形の関係を有していたり、傾きや切片などを変更してもよい。次のステップS230,S240においては、検出窓SWの中心位置のパラメータPを設定するために、y方向カウンタnyとx方向カウンタnxにそれぞれ1を加算する。
【0017】
ステップS245では、y方向カウンタnyが奇数であるか偶数であるかを判定する。ここで、y方向カウンタnyが奇数である場合には、検出窓SWの中心位置Pのx,y座標を下記の(1)式によって算出する(ステップS250a)。
【数1】
上記の(1)式において、dx,dyは検出窓SWの中心位置Pの各方向への単位移動距離(画素数)を示す一定の移動間隔を表しており、移動間隔dx,dyと方向カウンタnx,nyをそれぞれ乗算することにより、検出窓SWの中心位置Pのx,y座標を算出する。移動間隔dx,dyは検出窓SWの縦および横の長さを示すサイズSに基づいて下記の(2)式によって算出される。
【数2】
上記の(2)式が示すように、移動間隔dx,dyは互いに異なる値となっており、px>pyとなっている。上記の(2)式によって移動間隔dy<1となる場合は、dy=1とする。なお、x方向カウンタnxが取り得る範囲は1〜320/dx(整数部分)とし、y方向カウンタnyは1〜240/dy(整数部分)とする。y方向カウンタnyが偶数である場合には、検出窓SWの中心位置Pのx,y座標を下記の(3)式によって算出する(ステップS250b)。
【0018】
【数3】
上記の(3)式によれば、y方向カウンタnyが偶数である場合は、y方向カウンタnyが奇数である場合よりも、検出窓SWの中心位置Pのx座標がx方向の移動間隔pxの半分だけ進んだ位置となる。ステップS250a,250bにおいては、それぞれ以上のようにして算出した中心位置Pを中心として、サイズSの検出窓SWを生成する。ステップS260においては、検出窓SWの一部が作業画像データWDの外側にはみ出ていないか否かを判定する。
【0019】
図7は、ステップS260における判定の様子を模式的に示している。同図に示すように、各カウンタns,nx,nyの変動によって検出窓SWの位置と大きさがシフトするため、あるカウンタns,nx,nyの組み合わせにおいては検出窓SWの一部が作業画像データWDの外側にはみ出ることとなる。このような場合に正常な顔検出を行うことができないとして、当該カウンタns,nx,nyで特定される検出窓SWについての顔検出処理をスキップさせる。一方、検出窓SWの全部が作業画像データWDの内側に入る場合には、ステップS270において検出窓設定部PG2bが検出窓SWの回転角度Tを設定するための回転角カウンタntに1を加算する。
【0020】
図8は、回転角カウンタntと検出窓SWの回転角Tとの関係を示している。同図に示すように回転角カウンタntが1のとき作業画像データWDの上方向を検出窓SWの上とし、回転角カウンタntが2のとき作業画像データWDの右方向を検出窓SWの上とし、回転角カウンタntが3のとき作業画像データWDの下方向を検出窓SWの上とし、回転角カウンタntが4のとき作業画像データWDの左方向を検出窓SWの上とする。すなわち、本実施形態では、回転角カウンタntが1増加するごとに検出窓SWを時計回りに90度ずつ回転させることとしている。なお、検出窓SWの回転角度は90度刻みであるものに限られず、例えば30度刻み等としてもよい。
【0021】
以上のようにして、ステップS260にてスキップされた場合を除いて、すべてのカウンタns,nx,ny,ntが設定できると検出窓SWの大きさと位置と回転角が検出窓設定部PG2bによって一意に特定されたこととなる。ステップS280においては、窓画像取得部PG2cが現在決定されている検出窓SWの内側の画像データを抽出し、窓画像データXDとして取得する。取得した窓画像データXDは、特徴量算出部PG2dに出力され、窓画像データXDについての顔判定処理をステップS400にて実行する。顔判定処理の詳細については後述する。
【0022】
窓画像データXDを特徴量算出部PG2dに出力すると、検出窓設定部PG2bがステップS290において、回転角カウンタnt=4であるか否かを判定する。すなわち、現在の検出窓SWのサイズSおよび中心位置Pにおいて4方向の回転角の設定が完了したか否かを判定する。回転角カウンタnt<4である場合には、ステップS270に戻り、回転角カウンタntに1を加算する。これにより、次回は90度時計回りに回転した検出窓SWを設定することができる。一方、回転角カウンタnt=4である場合にはステップS295において回転角カウンタntを0にリセットし、ステップS300においてx方向カウンタnx=320/dx(整数部分)であるか否かを判定する。すなわち、現在の検出窓SWのサイズSおよびy方向の位置におけるすべてのx方向の位置について検出窓SWの設定が完了したか否かを判定する。x方向カウンタnx<320/dx(整数部分)である場合には、ステップS240に戻り、x方向カウンタnxに1を加算する。これにより、次回はx方向の移動間隔px(6画素)だけ右側に進んだ中心位置Pに検出窓SWを設定することができる。
【0023】
一方、x方向カウンタnx=320/dx(整数部分)である場合にはステップS305においてx方向カウンタnxを0にリセットし、ステップS310においてy方向カウンタny=240/dy(整数部分)であるか否かを判定する。すなわち、現在の検出窓SWのサイズSにおいて、すべての中心位置Pについて検出窓SWの設定が完了したか否かを判定する。y方向カウンタny<240/dy(整数部分)である場合には、ステップS230に戻り、y方向カウンタnyに1を加算する。これにより、次回はy方向に1画素(移動間隔py)だけ進んだ中心位置Pに検出窓SWを設定することができる。一方、y方向カウンタny=240/dy(整数部分)である場合にはステップS315においてy方向カウンタnyを0にリセットし、ステップS320においてサイズカウンタns=15であるか否かを判定する。すなわち、すべてのサイズSについて検出窓SWの設定が完了したか否かを判定する。サイズカウンタns<15である場合には、ステップS220に戻り、サイズカウンタnsに1を加算する。これにより、次回は一回り小さいサイズSの検出窓SWを設定することができる。一方、サイズカウンタns=15である場合には、すべてのパラメータ(サイズSおよび位置Pおよび回転角T)の組み合わせについて検出窓SWの設定が完了したとして、処理を終了させる。
【0024】
以上説明した顔検出処理においては、ステップS260にてスキップされた場合を除いて、検出窓SWのサイズSと位置Pと回転角Tのいずれかが更新されるごとに、窓画像データXDが特徴量算出部PG2dに出力され、当該窓画像データXDについての顔判定処理がステップS400にて実行される。この顔判定処理においては、窓画像データXDに顔画像が存在するか否かが判定されるため、検出窓SWを設定したサイズSと位置Pと回転角Tにおいて顔画像の有無を判定していくことができる。
【0025】
図9は、本実施形態において検出窓SWの位置が移動する様子を示している。同図に示すように、作業画像データWDの左上隅から開始し、x方向カウンタnxの増加とともに検出窓SWの中心位置Pを右側に移動させて行くことができる。x方向カウンタnx=320/dx(整数部分)となるとき、検出窓SWの中心位置Pが作業画像データWDの右端に到達することとなる。右側に到達すると、x方向カウンタnxが0にリセットされるとともにy方向カウンタnyに1が加算されるため、検出窓SWの中心位置Pが左端の一段下の位置に移動することとなる。以上の移動を繰り返して実行する際に、y方向カウンタnyが奇数であるか偶数であるかによって、検出窓SWの中心位置Pがx方向にdx/2だけずれることとなる。このようにすることにより、後述する顔判定処理の回数を増加させることなく、検出窓SWの中心位置Pが移動させられる位置の疎密の差を緩和することができ、効率よく、かつ、漏れのない顔検出が可能となる。また、上記の(2)式によって、検出窓SWの中心位置Pのy方向に関する密度は、x方向に関する密度の5倍となる。このように、x方向とy方向とで検出窓SWの中心位置Pの密度を不均一とすることにより、x方向とy方向に関して判定特性(ロバスト性)が不均一な顔判定処理(ステップS400)に適した顔検出を実現することができる。
【0026】
2−2.顔判定処理
図10は、顔判定処理の流れを示している。ステップS410にて窓画像データXDを取得すると、次のステップS420において特徴量算出部PG2dが窓画像データXDから複数の特徴量を算出する。特徴量は、窓画像データXDに対して各種のフィルタを適用し、当該フィルタ内の輝度平均やエッジ量やコントラスト等の状態を示す特徴量(平均値や最大値や最小値や標準偏差等)を算出することにより得られる。なお、窓画像データXDは、検出窓SWのサイズSによって異なる大きさとなるが、ステップS410において予め一定の大きさに解像度変換される。
【0027】
図11は、窓画像データXDから特徴量を算出する様子を示している。同図において、窓画像データXDに対して多数のフィルタFTが用意されており、各フィルタFTを順次窓画像データXDに適用し、各フィルタFT内の画像について例えば12個の特徴量CA1〜CA12を順次算出する。特徴量CA1〜CA12が算出できると、ステップS430において、顔判定部PG2eが特徴量CA1〜CA12を予め用意されたニューラルネットワークNNに入力し、その出力として顔画像が存在する/しないの判定結果を算出する。なお、特徴量CAは、窓画像データXDが示す画像的特徴を指標化したものであればよく、必ずしもフィルタFTを使用する必要はない。
【0028】
図12は、ニューラルネットワークNNの構造の一例を示している。ニューラルネットワークNNは、前段層のユニットUの値の線形結合(添え字iは前段層のユニットUの識別番号。)によって後段層のユニットUの値が決定される基本構造を有している。さらに、線形結合によって得られた値をそのまま次の層のユニットUの値としてもよいが、線形結合によって得られた値を例えばハイパボリックタンジェント関数のような非線形関数によって変換して次の層のユニットUの値を決定することにより、非線形特性を与えてもよい。本実施例のニューラルネットワークNNは3層構造であり、ニューラルネットワークNNは、1層の中間層と、入力層と出力層とから構成されている。各特徴量CA1〜CA12がニューラルネットワークNNの入力層に入力可能となっており、出力層では出力値K(0〜1に正規化された値)を出力することが可能となっている。そして、出力値Kが0.5以上であれば窓画像データXDに顔画像が存在すると判定し、出力値Kが0.5未満であれば窓画像データXDに顔画像が存在しないと判定する(ステップS440)。このようなニューラルネットワークNNをHDD14に予め用意しておけば、顔画像が窓画像データXDに存在するか否かを特徴量CA1〜CA12に基づいて判定することができる。
【0029】
図13は、ニューラルネットワークNNを学習する様子を模式的に示している。本実施形態では、誤差逆伝搬(error back propagation)法によって学習を行うことにより、各ユニットUの数や、各ユニットU間における線形結合の際の重みwの大きさやバイアスbの値が最適化される。誤差逆伝搬法による学習においては、まず各ユニットU間における線形結合の際の重みwの大きさやバイアスbの値を適当な値に初期設定する。
【0030】
そして、顔画像が存在しているか否かが既知の学習用画像データについてステップS420と同様の手順で特徴量CA1〜CA12を算出し、当該特徴量CA1〜CA12を初期設定されたニューラルネットワークNNに入力し、その出力値Kを取得する。学習用画像データはできるだけ多く用意するべきであり、様々な状態の顔画像が検出できるように、種々の人種や性別や年齢等をカバーするように用意する必要がある。さらに、デジタルスチルカメラ等によって撮影された画像データ14bに含まれる顔画像は種々の方向に向いている可能性がある。そのため、種々の方向に向いた顔画像を含む学習用画像データを用意する。また、上下に顔を向けるより左右に顔を向けて撮影される可能性が高いため、左右に顔を向けて撮影された学習用画像データの方が多数用意される。
【0031】
本実施例において、顔画像が存在している学習用画像データについて出力値Kとして1が出力されるのが望ましく、顔画像が存在していない学習用画像データについて出力値Kとして0が出力されるのが望ましい。しかしながら、各ユニットU間における線形結合の際の重みwの大きさやバイアスbの値を適当な値に初期設定したに過ぎないため、実際の出力値Kと理想的な値との間には誤差が生じることとなる。このような誤差を極小化させる各ユニットUについての重みwやバイアスbを、勾配法等の数値最適化手法を用いて算出する。この誤差は、後段の層から前段の層に伝搬され、後段のユニットUについて重みwやバイアスbから順に最適化されていく。以上のようにして学習したニューラルネットワークNNによれば、窓画像データXDに顔画像が存在している場合の特徴量CA1〜CA12に対して1に近い出力値Kを得ることができ、窓画像データXDに顔画像が存在していない場合の特徴量CA1〜CA12に対して0に近い出力値Kを得ることができる。従って、適当な閾値0.5によって閾値判定を行うことにより、窓画像データXDに顔画像が存在しているか否かを判定することができる(ステップS440)。
【0032】
ステップS440において窓画像データXDについて顔画像が存在すると判定された場合、そのときの窓画像データXDが得られた検出窓SWのサイズSおよび位置Pおよび回転角TをRAM12に記憶させ(ステップS450)、リターンする。一方、ステップS430において窓画像データXDについて顔画像が存在しないと判定された場合、そのままリターンする。上述した顔検出処理によって窓画像データXDが特徴量算出部PG2dに順次出力されるため、その度にステップS410〜S440の処理を実行させる。これにより、図9に示すように順次移動される検出窓SWのそれぞれについて顔画像の存在の有無を判定していくことができる。
【0033】
2−3.肌色調整および印刷処理
図14は、画質調整部PG2eが実行する肌色調整処理の流れを示している。上述した顔検出処理のステップS320において、すべてのサイズSについて検出窓SWの設定が完了したか否かを判定されると、顔検出処理が終了するとともに、顔検出処理と同期して実行される顔判定処理も終了する。ステップS510においては、顔検出処理と顔判定処理の終了を検出し、調整対象の画像データ14bを取得する。ここで取得される画像データ14は、顔検出処理と顔判定処理の対象となった画像データ14bである。ステップS520においては、顔画像が存在すると判定された検出窓SWのサイズSおよび位置Pおよび回転角TをRAM12から読み出す。ステップS530においては、顔画像が存在すると判定された検出窓SWに対応する領域を画像データ14bにおいて特定する。検出窓SWのサイズSおよび位置PがRAM12から取得されているため、これを画像データ14bの画像サイズに換算することにより、検出窓SWに対応する領域を特定することができる。
【0034】
ステップS540においては、ステップS530にて特定した領域に含まれる肌色画素の色をサンプリングし、当該色に基づいて画像データ14bに対する色調調整のためのパラメータを設定する。ここでは、まずステップS540にて特定した領域に含まれる肌色画素を、各画素の色彩値(例えばRGB値やHSV値)に基づいて特定し、当該色彩値を肌色として好ましいものに補正するための調整パラメータを算出する。調整パラメータは、例えばカラーバランスやホワイトバランスや明るさを調整するためのパラメータが該当する。予め肌色として好ましい色彩値がHDD14に記憶されており、各肌色画素の色彩値が好ましい色彩値に近づくような調整パラメータが算出される。検出窓SWによって顔画像が存在する領域が予め特定されているため、顔画像の肌色画素に基づいて調整パラメータを得ることができる。なお、顔画像が存在すると判定された検出窓SWが複数検出された場合には、平均的な調整パラメータの算出を実行する。調整パラメータが算出できると、ステップS545において、当該調整パラメータに基づく各画素の色彩値の調整が実行される。以上のようにして、肌色調整が完了すると、ステップS550にて調整後の画像データ14bをプリンタドライバPG3に出力する。すると、プリンタドライバPG3は、画像データ14bに対して解像度変換処理と色変換処理とハーフトーン処理とラスタライズ処理を順次実行させ、プリンタ20に画質調整後の画像データ14bに対応する画像の印刷を実行させる。
【0035】
3−1.変形例1
図15は、本変形例にかかる顔検出処理の流れを示している。本変形例のステップS230,S240においては、前実施形態で使用したx方向カウンタnxとy方向カウンタnyの代わりに、径方向カウンタnrと周方向カウンタnaを検出窓SWの中心位置のパラメータPを設定するために使用する。
【0036】
図16は、検出窓SWの中心位置のパラメータPと、径方向カウンタnrと周方向カウンタnaの関係を示している。径方向カウンタnrは作業画像データWDの中心座標を原点とした径方向に関する検出窓SWの中心位置Pに対応付けられている。径方向カウンタnrは1〜6までの整数値をとる。中心位置Pの径方向に関する位置をrで表すと、位置rは径方向カウンタnrが1のとき0となり、径方向カウンタnrが6のとき最大値となる2次曲線(nr=1を頂点とし、下に凸の2次曲線。)で表されている。なお、位置rの最大値は、原点から検出窓SWの四隅までの距離よりもわずかに小さい大きさとされている。一方、周方向カウンタnaは1〜12までの整数値をとる。原点を水平方向に通過する直線(右側)と、原点と検出窓SWの中心位置Pを結ぶ直線がなす角をθで表すと、角θは周方向カウンタnaが1のとき0度となり、周方向カウンタnaが1増加するごとに反時計回りに30度回転(θ=30*na)する。なお、周方向カウンタnaは1〜12までの整数値をとるため、一周分(360度)だけ角θをシフトさせることができる。なお、径方向カウンタnr=1のときに限り、周方向カウンタnaの上限値を1とする。ステップS250では、以上の定義に基づいて、検出窓設定部PG2bが径方向カウンタnrと周方向カウンタnaから検出窓SWの中心の径方向に関する位置rと角度θを特定するとともに、径方向カウンタnrが奇数である場合(ステップS245)には、検出窓SWの中心位置Pのx,y座標を下記の(4)式によって算出する。
【数4】
一方、径方向カウンタnrが偶数である場合(ステップS245)には、検出窓SWの中心位置Pのx,y座標を下記の(5)式によって算出する。
【数5】
このようにすることにより、径方向カウンタnrが偶数である場合には、径方向カウンタnrが奇数である場合よりも周方向に15度進んだ位置に検出窓SWの中心位置Pを設定することができる。
【0037】
図17は、本変形例において検出窓SWの位置が移動する様子を示している。同図に示すように、作業画像データWDの中心から開始し、径方向カウンタnrの増加とともに検出窓SWの中心位置Pを外側に移動させて行くことができる。デジタルスチルカメラ等で撮影された多くの画像データ14b(作業画像データWD)においては、主たる被写体人物を全体画像の中央に構図されるため、処理の初期において顔画像を検出させることができる。例えば、後述する顔判定処理において所定人数までの顔画像が検出された時点で顔検出処理を終了させるようにした場合、より早期に処理を終了させることができ、処理負担を軽減させることができる。さらに、径方向カウンタnrに対応する径方向の位置rは、nr=1を頂点とし、下に凸の2次曲線で表されるため、作業画像データWDの中心付近においては検出窓SWの中心位置Pを高密度とし、作業画像データWDの中心から離れるほど中心位置Pを低密度とすることができる。このようにすることにより、顔画像が含まれる可能性の高い位置では細かく検出窓SWを移動させることができるとともに、顔画像が含まれる可能性の低い位置での顔判定処理の実行回数を軽減させることができる。さらに、検出窓SWの中心位置Pが外側に一段階移動するごとに、検出窓SWの中心位置Pの周方向に関する位置を15度ずつずらすことができるため、漏れのない顔検出を実現することができる。
【0038】
なお、以上においては、本発明の画像処理方法が、コンピュータ上で実行されるものを例示したが、例えばプリンタやデジタルスチルカメラやスキャナ等の画像機器にて実行されてもよい。プリンタにて本発明の画像処理方法を行えば、印刷の際に理想的な顔画像に近づく画像処理を実行することができる。むろん、プリンタは家庭用のものに限られず、業務用の写真プリントシステムにおいても適用することができる。さらに、プリンタのように印刷用紙上に画像処理結果を出力するものに限らず、フォトビューワのようにディスプレイ上に画像処理結果を出力する装置においても本発明を実現することができる。また、デジタルスチルカメラにて本発明の画像処理方法を行えば、理想的な肌色の顔画像となった撮影結果を得ることができる。さらに、人物認証を行うATM(Automated Teller
Machine)等においても本発明を適用することができる。ニューラルネットワークNNを使用して顔判定を行うものに限られず、上述した特徴量の特徴量空間における種々の判別手法を用いることも可能である。例えば、サポートベクタマシンを利用してもよいし、判別境界面を異ならせた複数段の判定器をカスケード接続するようにしてもよい。
【図面の簡単な説明】
【0039】
【図1】画像処理装置のハードウェア構成を示すブロック図である。
【図2】画像処理装置のソフトウェア構成を示すブロック図である。
【図3】画像処理の流れを示すフローチャートである。
【図4】顔検出処理の流れを示すフローチャートである。
【図5】作業画像データの一例を示す図である。
【図6】サイズカウンタとサイズとの関係を示すグラフである。
【図7】検出窓と作業画像データの関係を示す図である。
【図8】回転角カウンタと検出窓の回転角との関係を示すグラフである。
【図9】検出窓の位置が移動する様子を示す図である。
【図10】顔判定処理の流れを示すフローチャートである。
【図11】窓画像データから特徴量を算出する様子を示す図である。
【図12】ニューラルネットワークの構造の一例を示す図である。
【図13】ニューラルネットワークを学習する様子を模式的に示す図である。
【図14】肌色調整処理の流れを示すフローチャートである。
【図15】変形例にかかる顔検出処理の流れを示すフローチャートである。
【図16】変形例にかかる径方向カウンタと周方向カウンタの関係を示す図である。
【図17】変形例において検出窓の位置が移動する様子を示す図である。
【符号の説明】
【0040】
10…コンピュータ、11…CPU、12…RAM、13…ROM、14…HDD、14a…プログラムデータ、14b…画像データ、15…GIF、16…VIF、17…IIF、18…バス、20…プリンタ、40…ディスプレイ、50a…キーボード、50b…マウス、PG1…OS、PG2…画像処理アプリケーション、PG2a…作業画像取得部、PG2b…検出窓設定部、PG2c…窓画像取得部、PG2d…特徴量算出部、PG2e…顔判定部、PG2f…画質調整部、PG3…プリンタドライバ。
【技術分野】
【0001】
本発明は、オブジェクト検出方法、オブジェクト検出装置、オブジェクト検出プログラムおよび印刷装置に関し、特に画像に含まれるオブジェクトを検出するオブジェクト検出方法、オブジェクト検出装置、オブジェクト検出プログラムおよび印刷装置に関する。
【背景技術】
【0002】
画像データに含まれる顔画像を検出し、その検出結果を利用して、印刷処理や補正処理や画像入力機器の動作制御が行われている。検出窓を画像データのあらゆる位置に移動させながら、検出窓において顔画像が存在するか否かを判定していくことにより、画像データにおける不特定の位置に存在する顔画像を検出することができる(特許文献1、参照。)かかる文献(図6、参照。)においては、画像データの隅から順に検出窓を移動させている。
【特許文献1】特開2007−48108号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
検出窓において顔画像が存在するか否かを判定するための処理負担は小さいものでないため、検出窓を画像データのあらゆる位置に移動させることにより、全体の検出処理の処理負担は大きくなるという問題があった。画像データのすべての位置(画素)について検出窓を設定すれば、検出漏れを防止することができるが、処理負担が著しく増大してしまう。逆に、画像データの一部の位置(画素)のみについて検出窓を設定すれば、処理負担を軽減することができるが、検出漏れが発生してしまう。
【0004】
本発明は、前記課題にかんがみてなされたもので、効率よく、かつ、漏れのないオブジェクトを検出するオブジェクト検出方法、オブジェクト検出装置、オブジェクト検出プログラムおよび印刷装置の提供を目的とする。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明は、少なくとも第1座標軸と第2座標軸についての位置情報を有する画像データが示す画像からオブジェクトを検出するにあたり、以下の手順を行う。まず、前記第1座標軸方向に関して第1移動間隔ずつ周期的に検出窓を順次移動させ、前記第2座標軸方向に関して前記第1移動間隔と異なる第2移動間隔ずつ周期的に検出窓を順次移動させる。また、前記検出窓が各位置に移動するごとに当該検出窓内の画像について前記オブジェクトの存在の有無を判定する。すなわち、前記第1座標軸方向と前記第2座標軸方向のそれぞれに関して前記検出窓を移動させながら、当該検出窓についてオブジェクトが存在するか否かを判定していく。
【0006】
ここで、前記第1座標軸方向と前記第2座標軸方向のそれぞれに関して前記検出窓を移動させるにあたり、前記第1座標軸方向に関する移動間隔と、前記第2座標軸方向に関する移動間隔を異なる大きさとする。このようにすることにより、一方の座標軸方向については漏れのないオブジェクト検出を行うことができ、他方の座標軸方向については処理負担の少ないオブジェクト検出を行うことができる。すなわち、各方向に応じて最適な前記移動間隔を設定することにより、漏れがなく、かつ、効率のよいオブジェクト検出を行うことができる。なお、前記オブジェクトは、特定の画像的特徴を有するものであればよく、例えば人物・動物の顔や顔器官等を検出することができる。
【0007】
さらに、前記第2座標軸方向において互いに隣接する前記検出窓の移動位置同士は、前記第1座標軸方向において所定量だけずれるようにしてもよい。これにより、前記第2座標軸方向において互いに隣接する複数の前記検出窓の移動位置が、前記第1座標軸方向における同一位置に並ぶことが防止でき、漏れのないオブジェクト検出を行わせることができる。前記第1座標軸方向においてずれる量は、例えば前記第1移動間隔の半分の大きさとしてもよい。
【0008】
また、前記第1座標軸と前記第2座標軸として種々の座標軸系を適用することができる。例えば、前記第1座標軸方向と前記第2座標軸方向を、それぞれ前記画像データが示す画像の縦方向と横方向とするようにしてもよい。このようにすることにより、縦方向と横方向に異なる移動間隔を設定することができる。さらに、前記第1座標軸方向と前記第2座標軸方向を、前記画像データが示す画像の所定位置を中心とした円の径方向と周方向とするようにしてもよい。
【0009】
さらに、本発明の技術的思想は、具体的なオブジェクト検出方法にて具現化されるのみならず、当該方法をオブジェクト検出装置において具現化することもできる。すなわち、上述したオブジェクト検出方法が行う各工程に対応する手段を有するオブジェクト検出装置としても本発明を特定することができる。むろん、上述したオブジェクト検出装置がプログラムを読み込んで上述した各手段を実現する場合には、当該各手段に対応する機能を実行させるプログラムや当該プログラムを記録した各種記録媒体においても本発明の技術的思想が具現化できることは言うまでもない。なお、本発明のオブジェクト検出装置は、単一の装置のみならず、複数の装置によって分散して存在可能であることはいうまでもない。また、プリンタ等の印刷装置やデジタルスチルカメラ等の画像入力装置において本発明のオブジェクト検出方法を実現するようにしてもよい。
【発明を実施するための最良の形態】
【0010】
以下、下記の順序に従って本発明の実施形態を説明する。
1.画像処理装置の構成:
2.画像処理:
2−1.顔検出処理:
2−2.顔判定処理:
2−3.肌色調整および印刷処理:
3.変形例:
3−1.変形例1:
【0011】
1.画像処理装置の構成
図1は、本発明の一実施形態にかかる画像処理装置を具体的に実現するコンピュータの構成を示している。同図において、コンピュータ10はCPU11とRAM12とROM13とハードディスクドライブ(HDD)14と汎用インターフェイス(GIF)15とビデオインターフェイス(VIF)16と入力インターフェイス(IIF)17とバス18とから構成されている。バス18は、コンピュータ10を構成する各要素11〜17の間でのデータ通信を実現するものであり、図示しないチップセット等によって通信が制御されている。HDD14には、オペレーティングシステム(OS)を含む各種プログラムを実行するためのプログラムデータ14aが記憶されており、当該プログラムデータ14aをRAM12に展開しながらCPU11が当該プログラムデータ14aに準じた演算を実行する。
【0012】
また、HDD14には、デジタルスチルカメラやスキャナによって画像入力された画像データ14bが記憶されている。GIF15は、例えばUSB規格に準じたインターフェイスを提供するものであり、外部のプリンタ20をコンピュータ10に接続させている。VIF16はコンピュータ10を外部のディスプレイ40に接続し、ディスプレイ40に画像を表示するためのインターフェイスを提供する。IIF17はコンピュータ10を外部のキーボード50aとマウス50bに接続し、キーボード50aとマウス50bからの入力信号をコンピュータ10が取得するためのインターフェイスを提供する。
【0013】
図2は、コンピュータ10において実行されるプログラムのソフトウェア構成を示している。同図において、オペレーティングシステム(OS)PG1と画像処理アプリケーションPG2とプリンタドライバPG3が実行されている。OS PG1は各プログラム間のインターフェイスを提供し、プリンタドライバPG3はプリンタ20を制御するための処理を実行する。画像処理アプリケーションPG2は、作業画像取得部PG2aと検出窓設定部PG2bと窓画像取得部PG2cと特徴量算出部PG2dと顔判定部PG2eと画質調整部PG2fとから構成されている。画像処理アプリケーションPG2を構成する各モジュールPG2a〜PG2fが実行する処理の詳細については後述する画像処理の流れとともに説明する。
【0014】
2.画像処理
図3は、画像処理の全体の流れを示している。ステップS100では、作業画像取得部PG2aが所定のUI画面をディスプレイ40に表示させるとともに、キーボード50aとマウス50bから操作を受け付ける。それにより、HDD14等に記憶された複数の画像データ14bのなかからユーザーが印刷したい画像データ14bを取得する。作業画像取得部PG2aが画像データ14bの解像度を変換することにより、320画素×240画素(QVGA)の作業画像データWDを生成する。そして、ステップS200においては、検出窓設定部PG2bが顔検出処理を実行させ、作業画像データWDにおいて、順次、検出窓SWを設定する。検出窓SWが設定されるごとに、ステップS400において特徴量算出部PG2dと顔判定部PG2eが検出窓SWについての顔判定処理を実行させ、その判定結果を出力する。その判定結果に応じて、画質調整部PG2eが肌色調整処理をステップS500にて実行し、画質調整後の画像データ14bをプリンタドライバPG3に出力する。するとプリンタドライバPG3が印刷制御処理を実行し、プリンタ20にて画質調整後の画像データ14bを印刷させる。
【0015】
2−1.顔検出処理
図4は、顔検出処理の流れを示し、図5は作業画像データWDを示している。図5において、作業画像データWDに正方形状領域の検出窓(検出領域)SWが設定されており、顔検出処理によって検出窓設定部PG2bが検出窓SWを作業画像データWDにおいて隈無く移動させる。なお、作業画像データWDの長手方向をx軸(第1座標軸)とし、短手方向をy軸(第2座標軸)と表すものとし、x軸とy軸の原点は作業画像データWDの左上隅位置とする。検出窓SWを移動させる際に、検出窓SWのサイズと、検出窓SWの画像面内における回転角度を順次シフトさせる。以上のように検出窓SWをシフトさせるために、以下のパラメータを順次シフトさせる必要がある。
・検出窓SWのサイズのパラメータ:S
・検出窓SWの中心位置のパラメータ:P
・検出窓SWの回転角度のパラメータ:T
ステップS210においては、検出窓設定部PG2bが各カウンタns,nx,ny,ntをリセットする。各カウンタns,nx,ny,ntは、上述したパラメータS,P,Tを順にシフトさせるための整数値であり、リセットによって0とされる。ステップS220においては、サイズカウンタnsに1を加算する。
【0016】
図6は、サイズカウンタnsと検出窓SWのサイズSとの関係を示している。同図において、サイズカウンタnsの増加とともに、検出窓SWのサイズS(縦と横の長さ)が徐々に減少することが示されている。本実施例では、サイズカウンタnsとサイズSとが線形的な関係を有し、サイズカウンタnsが1〜15の間で1増加するごとに、検出窓SWのサイズS(縦および横の長さ)が12画素ずつ小さくなるようにしている。また、サイズカウンタnsが1のときの最大のサイズSが検出窓SWの短手の長さよりわずかに短い200画素となり、サイズカウンタnsが15のときの最小の検出窓SWのサイズSが20画素となる。なお、ここで示したサイズカウンタnsと検出窓SWのサイズSの関係は一例であり、これらが非線形の関係を有していたり、傾きや切片などを変更してもよい。次のステップS230,S240においては、検出窓SWの中心位置のパラメータPを設定するために、y方向カウンタnyとx方向カウンタnxにそれぞれ1を加算する。
【0017】
ステップS245では、y方向カウンタnyが奇数であるか偶数であるかを判定する。ここで、y方向カウンタnyが奇数である場合には、検出窓SWの中心位置Pのx,y座標を下記の(1)式によって算出する(ステップS250a)。
【数1】
上記の(1)式において、dx,dyは検出窓SWの中心位置Pの各方向への単位移動距離(画素数)を示す一定の移動間隔を表しており、移動間隔dx,dyと方向カウンタnx,nyをそれぞれ乗算することにより、検出窓SWの中心位置Pのx,y座標を算出する。移動間隔dx,dyは検出窓SWの縦および横の長さを示すサイズSに基づいて下記の(2)式によって算出される。
【数2】
上記の(2)式が示すように、移動間隔dx,dyは互いに異なる値となっており、px>pyとなっている。上記の(2)式によって移動間隔dy<1となる場合は、dy=1とする。なお、x方向カウンタnxが取り得る範囲は1〜320/dx(整数部分)とし、y方向カウンタnyは1〜240/dy(整数部分)とする。y方向カウンタnyが偶数である場合には、検出窓SWの中心位置Pのx,y座標を下記の(3)式によって算出する(ステップS250b)。
【0018】
【数3】
上記の(3)式によれば、y方向カウンタnyが偶数である場合は、y方向カウンタnyが奇数である場合よりも、検出窓SWの中心位置Pのx座標がx方向の移動間隔pxの半分だけ進んだ位置となる。ステップS250a,250bにおいては、それぞれ以上のようにして算出した中心位置Pを中心として、サイズSの検出窓SWを生成する。ステップS260においては、検出窓SWの一部が作業画像データWDの外側にはみ出ていないか否かを判定する。
【0019】
図7は、ステップS260における判定の様子を模式的に示している。同図に示すように、各カウンタns,nx,nyの変動によって検出窓SWの位置と大きさがシフトするため、あるカウンタns,nx,nyの組み合わせにおいては検出窓SWの一部が作業画像データWDの外側にはみ出ることとなる。このような場合に正常な顔検出を行うことができないとして、当該カウンタns,nx,nyで特定される検出窓SWについての顔検出処理をスキップさせる。一方、検出窓SWの全部が作業画像データWDの内側に入る場合には、ステップS270において検出窓設定部PG2bが検出窓SWの回転角度Tを設定するための回転角カウンタntに1を加算する。
【0020】
図8は、回転角カウンタntと検出窓SWの回転角Tとの関係を示している。同図に示すように回転角カウンタntが1のとき作業画像データWDの上方向を検出窓SWの上とし、回転角カウンタntが2のとき作業画像データWDの右方向を検出窓SWの上とし、回転角カウンタntが3のとき作業画像データWDの下方向を検出窓SWの上とし、回転角カウンタntが4のとき作業画像データWDの左方向を検出窓SWの上とする。すなわち、本実施形態では、回転角カウンタntが1増加するごとに検出窓SWを時計回りに90度ずつ回転させることとしている。なお、検出窓SWの回転角度は90度刻みであるものに限られず、例えば30度刻み等としてもよい。
【0021】
以上のようにして、ステップS260にてスキップされた場合を除いて、すべてのカウンタns,nx,ny,ntが設定できると検出窓SWの大きさと位置と回転角が検出窓設定部PG2bによって一意に特定されたこととなる。ステップS280においては、窓画像取得部PG2cが現在決定されている検出窓SWの内側の画像データを抽出し、窓画像データXDとして取得する。取得した窓画像データXDは、特徴量算出部PG2dに出力され、窓画像データXDについての顔判定処理をステップS400にて実行する。顔判定処理の詳細については後述する。
【0022】
窓画像データXDを特徴量算出部PG2dに出力すると、検出窓設定部PG2bがステップS290において、回転角カウンタnt=4であるか否かを判定する。すなわち、現在の検出窓SWのサイズSおよび中心位置Pにおいて4方向の回転角の設定が完了したか否かを判定する。回転角カウンタnt<4である場合には、ステップS270に戻り、回転角カウンタntに1を加算する。これにより、次回は90度時計回りに回転した検出窓SWを設定することができる。一方、回転角カウンタnt=4である場合にはステップS295において回転角カウンタntを0にリセットし、ステップS300においてx方向カウンタnx=320/dx(整数部分)であるか否かを判定する。すなわち、現在の検出窓SWのサイズSおよびy方向の位置におけるすべてのx方向の位置について検出窓SWの設定が完了したか否かを判定する。x方向カウンタnx<320/dx(整数部分)である場合には、ステップS240に戻り、x方向カウンタnxに1を加算する。これにより、次回はx方向の移動間隔px(6画素)だけ右側に進んだ中心位置Pに検出窓SWを設定することができる。
【0023】
一方、x方向カウンタnx=320/dx(整数部分)である場合にはステップS305においてx方向カウンタnxを0にリセットし、ステップS310においてy方向カウンタny=240/dy(整数部分)であるか否かを判定する。すなわち、現在の検出窓SWのサイズSにおいて、すべての中心位置Pについて検出窓SWの設定が完了したか否かを判定する。y方向カウンタny<240/dy(整数部分)である場合には、ステップS230に戻り、y方向カウンタnyに1を加算する。これにより、次回はy方向に1画素(移動間隔py)だけ進んだ中心位置Pに検出窓SWを設定することができる。一方、y方向カウンタny=240/dy(整数部分)である場合にはステップS315においてy方向カウンタnyを0にリセットし、ステップS320においてサイズカウンタns=15であるか否かを判定する。すなわち、すべてのサイズSについて検出窓SWの設定が完了したか否かを判定する。サイズカウンタns<15である場合には、ステップS220に戻り、サイズカウンタnsに1を加算する。これにより、次回は一回り小さいサイズSの検出窓SWを設定することができる。一方、サイズカウンタns=15である場合には、すべてのパラメータ(サイズSおよび位置Pおよび回転角T)の組み合わせについて検出窓SWの設定が完了したとして、処理を終了させる。
【0024】
以上説明した顔検出処理においては、ステップS260にてスキップされた場合を除いて、検出窓SWのサイズSと位置Pと回転角Tのいずれかが更新されるごとに、窓画像データXDが特徴量算出部PG2dに出力され、当該窓画像データXDについての顔判定処理がステップS400にて実行される。この顔判定処理においては、窓画像データXDに顔画像が存在するか否かが判定されるため、検出窓SWを設定したサイズSと位置Pと回転角Tにおいて顔画像の有無を判定していくことができる。
【0025】
図9は、本実施形態において検出窓SWの位置が移動する様子を示している。同図に示すように、作業画像データWDの左上隅から開始し、x方向カウンタnxの増加とともに検出窓SWの中心位置Pを右側に移動させて行くことができる。x方向カウンタnx=320/dx(整数部分)となるとき、検出窓SWの中心位置Pが作業画像データWDの右端に到達することとなる。右側に到達すると、x方向カウンタnxが0にリセットされるとともにy方向カウンタnyに1が加算されるため、検出窓SWの中心位置Pが左端の一段下の位置に移動することとなる。以上の移動を繰り返して実行する際に、y方向カウンタnyが奇数であるか偶数であるかによって、検出窓SWの中心位置Pがx方向にdx/2だけずれることとなる。このようにすることにより、後述する顔判定処理の回数を増加させることなく、検出窓SWの中心位置Pが移動させられる位置の疎密の差を緩和することができ、効率よく、かつ、漏れのない顔検出が可能となる。また、上記の(2)式によって、検出窓SWの中心位置Pのy方向に関する密度は、x方向に関する密度の5倍となる。このように、x方向とy方向とで検出窓SWの中心位置Pの密度を不均一とすることにより、x方向とy方向に関して判定特性(ロバスト性)が不均一な顔判定処理(ステップS400)に適した顔検出を実現することができる。
【0026】
2−2.顔判定処理
図10は、顔判定処理の流れを示している。ステップS410にて窓画像データXDを取得すると、次のステップS420において特徴量算出部PG2dが窓画像データXDから複数の特徴量を算出する。特徴量は、窓画像データXDに対して各種のフィルタを適用し、当該フィルタ内の輝度平均やエッジ量やコントラスト等の状態を示す特徴量(平均値や最大値や最小値や標準偏差等)を算出することにより得られる。なお、窓画像データXDは、検出窓SWのサイズSによって異なる大きさとなるが、ステップS410において予め一定の大きさに解像度変換される。
【0027】
図11は、窓画像データXDから特徴量を算出する様子を示している。同図において、窓画像データXDに対して多数のフィルタFTが用意されており、各フィルタFTを順次窓画像データXDに適用し、各フィルタFT内の画像について例えば12個の特徴量CA1〜CA12を順次算出する。特徴量CA1〜CA12が算出できると、ステップS430において、顔判定部PG2eが特徴量CA1〜CA12を予め用意されたニューラルネットワークNNに入力し、その出力として顔画像が存在する/しないの判定結果を算出する。なお、特徴量CAは、窓画像データXDが示す画像的特徴を指標化したものであればよく、必ずしもフィルタFTを使用する必要はない。
【0028】
図12は、ニューラルネットワークNNの構造の一例を示している。ニューラルネットワークNNは、前段層のユニットUの値の線形結合(添え字iは前段層のユニットUの識別番号。)によって後段層のユニットUの値が決定される基本構造を有している。さらに、線形結合によって得られた値をそのまま次の層のユニットUの値としてもよいが、線形結合によって得られた値を例えばハイパボリックタンジェント関数のような非線形関数によって変換して次の層のユニットUの値を決定することにより、非線形特性を与えてもよい。本実施例のニューラルネットワークNNは3層構造であり、ニューラルネットワークNNは、1層の中間層と、入力層と出力層とから構成されている。各特徴量CA1〜CA12がニューラルネットワークNNの入力層に入力可能となっており、出力層では出力値K(0〜1に正規化された値)を出力することが可能となっている。そして、出力値Kが0.5以上であれば窓画像データXDに顔画像が存在すると判定し、出力値Kが0.5未満であれば窓画像データXDに顔画像が存在しないと判定する(ステップS440)。このようなニューラルネットワークNNをHDD14に予め用意しておけば、顔画像が窓画像データXDに存在するか否かを特徴量CA1〜CA12に基づいて判定することができる。
【0029】
図13は、ニューラルネットワークNNを学習する様子を模式的に示している。本実施形態では、誤差逆伝搬(error back propagation)法によって学習を行うことにより、各ユニットUの数や、各ユニットU間における線形結合の際の重みwの大きさやバイアスbの値が最適化される。誤差逆伝搬法による学習においては、まず各ユニットU間における線形結合の際の重みwの大きさやバイアスbの値を適当な値に初期設定する。
【0030】
そして、顔画像が存在しているか否かが既知の学習用画像データについてステップS420と同様の手順で特徴量CA1〜CA12を算出し、当該特徴量CA1〜CA12を初期設定されたニューラルネットワークNNに入力し、その出力値Kを取得する。学習用画像データはできるだけ多く用意するべきであり、様々な状態の顔画像が検出できるように、種々の人種や性別や年齢等をカバーするように用意する必要がある。さらに、デジタルスチルカメラ等によって撮影された画像データ14bに含まれる顔画像は種々の方向に向いている可能性がある。そのため、種々の方向に向いた顔画像を含む学習用画像データを用意する。また、上下に顔を向けるより左右に顔を向けて撮影される可能性が高いため、左右に顔を向けて撮影された学習用画像データの方が多数用意される。
【0031】
本実施例において、顔画像が存在している学習用画像データについて出力値Kとして1が出力されるのが望ましく、顔画像が存在していない学習用画像データについて出力値Kとして0が出力されるのが望ましい。しかしながら、各ユニットU間における線形結合の際の重みwの大きさやバイアスbの値を適当な値に初期設定したに過ぎないため、実際の出力値Kと理想的な値との間には誤差が生じることとなる。このような誤差を極小化させる各ユニットUについての重みwやバイアスbを、勾配法等の数値最適化手法を用いて算出する。この誤差は、後段の層から前段の層に伝搬され、後段のユニットUについて重みwやバイアスbから順に最適化されていく。以上のようにして学習したニューラルネットワークNNによれば、窓画像データXDに顔画像が存在している場合の特徴量CA1〜CA12に対して1に近い出力値Kを得ることができ、窓画像データXDに顔画像が存在していない場合の特徴量CA1〜CA12に対して0に近い出力値Kを得ることができる。従って、適当な閾値0.5によって閾値判定を行うことにより、窓画像データXDに顔画像が存在しているか否かを判定することができる(ステップS440)。
【0032】
ステップS440において窓画像データXDについて顔画像が存在すると判定された場合、そのときの窓画像データXDが得られた検出窓SWのサイズSおよび位置Pおよび回転角TをRAM12に記憶させ(ステップS450)、リターンする。一方、ステップS430において窓画像データXDについて顔画像が存在しないと判定された場合、そのままリターンする。上述した顔検出処理によって窓画像データXDが特徴量算出部PG2dに順次出力されるため、その度にステップS410〜S440の処理を実行させる。これにより、図9に示すように順次移動される検出窓SWのそれぞれについて顔画像の存在の有無を判定していくことができる。
【0033】
2−3.肌色調整および印刷処理
図14は、画質調整部PG2eが実行する肌色調整処理の流れを示している。上述した顔検出処理のステップS320において、すべてのサイズSについて検出窓SWの設定が完了したか否かを判定されると、顔検出処理が終了するとともに、顔検出処理と同期して実行される顔判定処理も終了する。ステップS510においては、顔検出処理と顔判定処理の終了を検出し、調整対象の画像データ14bを取得する。ここで取得される画像データ14は、顔検出処理と顔判定処理の対象となった画像データ14bである。ステップS520においては、顔画像が存在すると判定された検出窓SWのサイズSおよび位置Pおよび回転角TをRAM12から読み出す。ステップS530においては、顔画像が存在すると判定された検出窓SWに対応する領域を画像データ14bにおいて特定する。検出窓SWのサイズSおよび位置PがRAM12から取得されているため、これを画像データ14bの画像サイズに換算することにより、検出窓SWに対応する領域を特定することができる。
【0034】
ステップS540においては、ステップS530にて特定した領域に含まれる肌色画素の色をサンプリングし、当該色に基づいて画像データ14bに対する色調調整のためのパラメータを設定する。ここでは、まずステップS540にて特定した領域に含まれる肌色画素を、各画素の色彩値(例えばRGB値やHSV値)に基づいて特定し、当該色彩値を肌色として好ましいものに補正するための調整パラメータを算出する。調整パラメータは、例えばカラーバランスやホワイトバランスや明るさを調整するためのパラメータが該当する。予め肌色として好ましい色彩値がHDD14に記憶されており、各肌色画素の色彩値が好ましい色彩値に近づくような調整パラメータが算出される。検出窓SWによって顔画像が存在する領域が予め特定されているため、顔画像の肌色画素に基づいて調整パラメータを得ることができる。なお、顔画像が存在すると判定された検出窓SWが複数検出された場合には、平均的な調整パラメータの算出を実行する。調整パラメータが算出できると、ステップS545において、当該調整パラメータに基づく各画素の色彩値の調整が実行される。以上のようにして、肌色調整が完了すると、ステップS550にて調整後の画像データ14bをプリンタドライバPG3に出力する。すると、プリンタドライバPG3は、画像データ14bに対して解像度変換処理と色変換処理とハーフトーン処理とラスタライズ処理を順次実行させ、プリンタ20に画質調整後の画像データ14bに対応する画像の印刷を実行させる。
【0035】
3−1.変形例1
図15は、本変形例にかかる顔検出処理の流れを示している。本変形例のステップS230,S240においては、前実施形態で使用したx方向カウンタnxとy方向カウンタnyの代わりに、径方向カウンタnrと周方向カウンタnaを検出窓SWの中心位置のパラメータPを設定するために使用する。
【0036】
図16は、検出窓SWの中心位置のパラメータPと、径方向カウンタnrと周方向カウンタnaの関係を示している。径方向カウンタnrは作業画像データWDの中心座標を原点とした径方向に関する検出窓SWの中心位置Pに対応付けられている。径方向カウンタnrは1〜6までの整数値をとる。中心位置Pの径方向に関する位置をrで表すと、位置rは径方向カウンタnrが1のとき0となり、径方向カウンタnrが6のとき最大値となる2次曲線(nr=1を頂点とし、下に凸の2次曲線。)で表されている。なお、位置rの最大値は、原点から検出窓SWの四隅までの距離よりもわずかに小さい大きさとされている。一方、周方向カウンタnaは1〜12までの整数値をとる。原点を水平方向に通過する直線(右側)と、原点と検出窓SWの中心位置Pを結ぶ直線がなす角をθで表すと、角θは周方向カウンタnaが1のとき0度となり、周方向カウンタnaが1増加するごとに反時計回りに30度回転(θ=30*na)する。なお、周方向カウンタnaは1〜12までの整数値をとるため、一周分(360度)だけ角θをシフトさせることができる。なお、径方向カウンタnr=1のときに限り、周方向カウンタnaの上限値を1とする。ステップS250では、以上の定義に基づいて、検出窓設定部PG2bが径方向カウンタnrと周方向カウンタnaから検出窓SWの中心の径方向に関する位置rと角度θを特定するとともに、径方向カウンタnrが奇数である場合(ステップS245)には、検出窓SWの中心位置Pのx,y座標を下記の(4)式によって算出する。
【数4】
一方、径方向カウンタnrが偶数である場合(ステップS245)には、検出窓SWの中心位置Pのx,y座標を下記の(5)式によって算出する。
【数5】
このようにすることにより、径方向カウンタnrが偶数である場合には、径方向カウンタnrが奇数である場合よりも周方向に15度進んだ位置に検出窓SWの中心位置Pを設定することができる。
【0037】
図17は、本変形例において検出窓SWの位置が移動する様子を示している。同図に示すように、作業画像データWDの中心から開始し、径方向カウンタnrの増加とともに検出窓SWの中心位置Pを外側に移動させて行くことができる。デジタルスチルカメラ等で撮影された多くの画像データ14b(作業画像データWD)においては、主たる被写体人物を全体画像の中央に構図されるため、処理の初期において顔画像を検出させることができる。例えば、後述する顔判定処理において所定人数までの顔画像が検出された時点で顔検出処理を終了させるようにした場合、より早期に処理を終了させることができ、処理負担を軽減させることができる。さらに、径方向カウンタnrに対応する径方向の位置rは、nr=1を頂点とし、下に凸の2次曲線で表されるため、作業画像データWDの中心付近においては検出窓SWの中心位置Pを高密度とし、作業画像データWDの中心から離れるほど中心位置Pを低密度とすることができる。このようにすることにより、顔画像が含まれる可能性の高い位置では細かく検出窓SWを移動させることができるとともに、顔画像が含まれる可能性の低い位置での顔判定処理の実行回数を軽減させることができる。さらに、検出窓SWの中心位置Pが外側に一段階移動するごとに、検出窓SWの中心位置Pの周方向に関する位置を15度ずつずらすことができるため、漏れのない顔検出を実現することができる。
【0038】
なお、以上においては、本発明の画像処理方法が、コンピュータ上で実行されるものを例示したが、例えばプリンタやデジタルスチルカメラやスキャナ等の画像機器にて実行されてもよい。プリンタにて本発明の画像処理方法を行えば、印刷の際に理想的な顔画像に近づく画像処理を実行することができる。むろん、プリンタは家庭用のものに限られず、業務用の写真プリントシステムにおいても適用することができる。さらに、プリンタのように印刷用紙上に画像処理結果を出力するものに限らず、フォトビューワのようにディスプレイ上に画像処理結果を出力する装置においても本発明を実現することができる。また、デジタルスチルカメラにて本発明の画像処理方法を行えば、理想的な肌色の顔画像となった撮影結果を得ることができる。さらに、人物認証を行うATM(Automated Teller
Machine)等においても本発明を適用することができる。ニューラルネットワークNNを使用して顔判定を行うものに限られず、上述した特徴量の特徴量空間における種々の判別手法を用いることも可能である。例えば、サポートベクタマシンを利用してもよいし、判別境界面を異ならせた複数段の判定器をカスケード接続するようにしてもよい。
【図面の簡単な説明】
【0039】
【図1】画像処理装置のハードウェア構成を示すブロック図である。
【図2】画像処理装置のソフトウェア構成を示すブロック図である。
【図3】画像処理の流れを示すフローチャートである。
【図4】顔検出処理の流れを示すフローチャートである。
【図5】作業画像データの一例を示す図である。
【図6】サイズカウンタとサイズとの関係を示すグラフである。
【図7】検出窓と作業画像データの関係を示す図である。
【図8】回転角カウンタと検出窓の回転角との関係を示すグラフである。
【図9】検出窓の位置が移動する様子を示す図である。
【図10】顔判定処理の流れを示すフローチャートである。
【図11】窓画像データから特徴量を算出する様子を示す図である。
【図12】ニューラルネットワークの構造の一例を示す図である。
【図13】ニューラルネットワークを学習する様子を模式的に示す図である。
【図14】肌色調整処理の流れを示すフローチャートである。
【図15】変形例にかかる顔検出処理の流れを示すフローチャートである。
【図16】変形例にかかる径方向カウンタと周方向カウンタの関係を示す図である。
【図17】変形例において検出窓の位置が移動する様子を示す図である。
【符号の説明】
【0040】
10…コンピュータ、11…CPU、12…RAM、13…ROM、14…HDD、14a…プログラムデータ、14b…画像データ、15…GIF、16…VIF、17…IIF、18…バス、20…プリンタ、40…ディスプレイ、50a…キーボード、50b…マウス、PG1…OS、PG2…画像処理アプリケーション、PG2a…作業画像取得部、PG2b…検出窓設定部、PG2c…窓画像取得部、PG2d…特徴量算出部、PG2e…顔判定部、PG2f…画質調整部、PG3…プリンタドライバ。
【特許請求の範囲】
【請求項1】
少なくとも第1座標軸と第2座標軸についての位置情報を有する画像データが示す画像からオブジェクトを検出するオブジェクト検出方法であって、
前記第1座標軸方向に関して第1移動間隔ずつ周期的に検出窓を順次移動させ、前記第2座標軸方向に関して前記第1移動間隔と異なる第2移動間隔ずつ周期的に検出窓を順次移動させ、
前記検出窓が各位置に移動するごとに当該検出窓内の画像について前記オブジェクトの存在の有無を判定することを特徴とするオブジェクト検出方法。
【請求項2】
前記第2座標軸方向において互いに隣接する前記検出窓の移動位置同士は、前記第1座標軸方向において所定量だけずれることを特徴とする請求項1に記載のオブジェクト検出方法。
【請求項3】
前記所定量は、前記第1移動間隔の半分の大きさであることを特徴とする請求項2に記載のオブジェクト検出方法。
【請求項4】
前記第1座標軸方向と前記第2座標軸方向は、前記画像データが示す画像の縦方向と横方向であることを特徴とする請求項1から請求項3のいずれか一項に記載のオブジェクト検出方法。
【請求項5】
前記第1座標軸方向と前記第2座標軸方向は、前記画像データが示す画像の所定位置を中心とした円の径方向と周方向であることを特徴とする請求項1から請求項3のいずれか一項に記載のオブジェクト検出方法。
【請求項6】
少なくとも第1座標軸と第2座標軸についての位置情報を有する画像データが示す画像からオブジェクトを検出するオブジェクト検出装置であって、
前記第1座標軸方向に関して第1移動間隔ずつ周期的に検出窓を順次移動させ、前記第2座標軸方向に関して前記第1移動間隔と異なる第2移動間隔ずつ周期的に検出窓を順次移動させる検出窓設定手段と、
前記検出窓が各位置に移動するごとに当該検出窓内の画像について前記オブジェクトの存在の有無を判定する判定手段とを具備することを特徴とするオブジェクト検出装置。
【請求項7】
少なくとも第1座標軸と第2座標軸についての位置情報を有する画像データが示す画像からオブジェクトを検出する機能をコンピュータに実行させるためのコンピュータ読み取り可能なオブジェクト検出プログラムであって、
前記第1座標軸方向に関して第1移動間隔ずつ周期的に検出窓を順次移動させ、前記第2座標軸方向に関して前記第1移動間隔と異なる第2移動間隔ずつ周期的に検出窓を順次移動させる検出窓設定機能と、
前記検出窓が各位置に移動するごとに当該検出窓内の画像について前記オブジェクトの存在の有無を判定する判定機能とをコンピュータに実行させることを特徴とするコンピュータ読み取り可能なオブジェクト検出プログラム。
【請求項8】
少なくとも第1座標軸と第2座標軸についての位置情報を有する画像データが示す画像を印刷する印刷装置であって、
前記第1座標軸方向に関して第1移動間隔ずつ周期的に検出窓を順次移動させ、前記第2座標軸方向に関して前記第1移動間隔と異なる第2移動間隔ずつ周期的に検出窓を順次移動させる検出窓設定手段と、
前記検出窓が各位置に移動するごとに当該検出窓内の画像について前記オブジェクトの存在の有無を判定する判定手段と、
前記判定に応じた画像処理を実行した前記画像データを印刷する印刷手段とを具備することを特徴とする印刷装置。
【請求項1】
少なくとも第1座標軸と第2座標軸についての位置情報を有する画像データが示す画像からオブジェクトを検出するオブジェクト検出方法であって、
前記第1座標軸方向に関して第1移動間隔ずつ周期的に検出窓を順次移動させ、前記第2座標軸方向に関して前記第1移動間隔と異なる第2移動間隔ずつ周期的に検出窓を順次移動させ、
前記検出窓が各位置に移動するごとに当該検出窓内の画像について前記オブジェクトの存在の有無を判定することを特徴とするオブジェクト検出方法。
【請求項2】
前記第2座標軸方向において互いに隣接する前記検出窓の移動位置同士は、前記第1座標軸方向において所定量だけずれることを特徴とする請求項1に記載のオブジェクト検出方法。
【請求項3】
前記所定量は、前記第1移動間隔の半分の大きさであることを特徴とする請求項2に記載のオブジェクト検出方法。
【請求項4】
前記第1座標軸方向と前記第2座標軸方向は、前記画像データが示す画像の縦方向と横方向であることを特徴とする請求項1から請求項3のいずれか一項に記載のオブジェクト検出方法。
【請求項5】
前記第1座標軸方向と前記第2座標軸方向は、前記画像データが示す画像の所定位置を中心とした円の径方向と周方向であることを特徴とする請求項1から請求項3のいずれか一項に記載のオブジェクト検出方法。
【請求項6】
少なくとも第1座標軸と第2座標軸についての位置情報を有する画像データが示す画像からオブジェクトを検出するオブジェクト検出装置であって、
前記第1座標軸方向に関して第1移動間隔ずつ周期的に検出窓を順次移動させ、前記第2座標軸方向に関して前記第1移動間隔と異なる第2移動間隔ずつ周期的に検出窓を順次移動させる検出窓設定手段と、
前記検出窓が各位置に移動するごとに当該検出窓内の画像について前記オブジェクトの存在の有無を判定する判定手段とを具備することを特徴とするオブジェクト検出装置。
【請求項7】
少なくとも第1座標軸と第2座標軸についての位置情報を有する画像データが示す画像からオブジェクトを検出する機能をコンピュータに実行させるためのコンピュータ読み取り可能なオブジェクト検出プログラムであって、
前記第1座標軸方向に関して第1移動間隔ずつ周期的に検出窓を順次移動させ、前記第2座標軸方向に関して前記第1移動間隔と異なる第2移動間隔ずつ周期的に検出窓を順次移動させる検出窓設定機能と、
前記検出窓が各位置に移動するごとに当該検出窓内の画像について前記オブジェクトの存在の有無を判定する判定機能とをコンピュータに実行させることを特徴とするコンピュータ読み取り可能なオブジェクト検出プログラム。
【請求項8】
少なくとも第1座標軸と第2座標軸についての位置情報を有する画像データが示す画像を印刷する印刷装置であって、
前記第1座標軸方向に関して第1移動間隔ずつ周期的に検出窓を順次移動させ、前記第2座標軸方向に関して前記第1移動間隔と異なる第2移動間隔ずつ周期的に検出窓を順次移動させる検出窓設定手段と、
前記検出窓が各位置に移動するごとに当該検出窓内の画像について前記オブジェクトの存在の有無を判定する判定手段と、
前記判定に応じた画像処理を実行した前記画像データを印刷する印刷手段とを具備することを特徴とする印刷装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2009−237633(P2009−237633A)
【公開日】平成21年10月15日(2009.10.15)
【国際特許分類】
【出願番号】特願2008−79363(P2008−79363)
【出願日】平成20年3月25日(2008.3.25)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
【公開日】平成21年10月15日(2009.10.15)
【国際特許分類】
【出願日】平成20年3月25日(2008.3.25)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】
[ Back to top ]