JP2015082677A - イメージセンサおよびその動作方法、並びに電子機器 - Google Patents

イメージセンサおよびその動作方法、並びに電子機器 Download PDF

Info

Publication number
JP2015082677A
JP2015082677A JP2013218176A JP2013218176A JP2015082677A JP 2015082677 A JP2015082677 A JP 2015082677A JP 2013218176 A JP2013218176 A JP 2013218176A JP 2013218176 A JP2013218176 A JP 2013218176A JP 2015082677 A JP2015082677 A JP 2015082677A
Authority
JP
Japan
Prior art keywords
line
read
light receiving
receiving elements
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013218176A
Other languages
English (en)
Other versions
JP2015082677A5 (ja
JP6198567B2 (ja
Inventor
大木 光晴
Mitsuharu Oki
光晴 大木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2013218176A priority Critical patent/JP6198567B2/ja
Priority to US14/513,515 priority patent/US9813626B2/en
Publication of JP2015082677A publication Critical patent/JP2015082677A/ja
Publication of JP2015082677A5 publication Critical patent/JP2015082677A5/ja
Application granted granted Critical
Publication of JP6198567B2 publication Critical patent/JP6198567B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • H04N23/6811Motion detection based on the image signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N25/00Circuitry of solid-state image sensors [SSIS]; Control thereof
    • H04N25/60Noise processing, e.g. detecting, correcting, reducing or removing noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Studio Devices (AREA)
  • Physics & Mathematics (AREA)
  • Power Engineering (AREA)
  • Transforming Light Signals Into Electric Signals (AREA)
  • Electromagnetism (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)

Abstract

【課題】フレームメモリを特に設けない構成とすることでコストを低減すると共に、ローリングシャッタ現象を補正しつつ、ブレを抑制できるようにする。【解決手段】ステップS12において、ステップS11で取得した適正露光時間中におけるブレ量(ブレの画素数)が予測される。ステップS13において、偶数ラインの受光素子が適正露光時間で露光され、画素データが読み出される。ステップS13において、奇数ラインの受光素子がブレ量に応じて適正露光時間よりも短時間の露光時間で繰り返し露光され、画素データが読み出される。偶数ラインの画素データと、奇数ラインの画素データとが合成されて出力される。本技術は、イメージセンサに適用することができる。【選択図】図34

Description

本技術は、イメージセンサおよびその動作方法、並びに電子機器に関し、特に、ブレ、およびローリングシャッタ現象を低減できるようにしたイメージセンサおよびその動作方法、並びに電子機器に関する。
最近のイメージセンサで主流となっているCMOS(Complementary Metal Oxide Semiconductor)イメージセンサは、線順次で読み出すため、ローリングシャッタ現象が生じ、移動しながらデジタルカメラで動画を撮像すると、画像が歪んでしまうことがある。
この歪みは、線順次で読み出す速度を高速にすることで抑制することができる。すなわち、60fps(フレーム/秒)の動画は、通常1フレーム分の画素データを1/60秒かけて読み出している。この場合、例えば、この1フレーム分の画素データを高速化し、1/480秒で全画素データを読み出すようにすることで、ローリングシャッタ現象を8分の1に抑制することができる。
ところで、最終的にディスプレイに表示する場合や、後段の記録媒体に記録する場合、データレートは、1/60秒かけて1フレーム分の画素データが連続的(間欠的でない)に送信されなければならない。従って、イメージセンサから1/480秒で全画素を読み出してしまうと、一旦、フレームメモリに画素データを蓄えてから、連続的に1/60秒かけて1フレーム分の画素データを出力するようにタイミングを調整する必要がある。従って、従来の手法では、フレームメモリが必須の構成であった。
また、イメージセンサから読み出すタイミングを制御してローリングシャッタ現象を補正する技術が提案されている(特許文献1,2)。より具体的には、特許文献1,2の技術では、奇数ラインは下から上へと順番に読み出し、偶数ラインは逆に上から下へと順番に読み出し、これら2組のデータ群から画像処理にて補正をものである。この場合、処理する際に、隣接する偶数ラインと奇数ラインの画素データが同時に必要である。従って、この技術においてもフレームメモリが必要であり、装置コストに負担を与えることになる。
さらに、横方向のみではあるが、ローリングシャッタ現象を補正する技術が提案されている(特許文献3)。
また、縦方向と横方向のローリングシャッタ現象の補正を行う技術が提案されている(特許文献4乃至6)。この技術においては、イメージセンサからの読み出しタイミングを動的に切り替えることで、ローリングシャッタ現象の補正を具現化している。ただし、リセットのタイミングについては記述がなく、不明である。
特開2012−080490号公報 特開2013−074372号公報 特開2001−358999号公報 特開2006−287946号公報 特開2006−304313号公報 特開2006−311544号公報
しかしながら、上述した技術では、ローリングシャッタ現象を補正するには、フレームメモリが必須構成であるため、装置のコストが大きくなるのが一般的であった。
また、ローリングシャッタ現象を補正した上で、動画において、画像内の被写体の位置を所定の位置に固定するように撮像する場合、ブレをキャンセルする(抑制する)必要があるが、上述した技術では、ブレをキャンセルする処理がなされていない。このため、ローリングシャッタ現象を補正した上で、動画において、画像内の被写体の位置を所定の位置に固定するように撮像する場合、画像に対して生じているブレが発生してしまうことがあった。
本技術は、このような状況に鑑みてなされたものであり、特に、フレームメモリを特に設けない構成とすることでコストを低減すると共に、ローリングシャッタ現象を補正しつつ、ブレを抑制できるようにするものである。
本技術の第1の側面のイメージセンサは、被写体からの光を受光する2次元上に配置された複数の受光素子と、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、前記移動量に応じて、前記2次元上に配置された複数の受光素子から読み出すタイミングをライン毎に適応的に制御する受光素子制御部とを含む。
前記検出部には、前記受光素子により過去、および現在において撮像された画像を用いて前記移動量を検出させる、または、ジャイロセンサにより前記移動量を検出させるようにすることができる。
前記受光素子制御部には、過去に複数の受光素子から画素データを読み出したラインの時系列の変位と、現在の複数の受光素子から画素データを読み出したラインの時系列の変位との案分により求められるタイミングでライン毎の読み出しを適応的に制御させるようにすることができる。
前記受光素子制御部には、前記受光素子がリセットされてから読み出されるまでの露光時間の、適正露光時間に対する割合の逆数に比例する係数を算出し、前記2次元上に配置された複数の受光素子の一部の受光素子が受光することで発生した画素データに、前記係数を乗算してゲインを調整する乗算部をさらに含ませるようにすることができる。
本技術の第1の側面のイメージセンサの動作方法は、被写体からの光を受光する2次元上に配置された複数の受光素子を有するイメージセンサの動作方法において、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、前記移動量に応じて、前記2次元上に配置された複数の受光素子から読み出すラインを適応的に制御する。
本技術の一側面のプログラムは、被写体からの光を受光する2次元上に配置された複数の受光素子を有するイメージセンサを制御するコンピュータに、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、前記移動量に応じて、前記2次元上に配置された複数の受光素子から読み出すラインを適応的に制御するステップを含む処理を実行させる。
本技術の第1の側面の電子機器は、被写体からの光を受光する2次元上に配置された複数の受光素子と、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、前記移動量に応じて、前記2次元上に配置された複数の受光素子から読み出すタイミングをライン毎に適応的に制御する受光素子制御部とを含む。
本技術の第2の側面のイメージセンサは、被写体からの光を受光する2次元上に配置された複数の受光素子と、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くするように制御する受光素子制御部とを含む。
前記検出部には、前記受光素子により過去、および現在において撮像された画像を用いて前記移動量を検出する、または、ジャイロセンサにより前記移動量を検出させるようにすることができる。
前記露光時間が短く制御された前記一部の受光素子により撮像された画素データと、前記一部の受光素子を除く受光素子により撮像された画素データとを合成する合成部をさらに含ませるようにすることができる。
本技術の第2の側面のイメージセンサの動作方法は、被写体からの光を受光する2次元上に配置された複数の受光素子を備えたイメージセンサの動作方法であって、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くするように制御する。
本技術の第2の側面のプログラムは、被写体からの光を受光する2次元上に配置された複数の受光素子を備えたイメージセンサを制御するコンピュータに、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くするように制御するステップ含む処理を実行させる。
本技術の第2の側面の電子機器は、被写体からの光を受光する2次元上に配置された複数の受光素子と、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くするように制御する受光素子制御部とを含む。
本技術の第3の側面のイメージセンサは、被写体からの光を受光する2次元上に配置された複数の受光素子と、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くし、複数回数撮像するように制御する受光素子制御部とを含む。
前記受光素子制御部に、前記一部の受光素子により撮像された画素データについては、前記一部の受光素子を除く受光素子により撮像された画素データよりも語長を短くするようにさせることができる。
前記検出部に、前記一部の受光素子により過去、および現在において撮像された画像を用いて前記移動量を検出させるようにする、または、ジャイロセンサにより前記移動量を検出させるようにすることができる。
本技術の第3の側面のイメージセンサの動作方法は、被写体からの光を受光する2次元上に配置された複数の受光素子を備えるイメージセンサの動作方法であって、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くし、複数回数撮像するように制御する。
本技術の第3の側面のプログラムは、被写体からの光を受光する2次元上に配置された複数の受光素子を備えるイメージセンサを制御するコンピュータに、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くし、複数回数撮像するように制御するステップを含む処理を実行させる。
本技術の第3の側面の電子機器は、被写体からの光を受光する2次元上に配置された複数の受光素子と、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くし、複数回数撮像するように制御する受光素子制御部とを含む。
本技術の第1の側面においては、2次元上に配置された複数の受光素子により、被写体からの光が受光され、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量が検出され、前記移動量に応じて、前記2次元上に配置された複数の受光素子から読み出すタイミングがライン毎に適応的に制御される。
本技術の第2の側面においては、2次元上に配置された複数の受光素子により、被写体からの光が受光され、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量が検出され、前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間が適応的に短くするように制御される。
本技術の第3の側面においては、2次元上に配置された複数の受光素子により、被写体からの光が受光され、前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量が検出され、前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間が適応的に短くされ、複数回数撮像されるように制御される。
本技術の第1乃至第3の側面によれば、フレームメモリを特に設けない構成とすることで装置コストを低減することが可能になると共に、ローリングシャッタ現象を補正させつつ、ブレを抑制させることが可能となる。
一般的なイメージセンサの構成においてフレームメモリが必須であることを説明する図である。 ブレの発生により違和感のある画像が発生することを説明する図である。 ブレの発生により違和感のある画像が発生することを説明する図である。 イメージセンサの座標系を説明する図である。 ローリングシャッタ現象を抑制して動画をスタビライズさせるための読み出し手順を説明する図である。 ローリングシャッタ現象を抑制して動画をスタビライズさせるための読み出し手順を説明する図である。 ローリングシャッタ現象を抑制して動画をスタビライズさせるための読み出し手順を説明する図である。 ローリングシャッタ現象を抑制して動画をスタビライズさせるための読み出し手順を説明する図である。 ローリングシャッタ現象を抑制して動画をスタビライズさせるための読み出し手順を説明する図である。 ローリングシャッタ現象を抑制して動画をスタビライズさせるための読み出し手順を説明する図である。 ローリングシャッタ現象を抑制して動画をスタビライズさせるための読み出し手順を説明する図である。 ローリングシャッタ現象を抑制して動画をスタビライズさせるための読み出し手順を説明する図である。 ローリングシャッタ現象を抑制して動画をスタビライズさせるための読み出し手順を説明する図である。 ローリングシャッタ現象を抑制して動画をスタビライズさせるための読み出し手順を説明する図である。 偶数ラインの画素のリセットのタイミングと読み出しのタイミングを説明する図である。 偶数ラインの画素を撮像するときのリセットのタイミングと読み出しのタイミングの間に、偶数ラインよりも短い露光時間で2枚の奇数ラインの画像を撮像する例を説明する図である。 偶数ラインの画素を撮像するときのリセットのタイミングと読み出しのタイミングの間に、偶数ラインよりも短い露光時間で4枚の奇数ラインの画像を撮像する例を説明する図である。 フレームメモリを利用した場合のリセットと読み出しのタイミングを説明する図である。 本技術を適用したフレームメモリを利用しない場合のリセットと読み出しのタイミングを説明する図である。 偶数ラインの読み出しタイミングを説明する図である。 偶数ラインの読み出しタイミングの波形から奇数ラインの読み出しタイミングを求める例を説明する図である。 過去の偶数ラインの読み出しタイミングの波形を延長する波形を説明する図である。 未来の偶数ラインの読み出しタイミングの波形を延長する波形を説明する図である。 未来の偶数ラインの波形と現在の偶数ラインの波形とから奇数ラインの波形を補間生成する例を説明する図である。 過去の偶数ライン、および未来の偶数ラインのそれぞれの波形と、現在の偶数ラインの波形とから奇数ラインを補間生成する例を説明する図である。 本技術を適用した撮像装置に用いられるクロックを説明する図である。 本技術を適用した撮像装置に入力される信号、および出力される信号を説明する図である。 本技術を適用したイメージセンサを有する撮像装置の一実施の形態の構成例を説明する図である。 図28の制御部の入力信号および出力信号を説明する図である。 図28のタイミング制御部、垂直制御部、および水平制御部の入力信号および出力信号を説明する図である。 図28のイメージセンサ、シリアルパラレル変換部および乗算部の入力信号および出力信号を説明する図である。 図28の動き検出部、およびフレームメモリの入力信号および出力信号を説明する図である。 図28のラインメモリ、データセットメモリ、および補間部の入力信号および出力信号を説明する図である。 画像データ出力処理を説明するフローチャートである。 読み出しライン制御処理を説明するフローチャートである。 水平制御部の入力信号および出力信号と、後述するフローチャートに用いられるシンタックスにおける表記の対応関係を説明する図である。 水平制御部の処理を説明するフローチャートである。 垂直制御部の入力信号および出力信号と、後述するフローチャートに用いられるシンタックスにおける表記の対応関係を説明する図である。 垂直制御部の処理を説明するフローチャートである。 タイミング制御部の第1の処理を実行するサブ演算ブロックにおける入力信号および出力信号と、後述するフローチャートに用いられるシンタックスにおける表記の対応関係を説明する図である。 タイミング制御部の第1の処理を説明するフローチャートである。 タイミング制御部の第2の処理を実行するサブ演算ブロックにおける入力信号および出力信号と、後述するフローチャートに用いられるシンタックスにおける表記の対応関係を説明する図である。 タイミング制御部の第3の処理を実行するサブ演算ブロックにおける入力信号および出力信号と、後述するフローチャートに用いられるシンタックスにおける表記の対応関係を説明する図である。 タイミング制御部の第2の処理および第3の処理を実行するサブ演算ブロックにおける入力信号および出力信号と、後述するフローチャートに用いられるシンタックスにおける表記の対応関係を説明する図である。 タイミング制御部の第2の処理および第3の処理を説明するフローチャートである。 タイミング制御部の第4の処理を実行するサブ演算ブロックにおける入力信号および出力信号と、後述するフローチャートに用いられるシンタックスにおける表記の対応関係を説明する図である。 タイミング制御部の第4の処理を説明するフローチャートである。 タイミング制御部の第4の処理を説明するフローチャートである。 タイミング制御部の第4の処理を説明するフローチャートである。 タイミング制御部の第4の処理を説明するフローチャートである。 タイミング制御部の第5の処理を実行するサブ演算ブロックにおける入力信号および出力信号と、後述するフローチャートに用いられるシンタックスにおける表記の対応関係を説明する図である。 タイミング制御部の第5の処理を説明するフローチャートである。 タイミング制御部の第5の処理を説明するフローチャートである。 タイミング制御部の第5の処理を説明するフローチャートである。 タイミング制御部の第5の処理を説明するフローチャートである。 タイミング制御部の第5の処理を説明するフローチャートである。 タイミング制御部の第5の処理を説明するフローチャートである。 タイミング制御部の第5の処理を説明するフローチャートである。 タイミング制御部の第5の処理を説明するフローチャートである。 タイミング制御部の第5の処理を説明するフローチャートである。 タイミング制御部の第5の処理を説明する図である。 タイミング制御部の第5の処理を説明する図である。 タイミング制御部の第5の処理を説明する図である。 タイミング制御部の第6の処理を実行するサブ演算ブロックにおける入力信号および出力信号と、後述するフローチャートに用いられるシンタックスにおける表記の対応関係を説明する図である。 タイミング制御部の第6の処理を説明するフローチャートである。 タイミング制御部の第6の処理を説明するフローチャートである。 制御部の処理を説明するフローチャートである。 マッチング部の処理を説明するフローチャートである。 マッチング部の処理を説明する図である。 動き検出部の処理を説明するフローチャートである。 動き検出部の処理を説明するフローチャートである。 動き検出部の処理を説明する図である。 補間部の処理を説明するフローチャートである。 補間部の処理を説明するフローチャートである。 補間部の処理を説明する図である。 偶数ラインと奇数ラインの読み出しタイミングとして求められる波形を説明する図である。 汎用のパーソナルコンピュータの構成例を説明する図である。
<一般的なイメージセンサの動作>
最近のイメージセンサで主流となっているCMOS(Complementary Metal Oxide Semiconductor)イメージセンサは、線順次で読み出すため、ローリングシャッタ現象が発生し、移動しながらデジタルカメラで動画を撮影すると、歪んだ画像になってしまう。
この歪みの発生を抑制するためには、線順次で読み出す速度を高速にすればよい。例えば、60fps(フレーム/秒)の動画であれば、通常1フレーム分の画素データは1/60秒で読み出される。これに対して画像の歪を抑制するには、読み出し速度を高速化して1/480秒で全画素データが読み出されるようにすることで、ローリングシャッタ現象が8分の1に抑えられる。
ところで、最終的にディスプレイに表示する場合や、後段の記録媒体に記録する場合には、データレートは、1/60秒で1フレーム分の画素データが連続的に(間欠的ではない状態で)送信されなければならない。従って、イメージセンサから1/480秒で全画素を読み出してしまうと、一旦、フレームメモリに画素データを蓄えてから、連続的に1/60秒で1フレーム分の画素データを出力するようにタイミングを調整する必要がある。
すなわち、例えば、図1の上段で示されるように、60fps(フレーム/秒)の動画であれば、1フレーム分の画素データが、イメージセンサからフレームメモリに1/480秒で読み出される。そして、図1の下段で示されるように、読み出し速度を1/60秒で全画素データが読み出されるようにする。このような動作により、ローリングシャッタ現象が8分の1に抑えられる。尚、図1においては、1フレームについてN個の画素データから構成されており、1フレームの画像を構成する画素データD0,D1・・・DN−1が順次出力された後、その次のタイミングで出力される1フレームの画像を構成する画素データE0,E1・・・EN−1が出力される用紙が示されている。
しかしながら、このような手法を用いる場合、一般的には、フレームメモリが必須の構成とされるため、装置コストが嵩む構成となる。
また、撮像装置を手で持った状態で動画が撮像されると、所定の画像(1フレーム分の画素データ)にはブレがなく、また、所定の画像とは異なる画像にはブレが存在していることが、しばしば起きる。つまり、所定の画像が撮像されている間(すなわち、所定の1フレームのための露光時間内)に手持ち撮像により、撮像装置の撮像方向が変化するように動いたか否かにより、撮像された画像内にブレが発生したりしなかったりする。
通常、動画が再生される際には、撮像装置の撮像方向が変化するように動いていれば、動画像内で被写体の位置も動くことになり、”被写体が動いているからブレている”と感じ、このブレについて鑑賞者は、視聴に違和感を抱くことがない。
すなわち、図2で示されるように、フレームF1乃至F5、および、フレームF9乃至F12を撮像していた時間帯においては、たまたまカメラの撮像方向が動かずに被写体(図2においては家)が撮像できたものとする。一方、フレームF6乃至F8が撮像されていた時間帯において、手持ちにより撮像装置の撮像方向が下方向に動いて撮像(被写体である家が、フレーム内において相対的に上へ移動)されてしまったものとする。この場合、フレームF6乃至F8においては、露光時間内に被写体が動画像内を動いてしまうことになるためブレが生じる。
ところが、このフレームF1乃至F12で示される12フレーム分の動画が再生されるとき、フレームF6乃至F8のタイミングにおいて、撮像装置の撮像方向が変化することで、相対的に被写体がフレーム内を移動していることにより、ブレが発生していることを認識することができるので、鑑賞者は視聴に際して違和感を抱くことがない。尚、図2は、手持ちで撮像した動画の中のフレームF1乃至F12の12フレーム分の画像を時系列に示したものである。
しかしながら、ローリングシャッタ現象を補正しつつ、動画像内の被写体をフレーム内でスタビライズさせるようにすると、鑑賞者は、このブレに違和感を抱くことになる。ここで、"スタビライズ"させるとは、フレーム間で位置合わせを行うことで、静止している被写体の投影像の位置をフレーム内で一定の位置にさせることを意味する。
図3は、図2の画像に対して、被写体となる家をフレーム内でスタビライズさせた場合の動画像の12フレーム分の画像として示したものである。
図3に示したフレームF21乃至F32の画像は、それぞれ図2のフレームF1乃至F12に対応した画像である。ただし、図3のフレームF21乃至F32の画像は、図2のフレームF1乃至F12の画像に対して、被写体をスタビライズさせている。すなわち、カメラの動きが補正され、被写体である家がフレーム内の一定の位置に固定されている。これにより、図3で示されるように、被写体である家は、フレームF21乃至F32まですべてにおいて、画像上の略同一の位置に存在するようにされている。
しかしながら、このフレームF21乃至F32の12フレーム分の動画を再生すると、被写体の家は、フレーム内において常に静止しているにも関わらず、フレームF26乃至F28の時間においてのみブレが生じる。このため、鑑賞者は視聴に際して違和感を抱くことになる。
<本技術を適用したイメージセンサによる撮像方法の概要について>
次に、本技術を適用することにより、フレームメモリを利用することなく、このような動画像を再生したとき、その鑑賞に際して生じる違和感を低減できるようにしたイメージセンサによる撮像方法の概要について説明する。
尚、以降において、本技術を適用したイメージセンサを有する撮像装置による撮像方法を説明するにあたり、イメージセンサ内の画素配列を特定する座標系については、図4で示されるように定義されるものとする。
すなわち、図4のイメージセンサ11の画素は、水平方向(x軸方向)の画素数がWSであり、垂直方向(y軸方向)の画素数がHSで配置されているものとする。そして、この画素のうち撮像される動画像の1フレームを構成する領域21は、60fpsで、水平方向の画素数×垂直方向の画素数=W×Hであるものとする。フルHD(High Dedinition)動画像である場合、例えば、水平方向の画素数Wは1920画素であり、垂直方向の画素数Hは1080画素であり、以降においては、この画素数であるものとして説明を進めるものとするが、いうまでもなく、それ以外の画素数であってもよいものである。また、画素数Wは、画素数WSよりも小さく(W<WS)、画素数Hは、画素数HSよりも小さい(H<HS)。さらに、イメージセンサ11により動画を撮像可能な範囲は、領域21の範囲W×Hより大きな範囲WS×HSであるものとする。
<手振れのない固定したカメラで撮像される場合>
まず、図5を参照して、手振れのない固定したカメラ(撮像装置)で撮像される場合の画素データが読み出されるタイミングについて説明する。
ここで、図5は、3フレーム分の動画像を撮像する際のイメージセンサにおける画素データを転送する範囲と、タイミングを示すタイミングチャートである。図5のタイミングチャートにおいては、図中の垂直方向がイメージセンサ11、および領域21の水平方向(y軸方向)であり、図中右方向が時刻方向である。
また、図5においては、1/60秒の時間内において、第1フレームの垂直方向の時刻1H@1Frame乃至1080H@1Frameの各タイミングで、実線の枠で示されるイメージセンサ11−1−1乃至11−1−1080のうち、図中の点線の矩形領域で示される領域21−1−1乃至21−1−1080の太線で示される垂直方向の1ライン分の画素データがそれぞれ読み出される。
同様に、第2フレームのうち、垂直方向の時刻1H@2Frame乃至1080H@2Frameの各タイミングで、図中のイメージセンサ11−2−1乃至11−2−1080のそれぞれの領域21−2−1乃至21−2−1080の太線で示される垂直方向の1ライン分の画素データがそれぞれ読み出される。
さらに、同様に、第3フレームのうち、垂直方向の時刻1H@3Frame乃至1080H@3Frameの各タイミングで、図中のイメージセンサ11−3−1乃至11−3−1080のそれぞれの領域21−3−1乃至21−3−1080の太線で示される垂直方向の1ライン分がそれぞれ読み出される。
尚、領域21−1−1乃至21−1−1080、領域21−2−1乃至21−2−1080、および、領域21−3−1乃至21−3−1080のそれぞれについて、特に区別する必要がない場合、単に領域21と称するものとし、その他の構成についても同様に称するものとする。
すなわち、最初の時刻1H@1Frameにおいては、図中の太線で示した1ライン分(点線矩形領域で示される領域21の一番上のライン)の画素データが読み出される。
次の時刻2H@1Frameにおいては、図中の太線で示した1ライン分(点線矩形領域の領域21の上から2番目のライン)の画素データが読み出される。
さらに次の時刻3H@1Frameにおいては、図中の太線で示した1ライン分(点線矩形領域の領域21の上から3番目のライン)の画素データが読み出される。
以降、同様にして、1フレーム目の最後の時刻1080H@1Frameにおいては、図中の太線で示した1ライン分(点線矩形領域の領域21の一番下のライン)の画素データが読み出される。
2フレーム目以降も同様である。このようにして、イメージセンサから1ライン分ごとの時間間隔(1/(60×1080)秒)で1ラインずつ画素データが読み出され、読み出された1080ライン分の画素データから1フレーム分の画像が構成される。
ここで、時刻の表記については、例えば、"時刻1H@1Frame"の場合、1フレーム(Frame)目の垂直方向の1ライン目の1ライン分の画素データを転送する時刻であることを示す。したがって、時刻1H@1Frame、時刻2H@1Frame・・・1080H@1Frame、時刻1H@2Frame、時刻2H@2Frame・・・1080H@2Frame、時刻1H@3Frame、時刻2H@3Frame・・・1080H@3Frame・・・といった順序で等間隔に変位する。
<手振れのない固定したカメラで撮像される場合の読み出しタイミングとリセットタイミング>
次に、図6を参照して、手振れのない固定したカメラで撮像される場合の読み出しタイミングとリセットタイミングについて説明する。
ここで、図6は、図5で示される画素データの転送タイミングを示すタイミングチャートをx軸方向に射影したタイミングチャートである。図中の垂直方向が画像の垂直方向のラインを特定するy軸であり、y=0からy=HS−1が、イメージセンサ11の垂直方向の画素配列に対応している。一方、図中の水平方向が時間軸(time軸)を表している。
すなわち、図6で示されるように、イメージセンサ11の画素の中央部分の1080ライン分の画素データが順次読み出される。図中の太い実線で示される直線L10乃至L12が、各画素ラインの画素データが読み出されるタイミングを表している。各時刻1H分の時間に対して1ラインずつ読み出されるので、この太い実線は図中で直線(時間軸に対するy軸の位置が比例関係)となる。また、図中の太い点線で示される直線L1乃至L3は各画素をリセットするタイミングを表している。各ラインの画素(正確には、各ラインに含まれる水平方向に1列に配置された複数の画素)は、リセットされた時刻から読み出しされる時刻までの時間(例えば、直線L1乃至L11の時間)が、露光時間とされる。
<手振れしながら撮像される場合に手振れ補正されるとき>
次に、図7を参照して、手振れしながら撮像される(手持ちによりブレが発生した状態で撮像される)場合に手振れ補正されるときの画素データが読み出されるタイミングについて説明する。尚、ここでは、説明を簡単にするために、手振れの発生によりイメージセンサ11の撮像方向が常に下方向に動いているものとする。すなわち、一般的には、手振れによりイメージセンサ11は、ランダムに上下左右に動くが、図が煩雑になるので、下方向の一方向にのみ動いているものとする。尚、言うまでも無く、それ以外の方向についても手振れは発生する。
また、図7においては、図5と同様に、第1フレーム1Frame乃至第3フレーム3Frameからなる3フレーム分の時間(3/60秒)が示されている。また、イメージセンサ11−11−1乃至11−11−1080,11−12−1乃至11−12−1080,11−13−1乃至11−13−1080、および領域21−11−1乃至21−11−1080,21−12−1乃至21−12−1080,21−13−1乃至21−13−1080は、それぞれ図5のイメージセンサ11−1−1乃至11−1−1080,11−2−1乃至11−2−1080,11−3−1乃至11−3−1080、および領域21−1−1乃至21−1−1080,21−2−1乃至21−2−1080,21−3−1乃至21−3−1080に対応するものである。
ここで、上述したように、イメージセンサ11は手振れにより下方向に撮像方向が動いているので、図5のように、イメージセンサ11の中で常に同じ矩形領域で示される領域21の位置が読み出されていくと、各フレーム内でローリングシャッタ現象が生じ、フレーム間で被写体がスタビライズされない。
そこで、図7で示されるように、イメージセンサ11の撮像方向が動いている方向と逆方向に点線矩形領域となる領域21が動かされる。この点線矩形領域で示される領域21に対して、最初の時刻1H@1Frameにおいては、図中の太線で示された1ライン分(点線矩形領域で示される領域21の一番上のライン)の画素データが読み出される。
次の時刻2H@1Frameにおいては、図中の太線で示した1ライン分(点線矩形領域の上から2番目のライン)の画素データが読み出される。
さらに、次の時刻3H@1Frameにおいては、図中の太線で示した1ライン分(点線矩形領域の上から3番目のライン)の画素データが読み出される。
以降、同様にして、1フレーム目の最後の時刻(図中の時刻1080H@1Frame)においては、図中の太線で示した1ライン分(点線矩形領域の一番下のライン)の画素データが読み出される。2フレーム目以降も同様である。このようにして、イメージセンサ11から各1H分の時間(1/(60×1080)秒)に対して1ライン分ずつの画素データが読み出され、読み出された1080ラインの画素データから1つのフレームが構成される。これにより、ローリングシャッタ現象が補正されて、動画像における被写体をスタビライズさせることが可能となる。
<手振れしながら撮像される場合に手振れ補正されるときの読み出しタイミング>
次に、図8,図9を参照して、手振れしながら撮像される場合に手振れ補正されるときの読み出しタイミングとリセットタイミングについて説明する。
ここで、図8は、図7で示される画素データの転送タイミングを示すタイミングチャートをx軸方向に射影したタイミングチャートである。図中の太い実線で示される直線L31乃至L33が各ラインの画素データが読み出されるタイミングを表している。図中の垂直方向が画像の垂直方向のラインを特定するy軸であり、y=0からy=HS−1が、イメージセンサ11の垂直方向の画素配列に対応している。一方、図中の水平方向が時間軸(time軸)を表している。
また、図9は、手振れによりイメージセンサ11の撮像方向が常に上方向に動いている場合のタイミングチャートを示しており、図中の太い実線で示される直線L41乃至L43が各ラインの画素データが読み出されるタイミングを表している。
すなわち、図8および図9で示されるように、手振れしながら撮像される場合、手振れ補正するときには、手振れによりブレた分を補正するため、領域21を構成する最終ラインを読出した次のタイミングで、最終ラインから1080ライン分だけ上方(図8)および下方(図9)のラインから画素データが順次読み出される。
より詳細には、図8の場合、次のフレームに移る時刻(各フレームの最初の1Hの時刻)において、読み出しラインが1080ラインだけ上に移動される。すなわち、例えば、図7で示されるように、時刻1080H@1Frameにおいて、領域21−11−1080における太線で示される第1フレームの最終ラインとなる1ライン分の画素データが読み出されるタイミングを考える。すると、次のタイミングである時刻1H@2Frameにおいて、領域21−12−1で示される、1080ライン分上の太線で示される1ライン分が第2フレームの先頭ラインの画素データとして読み出される。
このような動作により、図7の領域21−11−1乃至21−11−1080,21−12−1乃至21−12−1080,21−13−1乃至21−13−1080における図中の左上部の位置が時間軸(time軸)と平行な点線で一致した位置に統一されることで、手振れによるブレの発生を抑制することができる。
同様に、図9の場合、次のフレームに移る時刻(各フレームの最初の1Hの時刻)において、読み出しラインが1080ライン分だけ下に移動される。
このような動作により、手振れしながらイメージセンサ11上の被写体のブレの補正を実現することが可能となる。
<パンしながら撮像される場合に手振れ補正されるとき>
次に、図10を参照して、パンしながら撮像される場合に手振れ補正されるときの画素データが読み出されるタイミングについて説明する。尚、ここでは、説明を簡単にするために、撮像者の意思に基づいたパンによりイメージセンサ11の撮像方向が常に下方向に動いているものとする。すなわち、一般的には、パンによりイメージセンサ11は、撮像者の意思に従って上下左右に動くが、図が煩雑になるので、一方向に動いているものとする。尚、いうまでもなく、それ以外の方向にパンするようにしてもよいものである。
すなわち、図10におけるパンによる下方向への移動は、図7の場合と異なり、撮像者が意図した動きであり、撮像された動画像もこの動きに追従するように再生される必要がある。この場合、1フレーム内では、イメージセンサ11が動いている方向と逆方向に点線矩形領域からなる領域21を動かすことで、ローリングシャッタ現象が補正される。そして、フレーム間では、点線矩形領域からなる領域21はイメージセンサ11上で同一の位置に固定させる(各フレームの1Hの時刻においては、y=y0のラインを読み出す)ことで、スタビライズさせずにパンさせることが可能となる。
尚、図10においては、図5と同様に、第1フレーム1Frame乃至第3フレーム3Frameからなる3フレーム分の時間(3/60秒)が示されている。また、イメージセンサ11−21−1乃至11−21−1080,11−22−1乃至11−22−1080,11−23−1乃至11−23−1080、および領域21−21−1乃至21−21−1080,21−22−1乃至21−22−1080,21−23−1乃至21−23−1080は、それぞれ図5のイメージセンサ11−1−1乃至11−1−1080,11−2−1乃至11−2−1080,11−3−1乃至11−3−1080、および領域21−1−1乃至21−1−1080,21−2−1乃至21−2−1080,21−3−1乃至21−3−1080に対応するものである。
<パンしながら撮像される場合に手振れ補正されるときの読み出しタイミング>
次に、図11,図12を参照して、パンしながら撮像される場合に手振れ補正されるときの読み出しタイミングとリセットタイミングについて説明する。
ここで、図11は、図10で示される画素データの転送タイミングを示すタイミングチャートをx軸方向に射影した図である。図中の垂直方向が画像の垂直方向のラインを特定するy軸であり、y=0からy=HS−1が、イメージセンサ11の垂直方向の画素配列に対応している。一方、図中の水平方向が時間軸(time軸)を表している。図中の太い実線で示される分布L61乃至L63、が読み出すタイミングを表している。また、図12は、パンによりカメラ(イメージセンサ)が常に上方向に動いている場合の各ラインの転送タイミングを示すタイミングチャートであり、太い実線で示される分布L71乃至L73が読み出すタイミングを表している。
図11,図12で示されるように、画素データを転送する画素ラインは、次のフレームに移る時刻(各フレームの最初の1Hの時刻)において、読み出しラインが常に同じ位置(y=y0)に移動している。すなわち、イメージセンサ11の撮像方向は、撮像者により意図的にパンされているので、そのパンに応じて領域21を構成するフレームの先頭ラインを、同一の位置とすることで、違和感のない画像に補正することが可能となる。
<手振れに対する補正動作とパンに対する補正動作を合成した動作>
すなわち、図7乃至図9を参照して説明したイメージセンサ11の動きは、パンではなく完全な手振れの場合の動作を示したものであり、図10乃至図12を参照して説明したイメージセンサ11の動きは、手振れではなく完全なパンの場合の動作を示したものである。
しかしながら、パンと手振れは、いずれかのみといったことは少なく、それらが混じった状態が一般的である。そこで、本技術における補正は、図8および図9、並びに図11および図12を参照して説明した、手振れに対する補正動作とパンに対する補正動作とを組み合わせた動作とされる。
より具体的には、例えば、図13で示されるように、図8および図11を参照して説明した動作を組み合わせた動作、または、図14で示されるように、図9および図12を参照して説明した動作を組み合わせた動作がなされる。
すなわち、図13においては、第2フレームである2Frameの読み出しが開始される時刻1H@2Frameにおいて、手振れを補正するための1Frameにおける1080ライン目の位置から1080ライン分上の位置と、パンを補正するためのy=y0の位置とから、"パンとブレとの割合"であるパン:ブレ=P:Bにより案分された位置に、読み出し開始位置が補正されている。
同様に、図14においては、第2フレームである2Frameの読み出しが開始される時刻1H@2Frameにおいて、手振れを補正するための1Frameにおける1080ライン目の位置から1080ライン分上の位置と、パンを補正するためのy=y0の位置とから、"パンとブレとの割合"であるパン:ブレ=P:Bにより案分された位置に、読み出し開始位置が補正されている。
この"パンとブレの割合"は、既存の技術(制御方法)により取得することができる。例えば、過去のイメージセンサ11の撮像方向と比較し、大きく変化が生じている場合、撮像者の意図した動き、すなわちパンであるものとして、処理し、パンの割合を大きくする。逆に、過去のイメージセンサ11の撮像方向と比較し、大きな変化がない場合、撮像者の意図しない動き(手振れにより生じるブレ)であるものとみなし、ブレの割合を大きくする。
また、他の"パンとブレの割合"の制御方法として、イメージセンサ11の現在のフレームの読み出し位置が、イメージセンサ11の端部に近づいた場合、次のフレームで読み出そうとする位置がイメージセンサ11の領域をはみ出してしまう可能性があるので、パンの割合を大きくする。このようにパンの割合を大きくすれば、強制的にy=y0から1080ライン分が読み出されるような位置にすることが可能となる。逆に、イメージセンサの中央部分を読み出している場合は、ブレの割合を大きくする。このような動作により、より精度よく手振れにより生じたブレを補正することが可能となる。
<ライン毎に異なる露光時間を設定することで手振れを補正する>
手振れが含まれるような動画の撮像に対して、手振れをキャンセルするために、画素を2つのグループに分け、一方のグループの画素に対しては通常の露光時間とし、他方のグループの画素に対しては、ブレ量に応じて露光時間を変化させ、得られた画素データを合成することで、手振れを補正する。
以降においては、偶数ラインに属する画素を一方のグループとし、奇数ラインに属する画素を他方のグループとして説明を進めるものとする。ただし、ラインの分け方は偶数と奇数に限定するわけではなく、それ以外の分け方でもよく、例えば、水平方向のラインのみならず、垂直方向の列単位でグループ分けしてもよいし、ラスタスキャン方向に対して1行おきに異なるグループに設定するようにしてもよい。
また、ブレ量については、例えば、イメージセンサ11を含む撮像装置に組み込まれたジャイロセンサ(図示省略)のデータを使うようにしてもよいし、後述するように画像解析により各画素の動きを検出することで、次のフレームにおいて、リセットから読み出しまでの露光時間内における各画素のブレ量を予測するようにしてもよい。
ここで、ブレ量とは、露光時間内において、イメージセンサに投影される静止被写体に属する画素が、手振れにより何画素分移動するかを示す量である。なお、ジャイロセンサとは、角速度センサとも称される。
より詳細には、このブレ量が2画素未満である場合には、偶数ライン(正確には、偶数ラインに属する画素)も奇数ライン(正確には、奇数ラインに属する画素)も、適正露光時間となるように、露光開始時刻からのリセットのタイミングが調整される。
すなわち、図15で示されるように、各ラインは、読み出し時刻よりも適正露光時間だけ過去の時間にリセットされる。より詳細には、偶数ラインの各画素は、実線L200で示されるように、図中の上部の画素から順次読み出されると共に、読み出された直後のタイミングである点線L201で示されるタイミングでリセットがなされる。そして、リセットがなされたタイミングから1/60秒、すなわち、通常の露光時間が経過した、実線で示される直線L202におけるタイミングで読み出される。
すなわち、この場合、従来と同様の読み出しにより、従来と同様の画像が生成されるが、ブレ量は2画素未満という僅かな量である場合のみであるので手振れの影響は極僅かであるので、補正がなくても実質的に視聴に影響しない。
一方、このブレ量が2画素以上であって、かつ、4画素未満である場合、図16で示されるように、偶数ラインは適正露光となるように、直前の読み出しタイミングとなる実線で示される直線L210の直後のタイミングとなる直線L211におけるタイミングで、図中の上から順次リセットされ、それぞれのライン上の画素において適切な露光時間が経過した後、読み出される。すなわち、偶数ライン上の画素は、リセットから通常の露光時間が経過した後、読み出されるように撮像がなされる。
また、図16で示されるように、奇数ラインについては、直線L211で示される、偶数ラインの"直前の読み出し時刻"の直後にリセットがなされると、適正露光時間の略半分の時間が経過する直線L212で表されるタイミングにおいて、1回目の読み出し時刻とされる。さらに、1回目の読み出しがなされた直後の、点線L213で示されるタイミングにリセットがなされると、再び、適正露光時間の略半分の時間が経過する、実線L214で示されるタイミングで、2回目の読み出しがなされる。すなわち、奇数ラインの画素については、適正露光時間内で、リセットと読み出しがそれぞれ略等間隔で2回実行される。
このように撮像されると、このフレーム内の偶数ラインの画素からなる画像については、従来と同様の露光時間でリセットと読み出しが行われるので、従来と同様の画像が生成される。つまり、ブレ量が2画素乃至4画素程度のブレた画像が撮像される。
一方、奇数ラインの画素からなる画像については、適正露光時間(従来の露光時間)の半分の時間しか露光していないので、ブレ量も半分となり、1画素乃至2画素程度のブレしかない画像となる。ただし、奇数ラインの画素からなる画像は、露光時間が半分であり、2倍にゲインアップする必要があるが、これによりノイズも2倍となるため、多少ノイズのある画像となる。
この結果、偶数ラインの画素からなるブレのある画像と、奇数ラインの画素からなるノイズはあるがブレのない画像(奇数ライン)とが合成されることで、ある程度ブレを抑え、かつ、ある程度ノイズを抑えた画像を生成することが可能となる。
さらに、ブレ量が4画素以上である場合、図17で示されるように、偶数ラインの画素は、適正露光となるように、実線L230で示される直線の読み出しタイミングの直後の、点線L231で示されるタイミングでリセットがなされると、適正露光時間が経過する、実線L238で示されるタイミングで、偶数ラインに属する画素の画素データが読み出される。
一方、奇数ラインの画素については、ブレ量が2画素乃至4画素である場合と同様の手法で、適正露光時間にリセットと読み出しがそれぞれ略等間隔で4回実行される。すなわち、奇数ラインに属する画素については、直線L231で示される、偶数ラインの"直前の読み出し時刻"の直後にリセットがなされると、適正露光時間の略1/4の時間が経過する実線L232で表されるタイミングにおいて、1回目の読み出し時刻とされる。さらに、1回目の読み出しがなされた直後の、点線L233で示されるタイミングにリセットがなされると、再び、適正露光時間の略1/4の時間が経過する、実線L234で示されるタイミングで、2回目の読み出しがなされる。以下、同様に、2回目の読み出しが成された直後の点線L235のタイミングにリセットがなされると、適正露光時間の略1/4の時間が経過する実線L236で表されるタイミングにおいて、3回目の読み出し時刻とされる。さらに、3回目の読み出しがなされた直後の、点線L237で示されるタイミングにリセットがなされると、再び、適正露光時間の略1/4の時間が経過する、実線L238で示されるタイミングで、4回目の読み出しがなされる。
従って、偶数ラインの画素については、従来と同様にリセットがされた後、適正露光時間が経過した後、画素データが読み出されるので、従来と同様の画像、すなわち、ブレ量が4画素程度のブレた画像が撮像される。一方、奇数ラインの画素については、従来の露光時間である適正露光時間の略1/4ずつの露光時間であるので、ブレ量が1/4程度の、すなわち、ブレ量が1画素程度のブレの画像が撮像されることになる。ただし、露光時間が略1/4であるので、4倍にゲインアップする必要があるが、これによりノイズも4倍となり、多少ノイズのある画像となる。
この結果、偶数ラインの画素により撮像されるブレのある画像と、奇数ラインの画素により撮像されるノイズはあるがブレの少ない画像とを合成することで、ブレを抑え、かつ、ノイズを抑えた画像を生成することが可能となる。
尚、以降においては、図15を参照して説明したように偶数ラインの画素、および奇数ラインの画素がいずれも適正露光時間だけ露光されて読み出される処理を、等倍読み出し処理と称するものとする。また、図16を参照して説明した偶数ラインの画素により適正露光時間だけ露光されるのに対して、奇数ラインの画素が、適正露光時間に対して略半分の露光時間で2回リセットと読み出しを繰り返す処理を、奇数ラインの偶数ラインに対する2倍読み出し処理と称するものとする。さらに、図17を参照して説明した偶数ラインの画素により適正露光時間だけ露光されるのに対して、奇数ラインの画素が、適正露光時間に対して略1/4の露光時間で4回リセットと読み出しを繰り返す処理を、奇数ラインの偶数ラインに対する4倍読み出し処理と称するものとする。
さらに、奇数ラインの画素は、例えば、偶数ラインにおける適正露光時間内であれば、適正露光時間の略1/4よりも短い露光時間に設定して、リセットと読み出しを4回以上繰り返すようにしてもよい。したがって、適正露光時間内に、N回等間隔でリセットと読み出しが繰り返される処理は、奇数ラインの偶数ラインに対するN倍読み出し処理と称されるものとする。
しかしながら、例えば、適正露光時間を8分割して、8回のリセットと読み出しをそれぞれ繰り返すようにした場合、例えば、8回読み出すとき、読み出されるフレーム数は、60×8=480fpsで読み出すことを意味する。従って、このような高速読み出しがなされると、消費電力が大きくなるので、消費電力の観点からも、リセットと読み出しを繰り返す回数は、ある程度の回数に制限されることになる。
また、上述した奇数ラインの偶数ラインに対する2倍読み出し処理、または、4倍読み出し処理を実行する場合、それぞれのデータの読み出し量は、偶数ラインの画素の読み出し量にける2倍量および4倍量となる。しかしながら、このようにデータ量が多すぎて、転送速度が物理的に限界を超えてしまうような場合、奇数ラインの各画素データの語長を短くしてデータ量を削減するようにしてもよい。
具体的な例としては、偶数ラインの各画素データの語長が12ビット(値が0.0乃至1.0の間を4096分割した刻みで量子化されたデータ)の場合、等倍読み出し処理の場合、奇数ラインの各画素データの語長も12ビットとする。しかしながら、2倍読み出し処理がなされる場合、奇数ラインの画素データについては、奇数ラインの各画素データの語長は10ビット(値が0.0乃至1.0の間を1024分割した刻みで量子化されたデータ)程度としてもよい。また、4倍読み出し処理がなされる場合、奇数ラインの各画素データの語長は8ビット(値が0.0乃至1.0の間を256分割した刻みで量子化されたデータ)程度としてもよい。
従って、適正露光時間内におけるブレ量が予測され、予測されたブレ量に応じて、奇数ラインのリセットと読み出しの回数Nが特定される。そして、特定された回数Nに基づいて、N倍読み出し処理が実行される。この回数Nは、ブレ量に依存し、適応的に切り替えられる。そして、偶数ラインに属する画素により撮像されるブレのある画像と、奇数ラインに属する画素により撮像される、ノイズはあるがブレのない画像(奇数ライン)とが合成されることで、ブレとノイズがバランスよく抑制された画像を生成することが可能となる。
<イメージセンサより読み出すタイミングを調整し、フレームメモリを省略する手法>
ここで、図18を参照して、ローリングシャッタ現象を抑制して、動画をスタビライズするための従来の手法を説明する。
図8等を参照して説明したように、カメラなどの撮像装置に組み込まれたジャイロセンサ(図示省略)のデータ、または、画像解析により検出される動きのデータを利用することで、次の1H後の時間において読み出すラインが決定される。そして、例えば、図18の実線L251(またはL253)で示されるタイミングで、その決定されたラインの画素が順次読み出されることで、ローリングシャッタ現象を補正して、動画における被写体をフレーム内でスタビライズしていた。
このような処理を実現させるべく、従来においては、1080ラインよりも多めのラインの画素データが読み出され、一旦、フレームメモリに格納された後、太い実線L252(またはL254)で示されるタイミングでフレームメモリから格納された画素データが読み出されていた。尚、この太い実線L252,L254は、ローリングシャッタ現象を補正して、動画をスタビライズするために読み出すべきラインの画素を読み出すタイミングを示している。
一方、本技術においては、カメラなどの撮像装置に組み込まれたジャイロセンサ(図示省略)のデータ、または、後述するように画像解析により検出される動きのデータを利用することで、次の1H後の時間において読み出すラインが決定される。そして、読み出しが決定されたラインの画素データが、イメージセンサから読み出される。
または、現在画素データが読み出されたラインの画素に対して、次のラインが読み出されるまでの時間が計算され、その時間が来るまで、次のラインが読み出されない。
このように、イメージセンサの動き(正確には、次の1H時間内におけるイメージセンサに投影される静止被写体の手振れによる動き)に基づき、読み出すラインが決定される、または、読み出すタイミングが変えられることで、ローリングシャッタ現象が補正されて、動画がスタビライズされている。
換言すれば、イメージセンサ11の各画素(受光素子のキャパシタ)が、フレームメモリの代用をしている。すなわち、従来、フレームメモリで画素データを読み出すタイミング調整をしていたのに対し、本技術においてはイメージセンサ11の各画素(受光素子のキャパシタ)が画素データを読み出すタイミングを調整している。
より詳細には、図19で示されるように、実線L271で画素データが順次読み出されると、その直後の点線L272で示されるタイミングにおいて、リセットがなされる。さらに、リセットがなされると、実線L273で示されるタイミングで、次のフレームの画素データが読み出される。さらに、その直後である、点線L274のタイミングにおいて、リセットがなされる。
このような処理により、イメージセンサ11の各画素がフレームメモリの役目を果たしており、このため、フレームメモリを利用する必要がなくなり、結果としてコストを低減することが可能となる。
尚、例えば、y=y1のライン、および、y=y2のラインでは、図19で示されるように、露光時間(図中の矢印の長さ)が異なる。そこで、後述するように、各ラインのリセットの時間と読み出し時間の差に逆比例する係数を乗じることで、各ラインの画素データのゲインを調整するという補正が必要となる。
<手振れとパンに対する補正動作を合成した動作と、フレームメモリを省略する手法を併用する際の注意点>
次に、ブレとパンに対する補正動作を合成した動作と、フレームメモリを省略する手法を併用する際の注意点について説明する。
図16では、偶数ラインの読み出しタイミングは直線的(時間軸に対するy軸の位置が比例関係)であるとして説明していた。
しかしながら、フレームメモリを利用しない構成とした場合、図20の実線L301乃至L303で示されるように、一般的には、偶数ラインの読み出し時刻は曲線状に変化する。従って、奇数ラインの画素について、偶数ラインの適正露光時間に対して、例えば、2倍読み出しの場合、適正露光時間の略半分の時間間隔で2回のリセットと読み出しが実行される。そこで、2倍読み出し処理については、偶数ラインの画素の直前の読み出し時刻と今回の読み出し時刻とを2分割し、その2分割される時間間隔で、リセットと読み出しを実行することにより、偶数ラインの読み出し回数に対して、2倍である2回のリセットと読み出しを奇数ラインにおいて実行するものと考える。
このように考えた場合、2倍読み出し処理のとき図21で示されるように、奇数ラインの読み出し時刻は、曲線である偶数ラインの前後する読み出し時刻を2分割することで求められる。例えば、図21で示されるように、奇数ラインであるy=y3のラインに属する画素であって、時刻t2の画素P1の場合、その前後のタイミングにおける偶数ラインの読み出し時刻は、実線L323,L325のそれぞれにおける画素P1に対応する時刻t0と時刻t1であるものとする。この場合、奇数ラインであるy=y3のライン上の画素P1は、これら2つの時刻t0,t1の中間点である時刻t2で読み出せばよい。
しかしながら、時刻t2において、偶数ラインの読み出し時刻t1は、未定であり、画素P1に対応する偶数ライン上の画素の読み出しは時刻t1を利用して時刻t2を特定することはできない。すなわち、未来の手振れによるイメージセンサの動きは予測できないので、未来の偶数ラインの読み出し時刻t1を特定できず、結果として、奇数ラインであるy=y3のライン上の画素P1の読み出し時刻t2を特定することはできない。
尚、図21においては、実線L321,L323,L325が、偶数ラインおよび奇数ラインに属する画素データの読み出し時刻を表しており、実線L322,L324が奇数ラインに属する画素データの読み出し時刻を表している。図21においては、実線L321,L323,L325のそれぞれの間隔の2等分した位置に、実線L322,L324が配置されている。
以上のことから、奇数ラインの画素データの読み出し時刻については、直前の偶数ラインの画素データの読み出し時刻に基づいて近似により求める。
より詳細には、図21を参照した説明においては時間方向に2分割することで奇数ラインの画素データの読み出し時刻求めていたが、未来の偶数ラインにおける読み出し時刻を特定することができないので、空間方向に2分割する近似により、奇数ラインにおける読み出し時刻を求める。
すなわち、例えば、図22で示されるように、時刻t3であるとき、実線L342におけるy=y4までの偶数ラインの画素データが読み出されている。したがって、時刻t3以降は、未来であり、時刻t3の時点では未定である。このとき、時刻t3を含む、現在のフレームの偶数ラインの読み出し時刻に対して、1だけ過去のフレームから現在のフレームの読み出し時刻を示す実線L341を延長する点線L351を考える。
すなわち、この点線L351は、1つ過去のフレームの偶数ラインの画素データの読み出し時刻を示す実線L341の仮想的な延長線である。したがって、現在のフレームの偶数ラインの画素データの読み出し時刻t3に対応するライン(y=y4)と、1つ過去のフレームの偶数ラインの画素データの読み出し時刻の仮想的な延長線の時刻t3に対応するライン(y=y5)との中間地点となる図中の黒四角で示される画素P21のライン(y=(y4+y5)/2)を、時刻t3における奇数ラインの読み出す画素データのラインとして近似する。
以上の処理により、現在のフレームの偶数ラインの読み出し時刻を表す実線L342よりもy軸の正の空間における読み出し時刻を算出することが可能となる。尚、実線L341,L343についても同様である。
一方、現在のフレームの偶数ラインの読み出し時刻のよりも上方(y軸の負の方向)についても同様の手法が可能である。
すなわち、図23に示すように、現在の時刻が時刻t4である場合、偶数ラインの画素データの読み出し時刻を示す実線L342上の時刻t4までのラインの画素データが読み出されているが、時刻t4以降については、未来であり、時刻t4においては未定である。
ここで、時刻t4を含む、現在のフレームの偶数ラインの画素データの読み出し時刻に対して、現在のフレームから1つ未来のフレームの読み出し時刻を示す実線L342に対して、未来のフレームの最上位のラインへの移動量(図23の上向き点線矢印)だけ加算した点線L371を考える。
この点線L371を求めることができれば、現在までの偶数ラインL342を合わせて利用することで、奇数ラインの画素データを読み出す時刻を求めることができる。しかしながら、時刻t4においては、図23の上向き点線矢印は未来の事象であり、その大きさは未知の値である。従って、現在のフレームの偶数ラインの読み出し時刻の実線L342よりもy軸の正の方向のラインにおける読み出し時刻と同様にして求めることはできない。
そこで、現在のフレームの始まる時刻において、次のフレーム(1つ未来のフレーム)における"パンとブレの割合"を現在の偶数ラインにおける画素データの読み出し時刻を表す実線L342に加算し、点線L371を求める。
尚、この"パンとブレの割合"は、外部より供給される情報であり、従来からある既知の技術(制御方法)をもって取得することができる値であるので、その説明は、簡単なものとする。
すなわち、例えば、過去のイメージセンサの動きと極端に違う場合は、撮像者の意図した動き(つまりパン)であるとして、パンの割合を大きくし、逆に、過去のイメージセンサの動きと似たような動きである場合は、撮像者の意図しない動き(手振れ)であるとして、ブレの割合を大きくする。
また、"パンとブレの割合"の他の制御の方法としては、イメージセンサの現在のフレームの読み出し位置が、イメージセンサ11の端部に近づいた場合、次のフレームで読み出そうとする位置がイメージセンサ11の領域をはみ出してしまう可能性があるので、パンの割合を大きくする。このようにパンの割合を大きくすれば、強制的にy=y0から1080ライン分が読み出されるような位置にすることが可能となる。逆に、イメージセンサの中央部分を読み出している場合、ブレの割合を大きくする。
一方、図24で示されるように、イメージセンサの動きはパンであると仮定したときの、1つ未来のフレームの偶数ラインの読み出し時刻を表す一点鎖線L391を求める。また、図24で示されるように、イメージセンサの動きはブレであると仮定したときの、1つ未来のフレームの偶数ラインの読み出し時刻を表す二点鎖線L392を求める。
すなわち、イメージセンサの動きが完全にパンである場合、図11および図12を参照して説明したように、現在のフレームの読み出す時刻を表す点線L371にかかわらず、1つ未来のフレームの始まりの時刻においては、y=y0のラインを読み出す。そこで、現在のフレームの始まりの時刻においてy=y0−1080であり、現在のフレームの最後の時刻(つまり、1つ未来のフレームの始まりの時刻)においてy=y0である一点鎖線L391が求められる。すなわち、一点鎖線L391は、イメージセンサの動きがパンであると仮定したときの、1つ未来のフレームの偶数ラインの読み出し時刻の仮想的な延長線である。
また、イメージセンサの動きが完全に手振れによるブレである場合、図8および図9を参照して説明したように、現在のフレームの読み出し曲線の最後に対して1080ライン上のラインが、1つ未来のフレームの始まりのラインとなる。そこで、現在のフレームの偶数ラインの読み出し時刻を表す点線L371よりも常に1080ラインだけ上のラインを表す二点鎖線L392が求められる。すなわち、二点鎖線L392は、イメージセンサの動きは手振れによるブレであると仮定したときの、1つ未来のフレームの偶数ラインの読み出し時刻の仮想的な延長線である。
この一点鎖線L391と二点鎖線L392とを用いて、求められたパンと手振れの割合を用いて案分することで、1つ未来のフレームの偶数ラインの読み出し時刻の仮想的な延長線である点線L371が求められる。尚、"パンとブレの割合”が、完全にパンである場合、点線371は、一点鎖線L391と一致する。逆に、"パンとブレの割合”が、完全に手振れによるブレである場合、点線L371は、二点鎖線L392と一致する。
このようにして点線L371が求められることにより、例えば、図25の時刻t4においては、イメージセンサの動きがパンであると仮定したときの、1つ未来のフレームの偶数ラインの読み出し時刻の仮想的な延長線上のラインがy=y6となる画素P13が求められる。また、イメージセンサの動きは手振れであると仮定したときの、1つ未来のフレームの偶数ラインの読み出し時刻の仮想的な延長線上のラインがy=y7となる画素P11が求められる。このとき、1つ未来のフレームの偶数ラインの読み出し時刻の仮想的な延長線である点線L371上の画素P12のラインy=y8が、画素P11,P13におけるラインy=y6,y7をパンと手振れの割合で案分した画素P12のラインy=y8として求められる。
このようにして、1つ未来のフレームの偶数ラインの読み出し時刻の仮想的な延長線である点線L371を決定した後、現在のフレームの偶数ラインの読み出し時刻の実線L342よりもy軸の負の方向のラインについての手法と同様に算出することができる。すなわち、現在のフレームの偶数ラインの読み出し時刻が時刻t4であるラインy=y9と、1つ未来のフレームの偶数ラインの読み出し時刻の仮想的な延長線の時刻t4に対応するラインy=y8との中間地点となる黒丸で示される画素P22のラインy=(y8+y9)/2が、時刻t4における奇数ラインの画素データの読み出しラインとなる。
尚、上記説明では、奇数ラインの読み出し時刻について、偶数ラインの直前の読み出し時刻と今回の読み出し時刻の間を2分割して、2回のリセットと読み出しを行う」場合についての説明であったが、奇数ラインについて、偶数ラインの直前の読み出しと今回の読み出しの間を4分割して、4回のリセットと読み出しを行う4倍読み出し処理の場合についても同様である。
<撮像装置に供給される信号について>
以降において撮像装置の構成例について説明するにあたり、撮像装置の動作の制御に必要とされるクロックの構成と、撮像装置に入力される信号について説明する。
例えば、図11を参照して説明した場合においては、1/60秒の間に、1080ライン未満の画素データが読み出されることになるが、一方で、図12を参照して説明した場合においては、1080ライン以上の画素データが読み出されている。そこで、どちらの場合にも対応できるように、通常の1/(60×1080)秒で1ライン分の画素データが読み出されるよりも高速に動作させる必要がある。
そこで、図26で示されるように、(60×1080)HzのクロックclockHと共に、それよりも高速なクロックclockHMを発生するクロック信号発生部(図示せず)が設けられている。したがって、撮像装置においては、常時、クロックclockH,clockHMが発生されて、供給されることを前提とする。
したがって、例えば、イメージセンサ11の各画素のリセットや読み出しは、クロックclockHMに同期して実行される。ただし、最終的に、1フレームの画像を作成するに当たって、クロックclockHに同期させる必要がある。尚、図26においては、Hの値は1080であり、例えば20%余裕をもたせるために、HMの値は1080×1.2程度としている。
また、本技術においては、絶対時刻も必要であるので、クロックclockHMに同期して、1ずつインクリメントしていく絶対時刻absoluteTimeというデータもクロック信号発生部により発生されるものとする。
さらに、現在の時刻に対応するライン番号も必要であるので、クロックclockHMに同期して、1ずつインクリメントされていくライン番号curHM(1/60秒ごとに0にリセットされる)も、図示せぬクロック信号発生部により発生されるものとする。
したがって、図26においては、上からクロックclockH,clockHM、ライン番号curHM、および絶対時刻absoluteTimeが示されている。また、Hは、この例においては、1080であり、MHは、H×1.2であるものとするが、それ以外の値であってもよい。
図27で示されるように、本技術を適用したイメージセンサを備えた撮像装置101には、図26を参照して説明したクロックclockH,clockHM、ライン番号curHM、および絶対時刻absoluteTimeに加えて、さらに、適正露出時間(単位:秒)の情報が供給される。この適正露出時間(単位:秒)は、例えば、一般的な露出計等(図示せず)より求められるものである。
さらに、図27で示されるように、この撮像装置101には、WS×HS個の画素(受光素子)からなる上述したイメージセンサ11が設けられており、各画素(受光素子)において図示せぬレンズを介して被写体からの光Qが入射され、光電変換が行われる。このとき、上述した一連の処理により、撮像装置101からは、ローリングシャッタ現象が補正せれ、かつ、ブレが抑制された動画が出力される。
<本技術を適用したイメージセンサを備えた撮像装置の構成例>
次に、図28を参照して、上述した本技術を適用したイメージセンサを備えた撮像装置の構成例について説明する。
撮像装置101は、制御部(controller)121、タイミング制御部(Reset and Readout Timing block)122、垂直制御部(Computing Line Corresponding to Start Time block)123、水平制御部(Computing Pixel Corresponding to Start Time block)124、イメージセンサ(Image Sensor)11、パラレルシリアル変換部(P/S)125、乗算部126、フレームメモリ(Frame Memory)127、マッチング部(Matching)128、動き検出部(Comp Delta MV)129、ラインメモリ(Line Memory)130、データセットメモリ(Data Set Memory)131、および補間部(Interpolation)132を備えている。
制御部121は、撮像装置101の動作の全体を制御する。より詳細には、制御部121は、タイミング制御部122、垂直制御部123、および水平制御部124の動作を制御する。尚、制御部121の詳細な動作については、図29を参照して詳細を後述する。
垂直制御部123は、制御部121により制御され、動き検出部129より供給されてくる画素毎の動きの情報に基づいて、リセットすべき垂直方向の画素位置、および読み出すべき垂直方向の画素位置を特定する情報をタイミング制御部122およびデータセットメモリ131に供給する。尚、垂直制御部123の動作については、図30を参照して詳細を後述する。
タイミング制御部122は、制御部121により制御され、垂直制御部123より供給されてくるリセットすべき垂直方向の画素位置、および読み出しすべき垂直方向の画素位置を特定する情報に基づいて、イメージセンサ11の各画素についてリセット、または読み出しを制御する。また、タイミング制御部122は、リセット、および読み出しのタイミングの情報に基づいて、画素単位の露光時間の差異を調整するための係数を乗算部126に供給する。さらに、タイミング制御部122は、リセット、および読み出しのタイミングの情報をフレームメモリ127、およびマッチング部128に供給する。尚、タイミング制御部122の動作については、図30を参照して詳細を後述する。
イメージセンサ11は、タイミング制御部122より供給されてくる各画素の垂直方向に画素位置毎のタイミングの情報に基づいて、リセットおよび読み出しを実行することで、所定の露光時間において、光電変換により生成された画素データをパラレル信号としてパラレルシリアル変換部(P/S)125に供給する。尚、イメージセンサ11の構成の詳細については、図31を参照して後述する。
水平制御部124は、制御部121により制御され、動き検出部129より供給されてくる画素毎の動きの情報に基づいて、読み出しすべき水平方向の画素位置を特定する情報をパラレルシリアル変換部125およびデータセットメモリ131に供給する。尚、水平制御部124の動作については、図30を参照して詳細を後述する。
パラレルシリアル変換部(P/S)125は、イメージセンサ11よりパラレル信号として供給されてくる画素データをシリアル信号に変換すると共に、水平制御部124からの水平方向の画素位置を特定する情報に基づいて、読み出すべき画素位置の画素データのみを乗算部126に供給する。尚、パラレルシリアル変換部125の構成および動作については、図31を参照して詳細を後述する。
乗算部126は、タイミング制御部122より供給されてくる、画素単位の露光時間の差異を調整するための係数を、シリアル信号に変換された画素データにそれぞれ乗じて、露光時間を調整し、フレームメモリ127、マッチング部128、およびラインメモリ130に供給する。尚、乗算部126の構成および動作については、図31を参照して詳細を後述する。
フレームメモリ127は、乗算部126より供給されてくる画素データをフレーム単位で一時的に記憶して、適宜マッチング部128に供給する。尚、フレームメモリ127の動作の詳細については、図32を参照して後述する。
マッチング部128は、乗算部126より供給されてくる今現在のフレームの画素データと、フレームメモリ128より供給されてくる1つ前のフレームの画素データとを用いて、画素単位でマッチングし、マッチング結果を動き検出部129に供給する。尚、マッチング部128の動作の詳細については、図32を参照して後述する。
動き検出部129は、マッチング部128のマッチング結果に基づいて、画素単位の動きを検出し、検出結果を垂直制御部123、および水平制御部124に供給する。尚、動き検出部129の動作の詳細については、図32を参照して後述する。
補間部132は、ラインメモリ130に格納されているフレーム周波数と同様のクロックclockHより高速のクロックclockHM単位で読み出される画素データを、データセットメモリ131に記憶されているデータセットに基づいて読み出し、クロックclockH単位の画素データを補間生成し、出力する。尚、補間部132の動作の詳細については、図33を参照して後述する。
<制御部の入力信号および出力信号について>
次に、図29を参照して制御部121の入力信号および出力信号について説明する。
制御部121は、図示せぬ露出計等より供給される周辺外光の情報に基づいた、適正露光時間の信号が入力される。また、制御部121は、動き検出部129より供給されてくる水平移動量deltaWperTwoClockHMおよび垂直移動量deltaHperTwoClockHMの信号が入力される。
水平移動量deltaWperTwoClockHMは、現在の時刻において、クロックclockHMの2サイクル分の時間後に、どれだけ右方向(x軸方向)の画素を読み出せば良いかを示す画素数を表すものである。
垂直移動量deltaHperTwoClockHMは、現在の時刻において、クロックclockHMの2サイクル分の時間後に、どれだけ下方(y軸方向)のラインを読み出せば良いかを示すライン数を表すものである。
なお、図19乃至図21を参照して説明したように、1Hの時間(=クロックclockH=1に対応する時間)ごとに動きを検出して読み出すラインが決定されるが、動き検出部129においては、クロックclockHMの2サイクル分の時間ごとに動きが検出されて読み出すべきライン(およびx軸方向の画素位置)が決定されている。これは、後述するように、偶数ラインと奇数ラインとが、クロックclockHMの偶数サイクル目と奇数サイクル目とで交互に読み出されるからであり、処理もクロックclockHMの2サイクル分の時間ごとに行われるからである。
さらに、垂直移動量deltaHperTwoClockHMは、現在読み出された垂直方向(y座標)のラインYcurrentに対して、クロックclockHMの2サイクル分の時間後に読み出すべきラインYnextを示している。すなわち、Ynext=Ycurrent+deltaHperTwoClockHMである。
水平移動量deltaWperTwoClockHMは、現在読み出した水平方向(X座標)の画素位置Xcurrentに対して、クロックclockHMの2サイクル分の時間後に読み出すべき画素位置Xnextを示している。すなわち、Xnext=Xcurrent+deltaWperTwoClockHMである。
また、手振れによるブレのない(例えば、三脚に固定した)撮像装置101で動画を撮像した場合、図5,図6を参照して説明したように、常に、イメージセンサ11内の中央部分のW×H画素=1980×1080画素(固定された領域)が取り出されることになる。水平方向のx座標に着目すると、いずれのラインについても常に同じ座標の値から始まって1980画素を読み出すので、X=Xcurrentである。一方、y座標について着目すると、1Hごと(クロックclockHの1サイクル時間ごと)に次のラインが読み出される。
すなわち、クロックclockHMの2サイクルごとに、2×H/HMだけ下がったラインが読み出されることになる。従って、Ynext=Ycurrent+2×H/HMであり、垂直移動量deltaHperTwoClockHM=2×H/HMである。
以上をまとめると、手振れによるブレのない(例えば、三脚に固定した)カメラで動画を撮像した場合、水平移動量deltaWperTwoClockHM=0.0、かつ、垂直移動量deltaHperTwoClockHM=2×H/HMとなるような処理が、イメージセンサ11においては行われる。ここで、水平移動量deltaWperTwoClockHMが0であるのに対し、垂直移動量deltaHperTwoClockHMの値は0でない。すなわち、例えば、手振れによるブレによりイメージセンサ11に投影されている投影像が、クロックclockHMの2サイクル分の間に、0.1画素左方向に、かつ、0.2画素下方向にずれるのであれば、水平移動量deltaWperTwoClockHM=−0.1であり、垂直移動量deltaHperTwoClockHM=(2×H/HM)+0.2である。
制御部121は、適正露光時間、水平移動量deltaWperTwoClockHM、および垂直移動量deltaHperTwoClockHMの入力を受け付ける。また、制御部121は、これらの入力に基づいて、現在フレーム偶数ライン露光時間exposure time for current image capt、現在奇数フレーム読み出し回数number of readout per frame for current motion capture、現在フレーム奇数ライン露光時間exposure time for current motion capture、現在垂直基準位置designated line number which attracts the start of current frame、現在垂直パンブレ割合attractive vertical force for current frame、直前水平基準位置designated pixel number which attracts the start of previous frame、および直前水平パンブレ割合attractive horizontal force for previous frameを出力する。
現在フレーム偶数ライン露光時間exposure time for current image captureは、現在フレームの偶数ラインにおける各画素のクロックclockHMを単位時間とした適正露光時間を意味する。すなわち、外部の露出計等より供給される情報である適正露光時間(単位:秒)を(60×HM)倍した値である。現在のフレームの偶数ラインは、この値の示す時間だけ露光されるように制御される。
現在奇数フレーム読み出し回数number of readout per frame for current motion captureは、直前の偶数ラインの画素データの読み出し時刻と現在の偶数ラインの画素データの読み出し時刻との時間間隔において、奇数ラインの画素データのリセットと読み出しを行う回数を示すものである。ここでは、1,2、または、4のいずれかであるが、それ以外の回数であってもよいものである。
現在フレーム奇数ライン露光時間exposure time for current motion captureは、現在フレームの奇数ラインにおける各画素のクロックclockHMを単位時間とした適正露光時間を意味する。
現在垂直基準位置designated line number which attracts the start of current frame、および直前水平基準位置designated pixel number which attracts the start of previous frameは、それぞれイメージセンサ11内から、画像を構成するW×H画素=1980×1080画素の領域21を取り出す際に基準となる左上の画素における垂直方向の位置を特定する現在フレームのy座標および直前フレームのx座標を表している。つまり、直前水平基準位置designated pixel number which attracts the start of previous frame=(WS−W)/2であり、現在垂直基準位置designated line number which attracts the start of current frame=(HS−H)/2である。
現在垂直パンブレ割合attractive vertical force for current frame、および直前水平パンブレ割合attractive horizontal force for previous frameは、それぞれ現在フレームの垂直方向、および直前フレームの水平方向のパンとブレの割合を示し、いずれも0.0以上1.0以下の値である。それぞれ、この値が、小さければ小さいほど、カメラの動きは手振れによるブレであるとして、補正を強くかける。逆に大きければ大きいほど、カメラの動きはパンであるとして、補正を弱くする。なお、ここで言う補正とは、各フレームの最初の時刻において、1080ラインだけ上のラインを読み出すか、または、強制的にy=y0のラインを読み出すかという事である。水平方向についても同様である。
<タイミング制御部、垂直制御部および水平制御部の入力信号および出力信号について>
次に、図30を参照して、タイミング制御部122、垂直制御部123および水平制御部124の入力信号および出力信号について説明する。
まず、垂直制御部123について説明する。
垂直制御部123には、制御部122より供給される現在垂直基準位置designated line number which attracts the start of current frame、および現在垂直パンブレ割合attractive vertical force for current frame、並びに、動き検出部129より供給される垂直移動量deltaHperTwoClockHMがそれぞれ入力される。
垂直制御部123は、これらの入力に基づいて、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frame、現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frame、および未来フレーム偶数ライン延長線上垂直座標line corresponding to start time of next frameを出力する。
直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frameは、例えば、図25を用いて説明した1つ直前のフレームの偶数ラインの読み出し時刻の仮想的な延長線である点線L351の現在の時刻におけるy座標の値を表す。
現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frameは、例えば、図25を用いて説明した現在のフレームの偶数ラインの読み出し時刻を表す実線L342上の現在の時刻におけるy座標の値を表す。
未来フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of next frameは、図25を用いて説明した1つ未来のフレームの偶数ラインの読み出し時刻の仮想的な延長線である点線L371上の現在の時刻におけるy座標の値を表す。
次に、タイミング制御部122について説明する。タイミング制御部122には、垂直制御部123より直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frame、現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frame、および未来フレーム偶数ライン延長線上垂直座標line corresponding to start time of next frameが入力される。
また、タイミング制御部122には、制御部121より、現在フレーム偶数ライン露光時間exposure time for current image capt、現在奇数フレーム読み出し回数number of readout per frame for current motion capture、現在フレーム奇数ライン露光時間exposure time for current motion captureが入力される。
さらに、タイミング制御部122は、入力された信号に基づいて、イメージセンサ11の各画素における露光を制御するリセット信号reset[0:HS-1]、および読み出し信号read[0:HS-1]を出力する。さらに、タイミング制御部122は、入力された信号に基づいて、偶数ライン係数exposure compensation value for image capture line、奇数ライン係数exposure compensation value for motion capture line[0:3]、現在時刻読み出し偶数ラインpresent read line for image capture、および現在時刻読み出し奇数ラインpresent read line for motion capture[0:3]を、フレームメモリ127、マッチング部128、およびラインメモリ130に出力する。尚、ここで、[0:3]は、[0]乃至[3]を表しており、以降において、[i](i=0乃至3)とも表記するものとする。
ここで、リセット信号reset[0:HS-1]は、イメージセンサ11のWS×HS個の画素(受光素子)の中で、現在の時刻においてリセットすべき垂直方向の位置であるラインを指定する信号である。
読み出し信号read[0:HS-1]は、イメージセンサ11のWS×HS個の画素(受光素子)の中で、現在の時刻において読み出すべき垂直方向の位置であるラインを指定する信号である。
偶数ライン係数exposure compensation value for image capture lineは、現在の時刻において読み出している偶数ラインの画素データに対して、乗算すべき係数を指定しており、各ラインのリセット時刻と読み出し時刻との差に逆比例するゲインの値である。
奇数ライン係数exposure compensation value for motion capture line[0:3]は、現在の時刻において読み出している奇数ラインの画素に対して、乗算すべき係数を指定している。
より詳しく述べると、奇数ライン係数exposure compensation value for motion capture line [0]は、奇数ラインについて、偶数ラインの直前の読み出し時刻と現在の読み出し時刻との間隔を4分割した時間間隔で、4回のリセットと読み出しを行う、4倍読み出し処理の場合の4回の中の最初の読み出しを行う奇数ラインの画素に対して、乗算すべき係数である。
奇数ライン係数exposure compensation value for motion capture line[1]は、奇数ラインについて、偶数ラインの直前の読み出し時刻と現在の読み出し時刻との間隔を4分割した時間間隔で、4回のリセットと読み出しを行う4倍読み出し処理の場合の2番目の読み出しを行う奇数ラインの画素に対して、乗算すべき係数である。また、奇数ライン係数exposure compensation value for motion capture line[1]は、「奇数ラインについて、偶数ラインの直前の読み出し時刻と現在の読み出し時刻との間隔を2分割した時間間隔で、2回のリセットと読み出しを行う2倍読み出し処理の場合の前半の読み出しを行った奇数ラインの画素に対して、乗算すべき係数である。
奇数ライン係数exposure compensation value for motion capture line[2]は、奇数ラインについて、偶数ラインの直前の読み出し時刻と現在の読み出し時刻との間隔を4分割した時間間隔で、4回のリセットと読み出しを行う4倍読み出し処理の場合の3番目の読み出しを行う奇数ラインの画素に対して、乗算すべき係数である。
奇数ライン係数exposure compensation value for motion capture line[3]は、奇数ラインについて、偶数ラインの直前の読み出し時刻と現在の読み出し時刻の間隔を4分割した時間間隔で、4回のリセットと読み出しを行う4倍読み出し処理の場合の4番目(最後)の読み出しを行う奇数ラインの画素に対して、乗算すべき係数である。
また、奇数ライン係数exposure compensation value for motion capture line[3]は、奇数ラインについて、偶数ラインの直前の読み出し時刻と現在の読み出し時刻との間隔を2分割した時間間隔で、2回のリセットと読み出しを行う2倍読み出し処理の場合の後半の読み出しを行う奇数ラインの画素に対して、乗算すべき係数である。
さらに、奇数ライン係数exposure compensation value for motion capture line[3]は、奇数ラインについて、偶数ラインのリセットと読み出しと同じリセットと読み出しを行う等倍読み出し処理の場合の読み出しを行った奇数ラインの画素に対して、乗算すべき係数である。
現在時刻読み出し偶数ラインpresent read line for image captureは、イメージセンサ11のWS×HS個の画素(受光素子)の中で、現在の時刻において読み出した偶数ラインの垂直方向の位置(y座標)を表している。
現在時刻読み出し奇数ラインpresent read line for motion capture[0:3]は、イメージセンサ11のWS×HS個の画素(受光素子)の中で、現在の時刻において読み出した奇数ラインの位置(y座標)を表している。
より詳しく述べると、現在時刻読み出し奇数ラインpresent read line for motion capture[0]は、奇数ラインについて、偶数ラインの画素データの直前の読み出し時刻と現在の読み出し時刻の間隔を4分割した時間間隔で、4回のリセットと読み出しを行う4倍読み出し処理の場合の4回の中の最初に読み出した奇数ラインの位置(y座標)を表している。
現在時刻読み出し奇数ラインpresent read line for motion capture[1]は、奇数ラインについて、偶数ラインの画素データの直前の読み出し時刻と現在の読み出し時刻との間隔を4分割した時間間隔で、4回のリセットと読み出しを行う4倍読み出し処理の場合の2番目の読み出しを行う奇数ラインの位置(y座標)を表している。
また、現在時刻読み出し奇数ラインpresent read line for motion capture[1]は、「奇数ラインについて、偶数ラインの直前の読み出し時刻と今回の読み出し時刻との間隔を2分割して、2回のリセットと読み出しを行う2倍読み出し処理の場合の前半の読み出しを行った奇数ラインの位置(y座標)を表している。
現在時刻読み出し奇数ラインpresent read line for motion capture[2]は、奇数ラインについて、偶数ラインの直前の読み出し時刻と現在の読み出し時刻の間隔を4分割した時間間隔で、4回のリセットと読み出しを行う4倍読み出し処理の場合の3番目の読み出しを行う奇数ラインの位置(y座標)を表している。
現在時刻読み出し奇数ラインpresent read line for motion capture[3]は、奇数ラインについて、偶数ラインの直前の読み出し時刻と現在の読み出し時刻の間隔を4分割した時間間隔で、4回のリセットと読み出しを行う4倍読み出し処理の場合の4番目(最後)の読み出しを行った奇数ラインの位置(y座標)を表している。
また、現在時刻読み出し奇数ラインpresent read line for motion capture[3]は、奇数ラインについて、偶数ラインの直前の読み出し時刻と今回の読み出し時刻の間隔を2分割した時間間隔で、2回のリセットと読み出しを行う2倍読み出し処理の場合の後半の読み出しを行う奇数ラインの位置(y座標)を表している。
さらに、現在時刻読み出し奇数ラインpresent read line for motion capture[3]は、奇数ラインについて、偶数ラインのリセット時刻と読み出し時刻とを同じ時間間隔でリセットと読み出しを行う等倍読み出し処理の場合の読み出しを行う奇数ラインの位置(y座標)を表している。
次に、水平制御部124について説明する。
水平制御部124には、動き検出部129より供給されてくる水平変化量deltaHperTwoClockHM、並びに制御部121からの直前水平基準位置designated pixel number which attracts the start of previous frame、および直前垂直パンブレ割合attractive vertical force for previous frameが入力される。
また、水平制御部124は、入力される信号に基づいて、水平方向読み出し開始位置read start pixel、整数水平方向読み出し開始位置read start pixel int、および過去水平方向読み出し開始位置read start pixel pastを出力する。
水平方向読み出し開始位置read start pixelは、現在の時刻からクロックclockHMの2サイクル分の時間後に読み出す画素位置Xnextの水平方向の座標(x座標)である。水平方向読み出し開始位置read start pixelは、一般的には、少数部がある。
整数水平方向読み出し開始位置read start pixel intは、整数水平方向読み出し開始位置read start pixelを整数に切り捨てた値である。すなわち、イメージセンサ11のWS×HS個の画素(受光素子)からの画素データは整数単位で指定して読み出すので、水平方向読み出し開始位置read start pixelの小数点以下の値を切り捨てた整数の値として、整数水平方向読み出し開始位置read start pixel intが必要となる。
<イメージセンサ、パラレルシリアル変換部、および乗算部における入力信号と出力信号について>
次に、図31を参照して、イメージセンサ11、パラレルシリアル変換部125、および乗算部126の構成と、それぞれの構成における入力信号と出力信号について説明する。
イメージセンサ11は、タイミング制御部122より供給されてくるリセット信号reset[0:HS-1]および読み出し信号read[0:HS-1]に基づいて、それぞれのマトリクス状の情報から対応する位置の画素の画素データを読み出して順次パラレル信号として転送し、パラレルシリアル変換部125に供給する。
パラレルシリアル変換部125は、詳細には、図31で示されるように、パラレルシリアル変換部125−1乃至125−5から構成されており、イメージセンサ11より入力されてきた画素データがパラレルシリアル変換部125−1乃至125−5に入力される。そして、パラレルシリアル変換部125−1乃至125−5は、それぞれ入力されたパラレル信号からなる画素データをパラレルシリアル変換してシリアル信号として乗算部126−1乃至126−5に供給する。
このような動作により、ライン番号curHMの値が偶数である時間(クロックclockHMの1サイクル分の時間)に、1ラインの偶数ラインの画素データが読み出される。この偶数ラインの画素データは、パラレルシリアル変換部125−1にパラレル信号として入力される。
ライン番号curHMの値が奇数である時間(クロックclockHMの1サイクル分の時間)では、奇数ラインのうちの最大で4ライン分の画素データが読み出される。この4ライン分の奇数ラインの画素データは、パラレルシリアル変換部125−2乃至125−5に、それぞれ、パラレル信号として入力される。
より詳細には、現在の時刻における、奇数ラインについて、偶数ラインの画素データの直前の読み出し時刻と現在の読み出し時刻の間隔を4分割した時間間隔で、4回のリセットと読み出しを行う4倍読み出し処理の場合、イメージセンサ11のWS×HS個の画素(受光素子)から読み出された、4回の読み出し画素データの中の最初の読み出しによる1ライン分(奇数ライン)の画素データが、パラレルシリアル変換部125−1にパラレル信号として入力される。
現在の時刻における、奇数ラインについて、偶数ラインの画素データの直前の読み出し時刻と現在の読み出し時刻との間隔を4分割した時間間隔で、4回のリセットと読み出しを行う4倍読み出し処理の場合、イメージセンサ11のWS×HS個の画素(受光素子)から読み出された、4回の読み出し画素データのなかの2番目の読み出しによる1ライン分(奇数ライン)の画素データは、パラレルシリアル変換部125−3にパラレル信号として入力される。
また、現在の時刻における、奇数ラインについて、偶数ラインの画素データの直前の読み出し時刻と今回の読み出し時刻との間隔を2分割した時間間隔で、2回のリセットと読み出しを行う2倍読み出し処理の場合、イメージセンサ11のWS×HS個の画素(受光素子)から読み出された、2回の読み出し画素データの最初(前半)の読み出しによる1ライン分(奇数ライン)の画素データは、パラレルシリアル変換部125−3にパラレル信号として入力される。
さらに、現在の時刻における、奇数ラインについて、偶数ラインの画素データの直前の読み出し時刻と現在の読み出し時刻との間隔を4分割した時間間隔で、4回のリセットと読み出しを行う4倍読み出し処理の場合、イメージセンサ11のWS×HS個の画素(受光素子)から読み出された、4回の読み出し画素データの3番目の読み出しによる1ライン分(奇数ライン)の画素データは、パラレルシリアル変換部125−4にパラレル入力される。
現在の時刻における、奇数ラインについて、偶数ラインの画素データの直前の読み出し時刻と現在の読み出し時刻との間隔を4分割した時間間隔で、4回のリセットと読み出しを行う4倍読み出し処理の場合のイメージセンサ11のWS×HS個の画素(受光素子)から読み出された、4回の読み出し画素データのなかの4番目(最後)の読み出しによる1ライン分(奇数ライン)の画素データは、パラレルシリアル変換部125−5にパラレル信号として入力される。
また、現在の時刻における、奇数ラインについて、偶数ラインの直前の読み出し時刻と現在の読み出し時刻との間隔を2分割した時間間隔で、2回のリセットと読み出しを行う2倍読み出し処理の場合、イメージセンサ11のWS×HS個の画素(受光素子)から読み出された、2回の読み出しのなかの2番目(後半)の読み出しによる1ライン分(奇数ライン)の画素データは、パラレルシリアル変換部125−5にパラレル信号として入力される。
さらに、現在の時刻における、奇数ラインについて、偶数ラインのリセット時刻と読み出し時刻とが同じ等倍処理の場合、イメージセンサ11のWS×HS個の画素(受光素子)から読み出された1ライン分(奇数ライン)の画素データは、パラレルシリアル変換部125−3にパラレル入力される。
これらのパラレルシリアル変換部125−1乃至125−5に入力された画素データは、遅延部(1 delay)141により遅延されて供給される整数水平方向読み出し開始位置read start pixel intの値が示す位置(x座標の位置)から右方向(x座標の正の方向)の画素が1画素ずつシリアル信号として読み出される。読み出されたシリアル信号からなる画素データは、それぞれ乗算部126−1乃至126−5に供給される。
乗算部126−1は、リセットの時刻と読み出し時刻との差分となる時間に逆比例する偶数ライン係数exposure compensation value for image capture lineを乗じて、偶数ラインデータimg dataとして出力する。
また、乗算部126−2乃至126−5は、リセットの時刻と読み出し時刻との差分となる時間に逆比例する奇数ライン係数exposure compensation value for motion capture line[0:3]を乗じて、奇数ラインデータmot data 0、mot data 1、mot data 2、mot data 3としてそれぞれ出力する。
尚、以降においても、パラレルシリアル変換部125−1乃至125−5、および乗算部126−1乃至126−5をそれぞれ区別する必要がない場合、単にパラレルシリアル変換部125および乗算部126と称するものとし、その他の構成についても同様にする。
<フレームメモリ、マッチング部および動き検出部の構成について>
次に、図32を参照して、フレームメモリ、マッチング部および動き検出部の入力信号および出力信号について説明する。
まず、フレームメモリ127について説明する。
フレームメモリ127は、圧縮部(shrink)161−1乃至161−4により圧縮された奇数ラインデータmot data [i](i=0乃至3)を記憶する。この際、フレームメモリ127は、圧縮部161−1乃至161−4のそれぞれに対応して入力されるイネーブル信号present read line for motion capture[i](Write EN[i])(i=0乃至3)がそれぞれ有効であることを示す信号である場合、In0端子、In1端子、In2端子、In3端子のそれぞれに入力される、圧縮された奇数ラインデータmot data [i](i=0乃至3)を記憶する。また、フレームメモリ127は、遅延部(1 delay)151により1クロックclockHM分ほど遅延された整数水平方向読み出し開始位置read start pixel int、および絶対時刻absoluteTimeの情報を格納する。
マッチング部128は、マッチング部128−1乃至128−4より構成され、それぞれが奇数ラインデータmot data [i](i=0乃至3)のそれぞれに対応する処理を実行する。より詳細には、マッチング部128−1乃至128−4は、それぞれに対応してEN端子より入力されるイネーブル信号present read line for motion capture[i](Write EN[i])(i=0乃至3)がそれぞれ有効であることを示す信号である場合、現在読み出されている奇数ラインデータmot data [i]と、伸張部(enlarge)162によりフレームメモリ127より読み出され、伸張された、対応する過去の奇数ラインデータmot data [i]の入力を受け付ける。マッチング部128−1乃至128−4は、TGT端子より現在の奇数ラインデータmot data [i]をターゲットデータtarget dataを受け付け、REF端子より伸張部162より供給されてくる過去の奇数ラインデータmot data [0:3]を参照データreference dataとすることで、相互のライン上における、相関の高いラインの画素配列の位置をマッチングにより検索する。そして、マッチング部128−1乃至128−3は、マッチングの検索結果として、垂直方向差分diffH、および水平方向差分diffW、並びに基準時刻baseTimeを動き検出部129に供給する。
動き検出部129は、奇数ラインデータmot data [0]乃至mot data [3]のそれぞれについての垂直方向差分diffH、および水平方向差分diffW、並びに基準時刻baseTimeに基づいて、それぞれの水平移動量deltaWperTwoClockHMおよび垂直移動量deltaHperTwoClockHMを動きとして検出し、検出結果を出力する。
ところで、圧縮部128は、入力されてくる画素データを、例えば、1/8程度のデータ量に圧縮し、フレームメモリ127に記憶させる。また、伸張部162は、フレームメモリ127に記憶されている、圧縮された画素データを、例えば、8倍程度のデータ量に伸張する。フレームメモリ127に記憶される画素データは、マッチング部128が、マッチングに利用するのみであるので、高解像度で、データ量の大きな画像である必要がない。このため、フレームメモリ127は、小さな要領のもので事足り、一般的に必要とされるイメージセンサ11より出力される1フレーム分の画素データを記憶することができるほどの容量は不要である。
<データセットメモリ、ラインメモリ、および補間部について>
次に、図33を参照して、ラインメモリ130、データセットメモリ131、および補間部132の構成について説明する。
データセットメモリ(Memory: Write Data Set only when timeHM is even.)131は、Data Set端子を介して入力される、過去水平方向読み出し開始位置read start pixel past、水平方向読み出し開始位置read start pixel、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frame、現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frame、および、クロックtimeHM(クロックcurHMの遅延部(1 delay)181を介した値)を1組にパッキングしたデータセットとして、Write EN端子にイネーブル信号が入力されるとき、記憶する。
これらデータセットは、後述するようにクロックclockHMの2サイクルに1回更新されるので、クロックtimeHMが奇数のときのみ、記録するように処理される。このデータセットは、クロックclockHMに同期して、現在の時刻において、どのラインのどの画素が読み出されるかを表す情報である。
次に、ラインメモリ130について説明する。
ラインメモリ130は、In 0端子より偶数ラインデータimg dataを受け付け、イメージセンサ11のWS×HS個の画素(受光素子)の中のどのライン(y座標)のどの位置(x座標)から読み出されたデータであるかという情報、すなわち、現在時刻読み出し偶数ラインpresent read line for image captureおよび整数水平方向読み出し開始位置read start pixel intの遅延部(1 delay)182を介した値を、一緒にパッキングして記憶する。また、ラインメモリ130は、Write EN 0端子に、現在時刻読み出し偶数ラインpresent read line for image captureが対応するラインである時、有効なデータあるものとみなし、偶数ラインデータimg dataを記憶する。
また、ラインメモリ130は、In 1端子を介して、奇数ラインデータmot data 3を受け付け、イメージセンサ11のWS×HS個の画素(受光素子)の中のどのライン(y座標)のどの位置(x座標)から読み出されたデータであるかという情報、すなわち、現在時刻読み出し奇数ラインpresent read line for motion capture[3]および整数水平方向読み出し開始位置read start pixel intの遅延部(1 delay)182を介した値と一緒にパッキングして、記憶する。さらに、ラインメモリ130は、Write EN 1端子に、現在時刻読み出し奇数ラインpresent read line for motion capture[3]が対応するラインである時、有効なデータであるものとみなし、奇数ラインデータmot data 3を記憶する。
次に、補間部132について説明する。
補間部132は、クロックclockHMに同期して、データセットメモリ131に記憶されている、どの時刻(上述のtimeHM)に、どのラインのどの画素を読み出せば良いかを示す情報から、クロックclockHに同期した各時刻において、どのラインのどの画素を読み出せば良いかという情報を求める。そして、補間部132は、この情報に基づいて、ラインメモリ130にアクセスし、対応する偶数ラインデータimg data、および奇数ラインデータmot data 3を用いて、現在のクロックclockHに対応するラインの画素を補間生成し、出力データOut Dataとして出力する。
<画像データ出力処理>
次に、図34のフローチャートを参照して、撮像装置101の画像データ出力処理について説明する。
ステップS11において、制御部121は、図示せぬ露出計などにより測定される撮像領域の適正露出時間の情報を取得する。
ステップS12において、動き検出部129は、適正露光時間中のブレ量を測定する。すなわち、動き検出部129は、ライン単位の画素の動きを検出し、検出結果をブレ量として垂直制御部123、および水平制御部124に出力する。垂直制御部123は、ブレ量の情報に基づいて、イメージセンサ11上の読み出し開始位置の情報を生成してタイミング制御部122、およびデータセットメモリ131に供給する。データセットメモリ131は、供給されてきた水平方向の読み出し開始位置の情報を記憶する。尚、ブレ量となる水平移動量deltaWperTwoClockHMおよび垂直移動量deltaHperTwoClockHMを求める処理については、図70乃至図72を参照して、詳細を後述する。
ステップS13において、タイミング制御部122は、イメージセンサ11上の読み出し開始位置の情報に基づいて、露光時間が適正露光時間となるように偶数ラインに対してリセット信号を供給すると共に、適切なタイミングで読み出し信号を指示して読み出させる。イメージセンサ11は、この指示に基づいて、偶数ラインについて、リセット信号、および読み出し信号に対応するラインの画素データを出力する。このとき、データセットメモリ131は、供給されてきた読み出される画素のラインの座標の情報を記憶する。
ステップS14において、制御部121は、ブレ量に応じて奇数ラインのリセットと読み出しを繰り返す回数を特定し、特定した繰り返し回数、すなわち、等倍読み出し処理、2倍読み出し処理、および4回読み出し処理のいずれかを特定し、その回数を特定する情報をタイミング制御部122に供給する。
より具体的には、ブレ量が2画素未満である場合、タイミング制御部122は、等倍読み出し処理を実行するものとし、奇数ラインの画素データが偶数ラインの画素データの読み出し回数と同一である等倍読み出し処理である1回であることを示す情報をタイミング制御部122に供給する。
同様に、ブレ量が2画素以上で、かつ、4画素未満である場合、タイミング制御部122は、2倍読み出し処理を実行するものとし、奇数ラインの画素データを偶数ラインの画素データの露光時間を半分にして、リセットと読み出しを2回とする情報をタイミング制御部122に供給する。
さらに、ブレ量が4画素以上である場合、タイミング制御部122は、4倍読み出し処理を実行するものとし、奇数ラインの画素データを偶数ラインの画素データの露光時間を1/4にして、リセットと読み出しを4回とする情報をタイミング制御部122に供給する。
このような処理により、タイミング制御部122は、イメージセンサ11上の読み出し開始位置の情報に基づいて、奇数ラインに対して等倍読み出し処理、2倍読み出し処理、および4倍読み出し処理のいずれかとなるようにリセット信号を供給すると共に、適切なタイミングで読み出し信号を指示して読み出させる。イメージセンサ11は、この指示に基づいて、奇数ラインについて、リセット信号、および読み出し信号に対応するラインの画素データを出力する。
以上の処理により順次出力される画素データは、パラレルシリアル変換部125に供給されて、パラレル信号からシリアル信号に変換されて、乗算部126に供給される。乗算部126は、タイミング制御部122より供給されてくる露光時間を調整する係数を乗じることで、各画素のゲインを調整してフレームメモリ127、マッチング部128、およびラインメモリ130に供給する。尚、偶数ラインおよび奇数ラインのリセットおよび読み出しに係る処理については、図47乃至図64を参照してより詳細な処理について後述する。
ステップS15において、補間部132は、データセットメモリ131に格納されているデータセットの情報に基づいて、ラインメモリ130に記憶されているライン単位の画素データに基づいて、偶数ラインの画素データと奇数ラインの画素データとを用いて、それらを合成することで画像を構成し、出力する。尚、補間部132の処理については、図73乃至図75を参照して詳細を後述する。
ステップS16において、制御部121は、所定の1フレーム分の処理に当てられている時間が経過するまで、処理を停止し、初手の時間が経過した場合、処理は、ステップS11に戻り、それ以降の処理が繰り返される。
以上の処理により、偶数ラインにより、通常の適正露光時間の画像が取得され、奇数ラインによりブレ量に応じた露光時間の画像が取得され、これらが合成されることにより、ブレが抑制された画像を生成することが可能となる。尚、各処理の詳細な動作については、図36以降を参照して後述する。
<読み出しライン制御処理>
次に、図35を参照して、読み出しライン制御処理について説明する。
ステップS21において、マッチング部128は、今現在読み出されている奇数ラインの画素データと、フレームメモリ127より読み出される奇数ラインの画素データであって、伸張部162により伸張されている奇数ラインの画素データとのマッチング処理により、相関の高い位置を検出し、検出結果を動き検出部129に供給する。動き検出部129は、この相関高い奇数ラインの画素データのそれぞれのフレーム内における垂直方向の移動距離に基づいて、1H(1ライン分)の処理時間での移動量MVを求め、垂直制御部123に供給する。この移動量MVは、上述した水平移動量deltaWperTwoClockHMおよび垂直移動量deltaHperTwoClockHMに対応するものである。
ステップS22において、垂直制御部123は、移動量MVに基づいて、直前で読み出したラインに対して(1−MV)だけずれたラインの画素データを読み出し開始位置とするように設定し、タイミング制御部122に供給する。
ステップS23において、マッチング部128は、1H(1ライン)分の処理が終了するまで待機し、1H分の処理が終了すると、処理は、ステップS21に戻り、それ以降の処理が繰り返される。
すなわち、以上の処理により、図19を参照して説明したように、イメージセンサ11により撮像された画像データを一時的に格納するフレームメモリを設けなくても、イメージセンサ11のリセットと読み出しを調整するのみで画像データを読み出すことが可能となる。
尚、ここでは、フレームメモリを設けなくても、イメージセンサ11のリセットと読み出しを調整するのみで画像データを読み出すことが可能であることを説明するためのポイントのみを簡易的な説明であるが、これらの詳細については、図47乃至図64を参照して後述するものとする。
<水平制御部の処理>
次に、図36,図37を参照して、水平制御部124の処理について説明する。尚、図37のフローチャートにおいては、シンタックスによる記述を参照して説明する部位があり、一部、シンタックスにおけるパラメータの名称と、これまで説明してきたパラメータの名称とが異なる部位があるので、図36を参照して、その対応関係を説明する。
水平制御部124には、直前水平パンブレ割合attractive horizontal force for previous frame、直前水平基準位置designated pixel number which attracts the start of previous frame、水平移動量deltaWperTwoClockHM、クロックclockHMおよびライン番号curHMが入力される。また、水平制御部124は、これらの入力信号に基づいて、水平方向読み出し開始位置read start pixel、整数水平方向読み出し開始位置read start pixel int、および過去水平方向読み出し開始位置read start pixel pastを出力する。
ここで、図37のフローチャートにおけるシンタックスにおいては、直前水平パンブレ割合attractive horizontal force for previous frameは、inWeightと表記され、直前水平基準位置designated pixel number which attracts the start of previous frameは、inTargetPixelと表記される。また、水平移動量deltaWperTwoClockHMは、inDと表記され、ライン番号curHMは、timeHMと表記される。また、水平方向読み出し開始位置read start pixelは、outS1と表記され、整数水平方向読み出し開始位置read start pixel intはoutS2と表記され、および過去水平方向読み出し開始位置read start pixel pastは、outS1pastと表記される。
ここで、図37のフローチャートを参照して、水平制御部124の処理について説明する。
ステップS51において、水平制御部124は、ライン番号curHMであるtimeHMが0であるか否かを判定する。すなわち、供給されてくるフレームの先頭ラインであるか否かが判定され、例えば、先頭ラインである場合、処理は、ステップS52に進む。
ステップS52において、水平制御部124は、水平方向読み出し開始位置read start pixelであるoutS1に、水平移動量deltaWperTwoClockHMであるinDを加算して、新たな過去水平方向読み出し開始位置read start pixel pastであるoutS1pastを更新する。
また、水平制御部124は、直前水平パンブレ割合attractive horizontal force for previous frameである、inWeight(パンの重み)により、パンと考えられる水平方向の座標であるinTargetPixelと、手振れを加味した水平方向の座標である(outS1+inD)とを重み付けすることで、パンと手振れとを相互に加味した新たな水平方向読み出し開始位置read start pixelであるoutS1を求める。
さらに、水平制御部124は、求められた新たな水平方向読み出し開始位置read start pixelであるoutS1をfloor関数により小数点以下を切り捨てることで、整数の座標であるoutS2を算出する。
一方、ステップS51において、ライン番号curHMであるtimeHMが0でなく、供給されてくるフレームの先頭ラインではないとみなされた場合、処理は、ステップS53に進む。
ステップS53において、水平制御部124は、ライン番号curHMであるtimeHMが偶数であるか否かを判定する。すなわち、供給されてくるフレームのラインが偶数であるか否かが判定され、例えば、偶数である場合、処理は、ステップS54に進む。
ステップS54において、水平制御部124は、過去水平方向読み出し開始位置read start pixel pastであるoutS1pastに、水平移動量deltaWperTwoClockHMであるinDを加算して、新たな過去水平方向読み出し開始位置read start pixel pastであるoutS1pastを更新する。
また、水平制御部124は、水平方向読み出し開始位置read start pixelであるoutS1に、水平移動量deltaWperTwoClockHMであるinDを加算して、新たな水平方向読み出し開始位置read start pixelであるoutS1を更新する。
さらに、水平制御部124は、求められた新たな水平方向読み出し開始位置read start pixelであるoutS1をfloor関数により小数点以下を切り捨てることで、整数の座標であるoutS2を算出する。
尚、ステップS53において、ライン番号curHMであるtimeHMが偶数ではない場合、処理は終了する。
すなわち、以上の処理により、クロックcloclHMに同期して1サイクルに一回ずつこの処理が実行され、フレームの先頭ラインについては、パンと手振れの割合に応じて、水平方向読み出し開始位置read start pixelであるoutS1が設定された後は、偶数ライン毎に順次水平移動量deltaWperTwoClockHMであるinDが加算されていく。
このような処理により手振れとパンとがバランスよく加味されるので、ローリングシャッタ現象を補正することが可能となる。
<垂直制御部の処理>
次に、図38,図39を参照して、垂直制御部123の処理について説明する。尚、図39のフローチャートにおいては、シンタックスによる記述を参照して説明する部位があり、一部、シンタックスにおけるパラメータの名称と、これまで説明してきたパラメータの名称とが異なる部位があるので、図38を参照して、その対応関係を説明する。
垂直制御部123には、現在垂直パンブレ割合attractive horizontal force for current frame、現在垂直基準位置designated line number which attracts the start of current frame、垂直移動量deltaHperTwoClockHM、クロックclockHMおよびライン番号curHMが入力される。また、垂直制御部123は、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frame、現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frame、および未来フレーム偶数ライン延長線上垂直座標line corresponding to start time of next frameを出力する。
ここで、図39のフローチャートにおけるシンタックスにおいては、現在垂直パンブレ割合attractive horizontal force for current frameは、inWeightと表記され、現在垂直基準位置designated line number which attracts the start of current frameは、inTargetLineと表記される。また、垂直移動量deltaHperTwoClockHMは、inDと表記され、ライン番号curHMは、timeHMと表記される。また、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frameは、outPと表記され、現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frameは、outCと表記され、未来フレーム偶数ライン延長線上垂直座標line corresponding to start time of next frameは、outNと表記される。
ここで、図39のフローチャートを参照して、垂直制御部123の処理について説明する。
ステップS61において、垂直制御部123は、ライン番号curHMであるtimeHMが0であるか否かを判定する。すなわち、供給されてくるフレームの先頭ラインであるか否かが判定され、例えば、先頭ラインである場合、処理は、ステップS62に進む。
ステップS62において、垂直制御部123は、現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frameであるoutCに、垂直移動量deltaHperTwoClockHMであるinDを加算して、新たに、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frameであるoutPを更新する。
ここで、tmp1は、1フレーム前の現在垂直基準位置designated line number which attracts the start of current frameであるinTargetLineからフレームの垂直方向の幅Hだけ減算された値である。また、tmp2は、1フレーム前の現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frameであるoutCからフレームの垂直方向の幅Hだけ減算された値である。さらに、weightは1フレーム前のinWeightである。
すなわち、(tmp1+(2×H/HM))は、クロックclockHMの2サイクル分垂直方向に移動したときのパンにより特定されるラインであり、例えば、図24における画素P13のラインである。また、(tmp2+inD)は、手振れにより特定されるラインであり、例えば、図24における画素P11のラインである。
すなわち、垂直制御部123は、現在垂直パンブレ割合attractive horizontal force for current frameであるinWeight(パンの重み)により、パンによる垂直方向の座標である(tmp1+(2×H/HM))と、手振れを加味した垂直方向の座標である(tmp2+inD)とを重み付けすることで、現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frameであるoutCを求める。
さらに、水平制御部124は、パンによる垂直方向の座標としてtmp1を用い、手振れによる垂直方向の座標としてtmp2を用いることで、現在垂直パンブレ割合attractive horizontal force for current frameであるinWeight(パンの重み)を用いて、パンと手振れとを相互に加味した未来フレーム偶数ライン延長線上垂直座標line corresponding to start time of next frameであるoutNを算出する。
すなわち、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frameであるoutPは、図25の点線L351上の垂直方向の座標である。また、現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frameであるoutCは、図25における実線L342上の垂直方向の座標である。さらに、未来フレーム偶数ライン延長線上垂直座標line corresponding to start time of next frameであるoutNは、図25における点線L371上の垂直方向の座標である。すなわち、このように、偶数ラインにおける過去、現在、および未来の垂直方向の座標が求められる。
一方、ステップS61において、ライン番号curHMであるtimeHMが0でなく、供給されてくるフレームの先頭ラインではないとみなされた場合、処理は、ステップS63に進む。
ステップS63において、垂直制御部123は、ライン番号curHMであるtimeHMが偶数であるか否かを判定する。すなわち、供給されてくるフレームのラインが偶数であるか否かが判定され、例えば、偶数である場合、処理は、ステップS64に進む。
ステップS64において、垂直制御部123は、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frameであるoutPに、垂直移動量deltaHperTwoClockHMであるinDを加算して、新たに、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frameであるoutPを更新する。
また、垂直制御部123は、tmp1にクロックclockHMの2サイクル分で考慮すべき(2×H/HM)を加算して更新し、tmp2、outCにクロックclockHMの2サイクル分で考慮すべき垂直移動量deltaHperTwoClockHMであるinDを加算して更新する。
さらに、垂直制御部123は、2サイクル分のパンが考慮された垂直方向の座標tmp1と、2サイクル分の手振れが考慮された垂直方向の座標tmp2とを重みweightにより重み付けして、パンと手振れとを相互に加味した未来フレーム偶数ライン延長線上垂直座標line corresponding to start time of next frameであるoutNを更新する。
尚、ステップS63において、ライン番号curHMであるtimeHMが偶数ではない場合、処理は終了する。
すなわち、以上の処理により、クロックcloclHMに同期して1サイクルに一回ずつこの処理が実行され、フレームの先頭ラインについては、パンと手振れの割合に応じて、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frameであるoutP、現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frameであるoutC、および、未来フレーム偶数ライン延長線上垂直座標line corresponding to start time of next frameであるoutNが更新される。
このような処理により手振れとパンとがバランスよく加味されるので、ローリングシャッタ現象を補正することが可能となる。
<タイミング制御部の第1の処理について>
次に、図40,図41を参照して、タイミング制御部122の第1の処理について説明する。尚、図41のフローチャートにおいては、シンタックスによる記述を参照して説明する部位があり、一部、シンタックスにおけるパラメータの名称と、これまで説明してきたパラメータの名称とが異なる部位があるので、図40を参照して、その対応関係を説明する。
タイミング制御部122には、サブ演算ブロック211乃至213が設けられており、それぞれクロックclockHMに同期して、クロックclockHMの1サイクルに1回、それぞれの処理が実行される。
サブ演算ブロック211には、現在フレーム偶数ライン露光時間exposure time for current image capture、ライン番号curHM、およびクロックclockHMが入力される。また、サブ演算ブロック211は、入力信号に基づいて、現在フレーム偶数ライン露光時間exp time for cur image capt、および直前フレーム偶数ライン露光時間exp time for prev image captを出力する。
ここで、図41のシンタックスにおいては、現在フレーム偶数ライン露光時間exposure time for current image captureはinと表記され、ライン番号curHMはtimeHMと表記される。また、現在フレーム偶数ライン露光時間exp time for cur image captはout1と表記され、直前フレーム偶数ライン露光時間exp time for prev image captはout2と表記される。
サブ演算ブロック212には、現在奇数フレーム読み出し回数number of readout per frame for current motion capture、ライン番号curHM、およびクロックclockHMが入力される。また、サブ演算ブロック212は、入力信号に基づいて、現在奇数フレーム読み出し回数num of read for cur motion capt、および直前奇数フレーム読み出し回数num of read for prev motion captを出力する。
ここで、図41のシンタックスにおいては、現在奇数フレーム読み出し回数number of readout per frame for current motion captureはinと表記され、ライン番号curHMはtimeHMと表記される。また、現在奇数フレーム読み出し回数num of read for cur motion captはout1と表記され、直前奇数フレーム読み出し回数num of read for prev motion captはout2と表記される。
サブ演算ブロック213には、現在フレーム奇数ライン露光時間exposure time for current motion capture、ライン番号curHM、およびクロックclockHMが入力される。また、サブ演算ブロック212は、入力信号に基づいて、現在フレーム奇数ライン露光時間exp time for cur motion capt、および直前フレーム奇数ライン露光時間exp time for prev motion captを出力する。
ここで、図41のシンタックスにおいては、現在フレーム奇数ライン露光時間exposure time for current motion captureはinと表記され、ライン番号curHMはtimeHMと表記される。また、現在フレーム奇数ライン露光時間exp time for cur motion captはout1と表記され、直前フレーム奇数ライン露光時間exp time for prev motion captはout2と表記される。
次に、図41のフローチャートを参照して、タイミング制御部122の第1の処理について説明する。
ステップS81において、サブ演算ブロック211は、ライン番号curHMであるtimeHMが0であるか否かを判定する。すなわち、供給されてくるフレームの先頭ラインであるか否かが判定され、例えば、先頭ラインである場合、処理は、ステップS82に進む。
ステップS82において、サブ演算ブロック211は、直前フレーム偶数ライン露光時間exp time for prev image captであるout2に、現在フレーム偶数ライン露光時間exp time for cur image captであるout1を代入する。また、サブ演算ブロック211は、現在フレーム偶数ライン露光時間exp time for cur image captであるout1に、現在フレーム偶数ライン露光時間exposure time for current image captureであるinを代入する。
サブ演算ブロック212,213においては、ステップS82の処理が異なる。
すなわち、サブ演算ブロック212の場合、ステップS82においては、サブ演算ブロック212は、直前奇数フレーム読み出し回数num of read for prev motion captであるout2に、現在奇数フレーム読み出し回数num of read for cur motion captであるout1を代入する。また、サブ演算ブロック212は、現在奇数フレーム読み出し回数num of read for cur motion captであるout1に、現在奇数フレーム読み出し回数number of readout per frame for current motion captureであるinを代入する。
また、サブ演算ブロック213の場合、ステップS82においては、サブ演算ブロック212は、直前フレーム奇数ライン露光時間exp time for prev motion captであるout2に、現在フレーム奇数ライン露光時間exp time for cur motion captであるout1を代入する。また、サブ演算ブロック212は、現在フレーム奇数ライン露光時間exp time for cur motion captであるout1に、現在フレーム奇数ライン露光時間exposure time for current motion captureであるinを代入する。
すなわち、サブ演算ブロック211乃至213は、クロックclockHMに同期して、クロックclockHMの1サイクルに1回、上述した処理が繰り返し実行される。
<タイミング制御部の第2の処理および第3の処理について>
次に、図42乃至図45を参照して、タイミング制御部122の第2の処理、および第3の処理について説明する。尚、図45のフローチャートにおいては、シンタックスによる記述を参照して説明する部位があり、一部、シンタックスにおけるパラメータの名称と、これまで説明してきたパラメータの名称とが異なる部位があるので、図42乃至図44を参照して、その対応関係を説明する。
図42で示されるように、タイミング制御部122には、第2の処理を実行するためのサブ演算ブロック(Comp Timing)221が設けられている。
サブ演算ブロック221には、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frame、および現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frameが入力される。
また、サブ演算ブロック221には、直前フレーム偶数ライン露光時間exp time for prev image capt、および直前フレーム奇数ライン露光時間exp time for prev motion captが入力される。
さらに、サブ演算ブロック221は、入力信号に基づいて、直前読み出し偶数ライン位置read position for previous image capture、および直前リセット偶数ライン位置reset position for previous image captureを出力する。
また、サブ演算ブロック221は、直前読み出し奇数ライン位置read position for previous motion capture[0:3]、および直前リセット奇数ライン位置reset position for previous motion capture[0:3]を出力する。
ここで、図45のシンタックスにおいては、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frameは、startLineOldFrmと表記され、現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frameは、startLineNewFrmと表記される。また、直前フレーム偶数ライン露光時間exp time for prev image captは、expImgCaptと表記され、直前フレーム奇数ライン露光時間exp time for prev motion captは、expMotCaptと表記される。
さらに、直前読み出し偶数ライン位置read position for previous image captureは、readPositionForImageCaptと表記され、直前リセット偶数ライン位置reset position for previous image captureは、resetPositionForImageCaptと表記される。また、直前読み出し奇数ライン位置read position for previous motion capture[0:3]は、readPositionForMotCapt[0:3]と表記され、直前リセット奇数ライン位置reset position for previous motion capture[0:3]は、resetPositionForMotCapt[0:3]と表記される。
また、図43で示されるように、タイミング制御部122には、第3の処理を実行するためのサブ演算ブロック(Comp Timing)231が設けられている。
サブ演算ブロック231には、現在フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of current frame、および未来フレーム偶数ライン上読み出し垂直座標line corresponding to start time of next frameが入力される。また、サブ演算ブロック231には、現在フレーム偶数ライン露光時間exp time for cur image capt、および、現在フレーム奇数ライン露光時間exp time for cur motion captが入力される。
また、サブ演算ブロック231は、入力信号に基づいて、現在読み出し偶数ライン位置read position for current image capture、および現在リセット偶数ライン位置reset position for current image captureを出力する。また、サブ演算ブロック231は、現在読み出し奇数ライン位置read position for current motion capture[0:3]、および現在リセット奇数ライン位置reset position for current motion capture[0:3]を出力する。
ここで、図45のシンタックスにおいては、現在フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of current frameは、startLineOldFrmと表記され、未来フレーム偶数ライン上読み出し垂直座標line corresponding to start time of next frameは、startLineNewFrmと表記される。また、現在フレーム偶数ライン露光時間exp time for cur image captは、expimgCaptと表記され、現在フレーム奇数ライン露光時間exp time for cur motion captは、expMotCaptと表記される。
さらに、現在読み出し偶数ライン位置read position for current image captureは、readPositionForImageCaptと表記され、現在リセット偶数ライン位置reset position for current image captureは、resetPositionForImageCaptと表記される。また、現在読み出し奇数ライン位置read position for current motion capture[0:3]は、readPositionForMotCapt[0:3]と表記され、現在リセット奇数ライン位置reset position for current motion capture[0:3]は、resetPositionForMotCapt[0:3]と表記される。
すなわち、サブ演算ブロック221,231は、いずれも図44で示されるように、同様の処理を実行する。すなわち、サブ演算ブロック221,231には、いずれも、シンタックスで表記されるパラメータのstartLineOldFrm、startLineNewFrm、expimgCapt、およびexpMotCaptが入力される。また、サブ演算ブロック221,231は、いずれも、この入力信号に基づいて、readPositionForImageCapt、resetPositionForImageCapt、readPositionForMotCapt[0:3]、およびresetPositionForMotCapt[0:3]を出力する。
次に、図45のフローチャートを参照して、サブ演算ブロック221の処理について説明する。
ステップS101において、サブ演算ブロック221は、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frameであるstartLineOldFrmから、現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frameであるstartLineNewFrmを減算し、これをHMで除することにより垂直方向の変化量dHを算出する。
ステップS102において、サブ演算ブロック221は、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frameであるstartLineOldFrmから1クロックclockHM当たりの垂直方向の変化量dHにHMを乗じた値を減算することで、直前読み出し偶数ライン位置read position for previous image captureであるreadPositionForImageCaptを算出する。
ステップS103において、サブ演算ブロック221は、直前読み出し偶数ライン位置read position for previous image captureであるreadPositionForImageCaptに、直前フレーム偶数ライン露光時間exp time for prev image captであるexpImgCaptに1クロックclockHM当たりの垂直方向の変化量dHにHMを乗じた値を加算することにより、直前リセット偶数ライン位置reset position for previous image captureであるresetPositionForImageCaptを算出する。
ステップS104において、サブ演算ブロック221は、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frameであるstartLineOldFrmから1クロックclockHM当たりの垂直方向の変化量dHに、4倍読み出し処理における奇数ラインとして、それぞれHMに1/4、2/4、3/4、および4/4を乗じた値を減算することで、直前読み出し奇数ライン位置read position for previous motion capture[0:3]であるreadPositionForMotCapt[0:3]を算出する。
ステップS105において、サブ演算ブロック221は、直前読み出し奇数ライン位置read position for previous motion capture[0:3]であるreadPositionForMotCapt[0:3]に、直前フレーム奇数ライン露光時間exp time for prev motion captであるexpMotCaptに垂直方向の変化量dHを乗じた値を加算することにより、直前リセット奇数ライン位置reset position for previous motion capture[0:3]であるresetPositionForMotCapt[0:3]を算出する。
同様に、サブ演算ブロック231の処理についても同様となる。
すなわち、ステップS101において、サブ演算ブロック231は、現在フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of current frameであるstartLineOldFrmから、未来フレーム偶数ライン上読み出し垂直座標line corresponding to start time of next frameであるstartLineNewFrmを減算し、これをHMで除することにより垂直方向の変化量dHを算出する。
ステップS102において、サブ演算ブロック231は、未来フレーム偶数ライン上読み出し垂直座標line corresponding to start time of next frameは、startLineNewFrmから垂直方向の変化量dHにHMを乗じた値を減算することで、現在リセット偶数ライン位置reset position for current image captureであるresetPositionForImageCaptを算出する。
ステップS103において、サブ演算ブロック231は、現在リセット偶数ライン位置reset position for current image captureであるresetPositionForImageCaptに、現在フレーム偶数ライン露光時間exp time for cur image captであるexpimgCaptに垂直方向の変化量dHにHMを乗じた値を加算することにより、現在リセット偶数ライン位置reset position for current image captureであるresetPositionForImageCaptを算出する。
ステップS104において、サブ演算ブロック231は、現在フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of current frameであるstartLineOldFrmから1クロックclockHM当たりの垂直方向の変化量dHに、4倍読み出し処理における奇数ラインとして、それぞれHMに1/4、2/4、3/4、および4/4を乗じた値を減算することで、現在読み出し奇数ライン位置read position for current motion capture[0:3]であるreadPositionForMotCapt[0:3]を算出する。
ステップS105において、サブ演算ブロック231は、現在読み出し奇数ライン位置read position for current motion capture[0:3]であるreadPositionForMotCapt[0:3]に、現在フレーム奇数ライン露光時間exp time for cur motion captであるexpMotCaptに垂直方向の変化量dHを乗じた値を加算することにより、現在リセット奇数ライン位置reset position for current motion capture[0:3]であるresetPositionForMotCapt[0:3]を算出する。
以上の処理により、偶数ライン、および4倍読み出し処理に対応する奇数ラインのリセット、および読み出しの位置を設定することが可能となる。
<タイミング制御部の第4の処理について>
次に、図46乃至図50を参照して、タイミング制御部122の第4の処理について説明する。尚、図47乃至図51のフローチャートにおいては、シンタックスによる記述を参照して説明する部位があり、一部、シンタックスにおけるパラメータの名称と、これまで説明してきたパラメータの名称とが異なる部位があるので、図46を参照して、その対応関係を説明する。
図46で示されるように、タイミング制御部122には、第4の処理を実行するためのサブ演算ブロック(Reset Generator)241が設けられている。
サブ演算ブロック241には、遅延部(1delay)251を介して、クロックclockHMにより1サイクル分だけ遅延されたライン番号curHM、現在リセット偶数ライン位置reset position for current image capture、現在リセット奇数ライン位置reset position for current motion capture[0:3]、直前リセット偶数ライン位置reset position for previous image capture、直前リセット奇数ライン位置reset position for previous motion capture[0:3]、現在奇数フレーム読み出し回数num of read for cur motion capt、クロックclockHMおよび直前奇数フレーム読み出し回数num of read for prev motion captが入力される。
また、サブ演算ブロック241は、入力信号に基づいて、リセット信号reset[0:HS-1]を出力する。
ここで、図47乃至図50のフローチャートにおけるシンタックスにおいては、ライン番号curHMは、timeHMと表記され、現在リセット偶数ライン位置reset position for current image captureは、resetPositionForImageCaptと表記される。また、現在リセット奇数ライン位置reset position for current motion capture[0:3]は、resetPositionForCurMotCapt[0:3]と表記され、直前リセット偶数ライン位置reset position for previous image captureは、resetPositionForPrevImgCaptと表記される。さらに、直前リセット奇数ライン位置reset position for previous motion capture[0:3]は、resetPositionForPrevMotCapt[0:3]と表記される。
現在奇数フレーム読み出し回数num of read for cur motion captは、readNumForCurMotCaptと表記され、直前奇数フレーム読み出し回数num of read for prev motion captは、readNumForPrevMotCaptと表記される。また、リセット信号reset[0:HS-1]は、out[0:HS-1]と表記される。
次に、図47乃至図50のフローチャートを参照して、サブ演算ブロック241の処理について説明する。
ステップS121において、サブ演算ブロック241は、リセット信号reset[0:HS-1]であるout[0:HS-1]を、初期化して、NoReset、すなわち、リセットしない状態に設定する。
ステップS122において、サブ演算ブロック241は、ライン番号curHMであるtimeHMが0であるか否かを判定する。すなわち、供給されてくるフレームの先頭ラインであるか否かが判定され、例えば、先頭ラインである場合、処理は、ステップS123に進む。
ステップS123において、サブ演算ブロック241は、最新の直前リセット偶数ライン位置latestResetForPrevImgCaptを、それまでの最新の現在リセット偶数ライン位置latestResetForCurImgCaptで置換して更新する。また、サブ演算ブロック241は、最新の現在リセット偶数ライン位置latestResetForCurImgCaptを、現在リセット偶数ライン位置reset position for current image captureであるresetPositionForImgCaptの2進数表現で整数部1ケタ目を四捨五入(1.0を加算し、2.0で除算した値をfloor関数にいれて、さらに、2を掛ける)した値で置き換えて更新する。
ステップS124において、サブ演算ブロック241は、最新の直前リセット奇数ライン位置latestResetForPrevMotCapt[0:3]を、それまでの最新の現在リセット奇数ライン位置latestResetForCurMotCapt[0:3]で置換して更新する。また、サブ演算ブロック241は、最新の現在リセット奇数ライン位置latestResetForCurMotCapt[0:3]を、現在リセット奇数ライン位置reset position for current motion capture[0:3]であるresetPositionForCurMotCapt[0:3]の2進数表現で整数部1ケタ目を四捨五入(1.0を加算し、2.0で除算した値をfloor関数にいれて、さらに、2を掛ける)した値で置き換えて更新する。
ステップS122において、ライン番号curHMであるtimeHMが0でない場合、ステップS123,S124の処理はスキップされる。
ステップS125において、サブ演算ブロック241は、ライン番号curHMであるtimeHMが0であるか否かを判定する。すなわち、供給されてくるフレームの先頭ラインであるか否かが判定され、例えば、先頭ラインである場合、処理は、ステップS127(図48)に進む。
ステップS127(図48)において、サブ演算ブロック241は、リセットするラインの最大値maxResetLineを、最新の現在リセット偶数ライン位置latestResetForCurImgCaptで置換して更新する。さらに、サブ演算ブロック241は、リセットするラインの最大値maxResetLineと、偶数ライン間の間隔で4番目に読み出される奇数ラインの最新の現在リセット奇数ライン位置latestResetForCurMotCapt[3]との比較で大きいものをリセットするラインの最大値maxResetLineに設定する。
また、サブ演算ブロック241は、現在奇数フレーム読み出し回数num of read for cur motion captであるreadNumForCurMotCaptが2回または4回である場合、リセットするラインの最大値maxResetLineと、偶数ライン間の間隔で2番目に読み出される奇数ラインの最新の現在リセット奇数ライン位置latestResetForCurMotCapt[1]との比較で大きいものをリセットするラインの最大値maxResetLineに設定する。
さらに、サブ演算ブロック241は、現在奇数フレーム読み出し回数num of read for cur motion captであるreadNumForCurMotCaptが4回である場合、リセットするラインの最大値maxResetLineと、偶数ライン間の間隔で1番目に読み出される奇数ラインの最新の現在リセット奇数ライン位置latestResetForCurMotCapt[0]との比較で大きいものをリセットするラインの最大値maxResetLineに設定する。また、サブ演算ブロック241は、リセットするラインの最大値maxResetLineと、偶数ライン間の間隔で3番目に読み出される奇数ラインの最新の現在リセット奇数ライン位置latestResetForCurMotCapt[2]との比較で大きいものをリセットするラインの最大値maxResetLineに設定する。
さらに、サブ演算ブロック241は、リセット信号reset[0:HS-1]であるout[0:HS-1]のうち、イメージセンサ11の最上位ラインからリセットするラインの最大値maxResetLineから1ライン上のラインまでの全ラインに属する画素を、リセット信号reset[0:HS-1]であるout[0:HS-1]をDoResetに設定し、リセット状態に設定し、処理は、ステップS126(図47)に進む。
一方、ステップS125において、ライン番号curHMであるtimeHMが0でない場合、処理は、ステップS126に進む。
ステップS126において、サブ演算ブロック241は、ライン番号curHMであるtimeHMが偶数であるか否かを判定する。ステップS126において、例えば、ライン番号curHMであるtimeHMが偶数である場合、処理は、ステップS128(図49)に進む。
ステップS128(図49)において、サブ演算ブロック241は、ライン番号curHMであるtimeHMが0である場合、最新の現在リセット偶数ライン位置latestResetForCurImgCaptがイメージセンサ11の垂直方向の範囲内、すなわち、0以上で、かつ、HS-1以下であるとき、最新の現在リセット偶数ライン位置latestResetForCurImgCaptに対応する画素out[latestResetForCurImgCapt]に対してDoResetに設定し、リセットを指示する。
一方、ライン番号curHMであるtimeHMが0ではない場合、最新の現在リセット偶数ライン位置latestResetForCurImgCaptに3を加算した値が、floor関数により、現在リセット偶数ライン位置reset position for current image captureであるresetPositionForImageCaptの小数点以下を切り捨てた値以下であるとき、サブ演算ブロック241は、最新の現在リセット偶数ライン位置latestResetForCurImgCaptを2インクリメントする。
さらに、最新の現在リセット偶数ライン位置latestResetForCurImgCaptがイメージセンサ11の垂直方向の範囲内であるとき、サブ演算ブロック241は、最新の現在リセット偶数ライン位置latestResetForCurImgCaptに対応する画素out[latestResetForCurImgCapt]に対してDoResetに設定し、リセットを指示する。
また、最新の直前のリセット偶数ライン位置latestResetForPrevImgCaptに3を加算した値が、floor関数により、現在リセット偶数ライン位置reset position for previous image captureであるresetPositionForPrevCaptの小数点以下を切り捨てた値以下であるとき、サブ演算ブロック241は、最新の直前リセット偶数ライン位置latestResetForPrevImgCaptを2インクリメントする。
さらに、最新の直前リセット偶数ライン位置latestResetForPrevImgCaptがイメージセンサ11の垂直方向の範囲内であるとき、サブ演算ブロック241は、最新の直前リセット偶数ライン位置latestResetForPrevImgCaptに対応する画素out[latestResetForPrevImgCapt]に対してDoResetに設定し、リセットを指示する。
また、ステップS126(図47)において、ライン番号curHMであるtimeHMが偶数ではない場合、処理は、ステップS129(図50)に進む。
ステップS129において、サブ演算ブロック241は、ライン番号curHMであるtimeHMが1である場合、最新の現在リセット奇数ライン位置latestResetForCurMotCapt[i]がイメージセンサ11の垂直方向の範囲内、すなわち、0以上で、かつ、HS-1以下であるとき、最新の現在リセット奇数ライン位置latestResetForMotCapt[i]に対応する画素out[latestResetForCurMotCapt[i]]に対してDoreset、すなわち、リセットを指示する。
一方、ライン番号curHMであるtimeHMが1ではない場合、最新の現在リセット奇数ライン位置latestResetForMotCapt[i]に2を加算した値が、現在リセット奇数ライン位置reset position for current motion capture[i]であるresetPositionForMotCapt[i]の小数点以下を削除した値以下であるとき、サブ演算ブロック241は、最新の現在リセット奇数ライン位置latestResetForCurMotCapt[i]を2インクリメントする。
さらに、最新の現在リセット奇数ライン位置latestResetForCurMotCapt[i]がイメージセンサ11の垂直方向の範囲内であるとき、サブ演算ブロック241は、最新の現在リセット奇数ライン位置latestResetForCurMotCapt[i]に対応する画素out[latestResetForCurMotCapt]に対してDoResetに設定し、リセットを指示する。
ただし、ステップS129の処理は、現在奇数フレーム読み出し回数num of read for cur motion captであるreadNumForCurMotCaptが1である場合、i=3に対してのみ実行され、かつ、現在奇数フレーム読み出し回数num of read for cur motion captであるreadNumForCurMotCaptが2である場合、i=1,3に対してのみ実行される。また、readNumForCurMotCaptが4である場合、i=0乃至3の全てに対して実行される。
ステップS130において、最新の現在リセット奇数ライン位置latestResetForCurMotCapt[i]に2を加算した値が、floor関数により、直前リセット奇数ライン位置reset position for previous motion captureであるresetPositionForMotCapt[i]の小数点以下を削除した値以下であるとき、サブ演算ブロック241は、最新の直前リセット奇数ライン位置latestResetForPrevMotCapt[i]を2インクリメントする。
また、サブ演算ブロック241は、最新の直前リセット奇数ライン位置latestResetForPrevMotCapt[i]がイメージセンサ11の垂直方向の範囲内であるとき、サブ演算ブロック241は、最新の直前リセット奇数ライン位置latestResetForPrevMotCapt[i]に対応する画素out[latestResetForCurMotCapt[i]]に対してDoResetを設定し、リセットを指示する。
ただし、ステップS130の処理は、現在奇数フレーム読み出し回数num of read for cur motion captであるreadNumForCurMotCaptが1である場合、i=3に対してのみ実行され、かつ、現在奇数フレーム読み出し回数num of read for cur motion captであるreadNumForCurMotCaptが2である場合、i=1,3に対してのみ実行さる。また、readNumForCurMotCaptが4である場合、i=0乃至3の全てに対して実行される。
<タイミング制御部の第5の処理について>
次に、図51乃至図60を参照して、タイミング制御部122の第5の処理について説明する。尚、図52乃至図60のフローチャートにおいては、シンタックスによる記述を参照して説明する部位があり、一部、シンタックスにおけるパラメータの名称と、これまで説明してきたパラメータの名称とが異なる部位があるので、図51を参照して、その対応関係を説明する。
図51で示されるように、タイミング制御部122には、第5の処理を実行するためのサブ演算ブロック(Read Generator)261が設けられている。
サブ演算ブロック261には、遅延部(1delay)271を介して、クロックclockHMにより1サイクル分だけ遅延されたライン番号curHM、現在読み出し偶数ライン位置read position for current image capture、現在読み出し奇数ライン位置read position for current motion capture[0:3]、直前読み出し偶数ライン位置read position for previous image capture、直前読み出し奇数ライン位置read position for previous motion capture[0:3]、現在奇数フレーム読み出し回数num of read for cur motion capt、クロックclockHMおよび直前奇数フレーム読み出し回数num of read for prev motion captが入力される。
また、サブ演算ブロック261は、入力信号に基づいて、読み出し信号read[0:HS-1]、現在時刻読み出し偶数ラインpresent read line for image capture、および現在時刻読み出し奇数ラインpresent read line for motion capture[0:3]を出力する。
ここで、図52乃至図60のフローチャートにおけるシンタックスにおいては、ライン番号curHMは、timeHMと表記され、現在読み出し偶数ライン位置read position for current image captureは、readPositionForImageCaptと表記される。また、現在リセット奇数ライン位置reset position for current motion capture[0:3]は、readPositionForCurMotCapt[0:3]と表記され、直前読み出し偶数ライン位置read position for previous image captureは、readPositionForPrevImgCaptと表記される。
さらに、直前読み出し奇数ライン位置read position for previous motion capture[0:3]は、readPositionForPrevMotCapt[0:3]と表記され、現在奇数フレーム読み出し回数num of read for cur motion captは、readNumForCurMotCaptと表記され、直前奇数フレーム読み出し回数num of read for prev motion captは、readNumForPrevMotCaptと表記される。
また、読み出し信号read[0:HS-1]は、out[0:HS-1]と表記され、現在時刻読み出し偶数ラインpresent read line for image captureは、presentReadLineForImgCaptと表記され、現在時刻読み出し奇数ラインpresent read line for motion capture[0:3]は、presentReadLineForMotCapt[0:3]と表記される。
次に、図52乃至図60のフローチャートを参照して、サブ演算ブロック261の処理について説明する。
ステップS201において、サブ演算ブロック261は、読み出し信号read[0:HS-1]であるout[0:HS-1]を、初期化して、NoRead、すなわち、読み出さない状態に設定する。また、サブ演算ブロック261は、現在時刻読み出し偶数ラインpresent read line for image captureであるpresentReadLineForImgCaptをNoLine、すなわち、現在のタイミングで読み出し偶数ラインが存在しない状態とする。さらに、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion capture[0:3]であるpresentReadLineForMotCapt[0:3]をNoLine、すなわち、現在時刻読み出し奇数ラインpresent read line for motion capture[0:3]が存在しない状態に設定する。
ステップS202において、サブ演算ブロック261は、ライン番号curHMであるtimeHMが0であるか否かを判定する。すなわち、供給されてくるフレームの先頭ラインであるか否かが判定され、例えば、先頭ラインである場合、処理は、ステップS203に進む。
ステップS203において、サブ演算ブロック261は、最新の直前読み出し偶数ライン位置latestReadForPrevImgCaptを、それまでの最新の現在読み出し偶数ライン位置latestReadForCurImgCaptで置換して更新する。また、サブ演算ブロック261は、最新の現在読み出し偶数ライン位置latestReadForCurImgCaptを、現在読み出し偶数ライン位置read position for current image captureであるreadPositionForImgCaptの2進数表現で整数部1ケタ目を四捨五入(1.0を加算し、2.0で除算した値をfloor関数にいれて、さらに、2を掛ける)した値で置き換えて更新する。
ステップS204において、サブ演算ブロック261は、最新の直前読み出し奇数ライン位置latestReadForPrevMotCapt[0:3]を、それまでの最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[0:3]で置換して更新する。また、サブ演算ブロック261は、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[0:3]を、現在読み出し奇数ライン位置read position for current motion capture[0:3]であるreadPositionForCurMotCapt[0:3]の2進数表現で整数部1ケタ目を四捨五入(1.0を加算し、2.0で除算した値をfloor関数にいれて、さらに、2を掛ける)した値で置き換えて更新する。
ステップS202において、ライン番号curHMであるtimeHMが0でない場合、ステップS203,S204の処理はスキップされる。
ステップS205において、サブ演算ブロック261は、ライン番号curHMであるtimeHMが偶数であるか否かを判定する。ステップS205において、偶数であると判定された場合、処理は、ステップS206(図53)に進む。
ステップS206(図53)において、サブ演算ブロック261は、サブ演算ブロック261は、ライン番号curHMであるtimeHMが0である場合、最新の直前読み出し偶数ライン位置latestReadForPrevImgCaptがイメージセンサ11の垂直方向の範囲内、すなわち、0以上で、かつ、HS-1以下であるとき、現在時刻読み出し偶数ラインpresent read line for image captureであるpresentReadLineForImgCaptを直前読み出し偶数ライン位置latestReadForCurImgCaptとし、さらに、直前読み出し偶数ライン位置latestReadForCurImgCaptに対応する画素out[presentReadLineForImgCapt]に対してDoRead、すなわち、読み出しを指示する。
一方、ライン番号curHMであるtimeHMが0ではない場合、最新の直前リセット偶数ライン位置latestResetForPrevImgCaptに3を加算した値が、floor関数により、現在読み出し偶数ライン位置read position for current image captureであるreadPositionForImageCaptの小数点以下を切り捨てた値以下である場合、サブ演算ブロック261は、最新の直前リセット偶数ライン位置latestResetForPrevImgCaptを2インクリメントする。
さらに、最新の直前読み出し偶数ライン位置latestReadForPrevImgCaptがイメージセンサ11の垂直方向の範囲内であるとき、サブ演算ブロック261は、現在時刻読み出し偶数ラインpresent read line for image captureであるpresentReadLineForImgCaptを、最新の直前読み出し偶数ライン位置latestReadForPrevImgCaptとし、最新の直前読み出し偶数ライン位置latestReadForPrevImgCaptに対応する画素out[presentReadLineForImgCapt]に対してDoRead、すなわち、読み出しを指示し、処理を終了する。
一方、ステップS205(図52)において、偶数ではないとみなされた場合、処理は、ステップS207(図54)に進む。
ステップS207(図54)において、サブ演算ブロック261は、ライン番号curHMであるtimeHMが1である場合、最新の直前読み出し奇数ライン位置latestReadForPrevMotCapt[3]がイメージセンサ11の垂直方向の範囲内、すなわち、0以上で、かつ、HS-1以下であるとき、現在時刻読み出し奇数ラインpresent read line for motion captureであるpresentReadLineForMotCapt[3]を、最新の現在リセット奇数ライン位置latestReadForPrevMotCapt[3]とする。
さらに、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion captureであるpresentReadLineForMotCapt[3]に対応する画素out[latestReadForPrevMotCapt[3]]に対してDofouthQuaterRead、すなわち、奇数ラインの4番目の読み出しを指示する。
一方、ライン番号curHMであるtimeHMが1ではない場合、最新の直前読み出し奇数ライン位置latestReadForPrevMotCapt[3]に2を加算した値が、floor関数により、直前読み出し奇数ライン位置read position for previous motion capture[3]であるreadPositionForPrevMotCapt[3]の小数点以下を削除した値以下であるとき、サブ演算ブロック261は、最新の直前読み出し奇数ライン位置latestReadForPrevMotCapt[3]を2インクリメントする。
また、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion captureであるpresentReadLineForMotCapt[3]を、最新の現在リセット奇数ライン位置latestReadForPrevMotCapt[3]とする。
さらに、最新の直前読み出し奇数ライン位置latestReadForPrevMotCapt[3]がイメージセンサ11の垂直方向の範囲内であるとき、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion captureであるpresentReadLineForMotCapt[3]に対応する画素out[presentReadLineForMotCapt[3]]に対してDofouthQuaterRead、すなわち、奇数ラインの4番目の読み出しを指示する。
ステップS208(図55)において、現在奇数フレーム読み出し回数num of read for cur motion captであるreadNumForCurMotCaptが4であり、ライン番号curHMであるtimeHMが3*HM/4以上であり、かつ、3*HM/4+1である場合、サブ演算ブロック261は、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[2]がイメージセンサ11の垂直方向の範囲内、すなわち、0以上で、かつ、HS-1以下であるとき、現在時刻読み出し奇数ラインpresent read line for motion capture[2]であるpresentReadLineForMotCapt[2]に対応する画素out[presentReadLineForMotCapt[2]]に対してDoThirdQuaterRead、すなわち、奇数ラインの3回目の読み出しを指示する。
一方、ライン番号curHMであるtimeHMが3HM/4+1ではない場合、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[2]に2を加算した値が、floor関数により、現在読み出し奇数ライン位置read position for curent motion capture[2]であるreadPositionForCurMotCapt[2]の小数点以下を削除した値以下であるとき、サブ演算ブロック261は、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[2]に2をインクリメントする。
さらに、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[2]がイメージセンサ11の垂直方向の範囲内であるとき、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion captureであるpresentReadLineForMotCapt[2]を、最新の直前読み出し奇数ライン位置latestReadForPrevMotCapt[2]とする。
そして、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion captureであるpresentReadLineForMotCapt[2]に対応する画素out[presentReadLineForMotCapt[2]]に対してDoThirdQuaterRead、すなわち、奇数ラインの3回目の読み出しを指示する。
ステップS209(図56)において、現在奇数フレーム読み出し回数num of read for cur motion captであるreadNumForCurMotCaptが4であり、ライン番号curHMであるtimeHMが3*HM/4−1以下であり、かつ、最新の直前読み出し奇数ライン位置latestReadForPrevMotCapt[2]に2を加算した値が、floor関数により、直前読み出し奇数ライン位置read position for previous motion capture[2]であるreadPositionForPrevMotCapt[2]の小数点以下の値が切り捨てられた値以下である場合、サブ演算ブロック261は、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[2]を2インクリメントする。
さらに、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[2]がイメージセンサ11の垂直方向の範囲内、すなわち、0以上で、かつ、HS-1以下であるとき、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion capture[2]であるpresentReadLineForMotCapt[2]を、最新の直前読み出し奇数ライン位置latestReadForPrevMotCapt[2]とする。
サブ演算ブロック261は、最新の現在読み出し奇数ライン位置presentReadLineForMotCapt[2]に対応する画素out[presentReadLineForMotCapt[2]]に対してDoThirdQuaterRead、すなわち、奇数ラインの3回目の読み出しを指示する。
ステップS210(図57)において、現在奇数フレーム読み出し回数num of read for cur motion captであるreadNumForCurMotCaptが2または4であり、ライン番号curHMであるtimeHMが2*HM/4以上であり、かつ、2*HM/4+1である場合、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[1]がイメージセンサ11の垂直方向の範囲内、すなわち、0以上で、かつ、HS-1以下であるとき、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion captureを、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[1]とする。
そして、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion captureであるpresentReadLineForMotCapt[1]に対応する画素out[presentReadLineForMotCapt[1]]に対してDoSecondQuaterRead、すなわち、奇数ラインの2回目の読み出しを指示する。
一方、ライン番号curHMであるtimeHMが2HM/4+1ではない場合、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[1]に2を加算した値が、floor関数により、現在読み出し奇数ライン位置read position for curent motion capture[1]であるreadPositionForCurMotCapt[1]の小数点以下を削除した値以下であるとき、サブ演算ブロック261は、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[1]に2をインクリメントする。
さらに、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[1]がイメージセンサ11の垂直方向の範囲内であるとき、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion captureであるpresentReadLineForMotCapt[1]を、最新の直前読み出し奇数ライン位置latestReadForPrevMotCapt[1]とする。
そして、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion captureであるpresentReadLineForMotCapt[1]に対応する画素out[presentReadLineForMotCapt[1]]に対してDoSecondQuaterRead、すなわち、奇数ラインの2回目の読み出しを指示する。
ステップS211(図58)において、現在奇数フレーム読み出し回数num of read for cur motion captであるreadNumForCurMotCaptが2または4であり、ライン番号curHMであるtimeHMが2*HM/4−1以下であり、かつ、最新の直前読み出し奇数ライン位置latestReadForPrevMotCapt[1]に2を加算した値が、floor関数により、直前読み出し奇数ライン位置read position for previous motion capture[1]であるreadPositionForPrevMotCapt[1]の小数点以下の値が切り捨てられた値以下である場合、サブ演算ブロック261は、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[1]を2インクリメントする。
また、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[1]がイメージセンサ11の垂直方向の範囲内、すなわち、0以上で、かつ、HS-1以下であるとき、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion capture[1]であるpresentReadLineForMotCapt[1]を、最新の直前読み出し奇数ライン位置latestReadForPrevMotCapt[1]とする。
そして、サブ演算ブロック261は、現在時刻読み出し奇数ラインresentReadLineForMotCapt[1]に対応する画素out[resentReadLineForMotCapt[1]]に対してDoSecondQuaterRead、すなわち、奇数ラインの2回目の読み出しを指示する。
ステップS212(図59)において、現在奇数フレーム読み出し回数num of read for cur motion captであるreadNumForCurMotCaptが4であり、ライン番号curHMであるtimeHMが1*HM/4以上であり、かつ、1*HM/4+1である場合、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[0]がイメージセンサ11の垂直方向の範囲内、すなわち、0以上で、かつ、HS-1以下であるとき、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion captureであるpresentReadLineForMotCapt[0]を、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[0]とする。
そして、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion captureであるpresentReadLineForMotCapt[0]に対応する画素out[presentReadLineForMotCapt[0]]に対してDoFirstQuaterRead、すなわち、奇数ラインの1回目の読み出しを指示する。
一方、ライン番号curHMであるtimeHMが1*HM/4+1ではない場合、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[0]に2を加算した値が、floor関数により、現在読み出し奇数ライン位置read position for curent motion capture[0]であるreadPositionForCurMotCapt[0]の小数点以下を削除した値以下であるとき、サブ演算ブロック261は、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[0]に2をインクリメントする。
さらに、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[0]がイメージセンサ11の垂直方向の範囲内であるとき、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion captureであるpresentReadLineForMotCapt[0]を、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[0]とする。
そして、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion captureであるpresentReadLineForMotCapt[0]に対応する画素out[presentReadLineForMotCapt[0]]に対してDoFirstQuaterRead、すなわち、奇数ラインの1回目の読み出しを指示する。
ステップS213(図60)において、現在奇数フレーム読み出し回数num of read for cur motion captであるreadNumForCurMotCaptが4であり、ライン番号curHMであるtimeHMが1*HM/4−1以下であり、かつ、最新の直前読み出し奇数ライン位置latestReadForPrevMotCapt[0]に2を加算した値が、floor関数により、直前読み出し奇数ライン位置read position for previous motion capture[0]であるreadPositionForPrevMotCapt[0]の小数点以下の値が切り捨てられた値以下である場合、サブ演算ブロック261は、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[0]を2インクリメントする。
さらに、最新の現在読み出し奇数ライン位置latestReadForCurMotCapt[0]がイメージセンサ11の垂直方向の範囲内、すなわち、0以上で、かつ、HS-1以下であるとき、サブ演算ブロック261は、現在時刻読み出し奇数ラインpresent read line for motion capture[0]であるpresentReadLineForMotCapt[0]を、最新の直前読み出し奇数ライン位置latestReadForPrevMotCapt[0]とする。
そして、サブ演算ブロック261は、現在時刻読み出し奇数ラインresentReadLineForMotCapt[0]に対応する画素out[resentReadLineForMotCapt[0]]に対してDoFirstQuaterRead、すなわち、奇数ラインの1回目の読み出しを指示する。
すなわち、奇数ラインについては、偶数ラインの直前の読み出し時刻と現在の読み出し時刻のとの間隔を4分割した時間間隔で、4回のリセットと読み出しを行う4倍読出し処理の場合、図61で示されるように、4回のなかの最初の読み出しを行う奇数ラインの画素に対しては、最初の1/240秒(すなわち、1/60秒のうちの最初の1/4)間は、現在のフレームの偶数ラインの読み出し時刻を表す実線L504よりも図中の下方(y軸の正の方向)の実線L503を読み出している。
そして、残りの3/240秒間は、現在のフレームの偶数ラインの読み出し時刻を表す実線L504よりも上方(y軸の負の方向)の実線L505を読み出している。
尚、図61における実線L501,L504,L507は、図25における実線L341乃至L343と同じものであり、図61における点線L502,L506は、図25の点線L351,L371と同じものである。また、実線L503は、実線L504と点線L502との間で1:3に案分された位置に設けられている。また、実線L505は、点線L506と実線L504との間で1:3に案分された位置に設けられている。
さらに、奇数ラインについて、偶数ラインの4倍読み出し処理の場合、図62で示されるように、2番目の読み出しを行う奇数ラインの画素、または、奇数ラインについて、2倍読み出し処理の場合の前半の読み出しを行う奇数ラインの画素に対しては、最初の1/120秒(すなわち、1/60秒のうちの最初の1/2)間は、現在のフレームの偶数ラインの読み出し時刻を表す実線L504よりも下方(y軸の正の方向)の実線L511を読み出している。
そして、残りの1/120秒間は、現在のフレームの偶数ラインの読み出し時刻を表す実線L504よりも上方(y軸の負の方向)の実線L512を読み出している。
尚、図62における実線L501,L504,L507、および点線L502,L506については、図25における実線L341乃至L343、および点線L351,L371と同じものである。また、実線L511は、実線L504と点線L502との間で1:1に案分された位置に設けられている。また、実線L512は、点線L506と実線L504との間で1:3に案分された位置に設けられている。
奇数ラインについて、偶数ラインの4倍読み出し処理の場合の3番目の読み出しを行う奇数ラインの画素に対しては、図63で示されるように、最初の3/240秒(すなわち、1/60秒のうちの最初の3/4)間は、「現在のフレームの偶数ラインの読み出し時刻の曲線」よりも下方(y軸の正の方向)の実線L521で示される曲線上のラインを読み出している。そして、残りの1/240秒間は、現在のフレームの偶数ラインの読み出し時刻を表すL504よりも上方(y軸の負の方向)の実線L522上のラインを読み出している。
尚、図62における実線L501,L504,L507、および点線L502,L506については、図25における実線L341乃至L343、および点線L351,L371と同じものである。また、実線L503は、実線L504と点線L502との間で3:1に案分された位置に設けられている。また、実線L505は、点線L506と実線L504との間で3:1に案分された位置に設けられている。
<タイミング制御部の第6の処理について>
次に、図64乃至図66を参照して、タイミング制御部122の第6の処理について説明する。尚、図65乃至図66のフローチャートにおいては、シンタックスによる記述を参照して説明する部位があり、一部、シンタックスにおけるパラメータの名称と、これまで説明してきたパラメータの名称とが異なる部位があるので、図64を参照して、その対応関係を説明する。
図64で示されるように、タイミング制御部122には、第6の処理を実行するためのサブ演算ブロック281乃至283が設けられている。
サブ演算ブロック(RegResetTime)281は、リセット信号reset[0:HS-1]がDoResetに設定され、リセット状態とすることが指示されている信号の場合、メモリからなるサブ演算ブロック(Memory)282に、リセット信号reset[0:HS-1]が供給されてきた絶対時刻absoluteTimeをRegResetTime[i]として書き込む。
サブ演算ブロック(Memory)282は、RegResetTime[i]としてリセット信号reset[0:HS-1]が供給されてきた絶対時刻absoluteTimeを格納し、適宜、サブ演算ブロック283に供給する。
サブ演算ブロック(Comp Precise Exposure Time)283には、サブ演算ブロック282からのリセット信号reset[0:HS-1]が供給されてきた絶対時刻absoluteTimeが格納されたRegResetTime[i]、読み出し信号read[0:HS-1]、現在フレーム偶数ライン露光時間exp time for cur image capt、および、直前フレーム偶数ライン露光時間exp time for prev image captが入力される。現在フレーム偶数ライン露光時間exp time for cur image capt、および、直前フレーム偶数ライン露光時間exp time for prev image captについては、それぞれ遅延部(1delay)291,292を介して、クロックclockHMが1サイクルだけ遅延された状態の情報が入力される。また、サブ演算ブロック282は、これらの入力信号に基づいて、偶数ライン係数exposure compensation value for image capture line、および奇数ライン係数exposure compensation value for motion capture line[0:3]を出力する。
ここで、図65,図66のフローチャートにおいては、現在フレーム偶数ライン露光時間exp time for cur image captは、expTimefFoCurImgCaptと表記され、直前フレーム偶数ライン露光時間exp time for prev image captは、expTimefForPrevImgCaptと表記される。また、偶数ライン係数exposure compensation value for image capture lineは、compValueForImgCaptと表記され、奇数ライン係数exposure compensation value for motion capture line[0:3]は、compValueForMotCapt[0:3]と表記される。
ここで、図65,図66のフローチャートを参照して、タイミング制御部122による第6の処理について説明する。
ステップS301において、サブ演算ブロック283は、偶数ライン係数exposure compensation value for image capture lineであるcompValueForImgCaptと、奇数ライン係数exposure compensation value for motion capture line[0:3]であるcompValueForMotCapt[0:3]を0に初期化する。
ステップS302において、サブ演算ブロック283は、全ラインについて、読み出し信号であるread[i](図65,図66においてはi=0乃至HS−1)が、読み出しを指示している場合、サブ演算ブロック282に格納されているRegResetTime[i]を読み出し、今現在の絶対時刻absoluteTimeとの差分を求め、求められた値で、直前フレーム偶数ライン露光時間exp time for prev image captであるexpTimefForPrevImgCaptを除することにより、偶数ライン係数exposure compensation value for image capture lineであるcompValueForImgCaptを算出する。
ステップS303において、サブ演算ブロック283は、全ラインについて、読み出し信号であるread[i]が、4回目の読み出しを指示している場合、ステップS302と同様の演算により、奇数ライン係数exposure compensation value for motion capture line[3]であるcompValueForMotCapt[3]として算出する。
ステップS304において、サブ演算ブロック283は、ライン番号curHMであるtimeHMがHMの3/4以上である場合、全ラインについて、読み出し信号read[i]が3回目の読み出しを指示していたとき(DoThirdQuaterRead)、サブ演算ブロック282に格納されているRegResetTime[i]を読み出し、今現在の絶対時刻absoluteTimeとの差分を求め、求められた値で、現在フレーム偶数ライン露光時間exp time for cur image captであるexpTimefForCurImgCaptを除することにより、3回目の読み出しとなる奇数ライン係数exposure compensation value for motion capture lineであるcompValueForMotCapt[2]を算出する。
また、サブ演算ブロック283は、ライン番号curHMであるtimeHMがHMの3/4以上ではない場合、全ラインについて、読み出し信号read[i]が3回目の読み出しを指示していたとき(DoThirdQuaterRead)、サブ演算ブロック282に格納されているRegResetTime[i]を読み出し、今現在の絶対時刻absoluteTimeとの差分を求め、求められた値で、直前フレーム偶数ライン露光時間exp time for prev image captであるexpTimefForPrevImgCaptを除することにより、3回目の読み出しとなる奇数ライン係数exposure compensation value for motion capture lineであるcompValueForMotCapt[2]を算出する。
ステップS305(図66)において、サブ演算ブロック283は、ライン番号curHMであるtimeHMがHMの2/4以上である場合、読み出し信号read[i]が2回目の読み出しを指示していたとき(DoSecondQuaterRead)、サブ演算ブロック282に格納されているRegResetTime[i]を読み出し、今現在の絶対時刻absoluteTimeとの差分を求め、求められた値で、現在フレーム偶数ライン露光時間exp time for cur image captであるexpTimefForCurImgCaptを除することにより、2回目の読み出しとなる奇数ライン係数exposure compensation value for motion capture lineであるcompValueForMotCapt[1]を算出する。
また、サブ演算ブロック283は、ライン番号curHMであるtimeHMがHMの2/4以上ではない場合、全ラインについて、読み出し信号read[i]が2回目の読み出しを指示していたとき(DoSecondQuaterRead)、サブ演算ブロック282に格納されているRegResetTime[i]を読み出し、今現在の絶対時刻absoluteTimeとの差分を求め、求められた値で、直前フレーム偶数ライン露光時間exp time for prev image captであるexpTimefForPrevImgCaptを除することにより、2回目の読み出しとなる奇数ライン係数exposure compensation value for motion capture lineであるcompValueForMotCapt[1]を算出する。
ステップS306において、サブ演算ブロック283は、ライン番号curHMであるtimeHMがHMの1/4以上である場合、全ラインについて、読み出し信号read[i]が1回目の読み出しを指示していたとき(DoFirstQuaterRead)、サブ演算ブロック282に格納されているRegResetTime[i]を読み出し、今現在の絶対時刻absoluteTimeとの差分を求め、求められた値で、現在フレーム偶数ライン露光時間exp time for cur image captであるexpTimefForCurImgCaptを除することにより、1回目の読み出しとなる奇数ライン係数exposure compensation value for motion capture lineであるcompValueForMotCapt[0]を算出する。
また、サブ演算ブロック283は、ライン番号curHMであるtimeHMがHMの1/4以上ではない場合、全ラインについて、読み出し信号read[i]が1回目の読み出しを指示していたとき(DoFirstQuaterRead)、サブ演算ブロック282に格納されているRegResetTime[i]を読み出し、今現在の絶対時刻absoluteTimeとの差分を求め、求められた値で、直前フレーム偶数ライン露光時間exp time for prev image captであるexpTimefForPrevImgCaptを除することにより、1回目の読み出しとなる奇数ライン係数exposure compensation value for motion capture lineであるcompValueForMotCapt[0]を算出する。
以上の処理により、偶数ライン係数exposure compensation value for image capture line、および奇数ライン係数exposure compensation value for motion capture line[0:3]が算出される。
このように、偶数ライン係数exposure compensation value for image capture line、および奇数ライン係数exposure compensation value for motion capture line[0:3]の値は、リセットの時刻と読み出し時刻との差分となる時間に逆比例した値となる。
<制御部の処理について>
次に、図67のフローチャートを参照して、制御部121の処理について説明する。
ステップS331において、制御部121は、図示せぬ露出計などより適正露光時間(単位:秒))の情報を取得し、現在フレーム偶数ライン露光時間exposure time for current image captureを決定する。より具体的には、制御部121は、適正露光時間×60×HMを現在フレーム偶数ライン露光時間exposure time for current image captureに設定する。
ステップS332において、制御部121は、直近で入力される垂直変化量deltaHperTwoClocklHM−(2×H/HM)の平均値の絶対値、または、直近で入力される水平変化量deltaWperTwoClocklHMの平均値の絶対値のいずれか大きな値に対して、(現在フレーム偶数ライン露光時間exposure time for current image capture/2)倍した演算値に応じて、現在奇数フレーム読み出し回数number of readout per frame for current motion captureを決定する。
より具体的には、演算値が2未満である場合、制御部121は、現在奇数フレーム読み出し回数number of readout per frame for current motion captureを1、かつ、現在フレーム奇数ライン露光時間exposure time for current motion captureと現在フレーム偶数ライン露光時間exposure time for current image captureとを同一に設定する。
また、演算値が2以上4未満である場合、制御部121は、現在奇数フレーム読み出し回数number of readout per frame for current motion captureを2、かつ、現在フレーム奇数ライン露光時間exposure time for current motion captureと現在フレーム偶数ライン露光時間exposure time for current image captureの1/2とを同一に設定する。
さらに、演算値が4以上である場合、制御部121は、現在奇数フレーム読み出し回数number of readout per frame for current motion captureを4、かつ、現在フレーム奇数ライン露光時間exposure time for current motion captureと現在フレーム偶数ライン露光時間exposure time for current image captureの1/4とを同一に設定する。
ステップS333において、制御部121は、現在垂直基準位置designated line number which attracts the start of current frameを(HS−H)/2に設定する。また、制御部121は、直線水平基準位置designated pixel number which attracts the start of previous frameを(WS−W)/2に設定する。
ステップS334において、制御部121は、動き検出部129内に保持しているデータメモリから、直近の時刻における垂直方向オフセットoffsetHの値を読み出す。尚、垂直方向オフセットoffsetHは、絶対値の値が大きいほどイメージセンサ11内の端部に近いことを示すものであり、逆に、0に近ければ近いほど、イメージセンサの中央部分を取り出していることを示す値であるが、詳細については図72を参照して後述する。
垂直方向オフセットoffsetHが0に近い場合、制御部121は、現在垂直パンブレ割合attractive vertical force for current frameの値を0.0に近い値に設定する。逆に、垂直方向オフセットoffsetHの絶対値が大きい場合、制御部121は、現在垂直パンブレ割合attractive vertical force for current frameの値を1.0に近い値に設定する。
制御部121は、動き検出部129内に保持しているデータメモリから、直近の時刻における水平方向オフセットoffsetWの値を読み出す。尚、水平方向オフセットoffsetWは、絶対値の値が大きいほどイメージセンサ11内の端部に近いことを示すものであり、逆に、0に近ければ近いほど、イメージセンサの中央部分を取り出していることを示す値であるが、詳細については図72を参照して後述する。
水平方向オフセットoffsetWが0に近い場合、制御部121は、現在水平パンブレ割合attractive horizontal force for previous frameの値を0.0に近い値に設定する。逆に、水平方向オフセットoffsetWの絶対値が大きい場合、制御部121は、現在水平パンブレ割合attractive horizontal force for previous frameの値を1.0に近い値にする。
すなわち、上述の処理により、イメージセンサ11の現在のフレームの読み出し位置が、イメージセンサ11の端部に近づいた場合、次のフレームで読み出そうとする位置がイメージセンサ11の領域をはみ出してしまう可能性がある。そこで、現在垂直パンブレ割合attractive vertical force for current frameおよび現在水平パンブレ割合attractive horizontal force for previous frameについては、パンの割合が大きくなるように設定される。パンの割合が大きくなれば、強制的にy=y0から1080ライン分が読み出されるような位置にすることが可能となる。
逆に、イメージセンサ11の中央部分を読み出している場合、現在垂直パンブレ割合attractive vertical force for current frameおよび現在水平パンブレ割合attractive horizontal force for previous frameについては、手振れの割合が大きくなるように設定される。このため、直近の時刻における1920×1080画素の取り出し位置が、イメージセンサ11を構成するWS×HS個の画素(受光素子)の中のどの位置であるかを示す値(後述する垂直方向オフセットoffsetHと水平方向オフセットoffsetW)が用いられる。
<マッチング部の処理について>
次に、図68のフローチャートを参照して、マッチング部128の処理について説明する。
ステップS351において、マッチング部128は、入力されてくる1ライン分の1次元の画素データをターゲットデータtarget dataとして取得する。このとき、ターゲットデータtarget dataに付随する現在時刻読み出し偶数ラインpresent read line for image capture[i]の値をターゲットラインtarget lineとし、整数水平方向読み出し開始位置read start pixel int の値をtarget start pixelとする。
ステップS352において、マッチング部128は、フレームメモリ127に格納されている1ライン分のデータ(1次元データ列)を参照データreference dataとして取得する。このとき、伸長部162により圧縮された1ライン分のデータは伸長されており、ターゲットデータtarget dataと同サイズとされている。マッチング部128は、ターゲットデータtarget dataとの相関を取り、最も相関のあるときの参照データreference dataを検出する。このとき、ターゲットデータtarget dataを水平方向(x軸方向)に移動させても良い。
ここで、最も相関のある時のx軸方向の移動量を最大相関移動量length in case of max correlationとする。また、参照データreference dataから読み出した「1ライン分のデータ」に対応する現在時刻読み出し奇数ラインpresent read line for motion capture[0:3]の値を最大相関ラインreference lineとする。さらに、参照データreference dataから読み出した1ライン分のデータに対応する整数水平方向読み出し開始位置read start pixel intの値を参照開始画素位置reference start pixelとする。また、参照データreference dataから読み出した1ライン分のデータに対応する時刻absoluteTimeの値を参照時刻reference timeとする。
ステップS353において、マッチング部128は、最大相関ラインreference lineと、ターゲットラインtarget lineとの差分を、垂直方向差分diffHとして算出し、動き検出部129に供給する。また、マッチング部128は、参照開始画素reference start pixelから最大相関移動量length in case of max correlationと、参照開始画素位置reference start pixelと合わせて減算した値を、水平方向差分diffWとして算出し、動き検出部129に供給する。さらに、マッチング部128は、参照時刻reference timeを基準時刻baseTimeとして、動き検出部129に供給する。
以上の処理により、図69で示されるように、現在の時刻と、参照時刻reference timeとにおけるWS×HS個の画素(受光素子)のいずれかのライン上に画素値が配列されている部位との位置関係が求められる。すなわち、現在の時刻において、y座標がターゲットラインtarget lineであり、x座標が(参照開始画素target start pixel+最大相関移動量length in case of max correlation)から始まる横方向の1次元データ(投影像)と、参照時刻reference timeにおいて、y座標が最大相関ラインreference lineであり、x座標が参照開始画素reference start pixelから始まる横方向の1次元データ(投影像)は、同じ投影像であるとみなされる。
そこで、以上の処理により、この投影像の位置関係の差を示す情報として、垂直方向差分diffH、水平方向差分diffW、および基準時刻baseTimeが動き検出部129に渡されることになる。
尚、各マッチング部128に入力される1ライン分のデータ(1次元データ列)は、フレームメモリ127のIn [0:3]端子に入力されたすべてのデータについて行う。
また、この処理は、奇数ラインが読み出されたときのみ処理されるので、クロックclockHMの2サイクルに1回処理が行われる。
さらに、上述した説明では、ライン(1次元データ列)を使ったマッチング処理を具体例として説明したが、この他に特徴点ベースのマッチングや、ブロックマッチングなどを使用しても良い。または、ジャイロセンサ等を用いて、ジャイロセンサにより検出されたデータを用いることで、垂直方向差分diffH、水平方向差分diffW、および基準時刻baseTimeを求めるようにしてもよい。
尚、フレームメモリ127については、イメージセンサ11により撮像された画像を構成する画素データをそのまま記憶するものではなく、圧縮部161により圧縮された画像を記憶するものである。圧縮された画像は、上述したようにマッチング部128により動きを検出するための画像であればよく、高画質な画像である必要がないため、小さな容量でよいものである。したがって、フレームメモリ127は、一般に、イメージセンサ11により撮像された画像を、そのまま一旦記憶するものよりも十分に小さな容量のメモリであるので、コストの負担を増大させるものではない。
<動き検出部の処理について>
次に、図70乃至図72を参照して、動き検出部129の処理について説明する。
ステップS371において、動き検出部129は、マッチング部128−1乃至128−4より供給されてくる垂直方向差分diffHを、それぞれ垂直方向差分diffH[0],diffH[1],diffH[2],diffH[3]とする。同様に、動き検出部129は、マッチング部128−1乃至128−4より供給されてくる水平方向差分diffWをそれぞれ水平方向差分diffW[0],diffW[1],diffW[2]、およびdiffHW[3]とする。さらに、動き検出部129は、マッチング部128−1乃至128−4より供給されてくる基準時刻baseTimeをそれぞれ基準時刻baseTime[0],baseTime[1],baseTime[2],baseTime[3]とする。なお、各[]内の表記については、[i]と表記するものとし、i=0乃至3であるものとする。
ステップS372において、動き検出部129は、内部に保持しているデータメモリ(図示省略)から、基準時刻baseTime[i]に対応する垂直方向オフセットoffsetH、および水平方向オフセットoffsetWの値を読み出し、垂直方向オフセットoffsetH[i]、水平方向オフセットoffsetW[i]とする。
そして、動き検出部129は、垂直変化量offsetHtmp[i]を、垂直方向オフセットoffsetH[i]と垂直方向差分diffH[i]との和として計算する。同様に、動き検出部129は、水平変化量offsetWtmp[i]を、水平方向オフセットoffsetW[i]と水平方向差分diffW[i]との和として計算する。尚、動き検出部129は、イネーブルENがdisableで計算されていない場合は、無効データとして無視する。
ステップS373において、動き検出部129は、4つの垂直変化量offsetHtmp[i]の中で有効なデータの平均値を計算し、時刻absoluteTimeに対応する垂直方向オフセットoffsetHの値として、内部のデータメモリに格納する。また、動き検出部129は、4つの水平変化量offsetWtmp[i]のなかで有効なデータの平均値を計算し、時刻absoluteTimeに対応する水平方向オフセットoffsetWの値として、図示せぬ内部のデータメモリに格納する。
なお、4つ全てのデータが無効である場合、動き検出部129は、内部のデータメモリに格納する、時刻absoluteTimeに対応する水平方向オフセットoffsetHの値として、データメモリから時刻(absoluteTime−2)に対応する垂直方向オフセットoffsetHを2倍した値から時刻(absoluteTime−4)に対応する垂直方向オフセットoffsetHの値を引き算した値(即ち、時刻(absoluteTime−4)および(absoluteTime−2)の値から、時刻absoluteTimeに対応する垂直方向オフセットoffsetHの値を外挿した値)とする。
同様に、動き検出部129は、内部のデータメモリに格納する、時刻absoluteTimeに対応する水平方向オフセットoffsetWの値として、データメモリから時刻(absoluteTime−2)に対応する水平方向オフセットoffsetWの2倍した値から、データメモリから時刻(absoluteTime−4)に対応する水平方向オフセットoffsetWの値を引き算した値(即ち、時刻(absoluteTime−4)および(absoluteTime−2)の値から、絶対時刻absoluteTimeに対応する水平方向オフセットoffsetWの値を外挿した値)とする。
ステップS374(図71)において、動き検出部129は、ステップS373の処理でデータメモリに格納した時刻absoluteTimeに対応する垂直方向オフセットoffsetHと、内部のデータメモリに保持している時刻(absoluteTime−2)に対応する垂直方向オフセットoffsetHの差を計算し、さらに、(2*H/HM)という定数を加算した値を、垂直移動量deltaHperTwoClocklHMとして出力する。
また、動き検出部129は、ステップS373の処理でデータメモリに格納した時刻absoluteTimeに対応する水平方向オフセットoffsetWと、内部のデータメモリに保持している時刻(absoluteTime−2)に対応する水平方向オフセットoffsetWの差を、水平方向移動量deltaWperTwoClocklHMとして出力する。
なお、上述の変数の説明を、図72を参照して説明する。図72において、最初の1フレーム目のイメージセンサ11(WS×HS個の画素(受光素子)上の全画素の左上の位置を原点としている。最初の1フレーム目では、イメージセンサ11の中央部分が読み出される。
従って、各時刻における垂直方向オフセットoffsetHの絶対値の大きさが大きければ大きいほど、その時刻において、イメージセンサの上辺あるいは下辺に近い部分から1920×1080画素の取り出していることを意味する。そして、各時刻における水平方向オフセットoffsetWの絶対値の大きさが大きければ大きいほど、その時刻において、イメージセンサの左辺あるいは右辺に近い部分から1920×1080画素の取り出していることを意味する。
図72で示されるように、過去の時刻baseTime(すなわち、reference time)における垂直方向オフセットoffsetHと水平方向オフセットoffsetW、および、垂直方向差分diffHと水平方向差分diffWとから、現在の時刻absoluteTimeにおける垂直方向オフセットoffsetHと水平方向オフセットoffsetWを求めている。
このようにして、垂直方向移動量deltaHperTwoClocklHMおよび水平方向移動量deltaWperTwoClocklHMが求められる。
<補間部の処理>
次に、図73乃至図76を参照して、補間部132の処理について説明する。
ステップS391において、補間部132は、クロックclockHに対応した時刻timeHを1インクリメントする。ただし、H=0の場合、すなわち、初回に限りtimeH=0とする。これにより、現在のクロックclockHに同期した時刻において、出力すべきライン番号(0乃至1079)が確定する。
ステップS392において、補間部132は、図75で示されるように、クロックclockHとクロックclockHMとを同期させた現在時刻である同期現在時刻timeDoubleをtimeH*HM/Hにより算出する。また、補間部132は、図75で示されるように、クロックclockHMの同期時刻timeIntをfloor(timeDouble/2.0)*2.0のように算出する。さらに、補間部132は、図75で示されるように、時間重みtimeWeightを(timeDouble-timeInt)/2.0のように算出する。
ステップS393において、補間部132は、クロックclockHMに同期して、データセットメモリ131に格納されている、どの時刻(上述のtimeHM)に、どのラインのどの画素を読み出せば良いかというデータセットを読み出し、クロックclockHに同期した各時刻において、どのラインのどの画素を読み出せば良いかという情報を求める。
すなわち、補間部132は、データセットメモリ131より、読み出すべき画素を特定する、クロックclockHMに同期した時刻timeHM=timeIntのデータセットを読み出す。補間部132は、読み出したデータセットの水平方向読み出し開始位置read start pixelをstart pixel 1と定義する。補間部132は、読み出したデータセットの現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frameをline 1と定義する。
ステップS394において、補間部132は、データセットメモリ131から、時刻timeHM=timeInt+2であるデータセットを読み出す。補間部132は、読み出したデータセットの水平方向読み出し開始位置read start pixelをstart pixel 2と定義する。また、補間部132は、読み出したデータセットの現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frameをline 2と定義する。
ただし、(HM−2)<(timeInt+2)である場合、補間部132は、読み出したデータセットの過去水平方向読み出し開始位置read start pixel pastをstart pixel 2と定義し、直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frameをline 2と定義する。
これは、(HM−2)<(timeInt+2)である場合には、timeInt+2の時刻においては、クロックclockHMに同期した処理は、すでに、次のフレームに移行しているからである。そこで、水平方向読み出し開始位置read start pixelおよび現在フレーム偶数ライン上読み出し垂直座標line corresponding to start time of current frameに代えて、それぞれ過去水平方向読み出し開始位置read start pixel pastおよび直前フレーム偶数ライン延長線上読み出し垂直座標line corresponding to start time of previous frameが用いられる。
ステップS395(図74)において、補間部132は、クロックclockHMに同期した時刻timeIntに対応する1ライン分の画素データ(line data 1)を作成する。すなわち、補間部132は、ラインメモリ130より、現在時刻読み出し偶数ラインpresent read line for image captureが、floor(line 1)(line1で定義される値の小数点以下が切り捨てられたライン)となる1ライン分の画素データ、または、現在時刻読み出し奇数ラインpresent read line for motion capture[3]がfloor(line1)(line1で定義される値の小数点以下が切り捨てられたライン)である1ライン分の画素データを読み出す。
さらに、補間部132は、画素データが格納されているラインメモリ130から、現在時刻読み出し偶数ラインpresent read line for image captureがfloor(line 1)+1であるか、または、現在時刻読み出し奇数ラインpresent read line for motion capture[3]がfloor(line 1)+1である1ライン分の画素データを読み出す。
尚、現在時刻読み出し偶数ラインpresent read line for image captureの値は偶数であり、現在時刻読み出し奇数ラインpresent read line for motion capture[3]の値は奇数であるから、ラインメモリ130から読み出すデータは、それぞれ1つずつである。
読み出されたデータである2ライン分の画素データから、(line 1)番目のラインで、(start pixel 1)の位置から、((start pixel 1)+H−1)の位置までの合計H個の画素データ列を作成する。なお、(line 1)および(start pixel 1)の値は小数部を含むので、画素データ列を作成するにあたっては、補間部132は、2次元線形補間を行う。このH個の1ライン分のデータをline data 1とする。
ステップS396において、補間部132は、クロックclockHMに同期した時刻(timeInt+2)に対応する1ライン分の画素データ(line data 2)を作成する。すなわち、補間部132は、ラインメモリ130から、現在時刻読み出し偶数ラインpresent read line for image captureがfloor(line 2)、または、現在時刻読み出し奇数ラインpresent read line for motion capture[3]がfloor(line 2)である1ライン分の画素データを読み出す。さらに、補間部132は、ラインメモリ130から、現在時刻読み出し偶数ラインpresent read line for image captureが(floor(line 2)+1)、または、現在時刻読み出し奇数ラインpresent read line for motion capture[3]が(floor(line 2)+1)であるデータを読み出す。
尚、現在時刻読み出し偶数ラインpresent read line for image captureの値は偶数であり、現在時刻読み出し奇数ラインpresent read line for motion capture[3]の値は奇数であるから、ラインメモリ130から読み出される1ライン分の画素データは、それぞれ1つずつである。
補間部132は、読み出されたデータである2ライン分の画素データから、(line 2)番目のラインで、(start pixel 2)の位置から、((start pixel 2)+H−1)の位置までの合計H個の画素データ列を作成する。なお、(line 2)および(start pixel 2)の値は小数部を含むので、画素データ列を作成するにあたって、補間部132は、2次元線形補間を行う。このH個の1ライン分のデータをline data 2とする。
ステップS397において、補間部132は、1ライン分のデータline data 1,line data 2の各画素データに対して、時間重みtimeWeightを用いて、(1.0−timeWeight):timeWeightの割合で重み付け加算を行い、新しい1ライン分の画素データを、現在の時刻(timeH)における1列分の画素データ(Out Data)として出力する。
すなわち、line data 1,line data 2のそれぞれにおける同一の位置の画素の画素値をそれぞれPd1,Pd2とし、求めようとするライン上の対応する位置の画素の画素値をPdとすると、図75で示されるような、(1.0−timeWeight):timeWeightの割合の場合、補間部132は、Pd1×timeWeight+Pd2×(1.0−timeWeight)を算出し、この演算結果を求めようとするライン上の画素値Pdとする。
以上のごとく、垂直方向移動量deltaHperTwoClocklHMおよび水平方向移動量deltaWperTwoClocklHMにより、現在の時刻において、イメージセンサ11上のどのラインのどの位置から読み出せば良いかを決定し、その決定に基づき、イメージセンサ11の受光素子の中から適応的に読み出すようにした。
また、垂直方向移動量deltaHperTwoClocklHMおよび水平方向移動量deltaWperTwoClocklHMから、露光時間内での被写体の動きを予測して、奇数ラインについて、偶数ラインの直前の読み出し時刻と今回の読み出し時刻との時間間隔を何分割すれば良いかを決定している。そして、偶数ラインの画素データと奇数ラインの画素データとが線形補間により生成される(図74のフローチャートを参照して説明した処理により生成される)。このため、通常の撮像ではブレてしまうような状況でも、偶数ラインの画素からなるブレのある画像と、奇数ラインの画素からなるノイズはあるがブレのない画像とを合成することで、ブレ、および、ノイズを抑制した画像を生成することが可能となる。
また、奇数ラインの画素データと、過去の画素データとを比較することで、垂直方向移動量deltaHperTwoClocklHMおよび水平方向移動量deltaWperTwoClocklHMを求めるようにした。もちろん、ジャイロセンサが撮像装置に組み込まれている場合、このジャイロセンサの検出結果を使って、垂直方向移動量deltaHperTwoClocklHMおよび水平方向移動量deltaWperTwoClocklHMを求めても良い。
たとえば、奇数ラインについて、偶数ラインの直前の読み出し時刻と今回の読み出し時刻との時間間隔を4分割して、4回のリセットと読み出しを行う4倍読み出し処理の場合、図76の偶数ラインおよび奇数ラインの読み出し時刻を表す太い曲線、および奇数ラインの読み出し時刻を表す細い曲線からなる奇数ラインのデータでとして読み出される。図76において、時刻t5について着目すると、この時刻t5においては、図中の黒丸に対応する4つのラインが読み出される。
また、本技術を適用したイメージセンサでは、読み出された画素ライン毎に、4つのマッチング部128−1乃至128−4において、被写体の移動が検出される。4つの画素ラインは、1080ラインにわたって、ほぼ等間隔に分割されたラインであり、例えば、上部に偏った4つのライン等ではない。これにより、垂直方向移動量deltaHperTwoClocklHMおよび水平方向移動量deltaWperTwoClocklHMをロバストに検出することが可能となる。
画面内のある一部分に偏った部分(領域)のみについて検出すると、その領域が、たまたま、テクスチャがない被写体投影像であったり、模様の繰り返しパターンがある被写体投影像であったりすると、誤判定を起こしてしまう。
しかしながら、本技術によれば、領域が偏っていないので、たまたま一部分に判断不可能な領域があったとしても、他の領域を検査しているマッチング部128の処理により、ロバストに動きを求めることができる。
ところで、上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
図77は、汎用のパーソナルコンピュータの構成例を示している。このパーソナルコンピュータは、CPU(Central Processing Unit)1001を内蔵している。CPU1001にはバス1004を介して、入出力インタ-フェイス1005が接続されている。バス1004には、ROM(Read Only Memory)1002およびRAM(Random Access Memory)1003が接続されている。
入出力インタ-フェイス1005には、ユーザが操作コマンドを入力するキーボード、マウスなどの入力デバイスよりなる入力部1006、処理操作画面や処理結果の画像を表示デバイスに出力する出力部1007、プログラムや各種データを格納するハードディスクドライブなどよりなる記憶部1008、LAN(Local Area Network)アダプタなどよりなり、インターネットに代表されるネットワークを介した通信処理を実行する通信部1009が接続されている。また、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)を含む)、もしくは半導体メモリなどのリムーバブルメディア1011に対してデータを読み書きするドライブ1010が接続されている。
CPU1001は、ROM1002に記憶されているプログラム、または磁気ディスク、光ディスク、光磁気ディスク、もしくは半導体メモリ等のリムーバブルメディア1011ら読み出されて記憶部1008にインストールされ、記憶部1008からRAM1003にロードされたプログラムに従って各種の処理を実行する。RAM1003にはまた、CPU1001が各種の処理を実行する上において必要なデータなども適宜記憶される。
以上のように構成されるコンピュータでは、CPU1001が、例えば、記憶部1008に記憶されているプログラムを、入出力インタフェース1005及びバス1004を介して、RAM1003にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU1001)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア1011に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
コンピュータでは、プログラムは、リムーバブルメディア1011をドライブ1010に装着することにより、入出力インタフェース1005を介して、記憶部1008にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部1009で受信し、記憶部1008にインストールすることができる。その他、プログラムは、ROM1002や記憶部1008に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、すべての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
なお、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
例えば、本技術は、1つの機能をネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
また、上述のフローチャートで説明した各ステップは、1つの装置で実行する他、複数の装置で分担して実行することができる。
さらに、1つのステップに複数の処理が含まれる場合には、その1つのステップに含まれる複数の処理は、1つの装置で実行する他、複数の装置で分担して実行することができる。
尚、本技術は、以下のような構成も取ることができる。
(1) 被写体からの光を受光する2次元上に配置された複数の受光素子と、
前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、
前記移動量に応じて、前記2次元上に配置された複数の受光素子から読み出すタイミングをライン毎に適応的に制御する受光素子制御部と
を含むイメージセンサ。
(2) 前記検出部は、前記受光素子により過去、および現在において撮像された画像を用いて前記移動量を検出する、または、ジャイロセンサにより前記移動量を検出する
(1)に記載のイメージセンサ。
(3) 前記受光素子制御部は、過去に複数の受光素子から画素データを読み出したラインの時系列の変位と、現在の複数の受光素子から画素データを読み出したラインの時系列の変位との案分により求められるタイミングでライン毎の読み出しを適応的に制御する
(1)または(2)に記載のイメージセンサ。
(4) 前記受光素子制御部は、前記受光素子がリセットされてから読み出されるまでの露光時間の、適正露光時間に対する割合の逆数に比例する係数を算出し、
前記2次元上に配置された複数の受光素子の一部の受光素子が受光することで発生した画素データに、前記係数を乗算してゲインを調整する乗算部をさらに含む
(1)乃至(3)のいずれかに記載のイメージセンサ。
(5) 被写体からの光を受光する2次元上に配置された複数の受光素子を備えるイメージセンサの動作方法において、
前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、
前記移動量に応じて、前記2次元上に配置された複数の受光素子から読み出すラインを適応的に制御する
イメージセンサの動作方法。
(6) 被写体からの光を受光する2次元上に配置された複数の受光素子を備えるイメージセンサを制御するコンピュータに、
前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、
前記移動量に応じて、前記2次元上に配置された複数の受光素子から読み出すラインを適応的に制御する
ステップを含む処理を実行させるプログラム。
(7) 被写体からの光を受光する2次元上に配置された複数の受光素子と、
前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、
前記移動量に応じて、前記2次元上に配置された複数の受光素子から読み出すタイミングをライン毎に適応的に制御する受光素子制御部と
を含む電子機器。
(8) 被写体からの光を受光する2次元上に配置された複数の受光素子と、
前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、
前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くするように制御する受光素子制御部と
を含むイメージセンサ。
(9) 前記検出部は、前記受光素子により過去、および現在において撮像された画像を用いて前記移動量を検出する、または、ジャイロセンサにより前記移動量を検出する
(8)に記載のイメージセンサ。
(10) 前記露光時間が短く制御された前記一部の受光素子により撮像された画素データと、前記一部の受光素子を除く受光素子により撮像された画素データとを合成する合成部をさらに含む
(8)または(9)に記載のイメージセンサ。
(11) 被写体からの光を受光する2次元上に配置された複数の受光素子を備えたイメージセンサの動作方法において、
前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、
前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くするように制御する
イメージセンサの動作方法。
(12) 被写体からの光を受光する2次元上に配置された複数の受光素子を備えたイメージセンサを制御するコンピュータに、
前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、
前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くするように制御する
ステップ含む処理を実行させるプログラム。
(13) 被写体からの光を受光する2次元上に配置された複数の受光素子と、
前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、
前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くするように制御する受光素子制御部と
を含む電子機器。
(14) 被写体からの光を受光する2次元上に配置された複数の受光素子と、
前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、
前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くし、複数回数撮像するように制御する受光素子制御部と
を含むイメージセンサ。
(15) 前記受光素子制御部は、前記一部の受光素子により撮像された画素データについては、前記一部の受光素子を除く受光素子により撮像された画素データよりも語長を短くする
(14)に記載のイメージセンサ。
(16) 前記検出部は、前記一部の受光素子により過去、および現在において撮像された画像を用いて前記移動量を検出する、または、ジャイロセンサにより前記移動量を検出する
(14)または(15)に記載のイメージセンサ。
(17) 被写体からの光を受光する2次元上に配置された複数の受光素子を備えるイメージセンサの動作方法において、
前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、
前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くし、複数回数撮像するように制御する
イメージセンサの動作方法。
(18) 被写体からの光を受光する2次元上に配置された複数の受光素子を備えるイメージセンサを制御するコンピュータに、
前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、
前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くし、複数回数撮像するように制御する
ステップを含む処理を実行させるプログラム。
(19) 被写体からの光を受光する2次元上に配置された複数の受光素子と、
前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、
前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くし、複数回数撮像するように制御する受光素子制御部と
を含む電子機器。
11 イメージセンサ, 21 画像, 101 撮像装置, 121 制御部(Controller), 122 タイミング制御部(Reset and Readout Timing block), 123 垂直制御部(Computing Line Corresponding to Start Time block), 124 水平制御部(Computing Pixel Corresponding to Start Time block), 125,125−1乃至125−5 パラレルシリアル変換部(P/S), 126,126−1乃至126−5 乗算部, 127 フレームメモリ(Frame Memory), 128,128−1乃至128−5 マッチング部(Matching), 129 Comp Delta MV, 130 ラインメモリ(Lines Memory), 131 データセットメモリ(Data Set Memory), 132 補間部(Interpolation), 161,161−1乃至161−4 圧縮部(shrink), 162 伸張部(enlarge)

Claims (19)

  1. 被写体からの光を受光する2次元上に配置された複数の受光素子と、
    前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、
    前記移動量に応じて、前記2次元上に配置された複数の受光素子から読み出すタイミングをライン毎に適応的に制御する受光素子制御部と
    を含むイメージセンサ。
  2. 前記検出部は、前記受光素子により過去、および現在において撮像された画像を用いて前記移動量を検出する、または、ジャイロセンサにより前記移動量を検出する
    請求項1に記載のイメージセンサ。
  3. 前記受光素子制御部は、過去に複数の受光素子から画素データを読み出したラインの時系列の変位と、現在の複数の受光素子から画素データを読み出したラインの時系列の変位との案分により求められるタイミングでライン毎の読み出しを適応的に制御する
    請求項1に記載のイメージセンサ。
  4. 前記受光素子制御部は、前記受光素子がリセットされてから読み出されるまでの露光時間の、適正露光時間に対する割合の逆数に比例する係数を算出し、
    前記2次元上に配置された複数の受光素子の一部の受光素子が受光することで発生した画素データに、前記係数を乗算してゲインを調整する乗算部をさらに含む
    請求項1に記載のイメージセンサ。
  5. 被写体からの光を受光する2次元上に配置された複数の受光素子を有するイメージセンサの動作方法において、
    前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、
    前記移動量に応じて、前記2次元上に配置された複数の受光素子から読み出すラインを適応的に制御する
    イメージセンサの動作方法。
  6. 被写体からの光を受光する2次元上に配置された複数の受光素子を有するイメージセンサを制御するコンピュータに、
    前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、
    前記移動量に応じて、前記2次元上に配置された複数の受光素子から読み出すラインを適応的に制御する
    ステップを含む処理を実行させるプログラム。
  7. 被写体からの光を受光する2次元上に配置された複数の受光素子と、
    前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、
    前記移動量に応じて、前記2次元上に配置された複数の受光素子から読み出すタイミングをライン毎に適応的に制御する受光素子制御部と
    を含む電子機器。
  8. 被写体からの光を受光する2次元上に配置された複数の受光素子と、
    前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、
    前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くするように制御する受光素子制御部と
    を含むイメージセンサ。
  9. 前記検出部は、前記受光素子により過去、および現在において撮像された画像を用いて前記移動量を検出する、または、ジャイロセンサにより前記移動量を検出する
    請求項8に記載のイメージセンサ。
  10. 前記露光時間が短く制御された前記一部の受光素子により撮像された画素データと、前記一部の受光素子を除く受光素子により撮像された画素データとを合成する合成部をさらに含む
    請求項8に記載のイメージセンサ。
  11. 被写体からの光を受光する2次元上に配置された複数の受光素子を備えたイメージセンサの動作方法において、
    前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、
    前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くするように制御する
    イメージセンサの動作方法。
  12. 被写体からの光を受光する2次元上に配置された複数の受光素子を備えたイメージセンサを制御するコンピュータに、
    前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、
    前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くするように制御する
    ステップ含む処理を実行させるプログラム。
  13. 被写体からの光を受光する2次元上に配置された複数の受光素子と、
    前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、
    前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くするように制御する受光素子制御部と
    を含む電子機器。
  14. 被写体からの光を受光する2次元上に配置された複数の受光素子と、
    前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、
    前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くし、複数回数撮像するように制御する受光素子制御部と
    を含むイメージセンサ。
  15. 前記受光素子制御部は、前記一部の受光素子により撮像された画素データについては、前記一部の受光素子を除く受光素子により撮像された画素データよりも語長を短くする
    請求項14に記載のイメージセンサ。
  16. 前記検出部は、前記一部の受光素子により過去、および現在において撮像された画像を用いて前記移動量を検出する、または、ジャイロセンサにより前記移動量を検出する
    請求項14に記載のイメージセンサ。
  17. 被写体からの光を受光する2次元上に配置された複数の受光素子を備えるイメージセンサの動作方法において、
    前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、
    前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くし、複数回数撮像するように制御する
    イメージセンサの動作方法。
  18. 被写体からの光を受光する2次元上に配置された複数の受光素子を備えるイメージセンサを制御するコンピュータに、
    前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出し、
    前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くし、複数回数撮像するように制御する
    ステップを含む処理を実行させるプログラム。
  19. 被写体からの光を受光する2次元上に配置された複数の受光素子と、
    前記2次元上に配置された複数の受光素子に投影される前記被写体の投影像の移動量を検出する検出部と、
    前記移動量に応じて、前記2次元上に配置された複数の受光素子のうち、一部の受光素子の露光時間を適応的に短くし、複数回数撮像するように制御する受光素子制御部と
    を含む電子機器。
JP2013218176A 2013-10-21 2013-10-21 イメージセンサおよびその動作方法、並びに電子機器 Expired - Fee Related JP6198567B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013218176A JP6198567B2 (ja) 2013-10-21 2013-10-21 イメージセンサおよびその動作方法、並びに電子機器
US14/513,515 US9813626B2 (en) 2013-10-21 2014-10-14 Image sensor, operating method therefor, and electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013218176A JP6198567B2 (ja) 2013-10-21 2013-10-21 イメージセンサおよびその動作方法、並びに電子機器

Publications (3)

Publication Number Publication Date
JP2015082677A true JP2015082677A (ja) 2015-04-27
JP2015082677A5 JP2015082677A5 (ja) 2016-04-07
JP6198567B2 JP6198567B2 (ja) 2017-09-20

Family

ID=52825348

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013218176A Expired - Fee Related JP6198567B2 (ja) 2013-10-21 2013-10-21 イメージセンサおよびその動作方法、並びに電子機器

Country Status (2)

Country Link
US (1) US9813626B2 (ja)
JP (1) JP6198567B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6385212B2 (ja) * 2014-09-09 2018-09-05 キヤノン株式会社 画像処理装置及び方法、撮像装置、及び画像生成装置
CN107852462B (zh) * 2015-07-22 2020-12-18 索尼公司 相机模块、固体摄像元件、电子设备和摄像方法
WO2019035244A1 (ja) * 2017-08-18 2019-02-21 富士フイルム株式会社 撮像装置、撮像装置の制御方法、及び撮像装置の制御プログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004266322A (ja) * 2003-01-22 2004-09-24 Sony Corp 画像処理装置および方法、記録媒体、並びにプログラム
JP2014154982A (ja) * 2013-02-06 2014-08-25 Canon Inc 撮像装置およびその制御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001358999A (ja) 2000-06-12 2001-12-26 Sharp Corp 画像入力装置
JP4499686B2 (ja) 2006-04-21 2010-07-07 ソニー株式会社 画像処理装置および方法、記録媒体、並びにプログラム
JP3925560B2 (ja) 2006-04-21 2007-06-06 ソニー株式会社 画像処理装置および方法、記録媒体、並びにプログラム
JP3925559B2 (ja) 2006-04-21 2007-06-06 ソニー株式会社 画像処理装置および方法、記録媒体、並びにプログラム
JP5621485B2 (ja) 2010-10-06 2014-11-12 株式会社ニコン 撮像装置および画像処理装置
JP2013074372A (ja) 2011-09-27 2013-04-22 Samsung Electronics Co Ltd 撮像装置、及び歪み検出方法
US20130076940A1 (en) * 2011-09-27 2013-03-28 Samsung Electronics Co., Ltd Photographing apparatus and method of detecting distortion thereof

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004266322A (ja) * 2003-01-22 2004-09-24 Sony Corp 画像処理装置および方法、記録媒体、並びにプログラム
JP2014154982A (ja) * 2013-02-06 2014-08-25 Canon Inc 撮像装置およびその制御方法

Also Published As

Publication number Publication date
US9813626B2 (en) 2017-11-07
JP6198567B2 (ja) 2017-09-20
US20150108329A1 (en) 2015-04-23

Similar Documents

Publication Publication Date Title
JP4340915B2 (ja) 撮像画像信号の歪み補正方法、撮像画像信号の歪み補正装置、撮像方法および撮像装置
JP3925415B2 (ja) 画像処理装置および方法、記録媒体、並びにプログラム
US8072511B2 (en) Noise reduction processing apparatus, noise reduction processing method, and image sensing apparatus
WO2013005316A1 (ja) 画像処理装置、画像処理方法及び画像処理プログラム
JP4249272B2 (ja) 高解像度の電子式映像拡大装置及びその方法
JP2011114649A (ja) 撮像装置
JP2014143530A (ja) 情報処理装置と情報処理方法および撮像装置
JP6198567B2 (ja) イメージセンサおよびその動作方法、並びに電子機器
JP2007243335A (ja) 手振れ補正方法、手振れ補正装置および撮像装置
JP2017183870A (ja) 撮像処理装置、撮像処理方法、コンピュータプログラム及び電子機器
JP2011114486A (ja) 撮像装置
JP2008147715A (ja) 撮像装置及び方法
JP5424068B2 (ja) 画像処理装置、画像処理方法、画像処理プログラム及び記憶媒体
JP4499686B2 (ja) 画像処理装置および方法、記録媒体、並びにプログラム
JP3925560B2 (ja) 画像処理装置および方法、記録媒体、並びにプログラム
JP3925559B2 (ja) 画像処理装置および方法、記録媒体、並びにプログラム
KR20070035799A (ko) 휴대 단말기에서의 흔들림 움직임 보정장치
JP6083526B2 (ja) 情報処理装置、プログラム、および方法
JP5401696B2 (ja) 画像処理装置、画像処理方法及び画像処理プログラム
JP5507865B2 (ja) 画像処理装置、画像処理方法
JP5701733B2 (ja) 画像処理装置、画像処理システムおよび画像処理方法
JP2018133600A (ja) 撮像装置、撮像装置の制御方法、およびプログラム
JP6223176B2 (ja) 画像処理装置及び撮像信号の処理方法
JP2023075606A (ja) 画像処理装置および撮像装置
JP4894937B2 (ja) 画像処理装置および方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160218

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160218

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20160720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170725

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170822

R150 Certificate of patent or registration of utility model

Ref document number: 6198567

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees