(本開示に至る経緯)
近年のオンライン化の進展に伴い、従来対面で行われていた本人確認をオンラインで行うことが増えている。例えば、金融機関のオンライン口座開設をはじめとしたeKYC(electronic Know Your Customer)の領域では、本人確認書類とセルフィとをオンラインで送信して本人確認を行う仕組みが提供されている。
また、近年では、指紋や顔等の人の部位を使った生体認証が普及しつつある。特に、顔認証技術は、ユーザに非接触で行え、特殊機能を有さないカメラで撮影した画像を用いて行えるため、利便性が高くまた導入が容易である。このため、オンラインでの本人確認の手段として用いることが注目されている。
しかしながら、顔認証技術は、利便性が高い故、他人の顔を含む画像を用いて当該他人になりすますことが容易であるという問題がある。このなりすましに対応するため、画像に含まれる人が生体であるかどうかを判定する生体判定技術が様々な企業により研究開発されている。例えば、顔認証用の画像を取得する際に、ユーザの顔と考えられる領域にドットパターン光を照射し、顔の凹凸を検出した場合に、ユーザが生体であると判定する技術が知られている。また、上記特許文献1乃至6に記載の生体判定技術が知られている。
しかし、上述した生体判定技術のうちの何れかを固定的に採用して生体判定を行うとする。この場合、悪意のあるユーザは、採用された生体判定技術によって生体であると判定される画像を予め用意し易く、ひいては、なりすましが発生しやすいという課題がある。
そこで、本発明者は、複数の生体判定技術を適切に用いることで、悪意のあるユーザが予め用意した画像を用いてなりすましを行うことを困難にする技術について鋭意検討し、以下に示す本開示の各態様に相当するに至った。
本開示の一態様に係る判定方法は、判定装置における判定方法であって、前記判定装置のコンピュータが、画像に含まれる人が生体であるか否かを判定する複数の生体判定処理の中から、2以上の生体判定処理を選択し、選択された前記2以上の生体判定処理を実行する順序を決定し、選択された前記2以上の生体判定処理のそれぞれを、前記決定された順序で実行し、選択された前記2以上の生体判定処理のそれぞれにおいて、(1)生体判定処理に必要な行動をユーザに提示する処理と、(2)前記提示された行動に応じて前記ユーザが行動した際の顔を含む顔画像を取得する処理と、(3)前記顔画像に含まれる顔の部位の特徴に基づき、前記ユーザが生体であるか否かを判定する処理とを行い、選択された前記2以上の生体判定処理のそれぞれから得られた判定結果が所定の条件を満たすか否かを判定し、前記判定結果が前記所定の条件を満たす場合、前記ユーザが生体であると判定し、前記判定結果が前記所定の条件を満たさない場合、前記ユーザが生体でないと判定する。
本構成によれば、複数の生体判定処理の中から2以上の生体判定処理が選択され、当該2以上の生体判定処理のそれぞれを実行する順序が決定され、当該決定された順序で当該2以上の生体判定処理のそれぞれが実行される。このため、ユーザが生体であるか否かの判定のために実行される生体判定処理の数、内容及び実行順序に応じて、生体判定を実行するパターンが指数関数的に増大する。
また、本構成では、各生体判定処理において、生体判定処理に必要な行動がユーザに提示され、当該提示された行動に応じてユーザが行動した際の顔を含む顔画像に含まれる顔の部位の特徴に基づき、ユーザが生体であるか否かが判定される。そして、各生体判定処理から得られた判定結果が所定の条件を満たすか否かによってユーザが生体であるか否かが判定される。
したがって、本構成は、悪意あるユーザが、各生体判定処理で提示される行動に応じた顔の部位の特徴を含む顔画像を予め用意することを、事実上不可能にすることができる。これにより、本構成は、予め用意された画像を用いたなりすましを困難にすることができる。
上記判定方法において、前記2以上の生体判定処理の選択では、前記複数の生体判定処理の中から、前記2以上の生体判定処理をランダムに選択してもよい。
本構成によれば、2以上の生体判定処理が、複数の生体判定処理の中からランダムに選択される。このため、本構成は、悪意のあるユーザが全ての生体判定処理において生体であると判定される顔画像を予め用意することを困難にすることができる。
上記判定方法において、選択された前記2以上の生体判定処理を実行する順序の決定では、選択された前記2以上の生体判定処理を実行する順序をランダムに決定してもよい。
本構成によれば、選択された2以上の生体判定処理を実行する順序がランダムに決定される。このため、本構成は、悪意のあるユーザが全ての生体判定処理において生体であると判定される顔画像を予め用意することを困難にすることができる。
上記判定方法において、前記複数の生体判定処理には、顔の向きを前記顔の部位の特徴とする生体判定処理、目の向きを前記顔の部位の特徴とする生体判定処理、目の開閉状態を前記顔の部位の特徴とする生体判定処理、口の開閉状態を前記顔の部位の特徴とする生体判定処理、及び眼鏡の着脱状態を前記顔の部位の特徴とする生体判定処理、が含まれてもよい。
本構成によれば、顔の向きを顔の部位の特徴とする生体判定処理、目の向きを顔の部位の特徴とする生体判定処理、目の開閉状態を顔の部位の特徴とする生体判定処理、口の開閉状態を顔の部位の特徴とする生体判定処理、及び眼鏡の着脱状態を顔の部位の特徴とする生体判定処理のうちの2以上の生体判定処理を実行して、予め用意された画像を用いたなりすましを困難にすることができる。
上記判定方法において、選択された前記2以上の生体判定処理のそれぞれでは、前記(1)乃至(3)の処理を複数回行い、各前記(1)の処理において前記ユーザに提示する行動をランダムに決定してもよい。
本構成によれば、ユーザが生体であるか否かの判定のために実行される生体判定処理の数、内容及び実行順序と各生体判定処理において提示される行動の数及び内容とに応じて、生体判定を実行するパターンが指数関数的に増大する。このため、悪意のあるユーザが、ユーザが生体であると判定される顔画像を予め用意することをより困難にすることができる。
上記判定方法において、前記2以上の生体判定処理の選択では、前記ユーザの状態を検出し、生体判定処理に必要な行動が、当該検出した前記ユーザの状態に適している生体判定処理を選択してもよい。
本構成によれば、ユーザの状態に適した行動を必要とする2以上の生体判定処理を選択することができる。
上記判定方法において、前記判定結果が前記所定の条件を満たすか否かの判定では、前記判定結果を数値化し、当該数値化した結果を生体判定処理毎に定められた係数で重み付け加算した結果が所定の数値条件を満たす場合に、前記判定結果が前記所定の条件を満たすと判定してもよい。
本構成によれば、生体判定処理毎に定められた係数で、各生体判定処理の判定結果を数値化したものが重み付け加算される。そして、当該重み付け加算した結果が所定の数値条件を満たす場合に、前記判定結果が所定の条件を満たすと判定される。このため、本構成は、ユーザが生体であるか否かの判定精度を向上させることができる。
上記判定方法において、前記コンピュータは、更に、前記ユーザの顔を含むユーザ画像を取得し、更に、前記ユーザ画像に人の顔を囲む外枠が含まれているか否かを判定し、前記ユーザ画像に前記外枠が含まれていると判定した場合、前記ユーザが生体でないと判定し、前記ユーザ画像に前記外枠が含まれていないと判定した場合、前記2以上の生体判定処理を選択する処理以降の処理を行ってもよい。
本構成によれば、取得したユーザ画像に人の顔を囲む外枠が含まれているか否かが判定される。これにより、本構成は、ユーザ画像に人の顔を含んだ写真又はディスプレイの外枠が含まれているか否かを判定することができる。
ユーザ画像に外枠が含まれていると判定された場合、ユーザが、他人の顔を含んだ写真又はディスプレイの画像を生体の判定に用いる意図があると考えられる。この場合、本構成は、ユーザが生体でないと判定することができる。一方、本構成では、ユーザ画像に外枠が含まれていないと判定された場合には、2以上の生体判定処理を選択する処理以降の処理が行われる。このため、上記判定方法と同様の作用効果が得られる。
上記判定方法において、前記ユーザ画像に前記外枠が含まれているか否かの判定では、前記ユーザ画像から前記ユーザの顔を含む顔領域を検出し、前記ユーザ画像に含まれる、垂直方向に延びるエッジのうち、前記顔領域の左端に最も接近した第一所定長以上の長さを有する第一のエッジと、前記顔領域の右端に最も接近した前記第一所定長以上の長さを有する第二のエッジと、を検出する縦線検出処理と、前記ユーザ画像に含まれる、水平方向に延びるエッジのうち、前記顔領域の上端に最も接近し、両端が前記第一のエッジ及び前記第二のエッジよりも前記顔領域側にある、第二所定長以上の長さを有する第三のエッジと、前記顔領域の下端に最も接近し、両端が前記第一のエッジ及び前記第二のエッジよりも前記顔領域側にある、前記第二所定長以上の長さを有する第四のエッジと、を検出する横線検出処理と、を実行し、前記縦線検出処理及び前記横線検出処理により検出されたエッジの数の合計が3以上である場合に、前記ユーザ画像に前記外枠が含まれていると判定してもよい。
本構成では、ユーザ画像からユーザの顔を含む顔領域が検出され、ユーザ画像に含まれる垂直方向に延びるエッジのうち、顔領域の左端及び右端のそれぞれに最も接近した所定長以上の長さを有する第一のエッジ及び第二のエッジを検出する縦線検出処理が実行される。これにより、人の顔を含む写真又はディスプレイの画像の外枠を構成する、垂直方向に延びる二本の枠線を検出することができる。
また、ユーザ画像に含まれる水平方向に延びるエッジのうち、顔領域の上端及び下端のそれぞれに最も接近し、両端が検出された第一のエッジ及び第二のエッジよりも顔領域側にある第三のエッジ及び第四のエッジを検出する横線検出処理と、が実行される。これにより、人の顔を含む写真又はディスプレイの画像の外枠を構成する、水平方向に延びる二本の枠線を検出することができる。
そして、本構成によれば、縦線検出処理及び横線検出処理により検出されたエッジの数の合計が3以上である場合に、ユーザ画像に外枠が含まれていると判定される。このため、本構成は、人の顔を含む、写真又はディスプレイを含むユーザ画像が取得され、当該ユーザ画像から四本の枠線が検出できた場合に、ユーザ画像に外枠が含まれていると判定することができる。また、本構成は、例えば撮影環境等が原因で、人の顔を含む写真又はディスプレイの外枠の一枠線を含まないユーザ画像が取得され、当該ユーザ画像から三本の枠線しか検出できない場合であっても、ユーザ画像に外枠が含まれていると判定することができる。
上記判定方法において、前記ユーザ画像に前記外枠が含まれているか否かの判定では、前記ユーザ画像から前記ユーザの顔を含む顔領域を検出し、前記顔領域の幅が所定の上限幅より大きい場合、又は、前記顔領域の高さが所定の上限高さより大きい場合、前記ユーザ画像に前記外枠が含まれていると判定してもよい。
悪意のあるユーザは、他人の顔を含む写真又はディスプレイの外枠が映りこまないように、当該写真又はディスプレイを撮像装置に接近させて撮影し、この撮影画像をユーザ画像として取得させる虞がある。この場合、ユーザ画像に含まれる顔領域の幅が上限幅より大きく、又は、顔領域の高さが上限高さより大きくなることがある。
しかし、本構成では、ユーザ画像から検出された顔領域の幅が上限幅より大きい場合、又は、当該顔領域の高さが上限高さより大きい場合、ユーザ画像に外枠が含まれていると判定され、ひいては、ユーザ画像に対応するユーザが生体でないと判定される。このため、本構成は、悪意のあるユーザが予め用意した上述のような画像を用いてなりすましを行うことを困難にすることができる。
上記判定方法において、前記ユーザ画像に前記外枠が含まれているか否かの判定では、前記ユーザ画像から前記ユーザの顔を含む顔領域を検出し、前記顔領域の上端が前記ユーザ画像の上端から所定の第一マージン内に存在する場合、又は、前記顔領域の下端が前記ユーザ画像の下端から所定の第二マージン内に存在する場合に、前記縦線検出処理において前記第一のエッジ及び前記第二のエッジを検出したとき、前記ユーザ画像に前記外枠が含まれていると判定してもよい。
悪意のあるユーザは、他人の顔を含む写真又はディスプレイの外枠をなるべく隠すために、当該他人の顔が撮影画像の上端又は下端付近に位置するように、当該写真又はディスプレイを撮影し、この撮影画像をユーザ画像として取得させる虞がある。この場合、当該写真又はディスプレイの外枠を構成する左右の枠線だけがユーザ画像に含まれることがある。
しかし、本構成では、ユーザ画像から検出された顔領域の上端がユーザ画像の上端から所定の第一マージン内に存在する場合、又は、顔領域の下端がユーザ画像の下端から所定の第二マージン内に存在する場合に、垂直方向に延びる第一のエッジ及び第二のエッジが検出されたときは、ユーザ画像に外枠が含まれていると判定される。この場合、本構成では、ユーザが生体でないと判定される。このため、本構成は、悪意のあるユーザが予め用意した上述のような画像を用いてなりすましを行うことを困難にすることができる。
上記判定方法において、前記ユーザ画像に前記外枠が含まれているか否かの判定では、前記顔領域の左端が前記ユーザ画像の左端から所定の第三マージン内に存在する又は前記顔領域の右端が前記ユーザ画像の右端から所定の第四マージン内に存在する場合、前記縦線検出処理において検出された前記第一のエッジ又は前記第二のエッジと、前記横線検出処理において検出された前記第三のエッジ又は前記第四のエッジと、が交差するときに、前記ユーザ画像に前記外枠が含まれていると判定してもよい。
悪意のあるユーザは、他人の顔を含む写真又はディスプレイの外枠をなるべく隠すために、当該他人の顔が撮影画像の左端又は右端付近に位置するように、当該写真又はディスプレイを撮影し、この撮影画像をユーザ画像として取得させる虞がある。この場合、当該写真又はディスプレイの外枠を構成する右部及び下部の枠線等、外枠を構成する二本のL字状に交差する枠線だけがユーザ画像に含まれることがある。
しかし、本構成では、ユーザ画像から検出された顔領域の左端がユーザ画像の左端から所定の第三マージン内に存在する又は顔領域の右端がユーザ画像の右端から所定の第四マージン内に存在するときに検出された、垂直方向に延びる第一のエッジ又は第二のエッジと水平方向に延びる第三のエッジ又は第四のエッジとが交差するときは、ユーザ画像に外枠が含まれていると判定される。この場合、本構成では、ユーザ画像に対応するユーザが生体でないと判定される。このため、本構成は、悪意のあるユーザが予め用意した上述のような画像を用いてなりすましを行うことを困難にすることができる。
本開示の別の一態様に係る判定装置は、画像に含まれる人が生体であるか否かを判定する複数の生体判定処理の中から、2以上の生体判定処理を選択し、選択された前記2以上の生体判定処理を実行する順序を決定する判定方法決定部と、選択された前記2以上の生体判定処理のそれぞれを、前記決定された順序で実行する実行部と、選択された前記2以上の生体判定処理のそれぞれにおいて、生体判定処理に必要な行動をユーザに提示する出力部と、前記提示された行動に応じて前記ユーザが行動した際の顔を含む顔画像を取得する顔画像取得部と、前記顔画像に含まれる顔の部位の特徴に基づき、前記ユーザが生体であるか否かを判定する第一判定部と、選択された前記2以上の生体判定処理のそれぞれから得られた判定結果が所定の条件を満たすか否かを判定し、前記判定結果が前記所定の条件を満たす場合、前記ユーザが生体であると判定し、前記判定結果が前記所定の条件を満たさない場合、前記ユーザが生体でないと判定する第二判定部と、を備える。
本開示の別の一態様に係る判定プログラムは、判定装置としてコンピュータを機能させる判定プログラムであって、前記コンピュータを、画像に含まれる人が生体であるか否かを判定する複数の生体判定処理の中から、2以上の生体判定処理を選択し、選択された前記2以上の生体判定処理を実行する順序を決定する判定方法決定部と、選択された前記2以上の生体判定処理のそれぞれを、前記決定された順序で実行する実行部と、選択された前記2以上の生体判定処理のそれぞれにおいて、生体判定処理に必要な行動をユーザに提示する出力部と、前記提示された行動に応じて前記ユーザが行動した際の顔を含む顔画像を取得する顔画像取得部と、前記顔画像に含まれる顔の部位の特徴に基づき、前記ユーザが生体であるか否かを判定する第一判定部と、選択された前記2以上の生体判定処理のそれぞれから得られた判定結果が所定の条件を満たすか否かを判定し、前記判定結果が前記所定の条件を満たす場合、前記ユーザが生体であると判定し、前記判定結果が前記所定の条件を満たさない場合、前記ユーザが生体でないと判定する第二判定部として、機能させる。
これらの構成によれば、上記判定方法と同様の作用効果が得られる。
本開示は、このような判定プログラムによって動作する判定システムとして実現することもできる。また、このようなコンピュータプログラムを、CD−ROM等のコンピュータ読取可能な非一時的な記録媒体あるいはインターネット等の通信ネットワークを介して流通させることができるのは、言うまでもない。
尚、以下で説明する実施の形態は、何れも本開示の一具体例を示すものである。以下の実施の形態で示される数値、形状、構成要素、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また全ての実施の形態において、各々の内容を組み合わせることもできる。
(実施の形態1)
図1は、本開示の実施の形態1における生体判定システム100の外観図である。生体判定システム100は、スマートフォン又はタブレット端末等の携帯端末装置により構成されている。但し、これは一例であり、生体判定システム100は、据え置き型のコンピュータ又はクラウドサーバとカメラとディスプレイとを適宜組み合わせて構成されてもよい。
生体判定システム100は、判定装置1、撮像装置2、及びディスプレイ3を含む。判定装置1は、撮像装置2により撮像された画像に含まれる人U1が生体であるか否かを判定する所謂生体判定を行う。
撮像装置2は、携帯端末装置に実装されたカメラで構成されている。撮像装置2は、所定のフレーム周期でカラーの可視光画像を撮像する。
ディスプレイ3は、携帯端末装置に実装された液晶表示装置又は有機EL(Electro Luminescence)表示装置等の表示装置で構成されている。ディスプレイ3は、判定装置1による、撮像装置2が撮像した画像に含まれる人U1が生体であるか否かの判定結果を表示する。
図2は、本開示の実施の形態1における生体判定システム100の全体構成の一例を示すブロック図である。判定装置1は、プロセッサ10(コンピュータ)、メモリ20、センサ30、操作部40及び通信部50を含む。プロセッサ10は、例えばCPU(Central Processing Unit)で構成されている。プロセッサ10は、受付部11、判定方法決定部12、実行部13、出力部14、顔画像取得部15、第一判定部16及び第二判定部17を含む。受付部11〜第二判定部17は、例えばプロセッサ10が生体判定プログラム(判定プログラム)を実行することで実現される。
メモリ20は、ROM(Read Only Memory)等の不揮発性メモリ及びRAM(Random Access Memory)等の揮発性メモリで構成され、プロセッサ10が制御に用いる各種情報を記憶する。
センサ30は、人感センサ又はイメージセンサ等で構成され、当該センサ30から所定の近距離内に人物が存在することを検出する。操作部40は、タッチパネル等で構成され、ユーザによる判定装置1の各種操作に用いられる。通信部50は、Ethernet(登録商標)等の任意の通信方式に対応した通信回路を用いて構成され、外部装置と通信を行う。
受付部11は、生体判定の実行指示の入力を受け付ける。具体的には、受付部11は、センサ30から人物を検出したことを示す検出信号が入力された場合に、生体判定の実行指示の入力を受け付ける。又は、ユーザが操作部40を操作したことで、生体判定の実行指示を示す情報が入力された場合に、受付部11は、生体判定の実行指示の入力を受け付ける。又は、受付部11は、外部装置から通信部50を介して生体判定の実行要求を示す情報が入力された場合、若しくは、プロセッサ10によって実行中のアプリケーションプログラムから、生体判定の実行指示を示す情報が入力された場合に、生体判定の実行指示の入力を受け付ける。尚、生体判定の実行指示の入力方法は、これに限らない。
判定方法決定部12は、画像に含まれる人が生体であるか否かを判定する複数の生体判定処理の中から、2以上の生体判定処理を選択し、選択された前記2以上の生体判定処理を実行する順序を決定する。
具体的には、判定方法決定部12は、複数の生体判定処理の中から、2以上の生体判定処理をランダムに選択する。複数の生体判定処理には、顔の向きに基づく生体判定処理、目の向きに基づく生体判定処理、目の開閉状態に基づく生体判定処理、口の開閉状態に基づく生体判定処理及び眼鏡の着脱状態に基づく生体判定処理が含まれる。これらの複数の生体判定処理を実装した制御プログラムはメモリ20に記憶されている。
尚、複数の生体判定処理には、その他の顔の部位の特徴に基づく生体判定処理が含まれてもよい。また、判定方法決定部12による2以上の生体判定処理の選択方法は、上記に限らない。例えば、判定方法決定部12は、複数の生体判定処理のそれぞれを実装した制御プログラムがメモリ20に記憶された順に、所定数の生体判定処理を選択する等の方法で、複数の生体判定処理の中から2以上の生体判定処理を規則的に選択してもよい。
判定方法決定部12は、選択した2以上の生体判定処理を実行する順序をランダムに決定する。尚、判定方法決定部12は、これに限らず、例えば、前記2以上の生体判定処理のそれぞれを実装した制御プログラムがメモリ20に記憶された順序を、前記2以上の生体判定処理を実行する順序として決定する等の方法で、前記2以上の生体判定処理を実行する順序を規則的に決定してもよい。
実行部13は、判定方法決定部12によって選択された2以上の生体判定処理のそれぞれを、判定方法決定部12によって決定された順序で実行する。
出力部14は、実行部13により実行される各生体判定処理において、各生体判定処理に必要な行動を示す情報(以降、行動情報)をユーザに提示する。具体的には、出力部14は、行動情報をディスプレイ3に表示することによって、当該行動情報をユーザに提示する。尚、出力部14は、これに限らず、判定装置1に設けられたスピーカ(不図示)に、行動情報を示す音声を出力させることで、当該行動情報をユーザに提示してもよい。
顔画像取得部15は、実行部13により実行される各生体判定処理において、出力部14によって提示された行動情報に応じてユーザが行動した際の顔を含む顔画像を取得する。具体的には、顔画像取得部15は、出力部14によって行動情報がユーザに提示された後、撮像装置2による画像の撮影を開始させ、撮像装置2によって撮影された人U1(図1)の顔を含む画像を顔画像として取得する。尚、顔画像取得部15は、所定のフレームレートで撮像される顔画像を順次に取得する。
第一判定部16は、顔画像取得部15によって取得された顔画像に含まれる顔の部位の特徴に基づき、ユーザが生体であるか否かを判定する。具体的には、上記複数の生体判定処理には、顔の向きを前記顔の部位の特徴とする生体判定処理、目の向きを前記顔の部位の特徴とする生体判定処理、口の開閉状態を前記顔の部位の特徴とする生体判定処理、及び眼鏡の着脱状態を前記顔の部位の特徴とする生体判定処理が含まれる。例えば、顔の向きを前記顔の部位の特徴とする生体判定処理では、第一判定部16は、顔画像取得部15によって取得された顔画像に含まれる顔の向きに基づき、ユーザが生体であるか否かを判定する。
第二判定部17は、判定方法決定部12によって選択された2以上の生体判定処理のそれぞれから得られた判定結果が、所定の条件を満たすか否かを判定する。第二判定部17は、前記2以上の生体判定処理のそれぞれから得られた判定結果が前記所定の条件を満たす場合、ユーザが生体であると判定する。第二判定部17は、前記2以上の生体判定処理のそれぞれから得られた判定結果が前記所定の条件を満たさない場合、ユーザが生体でないと判定する。
例えば、第二判定部17は、選択された前記2以上の生体判定処理から得られた全ての判定結果がユーザが生体であることを示す場合に、所定の条件を満たすと判定する。又は、第二判定部17は、選択された前記2以上の生体判定処理から得られた判定結果のうち、ユーザが生体であることを示す判定結果が所定数以上(例えば過半数)である場合に、所定の条件を満たすと判定するようにしてもよい。
次に、図2に示す判定装置1の処理について説明する。図3は、本開示の実施の形態1における判定装置1の処理の一例を示すフローチャートである。
ステップS100において、受付部11が生体判定の実行指示の入力を受け付けると、ステップS101において、判定方法決定部12は、複数の生体判定処理の中から、2以上の生体判定処理を選択し、選択した前記2以上の生体判定処理を実行する順序を決定する。
ステップS102において、実行部13は、ステップS101で選択された2以上の生体判定処理を決定された順序で順次実行する。各生体判定処理では、ステップS103〜ステップS105が行われる。
ステップS103では、出力部14は、実行中の生体判定処理に必要な行動を示す行動情報をディスプレイ3に表示する。これにより、行動情報がユーザに提示される。ステップS104では、顔画像取得部15は、ステップS103で提示された行動情報に応じて、ユーザが行動した際の顔を含む顔画像を撮像装置2から取得する。ステップS105では、第一判定部16は、顔画像取得部15によって取得された顔画像に含まれる、実行中の生体判定処理に応じた顔の部位の特徴に基づき、ユーザが生体であるか否かを判定する。
ステップS106では、実行部13は、ステップS101で選択された2以上の生体判定処理の全てが終了したか否かを判定する。ステップS106で、ステップS101で選択された2以上の生体判定処理の全てが終了していないと判定された場合(ステップS106でNO)、ステップS102以降の処理が行われる。これにより、次の順序の生体判定処理が実行される。ステップS106で、ステップS101で選択された2以上の生体判定処理の全てが終了したと判定された場合(ステップS106でYES)、ステップS107が行われる。
ステップS107では、第二判定部17は、ステップS101で選択された2以上の生体判定処理のそれぞれから得られた判定結果が、所定の条件を満たすか否かを判定する。
第二判定部17は、ステップS107において、前記判定結果が前記所定の条件を満たすと判定した場合(ステップS107でYES)、ステップS108において、ユーザが生体であると判定する。一方、第二判定部17は、ステップS107において、前記判定結果が前記所定の条件を満たさないと判定した場合(ステップS107でNO)、ステップS109において、ユーザが生体でないと判定する。
ステップS108及びステップS109の後、ステップS110において、出力部14は、ステップS108又はステップS109の判定結果を示す情報を出力する。
具体的には、ステップS110において、出力部14は、例えば、ステップS108又はステップS109の判定結果を示すメッセージをディスプレイ3に表示する。更に、出力部14は、このとき、ステップS108又はステップS109の判定結果を示す音声を不図示のスピーカに出力させてもよい。
また、ステップS100において、外部装置から通信部50を介して生体判定の実行要求を示す情報が入力されたことによって、生体判定の実行指示の入力が受け付けられたとする。この場合、出力部14は、ステップS108又はステップS109の判定結果を示す情報を、通信部50を介して外部装置に返信してもよい。
又は、ステップS100において、プロセッサ10によって実行中のアプリケーションプログラムから、生体判定の実行指示を示す情報が入力されたことによって、生体判定の実行指示の入力が受け付けられたとする。この場合、出力部14は、ステップS108又はステップS109の判定結果を示す情報を、実行中のアプリケーションプログラムにリターンしてもよい。
このように、実施の形態1における判定装置1によれば、ユーザが生体であるか否かの判定のために実行される生体判定処理の数、内容及び実行順序に応じて、生体判定を実行するパターンが指数関数的に増大する。これにより、悪意あるユーザが、全てのパターンにおいて、ユーザが生体であると判定されるような他人の顔画像を予め用意することを事実上不可能にすることができ、ひいては、予め用意された画像を用いたなりすましを困難にすることができる。
以下では、実行部13によって実行され得る、複数の生体判定処理のそれぞれについて詳述する。本実施の形態では、複数の生体判定処理として、顔の向きに基づく生体判定処理、目の向きに基づく生体判定処理、目の開閉状態に基づく生体判定処理、口の開閉状態に基づく生体判定処理及び眼鏡の着脱状態に基づく生体判定処理について詳述する。
(顔の向きに基づく生体判定処理)
以下、顔の向きに基づく生体判定処理について詳述する。図4は、顔の向きに基づく生体判定処理の一例を示すフローチャートである。顔の向きに基づく生体判定処理が実行されると、先ず、出力部14は、図3に示すステップS103に対応するステップS201を行う。ステップS201では、出力部14は、当該生体判定処理に必要な行動として、顔の向きを指示する行動情報をディスプレイ3に表示する。
具体的には、ステップS201において、出力部14は、顔の向きを上下左右の何れか一方向に向けるように指示する行動情報をディスプレイ3に表示する。尚、出力部14は、行動情報において指示する上下左右の何れか一方向をランダムに決定する。ただし、これに限らず、出力部14は、行動情報において指示する上下左右の何れか一方向を、例えば上下左右の順に決定する等、所定の規則に従って規則的に決定してもよい。
次に、顔画像取得部15は、図3に示すステップS104に対応するステップS202を行う。ステップS202では、顔画像取得部15は、ユーザの顔を含む顔画像を撮像装置2から取得する。
次に、第一判定部16は、図3に示すステップS105に対応するステップS203以降の処理を行う。
ステップS203では、第一判定部16は、ステップS202で取得された顔画像から顔の中心座標を検出する。
具体的には、ステップS203において、第一判定部16は、先ず、顔画像から人物の顔を示す顔領域を検出する。顔領域は、例えば顔の全体を含む程度のサイズを持つ矩形状の領域である。詳しくは、第一判定部16は、顔領域を検出するために予め作成された分類器に顔画像を入力することで顔領域を検出する。この分類器は、例えば、ハール(Haar)状のカスケード分類器で構成される。
次に、第一判定部16は、検出した顔領域から顔の特徴点を検出する。顔の特徴点とは、例えば目尻、目頭、顔の輪郭、鼻筋、唇、及び眉毛などの顔を構成する複数の部位のそれぞれにおいて、特徴的な位置にある1又は複数の点である。特徴点はランドマークとも呼ばれる。第一判定部16は、例えば機械学習のフレームワークのモデルファイルを利用したランドマーク検出処理を実行することで、顔領域から顔の特徴点を検出する。
図8は、顔の特徴点9Xを示す図である。例えば、図8に示すように、顔領域80に対してランドマーク検出処理が適用されることにより、複数の特徴点9Xが検出される。図8の例では、ランドマーク検出処理によって検出される特徴点9Xのうち、鼻筋上に位置する例えば5個の特徴点9Xと、鼻の下側に位置する例えば2個の特徴点9Xと、顔の輪郭上に位置する例えば17個の特徴点9Xと、唇の上下左右端に位置する4個の特徴点95〜98が検出されている。更に、図8の例では、左右の目頭92に位置する2個の特徴点9Xと、左右の目尻93に位置する2個の特徴点9Xとが検出されている。
尚、特徴点9Xは、それぞれランドマーク点番号が付与されており、どのランドマーク点番号の特徴点が顔のどの部位を示すかは予め定められている。例えば、ランドマーク点番号が「2」の特徴点9Xは左の目尻93を示し、ランドマーク点番号が「0」の特徴点は左の目頭92を示すというように、各特徴点9Xにはランドマーク点番号が設定されている。そのため、第一判定部16は、ランドマーク点番号から特徴点9Xが顔のどの部位を示しているのかを特定できる。
そして、第一判定部16は、顔領域80から検出した顔の特徴点9Xのうち、鼻筋を示す複数の特徴点9Xにおいて垂直方向における中央の特徴点9Xの座標を、顔の中心座標として検出する。図8の例では、第一判定部16は、鼻筋を示す5個の特徴点9Xのうち、上から三番目の特徴点94の座標を顔の中心座標として検出する。尚、これに限らず、第一判定部16は、鼻筋の上端又は下端の特徴点9Xの座標を顔の中心座標として検出してもよい。
次に、ステップS204において、第一判定部16は、顔の向きの水平成分を算出する。以下、図8を参照して、ステップS204の内容を具体的に説明する。
第一判定部16は、顔領域80から検出された顔の特徴点9Xから縦方向の縦中心線と横方向の横中心線とを設定する。例えば、第一判定部16は、ステップS203で検出した顔の中心を示す特徴点94を通り、且つ顔領域80の縦の辺と平行な直線を縦中心線として設定する。また、第一判定部16は、特徴点94を通り、且つ顔領域80の横の辺と平行な直線を横中心線として設定する。
次に、第一判定部16は、横中心線を特徴点94で区画し、右区間と左区間との長さを求め、横中心線の長さを100%としたときの右区間と左区間との割合を求める。第一判定部16は、この割合に基づいて顔の向きの水平成分を算出する。例えば、右区間の割合をα1、左区間の割合をα2とし、右方を正とする。つまり、顔が左方を向いている場合、割合α2が割合α1より小さくなる。顔が右方を向いている場合、割合α1が割合α2より小さくなる。顔が正面を向いている場合、割合α2が割合α1と概ね等しくなる。概ね等しいとは、割合α2と割合α1との多少の相違を許容することを意味している。
次に、第一判定部16は、割合α1及び割合α2のうち小さい方の割合を50から減じる。例えば、割合α2が割合α1より小さければ、第一判定部16は、50−α2を求め、割合α1が割合α2より小さければ、第一判定部16は、50−α1を求める。次に、第一判定部16は、顔が右方を向いている場合は、右方が正であるため、50−α1を顔の向きの水平成分として算出する。一方、第一判定部16は、顔が左方を見ている場合、左方が負であるため、−(50−α2)を顔の向きの水平成分として算出する。
これにより、顔の向きの水平成分の値がプラスの方向に増大するにつれて、顔の向きはより右方を向いていることを示し、顔の向きの水平成分の値がマイナスの方向に増大するにつれて、顔の向きはより左方を向いていることを示す。また、顔の向きの水平成分が0の場合、顔の向きは正面方向であることを示す。
次に、ステップS205において、第一判定部16は、顔の向きの垂直成分を算出する。以下、図8を参照して、ステップS205の内容を具体的に説明する。
第一判定部16は、顔の中心を示す特徴点94を通り、且つ顔領域80の横の辺と平行な直線である横中心線を顔領域80に設定する。尚、横中心線は、特徴点94以外の鼻筋の特徴点9Xに設定されてもよい。この横中心線の設定は、ステップS204における横中心線の設定結果が利用されてもよい。
次に、第一判定部16は、顔領域80の縦辺を、縦辺と横中心線との交点で区画し、上区間と下区間との長さを求める。次に、第一判定部16は、前記縦辺の長さを100%としたときの上区間と下区間との割合を求め、この割合に基づいて顔の向きの垂直成分を求める。例えば、上区間の割合をα3、下区間の割合をα4とし、上方を正とする。つまり、顔は上方を向いている場合、割合α3が割合α4より小さくなる。顔が下方を向いている場合、割合α4が割合α3より小さくなる。顔が正面を向いている場合、割合α3が割合α4と概ね等しくなる。割合α3と割合α4とが概ね等しいとは、上述の割合α1と割合α2とが概ね等しいと同じ意味である。
次に、第一判定部16は、割合α3及び割合α4のうち小さい方の割合を50から減じる。例えば、割合α3が割合α4より小さければ、第一判定部16は、50−α3を求める。割合α4が割合α3より小さければ、第一判定部16は、50−α4を求める。次に、第一判定部16は、顔が上方を向いている場合は、上方が正であるため、50−α3を顔の向きの垂直成分として算出する。一方、第一判定部16は、顔が下方を見ている場合、上方が正であるため、−(50−α4)を顔の向きの垂直成分として算出する。
これにより、顔の向きの垂直成分の値がプラスの方向に増大するにつれて、顔の向きはより上方を向いていることを示し、顔の向きの垂直成分の値がマイナスの方向に増大するにつれて、顔の向きはより下方を向いていることを示す。また、顔の向きの垂直成分が0の場合、顔の向きは正面方向であることを示す。
次に、ステップS206において、第一判定部16は、ステップS204及びステップS205で算出した顔の向きの水平成分及び垂直成分が示す顔の向きが、ステップS201で提示された行動情報が示す顔の向きから所定範囲内であるか否かを判定する。
例えば、ステップS201において、顔の向きを右に向けるように指示する行動情報がディスプレイ3に表示されたとする。この場合、第一判定部16は、ステップS204で算出した顔の向きの水平成分の値が、プラスの所定範囲内の値(+Z1〜+Z2(Z2>Z1))である場合、ステップS201で提示された行動情報が示す顔の向きから所定範囲内であると判定する。
ステップS201において、顔の向きを左に向けるように指示する行動情報がディスプレイ3に表示されたとする。この場合、第一判定部16は、ステップS204で算出した顔の向きの水平成分の値がマイナスの所定範囲内の値(−Z1〜−Z2(Z2>Z1))である場合、ステップS201で提示された行動情報が示す顔の向きから所定範囲内であると判定する。
ステップS201において、顔の向きを正面に向けるように指示する行動情報がディスプレイ3に表示されたとする。この場合、第一判定部16は、ステップS204で算出した顔の向きの水平成分の値が、0を基準とするプラス及びマイナスの所定範囲内の値(−Z3〜+Z4(Z3、Z4>0))である場合、ステップS201で提示された行動情報が示す顔の向きから所定範囲内であると判定する。
これと同様に、ステップS201において、顔の向きを上に向けるように指示する行動情報がディスプレイ3に表示されたとする。この場合、第一判定部16は、ステップS205で算出した顔の向きの垂直成分の値が、プラスの所定範囲内の値(+Z5〜+Z6(Z6>Z5))である場合、ステップS201で提示された行動情報が示す顔の向きから所定範囲内であると判定する。
ステップS201において、顔の向きを下に向けるように指示する行動情報がディスプレイ3に表示されたとする。この場合、第一判定部16は、ステップS205で算出した顔の向きの垂直成分の値がマイナスの所定範囲内の値(−Z5〜−Z6(Z6>Z5))である場合、ステップS201で提示された行動情報が示す顔の向きから所定範囲内であると判定する。
ステップS201において、顔の向きを正面に向けるように指示する行動情報がディスプレイ3に表示されたとする。この場合、第一判定部16は、ステップS205で算出した顔の向きの垂直成分の値が、0を基準とするプラス及びマイナスの所定範囲内の値(−Z7〜+Z8(Z7、Z8>0))である場合、ステップS201で提示された行動情報が示す顔の向きから所定範囲内であると判定する。
尚、第一判定部16がステップS204で顔の向きの水平成分を算出する手法は、上述の手法に限らない。例えば、顔の向きの水平成分は、割合α1と割合α2とのうち大きい方の値から50を引いた値が採用されてもよい。また、顔の向きの水平成分は左方が正とされてもよい。また、第一判定部16が、ステップS205で顔の向きの垂直成分を算出する手法は、上述の手法に限らない。例えば、顔の向きの垂直成分は、割合α3及び割合α4のうち大きい方の割合から50を減じた値が採用されてもよい。また、顔の向きの垂直成分は下方が正にされてもよい。これに合わせて、ステップS206において、当該ステップS204及びステップS205で算出された顔の向きの水平成分及び垂直成分の値に基づく、ステップS201で提示された行動情報が示す顔の向きから所定範囲内であるか否かの判定方法が変更されてもよい。
第一判定部16は、ステップS206において、顔の向きがステップS201で提示された行動情報が示す顔の向きから所定範囲内であると判定したとする。この場合(ステップS206でYES)、ステップS207において、第一判定部16は、ユーザが生体であると判定し、当該判定結果を示す情報を第二判定部17へ出力し、顔の向きに基づく生体判定処理を終了する。
一方、第一判定部16は、ステップS206において、顔の向きがステップS201で提示された行動情報が示す顔の向きから所定範囲内ではないと判定した場合(ステップS206でNO)、ステップS208において、第一判定部16は、ユーザが生体ではないと判定し、当該判定結果を示す情報を第二判定部17へ出力し、顔の向きに基づく生体判定処理を終了する。
(目の向きに基づく生体判定処理)
以下、目の向きに基づく生体判定処理について詳述する。図5は、目の向きに基づく生体判定処理の一例を示すフローチャートである。目の向きに基づく生体判定処理が実行されると、先ず、出力部14は、図3に示すステップS103に対応するステップS301を行う。ステップS301では、出力部14は、当該生体判定処理に必要な行動として、目の向きを指示する行動情報をディスプレイ3に表示する。
具体的には、ステップS301において、出力部14は、顔を正面に向けたまま、目の向きを左右の何れか一方向に向けるように指示する行動情報をディスプレイ3に表示する。尚、出力部14は、行動情報において指示する左右の何れか一方向をランダムに決定する。ただし、これに限らず、出力部14は、行動情報において指示する左右の何れか一方向を、例えば左右の順に決定する等、所定の規則に従って規則的に決定してもよい。
次に、顔画像取得部15は、図3に示すステップS104に対応するステップS302を行う。ステップS202では、顔画像取得部15は、ユーザの顔を含む顔画像を撮像装置2から取得する。
次に、第一判定部16は、図3に示すステップS105に対応するステップS303以降の処理を行う。
ステップS303では、第一判定部16は、ステップS302で取得された顔画像から虹彩の中心座標を検出する。
具体的には、ステップS303において、第一判定部16は、ステップS203(図4)と同様、顔領域を検出する分類器に顔画像を入力し、顔領域80を検出する。第一判定部16は、検出した顔領域80を、目領域を検出する分類器に入力して目領域を検出する。目領域は、目の全域を含み、目の大きさに多少のマージンが加えられた矩形状の領域である。
次に、第一判定部16は、検出した目領域をグレースケール画像に変換する。グレースケール画像への変換処理としては、例えば目領域を構成する各画素の赤成分、緑成分、青成分のそれぞれの階調値の平均を算出する処理が採用できる。但し、これは一例であり、グレースケール画像への変換処理としては他の処理が採用されてもよい。
次に、第一判定部16は、グレースケール画像の目領域に対して二値化処理を実行し、目領域の二値画像を生成する。第一判定部16は、生成した目領域の二値画像をX方向に所定画素ずつ分離して複数の局所領域に分割する。X方向とは撮像装置2が撮像する画像の水平方向(横方向)を指す。例えば、第一判定部16は、二値画像を水平方向に均等に10分割する。これにより、二値画像は、Y方向を長手方向とする短冊状の10個の局所領域に分けられる。ここで、第一判定部16は、二値画像を10個の局所領域に分割したが、これは一例である。分割数は、2以上9以下の整数又は11以上の整数であってもよい。Y方向とは、撮像装置2が撮像する画像の垂直方向(縦方向)を指す。
次に、第一判定部16は、10個の局所領域のそれぞれの平均輝度値を算出する。
次に、第一判定部16は、虹彩推定中心位置のX座標を算出する。虹彩推定中心位置は、虹彩中心位置の推定位置であり、最終的に算出される虹彩中心位置とは異なる。二重まぶた、まつ毛の濃さ、及びつけまつ毛等の影響によりこれらの部位が白領域として大きく表れることがある。この場合、白目の部位が塗りつぶされる可能性がある。このような事態を回避するために、虹彩推定中心位置が算出される。
第一判定部16は、複数の局所領域のうち、平均輝度値が最大である局所領域のX方向の中点の座標を虹彩推定中心位置のX座標として算出する。尚、局所領域のX方向の幅によっては、局所領域のX方向の中点が虹彩推定中心位置のX座標として妥当でない場合もある。この場合、局所領域のX方向の左端又は右端が虹彩推定中心位置のX座標として算出されてもよい。
次に、第一判定部16は、虹彩推定中心位置のY座標を算出する。第一判定部16は、は、虹彩推定中心位置のX座標が存在する局所領域において、白画素の最上端点と、白画素の最下端点とを検出し、最上端点と最下端点との中点を虹彩推定中心位置のY座標として算出する。
尚、まつ毛及び化粧の影響で最上端点及び最下端点が左に隣接する局所領域又は右に隣接する局所領域に現れることもある。そこで、第一判定部16は、虹彩推定中心位置のX座標が存在する局所領域と、当該局所領域の左右に隣接する2つの局所領域とにおいて最上端点及び最下端点を算出し、算出した3個の最上端点を平均して平均最上端点を求めると共に算出した3個の最下端点を平均して平均最下端点を算出し、平均最上端点と平均最下端点との中点を虹彩推定中心位置のY座標として算出してもよい。
次に、第一判定部16は、二値画像に対して塗りつぶし処理を実行する。可視光画像においては、周囲の明るさ等により、角膜に外光又は背景等が映り込むことがある。この映り込みが大きい場合、黒色又は茶色である瞳内に白などの明るい色の領域が現れる。この場合、目の画像を二値化すると、瞳領域内に黒の島領域が現れ、虹彩情報を高精度に検出できなくなる。そこで、第一判定部16は、黒の島領域を塗りつぶす塗りつぶし処理を実行する。
塗りつぶし処理の詳細は下記の通りである。まず、第一判定部16は、二値画像に対して虹彩推定中心位置のX座標にY方向と平行な縦ラインを設定する。次に、第一判定部16は、縦ラインにおいて二値画像の上端側から最初に現れる白画素を上端画素として検出する。
次に、第一判定部16は、縦ラインにおいて二値画像の下端側から最初に現れる白画素を下端画素として検出する。次に、第一判定部16は、上端画素と下端画素間の距離が第一基準距離よりも大きいか否かを判定する。次に、第一判定部16は、上端画素及び下端画素間の距離が第一基準距離よりも大きいと判定した場合、縦ラインにおいて上端画素及び下端画素間にある黒画素を所定の条件を満たす黒画素として判定し、この黒画素を白画素に置換する。
一方、第一判定部16は、上端画素と下端画素間の距離が第一基準距離以下と判定した場合、縦ラインに対する置換は行わない。第一基準距離としては、例えば、想定される虹彩直径を基準に妥当な距離が採用される。
第一判定部16は、このような塗りつぶし処理を虹彩推定中心位置からX方向の左側に向けて左基準距離の範囲内の各縦ラインについて実行すると共に虹彩推定中心位置からX方向の右側に向けて右基準距離の範囲内の各縦ラインについて実行する。左基準距離範囲と右基準距離範囲との和は第二基準距離の一例である。左基準距離範囲と右基準距離範囲とは例えば同じ範囲である。第二基準距離としては、例えば、想定される虹彩直径よりも多少大きな距離が採用される。これにより、瞳領域に位置する縦ラインに対して重点的に塗りつぶし処理を適用することができる。
次に、第一判定部16は、瞳領域の左端画素及び右端画素をそれぞれ検出する。第一判定部16は、二値画像の白領域において、虹彩推定中心位置を起点として、X方向を左右に1画素ずつ輝度値の変化を調べる。そして、第一判定部16は、X方向の左側に最初に現れる黒画素を左端画素として検出すると共に、X方向の右側に最初に現れる黒画素を右端画素として検出する。
次に、第一判定部16は、左端画素及び右端画素の中間位置を虹彩中心位置のX座標として算出する。
次に、第一判定部16は、瞳領域の上端画素及び下端画素をそれぞれ検出する。第一判定部16は、二値画像の白領域において、虹彩中心位置のX座標を起点として、Y方向を上下に1画素ずつ輝度値の変化を調べる。そして、第一判定部16は、Y方向の上側に最初に現れる黒画素を上端画素として検出すると共に、Y方向の下側に最初に現れる黒画素を下端画素として検出する。
次に、第一判定部16は、上端画素及び下端画素の中間位置を虹彩中心位置のY座標として算出する。以上により、虹彩の中心座標が算出される。
ステップS304では、第一判定部16は、ステップS303において生成した目領域の二値画像から目尻及び目頭の位置を検出し、ステップS303で検出した虹彩の中心座標から目尻までの水平方向の距離及び虹彩の中心座標から目頭までの水平方向の距離を算出する。
具体的には、目領域の二値画像の枠は、白領域の外接矩形である。このため、第一判定部16は、二値画像において、白領域の左端のX座標を、二値画像の左端のX座標、つまり、左目の目尻又は右目の目頭の位置のX座標として算出する。また、第一判定部16は、白領域の右端のX座標を、二値画像の右端のX座標、つまり、左目の目頭又は右目の目尻の位置のX座標として算出する。
そして、第一判定部16は、ステップS303で検出した虹彩の中心座標のX座標と目尻のX座標との差分の絶対値を、虹彩の中心座標から目尻の位置までの水平方向の距離として算出する。また、第一判定部16は、ステップS303で検出した虹彩の中心座標のX座標と目頭のX座標との差分の絶対値を、虹彩の中心座標から目頭の位置までの水平方向の距離として算出する。これらの処理は、左右の目のそれぞれに対応する二値画像に対して実行される。
ステップS305では、第一判定部16は、目の水平方向の向きを算出する。具体的には、第一判定部16は、ステップS304で算出した目頭と虹彩の中心座標との水平方向の距離を第一距離D1とし、目尻と虹彩の中心座標との水平方向の距離を第二距離D2とし、目頭のX座標と目尻のX座標との距離を100%としたときの、第一距離D1の割合β1と第二距離D2の割合β2とを算出する。これらの処理は、左右の目のそれぞれに対応する二値画像に対して実行される。
目が左方を向いている場合、左右の目が左に寄り、左目は第二距離D2が短く、右目は第一距離D1が短くなる。目が右方を向いている場合、左右の目が右に寄り、左目は第二距離D2が長く、右目は第一距離D1が長くなる。
以上をふまえ、目が右に寄っている場合を正とする。第一判定部16は、例えば右目に着目し、割合β1が割合β2より小さければ目は左寄りと判定し、割合β2が割合β1より小さければ目は右寄りと判定する。左目に着目した場合、第一判定部16は、割合β2が割合β1より小さければ、目は左寄りと判定し、割合β1が割合β2より小さければ、目は右寄りと判定する。
第一判定部16は、目が左に寄っていると判定した場合、左目の第二距離D2の割合β2と右目の第一距離D1の割合β1との平均値を算出し、50からこの平均値を減じた値にマイナスを乗じた値を、目の水平方向の向きとして算出する。平均値を算出しているのは、目の向きは、左右の目で大差がないからである。50から平均値を引いているのは、目が顔の正面から左方又は右に寄るにつれて、目の水平方向の向きの値を大きくするためである。マイナスを乗じているのは右方を正にするためである。
第一判定部16は、目が右に寄っていると判定した場合、左目の第一距離D1の割合β1と右目の第二距離D2の割合β2との平均値を算出し、50からこの平均値を減じた値を、目の水平方向の向きとして算出する。
つまり、目の水平方向の向きの値がプラスの方向に増大するにつれて、顔の正面に対して目がより右方を向いていることを示し、目の水平方向の向きの値がマイナスの方向に増大するにつれて、顔の正面に対して目がより左方を向いていることを示す。また、目の水平方向の向きが0の場合、目が顔の正面を向いていることを示す。以上により、目の水平方向の向きが算出される。
次に、ステップS306において、第一判定部16は、ステップS305で算出した目の水平方向の向きが、ステップS301で提示された行動情報が示す目の向きから、所定範囲内であるか否かを判定する。
例えば、ステップS301において、目の向きを右に向けるように指示する行動情報がディスプレイ3に表示されたとする。この場合、第一判定部16は、ステップS305で算出した目の水平方向の向きの値が、プラスの所定範囲内の値(+Z1〜+Z2(Z2>Z1))である場合、ステップS301で提示された行動情報が示す目の向きから所定範囲内であると判定する。
ステップS301において、目の向きを左に向けるように指示する行動情報がディスプレイ3に表示されたとする。この場合、第一判定部16は、ステップS305で算出した目の水平方向の向きの値がマイナスの所定範囲内の値(−Z1〜−Z2(Z2>Z1))である場合、ステップS301で提示された行動情報が示す目の向きから所定範囲内であると判定する。
ステップS301において、目の向きを正面に向けるように指示する行動情報がディスプレイ3に表示されたとする。この場合、第一判定部16は、ステップS305で算出した目の水平方向の向きの値が、0を基準とするプラス及びマイナスの所定範囲内の値(−Z3〜+Z4(Z3、Z4>0))である場合、ステップS301で提示された行動情報が示す目の向きから所定範囲内であると判定する。
尚、目の水平方向の向きは、左方が正とされてもよい。また、第一判定部16がステップS305で目の水平成分の向きを算出する手法は、上述の手法に限らない。これに合わせて、ステップS306において、当該ステップS305で算出された目の水平方向の向きに基づく、ステップS301で提示された行動情報が示す目の向きから所定範囲内であるか否かの判定方法が変更されてもよい。
第一判定部16は、ステップS306において、目の水平方向の向きがステップS301で提示された行動情報が示す目の向きから所定範囲内であると判定したとする。この場合(ステップS306でYES)、ステップS307において、第一判定部16は、ユーザが生体であると判定し、当該判定結果を示す情報を第二判定部17へ出力し、目の向きに基づく生体判定処理を終了する。
一方、第一判定部16は、ステップS306において、目の水平方向の向きがステップS301で提示された行動情報が示す目の向きから所定範囲内ではないと判定した場合(ステップS306でNO)、ステップS308において、第一判定部16は、ユーザが生体ではないと判定し、当該判定結果を示す情報を第二判定部17へ出力し、目の向きに基づく生体判定処理を終了する。
(目の開閉状態に基づく生体判定処理)
以下、目の開閉状態に基づく生体判定処理について詳述する。図6は、目の開閉状態に基づく生体判定処理の一例を示すフローチャートである。目の開閉状態に基づく生体判定処理が実行されると、先ず、出力部14は、図3に示すステップS103に対応するステップS401を行う。ステップS401では、出力部14は、当該生体判定処理に必要な行動として、目の開閉を指示する行動情報をディスプレイ3に表示する。
具体的には、出力部14は、ステップS401において、両目を開くように指示する行動情報、両目を閉じるように指示する行動情報又は両目をまばだきを所定回数行うように指示する行動情報をディスプレイ3に表示する。又は、出力部14は、ステップS401において、右目及び左目のうちの一方を開き、他方を閉じるように指示する行動情報、右目又は左目のうちの一方の目だけまばだきを所定回数行うように指示する行動情報をディスプレイ3に表示する。
尚、出力部14は、行動情報において指示する目の開閉方法をランダムに決定する。ただし、これに限らず、出力部14は、行動情報において指示する目の開閉方法を、例えば上述の順に決定する等、所定の規則に従って規則的に決定してもよい。
次に、顔画像取得部15は、図3に示すステップS104に対応するステップS402を行う。ステップS402では、顔画像取得部15は、ユーザの顔を含む顔画像を撮像装置2から取得する。
次に、第一判定部16は、図3に示すステップS105に対応するステップS403以降の処理を行う。
ステップS403では、第一判定部16は、ステップS402で取得された顔画像から目の開閉状態を検出する。
具体的には、ステップS403において、第一判定部16は、先ず、図5に示すステップS303と同様、ステップS302で取得された顔画像から顔領域80を検出し、当該顔領域80から目領域を検出する。そして、第一判定部16は、検出した目領域をグレースケール画像に変換し、当該グレースケール画像の目領域に対して二値化処理を実行し、目領域の二値画像を生成する。
これにより、目が開かれている場合、目領域において、瞳、まつ毛及び白目の一部の暗い部位の画素が白色の画素で表され、白目の他部及び肌の明るい部位の画素が黒色の画素で表された二値画像が生成される。一方、目が閉じられている場合、目領域において、まつ毛及び上まぶたの縁の暗い部位の画素が白色の画素で表され、肌の明るい部位の画素が黒色の画素で表された二値画像が生成される。
次に、第一判定部16は、白色の画素で構成された一塊の白色領域内における上端画素と下端画素との間の縦方向の距離が最大となる最大高さを算出する。第一判定部16は、二値画像の白色領域に対し、X軸上の各X座標の白色画素の数を計数することにより、白色領域の各X座標の高さを算出する。尚、高さは、縦方向の白色画素の数で表される。
第一判定部16は、白色領域の左端から右端に向かってX座標を1画素ずつ順にずらしながら各X座標における高さを算出する。第一判定部16は、白色領域内において、高さが最大となるX座標とその高さを算出する。尚、この処理は、左右の目のそれぞれに対応する二値画像に対して行われる。
次に、第一判定部16は、白色領域の最大高さが、目領域の二値画像の高さに0.9を乗算した値よりも大きいか否かを判定する。
ここで、第一判定部16は、白色領域の最大高さが、目領域の二値画像の高さに0.9を乗算した値よりも大きいと判定した場合、目が開いている状態であると判定する。すなわち、目が開いている場合、目領域の二値画像の高さに対する白色領域の最大高さの割合は、1に近づく。そのため、白色領域の最大高さが、目領域の二値画像の高さに0.9を乗算した値よりも大きい場合、第一判定部16は、目領域内の目が開いている状態であると判定する。
一方、第一判定部16は、白色領域の最大高さが、目領域の二値画像の高さに0.9を乗算した値以下であると判定した場合、白色領域の最大高さが、目領域の二値画像の高さに0.6を乗算した値よりも小さいか否かを判定する。ここで、第一判定部16は、白色領域の最大高さが、目領域の二値画像の高さに0.6を乗算した値よりも小さいと判定した場合、目が閉じている状態であると判定する。すなわち、目が閉じている場合、白色領域の最大高さは、目領域の二値画像の高さの60%の長さを下回る。そのため、白色領域の最大高さが、目領域の二値画像の高さに0.6を乗算した値よりも小さい場合、第一判定部16は、目領域内の目が閉じている状態であると判定する。
一方、第一判定部16は、白色領域の最大高さが、目領域の二値画像の高さに0.6を乗算した値以上であると判定した場合、目の開閉状態の判定が不可能であると判定する。
尚、第一判定部16がステップS403で目の開閉状態を検出する手法は、上述の手法に限らない。例えば、第一判定部16は、白色領域の最大高さが目領域の二値画像の高さに0.6を乗算した値よりも小さい場合に、目が閉じている状態であると判定し、白色領域の最大高さが目領域の二値画像の高さに0.6を乗算した値以上である場合に、目が開いている状態であると判定してもよい。
次に、ステップS404において、第一判定部16は、ステップS403で検出した目の開閉状態が、ステップS401で提示された行動情報が示す目の開閉状態と同じであるか否かを判定する。
第一判定部16は、ステップS404において、ステップS403で検出した目の開閉状態が、ステップS401で提示された行動情報が示す目の開閉状態と同じであると判定したとする。この場合(ステップS404でYES)、ステップS405において、第一判定部16は、ユーザが生体であると判定し、当該判定結果を示す情報を第二判定部17へ出力し、目の開閉状態に基づく生体判定処理を終了する。
一方、第一判定部16は、ステップS404において、目の開閉状態がステップS401で提示された行動情報が示す目の開閉状態と同じではないと判定したとする。この場合(ステップS404でNO)、ステップS406において、第一判定部16は、ユーザが生体ではないと判定し、当該判定結果を示す情報を第二判定部17へ出力し、目の向きに基づく生体判定処理を終了する。
尚、第一判定部16は、ステップS404において、ステップS403で目の開閉状態の判定が不可能であると判定した場合も、ステップS406において、ユーザが生体ではないと判定し、当該判定結果を示す情報を第二判定部17へ出力し、目の向きに基づく生体判定処理を終了する。
尚、ステップS401において、まばだきを所定回数行うように指示する行動情報がディスプレイ3に表示されたとする。この場合、ステップS402において、顔画像取得部15は、撮像装置2から所定のフレーム周期で顔画像を随時取得する。第一判定部16は、顔画像が取得される度に、当該取得した顔画像を用いてステップS403を行った後、ステップS404を行う。
この場合、第一判定部16は、ステップS404において、所定の上限時間内に、各ステップS403における目の開閉状態の検出結果から、目が開いている状態から目が閉じている状態への変化が所定回数以上検出できた場合、目の開閉状態が、ステップS401で提示された行動情報が示す目の開閉状態と同じであると判定する。この場合、ステップS405において、第一判定部16は、ユーザが生体であると判定し、当該判定結果を示す情報を第二判定部17へ出力し、目の開閉状態に基づく生体判定処理を終了する。
一方、第一判定部16は、ステップS404において、所定の上限時間内に、各ステップS403における目の開閉状態の検出結果から、目が開いている状態から目が閉じている状態への変化が所定回数以上検出できなかった場合、目の開閉状態が、ステップS401で提示された行動情報が示す目の開閉状態と同じではないと判定する。この場合、ステップS406において、第一判定部16は、ユーザが生体ではないと判定し、当該判定結果を示す情報を第二判定部17へ出力し、目の開閉状態に基づく生体判定処理を終了する。
(口の開閉状態に基づく生体判定処理)
以下、口の開閉状態に基づく生体判定処理について詳述する。図7は、口の開閉状態に基づく生体判定処理の一例を示すフローチャートである。口の開閉状態に基づく生体判定処理が実行されると、先ず、出力部14は、図3に示すステップS103に対応するステップS501を行う。ステップS501では、出力部14は、当該生体判定処理に必要な行動として、口の開閉を指示する行動情報をディスプレイ3に表示する。
具体的には、出力部14は、ステップS501において、口を開くように指示する行動情報、口を閉じるように指示する行動情報又は口の開閉を所定回数行うように指示する行動情報をディスプレイ3に表示する。尚、出力部14は、行動情報において指示する口の開閉方法をランダムに決定する。ただし、これに限らず、出力部14は、行動情報において指示する口の開閉方法を、例えば上述の順に決定する等、所定の規則に従って規則的に決定してもよい。
次に、顔画像取得部15は、図3に示すステップS104に対応するステップS502を行う。ステップS502では、顔画像取得部15は、ユーザの顔を含む顔画像を撮像装置2から取得する。
次に、第一判定部16は、図3に示すステップS105に対応するステップS503以降の処理を行う。
ステップS503では、第一判定部16は、ステップS502で取得された顔画像から唇の特徴点を検出する。
具体的には、ステップS503において、第一判定部16は、先ず、図4に示すステップS203と同様、ステップS302で取得された顔画像から顔領域80を検出し、当該顔領域80に対してランドマーク検出処理を適用することで、唇の特徴点を検出する。図8は、顔領域80に対してランドマーク検出処理が適用されることにより、唇の上下左右端に位置する4個の特徴点95〜98が検出された例を示している。
ステップS504では、第一判定部16は、ステップS503で検出した唇の特徴点を用いて、口の開き度合を示す開口量を算出する。具体的には、第一判定部16は、ステップS503で検出した唇の上端95と下端96との間の距離を、ステップS503で検出した唇の左端97と右端98との間の距離で除算し、当該除算の結果を開口量として算出する。これにより、口の大きさの個人差によらずに、開口量が適切に算出される。
次に、ステップS505において、第一判定部16は、ステップS504で算出した開閉量に基づき、口の開閉状態が、ステップS501で提示された行動情報が示す口の開閉状態と同じであるか否かを判定する。
具体的には、ステップS505において、第一判定部16は、先ず、ステップS504で算出した開口量に基づいて口の開閉状態を判定する。詳述すると、第一判定部16は、ステップS504で算出した開口量が所定の閾値(例えば、0.3)以上であるか否かを判定する。第一判定部16は、ステップS504で算出した開閉量が所定の閾値以上である場合、口が開いている状態であると判定する。
一方、第一判定部16は、ステップS504で算出した開閉量が所定の閾値未満である場合、口が閉じている状態であると判定する。そして、第一判定部16は、ステップS504で算出した開口量に基づいて判定した口の開閉状態が、ステップS501で提示された行動情報が示す口の開閉状態と同じであるか否かを判定する。
尚、第一判定部16が、ステップS505で口の開閉状態を判定する手法は、上述の開口量を用いる手法に限らず、他の手法であってもよい。
第一判定部16は、ステップS505において、開口量に基づき判定した口の開閉状態が、ステップS501で提示された行動情報が示す口の開閉状態と同じであると判定したとする。この場合(ステップS505でYES)、ステップS506において、第一判定部16は、ユーザが生体であると判定し、当該判定結果を示す情報を第二判定部17へ出力し、口の開閉状態に基づく生体判定処理を終了する。
一方、第一判定部16は、ステップS505において、口の開閉状態が、ステップS501で提示された行動情報が示す口の開閉状態と同じではないと判定したとする。この場合(ステップS505でNO)、ステップS507において、第一判定部16は、ユーザが生体ではないと判定し、当該判定結果を示す情報を第二判定部17へ出力し、口の向きに基づく生体判定処理を終了する。
尚、ステップS501において、口の開閉を所定回数行うように指示する行動情報がディスプレイ3に表示された場合、ステップS502では、顔画像取得部15は、撮像装置2から所定のフレーム周期で顔画像を随時取得する。第一判定部16は、顔画像が取得される度に、当該取得した顔画像を用いてステップS503及びステップS504を行った後、ステップS505を行う。
この場合、第一判定部16は、ステップS505において、所定の上限時間が経過するまでの間、各ステップS504において算出した開口量に基づき口の開閉状態を判定する。そして、第一判定部16は、当該判定した結果から、口が開いている状態から口が閉じている状態への変化が所定回数以上検出できた場合、口の開閉状態が、ステップS501で提示された行動情報が示す口の開閉状態と同じであると判定する。この場合、ステップS506において、第一判定部16は、ユーザが生体であると判定し、当該判定結果を示す情報を第二判定部17へ出力し、口の開閉状態に基づく生体判定処理を終了する。
一方、第一判定部16は、ステップS504において、所定の上限時間が経過するまでの間、各ステップS504において算出した開口量に基づき口の開閉状態を判定し、当該判定した結果から、口が開いている状態から口が閉じている状態への変化が所定回数以上検出できなかったとする。この場合、第一判定部16は、口の開閉状態が、ステップS501で提示された行動情報が示す口の開閉状態と同じではないと判定する。この場合、ステップS507において、第一判定部16は、ユーザが生体ではないと判定し、当該判定結果を示す情報を第二判定部17へ出力し、口の開閉状態に基づく生体判定処理を終了する。
(眼鏡の着脱状態に基づく生体判定処理)
以下、眼鏡の着脱状態に基づく生体判定処理について詳述する。図9は、眼鏡の着脱状態に基づく生体判定処理の一例を示すフローチャートである。眼鏡の着脱状態に基づく生体判定処理が実行されると、先ず、出力部14は、図3に示すステップS103に対応するステップS601を行う。ステップS601では、出力部14は、当該生体判定処理に必要な行動として、眼鏡の着脱を指示する行動情報をディスプレイ3に表示する。
具体的には、出力部14は、ステップS601において、眼鏡を装着している状態となるように(眼鏡をかけるように)指示する行動情報、眼鏡を装着していない状態となるように(眼鏡をはずすように)指示する行動情報、又は眼鏡の着脱を所定回数行うように指示する行動情報をディスプレイ3に表示する。
尚、出力部14は、行動情報において指示する眼鏡の着脱方法をランダムに決定する。ただし、これに限らず、出力部14は、行動情報において指示する眼鏡の着脱方法を、例えば上述の順に決定する等、所定の規則に従って規則的に決定してもよい。
次に、顔画像取得部15は、図3に示すステップS104に対応するステップS602を行う。ステップS602では、顔画像取得部15は、ユーザの顔を含む顔画像を撮像装置2から取得する。
次に、第一判定部16は、図3に示すステップS105に対応するステップS603以降の処理を行う。
ステップS603では、第一判定部16は、ステップS602で取得された顔画像から眼鏡の着脱状態を検出する。
具体的には、ステップS603において、第一判定部16は、先ず、図5に示すステップS303と同様、ステップS302で取得された顔画像から顔領域80を検出する。
次に、第一判定部16は、検出された顔領域80を二値化して、階調値が閾値より小さい画素が第一輝度値で表され、階調値が閾値以上の画素が第二輝度値で表された二値画像を生成する。顔領域80がカラー画像で構成されている場合、第一判定部16は、顔領域80を例えば0〜255の階調値を有するグレースケール画像に変換し、変換したグレースケール画像に対して二値化処理を実行すればよい。
二値化処理としては、例えば大津の二値化処理が採用できる。第一輝度値は例えば白であり、第二輝度値は例えば黒である。この場合、暗い箇所は白で表され、明るい箇所は黒で表された二値画像が生成される。白の輝度値は例えば255で表され、黒の輝度値は例えば0で表される。
尚、第一判定部16は、カラー画像をグレースケール画像に変換する際に、一般的な変換処理を行う。グレースケール画像への一般的な変換処理としては、例えば、顔領域80を構成する各画素の赤成分、緑成分及び青成分のそれぞれの階調値の平均を算出する処理が採用できる。また、第一判定部16は、下記の式(1)を用いて、グレースケール画像の各画素の画素値Vを算出してもよい。
V=0.299・R+0.587・G+0.114・B・・・(1)
上記の式(1)において、Rは、カラー画像の各画素の赤色成分値を表し、Gは、カラー画像の各画素の緑色成分値を表し、Bは、カラー画像の各画素の青色成分値を表す。
次に、第一判定部16は、生成した二値画像から、眼鏡が存在していると推定される眼鏡推定領域を抽出する。具体的には、第一判定部16は、一般的な人間の顔の比率を鑑みて、顔領域80の上辺から3/10の位置を示すラインから6/10の位置を示すラインまでの間の領域を、眼鏡推定領域として抽出する。
次に、第一判定部16は、抽出した眼鏡推定領域にラベリング処理を実行する。ラベリング処理では、二値画像に対して、連続する複数の白色画素に同じ番号が割り振られる。このラベリング処理により、眼鏡推定領域から、連続した複数の白色画素で構成される複数の白色領域が検出される。このように、予め顔領域80の二値画像から、眼鏡推定領域の二値画像を抽出することにより、ラベリング処理を行う範囲が狭まり、ラベリング処理に要する時間を短縮することができる。
次に、第一判定部16は、抽出した眼鏡推定領域内において、複数の白色画素が連続する複数の白色領域のそれぞれの横幅(水平方向の長さ)を算出する。次に、第一判定部16は、横幅が最も長い白色領域の横幅が眼鏡推定領域の横幅の2/3以上であるか否かを判定する。
眼鏡のフレームを示す白色領域は、水平方向に連続した複数の白色画素で構成される。横幅が最も長い白色領域の横幅が眼鏡推定領域の横幅の2/3以上であるということは、眼鏡を装着している状態であると考えられる。このため、第一判定部16は、白色領域の長さが、眼鏡推定領域の横幅の2/3以上である場合、眼鏡を装着している状態と判定する。一方、第一判定部16は、横幅が最も長い白色領域の横幅が眼鏡推定領域の横幅の2/3以上ではない場合、眼鏡を装着していない状態であると判定する。
尚、第一判定部16がステップS603で眼鏡の着脱状態を検出する手法は、上述の手法に限らない。例えば、外光が眼鏡のフレームに差し込んでいたり、眼鏡のフレームに色が付いていたりする場合、眼鏡のフレームを示す白色領域が1つの島として検出されない虞がある。そこで、第一判定部16は、横幅が所定の長さ以上である白色領域が所定の数以上ある場合、眼鏡を装着している状態と判定してもよい。また、第一判定部16は、横幅が所定の長さ以上である白色領域が所定の数以上ない場合、眼鏡を装着していない状態と判定してもよい。
次に、ステップS604において、第一判定部16は、ステップS603で検出した眼鏡の着脱状態が、ステップS601で提示された行動情報が示す眼鏡の着脱状態と同じであるか否かを判定する。
第一判定部16は、ステップS604において、ステップS603で検出した眼鏡の着脱状態が、ステップS601で提示された行動情報が示す眼鏡の着脱状態と同じであると判定したとする。この場合(ステップS604でYES)、ステップS605において、第一判定部16は、ユーザが生体であると判定し、当該判定結果を示す情報を第二判定部17へ出力し、眼鏡の着脱状態に基づく生体判定処理を終了する。
一方、第一判定部16は、ステップS604において、眼鏡の着脱状態がステップS601で提示された行動情報が示す眼鏡の着脱状態と同じではないと判定したとする。この場合(ステップS604でNO)、ステップS606において、第一判定部16は、ユーザが生体ではないと判定し、当該判定結果を示す情報を第二判定部17へ出力し、眼鏡の向きに基づく生体判定処理を終了する。
尚、ステップS601において、眼鏡の着脱を所定回数行うように指示する行動情報がディスプレイ3に表示された場合、ステップS602では、顔画像取得部15は、撮像装置2から所定のフレーム周期で顔画像を随時取得する。第一判定部16は、顔画像が取得される度に、当該取得した顔画像を用いてステップS603を行った後、ステップS604を行う。
この場合、第一判定部16は、ステップS604において、所定の上限時間内に、各ステップS603における眼鏡の着脱状態の検出結果から、眼鏡を装着していない状態から眼鏡を装着している状態への変化が所定回数以上検出できた場合、眼鏡の着脱状態が、ステップS601で提示された行動情報が示す眼鏡の着脱状態と同じであると判定する。この場合、ステップS605において、第一判定部16は、ユーザが生体であると判定し、当該判定結果を示す情報を第二判定部17へ出力し、眼鏡の着脱状態に基づく生体判定処理を終了する。
一方、第一判定部16は、ステップS604において、所定の上限時間内に、各ステップS603における眼鏡の着脱状態の検出結果から、眼鏡を装着していない状態から眼鏡を装着している状態への変化が所定回数以上検出できなかった場合、眼鏡の着脱状態が、ステップS601で提示された行動情報が示す眼鏡の着脱状態と同じではないと判定する。この場合、ステップS606において、第一判定部16は、ユーザが生体ではないと判定し、当該判定結果を示す情報を第二判定部17へ出力し、眼鏡の開閉状態に基づく生体判定処理を終了する。
(実施の形態2)
顔画像に含まれる顔が、写真に含まれる顔、若しくは、スマートフォン又はタブレット等のディスプレイに映し出された顔である場合、当該顔画像に、写真又はディスプレイの外枠が含まれていることがある。そこで、実施の形態2の判定装置1は、図3に示すステップS101以降の処理を行う前に、撮像装置2からユーザの顔を含む顔画像を取得し、当該取得した顔画像に外枠が含まれているか否かを判定する。外枠が含まれている場合、判定装置1は、顔画像に含まれるユーザは生体でないと判定し、顔画像に外枠が含まれていない場合は、図3に示すステップS101以降の処理を行う。
これにより、実施の形態2の判定装置1は、顔画像の周囲に外枠が存在し、ユーザが生体でないことがほぼ明らかな場合、図3に示すステップS101以降の処理を行うことなく、なりすましを検出する。一方、実施の形態2の判定装置1は、顔画像の周囲に外枠が存在しない場合、実施の形態1と同様、図3に示すステップS101以降の処理を行うことにより、なりすましを困難にする。
以下、実施の形態2の判定装置1について詳述する。図10は、外枠判定処理の一例を示すフローチャートである。ステップS100において、受付部11が生体判定の実行指示の入力を受け付けると、ステップS701において、顔画像取得部15は、ユーザの顔を含む顔画像(以降、ユーザ画像)を撮像装置2から取得する。
ステップS702では、第二判定部17は、図5に示すステップS303と同様、ステップS701で取得されたユーザ画像から顔領域80を検出する。図11は、ユーザ画像110から検出される顔領域80の一例を示す図である。例えば、図11は、スマートフォンのディスプレイに投影された人物の顔を含む顔領域80が検出された例を示している。
次にステップS703では、第二判定部17は、縦線検出処理を行う。縦線検出処理とは、ユーザ画像110に含まれ得る、写真又はディスプレイの外枠を構成する二本の縦線を検出処理である。
具体的には、第二判定部17は、縦線検出処理において、先ず、ユーザ画像110の水平方向にのみ、一次微分であるSobelフィルタ又は二次微分であるラプラシアンフィルタ等を用いたフィルタリング処理を行うことにより、ユーザ画像110から水平方向エッジを検出する。水平方向エッジとは、輝度値が水平方向に隣接する画素と顕著に異なる画素群を示す。
図12は、縦線検出処理において検出される水平方向エッジの一例を示す図である。例えば、図12は、図11に示すユーザ画像110の水平方向にのみ、上述のフィルタリング処理を行うことで検出された水平方向エッジを白の画素で示し、当該ユーザ画像110におけるその他の画素を黒で示した画像120を示している。また、図12には、図11に示すユーザ画像110から検出された顔領域80が破線で示されている。
次に、第二判定部17は、検出した水平方向エッジのうち、垂直方向に延びる、顔領域80の左端に最も接近した第一所定長以上の長さを有する第一のエッジと、顔領域80の右端に最も接近した第一所定長以上の長さを有する第二のエッジと、を検出する。第一所定長としては、例えば、ユーザ画像110の垂直方向の長さを基準に妥当な長さが採用される。
図12の例では、垂直方向に延びる水平方向エッジとして、顔領域80の左端に最も接近した第一所定長以上の長さを有する水平方向エッジE1と、顔領域80の右端に最も接近した第一所定長以上の長さを有する垂直方向に延びる水平方向エッジE2と、が検出されている。このため、第二判定部17は、水平方向エッジE1を第一のエッジとして検出し、水平方向エッジE2を第一のエッジとして検出する。
次に、ステップS704において、第二判定部17は、横線検出処理を行う。横線検出処理とは、ユーザ画像110に含まれ得る、写真又はディスプレイの外枠を構成する二本の横線を検出処理である。
具体的には、横線検出処理において、第二判定部17は、先ず、ユーザ画像110の垂直方向にのみ、縦線検出処理と同様のフィルタリング処理を行うことにより、ユーザ画像110から垂直方向エッジを検出する。垂直方向エッジとは、輝度値が垂直方向に隣接する画素と顕著に異なる画素群を示す。
図13は、横線検出処理において検出される垂直方向エッジの一例を示す図である。例えば、図13は、図12に示す画像120において、図11に示すユーザ画像110に対して上述のフィルタリング処理を行うことで検出された垂直方向エッジを白の画素で示した画像130を示している。
次に、第二判定部17は、検出した垂直方向エッジのうち、水平方向に延びる、顔領域80の上端に最も接近し、両端が第一のエッジ及び第二のエッジよりも顔領域80側にある、第二所定長以上の長さを有する第三のエッジと、顔領域80の下端に最も接近し、両端が第一のエッジ及び第二のエッジよりも顔領域80側にある、第二所定長以上の長さを有する第四のエッジと、を検出する。第二所定長としては、例えば、ユーザ画像110の水平方向の長さを基準に妥当な長さが採用される。
図13の例では、水平方向に延びる垂直方向エッジとして、顔領域80の上端に最も接近し、両端が第一のエッジとして検出された水平方向エッジE1及び第二のエッジとして検出された水平方向エッジE2よりも顔領域80側にある、第二所定長以上の長さを有する垂直方向エッジE3が検出されている。しかし、顔領域80の下端に最も接近し、両端が第一のエッジ及び第二のエッジよりも顔領域80側にある、第二所定長以上の長さを有する垂直方向エッジは検出されていない。このため、第二判定部17は、垂直方向エッジE3を第三のエッジとして検出し、第四のエッジは検出しない。
次に、ステップS705において、第二判定部17は、縦線検出処理及び横線検出処理における検出結果に基づき、ユーザ画像110に外枠が含まれているか否かを判定する。
具体的には、ステップS705において、第二判定部17は、縦線検出処理及び前記横線検出処理により検出されたエッジの数の合計が3以上である場合に、ユーザ画像110に外枠が含まれていると判定する。上述した図13の例では、縦線検出処理及び横線検出処理により、第一、第二及び第三の三個のエッジが検出されているため、第二判定部17は、ユーザ画像110に外枠が含まれていると判定する。
ステップS705において、ユーザ画像110に外枠が含まれていると判定された場合(ステップS705でYES)、図3に示すステップS101以降の処理が行われず、図3に示すステップS109以降の処理が行われる。一方、ステップS705において、ユーザ画像110に外枠が含まれていないと判定された場合(ステップS705でNO)、図3に示すステップS101以降の処理が行われる。
尚、ユーザ画像110に写真又はディスプレイの外枠が含まれていると判定した場合にユーザが生体ではないと判定されることを知っている悪意のあるユーザは、外枠がユーザ画像110に含まれないように、写真又はディスプレイを撮像装置2に接近させる虞がある。
そこで、第二判定部17は、ステップS702において検出された顔領域80の高さが所定の上限高さより大きい場合、又は、顔領域80の幅が所定の上限幅より大きい場合、ステップS703及びステップS704を行わずに、ステップS705において、ユーザ画像110に外枠が含まれていると判定するようにしてもよい。
尚、顔領域80の高さは、顔領域80の垂直方向の長さを示す。上限高さは、例えば、ユーザ画像110の垂直方向の長さの90%以上に定めればよい。ただし、上限高さは、これに限定されない。顔領域80の幅は、顔領域80の水平方向の長さを示す。上限幅は、例えば、ユーザ画像110の水平方向の長さの90%以上に定めればよい。ただし、上限幅は、これに限定されない。
この構成によれば、悪意のあるユーザが、他人の顔を含む写真又はディスプレイの外枠がユーザ画像110に含まれないように、当該ディスプレイを撮像装置2に接近させたことで、ユーザ画像110から検出された顔領域80が上限幅又は上限高さを超える程度に大きくなった場合に、ユーザ画像110に外枠が含まれていると判定される。この場合、図3に示すステップS109以降の処理が行われ、ユーザが生体ではないと判定される。このため、他人の顔を含む写真又はディスプレイを用いたなりすましを意図したユーザが、当該写真又はディスプレイの外枠がユーザ画像110に含まれないように、当該写真又はディスプレイを撮像装置2に接近させることを抑制することができる。
また、図10に示すユーザ画像110に外枠が含まれるか否かの判定方法では、縦線検出処理及び横線検出処理によって3個以上のエッジが検出できなかった場合、ユーザ画像110に外枠が含まれていないと判定される。このため、悪意のあるユーザは、他人の顔を含む写真又はディスプレイの外枠を構成する二本以上の枠線がユーザ画像110に含まれないように、当該写真又はディスプレイを撮像装置2に撮影させる虞がある。
図14は、ユーザ画像110に含まれる顔領域80の一例を示す図である。具体的には、悪意のあるユーザは、例えば図14に示すように、他人の顔の上端がユーザ画像110の上端の近傍となるように、又は、他人の顔の下端がユーザ画像110の下端の近傍となるように、当該ディスプレイを撮像装置2に撮影させる虞がある。これらの場合、例えば図14に示すように、当該ディスプレイの外枠を構成する左右の枠線だけがユーザ画像110に含まれることがある。
そこで、ステップS705において、第二判定部17は、更に、ステップS702で検出した顔領域80の上端がユーザ画像110の上端から所定の第一マージン内に存在する場合、又は、顔領域80の下端がユーザ画像110の下端から所定の第二マージン内に存在する場合に、ステップS703の縦線検出処理において第一のエッジ及び第二のエッジを検出したとき、ユーザ画像110に外枠が含まれていると判定するようにしてもよい。
尚、第一マージン及び第二マージンは、例えばユーザ画像110の垂直方向の長さ(高さ)の10%以下に定めればよい。この構成によれば、ユーザ画像110に、他人の顔が表示されたディスプレイの左部及び右部の二本の枠線しか含まれていない場合であっても、ユーザ画像110に外枠が含まれていると判定することができる。
また、悪意のあるユーザが、他人の顔を含む写真又はディスプレイの外枠の二本以上の枠線がユーザ画像110に映りこまないようにするため、当該他人の顔が撮像装置2による撮影画像の左端又は右端付近に位置するように、当該写真又はディスプレイを撮像装置2に撮影させる虞がある。
図15は、ユーザ画像110に含まれる顔領域80の他の一例を示す図である。例えば、悪意のあるユーザが、他人の顔がユーザ画像110の右端付近に位置するように、当該他人の顔を含むディスプレイを撮像装置2に撮影させたとする。この場合、図15に示すように、当該ディスプレイの外枠を構成する、L字状に交差する左部及び下部の枠線だけがユーザ画像110に含まれる虞がある。また、この場合、当該ディスプレイの外枠を構成するL字状に交差する左部及び上部の枠線だけがユーザ画像110に含まれる虞もある。同様に、悪意のあるユーザが、他人の顔がユーザ画像110の左端付近に位置するように、当該他人の顔を含むディスプレイを撮像装置2に撮影させた場合、当該ディスプレイの外枠を構成する、L字状に交差する、左部及び上部又は下部の枠線だけがユーザ画像110に含まれる虞がある。
そこで、ステップS705において、第二判定部17は、更に、ステップS702において検出された顔領域80の左端がユーザ画像110の左端から所定の第三マージン内に存在する又は顔領域80の右端がユーザ画像110の右端から所定の第四マージン内に存在する場合、ステップS703の縦線検出処理において検出された第一のエッジ又は第二のエッジと、ステップS704の横線検出処理において検出された第三のエッジ又は第四のエッジと、が交差するときに、ユーザ画像110に外枠が含まれていると判定するようにしてもよい。
尚、第三マージン及び第四マージンは、例えば、ユーザ画像110の水平方向の長さ(幅)の1〜5%の長さに定めればよい。ただし、第三マージン及び第四マージンは、これに限定されない。
つまり、第二判定部17は、ステップS702において検出された顔領域80の左端がユーザ画像110の左端から所定の第三マージン内に存在する又は顔領域80の右端がユーザ画像110の右端から所定の第四マージン内に存在する場合に、ステップS703の縦線検出処理及びステップS704の横線検出処理によって、L字状に交差する二本のエッジが検出されたときは、ユーザ画像110に外枠が含まれていると判定するようにしてもよい。
この構成によれば、ユーザ画像110に、他人の顔が表示されたディスプレイの外枠を構成する左部及び下部の二本の枠線等のL字状に交差する二本の枠線しか含まれていない場合であっても、ユーザ画像110に外枠が含まれていると判定することができる。
本開示は、以下の変形例が採用できる。
(1)図3に示すステップS102において、ステップS101で選択された2以上の生体判定処理のそれぞれが実行された場合に、各生体判定処理において、ステップS103からステップS105に対応する処理を複数回行うようにしてもよい。そして、各ステップS103に対応する処理では、出力部14は、ユーザに提示する行動をランダムに決定してもよい。
例えば、ステップS102(図3)において、目の向きに基づく生体判定処理が実行された場合に、ステップS103(図3)に対応するステップS301(図5)と、ステップS104(図3)に対応するステップS302(図5)と、ステップS105(図3)に対応するステップS303(図5)以降の処理と、を実行することを、複数回行うようにしてもよい。また、各ステップS301(図5)では、出力部14は、ディスプレイ3に表示する行動情報において指示する目の向きをランダムに決定してもよい。
本構成によれば、ユーザが生体であるか否かの判定のために実行される生体判定処理の数、内容、及び実行順序と各生体判定処理において提示される行動の数及び内容とに応じて、生体判定を実行するパターンが指数関数的に増大する。このため、悪意のあるユーザが、ユーザが生体であると判定されるような顔画像を予め用意することをより困難にすることができる。
(2)図3に示すステップS101において、判定方法決定部12は、ユーザの状態を検出し、生体判定処理に必要な行動が当該検出したユーザの状態に適している生体判定処理を選択するようにしてもよい。
本構成は、例えば以下のようにして実現することができる。判定方法決定部12は、ステップS101において、先ず、撮像装置2にユーザの顔を含む顔画像を取得させる。そして、判定方法決定部12は、当該取得した顔画像を、顔領域を検出する分類器に入力して、顔領域80を検出する。
次に、判定方法決定部12は、眼鏡の領域を検出する分類器に当該検出した顔領域80を入力して、顔領域80に含まれる眼鏡の領域を検出する。当該検出器によって眼鏡の領域が検出されなかった場合、ユーザが裸眼の状態であるため、判定方法決定部12は、複数の生体判定処理のうち、眼鏡の着脱状態に基づく生体判定処理を除いた2以上の生体判定処理を選択する。
また、判定方法決定部12は、サングラスの領域を検出する分類器に上記検出した顔領域80を入力して、顔領域80に含まれるサングラスの領域を検出するようにしてもよい。当該検出器によってサングラスの領域が検出された場合、ユーザが目の向き及び目の開閉状態を検出できない状態であるため、判定方法決定部12は、複数の生体判定処理のうち、目の向き及び目の開閉状態に基づく生体判定処理を除いた2以上の生体判定処理を選択するようにしてもよい。
また、判定方法決定部12は、マスクの領域を検出するための分類器に上記検出した顔領域80を入力して、顔領域80に含まれるマスクの領域を検出するようにしてもよい。当該検出器によってマスクの領域が検出された場合、ユーザが口の開閉状態を検出できない状態であるため、判定方法決定部12は、複数の生体判定処理のうち、口の開閉状態に基づく生体判定処理を除いた2以上の生体判定処理を選択するようにしてもよい。
本構成によれば、ユーザが生体であるか否かの判定のために実行する生体判定処理として、ユーザの状態に適した行動を必要とする2以上の生体判定処理を選択することができる。
(3)図3に示すステップS107において、第二判定部17が、ステップS101で選択された2以上の各生体判定処理における第一判定部16による判定の結果を数値化し、当該数値化した結果を、生体判定処理毎に定められた係数で重み付け加算するようにしてもよい。そして、第二判定部17が、当該重み付け加算の結果が所定の数値条件を満たす場合に、第一判定部16による判定結果が所定の条件を満たすと判定するようにしてもよい。
本構成は、例えば以下のようにして実現することができる。第一判定部16は、ステップS101で選択された2以上の各生体判定処理において、ユーザが生体であると判定した場合、当該判定結果を1と数値化する。一方、第一判定部16は、ユーザが生体ではないと判定された場合、当該判定結果を0と数値化する。また、ステップS101で選択された2以上の生体判定処理の数の2/3を閾値とし、各生体判定処理の判定結果を重み付け加算した結果が当該閾値以上である場合に、数値条件を満たすものとする。
この場合、第二判定部17は、各生体判定処理に定められた係数を1として各生体判定処理の判定結果を重み付け加算し、当該重み付け加算の結果が閾値以上であれば、数値条件を満たすので、第一判定部16による判定結果が所定の条件を満たすと判定する。一方、第二判定部17は、上記重み付け加算の結果が閾値未満であれば、数値条件を満たさないので、第一判定部16による判定結果が所定の条件を満たさないと判定する。
又は、例えば、ステップS101で、顔の向きに基づく生体判定処理と、目の向きに基づく生体判定処理と、が選択されたとする。この場合に、図4に示すステップS201では、顔の向きを右に向けるように指示する行動情報がディスプレイ3に表示され、図5に示すステップS301では、目の向きを右に向けるように指示する行動情報がディスプレイ3に表示されたとする。また、顔の向きに基づく生体判定処理による生体判定の精度の方が目の向きに基づく生体判定処理よりも高いものとして、判定結果の重み付け加算に用いる顔の向きに基づく生体判定処理の係数を0.7とし、目の向きに基づく生体判定処理の係数を0.3とする。
この場合、第一判定部16は、図4に示すステップS206において、ステップS204及びステップS205で算出した顔の向きの水平成分の値を、顔の向きが真横且つ右向きであるときの顔の向きの水平成分の値で除算した結果を、数値化した判定結果として出力する。同様に、第一判定部16は、図5に示すステップS306において、ステップS305で算出した目の水平方向の向きの値を、目の向きが真横且つ右向きであるときの目の水平方向の向きの値で除算した結果を、数値化した判定結果として出力する。また、ステップS101で選択された生体判定処理の数の2/3を閾値とし、各生体判定処理の判定結果を重み付け加算した結果が当該閾値以上である場合に、数値条件を満たすものとする。
この場合、第二判定部17は、顔の向きに基づく生体判定処理の判定結果と係数0.7との積と目の向きに基づく生体判定処理の判定結果と係数0.3との積との和が示す、第一判定部16による判定結果の重み付け加算の結果が閾値以上であれば、数値条件を満たすので、第一判定部16による判定結果が所定の条件を満たすと判定する。一方、第二判定部17は、上記重み付け加算の結果が閾値未満であれば、数値条件を満たさないので、第一判定部16による判定結果が所定の条件を満たさないと判定する。
本構成によれば、上述の例のように、各生体判定処理の判定精度に応じて係数を調整する等して、ユーザが生体であるか否かの判定精度を向上させることができる。