以下、本発明の実施形態について、添付図面を用いて詳細に説明する。ここでは、本発明の実施形態に係る撮像装置として、所謂、デジタルカメラを取り上げることとするが、本発明はこれに限定されるものではない。撮像機能を有する他の装置、例えば、デジタルビデオカメラ、携帯電話、スマートフォン、その他の携帯型電子機器等として実施されても良い。
(第一の実施形態)
本発明の第一の実施形態では、露光中の期間における動きベクトルを用いた動き解析結果に基づき、露光終了のタイミングを決めることにより、ぶれの少ない画像を撮像する撮像装置の説明を行う。以下、本発明の第一の実施形態について説明する。
図1は、本発明第一の実施形態に係る撮像装置100の構成例を示すブロック図である。撮像装置100は、第一の撮像システム110、第二の撮像システム120、および、操作部材130より構成される。
まず、第一の撮像システム110について説明する。第一の制御回路111は、例えばCPUやMPUなどのプロセッサである。第一の制御回路111は、第一の撮像システム110が備える各ブロックの動作プログラムを後述の第一のROM112より読み出し、後述の第一のRAM113に展開して実行することにより第一の撮像システム110が備える各ブロックの動作を制御する。また、第一の制御回路111は、第一の撮像システム110および第二の撮像システム120の全体の動作を統括し、制御する。第一のROM112は、電気的に消去および記録が可能な不揮発性メモリであり、第一の撮像システム110が備える各ブロックの動作プログラムに加え、各ブロックの動作に必要なパラメータ等を記憶する。第一のRAM113は、書き換え可能な揮発性メモリであり、第一の撮像システム110が備える各ブロックの動作において出力されたデータの一時的な記憶領域として用いられる。
第一の光学系114は、ズームレンズ、フォーカスレンズを含むレンズ群で構成され、被写体像を後述の第一の撮像素子115に結像する。第一の撮像素子115は、例えば複数色のカラーフィルタを備えたCCDやCMOSセンサ等で構成されている。第一の撮像素子115は、第一の光学系114により第一の撮像素子115に結像された光学像を光電変換し、得られたアナログ画像信号を第一のA/D変換回路116に出力する。また、第一の撮像素子115は、操作部材130に含まれるシャッタボタンが全押しされたタイミングに基づき露光を開始し、後述の露光終了のタイミング生成回路200より出力された露光終了のタイミングを指示する信号に基づき露光を終了する。第一のA/D変換回路116は、入力されたアナログ画像信号をデジタル画像信号に変換し、得られたデジタル画像データを第一のRAM113に出力する。
第一の画像処理回路117は、第一のRAM113に記憶されている画像データに対して、ホワイトバランス調整、色補間、ノイズ補正、ガンマ処理、輝度/色差信号への変換、および、収差補正など、様々な画像処理を適用する。画像出力回路118は、第一の画像処理回路117で処理された画像データを、第一のRAM113を介して受け取り、外部装置に出力するための回路である。具体的には、撮像装置100に着脱可能な記録メディアに対して画像データの読み出しや書き込みを行ったり、無線あるいは有線通信機能を用いてスマートフォンやサーバーなどと画像の送受信を行ったりする。表示装置119は、LCDや有機ELディスプレイ等の表示デバイスであり、第一のRAM113に記録した画像を表示する。
次に、第二の撮像システム120について説明する。第二の制御回路121は、例えばCPUやMPUなどのプロセッサである。第二の制御回路121は、第二の撮像システム120が備える各ブロックの動作プログラムを後述の第二のROM122より読み出し、後述の第二のRAM123に展開して実行することにより第二の撮像システム120が備える各ブロックの動作を制御する。第二のROM122は、電気的に消去および記録が可能な不揮発性メモリであり、第二の撮像システム120が備える各ブロックの動作プログラムに加え、各ブロックの動作に必要なパラメータ等を記憶する。第二のRAM123は、書き換え可能な揮発性メモリであり、第二の撮像システム120が備える各ブロックの動作において出力されたデータの一時的な記憶領域として用いられる。
第二の光学系124は、ズームレンズ、フォーカスレンズを含むレンズ群で構成され、被写体像を後述の第二の撮像素子125に結像する。第二の撮像素子125は、例えばCCDやCMOSセンサ等の撮像素子であり、第二の光学系124により第二の撮像素子125に結像された光学像を光電変換し、得られたアナログ画像信号を第二のA/D変換回路126に出力する。第二の撮像素子125は、動きやぶれを検出するために用いる素子であるため、必ずしも複数色のカラーフィルタを備えている必要はなく、単色(ホワイト)のフィルタや赤外フィルタを備えた構成としてもよい。第二のA/D変換回路126は、入力されたアナログ画像信号にデジタル画像信号に変換し、得られたデジタル画像データを第二のRAM123に出力する。
第二の画像処理回路127は、第二のRAM123に記憶されている画像データに対して、簡易的なノイズ補正やガンマ処理など、様々な画像処理を適用する。第二の撮像素子125が複数色のカラーフィルタを備えているのであれば、色補間、あるいは輝度信号への変換処理も行う。また、第二の画像処理回路127は、タイミング生成回路200を具備しており、第二のRAM123に記憶されている画像データを用いた動き解析結果に基づき、第一の撮像素子115の露光終了のタイミングを指示する信号を生成する。なお、露光終了のタイミングを指示する信号は、第二の制御回路121を介して第一の撮像システム110に出力される。第一の撮像システム110ではこの信号を受け取ると、第一の制御回路111が第一の撮像素子115の露光を終了させるよう制御する。
操作部材130は、ユーザからの指示を受け付ける操作部材であり、シャッタボタンやダイヤルキーを含む。また、表示装置119がタッチパネル機能を備えるようにしてもよい。ユーザがこれらの操作部材を操作することで生成される信号は、第一の撮像システム110と第二の撮像システム120の駆動制御に反映される。
なお、ここでは第一の撮像システム110と第二の撮像システム120が、撮像装置100として一体的に構成されている例を上げて説明を行ったが、これに限られるものではない。例えば、第一の撮像システム110と操作部材130がカメラ本体であり、第二の撮像システム120は、カメラ本体と着脱可能な撮像装置としてもよい。つまり、第二の撮像システム120は、外部の撮像装置に着脱可能な撮像装置であってもよい。また、第一の撮像システム110が一眼レフカメラであるとするならば、第一の光学系114を含む交換レンズ装置は、第一の撮像素子115乃至表示装置119、および、操作部材130を含むカメラ本体に対して着脱可能な構成となる。
また、第二の制御回路121の機能を第一の制御回路111が兼用するようにすれば、第二の制御回路121を省くことも可能である。また、第二の撮像システム120は第二の光学系124、第二の撮像素子125、第二のA/D変換回路126、および、第二のRAM123のみを有し、他の構成要素を第一の撮像システム110が兼用するようにしてもよい。こうすることで、第二の撮像システム120を別のカメラ装置とした場合に、その構成を簡素化することが可能となる。
ここで、第一の撮像素子115が記録用の画像を生成することを目的とするのに対して、第二の撮像素子125は素早く移動する被写体の動きを検出することを目的としており、必要とされるフレームレートが互いに異なる。図12(a)に、本実施形態における第一の撮像素子115と第二の撮像素子125の構成を比較した表を示す。本実施形態では、第一の撮像素子115のフレームレートが20fps(フレーム/秒)であるのに対し、第二の撮像素子125のフレームレートは1000fpsであるものとする。
そのため、第二の撮像素子125は、第一の撮像素子115よりも、より短い露光時間となるシャッタスピードを設定することができる。そして、このシャッタスピードを実現可能とするため、第二の撮像素子125は第一の撮像素子115よりも感度を高くする必要がある。そこで、第二の撮像素子125は、第一の撮像素子115に対して、画素数を減らす代わりに、画素ピッチが大きくなるように構成されている。具体的には、図12(a)に示すように、撮像部の水平サイズは第一の撮像素子115が36mmであるのに対して、第二の撮像素子125は4mmである。水平画素数は第一の撮像素子115が6400画素であるのに対して、第二の撮像素子125は640画素である。画素ピッチは第一の撮像素子115が5.62μmであるのに対して、第二の撮像素子125は6.25μmである。
次に、第二の撮像システム120の第二の画像処理回路127が具備する、タイミング生成回路200の構成について図2を用いて説明する。このタイミング生成回路200は、第二の撮像素子125が高速のフレームレートで撮像して第二のRAM123に記憶した画像データの動きベクトルを検出することで、動きの解析を行う。この画像データは、第二の撮像素子125が複数色のカラーフィルタを備えた構成であるならば、色補間や輝度信号への変換処理が先に行われており、各画素が同じ成分の信号を備えているものとする。そして、この動きの解析結果に基づいて、第一の撮像素子115の露光終了のタイミングを決定し、第一の撮像素子115の露光を終了させるための信号を、第一の撮像システム110に出力する。
図2は、第一の実施形態に係るタイミング生成回路の構成例を示すブロック図である。図2において、タイミング生成回路200は、動きベクトル算出回路201、累積量算出回路202、代表累積量算出回路203およびタイミング決定回路204より構成する。
次に、本発明の第一の実施形態の撮像装置100における高速撮影モードにおける撮像処理について、図3および図4のフローチャートを用いて説明する。図3および図4は、第一の実施形態の高速撮影モードにおける撮像処理のフローチャートである。図3のフローチャートは撮像装置100の電源がオンになると開始される。
ステップS301において、第一の制御回路111は撮影モードが設定されているかを判定し、設定されていなければステップS302に進み、設定されていればステップS305に進む。
ステップS302において、第一の制御回路111はぶれレベルの設定メニューが選択されているかを判定し、他の処理が選択されていればステップS303に進み、ステップS303において他の処理を行う。第一の制御回路111はぶれレベルの設定メニューが選択されていれば、ステップS304に進む。
ステップS304において、第一の制御回路111は表示装置119にぶれレベル設定のための画面の表示し、ユーザによる操作部材130の操作結果に応じて、ぶれのレベルを設定する。例えば、第一の表示装置119にぶれレベルが「標準」から「低」に向けて段階的なレベルが表示され、ユーザが選択できるようになっている。ユーザが「低」に近い段階のぶれレベルを選択するほど、撮像した画像に含まれるぶれが小さくなるように、後述する閾値が設定される。本実施形態では、ユーザが最もぶれが小さくなるぶれレベル「低」を選択したものとして説明を行う。
ぶれレベルが選択されると、第一の制御回路111は、第一の撮像システム110におけるぶれ許容値を決定し、第二の制御回路121は、このぶれ許容値に基づいて後述のステップS322で用いる閾値を設定する。ぶれレベル「低」の場合、ぶれ許容値は許容錯乱円径に設定されるものとする。ここで許容錯乱円径とは、明視距離250mmで写真を観察するときに、視力1.0の観察者が解像可能な限界値を表し、36×24mmの撮像素子上では約20μmになる。本発明第一の実施形態では第一の撮像素子115の4画素分のピッチ22.48μm(5.62×4)を許容錯乱円径とする。ぶれレベルおよび閾値の設定を終えると、ステップS301に戻る。
ステップS305において、第一の制御回路111は第一の撮像素子115を起動する。
ステップS306において、第一の制御回路111は撮影モードとして高速撮影モードが選択されているかを判定し、選択されていなければステップS307に進み、ステップS307においてその他の撮影モードの処理を行う。第一の制御回路111は、高速撮影モードが選択されていればステップS308に進む。
ステップS308において、第一の制御回路111は第一の撮像素子115から得られる被写体のコントラスト値、あるいは、不図示の測距センサの出力に基づいて、第一の光学系114を駆動して自動フォーカス制御(AF)を行う。
ステップS309において、第一の制御回路111は第一の撮像素子115から得られる被写体の輝度値に基づいて、第一の撮像素子115のための自動露出制御(AE)を行う。
ステップS310において、第一の制御回路111は操作部材130に含まれるシャッタスイッチが半押しされることによって、シャッタスイッチ内のSW1がオンになったかを判定し、オンになるまでステップS308およびS309を繰り返す。
ステップS310においてSW1がオンになると、ステップS311において、第二の制御回路121は第二の撮像素子125を起動する。
ステップS312において、第一の制御回路111は、SW1がオンになった際に選択された主被写体に対して、第一の光学系114を用いたAFを行う。
ステップS313において、第一の制御回路111は、SW1がオンになった際に選択された主被写体に対して第一の撮像素子115のためのAEを行う。
ステップS314において、第二の制御回路121は、第一の制御回路111から第一の光学系114のズーム情報を受信し、第二の光学系124のズーム状態を制御する。この第二の光学系124のズーム状態を制御について、図5を用いて説明する。
図5は、SW1がオンされたときの撮像装置100と被写体500の位置関係を説明するための図である。図5において、撮像装置100の第一の光学系114は焦点距離300mmであり、40m先を0.3m/sec(300mm/sec)で移動する被写体500を撮像しようとしている。なお、被写体500は第一の光学系114の光軸近傍を移動しているものとする。以降の説明において、40m先を物面と呼ぶ。また、被写体500の移動速度は、被写体500までの距離情報と、フレーミング中に得られる画像から後述の動きベクトルを算出することで計測することができる。
また、本実施形態における第一の光学系114の結像倍率は、被写体までの距離÷焦点距離で求められるため、40×1000÷300=133.3となる。
第一の撮像素子115の全体が捉えている物面での被写体の画角は、133.3×5.62×6400/1000=4795.7mmである。
ここで、SW1がオンになる前は、第一の撮像システム110と第二の撮像システム120で得られる画像の画角が同じであるとする。このとき、第二の光学系124の結像倍率は4795.7×1000÷6.25÷640=1198.9であり、焦点距離は40×1000÷1198.9=33.3mmである。また、このとき第二の撮像素子125における単位画素あたりの物面での被写体サイズは、1198.9×6.25÷1000=7.5mmである。この値に後述する動きベクトルの算出の分解能を掛け合わせた値が第二の撮像素子125で捉えることができる動きの分解能となる。動きベクトルの算出の分解能を0.5画素とすると、動きの分解能は7.5×0.5=3.75mmとなる。
一方、第一の撮像素子115における単位画素あたりの物面での被写体サイズは、133.3×5.62÷1000=0.75mmとなり、ぶれ許容値は4画素分なので0.75×4=3.0mmとなる。そのため、このままでは第二の撮像素子125の動きの分解能よりもぶれ許容値のほうが小さいので、第二の撮像素子125を用いたとしても、第一の撮像素子115のぶれが許容値以下であるかを判定することができない。
そこで、第二の制御回路121は第二の光学系124の焦点距離を望遠側に移動してズームを行い、第二の撮像素子125における動き検知の分解能を上げる。
300mm/secで移動する被写体400がぶれ許容値3.0mmに達する時間は3.0÷300×1000=10.0msecである。
そのため、第二の撮像システム120における単位フレーム(1msec)あたりに求められる動きの分解能は3.0÷10.0÷0.5=0.6mmとなる。
そこで、第二の制御回路121は、第二の光学系124の結像倍率を0.6×1000÷6.25=96.0、焦点距離を40×1000÷96.0=416.6mmに移動すれば、動きの分解能がぶれ許容値よりも細かくなる。こうすることで、第二の撮像素子125で得られた画像データを用いて動き検知結果に基づいて、第一の撮像素子115の露光終了のタイミングを制御し、被写体400を許容錯乱円径以下のぶれで撮像することが可能となる。
なお、第二の光学系124を望遠側にズームしているので、第二の撮像素子125の画角は第一の撮像素子115と異なっており、第二の撮像素子125の画角は、96.0×6.25×640/1000=384.0mmである。このように焦点距離を大きくし、ズーム位置を望遠側に移動すると画角が狭くなるため、光軸近傍以外に被写体が存在する場合には、被写体が視野外になってしまう可能性がある。その場合、公知の光軸や撮像素子の位置を移動する技術を用いて、光軸から外れた領域に視野を移動することができる構成とするのがよい。
図3に戻り、ステップS315において、第二の制御回路121は、SW1がオンになった際に選択された主被写体の情報に基づいて第二の光学系124を用いたAFを行う。
ステップS316において、第二の制御回路121は、SW1がオンになった際に選択された主被写体の情報に基づいて第二の撮像素子115のためのAEを行う。
ステップS317において、第一の制御回路111は操作部材130に含まれるシャッタスイッチが全押しされることによって、シャッタスイッチ内のSW2がオンになったかを判定し、オンになるまでステップS312乃至S316を繰り返す。
ステップS317においてSW2がオンになると、図4のステップS318において、第一の制御回路111は、ステップS313にて行ったAEの結果に基づいて露光期間を設定し、第一の撮像素子の露光を開始する。
ステップS319において、第二の制御回路121は、1000fps、あるいは、第一の撮像素子115に対して設定されたフレームレートの所定倍(例えば、50倍)となるフレームレートを設定し、第二の撮像素子125の露光を開始する。第二の撮像素子125は設定したフレームレートに応じた露光時間に達すると、得られたアナログ画像信号を第二のA/D変換回路126に出力するとともに、すぐさま次の露光を開始する処理を繰り返す。すなわち、第一の撮像素子115の1回の露光期間の間に、それよりも早いフレームレートで、第二の撮像素子125の露光が繰り返し行われる。
ここで、図6は、第一の撮像素子115、第二の撮像素子125、および、タイミング生成回路200による動作を説明するための図である。図6の時刻T0において、ユーザによりシャッタボタンが全押しされてSW2がオンになると、すぐさま第一の撮像システム110における第一の撮像素子115は露光を開始する。さらに、第二の撮像システム120における第二の撮像素子125は高速フレームレートで画像の撮像を開始する。第二の撮像素子125は、SW2がオンになった時刻T0の後は、時刻T1、時刻T2、時刻T3・・・において短い露光時間で連続して撮像を行う。
ステップS320において、タイミング生成回路200内の動きベクトル算出回路201が、第二の撮像素子125で得られた画像データのフレーム間における動きベクトルおよび動きベクトルの信頼度を算出する。動きベクトルとは、フレーム間における被写体の水平方向の移動量と垂直方向の移動量をベクトルとして表したものである。動きベクトルの算出方法について、図7乃至図9を用いて詳しく説明する。
図7は、動きベクトル算出回路201による動きベクトルおよび動きベクトルの信頼度の算出処理を示すフローチャートである。図8は動きベクトルの算出方法を説明するための図であり、図8(a)はM番目フレームの画像データを示す図であり、図8(b)はM+1番目フレームの画像データを示す図である。また、図8(c)は、M番目フレームとM+1番目フレームの間における動きベクトルを示す図である。図8(c)の動きベクトルは、簡略化のため、代表的な動きベクトルのみを記載している。なお、Mは正の整数である。図9は、ブロックマッチング法による動きベクトルの算出方法を説明するための図である。なお、本実施形態では、動きベクトルの算出手法として、ブロックマッチング法を例に挙げて説明するが、動きベクトルの算出手法はこの例に限定されず、例えば勾配法でもよい。
図7のステップ701において、動きベクトル算出回路201には、時間的に隣接する2つのフレームの画像データが入力される。そして、動きベクトル算出回路201は、M番目フレームを基準フレームに設定し、M+1番目フレームの参照フレームに設定する。
図7のステップ702において、動きベクトル算出回路201は、図9のように、基準フレーム901において、N×N画素の基準ブロック902を配置する。
図7のステップ703において、動きベクトル算出回路201は、図9のように、参照フレーム903に対し、基準フレーム901の基準ブロック902の中心座標と同座標904の周囲(N+n)×(N+n)画素を、探索範囲905として設定する。
図7のステップ704において、動きベクトル算出回路201は、基準フレーム901の基準ブロック902と、参照フレーム903の探索範囲905内に存在する異なる座標のN×N画素の参照ブロック906との相関演算を行い、相関値を算出する。相関値は、基準ブロック902および参照ブロック906の画素に対するフレーム間の差分絶対値の和に基づき算出する。つまり、フレーム間の差分絶対値の和の値が最も小さい座標が、最も相関値が高い座標となる。なお、相関値の算出方法は、フレーム間の差分絶対値の和を求める方法に限定されず、例えばフレーム間の差分二乗和や正規相互相関値に基づく相関値を算出する方法でもよい。図9の例では、参照ブロック906が最も相関が高いことを示しているとする。なお、公知の技術を用いて動きベクトルをサブピクセル単位で算出することができる。具体的には、図10に示す連続した相関値データC(k)において、下記(1)~(4)式による3点内挿の手法を用いる。
x=k+D÷SLOP・・・(1)
C(x)=C(k)-|D|・・・(2)
D={C(k-1)-C(k+1)}÷2・・・(3)
SLOP=MAX{C(k+1)-C(k)、C(k-1)-C(k)}・・・(4)
ただし、図10ではk=2である。
なお、本発明第一の実施形態ではサブピクセル単位の分解能を0.5画素とする。また、(1)はx成分に関する式だが、同様にしてy成分も算出できる。
図7のステップ705において、動きベクトル算出回路201は、ステップ704で求めた最も高い相関値を示す参照ブロックの座標に基づいて動きベクトルを算出し、その動きベクトルの相関値を動きベクトルの信頼度とする。図9の例の場合、参照フレーム903の探索範囲905の中で、基準フレーム901の基準ブロック902の中心座標に対応した同座標904と、参照ブロック906の中心座標に基づき動きベクトルが求められる。つまり、同座標904から参照ブロック906の中心座標までの座標間距離と方向が動きベクトルとして求められる。また、その動きベクトル算出時における参照ブロック906との相関演算結果である相関値が動きベクトルの信頼度として求められる。なお、動きベクトルの信頼度は、基準ブロックと参照ブロックとの相関値が高いほど高くなる。
図7のステップ706において、動きベクトル算出回路201は、基準フレーム701の全画素について動きベクトルを算出したか否か判定する。動きベクトル算出回路201は、ステップ706において全画素の動きベクトルを算出していないと判定した場合には、ステップ702に処理を戻す。そして、ステップ702では、動きベクトルが算出されていない画素を中心として前述した基準フレーム701にN×N画素の基準ブロック902が配置され、以下前述同様に、ステップ703からステップ705の処理が行われる。すなわち、動きベクトル算出回路201は、図9の基準ブロック902を移動させながら、ステップ702からステップ705までの処理を繰り返して、基準フレーム901の全画素の動きベクトルを算出する。この動きベクトルの例を図8(c)に示す。図8の例では、図8(a)のM番目のフレームと図8(b)のM+1番目のフレームの間で、人が左から右に移動している例を示している。このように被写体が移動している場合の動きベクトルの代表例を図8(c)に示している。図8(c)に示す動きベクトルは、M番目のフレームに存在している被写体位置を動きベクトルの始点とし、それに対応するM+1番目のフレームの被写体位置を動きベクトルの終点としている。なお、動きベクトル算出回路201は、全画素の動きベクトルを算出するのではなく、全画素よりも少ない所定画素において動きベクトルを算出してもよい。
以上のような処理により、時間的に隣接する2枚の高速撮像フレーム間における動きベクトルおよび動きベクトルの信頼度を算出する。
なお、被写体の移動速度が変化する場合もある。そのため、時間的に隣接する2つのフレーム間における動きベクトルの大きさから物面における移動速度に換算し、前述の計算方法で、第一の撮像素子115の露光中に第二の光学系の焦点距離、結像倍率、画角を適宜変更する構成とするのがよい。
次に、動きベクトル算出回路201が、第二の撮像素子125から得られた画像データに対して動きベクトルおよび動きベクトルの信頼度を算出する時系列動作について、図6を参照して説明する。
動きベクトル算出回路201は、時刻T1において、時刻T0と時刻T1で得られた画像データのフレーム間の動きベクトルおよび動きベクトルの信頼度を前述の図7のフローチャートの処理に基づき算出する。その後、時刻T2において、時刻T1と時刻T2で得られた画像データのフレーム間の動きベクトルおよび動きベクトルの信頼度を算出する。時刻T3以後、同様の処理を繰り返し、第二の撮像素子125から得られた画像データのフレーム間における動きベクトルおよび動きベクトルの信頼度を算出する。
以上が、図4のステップS320における動きベクトルの算出方法についての説明である。
図4に戻り、ステップS321において、累積量算出回路202は、ステップ320において算出した動きベクトルを複数フレームにおいて追跡し、動きベクトルの累積量を算出する。そして、代表累積量算出回路203は、算出した動きベクトルの累積量に基づき、フレーム全体を代表する代表累積量を決定する。
まず動きベクトルの累積量の算出方法について、図11を用いて説明する。図11は、ステップS320において算出した複数のフレーム間の動きベクトルを示す図である。なお、説明の簡略化のため、時刻T0から時刻T3までの期間における動きベクトルの累積量の算出方法について説明するが、それ以降の期間に関しても同様の方法で動きベクトルの累積量を算出するものとする。
図11において、動きベクトル1101は、図6の時刻T0のフレームと時刻T1のフレームとの間で算出された動きベクトルを示す。動きベクトル1102は、図6の時刻T1のフレームと時刻T2のフレームとの間で算出された動きベクトルを示す。動きベクトル1103は、図6の時刻T2のフレームと時刻T3のフレームとの間で算出された動きベクトルを示す。
累積量算出回路202は、時刻T0と時刻T1のフレーム間で算出した動きベクトル1101の終点座標Qを始点座標とする動きベクトルを、時刻T1と時刻T2のフレーム間で算出した動きベクトルの中から検索する。そして、条件を満たす動きベクトル1102を、動きベクトル1101と連結する。また、累積量算出回路202は、時刻1と時刻T2のフレーム間で算出した動きベクトル1102の終点座標Rを始点座標とする動きベクトルを、時刻T2と時刻T3のフレーム間で算出した動きベクトルの中から検索する。そして、条件を満たす動きベクトル1103を、動きベクトル1102と連結する。これ以降の期間においても同様の処理により、動きベクトルを連結していく。
このような複数フレームにおける動きベクトルの連結処理を時刻T0で算出した全ての動きベクトルに対して行うことにより、全画素の追跡動きベクトルを算出する。なお、算出した追跡動きベクトルにより、時刻T0において座標Pに存在した被写体が、時刻T1では座標Qに移動し、時刻T2では座標Rに移動し、時刻T3では座標Sに移動したことが分かる。
次に、累積量算出回路202が、追跡動きベクトルに基づき、動きベクトルの累積量を算出する方法について説明する。
累積量算出回路202は、式(5)のように追跡動きベクトルの長さを動きベクトルの累積量(VecLen)として算出する。
VecLen=VecLen1+VecLen2+VecLen3・・・(5)
VecLen1は、時刻T0と時刻T1のフレーム間で算出した動きベクトル1101の動きベクトルの長さを示す。VecLen2は、時刻T1と時刻T2のフレーム間で算出した動きベクトル1102の動きベクトルの長さを示す。VecLen3は、時刻T2と時刻T3のフレーム間で算出した動きベクトル1103の動きベクトルの長さを示す。累積量算出回路202は、式(5)に基づき、追跡動きベクトルを構成する動きベクトルの長さの総和を動きベクトルの累積量として算出する。以上のような動きベクトルの累積量の算出処理を全画素の追跡動きベクトルに対して行い、全画素の動きベクトルの累積量を算出する。
なお、累積量算出回路202は、動きベクトルの信頼度が所定値よりも低い動きベクトルに関しては、式(5)による動きベクトルの長さの総和処理から除外しても良い。また、累積量算出回路202は、動きベクトルの信頼度が所定値よりも低い動きベクトルおよび時間的にそれ以降の動きベクトルに関しては、式(5)による動きベクトルの長さの総和処理から除外しても良い。これにより、動きベクトルの信頼度が高い動きベクトルのみを用いた動きベクトルの累積量を算出することができる。また、それぞれの動きベクトルをX方向の成分とY方向の成分に分離し、それぞれの方向毎に動きベクトルの長さの総和を求めるようにしてもよい。
次に、代表累積量の算出方法について説明する。代表累積量算出回路203は、フレーム内の全画素から得られた動きベクトルの累積量のうちの最大値を選択し、選択した最大の動きベクトルの累積量を代表累積量として決定する。このような処理をフレーム毎に行うことにより、図6に示すように、フレーム毎に1つの代表累積量を算出する。
なお、代表累積量算出回路203による代表累積量は、フレーム内の全画素の動きベクトルの累積量のうちの最大値に基づくものに限られるものではなく、フレーム内の全画素の動きベクトルの累積量の平均値や中央値でも良い。また、動きベクトルの累積量をX方向の成分とY方向の成分に分離した場合には、それぞれの方向における代表累積量を決定するようにしてもよい。
図4に戻り、ステップS322において、タイミング決定回路204は、代表累積量が閾値以上になったかを判定し、閾値以上になっていなければステップS323に進む。
ステップS323において、第一の撮像システム110の第一の制御回路111は、第一の撮像素子115の露光時間がステップS313で行ったAEに基づいて設定された露光時間に達したかを判定し、達していなければステップS322に戻る。第一の撮像素子の露光時間がステップS313で行ったAEに基づいて設定された露光時間に達していれば、ステップS325に進む。
ステップS325において、第一の制御回路111は第一の撮像素子115の露光を停止する。
反対に、ステップS322において、タイミング決定回路204は代表累積量が閾値以上なっていればステップS324に進む。
ステップS324において、タイミング決定回路204は、第一の撮像システム110に露光終了を指示するための信号を出力する。この処理は、代表累積量が閾値以上になったことが判定されるとすぐに行われる。図6に示す例では、時刻T8までの各フレーム間で算出した動きベクトルに基づく代表累積量が閾値以上になっている。そのため、この時点でタイミング決定回路204は、第二の制御回路121を介して、第一の撮像システム110に露光終了を指示するための信号を出力する。なお、X方向とY方向で別々に代表累積量を求めた場合には、いずれか一方の代表累積量が閾値以上となった場合に、露光終了を指示するための信号を出力する。
つまり、代表累積量が閾値以上になったことが判定されるとすぐにステップS325に進み、第一の制御回路111は、第一の撮像素子115の露光時間が適正時間に達していなくとも第一の撮像素子115の露光を停止する。そして、第一の制御回路111は、第一の撮像素子115によって生成されたアナログ画像信号を第一のA/D変換回路116に出力する。そして、A/D変換回路116で生成されたデジタル画像データは第一の画像処理回路117で所定の処理が施され、記録用の画像データとして画像出力回路118に出力される。画像出力回路118は、撮像装置100に着脱可能な記録メディアに対して記録用の画像データの書き込みを行ったり、無線あるいは有線通信機能を用いてスマートフォンやサーバーなどの外部装置に記録用の画像データを送信したりする。
図6に示す例では、第一の制御回路111は、時刻T8よりわずかに後のタイミングで第一の撮像素子115の露光を停止することになる。実際には、第二の撮像素子125において時刻T8のフレーム画像が生成されてから代表累積量が得られるまでの算出時間や、タイミング決定回路204から出力された信号が第一の制御回路111に到達するまでの時間がタイムラグとして生じる。しかしながら、これらのタイムラグを考慮して閾値を設定するようにすれば、タイムラグによる影響を抑えることができる。
ステップS326おいて、第二の撮像システム120の第二の制御回路121は、第二の撮像素子125の露光を停止する。
ステップS327において、第一の撮像システム110の第一の制御回路111は、撮影モードが選択されたままであるかを判定し、撮影モードのままであればステップS306に戻り、別のモードが選択されていればステップS302に戻る。
以上説明したように、第一の実施形態においては、第一の撮像素子115の露光期間中の被写体の動き量に基づいて、第一の撮像素子115の露光を終了させるため、ぶれの少ない画像を撮像することができる。
なお、ステップS322において代表累積量と比較される閾値を調整することによって、ぶれの大きさを調整することができる。例えば、この閾値をぶれの無い移動量相当の値に設定することにより、ぶれが発生する前に第一の撮像素子115の露光を終了させることができる。
また、図3のステップ302において、ユーザがぶれレベル「標準」を選択した場合の閾値を、例えば許容錯乱円径の3倍に相当する値に設定すれば、それに応じたぶれの含まれる画像を撮像することが可能である。その場合、ステップ314において、焦点距離を望遠側に移動する量も少なくなり、第二の撮像システム120はより広い画角の画像を参照し、動きベクトルの算出を行うことになる。
また、第一の実施形態では、タイミング決定回路204は、代表累積量が閾値以上になったタイミングで露光終了を指示する例について説明を行ったが、これに限られるものではない。例えば、タイミング決定回路204は、得られた最新の代表累積量が閾値以上になっていない場合だとしても、次フレームで代表累積量が閾値を大きく超えることが予想される場合は、現フレームに基づき露光終了を指示しても良い。次フレームにおいて代表累積量が閾値を大きく超える場合は、次フレームのタイミングで露光終了を指示したとしても、ぶれが発生してしまう。そのため、次フレームにおいて代表累積量が閾値を大きく超えることが予想される場合は、現フレームにおいて露光終了を指示する。なお、閾値を大きく超えるか否かの判定としては、上述した閾値より十分に値の大きな第二の閾値を設定し、次フレームにおける代表累積量の予測値がこの第二の閾値以上となるか否かを判定すればよい。
次フレームにおける代表累積量の予測値(VecLen_PRED)は、例えば、式(6)のように最新の動きベクトル長を2倍した動きベクトルの累積量に基づき算出すればよい。
VecLen_PRED=VecLen1+VecLen2+2×VecLen3・・・(6)
式(6)では、最新の動きベクトル長は、時刻T2と時刻T3のフレーム間で算出したVecLen3としている。このように次に得られる動きベクトルの累積量の予測値を全画素に対して算出し、そのフレームの最大値を代表累積量とする。
また、第一の実施形態では、タイミング決定回路204から出力された信号に基づいて、撮像素子115のフレーム全体の露光を終了する例について説明したが、これに限られるものではない。例えば第一の撮像素子115が、ライン、領域、あるいは、画素毎に露光時間を制御できる構成であれば、タイミング決定回路204は、第一の撮像素子115のこれらの部分毎の累積量に基づいて露光終了の信号を出力するようにしてもよい。また、フレーム全体を分割ブロックに分割し、分割ブロックを代表する累積量に基づき、分割ブロック毎に露光終了の信号を出力しても良い。
また、第一の実施形態では、累積量算出回路202は、追跡動きベクトルの長さとして、連結した動きベクトル各々の長さの総和を動きベクトルの累積量として算出する例について説明したが、これに限られるものではない。図9のような追跡動きベクトルを構成する各動きベクトル、または、各動きベクトルの一部が同一座標を通過する場合は、同一座標を通過する長さを式(5)による動きベクトルの長さの総和処理から除外しても良い。これにより、例えば、隣接座標を行き来するような微小な周期的動き(反復運動)の被写体に対して、動きベクトル長を過分に加算してしまうことを抑制することができる。
また、第一の実施形態によれば、第二の撮像システム120の焦点距離、結像倍率、および、画角を変更して得た画像を用いた動き解析結果に基づき、第一の撮像素子115の露光終了のタイミングを決めている。そのため、第一の撮像素子115と第二の撮像素子125で解像度が異なる仕様であっても、ぶれの少ない画像を撮像することができる。
なお、第一の実施形態では、第二の光学系124の焦点距離を望遠側に移動することで動きの分解能を上げたが、一般的なレンズにおいて焦点距離を望遠側に移動するとF値が大きくなり、画像が暗くなる。その分、明るくするために感度を上げるとノイズが多くなり、動きベクトルの算出精度が悪化してしまう。そこで、第二の撮像素子125で得られる画像のノイズ成分の大きさに応じて、焦点距離の最大移動量に制限を設ける構成としてもよい。
(第二の実施形態)
次に、本発明の第二の実施形態について説明を行う。第二の実施形態では、サンプリングピッチに基づき、累積量算出回路202が、動きベクトル算出回路201で算出された動きベクトルを、第一の撮像システム110に適した値に換算するための処理を行う。なお、本実施形態において、サンプリングピッチとは、タイミング生成回路200において動きを解析する際に参照する画像の画素間隔のことを指し、画素を間引かずに参照すれば、画素ピッチがサンプリングピッチとなる。反対に、第二の撮像素子125における画素の読み出し時に加算や間引きを行ったり、画素間の補間処理を行ったりすることで、サンプリングピッチは画素ピッチと異なる値となる。また、読み出す画素の数は同じであっても、ローパスフィルタを適用して画像データの周波数帯域を制限することで、実質的なサンプリングピッチを変更することも可能である。
また、第二の実施形態では、第一の実施形態に対して、第二の撮像素子125の構成が一部異なる。図12(b)に、本実施形態における第一の撮像素子115と第二の撮像素子125の構成を比較した表を示す。
この図12(b)より、第二の撮像素子125は第一の撮像素子115と、撮像部の水平サイズ、水平画素数、画素ピッチは同じであるが、高速のフレームレートで画像を取得するために、読み出す画素数が少なくなっている。なお、読み出す画素数を変えることで、フレームレートを変更することも可能である。
さらに、第一の実施形態では、第二の光学系124の焦点距離は変更できる構成であったが、第二の実施形態では、第二の光学系124の焦点距離は固定されている。ここで、第二の撮像素子125から得た画像における動き解析結果に基づき、第一の撮像システム110の露光終了のタイミングを決める。そのため、第二の撮像システム120の動きの分解能のほうが、第一の撮像システム110の動きの分解能よりも高い必要がある。そのため第二の光学系124の焦点距離は、第一の光学系114の最大焦点距離よりも長い焦点距離で固定されることが望ましい。
次に、本発明の第二の実施形態の撮像装置100における高速撮影モードにおける撮像処理について、図13および図14のフローチャートを用いて説明する。図13および図14は、第二の実施形態の高速撮影モードにおける撮像処理のフローチャートである。なお、第一の実施形態の図3および図4のフローチャートと同じ処理を行うステップについては、図3および図4と同じステップ番号を付与している。ここでは、第一の実施形態と異なる処理について説明を行う。
なお、第二の実施形態において、撮像装置100と被写体の関係は図5と同じ状態であり、第二の光学系124の焦点距離は、第一の光学系114の焦点距離は300mmよりも長い600mmに固定されているものとする。
図13のステップ301乃至ステップS313の処理は、図3のステップS301乃至ステップS313と同様である。
図13のステップ1314において、第二の制御回路121は、第二の撮像素子125における読み出し位置を決定する。第二の制御回路121は、図5における被写体500が視野内に含まれるように、第二の撮像素子125の撮像部において信号を読み出す領域を設定する。読み出す位置を変更することで、被写体が光軸近傍以外に移動したとしても、視野内に被写体を捉え続けることが可能である。また、本発明第一の実施形態と同様に光軸や撮像素子を移動することで更に視野を移動することも可能である。
図13のステップS315乃至図14のステップS320の処理は、図3のステップS315乃至図4のステップS320と同様である。
図14のステップS1421において、累積量算出回路202がステップS320で算出された動きベクトルに対し、サンプリングピッチに基づく換算処理を行う。この換算処理の方法について詳しく説明する。
まず、40m先の被写体を焦点距離600mmで撮像する際の結像倍率は40×1000÷600=66.6である。また、第一の撮像素子115においてぶれが許容値以下となる画像を撮像するめに、第二の撮像システム120に求められる単位フレーム(1msec)あたりの動きの分解能は、第一の実施形態と同じく0.6mmである。これを満たすサンプリングピッチは、0.6×1000÷66.6=9.0μmである。図12(b)より第二の撮像素子の画素ピッチは5.62μmなので、9.0μm相当になるように動きベクトルを換算する。例えばステップS320で算出した動きベクトルが1.2画素であった場合、換算後の動きベクトルは1.2×9.0÷5.62=1.92画素となる。この加算後の動きベクトルを用いて、ステップS321で代表的な累積量を算出し、ステップS322で代表累積量が閾値以上になったかを判定する。
ここで、第一の撮像システム110と第二の撮像システム120において、動き解析の分解能を示す結像倍率とサンプリングピッチ(ここでは画素ピッチ)の積の値を計算する。第一の撮像システム110は5.62×133.3=749.1μmであり、第二の撮像システム120は9.0×66.6=599.4μmであるので、第二の撮像システム120の方が、細かい動きを分解できる(分解能が高い)ことがわかる。また、第一の光学系114の焦点距離が可変であると、結像倍率とサンプリングピッチの積の値も焦点距離に応じて変化する。その場合、第二の撮像システム120における結像倍率とサンプリングピッチの積が、第一の撮像システム110における結像倍率とサンプリングピッチの積の最小値以下となるように第二の光学系124の焦点距離などを設計すればよい。
図14のステップS321乃至ステップS327の処理は、図4のステップS321乃至ステップS327の処理と同様である。
なお、被写体の移動速度が途中で変化する場合もある。そのため、連続するフレームから算出した動きベクトルの大きさに基づいて、第一の撮像素子115の露光中に動きベクトルを換算するためのサンプリングピッチや、第二の撮像素子125の読み出し解像度を適宜変更してもよい。
このように、第二の実施形態では、サンプリングピッチに基づき、第二の撮像システム120において算出した動きベクトルを第一の撮像システム110に沿うように換算することで、正確な露光終了のタイミングを決めることができる。また、第二の撮像システムの光学系の焦点距離が固定されている場合であっても、第一の撮像システム110に得られた画像における被写体の動き量を精度良く検出することができる。なお、本実施形態では動きベクトルを第一の撮像システム110に沿うように換算する例をあげて説明を行ったが、ステップS322で代表累積量と比較する閾値を、第二の撮像システム120に沿うように換算する構成としてもよい。
(第三の実施形態)
次に、本発明の第三の実施形態について説明を行う。第三の実施形態は、動きベクトルではなく、フレーム間の差分絶対値を用いた動き解析結果に基づいて露光終了のタイミングを決める点が、第一の実施形態とは異なる。
具体的には、第三の実施形態では、第二の撮像システム120の第二の画像処理回路127が、図2におけるタイミング生成回路200の代わりに、タイミング生成回路1500を有している。
まず、第二の画像処理回路127が具備するタイミング生成回路1500の構成について、図15を用いて説明する。
図15は、第三の実施形態に係るタイミング生成回路1500の構成例を示すブロック図である。図15において、タイミング生成回路1500は、差分絶対値算出回路1501、累積量算出回路1502、代表累積量算出回路1503およびタイミング決定回路1504より構成する。
次に、本発明の第三の実施形態の撮像装置100における高速撮影モードにおける撮像処理について、図16のフローチャートを用いて説明する。図16は、第三の実施形態の高速撮影モードにおける撮像処理のフローチャートである。
第一の実施形態では図3および図4を用いて高速撮影モードにおける撮像処理を説明したが、第三の実施形態では図4に替えて図16に示すフローチャートを用いる。図3に示す処理は第一の実施形態と共通であるため、説明を省略する。また、図16のうち、第一の実施形態の図4のフローチャートと同じ処理を行うステップについては、図4と同じステップ番号を付与している。ここでは、第一の実施形態と異なる処理について説明を行う。
図16のステップ1620において、タイミング生成回路1500内の差分絶対値算出回路1501が、第二の撮像素子125で得られた画像データのフレーム間の差分絶対値を算出する。フレーム間の差分絶対値とは、第二の撮像素子125から得られたフレーム間で同一座標における画素の値の差分絶対値を、画素ごとに求めた値である。
この差分絶対値算出回路1501が、第二の撮像素子125から得られた画像データに対して差分絶対値を算出する時系列動作について、図17を参照して説明する。図17は、第一の撮像素子115、第二の撮像素子125、および、タイミング生成回路1500による動作を説明するための図である。
差分絶対値算出回路1501は、時刻T1において、時刻T0と時刻T1で得られた画像データのフレーム間の差分絶対値を画素ごとに算出する。その後、時刻T2において、時刻T1と時刻T2で得られた画像データのフレーム間の差分絶対値を画素ごとに算出する。時刻T3以後、同様の処理を繰り返し、第二の撮像素子125から得られた画像データのフレーム間における画素ごとの差分絶対値を算出する。
ステップS1621において、累積量算出回路1502は、式(7)のようにステップ1620において算出した画素ごとの差分絶対値を複数フレームに渡って累積し、差分絶対値累積量(AD)として算出する。
AD=AD1+AD2+AD3・・・(7)
AD1は、時刻T0のフレームと時刻T1のフレームとの間で算出された1つの画素の差分絶対値を示す。AD2は、時刻T1のフレームと時刻T2のフレームとの間で算出された同じ1つの画素の差分絶対値を示す。AD3は、時刻T2のフレームと時刻T3のフレームとの間で算出された同じ1つの画素の差分絶対値を示す。
以上のようなフレーム間の差分絶対値累積量の算出処理を全画素に対して行い、フレーム内の全画素のフレーム間差分絶対値累積量を算出する。
さらに代表累積量算出回路1503が、画素毎に算出したフレーム間差分絶対値累積量に基づき、フレーム全体を代表する累積量を算出する。具体的には、代表累積量算出回路1503は、全画素の差分絶対値累積量の最大値を選択し、選択した最大の差分絶対値累積量を代表累積量として決定する。このような処理をフレーム毎に行うことにより、図11のようにフレーム毎に1つの代表累積量を算出する。
なお、代表累積量算出回路1503による代表累積量は、フレーム内の全画素の差分絶対値累積量のうちの最大値に基づくものに限られるものではなく、フレーム内の全画素の差分絶対値累積量の平均値や中央値でも良い。
ステップS1622において、タイミング決定回路1504は、代表累積量が閾値以上になったかを判定し、閾値以上になっていなければステップS323に進み、閾値以上になっていればステップS324に進む。ステップS324以降の処理は、図3のステップS324以降の処理と同様である。
つまり、代表累積量が閾値以上になったことが判定されると、タイミング決定回路1504は、第二の制御回路121を介して、第一の撮像システム110に露光終了を指示するための信号を出力する。第一の制御回路111は、第一の撮像素子115の露光時間が適正時間に達していなくとも、第一の撮像素子115の露光を停止する。そして、第一の制御回路111は、第一の撮像素子115によって生成されたアナログ画像信号を第一のA/D変換回路116に出力する。
このように、第三の実施形態においても、第一の撮像素子115の露光期間中の被写体の動き量に基づいて、第一の撮像素子115の露光を終了させるため、ぶれの少ない画像を撮像することができる。動きベクトルの代わりに差分絶対値を用いて被写体の動き量を判定することで、動きベクトルを用いた場合よりも演算量を減らすことができ、演算負荷の軽減や演算処理の時間短縮といった効果を見込むことができる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。
また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。