JP2007215114A - 撮像画像の歪み補正方法、撮像画像の歪み補正装置および撮像装置 - Google Patents
撮像画像の歪み補正方法、撮像画像の歪み補正装置および撮像装置 Download PDFInfo
- Publication number
- JP2007215114A JP2007215114A JP2006035341A JP2006035341A JP2007215114A JP 2007215114 A JP2007215114 A JP 2007215114A JP 2006035341 A JP2006035341 A JP 2006035341A JP 2006035341 A JP2006035341 A JP 2006035341A JP 2007215114 A JP2007215114 A JP 2007215114A
- Authority
- JP
- Japan
- Prior art keywords
- image
- motion vector
- vector
- sensor
- sad
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/14—Picture signal circuitry for video frequency region
- H04N5/144—Movement detection
- H04N5/145—Movement estimation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/68—Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/68—Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
- H04N23/681—Motion detection
- H04N23/6811—Motion detection based on the image signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/68—Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
- H04N23/681—Motion detection
- H04N23/6812—Motion detection based on additional sensors, e.g. acceleration sensors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/68—Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
- H04N23/682—Vibration or motion blur correction
- H04N23/685—Vibration or motion blur correction performed by mechanical compensation
- H04N23/687—Vibration or motion blur correction performed by mechanical compensation by shifting the lens or sensor position
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Studio Devices (AREA)
Abstract
【課題】手ぶれを検出するセンサを用いた光学的手ぶれ補正方式と、センサレス手ぶれ補正方式のそれぞれの問題点を解決して、ピクセル精度の手ぶれ補正を行うことができるようにする方法を提供する。
【解決手段】撮影時の撮像素子11の、撮像画像の水平方向および/または垂直方向の位置的変化に対応する変化を検出するセンサ7の検出出力に応じて、被写体からの入射光の撮像素子への入射位置を制御する制御機構を制御して、撮像素子11の位置的変化による撮像画像の歪みを光学的に補正する。光学的な撮像画像の補正がなされた撮像素子11からの画像データから、撮像画像の1画面単位での動きベクトルを検出する。検出された動きベクトルに基づいて、撮像素子11からの画像データについて、撮像画像の歪みを、さらに補正する。
【選択図】図1
【解決手段】撮影時の撮像素子11の、撮像画像の水平方向および/または垂直方向の位置的変化に対応する変化を検出するセンサ7の検出出力に応じて、被写体からの入射光の撮像素子への入射位置を制御する制御機構を制御して、撮像素子11の位置的変化による撮像画像の歪みを光学的に補正する。光学的な撮像画像の補正がなされた撮像素子11からの画像データから、撮像画像の1画面単位での動きベクトルを検出する。検出された動きベクトルに基づいて、撮像素子11からの画像データについて、撮像画像の歪みを、さらに補正する。
【選択図】図1
Description
この発明は、被写体画像の撮像時の手ぶれ等による撮像画像に発生する歪を補正する方法および当該歪を補正する装置ならびに撮像装置に関する。
例えばビデオカメラやデジタルスチルカメラなどの、電子式に撮像画像を撮像素子に記憶し、読み出すようにする電子式の撮像装置では、手持ちにより動画像の撮影を行なったとき、いわゆる手ぶれによる撮像素子の、撮像画像の水平方向および/または垂直方向に比較的高速の位置的変化を生じると、それは、撮像画像においては、画像の揺れなどの画像歪みとなって現われる。
すなわち、手ぶれが無い場合には、撮像素子の撮像面上において撮像画像の形成位置は同一位置となり、時間方向の複数のフレーム画像を並べた場合に、図46(A)に示すように、フレーム画像は全く同じ位置に重なり合うものとなる。しかし、手ぶれが生じると、撮像素子の撮像面上に形成される撮像画像の位置が同一位置とはならずに、時間方向の複数のフレーム画像を並べた場合に、図46(B)に示すように、複数のフレーム画像は揺れ動いてしまうようなものとなる。
この手ぶれは、特に、ズームレンズを望遠側で使用する場合にはその現象が顕著に生じやすい。このような手ぶれ現象が生じた場合には、静止しているものが揺れて動いてしまい、画像が見にくくなるという問題がある。また、被写体が惚けた状態の撮像画像になってしまうという現象も生じる。
また、静止画の撮影においても、複数フレームの画像を重ね合わせて撮像出力画像を得る場合に、上述と同様にして、手ぶれにより被写体が惚けた状態となる画像歪みを有する撮像画像になってしまう。
この手ぶれによる画像歪みを補正する手法としては、従来、手ぶれを検出するセンサを用いる光学式手ぶれ補正方式と、撮像画像についてデジタル信号処理を行うことで手ぶれを検出すると共に補正処理をするセンサレス手ぶれ補正方式とが提案されている。
現在市場に出回っている民生機における、静止画用途の手ぶれ補正は、光学式手ぶれ補正方式によるものであり、ジャイロセンサもしくは加速度センサを使って手ぶれベクトルを計測し、それを機構系にフィードバックして、CCD(Charge Coupled Device)イメージャやCMOS(Complementary Metal Oxide Semiconductor)イメージャなどのイメージセンサ(撮像素子)に射影される像が、ぶれを起こさないように高速に制御する、というものである。
ここでいう機構系としては、レンズ、プリズム、イメージャ(もしくはイメージャと一体化したモジュール)の位置をアクチエータにより制御する機構が提案されており、それぞれ、レンズシフト、プリズムシフト、イメージャシフトと呼ばれている。
一方、センサレス手ぶれ補正方式は、例えば特許文献1(特許第3303312号公報)や特許文献2(特開平6−86149号公報)等に記載されているように、撮像素子から読み出した撮像画像データから、撮像画像の画面単位の動きベクトルを検出し、この動きベクトルに基づいて、画像メモリに蓄えられている撮像画像データの読み出し位置をシフトして、手ぶれ補正をする方式である。
また、センサレス手ぶれ補正を静止画で実現する手法としては、特許文献3(特開平7−283999号公報)を始め、幾つか提案はされている。特許文献3は、手ぶれの発生しない程度の短い露光時間で何枚かの静止画を連写撮影し、その静止画間の手ぶれベクトルを求め、その手ぶれベクトルに従って、前記連射撮影した複数枚の静止画を平行移動(およびロール軸方向に回転)させながら加算(もしくは平均化)して行くことで、最終的に手ぶれと低照度ノイズの無い高画質の静止画を得る、というアルゴリズムである。
撮像画像の画面単位の動きベクトルを、撮像画像情報自身から検出する方法の例としては、2画面分の撮像画像間の相関を求めるブロックマッチングが知られている。このブロックマッチングを用いる方法は、ジャイロ(角速度)センサなどの機械的な部品が不要なので、撮像装置の小型、軽量化を実現することができるという点で有利である。
ブロックマッチングは、撮像装置部からの撮像画像について、注目画面である参照画面と、当該参照画面よりも1画面分前の撮像画面である元画面との間の1画面分単位での動きベクトルを、所定の大きさの矩形領域のブロックについて、参照画面と元画面との相関を算出することにより算出する方法である。
なお、ここで画面とは、1フレームまたは1フィールドの画像データからなる画像を意味しているが、この明細書では、説明の便宜上、画面は1フレームからなるものとして、画面をフレームと称することとする。したがって、参照画面は参照フレーム、元画面は元フレームと称する。
例えば、参照フレームの画像データは、撮像装置部からの現フレームの画像データ、または現フレームの画像データがフレームメモリに格納されて1フレーム分遅延されたものとされる。元フレームの画像データは、参照フレームの画像データがさらにフレームメモリに格納されて1フレーム分遅延されたものとされる。
図47および図48は、従来のブロックマッチングの概要を説明するための図である。また、図49は、従来のブロックマッチング処理のフローチャートの一例である。
ブロックマッチングにおいては、図47に示すように、元フレーム101の任意の所定の位置において、水平方向の複数画素および垂直方向の複数ライン分からなる所定の大きさの矩形領域からなるターゲットブロック103が設定される。
これに対して、参照フレーム102において、元フレームのターゲットブロック103の位置と同じ位置に、ターゲットブロックの射影イメージブロック104(図47の点線参照)を想定し、このターゲットブロックの射影イメージブロック104を中心としたサーチ範囲105(図47の一点鎖線参照)を設定すると共に、ターゲットブロック103と同じ大きさの参照ブロック106を考える。
そして、この参照ブロック106の位置を参照フレーム102のサーチ範囲105内において移動させ、各位置において参照ブロック106に含まれる画像内容と、ターゲットブロック103の画像内容との相関を求め、最も相関が強いとして検出された参照ブロック106の位置を、元フレームのターゲットブロック103が、参照フレーム102において移動した位置として検出するようにする。そして、その検出した参照フレーム106の位置と、ターゲットブロックの位置との間の位置ずれ量を、方向成分を含む量としての動きベクトルとして検出するようにする。
この場合、参照ブロック106は、サーチ範囲105を、例えば水平方向および垂直方向に、1画素または複数画素単位で移動させるようにする。したがって、サーチ範囲105内には、複数個の参照ブロックが設定されることになる。
ここで、ターゲットブロック103と、サーチ範囲105内を移動する各参照ブロック16との相関は、例えば、ターゲットブロック103内の各画素の輝度値と、参照ブロック106内の対応する各画素の輝度値との差分の絶対値の、ブロック内の全画素についての総和(この差分の絶対値の総和を差分絶対値和と呼ぶ。以下、この差分絶対値和をSAD(Sum of Absolute Difference)と記載することとする)を求めることにより検出する。すなわち、SAD値が最小となる位置の参照ブロック106が最も相関が強い参照ブロックとして検出され、その検出された参照ブロック106のターゲットブロック103の位置に対する位置ずれ量が動きベクトルとして検出される。
ブロックマッチングでは、サーチ範囲105内に設定される複数個の参照ブロック106のそれぞれの、ターゲットブロック103の位置に対する位置ずれ量は、方向成分を含む量としての参照ベクトル107(図47参照)で表現される。各参照ブロック106の参照ベクトル107は、参照ブロック106の参照フレーム102上の位置に応じた値となるが、従来のブロックマッチングでは、SAD値が最小値となる参照ブロック106の参照ベクトルを、動きベクトルとして検出するものである。
そこで、ブロックマッチングでは、一般に、図48に示すように、サーチ範囲105内において設定される複数個の参照ブロック106のそれぞれとターゲットブロック103との間におけるSAD値(以下、説明の簡単のため参照ブロックについてのSAD値という)を、それぞれの参照ブロック106の位置に応じた参照ベクトル107のそれぞれに対応させて、メモリに記憶しておき、そのメモリに記憶された全ての参照ブロック106についてのSAD値の中から、最小のSAD値の参照ブロック106を検出することで、動きベクトル110を検出するようにしている。
サーチ範囲105内に設定された複数個の参照ブロック106の位置に応じた参照ベクトル107のそれぞれに対応させて、それぞれの参照ブロック106についてのSAD値を記憶したものを、差分絶対値和テーブル(以下SADテーブルという)と呼ぶ。図48のSADテーブル108が、これを示しており、このSADテーブル108において、それぞれの参照ブロック106についてのSAD値をSADテーブル要素109という。
なお、上述の説明において、ターゲットブロック103および参照ブロック106の位置とは、それらのブロックの任意の特定の位置、例えば中心位置を意味するものであり、参照ベクトル107は、参照フレーム102におけるターゲットブロック103の射影イメージブロック104の位置と、参照ブロック106の位置との間のずれ量(方向を含む)を示すものである。図47および図48の例では、ターゲットブロック103は、フレームの中心位置にあるとしている場合である。
そして、各参照ブロック106に対応する参照ベクトル107は、参照フレーム102上のターゲットブロック103に対応する位置に対する当該各参照ブロック106の位置ずれとなっているので、参照ブロック106の位置が特定されると、その位置に対応して参照ベクトルの値も特定される。したがって、SADテーブル108のメモリにおける参照ブロックのSADテーブル要素のアドレスが特定されると、対応する参照ベクトルは特定されることになる。
以上説明した従来のブロックマッチングの処理を、図49のフローチャートを参照して説明すると、次のようになる。
先ず、サーチ範囲105内の1つの参照ブロックIiを指定するが、これは、当該参照ブロックIiに対応する参照ベクトルを指定することに等しい(ステップS1)。ここで、図49において、(vx,vy)は、ターゲットブロックのフレーム上の位置を基準位置(0,0)としたときに、指定された参照ベクトルにより示される位置を示し、vxは指定された参照ベクトルによる、基準位置からの水平方向のずれ量成分であり、また、vyは指定された参照ベクトルによる、基準位置からの垂直方向成分のずれ量成分である。
ここでは、ずれ量vx、vyは、画素を単位とした値とされ、例えばvx=+1は、基準位置(0,0)に対して、水平方向の右方向に1画素分ずれた位置を示し、また、vx=−1は、基準位置(0,0)に対して、水平方向の左方向に1画素分ずれた位置を示している。また、例えばvy=+1は、基準位置(0,0)に対して、垂直方向の下方向に1画素分ずれた位置を示し、また、vy=−1は、基準位置(0,0)に対して、垂直方向の上方向に1画素分ずれた位置を示している。
以上のように、(vx、vy)は、参照ベクトルで示される基準位置に対する位置(以下、簡単のため、参照ベクトルで示される位置という)を示しており、参照ベクトルのそれぞれに対応している。つまり、vxおよびvyを整数としたとき、(vx、vy)は参照ベクトルのそれぞれを表すことになる。したがって、以下の説明においては、(vx、vy)の位置を示す参照ベクトルを、参照ベクトル(vx、vy)と記載することがある。
ここで、サーチ範囲の中心位置をターゲットブロックの位置、つまり前記基準位置(0,0)とし、サーチ範囲を、水平方向には±Rx、垂直方向には±Ryとしたとき、
−Rx≦vx≦+Rx、−Ry≦vy≦+Ry
とされるものである。
−Rx≦vx≦+Rx、−Ry≦vy≦+Ry
とされるものである。
次に、ターゲットブロックIo内の1つの画素の座標(x,y)を指定する(ステップS2)。次に、ターゲットブロックIo内の指定された1つの座標(x,y)の画素値Io(x,y)と、参照ブロックIi内の対応する画素位置の画素値Ii(x+vx,y+vy)との差分の絶対値αを算出する(ステップS3)。すなわち、差分絶対値αは、
α=|Io(x,y)−Ii(x+vx,y+vy)| ・・・(式1)
として算出される。
α=|Io(x,y)−Ii(x+vx,y+vy)| ・・・(式1)
として算出される。
そして、算出した差分絶対値αを、当該参照ブロックIiの参照ベクトル(vx,vy)が指し示すアドレス(テーブル要素)の、それまでのSAD値に加算し、その加算であるSAD値を、当該アドレスに書き戻すようにする(ステップS4)。すなわち、参照ベクトル(vx,vy)に対応するSAD値を、SAD(vx,vy)と表すと、
SAD(vx,vy)=Σα=Σ|Io(x,y)−Ii(x+vx,y+vy)|
・・・(式2)
として算出し、当該参照ベクトル(vx,vy)が指し示すアドレスに書き込むようにする。
SAD(vx,vy)=Σα=Σ|Io(x,y)−Ii(x+vx,y+vy)|
・・・(式2)
として算出し、当該参照ベクトル(vx,vy)が指し示すアドレスに書き込むようにする。
次に、ターゲットブロックIo内の全ての座標(x,y)の画素について、上記の演算を行なったか否かを判別し(ステップS5)、ターゲットブロックIo内の全ての座標(x,y)の画素については、未だ、演算は終了していないと判別したときには、ステップS2に戻り、ターゲットブロックIo内の次の座標(x,y)の画素位置を指定し、このステップS2以降の処理を繰り返す。
また、ステップS5で、ターゲットブロックIo内の全ての座標(x,y)の画素について、上記の演算を行なったと判別したときには、当該参照ブロックについてのSAD値の算出が終了したと判別して、サーチ範囲内の全ての参照ブロック、すなわち、全ての参照ベクトル(vx,vy)についての上記の演算処理を完了したか否か判別する(ステップS6)。
ステップS6で、未だ、上記の演算処理を完了していない参照ベクトル(vx,vy)があると判別すると、ステップS1に戻り、上記の演算処理を完了していない次の参照ベクトル(vx,vy)を設定して、このステップS1以降の処理を繰り返す。
そして、ステップS6で、上記の演算処理を完了していない参照ベクトル(vx,vy)はサーチ範囲内になくなったと判別すると、SADテーブルが完成したとして、当該完成したSADテーブルにおいて、最小値となっているSAD値を検出する(ステップS7)。そして、当該最小値となっているSAD値のアドレスに対応する参照ベクトルを動きベクトルとして検出する(ステップS8)。ここで、SADの最小値をSAD(mx,my)と書き表すと、目的とする動きベクトルは、位置(mx,my)を示すベクトル(mx,my)として算出される。
以上で、1つのターゲットブロックに対するブロックマッチングによる動きベクトルの検出処理は、終了となる。
なお、図50に示すように、一般に、撮像素子では、その全画素を有効画素として扱うのではなく、全画素からなる領域(以下、実効画像領域という)AFLのうちの、周辺の領域を除く、水平有効領域および垂直有効領域で定まる中央部を有効画像領域EFLとして用いているものが多い。
このようなイメージャを用いた場合、手ぶれ補正により読み出し画素位置が変化しても、手ぶれ量が、実効画像領域AFLと有効画像領域EFLとの差分よりも小さい範囲では、イメージャが元々有している画素のデータを用いて歪み補正をすることができるので、補間処理などにより、手ぶれ補正に必要なデータを生成する場合に比べて、画像の劣化は少なくなる。
上記の特許文献は、次の通りである。
特許第3384459号公報
特開平6−86149号公報
特開平7−283999号公報
昨今の電子式の撮像装置の市場においては、ジャイロセンサの低価格化、高性能化、小型化に伴い、手ぶれ補正方式としては、このジャイロセンサを用いた光学式手ぶれ補正方式が主流となっている。
しかしながら、ここ数年においては、デジタルスチルカメラの急速な普及と、それと機を同じくした急速な高画素化の流れが、新たな問題を生み始めている。それは、低照度(露光時間が長い)ときの静止画においても、手ぶれ補正が強く求められているものの、解がジャイロセンサ等のセンサを用いたものしか存在せず、ジャイロセンサの弱点やその他の問題が露呈しつつある点である。
すなわち、従来のジャイロセンサの検出精度では、画像のピクセル(画素)精度の手ぶれベクトルの検出は困難である。
また、光学式手ぶれ補正方式では、前述したように、レンズ、プリズム、イメージャ(もしくはイメージャと一体化したモジュール)の位置をアクチュエータにより制御する機構に対して、ジャイロセンサによって検出した手ぶれベクトルに基づいて生成した制御信号をフィードバックするものであるため、上述のジャイロセンサ自体の精度誤差に加え、機構系へのフィードバック遅延、もしくはフィードバック遅延を回避するための予測誤差、そして、機構系の制御誤差も重畳され、とてもピクセル精度で手ぶれ補正をかけることは不可能である。
一方、センサレス手ぶれ補正の場合、原理的に、ロール軸方向の回転成分を含んだピクセル精度の手ぶれベクトル検出が実現可能であり、また、センサやレンズシフト等の機構を除去できるため、コスト的にも相当優位である。
しかし、従来のブロックマッチングに依存する技術の延長では、1画面分の画素数に比例してSADテーブルの規模が増加するため、現在の500万画素オーバーの静止画サイズの動きベクトル検出を、現実的な回路規模で実現するのは非常に困難である。
過去、各社様々な工夫を凝らしながら、NTSC(National Television System Committee)動画の高々17万画素の手ぶれベクトル検出の回路規模削減に苦慮していた背景がある上に、NTSC動画の場合、60fps(frame per second;フレーム/秒)もしくは30fpsというように、フレームレートが高いことが前提であるため、手ぶれのサーチ範囲は狭くて済むが、静止画の場合、重ね合わせる複数枚のフレームのフレームレートが、3fps程度が前提となり、サーチ範囲が極端に大きくなることも問題を困難にしている一因である。画素数と同じく、サーチ範囲にも比例してSADテーブルのテーブル要素数が増加するからである。
このように、ブロックマッチング技法において、最大の問題となっているのが、SADテーブルの増大である。既に述べたように、デジタルカメラにおいては、そのイメージャが500万画素以上が前提となっている昨今において、画素数に比例してSADテーブルサイズが大きくならざるを得ない上、上述のように、静止画の場合、3fps程度のため、動画の60fpsの手ぶれ範囲と比較して、何10倍も広いサーチ範囲が必要であり、当該サーチ範囲の拡大は、即ちSADテーブルの増大と等しいからである。
多人数評価の結果、3fpsの静止画の場合における手ぶれ範囲は、全フレームを100%として±10%程度であることが判明している。既に高級機では世に出ている1200万画素を仮定し、現状で提案されている技術のまま、必要なSADテーブルサイズを見積もると、約80メガビットである。しかも、現実的な処理速度を満たそうとすると、このSADテーブル情報を格納するメモリは、内蔵SRAM(Static RAM(Random Access Memory))であることが求められる。半導体プロセスルールが進んだとは言え、このサイズは、ほぼ3桁程度、現実的なレベルからはかけ離れている。
この発明は、以上の問題点を解決して、ピクセル精度の手ぶれ補正を行うことができるようにする方法および装置を提供することを目的とする。
上記の課題を解決するために、請求項1の発明は、
撮影時の撮像素子の、撮像画像の水平方向および/または垂直方向の位置的変化に対応する変化を検出するセンサの検出出力を受信するセンサ出力受信工程と、
前記センサ出力受信工程で受信した前記センサの検出出力に応じて、被写体からの入射光の前記撮像素子への入射位置を制御する制御機構を制御して、前記撮像素子からの画像データの、前記撮像素子の前記位置的変化による撮像画像の歪みを光学的に補正する光学的補正工程と、
前記光学的補正工程で、前記光学的な撮像画像の補正がなされた前記撮像素子からの画像データを受けて、当該画像データから、撮像画像の1画面単位での動きベクトルを検出する動きベクトル検出工程と、
前記動きベクトル検出工程で検出された前記動きベクトルに基づいて、前記撮像素子からの画像データについて、前記撮像素子の前記位置的変化による撮像画像の歪みを、さらに補正するようにする画像歪み補正処理工程と、
を備えることを特徴とする撮像画像の歪み補正方法を提供する。
撮影時の撮像素子の、撮像画像の水平方向および/または垂直方向の位置的変化に対応する変化を検出するセンサの検出出力を受信するセンサ出力受信工程と、
前記センサ出力受信工程で受信した前記センサの検出出力に応じて、被写体からの入射光の前記撮像素子への入射位置を制御する制御機構を制御して、前記撮像素子からの画像データの、前記撮像素子の前記位置的変化による撮像画像の歪みを光学的に補正する光学的補正工程と、
前記光学的補正工程で、前記光学的な撮像画像の補正がなされた前記撮像素子からの画像データを受けて、当該画像データから、撮像画像の1画面単位での動きベクトルを検出する動きベクトル検出工程と、
前記動きベクトル検出工程で検出された前記動きベクトルに基づいて、前記撮像素子からの画像データについて、前記撮像素子の前記位置的変化による撮像画像の歪みを、さらに補正するようにする画像歪み補正処理工程と、
を備えることを特徴とする撮像画像の歪み補正方法を提供する。
上述の構成の請求項1の発明によれば、例えばジャイロセンサなどのセンサにより、例えば手ぶれなどを起因とする、撮影時の撮像素子の、撮像画像の水平方向および/または垂直方向の位置的変化に対応する変化が検出され、そのセンサの検出出力に基づいて、光学式補正が実行される。
この光学式補正だけでは、前述したように、ピクセル精度の画像歪み補正(例えば手ぶれ補正)はできない。しかし、請求項1の発明においては、当該光学式補正がなされた撮像素子からの撮像画像データから動きベクトルが検出され、その検出された動きベクトルに基づいて、画像歪み補正処理工程においてピクセル精度の画像歪みが補正される。
この場合に、動きベクトル検出工程では、光学式補正により補正された撮像画像の画像データから動きベクトルを検出するものであり、その動きベクトルは、光学式補正で除去できなかった画像歪みに対応するものである。したがって、この動きベクトル検出工程において、例えば請求項3のように、前述したブロックマッチングを用いたときであっても、動きベクトルのサーチ範囲を、光学式手ぶれ補正で除去できなかった画像歪みに対応する狭いものとすることができ、SADテーブルの要素数を実現可能なものとすることができる。
また、請求項2の発明は、請求項1に記載の撮像画像の歪み補正方法において、
前記動きベクトル算出工程では、前記センサの検出出力を参照して、前記撮像素子からの画像データから前記動きベクトルを検出することを特徴とする画像信号の歪み補正方法を提供する。
前記動きベクトル算出工程では、前記センサの検出出力を参照して、前記撮像素子からの画像データから前記動きベクトルを検出することを特徴とする画像信号の歪み補正方法を提供する。
上述の構成の請求項2の発明によれば、光学式補正において、センサの検出出力に対して、前述したようなフィードバック制御の遅延があった場合に、動きベクトル算出工程では、センサの最新の検出出力を参照して例えばサーチ範囲を設定することが可能となり、動きベクトルの検出精度が向上する。
この発明によれば、光学式補正がなされた撮像素子からの撮像画像データについて、光学式補正で除去できなかった画像歪みを除去するように信号処理するようにするので、従来の光学式手ぶれ補正方式と、センサレス手ぶれ補正方式の問題点を解消しながら、ピクセル精度の画像歪みの補正が可能となる。
以下、この発明による撮像画像の歪み補正装置および方法の実施の形態を、撮像装置に適用した場合を例に、図を参照しながら説明する。
[この発明による撮像画像の歪み補正装置の第1の実施形態]
図1は、この発明の撮像画像の歪み補正装置の第1の実施形態が適用された撮像装置の一例のブロック図を示すものである。
図1は、この発明の撮像画像の歪み補正装置の第1の実施形態が適用された撮像装置の一例のブロック図を示すものである。
図1に示すように、この実施形態の撮像装置は、システムバス2にCPU(Central Processing Unit)1が接続されると共に、システムバス2に、撮像信号処理系10や、ユーザ操作入力部3、画像メモリ部4、記録再生装置部5などが接続されて構成されている。なお、この明細書においては、CPU1は、種々のソフトウエア処理を行なうプログラムを記憶するROM(Read Only Memory)やワークエリア用RAMなどを含むものとしている。
この実施形態の撮像装置の所定位置には、ジャイロセンサ7が取り付けられており、このジャイロセンサ7により、撮影時の撮像素子11の、撮像画像の水平方向および/または垂直方向の位置的変化に対応する変化(いわゆる手ぶれ)が検出される。そして、このジャイロセンサ7の検出出力が、CPU1に供給されている。
また、この実施形態では、撮像用のレンズやプリズムなどを備えるカメラ光学系10Lは、光学的手ぶれ補正用のアクチュエータ8により、被写体からの入射光の撮像素子11への入射位置を制御することができるようにされている光学的手ぶれ補正機構部を備える。この例では、光学的手ぶれ補正機構部は、カメラ光学系10Lのレンズまたはプリズムの位置を、入射光の光軸方向に対して直交する方向に変移させる機構とされている。
そして、このアクチュエータ7には、CPU1から、ジャイロセンサ6からの手ぶれ検出出力に応じて生成された光学的手ぶれ補正信号CTLが供給されて、カメラ光学系10Lのレンズまたはプリズムの位置を変移させる光学的手ぶれ補正機構が制御されて、被写体からの入射光の撮像素子11への入射位置が、撮影時の撮像素子11の、撮像画像の水平方向および/または垂直方向の位置的変化に関わらず、同じ位置となるように補正(光学的補正)されるようにされている。
なお、光学的手ぶれ補正機構として、カメラ光学系10Lのレンズやプリズムを入射光の光軸方向に対して直交する方向に位置制御するのではなく、撮像素子11をアクチュエータ8により入射光の光軸方向に対して直交する方向に位置制御するものを用いるようにして、上述の光学的補正を行うようにしても良い。
図1の例の撮像装置においては、ユーザ操作入力部3を通じた撮像記録開始操作を受けて、後述するような撮像画像データの記録処理を行なう。また、ユーザ操作入力部3を通じた撮像記録画像の再生開始操作を受けて、図1の撮像装置は、記録再生装置部5の記録媒体に記録された撮像画像データの再生処理を行なう。
図1に示すように、撮像レンズ10Lを備えるカメラ光学系(図示は省略)を通じた被写体からの入射光は、撮像素子11に照射されて撮像される。撮像素子11は、CCDイメージャやCMOSイメージャで構成されている。
この撮像時、手ぶれが発生したときには、ジャイロセンサ7の検出出力から、CPU1は、発生した手ぶれに応じた動きベクトル(手ぶれベクトル)を生成し、生成した動きベクトルから光学的手ぶれ補正信号CTLを生成する。そして、CPU1は、生成した光学的手ぶれ補正信号CTLをアクチュエータ8に供給する。これにより、撮像素子11から得られる撮像画像データは、光学的手ぶれ補正が実行されたものとなる。
この例の撮像装置においては、撮像記録開始操作がなされると、撮像素子11からは、タイミング信号発生部12からのタイミング信号により、前記光学的手ぶれ補正が実行された後の撮像画像データがサンプリングされることにより、赤(R)、緑(G)、青(B)の3原色から構成されるベイヤー配列のRAW信号であるデジタル撮像信号が出力される。
出力された撮像信号は、前処理部13に供給され、欠陥補正やγ補正等の前処理が施され、データ変換部14に供給される。
データ変換部14は、これに入力された撮像信号から、輝度信号成分Yと、色差信号成分Cb/Crとにより構成されるデジタル撮像信号(YCデータ)に変換し、そのデジタル撮像信号をシステムバスを介して、画像メモリ部4に供給する。
画像メモリ部4は、この図1の例においては、2個のフレームメモリ41,42からなり、データ変換部14からのデジタル撮像信号は、先ず、フレームメモリ41に格納される。そして、1フレーム経過すると、フレームメモリ41に記憶されているデジタル撮像信号が、フレームメモリ42に転送されると共に、フレームメモリ41には、データ変換部14からの新たなフレームのデジタル撮像信号が書き込まれる。したがって、フレームメモリ42には、フレームメモリ41に格納されているフレーム画像よりも1フレーム分前のフレーム画像が格納されている。
動きベクトル検出部15は、この実施形態では、撮像画像の動きベクトルを検出する方法として、2画面間の相関を求めるブロックマッチングを用いる。この場合、ブロックマッチングにおける前述したターゲットブロックについてのサーチ範囲は、光学的手ぶれ補正により補正しきれずに残留した動きベクトルを検出することができればよいので、狭くすることができる。
この第1の実施の形態では、このサーチ範囲は、固定的に予め定められる。すなわち、この実施形態では、前述した光学的手ぶれ補正によって補正しきれずに残留する動きベクトルの大きさを予め測定するなどして検知しておく。そして、動きベクトル検出部15におけるサーチ範囲は、その残留する動きベクトルを少なくとも検出することができるサーチ範囲とする。
この場合、残留する動きベクトルは、ジャイロセンサ7で検出される手ぶれ動きベクトルの大きさに応じたものとなると考えられるが、想定される残留動きベクトルの最大値を定めて、その残留動きベクトルの最大値を少なくとも検出することができるように、サーチ範囲を設定する。
また、サーチ範囲の設定に当たっては、アクチュエータ8による光学的手ぶれ補正機構におけるフィードバック遅延を考慮する必要がある。すなわち、ジャイロセンサ7の検出出力から光学的手ぶれ補正信号CTLが生成され、当該生成された光学的手ぶれ補正信号CTLがアクチュエータ8に供給されて、実際に光学的手ぶれ補正機構が動作して光学的手ぶれ補正が実行されるまでの間に遅延時間がある。
このため、その遅延時間により、撮像素子11から読み出された撮像画像データが得られる時点でのジャイロセンサ7の検出出力である手ぶれ動きベクトルは、光学的手ぶれ補正信号を生成する源となる手ぶれ動きベクトルとが異なっている恐れがある。そして、その手ぶれ動きベクトルの異なりは、動きベクトル検出部15で検出される動きベクトルに含まれる。
よって、この実施形態では、前記光学的手ぶれ補正におけるフィードバック遅延による手ぶれ動きベクトルの異なり分を、前記残留動きベクトルの最大値に加えた大きさの手ぶれ動きベクトルを検出することができるようなサーチ範囲の大きさに設定する。なお、実際のサーチ範囲を設定するときには、ジャイロセンサ7自身の精度誤差を考慮すると共に、さらに安全のため、所定のマージン分を加えるのはもちろんである。
そして、動きベクトル検出部15は、システムバス2を介して、これら2個のフレームメモリ41およびフレームメモリ42をアクセスして、その格納撮像画像データを読み出し、当該撮像画像データからの動きベクトル検出処理を、前記設定されたサーチ範囲として実行する。この場合、フレームメモリ42に格納されているフレーム画像は、元フレームの画像とされ、また、フレームメモリ41に格納されているフレーム画像は、参照フレームの画像とされる。
そして、動きベクトル検出部15は、その検出結果である動きベクトルを、その後段の解像度変換部16に制御信号として伝達する。
解像度変換部16は、動きベクトル検出部15から受け取った動きベクトルにしたがって、フレームメモリ42に格納されている遅延フレームの画像データを切り出しながら、必要な解像度および画像サイズに変換する処理をする。このフレームメモリ42からの、算出した画像歪み補正量にしたがった切り出しにより、変換後の画像は、手ぶれがピクセル単位で除去される画像となる。
この解像度変換部16からの手ぶれに基づく画像歪みが除去された画像データは、NTSC(National Television System Committee)エンコーダ18によりNTSC方式の標準カラー映像信号に変換され、電子式ビューファインダーを構成するモニターディスプレイ6に供給され、撮影時の画像がその表示画面にモニター表示される。
このモニター表示と並行して、解像度変換部16からの手ぶれが除去された画像データはコーデック部17で記録変調などのコーディング処理された後、記録再生装置部5に供給されて、DVD(Digital Versatile Disc)などの光ディスクやハードディスクなどの記録媒体に記録される。
この記録再生装置部5の記録媒体に記録された撮像画像データは、ユーザ操作入力部3を通じた再生開始操作に応じて読み出され、コーデック部17に供給されて、再生デコードされる。そして、再生デコードされた画像データはNTSCエンコーダ18を通じてモニターディスプレイ6に供給され、再生画像がその表示画面に表示される。なお、図1では、図示を省略したが、NTSCエンコーダ18からの出力映像信号は、映像出力端子を通じて外部に導出することが可能とされている。
動きベクトル検出部15は、ハードウエアにより構成することできるし、また、DSP(Digital Signal Processor)を用いて構成することもできる。さらには、CPU1によりソフトウエア処理とすることもできる。同様に、補正解像度変換部16も、ハードウエアにより構成することできるし、また、DSP(Digital Signal Processor)を用いて構成することもできる。さらには、CPU1によりソフトウエア処理とすることもできる。
[動きベクトル検出部15の構成例]
この実施の形態では、上述したように、動きベクトル検出部15における撮像画像データから動きベクトルを検出する方法として、2画面間の相関を求めるブロックマッチングを用いる。
この実施の形態では、上述したように、動きベクトル検出部15における撮像画像データから動きベクトルを検出する方法として、2画面間の相関を求めるブロックマッチングを用いる。
ここで、この実施形態では、動きベクトル検出部15におけるブロックマッチング処理においては、サーチ範囲を前述したように狭くできるので、ピクセル精度の動きベクトルの検出を行う場合においても、SADテーブルの規模を実現可能なレベルにまで下げることができる。
しかし、この実施形態では、SADテーブルの規模を、従来よりも小さくすることができる新規なブロックマッチング手法を用いて、より現実的な回路規模で動きベクトル検出部15を構成することができるようにしている。
SADテーブルの規模を小さくする方法として実現できるレベルの現実的な提案としては、特許文献4(特開2005−38396公報)を挙げることができる。この特許文献4に示されたものは、画像を縮小変換したサイズで動ベクトルを求める手段と、同一のSADテーブルを複数のブロックで共有する手段から構成される。画像の縮小変換と、SADテーブルの複数ブロックでの共有化は、SADテーブルサイズの削減を実現するための、非常に良い手法であり、MPEG(Moving Picture Experts Group)画像圧縮方式における動きベクトル検出やシーンチェンジ検出等、他分野でも使われている。
しかし、この特許文献4のアルゴリズムの問題点として、画像の縮小変換と、その際のメモリ(DRAM(Dynamic RAM(Random Access Memory))アクセスに、時間とメモリ容量を消費することと、SADテーブルを複数ブロックで時分割アクセスする手法のため、メモリアクセスが非常に増加し、この処理にも時間を要してしまうという課題がある。動画の手ぶれ補正においては、リアルタイム性と同時にシステム遅延時間の短縮が求められるため、この処理時間の問題が課題となってしまうのである。
また、元画像を縮小変換する際には、エイリアシング(折り返し歪み)や、低照度ノイズ除去のためのローパスフィルタを、縮小処理の前処理として実装するが必要である。しかし、縮小倍率に応じて、ローパスフィルタの特性が変化する上、特に、垂直方向のローパスフィルタの場合、多タップのデジタルフィルタとした場合に、多くのラインメモリと演算ロジックを必要としなければならず、回路規模増加の問題が生じる。
この実施の形態では、以上の点にかんがみ、ブロックマッチングを用いて2フレーム間の動きベクトルを検出する場合において、SADテーブルサイズの大幅な削減が可能である画像処理方法および装置を提供するようにする。
また、前述したブロックマッチングにおける従来の提案手法のうち、特許文献4に記載された画像の縮小変換によるSADテーブルの削減手法に関して、2つの問題を提起した。画像の縮小変換に伴う処理時間の増大並びにメモリ容量の消費と、画像の縮小変換に伴うエイリアシング回避のための適切なローパスフィルタの実装に伴う回路増大の問題である。以下に説明する実施の形態は、これらの問題点をも解決したものである。
<実施の形態で用いる新規なブロックマッチング手法の概要>
この実施の形態においても、上述したブロックマッチングを用いて、2フレーム間の動きベクトルを検出するのであるが、ターゲットブロックと参照ブロック間において求められるSAD値を、参照ブロックの参照ベクトルに対応して記憶するのではなく、当該参照ベクトルを縮小し、その縮小した参照縮小ベクトルに対応する、当該参照縮小ベクトルの近傍の複数の参照ベクトルに分散加算して記憶するようにする。
この実施の形態においても、上述したブロックマッチングを用いて、2フレーム間の動きベクトルを検出するのであるが、ターゲットブロックと参照ブロック間において求められるSAD値を、参照ブロックの参照ベクトルに対応して記憶するのではなく、当該参照ベクトルを縮小し、その縮小した参照縮小ベクトルに対応する、当該参照縮小ベクトルの近傍の複数の参照ベクトルに分散加算して記憶するようにする。
これにより、従来のSADテーブルに比較して、SADテーブルのサイズを大幅に縮小するようにするものである。
図2〜図4は、実施の形態で用いる新規なブロックマッチング手法の概要を説明するための図である。図2は、従来のSADテーブルTBLoと、実施形態で用いる新規なブロックマッチング手法において生成される縮小SADテーブルTBLsとの関係を示すものである。
この実施形態においても、図47に示したように、従来と同様に参照フレームにおいて、元フレームに設定されたターゲットブロックの位置を中心としてサーチ範囲が設定される。そして、このサーチ範囲において、前述したような複数の参照ブロックが設定され、各参照ブロック内の画素とターゲットブロック内の対応する画素の輝度値の差分の絶対値の総和、つまり、SAD値が求められる。
従来は、求められたSAD値は、図2に示すように、対象となっている参照ブロックの参照ベクトルRVに対応するアドレスのテーブル要素tblとしてSADテーブルTBLoに書き込まれる。
したがって、従来のブロックマッチングでは、ターゲットブロックと参照ブロックとのフレーム画像上における位置ずれ量を表わす参照ベクトルRVと、SADテーブルTBLoの各テーブル要素である参照ブロックのSAD値とは、1対1に対応している。すなわち、従来のSADテーブルTBLoでは、サーチ範囲で取り得る参照ベクトルRVと等しい数のSAD値のテーブル要素数を備えるものとなっている。
これに対して、この実施形態におけるブロックマッチングでは、図2および図3(A)、(B)に示すように、対象となっている参照ブロックの参照ベクトルRVは、縮小率1/n(nは自然数)で縮小されて参照縮小ベクトルCVとされる。
ここで、以下の説明においては、説明の便宜上、水平方向縮小倍率と垂直方向の縮小倍率とを同じとしているが、水平方向縮小倍率と垂直方向の縮小倍率とは独立の異なる値でも良い。また、後で述べるが、水平方向縮小倍率と垂直方向の縮小倍率とを独立に任意の自然数分の1として設定できるようにしておく方が、柔軟性も高く好都合である。
この実施形態においても、前述の従来のブロックマッチング手法について説明したのと同様に、サーチ範囲の中心とされるターゲットブロックの位置を基準位置(0,0)とし、参照ベクトルは、当該基準位置からの画素単位の水平方向および垂直方向のずれ量(vx,vy)(vx、vyは、整数)を指し示すものとされ、参照ベクトルRVのそれぞれは、参照ベクトル(vx,vy)で表される。
参照ベクトル(vx,vy)が、水平方向および垂直方向のそれぞれについて1/nに縮小された参照縮小ベクトル(vx/n,vy/n)で示される位置(vx/n,vy/n)は、整数ではなく、小数成分が発生することがある。このため、この実施形態では、縮小前の元の参照ベクトルRVに対応して求められたSAD値を、参照縮小ベクトルCVに最も近い1つの参照ベクトルに対応するテーブル要素として記憶してしまうと誤差が生じることになる。
そこで、この実施形態では、まず、参照縮小ベクトルCVで示される位置(vx/n,vy/n)の近傍の複数の参照ベクトルで示される複数の位置(テーブル要素)を検出する。そして、参照ベクトルRVの参照ブロックについて求められたSAD値は、その検出した近傍の複数の参照ベクトルに対応するSAD値に分散して加算するようにする。
この場合に、この実施形態では、参照縮小ベクトルCVで示される位置の近傍の周囲の複数個の参照ベクトルで示される位置に対応するテーブル要素tblに書き込むべき成分として分散加算する値は、縮小前の元の参照ベクトルRVに対応して求められたSAD値から、参照縮小ベクトルとその近傍の参照ベクトルとのそれぞれが示す位置の関係を用いて、前記近傍の参照ベクトルのそれぞれに対応して分散加算するSAD値を算出し、算出したSAD値のそれぞれを、対応する参照ベクトルのテーブル要素成分として加算するようにする。
ここで、分散するだけでなく加算するというのは、参照縮小ベクトルの近傍の複数の参照ベクトルは、異なる複数の参照縮小ベクトルについて重複して検出されることになるので、1つの参照ベクトルについて、重複したSAD値は加算するという意味である。
なお、参照縮小ベクトルCVが示す位置(vx/n,vy/n)が、参照ベクトルが示す位置に一致する場合、つまり、vx/nおよびvy/nの値が整数であるときには、周辺の複数の参照ベクトルを検出する必要はなく、当該位置(vx/n,vy/n)を示す参照ベクトルに対応して、縮小前の元の参照ベクトルRVに対応して求められたSAD値を記憶するようにするものである。
次に、具体例を挙げて、以上の処理を説明する。例えば、ターゲットブロックの位置を基準(0,0)としたときに、図3(A)に示すように、(−3,−5)の位置を示す参照ブロックRVを、水平方向および垂直方向に、1/n=1/4倍に縮小すると、その参照縮小ベクトルCVで示される位置は、図3(B)に示すように、(−0.75,−1.25)となる。
したがって、参照縮小ベクトルCVで示される位置は小数成分が発生し、参照ベクトルで示される位置とは一致しない。
そこで、この場合には、図4に示すように、当該参照縮小ベクトルCVが示す位置の近傍位置を示す複数個の近傍参照ベクトルが検出される。図4の例では、1つの参照縮小ベクトルCVに対して、4個の近傍参照ベクトルNV1,NV2,NV3,NV4が検出される。
そして、前述したように、この実施形態では、参照ベクトルRVの参照ブロックについて求められたSAD値は、これら4個の近傍参照ベクトルNV1,NV2,NV3,NV4に対応するSAD値として分散加算される。
この場合に、この実施形態では、4個の近傍参照ベクトルNV1,NV2,NV3,NV4のそれぞれに分散加算するSAD値は、参照縮小ベクトルCVで示される位置P0(図4において×印として示す)と、4個の近傍参照ベクトルNV1,NV2,NV3,NV4のそれぞれで示される位置P1,P2,P3,P4(図4において○印として示す)との位置関係を用いて線形加重分散値として算出する。
図4の例の場合には、参照縮小ベクトルCVで示される位置P0は、周辺近傍の4個の参照ベクトルNV1,NV2,NV3,NV4のそれぞれで示される位置P1,P2,P3,P4を、水平方向に1:3、垂直方向に3:1に内分する位置にある。
そこで、縮小前の元の参照ベクトルRVに対応して求められたSAD値をSαとしたとき、周辺近傍の4個の参照ベクトルNV1,NV2,NV3,NV4のそれぞれで示される位置P1,P2,P3,P4に対応するSADテーブル要素に分散加算する値SADp1,SADp2,SADp3,SADp4のそれぞれは、
SADp1=Sα×9/16
SADp2=Sα×3/16
SADp3=Sα×3/16
SADp4=Sα×1/16
となる。
SADp1=Sα×9/16
SADp2=Sα×3/16
SADp3=Sα×3/16
SADp4=Sα×1/16
となる。
そして、この実施形態では、求められた値SADp1,SADp2,SADp3,SADp4のそれぞれを、近傍の4個の参照ベクトルNV1,NV2,NV3,NV4のそれぞれで示される位置P1,P2,P3,P4に対応するSADテーブル要素にそれぞれ加算する。
この実施形態では、以上の処理を、サーチ範囲内のすべての参照ブロックについて行なう。
以上のことから、この実施形態では、参照ベクトルRVを1/nに縮小する場合には、全ての参照ベクトルに1対1に対応する従来サイズのSADテーブルTBLoに対して、水平方向に1/n、また、垂直方向に1/nに縮小した縮小SADテーブルTBLsを用意して、この縮小SADテーブルTBLsのテーブル要素として、参照縮小ベクトルCVの近傍の参照ベクトルに対応するSAD値を求めるようにすれば良い(図2参照)。
したがって、この実施形態の場合には、縮小SADテーブルTBLsのテーブル要素の数は、従来のSADテーブルTBLoのテーブル要素数の1/n2となり、テーブルサイズを大幅に小さくすることが可能である。
なお、上述の実施形態の説明においては、参照縮小ベクトルCVの近傍の4個の参照ベクトルを検出し、当該4個の近傍参照ベクトルに対応するSADテーブル要素に対して、対照の参照ブロック(参照ベクトルRV)について算出したSAD値を線形加重分散加算するようにしたが、参照縮小ベクトルCVの近傍の複数の参照ベクトルの選び方およびその近傍参照ベクトルに対応するSADテーブル要素に対する分散加算の方法は、上述の例に限られるものではない。
例えば、参照縮小ベクトルCVの近傍の9個もしくは16個の参照ベクトルを検出し、当該9個もしくは16個の近傍参照ベクトルに対応するSADテーブル要素に対して、いわゆるキュービック(Cubic)補間による分散加算を行なうようにすれば、より精度は高くなる。しかし、リアルタイム性と演算回路の削減を重視すると、上述した近傍4個の参照ベクトルに対応するテーブル要素への線形加重分散加算が、より有効である。
この実施形態においても、参照ブロックをサーチ範囲内で遍く移動させ、全ての参照ブロックのSAD値に対してSADテーブル(この実施形態では縮小SADテーブル)への代入を行う点は、従来手法と同じである。
ただし、従来は、参照ベクトルとSADテーブル要素のアドレスが1対1に対応していたため、SADテーブルへは単なる代入で済んだが、この実施形態による手法では、参照ブロックについて算出したSAD値を分散加算させるため、縮小SADテーブルにおいて、参照ベクトルとテーブルアドレスは1対1ではない。したがって、この実施形態の手法の場合には、SAD値のテーブルアドレスへの単なる代入ではなく、加算して代入する、いわゆる代入加算である必要がある。また、そのため、SADテーブル(縮小SADテーブル)の各テーブル要素は、最初に初期化(0クリア)しておかなければならない。
ところで、従来のブロックマッチング手法では、以上のようにして完成させたSADテーブルにおいて、SAD値が最小値となるテーブル要素を探索し、その最小値となるテーブル要素のテーブルアドレスを、参照ベクトルに変換すれば、動ベクトルの検出を完了した。
これに対して、この実施形態による手法では、SADテーブルは、参照ベクトルを縮小した参照縮小ベクトルに対応した縮小SADテーブルであるため、当該縮小SADテーブルの最小値がそのまま正確な動きベクトルには対応していない。
もっとも、ある程度の誤差を許す装置の場合には、縮小SADテーブルの最小値となるテーブル要素のテーブルアドレスを、参照ベクトルに変換したものを、さらに縮小率1/nの逆数倍、つまりn倍することで、動きベクトルを検出するようにすることもできる。
しかし、より正確な動きベクトルを検出するようにする場合には、以下に説明するように、縮小SADテーブルのテーブル要素値に対して補間処理を施すことで、元のベクトル精度で、正確な動きベクトルを検出するようにする。
<より正確な動きベクトルを検出するための補間処理の第1の例>
より正確な動きベクトルを検出するための補間処理の第1の例は、縮小SADテーブルにおける複数個のSADテーブル要素値(SAD値)を、1つの2次曲面で近似する手法である。この手法は、前述した特許文献1に記載されている手法を縮小SADテーブルに対して適用した手法である。
より正確な動きベクトルを検出するための補間処理の第1の例は、縮小SADテーブルにおける複数個のSADテーブル要素値(SAD値)を、1つの2次曲面で近似する手法である。この手法は、前述した特許文献1に記載されている手法を縮小SADテーブルに対して適用した手法である。
すなわち、縮小SADテーブルにおいて、SAD値が最小値となるテーブル要素(整数精度最小値テーブル要素(整数精度テーブルアドレス))と、この整数精度最小値テーブル要素を中心とする複数の整数精度テーブル要素とを求め、それらのテーブル要素のSAD値を用いて、最小自乗法によりSAD値の2次曲面を決定し、この2次曲面の最小値となるSAD値を検出し、当該検出した最小値となるSAD値に対応する位置(参照フレーム上において、基準位置に対してずれた位置)を検出し、当該検出した位置を小数精度の最小値テーブルアドレス(縮小SADテーブルにおいてSAD値が最小値となるベクトル(最小値ベクトルという)に対応)とする。
この場合、一意の2次曲面を定めるためには、図5(A)または(B)に示すように、整数精度最小値テーブル要素tmと、当該テーブル要素tmをその両側から挟む位置の、当該テーブル要素tmの近傍の4個の整数精度テーブル要素t1,t2,t3,t4が最低限必要である。
そして、図6に示すように、参照フレームのサーチ範囲内の縮小SADテーブルに対応する参照縮小ベクトルの範囲内において、ターゲットフレームの位置を基準位置(0,0)として、水平方向および垂直方向のずれ量(参照縮小ベクトルに対応)の軸vx/nおよび軸vy/nを考えると共に、これらの軸vx/nおよび軸vy/nに垂直な軸として、SAD値の軸を考え、これら3軸からなる座標空間を想定する。
そして、例えば、整数精度最小値テーブル要素tmのSAD値と、当該整数精度最小値テーブル要素tmを挟む2個のテーブル要素t1、t3のSAD値とから、図6の座標空間において2次曲線を生成する。また、整数精度最小値テーブル要素tmのSAD値と、当該最小値テーブル要素tmを挟む他の2個のテーブル要素t2、t4のSAD値とから、図6の座標空間において、他の2次曲線を生成する。そして、これら2個の2次曲線を含む2次曲面201を、最小自乗法により求め、その2次曲面201を、図6に示すように、座標空間において生成する。
そして、生成されたSAD値の2次曲面201の最小値202を検出し、その最小値を取るSAD値に対応する位置(vx/n,vy/n)(図6の位置203)を検出し、当該検出した位置(vx/n,vy/n)を、小数精度のテーブル要素(テーブルアドレス)として検出する。そして、検出した小数精度テーブル要素に対応するベクトル(最小値ベクトル)204を、図7に示すようにn倍して、元の大きさ精度の動きベクトル205を得る。
例えば、図8に示すように、参照ベクトルを1/4に縮小した場合における縮小SADテーブルTBLsの、小数精度テーブル要素の最小値アドレスから求められる最小値ベクトル204が、(−0.777,−1.492)の場合に、これらを4倍した(−3.108,−5.968)が、動きベクトル205となる。この動きベクトル205は、元画像のスケールにおける動きベクトルを再現したものとなっている。
以上の説明は、整数精度最小値テーブル要素tmと、その近傍の4テーブル要素を用いた場合として説明したが、SAD値の2次曲面を最小自乗法により求めるためには、より多くの複数近傍テーブル要素を用いたほうがよい。そこで、一般には、整数精度最小値テーブル要素tmを中心として、その周囲の水平方向×垂直方向=m×m個(mは3以上の整数)の矩形領域のテーブル要素を用いるようにする。
しかし、この複数近傍テーブル要素の数は、多ければ良いというものではなく、広い範囲のテーブル要素を用いると、演算量の増加を招く上、画像パターンに依存するローカルミニマムの偽値を使用してしまう可能性も高まるので、適切な複数近傍テーブル要素の数からなる矩形領域のテーブル要素を用いるようにする。
適切な複数近傍テーブル要素の数からなる矩形領域のテーブル要素の例として、この実施形態では、整数精度最小値テーブル要素tmを中心として、その周囲の水平方向×垂直方向=3×3個の矩形領域のテーブル要素を用いるようにする例と、整数精度最小値テーブル要素tmを中心として、その周囲の水平方向×垂直方向=3×3個の矩形領域のテーブル要素を用いるようにする例とについて説明する。
<3×3個の矩形領域のテーブル要素を用いる例>
図9に、整数精度最小値テーブル要素tmを中心として、その周囲の水平方向×垂直方向=3×3個の矩形領域(図9で塗りを付して示してある)のテーブル要素を用いるようにする例を示す。
図9に、整数精度最小値テーブル要素tmを中心として、その周囲の水平方向×垂直方向=3×3個の矩形領域(図9で塗りを付して示してある)のテーブル要素を用いるようにする例を示す。
この図9の例の場合には、図9(A)に示すように、整数精度最小値テーブル要素tmと、その近傍の8個の近傍テーブル要素のSAD値を用いて、図9(B)に示すような2次曲面201を、最小自乗法により生成する。そして、生成されたSAD値の2次曲面201の最小値202を検出し、その最小値を取るSAD値に対応する位置(vx/n,vy/n)(図9(B)の位置203)を検出し、当該検出した位置203を、小数精度の最小値テーブル要素位置(小数精度最小値テーブルアドレス)として検出する。
そして、検出した小数精度テーブル要素位置203に対応するベクトル(最小値ベクトル)204を、前述した図7に示すようにn倍して、元の大きさ精度の動きベクトル205を得る。
ここで、SAD値の2次曲面201の最小値202に対応する位置203の算出方法は、次のようになる。すなわち、図10に示すように、整数精度最小値テーブル要素tmの位置を原点(0,0)とする(x,y)座標を考える。この場合、周辺の8個のテーブル要素の位置は、3個のx軸方向の位置、すなわち、x=−1、x=0、x=1と、3個のY軸方向の位置、すなわち、y=−1、y=0、y=1との繰り合わせで表され、(−1,−1)、(0,−1)、(1,−1)、(−1,0)、(0,1)、(−1,1)、(0,1)、(1,1)の8位置となる。
そして、図10のテーブルにおける各テーブル要素のSAD値を、Sxyとする。したがって、例えば、整数精度最小値テーブル要素tm(位置(0,0))のSAD値はS00と表され、また、右下の位置(1,1)のテーブル要素値のSAD値はS11と表される。
すると、整数精度最小値テーブル要素tmの位置を原点(0,0)とする(x,y)座標における小数精度の位置(dx、dy)は、図11に示す(式A)および(式B)により、求めることができる。
図11の(式A)および(式B)において、
x=−1のとき、Kx=−1
x=0のとき、Kx=0
x=0のとき、Kx=1
となる。また、
y=−1のとき、Ky=−1
y=0のとき、Ky=0
y=0のとき、Ky=1
となる。
x=−1のとき、Kx=−1
x=0のとき、Kx=0
x=0のとき、Kx=1
となる。また、
y=−1のとき、Ky=−1
y=0のとき、Ky=0
y=0のとき、Ky=1
となる。
こうして求められた小数精度の位置(dx,dy)は、整数精度最小値テーブル要素tmの位置を原点(0,0)とする位置であるので、この小数精度の位置(dx,dy)と整数精度最小値テーブル要素tmの位置とから、求めるサーチ範囲の中心位置からの位置203を検出することができる。
[4×4個の矩形領域のテーブル要素を用いる例]
図12に、整数精度最小値テーブル要素tmをほぼ中心として、その周囲の水平方向×垂直方向=4×4個の矩形領域のテーブル要素(図12で塗りを付して示してある)を用いるようにする例を示す。
図12に、整数精度最小値テーブル要素tmをほぼ中心として、その周囲の水平方向×垂直方向=4×4個の矩形領域のテーブル要素(図12で塗りを付して示してある)を用いるようにする例を示す。
この場合に、整数精度最小値テーブル要素tmと、その近傍の8テーブル要素(3×3)や、その近傍の24テーブル要素(5×5)のように、前記mの値が奇数である場合には、整数精度最小値テーブル要素tmは、常に、使用する矩形領域の複数のテーブル要素の中心になるため、使用するテーブル範囲は単純に決定する。
これに対して、近傍の15テーブル要素(4×4)のように、mが偶数である場合には、整数精度最小値テーブル要素tmは、使用する矩形領域の複数のテーブル要素の中心位置とはならないので、若干の工夫が必要となる。
つまり、整数精度最小値テーブル要素tmから見て、水平方向に左右の隣接テーブル要素のSAD値を比較し、小さい値となった側の方向の、当該方向の隣接テーブル要素に隣接するテーブル要素を近傍テーブル要素の4列目として採用する。同様に、垂直方向に上下の隣接テーブル要素のSAD値を比較し、小さい値となった側の方向の、当該方向の隣接テーブル要素に隣接するテーブル要素を近傍テーブル要素の4行目として採用する。
図12の例では、整数精度最小値テーブル要素tmの水平方向に左右の隣接テーブル要素のSAD値は、「177」と「173」であるので、SAD値が小さい右隣の値「173」のテーブル要素のさらに右隣の列を第4列目として採用する。また、整数精度最小値テーブル要素tmの垂直方向に上下の隣接テーブル要素のSAD値は、「168」と「182」であるので、SAD値が小さい上隣の値「168」のテーブル要素のさらに上隣の行を第4行目として採用する。
そして、図12の例の場合には、整数精度最小値テーブル要素tmと、その近傍の15個の近傍テーブル要素のSAD値を用いて、2次曲面201を、最小自乗法により生成する。そして、生成されたSAD値の2次曲面201の最小値202を検出し、その最小値を取るSAD値に対応する位置(vx/n,vy/n)(図12の位置203)を検出し、当該検出した位置203を、小数精度の最小値テーブル要素位置(小数精度最小値テーブルアドレス)として検出する。
そして、検出した小数精度テーブル要素位置203に対応するベクトル(最小値ベクトル)204を、前述した図7に示すようにn倍して、元の大きさ精度の動きベクトル205を得る。
ここで、この例の場合におけるSAD値の2次曲面201の最小値202に対応する位置203の算出方法は、次のようになる。すなわち、図13に示すように、整数精度最小値テーブル要素tmの位置を原点(0,0)とする(x,y)座標を考える。
この例の場合には、16テーブル要素からなる矩形領域中における整数精度最小値テーブル要素tmの位置に応じて、図13(A),(B),(C),(D)のような4通りのテーブル要素配置を考える必要がある。
この場合、周辺の15個のテーブル要素の位置は、図13(A),(B),(C),(D)から分かるように、4個のx軸方向の位置、すなわち、x=−1、x=0、x=1、x=2またはx=−2と、4個のY軸方向の位置、すなわち、y=−1、y=0、y=1、y=2またはy=−2との繰り合わせで表される15位置となる。
そして、図13のテーブルにおける各テーブル要素のSAD値を、Sxyとする。したがって、例えば、整数精度最小値テーブル要素tm(位置(0,0))のSAD値はS00と表され、また、位置(1,1)のテーブル要素値のSAD値はS11と表される。
すると、整数精度最小値テーブル要素tmおよびその周辺の16テーブル要素からなる矩形領域中の中心位置を原点(0,0)とする(x,y)座標における小数精度の位置(dx,dy)は、図14に示す(式C)および(式D)により、求めることができる。
ここで、図14の(式C)および(式D)において、KxおよびKyは、整数精度最小値テーブル要素tmおよびその周辺の16テーブル要素からなる矩形領域中の中心位置を原点(0,0)とする(Kx,Ky)座標を考えたときの、前記図13(A),(B),(C),(D)に示した4通りのテーブル要素配置に応じた値となる。このときの(Kx,Ky)座標を図15に示す。
すなわち、図13(A)の場合には、
x=−2のとき、Kx=−1.5
x=−1のとき、Kx=−0.5
x=0のとき、Kx=0.5
x=1のとき、Kx=1.5
となる。また、
y=−2のとき、Ky=−1.5
y=−1のとき、Ky=−0.5
y=0のとき、Ky=0.5
y=1のとき、Ky=1.5
となる。
x=−2のとき、Kx=−1.5
x=−1のとき、Kx=−0.5
x=0のとき、Kx=0.5
x=1のとき、Kx=1.5
となる。また、
y=−2のとき、Ky=−1.5
y=−1のとき、Ky=−0.5
y=0のとき、Ky=0.5
y=1のとき、Ky=1.5
となる。
また、図13(B)の場合には、
x=−2のとき、Kx=−1.5
x=−1のとき、Kx=−0.5
x=0のとき、Kx=0.5
x=1のとき、Kx=1.5
となる。また、
y=−1のとき、Ky=−1.5
y=0のとき、Ky=−0.5
y=1のとき、Ky=0.5
y=2のとき、Ky=1.5
となる。
x=−2のとき、Kx=−1.5
x=−1のとき、Kx=−0.5
x=0のとき、Kx=0.5
x=1のとき、Kx=1.5
となる。また、
y=−1のとき、Ky=−1.5
y=0のとき、Ky=−0.5
y=1のとき、Ky=0.5
y=2のとき、Ky=1.5
となる。
また、図13(C)の場合には、
x=−1のとき、Kx=−1.5
x=0のとき、Kx=−0.5
x=1のとき、Kx=0.5
x=2のとき、Kx=1.5
となる。また、
y=−2のとき、Ky=−1.5
y=−1のとき、Ky=−0.5
y=0のとき、Ky=0.5
y=1のとき、Ky=1.5
となる。
x=−1のとき、Kx=−1.5
x=0のとき、Kx=−0.5
x=1のとき、Kx=0.5
x=2のとき、Kx=1.5
となる。また、
y=−2のとき、Ky=−1.5
y=−1のとき、Ky=−0.5
y=0のとき、Ky=0.5
y=1のとき、Ky=1.5
となる。
また、図13(D)の場合には、
x=−1のとき、Kx=−1.5
x=0のとき、Kx=−0.5
x=1のとき、Kx=0.5
x=2のとき、Kx=1.5
となる。また、
y=−1のとき、Ky=−1.5
y=0のとき、Ky=−0.5
y=1のとき、Ky=0.5
y=2のとき、Ky=1.5
となる。
x=−1のとき、Kx=−1.5
x=0のとき、Kx=−0.5
x=1のとき、Kx=0.5
x=2のとき、Kx=1.5
となる。また、
y=−1のとき、Ky=−1.5
y=0のとき、Ky=−0.5
y=1のとき、Ky=0.5
y=2のとき、Ky=1.5
となる。
また、図14の(式C)および(式D)におけるΔxおよびΔyは、(Kx,Ky)座標に対する図13(A),(B),(C),(D)の各テーブル要素配置における(x,y)座標とのずれ量を表しており、
図13(A)の場合には、Δx=−0.5、Δy=−0.5、
図13(B)の場合には、Δx=−0.5、Δy=0.5、
図13(C)の場合には、Δx=0.5、Δy=−0.5、
図13(D)の場合には、Δx=0.5、Δy=0.5、
となる。
図13(A)の場合には、Δx=−0.5、Δy=−0.5、
図13(B)の場合には、Δx=−0.5、Δy=0.5、
図13(C)の場合には、Δx=0.5、Δy=−0.5、
図13(D)の場合には、Δx=0.5、Δy=0.5、
となる。
こうして求められた小数精度の位置(dx,dy)は、整数精度最小値テーブル要素tmの位置を原点(0,0)とする位置であるので、この小数精度の位置(dx,dy)と整数精度最小値テーブル要素tmの位置とから、求めるサーチ範囲の中心位置からの位置203を検出することができる。
<より正確な動きベクトルを検出するための補間処理の第2の例>
より正確な動きベクトルを検出するための補間処理の第2の例は、縮小SADテーブルにおける整数精度最小値テーブル要素を含む複数個の水平方向のテーブル要素のSAD値を用いて水平方向の3次曲線を生成すると共に、整数精度最小値テーブル要素を含む複数個の垂直方向のテーブル要素のSAD値を用いて垂直方向の3次曲線を生成し、それぞれの3次曲線の極小値となる位置(vx,vy)を検出して、検出した位置を小数精度の最小値アドレスとするものである。
より正確な動きベクトルを検出するための補間処理の第2の例は、縮小SADテーブルにおける整数精度最小値テーブル要素を含む複数個の水平方向のテーブル要素のSAD値を用いて水平方向の3次曲線を生成すると共に、整数精度最小値テーブル要素を含む複数個の垂直方向のテーブル要素のSAD値を用いて垂直方向の3次曲線を生成し、それぞれの3次曲線の極小値となる位置(vx,vy)を検出して、検出した位置を小数精度の最小値アドレスとするものである。
図16は、この第2の例を説明するための図である。前述の第1の例と同様にして、整数精度最小値テーブル要素tmと、この整数精度最小値テーブル要素を中心とする複数の整数精度テーブル要素、図16の例では、4×4=16個のテーブル要素を求める(図16(A)で塗りを付した部分参照)。
次に、第1の例と同様にして、図16(B)に示すように、参照フレームのサーチ範囲内の縮小SADテーブルに対応する参照縮小ベクトルの範囲内において、ターゲットフレームの位置を基準位置(0,0)として、水平方向および垂直方向のずれ量(参照縮小ベクトルに対応)の軸vx/nおよび軸vy/nを考えると共に、これらの軸vx/nおよび軸vy/nに垂直な軸として、SAD値の軸を考え、これら3軸からなる座標空間を想定する。
次に、整数精度最小値テーブル要素tmの周囲の16個のテーブル要素のうち、整数精度最小値テーブル要素tmを含む4個の水平方向のテーブル要素のSAD値を用いて、前記座標空間に水平方向の3次曲線206を生成する。この水平方向の3次曲線206の極小値に対応する水平方向の位置vx/nとして、小数精度最小値テーブル要素位置の水平方向位置を検出する。
次に、整数精度最小値テーブル要素tmの周囲の16個のテーブル要素のうち、整数精度最小値テーブル要素tmを含む4個の垂直方向のテーブル要素のSAD値を用いて、前記座標空間に垂直方向の3次曲線207を生成する。この垂直方向の3次曲線207の極小値に対応する垂直方向の位置vy/nとして、小数精度最小値テーブル要素位置の垂直方向位置を検出する。
以上により求めた小数精度最小値テーブル要素位置の水平方向の位置と、垂直方向の位置から、小数精度最小値テーブル要素位置(小数精度最小値テーブルアドレス)208を検出する。そして、当該検出した小数精度テーブル要素位置208に対応するベクトル(最小値ベクトル)209を、前述した図7に示すようにn倍して、元の大きさ精度の動きベクトルを得る。
すなわち、第2の例は、第1の例で説明した方法により、水平方向、垂直方向のそれぞれの4個のテーブル要素を確定し、図16(B)に示すように、水平方向、垂直方向のそれぞれで、3次曲線を一意に定める手法である。
ここで、SAD値の3次曲線206および209の最小値202に対応する位置208の算出方法は、次のようになる。すなわち、水平方向または垂直方向のいずれかの方向における3次曲線において、最小値の近傍の4点のSAD値を、前記水平方向または垂直方向のいずれかの方向に沿った順番に、S0、S1、S2、S3としたとき、小数精度の最小値が、図17に示す3つの区間Ra,Rb,Rcのいずれにあるかにより、最小値を取る小数成分uを算出する式が異なる。
ここで、区間RaはSAD値S0となる位置とSAD値S1となる位置との間の区間、RbはSAD値S1となる位置とSAD値S2となる位置との間の区間、RcはSAD値S2となる位置とSAD値S3となる位置との間の区間である。
そして、小数精度の最小値が、図17に示す区間Raにあるときには、図18の(式E)により、整数精度の最小値の位置に対する最小値を取る位置までのずれの小数成分uが算出される。
また、同様に、小数精度の最小値が、図17に示す区間Rbにあるときには、図18の(式F)により、整数精度の最小値の位置に対する最小値を取る位置までのずれの小数成分uが算出される。
さらに、小数精度の最小値が、図17に示す区間Rcにあるときには、図18の(式G)により、整数精度の最小値の位置に対する最小値を取る位置までのずれの小数成分uが算出される。
そして、小数精度の最小値が、図17に示す3つの区間Ra,Rb,Rcのいずれにあるかの判別は、次のようにして行なう。
すなわち、図19は、その判別を説明するための図である。図19(A),(B),(C)に示すように、先ず、整数精度のSAD値の最小値Sminと、2番目に小さい整数精度のSAD値Sn2とを検出し、小数精度の最小値は、検出された整数精度のSAD値の最小値Sminの位置と、2番目に小さい整数精度のSAD値Sn2の位置との間の区間に存在するとして検出する。次に、整数精度のSAD値の最小値Sminと、2番目に小さい整数精度のSAD値Sn2とが、図19に示したSAD値S0、S1、S2、S3のいずれの位置となっているかにより、検出した区間が区間Ra,Rb,Rcのいずれであるかの判別を行なう。
なお、図19(D)に示すように、整数精度のSAD値の最小値SminがSAD値のまたは位置にあって、4個のテーブル要素値の端に位置する場合には、最小位置が推定できないとして、この実施形態では、エラーとして扱い、最小値位置の算出は行なわないようにする。もっとも、この図19(D)のような場合においても、最小値位置を算出するようにしてもよい。
以上のようにして、この実施形態によれば、1/n2にスケールダウンした小さいサイズの縮小SADテーブルを用いて、元の画像スケールにおける動きベクトルを検出することができる。この場合に、1/n2にスケールダウンした小さいサイズの縮小SADテーブルを用いているにも関わらず、従来とほぼ同様のベクトル検出結果が得られることを図20に示す。
図20の横軸は、水平方向または垂直方向の一方についての1次元方向の縮小倍率nであり、また、縦軸は、検出される動きベクトルについての誤差(ベクトル誤差)を示している。図20のベクトル誤差の数値は画素数で表されている。
図20において、曲線301は、縮小倍率に対するベクトル誤差の平均値である。また、曲線302は、縮小倍率に対するベクトル誤差の分散σの3倍値(3σ(99.7%))を示している。曲線303は、曲線302の近似曲線を示している。
図20は、1次元方向の縮小倍率nに対するベクトル誤差を示しているが、SADテーブルは2次元のため、図20に示されるものの2乗の割合でテーブルサイズ(テーブル要素数)が削減されるのに対し、ベクトル誤差は、線形程度にしか増加しないことから、この実施形態による手法の有用性が分かる。
また、n=64(縮小率1/64)倍の縮小倍率でも、ベクトル誤差は小さく、全く異なる動きベクトルを検出出力とするような破綻は見られないことから、実質、1/4096に、SADテーブルのサイズを削減可能であると言える。
また、前述したように、動画の手ぶれ補正においては、リアルタイム性とシステム遅延の削減が強く求められるのに対し、精度については、破綻した全く異なる動きベクトルが検出される場合を除き、ある程度のベクトル検出誤差に対して寛容である。したがって、破綻しないままSADテーブルのサイズを大きく削減することができる、この実施形態は有用性が高いと言える。
なお、実際の手ぶれ補正システムでは、参照フレーム102を複数の領域に分割し、それぞれの分割領域において動きベクトル205を検出するようにする。これは、フレーム内には動く被写体が含まれる可能性も高いため、例えば、図21のように参照フレーム102の1フレーム内において16個の動きベクトル205を検出し、過去のフレームにおけるそれらの動きベクトル205からの推移も加味しながら統計的に処理することで、1フレームについて1つのグローバルベクトル、即ち、フレームの手ぶれベクトルを確定するようにするためである。
この場合、図21に示すように、検出したい16個の動きベクトル205の基準位置PO1〜PO16のそれぞれを中心とするサーチ範囲SR1,SR2,・・・,SR16を定め、各サーチ範囲において、ターゲットブロックの射影イメージブロックIB1,IB2,・・・,IB16を想定する。
そして、この射影イメージブロックIB1,IB2,・・・,IB16と同じ大きさの参照ブロックを設定し、各サーチ範囲SR1,SR2,・・・,SR16内を、設定した参照ブロックを移動させて、上述と同様にして、縮小SADテーブルを生成し、各サーチ範囲SR1,SR2,・・・,SR16における動きベクトル205を検出するようにする。
そして、参照フレームにおいて取得した複数個のターゲットブロックについて得られた複数個の動きベクトルを用いて、過去のフレームにおけるそれらの動きベクトルからの推移も加味しながら統計的に処理することで、1フレームについて1つのグローバルベクトル、即ち、フレームの手ぶれベクトルを確定するようにする。
以上説明した実施形態の画像処理方法は、従来手法として説明した特許文献4に記載された画像を縮小変換したサイズで動きベクトルを検出する手法に比べて、次に挙げる2つの点において、大きく異なるメリットを有するものである。
まず、第一に、この実施形態による手法は、特許文献4に記載された従来手法と異なり、画像を縮小変換するプロセスを全く必要としない。この実施形態による手法においては、参照ブロックについて算出したSAD値を、SADテーブル(縮小SADテーブル)に代入加算する際に、同時に縮小倍率に相当するアドレス変換を行なうからである。
これにより、この実施形態による手法においては、特許文献4に記載された従来手法のような画像の縮小変換のためのロジックも、縮小した画像をメモリに格納する時間およびバンド幅の浪費も、縮小画像をメモリに貼る領域確保も必要ない、というメリットを有する。
特許文献4に記載された従来手法のもう1つ重要な問題点として、前述も使用にしたように、画像を縮小変換する際のエイリアシング(折り返し歪み)や、低照度ノイズ除去のためのローパスフィルタの存在の問題がある。すなわち、画像縮小する際には、適切なローパスフィルタを通してからリサンプリングを行なわなければならず、さもないと、不要なエイリアシングが発生し、その縮小画像を用いた動きベクトルの精度が著しく損なわれるからである。
縮小変換の際の理想的なローパスフィルタの特性としては、sinc関数に類似した関数であることが、理論的に証明されている。sinc関数自体は、sin(xπ)/(xπ)の形で表されるカットオフ周波数f/2の無限タップのFIR(Finite Impulse Response)フィルタであるが、縮小倍率1/nのときの理想的なカットオフ周波数f/(2n)のローパスフィルタとしては、sin(xπ/n)/(xπ/n)と表される。しかし、これもsinc関数の一形態として良い。
図22〜図24の上側には、それぞれ縮小倍率が1/2倍、1/4倍、1/8倍のときのsinc関数(ローパスフィルタの理想特性)の形状を示す。この図22〜図24から、縮小倍率が大きくなればなる程、関数がタップ軸方向に拡大して行くことが分かる。つまり、無限タップのsinc関数を主要な係数のみで近似する場合にも、FIRフィルタのタップ数を増加させなければならないと言える。
また、一般的に、より低い帯域のカットオフ周波数を実現するフィルタは、フィルタ形状よりもタップ数が、その性能に対して支配的になって行くことが知られている。
したがって、特許文献4に記載の従来手法の縮小画像を用いる動きベクトル演算手法の場合、画像の縮小倍率が大きくなればなる程、そのSADテーブル削減効果が大きいにも関わらず、画像生成する際の前処理用フィルタとしてのローパスフィルタは、縮小倍率が大きくなればなる程、コストが増加してしまう、という矛盾を併せ持つのである。
一般に、高次タップのFIRフィルタを実現する場合、演算ロジックのコストがタップ数の2乗に比例して増加するため、問題となるが、より大きい問題は、垂直フィルタ実現のためのラインメモリ数の増加である。近年のデジタルスチルカメラにおいては、画素数向上に伴うラインメモリのサイズ削減のため、いわゆる短冊処理を行なっているが、例え、1ライン当たりのサイズを削減したとしても、ラインメモリそのものの本数が増加することは、物理レイアウトエリアで換算されるトータルコストを著しく押し上げる。
以上、述べたように、特許文献4に記載の従来手法の画像縮小によるアプローチは、特に垂直ローパスフィルタの実現において、大きな壁が立ちはだかっていることが分かる。それに対し、この発明の手法は、全く異なる形で簡潔にこの問題を解決している。
図22〜図24の下側に、この実施の形態で用いる新規なブロックマッチング手法におけるローパスフィルタのイメージを示す。この実施の形態で用いる新規なブロックマッチング手法においては、画像縮小処理を伴っていないが、縮小SADテーブルの生成演算過程におけるローパスフィルタのイメージを図示したものである。
図22〜図24の下側に示されるように、このローパスフィルタの特性は、sinc関数の主要係数部分を線形で近似した、シンプルなフィルタ特性ではあるものの、縮小倍率に連動してタップ数が増加していることが分かる。これは、先に述べた、カットオフ周波数が低くなる程、ローパスフィルタの性能はタップ数が支配的になる、という事実に好適である。つまり、実施形態の線形加重分散加算を行なう処理のような、この発明におけるSAD値の分散加算を行なう処理そのものが、倍率連動の高性能ローパスフィルタを、シンプルな回路で実現していることと等価なのである。
このローパスフィルタに絡んで、他にもメリットがある。特許文献4記載の従来手法では、ローパスフィルタをかけた後、リサンプリングすることで画像を縮小するが、この時点で相当数の画像情報が失われる。つまり、ローパスフィルタの演算において、画像情報の輝度値の語長は大幅に丸められてメモリに格納され、殆どの画素情報の下位ビットは、縮小後の画像に影響を与えないのである。
一方、この実施の形態で用いる新規なブロックマッチング手法においては、全ての画素の輝度値の全ビット情報を、遍く平等に使用してSAD値を演算し、その分散加算値を求めて縮小SADテーブルに加算する。縮小SADテーブルの各テーブル要素値の語長さえ増やせば、最終的なSAD値の出力まで、一切の丸め誤差を含まない形で演算可能である。縮小SADテーブルの面積はフレームメモリに比較して小さいため、縮小SADテーブルの語長拡張は大きな問題にならない。その結果として、縮小SADテーブル並びに動きベクトル検出を、高精度に実現できるのである。
<動きベクトル検出部15における処理動作>
<第1の例>
この動きベクトル検出部15における処理動作の第1の例の流れを、図25および図26のフローチャートを参照して、以下に説明する。
<第1の例>
この動きベクトル検出部15における処理動作の第1の例の流れを、図25および図26のフローチャートを参照して、以下に説明する。
先ず、前述の図47あるいは図21に示したようなサーチ範囲105あるいはサーチ範囲SR1〜SR16のそれぞれ内の1つの参照ブロックIiに対応する参照ベクトル(vx、vy)を指定する(ステップS101)。前述したように、(vx,vy)は、ターゲットブロックのフレーム上の位置(サーチ範囲の中心位置である)を基準位置(0,0)としたときに、指定された参照ベクトルにより示される位置を示し、vxは指定された参照ベクトルによる、基準位置からの水平方向のずれ量成分であり、また、vyは指定された参照ベクトルによる、基準位置からの垂直方向成分のずれ量成分である。そして、前述の従来例で述べたのと同様に、ずれ量vx、vyは、画素を単位とした値とされている。
ここで、サーチ範囲の中心位置を前記基準位置(0,0)とし、サーチ範囲を、水平方向には±Rx、垂直方向には±Ryとしたとき、
−Rx≦vx≦+Rx、−Ry≦vy≦+Ry
とされるものである。
−Rx≦vx≦+Rx、−Ry≦vy≦+Ry
とされるものである。
次に、ターゲットブロックIo内の1つの画素の座標(x,y)を指定する(ステップS102)。次に、ターゲットブロックIo内の指定された1つの座標(x,y)の画素値Io(x,y)と、参照ブロックIi内の対応する画素位置の画素値Ii(x+vx,y+vy)との差分絶対値αを、前述した(式1)に示したようにして算出する(ステップS103)。
そして、算出した差分絶対値αを、当該参照ブロックIiの参照ベクトル(vx,vy)が指し示すアドレス(テーブル要素)の、それまでのSAD値に加算し、その加算であるSAD値を、当該アドレスに書き戻すようにする(ステップS104)。すなわち、参照ベクトル(vx,vy)に対応するSAD値を、SAD(vx,vy)と表したとき、これを、前述した(式2)、すなわち、
SAD(vx,vy)=Σα=Σ|Io(x,y)−Ii(x+vx,y+vy)|
・・・(式2)
として算出し、当該参照ベクトル(vx,vy)が指し示すアドレスに書き込むようにする。
そして、算出した差分絶対値αを、当該参照ブロックIiの参照ベクトル(vx,vy)が指し示すアドレス(テーブル要素)の、それまでのSAD値に加算し、その加算であるSAD値を、当該アドレスに書き戻すようにする(ステップS104)。すなわち、参照ベクトル(vx,vy)に対応するSAD値を、SAD(vx,vy)と表したとき、これを、前述した(式2)、すなわち、
SAD(vx,vy)=Σα=Σ|Io(x,y)−Ii(x+vx,y+vy)|
・・・(式2)
として算出し、当該参照ベクトル(vx,vy)が指し示すアドレスに書き込むようにする。
次に、ターゲットブロックIo内の全ての座標(x,y)の画素について、上記のステップS102〜ステップS104の演算を行なったか否かを判別し(ステップS105)、ターゲットブロックIo内の全ての座標(x,y)の画素については、未だ、その演算は終了していないと判別したときには、ステップS102に戻り、ターゲットブロックIo内の次の座標(x,y)の画素位置を指定し、このステップS102以降の処理を繰り返す。
以上のステップS101〜ステップS105までの処理は、図49に示したフローチャートのステップS1〜ステップS5と全く同様である。
この実施形態では、ステップS105で、ターゲットブロックIo内の全ての座標(x,y)の画素について、上記の演算を行なったと判別したときには、縮小倍率を1/nとして、参照ベクトル(vx,vy)を1/nに縮小した参照縮小ベクトル(vx/n,vy/n)を算出する(ステップS106)。
次いで、参照縮小ベクトル(vx/n,vy/n)の近傍の複数の参照ベクトル、この例では、上述したように4個の近傍参照ベクトルを検知する(ステップS107)。そして、検知した4個の近傍参照ベクトルのそれぞれに対応するテーブル要素として分散加算すべき値を、前述したように、参照縮小ベクトルと近傍参照ベクトルとがそれぞれ示す位置の関係に基いて、ステップS104で求めたSAD値から、線形加重分散値として求める(ステップS108)。そして、求めた4個の線形加重分散値を、近傍参照ベクトルのそれぞれに対応するSADテーブル要素値に加算する(ステップS109)。
このステップS109が終了すると、注目中の参照ブロックについてのSAD値の算出が終了したと判別して、サーチ範囲内の全ての参照ブロック、すなわち、全ての参照ベクトル(vx,vy)についての上記のステップS101からステップS109までの演算処理を完了したか否か判別する(図26のステップS111)。
ステップS111で、未だ、上記の演算処理を完了していない参照ベクトル(vx,vy)があると判別すると、ステップS101に戻り、上記の演算処理を完了していない次の参照ベクトル(vx,vy)を設定して、このステップS101以降の処理を繰り返す。
そして、ステップS111で、上記の演算処理を完了していない参照ベクトル(vx,vy)はサーチ範囲内になくなったと判別すると、縮小SADテーブルが完成したとして、当該完成した縮小SADテーブルにおいて、最小値となっているSAD値を検出する(ステップS112)。
次に、当該最小値となっているテーブル要素アドレス(mx,my)のSAD値(最小値)と、その近傍の複数個、この例では、上述したように15個の近傍テーブル要素のSAD値を用いて2次曲面を生成し(ステップS113)、その2次曲面の最小値のSAD値が対応する小数精度の位置を示す最小値ベクトル(px,py)を算出する(ステップS114)。この最小値ベクトル(px,py)は、小数精度の最小テーブル要素アドレスに対応している。
そして、算出した小数精度の位置を示す最小値ベクトル(px,py)をn倍することにより、求めるべく動きベクトル(px×n,py×n)を算出する(ステップS115)。
以上で、1つのターゲットブロックに対する、この実施形態におけるブロックマッチングによる動きベクトルの検出処理は、終了となる。図21に示したような、1フレームについて分割した領域において、複数個の動きベクトルを検出する場合には、サーチ範囲および縮小倍率1/nを再設定して、上述の図25および図26に示した処理を、各分割領域のターゲットブロックについて繰り返すものである。
なお、小数精度の位置を示す最小値ベクトル(px,py)を算出する方法としては、前述した水平方向および垂直方向の3次曲線を用いる方法を用いても良いことは言うまでもない。
<第2の例>
上述の第1の例においては、1つの参照ブロック(参照ベクトル)について、そのSAD値を求めた後、そのSAD値から、参照縮小ベクトルの近傍の複数参照ベクトルについての分散加算値を求め、分散加算処理を行なうようにした。
上述の第1の例においては、1つの参照ブロック(参照ベクトル)について、そのSAD値を求めた後、そのSAD値から、参照縮小ベクトルの近傍の複数参照ベクトルについての分散加算値を求め、分散加算処理を行なうようにした。
これに対して、この第2の例においては、参照ブロック内の各画素の、ターゲットブロックの画素との差分を検出したときに、その差分値から、参照縮小ベクトルの近傍の複数参照ベクトルについての分散加算値(SAD値ではなく差分値)を求め、求めた差分値を分散加算処理するようにする。この第2の例によれば、1つの参照ブロック内のすべての画素についての差分演算を終了したときには、縮小SADテーブルが生成されることになる。
図27および図28は、この第2の例による動きベクトル検出処理のフローチャートを示すものである。
図27のステップS121〜ステップS123までの処理は、図25のステップS101〜ステップS103までの処理と全く同様であるので、ここでは、その詳細な説明は省略する。
この第2の例においては、ステップS123で、座標(x,y)の画素についての参照ブロックとターゲットブロック間での差分値αが算出すると、次には、縮小倍率を1/nとして、参照ベクトル(vx,vy)を1/nに縮小した参照縮小ベクトル(vx/n,vy/n)を算出する(ステップS124)。
次に、参照縮小ベクトル(vx/n,vy/n)の近傍の複数の参照ベクトル、この例では、上述したように4個の近傍参照ベクトルを検知する(ステップS125)。そして、検知した4個の近傍参照ベクトルのそれぞれに対応するテーブル要素として分散加算すべき差分値を、前述したように、ステップS123で求めた差分値αから、参照縮小ベクトルと近傍参照ベクトルとがそれぞれ示す位置の関係に基いて、線形加重分散値(差分値)として求める(ステップS126)。
そして、求めた4個の線形加重分散値を、近傍参照ベクトルのそれぞれに対応するテーブル要素値に加算する(ステップS127)。
このステップS127が終了したら、ターゲットブロックIo内の全ての座標(x,y)の画素について、上記のステップS122〜ステップS127の演算を行なったか否かを判別し(ステップS128)、ターゲットブロックIo内の全ての座標(x,y)の画素については、未だ、その演算は終了していないと判別したときには、ステップS122に戻り、ターゲットブロックIo内の次の座標(x,y)の画素位置を指定し、このステップS122以降の処理を繰り返す。
ステップS128で、ターゲットブロックIo内の全ての座標(x,y)の画素について、上記の演算を行なったと判別したときには、注目中の参照ブロックについてのSAD値の算出が終了したと判別して、サーチ範囲内の全ての参照ブロック、すなわち、全ての参照ベクトル(vx,vy)についての上記のステップS121からステップS128までの演算処理を完了したか否か判別する(図28のステップS131)。
ステップS131で、未だ、上記の演算処理を完了していない参照ベクトル(vx,vy)があると判別すると、ステップS121に戻り、上記の演算処理を完了していない次の参照ベクトル(vx,vy)を設定して、このステップS121以降の処理を繰り返す。
そして、ステップS121で、上記の演算処理を完了していない参照ベクトル(vx,vy)はサーチ範囲内になくなったと判別すると、縮小SADテーブルが完成したとして、当該完成した縮小SADテーブルにおいて、最小値となっているSAD値を検出する(ステップS132)。
次に、当該最小値となっているテーブル要素アドレス(mx,my)のSAD値(最小値)と、その近傍の複数個、この例では、上述したように15個の近傍テーブル要素のSAD値を用いて2次曲面を生成し(ステップS133)、その2次曲面の最小値のSAD値が対応する小数精度の位置を示す最小値ベクトル(px,py)を算出する(ステップS134)。この最小値ベクトル(px,py)は、小数精度の最小テーブル要素アドレスに対応している。
そして、算出した小数精度の位置を示す最小値ベクトル(px,py)をn倍することにより、求めるべく動きベクトル(px×n,py×n)を算出する(ステップS135)。
以上で、1つのターゲットブロックに対する、この第2の例におけるブロックマッチングによる動きベクトルの検出処理は、終了となる。図21に示したような、1フレームについて分割した領域において、複数個の動きベクトルを検出する場合には、サーチ範囲および縮小倍率1/nを再設定して、上述の図27および図28に示した処理を、各分割領域について繰り返すものである。
なお、この第2の例においても、小数精度の位置を示す最小値ベクトル(px,py)を算出する方法としては、前述した水平方向および垂直方向の3次曲線を用いる方法を用いても良いことは言うまでもない。
<第3の例>
図20に示したように、この実施形態による動きベクトルの検出手法を用いた場合には、参照ベクトルの縮小倍率が1/64の場合でも、全く異なる動きベクトルを出力するような破綻は見られないことから、実質的に1/4096に、SADテーブルを削減可能である。
図20に示したように、この実施形態による動きベクトルの検出手法を用いた場合には、参照ベクトルの縮小倍率が1/64の場合でも、全く異なる動きベクトルを出力するような破綻は見られないことから、実質的に1/4096に、SADテーブルを削減可能である。
つまり、1/4096に削減した縮小SADテーブルを用意しておき、例えば1回目の縮小倍率1/na=1/64で1回目の動きベクトルを検出する。次に、1回目で検出したその動きベクトルを中心にしてサーチ範囲を狭め、2回目の検出を、1回目の縮小倍率1/naよりも小さい2回目の縮小倍率1/nb、例えば1/nb=1/8で行なうようにすればよい。すなわち、1回目と2回目とで縮小倍率を変えて、1回目のベクトル誤差範囲内に収まるように、2回目の縮小倍率を設定すれば、かなりの高精度で、動きベクトル検出が可能である。
この第3の例の場合における動きベクトル検出処理を、図29〜図32のフローチャートを参照しながら説明する。
この図29〜図32に示す第3の例は、基本的な動き検出処理として上述した第1の例を用いている。したがって、図29のステップS141〜ステップS149の処理ステップおよび図30のステップS151〜ステップS155までの処理ステップは、図25のステップS101〜ステップS109の処理ステップおよび図26のステップS111〜ステップS115までの処理ステップと全く同様である。
この第3の例においては、図30のステップS155で動きベクトルを算出したら、そこで処理を終了するのではなく、当該ステップS155で算出した動きベクトルは、1回目の動きベクトルとして、次のステップS156において、この1回目で算出した動きベクトルに基づき、同じ参照フレーム内で、サーチ範囲を絞り、また、参照ベクトルの縮小倍率を、1回目の縮小倍率1/naよりも小さい縮小倍率1/nbに変更する。
すなわち、1回目の処理で、動きベクトルが算出されると、その算出された動きベクトルから、参照フレームと元フレームとの間で、相関のあるブロック範囲がおおよそ検出できる。そこで、その相関のあるブロック範囲を中心とした、絞ったサーチ範囲を設定することができる。そして、1回目よりも縮小倍率を小さくすることで、より誤差の少ない状態で、2回目の動きベクトルの算出が可能になると期待できる。
こうして、ステップS156で、絞ったサーチ範囲を設定し、新たな縮小倍率を設定したら、1回目と全く同様にして、2回目の動きベクトルの検出処理を、ステップS157〜ステップS158、図31のステップS161〜ステップS168、さらに、図32のステップS171〜ステップS174により実行する。これらのステップの処理は、図25のステップS101〜ステップS109の処理ステップおよび図26のステップS111〜ステップS115までの処理ステップと全く同様である。
こうして、最終的に、ステップS174において、2回目の動きベクトルとして、目的とする動きベクトルが得られる。
以上の例は、動きベクトルの検出方法として、前述した第1の例を用い、それを2段階、繰り返した場合であるが、サーチ範囲をさらに絞り、かつ、必要に応じて縮小倍率を変更しながら、2段階以上、繰り返すようにしても、勿論良い。
また、動きベクトルの検出方法としては、前述した第1の例の代わりに、前述した第2の例を用いることができることは言うまでもない。また、小数精度の位置を示す最小値ベクトル(px,py)を算出する方法としては、前述した水平方向および垂直方向の3次曲線を用いる方法を用いても良いことは前述の例と同様である。
[この発明による撮像画像の歪み補正装置の第2の実施形態]
上述した撮像画像の歪み補正装置の第1の実施形態が適用された撮像装置における動きベクトル検出部15においては、図1に示したように、画像メモリ部4は、2枚の画像、つまり元フレームの画像と、参照フレームの画像とが、両方共、フレームメモリ41,42に格納されていることを前提にしていた。このため、動きベクトルの検出タイミングは、1フレーム分遅延されることとなる。
上述した撮像画像の歪み補正装置の第1の実施形態が適用された撮像装置における動きベクトル検出部15においては、図1に示したように、画像メモリ部4は、2枚の画像、つまり元フレームの画像と、参照フレームの画像とが、両方共、フレームメモリ41,42に格納されていることを前提にしていた。このため、動きベクトルの検出タイミングは、1フレーム分遅延されることとなる。
これに対して、この第2の実施形態では、撮像素子11からの垂れ流し画像データを参照フレームとする構成として、ラスタースキャンのストリームデータに対して、リアルタイムでSAD値を演算することができるようにしている。
図33に、この第2の実施形態の場合における撮像装置の構成例のブロック図を示す。この図33から分かるように、撮像信号処理系10の構成ブロックおよびその他の構成ブロックは、図1に示した第1の実施形態と全く同様であるが、この第2の実施形態においては、図33に示すように、画像メモリ部4は1個のフレームメモリ43からなる。
この第2の実施形態では、元フレームがフレームメモリ43に格納されており、参照フレームは、データ変換部14からストリームで動きベクトル検出部15に入力されるものとされる。動きベクトル検出部15は、第1の実施形態では、2個のフレームメモリ41,42に格納された2枚の画像データを用いて、参照ブロックについてのSAD値を求める処理をするようにした。これに対して、この第2の実施形態では、図33に示すように、データ変換部14からのストリーム画像データを参照フレームの画像データとすると共に、フレームメモリ43に格納されている画像データを元フレームの画像データとして、参照ブロックについてのSAD値を求めるようにする。SAD値は、例えば輝度信号成分Yを用いて求めるのは前述の第1の実施形態と同様である。輝度信号成分のみでなく、色差信号成分をも含めて、SAD値を求めてももちろんよい。
このように、この第2の実施形態では、データ変換部14からのストリーム画像データを参照フレームの画像データとする。このため、ある入力画素に対して、この画素を要素とする参照ブロックが、参照フレーム上に同時に複数存在することになる。図34は、そのことを説明するための図である。
すなわち、参照フレーム102上のサーチ範囲105における入力画素Dinは、例えば、参照ベクトル1071が対応する参照ブロック1061の左側に位置する画素であると共に、参照ベクトル1072が対応する参照ブロック1062の右上に位置する画素となっていることが、この図34から分かる。
したがって、入力画素Dinが参照ブロック1061に属するとした場合には、ターゲットブロック103の画素D1を読み出して、その差分を算出する必要がある。また、入力画素Dinが参照ブロック1062に属するとした場合には、ターゲットブロック103の画素D2を読み出して、その差分を算出する必要がある。
図34および後述の図35では簡単のため、2つの参照ブロックのみを図示しているが、実際上は、入力画素Dinを、その参照ブロック内の画素とする参照ブロックは多数となる。
この第2の実施形態の場合のSAD演算は、入力画素Dinの輝度値Yと、各々の参照ブロック内の入力画素Dinの位置に対応した、ターゲットブロック内の画素の輝度値Yとの差分絶対値を算出し、その算出した差分絶対値を、それぞれの参照ブロックに対応した参照ベクトルに従って、SADテーブルに加算してゆくようにして行なう。
例えば、入力画素Dinが参照ブロック1061に属するとした場合における、ターゲットブロック103の画素D1と入力画素Dinとの差分絶対値は、図35に示すように、SADテーブル108の参照ベクトル1071が対応するSADテーブル要素1092のSAD値に加算して書き込むようにする。また、入力画素Dinが参照ブロック1062に属するとした場合における、ターゲットブロック103の画素D2と入力画素Dinとの差分絶対値は、図35に示すように、SADテーブル108の参照ベクトル1072が対応するSADテーブル要素1092のSAD値に加算して書き込むようにする。
したがって、サーチ範囲内の全ての領域の入力画素が入力されて処理が終了したときには、SADテーブルが完成することになる。つまり、リアルタイムでSADテーブルが作成されるものである。
データ変換部14からのデジタル撮像信号の最初の1フレームは、フレームメモリ43に格納されるのみで、動きベクトル検出部15ではSAD値を求める等の演算処理は、行われない。
そして、最初の1フレームがフレームメモリ41に格納されると、次の、フレームのデジタル撮像信号からは、動きベクトル検出部15は、参照ブロックについてのSAD値の演算を開始する。この場合、動きベクトル検出部15は、図34および図35を用いて説明したように、データ変換部14からの画像データと、当該画像データと比較すべき画像が含まれると考えられるすべての参照ブロックの画像データを、システムバス2を介してフレームメモリ43から読み出して、それぞれについてのSAD値を求め、求めたSAD値を、それぞれの参照ブロックに対応するSADテーブルアドレスのSAD値に加算するようにする。
そして、この実施形態では、動きベクトル検出部15は、例えば図21に示したような1フレームにおける複数個のサーチ範囲のそれぞれにおけるSADテーブルを作成して、そのSADテーブルにおけるSAD値の最小値を求めて、各サーチ範囲についての動きベクトル(サーチ範囲毎動きベクトル)をそれぞれ求める。
そして、動きベクトル検出部15は、1フレームにおける複数個のサーチ範囲のすべてのサーチ範囲毎動きベクトルから、過去の動きベクトルに対する推移関係をも考慮して、1フレームについての動きベクトルであるグローバル動きベクトルを検出する。そして、動きベクトル検出部15は、その検出結果であるグローバル動きベクトルを、その後段の解像度変換部16に制御信号として伝達する。
解像度変換部16は、動きベクトル検出部15から受け取ったグローバル動きベクトルにしたがって、フレームメモリ43に格納されている遅延フレームの画像データを切り出しながら、必要な解像度および画像サイズに変換する処理をする。このフレームメモリ43からのグローバル動きベクトルにしたがった切り出しにより、変換後の画像は、手ぶれが除去された画像となる。
図35の説明は、従来手法に、リアルタイムSAD算出処理を適用した場合である。この第2の実施形態においては、図35において、SADテーブル108の参照ベクトル1071または1072が対応するSADテーブル要素1091または1092のSAD値として、算出した差分絶対値のそれぞれを、加算して書き込むのではなく、前述した第1の実施形態のように、参照ベクトル1071,1072を縮小倍率1/nで縮小した参照縮小ベクトルを算出し、その参照縮小ベクトルの近傍の複数の参照ベクトルに、前記算出した差分絶対値から、それぞれを分散加算するための分散加算値を求め、求めた分散加算値を、前記近傍の複数の参照ベクトルに対応するSAD値に加算するようにするものである。
SADテーブル(縮小SADテーブル)が完成した後の正確な動きベクトルを検出するための処理は、この第2の実施形態においても、前述した第1の実施形態で述べた手法と全く同様にして、2次曲面や、水平方向および垂直方向の3次曲線を用いた手法を用いることができる。
[第2の実施形態における動きベクトル検出部15の構成例]
上述のようにして、撮像画像のデータについて、1フレーム内で、複数個のサーチ範囲を設定し、リアルタイムでそれぞれのサーチ範囲における動きベクトルを検出しようとする場合、動きベクトル検出部15の入力撮像画像データは、撮像素子11から、主走査方向を水平方向とし、副走査方向を垂直方向として読み出されたラスタースキャン方式の画像データであるので、すべてのサーチ範囲の各々に対して、SAD演算処理部とSADテーブルメモリとを1対1に対応して設けるようにするのが通常である。
上述のようにして、撮像画像のデータについて、1フレーム内で、複数個のサーチ範囲を設定し、リアルタイムでそれぞれのサーチ範囲における動きベクトルを検出しようとする場合、動きベクトル検出部15の入力撮像画像データは、撮像素子11から、主走査方向を水平方向とし、副走査方向を垂直方向として読み出されたラスタースキャン方式の画像データであるので、すべてのサーチ範囲の各々に対して、SAD演算処理部とSADテーブルメモリとを1対1に対応して設けるようにするのが通常である。
しかし、そのような構成では、回路規模が大きくなるとともに、SADテーブルメモリのサイズは、サーチ範囲に対応する一つ一つのSADテーブルメモリサイズは、小さいが、全体としては、1フレーム分となるので、やはり、非常に大きなものとなる。したがって、処理の高速化のために、当該SADテーブルメモリを、高価なSRAMで構成することは、前述したように、民生用としては非現実的であり、実現が困難である。
この第2の実施形態では、ターゲットブロックやサーチ範囲の設定を工夫することにより、複数のサーチ範囲に対してSAD演算処理部およびSADテーブルメモリを、できるだけ、共用化することができるようにして、回路規模の縮小化およびコストの低廉化を可能にするものである。
図36および図37は、この第2の実施形態における回路規模の縮小化およびコストの低廉化を説明するための図である。この例においては、図36(A)、(B)に示すように、参照フレーム102における複数個のサーチ範囲105のそれぞれが、画像領域として互いに重ならないように設定する。
元フレーム101のターゲットブロック103の大きさは、検出すべき動きベクトルの大きさに応じたものとして、各サーチ範囲105内のものとして設定される。なお、この明細書の以下の説明では、ターゲットブロック103の大きさの枠103FLを、検波枠と称することとする。
検波枠103FLの大きさは、サーチ範囲105を超えることはできない。そして、検波枠103FLの大きさが、あまりに小さい場合には、動きベクトルの検出精度の点で問題となる。
また、ターゲットブロックに対応する参照ブロックがサーチ範囲105内において移動できる量が、検出対象となる動きベクトルの大きさに対応するので、検出対象となる動きベクトルの大きさが大きい場合には、検波枠103FLの大きさは小さくなり、逆に、検出対象となる動きベクトルの大きさが小さい場合には、検波枠103FLの大きさは大きくすることができる。
以上のことを考慮して、検出対象の動きベクトルの大きさを考慮しながら、検波枠103FLおよびサーチ範囲105のサイズや、フレーム内に設定するそれらの数を決定する。
図36に示す例においては、図36(A)に示すように、ターゲットブロック103、すなわち、検波枠103FLを水平方向に4個、垂直方向にも4個設けるようにしており、このため、水平方向にサーチ範囲105を4個、垂直方向にサーチ範囲105を4個の合計16個のサーチ範囲105を設定するようにする。
ここで、図36における1フレーム当たりの検波枠103FLの数は一例であり、この例で重要なのは、サーチ範囲105が互いに重ならないように設定することである。
この例は、隣り合うターゲットブロック間の距離が、検出すべき動きベクトルの大きさに応じたものとなってしまうので、所定の大きさ以上の検波枠103FLを得ることを考えると、検出すべき動きベクトルの大きさが小さいときに好適な例である。
複数のデジタルスチルカメラやデジタルビデオカメラによる多人数評価の結果、倍率10倍の光学ズームを用いることを前提として、手ぶれを計測した場合、動画では、60fpsのレートで、約±2%の比較的小さい手ぶれが観測された。この%で表した手ぶれの数値は、図36(A)に示すように、全フレーム枠の水平方向を100%、垂直方向を100%としたときの、手ぶれ補正ベクトルの範囲を表した値である。なお、この明細書では、後述するターゲットブロック103の大きさやサーチ範囲105の大きさも、同様にして、%数値で表すものとする。
また、光学ズーム倍率が低い、もしくは光学ズームが存在しないカメラの場合、静止画の場合であっても、考慮しなければならない手ぶれの数値は、上記と同程度である。さらには、この実施形態の動きベクトル検出部15では、予め光学式手ぶれ補正で大まかな補正を行った後の撮像画像データから動きベクトルを求めるものであり、例えば光学ズーム倍率が10倍を想定した場合であっても、この実施形態の動きベクトル検出部15において検出しなければならない動きベクトルの大きさは、上記と同程度でよい。したがって、この第2の実施形態は、この発明において非常に有効である。
図36の例では、サーチ範囲105が、水平方向に4個、垂直方向に4個であるので、サーチ範囲105の大きさを、(水平方向のサイズ(%)、垂直方向のサイズ(%))で表したとき、図37(A)、(B)に示すように、サーチ範囲105の最大値は(25%、25%)となる。このときの動きベクトルの検出範囲は、図37(B)に示すように、サーチ範囲と同様の表し方をしたときには、最大(±12.5%、±12.5%)となる。
そして、検波枠103FLの大きさは、図37(A)に示すように、同様の表現形式で示すと(0〜25%、0〜25%)となって、最大(25%、25%)となる。
この例においては、サーチ範囲105は、上記の条件の範囲内で、適切な値にされると共に、動きベクトルの検出範囲および検波枠の大きさも、適切な値に選定される。例えば、サーチ範囲は、最大値(25%、25%)とされると共に、動きベクトルの検出範囲として、(±2.5%、±2.5%)が想定され、検波枠103FLは(20%、20%)とされる。
図36の例に示したように、参照フレーム102上において、すべてのサーチ範囲105が互いに重ならないようにした場合は、SAD演算処理部(以下、SAD演算処理エンジンと称する)を、すべてのサーチ範囲105の処理において共用して、1個とすることができる。
しかし、撮像画像データがラスタースキャン方式の画像データであるので、主走査方向である水平方向の走査期間において、4つのサーチ範囲についてSAD演算処理を行う必要があり、そのため、当該水平方向のサーチ範囲の数分、この例では4個のSADテーブルメモリを設ける必要がある。
そして、SAD演算処理エンジンは、図36(B)に示すように、SAD演算処理をしようとする撮像画像データが、水平方向の4個のサーチ範囲に対応する水平方向の4個の領域Xa,Xb,Xc,Xdのいずれに含まれるものであるかを認識して、その認識結果に応じて、それら4個のSADテーブルメモリを切り替えて使用するようにする。
垂直方向の複数個のサーチ範囲に関しては、水平方向の4個の領域Xa,Xb,Xc,Xdに対応して設けられる4個のSADテーブルメモリを共用することができる。すなわち、この第2の実施形態では、SADテーブルメモリに、一つのサーチ範囲についてのSADテーブル情報が格納されると、SAD演算処理エンジンにより、後述するようにして、サーチ範囲毎動きベクトルが検出され、その検出結果のサーチ範囲毎動きベクトルの情報が他の記憶部に転送される。
こうして、一つのサーチ範囲についてのSAD演算処理が終了した後には、当該SADテーブルメモリの記憶内容は削除可能となる。したがって、処理対象のサーチ範囲が垂直方向に変わったときには、対応する水平方向領域のSADテーブルメモリを利用することができる。
図38は、この第2の実施形態における動きベクトル検出部15の詳細構成例を示すものである。
すなわち、図38に示すように、この例における動きベクトル検出部15は、入力バッファ151と、1個のSAD演算処理エンジン152と、例えばSRAMからなる4個のSADテーブルメモリ153a,153b,153c,153dと、例えばDRAM(Dynamic RAM)からなる1フレーム分の動きベクトル記憶用の動きベクトル記憶部154と、グローバル動きベクトル算出部155とを備えて構成されている。
この例では、SADテーブルメモリ153aは水平方向の領域Xa用、SADテーブルメモリ153bは水平方向の領域Xb用、SADテーブルメモリ153cは水平方向の領域Xc用、SADテーブルメモリ153dは水平方向の領域Xd用、としてそれぞれ用いられるものである。
4個のSADテーブルメモリ153a,153b,153c,153dは、SAD演算処理エンジン152に接続されると共に、バス150に接続されている。バス150には、動きベクトル記憶部154とグローバル動きベクトル算出部155とが、さらに接続されている。
そして、データ変換部14からの撮像画像データDinが、入力バッファ151を通じて直接的に動きベクトル検出部15のSAD演算処理エンジン152に供給されると共に、画像メモリ部4を構成するフレームメモリ43に供給されて、1フレーム分遅延された後、SAD演算処理エンジン152に供給される。
なお、検波枠103FL(ターゲットブロック)の全ての画素データを、フレームメモリ43に記憶すると大量のメモリ容量が必要となるため、画素データとしては、例えばn個(nは1以上の整数)おきの画素などの代表点のみをフレームメモリ43に記憶し、SAD演算も、この代表点に関してのみ行って、演算量自体を削減するようにする。
SAD演算処理エンジン152は、入力撮像画像データDinが、水平方向の4個の領域Xa,Xb,Xc,Xdのいずれに属するかにより、当該入力撮像画像データDinのSAD演算処理に用いるSADテーブルとして、4個のSADテーブルメモリ153a,153b,153c,153dのうちのいずれを使用するかを決定する。
そして、SAD演算処理エンジン152は、各サーチ範囲について、後述するようなSAD演算処理を行って、各サーチ範囲に対応するSADテーブルメモリに、SADテーブルの情報を格納する。
そして、SAD演算処理エンジン152は、それぞれのサーチ範囲についてのSADテーブルの生成を完了したら、そのSADテーブルからSAD値の最小値を求め、そのSAD値の最小値から、サーチ範囲毎動きベクトルを検出する。さらに、SAD演算処理エンジン152は、検出したサーチ範囲毎動きベクトルを動きベクトル記憶部154に転送し、その後、当該動きベクトルの検出処理が終了したサーチ範囲用として用いていたSADテーブルメモリをクリアして、次のサーチ範囲用のSADテーブルメモリとして使用する準備を行う。
1フレーム分のすべての撮像画像データについて、SAD演算処理エンジン152での処理が終了すると、動きベクトル記憶部154には、当該1フレームにおける複数個のターゲットブロック(検波枠)のすべてについての動きベクトルの情報が格納される。
グローバル動きベクトル算出部155は、動きベクトル記憶部154に格納された1フレームについての複数個の動きベクトルを、当該動きベクトル記憶部154に格納されている過去の動きベクトルからの推移をも参酌しながら、当該フレームについてのグローバル動きベクトルを検出する。そして、グローバル動きベクトル算出部155は、算出したグローバル動きベクトルの情報を、解像度変換部16に供給するようにする。
上述した第2の実施形態における動きベクトル検出部15も、ハードウエアにより構成することができるし、また、DSP(Digital Signal Processor)を用いて構成することもできる。さらには、CPU1によりソフトウエア処理とすることもできる。
[第2の実施形態における動きベクトル検出部15の処理動作例]
動きベクトル検出部15のSAD演算処理エンジン152における動きベクトルの検出処理動作の例の流れを、図39および図40のフローチャートを参照して、以下に説明する。なお、この図39および図40のフローチャートの処理は、説明の便宜上、1フレームの撮像画像データについての処理として示している。
動きベクトル検出部15のSAD演算処理エンジン152における動きベクトルの検出処理動作の例の流れを、図39および図40のフローチャートを参照して、以下に説明する。なお、この図39および図40のフローチャートの処理は、説明の便宜上、1フレームの撮像画像データについての処理として示している。
先ず、SAD演算処理エンジン152では、入力画像のフレーム(参照フレーム)の任意の位置(x,y)の画素データDin(x,y)を受け取る(ステップS201)。次に、当該入力画像データDin(x,y)の、フレーム上の画素の位置(x,y)を識別する(ステップS202)。
そして、認識した画素位置から、フレーム上のいずれのサーチ範囲の画素データであるかを判別し、その判別結果に基づいて、SADテーブルメモリ153a,153b,153c,153dのうちの一つのSADテーブルメモリを、SADテーブル値の格納用メモリとして選択決定する(ステップS203)。
次に、SAD演算処理エンジン152は、当該入力撮像画像データの画素の位置(x,y)を含む複数の参照ブロックの一つに対応する参照ベクトル(vx,vy)を設定する(ステップS204)。
前述したように、(vx,vy)は、ターゲットブロックのフレーム上の位置(サーチ範囲の中心位置である)を基準位置(0,0)としたときに、指定された参照ベクトルにより示される位置を示し、vxは指定された参照ベクトルによる、基準位置からの水平方向のずれ量成分であり、また、vyは指定された参照ベクトルによる、基準位置からの垂直方向成分のずれ量成分である。そして、前述の従来例で述べたのと同様に、ずれ量vx、vyは、画素を単位とした値とされている。
ここで、サーチ範囲の中心位置を前記基準位置(0,0)とし、サーチ範囲を、水平方向には±Rx、垂直方向には±Ryとしたとき、
−Rx≦vx≦+Rx、−Ry≦vy≦+Ry
とされるものである。
−Rx≦vx≦+Rx、−Ry≦vy≦+Ry
とされるものである。
次に、設定された参照ベクトル(vx,vy)の参照ブロックIiの当該画素値Ii(x,y)と、これに対応するターゲットブロックIo内の画素値Io(x−vx,y−vy)との差分の絶対値αを算出する(ステップS205)。すなわち、差分絶対値αは、
α=|Io(x−vx,y−vy)−Ii(x,y)| ・・・(式3)
として算出される。
α=|Io(x−vx,y−vy)−Ii(x,y)| ・・・(式3)
として算出される。
次に、縮小倍率を1/nとして、参照ベクトル(vx,vy)を1/nに縮小した参照縮小ベクトル(vx/n,vy/n)を算出する(ステップS206)。
次いで、参照縮小ベクトル(vx/n,vy/n)の近傍の複数の参照ベクトル、この例では、上述したように4個の近傍参照ベクトルを検知する(ステップS207)。そして、検知した4個の近傍参照ベクトルのそれぞれに対応するテーブル要素として分散加算すべき値(差分絶対値)を、前述したように、参照縮小ベクトルと近傍参照ベクトルとがそれぞれ示す位置の関係に基いて、ステップS205で求めた差分絶対値αから、線形加重分散値として求める(ステップS208)。
そして、求めた4個の線形加重分散値を、ステップS203で選択されたSADテーブルメモリのSADテーブルにおいて、近傍参照ベクトルのそれぞれに対応するSADテーブル要素値に加算する(ステップS209)。
次に、入力画素Din(x,y)を含む参照ブロックの全てについての上記ステップS204〜ステップS208の演算を行なったか否か判別し(ステップS210)、当該入力画素Din(x,y)を含む他の参照ブロックがあると判別したときには、ステップS104に戻り、当該入力画素Dinを含む他の参照ブロック(vx,vy)を設定し、このステップS204〜ステップS209の処理を繰り返す。
また、ステップS210で、入力画素Din(x,y)を含む参照ブロックの全てについての上記ステップS204〜ステップS209の演算を行なったと判別したときには、サーチ範囲内の全ての入力画素Dinについて、上記の演算ステップの処理を終了したか否か判別し(図40のステップS221)、終了していないと判別したときには、図39のステップS201に戻り、次の入力画素Dinを取り込み、このステップS201以降の処理を繰り返す。
そして、ステップS221で、サーチ範囲内の全ての入力画素Dinについて、上記の演算ステップの処理を終了したと判別すると、縮小SADテーブルが完成したとして、当該完成した縮小SADテーブルにおいて、最小値となっているSAD値を検出する(ステップS222)。
次に、当該最小値となっているテーブル要素アドレス(mx,my)のSAD値(最小値)と、その近傍の複数個、この例では、上述したように15個の近傍テーブル要素のSAD値を用いて2次曲面を生成し(ステップS223)、その2次曲面の最小値のSAD値が対応する小数精度の位置を示す最小値ベクトル(px,py)を算出する(ステップS224)。この最小値ベクトル(px,py)は、小数精度の最小テーブル要素アドレスに対応している。
そして、算出した小数精度の位置を示す最小値ベクトル(px,py)をn倍することにより、当該サーチ範囲について求めるべき動きベクトル(px×n,py×n)を算出する(ステップS225)。
次に、算出したサーチ範囲毎動きベクトル(px×n,py×n)の情報を、動きベクトル記憶部154に転送し、その後、当該SAD演算処理が終了したサーチ範囲についてのSADテーブルメモリの記憶内容をクリアして、後のサーチ範囲の処理用として使用可能な状態にする(ステップS226)。
そして、次に、1フレーム内のすべてのサーチ範囲についての処理を終了したか否かを判別し(ステップS227)、1フレーム内に未処理のサーチ範囲があると判別したときには、図39のステップS201に戻り、このステップS201以降の処理を繰り返す。また、ステップS227で、1フレーム内のすべてのサーチ範囲についての処理が終了したと判別したときには、この処理ルーチンを終了する。
以上で、1フレーム内に設定された複数個のサーチ範囲におけるターゲットブロックに対するブロックマッチングによる動きベクトルの検出処理は終了となるが、実際の処理においては、図39および図40の処理が複数フレームに渡って繰り返されるものである。
そして、前述したように、1フレームについての複数個のサーチ範囲毎動きベクトルの検出が終了すると、グローバル動きベクトル検出部155が動作を開始し、動きベクトル記憶部154に格納されているそれらの複数個のサーチ範囲毎動きベクトルおよびそれより過去の複数個のサーチ範囲毎動きベクトルを用いて、グローバル動きベクトルを検出する。
なお、上述の例では、小数精度の位置を示す最小値ベクトル(px,py)を算出する方法としては、2次曲面を用いる方法を使用したが、前述した水平方向および垂直方向の3次曲線を用いる方法を用いても良いことは言うまでもない。
なお、この例においても、小数精度の位置を示す最小値ベクトル(px,py)を算出する方法としては、前述した水平方向および垂直方向の3次曲線を用いる方法を用いても良いことは前述の例と同様である。
また、前述の第1の実施形態の第3の例と同様にして、この第2の実施形態においても、サーチ範囲を絞りながら、かつ、必要に応じて縮小倍率を変更しながら、2段階以上、縮小SADテーブルを用いた動きベクトル検出処理を繰り返すようにしても、勿論良い。
この第2の実施形態のメリットは、フレームメモリを、第1の実施形態に比べて1枚分削減できることと、フレームメモリに入力画像を格納する時間を短縮できること、動きベクトル検出部15の構成を簡略化することができて、回路規模の縮小化およびコストの低廉化が図れることである。
メモリ削減の効果は言うまでもないが、処理時間の短縮も、近年、重要視されて来ている。特に動画を扱う場合、そのままシステム遅延の短縮に繋がるため、システム遅延が原因で生じる、実際の被写体とパネル表示画像の間に生じる違和感をなるべく無くすことは、ユーザへの訴求効果が高い。
[この発明による撮像画像の歪み補正装置第3の実施形態]
上述の第1および第2の実施形態においては、動きベクトル検出部15では、光学的手ぶれ補正によって補正しきれずに残留する動きベクトルを検出することができるサーチ範囲を、光学的手ぶれ補正の性能を考慮して、固定的に設定するようにした。
上述の第1および第2の実施形態においては、動きベクトル検出部15では、光学的手ぶれ補正によって補正しきれずに残留する動きベクトルを検出することができるサーチ範囲を、光学的手ぶれ補正の性能を考慮して、固定的に設定するようにした。
このため、光学的手ぶれ補正によって補正しきれずに残留する動きベクトルの最大値と、光学的手ぶれ補正におけるフィードバック遅延、ジャイロセンサ7自身の手ぶれ動きベクトルの検出誤差とを考慮すると共に、所定のマージンを考慮して、比較的大きいサーチ範囲を設定する必要がある。
この第3の実施形態は、この問題を改善したものである。この第3の実施形態は、上述した第1の実施形態および第2の実施形態のいずれにも適用可能であるが、ここでは、第2の実施形態に適用した場合について説明する。
図41は、この第3の実施形態が適用された撮像装置の一例のブロック図を示すもので、前述の図33に示した第2の実施形態が適用された撮像装置と同一部分には、同一符号を付してある。
この第3の実施形態においても、CPU1は、ジャイロセンサ7の検出出力から、発生した手ぶれに応じた動きベクトル(手ぶれベクトル)を検出し、検出した動きベクトルから光学的手ぶれ補正信号CTLを生成する。そして、この第3の実施形態では、特に、CPU1は、ジャイロセンサ7の検出出力から検出した動きベクトルの情報Vecを動きベクトル検出部15に供給するようにする。
この第3の実施形態における動きベクトル検出部15では、動きベクトルの検出時のサーチ範囲を、上述した第1および第2の実施形態のように固定的に設定するのではなく、CPU1から供給されてくる動きベクトルの情報Vecを参照して、動的に決定するようにする。
前述したように、サーチ範囲の設定に当たっては、ジャイロセンサ7で検出された手ぶれ動きベクトルの大きさと、アクチュエータ8による光学的手ぶれ補正機構におけるフィードバック遅延を考慮する必要がある。
すなわち、前記フィードバック遅延により、撮像素子11から読み出された撮像画像データが得られる時点でのジャイロセンサ7の検出出力である手ぶれ動きベクトルが、光学的手ぶれ補正信号を生成する源となる手ぶれ動きベクトルとが異なっている恐れがあり、その手ぶれ動きベクトルの異なり分は、動きベクトル検出部15で検出される動きベクトルに含まれるからである。
つまり、光学的手ぶれ補正は、前記フィードバック遅延の存在のために、当該補正時点で実際に生じている手ぶれベクトルに応じて行われるのではなく、当該補正時点よりもフィードバック遅延時間分前の手ぶれベクトルに応じて行われ、その遅延時間の間における手ぶれベクトルの異なり分に応じた画像歪みが、撮像素子11からの画像データに残留することになる。
前記フィードバック遅延は、一般に固定的な時間量であり、測定可能あるいは所定の遅延時間として見込むことができる。そこで、動きベクトル検出部15で、動きベクトルを検出しようとしている画像データが撮像素子11から得られた時点(現時点)T1と、それよりもフィードバック遅延時間分前の時点T2のときの、両時点におけるジャイロセンサ7の検出出力から検出された手ぶれベクトルの大きさが分かれば、その差分としてフィードバック遅延による前記手ぶれ動きベクトルの異なりは検知することができる。
そして、当該フィードバック遅延による前記手ぶれ動きベクトルの異なりと、現時点におけるジャイロセンサ7の検出出力に基づく手ぶれ動きベクトルの大きさとが検知できれば、必要なサーチ範囲の大きさを適切に設定することが可能になる。
この第3の実施形態の動きベクトル検出部15では、上述の点に基づいて、CPU1からの手ぶれ動きベクトルの情報Vecを参照して、フィードバック遅延による前記手ぶれ動きベクトルの異なりと、現時点におけるジャイロセンサ7の検出出力に基づく手ぶれ動きベクトルの大きさとを検知し、それに基づいて、サーチ範囲を設定するようにする。
このように、第3の実施形態では、動きベクトル検出部15においては、CPU1からの手ぶれ動きベクトルの情報Vecを参照することにより、撮像画像データからの動きベクトルの検出時のサーチ範囲を必要最小限に設定することができる。このため、この第3の実施形態によれば、SADテーブルの規模を、より小さくすることができると共に、高精度の手ぶれベクトルを検出することができて、高精度の手ぶれ補正ができるようになる。
次に、この第3の実施形態における動きベクトル検出部15の処理動作例のフローチャートを図42および図43に示す。
すなわち、この第3の実施形態における動きベクトル検出部15においては、SAD演算処理エンジン152は、まず、CPU1からの手ぶれ動きベクトルの情報Vecを参照して、フィードバック遅延による前記手ぶれ動きベクトルの異なりと、現時点におけるジャイロセンサ7の検出出力に基づく手ぶれ動きベクトルの大きさとを検知する。そして、検知したフィードバック遅延による前記手ぶれ動きベクトルの異なりと、現時点におけるジャイロセンサ7の検出出力に基づく手ぶれ動きベクトルの大きさと、ジャイロセンサ7の精度および所定のマージンなどを考慮して、サーチ範囲を決定する(ステップS301)。
このステップS301の後は、前述した第2の実施形態における動きベクトル検出部15の処理動作例として示した図39および図40のフローチャートに示したステップS201〜ステップS210およびステップS221〜ステップS227の処理を実行する。
そして、この例では、ステップS227で、1フレーム内に未処理のサーチ範囲があると判別したときには、図42のステップS301に戻り、再度、CPU1からの手ぶれ動きベクトルVecを参照して、前述したようにして、サーチ範囲を設定する。そして、ステップS201〜ステップS210およびステップS221〜ステップS227の処理を繰り返す。
ステップS227で、1フレーム内のすべてのサーチ範囲についての処理が終了したと判別したときには、この処理ルーチンを終了する。
なお、この例では、サーチ範囲毎に、CPU1からの動きベクトルの情報Vecを参照してサーチ範囲を設定するようにしたが、サーチ範囲は1フレーム単位で設定するようにしてももちろんよい。その場合には、図43のステップS227で、1フレーム内に未処理のサーチ範囲があると判別したときには、図42のステップS201に戻るようにする。
[この発明による撮像画像の歪み補正装置第4の実施形態]
上述の実施形態では、光学的手ぶれ補正により補正し切れなかった手ぶれ等による画像歪みを、撮像素子からの画像データから動きベクトルを動きベクトル検出部15により検出し、検出した動きベクトルを用いて除去するようにした。したがって、上述の実施形態の場合、動きベクトルの検出のために、少なくとも2フレームの画像データを必要としており、フレームメモリが必須であった。
上述の実施形態では、光学的手ぶれ補正により補正し切れなかった手ぶれ等による画像歪みを、撮像素子からの画像データから動きベクトルを動きベクトル検出部15により検出し、検出した動きベクトルを用いて除去するようにした。したがって、上述の実施形態の場合、動きベクトルの検出のために、少なくとも2フレームの画像データを必要としており、フレームメモリが必須であった。
第4の実施形態は、上述の動きベクトル検出部15を用いることなく、光学的手ぶれ補正により補正し切れずに残留する画像歪み分を軽減することができるようにしたもので、特に、1フレーム内の画像データのみを用いて、前記画像歪み分を軽減するようにするものである。
図44は、この第4の実施形態の場合における撮像装置の構成例のブロック図であり、前述の実施形態における撮像装置の構成例と同一部分には、同一符号を付してその詳細な説明は省略するものとする。
この第4の実施形態においては、図44に示すように、動きベクトル検出部15に代えて、画像ぼけ補正処理部19を設け、データ変換部14からの輝度信号成分および色信号成分からなる画像データが、この画像ぼけ補正処理部19に供給される。この第4の実施形態では画像メモリ部4は不要である。ただし、画像ぼけ補正処理部19は、画像ぼけを補正するための画像バッファ(図示を省略)を備えるものである。
この画像ぼけ補正処理部19においては、データ変換部14からの画像データによる画像が、上述した光学的手ぶれ補正により補正し切れずに残留する画像歪み分を含むときに、当該残留する手ぶれ分(画像の動きぼけ)を、それが無い、つまり、画像の動きぼけが補正された画像が得られる画像データに変換する処理を行う。
この画像ぼけ補正処理部19における補正処理は、例えば特開2001−250119号公報および特開2005−328117号公報などに詳細に示されているので、ここではその詳細な説明は省略する。
この第4の実施形態では、この画像ぼけ補正処理部19には、CPU1でジャイロセンサ7の検出出力に基づいて生成された手ぶれ動きベクトルの情報Vecが供給される。画像ぼけ補正処理部19では、この実施形態においては、この手ぶれ動きベクトルの情報Vecを参照して、例えば、所定の大きさ以上の手ぶれ動きベクトルが存在しているときには、画像ぼけ補正処理を行い、そのような手ぶれ動きベクトルが存在していないときには、画像ぼけ処理を行わずに、そのまま解像度変換部16に撮像画像データを供給するようにする。
なお、画像ぼけ補正処理部19における画像ぼけ補正処理においては、手ぶれ動きベクトルの情報Vecを参照して、最新の手ぶれ動きベクトルと、前述した光学的手ぶれ補正におけるフィードバック遅延時間分前の手ぶれ動きベクトルとの差分を考慮した画像ぼけ補正処理を行うようにしても勿論よい。
図45に、この第4の実施形態における画像ぼけ補正処理部19の処理動作例のフローチャートを示す。この例は、CPU1からの手ぶれ動きベクトルの情報Vecを参照して、所定の大きさ以上の手ぶれ動きベクトルが存在しているときには、画像ぼけ補正処理を行い、そのような手ぶれ動きベクトルが存在していないときには、画像ぼけ処理を行わずに、そのまま解像度変換部16に撮像画像データを供給するようにする例である。
すなわち、図45の例においては、画像ぼけ補正処理部19においては、まず、CPU1からの手ぶれ動きベクトルの情報Vecを参照する(ステップS401)。そして、その参照結果により、所定の大きさ以上の手ぶれが生じているか否か判別する(ステップS402)。ここで、所定の大きさとは、手ぶれとみなせるような動きベクトルの大きさの意味であり、手ぶれが生じたとみなせないような微小な動きベクトルのときには、画像ぼけ処理を行わずに、処理の軽減を図るためである。
このステップS402で、所定の大きさ以上の手ぶれが生じていると判別したときには、撮像画像データについて画像ぼけ補正処理を実行するようにする(ステップS403)。そして、画像ぼけ補正処理後の画像データを、解像度変換部16に出力するようにする(ステップS404)。
また、ステップS402で、所定の大きさ以上の手ぶれが生じていないと判別したときには、画像ぼけ補正処理を行わずに、画像データを解像度変換部16に出力するようにする(ステップS404)。
この第4の実施形態によれば、画像メモリ部4を設けなくて良いため、撮像装置の構成をより簡略化することができると共に、コストダウンに寄与する。
[その他の実施形態および変形例]
なお、上述の実施形態の説明は、撮像装置を操作するユーザにより生起される手ぶれによる画像歪みを補正する場合であったが、ユーザにより生起される手ぶれのみではなく、撮影時に、撮像素子に対して、その撮像画像の水平方向および/または垂直方向の位置的変化を生じるように加わった振動などの偏倚力に起因して生じる画像歪みをも補正することができることは言うまでもない。
なお、上述の実施形態の説明は、撮像装置を操作するユーザにより生起される手ぶれによる画像歪みを補正する場合であったが、ユーザにより生起される手ぶれのみではなく、撮影時に、撮像素子に対して、その撮像画像の水平方向および/または垂直方向の位置的変化を生じるように加わった振動などの偏倚力に起因して生じる画像歪みをも補正することができることは言うまでもない。
また、この発明は、撮像装置(カメラ)にのみ適用されるものではなく、例えば携帯電話端末、情報携帯端末などに撮像素子が取付けられて、画像を撮影する場合にも適用できるものである。さらに、ユーザが手で持って撮影を行なう装置にのみに適用されるものではなく、パーソナルコンピュータやテレビ電話装置などの固定的に設置される装置に対して外力が加わって振動等が生じる場合、また、自動車などに撮像素子が取付けられて、画像を撮影する場合にも適用可能である。
また、上述の第1〜第3の実施形態の説明では、動きベクトル検出部15における参照ベクトルの縮小倍率は水平方向と垂直方向とで同一としたが、水平方向と、垂直方向とで、参照ベクトルの縮小倍率を異ならせるようにしても良い。
また、上述の第1〜第3の実施形態においては、参照ブロックおよびターゲットブロック内の全ての画素についてSAD値を求めるようにしてもよいが、上述の実施形態のように、例えばk個(kは自然数)おきの画素のみを用いてSAD値を求めるようにするとよい。
また、第2の実施形態として説明したリアルタイム処理の動きベクトル検出部15では、演算コストと処理時間削減を目的として、ターゲットブロック内の代表点のみを参照ブロック内でサーチする、SAD演算がしばしば行われているが、この発明においても、元フレームを格納するフレームメモリには、フレーム画像内におけるそれぞれのブロックの代表点のみを格納することにより、大幅なメモリ削減が図れる。また、フレームメモリとは別に、小規模な代表点メモリをローカルで持ち、グローバルメモリ(DRAM)の帯域削減を図っても良い。
また、上述の第1〜第3の実施形態では、画素の差分値およびSAD値は、画素の輝度値Yのみを用いて演算するものとしたが、動きベクトル検出のために、輝度値Yだけでなく、色差成分Cb/Crを用いてもよい。また、データ変換部14で輝度値Yおよび色差成分Cb/Crに変換される前のRAWデータを対象として、動きベクトル検出処理を行ってもよい。
なお、上述の説明では、SAD演算処理は、参照ベクトルを縮小してSAD演算処理を行う新規な方法を用いる場合について説明したが、図47〜図50を用いて説明した従来のSAD演算処理を用いることができることは言うまでもない。
101…元フレーム、102…参照フレーム、103…ターゲットブロック、105…サーチ範囲、106…参照ブロック、107…参照ベクトル、15…動きベクトル検出部、16…歪み補正解像度変換部、19…画像ぼけ補正処理部、41〜43…フレームメモリ、TBLs…縮小SADテーブル、TBLo…従来のSADテーブル、RV…参照ベクトル、CV…参照縮小ベクトル、NV1〜NV4…近傍参照ベクトル
Claims (15)
- 撮影時の撮像素子の、撮像画像の水平方向および/または垂直方向の位置的変化に対応する変化を検出するセンサの検出出力を受信するセンサ出力受信工程と、
前記センサ出力受信工程で受信した前記センサの検出出力に応じて、被写体からの入射光の前記撮像素子への入射位置を制御する制御機構を制御して、前記撮像素子からの画像データの、前記撮像素子の前記位置的変化による撮像画像の歪みを光学的に補正する光学的補正工程と、
前記光学的補正工程で、前記光学的な撮像画像の補正がなされた前記撮像素子からの画像データを受けて、当該画像データから、撮像画像の1画面単位での動きベクトルを検出する動きベクトル検出工程と、
前記動きベクトル検出工程で検出された前記動きベクトルに基づいて、前記撮像素子からの画像データについて、前記撮像素子の前記位置的変化による撮像画像の歪みを、さらに補正するようにする画像歪み補正処理工程と、
を備えることを特徴とする撮像画像の歪み補正方法。 - 請求項1に記載の撮像画像の歪み補正方法において、
前記動きベクトル算出工程では、前記センサの検出出力を参照して、前記撮像素子からの画像データから前記動きベクトルを検出することを特徴とする撮像画像信号の歪み補正方法。 - 請求項1に記載の撮像画像の歪み補正方法において、
前記動きベクトル検出工程においては、
前記元画面中の前記各分割画像区間において、所定の位置に複数の画素からなる所定の大きさの少なくとも1個のターゲットブロックを設定し、
前記ターゲットブロックと同じ大きさの参照ブロックを、前記注目画面に設定されたサーチ範囲において複数個設定し、
前記複数個の参照ブロックの内から、前記ターゲットブロックと相関の強い前記参照ブロックを検出し、
当該検出した参照ブロックの前記ターゲットブロックに対する画面上の位置ずれ量に基づいて、前記動きベクトルを検出する
ことを特徴とする撮像画像の歪み補正方法。 - 請求項3に記載の撮像画像の歪み補正方法において、
前記動きベクトル検出工程は、
前記参照ブロックのそれぞれにおいて、当該参照ブロック内の各画素の画素値と、前記ターゲットブロック内で対応する位置の各画素の画素値との差分の絶対値の総和を求める差分絶対値和算出工程と、
前記参照ブロックのそれぞれの前記参照画面上の位置の、前記ターゲットブロックの画面上の位置との位置ずれ量を、方向成分も含む参照ベクトルとし、当該参照ベクトルを所定の縮小率で縮小した参照縮小ベクトルを得る参照縮小ベクトル取得工程と、
前記参照縮小ベクトルに応じた大きさの前記参照ベクトルを前記位置ずれ量とする、前記所定の縮小率に応じて削減された数の複数個の前記参照ブロックのそれぞれについての差分絶対値和を記憶する縮小差分絶対値和テーブルを生成するテーブル生成工程と、
前記縮小差分絶対値和テーブルにおける前記差分絶対値和の最小値に対応する前記参照ベクトルを少なくとも用いて、前記参照画面と前記元画面との間の前記分割画像区間のそれぞれについての動きベクトルを算出する動きベクトル算出工程と、
を備え、
前記テーブル生成工程は、
前記参照縮小ベクトル取得手段で取得された前記参照縮小ベクトルの近傍値となる複数の前記参照ベクトルを検出する近傍参照ベクトル検出工程と、
前記差分絶対値和算出工程で算出された前記参照ブロックのそれぞれについての前記差分の絶対値の総和から、前記近傍参照ベクトル検出工程で検出された前記近傍の複数の前記参照ベクトルのそれぞれに対応する差分絶対値和のそれぞれを算出する分散差分絶対値和算出工程と、
前記分散差分絶対値和算出工程で算出された前記近傍の複数の前記参照ベクトルのそれぞれに対応する前記差分絶対値和を、それまでの前記近傍の複数の前記参照ベクトルのそれぞれに対応する前記差分絶対値和に加算する分散加算工程と、
を備えることを特徴とする撮像画像の歪み補正方法。 - 請求項3または請求項4に記載の撮像画像の歪み補正方法において、
前記動きベクトル検出工程は、
前記センサの検出出力を参照して前記サーチ範囲を設定し、前記動きベクトルを検出することを特徴とする撮像画像の歪み補正方法。 - 撮影時の撮像素子の、撮像画像の水平方向および/または垂直方向の位置的変化を検出するセンサの検出出力を受信するセンサ出力受信工程と、
前記センサ出力受信工程で受信した前記センサの検出出力に応じて、被写体からの入射光の前記撮像素子への入射位置を制御する制御機構を制御して、前記撮像素子からの画像データの、前記撮像素子の前記位置的変化による撮像画像の歪みを光学的に補正する光学的補正工程と、
前記光学的補正工程で、前記光学的な画像補正がなされた前記撮像素子からの画像データについて、前記センサの検出出力を参照して、前記撮像素子の前記位置的変化による撮像画像の歪みを補正するようにする画像歪み補正処理工程と、
を備えることを特徴とする撮像画像の歪み補正方法。 - 請求項6に記載の撮像画像の歪み補正方法において、
前記画像歪み補正処理工程では、前記センサの検出出力を参照して前記撮像素子の位置的変化が生じたと判別したときに、前記撮像素子からの前記画像データについてぼけを検出して、当該ぼけを除去するように補正する
ことを特徴とする撮像画像の歪み補正方法。 - 撮影時の撮像素子の、撮像画像の水平方向および/または垂直方向の位置的変化を検出するセンサと、
前記センサの検出出力に応じて、被写体からの入射光の前記撮像素子への入射位置を制御する制御機構を制御して、前記撮像素子からの画像データの、前記撮像素子の前記位置的変化による撮像画像の歪みを光学的に補正する光学的補正手段と、
前記光学的な撮像画像の補正がなされた前記撮像素子からの画像データを受けて、当該画像データから、撮像画像の1画面単位での動きベクトルを検出する動きベクトル検出手段と、
前記動きベクトル検出手段で検出された前記動きベクトルに基づいて、前記撮像素子からの画像データについて、前記撮像素子の前記位置的変化による撮像画像の歪みを、さらに補正するようにする画像歪み補正処理手段と、
を備えることを特徴とする撮像画像の歪み補正装置。 - 撮影時の撮像素子の、撮像画像の水平方向および/または垂直方向の位置的変化を検出するセンサと、
前記センサの検出出力に応じて、被写体からの入射光の前記撮像素子への入射位置を制御する制御機構を制御して、前記撮像素子からの画像データの、前記撮像素子の前記位置的変化による撮像画像の歪みを光学的に補正する光学的補正手段と、
前記光学的な撮像画像の補正がなされた前記撮像素子からの画像データを受けて、当該画像データから、撮像画像の1画面単位での動きベクトルを検出する動きベクトル検出手段と、
前記動きベクトル検出手段で検出された前記動きベクトルに基づいて、前記撮像素子からの画像データについて、前記撮像素子の前記位置的変化による撮像画像の歪みを、さらに補正するようにする画像歪み補正処理手段と、
前記画像歪み補正処理手段で補正された前記撮像画像の画像情報を記録媒体に記録する記録手段と、
を備えることを特徴とする撮像装置。 - 請求項9に記載の撮像装置において、
前記動きベクトル算出手段では、前記センサの検出出力を参照して、前記撮像素子からの画像データから前記動きベクトルを検出する
ことを特徴とする撮像装置。 - 請求項9に記載の撮像装置において、
前記動きベクトル検出手段は、注目画面である参照画面と、当該参照画面よりも前の元画面との間での動きベクトルを算出する手段であって、
前記元画面中の前記各分割画像区間において、所定の位置に複数の画素からなる所定の大きさの少なくとも1個のターゲットブロックが設定されると共に、前記ターゲットブロックと同じ大きさの参照ブロックが、前記注目画面に設定されたサーチ範囲において複数個設定され、
前記複数個の参照ブロックの内から、前記ターゲットブロックと相関の強い前記参照ブロックを検出し、
当該検出した参照ブロックの前記ターゲットブロックに対する画面上の位置ずれ量に基づいて、前記動きベクトルを検出する
ことを特徴とする撮像装置。 - 請求項11に記載の撮像装置において、
前記動きベクトル検出手段は、
前記参照ブロックのそれぞれにおいて、当該参照ブロック内の各画素の画素値と、前記ターゲットブロック内で対応する位置の各画素の画素値との差分の絶対値の総和を求める差分絶対値和算出手段と、
前記参照ブロックのそれぞれの前記参照画面上の位置の、前記ターゲットブロックの画面上の位置との位置ずれ量を、方向成分も含む参照ベクトルとし、当該参照ベクトルを所定の縮小率で縮小した参照縮小ベクトルを得る参照縮小ベクトル取得手段と、
前記参照縮小ベクトルに応じた大きさの前記参照ベクトルを前記位置ずれ量とする、前記所定の縮小率に応じて削減された数の複数個の前記参照ブロックのそれぞれについての差分絶対値和を記憶する縮小差分絶対値和テーブルを生成するテーブル生成手段と、
前記縮小差分絶対値和テーブルにおける前記差分絶対値和の最小値に対応する前記参照ベクトルを少なくとも用いて、前記参照画面と前記元画面との間の前記分割画像区間のそれぞれについての動きベクトルを算出する動きベクトル算出手段と、
を備え、
前記テーブル生成手段は、
前記参照縮小ベクトル取得手段で取得された前記参照縮小ベクトルの近傍値となる複数の前記参照ベクトルを検出する近傍参照ベクトル検出手段と、
前記差分絶対値和算出手段で算出された前記参照ブロックのそれぞれについての前記差分の絶対値の総和から、前記近傍参照ベクトル検出工程で検出された前記近傍の複数の前記参照ベクトルのそれぞれに対応する差分絶対値和のそれぞれを算出する分散差分絶対値和算出手段と、
前記分散差分絶対値和算出手段で算出した前記近傍の複数の前記参照ベクトルのそれぞれに対応する前記差分絶対値和を、それまでの前記近傍の複数の前記参照ベクトルのそれぞれに対応する前記差分絶対値和に加算する分散加算手段と、
を備えることを特徴とする撮像装置。 - 請求項11または請求項12に記載の撮像装置において、
前記動きベクトル検出手段は、
前記センサの検出出力を参照して前記サーチ範囲を設定し、前記動きベクトルを検出することを特徴とする撮像装置。 - 撮影時の撮像素子の、撮像画像の水平方向および/または垂直方向の位置的変化を検出するセンサと、
前記センサの検出出力に応じて、被写体からの入射光の前記撮像素子への入射位置を制御する制御機構を制御して、前記撮像素子からの画像データの、前記撮像素子の前記位置的変化による撮像画像の歪みを光学的に補正する光学的補正手段と、
前記光学的補正手段により前記光学的な画像補正がなされた前記撮像素子からの画像データについて、前記センサの検出出力を参照して、前記撮像素子の前記位置的変化による撮像画像の歪みを補正するようにする画像歪み補正処理手段と、
を備えることを特徴とする撮像装置。 - 請求項14に記載の撮像装置において、
前記画像歪み補正処理手段では、前記センサの検出出力を参照して前記撮像素子の位置的変化が生じたと判別したときに、前記撮像素子からの前記画像データについてぼけを検出して、当該ぼけを除去するように補正する
ことを特徴とする撮像装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006035341A JP2007215114A (ja) | 2006-02-13 | 2006-02-13 | 撮像画像の歪み補正方法、撮像画像の歪み補正装置および撮像装置 |
US11/673,283 US7692688B2 (en) | 2006-02-13 | 2007-02-09 | Method for correcting distortion of captured image, device for correcting distortion of captured image, and imaging device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006035341A JP2007215114A (ja) | 2006-02-13 | 2006-02-13 | 撮像画像の歪み補正方法、撮像画像の歪み補正装置および撮像装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007215114A true JP2007215114A (ja) | 2007-08-23 |
Family
ID=38367963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006035341A Pending JP2007215114A (ja) | 2006-02-13 | 2006-02-13 | 撮像画像の歪み補正方法、撮像画像の歪み補正装置および撮像装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7692688B2 (ja) |
JP (1) | JP2007215114A (ja) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012015999A (ja) * | 2010-06-04 | 2012-01-19 | Panasonic Corp | 撮像装置、画像生成方法およびコンピュータプログラム |
US8184965B2 (en) | 2010-01-05 | 2012-05-22 | Panasonic Corporation | Imaging device |
JP2014039131A (ja) * | 2012-08-14 | 2014-02-27 | Canon Inc | 撮像システム及びその制御方法 |
JP2014085452A (ja) * | 2012-10-22 | 2014-05-12 | Canon Inc | 撮像装置及びその制御方法 |
JP2014085451A (ja) * | 2012-10-22 | 2014-05-12 | Canon Inc | 撮像装置及びその制御方法 |
KR101426417B1 (ko) | 2010-02-05 | 2014-08-07 | 삼성테크윈 주식회사 | 영상 안정화 시스템 및 방법 |
JP2014176007A (ja) * | 2013-03-12 | 2014-09-22 | Canon Inc | 撮像装置およびその制御方法 |
EP2785045A2 (en) | 2013-03-26 | 2014-10-01 | Canon Kabushiki Kaisha | Image processing apparatus and method, and image capturing apparatus |
JP2016046666A (ja) * | 2014-08-22 | 2016-04-04 | キヤノン株式会社 | 撮像装置およびその制御方法、並びにプログラム |
US9674441B2 (en) | 2014-08-05 | 2017-06-06 | Canon Kabushiki Kaisha | Image processing apparatus, image processing method, and storage medium |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4958610B2 (ja) * | 2007-04-06 | 2012-06-20 | キヤノン株式会社 | 画像防振装置、撮像装置及び画像防振方法 |
JP5322416B2 (ja) * | 2007-09-12 | 2013-10-23 | 株式会社メガチップス | ブロックマッチング回路及びデータ更新方法 |
JP5213493B2 (ja) * | 2008-03-26 | 2013-06-19 | 三洋電機株式会社 | 動き検出装置 |
JP4534172B2 (ja) * | 2008-04-03 | 2010-09-01 | ソニー株式会社 | 画像処理装置、画像処理方法、及びプログラム |
US8135233B2 (en) * | 2008-05-22 | 2012-03-13 | Aptina Imaging Corporation | Method and apparatus for the restoration of degraded multi-channel images |
FR2933520B1 (fr) * | 2008-07-04 | 2011-02-11 | Canon Kk | Procede et dispositif de restauration d'une sequence video |
DE102009028743B4 (de) * | 2009-08-20 | 2011-06-09 | Robert Bosch Gmbh | Verfahren und Steuergerät zur Entzerrung eines Kamerabildes |
JP5521518B2 (ja) * | 2009-12-01 | 2014-06-18 | ソニー株式会社 | 撮像装置、撮像方法、およびプログラム |
JP2011176748A (ja) * | 2010-02-25 | 2011-09-08 | Sony Corp | 画像処理装置および方法、並びにプログラム |
JP5631229B2 (ja) * | 2011-01-31 | 2014-11-26 | キヤノン株式会社 | 撮像装置、その制御方法及びプログラム |
JP2012186593A (ja) * | 2011-03-04 | 2012-09-27 | Sony Corp | 画像処理装置、および画像処理方法、並びにプログラム |
JP5412692B2 (ja) * | 2011-10-04 | 2014-02-12 | 株式会社モルフォ | 画像処理装置、画像処理方法、画像処理プログラム及び記録媒体 |
US8988341B2 (en) | 2012-06-08 | 2015-03-24 | Apple Inc. | Camera-assisted motion estimation for application control |
JP5997557B2 (ja) * | 2012-09-20 | 2016-09-28 | キヤノン株式会社 | 撮像装置及びその制御方法 |
JP5683663B1 (ja) * | 2013-09-27 | 2015-03-11 | パナソニックIpマネジメント株式会社 | 滞留時間測定装置、滞留時間測定システムおよび滞留時間測定方法 |
JP6336341B2 (ja) | 2014-06-24 | 2018-06-06 | キヤノン株式会社 | 撮像装置及びその制御方法、プログラム、記憶媒体 |
JP6394876B2 (ja) * | 2014-09-17 | 2018-09-26 | 株式会社ソシオネクスト | 符号化回路、符号化方法 |
JP6665611B2 (ja) * | 2016-03-18 | 2020-03-13 | 富士通株式会社 | 符号化処理プログラム、符号化処理方法及び符号化処理装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3303312B2 (ja) | 1991-10-11 | 2002-07-22 | ソニー株式会社 | 画像の振動補正装置及び画像の振動補正方法 |
JP3384459B2 (ja) | 1992-04-17 | 2003-03-10 | ソニー株式会社 | 撮像装置 |
JPH0686149A (ja) | 1992-08-31 | 1994-03-25 | Sony Corp | 動きベクトル検出装置及びビデオカメラ |
JPH07283999A (ja) | 1994-04-07 | 1995-10-27 | Sony Corp | 画像合成装置及び画像撮影装置 |
JP2902966B2 (ja) * | 1994-12-16 | 1999-06-07 | 三洋電機株式会社 | 手振れ補正装置およびそれを用いたビデオカメラ |
US6573930B2 (en) * | 1996-11-15 | 2003-06-03 | Canon Kabushiki Kaisha | Image pickup apparatus for storing, reading-out and processing a signal during predetermined time periods |
JP4491965B2 (ja) | 1999-12-28 | 2010-06-30 | ソニー株式会社 | 信号処理装置および方法、並びに記録媒体 |
JP4613510B2 (ja) | 2003-06-23 | 2011-01-19 | ソニー株式会社 | 画像処理方法および装置、並びにプログラム |
JP4389656B2 (ja) | 2004-05-12 | 2009-12-24 | ソニー株式会社 | 画像処理装置および方法、記録媒体、並びにプログラム |
-
2006
- 2006-02-13 JP JP2006035341A patent/JP2007215114A/ja active Pending
-
2007
- 2007-02-09 US US11/673,283 patent/US7692688B2/en not_active Expired - Fee Related
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8184965B2 (en) | 2010-01-05 | 2012-05-22 | Panasonic Corporation | Imaging device |
KR101426417B1 (ko) | 2010-02-05 | 2014-08-07 | 삼성테크윈 주식회사 | 영상 안정화 시스템 및 방법 |
JP2012015999A (ja) * | 2010-06-04 | 2012-01-19 | Panasonic Corp | 撮像装置、画像生成方法およびコンピュータプログラム |
JP2014039131A (ja) * | 2012-08-14 | 2014-02-27 | Canon Inc | 撮像システム及びその制御方法 |
US9538082B2 (en) | 2012-10-22 | 2017-01-03 | Canon Kabushiki Kaisha | Image capture apparatus and control method therefor |
JP2014085452A (ja) * | 2012-10-22 | 2014-05-12 | Canon Inc | 撮像装置及びその制御方法 |
JP2014085451A (ja) * | 2012-10-22 | 2014-05-12 | Canon Inc | 撮像装置及びその制御方法 |
JP2014176007A (ja) * | 2013-03-12 | 2014-09-22 | Canon Inc | 撮像装置およびその制御方法 |
US9088718B2 (en) | 2013-03-12 | 2015-07-21 | Canon Kabushiki Kaisha | Imaging apparatus and control method therefor |
EP2785045A2 (en) | 2013-03-26 | 2014-10-01 | Canon Kabushiki Kaisha | Image processing apparatus and method, and image capturing apparatus |
US9762800B2 (en) | 2013-03-26 | 2017-09-12 | Canon Kabushiki Kaisha | Image processing apparatus and method, and image capturing apparatus for predicting motion of camera |
US9674441B2 (en) | 2014-08-05 | 2017-06-06 | Canon Kabushiki Kaisha | Image processing apparatus, image processing method, and storage medium |
JP2016046666A (ja) * | 2014-08-22 | 2016-04-04 | キヤノン株式会社 | 撮像装置およびその制御方法、並びにプログラム |
Also Published As
Publication number | Publication date |
---|---|
US20070188619A1 (en) | 2007-08-16 |
US7692688B2 (en) | 2010-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4655957B2 (ja) | 撮像画像の歪み補正方法、撮像画像の歪み補正装置、撮像方法および撮像装置 | |
JP2007215114A (ja) | 撮像画像の歪み補正方法、撮像画像の歪み補正装置および撮像装置 | |
JP4340915B2 (ja) | 撮像画像信号の歪み補正方法、撮像画像信号の歪み補正装置、撮像方法および撮像装置 | |
JP4304528B2 (ja) | 画像処理装置および画像処理方法 | |
JP4178480B2 (ja) | 画像処理装置、画像処理方法、撮像装置および撮像方法 | |
JP4178481B2 (ja) | 画像処理装置、画像処理方法、撮像装置および撮像方法 | |
JP4882956B2 (ja) | 画像処理装置および画像処理方法 | |
US8072511B2 (en) | Noise reduction processing apparatus, noise reduction processing method, and image sensing apparatus | |
JP2009071689A (ja) | 画像処理装置、画像処理方法および撮像装置 | |
JP2008065722A (ja) | 画像データ処理装置および画像データ処理方法 | |
JP2009105533A (ja) | 画像処理装置、撮像装置、画像処理方法および撮像画像処理方法 | |
JP2009055410A (ja) | 画像処理装置および画像処理方法 | |
JP4904925B2 (ja) | 画像処理装置および画像処理方法 | |
JP4670630B2 (ja) | 画像処理装置、画像処理方法、撮像装置および撮像方法 | |
JP2007323458A (ja) | 画像処理装置および画像処理方法 | |
JP2009116763A (ja) | 画像処理装置および画像データのメモリアクセス方法 | |
JP4998134B2 (ja) | 画像処理装置および画像処理方法 | |
JP4403409B2 (ja) | 画像データ処理方法および画像データ処理装置 | |
JP4888306B2 (ja) | 画像処理装置および画像処理方法 | |
JP2009130489A (ja) | 撮像装置、撮像記録方法、撮像画像記録再生装置および撮像画像記録再生方法 | |
JP2009065323A (ja) | 画像処理装置、画像処理方法、撮像装置および撮像方法 | |
JP2009140046A (ja) | 画像処理装置および画像データのメモリアクセス方法 | |
JP2013115650A (ja) | 画像処理装置、画像処理方法およびコンピュータプログラム |