説明

撮像装置及びその制御方法、並びにプログラム

【課題】不正なデータを含まずに撮像して得られた画像データの手ぶれ及びローリング歪みを低減することが可能な撮像装置及びその制御方法、並びにプログラムを提供する。
【解決部】撮像装置100は、手ぶれによる動き量に応じて、記憶領域に記憶された第1画像データから第2画像データを切り出すことが可能な範囲で、手ぶれを補正可能な切り出し位置を算出し、ローリング歪みを補正するために用いられる記憶領域における範囲を示す範囲情報、及び移動量を算出し、切り出し位置から範囲情報が示す範囲のデータを第1画像データから切り出すことが可能な場合は、切り出し位置をそのまま出力し、不可能な場合は、第1画像データから範囲を切り出すことが可能なように補正した切り出し位置を出力し、出力された切り出し位置から範囲のデータを第2画像データとして取得し、算出された移動量から、取得した第2画像データのローリング歪みを補正する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、撮像装置及びその制御方法、並びにプログラムに関し、特に、ローリングシャッタ方式で被写体を撮像する撮像装置及びその制御方法、並びにプログラムに関する。
【背景技術】
【0002】
従来から、画像を撮像する際の露光方式として、グローバルシャッタ方式とローリングシャッタ方式とが知られている。CCDセンサを備える撮像装置に代表されるグローバルシャッタ方式の撮像装置では、1つのフレーム画像において画素間の露光時間および露光開始時刻はほぼ同一である。
【0003】
一方でCMOSセンサを備える撮像装置に代表されるローリングシャッタ方式の撮像装置では、1つのフレーム画像において各画素の露光時間は同一であるが、ライン毎に露光開始時刻が互いに異なっている。
【0004】
従って、CMOSセンサを使用した撮像装置では、ローリングシャッタに起因する画像歪み(以下、「ローリング歪み」という)が発生する。
【0005】
また、撮像装置の手ぶれをメモリ切り出し位置の調整によって低減する処理として、電子防振がある。
【0006】
この電子防振は、ジャイロや動きベクトルなどから撮像装置の動き量を算出して、メモリからの切り出し位置を調整することにより、撮像装置の手ぶれを低減するための処理である。
【0007】
このような技術背景において、撮像装置の手ぶれの補正と、ローリングシャッタによる歪みの補正を合わせて行う技術が開示されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2006−186885号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、特許文献1に記載の撮像装置では、ローリングシャッタ方式で撮像した場合に生じるローリング歪を補正するために参照する領域が、切り出し用メモリ上の領域外になった場合の処理について述べられていない。このような処理の場合、参照領域が画像データが記憶された領域外のエリアになることがある。領域外のエリアには、画像データと無関係なデータ、すなわち画像データとしては不正なデータ(いわゆるゴミデータ)が存在する。従って、そのまま歪補正処理を行うと、不正なデータを含むデータが出力されてしまう。
【0010】
本発明の目的は、撮像して得られた画像データの手ぶれ及びローリング歪みを不正なデータを含むことなく抑制することが可能な撮像装置及びその制御方法、並びにプログラムを提供することにある。
【課題を解決するための手段】
【0011】
上記目的を達成するために、請求項1の撮像装置は、被写体をローリングシャッタ方式で撮像することで得られた前記被写体を示す第1画像データが記憶可能な記憶領域を備え、前記第1画像データサイズより小さいデータサイズのデータを前記記憶領域より切り出し、切り出されたデータを第2画像データとして取得する撮像装置であって、手ぶれによる動き量を検出する検出手段と、前記検出手段により検出された動き量に応じて、前記記憶領域に記憶された第1画像データから前記第2画像データを切り出すことが可能な範囲で、手ぶれを補正可能な切り出し位置を算出する第1算出手段と、前記ローリングシャッタ方式による撮像で生じたローリング歪みを補正するために用いられる前記記憶領域における範囲を示す範囲情報、及び移動量を算出する第2算出手段と、前記第1算出手段により算出された切り出し位置から前記第2算出手段により算出された範囲情報が示す範囲のデータを前記第1画像データから切り出すことが可能な場合は、前記切り出し位置をそのまま出力し、不可能な場合は、前記第1画像データから前記範囲を切り出すことが可能なように補正した前記切り出し位置を出力する出力手段と、前記出力手段により出力された切り出し位置から前記範囲のデータを前記第2画像データとして取得し、前記第2算出手段により算出された移動量から、取得した前記第2画像データのローリング歪みを補正する補正手段とを備えたことを特徴とする。
【発明の効果】
【0012】
本発明によれば、撮像して得られた画像データの手ぶれ及びローリング歪みを不正なデータを含むことなく抑制することが可能な撮像装置及びその制御方法、並びにプログラムを提供することができる。
【図面の簡単な説明】
【0013】
【図1】本発明の第1の実施の形態に係る撮像装置の概略構成を示す図である。
【図2】ローリング歪み補正時の参照領域の概念図である。
【図3】メモリ切り出しの概念図である。
【図4】図1における切り出し位置算出部により実行されるメモリ切り出し位置算出処理の手順を示すフローチャートである。
【図5】図1における切り出し位置補正部により実行されるメモリ切り出し位置補正処理の手順を示すフローチャートである。
【図6】本発明の第2の実施の形態に係る撮像装置の概略構成を示す図である。
【図7】図6における切り出し位置補正部により実行されるメモリ切り出し位置補正処理の手順を示すフローチャートである。
【図8】図7のステップS301のX補正処理の手順を示すフローチャートである。
【図9】図8のステップS404、411のX領域不足処理の手順を示すフローチャートである。
【図10】図7のステップS302のY補正処理の手順を示すフローチャートである。
【図11】図10のステップS604、611のY領域不足処理の手順を示すフローチャートである。
【図12】本発明の第3の実施の形態に係る撮像装置の概略構成を示す図である。
【図13】図12におけるローリング歪み補正量調整部により実行されるローリング歪み補正ゲイン算出処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0014】
以下、本発明の実施の形態について図面を参照しながら詳述する。
【0015】
[第1の実施の形態]
図1は、本発明の第1の実施の形態に係る撮像装置100の概略構成を示す図である。
【0016】
図1において、撮像装置100は、撮像素子1、システム制御部2、カメラ信号処理部3、メモリ4、手ぶれ検出部5、ローリング歪み量算出部6、切り出し位置算出部7、切り出し位置補正部8、及び手振れ・ローリング歪み補正部9で構成されている。
【0017】
被写体像が結像する撮像素子1は、システム制御部2からの制御信号によって、被写体像を光電変換により電気信号に変換し、アナログ画像信号を出力する。
【0018】
カメラ信号処理部3は、撮像素子1から出力されたアナログ画像信号をデジタル信号に変換し、アパーチャ補正、ガンマ補正、ホワイトバランス処理などの撮像系の信号処理を行なう。このカメラ信号処理部3の出力信号は、SDRAMなどで構成されているデータが記憶可能なメモリ4(記憶領域)に一時的に記憶される。
【0019】
システム制御部2は、撮像素子1の駆動を制御する。手ぶれ検出部5は、撮像装置100の振動を検出して、その結果を動き量としてローリング歪み量算出部6、及び切り出し位置算出部7に出力する。手ぶれ検出部5は、手ぶれによる動き量を検出する検出手段に対応する。手ぶれ検出部5は、振動の検出はジャイロセンサで行うことができ、撮像装置100に加えられた振動に応じた角速度信号を生成する。角速度信号から、焦点距離に応じて撮像装置100の動き量の算出を行う。
【0020】
なお、手ぶれ検出部5では、フレームメモリを備え、動きベクトル検出のような処理によって、撮像装置100の動き量を算出しても良い。
【0021】
ローリング歪み量算出部6は、手ぶれ検出部5が出力した動き量から、ローリング歪みによる結像位置の移動量、及び参照範囲情報(範囲情報)を算出する。具体的に、ローリング歪み量算出部6では、上記動き量によって、ローリング歪みに対して補正された各画素位置が、メモリ4のどの画素位置に結像しているのかを算出し、その座標位置の差分を移動量として算出を行う。また、参照範囲情報は、ローリング歪みを補正するための情報である。このように、ローリング歪み量算出部6は、ローリングシャッタ方式による撮像で生じたローリング歪みを補正するために用いられるメモリ4における範囲を示す範囲情報、及び移動量を算出する第2算出手段に対応する。
【0022】
切り出し位置算出部7は、手ぶれ検出部5が出力した動き量より、防振を考慮した切り出し位置の算出を行う。具体的に、切り出し位置算出部7は、動き量に応じて、前フレームでの切り出し位置に対する調整を行い、画像の切り出し座標(切り出し位置)を算出して出力する。すなわち、切り出し位置算出部7は、手ぶれ検出部5により検出された動き量に応じて、メモリに記憶された第1画像データから第2画像データを切り出すことが可能な範囲で、手ぶれを補正可能な切り出し位置を算出する第1算出手段に対応する。この第1,2画像データについては図3で説明される。
【0023】
切り出し位置補正部8は、ローリング歪み量算出部6が出力した参照範囲情報に応じて、切り出し位置算出部7の出力である切り出し座標を補正して出力する。具体的に、切り出し位置補正部8は、ローリング歪み量算出部6が出力した参照範囲情報と、切り出し位置算出部7が出力した切り出し座標から、ローリング歪み補正が可能な範囲に切り出し座標を補正する。そして切り出し位置補正部8は、その補正した切り出し座標を切り出し開始アドレスとして出力する。
【0024】
従って、切り出し位置補正部8は、切り出し位置算出部7により算出された切り出し位置からローリング歪み量算出部6により算出された範囲情報が示す範囲のデータを第1画像データから切り出すことが可能な場合は、切り出し位置をそのまま出力する。一方、不可能な場合は、第1画像データから前記範囲を切り出すことが可能なように補正した切り出し位置を出力するので、切り出し位置補正部8は、出力手段に対応する。
【0025】
手振れ・ローリング歪み補正部9は、ローリング歪み量算出部6が出力した移動量、及び切り出し位置補正部8が出力した切り出し開始アドレスで指定されたアドレスを使用してメモリ4から画像データを読み込む。そして、アフィン変換などの幾何変形を行うことにより、撮像装置100のぶれとローリング歪みの補正を行ったデータを出力する。従って、切り出し位置補正部8により出力された切り出し位置から範囲のデータを第2画像データとして取得する。そして、手振れ・ローリング歪み補正部9は、ローリング歪み量算出部6により算出された移動量から、取得した第2画像データのローリング歪みを補正するので、補正手段に対応する。
【0026】
図2は、ローリング歪み補正時の参照範囲の概念図である。
【0027】
図2において、メモリ4における記憶領域の水平方向をx軸、垂直方向をy軸とし、補正後に画像の左上となる画素位置の補正前の座標を(0,0)として、参照領域をxy座標系に当てはめる。
【0028】
この場合に、x座標の最小値をXmin、最大値をXmax、y座標の最小値をYmin、最大値をYmaxとし、これらの値を参照範囲情報として出力する。
【0029】
なお、本実施の形態では左上の座標を(0,0)としているが、基準となる座標は後述する切り出し座標の基準座標と一致していれば、どこに定めても良い。
【0030】
図3は、メモリ切り出しの概念図である。
【0031】
図3において、「メモリに出力された画像」が第1画像データに対応し、「切り出し画像」が第2画像データに対応している。この図に示されるように、本実施の形態では、第1画像データサイズより小さいデータサイズのデータを記憶領域より切り出すようになっている。メモリ4に出力された画像データに対して、水平方向をx座標、垂直方向をy座標とし、水平画像サイズをWidth、垂直画像サイズをHeightとする。メモリ4の左上の座標を(0,0)とし、切り出し画像の左上の座標を(cx,cy)、切り出し画像の水平サイズをHsize、切り出し画像の垂直サイズをVsizeとする。
【0032】
さらに、図3には示していないが、前フレームの切り出し座標を(cx’,cy’)とし、手ぶれ検出部5の出力信号である撮像装置100の動き量を水平、垂直方向に分解したものを(mx,my)とする。なお、前フレームの切り出し座標(cx’,cy’)は、切り出し位置算出部7で出力した切り出し座標を保存し、読み出している。
【0033】
図4は、図1における切り出し位置算出部7により実行されるメモリ切り出し位置算出処理の手順を示すフローチャートである。
【0034】
水平の切り出し座標cxを算出するには、cx’+mxの値が、メモリ4の領域外になっていないかの判定を行う。そこでまずcx’+mx<0か否か判別する(ステップS101)。切り出し画像の左側が不足する場合、すなわち、cx’+mx<0のとき(ステップS101でYES)、cxを0に補正して(ステップS102)、ステップS106に進む。
【0035】
cx’+mx≧0のとき(ステップS101でNO)、切り出し画像の右側が不足しているか否か、すなわちcx’+mx>(Width−Hsize)か否か判別する(ステップS103)。cx’+mx>(Width−Hsize)のとき(ステップS103でYES)、cxを切り出し画像の水平サイズが足りる位置(Width−Hsize)に補正して(ステップS104)、ステップS106に進む。cx’+mx≦(Width−Hsize)のとき(ステップS103でNO)、cx’+mxの値をcxとして(ステップS105)、ステップS106に進む。
【0036】
次いで、垂直の切り出し座標cyを算出するには、cy’+myの値が、メモリ4の領域外になっていないかの判定を行う。そこでまずcy’+my<0か否か判別する(ステップS106)。切り出し画像の上側が不足する場合、すなわち、cy’+my<0のとき(ステップS106でYES)、cyを0に補正して(ステップS107)、本処理を終了する。
【0037】
cy’+my≧0のとき(ステップS106でNO)、切り出し画像の下側が不足しているか否か、すなわちcy’+my>(Height−Vsize)か否か判別する(ステップS108)。cy’+my>(Height−Vsize)のとき(ステップS108でYES)、cyを切り出し画像の垂直サイズが足りる位置(Height−Vsize)に補正して(ステップS109)、本処理を終了する。cy’+my≦(Height−Vsize)のとき(ステップS108でNO)、cy’+myの値をcyとして(ステップS110)、本処理を終了する。
【0038】
図5は、図1における切り出し位置補正部8により実行されるメモリ切り出し位置補正処理の手順を示すフローチャートである。
【0039】
図5において、補正した切り出し座標を(ax,ay)としている。最初に、水平の補正後の切り出し座標axの算出を行う。
【0040】
まず、cx+Xmin<0か否かを判別する(ステップS201)。ステップS201の判別の結果、cx+Xmin<0のとき(ステップS201でYES)、axを−Xminとする(ステップS202)。
【0041】
この補正を行った場合に、右端がメモリ4の領域外になるかの判定を行うため、ax+Xmax>Widthか否かを判別する(ステップS203)。ステップS203の判別の結果、ax+Xmax>Widthのとき(ステップS203でYES)、ローリング歪み補正で必要な領域をメモリ4上で確保できないということを示している。そこで、切り出し座標をメモリ4の中央に戻すために、axを(Width−Hsize)/2、ayを(Height−Vsize)/2として(ステップS204)、本処理を終了する。
【0042】
ステップS201の判別の結果、cx+Xmin≧0のとき(ステップS201でNO)、cx+Xmax>Widthか否かを判別する(ステップS205)。cx+Xmax>Widthのとき(ステップS205でYES)、axをWidth−Xmaxとする(ステップS206)。
【0043】
この補正を行った場合に、左端がメモリ4の領域外になるかの判定を行うため、ax+Xmin<0か否か判別する(ステップS207)。ステップS207の判別の結果、ax+Xmin<0のとき(ステップS207でYES)、ローリング歪み補正で必要な領域をメモリ4上で確保できないということを示している。そこで、切り出し座標をメモリ4の中央に戻すために、上記ステップS204に進む。
【0044】
ステップS205の判別の結果、cx+Xmax≦Widthのとき(ステップS205でNO)、水平方向の切り出し座標は、補正を行わなくても、ローリング歪み補正で必要な領域をメモリ4上で確保できるということとなる。そこでaxをcxとして(ステップS208)、ステップS209に進む。
【0045】
以上で水平方向に関する補正処理は終了する。次いで、垂直方向の補正後の切り出し座標ayの補正を行う。
【0046】
まず、cy+Ymin<0か否かを判別する(ステップS209)。ステップS209の判別の結果、cy+Ymin<0のとき(ステップS209でYES)、ayを−Yminとする(ステップS210)。
【0047】
この補正を行った場合に、上端がメモリ4の領域外になるかの判定を行うため、ay+Ymax>Heightか否か判別する(ステップS211)。ステップS211の判別の結果、ay+Ymax>Heightのとき(ステップS211でYES)、ローリング歪み補正で必要な領域をメモリ4上で確保できないということとなる。そこで、切り出し座標をメモリ4の中央に戻すために、上記ステップS204に進む。
【0048】
ステップS209の判別の結果、cy+Ymin≧0のとき(ステップS209でNO)、cy+Ymax>Heightか否かを判別する(ステップS212)。ステップS212の判別の結果、cy+Ymax>Heightのとき(ステップS212でYES)、ayをHeight−Ymaxとする(ステップS213)。
【0049】
この補正を行った場合に、下端がメモリ4の領域外になるかの判定を行うため、ay+Ymin<0か否か判別する(ステップS214)。ステップS214の判別の結果、ay+Ymin<0のとき(ステップS214でYES)、ローリング歪み補正で必要な領域をメモリ4上で確保できないということとなる。そこで切り出し座標をメモリ4の中央に戻すために、上記ステップS204に進む。
【0050】
ステップS212の判別の結果、cy+Ymax≦Heightのとき、垂直方向の切り出し座標は、補正を行わなくてもローリング歪み補正で必要な領域をメモリ4上で確保できるということなので、ayをcxとし(ステップS215)、本処理を終了する。
【0051】
このメモリ切り出し位置補正処理によって得られた、ax,ayを切り出し座標として出力する。
【0052】
なお、本第1の実施の形態では補正可能範囲を超えた場合にメモリ4の中央に切り出し位置を戻すとしているが、切り出し位置を変えないなどの処理でも良い。
【0053】
このように、電子防振の切り出し位置制御を行った場合に、ローリング歪み補正で必要となる画像領域が不足する場合でも、電子防振で決定した切り出し位置をローリング歪み補正が可能な位置まで補正することにより、ローリング歪み補正処理を行う事ができる。
【0054】
[第2の実施の形態]
図6は、本発明の第2の実施の形態に係る撮像装置200の概略構成を示す図である。
【0055】
図6に示されるように、第1の実施の形態における撮像装置100と異なる点は、切り出し位置補正部82、及びローリング歪み補正量調整部11となっている。第1の実施の形態と同一の符号が付され、処理内容が変わらないものについては説明を省略する。
【0056】
切り出し位置補正部82は、ローリング歪み量算出部6が出力する参照範囲情報と、切り出し位置算出部7が出力する切り出し座標とが入力される。そして、切り出し位置補正部82は、ローリング歪み補正が可能となる切り出し座標と切り出し座標の補正による移動量が予め定められた量を超えている場合は、ローリング歪み補正を弱めるための補正量調整ゲインを算出する。その後、切り出し位置補正部82は、補正した切り出し座標と補正量調整ゲインを出力する。
【0057】
図7は、図6における切り出し位置補正部82により実行されるメモリ切り出し位置補正処理の手順を示すフローチャートである。
【0058】
図7において、X座標に関する補正を行うX補正処理を実行し(ステップS301)、次いでY座標に関する補正を行うY補正処理を実行して(ステップS302)、本処理を終了する。
【0059】
図8は、図7のステップS301のX補正処理の手順を示すフローチャートである。
【0060】
図8において、補正した切り出し位置のX座標をax、ローリング歪み補正を可能にする移動量をmove_x、移動量の上限をlim_x、ローリング歪み補正の補正量調整ゲインをgain_xとしている。
【0061】
まず、cx+Xmin<0か否かを判別する(ステップS401)。ステップS401の判別の結果、cx+Xmin<0のとき(ステップS401でYES)、axを−Xmin、移動量をmove_xにax−cxとする(ステップS402)。
【0062】
この補正を行った場合に、右端がメモリ4の領域外になるかの判定を行うため、ax+Xmax>Widthか否か判別する(ステップS403)。ステップS403の判別の結果、ax+Xmax>Widthのとき(ステップS403でYES)、ローリング歪み補正で必要な領域をメモリ4上に確保出来ないということとなる。そこで後述するX領域不足処理を行い(ステップS404)、本処理を終了する。
【0063】
ステップS403の判別の結果、ax+Xmax≦Widthのとき(ステップS403でNO)、move_x>lim_xか否か判別する(ステップS405)。ステップS405の判別の結果、move_x≦lim_xのとき(ステップS405でNO)、上限を超えていないということとなる。そこでgain_xを1として(ステップS406)、本処理を終了する。
【0064】
ステップS405の判別の結果、move_x>lim_xのとき(ステップS405でYES)、移動量の上限を超えているということとなる。従って、移動量を上限に設定するためaxをcx+lim_xとし、gain_xをlim_x/Xminとして(ステップS407)、本処理を終了する。
【0065】
ステップS401の判別の結果、cx+Xmin≧0のとき(ステップS401でNO)、cx+Xmax>Widthか否か判別する(ステップS408)。ステップS408の判別の結果、cx+Xmax>Widthのとき(ステップS408でYES)、axをWidth−Xmaxとし、move_xをcx−axとする(ステップS409)。
【0066】
この補正を行った場合に、左端がメモリ4の領域外になるかの判定を行うため、ax+Xmin<0か否か判別する(ステップS410)。ステップS410の判別の結果、ax+Xmin<0のとき(ステップS410でYES)、ローリング歪み補正で必要な領域をメモリ4上で確保出来ないということなので、後述するX領域不足処理を行い(ステップS411)、本処理を終了する。
【0067】
ステップS410の判別の結果、ax+Xmin≧0のとき(ステップS410でNO)、move_x>lim_xか否か判別する(ステップS412)。ステップS412の判別の結果、move_x≦lim_xのとき(ステップS412でNO)、上限を超えていないということなので、gain_xを1として(ステップS413)、本処理を終了する。
【0068】
ステップS412の判別の結果、move_x>lim_xのとき(ステップS412でYES)、移動量の上限を超えているということとなる。そこで、移動量を上限に設定するためにaxをcx+lim_xとし、gain_xをlim_x/(Width−Xmax)として(ステップS414)、本処理を終了する。
【0069】
ステップS408の判別の結果、cx+Xmax≦Widthのとき(ステップS408でNO)、水平方向の切り出し座標は、補正を行わなくても、ローリング歪み補正で必要な領域をメモリ4上で確保できるということとなる。そこで、axをcxとし(ステップS415)、gain_xを1として(ステップS416)、本処理を終了する。
【0070】
図9は、図8のステップS404、411のX領域不足処理の手順を示すフローチャートである。
【0071】
図9において、gain_xをWidth/(Xmax−Xmin)とし(ステップS501)、次いでaxをXmin*gain_xとして(ステップS502)、本処理を終了する。これにより、メモリ4の領域内で最大限のローリング歪み補正が可能となる補正ゲイン、及び切り出し座標を算出する。
【0072】
図10は、図7のステップS302のY補正処理の手順を示すフローチャートである。
【0073】
図10において、補正した切り出し位置のY座標をay、ローリング歪み補正を可能にする移動量をmove_y、移動量の上限をlim_y、ローリング歪み補正の補正量調整ゲインをgain_yとしている。
【0074】
まず、cy+Ymin<0か否かを判別する(ステップS601)。ステップS601の判別の結果、cy+Ymin<0のとき(ステップS601でYES)、ayを−Ymin、移動量をmove_yにay−cyとする(ステップS602)。
【0075】
この補正を行った場合に、下端がメモリ4の領域外になるかの判定を行うため、ay+Ymax>Heightか否か判別する(ステップS603)。ステップS603の判別の結果、ay+Ymax>Heightのとき(ステップS603でYES)、ローリング歪み補正で必要な領域をメモリ4上に確保出来ないということとなる。そこで後述するY領域不足処理を行い(ステップS604)、本処理を終了する。
【0076】
ステップS603の判別の結果、ay+Ymax≦Heightのとき(ステップS603でNO)、move_y>lim_yか否か判別する(ステップS605)。ステップS605の判別の結果、move_y≦lim_yのとき(ステップS605でNO)、上限を超えていないということとなる。そこでgain_yを1として(ステップS606)、本処理を終了する。
【0077】
ステップS605の判別の結果、move_y>lim_yのとき(ステップS605でYES)、移動量の上限を超えているということとなる。従って、移動量を上限に設定するためayをcy+lim_yとし、gain_yをlim_y/Yminとして(ステップS607)、本処理を終了する。
【0078】
ステップS601の判別の結果、cy+Ymin≧0のとき(ステップS601でNO)、cy+Ymax>Heightか否か判別する(ステップS608)。ステップS608の判別の結果、cy+Ymax>Heightのとき(ステップS608でYES)、ayをHeight−Ymaxとし、move_yをcy−ayとする(ステップS609)。
【0079】
この補正を行った場合に、上端がメモリ4の領域外になるかの判定を行うため、ay+Ymin<0か否か判別する(ステップS610)。ステップS610の判別の結果、ay+Ymin<0のとき(ステップS610でYES)、ローリング歪み補正で必要な領域をメモリ4上で確保出来ないということなので、後述するY領域不足処理を行い(ステップS611)、本処理を終了する。
【0080】
ステップS610の判別の結果、ay+Ymin≧0のとき(ステップS610でNO)、move_y>lim_yか否か判別する(ステップS612)。ステップS612の判別の結果、move_y≦lim_yのとき(ステップS612でNO)、上限を超えていないということなので、gain_yを1として(ステップS613)、本処理を終了する。
【0081】
ステップS612の判別の結果、move_y>lim_yのとき(ステップS612でYES)、移動量の上限を超えているということとなる。そこで、移動量を上限に設定するためにayをcy+lim_yとし、gain_yをlim_y/(Height−Ymax)として(ステップS614)、本処理を終了する。
【0082】
ステップS608の判別の結果、cy+Ymax≦Heightのとき(ステップS608でNO)、垂直方向の切り出し座標は、補正を行わなくても、ローリング歪み補正で必要な領域をメモリ4上で確保できるということとなる。そこで、ayをcyとし(ステップS615)、gain_yを1として(ステップS616)、本処理を終了する。
【0083】
図11は、図10のステップS604、611のY領域不足処理の手順を示すフローチャートである。
【0084】
図11において、gain_yをHeight/(Ymax−Ymin)とし(ステップS701)、次いでayをYmin×gain_yとして(ステップS702)、本処理を終了する。これにより、メモリ4の領域内で最大限のローリング歪み補正が可能となる補正ゲインおよび、切り出し位置を算出する。
【0085】
このようにして、切り出し位置補正部82により、メモリ切り出し位置補正処理が実行される。その後、ローリング歪み補正量調整部11では、ローリング歪み量算出部6が出力した移動量と、切り出し位置補正部82が出力した補正ゲインとにより、移動量の調整を行って出力する。
【0086】
移動量の調整は、水平、垂直の移動量に対して、それぞれ補正量調整ゲインを乗算することにより算出する。
【0087】
上述した第2の実施の形態では、ローリング歪み補正量調整部11及び手ぶれ・ローリング歪み補正部9が補正手段に対応している。従って、切り出し位置補正部82は、ローリング歪み量算出部6により出力された範囲情報及び切り出し位置算出部7により算出された切り出し位置に応じて、ローリング歪み補正量調整部11がローリング歪みを補正する際に用いられる補正量調整ゲインを出力する。そして、手ぶれ・ローリング歪み補正部9は、ローリング歪み量算出部6により算出された移動量、及び補正量調整ゲインから、取得した第2画像データのローリング歪みを補正する。
【0088】
このように、第2の実施の形態では、切り出し位置の調整量に上限を定め、上限を超えた場合はローリング歪み補正の補正量を弱めることにより、切り出し位置の調整による画角の変動を抑えながら、ローリング歪み補正を行う事ができる。
【0089】
[第3の実施の形態]
図12は、本発明の第3の実施の形態に係る撮像装置300の概略構成を示す図である。
【0090】
図12に示されるように、第2の実施の形態における撮像装置200と異なる点は、ローリング歪み補正量調整部13となっている。第2の実施の形態と同一の符号が付され、処理内容が変わらないものについては説明を省略する。
【0091】
ローリング歪み補正量調整部13では、ローリング歪み量算出部6が出力したローリング歪みによる結像位置の移動量と参照範囲情報、及び切り出し位置算出部7が出力した画像の切り出し座標を用いて、ローリング歪みの補正量の調整を行う。
【0092】
図13は、図12におけるローリング歪み補正量調整部13により実行されるローリング歪み補正ゲイン算出処理の手順を示すフローチャートである。
【0093】
図13において、まずcx+Xmin<0か否か判別する(ステップS801)。ステップS801の判別の結果、cx+Xmin<0のとき(ステップS801でYES)、現状のメモリ4からの切り出し位置ではローリング歪みを補正できないということになる。そこで、ローリング歪みの補正度合いを弱めるために、水平方向の補正ゲインgain_xに、予め決められた値αを設定し(ステップS803)、ステップS805に進む。
【0094】
ステップS801の判別の結果、cx+Xmin≧0のとき(ステップS801でNO)、cx+Xmax>Widthか否か判別する(ステップS802)。ステップS802の判別の結果、cx+Xmax>Widthのとき(ステップS802でYES)、現状のメモリ4からの切り出し位置ではローリング歪みを補正できないということとなる。従って、ローリング歪みの補正度合いを弱めるために、上記ステップS803に進む。
【0095】
ステップS802の判別の結果、cx+Xmax≦Widthのとき(ステップS802でNO)、メモリ4からの切り出し位置を補正する必要はないため、gain_xを1として(ステップS804)、ステップS805に進む。
【0096】
次いで、cy+Ymin<0か否か判別する(ステップS805)。ステップS805の判別の結果、cy+Ymin<0のとき(ステップS805でYES)、現状のメモリ4からの切り出し位置ではローリング歪みを補正できないということになる。そこで、ローリング歪みの補正度合いを弱めるために、垂直方向の補正ゲインgain_yに、予め決められた値βを設定し(ステップS807)、本処理を終了する。
【0097】
ステップS805の判別の結果、cy+Ymin≧0のとき(ステップS805でNO)、cy+Ymax>Heightか否か判別する(ステップS806)。ステップS806の判別の結果、cy+Ymax>Heightのとき(ステップS806でYES)、現状のメモリ4からの切り出し位置ではローリング歪みを補正できないということとなる。従って、ローリング歪みの補正度合いを弱めるために、上記ステップS807に進む。
【0098】
ステップS806の判別の結果、cy+Ymax≦Heightのとき(ステップS806でNO)、メモリ4からの切り出し位置を補正する必要はないため、gain_yを1として(ステップS808)、本処理を終了する。
【0099】
ローリング歪み補正量調整部13は、このようにして算出されたgain_x,gain_yを各画素の移動量に対してかけることにより、補正された移動量を出力する。
【0100】
さらに、ローリング歪み補正量調整部13は、補正された移動量から、x座標の最小値Xmin’、最大値Xmax’、y座標の最小値Ymin’、最大値Ymax’を参照範囲情報として出力する。
【0101】
上述した第3の実施の形態では、ローリング歪み補正量調整部13が、他の出力手段に対応している。従ってローリング歪み補正量調整部13はローリング歪み量算出部6により算出された範囲情報及び移動量から手ぶれ・ローリング歪み補正部9がローリング歪みを補正する際に用いられる補正量調整ゲイン及び補正量調整ゲインに応じて補正した範囲情報を出力する。
【0102】
また、切り出し位置補正部8は、ローリング歪み量算出部6により算出された切り出し位置に代えて、ローリング歪み補正量調整部13により出力された範囲情報から切り出し位置を出力する。
【0103】
このように、第3の実施の形態では、電子防振の切り出し位置制御を行った場合に、ローリング歪み補正で必要なる画像領域が不足する場合でも、ローリング歪み補正の補正量と、電子防振の切り出し位置を調整するようになっている。これにより、ローリング歪み補正処理を行う事ができる。
【0104】
以上説明した第1〜3の実施の形態によれば、撮像して得られた画像データの手ぶれ及びローリング歪みを不正なデータを含むことなく抑制することが可能となる。
【0105】
(他の実施の形態)
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムコードを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【0106】
1 撮像素子
2 システム制御部
3 カメラ信号処理部
4 メモリ
5 手振れ検出部
6 ローリング歪み量算出部
7 切り出し位置算出部
8 切り出し位置補正部
9 手ぶれ・ローリング歪み補正部
11,13 ローリング歪み補正量調整部
82 切り出し位置補正部
100,200,300 撮像装置

【特許請求の範囲】
【請求項1】
被写体をローリングシャッタ方式で撮像することで得られた前記被写体を示す第1画像データが記憶可能な記憶領域を備え、前記第1画像データサイズより小さいデータサイズのデータを前記記憶領域より切り出し、切り出されたデータを第2画像データとして取得する撮像装置であって、
手ぶれによる動き量を検出する検出手段と、
前記検出手段により検出された動き量に応じて、前記記憶領域に記憶された第1画像データから前記第2画像データを切り出すことが可能な範囲で、手ぶれを補正可能な切り出し位置を算出する第1算出手段と、
前記ローリングシャッタ方式による撮像で生じたローリング歪みを補正するために用いられる前記記憶領域における範囲を示す範囲情報、及び移動量を算出する第2算出手段と、
前記第1算出手段により算出された切り出し位置から前記第2算出手段により算出された範囲情報が示す範囲のデータを前記第1画像データから切り出すことが可能な場合は、前記切り出し位置をそのまま出力し、不可能な場合は、前記第1画像データから前記範囲を切り出すことが可能なように補正した前記切り出し位置を出力する出力手段と、
前記出力手段により出力された切り出し位置から前記範囲のデータを前記第2画像データとして取得し、前記第2算出手段により算出された移動量から、取得した前記第2画像データのローリング歪みを補正する補正手段と
を備えたことを特徴とする撮像装置。
【請求項2】
前記出力手段は、前記第2算出手段により出力された範囲情報、及び第1算出手段により算出された切り出し位置に応じて、前記補正手段がローリング歪みを補正する際に用いられる補正量調整ゲインをさらに出力し、前記補正手段は、前記第2算出手段により算出された移動量、及び前記補正量調整ゲインから、取得した前記第2画像データのローリング歪みを補正することを特徴とする請求項1記載の撮像装置。
【請求項3】
前記第2算出手段により算出された範囲情報、及び前記移動量から前記補正手段がローリング歪みを補正する際に用いられる補正量調整ゲイン、及び前記補正量調整ゲインに応じて補正した範囲情報を出力する他の出力手段をさらに備え、
前記出力手段は、前記第2算出手段により算出された範囲情報に代えて、前記他の出力手段により出力された範囲情報から前記切り出し位置を出力することを特徴とする請求項1記載の撮像装置。
【請求項4】
被写体をローリングシャッタ方式で撮像することで得られた前記被写体を示す第1画像データが記憶可能な記憶領域を備え、前記第1画像データサイズより小さいデータサイズのデータを前記記憶領域より切り出し、切り出されたデータを第2画像データとして取得する撮像装置の制御方法であって、
手ぶれによる動き量を検出する検出ステップと、
前記検出ステップにより検出された動き量に応じて、前記記憶領域に記憶された第1画像データから前記第2画像データを切り出すことが可能な範囲で、手ぶれを補正可能な切り出し位置を算出する第1算出ステップと、
前記ローリングシャッタ方式による撮像で生じたローリング歪みを補正するために用いられる前記記憶領域における範囲を示す範囲情報、及び移動量を算出する第2算出ステップと、
前記第1算出ステップにより算出された切り出し位置から前記第2算出ステップにより算出された範囲情報が示す範囲のデータを前記第1画像データから切り出すことが可能な場合は、前記切り出し位置をそのまま出力し、不可能な場合は、前記第1画像データから前記範囲を切り出すことが可能なように補正した前記切り出し位置を出力する出力ステップと、
前記出力ステップにより出力された切り出し位置から前記範囲のデータを前記第2画像データとして取得し、前記第2算出ステップにより算出された移動量から、取得した前記第2画像データのローリング歪みを補正する補正ステップと
を備えたことを特徴とする制御方法。
【請求項5】
被写体をローリングシャッタ方式で撮像することで得られた前記被写体を示す第1画像データが記憶可能な記憶領域を備え、前記第1画像データサイズより小さいデータサイズのデータを前記記憶領域より切り出し、切り出されたデータを第2画像データとして取得する撮像装置の制御方法をコンピュータに実行させるためのプログラムであって、
前記制御方法は、
手ぶれによる動き量を検出する検出ステップと、
前記検出ステップにより検出された動き量に応じて、前記記憶領域に記憶された第1画像データから前記第2画像データを切り出すことが可能な範囲で、手ぶれを補正可能な切り出し位置を算出する第1算出ステップと、
前記ローリングシャッタ方式による撮像で生じたローリング歪みを補正するために用いられる前記記憶領域における範囲を示す範囲情報、及び移動量を算出する第2算出ステップと、
前記第1算出ステップにより算出された切り出し位置から前記第2算出ステップにより算出された範囲情報が示す範囲のデータを前記第1画像データから切り出すことが可能な場合は、前記切り出し位置をそのまま出力し、不可能な場合は、前記第1画像データから前記範囲を切り出すことが可能なように補正した前記切り出し位置を出力する出力ステップと、
前記出力ステップにより出力された切り出し位置から前記範囲のデータを前記第2画像データとして取得し、前記第2算出ステップにより算出された移動量から、取得した前記第2画像データのローリング歪みを補正する補正ステップと
を備えたことを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate