以下、本発明における撮像装置の実施形態について、図面を参照して説明する。最初に、撮像装置の基本構成及び基本動作について説明する。
<撮像装置>
(基本構成)
まず、撮像装置の基本構成について、図1に基づいて説明する。図1は、本発明の実施形態における撮像装置の基本構成について示すブロック図である。
図1に示すように、撮像装置1は、入射される光を電気信号に変換するCMOSセンサなどの固体撮像素子から成るイメージセンサ3と、被写体の光学像をイメージセンサ3に結像させるとともに光量などの調整を行うレンズ部4と、を備えた撮像部2を備える。
さらに、撮像装置1は、イメージセンサ3から出力されるアナログ信号である画像信号をデジタル信号に変換するAFE(Analog Front End)5と、AFE5から出力されるデジタルの画像信号に対して階調補正処理などの各種画像処理を施す画像処理部6と、入力される音声を電気信号に変換する集音部7と、集音部7から出力されるアナログの音声信号をデジタル信号に変換するとともに音声信号にノイズ除去などの各種音声処理を施す音声処理部8と、画像処理部6から出力される画像信号と音声処理部8から出力される音声信号のそれぞれに対してMPEG(Moving Picture Experts Group)圧縮方式などの動画用の圧縮符号化処理を施したり画像処理部6から出力される画像信号にJPEG(Joint Photographic Experts Group)圧縮方式などの静止画用の圧縮符号化処理を施したりする圧縮処理部9と、圧縮処理部9で圧縮符号化された圧縮符号化信号を記録する外部メモリ10と、圧縮符号化信号を外部メモリ10に記録したり読み出したりするドライバ部11と、ドライバ部11において外部メモリ10から読み出した圧縮符号化信号を伸長して復号する伸長処理部12と、を備える。
また、撮像装置1は、伸長処理部12で復号されて得られる画像信号をディスプレイなどの表示装置(不図示)で表示するためにアナログ信号に変換する画像出力回路部13と、伸長処理部12で復号されて得られる音声信号をスピーカなどの再生装置(不図示)で再生するためにアナログ信号に変換する音声出力回路部14と、を備える。
また、撮像装置1は、撮像装置1内全体の動作を制御するCPU(Central Processing Unit)15と、各処理を行うための各プログラムを記憶するとともにプログラム実行時のデータの一時保管を行うメモリ16と、撮像を開始するボタンや撮像条件などを調整するボタン等ユーザからの指示が入力される操作部17と、各部の動作タイミングを一致させるためのタイミング制御信号を出力するタイミングジェネレータ(TG)部18と、CPU15と各ブロックとの間でデータのやりとりを行うためのバス19と、メモリ16と各ブロックとの間でデータのやりとりを行うためのバス20と、を備える。
また、画像処理部6は、入力される画像信号に含まれる歪みを補正して出力する歪み補正部61を備える。なお、歪み補正部61の構成の詳細については後述する。
なお、動画と静止画の画像信号を作成可能な撮像装置1を一例として示したが、撮像装置1が、静止画の画像信号のみ作成可能であっても構わない。この場合、集音部7や音声処理部8、音声出力回路部14などを備えない構成としても構わない。
また、外部メモリ10は画像信号や音声信号を記録することができればどのようなものでも構わない。例えば、SD(Secure Digital)カードのような半導体メモリ、DVDなどの光ディスク、ハードディスクなどの磁気ディスクなどをこの外部メモリ10として使用することができる。また、外部メモリ10を撮像装置1から着脱自在としても構わない。
(基本動作)
次に、撮像装置1の基本動作について図1を用いて説明する。まず、撮像装置1は、レンズ部4より入射される光をイメージセンサ3において光電変換することによって、電気信号である画像信号を取得する。そして、イメージセンサ3は、TG部18から入力されるタイミング制御信号に同期して、所定のタイミングでAFE5に画像信号を出力する。
そして、AFE5によってアナログ信号からデジタル信号へと変換された画像信号は、画像処理部6に入力される。画像処理部6では、入力されるR(赤)G(緑)B(青)の成分を備える画像信号を、輝度信号(Y)と色差信号(U,V)の成分を備える画像信号に変換するとともに、階調補正や輪郭強調等の各種画像処理を施す。また、メモリ16はフレームメモリとして動作し、画像処理部6が処理を行なう際に画像信号を一時的に保持する。
また、このとき画像処理部6に入力される画像信号に基づき、レンズ部4において、各種レンズの位置が調整されてフォーカスの調整が行われたり、絞りの開度が調整されて露出の調整が行われたりする。このフォーカスや露出の調整は、それぞれ最適な状態となるように所定のプログラムに基づいて自動的に行われたり、ユーザの指示に基づいて手動で行われたりする。
また、画像処理部6は、歪み補正部61において画像の歪みを補正する。なお、歪み補正部61の動作の詳細については後述する。
動画の画像信号を作成する場合、集音部7において集音を行う。集音部7で集音されて電気信号に変換される音声信号は、音声処理部8に入力される。音声処理部8は、入力される音声信号をデジタル信号に変換するとともにノイズ除去や音声信号の強度制御などの各種音声処理を施す。そして、画像処理部6から出力される画像信号と、音声処理部8から出力される音声信号と、がともに圧縮処理部9に入力され、圧縮処理部9において所定の圧縮方式で圧縮される。このとき、画像信号と音声信号とが時間的に関連付けられ、再生時に画像と音とがずれないように構成される。そして、圧縮処理部9から出力される圧縮符号化信号は、ドライバ部11を介して外部メモリ10に記録される。
一方、静止画の画像信号を作成する場合、画像処理部6から出力される画像信号が圧縮処理部9に入力され、圧縮処理部9において所定の圧縮方式で圧縮される。そして、圧縮処理部9から出力される圧縮符号化信号が、ドライバ部11を介して外部メモリ10に記録される。
外部メモリ10に記録された動画の圧縮符号化信号は、ユーザの指示に基づいて伸長処理部12に読み出される。伸長処理部12は、圧縮符号化信号を伸長及び復号し、画像信号及び音声信号を生成する。そして、画像信号を画像出力回路部13、音声信号を音声出力回路部14にそれぞれ出力する。そして、画像出力回路部13や音声出力回路部14において、表示装置やスピーカにおいて再生可能な形式に変換されて出力される。
一方、外部メモリ10に記録された静止画の圧縮符号化信号は、伸長処理部12に入力されて画像信号が生成される。そして、この画像信号は画像出力回路部13に出力され、画像出力回路部13において表示装置で再生可能な形式に変換されて出力される。
なお、表示装置やスピーカは、撮像装置1と一体となっているものであっても構わないし、別体となっており撮像装置1に備えられる端子とケーブル等を用いて接続されるようなものであっても構わない。
また、画像信号の記録を行わずに表示装置などに表示される画像をユーザが確認する、所謂プレビューモードである場合に、画像処理部6から出力される画像信号を圧縮せずに画像出力回路部13に出力することとしても構わない。また、画像信号を記録する際に、圧縮処理部9で圧縮して外部メモリ10に記録する動作と並行して、画像出力回路部13を介して表示装置などに画像信号を出力することとしても構わない。
<歪み補正部>
次に、図1に示した画像処理部6に備えられる歪み補正部61について詳細に説明する。なお、以下においては説明の具体化のため、歪み補正部61によって処理される各画像の画像信号を、それぞれ画像として表現する。また、歪み補正が行われる対象となる画像を「入力画像」、歪み補正が行われた後の画像を「出力画像」とする。
また、以下において、露光及び電荷の読み出し制御の単位である画素列と平行な方向を、画像の水平方向とする。また、画素列に対して垂直となる方向を、画像の垂直方向とする。また、画素列毎に露光の開始時間が異なる(露光期間が異なる)ことを特に問題とし、画素列中の画素毎の露光期間の差異はわずかなものであるため考慮しないこととする。また、1つの画像の撮像を行う際に、垂直方向に沿って整列する各画素列のうち、上方の画素列ほど露光の開始が早く(露光期間が早く)、下方の画素列ほど露光の開始が遅い(露光期間が遅い)こととする。
また、本実施形態の撮像装置1に備えられる画像処理部6は、動画の画像信号も静止画の画像信号も処理可能である。そのため、上記の画像は、動画の画像信号と静止画の画像信号との両方を示すものとする。なお、1つの静止画の画像信号を出力する場合であったとしても、複数の画像の画像信号が入力されることとする。
(基本構成)
最初に、歪み補正部61の基本構成について図2を用いて説明する。図2は、本発明の実施形態における撮像装置に備えられる歪み補正部の基本構成について示すブロック図である。図2に示すように、歪み補正部61は、入力される2つの画像(第1画像及び第1画像より露光期間が後となる第2画像)から動きベクトルを算出する動きベクトル算出部62と、動きベクトル算出部62によって算出された動きベクトルを用いて動き情報を算出する動き情報算出部63と、動き情報算出部63によって算出された動き情報に基づいて入力画像の歪みを補正する補正処理部64と、を備える。
動きベクトルは、第1画像と第2画像とを比較することで求められる。また、求められる動きベクトルは、第1画像及び第2画像間の動き(撮像装置の動きと被写体の動きとを含む、以下単純に「動き」と表現する)を示すものとなる。具体的に例えば、第1画像の露光期間の開始から第2画像の露光期間の終了までの間における動きの方向と大きさとを表すものとなる。
動き情報は、入力画像の露光期間における動きを示したものであり、動きベクトルを用いて算出される。動き情報も、動きベクトルと同様に動きの方向と大きさとを表すものとなる。そのため、動き情報を動きベクトルの一種として解釈することも可能である。
歪み補正部61の基本動作について図3を用いて説明する。図3は、本発明の実施形態における撮像装置に備えられる歪み補正部の基本動作について示すフローチャートである。また図3は、1つの入力画像の歪みを補正する処理を表したフローチャートである。そのため、動画の画像信号を作成する場合であれば、図3に示す動作が順次行われるものとする。
図3に示すように、最初に動きベクトル算出部62が、入力される第1画像と第2画像とに基づいて両画像間の動きベクトルを算出する(STEP1)。これにより、第1画像及び第2画像間の動きベクトルが求められる。
次に、動き情報算出部62が、STEP1で算出された動きベクトルを用いて入力画像の動き情報を算出する(STEP2)。このとき、動き情報算出部62は、少なくとも2つの動きベクトルを参照して動き情報を算出する。そのため、動き情報算出部62は、過去に入力された動きベクトルを一時的に記憶したり、参照したりすることが可能な構成であるものとする。
そして、補正処理部64が、STEP2によって求められた動き情報に基づく補正を入力画像に施して、出力画像の生成を行う(STEP3)。特に、動き情報が示す動きを打ち消すような補正を入力画像に施すことにより、補正処理が行われる。動きを打ち消すような補正とは、例えば、動き情報が示す動きと逆向きの動きが発生する場合に画像に生じる歪みを、入力画像に与える補正である。
具体的に例えば、フレームメモリやラインメモリなどに保持される入力画像の画像信号の読み出しを、画素列毎に制御するなどの方法を用いることで、補正を行うことができる。この補正方法の具体例について図4〜図6を用いて説明する。図4〜図6のそれぞれは、補正処理の一例について示した模式図である。図4(a)、図5(a)及び図6(a)は、入力画像と動き情報の一例を示したものであり、図4(b)、図5(b)及び図6(b)は、出力画像の一例を示したものである。
図4は、水平方向と略平行な方向に動きが検出された場合について示している。特に、左方向の動き情報が算出された場合を示している。なお、入力画像Pin1は、図29の画像P1に相当するものである。また、図4(b)の出力画像Pout1は、読み出された画像信号が存在する範囲を実線で囲って示したものである。
上記のような動き情報が算出される場合、補正処理部64は、図4(b)の出力画像Pout1に示すように、上方の画素列ほど読み出し後の位置が左方となり、下方の画素列ほど読み出し後の位置が右方となるような制御を行う。即ち、下方の画素列ほど、上方の画素列よりも、動き情報が示す動きの方向と反対となる方向にずれた位置になるように、読み出し後の位置を制御する。
一方、図4(a)と反対に、右方向の動き情報が算出された場合は、上方の画素列ほど読み出し後の位置が右方となり、下方の画素列ほど読み出し後の位置が左方となるように制御する。
図5は、垂直方向と略平行な方向に動きが検出された場合について示している。特に、下方向の動き情報が算出された場合を示している。なお、入力画像Pin2は、図32の画像P2に相当するものである。また、図5(b)の出力画像Pout2は、読み出された画像信号が存在する部分を実線で囲って示したものである。
上述のように、上方向の動きが生じると、入力画像Pin2は垂直方向に対して伸張されたものとなる。そのため、補正処理部64は、垂直方向に対して圧縮する補正を入力画像Pin2に施し、出力画像Pout2を得る。
例えば、入力画像Pin2のそれぞれの画素列の画像信号の位置が、出力画像Pout2の中央の画素列に寄る位置となるように読み出しを行う。このとき、所定の画素列の画像信号を読み出さない間引き読み出しを行ったり、所定の近接する画素列の画像信号を加算して1つの画素列の画像信号として読み出す加算読み出しを行ったりしても構わない。そして、上記のような方法により、図5(b)に示すような入力画像Pin2を垂直方向に対して圧縮した出力画像Pout2を得る。
一方、図6は、上方向の動き情報が算出された場合について示している。なお、入力画像Pin3は、図35の画像P3に相当するものである。また、図6(b)の出力画像Pout3は、読み出された画像信号が存在する部分を実線で囲って示したものである。
上述のように、下方向の動きが生じると、入力画像Pin3は垂直方向に対して圧縮されたものとなる。そのため、補正処理部64は、垂直方向に対して伸張する補正を入力画像Pin3に施し、出力画像Pout3を得る。
例えば、入力画像Pin3のそれぞれの画素列の画像信号が、出力画像Pout3の中央の画素列から離れるように読み出しを行う。このとき、所定の近接する画素列の画像信号を用いて当該画素列間の画像信号を補間し、補間により得られた画像信号を当該画素列間の画像信号として読み出す補間読み出しを行っても構わない。そして、上記のような方法により、図6(b)に示すような入力画像Pin3を垂直方向に対して伸張した出力画像Pout3を得る。
以上のような構成とすると、2つの画像間の動きを示す動きベクトルから、入力画像の露光期間の動きを示す動き情報を算出し、この動き情報に基づいて入力画像の歪みを補正することとなる。そのため、入力画像の露光期間の動きを精度よく補正することが可能となる。
特に例えば、入力画像の直前に撮像された前画像に歪みがあり、入力画像に歪みがない場合において、前画像と入力画像とから得られる動きベクトルは動きがあることを示すものとなるが、入力画像の動き情報は動きがないことを示すものとなる。そのため、入力画像の露光期間に発生した動きを誤認することを抑制することが可能となり、入力画像に誤った補正が施されることを抑制することが可能となる。
なお、図4(b)、図5(b)及び図6(b)の出力画像Pout1〜Pout3をさらに補正した画像を出力画像としても構わない。具体的には、出力画像Pout1〜Pout3に所定の矩形領域を設定するとともに、その矩形領域内の画像信号を用いて出力画像を生成しても構わない。さらに、矩形領域内を縮小(例えば画素加算や間引き)しても構わないし、拡大(例えば画素間の補間)しても構わない。また、矩形領域を動き情報に基づいて設定しても構わないし、被写体T1及びT2が存在する位置に基づいて設定しても構わない。
また、図4〜図6では、説明の便宜上水平方向と垂直方向とで歪みの補正方法を分けて説明したが、これらは同時に実施することも可能である。特に、斜め方向の動きが検出される場合は、入力画像の水平方向と垂直方向とに歪みが発生しているため、両方の方向に対して補正を行うこととすると好ましい。このとき、水平方向に対する補正と、垂直方向に対する補正とを順に行っても構わないし、同時に行うこととしても構わない。
また、図2において、第1画像及び第2画像と入力画像とを別の画像のように説明したが、第1画像と入力画像が同じものであったり、第2画像と入力画像とが同じものであったりしても構わない。
また、以下において説明する歪み補正部61の各実施例の構成は、同様のものとなる。特に、歪み補正部61の基本構成として説明した図2に示す構成と同様のものとなる。そのため、以下の歪み補正部61の各実施例の説明において、各実施例の構成は図2に示したものと同様のものであるとして、構成の詳細な説明については省略する。
(第1実施例)
次に、歪み補正部61の第1実施例について図面を参照して説明する。図7は、第1実施例の歪み補正部の動作例について示すグラフである。具体的には、n−2番目、n−1番目、n番目、n+1番目及びn+2番目の画像が、順次作成されて歪み補正部61に入力される場合について示している。また、各画像の露光期間は、n−2番目、n−1番目、n番目、n+1番目、n+2番目の順に遅くなるものとする(ただし、nは3以上の自然数)。また、以下において前の画像、後の画像と表現する場合は、上記の順における前後を示すものとする。なお、以下では、画像の水平方向の動きが発生する場合を例に挙げて説明する。
図7は、上記の各画像から求められる動きベクトルと動き情報の大きさと、動きベクトル及び動き情報が示す動きが発生する時間と、を示したグラフである。なお、縦軸が動きベクトル及び動き情報の水平方向の大きさを示し、横軸が時間を示すものとする。また、動きベクトルの大きさが正であれば、右方向の動きが発生したことを示すものとする。一方、動きベクトルの大きさが負であれば、左方向の動きが発生したことを示すものとする。また、それぞれの画像全体の露光期間の平均時間を、その画像の画像平均露光時間(図7中の画像内の白塗りの丸)として露光期間を代表させて示し、各画像の画素列毎の露光期間の差異については図示を省略する。
本実施例の歪み補正部61における動きベクトル算出部62は、2つの画像から画像間の動きベクトル(図7中の白塗りの四角)を算出する。この動きベクトルは、2つの画像の全体を比較した結果から算出されるものとなる。そのため、例えば2つの画像の露光期間の平均時間(即ち、2つの画像の画像平均露光時間の平均時間)の動きを示すものと考えることができる。
動きベクトル算出部62は、例えばブロックマッチング法、代表点マッチング法、勾配法などの種々の方法を用いて動きベクトルを求めることが可能であり、上記以外の方法を用いることとしても構わない。なお、画像を水平方向にh分割、垂直方向にi分割してh×iの小領域にするとともに、小領域毎に例えば上記の方法を適用して小領域動きベクトルを算出し、これらを平均化するなどして動きベクトルを求めても構わない(ただし、h及びiは自然数)。
動き情報算出部63は、動きベクトル算出部62によって上記のように算出される動きベクトルを用いて、入力画像の動き情報(図7中の黒塗りの四角)を算出する。具体的に例えば、n−1番目の画像とn番目の画像とから求められる動きベクトルMn-0.5と、n番目の画像とn+1番目の画像とから求められる動きベクトルMn+0.5と、を平均化することによって、n番目の画像の動き情報Inを算出する。このように算出される動き情報Inは、例えば、n番目の画像の画像平均露光時間の動きを示すものと考えることができる。
そして、補正処理部64により、動き情報Inを用いた入力画像の補正を行うことで、歪みが低減された出力画像を得ることができる。
本実施例の歪み補正部61による効果を、従来の歪み補正部と対比することにより説明する。図8は、第1実施例の歪み補正部から出力される出力画像と従来の歪み補正部から出力される出力画像とを示した模式図である。図8(a)は本実施例の歪み補正部から出力される出力画像を示したものであり、図8(b)は従来の歪み補正部から出力される出力画像を示したものである。また、それぞれの図には、歪み補正に用いた動き情報または動きベクトルを示している。
図8(a)に示すように、本実施例の歪み補正部61は、それぞれの入力画像の露光期間における動きを示す動き情報In-1、In及びIn+1を用いて歪みの補正を行う。そのため、入力画像を精度よく補正することが可能となる。一方、図8(b)に示すように、従来の歪み補正部は、2つの画像の画像間の動きを示す動きベクトルMn-1.5、Mn-0.5及びMn+0.5を用いて、n−1番目、n番目、n+1番目の画像の補正をそれぞれ行う。そのため、実際の入力画像の露光期間における動きと異なる動きが生じていると誤り、不適切な補正をする可能性がある。したがって、本実施例のように精度よく補正を行うことができない。
また、本実施例の動き補正部61は、入力画像より前の画像を用いて求められる動きベクトルと、入力画像より後の画像を用いて求められる動きベクトルと、を利用して入力画像の動き情報を求める。そのため、入力画像の動き情報の算出の際に、入力画像の前後の画像を反映させることが可能となる。したがって、入力画像の動き情報をさらに精度よく求めることが可能となる。
なお、上記の例では、入力画像と1つ前の画像とから得られる動きベクトルと、入力画像と1つ後の画像とから得られる動きベクトルと、を用いて入力画像の動き情報を求めることとしたが、他の動きベクトルを用いて動き情報を求めることとしても構わない。例えば、入力画像の2つ前の画像と1つ前の画像から求められる動きベクトルを用いても構わないし、入力画像の1つ後の画像と2つ後の画像から求められる動きベクトルを用いても構わない。また、連続しない画像(例えば、n−2番目とn番目の画像)を用いて求めた動きベクトルを用いて、動き情報を算出しても構わない。
ただし、上記例のように、連続した画像である入力画像及び1つ前の画像から得られる動きベクトルと、同じく連続した画像である入力画像及び1つ後の画像から得られる動きベクトルと、を用いて入力画像の動き情報を求めることとすると、例えば2つの動きベクトルを平均化するだけで、容易かつ精度良く入力画像の動き情報を求めることができる。また、入力画像の1つ後の画像が歪み補正部61に入力されることにより、動き情報を算出することが可能となるため、出力画像の生成に著しい遅延が生じることを抑制することが可能となる。
また、入力画像以前の画像に対して求めた動き情報を、入力画像の動き情報を算出する際に利用しても構わない。即ち、過去に算出した動き情報を、動きベクトルと同様に扱っても構わない。
また、上記の例では、動き情報を算出する際に2つの動きベクトルを用いることとしたが、3つ以上としても構わない。例えば、k個の動きベクトルから補間直線やm次の補間曲線(以下、動き線MLとする)を求め、この動き線MLを用いて入力画像の動き情報を求めても構わない(ただし、k及びmはそれぞれ2以上の整数)。この場合、横軸の値が入力画像の画像平均露光時間となるときの動き線MLの縦軸の値が、動きの大きさとなるように動き情報を設定しても構わない。さらに、過去に算出した動き情報を利用して動き線MLを求めても構わない。
また、動き線MLを動き情報の代わりに用いて上述したような歪み補正を行っても構わない。この場合、動き線MLから入力画像の露光期間中における動きの変化まで算出して、歪み補正を行うこととしても構わない。
また、垂直方向や斜め方向に動きが発生する場合についても同様に、本実施例を適用することができる。例えば垂直方向に動きが発生する場合であれば、図7の縦軸が、垂直方向の動きベクトル及び動き情報の大きさを示すものに変わるだけである。また、斜め方向に動きが発生する場合、水平方向の動き情報と垂直方向の動き情報とを別々に算出して、それぞれの動き情報を用いて入力画像を補正することとしても構わない。
(第2実施例)
次に、歪み補正部61の第2実施例について図面を参照して説明する。図9は、第2実施例の歪み補正部の動作例について示すグラフであり、第1実施例について示した図7に相当するものである。なお、同様の部分には同一の符号を付してその詳細な説明については省略する。また、本実施例においても、歪み補正の対象となる入力画像がn番目の画像であり、水平方向の動きが発生する場合を例に挙げて説明する。
本実施例の歪み補正部61における動きベクトル算出部62は、第1実施例と同様の方法を用いて、2つの画像間の動きベクトルを求める。また、動き情報算出部63は、動きベクトル算出部62から出力される動きベクトルを用いて、入力画像の動き情報を求める。
具体的に、動き情報算出部63は、n番目の画像の動き情報Inを求めるために、n−2番目の画像とn−1番目の画像とから得られる動きベクトルMn-1.5と、n−1番目の画像とn番目の画像とから得られる動きベクトルMn-0.5と、を用いる。特に、動きベクトルMn-1.5及びMn-0.5を用いて動き情報Inを推測することにより、動き情報Inを求める。
例えば、動きベクトルMn-1.5及びMn-0.5を用いて動き線MLを求めるとともに、横軸の値がn番目の画像の画像平均露光時間となるときの動き線MLの縦軸の値が、動きの大きさとなるように動き情報Inを設定する。
そして、補正処理部64が、得られた動き情報Inを用いて入力画像の補正を行うことで、歪みが低減された出力画像が得られる。
歪みを低減する効果については第1実施例と同様である。即ち、図8に示したように、入力画像の露光期間における動きを示す動き情報を用いて歪みの補正を行うため、入力画像を精度よく補正することが可能となる。
さらに、本実施例では、入力画像以前の画像を用いて算出した動きベクトルを用いて入力画像の動き情報を算出することとしている。そのため、入力画像の動き情報を算出する際に、入力画像より後の画像が不要となる。したがって、第1実施例に示したような、入力画像よりも後の画像が歪み補正部61に入力された後に、出力画像の生成が開始されることを抑制することが可能となる。即ち、出力画像の生成を迅速に行うことが可能となる。
なお、上記の例では、入力画像の2つ前の画像と1つ前の画像とから得られる動きベクトルと、入力画像の1つ前の画像と入力画像とから得られる動きベクトルと、を用いて入力画像の動き情報を求めることとしたが、他の動きベクトルを用いて動き情報を求めることとしても構わない。例えば、入力画像の3つ前の画像と2つ前の画像から求められる動きベクトルを用いても構わない。また、連続しない画像を用いて求めた動きベクトルを用いて、動き情報を算出しても構わない。
ただし、上記例のように、連続した画像である入力画像の2つ前の画像及び1つ前の画像から得られる動きベクトルと、同じく連続した画像である入力画像及び1つ前の画像から得られる動きベクトルと、を用いて入力画像の動き情報を求めることとすると、入力画像と直前の2つの画像とを用いて動き情報を求めることとなる。そのため、計算量を低減するとともに精度良く動き情報を求めることができる。
また、入力画像よりも前の画像に対して求められた動き情報を、入力画像の動き情報を算出する際に利用しても構わない。即ち、過去に算出した動き情報を、動きベクトルと同様に扱っても構わない。
また、上記の例では、動き情報を算出する際に2つの動きベクトルを用いることとしたが、3つ以上としても構わない。例えば、k個の動きベクトルから動き線MLを求め、この動き線MLを用いて入力画像の動き情報を求めても構わない。
また、動き線MLを動き情報の代わりに用いて上述したような歪み補正を行っても構わない。この場合、動き線MLから入力画像の露光期間中における動きの変化まで算出して、歪み補正を行うこととしても構わない。
また、垂直方向や斜め方向に動きが発生する場合についても同様に、本実施例を適用することができる。例えば垂直方向に動きが発生する場合であれば、図9の縦軸が、垂直方向の動きベクトル及び動き情報の大きさを示すものに変わるだけである。また、斜め方向に動きが発生する場合、水平方向の動き情報と垂直方向の動き情報とを別々に算出して、それぞれの動き情報を用いて入力画像を補正することとしても構わない。
(第3実施例)
次に、歪み補正部61の第3実施例について図面を参照して説明する。図10は、第3実施例の歪み補正部の動作例について示すグラフであり、第1実施例について示した図7や第2実施例について示した図9に相当するものである。ただし、図10は図7及び図9と異なり、被写体の表示を省略するとともに各画素列の露光期間の差異を図中で表現している。また、図10と図7及び図9とで同様となる部分には同一の符号を付してその詳細な説明については省略する。また、本実施例においても、歪み補正の対象となる入力画像がn番目の画像であり、水平方向の動きが発生する場合を例に挙げて説明する。
本実施例の歪み補正部61における動きベクトル算出部62は、まず、画像を垂直方向に対してj個に等分割した領域である中領域毎に2つの画像を比較して、中領域動きベクトルを求める(ただし、jは2以上の整数)。なお、図10では一例として、画像を垂直方向に対して3つに等分割した場合(j=3の場合)について示している。なお、それぞれの画像の中領域について、露光期間が早い順にα、β、γとする。
また、中領域の露光期間の平均時間となる中領域平均露光時間を、図10のそれぞれの中領域内に白塗りの三角形で示す。中領域動きベクトルは、2つの中領域の全体を比較した結果から算出されるものとなる。そのため、例えば2つの中領域の露光期間の平均時間(即ち、それぞれの中領域平均露光時間を平均した時間)の動きを示すものと考えることができる。
また、中領域動きベクトルの算出には、第1及び第2実施例で示した動きベクトルを算出する方法と同様の方法を適用することができる。例えば、ブロックマッチング法、代表点マッチング法、勾配法などの種々の方法を用いて、中領域動きベクトルを求めることが可能である。また、各中領域を水平方向にh分割、垂直方向にi分割してh×iの小領域とし、小領域毎に求められる動きベクトルを平均化するなどして中領域動きベクトルを算出しても構わない。
動きベクトル算出部62は、上記のように求めた中領域動きベクトルを用いて、2つの画像間の動きベクトルを算出する。例えば、2つの画像の各中領域から求められた中領域動きベクトルを平均化することによって、2つの画像間の動きベクトルを算出する。そして、動き情報算出部63が、少なくとも入力画像より前の画像を用いて得られる動きベクトルと、少なくとも入力画像より後の画像を用いて得られる動きベクトルと、を用いて入力画像の動き情報を算出する。
ところで、動きベクトル算出部62が、ある中領域の中領域動きベクトルを算出する際に、中領域動きベクトルが求められずに欠落したり、信頼性が低いなどの要因によって求められた中領域動きベクトルが不適なものになったりする場合が生じ得る。
中領域動きベクトルが欠落する場合とは、例えば、2つの画像の中領域を比較した場合に、相当する(マッチングする)部分が検出できない場合などである。また、中領域ベクトルが不適なものとなる場合とは、例えば、中領域を複数の小領域に分割してそれぞれの小領域から小領域動きベクトルを得て、小領域動きベクトルから中領域動きベクトルを求める場合に、小領域動きベクトルの向きや大きさの差異が著しく大きい場合などである。
以上のような、動きベクトルを算出する際に精度を悪化させる可能性がある中領域動きベクトルの算出結果を、以下において不適結果とする。そして、本実施例では、このような不適結果を動きベクトルの算出時に除外する。
具体的に、n−1番目の画像とn番目の画像とから求められる動きベクトルMAn-0.5と、n番目の画像とn+1番目の画像とから求められる動きベクトルMAn+0.5とを用いて、n番目の画像の動き情報Inを算出する場合を例に挙げて以下説明する。なお、動きベクトルMAn-0.5は、n−1番目の画像の中領域αn-1及びn番目の画像の中領域αnから得られた中領域動きベクトルと、n−1番目の画像の中領域βn-1及びn番目の画像の中領域βnから得られた中領域動きベクトルと、n−1番目の画像の中領域γn-1及びn番目の画像の中領域γnから得られた中領域動きベクトルと、を用いて得られる動きベクトルとする。また、動きベクトルMAn+0.5は、n番目の画像の中領域αn及びn+1番目の画像の中領域αn+1から得られた中領域動きベクトルのみから求められる動きベクトルとし、n番目の画像の中領域βn及びn+1番目の画像の中領域βn+1と、n番目の画像の中領域γn及びn+1番目の画像の中領域γn+1と、からはそれぞれ不適結果が出力されたものとする。
動きベクトルMAn-0.5及びMAn+0.5は、例えば、不適結果を除外して得られたそれぞれの中領域動きベクトルを平均化することによって得られる。この場合、動きベクトルMAn-0.5は、中領域αn-1及びαnと、中領域βn-1及びβnと、中領域γn-1及びγnとからそれぞれ得られた中領域動きベクトルの大きさを平均化した大きさを有するものとなる。また、動きベクトルMAn-0.5は、例えば、中領域αn-1及びαnのそれぞれの露光期間と、中領域βn-1及びβnのそれぞれの露光期間と、中領域γn-1及びγnのそれぞれの露光期間と、を平均した時間(それぞれの中領域平均露光時間を平均した時間、即ち、n−1番目の画像の画像平均露光時間とn番目の画像の画像平均露光時間との平均時間)の動きを示すものと考えることができる。
一方、動きベクトルMAn+0.5は、中領域βn及びβn+1から得られる結果と中領域γn及びγn+1から得られる結果とが、不適結果となり除外されるため、中領域αn及びαn+1から得られる中領域動きベクトルのみを用いて算出される。動きベクトルが中領域動きベクトルを平均化して得られるものである場合、動きベクトルMAn+0.5と、中領域αn及びαn+1から得られる中領域動きベクトルとは同様のものとなる。具体的には、動きベクトルMAn+0.5が示す動きの大きさが、中領域αn及びαn+1から得られる中領域動きベクトルが示す動きの大きさと略等しいものとなる。また、動きベクトルMAn+0.5は、例えば、中領域αn及びαn+1のそれぞれの露光期間を平均した時間(即ち、それぞれの中領域平均露光時間の平均時間)の動きを示すものと考えることができる。
以上のようにして求められる動きベクトルMAn-0.5及びMAn+0.5を用いて、動き情報算出部63が、n番目の画像の動き情報Inを求める。例えば、動きベクトルMAn-0.5と動きベクトルMAn+0.5とを平均化するなどして動き情報Inを求める。ただし、動きベクトルMAn-0.5及びMAn+0.5の重み係数(例えば加算割合)を調整して平均化することにより、動き情報Inを求める。
例えば、求める動き情報Inと動きベクトルMAn-0.5及びMAn+0.5とのそれぞれの時間差の逆比を重み係数に反映させる。上記の例の場合であれば、動き情報Inが示す動きの時間(n番目の画像の画像平均露光時間)と動きベクトルMAn-0.5が示す動きの時間(n−1番目の画像の画像平均露光時間とn番目の画像の画像平均露光時間との平均時間)との時間差の方が、動き情報Inが示す動きの時間(n番目の画像の画像平均露光時間)と動きベクトルMAn+0.5が示す動きの時間(中領域αn-1及びαnのそれぞれの中領域平均露光時間の平均時間)との時間差よりも大きくなる。そのため、動きベクトルMAn-0.5の重み係数を、動きベクトルMAn+0.5の重み係数よりも小さいものとして平均化することにより、動き情報Inを求める。
以上のようにして、n番目の画像の画像平均露光時間における動きを示す動き情報Inが得られる。そして、補正処理部64により、動き情報Inを用いた入力画像の補正を行うことで、歪みが低減された出力画像を得ることができる。
歪みを低減する効果については第1及び第2実施例と同様である。即ち、図8に示したように、入力画像の画像平均露光時間における動きを示す動き情報を用いて歪みの補正を行うため、入力画像を精度よく補正することが可能となる。
また、本実施例は第1実施例と同様に、入力画像より前の画像を用いて求められる動きベクトルと、入力画像より後の画像を用いて求められる動きベクトルと、を利用して入力画像の露光期間に生じた動きを求める。そのため、入力画像の動き情報の算出の際に、入力画像の前後の画像を反映させることが可能となる。したがって、入力画像の動き情報をさらに精度よく求めることが可能となる。
さらに、本実施例では、不適結果を除いた中領域動きベクトルを用いて2つの画像間の動きベクトルを算出する。また、このとき用いた中領域動きベクトルに応じて、得られる動きベクトルがどの時間における動きを示したものとなるかを設定する。そのため、不適結果を排除するとともに、動きベクトルが示す動きが生じた時間を厳密に設定することが可能となる。したがって、入力画像の動き情報をさらに精度よく求めることが可能となる。
なお、上記の例では、入力画像と1つ前の画像とから得られる動きベクトルと、入力画像と1つ後の画像とから得られる動きベクトルと、を用いて入力画像の動き情報を求めることとしたが、他の動きベクトルを用いて動き情報を求めることとしても構わない。例えば、入力画像の2つ前の画像と1つ前の画像から求められる動きベクトルを用いても構わないし、入力画像の1つ後の画像と2つ後の画像から求められる動きベクトルを用いても構わない。また、連続しない画像を用いて求めた動きベクトルを用いて、動き情報を算出しても構わない。
ただし、上記例のように、連続した画像である入力画像及び1つ前の画像から得られる動きベクトルと、同じく連続した画像である入力画像及び1つ後の画像から得られる動きベクトルと、を用いて入力画像の動き情報を求めることとすると、例えば2つの動きベクトルの重み係数を調整して平均化するだけで、容易かつ精度良く動き情報を求めることができる。また、入力画像の1つ後の画像が入力された時点で動き情報を算出することが可能となるため、出力画像の生成に著しい遅延が生じることを抑制することが可能となる。
また、入力画像以前の画像に対して求めた動き情報を、入力画像の動き情報を算出する際に利用しても構わない。即ち、過去に算出した動き情報を、動きベクトルと同様に扱っても構わない。
また、上記の例では、動き情報を算出する際に2つの動きベクトルを用いることとしたが、3つ以上としても構わない。例えば、k個の動きベクトルから動き線を求め、この動き線MLを用いて入力画像の動き情報を求めても構わない。この場合、横軸の値が入力画像の画像平均露光時間となるときの動き線MLの縦軸の値が、動きの大きさとなるように動き情報を設定しても構わない。さらに、過去に算出した動き情報を利用して動き線MLを求めても構わない。
また、動き線MLを動き情報の代わりに用い、上述したような歪み補正を行うこととしても構わない。この場合、動き線MLから入力画像の露光期間における動きの変化まで算出して歪み補正を行うこととしても構わない。
また、垂直方向や斜め方向に動きが発生する場合についても同様に、本実施例を適用することができる。例えば垂直方向に動きが発生する場合であれば、図10の縦軸が、垂直方向の動きベクトル及び動き情報の大きさを示すものに変わるだけである。また、斜め方向に動きが発生する場合、水平方向の動き情報と垂直方向の動き情報とを別々に算出して、それぞれの動き情報を用いて入力画像を補正することとしても構わない。
また、中領域を、画像を垂直方向に対してj個に等分割したそれぞれの領域としたが、等分割せずに中領域の大きさを異ならせても構わない。さらにこの場合、大きい中領域から得られる中領域動きベクトルの重みを重くして、他の中領域動きベクトルと平均化することにより、動きベクトルを算出しても構わない。
(第4実施例)
次に、歪み補正部61の第4実施例について図面を参照して説明する。図11は、第4実施例の歪み補正部の動作例について示すグラフであり、第3実施例について示した図10に相当するものである。なお、図11と図10とで同様となる部分には同一の符号を付してその詳細な説明については省略する。また、本実施例においても、歪み補正の対象となる入力画像がn番目の画像であり、水平方向の動きが発生する場合を例に挙げて説明する。
図11は、第3実施例の一例について示した図10と同様に、各画像が3つの中領域α〜γに等分割されるとともに中領域α〜γ毎に中領域動きベクトルが算出される場合について示したものである。また、本実施例の歪み補正部61は、動きベクトル算出部62が、第3実施例と同様の方法を用いて2つの画像の画像間の動きベクトルを求めるものとする。即ち、中領域動きベクトルを用いて動きベクトルを求める。また、不適結果を排除して、得られた中領域動きベクトルに応じて動きベクトルを算出する方法についても、第3実施例と同様のものとする。
本実施例について、具体的に、n−2番目の画像とn−1番目の画像とから求められる動きベクトルMAn-1.5と、n−1番目の画像とn番目の画像とから求められる動きベクトルMAn-0.5とを用いて、n番目の画像の動き情報Inを算出する場合を例に挙げて以下説明する。なお、動きベクトルMAn-1.5は、n−2番目の画像の中領域αn-2及びn番目の画像の中領域αn-1から得られた中領域動きベクトルと、n−2番目の画像の中領域βn-2及びn−1番目の画像の中領域βn-1から得られた中領域動きベクトルと、n−2番目の画像の中領域γn-2及びn−1番目の画像の中領域γn-1から得られた中領域動きベクトルと、を用いて得られる動きベクトルとする。また、動きベクトルMAn-0.5は、n−1番目の画像の中領域αn-1及びn番目の画像の中領域αnから得られた中領域動きベクトルのみから求められる動きベクトルとし、n−1番目の画像の中領域βn-1及びn番目の画像の中領域βnと、n−1番目の画像の中領域γn-1及びn番目の画像の中領域γnと、からはそれぞれ不適結果が出力されたものとする。
上記のように、第3実施例と同様の方法により動きベクトルMAn-1.5及びMAn-0.5が求められる。例えば、不適結果を除外して得られたそれぞれの中領域動きベクトルを平均化することによって得られる。
この場合、動きベクトルMAn-1.5は、中領域αn-2及びαn-1と、中領域βn-2及びβn-1と、中領域γn-2及びγn-1とからそれぞれ得られた中領域動きベクトルの大きさを平均化した大きさを有するものとなる。さらに、動きベクトルMAn-1.5は、例えば、中領域αn-2及びαn-1のそれぞれの露光期間と、中領域βn-2及びβn-1のそれぞれの露光期間と、中領域γn-2及びγn-1のそれぞれの露光期間と、を平均した時間(それぞれの中領域平均露光時間を平均した時間、即ち、n−2番目の画像の画像平均露光時間とn−1番目の画像の画像平均露光時間との平均時間)の動きを示すものと考えることができる。
一方、動きベクトルMAn-0.5は、中領域βn-1及びβnから得られる結果と中領域γn-1及びγnから得られる結果とが不適結果となり除外されるため、中領域αn-1及びαnから得られる中領域動きベクトルのみを用いて算出される。動きベクトルが中領域動きベクトルを平均化して得られるものである場合、動きベクトルMAn-0.5と、中領域αn-1及びαnから得られる中領域動きベクトルとは同様のものとなる。具体的には、動きベクトルMAn-0.5が示す動きの大きさが、中領域αn-1及びαnから得られる中領域動きベクトルが示す動きの大きさと略等しいものとなる。また、動きベクトルMAn-0.5は、中領域αn-1及びαnのそれぞれの露光期間を平均した時間(即ち、それぞれの中領域平均露光時間の平均時間)の動きを示すものと考えることができる。
動き情報算出部63は、動きベクトルMAn-1.5及びMAn-0.5を用いて動き情報Inを推測することにより、動き情報Inを求める。例えば、動きベクトルMAn-1.5及びMAn-0.5より動き線MLを推測するとともに、横軸の値がn番目の画像の画像平均露光時間となるときの動き線MLの値が、動きの大きさとなるように動き情報Inを設定する。
そして、補正処理部64が、得られた動き情報Inを用いて入力画像の補正を行うことで、歪みが低減された出力画像が得られる。
歪みを低減する効果については第1〜第3実施例と同様である。即ち、図8に示したように、入力画像の画像平均露光時間における動きを示す動き情報を用いて歪みの補正を行うため、入力画像を精度よく補正することが可能となる。
また、本実施例は第2実施例と同様に、入力画像以前の画像を用いて算出した動きベクトルを用いて入力画像の動き情報を算出することとしている。そのため、入力画像の動き情報を算出する際に、入力画像より後の画像が不要となる。したがって、第1及び第3実施例に示したように、入力画像よりも後の画像が歪み補正部61に入力された後に出力画像の生成が開始されることを抑制することが可能となる。即ち、出力画像の生成を迅速に行うことが可能となる。
さらに、第3実施例と同様に、不適結果を排除した中領域動きベクトルを用いて2つの画像間の動きベクトルを算出するとともに、得られた中領域動きベクトルに応じて動きベクトルが示す動きが生じた時間を設定する。そのため、不適結果を排除するとともに、動きベクトルが示す動きが生じる時間を厳密に設定することが可能となる。したがって、入力画像の動き情報をさらに精度よく求めることが可能となる。
なお、上記の例では、入力画像の2つ前の画像と1つ前の画像とから得られる動きベクトルと、入力画像の1つ前の画像と入力画像とから得られる動きベクトルと、を用いて入力画像の動き情報を求めることとしたが、他の動きベクトルを用いて動き情報を求めることとしても構わない。例えば、入力画像の3つ前の画像と2つ前の画像から求められる動きベクトルを用いても構わない。また、連続しない画像を用いて求めた動きベクトルを用いて、動き情報を算出しても構わない。
ただし、上記例のように、連続した画像である入力画像の2つ前の画像及び1つ前の画像から得られる動きベクトルと、同じく連続した画像である入力画像及び1つ前の画像から得られる動きベクトルと、を用いて入力画像の動き情報を求めることとすると、入力画像と直前の2つの画像とを用いて動き情報を求めることとなる。そのため、計算量を低減するとともに精度良く動き情報を求めることができる。
また、入力画像よりも前の画像に対して求められた動き情報を、入力画像の動き情報を算出する際に利用しても構わない。即ち、過去に算出した動き情報を、動きベクトルと同様に扱っても構わない。
また、上記の例では、動き情報を算出する際に2つの動きベクトルを用いることとしたが、3つ以上としても構わない。例えば、k個の動きベクトルから動き線MLを求め、この動き線MLを用いて入力画像の動き情報を求めても構わない。
また、動き線MLを動き情報の代わりに用い、上述したような歪み補正を行うこととしても構わない。この場合、動き線MLから入力画像の露光期間中における動きの変化まで算出して歪み補正を行うこととしても構わない。
また、垂直方向や斜め方向に動きが発生する場合についても同様に、本実施例を適用することができる。例えば垂直方向に動きが発生する場合であれば、図11の縦軸が、垂直方向の動きベクトル及び動き情報の大きさを示すものに変わるだけである。また、斜め方向に動きが発生する場合、水平方向の動き情報と垂直方向の動き情報とを別々に算出して、それぞれの動き情報を用いて入力画像を補正することとしても構わない。
また、中領域を、画像を垂直方向に対してj個に等分割したそれぞれの領域としたが、等分割せずに中領域の大きさを異ならせても構わない。さらにこの場合、大きい中領域から得られる中領域動きベクトルの重みを重くして、他の中領域動きベクトルと平均化することにより、動きベクトルを算出しても構わない。
(第5実施例)
次に、歪み補正部61の第5実施例について図面を参照して説明する。図12は、第5実施例の歪み補正部の動作例について示すグラフであり、第3実施例について示した図10や第4実施例について示した図11に相当するものである。なお、図12と図10及び図11とで同様となる部分には同一の符号を付してその詳細な説明については省略する。また、本実施例においても、歪み補正の対象となる入力画像がn番目の画像であり、水平方向の動きが発生する場合を例に挙げて説明する。
図12は、第3実施例の一例について示した図10や第4実施例の一例について示した図11と同様に、各画像が3つの中領域α〜γに等分割されるとともに中領域α〜γ毎に中領域動きベクトル(図12中の白塗りの星)が算出される場合について示したものである。また、本実施例の歪み補正部61は、動きベクトル算出部62が、第3及び第4実施例と同様の方法を用いて2つの画像の中領域動きベクトルを求める。しかしながら、動きベクトル算出部62が、この中領域動きベクトルを動き情報算出部63に出力するとともに、動き情報算出部63が、中領域動きベクトルを直接的に用いて動き情報を算出する点について、第3及び第4実施例とは異なる。
本実施例について、具体的に、n−1番目の画像の中領域αn-1及びn番目の画像の中領域αnから得られた中領域動きベクトルMBαn-0.5と、n−1番目の画像の中領域βn-1及びn番目の画像の中領域βnから得られた中領域動きベクトルMBβn-0.5と、n−1番目の画像の中領域γn-1及びn番目の画像の中領域γnから得られた中領域動きベクトルMBγn-0.5と、を用いて、n番目の画像の動き情報Inを算出する場合を例に挙げて以下説明する。なお、本例では、上記のそれぞれの中領域動きベクトルの算出時に、不適結果が出力されなかったものとする。
上述のように、中領域動きベクトルMBαn-0.5は、例えば中領域αn-1及びαnのそれぞれの中領域平均露光時間の平均時間の動きを示すものと考えることができる。同様に、中領域動きベクトルMBβn-0.5は、例えば中領域βn-1及びβnのそれぞれの中領域平均露光時間の平均時間の動きを示すものと考えることができ、中領域動きベクトルMBγn-0.5は、例えば中領域γn-1及びγnのそれぞれの中領域平均露光時間の平均時間の動きを示すものと考えることができる。
動き情報算出部63は、中領域動きベクトルMBαn-0.5、MBβn-0.5及びMBγn-0.5を用いて動き情報Inを推測することにより、動き情報Inを求める。例えば、中領域動きベクトルMBαn-0.5、MBβn-0.5及びMBγn-0.5より動き線MLを推測するとともに、横軸の値がn番目の画像の画像平均露光時間となるときの動き線MLの縦軸の値が、動きの大きさとなるように動き情報Inを設定する。
そして、補正処理部64が、得られた動き情報Inを用いて入力画像の補正を行うことで、歪みが低減された出力画像が得られる。
歪みを低減する効果については第1〜第4実施例と同様である。即ち、図8に示したように、入力画像の画像平均露光時間における動きを示す動き情報を用いて歪みの補正を行うため、入力画像を精度よく補正することが可能となる。
また、入力画像以前の画像を用いて算出した中領域動きベクトルを用いて入力画像の動き情報を算出することとしている。そのため第2及び第4実施例と同様に、入力画像の動き情報を算出する際に、入力画像より後の画像が不要となる。したがって、第1及び第3実施例に示したように、入力画像よりも後の画像が歪み補正部61に入力された後に出力画像の生成が開始されることを抑制することが可能となる。即ち、出力画像の生成を迅速に行うことが可能となる。
さらに本実施例は、2つの画像間の動きについて動きベクトルよりも時間的に細かく表す中領域動きベクトルを用いて、動き情報を算出する。そのため、入力画像の動き情報をさらに精度よく求めることが可能となる。
なお、上記の例では、入力画像の1つ前の画像及び入力画像のそれぞれの中領域から得られる3つの中領域動きベクトルを用いて、入力画像の動き情報を求めることとしたが、これらの中から選択した少なくとも2つの中領域動きベクトルを用いて動き情報を求めても構わない。また、第3及び第4実施例と同様に、不適結果を除外しても構わない。
また、他の組み合わせとなる2つの画像のそれぞれの中領域から得られる中領域動きベクトルを用いて動き情報を求めることとしても構わない。例えば、入力画像の2つ前の画像と1つ前の画像のそれぞれの中領域から求められる中領域動きベクトルを用いても構わない。また、連続しない画像の中領域から求められる中領域動きベクトルを用いて、動き情報を算出しても構わない。
ただし、上記例のように、入力画像の1つ前の画像及び入力画像のそれぞれの中領域から得られる中領域動きベクトルを用いて入力画像の動き情報を求めることとすると、入力画像と直前の1つの画像とを用いて動き情報を求めることとなる。そのため、計算量を低減するとともに精度良く動き情報を求めることができる。
また、入力画像よりも前の画像に対して求められた動き情報を、入力画像の動き情報を算出する際に利用しても構わない。また、k個の中領域動きベクトルから動き線MLを求め、この動き線MLを用いて入力画像の動き情報を求めても構わない。
また、動き線MLを動き情報の代わりに用い、上述したような歪み補正を行うこととしても構わない。この場合、動き線MLから入力画像の露光期間における動きの変化まで算出して歪み補正を行うこととしても構わない。
また、垂直方向や斜め方向に動きが発生する場合についても同様に、本実施例を適用することができる。例えば垂直方向に動きが発生する場合であれば、図11の縦軸が、垂直方向の動きベクトル及び動き情報の大きさを示すものに変わるだけである。また、斜め方向に動きが発生する場合、水平方向の動き情報と垂直方向の動き情報とを別々に算出して、それぞれの動き情報を用いて入力画像を補正することとしても構わない。
また、中領域を、画像を垂直方向に対してj個に等分割したそれぞれの領域としたが、等分割せずに中領域の大きさを異ならせても構わない。
また、第3実施例と本実施例とを組み合わせても構わない。例えば、第3実施例において、得られた中領域動きベクトルを用いて2つの画像間の動きベクトルを求めずに、本実施例のように中領域動きベクトルを直接的に用いて入力画像の動き情報を算出することとしても構わない。
<動画撮像中の静止画撮像への適用>
上述の歪み補正部61の各実施例の説明では、歪み補正部61が、動画の撮像時または静止画の撮像時に歪み補正を行うものとしたが、動画撮像中の静止画撮像により得られる静止画の画像に対しても適用することが可能である。動画撮像中の静止画撮像とは、動画の撮像中に静止画の撮像を割り込んで行うものであり、動画及び静止画の両方を同時に得るものである。以下、この動画撮像中の静止画撮像により得られる静止画に対して歪み補正部61が歪み補正を施す場合について、図面を参照して説明する。
最初に、動画撮像中の静止画撮像の例について図13及び図14を参照して説明する。図13及び図14のそれぞれは、動画撮像中の静止画撮像の露光タイミングの一例について示した図である。また図13及び図14では、動画を構成するそれぞれの画像(以下、静止画の画像と区別するためフレームと呼ぶ)が、所定のフレームレート(例えば30fps(Frame Per Second))が実現されるようにF秒(例えば30fpsであれば1/30秒)の周期で連続的に撮像されて得られる場合について示している。また、図13及び図14では、それぞれのフレームの露光期間を、周期F秒と略等しくする場合について示している。
このとき、静止画の撮像を行う指示が入力されれば(例えば操作部17の一部であるシャッタボタンが押下されれば)、フレームの撮像に代えて、任意の露光期間t(図13に示す例ではt=1/60秒、図14に示す例ではt=1/24秒)で静止画S1,S2の撮像を行う。なお、静止画S1,S2の撮像を開始するタイミングは、フレームの撮像を開始するタイミングと同じものとなり、終了するタイミングは、露光期間tによって異なるものとなる。また、静止画S1,S2の露光期間tが長くなるほど、代わりに撮像されないフレームが多くなる。
図13及び図14中、周期及びそれぞれのフレームの露光期間を破線で示し、図示するそれぞれの周期を順にf−3、f−2、f−1、f、f+1、f+2、f+3とする。また、周期f−3〜f+3に撮像されて得られるフレームをそれぞれn−3〜n+3とし、静止画撮像が行われなければ周期f−3〜f+3においてフレームn−3〜n+3がそれぞれ撮像により生成されることとなる。
図13は、周期(F=1/30秒)fの開始時から、ある露光期間t(t=1/60秒)で静止画S1の撮像を行う場合について示している。本例の場合、静止画S1の露光期間の終了時は周期f内となる。そのため、周期fではフレームの撮像が行われないこととなる。
このとき、静止画S1の撮像のために撮像されなかったフレーム(フレームn)を補填するために、代替フレーム(代替フレームn)を生成する。本例の代替フレームnとして、例えば静止画S1を用いても構わないし、前後のフレーム(例えばフレームn−1,n+1)を補間することにより生成しても構わない。また、前後のフレーム(例えばフレームn−1,n+1)のいずれかのコピーを用いても構わない。
図14は、周期(F=1/30秒)fの開始時から、ある露光期間t(t=1/24秒)で静止画S2の撮像を行う場合について示している。本例の場合、露光期間tの終了時は周期f+1内となる。そのため、周期f,f+1ではフレームの撮像が行われないこととなる。
このとき、図13と同様に代替フレームn,n+1を生成しても構わない。代替フレームn,n+1として、静止画S2を用いても構わないし、前後のフレーム(例えばフレームn−1,n+2)を補間することにより生成しても構わない。また、前後のフレーム(例えばフレームn−1,n+2)のいずれかのコピーを用いても構わない。さらに、代替フレームn,n+1を補間やコピーなどで生成する場合、静止画S2を用いて生成した代替フレームnまたは代替フレームn+1を用いても構わない。
以上のようにして、動画撮像中の静止画撮像を行い、撮像により生成した静止画S1,S2に対して、上述した第1〜第5実施例の歪み補正部61が歪み補正を施す。具体的に本例では、動きベクトル算出部62が第1画像及び第2画像に相当するフレーム(代替フレームを含み得る)を用いて動きベクトルを算出し、動き情報算出部63が入力画像に相当する静止画S1,S2の動き情報を算出し、補正処理部64が静止画S1,S2の歪み補正を行うことで出力画像を生成する(図2参照)。
ところで、通常のフレーム(代替フレームを除く)のみから算出される動きベクトルは、上述した算出方法を用いて同様に算出することが可能である。例えば、図13においてフレームn−2とフレームn−1とから上述の算出方法と同様にして算出される動きベクトルは、動きベクトルMn-1.5となり、二つのフレームn−2,n−1間(画像間)の動きを示すものとなる。
一方、静止画S1,S2をそのまま用いた代替フレームを用いた場合であっても、動きベクトルを算出することは可能である。ただし、代替フレームに用いられる静止画S1,S2の露光期間tに応じて、算出される動きベクトルが示す動きの時間が変化したものとなる。
上述のように、動きベクトルは、2つのフレームの露光期間の平均時間(2つのフレームの画像平均露光時間の平均時間)の動きを示すものである。そのため、例えば図13において代替フレームnが静止画S1であり、フレームn−1と代替フレームnとから動きベクトルを算出する場合、当該動きベクトルは、フレームn−1の露光期間の平均時間と、静止画S1の露光期間tの平均時間と、の平均時間の動きを示すものとなる。即ち、算出される動きベクトルを上述と同様の方法で表現すると、Mn-0.75+t/4Fとなる。また、代替フレームが前後のフレームをコピーして生成されたものであったり、補間によって算出されたものであったりしても、同様にそれぞれの露光期間(画像平均露光時間)を考慮して算出することができる。なお、コピーや補間によって算出される代替フレームを動きベクトルの算出に用いないこととしても構わない。
また、上述した歪み補正部61の第1〜第5実施例と同様に、本例でも動きベクトルを用いて動き情報を算出することができる。例えば、図13に示す例に対して、第1実施例の歪み補正部61の処理を適用する場合、フレームn−1及び代替フレームn(静止画S1)から算出される動きベクトルMn-0.75+t/4Fと、代替フレームn(静止画S1)及びフレームn+1から算出される動きベクトルMn+0.25+t/4Fと、を用いて、静止画S1の動き情報In-0.5+t/2Fを算出しても構わない。
同様に、図13に示す例に対して、第2実施例の歪み補正部61の処理を適用する場合、フレームn−3及びフレームn−2から算出される動きベクトルMn-2.5と、フレームn−2及びフレームn−1から算出される動きベクトルMn-1.5と、フレームn−1及び代替フレームn(静止画S1)から算出される動きベクトルMn-0.75+t/4Fと、を用いて、静止画S1の動き情報In-0.5+t/2Fを算出しても構わない。
また、例えば図14に示す例に対して、第1実施例の歪み補正部61の処理を適用する場合、フレームn−1及び代替フレームn+1(静止画S2)から算出される動きベクトルMn-0.75+t/4Fと、代替フレームn+1(静止画S2)及びフレームn+2から算出される動きベクトルMn+0.75+t/4Fと、を用いて、静止画S2の動き情報In-0.5+t/2Fを算出しても構わない。
同様に、図14に示す例に対して、第2実施例の歪み補正部61の処理を適用する場合、フレームn−2及びフレームn−1から算出される動きベクトルMn-1.5と、フレームn−1及び代替フレームn+1(静止画S2)から算出される動きベクトルMn-0.75+t/4Fと、を用いて、静止画S2の動き情報In-0.5+t/2Fを算出しても構わない。
以上のように構成すると、動画撮像中の静止画撮像によって得られる静止画S1,S2に対しても、画像平均露光時間における動きを示す動き情報を算出することが可能となり、当該動き情報を用いて歪みの補正を行うことが可能となる。したがって、静止画S1,S2の歪みを精度よく補正することが可能となる。
なお、上述の静止画S1,S2の動き情報In-0.5+t/2Fの算出方法は一例に過ぎず、上記以外の動きベクトルの組み合わせから当該動き情報In-0.5+t/2Fを算出しても構わない。
また、複数の動きベクトルから動き線ML(図7、図9〜図12参照)を算出し、静止画S1,S2の画像平均露光時間n−0.5+t/2Fとなるときの動き線MLの値を算出することで、動き情報In-0.5+t/2Fを算出しても構わない。例えば、通常のフレームを用いた動きベクトルから動き線MLを算出し、可変の時間である静止画S1,S2の画像平均露光時間n−0.5+t/2Fにおける動き情報In-0.5+t/2Fを算出することとすると、容易に動き情報を算出することが可能となる。
また、静止画S2のように露光期間が長くなる静止画の歪み補正を行う場合に、歪み補正部61の第1実施例(図7)に示したような静止画の露光期間の前後の時間の動きを示す動きベクトルを用いて、当該静止画の動き情報を算出することとしても構わない。このように動き情報を算出することとすると、露光期間が長くなることによる画像平均露光時間の動き情報の算出精度の低下を抑制し、精度よく歪み補正を行うことが可能となるため、好ましい。
また、静止画S1,S2の露光期間に応じて、適用する歪みの補正方法を切り替えても構わない。特に、静止画の露光期間が所定の長さ以上となる場合に、静止画の露光期間の前後の時間の動きを示す動きベクトルを用いて動き情報を算出するように算出方法を切り替える構成とすると、好ましい。
<静止画連続撮像への適用>
上述の各実施例の歪み補正部61は、静止画連続撮像により得られる複数の静止画のそれぞれに対しても、歪み補正を施すことが可能である。最初に、静止画連続撮像について図面を参照して説明する。図15は、静止画連続撮像の露光タイミングの一例について示した図である。なお、上述の動画撮像中の静止画撮像において説明したように、露光開始のタイミングは所定の周期となるが、静止画の露光期間tは任意とすることができるものとする。図15に示す例は、等しい露光期間t(例えばt=1/60秒)かつ等しい周期F(例えばF=1/30秒)で、連続的に複数の静止画S(m)〜S(m+4)を撮像して得る場合について示したものである。
本例では、動きベクトル算出部62が第1画像及び第2画像に相当する静止画(原則的に静止画であるが、場合によっては他の画像も含み得る。詳細については後述)を用いて動きベクトルを算出し、動き情報算出部63が入力画像に相当する静止画の動き情報を算出し、補正処理部63が入力画像に相当する静止画の歪み補正を行いそれぞれの出力画像を生成する(図2参照)。なお、すべての静止画の露光期間t及び周期Fが等しいものであれば、二つの静止画を比較して算出される動きベクトルMm+0.5〜Mm+3.5と動き情報Im〜Im+3との相対的な関係が、図7、図9〜図12に示す歪み補正部61の第1〜第5実施例と同様のものとなる。そのため、上述の歪み補正部61の第1〜第5実施例と同様の方法を直接的に適用することができる。また、静止画の露光期間tなどを異ならせる場合は、動画撮像中の静止画撮像の説明でも述べたように、それぞれの露光期間(画像平均露光時間)を考慮して動きベクトルや動き情報を算出すればよい。
このように構成すると、静止画連続撮像によって得られる静止画のそれぞれに対しても、画像平均露光時間における動きを示す動き情報を算出することが可能となり、当該動き情報を用いてそれぞれの静止画の歪みの補正を行うことが可能となる。したがって、連続的に撮像して得られる複数の静止画の歪みを精度よく補正することが可能となる。
ところで、歪み補正部61の第1実施例の処理を図15に示す静止画S(m)〜S(m+4)の全てに施そうとする場合、最初に撮像される静止画S(m)や最後に撮像される静止画S(m+4)は、それぞれ前後の一方の静止画が存在せず前後の一方の動きベクトルを算出することができないため、動き情報を算出することができず歪み補正を施すことができない。一方、歪み補正部61の第2実施例の処理を全ての静止画S(m)〜S(m+4)に施そうとする場合、静止画S(m)及び静止画S(m+1)は、その前の少なくとも二つの動きベクトルを算出することができないため、動き情報を算出することができず歪み補正を施すことができない。第3及び第4実施例を施そうとする場合も同様である。また、最小で2枚の画像から動き情報を算出して歪み補正を施すことができる歪み補正部61の第5実施例であっても、当該2枚の画像中の先の画像(特に、静止画S(m))については動き情報を算出することができず、歪み補正を施すことができない。
この問題については、例えば以下に示す構成とすることで、歪み補正部61の第1〜第5実施例のいずれの処理を施す場合であっても静止画S(m)〜S(m+4)の全てに歪み補正を施すことが可能となる。なお、以下において説明する各構成は静止画S(m)〜S(m+4)を対象としたものであるが、静止画連続撮像にのみ適用され得るものではなく、上述の第1〜第5実施例の歪み補正部61に対しても適用可能である。
(メモリ記憶)
本例の構成では、最初に撮像される静止画S(m)の前に撮像された画像をメモリ16に一時的に記憶する構成とすることで、上記の動きベクトル及び動き情報の算出を可能とする。メモリ16に一時的に記憶する画像として、例えばスルー画像(撮像されている画像の画角をユーザが確認するためにモニタ等に表示する記録対象としない画像)を用いても構わない。
このように構成すると、最初に撮像される静止画S(m)の歪み処理が可能になる。また、静止画連続撮像前のプレビュー時に通常撮像され得るスルー画像を動きベクトル及び動き情報の算出に利用する場合、当該スルー画像を記憶するだけで済むため、容易に歪み補正を実行することが可能となる。
なお、撮像して得られる画像を、動きベクトル及び動き情報を算出するために必要となる枚数(例えば、3枚)だけメモリ16に保持する構成とし、新たな画像を撮像して得るごとに古い画像を更新する(即ち、サイクリックに記憶する)こととしても構わない。このように構成すると、回路規模の増大化を防ぐことができるため、好ましい
また、適用する歪み補正の方法によっては、最後に撮像される静止画S(m+4)の後に撮像された画像が必要となる場合があるが、この場合も同様であり、静止画S(m+4)の撮像後に撮像されるスルー画像などの画像をメモリ16に一時的に記憶し、これを用いて動きベクトル及び動き情報を検出することとしても構わない。
(静止画数の削減)
本例の構成では、歪み補正処理を行うために必要となる動き情報を算出することができない静止画を、記録対象としない。そのため、例えば図15に示す例において、静止画連続撮像で得られる最初の静止画を静止画S(m)とせず、これより前の図示しない静止画S(m−1)とする。また例えば、静止画撮像で得られる最後の静止画を静止画S(m+4)とせず、これより後の図示しない静止画S(m+5)とする。
このように構成すると、等しい条件で撮像された画像を比較して動きベクトル及び動き情報を算出することが可能となる。そのため、動きベクトル及び動き情報の算出精度の向上や算出方法の容易化を図ることが可能となる。
(他の動きベクトルを用いて動き情報を推定)
本例の構成では、動き情報の算出ができない静止画S(m)について、他の動きベクトルを用いて動き情報を推定する。即ち、上述の歪み補正部61の第2実施例(図9参照)と同様の方法であるが、未来方向だけでなく過去方向の動き情報の推定をも行い得る点で異なる。
このように構成すると、動きベクトルや動き情報を算出するために必要となる画像の数を抑制することができる。なお、算出された動きベクトルに基づいて動き線MLを算出し、これに適宜静止画の画像平均露光時間を代入することで、それぞれの動き情報を算出しても構わない。
<補正の程度の調整>
これまでは、歪み補正部61が、単純に動き情報に基づいて入力画像の歪みを補正するものであるとして説明してきた。これに対して以下では、補正の程度を調整可能とする歪み補正部について説明する。なお、以下では説明をより明確にするために、歪み補正部による歪み補正の大きさ(補正により入力画像を歪ませる大きさ)を示すものとして「補正量」を定義する。
まず、本例の歪み補正部の構成について、図面を参照して説明する。図16は、補正の程度を調整して歪み補正を行う歪み補正部の構成について示すブロック図であり、歪み補正部61の基本構成について示した図2に相当するものである。なお、図16において図2と同様となる部分については同じ符号及び名称を付し、その詳細な説明については省略する。
図16に示すように、本例の歪み補正部61aは、動きベクトル算出部62と、動き情報算出部63と、画像情報に基づいて補正量調整値を算出して補正量調整値情報を出力する補正量調整値算出部65と、動き情報に基づいて算出した補正量を補正量調整値に基づいて調整して調整後の補正量だけ入力画像の歪みを補正して出力画像を生成する補正処理部64aと、を備える。
画像情報とは、第1画像及び第2画像や入力画像など(以下、単に「画像」とも呼ぶ)の種々の状態を示す情報である。例えば、画像が撮像された際の撮像部2の状態(例えば、光学ズーム倍率)を示す情報を含むこととしても構わないし、画像自体の状態(例えば、画像のコントラスト値や画像中の移動物体の有無など)を示す情報を含むこととしても構わない。画像情報は、例えば、撮像部2を制御するCPU15から出力されたり、画像を解析する画像処理部6の一部から出力されたりして、補正量調整値算出部65に入力される。
また、図2に示す歪み補正部61の構成を動画撮像中の静止画撮像に適用する場合や静止画連続撮像に適用する場合について、図2に示す第1画像及び第2画像や入力画像と撮像されて得られる各種画像との対応関係を示してそれぞれ説明したが、図16に示す歪み補正部61aをそれぞれに適用する場合においても同様の対応関係とする。即ち、図16に示す歪み補正部61aも、図2に示す歪み補正部61と同様に動画撮像中の静止画撮像や静止画連続撮像に適用することが可能である。
次に、歪み補正部61aの動作について、図面を参照して説明する。図17は、補正の程度を調整して歪み補正を行う歪み補正部の基本動作について示すフローチャートであり、歪み補正部61の基本動作について示した図3に相当するものである。なお、図3と同様に図17も1つの入力画像の歪みを補正して1つの出力画像が生成されるまでの動作を表したものである。そのため、例えば出力画像が動画となる場合や複数の静止画となる場合であれば、図17に示す動作が繰り返し行われることとなる。
図17に示すように、最初に図2と同様に動きベクトルを算出し(STEP1)、算出された当該動きベクトルに基づいて動き情報を算出する(STEP2)。ただし、本例の歪み補正部61aでは、画像情報に基づいて補正量調整値を算出し(STEP31)、当該補正量調整値に基づいて調整した補正量を用いて入力画像の歪みを補正して出力画像を生成する(STEP32)。
このように構成すると、補正処理部64aが、動き情報に基づいて算出した補正量を補正量調整値で調整し、当該調整後の補正量を用いて入力画像の歪みを補正することとなる。さらに、補正量調整値算出部65は、画像情報に応じて補正量調整値を算出する。そのため、画像情報に基づいて誤補正や過補正が頻発しやすい状態や補正の効果が得がたい状態であることが予想される場合に、補正量調整値を制御して補正量を抑制することが可能となる。したがって、かえって歪んだ出力画像が生成されたり、電力消費や演算コストが無駄になったりすることを抑制することが可能となる。
補正量及び補正処理方法の詳細、補正量調整値の算出方法及び補正量の抑制方法の詳細について、以下に具体例を挙げて説明する。
(補正量及び補正処理方法)
最初に、補正量及び補正処理方法の具体例について、図面を参照して説明する。図18〜図22のそれぞれは、補正量と当該補正量をそのまま用いて歪み補正を行う歪み補正処理方法との具体例を示した図であり、補正処理方法の一例について示した図4〜図6とは異なる例を示したものである。なお、図18〜図22のそれぞれは、動き情報に基づいて算出された補正量が正しいものである場合を示したものであり、補正量の調整は行われていないものであることに留意されたい。
図18〜図22中に示す被写体T1は、上述したものと同様の垂直方向に伸びた物体であり、かつ静止しているものである。図18は、入力画像100の露光期間中に撮像装置1が静止していたために、動き情報が0(静止)となる場合を示したものである。図19は、入力画像101の露光期間中に撮像装置1が右方に動いたために、動き情報が左方となる場合を示したものである。図20は、入力画像102の露光期間中に撮像装置1が左方に動いたために、動き情報が右方となる場合を示したものである。図21は、入力画像103の露光期間中に撮像装置1が上方に動いたために、動き情報が下方となる場合を示したものである。図31は、入力画像104の露光期間中に撮像装置1が下方に動いたために、動き情報が上方となる場合を示したものである。なお、説明の簡略化のために、図19〜図31のそれぞれに示す入力画像101〜104は、その撮像の際(入力画像の露光期間中)に撮像装置1に一様な動きが生じていたものとする。
図18〜図31の入力画像100〜104は、イメージセンサ3から得られる画像の画角と略等しいものである。出力画像200〜204は、入力画像100〜104の一部の領域(例えば、入力画像100〜104の中央の領域)を示す画像である。
また上述の通り、動き情報は、入力画像100〜104の画像平均露光時間における歪み(入力画像100〜104の垂直方向の中央における画素列の歪みとも解釈し得る)を示すものとなる。一方、補正量は、入力画像100〜104の画素列ごとの歪みの大きさを示すものであり、画素列ごとに算出される。
補正量は、動き情報の大きさに基づいて算出されるものであり、水平方向の成分Dhと、垂直方向の成分Dvとを有する。また、補正量Dh,Dvは絶対値(0以上の値)で表される。例えば図18に示す場合では、算出される動き情報が0となるため、補正量も0となる。一方、図18〜図31に示すそれぞれの場合では、算出される動き情報が0ではないため、当該動き情報に応じた大きさとなる補正量がそれぞれ算出される。
また、入力画像100〜104中で、露光タイミングが最も早い上端の画素列tを基準とし、当該画素列tにおける補正量Dh(t),Dv(t)をそれぞれ0とする。また、図19〜図31のように、露光期間中に撮像装置1に一様な動きが生じた場合の入力画像101〜104における補正量は、下方の画素列のものほど比例して大きいものとなる。具体的に例えば、露光期間中に撮像装置1に水平方向の動きが生じた場合の図19及び図20の入力画像101,102では、露光タイミングが最も遅い下端の画素列bにおける補正量の水平成分Dh(b)が最大となる。一方、露光期間中に撮像装置1に垂直方向の動きが生じた場合の図21及び図31の入力画像103,104では、下端の画素列bにおける補正量の垂直成分Dv(b)が最大となる。
図18に示す入力画像100のように、動き情報及び補正量が0であれば、入力画像100の一部(好ましくは中央部)の領域である出力画像領域110内の画像をそのまま読み出す(切り出す)だけで、出力画像200を得ることができる。出力画像領域110は、左上の画素位置が[0,0]、左下の画素位置が[0,n]、右上の画素位置が[m,0]、右下の画素位置が[m,n]となる(m,nは自然数)。また、出力画像200〜204の画素位置も同様に表現する。即ち、出力画像領域110及び出力画像200〜204は、水平方向にm+1個、垂直方向にn+1個の画素を備えたものとなる。
一方、図19〜図31に示すように入力画像101〜104に歪みが生じている場合、出力画像領域110の画像をそのまま読み出した場合、当該読み出して得られる画像は歪んだものとなる。そこで、算出した補正量に応じて画素列毎に出力画像領域110を歪ませた歪み出力画像領域111〜114内の画素を読み出す(即ち、入力画像101〜104中の歪み画像領域111〜114内の画像を、補正量を打ち消すように逆に歪ませる)ことで、歪みを補正した出力画像201〜204を得る。
図19〜図31の入力画像101〜104のそれぞれに設定される歪み出力画像領域111〜114について具体的に説明する。なお、以下の説明において、出力画像領域110内の任意の画素列jに属する画素に対して算出される補正量の水平成分をDh(j)、垂直成分をDv(j)で表す(jは0≦j≦nを満たす整数)。
図19に示すように、左方向の動き情報が算出される場合、歪み出力画像領域111を、出力画像領域110のそれぞれの画素列jに属する画素位置を、補正量の水平成分Dh(j)だけ左方に移動させた領域とする。即ち、画素位置[−Dh(j),j]〜[m−Dh(j),j](0≦j≦n)の領域とする。そして、画素位置[−Dh(j),j]〜[m−Dh(j),j]の画素を、出力画像201の画素列jの画素として読み出す。
また、図20に示すように、右方向の動き情報が算出される場合、歪み出力画像領域112を、出力画像領域110のそれぞれの画素列jに属する画素位置を、補正量の水平成分Dh(j)だけ右方に移動させた領域とする。即ち、画素位置[Dh(j),j]〜[m+Dh(j),j](0≦j≦n)の領域とする。そして、画素位置[Dh(j),j]〜[m+Dh(j),j]の画素を、出力画像202の画素列jの画素として読み出す。
また、図21に示すように、下方向の動き情報が算出される場合、歪み出力画像領域113を、出力画像領域110のそれぞれの画素列jに属する画素位置を、補正量の垂直成分Dv(j)だけ下方に移動させた領域とする。即ち、画素位置[0,j+Dv(j)]〜[m,j+Dv(j)](0≦j≦n)の領域とする。そして、画素位置[0,j+Dv(j)]〜[m,j+Dv(j)]の画素を、出力画像203の画素列jの画素として読み出す。
また、図21に示すように、上方向の動き情報が算出される場合、歪み出力画像領域114を、出力画像領域110のそれぞれの画素列jに属する画素位置を、補正量の垂直成分Dv(j)だけ上方に移動させた領域とする。即ち、画素位置[0,j−Dv(j)]〜[m,j−Dv(j)](0≦j≦n)の領域とする。そして、画素位置[0,j−Dv(j)]〜[m,j−Dv(j)]の画素を、出力画像204の画素列jの画素として読み出す。
なお、入力画像100〜104の全体を歪ませて出力画像を生成しても構わない。しかし、図18〜図22に示すように、入力画像101〜104の一部の領域(出力画像領域101または歪み出力画像領域111〜114)を読み出し(切り出し)て、出力画像201〜204を生成する構成とすると、歪み補正により出力画像201〜204が欠けることを抑制することができるため、好ましい。
また、図18〜図22では、出力画像領域110または歪み出力画像領域111〜114内の画素を読み出して出力画像200〜201を形成する例について示しているが、出力画像領域110または歪み出力画像領域111〜114の周囲の画素も含めて読み出し、出力画像200〜204の生成に利用しても構わない。
また、出力画像200〜204を生成するために読み出した画素に各種画像処理を施して、出力画像200〜204の画素数を、出力画像領域110または歪み出力画像領域111〜114内の画素数と異ならせても構わない。例えば、補間処理などを行って出力画像200〜204の画素数を増大させても構わないし、間引処理や画素加算などを行って出力画像200〜204の画素数を減少させても構わない。
また、算出される補正量の大きさを画素単位としても(即ち、Dh(j)及びDv(j)の大きさを整数としても)構わない。このように構成すると、読み出すべき画素が必ず存在することとなる。一方、算出される補正量の大きさを任意としても(即ち、Dh(j)及びDv(j)の大きさが整数以外の値を取り得るものとしても)構わない。この場合、読み出すべき画素の位置が小数値になるときは、当該位置に最も近い位置の画素を読み出したり、当該位置の周囲の画素を用いて当該位置の画素を算出したりしても構わない。
また、図19〜図22では、説明を簡単にするために、算出される動き情報の方向が水平方向及び垂直方向のいずれかである場合について示したが、斜め方向の動き情報が算出される場合も当然に発生し得る。この場合、水平方向及び垂直方向の両方向に対応する補正量の各成分Dh(j),Dv(j)をそれぞれ算出し、それぞれの方向に対して歪み補正が行うこととしても構わない。
また、図19〜図22では、入力画像101〜104の上端の画素列tを基準として、補正量Dh(t),Dv(t)を0としたが、例えば出力画像領域110の上端の画素列0を基準として、この画素列0の補正量Dh(0),Dv(0)を0としても構わない。
(補正量調整値の算出方法及び補正量の大きさの抑制方法)
上述のように本例の歪み補正部61aは、補正量調整値算出部65が画像情報に基づいて補正量調整値を算出する。そして、補正処理部64aが、補正量調整値に基づいて補正量の調整を行うことで補正の程度を調整する。
特に本例では、下記式(1)に示すように、補正量調整値(水平成分をKh,垂直成分をKvとする)を補正量Dh,Dvに乗算して、調整後の補正量(水平成分をSh、垂直成分をSvとする)を算出する。補正量調整値Kh,Kvは0以上1以下の値をとるものとし、補正量調整値Kh,Kvの値を小さいものとすることで、調整後の補正量Sh,Svを抑制する。なお、補正量調整値Kh,Kvを入力画像毎に算出しても構わないし、垂直方向の所定の領域毎に算出しても構わない。
また、種々の画像情報に基づく補正量調整値Kh,Kvの算出方法の具体例を、入力画像の状態毎に説明する。
[ズーム倍率]
最初に、入力画像を撮像した際のズーム倍率に基づいて、補正量調整値Kh,Kvを設定する場合について説明する。本例の場合、補正量調整値算出部65に入力される画像情報が、画像を撮像した撮像部2のレンズ部4のズーム倍率(光学)を示す情報となる。
本例では、補正量調整値算出部65が、画像情報によって示されるズーム倍率が小さいほど、補正量調整値Kh,Kvを小さくする、または0にする。
レンズ部4のズーム倍率が大きい(即ち、望遠撮像する)場合、撮像装置1の動きや被写体の動きに起因する歪みが大きくなりやすい。一方、レンズ部4のズーム倍率が小さい(即ち、広角撮像する)場合、これらの歪みが小さくなり目立ちにくくなりやすい。そのため、ズーム倍率を小さくしている場合に補正量Dh,Dvが大きくなれば、当該補正量Dh,Dvは誤って算出された可能性が高く、入力画像に誤補正や過補正となる歪み補正が施される場合が生じ得る。
また、ズーム倍率が小さければ歪みが小さく目立ちにくくなりやすいため、歪み補正を行ったとしても得られる効果は小さいものとなる。換言すると、補正量Dh,Dvを抑制して歪み補正を行ったとしても(または、歪み補正を行わなかったとしても)、好適な出力画像を得ることが可能である。
したがって、ズーム倍率が小さい場合には、補正量調整値Kh,Kvを小さくする、または0にする。これにより、入力画像に誤補正や過補正となる歪み補正が施されることを抑制したり、処理速度の迅速化や低消費電力化を図ったりすることが可能となる。
なお、補正量調整値算出部65が、図23及び下記式(2)に示すように補正量調整値Kh,Kvを算出することとしても構わない。図23は、ズーム倍率に応じた補正量調整値の設定方法を示すグラフである。図23及び下記式(2)に示すように、ズーム倍率zが0以上であり閾値thz1より小さい場合は、補正量調整値Kh,Kvを0にする。また、ズーム倍率zが閾値thz2以上である場合は、補正量調整値Kh,Kvを1とする。また、ズーム倍率zが閾値thz1以上であり閾値thz2より小さい場合は、ズーム倍率zに応じて補正量調整値Kh,Kvを漸増(例えば線形に増加)させた値とする。
[動き情報の信頼度]
次に、動き情報の信頼度に基づいて補正量調整値Kh,Kvを設定する場合について説明する。本例の場合、補正量調整値算出部65に入力される画像情報が、例えば画像処理部6の一部が画像を解析して算出する動き情報の信頼度となる。
上述のように、動き情報は動きベクトルを算出することによって算出される。そのため、動き情報の信頼度を、動きベクトルの算出精度と解釈することも可能である。そのため、例えば動きベクトルの算出精度に強く影響する画像のコントラスト値が大きい(例えば、画像内の輝度差が大きい、画像の明暗が明瞭となる)ほど、動き情報の信頼度が大きくなるように設定しても構わない。また例えば、動きベクトルの算出精度が良好であるほど、信頼度が大きくなるように設定しても構わない。なお、信頼度の算出方法の詳細については、具体例を挙げて後述する。
本例では、補正量調整値算出部65が、画像情報によって示される信頼度が小さいほど、補正量調整値Kh,Kvを小さくする、または0にする。
動き情報の信頼度が小さいことを示すものである場合、算出される補正量Dh,Dvが誤ったものとなる可能性が高くなる。そのため、状況によっては補正量Dh,Dvが異常に大きい値となって算出され、入力画像に誤補正や過補正となる歪み補正が施される場合が生じ得る。
したがって、本例では動き情報の信頼度が小さい場合に、補正量調整値Kh,Kvを小さくする、または0にする。これにより、入力画像に誤補正や過補正となる歪み補正が施されることを抑制したり、処理速度の迅速化や低消費電力化を図ったりすることが可能となる。
なお、信頼度を算出するために、複数の画像を比較して算出される動きベクトルの算出精度を用いても構わない。この場合の信頼度の算出方法について、図面を参照して説明する。図24は、動きベクトルの算出方法及びその算出精度の算出方法の一例を示す図である。
図24に示す動きベクトルの算出方法は、画像内の例えば6つの検出領域MA毎に検出領域動きベクトルMVを求め、これらを総合的に評価して(例えば平均化して)動きベクトルを算出する方法である。このとき、それぞれの検出領域動きベクトルMVのばらつきを算出することによって、算出精度(即ち、信頼度)を算出することができる。
上記のばらつきσは、例えば下記式(3)に示すようにして算出することができる。下記式(3)では、6つのそれぞれの動き検出領域MAから算出される検出領域動きベクトルをMViで示し、これらの動きベクトルMViを平均化した動きベクトルをMVmで示している。なお、ばらつきσが大きいほど信頼度を小さくし、ばらつきσが小さいほど信頼度を大きくする。
ばらつきσが大きくなる要因として、例えば画像中に移動物体が含まれる場合が挙げられる。この場合について、図25を参照して説明する。図25は、検出領域動きベクトルのばらつきが大きくなる場合の一例を示した図である。図25は、右下の検出領域MAにおいて、移動物体MOが右方から左方に向かって移動する場合について示したものである。このような場合、移動物体の影響を受けて、特定の(右下の)検出領域MAから算出される動きベクトルが、他の検出領域MAから算出される動きベクトルと比較して異常なものとなる。そのため、上記のばらつきσが大きくなり、信頼度が小さいものとなる。
また、歪み補正部61aの動きベクトル算出部62が、動きベクトルの算出と同時に動きベクトルの算出精度を求める構成としても構わない。また、画像処理部6の一部であり、歪み補正部61aに対して独立して動作を行う部分が、別途動きベクトルを算出するしt算出精度を求める構成としても構わない。
ところで、信頼度の算出方法は、上述したような動きベクトルを利用する方法に限られない。例えば、画像のコントラスト値を用いて信頼度を算出することも可能である。コントラスト値は、その値が小さいほど画像全体が一様で画像特徴が少ないものとなり、画像を比較して動きを検出することが困難になる。そのため、本例ではコントラス値が小さいほど信頼度を小さくする。
上記の算出方法で算出した信頼度に対応するように、補正量調整値Kh,Kvを設定する。このとき、補正量調整値算出部65が、図26及び下記式(4)に示すように補正量調整値Kh,Kvを算出することとしても構わない。図26は、信頼度に応じた補正量調整値の設定方法を示すグラフである。図26及び下記式(4)に示すように、信頼度eが0以上であり閾値the1より小さい場合は、補正量調整値Kh,Kvを0にする。また、信頼度eが閾値the2以上である場合は、補正量調整値Kh,Kvを1とする。また、信頼度eが閾値the1以上であり閾値the2より小さい場合は、信頼度eに応じて補正量調整値Kh,Kvを漸増(例えば線形に増加)させた値とする。
上述した補正量調整値Kh,Kvの算出方法は、組み合わせて実行することが可能である。この場合、それぞれの算出方法で算出される補正量調整値を重み付け加算することによって、補正量調整値Kh,Kvを算出することとしても構わない。また、上記の補正量調整値Kh,Kvの算出方法は一例に過ぎず、他の方法によって補正量調整値Kh,Kvを算出しても構わない。
<変形例>
本発明の実施形態における撮像装置1について、画像処理部6や歪み補正部61,61aなどのそれぞれの動作を、マイコンなどの制御装置が行うこととしても構わない。さらに、このような制御装置によって実現される機能の全部または一部をプログラムとして記述し、該プログラムをプログラム実行装置(例えばコンピュータ)上で実行することによって、その機能の全部または一部を実現するようにしても構わない。
また、上述した場合に限らず、図1の撮像装置1や図2及び図16の歪み補正部61,61aは、ハードウェア、或いは、ハードウェアとソフトウェアの組み合わせによって実現可能である。また、ソフトウェアを用いて撮像装置1や歪み補正部61,61aを構成する場合、ソフトウェアによって実現される部位についてのブロック図は、その部位の機能ブロック図を表すこととする。
以上、本発明における実施形態について説明したが、本発明の範囲はこれに限定されるものではなく、発明の主旨を逸脱しない範囲で種々の変更を加えて実行することができる。