(57)【特許請求の範囲】
【請求項１】
被写体をローリングシャッタ方式で撮像することで得られた前記被写体を示す第１画像データが記憶可能な記憶領域を備え、前記第１画像データサイズより小さいデータサイズのデータを前記記憶領域より切り出し、切り出されたデータを第２画像データとして取得する撮像装置であって、
手ぶれによる動き量を検出する検出手段と、
前記検出手段により検出された動き量に応じて、前記記憶領域に記憶された第１画像データから前記第２画像データを切り出すことが可能な範囲で、手ぶれを補正可能な切り出し位置を算出する第１算出手段と、
前記ローリングシャッタ方式による撮像で生じたローリング歪みを補正するために用いられる前記記憶領域における範囲を示す範囲情報、及び移動量を算出する第２算出手段と、
前記第１算出手段により算出された切り出し位置から前記第２算出手段により算出された範囲情報が示す範囲のデータを前記第１画像データから切り出すことが可能な場合は、前記切り出し位置をそのまま出力し、不可能な場合は、前記第１画像データから前記範囲を切り出すことが可能なように補正した前記切り出し位置を出力する出力手段と、
前記出力手段により出力された切り出し位置から前記範囲のデータを前記第２画像データとして取得し、前記第２算出手段により算出された移動量から、取得した前記第２画像データのローリング歪みを補正する補正手段と
を備えたことを特徴とする撮像装置。
【請求項２】
前記出力手段は、前記第２算出手段により出力された範囲情報、及び第１算出手段により算出された切り出し位置に応じて、前記補正手段がローリング歪みを補正する際に用いられる補正量調整ゲインをさらに出力し、前記補正手段は、前記第２算出手段により算出された移動量、及び前記補正量調整ゲインから、取得した前記第２画像データのローリング歪みを補正することを特徴とする請求項１記載の撮像装置。
【請求項３】
前記第２算出手段により算出された範囲情報、及び前記移動量から前記補正手段がローリング歪みを補正する際に用いられる補正量調整ゲイン、及び前記補正量調整ゲインに応じて補正した範囲情報を出力する他の出力手段をさらに備え、
前記出力手段は、前記第２算出手段により算出された範囲情報に代えて、前記他の出力手段により出力された範囲情報から前記切り出し位置を出力することを特徴とする請求項１記載の撮像装置。
【請求項４】
被写体をローリングシャッタ方式で撮像することで得られた前記被写体を示す第１画像データが記憶可能な記憶領域を備え、前記第１画像データサイズより小さいデータサイズのデータを前記記憶領域より切り出し、切り出されたデータを第２画像データとして取得する撮像装置の制御方法であって、
手ぶれによる動き量を検出する検出ステップと、
前記検出ステップにより検出された動き量に応じて、前記記憶領域に記憶された第１画像データから前記第２画像データを切り出すことが可能な範囲で、手ぶれを補正可能な切り出し位置を算出する第１算出ステップと、
前記ローリングシャッタ方式による撮像で生じたローリング歪みを補正するために用いられる前記記憶領域における範囲を示す範囲情報、及び移動量を算出する第２算出ステップと、
前記第１算出ステップにより算出された切り出し位置から前記第２算出ステップにより算出された範囲情報が示す範囲のデータを前記第１画像データから切り出すことが可能な場合は、前記切り出し位置をそのまま出力し、不可能な場合は、前記第１画像データから前記範囲を切り出すことが可能なように補正した前記切り出し位置を出力する出力ステップと、
前記出力ステップにより出力された切り出し位置から前記範囲のデータを前記第２画像データとして取得し、前記第２算出ステップにより算出された移動量から、取得した前記第２画像データのローリング歪みを補正する補正ステップと
を備えたことを特徴とする制御方法。
【請求項５】
被写体をローリングシャッタ方式で撮像することで得られた前記被写体を示す第１画像データが記憶可能な記憶領域を備え、前記第１画像データサイズより小さいデータサイズのデータを前記記憶領域より切り出し、切り出されたデータを第２画像データとして取得する撮像装置の制御方法をコンピュータに実行させるためのプログラムであって、
前記制御方法は、
手ぶれによる動き量を検出する検出ステップと、
前記検出ステップにより検出された動き量に応じて、前記記憶領域に記憶された第１画像データから前記第２画像データを切り出すことが可能な範囲で、手ぶれを補正可能な切り出し位置を算出する第１算出ステップと、
前記ローリングシャッタ方式による撮像で生じたローリング歪みを補正するために用いられる前記記憶領域における範囲を示す範囲情報、及び移動量を算出する第２算出ステップと、
前記第１算出ステップにより算出された切り出し位置から前記第２算出ステップにより算出された範囲情報が示す範囲のデータを前記第１画像データから切り出すことが可能な場合は、前記切り出し位置をそのまま出力し、不可能な場合は、前記第１画像データから前記範囲を切り出すことが可能なように補正した前記切り出し位置を出力する出力ステップと、
前記出力ステップにより出力された切り出し位置から前記範囲のデータを前記第２画像データとして取得し、前記第２算出ステップにより算出された移動量から、取得した前記第２画像データのローリング歪みを補正する補正ステップと
を備えたことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像装置及びその制御方法、並びにプログラムに関し、特に、ローリングシャッタ方式で被写体を撮像する撮像装置及びその制御方法、並びにプログラムに関する。
【背景技術】
【０００２】
従来から、画像を撮像する際の露光方式として、グローバルシャッタ方式とローリングシャッタ方式とが知られている。ＣＣＤセンサを備える撮像装置に代表されるグローバルシャッタ方式の撮像装置では、１つのフレーム画像において画素間の露光時間および露光開始時刻はほぼ同一である。
【０００３】
一方でＣＭＯＳセンサを備える撮像装置に代表されるローリングシャッタ方式の撮像装置では、１つのフレーム画像において各画素の露光時間は同一であるが、ライン毎に露光開始時刻が互いに異なっている。
【０００４】
従って、ＣＭＯＳセンサを使用した撮像装置では、ローリングシャッタに起因する画像歪み（以下、「ローリング歪み」という）が発生する。
【０００５】
また、撮像装置の手ぶれをメモリ切り出し位置の調整によって低減する処理として、電子防振がある。
【０００６】
この電子防振は、ジャイロや動きベクトルなどから撮像装置の動き量を算出して、メモリからの切り出し位置を調整することにより、撮像装置の手ぶれを低減するための処理である。
【０００７】
このような技術背景において、撮像装置の手ぶれの補正と、ローリングシャッタによる歪みの補正を合わせて行う技術が開示されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−１８６８８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載の撮像装置では、ローリングシャッタ方式で撮像した場合に生じるローリング歪を補正するために参照する領域が、切り出し用メモリ上の領域外になった場合の処理について述べられていない。このような処理の場合、参照領域が画像データが記憶された領域外のエリアになることがある。領域外のエリアには、画像データと無関係なデータ、すなわち画像データとしては不正なデータ（いわゆるゴミデータ）が存在する。従って、そのまま歪補正処理を行うと、不正なデータを含むデータが出力されてしまう。
【００１０】
本発明の目的は、撮像して得られた画像データの手ぶれ及びローリング歪みを不正なデータを含むことなく抑制することが可能な撮像装置及びその制御方法、並びにプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、請求項１の撮像装置は、被写体をローリングシャッタ方式で撮像することで得られた前記被写体を示す第１画像データが記憶可能な記憶領域を備え、前記第１画像データサイズより小さいデータサイズのデータを前記記憶領域より切り出し、切り出されたデータを第２画像データとして取得する撮像装置であって、手ぶれによる動き量を検出する検出手段と、前記検出手段により検出された動き量に応じて、前記記憶領域に記憶された第１画像データから前記第２画像データを切り出すことが可能な範囲で、手ぶれを補正可能な切り出し位置を算出する第１算出手段と、前記ローリングシャッタ方式による撮像で生じたローリング歪みを補正するために用いられる前記記憶領域における範囲を示す範囲情報、及び移動量を算出する第２算出手段と、前記第１算出手段により算出された切り出し位置から前記第２算出手段により算出された範囲情報が示す範囲のデータを前記第１画像データから切り出すことが可能な場合は、前記切り出し位置をそのまま出力し、不可能な場合は、前記第１画像データから前記範囲を切り出すことが可能なように補正した前記切り出し位置を出力する出力手段と、前記出力手段により出力された切り出し位置から前記範囲のデータを前記第２画像データとして取得し、前記第２算出手段により算出された移動量から、取得した前記第２画像データのローリング歪みを補正する補正手段とを備えたことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、撮像して得られた画像データの手ぶれ及びローリング歪みを不正なデータを含むことなく抑制することが可能な撮像装置及びその制御方法、並びにプログラムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施の形態に係る撮像装置の概略構成を示す図である。
【図２】ローリング歪み補正時の参照領域の概念図である。
【図３】メモリ切り出しの概念図である。
【図４】図１における切り出し位置算出部により実行されるメモリ切り出し位置算出処理の手順を示すフローチャートである。
【図５】図１における切り出し位置補正部により実行されるメモリ切り出し位置補正処理の手順を示すフローチャートである。
【図６】本発明の第２の実施の形態に係る撮像装置の概略構成を示す図である。
【図７】図６における切り出し位置補正部により実行されるメモリ切り出し位置補正処理の手順を示すフローチャートである。
【図８】図７のステップＳ３０１のＸ補正処理の手順を示すフローチャートである。
【図９】図８のステップＳ４０４、４１１のＸ領域不足処理の手順を示すフローチャートである。
【図１０】図７のステップＳ３０２のＹ補正処理の手順を示すフローチャートである。
【図１１】図１０のステップＳ６０４、６１１のＹ領域不足処理の手順を示すフローチャートである。
【図１２】本発明の第３の実施の形態に係る撮像装置の概略構成を示す図である。
【図１３】図１２におけるローリング歪み補正量調整部により実行されるローリング歪み補正ゲイン算出処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について図面を参照しながら詳述する。
【００１５】
［第１の実施の形態］
図１は、本発明の第１の実施の形態に係る撮像装置１００の概略構成を示す図である。
【００１６】
図１において、撮像装置１００は、撮像素子１、システム制御部２、カメラ信号処理部３、メモリ４、手ぶれ検出部５、ローリング歪み量算出部６、切り出し位置算出部７、切り出し位置補正部８、及び手振れ・ローリング歪み補正部９で構成されている。
【００１７】
被写体像が結像する撮像素子１は、システム制御部２からの制御信号によって、被写体像を光電変換により電気信号に変換し、アナログ画像信号を出力する。
【００１８】
カメラ信号処理部３は、撮像素子１から出力されたアナログ画像信号をデジタル信号に変換し、アパーチャ補正、ガンマ補正、ホワイトバランス処理などの撮像系の信号処理を行なう。このカメラ信号処理部３の出力信号は、ＳＤＲＡＭなどで構成されているデータが記憶可能なメモリ４（記憶領域）に一時的に記憶される。
【００１９】
システム制御部２は、撮像素子１の駆動を制御する。手ぶれ検出部５は、撮像装置１００の振動を検出して、その結果を動き量としてローリング歪み量算出部６、及び切り出し位置算出部７に出力する。手ぶれ検出部５は、手ぶれによる動き量を検出する検出手段に対応する。手ぶれ検出部５は、振動の検出はジャイロセンサで行うことができ、撮像装置１００に加えられた振動に応じた角速度信号を生成する。角速度信号から、焦点距離に応じて撮像装置１００の動き量の算出を行う。
【００２０】
なお、手ぶれ検出部５では、フレームメモリを備え、動きベクトル検出のような処理によって、撮像装置１００の動き量を算出しても良い。
【００２１】
ローリング歪み量算出部６は、手ぶれ検出部５が出力した動き量から、ローリング歪みによる結像位置の移動量、及び参照範囲情報（範囲情報）を算出する。具体的に、ローリング歪み量算出部６では、上記動き量によって、ローリング歪みに対して補正された各画素位置が、メモリ４のどの画素位置に結像しているのかを算出し、その座標位置の差分を移動量として算出を行う。また、参照範囲情報は、ローリング歪みを補正するための情報である。このように、ローリング歪み量算出部６は、ローリングシャッタ方式による撮像で生じたローリング歪みを補正するために用いられるメモリ４における範囲を示す範囲情報、及び移動量を算出する第２算出手段に対応する。
【００２２】
切り出し位置算出部７は、手ぶれ検出部５が出力した動き量より、防振を考慮した切り出し位置の算出を行う。具体的に、切り出し位置算出部７は、動き量に応じて、前フレームでの切り出し位置に対する調整を行い、画像の切り出し座標（切り出し位置）を算出して出力する。すなわち、切り出し位置算出部７は、手ぶれ検出部５により検出された動き量に応じて、メモリに記憶された第１画像データから第２画像データを切り出すことが可能な範囲で、手ぶれを補正可能な切り出し位置を算出する第１算出手段に対応する。この第１，２画像データについては図３で説明される。
【００２３】
切り出し位置補正部８は、ローリング歪み量算出部６が出力した参照範囲情報に応じて、切り出し位置算出部７の出力である切り出し座標を補正して出力する。具体的に、切り出し位置補正部８は、ローリング歪み量算出部６が出力した参照範囲情報と、切り出し位置算出部７が出力した切り出し座標から、ローリング歪み補正が可能な範囲に切り出し座標を補正する。そして切り出し位置補正部８は、その補正した切り出し座標を切り出し開始アドレスとして出力する。
【００２４】
従って、切り出し位置補正部８は、切り出し位置算出部７により算出された切り出し位置からローリング歪み量算出部６により算出された範囲情報が示す範囲のデータを第１画像データから切り出すことが可能な場合は、切り出し位置をそのまま出力する。一方、不可能な場合は、第１画像データから前記範囲を切り出すことが可能なように補正した切り出し位置を出力するので、切り出し位置補正部８は、出力手段に対応する。
【００２５】
手振れ・ローリング歪み補正部９は、ローリング歪み量算出部６が出力した移動量、及び切り出し位置補正部８が出力した切り出し開始アドレスで指定されたアドレスを使用してメモリ４から画像データを読み込む。そして、アフィン変換などの幾何変形を行うことにより、撮像装置１００のぶれとローリング歪みの補正を行ったデータを出力する。従って、切り出し位置補正部８により出力された切り出し位置から範囲のデータを第２画像データとして取得する。そして、手振れ・ローリング歪み補正部９は、ローリング歪み量算出部６により算出された移動量から、取得した第２画像データのローリング歪みを補正するので、補正手段に対応する。
【００２６】
図２は、ローリング歪み補正時の参照範囲の概念図である。
【００２７】
図２において、メモリ４における記憶領域の水平方向をｘ軸、垂直方向をｙ軸とし、補正後に画像の左上となる画素位置の補正前の座標を（０，０）として、参照領域をｘｙ座標系に当てはめる。
【００２８】
この場合に、ｘ座標の最小値をＸｍｉｎ、最大値をＸｍａｘ、ｙ座標の最小値をＹｍｉｎ、最大値をＹｍａｘとし、これらの値を参照範囲情報として出力する。
【００２９】
なお、本実施の形態では左上の座標を（０，０）としているが、基準となる座標は後述する切り出し座標の基準座標と一致していれば、どこに定めても良い。
【００３０】
図３は、メモリ切り出しの概念図である。
【００３１】
図３において、「メモリに出力された画像」が第１画像データに対応し、「切り出し画像」が第２画像データに対応している。この図に示されるように、本実施の形態では、第１画像データサイズより小さいデータサイズのデータを記憶領域より切り出すようになっている。メモリ４に出力された画像データに対して、水平方向をｘ座標、垂直方向をｙ座標とし、水平画像サイズをＷｉｄｔｈ、垂直画像サイズをＨｅｉｇｈｔとする。メモリ４の左上の座標を（０，０）とし、切り出し画像の左上の座標を（ｃｘ，ｃｙ）、切り出し画像の水平サイズをＨｓｉｚｅ、切り出し画像の垂直サイズをＶｓｉｚｅとする。
【００３２】
さらに、図３には示していないが、前フレームの切り出し座標を（ｃｘ’，ｃｙ’）とし、手ぶれ検出部５の出力信号である撮像装置１００の動き量を水平、垂直方向に分解したものを（ｍｘ，ｍｙ）とする。なお、前フレームの切り出し座標（ｃｘ’，ｃｙ’）は、切り出し位置算出部７で出力した切り出し座標を保存し、読み出している。
【００３３】
図４は、図１における切り出し位置算出部７により実行されるメモリ切り出し位置算出処理の手順を示すフローチャートである。
【００３４】
水平の切り出し座標ｃｘを算出するには、ｃｘ’＋ｍｘの値が、メモリ４の領域外になっていないかの判定を行う。そこでまずｃｘ’＋ｍｘ＜０か否か判別する（ステップＳ１０１）。切り出し画像の左側が不足する場合、すなわち、ｃｘ’＋ｍｘ＜０のとき（ステップＳ１０１でＹＥＳ）、ｃｘを０に補正して（ステップＳ１０２）、ステップＳ１０６に進む。
【００３５】
ｃｘ’＋ｍｘ≧０のとき（ステップＳ１０１でＮＯ）、切り出し画像の右側が不足しているか否か、すなわちｃｘ’＋ｍｘ＞（Ｗｉｄｔｈ−Ｈｓｉｚｅ）か否か判別する（ステップＳ１０３）。ｃｘ’＋ｍｘ＞（Ｗｉｄｔｈ−Ｈｓｉｚｅ）のとき（ステップＳ１０３でＹＥＳ）、ｃｘを切り出し画像の水平サイズが足りる位置（Ｗｉｄｔｈ−Ｈｓｉｚｅ）に補正して（ステップＳ１０４）、ステップＳ１０６に進む。ｃｘ’＋ｍｘ≦（Ｗｉｄｔｈ−Ｈｓｉｚｅ）のとき（ステップＳ１０３でＮＯ）、ｃｘ’＋ｍｘの値をｃｘとして（ステップＳ１０５）、ステップＳ１０６に進む。
【００３６】
次いで、垂直の切り出し座標ｃｙを算出するには、ｃｙ’＋ｍｙの値が、メモリ４の領域外になっていないかの判定を行う。そこでまずｃｙ’＋ｍｙ＜０か否か判別する（ステップＳ１０６）。切り出し画像の上側が不足する場合、すなわち、ｃｙ’＋ｍｙ＜０のとき（ステップＳ１０６でＹＥＳ）、ｃｙを０に補正して（ステップＳ１０７）、本処理を終了する。
【００３７】
ｃｙ’＋ｍｙ≧０のとき（ステップＳ１０６でＮＯ）、切り出し画像の下側が不足しているか否か、すなわちｃｙ’＋ｍｙ＞（Ｈｅｉｇｈｔ−Ｖｓｉｚｅ）か否か判別する（ステップＳ１０８）。ｃｙ’＋ｍｙ＞（Ｈｅｉｇｈｔ−Ｖｓｉｚｅ）のとき（ステップＳ１０８でＹＥＳ）、ｃｙを切り出し画像の垂直サイズが足りる位置（Ｈｅｉｇｈｔ−Ｖｓｉｚｅ）に補正して（ステップＳ１０９）、本処理を終了する。ｃｙ’＋ｍｙ≦（Ｈｅｉｇｈｔ−Ｖｓｉｚｅ）のとき（ステップＳ１０８でＮＯ）、ｃｙ’＋ｍｙの値をｃｙとして（ステップＳ１１０）、本処理を終了する。
【００３８】
図５は、図１における切り出し位置補正部８により実行されるメモリ切り出し位置補正処理の手順を示すフローチャートである。
【００３９】
図５において、補正した切り出し座標を（ａｘ，ａｙ）としている。最初に、水平の補正後の切り出し座標ａｘの算出を行う。
【００４０】
まず、ｃｘ＋Ｘｍｉｎ＜０か否かを判別する（ステップＳ２０１）。ステップＳ２０１の判別の結果、ｃｘ＋Ｘｍｉｎ＜０のとき（ステップＳ２０１でＹＥＳ）、ａｘを−Ｘｍｉｎとする（ステップＳ２０２）。
【００４１】
この補正を行った場合に、右端がメモリ４の領域外になるかの判定を行うため、ａｘ＋Ｘｍａｘ＞Ｗｉｄｔｈか否かを判別する（ステップＳ２０３）。ステップＳ２０３の判別の結果、ａｘ＋Ｘｍａｘ＞Ｗｉｄｔｈのとき（ステップＳ２０３でＹＥＳ）、ローリング歪み補正で必要な領域をメモリ４上で確保できないということを示している。そこで、切り出し座標をメモリ４の中央に戻すために、ａｘを（Ｗｉｄｔｈ−Ｈｓｉｚｅ）／２、ａｙを（Ｈｅｉｇｈｔ−Ｖｓｉｚｅ）／２として（ステップＳ２０４）、本処理を終了する。
【００４２】
ステップＳ２０１の判別の結果、ｃｘ＋Ｘｍｉｎ≧０のとき（ステップＳ２０１でＮＯ）、ｃｘ＋Ｘｍａｘ＞Ｗｉｄｔｈか否かを判別する（ステップＳ２０５）。ｃｘ＋Ｘｍａｘ＞Ｗｉｄｔｈのとき（ステップＳ２０５でＹＥＳ）、ａｘをＷｉｄｔｈ−Ｘｍａｘとする（ステップＳ２０６）。
【００４３】
この補正を行った場合に、左端がメモリ４の領域外になるかの判定を行うため、ａｘ＋Ｘｍｉｎ＜０か否か判別する（ステップＳ２０７）。ステップＳ２０７の判別の結果、ａｘ＋Ｘｍｉｎ＜０のとき（ステップＳ２０７でＹＥＳ）、ローリング歪み補正で必要な領域をメモリ４上で確保できないということを示している。そこで、切り出し座標をメモリ４の中央に戻すために、上記ステップＳ２０４に進む。
【００４４】
ステップＳ２０５の判別の結果、ｃｘ＋Ｘｍａｘ≦Ｗｉｄｔｈのとき（ステップＳ２０５でＮＯ）、水平方向の切り出し座標は、補正を行わなくても、ローリング歪み補正で必要な領域をメモリ４上で確保できるということとなる。そこでａｘをｃｘとして（ステップＳ２０８）、ステップＳ２０９に進む。
【００４５】
以上で水平方向に関する補正処理は終了する。次いで、垂直方向の補正後の切り出し座標ａｙの補正を行う。
【００４６】
まず、ｃｙ＋Ｙｍｉｎ＜０か否かを判別する（ステップＳ２０９）。ステップＳ２０９の判別の結果、ｃｙ＋Ｙｍｉｎ＜０のとき（ステップＳ２０９でＹＥＳ）、ａｙを−Ｙｍｉｎとする（ステップＳ２１０）。
【００４７】
この補正を行った場合に、上端がメモリ４の領域外になるかの判定を行うため、ａｙ＋Ｙｍａｘ＞Ｈｅｉｇｈｔか否か判別する（ステップＳ２１１）。ステップＳ２１１の判別の結果、ａｙ＋Ｙｍａｘ＞Ｈｅｉｇｈｔのとき（ステップＳ２１１でＹＥＳ）、ローリング歪み補正で必要な領域をメモリ４上で確保できないということとなる。そこで、切り出し座標をメモリ４の中央に戻すために、上記ステップＳ２０４に進む。
【００４８】
ステップＳ２０９の判別の結果、ｃｙ＋Ｙｍｉｎ≧０のとき（ステップＳ２０９でＮＯ）、ｃｙ＋Ｙｍａｘ＞Ｈｅｉｇｈｔか否かを判別する（ステップＳ２１２）。ステップＳ２１２の判別の結果、ｃｙ＋Ｙｍａｘ＞Ｈｅｉｇｈｔのとき（ステップＳ２１２でＹＥＳ）、ａｙをＨｅｉｇｈｔ−Ｙｍａｘとする（ステップＳ２１３）。
【００４９】
この補正を行った場合に、下端がメモリ４の領域外になるかの判定を行うため、ａｙ＋Ｙｍｉｎ＜０か否か判別する（ステップＳ２１４）。ステップＳ２１４の判別の結果、ａｙ＋Ｙｍｉｎ＜０のとき（ステップＳ２１４でＹＥＳ）、ローリング歪み補正で必要な領域をメモリ４上で確保できないということとなる。そこで切り出し座標をメモリ４の中央に戻すために、上記ステップＳ２０４に進む。
【００５０】
ステップＳ２１２の判別の結果、ｃｙ＋Ｙｍａｘ≦Ｈｅｉｇｈｔのとき、垂直方向の切り出し座標は、補正を行わなくてもローリング歪み補正で必要な領域をメモリ４上で確保できるということなので、ａｙをｃｘとし（ステップＳ２１５）、本処理を終了する。
【００５１】
このメモリ切り出し位置補正処理によって得られた、ａｘ，ａｙを切り出し座標として出力する。
【００５２】
なお、本第１の実施の形態では補正可能範囲を超えた場合にメモリ４の中央に切り出し位置を戻すとしているが、切り出し位置を変えないなどの処理でも良い。
【００５３】
このように、電子防振の切り出し位置制御を行った場合に、ローリング歪み補正で必要となる画像領域が不足する場合でも、電子防振で決定した切り出し位置をローリング歪み補正が可能な位置まで補正することにより、ローリング歪み補正処理を行う事ができる。
【００５４】
［第２の実施の形態］
図６は、本発明の第２の実施の形態に係る撮像装置２００の概略構成を示す図である。
【００５５】
図６に示されるように、第１の実施の形態における撮像装置１００と異なる点は、切り出し位置補正部８２、及びローリング歪み補正量調整部１１となっている。第１の実施の形態と同一の符号が付され、処理内容が変わらないものについては説明を省略する。
【００５６】
切り出し位置補正部８２は、ローリング歪み量算出部６が出力する参照範囲情報と、切り出し位置算出部７が出力する切り出し座標とが入力される。そして、切り出し位置補正部８２は、ローリング歪み補正が可能となる切り出し座標と切り出し座標の補正による移動量が予め定められた量を超えている場合は、ローリング歪み補正を弱めるための補正量調整ゲインを算出する。その後、切り出し位置補正部８２は、補正した切り出し座標と補正量調整ゲインを出力する。
【００５７】
図７は、図６における切り出し位置補正部８２により実行されるメモリ切り出し位置補正処理の手順を示すフローチャートである。
【００５８】
図７において、Ｘ座標に関する補正を行うＸ補正処理を実行し（ステップＳ３０１）、次いでＹ座標に関する補正を行うＹ補正処理を実行して（ステップＳ３０２）、本処理を終了する。
【００５９】
図８は、図７のステップＳ３０１のＸ補正処理の手順を示すフローチャートである。
【００６０】
図８において、補正した切り出し位置のＸ座標をａｘ、ローリング歪み補正を可能にする移動量をｍｏｖｅ＿ｘ、移動量の上限をｌｉｍ＿ｘ、ローリング歪み補正の補正量調整ゲインをｇａｉｎ＿ｘとしている。
【００６１】
まず、ｃｘ＋Ｘｍｉｎ＜０か否かを判別する（ステップＳ４０１）。ステップＳ４０１の判別の結果、ｃｘ＋Ｘｍｉｎ＜０のとき（ステップＳ４０１でＹＥＳ）、ａｘを−Ｘｍｉｎ、移動量をｍｏｖｅ＿ｘにａｘ−ｃｘとする（ステップＳ４０２）。
【００６２】
この補正を行った場合に、右端がメモリ４の領域外になるかの判定を行うため、ａｘ＋Ｘｍａｘ＞Ｗｉｄｔｈか否か判別する（ステップＳ４０３）。ステップＳ４０３の判別の結果、ａｘ＋Ｘｍａｘ＞Ｗｉｄｔｈのとき（ステップＳ４０３でＹＥＳ）、ローリング歪み補正で必要な領域をメモリ４上に確保出来ないということとなる。そこで後述するＸ領域不足処理を行い（ステップＳ４０４）、本処理を終了する。
【００６３】
ステップＳ４０３の判別の結果、ａｘ＋Ｘｍａｘ≦Ｗｉｄｔｈのとき（ステップＳ４０３でＮＯ）、ｍｏｖｅ＿ｘ＞ｌｉｍ＿ｘか否か判別する（ステップＳ４０５）。ステップＳ４０５の判別の結果、ｍｏｖｅ＿ｘ≦ｌｉｍ＿ｘのとき（ステップＳ４０５でＮＯ）、上限を超えていないということとなる。そこでｇａｉｎ＿ｘを１として（ステップＳ４０６）、本処理を終了する。
【００６４】
ステップＳ４０５の判別の結果、ｍｏｖｅ＿ｘ＞ｌｉｍ＿ｘのとき（ステップＳ４０５でＹＥＳ）、移動量の上限を超えているということとなる。従って、移動量を上限に設定するためａｘをｃｘ＋ｌｉｍ＿ｘとし、ｇａｉｎ＿ｘをｌｉｍ＿ｘ／Ｘｍｉｎとして（ステップＳ４０７）、本処理を終了する。
【００６５】
ステップＳ４０１の判別の結果、ｃｘ＋Ｘｍｉｎ≧０のとき（ステップＳ４０１でＮＯ）、ｃｘ＋Ｘｍａｘ＞Ｗｉｄｔｈか否か判別する（ステップＳ４０８）。ステップＳ４０８の判別の結果、ｃｘ＋Ｘｍａｘ＞Ｗｉｄｔｈのとき（ステップＳ４０８でＹＥＳ）、ａｘをＷｉｄｔｈ−Ｘｍａｘとし、ｍｏｖｅ＿ｘをｃｘ−ａｘとする（ステップＳ４０９）。
【００６６】
この補正を行った場合に、左端がメモリ４の領域外になるかの判定を行うため、ａｘ＋Ｘｍｉｎ＜０か否か判別する（ステップＳ４１０）。ステップＳ４１０の判別の結果、ａｘ＋Ｘｍｉｎ＜０のとき（ステップＳ４１０でＹＥＳ）、ローリング歪み補正で必要な領域をメモリ４上で確保出来ないということなので、後述するＸ領域不足処理を行い（ステップＳ４１１）、本処理を終了する。
【００６７】
ステップＳ４１０の判別の結果、ａｘ＋Ｘｍｉｎ≧０のとき（ステップＳ４１０でＮＯ）、ｍｏｖｅ＿ｘ＞ｌｉｍ＿ｘか否か判別する（ステップＳ４１２）。ステップＳ４１２の判別の結果、ｍｏｖｅ＿ｘ≦ｌｉｍ＿ｘのとき（ステップＳ４１２でＮＯ）、上限を超えていないということなので、ｇａｉｎ＿ｘを１として（ステップＳ４１３）、本処理を終了する。
【００６８】
ステップＳ４１２の判別の結果、ｍｏｖｅ＿ｘ＞ｌｉｍ＿ｘのとき（ステップＳ４１２でＹＥＳ）、移動量の上限を超えているということとなる。そこで、移動量を上限に設定するためにａｘをｃｘ＋ｌｉｍ＿ｘとし、ｇａｉｎ＿ｘをｌｉｍ＿ｘ／（Ｗｉｄｔｈ−Ｘｍａｘ）として（ステップＳ４１４）、本処理を終了する。
【００６９】
ステップＳ４０８の判別の結果、ｃｘ＋Ｘｍａｘ≦Ｗｉｄｔｈのとき（ステップＳ４０８でＮＯ）、水平方向の切り出し座標は、補正を行わなくても、ローリング歪み補正で必要な領域をメモリ４上で確保できるということとなる。そこで、ａｘをｃｘとし（ステップＳ４１５）、ｇａｉｎ＿ｘを１として（ステップＳ４１６）、本処理を終了する。
【００７０】
図９は、図８のステップＳ４０４、４１１のＸ領域不足処理の手順を示すフローチャートである。
【００７１】
図９において、ｇａｉｎ＿ｘをＷｉｄｔｈ／（Ｘｍａｘ−Ｘｍｉｎ）とし（ステップＳ５０１）、次いでａｘをＸｍｉｎ＊ｇａｉｎ＿ｘとして（ステップＳ５０２）、本処理を終了する。これにより、メモリ４の領域内で最大限のローリング歪み補正が可能となる補正ゲイン、及び切り出し座標を算出する。
【００７２】
図１０は、図７のステップＳ３０２のＹ補正処理の手順を示すフローチャートである。
【００７３】
図１０において、補正した切り出し位置のＹ座標をａｙ、ローリング歪み補正を可能にする移動量をｍｏｖｅ＿ｙ、移動量の上限をｌｉｍ＿ｙ、ローリング歪み補正の補正量調整ゲインをｇａｉｎ＿ｙとしている。
【００７４】
まず、ｃｙ＋Ｙｍｉｎ＜０か否かを判別する（ステップＳ６０１）。ステップＳ６０１の判別の結果、ｃｙ＋Ｙｍｉｎ＜０のとき（ステップＳ６０１でＹＥＳ）、ａｙを−Ｙｍｉｎ、移動量をｍｏｖｅ＿ｙにａｙ−ｃｙとする（ステップＳ６０２）。
【００７５】
この補正を行った場合に、下端がメモリ４の領域外になるかの判定を行うため、ａｙ＋Ｙｍａｘ＞Ｈｅｉｇｈｔか否か判別する（ステップＳ６０３）。ステップＳ６０３の判別の結果、ａｙ＋Ｙｍａｘ＞Ｈｅｉｇｈｔのとき（ステップＳ６０３でＹＥＳ）、ローリング歪み補正で必要な領域をメモリ４上に確保出来ないということとなる。そこで後述するＹ領域不足処理を行い（ステップＳ６０４）、本処理を終了する。
【００７６】
ステップＳ６０３の判別の結果、ａｙ＋Ｙｍａｘ≦Ｈｅｉｇｈｔのとき（ステップＳ６０３でＮＯ）、ｍｏｖｅ＿ｙ＞ｌｉｍ＿ｙか否か判別する（ステップＳ６０５）。ステップＳ６０５の判別の結果、ｍｏｖｅ＿ｙ≦ｌｉｍ＿ｙのとき（ステップＳ６０５でＮＯ）、上限を超えていないということとなる。そこでｇａｉｎ＿ｙを１として（ステップＳ６０６）、本処理を終了する。
【００７７】
ステップＳ６０５の判別の結果、ｍｏｖｅ＿ｙ＞ｌｉｍ＿ｙのとき（ステップＳ６０５でＹＥＳ）、移動量の上限を超えているということとなる。従って、移動量を上限に設定するためａｙをｃｙ＋ｌｉｍ＿ｙとし、ｇａｉｎ＿ｙをｌｉｍ＿ｙ／Ｙｍｉｎとして（ステップＳ６０７）、本処理を終了する。
【００７８】
ステップＳ６０１の判別の結果、ｃｙ＋Ｙｍｉｎ≧０のとき（ステップＳ６０１でＮＯ）、ｃｙ＋Ｙｍａｘ＞Ｈｅｉｇｈｔか否か判別する（ステップＳ６０８）。ステップＳ６０８の判別の結果、ｃｙ＋Ｙｍａｘ＞Ｈｅｉｇｈｔのとき（ステップＳ６０８でＹＥＳ）、ａｙをＨｅｉｇｈｔ−Ｙｍａｘとし、ｍｏｖｅ＿ｙをｃｙ−ａｙとする（ステップＳ６０９）。
【００７９】
この補正を行った場合に、上端がメモリ４の領域外になるかの判定を行うため、ａｙ＋Ｙｍｉｎ＜０か否か判別する（ステップＳ６１０）。ステップＳ６１０の判別の結果、ａｙ＋Ｙｍｉｎ＜０のとき（ステップＳ６１０でＹＥＳ）、ローリング歪み補正で必要な領域をメモリ４上で確保出来ないということなので、後述するＹ領域不足処理を行い（ステップＳ６１１）、本処理を終了する。
【００８０】
ステップＳ６１０の判別の結果、ａｙ＋Ｙｍｉｎ≧０のとき（ステップＳ６１０でＮＯ）、ｍｏｖｅ＿ｙ＞ｌｉｍ＿ｙか否か判別する（ステップＳ６１２）。ステップＳ６１２の判別の結果、ｍｏｖｅ＿ｙ≦ｌｉｍ＿ｙのとき（ステップＳ６１２でＮＯ）、上限を超えていないということなので、ｇａｉｎ＿ｙを１として（ステップＳ６１３）、本処理を終了する。
【００８１】
ステップＳ６１２の判別の結果、ｍｏｖｅ＿ｙ＞ｌｉｍ＿ｙのとき（ステップＳ６１２でＹＥＳ）、移動量の上限を超えているということとなる。そこで、移動量を上限に設定するためにａｙをｃｙ＋ｌｉｍ＿ｙとし、ｇａｉｎ＿ｙをｌｉｍ＿ｙ／（Ｈｅｉｇｈｔ−Ｙｍａｘ）として（ステップＳ６１４）、本処理を終了する。
【００８２】
ステップＳ６０８の判別の結果、ｃｙ＋Ｙｍａｘ≦Ｈｅｉｇｈｔのとき（ステップＳ６０８でＮＯ）、垂直方向の切り出し座標は、補正を行わなくても、ローリング歪み補正で必要な領域をメモリ４上で確保できるということとなる。そこで、ａｙをｃｙとし（ステップＳ６１５）、ｇａｉｎ＿ｙを１として（ステップＳ６１６）、本処理を終了する。
【００８３】
図１１は、図１０のステップＳ６０４、６１１のＹ領域不足処理の手順を示すフローチャートである。
【００８４】
図１１において、ｇａｉｎ＿ｙをＨｅｉｇｈｔ／（Ｙｍａｘ−Ｙｍｉｎ）とし（ステップＳ７０１）、次いでａｙをＹｍｉｎ×ｇａｉｎ＿ｙとして（ステップＳ７０２）、本処理を終了する。これにより、メモリ４の領域内で最大限のローリング歪み補正が可能となる補正ゲインおよび、切り出し位置を算出する。
【００８５】
このようにして、切り出し位置補正部８２により、メモリ切り出し位置補正処理が実行される。その後、ローリング歪み補正量調整部１１では、ローリング歪み量算出部６が出力した移動量と、切り出し位置補正部８２が出力した補正ゲインとにより、移動量の調整を行って出力する。
【００８６】
移動量の調整は、水平、垂直の移動量に対して、それぞれ補正量調整ゲインを乗算することにより算出する。
【００８７】
上述した第２の実施の形態では、ローリング歪み補正量調整部１１及び手ぶれ・ローリング歪み補正部９が補正手段に対応している。従って、切り出し位置補正部８２は、ローリング歪み量算出部６により出力された範囲情報及び切り出し位置算出部７により算出された切り出し位置に応じて、ローリング歪み補正量調整部１１がローリング歪みを補正する際に用いられる補正量調整ゲインを出力する。そして、手ぶれ・ローリング歪み補正部９は、ローリング歪み量算出部６により算出された移動量、及び補正量調整ゲインから、取得した第２画像データのローリング歪みを補正する。
【００８８】
このように、第２の実施の形態では、切り出し位置の調整量に上限を定め、上限を超えた場合はローリング歪み補正の補正量を弱めることにより、切り出し位置の調整による画角の変動を抑えながら、ローリング歪み補正を行う事ができる。
【００８９】
［第３の実施の形態］
図１２は、本発明の第３の実施の形態に係る撮像装置３００の概略構成を示す図である。
【００９０】
図１２に示されるように、第２の実施の形態における撮像装置２００と異なる点は、ローリング歪み補正量調整部１３となっている。第２の実施の形態と同一の符号が付され、処理内容が変わらないものについては説明を省略する。
【００９１】
ローリング歪み補正量調整部１３では、ローリング歪み量算出部６が出力したローリング歪みによる結像位置の移動量と参照範囲情報、及び切り出し位置算出部７が出力した画像の切り出し座標を用いて、ローリング歪みの補正量の調整を行う。
【００９２】
図１３は、図１２におけるローリング歪み補正量調整部１３により実行されるローリング歪み補正ゲイン算出処理の手順を示すフローチャートである。
【００９３】
図１３において、まずｃｘ＋Ｘｍｉｎ＜０か否か判別する（ステップＳ８０１）。ステップＳ８０１の判別の結果、ｃｘ＋Ｘｍｉｎ＜０のとき（ステップＳ８０１でＹＥＳ）、現状のメモリ４からの切り出し位置ではローリング歪みを補正できないということになる。そこで、ローリング歪みの補正度合いを弱めるために、水平方向の補正ゲインｇａｉｎ＿ｘに、予め決められた値αを設定し（ステップＳ８０３）、ステップＳ８０５に進む。
【００９４】
ステップＳ８０１の判別の結果、ｃｘ＋Ｘｍｉｎ≧０のとき（ステップＳ８０１でＮＯ）、ｃｘ＋Ｘｍａｘ＞Ｗｉｄｔｈか否か判別する（ステップＳ８０２）。ステップＳ８０２の判別の結果、ｃｘ＋Ｘｍａｘ＞Ｗｉｄｔｈのとき（ステップＳ８０２でＹＥＳ）、現状のメモリ４からの切り出し位置ではローリング歪みを補正できないということとなる。従って、ローリング歪みの補正度合いを弱めるために、上記ステップＳ８０３に進む。
【００９５】
ステップＳ８０２の判別の結果、ｃｘ＋Ｘｍａｘ≦Ｗｉｄｔｈのとき（ステップＳ８０２でＮＯ）、メモリ４からの切り出し位置を補正する必要はないため、ｇａｉｎ＿ｘを１として（ステップＳ８０４）、ステップＳ８０５に進む。
【００９６】
次いで、ｃｙ＋Ｙｍｉｎ＜０か否か判別する（ステップＳ８０５）。ステップＳ８０５の判別の結果、ｃｙ＋Ｙｍｉｎ＜０のとき（ステップＳ８０５でＹＥＳ）、現状のメモリ４からの切り出し位置ではローリング歪みを補正できないということになる。そこで、ローリング歪みの補正度合いを弱めるために、垂直方向の補正ゲインｇａｉｎ＿ｙに、予め決められた値βを設定し（ステップＳ８０７）、本処理を終了する。
【００９７】
ステップＳ８０５の判別の結果、ｃｙ＋Ｙｍｉｎ≧０のとき（ステップＳ８０５でＮＯ）、ｃｙ＋Ｙｍａｘ＞Ｈｅｉｇｈｔか否か判別する（ステップＳ８０６）。ステップＳ８０６の判別の結果、ｃｙ＋Ｙｍａｘ＞Ｈｅｉｇｈｔのとき（ステップＳ８０６でＹＥＳ）、現状のメモリ４からの切り出し位置ではローリング歪みを補正できないということとなる。従って、ローリング歪みの補正度合いを弱めるために、上記ステップＳ８０７に進む。
【００９８】
ステップＳ８０６の判別の結果、ｃｙ＋Ｙｍａｘ≦Ｈｅｉｇｈｔのとき（ステップＳ８０６でＮＯ）、メモリ４からの切り出し位置を補正する必要はないため、ｇａｉｎ＿ｙを１として（ステップＳ８０８）、本処理を終了する。
【００９９】
ローリング歪み補正量調整部１３は、このようにして算出されたｇａｉｎ＿ｘ，ｇａｉｎ＿ｙを各画素の移動量に対してかけることにより、補正された移動量を出力する。
【０１００】
さらに、ローリング歪み補正量調整部１３は、補正された移動量から、ｘ座標の最小値Ｘｍｉｎ’、最大値Ｘｍａｘ’、ｙ座標の最小値Ｙｍｉｎ’、最大値Ｙｍａｘ’を参照範囲情報として出力する。
【０１０１】
上述した第３の実施の形態では、ローリング歪み補正量調整部１３が、他の出力手段に対応している。従ってローリング歪み補正量調整部１３はローリング歪み量算出部６により算出された範囲情報及び移動量から手ぶれ・ローリング歪み補正部９がローリング歪みを補正する際に用いられる補正量調整ゲイン及び補正量調整ゲインに応じて補正した範囲情報を出力する。
【０１０２】
また、切り出し位置補正部８は、ローリング歪み量算出部６により算出された切り出し位置に代えて、ローリング歪み補正量調整部１３により出力された範囲情報から切り出し位置を出力する。
【０１０３】
このように、第３の実施の形態では、電子防振の切り出し位置制御を行った場合に、ローリング歪み補正で必要なる画像領域が不足する場合でも、ローリング歪み補正の補正量と、電子防振の切り出し位置を調整するようになっている。これにより、ローリング歪み補正処理を行う事ができる。
【０１０４】
以上説明した第１〜３の実施の形態によれば、撮像して得られた画像データの手ぶれ及びローリング歪みを不正なデータを含むことなく抑制することが可能となる。
【０１０５】
（他の実施の形態）
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムコードを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【０１０６】
１  撮像素子
２  システム制御部
３  カメラ信号処理部
４  メモリ
５  手振れ検出部
６  ローリング歪み量算出部
７  切り出し位置算出部
８  切り出し位置補正部
９  手ぶれ・ローリング歪み補正部
１１，１３  ローリング歪み補正量調整部
８２  切り出し位置補正部
１００，２００，３００  撮像装置
【図１】
0005734082.tif 000002
【図２】
0005734082.tif 000003
【図３】
0005734082.tif 000004
【図４】
0005734082.tif 000005
【図５】
0005734082.tif 000006
【図６】
0005734082.tif 000007
【図７】
0005734082.tif 000008
【図８】
0005734082.tif 000009
【図９】
0005734082.tif 000010
【図１０】
0005734082.tif 000011
【図１１】
0005734082.tif 000012
【図１２】
0005734082.tif 000013
【図１３】
0005734082.tif 000014