(57)【要約】【課題】  高速に焦点検出可能な相関演算手段を備えた撮像装置を提供すること。【解決手段】  第一の記憶手段に記憶された一対の瞳分割信号の少なくとも一方に対し第１の期間においてシフト位置を調整するシフト位置調整手段と、シフト位置調整手段によってシフト位置が調整された一対の瞳分割信号において、複数の異なるシフト位置に対応する相関評価値を並列して演算するための複数の相関演算手段と、複数の相関演算回路により算出された所定の焦点検出領域の相関評価値を第２の期間において第二の記憶手段に書き込む書き込み手段と、第二の記憶手段から記憶された相関評価値を第３の期間において読み出し複数の相関演算回路の演算開始値として設定する設定手段とを備える。【選択図】  図５
2020181112.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一対の瞳分割信号を記憶する第一の記憶手段と、
前記第一の記憶手段に記憶された一対の瞳分割信号の少なくとも一方に対し第１の期間においてシフト位置を調整するシフト位置調整手段と、
前記シフト位置調整手段によってシフト位置が調整された一対の瞳分割信号において、複数の異なるシフト位置に対応する相関評価値を並列して演算するための複数の相関演算手段と、
前記複数の相関演算回路により算出された所定の焦点検出領域の相関評価値を第２の期間において第二の記憶手段に書き込む書き込み手段と、
前記第二の記憶手段から記憶された相関評価値を第３の期間において読み出し前記複数の相関演算回路の演算開始値として設定する設定手段と、
を備え、
前記書き込み手段による相関評価値の書き込みが行われる第２の期間および前記設定手段による複数の相関演算回路の演算開始値の設定が行われる第３の期間が、前記シフト位置調整手段によるシフト位置調整が行われる第１の期間に含まれることを特徴とした撮像装置。
【請求項２】
前記第二の記憶手段に対する読出し速度及び書き込み速度は、前記第一の記憶手段からの読み出し速度の２倍以上であることを特徴とする請求項１に記載の撮像装置。
【請求項３】
前記シフト位置調整手段は遅延によってシフト位置を調整することを特徴とする請求項１または２に記載の撮像装置。
【請求項４】
前記第一の記憶手段は複数の焦点検出領域を包含するデータを記憶可能なラインバッファであることを特徴とした請求項１乃至３のいずれか１項に記載の撮像装置。
【請求項５】
前記書き込み手段による、前記異なるシフト位置に対応する全ての相関評価値の書き込みに要する時間と、
前記設定手段による、前記異なるシフト位置に対応する演算開始値の設定に要する時間の合計時間が、
前記シフト位置調整に要する時間以下である
ことを特徴とした請求項１乃至４のいずれか１項に記載の撮像装置。
【請求項６】
前記書き込み手段による書き込みデータと前記設定手段による読出しデータを同期させる同期手段を有することを特徴とした請求項１乃至５のいずれか１項に記載の撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像装置の焦点検出に関する。
【背景技術】
【０００２】
近年、デジタルカメラに代表される撮像装置において、撮影領域内の複数の位置で焦点検出が可能となっている。また、撮影光学系の射出瞳の互いに異なる領域を通過した光束をそれぞれ受光可能な画素を撮像素子上に構成し、撮像用信号と焦点検出用信号を同時に取得可能ないわゆる撮像面位相差方式の撮像装置が知られている。
【０００３】
特許文献１では、１つのマイクロレンズに対して水平方向に２分割された画素を撮像素子上に構成し、前記画素が２次元に配置された焦点検出領域において、相関データに基づいてデフォーカス量を決定する撮像面位相差方式の焦点検出方法が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５９０７５９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示されている２次元の焦点検出領域を用いて撮像面上の複数の位置の焦点検出を行う場合、焦点検出領域の大きさや焦点検出領域の配置間隔によっては焦点検出領域同士が重なる場合がある。このような場合において、焦点検出領域同士が重なっている領域（重畳領域）に属する画素信号は複数回参照されることになる。撮像素子の出力はバッファメモリに蓄えられることが一般的であり、重畳領域の画素信号を複数回参照することに起因したバッファメモリ帯域の圧迫や焦点検出処理時間の増加が課題となる。
【０００６】
そこで、本発明の目的は、高速に焦点検出可能な相関演算手段を備えた撮像装置を提供することである。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の撮像装置は、少なくとも一対の瞳分割信号を記憶する第一の記憶手段と、前記第一の記憶手段に記憶された一対の瞳分割信号の少なくとも一方に対し第１の期間においてシフト位置を調整するシフト位置調整手段と、前記シフト位置調整手段によってシフト位置が調整された一対の瞳分割信号において、複数の異なるシフト位置に対応する相関評価値を並列して演算するための複数の相関演算手段と、前記複数の相関演算回路により算出された所定の焦点検出領域の相関評価値を第２の期間において第二の記憶手段に書き込む書き込み手段と、前記第二の記憶手段から記憶された相関評価値を第３の期間において読み出し前記複数の相関演算回路の演算開始値として設定する設定手段と、を備え、前記書き込み手段による相関評価値の書き込みが行われる第２の期間および前記設定手段による複数の相関演算回路の演算開始値の設定が行われる第３の期間が、前記シフト位置調整手段によるシフト位置調整が行われる第１の期間に含まれることを特徴とする構成とした。
【発明の効果】
【０００８】
本発明によれば高速に焦点検出可能な相関演算手段を備えた撮像装置を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明における撮像装置の構成を示すブロック図である。
【図２】本発明における撮像素子１０２に構成される画素アレイおよび画素の平面図である。
【図３】本発明における撮像素子１０２上の視野領域および焦点検出参照領域を示す平面図である。
【図４】本発明における撮像素子１０２上の多点測距時の焦点検出参照領域を示す平面図である。
【図５】実施例１における焦点検出部１０４のブロック図である。
【図６】実施例１における相関演算回路５０３のブロック図である。
【図７】実施例１における相関演算回路５０３の動作を示すタイミングチャートである。
【図８】実施例１におけるオーバーヘッドが発生する場合の焦点検出部１０４のブロック図である。
【図９】実施例１におけるオーバーヘッドが発生する場合の動作を示すタイミングチャートである。
【図１０】実施例２における焦点検出部１０４のブロック図である。
【図１１】実施例２における相関演算回路９０３のブロック図である。
【図１２】実施例２における相関演算回路９０３の動作を示すタイミングチャートである。
【発明を実施するための形態】
【００１０】
以下に、本発明の好ましい実施の形態を、添付の図面に基づいて詳細に説明する。
【実施例１】
【００１１】
以下、図１を参照して、本発明の第１の実施例による撮像装置について説明する。本実施例の撮像装置は光学レンズ及び撮像素子によって被写体像を撮像するイメージング装置であり、具体例としてはデジタルカメラである。なお、デジタルカメラ以外にも、携帯電話、車両や船舶等における車載カメラ、監視カメラなどであってもよい。図１は本発明の第１の実施例による撮像装置１００のブロック図である。撮像光学系１０１により結像した光束は、撮像素子１０２により受光および光電変換され、一対の像信号が出力される。
【００１２】
ここで、図２を参照し撮像素子１０２について説明を行う。図２（ａ）は撮像素子１０２に構成される単位画素の平面図である。図２（ａ）に示されるように、単位画素２００は、１つのマイクロレンズ２０１と、２つの光電変換部２０２、２０３を有する。光電変換部２０２および２０３は、撮像光学系１０１の異なる瞳領域を通過した光束を受光するように設計されている。本実施形態において、異なる瞳領域とは図２（ａ）において光電変換部が配置され多方向に分割された領域であり、より詳細には水平方向に瞳分割された領域となる。そのため、光電変換部２０２および２０３により取得される一対の信号は視差を有する信号となっており、一対の信号間のずれ量を検出することで位相差方式の焦点検出を行うことができる。また、光電変換部２０２および２０３により取得される一対の信号を加算することで、マイクロレンズ１つにつき１つの光電変換部を有する従来の画素と同等の信号を得ることができる。
【００１３】
図２（ｂ）は撮像素子１０２の画素配列の一部を示す図である。図２（ｂ）に示されるように、固体撮像素子１０２は、単位画素２００を２次元アレイ状に複数配列して構成される。以降光電変換部２０２により取得可能な信号をＡ信号、光電変換部２０３により取得可能な信号をＢ信号と呼ぶ。また、複数のＡ信号を集めて被写体像を形成したものをＡ像またはＡ像信号と呼び、複数のＢ信号を集めて被写体像を形成したものをＢ像またはＢ像信号と呼ぶ。本実施例においてＡ像信号及びＢ像信号は一対の瞳分割信号に相当する。なお、図２（ｂ）では説明の簡略化のために省略したが、単位画素２００には例えばベイヤ配列のカラーフィルタを備えてもよい。
【００１４】
図１に戻り説明を続ける。ＤＲＡＭ１０３は撮像素子１０２により取得可能な一対の信号群を複数フレーム分記憶するバッファメモリである。ＤＲＡＭ１０３に記憶された信号群は焦点検出部１０４あるいは信号合成部１０５により適宜読み出され、焦点検出処理あるいは記録用画像生成に用いられる。
【００１５】
焦点検出部１０４はＤＲＡＭ１０３から信号を読み出し、所定の演算によりデフォーカス量を算出してフォーカス制御部１０８に出力する。焦点検出部１０４の詳細は後述するものとする。
【００１６】
フォーカス制御部１０８は、焦点検出部１０４により得られるデフォーカス量に基づいて撮像光学系１０１に含まれるレンズ群を駆動制御し、ピント位置を調節する。
【００１７】
信号合成部１０５はＤＲＡＭ１０３から信号を読み出し、同一マイクロレンズ下で取得された一対の信号同士を加算合成することで合成画像信号を生成し、画像処理部１０６に出力する。
【００１８】
画像処理部１０６は信号合成部１０５により得られる合成画像信号に対し、各種補正や記録用フォーマットへの変換を行って記録用画像信号を生成し撮影画像記憶部に出力する。
【００１９】
撮影画像記憶部１０７は画像処理部１０６により得られた記録用画像信号を記憶するＳＤカード等の記録媒体である。
【００２０】
なお、焦点検出部１０４、信号合成部１０５、画像処理部１０６、フォーカス制御部１０８の全部または一部はＣＰＵを含むデジタルシグナルプロセッサ（ＤＳＰ）内に含まれる。ＤＳＰに含まれるＣＰＵは各種演算と撮像装置１００全体を制御する制御部である。当該ＣＰＵは、各種設定パラメータ等の設定を各構成要素に対して行う。またＤＳＰに接続された不図示のメモリに記録されたプログラムを実行することで、後述する本実施例の各処理を実現する。また、ＣＰＵはシステムメモリを含み、例えばＳＲＡＭが用いられる。システムメモリには、制御部１１０の動作用の定数、変数、不揮発性メモリ等から読み出したプログラム等を展開する。
【００２１】
なお、不揮発性メモリは、電気的に消去・記録可能なメモリであり、例えばフラッシュメモリ等が用いられる。不揮発性メモリには、ＣＰＵの動作用の定数、プログラム等が記憶される。ここでいう、プログラムとは、本実施形態にて後述する各種フローチャートを実行するためのプログラムのことである。なお、制御部１１０はプログラムを実行するＣＰＵ以外にも、リコンフィギュアラブル回路等から成るハードウェア回路を含む構成としてもよい。また、撮像素子１０２には図１に示した構成要素以外を含んでもよく、例えばＰＣやサーバー装置等の外部装置と通信するための通信部や、取得した画像を表示する表示部や、ユーザーによる操作を受け付ける操作部等を備える構成としてもよい。
【００２２】
次に図３を参照し焦点検出処理について説明する。図３（ａ）は撮像装置１００における撮像面上の視野領域を示す図である。撮像光学系１０１により撮像素子１０２上に結像される被写体像において、視野領域３００は撮像素子１０２上の位置として定義される。より詳細には、視野領域の中心（測距点）をＣとして、水平座標ｐから水平座標ｑ、垂直座標ｒから垂直座標ｓに含まれる画素群からなる矩形領域として定義される。本発明の撮像装置１００は視野領域３００の各行または複数行を単位として、Ａ像信号に対してＢ像信号の参照画素を瞳分割方向である水平方向にシフトしながら、画素間の差分絶対値和を算出することで各シフト位置の相関評価値を得る。このような相関演算の手法はＳＡＤ（Ｓｕｍ  Ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ）と呼ばれている。なお、視野領域３００の定義として、撮像素子１０２上の位置ではなく、取得される２次元画像信号上の位置として定義してもよい。また、各シフト位置の相関評価値を、瞳分割方向に対して垂直な方向に積分することで視野領域３００の最終的な相関評価値を得るようにしてもよい。
【００２３】
視野領域３００の最終的な相関評価値のうち、最も相関が高くなる（評価値としては最も０に近い）シフト位置がＡ像とＢ像の位相差に対応し、当該位相差に所定の変換係数を乗算することでデフォーカス量を算出することができる。
【００２４】
図３（ａ）ではＢ像信号を瞳分割方向にそれぞれＮ画素、Ｍ画素分だけシフトするようにした場合のＢ像信号の焦点検出参照領域３０１および３０２を示している。水平座標ｐ´から水平座標ｐ、垂直座標ｒから垂直座標ｓに含まれる画素群からなる矩形領域と水平座標ｑから水平座標ｑ´、垂直座標ｒから垂直座標ｓに含まれる画素群からなる矩形領域がシフト数に応じて参照される領域を示している。
【００２５】
焦点検出処理においては、Ｂ像は水平座標ｐ´から水平座標ｑ´、垂直座標ｒから垂直座標ｓに含まれる画素群からなる矩形領域（焦点検出参照領域）を参照する。以降、一つの視野領域に対して相関演算を行うシフト位置の数をシフト数と呼ぶ。図３（ａ）において、シフト位置のオフセットが１画素である場合は、Ｎ＋Ｍにシフト無しの状態を含めたＮ＋Ｍ＋１がシフト数となる。
【００２６】
また、焦点検出参照領域は、撮像素子１０２に収まる範囲内で操作部等におけるユーザー操作や撮像装置１００が備える被写体検出機能などに基づいて任意の位置に設定することが出来る。図３（ｂ）は撮像素子１０２上の端部に測距点Ｃを置いた場合の焦点検出参照領域３０３を示す図である。また、視野領域のサイズおよびシフト位置のオフセットは適宜変化させてもよい。
【００２７】
次に図４を参照し、撮像装置１００における多点測距時の焦点検出について説明する。撮像装置１００は撮像素子１０２で取得される１フレーム分の信号に対し複数の測距点で焦点検出のための演算を行う。図４は撮像装置１００における多点の焦点検出処理の測距点および焦点検出参照領域の配置の例を示す図である。ここでは撮像素子１０２上に３点の測距点Ｃ０、Ｃ１、Ｃ２およびそれぞれの測距点に焦点検出参照領域４００、４０１、４０２を配置した例を示している。焦点検出参照領域４００は焦点検出領域の中心（測距点）をＣ０として、水平座標ｐ０´から水平座標ｑ０´、垂直座標ｒから垂直座標ｓに含まれる画素群からなる矩形領域である。焦点検出参照領域４０１は焦点検出領域の中心（測距点）をＣ１として、水平座標ｐ１´から水平座標ｑ１´、垂直座標ｒから垂直座標ｓに含まれる画素群からなる矩形領域である。焦点検出参照領域４０２は焦点検出領域の中心（測距点）をＣ２として、水平座標ｐ２´から水平座標ｑ２´、垂直座標ｒから垂直座標ｓに含まれる画素群からなる矩形領域である。
【００２８】
測距点Ｃ０−Ｃ１およびＣ１−Ｃ２は、水平にＯＦＳ画素分だけ離れて配置されている。
【００２９】
ＯＦＳの画素数が焦点検出参照領域の水平画素数よりも小さい時、焦点検出参照領域同士の重畳領域が発生する。即ち測距点の間隔が狭くなればなるほど重畳領域は増大するといえる。図４では斜線部４０３および４０４が焦点検出参照領域同士の重畳領域となる。
【００３０】
焦点検出参照領域毎に順次演算を行う場合、焦点検出参照領域４００における演算の後に焦点検出参照領域４０１の演算を行うと前記重畳領域に含まれる画素はＤＲＡＭから複数回読み出されることになりＤＲＡＭ帯域の圧迫の原因となる。
【００３１】
詳細は後述するが本発明の撮像装置１００においては重畳領域に起因したＤＲＡＭ帯域の圧迫を低減するために焦点検出部１０４内にラインバッファを設けている。
【００３２】
次に図５および図６を参照し、本発明の第１の実施例における焦点検出部１０４の構成について詳細に説明する。図５は焦点検出部１０４の内部ブロック図である。
【００３３】
Ａ像バッファ５００およびＢ像バッファ５０１はＳＲＡＭ等により構成される各種信号を記憶可能なラインバッファである。Ａ像バッファ５００およびＢ像バッファ５０１は、不図示のＩ／Ｆ回路を介してＤＲＡＭ１０３から複数の焦点検出参照領域を包含した１行分のＡ像信号、Ｂ像信号をそれぞれ順次読出し記憶する。例えば、図４の水平座標ｐ０´から水平座標ｑ２´、垂直座標ｒの行に含まれるＡ像信号をＡ像バッファ５００に転送する。なお、Ａ像バッファ５００およびＢ像バッファ５０１に読み込む１行分の信号は撮像素子１０２に配置されている画素行から取得した信号とは必ずしも一致しない。例えば、複数の画素行に対応する信号を撮像素子１０２内またはＤＲＡＭ１０３に記憶された後に加算処理またはフィルタ処理を行ったものであってもよい。
【００３４】
同期回路５０２はＡ像信号およびＢ像信号の待ち合わせを行う。これにより、演算対象の信号同士を適切に得ることが可能となる。相関演算回路５０３はＡ像信号、Ｂ像信号および後段の相関データバッファ５０４に保持されるデータに基づいて各視野領域における相関データを算出する回路である。
【００３５】
相関データバッファ５０４はＳＲＡＭ等により構成されるバッファである。相関データバッファ５０４は不図示のＩ／Ｆ回路を介して相関演算回路５０３の演算結果を記憶する。なお、相関データバッファ５０４の記憶領域はＡ像バッファ５００およびＢ像バッファ５０１に読み込むデータに含まれる視野領域の複数行分の相関データを保持可能な容量を有する。
【００３６】
デフォーカス量算出部５０５は相関データバッファ５０４に記憶された各視野領域の相関データに対して所定の演算を行うことでデフォーカス量を算出し、フォーカス制御部１０８へと出力する。なお、同期回路５０２から相関演算回路５０３間は１サイクルにつき１データが入力される。また、相関データバッファ５０４と相関演算回路５０３回路間は１サイクルにつき２データが入出力される構成となっている。
【００３７】
次に相関演算回路５０３の内部構成について説明する。図６（ａ）は相関演算回路５０３の内部ブロック図である。相関演算回路５０３は、シフト位置調整部６００、複数の相関データ算出回路６０１、相関開始値設定部６０２、相関データ出力部６０３、および不図示の制御部により構成されている。シフト位置調整部６００はシフト数に対応した出力ポートを有しており、それぞれ異なるシフト位置で参照するＢ像を遅延によって調節することで並列出力する回路である。
【００３８】
シフト位置調整部６００は各シフト位置で参照するＢ像の最初の１画素が全て揃った時点で異なるシフト位置のＢ像の並列出力を開始する。以降、シフト位置調整部６００が並列出力を開始するまでの期間をシフト位置調整期間と呼ぶ。なお、図６においては例としてシフト数であるＮ＋Ｍ＋１が４である場合の構成例を示している。
【００３９】
相関開始値設定部６０２は相関データバッファ５０４から異なるシフト位置の其々に対応する積分相関データを２データ／サイクルで読み出し、相関データ算出回路６０１群に積分相関データを出力する。
【００４０】
複数の相関データ算出回路６０１は、それぞれがＡ像信号、Ｂ像信号および、積分相関データを受け取り、積分相関データを算出する。本実施例においては４並列で相関データ算出回路６０１が構成され、各相関データ算出回路６０１がそれぞれ異なるシフト位置に対応した積分相関データを算出する。相関データ出力部６０３は相関データ算出回路６０１群の其々で演算された積分相関データを相関データバッファ５０４に２データ／サイクルで書き込む。
【００４１】
以下、各ブロックの動作について詳細に説明する。相関演算回路５０３に同時にＡ像信号およびＢ像信号が入力される。Ｂ像はシフト位置調整部６００に入力され、シフト位置調整期間を経て異なるシフト位置のＢ像信号が並列出力される。そして、後段の相関データ算出回路６０１群には、並列出力された異なるシフト位置のＢ像信号群がそれぞれ入力される。一方、Ａ像信号はシフト位置の調整は行わない。
【００４２】
後段の相関データ算出回路６０１群には同じＡ像信号がそれぞれ入力される。図６（ｂ）は相関データ算出回路６０１の内部ブロック図である。複数の相関データ算出回路６０１群は、Ａ像信号、Ｂ像信号および、積分相関データを受け取り、異なるシフト位置に対応する積分相関データを並列に演算し相関データ出力部６０３に出力する。相関データ算出回路６０１は差分絶対値和算出回路６０４、データセレクタ６０５、フリップフロップ６０６で構成される。差分絶対値和算出回路６０４はＡ像信号とＢ像信号の差分絶対値を算出し、フリップフロップ６０６に記憶されている積分値と加算した結果をフリップフロップ６０６に記憶させることで差分絶対値和を算出する。
【００４３】
データセレクタ６０５はフリップフロップ６０６に対する入力データのセレクタであり、不図示のＣＰＵ等の制御部によるセレクタ制御信号に基づいて差分絶対値和と積分相関データのいずれかのデータを選択的に通過させる。
【００４４】
このような構成により、相関データ算出回路群は２つの動作状態を取ることが出来る。ひとつ目は積分相関データのロード動作である。セレクタ制御信号により積分相関データをフリップフロップ６０６に伝搬するように設定することで、相関開始値設定部６０２により出力される積分相関データをフリップフロップ６０６に演算開始値としてロードすることが可能である。
【００４５】
ふたつ目は差分絶対値和の算出処理である。セレクタ制御信号により差分絶対値和をフリップフロップに伝搬するように設定することで、ロードした積分相関データに対して更に差分絶対値を積分していくことが可能となる。ひとつの視野領域の１行あたりの差分絶対値和の算出にかかる処理時間は視野領域の水平画素数と、一つの相関データ算出回路の１サイクルあたりに差分絶対値を算出可能なデータ数に基づいて決定される。
【００４６】
なお、本実施例では説明の為に４つのシフト位置に対応する相関データを並列で演算可能な相関演算回路の構成を示したが、必要なシフト数に応じて構成を適宜変更して並列数を増減させてもよい。
【００４７】
なお、以降、相関データ算出回路６０１群の全てに対し積分相関データをロード完了するまでの期間をロード期間と呼ぶ。また、異なるシフト位置の全ての積分相関データを相関データバッファ５０４に書き込み完了するまでの期間を出力期間と呼ぶ。
【００４８】
次に図７を参照し、相関演算回路５０３による焦点検出の動作および制御について説明する。本実施例ではＡ像信号およびＢ像信号のデータ入力開始から差分絶対値和の演算開始までの期間に、前回の演算データの出力および積分相関データのロードを完了させるように回路を構成することで好適なパイプラインを形成し、高速な演算を可能としている。図７は水平に３つの焦点検出参照領域を配置し、各焦点検出参照領域の行数が２行であった場合の相関演算回路５０３の動作を示すタイミングチャートである。なお、図７に示す各信号は不図示のＣＰＵ等によって各ブロックを制御するために供給される。
【００４９】
図７におけるＡ像／Ｂ像入力信号は焦点検出部１０４に対して入力されるＡ像信号およびＢ像信号が有効なデータであるか否かを示す制御信号である。Ａ像／Ｂ像入力信号が１の時に入力されたＡ像信号およびＢ像信号は有効なデータとして焦点検出部１０４において取り扱われる。
【００５０】
図７におけるシフト位置調整信号はシフト位置調整に関わる制御信号である。シフト位置調整制御信号シフト位置調整期間が１の期間はシフト位置調整期間に相当し、後段の相関データ算出回路に対して出力を行わない。シフト位置調整信号が０の時、シフト位置調整部６００は後段の相関データ算出回路群に異なるシフト位置のＢ像を並列出力する。なお、シフト位置調整期間は必要なシフト数に基づいて設定され、シフト数が増加すればその分のシフト位置調整期間が必要となる。
【００５１】
図７における差分絶対値和算出信号は各相関データ算出回路６０１の演算処理を制御する信号である。各相関データ算出回路６０１に共通に入力され、差分絶対値和算出信号が１のとき、相関データ算出回路６０１は差分絶対値和の算出処理を行う。
【００５２】
図７における積分開始値ロード信号は積分相関データのロード期間を示す信号である。積分開始値ロード信号が１の期間がロード期間に相当する。
【００５３】
図７における積分相関データ出力信号は出力期間を示す信号である。積分相関データ出力信号が１の期間が出力期間に相当し、相関データ算出回路６０１群に保持されている積分相関データを相関データバッファ５０４に書き込む。
【００５４】
以下焦点検出処理の制御についてより詳細に説明する。焦点検出処理が開始されると、図７においてｔ７０１−ｔ７０４の期間で１つめの焦点検出参照領域の１行目のＡ像信号およびＢ像信号を１データ／サイクルで同期して読み出し、焦点検出部１０４に入力する。
【００５５】
図７においてｔ７０１−ｔ７０３の期間はシフト位置調整部６００によるシフト位置調整期間である。シフト位置調整部６００は１データ／サイクルでＢ像のデータを順次受け取り、異なるシフト位置の其々における最初の画素が入力されるまで後段の相関データ算出部に対する出力を停止する。シフト位置調整部６００に異なるシフト位置の其々における最初の画素が入力されるデータが揃うと後段の相関データ算出回路６０１群に対する並列出力を開始する。
【００５６】
シフト位置調整部６００によるシフト位置調整期間と並行して、図７においてｔ７０２−ｔ７０３の期間で積分相関データのロードが行われる。相関データバッファ５０４は積分データ記憶領域からシフト数／２サイクルの期間でデータを順次読出す。なお、各焦点検出参照領域の最初の行では垂直積分相関データは存在しないため、ロードされるデータが０となるように制御する。また、積分相関データのロード時には相関データバッファ５０４に対して書き込み要求を発行しない。
【００５７】
図７においてｔ７０３−ｔ７０４の期間で差分絶対値和の算出処理が行われる。
【００５８】
ｔ７０３のタイミングでシフト位置調整部６００によるシフト位置調整が完了すると差分絶対値和の算出処理を開始する。視野領域の水平画素数分のデータが入力されるまで差分絶対値和の算出処理を継続する。各相関データ算出回路６０１は積分相関データをロードしたフリップフロップに対して、更に一対の画素の差分絶対値を瞳分割方向（水平方向）に積分していく。
【００５９】
図７においてｔ７０４−ｔ７０５の期間で積分相関データの出力が行われる。相関データ算出回路６０１群のフリップフロップに格納された積分相関データは相関データ出力部６０３を介して２データ／サイクルで相関データバッファ５０４の積分データ記憶領域へと順次書き込まれる。
【００６０】
また、図７においてｔ７０４のタイミングで１つめの焦点検出参照領域に対応する画素データの入力が完了しているため、１つめの焦点検出参照領域の積分相関データの出力と並列して２つめの焦点検出領域のデータの入力が開始可能となっている。そして、入力データに対応したシフト位置調整部６００のシフト位置調整期間を経て、２つめの焦点検出参照領域の差分絶対値和の演算が開始される。
【００６１】
ｔ７０５のタイミングで１つめの焦点検出参照領域に対応する積分相関データの出力が完了すると同時に２つめの焦点検出領域に対応する積分開始値のロードが開始される。
【００６２】
ｔ７０５以降はｔ７０６のタイミングまでｔ７０２−ｔ７０４と同様の動作により、シフト位置調整期間内に並行して積分開始値のロードを行い、シフト位置調整が完了すると積分相関データの演算を行う。即ち、Ｔ１の期間とＴ２の期間における動作の違いはシフト位置調整期間における積分相関データの出力の実行可否のみである。
【００６３】
ｔ７０６以降の期間はＴ２に示す動作を最後の焦点検出参照領域の最終行の入力が終わるまで繰り返す。図中ではＴ３乃至Ｔ６がｔ７０８と同様の動作を繰り返している期間である。
【００６４】
Ｔ７に示す期間は最後の焦点検出参照領域の最終行の出力期間である。最後の焦点検出参照領域の最終行においては次の処理対象データが存在しないため次のラインのＡ像信号およびＢ像信号は入力されない。
【００６５】
従って、本実施例における相関演算回路５０３の動作は、３つに分けることが出来る。１つめはＴ１の期間に示す動作である。最初の焦点検出領域の最初の行の入力期間においてはシフト位置調整期間と並行して積分相関データの出力は行わない。２つめはＴ２乃至Ｔ６に示す繰り返し動作である。この動作ではシフト位置調整期間と並行して積分相関データの出力を行う。また、相関データの出力と並行して次の処理対象となるＡ像信号とＢ像信号の入力を行う。３つめはＴ７に示す動作である。最後の焦点検出参照領域の最後の行の出力期間であるため、相関データの出力と並行して次の処理対象となるＡ像信号とＢ像信号の入力を行わない。
【００６６】
１つめの動作と２つめの動作はシフト位置調整期間における積分相関データの出力の実行可否の違いはある。しかし、いずれにおいてもロード、演算、出力の各動作がＡ像信号／Ｂ像信号入力の期間内に並行して完了されるためＡ像信号／Ｂ像信号入力を待たせることがない。
【００６７】
本実施例においては演算結果の出力と積分データのロードを行う相関データバッファ５０４との間のデータ処理レートを並列化処理のデータ処理レートの２倍にしている。これにより、シフト位置調整期間内に前回の焦点検出参照領域に対応する演算結果の出力と、今回の焦点検出参照領域に対応する積分データのロードの双方の処理を完了できる。
【００６８】
このような構成を用いることによりオーバーヘッドのない好適なパイプラインを形成でき、複数の焦点検出参照領域を一つの焦点検出部１０４内で切り替えながら高速に演算を行うことが可能となる。
【００６９】
なお、演算結果の出力と積分データのロードの処理レートが並列化処理のデータ処理レートと同じであった場合は、シフト位置調整期間内に相関データのロードと出力が完了できないためオーバーヘッドが発生する。
【００７０】
図８は本実施例に記載の撮像装置における効果を説明するための図であり、先に図５を用いて説明した相関演算回路５０３と相関データバッファ５０４との間のデータ入出力を１データ／サイクルで扱う場合のブロック図である。
【００７１】
相関開始値設定部６０２は相関データバッファ５０４から異なるシフト位置の其々に対応する積分相関データを１データ／サイクルで読み出し、相関データ算出回路６０１群に積分相関データを出力する。そして、相関データ出力部６０３は相関データ算出回路６０１群の其々で演算された積分相関データを相関データバッファ５０４に１データ／サイクルで書き込む。
【００７２】
図９は、本実施例における図７に対応する図であり、演算結果の出力と積分データのロードの処理レートが並列化処理のデータ処理レートと同じであった場合に発生するオーバーヘッドを説明するためのタイミングチャートである。
【００７３】
図中においてＴ１０乃至Ｔ１６は、図７のＴ１乃至Ｔ７の動作にそれぞれ対応している。また、ｔ９１３，ｔ９１４，ｔ９１５，ｔ９１６は入力を待たされている期間、即ちオーバーヘッド期間である。ここで、ｔ９１４を例にとってオーバーヘッドについて詳細に説明する。
【００７４】
図９において、ｔ９１７のタイミングで積分相関データの出力と並行して、次回のＡ像信号、Ｂ像信号の入力とシフト位置調整が開始される。そして、ｔ９１８のタイミングでシフト位置調整と積分相関データの出力が同時に完了する。このとき、次回の積分相関データのロードが完了していないため演算を開始することが出来ない。そのため一時的にＡ像信号、Ｂ像信号の入力を停止し、次回の積分相関データのロードを行う必要が生じる。ｔ９１９で積分相関データのロードが完了するとＡ像信号、Ｂ像信号の入力を再開し、異なるシフト位置のそれぞれについて相関データの算出を開始する。
【００７５】
即ち、シフト位置調整期間内に積分相関データの出力とロードが完了できない場合は、シフト位置調整期間と、出力期間とロード期間とを合計した期間の差分だけデータ入力を停止させる期間が生じ、オーバーヘッドが発生する。
【００７６】
以上説明したオーバーヘッドは複数の焦点検出領域の各行の入力期間に繰り返し発生するため、全体の処理に要する時間が増大する。
【００７７】
なお、ここでは説明の為にｔ９０７期間においてもオーバーヘッドが発生する例を示したが、ｔ９０７では積分相関データの出力期間が存在しないため、シフト位置調整と積分相関データのロードを並行して行うこともできる。この場合はｔ９０７動作においてオーバーヘッドは発生しなくなるが、以降の動作においては最後の焦点検出参照領域の最終行の入力期間までオーバーヘッドが発生する。
【００７８】
以上説明したように、本実施例ではＤＲＡＭから複数の焦点検出参照領域を含む１行をラインバッファに取り込み、ラインバッファから焦点検出参照領域単位で繰り返し読出しを行うようにした。更に、異なるシフト位置に対応する相関データを並列して演算できる相関データ算出回路およびシフト位置調整部を構成し、シフト位置調整期間内にデータ出力と積分データのロードが完了するようにした。このように構成することで複数の焦点検出領域毎に並列した演算回路を構成することなく低コストかつ高速な演算を可能とした。
【００７９】
なお、本実施例においてはシフト位置調整部の１サイクルあたりの入力データ数を１データとし、相関データのロードおよび出力の１サイクルあたりの処理データ数を２データとする構成を用いて好適なパイプラインを形成する例について示した。しかし、本発明の適用範囲はこれに限られず、２倍以上であってもよい。シフト位置調整期間において相関データの出力およびロードが完了するようなシステムであれば好適なパイプラインを形成することが可能であるため、その範囲内において各種の構成を適用してよい。
【００８０】
例として、シフト位置調整部の１サイクルあたりの処理データ数を１データとし、相関データのロードおよび出力の１サイクルあたりの処理データ数を４データとする構成を用いた場合においても、好適なパイプラインを形成することが可能である。
【００８１】
また、他の例として、シフト位置調整部の１サイクルあたりの処理データ数を２データとしてもよい。その場合は相関データのロードおよび出力の１サイクルあたりの処理データ数を４データ以上とすることで好適なパイプラインを形成することが出来る。
【００８２】
また、他の例としては、積分相関データの出力とロードで１サイクルあたりの処理データ数を異ならせてもよい。例えばシフト位置調整期間が４サイクルであった場合に相関データの出力が２サイクルで完了し、相関データのロードが１サイクルで完了するように構成をしても好適なパイプラインを形成することが出来る。
【００８３】
本実施例において、データを入力する相関演算データ算出回路６０１の数とシフト位置調整部６００で行うシフト位置調整数とは略一致している。また、相関データ出力部６０３が出力するデータ数と相関データバッファ５０４からロードするデータ数も略一致している。このことから、相関データ出力部６０３が出力する速度と相関データバッファ５０４からロードする速度を他の速度よりも早めることで、シフト位置調整部６００で行うシフト位置調整期間において事項を完了することができる。そして、オーバーヘッド期間を短縮することが可能となる。
【実施例２】
【００８４】
第１の実施例では相関データバッファの入出力レートを並列化の入力レートの倍にし、出力とロードを排他制御することによって高速な演算処理を行う構成について説明した。第２の実施例では相関データバッファの入出力レートを並列化の入力レートの倍にすることなく高速な演算を行う構成について説明する。なお、第１の実施例で説明した内容と同一の部分については同じ部番を付けて説明を省略するものとする。
【００８５】
図１０は第２の実施例における焦点検出部１０４の内部構成を示す図である。
【００８６】
第２の実施例では相関演算回路１００３および、相関データバッファ１００４が構成される。相関演算回路１００３は内部構成が異なるが詳細は後述する。
【００８７】
相関データバッファ１００４は１サイクル期間内にリードとライトを同時に処理可能なＳＲＡＭにより構成されるバッファである。相関データバッファ１００４は不図示のＩ／Ｆ回路を介して相関データ算出部１００３の演算結果を記憶する。なお、相関データバッファ１００４の記憶領域はＡ像バッファ５００およびＢ像バッファ５０１に読み込むデータに含まれる焦点検出領域の数分の相関データを保持可能な容量を有する。また、本実施例においては相関データバッファ１００４と相関演算回路１００３間におけるデータ転送レートは１データ／サイクルである。
【００８８】
図１１は相関演算回路１００３のブロック図である。第１の実施例との差分は同期回路１１０４が追加されている点である。同期回路１１０４は相関データバッファ１００４から読み出される積分相関データと、相関データバッファ１００４に書き込む積分相関データとの待ち合わせを行う。第２の実施例は、同期回路１１０４を介することで積分相関データのロードと出力を同時に行うように制御するものである。
【００８９】
次に図１２を参照し、相関演算回路１００３による焦点検出の動作および制御について説明する。図１２は水平に３つの焦点検出参照領域を配置し、各焦点検出参照領域の行数が２行であった場合の相関演算回路１００３の動作を示すタイミングチャートである。
【００９０】
ｔ１２０１でＡ像信号、Ｂ像信号の入力およびシフト位置調整が開始されると同時に、相関開始値設定部６０２は相関データバッファ１００４に対し読出しを開始し、相関データ出力部６０３は積分相関データの出力を開始する。
【００９１】
其々の入出力データは同期回路１１０４により同期がとられ、読み込みと書き込みを同一サイクル内で実行可能となる積分相関データの入出力処理にかかる期間はシフト数と積分相関データの入出力の１サイクルあたりの処理可能データ数により決定される。つまり、シフト位置調整期間と積分相関データの出力、ロードは同時にｔ１２０２で示すタイミングで同時に完了する。
【００９２】
なお、初回のタイミングでは積分相関データは存在しないためロード、出力の積分相関データはいずれも０となるように制御する。
【００９３】
以上説明したように、第２の実施例では相関データの入出力を同期させることにより、処理時間を短縮し、シフト位置調整期間内に積分相関データの出力とロードを完了させることができる。つまり、相関データ出力部６０３による異なるシフト位置に対応する全ての相関評価値の書き込みに要する時間と、相関開始値設定部６０２による異なるシフト位置に対応する演算開始値の設定に要する時間の合計時間が重要であり。この合計時間がシフト位置調整部がシフト位置調整に要する時間以下であることでオーバーヘッド期間を低減することが可能となる。
【００９４】
なお、本実施例においては読み書きを同時に処理可能な１つのＳＲＡＭを相関データのバッファとして用いて、相関データのロードと出力を同期させることにより好適なパイプラインを形成する例について示したが本発明の適用範囲はこれに限らない。例えば、相関データバッファとして読み書き同時に処理できないＳＲＡＭを複数構成するようにしてもよい。その場合、読み込みを行うＳＲＡＭと書き込みを行うＳＲＡＭが其々別のＳＲＡＭとなるようにすれば毎サイクル相関データの読み書きを同時に処理することが出来るため、相関データのロードと出力を同期させることが出来る。
【符号の説明】
【００９５】
５００  Ａ像バッファ
５０１  Ｂ像バッファ
５０２  同期回路
５０３  相関演算回路
５０４  相関データバッファ
６００  シフト位置調整部
６０１  相関データ算出回路
６０２  相関開始値設定部
６０３  相関データ出力部
【図１】
2020181112.tif 000003
【図２】
2020181112.tif 000004
【図３】
2020181112.tif 000005
【図４】
2020181112.tif 000006
【図５】
2020181112.tif 000007
【図６】
2020181112.tif 000008
【図７】
2020181112.tif 000009
【図８】
2020181112.tif 000010
【図９】
2020181112.tif 000011
【図１０】
2020181112.tif 000012
【図１１】
2020181112.tif 000013
【図１２】
2020181112.tif 000014