(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
図1は、本実施の形態に係る画像取得装置としての撮像装置1の外観を示す図であり、
図1(a)は正面図、
図1(b)は背面図である。
【0012】
この撮像装置1には、前面に撮像レンズ2が設けられており、上面部にはシャッタボタン3が設けられている。このシャッタボタン3は、半押し操作と全押し操作とが可能な、いわゆるハーフシャッタ機能を備えるものである。
【0013】
また、背面には、ファンクションキー4、カーソルキー5、および、表示部6が設けられている。カーソルキー5は、図中aの方向に回転可能なロータリースイッチとしての役割を果たす。
【0014】
図2は、撮像装置1の概略構成を示すブロック図である。この撮像装置1は、バスライン18を介して各部に接続された制御部17を備えている。制御部17は、撮像装置1の各部を制御するワンチップマイコンである。
【0015】
同図において、撮像レンズ2は、詳細には光学系部材を実装するレンズユニットである。また、駆動制御部7は、撮影者のズーム操作または撮影者のシャッタボタン3の半押し操作の検出による制御部17からのAF(自動合焦)処理に基づく制御信号に基づいて、撮像レンズ2の位置を移動させる回路部である。
【0016】
撮像部8は、CMOS等のイメージセンサからなり、上述の撮像レンズ2の光軸上に配置されている。
【0017】
ユニット回路9は、撮像部8から出力される被写体の光学像に応じたアナログの撮像信号を、デジタル信号に変換する回路である。このユニット回路9は、入力した撮像信号を保持するCDS(Correlated Double Sampling:相関2重サンプリング)回路と、AE(自動露出調整)処理等に伴って撮像信号を増幅するゲイン調整アンプ(AGC)、増幅された撮像信号をデジタルの撮像信号に変換するA/D変換器(ADC)等から構成されている。
【0018】
撮像部8の出力信号はユニット回路9を経て各々デジタル信号として画像処理部10に送られて、各種画像処理が施されるとともに、プレビューエンジン12にて縮小加工されて、表示部6に供給される。
【0019】
表示部6は、例えば16:9のアスペクト比を備えるLCD(Liquid Crystal Display:液晶ディスプレイ)からなる。この表示部6は、ドライバ回路を内蔵しており、プレビューエンジン12からデジタル信号とドライバ回路を駆動する駆動制御信号とが入力されると、デジタル信号に基づく画像をスルー画像として表示する。表示部6は、論理的に複数層の表示画面(これを「レイヤ」と呼ぶ)を表示させることが可能であり、下位レイヤ層に上記スルー画像を表示し、制御部17から出力されるメッセージやアイコンなどを上位レイヤ層に表示する。
【0020】
符号化/復号化処理部11は、画像取得時に、画像処理部10で処理された信号を、JPEG(Joint Photographic Experts Group)形式等の所定のファイル形式に圧縮、符号化、およびファイル化し、画像記録部14に記録させる。
一方、符号化/復号化処理部11は、画像再生時に、画像記録部14から読み出された画像ファイルを復号化し、表示部6に表示する。
【0021】
プレビューエンジン12は、上記スルー画像の生成の他、画像取得時に、画像記録部14に記録される直前の画像を表示部6に表示させる際に必要な制御を行う。
さらに、バスライン18には、プログラムメモリ15や撮影された画像を一時的に記憶するRAM16が接続されている。
プログラムメモリ15には、後述するフローチャートで示される画像取得処理を実行するためのプログラムが記憶される。
【0022】
制御部17は、プログラムメモリ15からプログラムを読み出して、デジタルカメラの各部を制御しながら、後述する画像取得処理を実行する。
【0023】
追従動作部13は、後述する画像取得処理プログラムの実行時に、後述する追従動作を実行する回路部である。
【0024】
次に、撮像装置1における画像取得処理について、以下に詳細に説明する。
【0025】
図3は、本実施形態に係る画像取得処理の全体処理を示すフローチャートである。この画像取得処理は、制御部17が、デジタルカメラの各部を制御しながら、プログラムメモリ15に記憶された画像取得処理プログラムを実行する処理として実現される。
【0026】
この画像取得処理プログラムは、例えばファームウェアとして、例えば特には図示しないメモリカード駆動部に挿入された可搬記録媒体であるメモリカード等からプログラムメモリ15にインストールすることが可能である。
【0027】
まず、ユーザは、ファンクションキー4およびカーソルキー5を操作して、例えば静止画像取得モードとし、さらに例えば花取得モードを選択する。すると、制御部17は、この操作を検出し、プログラムメモリ15から
図3のフローチャートで示される画像取得処理を実行する画像取得処理プログラムを読み出して実行を開始する。
【0028】
その後、制御部17は、ユーザによってシャッタボタン3が半押下されて、測光開始タイミングが開始指示されるまで待機する(
図3のステップS301の判定がNOの繰返し)。
【0029】
シャッタボタン3が半押下されてステップS301の判定がYESになると、制御部17は、以降、画像を順次取得する動作を開始する。具体的には、制御部17は、撮像部8、ユニット回路9、画像処理部10、プレビューエンジン12、および表示部6を制御する。これにより、所定のフレームレートで、撮像部8の出力信号がユニット回路9を経てデジタル信号として画像処理部10に送られて各種画像処理が施された後、プレビューエンジン12にて縮小加工されて表示部6にスルー画像として表示される(制御部17は画像撮像部として機能する)。
【0030】
これとともに、制御部17は、ステップS302、S303、S304の一連の処理によって、順次取得した画像から、AF、AEを実行する被写体領域となる周期性のある動作を行う制御対象領域を抽出する(制御部17は制御対象領域抽出部として機能する)。
【0031】
具体的には、制御部17はまず、例えば
図4に示されるように風に揺れる花の画像が撮像されている画像上で、
図4の矩形401として示されるような追従目標領域を、複数領域設定する。
図4の例では、一辺が縦画素数の1/11程度の画素数を有する矩形が例えば5行7列、合計35領域設定されている。追従目標領域401の矩形サイズは、入力画像の縦画素数に対する比が1/11程度が良好だが、これに限られるものではない。矩形は、隙間なく並べられてもよく、またオーバーラップして並べられてもよい。
制御部17は次に、スルー画像を取得する毎に、上述の追従目標領域401毎に追従動作を行って、動き情報を検出する(以上、
図3のステップS302)。追従目標領域401に対する追従動作の詳細は、
図6〜
図12の説明で後述する。
【0032】
制御部17は続いて、複数の追従目標領域401のうち動き情報が検出できた追従目標領域401毎に、動き平均座標、動き周波数、および動き振幅を検出する(
図3のステップS303)。
【0033】
そして、制御部17は、
図4に示される複数の追従目標領域毎401のそれぞれ毎に検出した動き平均座標、動き周波数、および動き振幅に基づいて、複数の追従目標領域401の中から、制御対象領域401(#A)を決定する(
図3のステップS304)。
図5は、本実施形態における制御対象領域401(#A)の抽出原理の説明図である。いま、
図4の画像において、複数の追従目標領域401のうち、花の領域上に設定された例えば1つの領域401(#A)に着目する。花が風に揺れて、画像中の花の領域の表示位置が、
図5に示されるように、時間tの経過(実線の矢印の方向)と共に変化すると、追従目標領域401(#A)に対して追従動作を行うと、追従目標領域401(#A)は、
図5の破線の矢印で示されるような軌跡で変化する。数秒程度の期間で観測すると、追従目標領域401(#A)のX座標値またはY座標値の軌跡は、画像の水平方向(X軸方向)または垂直方向(Y軸方向)に値が正弦波状に変化する1から5[Hz](ヘルツ)程度の周波数を有する周期性のある軌跡となる。
図5の例では、追従目標領域401(#A)のX座標値の軌跡が、画像の水平方向にゆっくりと正弦波状に変化していることを示している。一方、
図4の画像中の追従目標領域401(#B)などは、空などの背景領域に属するため、数秒程度の期間で観測してもその座標はほとんど変化しない。
そこで、制御部17は、ステップS303で抽出した動き周波数の値が1Hzから5Hzの間に入り、動き平均座標が画像の中央座標値から所定の範囲内にあり、かつ動き振幅が最大となる追従目標領域401を、制御対象領域401(#A)として選択する。
このようにして、本実施形態では、風に揺れる花のように周期性をもって揺れている被写体の領域を、入力されるスルー画像から制御対象領域401(#A)として自動的に抽出することが可能となる。
【0034】
次に、制御部17は、ステップS304で決定した制御対象領域401(#A)に対応する動き振幅に応じて、画像取得のためのシャッタ時間を決定する(
図3のステップS305)。一般に、花などの被写体が大きく揺れている場合には、被写体ブレを防ぐために、シャッタ時間は短く(シャッタ速度を速く)設定する必要がある。逆に、被写体が小さく揺れている場合には、シャッタ時間は長く(シャッタ速度を遅く)することができる。よって、制御部17は例えば、次式によってシャッタ時間を決定する。
シャッタ時間SH=coef/動き振幅
ここで、「coef」は、
図2の制御部17が出力するシャッタ制御値である。「動き振幅」は例えば正規化された値であり、定性的には、動き振幅が2倍になるとシャッタ時間SHは1/2に(シャッタ速度が2倍速く)設定される。
このようにして、本実施形態では、花の揺れる大きさに応じて、シャッタ時間(シャッタ速度)を自動的に設定することが可能となる。
【0035】
制御部17は、上述のように制御対象領域401(#A)を決定した後、ユーザによってシャッタボタン3が全押下されるまで、画像を順次取得する毎に、制御対象領域401(#A)に対してさらに追従動作を行って追従座標を順次算出する(
図3のステップS306)(制御部17は制御対象領域追従部として機能する)。
【0036】
制御部17は、ユーザによってシャッタボタン3が全押下されて画像取得タイミングが指示されると、制御対象領域401(#A)に対するそのタイミングにおける追従座標を基準として焦点を決定する(制御部17は焦点決定部として機能する)。また、制御部17は、ステップS305で決定したシャッタ時間で、その追従座標を基準にAE制御を行うことができる。そして、制御部17は、以上のAF、AE制御下で、ユニット回路9から出力され画像処理部10で処理されたデジタル信号を、符号化/復号化処理部11で圧縮、符号化、およびファイル化させ、画像記録部14に記録させる(以上、
図3のステップS307)(制御部17は画像取得部として機能する)。
【0037】
ここまでの実施形態の説明は、ユーザによってシャッタボタン3が全押下されたタイミングで静止画を取り込むことが想定されているが、動画の場合には同様に適用することができる。動画の場合には、ステップS306の処理は、シャッタボタン3が全押下(あるいは特には図示しない動画開始ボタンが押下)された後も継続して続行される。そして、制御部17は、それ以降、動画の取り込みタイミング毎に、各タイミングで算出されている追従座標を基準として、AFおよびAEを実行する。これにより、動画であっても、風に揺れる花に常に合焦しながら動画の各フレーム画像を順次取り込むことが可能となる。
【0038】
図6および
図7は、
図3のステップS302の、入力画像上で複数設定された追従目標領域毎に動き情報を検出する処理を示すフローチャートである。この処理は、制御部17がプログラムメモリ15に記憶されたプログラムを実行することにより実現されてもよいが、例えばDSP(デジタルシグナルプロセッサ)またはFPGA(フィールドプログラマブルアレイ)として実装される
図2の追従動作部13が実行する専用動作として実現されてもよい。以下の説明では、追従動作部13による専用動作として説明する。
【0039】
まず、追従動作部13は、プレビューエンジン12を介して初期スルー画像を取得して表示部6に表示する(
図6のステップS601)。
【0040】
次に、追従動作部13は、初期スルー画像の例えばコントラストの強い領域を適当に選んで、初期AF、AE、また必要に応じてAWB(オートホワイトバランス)の各処理を実行する(
図6のステップS602)。
【0041】
次に、追従動作部13は、初期スルー画像上で、
図4で説明した複数の追従目標領域401を設定する。以降の説明では、追従目標領域401の個数をM個とし、追従目標領域401をCj(0≦j≦M−1)として表す(以上、
図6のステップS603)。
【0042】
次に、追従動作部13は、カウンタ変数jを0に初期化した後(
図6のステップS604)、ステップS608でjを+1ずつしながら、ステップS609でjの値がMに等しくなったと判定されるまで、ステップS605で追従目標領域Cjを1つずつ選択する。そして、追従動作部13は、追従目標領域Cj毎に、ステップS606とS607で、追従動作の初期化の処理を実行する。
【0043】
まず、追従動作部13は、現在選択されている追従目標領域Cjについて、探索点および探索対象領域を生成する(
図6のステップS606)。
【0044】
具体的にはまず、現在選択されている追従目標領域Cjに対して、所定数の探索点Pが生成される。例えば、探索点Pの個数を256個とする。すると、探索点Pの座標は、P[num](Px[num],Py[num])(0≦num≦255)と表される。ここでは、探索点Pの個数を256個としたが、これに限らず、追従動作部13のプロセッサの処理能力に基づいて、適宜決定されてよい。
【0045】
次に、各探索点P[num]を中心とする所定範囲が探索対象領域T[num]として設定される。具体的には、この探索対象領域T[num]は、以下の式(1)で表される。
【0047】
具体的には、size=2とし、
図8に示されるように、探索対象領域Tを、各探索点Pを中心とする縦5画素、横5画素の範囲とする。なお、本実施形態では、理解の容易のためsize=2としたが、これに限らない。すなわち、追従精度を維持しつつ追従動作部13で実時間計測を行うため、4<size<10が望ましい。
【0048】
次に、追従動作部13は、現在選択されている追従目標領域Cjに対して、探索点および探索対象領域を初期化し、基準画素値を生成する(
図6のステップS607)。
まず、追従動作部13は、全ての探索点P[num]の初期座標を、追従目標領域Cjの中心に設定する。すなわち、現在選択されている追従目標領域Cjの中心の座標を(Fx,Fy)とすると、探索点P[num]の初期座標は、以下の式(2)のように表される。
【0050】
続いて追従動作部13は、探索対象領域T[num]の初期位置を、追従目標領域Cjとする。追従動作部13は、
図9に示されるように、1枚目の初期スルー画像のYUVの各色空間において、追従目標領域Cjを構成する画素Qの画素値を算出し、基準画素値B1、B2、B3として記憶する。
図9に示されるように、評価対象画像のY色空間をSr1、U色空間をSr2、V色空間をSr3とすると、基準画素値B1、B2、B3は、以下の式(3)〜(5)のように表される。
【0052】
ここでは、評価対象画像の色空間としてYUV色空間を用いているが、これに限らず、RGB色空間、HSV色空間、HLS色空間、OHHTA色空間などを用いてもよく、
図2の撮像装置1のスルー画像出力の色空間に応じて適宜選択されてよい。
【0053】
図6のステップS604からS609までの処理が実行されることにより、以上説明した
図6のステップS606とS607の初期化処理が、0≦j≦M−1である全ての追従目標領域Cjに対して実行される。
【0054】
上述の初期化処理の後、
図7のステップS701からS718の一連の処理により、スルー画像が順次取得されながら、各追従目標領域Cj(0≦j≦M−1)毎に、追従動作が実行される。
【0055】
まず、スルー画像のフレーム番号をカウントするための変数iの値が0に初期化された後(
図7のステップS701)、現在のフレームタイミングのスルー画像Fiが
図2のプレビューエンジン12を介して取得され、表示部6に表示される(
図7のステップS702)。
【0056】
次に、追従動作部13は、現在のスルー画像Fi上で、複数の追従目標領域Cj(0≦j≦M−1)を設定する(
図6のステップS703)。
【0057】
次に、追従動作部13は、カウンタ変数jを0に初期化した後(
図7のステップS604)、ステップS714でjを+1ずつしながら、ステップS715でjの値がMに等しくなったと判定されるまで、ステップS705で追従目標領域Cjを1つずつ選択する。そして、追従動作部13は、追従目標領域Cj毎に、ステップS706からS713までの一連の処理で、追従動作を実行する。
【0058】
まず、追従動作部13は、現在選択されている追従目標領域Cjが除外設定されているか否かを判定する(
図7のステップS706)。除外設定とは、その追従目標領域Cjにおいて周期性が認められないとして以降の追従動作を実行させないようにするための設定である。初期状態では、全ての追従目標領域Cjは除外設定されていない。
【0059】
追従目標領域Cjが除外設定されており
図7のステップS706の判定がYESなら、ステップS714に進んで変数jが+1され、次の追従目標領域Cjに対する処理に移る。
【0060】
追従目標領域Cjが除外設定されておらず
図7のステップS706の判定がNOなら、追従動作部13は、現在選択されている追従目標領域Cjについて、
図6のステップS606で生成しステップS607で初期化した探索点Pおよび探索対象領域Tについて、乱数による座標の更新を行う(
図7のステップS707)。
【0061】
具体的には、追従動作部13は、正規分布に従う乱数を用いて、全ての探索点P[num]の座標を更新する。すると、
図10に示されるように、探索点Pが乱数的に分布する。
図10には、理解を容易にするため、256個の探索点Pのうち20個のみが示されている。すなわち、平均μ、分散σ2の正規分布に従う乱数をN(μ,σ2)として、探索点P[num]の座標は、以下の式(6)のように更新される。
【0063】
次に、追従動作部13は、各探索点Pの重みを算出する(
図7のステップS708)。
【0064】
具体的には、追従動作部13は、評価対象画像のYUVの各色空間において、探索対象領域T[num]を構成する画素Qの画素値を算出する。そして、追従動作部13は、これら画素値と、
図6のステップS607で記憶した基準画素値B1〜B3との差分を類似度として算出し、この差分(類似度)が所定範囲内であるものの画素数を計数し、この個数を当該探索点Pの重みとする。
よって、重みが大きいということは、評価対象画像の探索対象領域T[num]と、スルー画像Fiの追従目標領域Cjとが類似していることを意味する。
【0065】
より具体的には、追従動作部13は、上下の閾値をTH1,TH2として、以下の式(7)〜(9)を満たすものの画素Qの個数をカウントし、重みPw[num]とする。
本実施形態では、sizeを2とし、各探索対象領域T[num]を構成する画素Qは25個としたので、重みPw[num]の最小値はゼロであり、最大値は25となる。
【0067】
次に、追従動作部13は、探索点Pのリサンプリングを行う(
図7のステップS709)。
【0068】
すなわち、追従動作部13は、探索点Pの重みPwの総和を所定値Nとする。次に、N個の識別子を生成し、これらN個の識別子のそれぞれを、重みPwに応じて探索点Pに対応付ける。つまり、探索点Pの重みPwが大きいほど、この探索点Pに対応する識別子の個数が多くなる。
【0069】
次に、追従動作部13は、N個の識別子の中の1つをランダムに選択する処理を、探索点Pの個数に等しい回数だけ繰り返し、この選択された識別子に対応する探索点Pを、新たな256個の探索点P[num]として記憶する。ここで、特定の探索点Pが複数回選択される場合があるが、この場合、特定の探索点Pを複数回記憶する。
【0070】
具体的には、追従動作部13は、
図11に示されるように、重みPwの総和であるNを1024とし、識別子として0〜1023までの整数を生成する。そして、これら1024個の整数のそれぞれを、重みPwに応じて探索点Pに対応付ける。
例えば、探索点P[23]は、重みPwが22であるため、0−21の整数に対応する
。探索点P[248]は、重みPwが22であるため、22−43の整数に対応する。
【0071】
次に、追従動作部13は、ゼロから1023の範囲内で乱数を256回発生させて、発生した乱数に等しい数値を1024個の整数の中から抽出し、この抽出した数値に対応する探索点Pを新たな探索点P[num]として記憶する。
【0072】
つまり、以上のステップS709の処理により、現在選択されている追従目標領域Cjについて、探索点P[num]の中から特定のものが選択されて、0〜255の番号が付されて、新たなP[num]として記憶される。
【0073】
具体的には、現在のスルー画像Fiにおける追従目標領域Cjに関する探索点Pの分布は、
図10に示す状態から
図12に示す状態となる。例えば、P[5]、P[6]は、乱数により選択されなかったため、消去される。一方、P[0]は、新たなP[92]、P[119]として記憶され、P[1]は、新たなP[208]として記憶され、P[2]は、新たなP[103]として記憶される。また、P[3]は、新たなP[139]として記憶され、P[4]は、新たなP[54]として記憶される。
【0074】
上記処理の後、追従動作部13は、新たな探索点P[num]の座標の分散Vを算出し(
図7のステップS710)、続いて、この分散Vが所定の閾値未満であるか否かを判定する(
図7のステップS711)。
【0075】
分散Vが所定の閾値未満でステップS711の判定がYESならば、追従動作部13は、現在選択されている追従目標領域Cjの現在入力しているスルー画像Fi上での新たな中心座標である追従座標Cj(i)を、次のようにして算出する(
図7のステップS712)。
すなわち、現時点で算出されている各探索点P[num]のX座標値に、それぞれの重み値が乗算され、それらの総和が算出され、その総和値が全探索点P[num]の重み値の総和値で除算され、その除算結果値が追従座標Cj(i)のX座標値とされる。
同様に、現時点で算出されている各探索点P[num]のY座標値に、それぞれの重み値が乗算され、それらの総和が算出され、その総和値が全探索点P[num]の重み値の総和値で除算され、その除算結果値が追従座標Cj(i)のY座標値とされる。
このようにして得られる追従座標Cj(i)が、現在選択されている追従目標領域Cjに対応する現在入力しているスルー画像Fiでの追従結果である。
【0076】
一方、分散Vが所定の閾値未満ではなくステップS711の判定がNOならば、これ以後現在選択されている追従目標領域Cjについては追従動作を中止させるために、現在選択されている追従目標領域Cjを除外設定する(
図7のステップS713)。
【0077】
以上、
図7のステップS705からS713の処理により、現在選択されている追従目標領域Cjについて、現在入力しているスルー画像Fiに対する追従動作が完了する。
【0078】
その後、追従動作部13は、カウンタ変数jを+1し(
図7のステップS714)、そのカウンタ変数jの値が追従目標領域Cjの最大個数Mに達したか否かを判定する(
図7のステップS715)。
【0079】
カウンタ変数jの値が最大個数Mに達しておらずステップS715の判定がNOなら、ステップS705に戻って、次の追従目標領域Cjが選択され、それに対して、現在入力しているスルー画像Fiに対する追従動作が実行される。
【0080】
追従動作部13は、現在のスルー画像Fiについて全ての追従目標領域Cj(
図4の全ての追従目標領域401)についての追従動作が完了し、カウンタ変数jの値が最大個数Mに達してステップS715の判定がYESになると、ユーザが
図3のステップS301でシャッタボタン3を半押下してから所定時間が経過したか否かを判定する(
図7のステップS716)。この所定時間は、入力画像上で各追従目標領域Cjについて周期的な動作をしているか否かを判定するのに十分な時間であり、数秒程度である。
【0081】
追従動作部13は、所定時間が経過しておらずステップS716の判定がNOならば、スルー画像Fiの入力フレーム数をカウントするためのカウンタ変数iの値を+1した後に(
図7のステップS717)、ステップS702に戻って、次のフレームのスルー画像Fiを入力し、それに対して、各追従目標領域Cjに対する追従動作を実行する。
【0082】
追従動作部13は、所定時間が経過しステップS716の判定がYESになると、変数Nにカウンタ変数iの値に+1した値をセットして(
図7のステップS718)、
図3のステップS302である
図6および
図7のフローチャートの処理を終了する。変数Nは、所定時間が経過するまでに入力されたスルー画像Fiのフレーム数を表している。
【0083】
図13は、
図6および
図7のフローチャートによる追従動作の説明図である。
図4に示される複数の追従目標領域401のうち、初期状態として花の領域上にある追従目標領域401(#A)および初期状態として花が無い背景の追従目標領域401(#B)に着目して、例えば
図13に示されるように連続する3フレームのスルー画像Fiが入力された場合を考える。
【0084】
追従動作部13による
図6および
図7のフローチャートで示される追従動作により、花の領域上の追従目標領域401(#A)に対応する探索点の分布は、
図13のV(#A)(#1)、V(#A)(#2)、V(#A)(#3)の破線領域内の黒丸の集合として示されるように変化する。
この場合には、花としての画像特徴量により、追従目標領域401(#A)の探索点の分布は、フレームの進行によってスルー画像Fi上で花の座標が変化しても、その変化に追従して花の領域上にまとまっている。このため、
図7のステップS710で算出される追従目標領域401(#A)の分散Vは、小さい値となる。
これにより、各探索点の分布領域V(#A)(#1)、V(#A)(#2)、V(#A)(#3)から
図7のステップS712で追従目標領域Cj=401(#A)に対応する各フレームの追従座標Cj(i)を算出することで、花の領域の動きを検出できるようになる。
【0085】
一方、追従動作部13による
図6および
図7のフローチャートで示される追従動作により、背景の領域上の追従目標領域401(#B)に対応する探索点の分布は、
図13のV(#B)(#1)、V(#B)(#2)、V(#B)(#3)の破線領域内の黒丸の集合として示されるように変化する。
この場合には、背景部分では画像特徴量は追従目標領域401(#B)の周囲もほとんど変化がないため、追従目標領域401(#B)の探索点の分布は、フレームの進行によってまとまりがなくなってゆく。このため、
図7のステップS710で算出される追従目標領域401(#B)の分散Vは大きくなってゆき、やがて
図7のステップS711の判定がNOとなる。この結果、
図7のステップS713により、その追従目標領域401(#B)は、花の動きを検出するための処理から除外設定されることになる。
【0086】
図14は、
図3のステップS303での、動き情報が検出できた追従目標領域毎に、動き平均座標、動き周波数、および動き振幅を検出する処理を示すフローチャートである。この処理は、
図3のステップS302(
図6および
図7のフローチャート)の場合と同様に、例えば追従動作部13による専用動作として実装されてよい。
【0087】
追従動作部13は、カウンタ変数jを0に初期化した後(
図14のステップS1401)、ステップS1413でjを+1ずつしながら、ステップS1414でjの値がMに等しくなったと判定されるまで、ステップS1402で追従目標領域Cjを1つずつ選択する。
さらに、追従動作部13は、ステップS1402で選択した追従目標領域Cjが除外設定されているか否かを判定する(
図14のステップS1403)。追従動作部13は、追従目標領域Cjが除外設定されておりステップS1403の判定がYESならば、ステップS1413に進んで、次の追従目標領域Cjに対する処理に移る。
このようにして、追従動作部13は、動き情報として追従座標Cj(i)が検出できた追従目標領域Cjに対してのみ、以下のステップS1404からS1412の動作を実行する。
【0088】
追従動作部13は、現在選択されている追従目標領域Cjに関して、
図7のステップS712でフレームi=0からN−1までのNフレームのスルー画像Fi(0≦i≦N−1)で算出された追従座標群Cj(i)(0≦i≦N−1)を読み出す。そして、追従動作部13は、追従座標群Cj(i)(0≦i≦N−1)のX座標値群を変数CXj(i)(0≦i≦N−1)に、Y座標値群を変数CYj(i)(0≦i≦N−1)にそれぞれセットする(
図14のステップS1404)。
【0089】
次に、追従動作部13は、ステップS1404でセットされたX座標値群CXj(i)の平均値CAXjと、Y座標値群CYj(i)の平均値CAYjを算出する。これにより、追従動作部13は、現在選択されている追従目標領域Cjの追従座標群Cj(i)に対応する動き平均座標CAj(CAXj,CAYj)を算出する(
図14のステップS1405)。
この座標は、現在選択されている追従目標領域CjがNフレーム分のスルー画像Fi(0≦i≦N−1)中で動くときの、動きの中心座標になる。
【0090】
次に、追従動作部13は、動き平均座標のX座標値(動き平均X座標値)CAXjと各追従座標Cj(i)のX座標値CXj(i)とで差分を計算することにより各X差分値DXj(i)を算出する。追従動作部13はさらに、各X差分値DXj(i)の絶対値|DXj(i)|の最大値を算出し、その最大値を、現在選択されている追従目標領域Cjに対応する動きX振幅AXjとする(
図14のステップS1406)。
【0091】
同様に、追従動作部13は、動き平均座標のY座標値(動き平均Y座標値)CAYjと各追従座標Cj(i)のY座標値CYj(i)とで差分を計算することにより各Y差分値DYj(i)を算出する。追従動作部13はさらに、各Y差分値DYj(i)の絶対値|DYj(i)|の最大値を算出し、その最大値を、現在選択されている追従目標領域Cjに対応する動きY振幅AYjとする(
図14のステップS1407)。
【0092】
続いて、追従動作部13は、動きX振幅AXjが動きY振幅AYj以上であるか否かを判定する(
図14のステップS1408)。
【0093】
追従動作部13は、動きX振幅AXjが動きY振幅AYj以上でステップS1408の判定がYESならば、動きX振幅AXjを現在選択されている追従目標領域Cjに対応する動き振幅Ajと決定する(
図14のステップS1409)。
【0094】
そして、追従動作部13は、ステップS1406で算出したNフレーム分のX差分値群DXj(i)を、例えば高速フーリエ変換、離散コサイン変換、ウエーブレット変換等の計算アルゴリズムにより周波数解析する。追従動作部13は、その解析により得られる周波数成分値の中から、電力値がピークとなる周波数を算出し、そのピーク周波数を、現在選択されている追従目標領域Cjに対応する動き周波数Mjと決定する(
図14のステップS1410)。
【0095】
追従動作部13は、動きX振幅AXjが動きY振幅AYj以上ではなくステップS1408の判定がNOならば、動きY振幅AYjを現在選択されている追従目標領域Cjに対応する動き振幅Ajと決定する(
図14のステップS1411)。
【0096】
そして、追従動作部13は、ステップS1406で算出したNフレーム分のY差分値群DYj(i)を、例えば高速フーリエ変換、離散コサイン変換、ウエーブレット変換等の計算アルゴリズムにより周波数解析する。追従動作部13は、その解析により得られる周波数成分値の中から、電力値がピークとなる周波数を算出し、そのピーク周波数を、現在選択されている追従目標領域Cjに対応する動き周波数Mjと決定する(
図14のステップS1412)。
【0097】
以上のステップS1404からS1412の一連の処理により、追従動作部13は、現在選択されている追従目標領域Cjに対応する動き平均座標CAj、動き振幅Aj、および動き周波数Mjを算出する。
【0098】
ステップS1410またはS1412の処理の後、追従動作部13は、カウンタ変数jを+1し(
図14のステップS1413)、そのカウンタ変数jの値が追従目標領域Cjの最大個数Mに達したか否かを判定する(
図14のステップS1414)。
【0099】
カウンタ変数jの値が最大個数Mに達しておらずステップS1414の判定がNOなら、ステップS1402に戻って、次の追従目標領域Cjに対する上述の処理が実行される。
【0100】
追従動作部13は、全ての追従目標領域Cjに対応する動き平均座標CAj、動き振幅Aj、および動き周波数Mjの算出処理が完了し、カウンタ変数jの値が最大個数Mに達してステップS1414の判定がYESになると、
図3のステップS303である
図14のフローチャートの処理を終了する。
【0101】
以上の追従動作部13の処理に基づいて、制御部17が、前述した
図3のステップS304の処理において、動き周波数Mjの値が1Hzから5Hzの間に入り、動き平均座標CAjが画像の中央座標値から所定の範囲内にあり、かつ動き振幅Ajが最大となる追従目標領域Cjを、
図4の制御対象領域401(#A)として選択する。
このようにして、本実施形態では、風に揺れる花のように周期性をもって揺れている被写体の領域を、入力される数秒分のNフレームスルー画像Fi(0≦i≦N−1)から、制御対象領域401(#A)として自動的に抽出することが可能となる。
【0102】
図15は、
図3のステップS306での、シャッタボタンの全押下まで制御対象領域について追従動作を実行する処理を示すフローチャートである。この処理は、
図3のステップS302やS303の場合と同様に、例えば追従動作部13による専用動作として実装されてよい。
【0103】
追従動作部13は、ステップS1511でユーザによりシャッタボタン3が全押下されたと判定されるまで、ステップS1501でプレビューエンジン12(
図2)を介してフレーム時間が経過する毎にスルー画像を取得し、各スルー画像について制御対象領域401(#A)(
図4参照)の追従動作を実行する。
【0104】
まず、追従動作部13は、ステップS1501で取得したスルー画像上で、
図3のステップS304で選択した制御対象領域401(#A)を設定して、
図4の各画像に示されるようにして、表示部6に表示する。
【0105】
次に、追従動作部13は、
図3のステップS302の処理の最終フレームにおいて、
図7のステップS707で算出されている制御対象領域401(#A)の探索点および探索対象領域を、現在のフレームのスルー画像に対する探索点および探索対象領域の初期値として生成する(
図15のステップS1503)。
【0106】
続いて、追従動作部13は、
図7のステップ707、S708、S709、およびS710と同様にして、乱数による全ての探索点および探索対象領域の座標の更新(
図14のステップS1504)、各探索点の重みの算出(
図14のステップS1505)、探索点のリサンプリング(
図14のステップS1506)、および探索点の座標の分散の算出(
図14のステップS1507)の各処理を実行する。
【0107】
上記処理の後、追従動作部13は、ステップS1507で算出した分散が所定の閾値未満であるか否かを判定する(
図15のステップS1508)。
【0108】
分散が所定の閾値未満でステップS1508の判定がYESならば、追従動作部13は、制御対象領域401(#A)の現在入力しているスルー画像上での新たな中心座標である追従座標を、
図7のステップS712の場合と同様にして算出する(
図14のステップS1510)。
このようにして得られる追従座標が、制御対象領域401(#A)に対応する現在入力しているスルー画像での追従結果である。
【0109】
一方、分散が所定の閾値未満ではなくステップS1508の判定がNOならば、制御対象領域401(#A)に対して追従動作を行うことができなくなったため、ユーザにエラー表示を行って例えば再度のシャッタボタン3の半押下動作を促す(
図15のステップS1509)。
【0110】
以上、
図15のステップS1503からS1510の処理により、制御対象領域401(#A)について、現在入力しているスルー画像に対する追従動作が完了する。
【0111】
その後、追従動作部13は、ユーザによってシャッタボタン3が全押下されたか否かを判定する(
図15のステップS1511)。
【0112】
追従動作部13は、シャッタボタン3が全押下されておらずステップS1511の判定がNOならば、ステップS1501に戻って、次のフレーム時間のスルー画像を入力し、それに対して制御対象領域401(#A)に対する追従動作を実行する。
【0113】
追従動作部13は、シャッタボタン3が全押下されてステップS1511の判定がYESになると、
図3のステップS306である
図15のフローチャートの処理を終了し、その直前のステップS1510で得られている追従座標を、画像取得のための制御対象領域401(#A)の座標として出力する。
これに対して、制御部17は、前述した
図3のステップS307で、その追従座標を基準としてAF、AE動作を実行し、画像を取得する。
【0114】
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
指示された測光開始タイミング以降、画像を順次撮像し、
前記順次取得した画像から周期性のある動作を行う被写体を制御対象領域として抽出し、
前記画像を順次取得する毎に、前記制御対象領域に対して追従動作を行って追従座標を順次算出し、
指示された画像取得タイミングまたはそれ以降、前記算出された追従座標に対して焦点を決定し、
該決定した焦点で前記画像を取得する、
ことを特徴とする画像撮像方法。
(付記2)
前記制御対象領域の前記周期性のある動作の度合いに基づいてシャッタ時間をさらに決定し、
前記画像を取得するときに、該取得を前記決定したシャッタ時間でさらに行う、
ことを特徴とする付記1に記載の画像撮像方法。
(付記3)
前記制御対象領域を抽出する手順において、
前記画像上で追従目標領域を複数領域設定し、
前記画像を取得する毎に前記追従目標領域毎に追従動作を行って前記動き情報を検出し、
前記複数の追従目標領域のうち動き情報が検出できた追従目標領域毎に、動き平均座標、動き周波数、および動き振幅を検出し、
前記追従目標領域毎に検出した動き平均座標、動き周波数、および動き振幅に基づいて、前記追従目標領域の中から前記制御対象領域を決定する、
ことを特徴とする付記1または2のいずれかに記載の画像撮像方法。
(付記4)
前記動き振幅が大きいほど短くなるようにシャッタ時間を決定する、
ことを特徴とする付記3に記載の画像撮像方法。
(付記5)
前記画像を取得する毎に前記追従目標領域毎にまたは前記制御対象領域について追従動作を行う手順において、
前記取得した画像中の前記追従目標領域または制御対象領域において、該領域中の画像特徴量を記憶するとともに、所定数の探索点を生成する初期設定を実行し、
乱数を用いて、前記所定数の探索点の座標を更新し、
前記追従目標領域または制御対象領域の画像特徴量と前記画像における前記更新した各探索点の画像特徴量とを比較して該画像特徴量同士の各類似度を算出し、
該類似度が高いほど重みを大きくして前記更新した各探索点に対して重み付けを行い、
前記各探索点を該探索点の重み付けに応じて選別し、
前記選別した探索点の座標の分散を算出し、
該分散が所定の閾値に比較して小さい場合に、前記選別した探索点の座標の重みつき平均として前記追従目標領域または前記制御対象領域に対応する追従座標を算出する、
ことを特徴とする付記1ないし4のいずれかに記載の画像撮像方法。
(付記6)
指示された測光開始タイミング以降、画像を順次撮像する画像撮像部と、
前記順次取得した画像から周期性のある動作を行う被写体を制御対象領域として抽出する制御対象領域抽出部と、
前記画像を順次取得する毎に、前記制御対象領域に対して追従動作を行って追従座標を順次算出する制御対象領域追従部と、
指示された画像取得タイミングまたはそれ以降、前記算出された追従座標に対して焦点を決定する焦点決定部と、
該決定した焦点で前記画像を取得する画像取得部と、
を備えることを特徴とする画像撮像装置。
(付記7)
指示された測光開始タイミング以降、画像を順次取得し、
前記順次取得した画像から周期性のある動作を行う被写体を制御対象領域として抽出し、
前記画像を順次取得する毎に、前記制御対象領域に対して追従動作を行って追従座標を順次算出し、
指示された画像取得タイミングまたはそれ以降、前記算出された追従座標に対して焦点を決定し、
該決定した焦点で前記画像を取得する、
手順をコンピュータに実行させるためのプログラム。