[第1実施形態]
[ハードウェア構成]
図1Aは、撮像装置の外観の一例を示す概略断面図である。撮像装置100は、例えば、監視カメラやネットワークカメラとして実現できる。撮像装置100は、光学的に撮像した映像を電気的な画像信号に変換するカメラ装置101を、2軸(パン軸・チルト軸)駆動雲台上に備えている。カメラ装置101は、撮像センサや光学系を備える撮像部の一例である。撮像装置100は、カメラ装置101の撮像方向(光軸)102を、パン軸103とチルト軸104を回転軸として回転させることができる。ここでは、チルト軸104は、紙面に対して垂直な方向とする。
なお、本明細書において、垂直方向とは、一般に、実空間中における鉛直方向を意味する。また、水平方向は、鉛直方向に対して直角となる方向である。また、直立は、鉛直方向に対して並行となっていることを意味する。正立は、画像の上下方向(つまり左辺、右辺)に対して並行となっていることをいう。
図1Bは、撮像装置のコントローラ部の一例を示すブロック図である。物体検出装置として機能するコントローラ部110は、システムバス111に各デバイスが接続される構成を採用している。CPU112は、不揮発性の記憶装置(ROM)113に格納されている制御プログラムに基づいて動作し、システムバスに接続された各デバイスを統括的に制御する。ROM113は、ハードディスクやフラッシュROM等の不揮発性記憶装置である。揮発性の記憶装置であるRAM114は、CPU112が動作するときの作業領域として使用される。RAM114の一部領域は、画像を一時的に記憶するための画像バッファ115として使用される。また、画像バッファ115は、RAM114から分離した別メモリとして、後述する画像取得部118あるいは物体検出部119に内蔵されてもよいし、システムバス111を介さずに画像取得部118に直結されてもよい。
ユーザI/F装置116は、不図示のディスプレイ装置とキー入力装置を備えている。ユーザI/F装置116は、例えば、CPU112の指令に従い、撮像した画像や撮像装置100の状態を出力する。また、ユーザI/F装置116は、例えば、ユーザからの指令(撮像や対象物体検知の開始/停止、対象物体の追尾動作の開始/停止など)を受け付けてCPU112に送出する。
姿勢制御部117は、パン軸駆動モータMpとチルト軸駆動モータMtに接続され、不図示のパルス発生回路やドライバ回路などを内蔵している。姿勢制御部117は、CPU112からの指令に応じて、各モータの駆動制御を実行する。姿勢制御部117は、位置センサ(エンコーダ等)120の出力に基づいてパン角及びチルト角を取得し、CPU112に通知する。なお、姿勢制御部117を、独立した筐体に収めることで、コントローラ部110の外部に配置してもよい。この場合、姿勢制御部117は、例えば、シリアル通信やネットワーク回線等の所定のI/Fを介してCPU112と通信することになる。
画像取得部118は、撮像装置100のカメラ装置101に接続されている。画像取得部118は、CPU112からの指令を受けてカメラ装置101の撮像制御を行う。取得される画像は、光軸方向の撮像範囲に位置する被写体の画像となる。取得された画像信号は、画像データとして、画像バッファ115に格納される。なお、画像バッファ115は、複数枚の画像を格納することが可能な容量を有している。各画像は、ページやフレームと呼ばれることもある。画像バッファ115は、画像取得部118からだけでなく、CPU112からや、後述する物体検出部119からもアクセス可能である。
物体検出部119は、画像に含まれる物体(検出対象物体)を検出する処理を行う。追尾処理を実行する場合は、通常、検出対象物体が追尾対象物体となる。物体検出部119は、検出対象物体の特徴(例:全身、顔、人体の一部、その他)を検出するための検出アルゴリズムを搭載する。本実施形態の検出アルゴリズムは、人物の顔部を検出可能なニューラルネットワークアルゴリズムである。物体検出部119は、検出アルゴリズムにしたがって検出対象物体を検出する1つ以上の検出器を備えている。
CPU112は、画像バッファ115に記憶されている画像データに対して物体検出を実行するために、必要なパラメータ(例:検出処理範囲)を設定した処理開始指令を物体検出部119へ送出する。物体検出部119は、内蔵するレジスタに処理結果を保存し、割り込み信号として処理の完了をCPU112に通知する。完了を意味する通知を受信したCPU112は、レジスタから処理結果を取得する。
なお、CPU112の処理能力が十分にパワフルであれば、CPU112に実行させるソフトウェア(コンピュータプログラム)としてこの物体検出部119を実装してもよい。また、汎用の画像処理チップ(DSPなど)を用いて、物体検出部119が構成されてもよい。なお、後述する回転角度算出部や回転補正部を、物体検出部119のハードウェアの一部として実装することも可能である。
[撮像光学系]
図2は、カメラ装置の撮像に使用される光学系の一例を説明するための図である。カメラ装置101は、いわゆるピンホールカメラモデルとして近似できる光学系を採用しているものとする。このとき(複数枚レンズがあるときは統合された仮想的な)レンズ中心がピンホール位置に対応し、レンズ中心からセンサ平面までの距離が焦点距離となる。もちろん実際のレンズ光学系においては、撮像対象までの距離に応じて焦点距離は変わってくるが、説明を簡単にするため本モデルでは固定の焦点距離と見なせるものとして近似計算する。以下、図2を用いて、このモデルを説明する。
Aは、カメラ装置101の撮像平面(以下、センサ平面)である。このセンサ平面をxy平面とし、焦点距離をfとする。x軸を、垂直方向下向きとし、撮像方向(光軸方向)をz軸とする、いわゆる右手系の3次元座標系xyzを定める。センサ平面上の水平軸であるy軸方向は、図2において奥向き(右向き)となる。このとき(仮想的な)レンズ中心cはz軸上にある。センサ平面(xy平面)の原点が3次元座標系xyzの原点に一致するものとする。この場合、レンズ中心c=(0,0,f)xyzとなる。ここで添え字xyzが付された座標は、3次元空間(実空間)における座標であることを表している。なお、日本国特許庁が提供したパソコン出願の仕様の制限により、本明細書のテキスト部分では、ベクトル表記として下線を用いる。なお、数式内では、通常どおり、太文字を用いる。
ここで、x 1=(x1,y1,z1)xyzを、実空間中におけるある一つの点とする(下線は、ベクトルを意味する。)。点x 1を撮像したときのセンサ平面上の像(センサ像)は、xy平面上の交点x 0=(x0,y0,z0)xyzとなる。このとき、x 1とx 0とを結ぶ直線は、レンズ中心cを通る。これがピンホールカメラモデルであり、x 0は、x 1の中心射影と呼ばれる。
ここで、図2に示すように、レンズ中心cに対して、センサ平面A(以下、平面A)と正反反対の位置にある仮想センサ平面B(以下、平面B)を考える。平面Bと焦点との距離は、焦点距離fに等しいものとする。点x 1とレンズ中心cとを結んだ直線と、平面Bとの交点は、平面B上の点x 0となる。平面Bにおけるx軸とy軸の各方向を、平面Aのx軸とy軸の各方向とは逆の方向とする。この場合、各平面上の座標x 0=(x0,y0)xyは、平面Aと平面Bとで同一となる。ここで添え字xyは、xy平面上の座標であること表す。さらに、平面Bの座標系のx軸及びy軸は、実空間を表すxyz座標系のx軸及びy軸に対して方向(符合)が一致する。したがって、以後特に断りの無い限り、焦点よりも前方に位置する平面Bをセンサ平面の仮想モデル(仮想センサ平面)とする。また、仮想センサ平面の原点oは、実空間中の原点o=(0,0,0)xyzに一致するものとする。したがって、レンズ中心cは、c=(0,0,−f)xyzと表すことができる。
通常、焦点距離fは、センサ面から撮像対象物体までの距離|x 1|=√(x1 2+y1 2+z1 2)に比べると十分に小さい。よって、計算しようとする値によっては、f≒0、すなわち、c=0=(0,0,0)xyzとしても、十分に正確な値が得られる。
仮想センサ平面B上の点x 0は、z 0=0なので、x 0=(x0,y0)xyと書ける。z1=−f、すなわち、仮想センサ平面Bに対して平行な平面であって、レンズ中心(レンズ中心c)を通る平面上に点x 1が存在するのでない限り、点x 1には中心射影が存在する。もちろん実際には、センサ平面の面積は有限であり、かつ、光学系の構造上、カメラ装置101は、レンズ中心cよりz軸の正方向に位置する物体しか撮影できない。よって、撮影できる範囲の点x 1であれば、常に、中心射影が存在する。
(1.1)式より、(1.2)が得られる。
ここで、ψを、x軸に対する位置ベクトル(x 0,y 0)の角度とする。角度ψは、(1.2)式から次のように算出される。
[撮像された画像の回転]
図3A、3B、3Cは、撮像画像の回転現象を説明するための図である。ここで、撮像対象とする物体が実空間中で直立しており、その物体の像が画像中で正立していたとする。この場合、撮像された画像を、正立画像と呼ぶことする。また、このとき画像中の物体像は正立している、あるいは正立状態にあると呼ぶことにする。
例えば、人物が、重力に対して直立していれば、頭頂部が上で、顎部が下となる。頭頂部と顎部の各頂点を結んだ直線が画像の垂直方向と一致していれば、その顔画像は正立状態にある。また、直方体(机、箪笥等)が撮像されたときに、上面部(天板)が相対的に上方に写っており、かつ直方体の側辺(脚など)が画像の垂直方向と一致していれば、その直方体の画像は正立状態にある。本明細書では、撮像された画像中の各物体が正立状態から外れて傾いているとき、その傾きの角度を物体画像の回転角度と表現している。
図3Aは、パン軸の方向が、実空間中の垂直方向に一致するように撮像装置100設置された状態を示す図である。なお、図中のΦは、水平方向におけるホームポジションからの光軸の偏移(パン角)を示している。また、Θは、垂直方向におけるホームポジションからの光軸の偏移(チルト角)を示している。
実空間中に直立する物体301を、センサ平面の中心に物体301の像が来るように撮像したとする。このときの画像が、画像302である。すなわち、画面の中心(原点)における垂直方向(x軸方向)は、実空間中の垂直方向と一致している。
画像302を取得した状態から、カメラ装置101の光軸を左方向にパン回転させると、画像303が取得される。すなわち、光軸方向が、対象物体位置の垂直方向(=実空間の鉛直方向)に対してほぼ直角であれば、光軸をパン回転させても、画像中の対象物体の垂直方向は維持されることになる。
図3Bは、パン軸が実空間中の鉛直方向と一致しないように撮像装置100が設置された状態を示す図である。このような状態は、設置箇所の都合により生じる場合もあれば、撮像装置100が何らかの移動物体に取り付けられる場合にも生じる。後者の場合、鉛直方向(鉛直軸)からのパン軸の傾きは、移動体の動きに応じて動的に変化する。図3Bによれば、パン軸が、実空間中における水平面内の基準方向に対して、Φvだけ傾いている。また、実空間の鉛直軸からΘvだけ傾いている。ただし、図3Bの場合も、光軸方向が、対象物体の垂直方向に対してほぼ直角となっている。
画像304は、光軸が水平方向に向いているときに物体301を撮像して得られた画像である。ここで、図3Aに関して説明したように、光軸を、左方向にパン回転させたとする。そのときに得られた画像が、画像305である。直立している物体301は、画像305において正立しておらず、画像の垂直方向(x軸方向)に対して角度ψだけ回転した状態となって撮像される。パン軸が垂直でないときは、パン回転に伴い光軸が、ロール回転してしまうことによって生ずる回転現象である。したがって、画像305が取得されたときの設置状態で、センサ平面の原点において別の正立物体が撮像されたとしても、その物体は、実空間において直立してはいない。すなわち、当該物体も、角度ψだけ回転した状態で撮像されていることになる。なお、光軸方向が、鉛直方向に対し、ほぼ直角を成す方向であれば、回転角度ψは、画像の全域においてほぼ等しい。
図3Cは、光軸方向と鉛直方向との成す角度が直角から大きく離れている状態を示す図である。このような状態は、実空間中において、撮像装置100の高さと撮像対象物体との高さとが一致しないとき(例:撮像装置100を天井に取り付けられたとき)に発生する。この場合、パン軸が鉛直方向に一致していたとしても、パン回転に応じて、撮像される物体の像も回転してしまう。
画像306は、実空間中で直立している物体301の像が画像中央で正立した状態で撮像されたときに得られる画像である。一方、画像307は、図3A、3Bと同様に、光軸をパン回転させたときに得られる画像である。画像307が示すように、物体301の像は左に傾いた状態となっている。なお、図3Cの場合は、別の直立物体が画像中央で撮像されたとすると、その物体像は画像中で正立状態となる。すなわち、撮像対象物体の像がセンサ平面上のどこに位置するかに依存して、撮像された物体の回転角度ψが異なることになる。
もちろん、図3Bと図3Cに関して説明した各要因が複合して対象物体画像の回転現象が生ずる場合も有りうる。図3Bや3Cで説明したように、パン回転された状態で撮像された物体画像(画像305、307)は、物体の検出処理(認識処理)において、その検出率(認識率)を著しく低下させるおそれがある。これは、通常であれば、誤検出/誤認識の少ない精度の高い検出/認識アルゴリズムが採用されるときほど、回転による検出率の低下が顕著となりやすい。一方で、ロバスト性の高い検出(認識)アルゴリズムが採用される場合、回転による検出率の低下は小さいが、そもそも誤検出や誤認識は相対的に多い。
そこで、本実施形態の撮像装置は、相対的にロバスト性の高い第1の検出処理によって候補領域を抽出し、候補領域を回転補正し、相対的に誤検出の少ない第2の検出処理によって、回転補正された候補領域から検出対象物体を検出する。これにより、パン軸が鉛直方向から回転していても、物体の検出精度が向上される。また、画像全体を回転補正する必要がないので、回転補正に伴う計算量が削減される利点がある。
ところで、図3Bに関して説明した画像の回転は、センサ平面を光軸回りにロール回転させる、いわゆるロール軸を姿勢制御機構として追加すれば、撮像される画像そのものを補正できる。しかし、この場合、ロール回転すべき角度を検出するための何らかの方法が必要となる。もちろん、センサ平面に姿勢検知センサを固定すれば、この角度を求めることもできるが、コストアップの要因となるため好ましくないだろう。以後で説明する回転角度の計算方法は、ロール回転すべき角度を算出することも可能である。この場合、姿勢検知センサを必要はなくなるであろう。
[2つの座標系]
ここで、2つの座標系を導入する。1つは実空間R3に固定された第1の座標系である。もう1つは撮像装置100のセンサ平面に固定された第2の座標系である。各座標系は、直交座標系と極座標系のどちらでも表現できる。
図4Aは、実空間R3に固定された第1の座標系と、撮像装置100のセンサ平面に固定された第2の座標系とを説明するための図である。ここでは、実空間に固定された第1の座標系を、XYZ座標系(大文字)とする。ただし、Z軸の方向は、撮像装置100のパン軸方向と一致するものと仮定するため、実空間中の鉛直方向(直線V)とは必ずしも一致しない。XYZ座標系は、実空間に固定されているので、パン回転やチルト回転によっては変化することはない。もちろん、実空間中の鉛直方向も変化しない。ただし、撮像装置100が移動物体に取り付けられている場合、XYZ座標系は移動物体上に固定されているものとする。すなわち、移動物体が実空間中で角度を変化させた場合、XYZの各軸が変化するのではなく、実空間の鉛直方向(直線V)が相対的に変化するものとする。なお、直線Vの中心射影は、直線V’である。Φvは、Z軸と直線Vとが成す角度である。Θvは、Z軸と直線Vを含む平面が、XY平面上でX軸と成す角度である。ψは、直線V’とx軸とが成す角度である。
実空間における点をXYZ座標系では(X,Y,Z)と表す。実空間における極座標表現(R,Θ,Φ)が使用されてもよい。よく知られているように、これらパラメータは、次のように関係している。
ここで、I=(1,0,0)、J=(0,1,0)、K=(0,0,1)をXYZ座標系における標準基底とする。極座標系RΘΦにおいて、これらの標準基底は、次のように表現される。
図4Aにおいて、撮像装置100のセンサ平面に固定された第2の座標系は、xyz座標系(小文字)として示されている。このセンサ平面は、先に説明したピンホールカメラモデルにおけるセンサ平面であって、原点oを通るxy平面に一致する。このxyz座標系が使用されるとき、実空間における点を(x、y、z)と表す。このxyz座標系の極座標表現は(r,θ,φ)であって、以下の関係が成り立つ。
i=(1,0,0)、j=(0,1,0)、k=(0,0,1)をxyz座標系における標準基底とする。極座標系rθφにおいて、これらの標準基底は、次のように表現される。
このように、2つの座標系はそれぞれ、直行座標表現と極座標表現のどちらでも表すことができる。以下では、(a,b,c)xyzのように、座標系や座標表現を表すサフィックスを用いる。
本実施形態の撮像装置100に関して、図2で説明した仮想センサ平面Bの原点を、xyz座標系における原点o=(0,0,0)xyzとしている。そして、XYZ座標系の原点O=(0,0,0)XYZが常にO=oとなるように、パン回転及びチルト回転が実行される。すなわち、パン軸及びチルト軸は、原点Oを通る。また、仮想センサ平面の中心は、常に原点Oに一致する。パン軸は、Z軸に一致する。チルト軸は、y軸に一致する。さらに、チルト軸(y軸)は、常に、XY平面上に存在する。すなわち、常に、j・K=0である。xyz座標系におけるベクトルiとjは、センサ平面であるxy平面に含まれる。ベクトルkは、センサ平面の単位法線ベクトルである。
カメラ装置101がホームポジションにあるとき、xyz座標系は、XYZ座標系に一致するものとする。すなわち、このとき、次式が成立する。
図4Bは、xyz座標系とXYZ座標系とが一致する状態を示す図である。
パン軸回りの回転角度(パン角)をΦで表し、チルト軸回りの回転角度(チルト角)をΘで表すと、xyz座標系における回転位置(ポジション)は、(Θ,Φ)と表せる。この記述方法は通常の極座標表現と同じである。図4A、Bに示すとおり、xz平面は、常に、XY平面に対して直交する。チルト角Θは、z軸がZ軸と成す角度であって、x軸がXY平面と成す角度でもある。パン角Φは、xz平面とXY平面の交線がX軸と成す角度であって、y軸がY軸と成す角度でもある。
パン軸とチルト軸の回転位置が(Θ,Φ)であるとき、極座標系RΘΦにおいて、次式が成り立つ。
図4Bが示すように、(Θ,Φ)=(0,0)のとき、(2.8)式のI,J,Kは、(2.3)式のI,J,Kと一致する。よって、(2.7)式が成り立つ。(2.1)式ないし(2.8)式から次式が得られる。
これから、(2.10)式、(2.11)式及び(2.12)式が導出される。
i,j,kは、さらに次式のように表現できる。次のように書ける。
ゆえに、(2.16)式が得られる。
これは、座標系の変換を意味する。ここで、
より、
とする。Tは、直交変換を定義する直交行列である。x=(x,y,z)xyzを、xyz座標系におけるベクトルとし、X=(XYZ)XYZをXYZ座標系におけるベクトルとすると、(2.17),(2.18),(2.19)より、
が導出される。ここえで、Tは直交行列であるので、逆行列T−1は、Tの転置となる。
ゆえに、
が得られる。つまり、
が得られる。すなわち、
が成り立つ。
xとXの場合のように、本明細書においては、しばしば下線は、ベクトルを意味するものとして用いられる。
[直線のセンサ像]
実空間中のある直線Lについて、その仮想センサ平面B上への中心射影を考える。ただし、直線Lは、ある被写体の実空間中における方向を表すものとする。したがって、ここでは、中心射影されたセンサ平面上の直線がx軸と成す角度に注目する。以下、図5を用いて説明する。
図5は、仮想センサ平面B、レンズ中心c=(0,0,−f)xyz及び実空間中の直線Lを示す図である。ただし、直線Lが、点として射影されることはないものとする。そして、平面Hは、レンズ中心cと直線Lを含むものとする。nHは、を平面Hの法線ベクトルである。xy平面の法線ベクトルは、標準基底kに平行である。
直線Lのセンサ平面における像(中心射影)は、平面Hとxy平面の交線LHになる。交線LHは、法線ベクトルnHとkに対して垂直である。ゆえに、交線LHは次のように表現される。
ここで、dは、直線交線LH上のある1点を示している。ここで、ベクトルnH×kは、直線交線LHの方向を表し、かつ、xy平面に平行である。したがって、直線交線LHとx軸の成す角度ψは以下のようになる。
ただし、(nH×k)xと(nH×k)yは、それぞれ、ベクトル積nH×kのx成分とy成分を表す。
今、x 1=(x1,y1,z1)xyzと、x 2=(x2,y2,z2)xyzを直線L上の2点とする。また、次式が成り立つとする。
この場合、s1、s2は、共に平面Hに平行なベクトルとなるので、nH=s1×s2は、平面Hの法線ベクトルとなる。
したがって、次式が成り立つ。
さらに、(5.2)式より次式が得られる。
X 1=(X1,Y1,Z1)XYZと、X 2=(X2,Y2,Z2)XYZを実空間内の異なった2点とする。また、直線Lは、これら2点を含む直線とすると、式(2.25,26,27)より、次式が成り立つ。
これより、次式も成り立つ。
ゆえに、ψに関して、次式が成り立つ。
すなわち、(3.13)式のarctan(逆正接)は、実空間中の2点X 1、X 2を通る任意の直線Lの中心射影(LH)とx軸とが成す角度ψを算出するための一般式となる。
ここで、焦点距離fが、対象物体までの距離に比較して十分に小さければ、fの積となっている項は無視できる。よって、次のような簡略式が成立する。
通常、焦点距離fに比較すれば、対象物体までの距離は十分に遠いと見なしてよいので、以後(3.14)式を一般式として利用する。
[設置角度に基づく回転角度の計算]
ここで図4Aの説明に戻る。撮像装置100が、実空間に対して、ある設置角度Φv、Θvで設置されているものとする。その際に、撮像される対象物体画像の回転角度の計算方法を説明する。なお、設置角度Φv、Θvは、撮像装置100の雲台に固定された2軸方向の傾き検知センサによって検出されてもよい。あるいは、予め測定された設置角度Φv、Θvの値が、ユーザI/F装置を介して入力されてもよい。いずれの場合も、ROM113やRAM114に設置角度Φv、Θvが記憶される。
図4Aにおいて、直線Vは、実空間中における垂直方向(鉛直方向)を示す直線であって、かつ原点O=(0,0,0)XYZを通る直線である。実空間中に存在するいかなる対象物体の直立方向も、直線Vに平行である。ここで、対象物体の位置を通り、直線Vに平行となる直線をLとする。すなわち、直線Lは、原点Oを通らない。そして、直線Lについて、仮想センサ平面B上への中心射影を考える。そして、中心射影(像)とx軸とが成す角度が、撮影された画像における対象物体の回転角度ψとなる。撮像された画像を、算出された回転角度ψだけ、逆方向に回転補正すれば、回転していない対象物体の画像が得られる。
設置角度Φv、Θvの定義は、直線Vの方向を極座標表現とする。すなわち、図4Aに示すように、Z軸と直線Vの成す角度がΘvであり、Z軸と直線Vを含む平面がXY平面上でX軸と成す角度がΦvとなる。
撮像装置100が固定的に設置されている場合、Φv、Θvは定数と見なせば良い。また、撮像装置100が移動物体上に設置されている場合、Φv、Θvは、移動物体の姿勢に応じて変化するパラメータであると考えれば良い。
このように定義すると、直線V上のある1点X vは(2.1)式より、次のように算出される。
ここで、Rvは、任意の値であって、当然Rv=1であってもよい。
直線Lは、直線Vを平行移動したものである。よって、直線Lが実空間中のある1点X 1=(A,B,C)XYZを通るとすれば、X 2も通ることになる。
つまり、このように直線L上の2点X 1、X 2を選択したとする。また、[X・Y]=X1Y2−Y1X2、 [X・Z]=X1Z2−X2Z1、 [Y・Z]=Y1Z2−Y2Z1から、次式が導出される。
これを(3.14)式に代入する。
直線L上の1点を、例えば、対象物体の存在する位置X 1=(A,B,C)XYZとすれば、上記のFは、姿勢パラメータの一例である設置角度Φv、Θv、そのときのパン角Θ及びチルト角度Φから算出される。したがって、回転角度ψは、次式から算出される。
ここで、対象物体の像が撮像センサの中心に位置しているとき、この物体は撮像センサの法線方向、すなわち、xyz座標系におけるz軸上に存在することになる。物体までの距離をRzとすると、この物体の存在するz軸上の点X z=(0,0,Rz)は、XYZ座標系において、次式の通りとなる。
この点X zを直線L上のある1点と見なす。
そして、(4.7)式を(4.4)式に代入する。
したがって、物体までの距離Rzは、Fに対して無関係となる。そのときのパン角Φとチルト角Θから、センサ平面の中心において撮像されている物体の回転角度ψを求めることができる。なお、雲台が固定的に設置されている場合には、ΦvとΘvとは定数となる。よって、それらの三角関数値であるsin Θvとcos Φv等が予め算出されて記憶装置に保持されていれば、多少なりとも回転角度ψ計算処理を高速化できるであろう。
実空間中における撮像装置100の設置高が、撮像対象とする被写体の高さとほぼ等しければ、対象物体画像の回転は、図3Bで説明した要因によって発生する。つまり、センサ平面の法線方向が、実空間の垂直方向に対してほぼ垂直であれば、撮影される対象物体画像の回転角度ψは、センサ平面のどの場所においても大きく変わることはない。よって、(4.8)式で求められた回転角度ψは、画像に含まれる各領域に対してそれぞれ適用可能である。この場合、対象物体が存在しうる各候補領域を、回転角度ψにより1回だけ回転補正するだけで、撮像された画像に含まれるすべての物体について、正立画像が得られる。
[物体検出処理]
対象物体を検出するための物体検出処理の一例として、本実施形態では、顔検出処理について説明する。本実施形態における顔検出処理について説明する。なお、本実施形態の顔検出処理は、特許文献3(特開2004−199200号公報)に開示されている技術をベースとしているが、本発明は、他の物体検出処理も採用できる。また、顔に限らず、人体の全身、手、足、その他の物体を検出する物体検出処理であっても、本発明には適用可能である。
図6は、検出すべき人物の顔を模式的に表した図である。人物の顔には、目、鼻、口といったいくつかの特徴点が、おおよそ定まった位置にそれぞれ配置されている。本実施形態では、目と口に注目し、局所的な低次元特徴から、階層的により高次元の特徴抽出を行うことによって、画像中の顔を検出する。
図7は、階層特徴の一例を示す図である。各四角形は、入力画像のある1点に注目したときに切り出される範囲(受容野)を示している。701は、最も原始的な微少の受容野における特徴を示している。上から順に、縦方向特徴、横方向特徴、右上がり斜め方向特徴、左上がり斜め方向特徴となっている。これらは、例えば、ガボールウェーブレット変換等のフィルタによって得られる微小線分の方向である。画像中のどの位置に、これらの特徴が存在するかを抽出するのが第1次特徴抽出処理である。もちろん、この4種類以外の特徴が追加されてもよい。
これらの第1次特徴抽出処理の出力を用いて、第2次特徴抽出処理が実行される。702は、第2次特徴の一例を示している。第2次特徴は、例えば、複数の第1次特徴を組み合わせることによって作成される。上から順に、右開きVエッジ、左開きVエッジ、水平エッジ、垂直エッジとなっている。この他、色成分を含む特徴が採用されてもよい。
第2次特徴抽出の出力を用いて、第三次特徴抽出処理が実行される。703は、第三次特徴の一例を示している。第三次特徴は、上述した注目すべき特徴点である目及び口である。
同様に、目及び口(第三次特徴)が、704が示すような配置にあるとき、第四次特徴(顔)が検出される。つまり、顔検出処理部は、位置に関してある程度のロバスト性を持たせつつ、第1次から第四次までの特徴抽出処理を階層的に行うことができればよい。
図8は、顔検出処理に採用される畳み込みニューラルネットワーク構造の一例を示す図である。この畳み込みニューラルネットワーク構造は、非特許文献1に開示されている。このニューラルネットワークにおいて、最終層の出力は、認識された検出対象物体の入力データ上の位置情報である。
801は、画像バッファ中に格納されている各画像データを入力するためのデータ入力層である。S1層は、最初の特徴検出層である。S1層は、局所的な低次の特徴である第1次特徴を抽出するフィルタとして機能するように、パラメータが設定されている。例えば、第1次特徴の1つにつき、これを検出するための細胞平面が1つ割り当てられている。これにより、入力画像の各位置を中心とする局所領域における複数種類の特徴を抽出することが可能となる。なお、各細胞平面は、入力画像の画素数と等しいか、これを所定レートで間引いた数に等しい数のニューロンにより構成される。これは他の層に関しても同様である。
特徴統合層C1には、S1層における各特徴検出のための細胞平面ごとに、同サイズの細胞平面が1つずつ用意されており、所定の受容野構造をもって、それぞれの出力を統合する。これにより、各特徴についてある程度の位置ロバスト性を持たせることを可能としている。
以下、Sn層とCn層が、最終出力層まで交互に並んでいる(n=1,・・・,N)。Sn層の各特徴抽出平面への入力としては、n=1を除いて、その前に位置するCn−1層の全特徴統合平面の出力が用いられる。このような構造により、低次の特徴を順次検出・統合していき、最終層の出力として、所望の検出物体(例:顔)の存在する位置が出力される。
ここで、特徴検出層における各細胞平面を構成するニューロンの入出力特性は、次のように表される。第l層目の特徴検出層における第k番目の特徴を検出する細胞平面の位置nにあるニューロンの出力を、usl(n,k)とする。usl(n,k)は、次のように表現される。
ここで、ucl(n,k)は、第l層目の特徴統合層における第k番目の細胞平面の位置nにあるニューロンの出力を示す。Kclは、第l層目の特徴統合層における細胞平面の数であって、同一層の特徴検出層の細胞平面の数(検出対象となる特徴の数)に等しい。wl(ν,к,k)は、第l層目の特徴検出層における第k番目の細胞平面の位置nにあるニューロンの、第l−1層目の特徴統合層における第к番目の細胞平面の位置n+νにあるニューロンからの、入力結合パラメータである。また、Wlは、検出細胞の受容野を示し、その大きさは有限である。
受容野Wlの結合加重値wlを適切に設定することにより、所望の特徴を検出することができる。この設定は、図7に示した各層の各特徴ごとに、十分な数のサンプル(教師データ)を用意し、特徴平面ごとに学習アルゴリズム(例:誤差逆伝播法)を適用して実行すればよい。本実施形態では、左右開きのVエッジ、目及び口、顔のサンプルを多数用意し、これを学習させることによって、結合加重値wlを定めることができる。
また、上記式において、f(x)は、積和演算結果に対しての非線形処理を示す関数である。例えば、f(x)は、次のようなロジスティック関数である。
次に、第l層目の特徴統合層における第k番目の細胞平面の位置nにあるニューロンの出力ucl(n,k)は、次式から算出される。
この式において、dl(ν)は、第l層目の特徴検出層(S層)におけるニューロンから、同一特徴に対する第l層目の特徴統合層(C層)の細胞平面におけるニューロンへの入力結合を意味する。dl(ν)は、|ν|に関して単純に減少する関数である。また、Dlは、統合細胞の受容野を示す。dl(ν)及びDlを適切に調整することにより、前層の特徴に対する位置ロバスト性を調整することが可能である。
以上説明した畳み込みニューラルネットワーク構造により、第4次特徴として、画像中の人物の顔がある位置を検出する物体検出部119が構成される。また、顔の検出位置を基準とする所定範囲について第3次特徴を調べることにより、目及び口特徴点の位置も特定することが可能となる。この構成によると、例えば、目特徴は、第2次特徴であるVエッジ及び横方向エッジのおおよその位置に基づいて検出される。よって、目を瞑るなど少々の形の変形があても、目の位置を検出できる。
また、ニューラルネットワーク構造を採用する物体検出部119では、C層への入力受容野のサイズを調整することにより、ロバスト性を調整することができる。すなわち、C層の入力受容野のサイズを小さくしたり、場合よってはC層を無くしたりしてしまうことにより、パーツの回転、位置、サイズの変動許容度の低い(より精度の高い)検出部を生成することが可能である。さらに、学習させる教師データを絞り込めば、より精密な検出部を生成できる。
なお、ニューラルネットワーク構造を採用する物体検出部119を、専用のハードウェア回路により実現してもよい。また、CPU112が十分な処理能力を持つものであれば、ソフトウェアにより物体検出部119を実現してもよい。
[物体検出処理のフロー]
図9は、実施形態に係る制御部の機能をより詳細に示したブロック図である。図1Bと共通する部分には同一の参照符号が付されている。カメラ装置101は、画像を撮像する撮像部として機能する。ここでは、CPU112が、回転角度算出部901、回転補正部902及び逆回転部903として機能するものとして説明するが、本発明は、この構成にのみ限定されることはない。物体検出部119は、基本的な物体検出機能に加え、候補領域抽出部904、重心算出部905及び座標特定部906を含む。
回転角度算出部901は、カメラ装置101の3次元空間における姿勢を表す姿勢パラメータに基づいて、撮像された画像に施されることになる回転補正の回転角度ψを算出する。回転角度算出部901は、例えば、カメラ装置101の3次元空間における設置角度Φv、Θv、パン角Φ及びチルト角Θを姿勢パラメータとして回転角度を算出する。なお、回転角度算出部901は、パン角Φ及びチルト角Θを制御する姿勢制御部117からパン角Φ及びチルト角Θを取得してもよい。回転角度算出部901は、設置角度Φv、Θvを不図示の姿勢センサ又はRAM114などの記憶部から取得してもよい。
候補領域抽出部904は、撮像された画像において、検出対象となる検出対象物体(例:顔)が含まれうる1つ以上の候補領域を抽出する。重心算出部905は、抽出された1つ以上の候補領域の重心位置を算出する。
回転補正部902は、抽出された各候補領域を、算出された回転角度ψに応じて回転補正する。例えば、回転補正部902は、重心位置を回転中心として各候補領域を回転補正する。そして、物体検出部119は、回転補正された各候補領域から検出対象物体を、基本的な物体検出機能により検出する。
なお、座標特定部906は、回転補正された画像における各検出対象物体の座標を特定する。逆回転部903は、各検出対象物体に関して共通の位置を回転中心として、特定された各検出対象物体の座標を回転角度ψに応じて逆回転させることで、撮像された画像における各検出対象物体の座標を算出する。
図10は、実施形態に係る物体検出処理の一例を示すフローチャートである。この物体検出処理は、撮像された画像中で、対象物体の存在する正確な座標を求めることを目的としている。正確な座標が求まれば、対象物体の追尾精度が向上するため有利であろう。
ステップS1001で、物体検出部119は、CPU112の指令に応じて、カメラ装置101により撮像された画像に対し、第1次検出処理(スクリーニング)を実行する。すなわち、候補領域抽出部904は、撮像された画像において、検出対象となる検出対象物体が含まれうる1つ以上の候補領域を抽出する。
ここでは、顔が検出対象物体となる。この第1次検出処理において用いられる顔検出アルゴリズムは、顔の角度や大きさ等が少々ずれていても検出できるようにするために、十分にロバスト性の高いアルゴリズムが採用されることが望ましい。そのため、顔でない画像領域を顔と判断する誤検出は相対的に多くなるものの、顔である画像領域の未検出はほとんど発生しようなアルゴリズムが望ましい。なお、第1次検出処理としては、先に説明した顔検出アルゴリズム(図7、8)を使わなくともよい。例えば、色情報に基づく肌色領域の抽出処理、背景差分、動き検出処理又はこれらの2以上の組合せなどが、顔検出アルゴリズムとして採用されてもよい。ようするに、検出すべき対象物体が存在しうる候補領域をもれなく抽出できるアルゴリズムであれば、本発明に採用可能である。
図11A〜11Eは、物体検出処理の手順を概念的に説明するための模式図である。とりわけ、図11Aは、入力画像の一例を示す図である。図11Bは、第1次検出処理(S1001)の処理結果の一例を示す図である。すなわち、十分にロバスト性の高いアルゴリズムによって、候補領域が漏れなく抽出されていることがわかる。この第1次検出処理においては、対象物体の存在する正確な座標まではわからないが、候補領域の取りこぼしはほとんど発生しない。猫の顔のように、対象物体でない領域もある程度は抽出されてしまうが、画像全域から見れば誤検出領域は大幅に限定されているので、誤検出領域についてのその後の処理コストは少ないといえよう。
ステップS1002で、回転角度算出部901は、撮影された画像の回転角度ψを算出する。この算出処理は、前述の通り、設置角度Φv、Θv、パン角Φ及びチルト角Θから、センサ平面の中心についての回転角度ψを算出処理である。
本実施形態においては、撮像装置100は、対象物体である人物の顔の存在する高さに設置されているものとする。したがって、センサ平面の法線方向が、実空間垂直方向(直線V)に対してほぼ直角となる条件で撮像することになるため、一つの回転角度ψを撮像画像の全領域に適用できる。これは、主として図3Bに示した要因により、回転角度ψが生じているということである。回転角度ψは、撮像画像における対象物体の位置には無関係のパラメータとなる。そのため、ステップS1002が、ステップS1001の前に実行されてもよいし、同時並行的に実行されてもよい。
ステップS1003で、回転補正部902は、回転角度ψを用いて、対象物体画像が正立する方向となるように画像の回転補正を実行する。ここでは、画像の全体が回転補正されてもよいが、図11B及び図11Cに示すように、候補領域を含む最小限の領域だけが回転補正されることが、処理負荷を軽減する観点からは望ましい。
回転角度ψは、上述したように、撮像されている画像が傾いている角度である。よって、−ψだけ画像を回転補正してやれば、正立画像が得られる。この回転補正処理は、例えば、アフィン変換を使用する。このとき、回転中心は、その座標x r=(xr,yr)が記憶されていれば、画像中のどの位置にしてもよい。本実施形態では、重心算出部905により算出された1以上の候補領域についての重心位置を、回転中心とする。点x=(x,y)を、点x r=(xr,yr)を回転中心として角度 ―ψだけ回転補正した点をx’=(x’,y’)とする。この回転補正に相当するアフィン変換は、次式により示される。
ここで、1行目の右辺には、3×3行列が3つある。そのうち、第1の行列は、回転中心x r=(xr,yr)を原点へ平行移動することを意味する。第2の行列は、原点を回転中心として角度 ―ψだけ回転移動することを意味する。第三の行列は、回転中心を元の(xr,yr)の位置に戻すことを意味する。(6.1)式より、次式が導出される。
したがって、抽出された候補領域の各画素を、(6.2)式に基づいて回転移動すれば、各候補領域が正立状態に補正される。図11Cは、候補領域が回転補正されたときの様子を示す図である。なお、図11Bの黒点は、回転中心を示している。
なお、本実施形態では、各候補領域について、共通となる1つの位置を回転中心としているが、本発明は、これにのみ限定される訳ではない。例えば、回転補正部は、各候補領域について、それぞれの重心(中心)を回転中心とし、各候補領域ごとに独立して回転補正を実行してもよい。ただし、各候補領域の回転中心は、それぞれ記憶部に記憶しておく必要がある。なぜなら、回転された候補領域を元に戻すための逆回転処理(S1005)でも、この回転中心が使用されるからである。
ステップS1004で、物体検出部119は、回転補正された画像について、第2次検出処理を実行する。また、座標特定部906は、回転補正された画像における各検出対象物体の座標を特定する。第2次検出処理で使用されるアルゴリズムは、第1次検出処理のアルゴリズムと比較し、相対的に、高精度でかつロバスト性の低い。これにより、精度よく、顔の存在する座標を検知することが可能となる。なお、テンプレートマッチングなどの他のアルゴリズムが採用されてもよい。この場合も、第1次検出処理のアルゴリズムと比較し、高精度でかつロバスト性の低いアルゴリズムであればよい。
ここで用いている顔検出アルゴリズム(顔検出器)は、正立した顔画像のみを検出することを目的として設計されたものである。1つの顔検出器は、検出対象物体のサイズは特定サイズに限定される。それぞれ顔のサイズを異ならしめて設定された複数の顔検出器を用意すれば、どの顔検出器で検出されたかによって、顔のサイズを知ることもできる。また、もし必要ならば、同様正立した顔を検出する検出器と、特定角度に傾いた顔を検出する検出器とを用意すれば、対象とする顔が、実空間上でどの程度傾けられているかを割り出すことも可能となろう。
図11Dは、第2次検出処理の結果の一例を示す図である。候補領域に相当する矩形内に設けられた灰色点は、検知した顔の中心についての正確な座標を示している。なお、図11Dによれば、誤検出された猫の顔に相当する候補領域は、第2次検出処理では、除外されていることもわかる。
ステップS1005で、逆回転部903は、検出された物体の存在する座標について逆回転補正を実行する。逆回転部903は、例えば、特定された各検出対象物体の座標を回転角度ψに応じて逆回転させることで、撮像された画像における各検出対象物体の座標を算出する。なお、このときの回転中心は、各検出対象物体に関して共通の位置である。また、回転中心の座標は、回転補正(S1003)で使用された座標x r=(xr,yr)であり、その値は、RAM114に記憶されている。
座標特定部906により特定された座標をx’ f=(x’f,y’f)とする。逆回転処理も回転処理に変わらないため、(6.2)式と同様となる。
ここで、x f=(xf,yf)が回転前の画像における対象物体の存在する座標である。
図11Eは、逆回転された座標の一例を示す図である。逆回転処理は、ステップS1004で最終的に抽出された領域についての座標に対してのみ施されればよい。図11Eによれば、3つの領域が抽出されたので、3つの座標(中心又は重心の座標)だけが逆回転の対象となる。よって、ステップS1105の逆回転は、ステップS1103の回転補正に比べると、非常に低負荷な処理といえよう。
本実施形態によれば、回転補正部902は、パン軸が鉛直方向から傾いていたとしても、画像の全体ではなく、候補領域を回転補正させる。これにより、従来よりも計算負荷(処理コスト)が軽減され、かつ、精度良く物体が検出されることになる。
また、回転角度算出部901は、撮像装置の設置角度、パン角及びチルト角に基づいて、回転補正に使用される回転角度を算出する。よって、比較的に少ない計算量でもって、回転角度を算出できる。
また、重心算出部905が算出した候補領域の重心位置など、各候補領域の共通位置を回転中心として回転補正を実行すれば、個別に回転中心を算出する処理が不要となる利点がある。また、回転補正も一度に実行できるため、処理速度の観点からも有利であろう。
また、逆回転処理を実行する逆回転部903は、特定された各検出対象物体の座標を回転角度に応じて逆回転させて、撮像された元画像における座標を算出する。よって、候補領域に含まれる全画素の座標のうち、1つの画素の座標だけ逆回転させればよいため、計算量を少なくすることができる。また、逆回転の回転中心も、各検出対象物体に関して共通の位置を回転中心とすれば、計算量を少なくすることができよう。
[第2実施形態]
[画像中の位置に応じた回転角度]
例えば、天井に撮像装置100が設置されると、実空間中におけるカメラの設置高が、撮像対象となる物体の存在する高さよりも高くなる。このような場合、センサ平面の法線と実空間の鉛直方向との成す角度は直角(π/2)から大きくずれる。このとき、センサ平面の中心付近で撮像された物体画像の回転は、(4.8)式により算出される回転角度ψとなる。しかし、中心付近から離れた周辺位置についての適正な回転角度は、(4.8)式により算出される回転角度ψとは異なってくる。これは、回転角度に、図3Cで説明した要因が入ってくることを意味する。これに加えて、パン軸が鉛直方向からずれていれば、図3Bと図3Cに示した要因が組み合わされるため、各物体の回転現象はさらに複雑となる。この場合、センサ平面上での位置に応じて回転角度を算出する必要がある。
図2に示した焦点距離fのカメラ装置101について考慮する。今、ある物体の像が、センサ平面上の座標x 0=(x0,y0)xyに位置すると仮定する。この物体の実空間における位置は、センサ平面に固定された極座標表現により、(r,θ0,φ0)rθφと表せる。
(2.4) 式、(2.5) 式より、θ0,φ0は、次の通りとなる。
よって、xyz座標系で、物体の位置は、x 1=(x1,y1,z1)xyz=(r・sin θ・0cos φ0,r・sin θ0・sin φ0,r・cos θ0)と表現できる。ここで、rは、レンズ中心cから物体までの距離である。
このx 1を、(4.6)式と同様に、XYZ座標系で表現する。
(4.7)式と同様、(7.2)式を(4.4)式に代入すると、ABCはいずれもrとの積となる。よって、rは(4.4)式の分母及び分子の全ての項に含まれることになる。(7.2)式が代入された(4.4)式ではrは無関係となる。このような事情から、(7.2)式でr=1と置ける。
ここで、a0、b0、c0は、次のような定数である。
(7.3)式を(4.4)式に代入すると、次式が得られる。
ただし、θ0を算出する際に焦点距離fが無視できないことには注意すべきである。
結局、回転角度ψは、次のように導出される。
カメラ装置101の設置角度Φv、Θv、パン角Φ、チルト角θ及び焦点距離f、並びに、各検出対象物体の座標(x0,y0)に基づいて、回転角度ψが算出される。
[物体検出処理]
図12Aは、対象物体である人物の顔の高さよりも、撮像装置100が下方に設置されている場合の入力画像の一例を示す図である。画像中に3人の人物が映っているが、これらの人物は、いずれも実空間中では直立している。しかし、比較的近い位置で、かつ、下方に設置されたカメラから見上げるようにして撮像されているため、画像中における各人物の顔の回転角度は異なっている。
ステップS1001で、候補領域抽出部904は、第1次検出処理を実行する。図12Bは、候補領域の抽出結果の一例を示す図である。
ステップS1002で、回転角度算出部901は、各候補領域の回転角度を算出する。具体的には、カメラ装置101の設置角度Φv、Θv、パン角Φ、チルト角θ及び焦点距離f、並びに、各検出対象物体の座標(x0,y0)を(7.3)式に代入することで、回転角度ψが算出される。ここで、座標特定部906は、センサ平面上における各検出対象物体の座標(x0,y0)を推定する。もちろん対象物体の正確な座標は、第2次検出処理を行った後の逆回転によって定まるものであるので、ここで用いる座標は、各候補領域を代表する位置(例:重心)である。
なお、第1次検出処理により、抽出された1つの候補領域に複数の物体が重なりあってしまうことも考えられる。例えば、ある人物の顔の上に、他の人物の顔が写ってしまうケースである。この場合、物体検出部119は、重なり合っている複数の物体を認識し、それぞれ別の候補領域となるように分離することが望ましい。第1次検出処理だけでは分離不能な場合は、候補領域の形や大きさを異ならしめることで、各候補領域を分離してもよい。もちろん、画像中で近傍に存在する複数の物体の回転角度は、元々近い値となる。よって、一つの候補領域としてまとめて扱ってしまってもよい。
ステップS1003で、回転補正部902は、各検出対象物体が正立するように、各検出対象物体のそれぞれの回転角度に応じて回転補正を実行する。この際に、例えば、各検出対象物体の中心(重心座標)をそれぞれの回転中心としてもよい。なお、各回転中心の座標データは、逆回転処理で使用するために、RAM114に記憶される。
図12Cは、回転補正された画像の一例を示す図である。各候補領域は、それぞれ異なる回転角度でもって回転補正されていることがわかる。
ステップS1004で、物体検出部119は、第2次検出処理を実行する。図12Dは、第2次検出処理の処理結果の一例を示す図である。枠内の各灰色点が、それぞれ検出された座標を表している。猫の顔に対応する候補領域は除外されていることもわかる。
ステップS1005で、逆回転部903は、検出された座標を、元の候補領域を回転させたときの回転中心及び回転角度ψにしたがって逆回転させた位置を計算する。図12Eは、元の画像における各検出点の座標を示す図である。各座標とも、個別の回転角度及び回転中心が適用されていることがわかる。
本実施形態によれば、撮像部の撮像平面上における各検出対象物体の位置に応じて、回転角度が算出される。よって、カメラ装置101の高さと、対象物体の高さとが異なる場合であっても、好適に回転補正し、各対象物体を検出できる。もちろん、第1の実施形態と同様に、従来よりも、少ない処理コストでかつ精度よく、物体を検出できるようになることはいうまでもない。
[第3実施形態]
特許文献4(特開2003−222509号公報)によれば、撮像装置について姿勢を検出する発明が開示されている。この発明によれば、姿勢センサで姿勢パラメータが取得される。次に、3次元位置が既知である複数の特徴点(ランドマーク)を撮像装置によって撮像する。そして、映像中の複数の特徴点に基づいて、姿勢パラメータが補正される。しかし、特許文献4に記載の発明は、ランドマークとなる特徴点と、その位置を三次元空間中に予め設定する必要がある。この設定作業は、煩雑であるため、好ましくない。撮像環境によっては、特定のランドマークを設置できないおそれもある。そこで、第3実施形態では、特定のランドマークを設置しないでも、精度良く撮像装置の姿勢パラメータを取得可能な姿勢キャリブレーション方法を提供する。また、パン・チルトなどの姿勢制御機構を備えた撮像装置へ適用可能な姿勢キャリブレーション方法が提供される。
[回転角度抽出処理]
図13Aは、顔検出結果の一例を示す図である。物体検出部119に含まれる顔検出器は、正立した顔画像を検出するものである。しかし、検出された顔画像は、正立状態から若干左に傾いている。1301は、顔があると判定された座標(検出点)を示している。
点線の円内は、前段特徴の存在すべき領域である。この領域は、前述の通り、最終層の一つ前の層におけるC層受容野によって実現されている。1302と1303は、それぞれ左目と右目の存在すべき各範囲を示す、目特徴に関する受容野である。1304は、口特徴の存在する範囲を示す受容野である。前述の通り、C層が、ある範囲の受容野を持つことで、低次特徴点の位置に関するロバスト性が達成される。それゆえ、この顔検出器は、正立状態からある程度回転した顔画像でも検出ができる。
すなわち、1301で示す位置に顔が存在すると検出された場合、前層であるS層の出力には、1302と1303が示す範囲にそれぞれ一つずつの目特徴が存在するはずである。また、1304で示す範囲には、口特徴が存在するはずである。図13Bは、前層であるS層の出力の一例を示す図である。
図13Bにおいて、1305は左目として検出された目特徴点を示している。1306は、右目として検出された目特徴点を示している。1308は、目特徴の誤検出点を示している。すなわち、実際には目が無かった位置に目特徴点が検出されてしまっている。1307は、口特徴の検出を示している。
ここで、センサ平面(画像平面)であるxy平面上で、右目特徴点(1306)から左目特徴点(1305)へのベクトルx eye=(xeye,yeye)を考える。検出された顔画像について、正立状態からの回転角度ψは、ベクトルx eyeとx軸との成す角度に等しくなる。
このように、回転角度ψが算出される。
以上は、正立した顔画像を基準として検出可能な顔検出器についての説明であった。ここで、この顔検出器が、例えば、±30°の範囲で、物体画像の回転角度についての許容性を備えているとする。このとき、60°ずつ回転した顔画像を基準とする検出可能な顔検出器を6つ用意すれば、360°すべてについて顔画像を検出できる。
顔検出器が、図8に関して説明したような畳み込みニューラルネットワーク(CNN)構造を採用しているとする。この場合、60°ごとの各基準角度に対応する各顔検出器は、最下位の低次特徴層までを含めた受容野を入力画像に対して60°ずつ回転させることによって得られる。
あるいは、入力画像を、原点を回転中心として60°ずつ回転した6枚の画像を順に顔検出器に入力すれば、基準角度の異なる6つの顔検出器により処理を行ったのと同等の処理となる。もちろん、この場合は、各特徴点や検出結果として得られる座標は、検出処理後に逆回転して元の座標系に戻す必要がある。
入力画像を、原点を中心として、任意の角度θimpで回転した画像を得るには、各座標の画素を以下の式に示す座標へ写像すればよい。
特徴点や検出点の逆回転補正した座標も同様に計算できる。
各顔検出器で検出された顔画像に対して、それぞれ(8.1)式で回転角度ψを求める。そして、回転角度ψに、その顔検出器の基準角度をオフセットとして加えれば、顔がどのように傾斜してもいても、その回転角度ψは算出可能となる。
ここでは、回転角度ψを計算するための低次特徴として二つの目特徴を用いた。しかし、顔特徴点と口特徴点を結ぶ直線のような、他の特徴点を利用してももちろん構わない。また、上述したように、顔以外の物体(机や箪笥などの直方体物体)を検出対象物体とする場合は、縦エッジの方向をそのまま角度計算に利用することもできる。このように検出対象物体の特性に合わせて、適切な特徴を選択すればよい。
本実施形態では、他の回転角度算方法が採用されてもよい。例えば、物体検出処理で説明したように、検出しようとする物体の種類によっては、テンプレートマッチング処理が有効な場合もある。この場合、対象物体を検出するための参照画像データを、所定の角度ずつ360°の全範囲で回転させることで、複数の参照画像データを用意する。そして、すべての参照画像データでマッチング処理を行い、最もマッチする参照画像の回転角度を、物体の回転角度として抽出できる。もちろん、隣接する他の複数の角度に係る参照画像データとのマッチング度合いに基づいて、連続的な値を算出するように回転角度算出部を構成しても構わない。このようなテンプレートを用いた回転角度算出処理は、物体検出処理と同時並行的に実行可能である。また、複数の角度算出方式を組み合わせて、より正確に、あるいは広い条件に適用できるようにすることも、もちろん可能である。
さらには、本実施形態に示す姿勢キャリブレーションの目的に限れば、顔のような複雑な物体検出に限る必要ももちろんない。例えば、撮像装置の設置箇所が屋内に限定されるような場合、部屋の壁のコーナー部や柱垂直線、あるいは机や直方体の縦方向エッジを用いることにすれば、遥かに容易かつ正確に、垂直方向の検出が可能となる可能性もある。野外においては、人口建造物や杉等の通常垂直に成長する植物類を利用することも考えられる。
[中心付近に正立物体が検出されるときの姿勢パラメータの算出]
ここで、姿勢キャリブレーションの一例を説明する。撮像装置100は、パン角やチルト角を所定のルールに従って変化させることで、撮像空間中をスキャンすることができる。その際に、撮像装置100が、センサ平面の中心部に正立状態の物体画像を捉えることができれば、姿勢キャリブレーションを実行できる。
この姿勢キャリブレーションは、固定的に設置される撮像装置に関しては、設置時あるいは起動時に少なくとも1回だけ実行されればよい。なお、算出した姿勢パラメータは、ROM113又はRAM114などの記憶部に保持され、その後の姿勢制御に使用される。一方、撮像装置100が、可動物体等に設置される場合は、姿勢が刻々と変化してしまう。よって、この場合、姿勢キャリブレーションは、必要に応じて適時行うようにする。
図14は、姿勢パラメータ算出装置として機能する制御部の一例を示すブロック図である。なお、すでに説明した個所と同一の個所には同一の参照符号が付されている。
姿勢制御部117は、カメラ装置101の光軸が一定の軌跡を描くようにカメラ装置101の姿勢(パン角、チルト角)を連続的に変更していく。その際に、物体検出部119は、撮像された画像に含まれる検出対象となる物体(例:顔)を検出する。回転角度算出部1401は、物体検出部119により検出された少なくとも2つの物体について、それぞれ正立状態からの回転角度ψを算出する。上述したように、回転角度ψ=tan−1(xeye/yeye)である。なお、回転角度ψを算出できるのであれば、他の算術式が採用されてもよい。姿勢パラメータ算出部1402は、算出された少なくとも2つの回転角度から撮像装置100の設置角度に関する姿勢パラメータ(設置角度Φv,Θv)を算出する。なお、位置算出部1403は、撮像された画像中における検出対象となる物体の位置(座標データ)を算出する。
図15は、本実施形態における姿勢キャリブレーションの流れを示すフローチャートである。本実施形態に係る姿勢キャリブレーションは、対象とする物体を検出し、検出された物体の画像中の角度から姿勢パラメータ(設置角度Φv,Θv)を決定する処理である。算出すべき設置角度は2変数Φv,Θvである。したがって、一組のパン角Φとチルト角Θに関する回転角度ψだけでは、2変数Φv,Θvを決定できない。したがって、少なくとも2つの物体を検出してそれぞれの回転角度を算出する必要がある。
ステップS1501で、姿勢制御部117は、検出対象物体を検出するためにスキャンを実行する。スキャンとは、カメラ装置101の光軸が一定の軌跡を描くようにカメラ装置101の姿勢(パン角、チルト角)を連続的に変更していくことである。ここでは、パン角とチルト角が所定の幅づつ変更される。
ステップS1502で、物体検出部119は、1つめの物体(第1物体)を検出するための第1検出処理を実行する。物体検出部119は、上述した顔検出器などを用いて、検出対象となる物体を検出する。物体検出部119は、例えば、撮像された画像の中心に位置する物体を検出する。中心とは、1点という意味ではなく、広がりをもった検出範囲(中心付近)を意味する。中心付近だけを検出範囲とすれば、画像の全域を検出範囲とする場合に比較し、処理負荷が軽減される利点がある。
ステップS1503で、物体検出部119は、第1物体を発見したか否かを判定する。発見できたときは、ステップS1504へ進む。発見できなかったときは、ステップS1501に戻り、パン角とチルト角が所定の幅だけ変更されて、次のスキャンが実行される。
なお、S1502での検出領域を画像全域とし、かつ、中心付近以外で物体が見つかったときは、その物体が中心へ来るように、姿勢制御部117が、パン角及びチルト角を変更してもよい。
ステップS1504で、回転角度算出部1401は、第1物体の回転角度ψaを算出する。回転角度ψaは、正立状態を基準としたときの物体の回転角度である。ここでは、第1物体は、算出された回転角度が0となる正立状態となっている物体とする。
ステップS1505で、判定部として機能するCPU112は、検出された物体が正立しているか否かを判定する。正立(ψa=0)していると判定したときは、そのときのパン角Φa及びチルト角ΘaをRAM114に記憶し、ステップS1506に進む。一方、非正立(ψa≠0)と判定したときは、S1501に戻って、正立状態の物体を検出しなおす。この場合、物体検出部119に含まれる顔検出器は、正立状態を基準角度とする1つのみでよい。つまり、先に説明したような360°すべての回転角度を検出できるように、複数の基準角度の検出器を用いる必要はない。
また、検出対象を1種類に限定する必要もない。物体検出部119は、撮像空間中に存在しうる複数種類の物体を検出すれば、正立状態の物体が撮像画像の中心に捉えられる確率が増加することになろう。ところで、正立していない物体の像が発見されたときに、そのパン角Φb及びチルト角Θbを記憶しておいてもよい。
ステップS1506で、姿勢制御部117は、ステップS1001と同様に、2つめの物体(第2物体)を検出するためにスキャンを実行する。ステップS1507で、物体検出部119は、ステップS1502と同様に、第2物体を検出するための第2検出処理を実行する。ここで発見されるべき第2物体は、回転角度は任意でよい。すなわち、第2物体の回転角度は非正立状態(ψ≠0)であってもよいのである。
ステップS1508で、判定部として機能するCPU112は、第1物体と異なる第2物体を検出したか否かを判定する。第2物体が発見されれば、ステップS1509に進む。第2物体を検出できなかったときは、ステップS1506に戻り、パン角やチルト角を変更して再スキャンが実行される。
ステップS1509で、回転角度算出部1401は、第2物体の画像中における回転角度ψbを算出する。また、第2物体が検出されたときのパン角、チルト角をΦb,Θbとする。
第2物体の種類は、第1物体と同じでもよいが、それぞれのパン角とチルト角は異なっていなければならない((Φa,Θa)≠(Φb,Θb))。つまり静止物体を対象とする場合には、異なった物体を撮像することになる。検出対象が移動物体である場合はもっと容易である。撮像装置100は、パン角・チルト角が(Φa,Θa)のときに検出された物体をそのまま追尾し続け、パン角・チルト角が(Φb,Θb)に変化したときの回転角度ψbを求めればよい。
また、S1507で、一般に、ψb≠0となる物体が取得されることになる。よって、S1502とは異なり、正立でない複数の基準角度の検出器を駆動する必要がある。
ステップS1510で、姿勢パラメータ算出部1402は、算出された少なくとも2つの回転角度ψa、ψbから撮像装置の設置角度に関する姿勢パラメータ(Φv,Θv)を算出する。
図16Aは、第1物体の一例を示す図である。図16Bは、第2物体の一例を示す図である。撮像画像1600において、第1物体の像1601は、正立状態にある。ここでは、xy座標の原点が、画像の中心となっている。この中心は、カメラ装置101が備える撮像センサの中心に一致し、また、光軸が通過する点でもある。
このときのパン角Φaとチルト角Θaは、図1Aで説明した雲台に内蔵されるパルスエンコーダ等によってカウントしているため、当然ながら既知の値である。
図17は、XYZ座標系においてZ軸方向から第1物体を見た様子を示す図である。パン角・チルト角が(Φa,Θa)のときに、画像中心で撮影された第1物体が正立であるということは、図17が示すように、直線V(直線L)がxz平面上に存在することを意味する。
設置角度のうちΦvは、定義からも図17からも明らかなように、パン角Φaと一致する(Φv=Φa)。ψa=0であれば、tan ψa=0である。よって、(4.8)式でΦ=Φv=Φあとした結果とも一致する。また、このときのチルト角Θaは任意で、どの角度であっても撮像物体は正立状態となる。
第2物体は、パン角・チルト角が(Φb,Θb)のときに、画像中心部にて撮像される。その状態が図16Bに示されている。第2物体の像1602の長さ方向は直線V,Lの方向であり、x軸を基準とした回転角度はψbであることが示されている。
ここで、S1509にて算出された回転角度ψbと、Φa,Θa,Φb,Θb、Φvとの関係は、(4.8)式から次式のようになる。
よって、Φvは次のように表現できる。
この(9.2)式をFbとおけば、Fbは、すでに既知の定数Φa,Φb,Θb、ψbから計算できる定数となる。よって、(9.2)式は、次のように表現できる。
以上により、姿勢パラメータ算出部1402は、2つの姿勢パラメータであるΦv,Θvを算出できる。
もちろん、本実施形態における姿勢キャリブレーションは、物体画像の回転要因として、図3Cで説明した要因を含んでいる場合にも有効である。また、撮像装置100が、対象とする被写体の存在する高さとほぼ等しい高さに設置されていることが明らかな条件では、画像中心部に位置しない物体画像を用いることも可能となる。これは、図3Bで説明した要因によってのみ物体画像の回転が生じている場合に相当する。ただし、被写体から撮像装置100が余りに近い場合には、角度の影響をシビアに受けるので、当てはまらないことには注意すべきである。
この条件のとき、ステップS1502の第1検出処理の検出範囲は、画像全域とする必要がある。中心部のみを検出範囲とする場合と比較し、S1502での処理時間は相対的に長くなる。しかし、検出範囲が広くなることで、正立している物体を発見できる確率は増える。また、この条件では、第2物体は、第1物体と同一でもよい。すなわち、パン角・チルト角をΦb,Θbとしたときに、第1物体が撮像画像1600内に収まっていればよい。逆に言えば、この範囲で物体が移動するように姿勢(光軸)を制御すればよいともいえる。このときの変化した角度ψbを用いて、姿勢パラメータΦv,Θvを計算できる。したがって、姿勢キャリブレーションに必要となるトータルでの処理時間は、大幅に短縮される可能性が高い。
さらに、この条件のとき、あるパン角・チルト角において画像中に複数の物体が検出されたとする。この場合、処理時間が許すならば、回転角度算出部1401は、検出されたすべての物体についてそれぞれ回転角度を算出し、その平均等を用いるようにしてもよい。このようにすると、より正確な回転角度を算出できる。
逆に、あるパン角・チルト角において撮像された複数の物体の回転角度が、画像中のどの位置においても同じこともある。この場合、図3Cで説明した要因が無いことになる。したがって、CPU112は、対象とする物体の存在する高さとほぼ等しい高さに撮像装置100が設置されていると判断できる。
[第4実施形態]
撮像装置100の設置箇所や姿勢によっては、どのようにスキャンを行っても、正立状態の物体画像を発見できないこともありうる。そこで、パン角・チルト角が異なる2つの組で、それぞれ中心付近で非正立状態にある2つの物体画像が取得されたときの姿勢キャリブレーションについて説明する。
図18は、他の姿勢キャリブレーションについてのフローチャートである。図15のフローチャートと比較して、同一のステップには同一の参照符号が付されている。なお、両者の違いは、第1物体が正立しているか否かの判定ステップ(S1505)が削除されている。また、姿勢角度を算出するためのステップS1510がS1810に置換されている。
図19は、第1物体の一例を示す図である。撮像画像1900において、第1物体の像1901は、x軸からψa(≠0)だけ回転した、いわゆる非正立状態にある。なお、第2物体の像は、図16Bに示したとおりである。もちろん、ψaとψbのいずれかが0であってもよいことはいうまでもない。
第1物体の回転角度ψaは、(9.1)式と同様にして導出される。
ここで、左辺をFaとおいて整理すると、次式が導出される。
したがって、次の関係が成立する。
ここで、Aa,Ba,Faは、それぞれ次の通りである。
これらは、いずれも規定の定数Θa,Φa及びψaから算出される定数となる。
第2物体に関しても、(10.4)式式と同様に考えると、次の式が得られる。
ただし、Ab,Bb,Fbは、それぞれ次の通りである。
したがって、次の二変数の連立方程式を解ければ、設置角度(Φv,Θv)を算出できる。
まず、(10.6)式より、次の関係が得られる。
これを(10.4)式に代入する。
すなわち、
として、まずΦvを算出できる。その上で、
となるSvを算出する。
このように、最終的にΘvも算出できる。
第4実施形態も、物体画像の回転要因として、図3Cで説明した要因が含まれている場合に有効である。また、第3実施形態と同様に、撮像装置100が、対象となる被写体の高さとほぼ等しい高さに設置されていれば、画像中心部に位していない物体画像を用いることも可能である。このとき同様に、(Φa,Θa)及び(Φb,Θb)が異なれば、検出対象物体は同一の物体でもよい。
[第5実施形態]
[1フレーム画像中の2箇所に物体が検出されたとき]
本実施形態では、(Φa,Θa)において撮像された1つの画像中に複数の検出対象物体が検出されたときに適用可能な姿勢キャリブレーションについて説明する。
図20は、複数の検出対象物体が存在する画像の一例を示す図である。撮像された画像2000には、第1物体2001と第2物体2002とが存在する。
図21は、他の姿勢キャリブレーションについてのフローチャートである。図15のフローチャートと比較して、同一のステップには同一の参照符号が付されている。なお、物体検出処理(S1502)においては、画像2000の全域が検出範囲に設定される。
ステップS2103で、判定部として機能するCPU112は、1つの画像中に複数の検出対象物体が存在するか否かを判定する。存在しなければ、ステップS1501に戻る。存在すれば、ステップS2104に進む。
ステップS2104で、回転角度算出部1401は、第1物体の回転角度ψa1を算出する。ステップS2105で、回転角度算出部1401は、第2物体の回転角度ψa2を算出する。なお、3以上の物体が検出されたときは、選択部として機能するCPU112が、物体間の距離が最大となるような2つの物体を選択する。距離が離れていた方が、相対的に計算誤差が少なくなると考えられるからである。
なお、位置算出部1403は、画像中における各物体の位置を算出する。第1物体の存在する撮像センサ平面上の座標を(xa1,ya1)とする。その回転角度をψa1とする。第2物体の存在する撮像センサ平面上の座標を(xa2,ya2)とする。その回転角度をψa2とする。
ステップS2106で、姿勢パラメータ算出部1402は、各物体についての回転角度ψa1、ψa2及び算出され位置(xa1,ya1)、(xa2,ya2)から姿勢パラメータ(Φv,Θv)を算出する
[同時に二つの対象物体が検出されたときの姿勢パラメータ計算処理]
ここで、ステップS2106におけるの姿勢パラメータ(設置角度)計算処理について詳細に説明する。
(7.1)式から、第1物体については、次式が得られる。
これらは、いずれも定数となる。ここで、次のような定数を考える。
これらの定数と(11.5)式から、tan ψa1が算出される。ここでは、tan ψa1=Fa1とおく。
(11.3)式を整理すると、(11.4)式ないし(11.6)式が得られる。
ここで、次式が成立する。
ただし、各定数は、次のとおりである。
同様に、座標(xa2,ya2)に位置するの第2物体に関して、次式が成り立つ。
ただし、各定数は、次のとおりである。
ここで、(11.7)式と(11.9)式を、(10.8)式と同様に、二変数の連立方程式となる。
よって、(10.9)式〜(10.13)式と同様に解けば、Φv及びΘvが算出される。
ただし、ここで、Svは、次のとおりである。
本実施形態の姿勢パラメータ計算処理は、第3、第4実施形態に比べれば多少複雑となる。しかし、実空間中に対象物体の存在する密度など、所定の条件を満たせば、スキャン時間が短縮されるため、姿勢パラメータキャリブレーションに必要となるトータルの処理時間は短縮されよう。
なお、本実施形態は、パン・チルト回転機構を備えない撮像装置にも適用可能である。この場合、常に、(Φa,Θa)は固定値とし、移動物体である検出対象物体が複数検出されたときの撮像画像を用いて、姿勢パラメータを算出すればよい。
本実施形態においても、図3B及び図3Cで説明した要因が複合して回転要因となっている場合でも適用可能である。
また、実施形態3以降において、2つより多くの対象物体が捉えられる場合には、これらを利用することにより、姿勢推定の精度を増すことが可能である。例えば、複数の対象物体の中から2ずつ選び出し、各々の組についての連立方程式を解いて推定された姿勢パラメータの平均を用いるようにすることができる。このときいくつかの計算結果の中から、かけ離れているものは除外するようにしてもよい。あるいは、検出された物体の信頼度に応じて、計算に用いる物体を選択・除外するようにしても、もちろんよい。
本実施形態によれば、撮像装置100の設置箇所や姿勢によっては、どのようにスキャンを行っても正立状態の物体画像を発見できない場合でも好適に姿勢パラメータを算出できる利点がある。