JP4655957B2 - 撮像画像の歪み補正方法、撮像画像の歪み補正装置、撮像方法および撮像装置 - Google Patents

撮像画像の歪み補正方法、撮像画像の歪み補正装置、撮像方法および撮像装置 Download PDF

Info

Publication number
JP4655957B2
JP4655957B2 JP2006042108A JP2006042108A JP4655957B2 JP 4655957 B2 JP4655957 B2 JP 4655957B2 JP 2006042108 A JP2006042108 A JP 2006042108A JP 2006042108 A JP2006042108 A JP 2006042108A JP 4655957 B2 JP4655957 B2 JP 4655957B2
Authority
JP
Japan
Prior art keywords
vector
motion vector
optical zoom
image
camera shake
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.)
Expired - Fee Related
Application number
JP2006042108A
Other languages
English (en)
Other versions
JP2007221631A (ja
Inventor
徹 倉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2006042108A priority Critical patent/JP4655957B2/ja
Priority to KR1020070016766A priority patent/KR20070083202A/ko
Priority to US11/676,404 priority patent/US7821540B2/en
Priority to EP07102668A priority patent/EP1821522A3/en
Priority to CNB200710103521XA priority patent/CN100556082C/zh
Publication of JP2007221631A publication Critical patent/JP2007221631A/ja
Application granted granted Critical
Publication of JP4655957B2 publication Critical patent/JP4655957B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • H04N5/144Movement detection
    • G06T5/73
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/223Analysis of motion using block-matching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/527Global motion vector estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • H04N23/6811Motion detection based on the image signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/682Vibration or motion blur correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20172Image enhancement details
    • G06T2207/20201Motion blur correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Studio Devices (AREA)
  • Image Analysis (AREA)
  • Adjustment Of Camera Lenses (AREA)
  • Image Processing (AREA)

Description

この発明は、光学ズーム操作を伴う被写体画像の撮像時の手ぶれ等による撮像画像に発生する歪を補正する方法および当該歪を補正する装置ならびに撮像装置に関する。
例えばビデオカメラやデジタルスチルカメラなどの、電子式に撮像画像を撮像素子に記憶し、読み出すようにする電子式の撮像装置では、手持ちにより動画像の撮影を行なったとき、いわゆる手ぶれによる撮像素子の、撮像画像の水平方向および/または垂直方向に比較的高速の位置的変化を生じると、それは、撮像画像においては、画像の揺れなどの画像歪みとなって現われる。
すなわち、手ぶれが無い場合には、撮像素子の撮像面上において撮像画像の形成位置は同一位置となり、時間方向の複数のフレーム画像を並べた場合に、図48(A)に示すように、フレーム画像は全く同じ位置に重なり合うものとなる。しかし、手ぶれが生じると、撮像素子の撮像面上に形成される撮像画像の位置が同一位置とはならずに、時間方向の複数のフレーム画像を並べた場合に、図48(B)に示すように、複数のフレーム画像は揺れ動いてしまうようなものとなる。
この手ぶれは、特に、ズームレンズを望遠側で使用する場合にはその現象が顕著に生じやすい。このような手ぶれ現象が生じた場合には、静止しているものが揺れて動いてしまい、画像が見にくくなるという問題がある。また、被写体が惚けた状態の撮像画像になってしまうという現象も生じる。
また、静止画の撮影においても、複数フレームの画像を重ね合わせて撮像出力画像を得る場合に、上述と同様にして、手ぶれにより被写体が惚けた状態となる画像歪みを有する撮像画像になってしまう。
この手ぶれによる画像歪みを補正する手法としては、従来、手ぶれを検出するセンサを用いる光学式手ぶれ補正方式と、撮像画像についてデジタル信号処理を行うことで手ぶれを検出すると共に補正処理をするセンサレス手ぶれ補正方式とが提案されている。
現在市場に出回っている民生機における、静止画用途の手ぶれ補正は、光学式手ぶれ補正方式によるものであり、ジャイロセンサもしくは加速度センサを使って手ぶれベクトルを計測し、それを機構系にフィードバックして、CCD(Charge Coupled Device)イメージャやCMOS(Complementary Metal Oxide Semiconductor)イメージャなどのイメージセンサ(撮像素子)に射影される像が、ぶれを起こさないように高速に制御する、というものである。
ここでいう機構系としては、レンズ、プリズム、イメージャ(もしくはイメージャと一体化したモジュール)の位置をアクチエータにより制御する機構が提案されており、それぞれ、レンズシフト、プリズムシフト、イメージャシフトと呼ばれている。
一方、センサレス手ぶれ補正方式は、例えば特許文献1(特許第3303312号公報)や特許文献2(特開平6−86149号公報)等に記載されているように、撮像素子から読み出した撮像画像データから、撮像画像の画面単位の動きベクトルを検出し、この動きベクトルに基づいて、画像メモリに蓄えられている撮像画像データの読み出し位置をシフトして、手ぶれ補正をする方式である。
また、センサレス手ぶれ補正を静止画で実現する手法としては、特許文献3(特開平7−283999号公報)を始め、幾つか提案はされている。特許文献3は、手ぶれの発生しない程度の短い露光時間で何枚かの静止画を連写撮影し、その静止画間の手ぶれベクトルを求め、その手ぶれベクトルに従って、前記連射撮影した複数枚の静止画を平行移動(およびロール軸方向に回転)させながら加算(もしくは平均化)して行くことで、最終的に手ぶれと低照度ノイズの無い高画質の静止画を得る、というアルゴリズムである。
上記の特許文献は、次の通りである。
特許第3384459号公報 特開平6−86149号公報 特開平7−283999号公報
ところで、一般に、ビデオカメラには、ズームスイッチなどの光学ズーム操作部が設けられ、撮影者は、この光学ズーム操作部を通じて光学ズーム操作することにより、動画像を撮影しながら光学ズーム制御ができるように構成されている。
この場合に、光学ズーム中の撮像画像は、例えばズームにより拡大するときには、図49に示すように、画像の中心位置を始点位置として、この始点位置から時間の経過に伴って徐々に大きくなるような変化をする。
ところが、この光学ズーム操作を伴う撮影時に、手ぶれが生じると、図50に示すように、画像が徐々に大きくなる始点位置が、画像の中心位置からずれてしまったりして、画像が歪んでしまう恐れがある。
手ぶれを補正することができれば、このような光学ズーム時の歪みは軽減されるが、上述したようなジャイロセンサを用いた光学式手ぶれ補正においては、光学レンズやプリズムあるいは撮像素子を、入射光の光軸に直交する方向に変移制御するのに対して、ズーム制御は、光学レンズを前記光軸に沿う方向に変移制御するものであるため、制御が非常に複雑になる。このため、従来は、光学ズーム時には、光学式手ぶれ補正を停止したりしている。
また、センサレスの手ぶれ補正の場合においては、撮像素子から読み出された撮像画像データから検出された手ぶれ動きベクトルは、光学ズームによる画像の動きベクトル成分が手ぶれ動きベクトルに加わったものとなるため、検出された手ぶれ動きベクトルによって、手ぶれ補正をしても、手ぶれによる画像歪み分が除去できない。このため、センサレスの手ぶれ補正においても、光学ズーム時には、手ぶれ補正を行わないようにしている。
以上のように、従来の撮像装置では、光学ズーム時に発生した手ぶれを補正することは行われず、このため、光学ズーム時に手ぶれが発生すると、例えば図50に示したような光学ズーム時の歪みが残留したものとなる。この光学ズーム時の手ぶれによる歪みは、小型のモニター画面では、比較的目立たないが、最近のように、画像が高精細度になり、大画面で画像を楽しむようになると、上記の光学ズーム時の手ぶれによる歪みが無視できなくなる。
この発明は、以上の点にかんがみ、光学ズーム時の手ぶれによる歪みを除去して、画像歪みの無いズーム画像が得られるようにすることを目的とする。
上記の課題を解決するために、本発明の撮像画像の歪み補正方法は、撮像素子からの画像データを受けて、当該画像データから、撮像画像の1画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出工程と、光学ズームがなされたときに、当該光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の1画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出工程と、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記光学ズーム分ベクトル算出工程で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算工程と、前記光学ズームがなされないときには、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算工程の前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出工程と、前記グローバル手ぶれベクトル算出工程で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正工程と、を備える。
本発明の撮像方法は、撮影時の手ぶれによる撮像素子の位置的変化による撮像画像の歪みを補正し、補正後の撮像画像の情報を記録するようにするものであって、光学ズーム操作部を備える撮像装置による撮像方法であって、前記撮像装置の動きベクトル検出手段が前記撮像素子からの撮像画像データを受けて、当該撮像画像データから、撮像画像の1画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出工程と、前記撮像装置の判別手段が、前記光学ズーム操作部においてズーム操作がなされたか否かを判別する判別工程と、前記判別工程で前記光学ズーム操作がなされたと判別したときに、前記撮像装置の光学ズーム分ベクトル算出手段が、前記光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の1画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出工程と、前記撮像装置のベクトル減算手段が、前記判別工程で、前記光学ズーム操作がなされたと判別したときに、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記光学ズーム分算出工程で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算工程と、前記撮像装置の手ぶれベクトル算出手段が、前記判別工程で前記光学ズーム操作がなされていないと判別したときには、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算工程の前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出工程と、前記撮像装置の手ぶれ補正手段が、前記グローバル手ぶれベクトル算出工程で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正工程と、前記撮像装置の記録手段が、前記手ぶれ補正手段により補正された前記撮像画像の画像情報を記録媒体に記録する記録工程と、を備える。
本発明の撮像画像の歪み補正装置は、撮像素子からの画像データを受けて、当該画像データから、撮像画像の1画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出手段と、光学ズームがなされたときに、当該光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の1画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出手段と、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記光学ズーム分算出手段で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算手段と、前記光学ズームがなされていないときには、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算手段が算出した前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出手段と、前記グローバル手ぶれベクトル算出手段で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正手段と、を備える。
本発明の撮像装置は、撮像素子と、光学ズーム操作部と、前記光学ズーム操作部を通じた光学ズーム操作に応じて、光学レンズ系を制御して、光学ズームを実行する光学ズーム駆動手段と、前記撮像素子からの画像データを受けて、当該画像データから、撮像画像の1画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出手段と、前記光学ズーム操作部を通じた光学ズーム操作がなされたか否かを判別する判別手段と、前記判別手段で前記光学ズーム操作がなされたと判別したときに、前記光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の1画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出手段と、前記判別手段で、前記光学ズーム操作がなされたと判別したときに、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記光学ズーム分算出手段で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算手段と、前記判別手段で前記光学ズーム操作がなされていないと判別したときには、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算手段が算出した前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出手段と、前記グローバル手ぶれベクトル算出手段で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正手段と、前記手ぶれ補正手段により補正された前記撮像画像の画像情報を記録媒体に記録する記録手段と、を備える。
この発明によれば、光学ズーム時の手ぶれによる歪みを除去して、画像歪みの無いズーム画像が得られる。
以下、この発明による撮像画像の歪み補正装置および方法の実施の形態を、撮像装置に適用した場合を例に、図を参照しながら説明する。
[この発明による撮像画像の歪み補正装置の第1の実施形態]
図2は、この発明の撮像画像の歪み補正装置の第1の実施形態が適用された撮像装置の全体の構成例のブロック図を示すものである。
図2に示すように、この実施形態の撮像装置は、システムバス2にCPU(Central Processing Unit)1が接続されると共に、システムバス2に、撮像信号処理系10や、ユーザ操作入力部3、画像メモリ部4、記録再生装置部5などが接続されて構成されている。なお、この明細書においては、CPU1は、種々のソフトウエア処理を行なうプログラムを記憶するROM(Read Only Memory)やワークエリア用RAMなどを含むものとしている。
この実施形態の撮像装置の筐体の所定位置には、ユーザ(撮影者)が操作する光学ズーム操作部の例としてのズームスイッチ7が取り付けられている。このズームスイッチ7は、例えば、シーソー式のボタンスイッチにより構成され、ユーザによるその操作情報がCPU1に供給される。
また、この実施形態では、撮像用のレンズなどを備えるカメラ光学系10Lは、アクチュエータを含むズーム機構部8を備える。この例では、このズーム機構部8は、図3に示すように、カメラ光学系10Lのレンズ110Lの位置を、入射光の光軸10axの方向に沿う方向に変移させる機構とされている。図3において、P1,P2,P3は、ズームポジションを示し、撮像画像はそれぞれのズームポジションに応じた画像となる。
そして、このズーム機構部8には、CPU1から、ユーザによるズームスイッチ7を通じたズーム操作情報に応じて生成されたズーム制御信号CTLが供給されて、カメラ光学系10Lのレンズの位置が制御されて、ズーム制御がなされる。
すなわち、ユーザによりズームスイッチ7を通じてズームアップ方向に操作されると、CPU1からのズーム制御信号CTLによりズーム機構部8が制御されて、撮像レンズ系が長焦点(望遠)側になり、また、ズームダウン方向に操作されると、CPU1からのズーム制御信号CTLによりズーム機構部8が制御されて、撮像レンズ系が短焦点側になるようにされる。
図2の例の撮像装置においては、ユーザ操作入力部3を通じた撮像記録開始操作を受けて、後述するような撮像画像データの記録処理を行なう。また、ユーザ操作入力部3を通じた撮像記録画像の再生開始操作を受けて、図2の撮像装置は、記録再生装置部5の記録媒体に記録された撮像画像データの再生処理を行なう。
図2に示すように、撮像レンズ10Lを備えるカメラ光学系(図示は省略)を通じた被写体からの入射光は、撮像素子11に照射されて撮像される。撮像素子11は、CCDイメージャやCMOSイメージャで構成されている。
この例の撮像装置においては、撮像記録開始操作がなされると、撮像素子11からは、タイミング信号発生部12からのタイミング信号により、撮像画像データがサンプリングされることにより、赤(R)、緑(G)、青(B)の3原色から構成されるベイヤー配列のRAW信号であるデジタル撮像信号が出力される。
出力された撮像信号は、前処理部13に供給され、欠陥補正やγ補正等の前処理が施され、データ変換部14に供給される。データ変換部14は、これに入力された撮像信号から、輝度信号成分Yと、色差信号成分Cb/Crとにより構成されるデジタル撮像信号(YCデータ)に変換し、そのデジタル撮像信号を、システムバスを介して画像メモリ部4に供給する。
画像メモリ部4は、この図2の例においては、2個のフレームメモリ41,42からなり、データ変換部14からのデジタル撮像信号は、先ず、フレームメモリ41に格納される。そして、1フレーム経過すると、フレームメモリ41に記憶されているデジタル撮像信号が、フレームメモリ42に転送されると共に、フレームメモリ41には、データ変換部14からの新たなフレームのデジタル撮像信号が書き込まれる。したがって、フレームメモリ42には、フレームメモリ41に格納されているフレーム画像よりも1フレーム分前のフレーム画像が格納されている。
手ぶれ動きベクトル検出部15は、この実施形態では、撮像画像データから撮像画像の動きベクトルを検出して、手ぶれ動きベクトルを検出する。また、手ぶれ動きベクトル検出部15は、特に、撮影時に、光学ズーム操作を伴っているときには、光学ズームによる画像の動き成分である光学ズーム分ベクトルを除去した手ぶれ動きベクトルを、後述するようにして検出する。このため、手ぶれ動きベクトル検出部15には、後述するように、CPU1からのズームスイッチ7の操作に応じたズーム情報ZMが供給される。
撮像画像データから動きベクトルを検出する方法としては、後述するように、2画面間の相関を求めるブロックマッチングを用いる。手ぶれ動きベクトル検出部15は、システムバス2を介して、画像メモリ部4の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の構成例]
図1に、この実施形態における手ぶれ動きベクトル検出部15の構成例のブロック図を示す。この実施形態における手ぶれ動きベクトル検出部15は、動きベクトル検出処理部151と、光学ズーム分ベクトル算出部152と、光学ズーム分ベクトル減算部153と、セレクタ154と、グローバル手ぶれベクトル算出部155と、タイミング制御部156とを備えて構成される。
タイミング制御部156は、CPU1からの制御の下に、各部にタイミング信号を供給する。
動きベクトル検出処理部151は、タイミング制御部156からのタイミング制御信号に基づいて動作し、画像メモリ部4から読み出した2画面分の画像データから、撮像画像について動きベクトルを検出する。
この例では、後で詳述するように、この実施形態では、図4に示すように、1画面FL中に複数個、この例では、水平方向に4個、スイッチ方向に4個の合計16個のターゲット領域TGが設定され、動きベクトル検出処理部151では、この複数個のターゲット領域TGi(この例では、i=1,2,・・・,16)のそれぞれについて動きベクトルMVi(この例では、i=1,2,・・・,16)が検出される(図5(A)参照)。
そして、動きベクトル検出処理部151は、検出した複数個の動きベクトルを、タイミング制御部156からのタイミング制御信号による制御に従って、セレクタ154の一方の入力端Aに供給すると共に、光学ズーム分ベクトル減算部153に供給する。
光学ズーム分ベクトル算出部152は、ユーザによりズームスイッチ7を通じたズーム操作がなされたときに、タイミング制御部156からのタイミング制御信号による制御にしたがって、CPU1からのズーム情報ZMを用いて、光学ズーム分ベクトルを算出する。
この例では、光学ズーム分ベクトル算出部152は、動きベクトル検出処理部151で動きベクトルが検出される前記ターゲット領域TGiのそれぞれにおける光学ズーム分ベクトルZVi(この例では、i=1,2,・・・,16)を算出する(図5(B)参照)。そして、光学ズーム分ベクトル算出部152は、算出した光学ズーム分ベクトルZViのそれぞれを、光学ズーム分ベクトル減算部153に供給する。
各ターゲット領域TGiについての光学ズーム分ベクトルZViの大きさは、ズームスイッチ7が操作開始された時点からの時間tと、ズーム速度vと、図4に示すように、各ターゲット領域TGiの中心位置と、画面FLの中心位置Coとの間の距離di(この例では、i=1〜16)とから求められる。
ズーム速度vは、撮像レンズ110Lが、図3の矢印で示す光軸10axに沿う方向に1フレーム画像区間の間に移動する距離を、1フレームの時間で割り算した値である。ズーム速度vは、1画面ごとについて定められる。一般に、ズーム速度vは、ズームスイッチ7が操作開始された時点からの時間tに比例して大きくなる。
そして、1画面内の各ターゲット領域TGiについての光学ズーム分ベクトルの大きさは、各ターゲット領域TGiの中心位置と、画面FLの中心位置Coとの間の距離diに比例した値となる。
すなわち、ズームスイッチ7が操作開始された時点からの時間tが分かると、ズーム速度vが求められ、ズーム速度vが求まると、当該フレームにおける各ターゲット領域TGiについての光学ズーム分ベクトルの大きさが求められる。
なお、各ターゲット領域TGiについての光学ズーム分ベクトルZViの向きは、図5(B)に示すように、画面FLの中心位置Coから、各ターゲット領域TGiの中心位置に向かう方向に沿ったものとなる。
ユーザによりズームスイッチ7を通じたズーム操作がなされたときには、CPU1は、ズーム制御信号CTLを生成してズーム機構部8に供給すると同時に、ズーム速度vの情報と、ユーザによるズーム開始時からの時間tの情報とからなるズーム情報ZMを光学ズーム分ベクトル算出部152供給する。
光学ズーム分ベクトル算出部152は、このCPU1からのズーム情報ZMを用いて、上述のようにして、各ターゲット領域TGiについての光学ズーム分ベクトルZViを求め、求めた光学ズーム分ベクトルZViを光学ズーム分ベクトル減算部153に供給する。
光学ズーム分ベクトル減算部153は、動きベクトル検出処理部151からの動きベクトルMVi(図5(A))のそれぞれと、光学ズーム分ベクトル算出部152からの光学ズーム分ベクトルZVi(図5(B))のそれぞれとの差分のベクトルVecを、前記ターゲット領域TGiのそれぞれについて求める(図6(A)参照)。そして、求めた差分のベクトルVeci(この例では、i=1,2,・・・,16)(図6(B)参照)を、セレクタ154の他方の入力端Bに供給する。
CPU1は、ユーザによりズームスイッチ7を通じたズーム操作がなされたときには、セレクタ154から、入力端B側に入力された光学ズーム分ベクトル減算部153からのベクトルを選択して出力し、その他のときには、入力端A側に入力された動きベクトル検出処理部151からの動きベクトルを選択して出力するようにする選択制御信号SELを、セレクタ154に供給する。セレクタ154は、選択制御信号SELによる選択制御に応じて選択されたベクトルを、グローバル手ぶれベクトル算出部155に供給する。
したがって、グローバル手ぶれベクトル算出部155は、ズーム操作がなされていない撮像時には、動きベクトル検出処理部151からの複数個の動きベクトルMViを受け取り、過去のフレームにおけるそれらの動きベクトルMViからの推移も加味しながら統計的に処理することで、1フレームについて1つのグローバルベクトルGVec、即ち、フレームの手ぶれベクトルを確定して得、解像度変換部16に供給するようにする。
また、ズーム操作がなされた撮像時には、グローバル手ぶれベクトル算出部155は、光学ズーム分ベクトル減算部153からの差分のベクトルVeciを受け取り、過去のフレームにおけるそれらのベクトルVeciからの推移も加味しながら統計的に処理することで、1フレームについて1つのグローバルベクトルGVec、即ち、フレームの手ぶれベクトルを確定して得、解像度変換部16に供給するようにする。
解像度変換部16は、前述したように、このグローバル手ぶれベクトルGVecにしたがって、フレームメモリ42に格納されている遅延フレームの画像データを切り出しながら、必要な解像度および画像サイズに変換する処理をする。
したがって、ズーム操作を伴った撮像時には、図7に示すように、手ぶれが除去されたズーム撮影画像が得られるものである。
[手ぶれ動きベクトル検出部15における動きベクトルの検出について]
この実施の形態では、光学式の手ぶれ補正は全く使用せずに、センサレスの手ぶれ補正を行うようにしている。そして、手ぶれ動きベクトル検出部15の動きベクトル検出処理部151では、撮像画像の手ぶれ動きベクトルを検出する方法として、2画面間の相関を求めるブロックマッチングを用いる。このブロックマッチングを用いる方法は、ジャイロ(角速度)センサなどの機械的な部品が不要なので、撮像装置の小型、軽量化を実現することができるという点で有利である。
図8および図9は、ブロックマッチングの概要を図示したものである。また、図10には、その処理フローチャートの一般例を示す。
ブロックマッチングは、撮像装置部からの撮像画像について、注目画面である参照画面と、当該参照画面よりも1画面分前の撮像画面である元画面との間の1画面分単位での動きベクトルを、所定の大きさの矩形領域のブロックについて、参照画面と元画面との相関を算出することにより算出する方法である。
なお、ここで画面とは、1フレームまたは1フィールドの画像データからなる画像を意味しているが、この明細書では、説明の便宜上、画面は1フレームからなるものとして、画面をフレームと称することとする。したがって、参照画面は参照フレーム、元画面は元フレームと称する。
例えば、参照フレームの画像データは、撮像装置部からの現フレームの画像データ、または現フレームの画像データがフレームメモリに格納されて1フレーム分遅延されたものとされる。元フレームの画像データは、参照フレームの画像データがさらにフレームメモリに格納されて1フレーム分遅延されたものとされる。
図8および図9は、従来のブロックマッチングの概要を説明するための図である。また、図10は、従来のブロックマッチング処理のフローチャートの一例である。
ブロックマッチングにおいては、図8に示すように、元フレーム101の任意の所定の位置において、水平方向の複数画素および垂直方向の複数ライン分からなる所定の大きさの矩形領域からなるターゲットブロック103が設定される。
これに対して、参照フレーム102において、元フレームのターゲットブロック103の位置と同じ位置に、ターゲットブロックの射影イメージブロック104(図8の点線参照)を想定し、このターゲットブロックの射影イメージブロック104を中心としたサーチ範囲105(図8の一点鎖線参照)を設定すると共に、ターゲットブロック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(図8参照)で表現される。各参照ブロック106の参照ベクトル107は、参照ブロック106の参照フレーム102上の位置に応じた値となるが、従来のブロックマッチングでは、SAD値が最小値となる参照ブロック106の参照ベクトルを、動きベクトルとして検出するものである。
そこで、ブロックマッチングでは、一般に、図9に示すように、サーチ範囲105内において設定される複数個の参照ブロック106のそれぞれとターゲットブロック103との間におけるSAD値(以下、説明の簡単のため参照ブロックについてのSAD値という)を、それぞれの参照ブロック106の位置に応じた参照ベクトル107のそれぞれに対応させて、メモリに記憶しておき、そのメモリに記憶された全ての参照ブロック106についてのSAD値の中から、最小のSAD値の参照ブロック106を検出することで、動きベクトル110を検出するようにしている。
サーチ範囲105内に設定された複数個の参照ブロック106の位置に応じた参照ベクトル107のそれぞれに対応させて、それぞれの参照ブロック106についてのSAD値を記憶したものを、差分絶対値和テーブル(以下SADテーブルという)と呼ぶ。図4のSADテーブル108が、これを示しており、このSADテーブル108において、それぞれの参照ブロック106についてのSAD値をSADテーブル要素109という。
なお、上述の説明において、ターゲットブロック103および参照ブロック106の位置とは、それらのブロックの任意の特定の位置、例えば中心位置を意味するものであり、参照ベクトル107は、参照フレーム102におけるターゲットブロック103の射影イメージブロック104の位置と、参照ブロック106の位置との間のずれ量(方向を含む)を示すものである。図8および図9の例では、ターゲットブロック103は、フレームの中心位置にあるとしている場合である。
そして、各参照ブロック106に対応する参照ベクトル107は、参照フレーム102上のターゲットブロック103に対応する位置に対する当該各参照ブロック106の位置ずれとなっているので、参照ブロック106の位置が特定されると、その位置に対応して参照ベクトルの値も特定される。したがって、SADテーブル108のメモリにおける参照ブロックのSADテーブル要素のアドレスが特定されると、対応する参照ベクトルは特定されることになる。
以上説明した従来のブロックマッチングの処理を、図10のフローチャートを参照して説明すると、次のようになる。
先ず、サーチ範囲105内の1つの参照ブロックIiを指定するが、これは、当該参照ブロックIiに対応する参照ベクトルを指定することに等しい(ステップS1)。ここで、図10において、(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
とされるものである。
次に、ターゲットブロック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)
として算出される。
そして、算出した差分絶対値αを、当該参照ブロック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)が指し示すアドレスに書き込むようにする。
次に、ターゲットブロック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つのターゲットブロックに対するブロックマッチングによる動きベクトルの検出処理は、終了となる
以上のようなブロックマッチングを用いたセンサレスの手ぶれ動きベクトルの検出方法の場合、原理的に、ピクセル精度の手ぶれベクトル検出が実現可能であり、また、センサやレンズシフト等の機構を削減できるため、コスト的にも相当優位である。
しかし、上述した従来のブロックマッチングに依存する技術の延長では、1画面分の画素数に比例してSADテーブルの規模が増加するため、現在の500万画素オーバーの静止画サイズの動きベクトル検出を、現実的な回路規模で実現するのは非常に困難である。
過去、各社様々な工夫を凝らしながら、NTSC(National Television System Committee)動画の高々17万画素の手ぶれベクトル検出の回路規模削減に苦慮していた背景がある上に、NTSC動画の場合、60fps(frame per second;フレーム/秒)のため手ぶれのサーチ範囲は狭くて済むが、静止画の場合、3fps程度が前提となり、サーチ範囲が極端に大きくなることも問題を困難にしている一因である。画素数と同じく、サーチ範囲にも比例してSADテーブルのテーブル要素数が増加するからである。
センサレス手ぶれ補正を静止画で実現する手法としては、前述の特許文献3(特開平7−283999号公報)を始め、幾つか提案はされている。特許文献3は、手ぶれの発生しない程度の短い露光時間で何枚かの静止画を連写撮影し、その静止画間の手ぶれベクトルを求め、その手ぶれベクトルに従って、前記連射撮影した複数枚の静止画を平行移動(およびロール軸方向に回転)させながら加算(もしくは平均化)して行くことで、最終的に手ぶれと低照度ノイズの無い高画質の静止画を得る、というアルゴリズムである。
実現できるレベルの現実的な提案としては、特許文献4(特開2005−38396公報)を挙げることができる。この特許文献4に示されたものは、画像を縮小変換したサイズで動ベクトルを求める手段と、同一のSADテーブルを複数のブロックで共有する手段から構成される。画像の縮小変換と、SADテーブルの複数ブロックでの共有化は、SADテーブルサイズの削減を実現するための、非常に良い手法であり、MPEG(Moving Picture Experts Group)画像圧縮方式における動きベクトル検出やシーンチェンジ検出等、他分野でも使われている。
しかし、この特許文献4のアルゴリズムの問題点として、画像の縮小変換と、その際のメモリ(DRAM(Dynamic RAM(Random Access Memory)))アクセスに、時間とメモリ容量を消費することと、SADテーブルを複数ブロックで時分割アクセスする手法のため、メモリアクセスが非常に増加し、この処理にも時間を要してしまうという課題がある。動画の手ぶれ補正においては、リアルタイム性と同時にシステム遅延時間の短縮が求められるため、この処理時間の問題が課題となってしまうのである。
また、元画像を縮小変換する際には、エイリアシング(折り返し歪み)や、低照度ノイズ除去のためのローパスフィルタを、縮小処理の前処理として実装するが必要である。しかし、縮小倍率に応じて、ローパスフィルタの特性が変化する上、特に、垂直方向のローパスフィルタの場合、多タップのデジタルフィルタとした場合に、多くのラインメモリと演算ロジックを必要としなければならず、回路規模増加の問題が生じる。
他方、ブロックマッチングを使用しないアルゴリズムも提案されている(例えば前述の特許文献2(特開平6−86149号公報)、特許文献5(特開2004−343483公報)など)。これらは、2つのフレーム画像内それぞれで、何らかの特徴点を複数点検出し、それらの2つのフレーム間の対応付けを取ることで全体の手ぶれベクトル(グローバルベクトル)を求める手法である。もしくは、片方のフレームのみで特徴点を検出し、その特徴点の周囲に関してのみ、もう一方のフレームに対してブロックマッチングを施しても良い。
この特許文献2や特許文献5のアルゴリズムは、回路規模を削減するうえで非常に有効であり、理想的ではあるものの、現実には、2フレームに共通して存在する、画像全体の真に特徴のある特徴点を、どこまで効率的に数を絞って特定出来るかに、その実効性が掛かっている。したがって、この特許文献5や特許文献6のアルゴリズムに比べると、民生機では森羅万象が撮像対象である限り、ロバスト性においてブロックマッチング手法に一日の長があると考えられる。
上述の通り、デジタルカメラなどの撮像装置では、今後益々高密度画素化が進み、高性能化が求められると予想されるが、このような状況においては、静止画の撮影時の手ぶれ補正を、ジャイロ(角速度)センサを用いないセンサレスで実現する意義は非常に大きい。
そこで、上述したように、ブロックマッチングを用いて、センサレスで、手ぶれ動きベクトルを検出し、その検出した動きベクトルを用いて手ぶれ補正を行なうことが有望であるが、ブロックマッチングの現実解として、回路規模、処理速度、ロバスト性を全て満たす提案はなされていないのが現状である。
そして、ブロックマッチング技法において、最大の問題となっているのが、SADテーブルの増大である。既に述べたように、デジタルカメラにおいては、そのイメージャが500万画素以上が前提の昨今において、画素数に比例してSADテーブルサイズが大きくならざるを得ない上、静止画の場合、3fps程度のため、動画の60fpsの手ぶれ範囲と比較して、何10倍も広いサーチ範囲が必要であり、当該サーチ範囲の拡大は、即ちSADテーブルの増大と等しいからである。
多人数評価の結果、3fpsの静止画の場合における手ぶれ範囲は、全フレームを100%として±10%程度であることが判明している。既に高級機では世に出ている1200万画素を仮定し、現状で提案されている技術のまま、必要なSADテーブルサイズを見積もると、約80メガビットである。しかも、現実的な処理速度を満たそうとすると、このSADテーブル情報を格納するメモリは、内蔵SRAM(Static RAM(Random Access Memory))であることが求められる。半導体プロセスルールが進んだとは言え、このサイズは、ほぼ3桁程度、現実的なレベルからはかけ離れている。
この実施の形態では、以上の点にかんがみ、ブロックマッチングを用いて2フレーム間の動きベクトルを検出する場合において、SADテーブルサイズの大幅な削減が可能である画像処理方法および装置を提供するようにする。
また、前述したブロックマッチングにおける従来の提案手法のうち、特許文献4に記載された画像の縮小変換によるSADテーブルの削減手法に関して、2つの問題を提起した。画像の縮小変換に伴う処理時間の増大並びにメモリ容量の消費と、画像の縮小変換に伴うエイリアシング回避のための適切なローパスフィルタの実装に伴う回路増大の問題である。以下に説明する実施の形態においては、これらの問題点をも解決したものである。
[実施の形態の動きベクトル検出処理部151で用いる新規なブロックマッチング手法の概要]
この実施の形態においても、上述したブロックマッチングを用いて、2フレーム間の動きベクトルを検出するのであるが、ターゲットブロックと参照ブロック間において求められるSAD値を、参照ブロックの参照ベクトルに対応して記憶するのではなく、当該参照ベクトルを縮小し、その縮小した参照縮小ベクトルに対応する、当該参照縮小ベクトルの近傍の複数の参照ベクトルに分散加算して記憶するようにする。
これにより、従来のSADテーブルに比較して、SADテーブルのサイズを大幅に縮小するようにするものである。
図11〜図13は、実施の形態で用いる新規なブロックマッチング手法の概要を説明するための図である。図13は、従来のSADテーブルTBLoと、実施形態で用いる新規なブロックマッチング手法において生成される縮小SADテーブルTBLsとの関係を示すものである。
この実施形態においても、図8に示したように、従来と同様に、参照フレームにおいて、元フレームに設定されたターゲットブロックの位置を中心としてサーチ範囲が設定される。そして、このサーチ範囲において、前述したような複数の参照ブロックが設定され、各参照ブロック内の画素とターゲットブロック内の対応する画素の輝度値の差分の絶対値の総和、つまり、SAD値が求められる。
従来は、求められたSAD値は、図11に示すように、対象となっている参照ブロックの参照ベクトルRVに対応するアドレスのテーブル要素tblとしてSADテーブルTBLoに書き込まれる。
したがって、従来のブロックマッチングでは、ターゲットブロックと参照ブロックとのフレーム画像上における位置ずれ量を表わす参照ベクトルRVと、SADテーブルTBLoの各テーブル要素である参照ブロックのSAD値とは、1対1に対応している。すなわち、従来のSADテーブルTBLoでは、サーチ範囲で取り得る参照ベクトルRVと等しい数のSAD値のテーブル要素数を備えるものとなっている。
これに対して、この実施形態におけるブロックマッチングでは、図11および図12(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)としたときに、図12(A)に示すように、(−3,−5)の位置を示す参照ブロックRVを、水平方向および垂直方向に、1/n=1/4倍に縮小すると、その参照縮小ベクトルCVで示される位置は、図12(B)に示すように、(−0.75,−1.25)となる。
したがって、参照縮小ベクトルCVで示される位置は小数成分が発生し、参照ベクトルで示される位置とは一致しない。
そこで、この場合には、図13に示すように、当該参照縮小ベクトルCVが示す位置の近傍位置を示す複数個の近傍参照ベクトルが検出される。図13の例では、1つの参照縮小ベクトルCVに対して、4個の近傍参照ベクトルNV1,NV2,NV3,NV4が検出される。
そして、前述したように、この実施形態では、参照ベクトルRVの参照ブロックについて求められたSAD値は、これら4個の近傍参照ベクトルNV1,NV2,NV3,NV4に対応するSAD値として分散加算される。
この場合に、この実施形態では、4個の近傍参照ベクトルNV1,NV2,NV3,NV4のそれぞれに分散加算するSAD値は、参照縮小ベクトルCVで示される位置P0(図13において×印として示す)と、4個の近傍参照ベクトルNV1,NV2,NV3,NV4のそれぞれで示される位置P1,P2,P3,P4(図13において○印として示す)との位置関係を用いて線形加重分散値として算出する。
図13の例の場合には、参照縮小ベクトル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,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値を求めるようにすれば良い(図11参照)。
したがって、この実施形態の場合には、縮小SADテーブルTBLsのテーブル要素の数は、従来のSADテーブルTBLoのテーブル要素数の1/nとなり、テーブルサイズを大幅に小さくすることが可能である。
なお、上述の実施形態の説明においては、参照縮小ベクトル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テーブルに対して適用した手法である。
すなわち、縮小SADテーブルにおいて、SAD値が最小値となるテーブル要素(整数精度最小値テーブル要素(整数精度テーブルアドレス))と、この整数精度最小値テーブル要素を中心とする複数の整数精度テーブル要素とを求め、それらのテーブル要素のSAD値を用いて、最小自乗法によりSAD値の2次曲面を決定し、この2次曲面の最小値となるSAD値を検出し、当該検出した最小値となるSAD値に対応する位置(参照フレーム上において、基準位置に対してずれた位置)を検出し、当該検出した位置を小数精度の最小値テーブルアドレス(縮小SADテーブルにおいてSAD値が最小値となるベクトル(最小値ベクトルという)に対応)とする。
この場合、一意の2次曲面を定めるためには、図14(A)または(B)に示すように、整数精度最小値テーブル要素tmと、当該テーブル要素tmをその両側から挟む位置の、当該テーブル要素tmの近傍の4個の整数精度テーブル要素t1,t2,t3,t4が最低限必要である。
そして、図15に示すように、参照フレームのサーチ範囲内の縮小SADテーブルに対応する参照縮小ベクトルの範囲内において、ターゲットフレームの位置を基準位置(0,0)として、水平方向および垂直方向のずれ量(参照縮小ベクトルに対応)の軸vx/nおよび軸vy/nを考えると共に、これらの軸vx/nおよび軸vy/nに垂直な軸として、SAD値の軸を考え、これら3軸からなる座標空間を想定する。
そして、例えば、整数精度最小値テーブル要素tmのSAD値と、当該整数精度最小値テーブル要素tmを挟む2個のテーブル要素t1、t3のSAD値とから、図15の座標空間において2次曲線を生成する。また、整数精度最小値テーブル要素tmのSAD値と、当該最小値テーブル要素tmを挟む他の2個のテーブル要素t2、t4のSAD値とから、図15の座標空間において、他の2次曲線を生成する。そして、これら2個の2次曲線を含む2次曲面201を、最小自乗法により求め、その2次曲面201を、図15に示すように、座標空間において生成する。
そして、生成されたSAD値の2次曲面201の最小値202を検出し、その最小値を取るSAD値に対応する位置(vx/n,vy/n)(図15の位置203)を検出し、当該検出した位置(vx/n,vy/n)を、小数精度のテーブル要素(テーブルアドレス)として検出する。そして、検出した小数精度テーブル要素に対応するベクトル(最小値ベクトル)204を、図16に示すようにn倍して、元の大きさ精度の動きベクトル205を得る。
例えば、図17に示すように、参照ベクトルを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個の矩形領域のテーブル要素を用いる例>
図18に、整数精度最小値テーブル要素tmを中心として、その周囲の水平方向×垂直方向=3×3個の矩形領域(図18で塗りを付して示してある)のテーブル要素を用いるようにする例を示す。
この図18の例の場合には、図18(A)に示すように、整数精度最小値テーブル要素tmと、その近傍の8個の近傍テーブル要素のSAD値を用いて、図18(B)に示すような2次曲面201を、最小自乗法により生成する。そして、生成されたSAD値の2次曲面201の最小値202を検出し、その最小値を取るSAD値に対応する位置(vx/n,vy/n)(図18(B)の位置203)を検出し、当該検出した位置203を、小数精度の最小値テーブル要素位置(小数精度最小値テーブルアドレス)として検出する。
そして、検出した小数精度テーブル要素位置203に対応するベクトル(最小値ベクトル)204を、前述した図16に示すようにn倍して、元の大きさ精度の動きベクトル205を得る。
ここで、SAD値の2次曲面201の最小値202に対応する位置203の算出方法は、次のようになる。すなわち、図19に示すように、整数精度最小値テーブル要素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位置となる。
そして、図19のテーブルにおける各テーブル要素のSAD値を、Sxyとする。したがって、例えば、整数精度最小値テーブル要素tm(位置(0,0))のSAD値はS00と表され、また、右下の位置(1,1)のテーブル要素値のSAD値はS11と表される。
すると、整数精度最小値テーブル要素tmの位置を原点(0,0)とする(x,y)座標における小数精度の位置(dx、dy)は、図20に示す(式A)および(式B)により、求めることができる。
図20の(式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
となる。
こうして求められた小数精度の位置(dx,dy)は、整数精度最小値テーブル要素tmの位置を原点(0,0)とする位置であるので、この小数精度の位置(dx,dy)と整数精度最小値テーブル要素tmの位置とから、求めるサーチ範囲の中心位置からの位置203を検出することができる。
[4×4個の矩形領域のテーブル要素を用いる例]
図21に、整数精度最小値テーブル要素tmをほぼ中心として、その周囲の水平方向×垂直方向=4×4個の矩形領域のテーブル要素(図21で塗りを付して示してある)を用いるようにする例を示す。
この場合に、整数精度最小値テーブル要素tmと、その近傍の8テーブル要素(3×3)や、その近傍の24テーブル要素(5×5)のように、前記mの値が奇数である場合には、整数精度最小値テーブル要素tmは、常に、使用する矩形領域の複数のテーブル要素の中心になるため、使用するテーブル範囲は単純に決定する。
これに対して、近傍の15テーブル要素(4×4)のように、mが偶数である場合には、整数精度最小値テーブル要素tmは、使用する矩形領域の複数のテーブル要素の中心位置とはならないので、若干の工夫が必要となる。
つまり、整数精度最小値テーブル要素tmから見て、水平方向に左右の隣接テーブル要素のSAD値を比較し、小さい値となった側の方向の、当該方向の隣接テーブル要素に隣接するテーブル要素を近傍テーブル要素の4列目として採用する。同様に、垂直方向に上下の隣接テーブル要素のSAD値を比較し、小さい値となった側の方向の、当該方向の隣接テーブル要素に隣接するテーブル要素を近傍テーブル要素の4行目として採用する。
図21の例では、整数精度最小値テーブル要素tmの水平方向に左右の隣接テーブル要素のSAD値は、「177」と「173」であるので、SAD値が小さい右隣の値「173」のテーブル要素のさらに右隣の列を第4列目として採用する。また、整数精度最小値テーブル要素tmの垂直方向に上下の隣接テーブル要素のSAD値は、「168」と「182」であるので、SAD値が小さい上隣の値「168」のテーブル要素のさらに上隣の行を第4行目として採用する。
そして、図21の例の場合には、整数精度最小値テーブル要素tmと、その近傍の15個の近傍テーブル要素のSAD値を用いて、2次曲面201を、最小自乗法により生成する。そして、生成されたSAD値の2次曲面201の最小値202を検出し、その最小値を取るSAD値に対応する位置(vx/n,vy/n)(図21の位置203)を検出し、当該検出した位置203を、小数精度の最小値テーブル要素位置(小数精度最小値テーブルアドレス)として検出する。
そして、検出した小数精度テーブル要素位置203に対応するベクトル(最小値ベクトル)204を、前述した図16に示すようにn倍して、元の大きさ精度の動きベクトル205を得る。
ここで、この例の場合におけるSAD値の2次曲面201の最小値202に対応する位置203の算出方法は、次のようになる。すなわち、図22に示すように、整数精度最小値テーブル要素tmの位置を原点(0,0)とする(x,y)座標を考える。
この例の場合には、16テーブル要素からなる矩形領域中における整数精度最小値テーブル要素tmの位置に応じて、図22(A),(B),(C),(D)のような4通りのテーブル要素配置を考える必要がある。
この場合、周辺の15個のテーブル要素の位置は、図22(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位置となる。
そして、図22のテーブルにおける各テーブル要素のSAD値を、Sxyとする。したがって、例えば、整数精度最小値テーブル要素tm(位置(0,0))のSAD値はS00と表され、また、位置(1,1)のテーブル要素値のSAD値はS11と表される。
すると、整数精度最小値テーブル要素tmおよびその周辺の16テーブル要素からなる矩形領域中の中心位置を原点(0,0)とする(x,y)座標における小数精度の位置(dx,dy)は、図23に示す(式C)および(式D)により、求めることができる。
ここで、図23の(式C)および(式D)において、KxおよびKyは、整数精度最小値テーブル要素tmおよびその周辺の16テーブル要素からなる矩形領域中の中心位置を原点(0,0)とする(Kx,Ky)座標を考えたときの、前記図22(A),(B),(C),(D)に示した4通りのテーブル要素配置に応じた値となる。このときの(Kx,Ky)座標を図24に示す。
すなわち、図22(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
となる。
また、図22(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
となる。
また、図22(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
となる。
また、図22(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
となる。
また、図23の(式C)および(式D)におけるΔxおよびΔyは、(Kx,Ky)座標に対する図22(A),(B),(C),(D)の各テーブル要素配置における(x,y)座標とのずれ量を表しており、
図22(A)の場合には、Δx=−0.5、Δy=−0.5、
図22(B)の場合には、Δx=−0.5、Δy=0.5、
図22(C)の場合には、Δx=0.5、Δy=−0.5、
図22(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)を検出して、検出した位置を小数精度の最小値アドレスとするものである。
図25は、この第2の例を説明するための図である。前述の第1の例と同様にして、整数精度最小値テーブル要素tmと、この整数精度最小値テーブル要素を中心とする複数の整数精度テーブル要素、図25の例では、4×4=16個のテーブル要素を求める(図25(A)で塗りを付した部分参照)。
次に、第1の例と同様にして、図25(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を、前述した図16に示すようにn倍して、元の大きさ精度の動きベクトルを得る。
すなわち、第2の例は、第1の例で説明した方法により、水平方向、垂直方向のそれぞれの4個のテーブル要素を確定し、図25(B)に示すように、水平方向、垂直方向のそれぞれで、3次曲線を一意に定める手法である。
ここで、SAD値の3次曲線206および209の最小値202に対応する位置208の算出方法は、次のようになる。すなわち、水平方向または垂直方向のいずれかの方向における3次曲線において、最小値の近傍の4点のSAD値を、前記水平方向または垂直方向のいずれかの方向に沿った順番に、S、S、S、Sとしたとき、小数精度の最小値が、図26に示す3つの区間Ra,Rb,Rcのいずれにあるかにより、最小値を取る小数成分uを算出する式が異なる。
ここで、区間RaはSAD値Sとなる位置とSAD値Sとなる位置との間の区間、RbはSAD値Sとなる位置とSAD値Sとなる位置との間の区間、RcはSAD値Sとなる位置とSAD値Sとなる位置との間の区間である。
そして、小数精度の最小値が、図26に示す区間Raにあるときには、図27の(式E)により、整数精度の最小値の位置に対する最小値を取る位置までのずれの小数成分uが算出される。
また、同様に、小数精度の最小値が、図26に示す区間Rbにあるときには、図27の(式F)により、整数精度の最小値の位置に対する最小値を取る位置までのずれの小数成分uが算出される。
さらに、小数精度の最小値が、図26に示す区間Rcにあるときには、図27の(式G)により、整数精度の最小値の位置に対する最小値を取る位置までのずれの小数成分uが算出される。
そして、小数精度の最小値が、図26に示す3つの区間Ra,Rb,Rcのいずれにあるかの判別は、次のようにして行なう。
すなわち、図28は、その判別を説明するための図である。図28(A),(B),(C)に示すように、先ず、整数精度のSAD値の最小値Sminと、2番目に小さい整数精度のSAD値Sn2とを検出し、小数精度の最小値は、検出された整数精度のSAD値の最小値Sminの位置と、2番目に小さい整数精度のSAD値Sn2の位置との間の区間に存在するとして検出する。次に、整数精度のSAD値の最小値Sminと、2番目に小さい整数精度のSAD値Sn2とが、図28に示したSAD値S、S、S、Sのいずれの位置となっているかにより、検出した区間が区間Ra,Rb,Rcのいずれであるかの判別を行なう。
なお、図28(D)に示すように、整数精度のSAD値の最小値SminがSAD値のまたは位置にあって、4個のテーブル要素値の端に位置する場合には、最小位置が推定できないとして、この実施形態では、エラーとして扱い、最小値位置の算出は行なわないようにする。もっとも、この図28(D)のような場合においても、最小値位置を算出するようにしてもよい。
以上のようにして、この実施形態によれば、1/nにスケールダウンした小さいサイズの縮小SADテーブルを用いて、元の画像スケールにおける動きベクトルを検出することができる。この場合に、1/nにスケールダウンした小さいサイズの縮小SADテーブルを用いているにも関わらず、従来とほぼ同様のベクトル検出結果が得られることを図20に示す。
図29の横軸は、水平方向または垂直方向の一方についての1次元方向の縮小倍率nであり、また、縦軸は、検出される動きベクトルについての誤差(ベクトル誤差)を示している。図29のベクトル誤差の数値は画素数で表されている。
図29において、曲線301は、縮小倍率に対するベクトル誤差の平均値である。また、曲線302は、縮小倍率に対するベクトル誤差の分散σの3倍値(3σ(99.7%))を示している。曲線303は、曲線302の近似曲線を示している。
図29は、1次元方向の縮小倍率nに対するベクトル誤差を示しているが、SADテーブルは2次元のため、図29に示されるものの2乗の割合でテーブルサイズ(テーブル要素数)が削減されるのに対し、ベクトル誤差は、線形程度にしか増加しないことから、この実施形態による手法の有用性が分かる。
また、n=64(縮小率1/64)倍の縮小倍率でも、ベクトル誤差は小さく、全く異なる動きベクトルを検出出力とするような破綻は見られないことから、実質、1/4096に、SADテーブルのサイズを削減可能であると言える。
また、前述したように、動画の手ぶれ補正においては、リアルタイム性とシステム遅延の削減が強く求められるのに対し、精度については、破綻した全く異なる動きベクトルが検出される場合を除き、ある程度のベクトル検出誤差に対して寛容である。したがって、破綻しないままSADテーブルのサイズを大きく削減することができる、この実施形態は有用性が高いと言える。
なお、この実施形態の実際の手ぶれ補正システムでは、前述したように、参照フレーム102を複数の領域に分割し、それぞれの分割領域においてターゲット領域TGiとしてターゲットブロック103を設定し、それぞれに対してサーチ範囲105を設定して動きベクトル205(前述の図5(A)の動きベクトルMVi)を検出するようにする。これは、フレーム内には動く被写体が含まれる可能性も高いため、例えば、図30のように参照フレーム102の1フレーム内において16個の動きベクトル205を検出し、過去のフレームにおけるそれらの動きベクトル205からの推移も加味しながら統計的に処理することで、1フレームについて1つのグローバルベクトル、即ち、フレームの手ぶれベクトルを確定するようにするためである。
また、この実施形態では、前述もしたように、手ぶれ動きベクトルから光学ズーム分ベクトルを除去するために、1画面内に複数個のターゲットブロックを設定するものである。
この場合、図30に示すように、検出したい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関数の一形態として良い。
図31〜図33の上側には、それぞれ縮小倍率が1/2倍、1/4倍、1/8倍のときのsinc関数(ローパスフィルタの理想特性)の形状を示す。この図31〜図33から、縮小倍率が大きくなればなる程、関数がタップ軸方向に拡大して行くことが分かる。つまり、無限タップのsinc関数を主要な係数のみで近似する場合にも、FIRフィルタのタップ数を増加させなければならないと言える。
また、一般的に、より低い帯域のカットオフ周波数を実現するフィルタは、フィルタ形状よりもタップ数が、その性能に対して支配的になって行くことが知られている。
したがって、特許文献4に記載の従来手法の縮小画像を用いる動きベクトル演算手法の場合、画像の縮小倍率が大きくなればなる程、そのSADテーブル削減効果が大きいにも関わらず、画像生成する際の前処理用フィルタとしてのローパスフィルタは、縮小倍率が大きくなればなる程、コストが増加してしまう、という矛盾を併せ持つのである。
一般に、高次タップのFIRフィルタを実現する場合、演算ロジックのコストがタップ数の2乗に比例して増加するため、問題となるが、より大きい問題は、垂直フィルタ実現のためのラインメモリ数の増加である。近年のデジタルスチルカメラにおいては、画素数向上に伴うラインメモリのサイズ削減のため、いわゆる短冊処理を行なっているが、例え、1ライン当たりのサイズを削減したとしても、ラインメモリそのものの本数が増加することは、物理レイアウトエリアで換算されるトータルコストを著しく押し上げる。
以上、述べたように、特許文献4に記載の従来手法の画像縮小によるアプローチは、特に垂直ローパスフィルタの実現において、大きな壁が立ちはだかっていることが分かる。それに対し、この発明の手法は、全く異なる形で簡潔にこの問題を解決している。
図31〜図33の下側に、この実施の形態で用いる新規なブロックマッチング手法におけるローパスフィルタのイメージを示す。この実施の形態で用いる新規なブロックマッチング手法においては、画像縮小処理を伴っていないが、縮小SADテーブルの生成演算過程におけるローパスフィルタのイメージを図示したものである。
図31〜図33の下側に示されるように、このローパスフィルタの特性は、sinc関数の主要係数部分を線形で近似した、シンプルなフィルタ特性ではあるものの、縮小倍率に連動してタップ数が増加していることが分かる。これは、先に述べた、カットオフ周波数が低くなる程、ローパスフィルタの性能はタップ数が支配的になる、という事実に好適である。つまり、実施形態の線形加重分散加算を行なう処理のような、この発明におけるSAD値の分散加算を行なう処理そのものが、倍率連動の高性能ローパスフィルタを、シンプルな回路で実現していることと等価なのである。
このローパスフィルタに絡んで、他にもメリットがある。特許文献4記載の従来手法では、ローパスフィルタをかけた後、リサンプリングすることで画像を縮小するが、この時点で相当数の画像情報が失われる。つまり、ローパスフィルタの演算において、画像情報の輝度値の語長は大幅に丸められてメモリに格納され、殆どの画素情報の下位ビットは、縮小後の画像に影響を与えないのである。
一方、この実施の形態で用いる新規なブロックマッチング手法においては、全ての画素の輝度値の全ビット情報を、遍く平等に使用してSAD値を演算し、その分散加算値を求めて縮小SADテーブルに加算する。縮小SADテーブルの各テーブル要素値の語長さえ増やせば、最終的なSAD値の出力まで、一切の丸め誤差を含まない形で演算可能である。縮小SADテーブルの面積はフレームメモリに比較して小さいため、縮小SADテーブルの語長拡張は大きな問題にならない。その結果として、縮小SADテーブル並びに動きベクトル検出を、高精度に実現できるのである。
<動きベクトル検出部151における処理動作>
<第1の例>
この動きベクトル検出部151における処理動作の第1の例の流れを、図34および図35のフローチャートを参照して、以下に説明する。
先ず、前述の図8あるいは図30に示したようなサーチ範囲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
とされるものである。
次に、ターゲットブロック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)が指し示すアドレスに書き込むようにする。
次に、ターゲットブロックIo内の全ての座標(x,y)の画素について、上記のステップS102〜ステップS104の演算を行なったか否かを判別し(ステップS105)、ターゲットブロックIo内の全ての座標(x,y)の画素については、未だ、その演算は終了していないと判別したときには、ステップS102に戻り、ターゲットブロックIo内の次の座標(x,y)の画素位置を指定し、このステップS102以降の処理を繰り返す。
以上のステップS101〜ステップS105までの処理は、図10に示したフローチャートのステップ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までの演算処理を完了したか否か判別する(図35のステップ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つのターゲットブロックに対する、この実施形態におけるブロックマッチングによる動きベクトルの検出処理は、終了となる。図30に示したような、1フレームについて分割した領域において、複数個の動きベクトルを検出する場合には、サーチ範囲および縮小倍率1/nを再設定して、上述の図34および図35に示した処理を、各分割領域のターゲットブロックについて繰り返すものである。
なお、小数精度の位置を示す最小値ベクトル(px,py)を算出する方法としては、前述した水平方向および垂直方向の3次曲線を用いる方法を用いても良いことは言うまでもない。
<第2の例>
上述の第1の例においては、1つの参照ブロック(参照ベクトル)について、そのSAD値を求めた後、そのSAD値から、参照縮小ベクトルの近傍の複数参照ベクトルについての分散加算値を求め、分散加算処理を行なうようにした。
これに対して、この第2の例においては、参照ブロック内の各画素の、ターゲットブロックの画素との差分を検出したときに、その差分値から、参照縮小ベクトルの近傍の複数参照ベクトルについての分散加算値(SAD値ではなく差分値)を求め、求めた差分値を分散加算処理するようにする。この第2の例によれば、1つの参照ブロック内のすべての画素についての差分演算を終了したときには、縮小SADテーブルが生成されることになる。
図36および図37は、この第2の例による動きベクトル検出処理のフローチャートを示すものである。
図36のステップS121〜ステップS123までの処理は、図34のステップ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までの演算処理を完了したか否か判別する(図37のステップ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の例におけるブロックマッチングによる動きベクトルの検出処理は、終了となる。図30に示したような、1フレームについて分割した領域において、複数個の動きベクトルを検出する場合には、サーチ範囲および縮小倍率1/nを再設定して、上述の図36および図37に示した処理を、各分割領域について繰り返すものである。
なお、この第2の例においても、小数精度の位置を示す最小値ベクトル(px,py)を算出する方法としては、前述した水平方向および垂直方向の3次曲線を用いる方法を用いても良いことは言うまでもない。
<第3の例>
図29に示したように、この実施形態による動きベクトルの検出手法を用いた場合には、参照ベクトルの縮小倍率が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の例の場合における動きベクトル検出処理を、図38〜図41のフローチャートを参照しながら説明する。
この図38〜図40に示す第3の例は、基本的な動き検出処理として上述した第1の例を用いている。したがって、図38のステップS141〜ステップS149の処理ステップおよび図39のステップS151〜ステップS155までの処理ステップは、図34のステップS101〜ステップS109の処理ステップおよび図35のステップS111〜ステップS115までの処理ステップと全く同様である。
この第3の例においては、図39のステップS155で動きベクトルを算出したら、そこで処理を終了するのではなく、当該ステップS155で算出した動きベクトルは、1回目の動きベクトルとして、次のステップS156において、この1回目で算出した動きベクトルに基づき、同じ参照フレーム内で、サーチ範囲を絞り、また、参照ベクトルの縮小倍率を、1回目の縮小倍率1/naよりも小さい縮小倍率1/nbに変更する。
すなわち、1回目の処理で、動きベクトルが算出されると、その算出された動きベクトルから、参照フレームと元フレームとの間で、相関のあるブロック範囲がおおよそ検出できる。そこで、その相関のあるブロック範囲を中心とした、絞ったサーチ範囲を設定することができる。そして、1回目よりも縮小倍率を小さくすることで、より誤差の少ない状態で、2回目の動きベクトルの算出が可能になると期待できる。
こうして、ステップS156で、絞ったサーチ範囲を設定し、新たな縮小倍率を設定したら、1回目と全く同様にして、2回目の動きベクトルの検出処理を、ステップS157〜ステップS158、図40のステップS161〜ステップS168、さらに、図41のステップS171〜ステップS174により実行する。これらのステップの処理は、図34のステップS101〜ステップS109の処理ステップおよび図35のステップS111〜ステップS115までの処理ステップと全く同様である。
こうして、最終的に、ステップS174において、2回目の動きベクトルとして、目的とする動きベクトルが得られる。
以上の例は、動きベクトルの検出方法として、前述した第1の例を用い、それを2段階、繰り返した場合であるが、サーチ範囲をさらに絞り、かつ、必要に応じて縮小倍率を変更しながら、2段階以上、繰り返すようにしても、勿論良い。
また、動きベクトルの検出方法としては、前述した第1の例の代わりに、前述した第2の例を用いることができることは言うまでもない。また、小数精度の位置を示す最小値ベクトル(px,py)を算出する方法としては、前述した水平方向および垂直方向の3次曲線を用いる方法を用いても良いことは前述の例と同様である。
[ズーム操作を撮像時の全体の処理の流れ]
次に、この実施形態の撮像装置において、撮像時にズームスイッチ7を通じてズーム操作がなされたときの処理の流れを、図42のフローチャートを参照して説明する。この図42の処理は、ユーザが動画の撮像時にズームスイッチ7を操作したときにスタートから開始される。
撮像時にズームスイッチ7がユーザにより操作されると、そのズームスイッチ7の操作入力をCPU1が受け付ける(ステップS181)。そして、CPU1は、受け付けたズーム操作入力に基づいて、ズーム機構部8のズームモータ(ズームアクチュエータ)を制御するズーム制御信号CTLを生成し、ズーム機構部8に供給する(ステップS182)。
そして、CPU1は、撮像画像のフレーム単位でズームポジションを更新して保存する(ステップS183)。次に、CPU1は、更新したフレームについて、図5(A)に示したように、各ターゲット領域TGiについての動きベクトルMViを、動きベクトル検出処理部151から取得する(ステップS184)。
次に、ズーム機構部8におけるズーム制御処理の遅延に基づく撮像画像上でのズームの動き遅延(画像遅延)分を加味して、過去のズームポジションからのズーム速度の変化、時間変移などの変動率を用いて、各ターゲット領域TGiにおける光学ズームによる画像の動きベクトル成分(光学ズーム分ベクトル)ZViを算出する(ステップS185)。このステップS185は、前述した図1の光学ズーム分ベクトル算出部152での処理に相当する。
次に、ステップS184で取得した動きベクトルMViと、光学ズーム分ベクトルZViとの差分を演算して、差分のベクトルVeciを求める(ステップS186)。このステップS186は、前述した図1の光学ズーム分減算部153での処理に相当する。
次に、ステップS186で求めた差分のベクトルVeciから、グローバル手ぶれベクトルGVecを求める(ステップS187)。このステップS187は、図1のグローバル手ぶれベクトル算出部155の処理に相当する。
次に、図2の解像度変換部16は、手ぶれ動きベクトル検出部15からのグローバル手ぶれベクトルGVecを受け取り、当該受け取ったグローバル手ぶれベクトルにしたがって、画像メモリ部4のフレームメモリ42の、手ぶれに応じてずれたアドレス位置から画像データを切り出すようにする(ステップS188)。
[この発明による撮像画像の歪み補正装置の第2の実施形態]
上述した撮像画像の歪み補正装置の第1の実施形態が適用された撮像装置における手ぶれ動きベクトル検出部15の動きベクトル検出処理部151においては、図2に示したように、画像メモリ部4は、2枚の画像、つまり元フレームの画像と、参照フレームの画像とが、両方共、フレームメモリ41,42に格納されていることを前提にしていた。このため、動きベクトルの検出タイミングは、1フレーム分遅延されることとなる。
これに対して、この第2の実施形態では、撮像素子11からの垂れ流し画像データを参照フレームとする構成として、ラスタースキャンのストリームデータに対して、リアルタイムでSAD値を演算することができるようにしている。第2の実施形態は、第1の実施形態とは手ぶれ動きベクトル検出部15および画像メモリ部4の構成が異なるのみで、その他の構成は、第1の実施形態と全く同様である。
なお、手ぶれ動きベクトル検出部15の構成も、基本的に図1の構成を有することは第2の実施形態においても同様であり、ただし、動きベクトル検出処理部151における動きベクトルの検出処理動作が第1の実施形態とは異なるものである。
図43に、この第2の実施形態の場合における撮像装置の構成例のブロック図を示す。この図43から分かるように、撮像信号処理系10の構成ブロックおよびその他の構成ブロックは、図1に示した第1の実施形態と全く同様であるが、この第2の実施形態においては、図43に示すように、画像メモリ部4は1個のフレームメモリ43からなる。
この第2の実施形態では、元フレームがフレームメモリ43に格納されており、参照フレームは、データ変換部14からストリームで手ぶれ動きベクトル検出部15に入力されるものとされる。手ぶれ動きベクトル検出部15は、第1の実施形態では、2個のフレームメモリ41,42に格納された2枚の画像データを用いて、参照ブロックについてのSAD値を求める処理をするようにした。これに対して、この第2の実施形態では、図33に示すように、データ変換部14からのストリーム画像データを参照フレームの画像データとすると共に、フレームメモリ43に格納されている画像データを元フレームの画像データとして、参照ブロックについてのSAD値を求めるようにする。SAD値は、例えば輝度信号成分Yを用いて求めるのは前述の第1の実施形態と同様である。輝度信号成分のみでなく、色差信号成分をも含めて、SAD値を求めてももちろんよい。
このように、この第2の実施形態の手ぶれ動きベクトル検出部15では、データ変換部14からのストリーム画像データを参照フレームの画像データとする。このため、ある入力画素に対して、この画素を要素とする参照ブロックが、参照フレーム上に同時に複数存在することになる。図44は、そのことを説明するための図である。
すなわち、参照フレーム102上のサーチ範囲105における入力画素Dinは、例えば、参照ベクトル1071が対応する参照ブロック1061の左側に位置する画素であると共に、参照ベクトル1072が対応する参照ブロック1062の右上に位置する画素となっていることが、この図44から分かる。
したがって、入力画素Dinが参照ブロック1061に属するとした場合には、ターゲットブロック103の画素D1を読み出して、その差分を算出する必要がある。また、入力画素Dinが参照ブロック1062に属するとした場合には、ターゲットブロック103の画素D2を読み出して、その差分を算出する必要がある。
図44および後述の図45では簡単のため、2つの参照ブロックのみを図示しているが、実際上は、入力画素Dinを、その参照ブロック内の画素とする参照ブロックは多数となる。
この第2の実施形態の場合のSAD演算は、入力画素Dinの輝度値Yと、各々の参照ブロック内の入力画素Dinの位置に対応した、ターゲットブロック内の画素の輝度値Yとの差分絶対値を算出し、その算出した差分絶対値を、それぞれの参照ブロックに対応した参照ベクトルに従って、SADテーブルに加算してゆくようにして行なう。
例えば、入力画素Dinが参照ブロック1061に属するとした場合における、ターゲットブロック103の画素D1と入力画素Dinとの差分絶対値は、図45に示すように、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は、図44および図45を用いて説明したように、データ変換部14からの画像データと、当該画像データと比較すべき画像が含まれると考えられるすべての参照ブロックの画像データを、システムバス2を介してフレームメモリ43から読み出して、それぞれについてのSAD値を求め、求めたSAD値を、それぞれの参照ブロックに対応するSADテーブルアドレスのSAD値に加算するようにする。
そして、この第2の実施形態においても、動きベクトル検出処理部151は、例えば図30に示したような1フレームにおける複数個のサーチ範囲のそれぞれにおけるSADテーブルを作成して、そのSADテーブルにおけるSAD値の最小値を求めて、各サーチ範囲についての動きベクトル(サーチ範囲毎動きベクトル)をそれぞれ求める。
そして、動きベクトル検出部15は、1フレームにおける複数個のサーチ範囲のすべてのサーチ範囲毎動きベクトルから、過去の動きベクトルに対する推移関係をも考慮して、1フレームについての動きベクトルであるグローバル動きベクトルを検出する。そして、動きベクトル検出部15は、その検出結果であるグローバル動きベクトルを、その後段の解像度変換部16に制御信号として伝達する。
解像度変換部16は、動きベクトル検出部15から受け取ったグローバル動きベクトルにしたがって、フレームメモリ43に格納されている遅延フレームの画像データを切り出しながら、必要な解像度および画像サイズに変換する処理をする。このフレームメモリ43からのグローバル動きベクトルにしたがった切り出しにより、変換後の画像は、手ぶれが除去された画像となる。
図45の説明は、従来手法に、リアルタイムSAD算出処理を適用した場合である。この第2の実施形態においては、図45において、SADテーブル108の参照ベクトル1071または1072が対応するSADテーブル要素1091または1092のSAD値として、算出した差分絶対値のそれぞれを、加算して書き込むのではなく、前述した第1の実施形態のように、参照ベクトル1071,1072を縮小倍率1/nで縮小した参照縮小ベクトルを算出し、その参照縮小ベクトルの近傍の複数の参照ベクトルに、前記算出した差分絶対値から、それぞれを分散加算するための分散加算値を求め、求めた分散加算値を、前記近傍の複数の参照ベクトルに対応するSAD値に加算するようにするものである。
SADテーブル(縮小SADテーブル)が完成した後の正確な動きベクトルを検出するための処理は、この第2の実施形態においても、前述した第1の実施形態で述べた手法と全く同様にして、2次曲面や、水平方向および垂直方向の3次曲線を用いた手法を用いることができる。
[第2の実施形態における動きベクトル検出処理部151の処理動作例]
動きベクトル検出処理部151における動きベクトルの検出処理動作の例の流れを、図46および図47のフローチャートを参照して、以下に説明する。なお、この図46および図47のフローチャートの処理は、説明の便宜上、1フレームの撮像画像データについての処理として示している。
先ず、手ぶれ動きベクトル検出部15では、入力画像のフレーム(参照フレーム)の任意の位置(x,y)の画素データDin(x,y)を受け取る(ステップS201)。次に、当該画素の位置(x,y)を含む複数の参照ブロックの一つに対応する参照ベクトル(vx,vy)を設定する(ステップS202)。
次に、設定された参照ベクトル(vx,vy)の参照ブロックIiの当該画素値Ii(x,y)と、これに対応するターゲットブロックIo内の画素値Io(x−vx,y−vy)との差分の絶対値αを算出する(ステップS203)。すなわち、差分絶対値αは、
α=|Io(x−vx,y−vy)−Ii(x,y)| ・・・(式3)
として算出される。
次に、縮小倍率を1/nとして、参照ベクトル(vx,vy)を1/nに縮小した参照縮小ベクトル(vx/n,vy/n)を算出する(ステップS204)。
次いで、参照縮小ベクトル(vx/n,vy/n)の近傍の複数の参照ベクトル、この例では、上述したように4個の近傍参照ベクトルを検知する(ステップS205)。そして、検知した4個の近傍参照ベクトルのそれぞれに対応するテーブル要素として分散加算すべき値(差分絶対値)を、前述したように、参照縮小ベクトルと近傍参照ベクトルとがそれぞれ示す位置の関係に基いて、ステップS203で求めた差分絶対値αから、線形加重分散値として求める(ステップS206)。そして、求めた4個の線形加重分散値を、近傍参照ベクトルのそれぞれに対応するSADテーブル要素値に加算する(ステップS207)。
次に、入力画素Din(x,y)を含む参照ブロックの全てについての上記ステップS202〜ステップS207の演算を行なったか否か判別し(ステップS208)、当該入力画素Din(x,y)を含む他の参照ブロックがあると判別したときには、ステップS202に戻り、当該入力画素Dinを含む他の参照ブロック(vx,vy)を設定し、このステップS202〜ステップS207の処理を繰り返す。
また、ステップS208で、入力画素Din(x,y)を含む参照ブロックの全てについての上記ステップS202〜ステップS207の演算を行なったと判別したときには、サーチ範囲内の全ての入力画素Dinについて、上記の演算ステップの処理を終了したか否か判別し(図47のステップS211)、終了していないと判別したときには、ステップS201に戻り、サーチ範囲内の次の入力画素Dinを取り込み、このステップS201以降の処理を繰り返す。
そして、ステップS211で、サーチ範囲内の全ての入力画素Dinについて、上記の演算ステップの処理を終了したと判別すると、縮小SADテーブルが完成したとして、当該完成した縮小SADテーブルにおいて、最小値となっているSAD値を検出する(ステップS212)。
次に、当該最小値となっているテーブル要素アドレス(mx,my)のSAD値(最小値)と、その近傍の複数個、この例では、上述したように15個の近傍テーブル要素のSAD値を用いて2次曲面を生成し(ステップS213)、その2次曲面の最小値のSAD値が対応する小数精度の位置を示す最小値ベクトル(px,py)を算出する(ステップS214)。この最小値ベクトル(px,py)は、小数精度の最小テーブル要素アドレスに対応している。
そして、算出した小数精度の位置を示す最小値ベクトル(px,py)をn倍することにより、求めるべく動きベクトル(px×n,py×n)を算出する(ステップS215)。
なお、この例においても、小数精度の位置を示す最小値ベクトル(px,py)を算出する方法としては、前述した水平方向および垂直方向の3次曲線を用いる方法を用いても良いことは前述の例と同様である。
また、前述の第1の実施形態の第3の例と同様にして、この第2の実施形態においても、サーチ範囲を絞りながら、かつ、必要に応じて縮小倍率を変更しながら、2段階以上、縮小SADテーブルを用いた動きベクトル検出処理を繰り返すようにしても、勿論良い。
この第2の実施形態のメリットは、フレームメモリを、第1の実施形態に比べて1枚分削減できることと、フレームメモリに入力画像を格納する時間を短縮できることである。メモリ削減の効果は言うまでもないが、処理時間の短縮も、近年、重要視されて来ている。特に動画を扱う場合、そのままシステム遅延の短縮に繋がるため、システム遅延が原因で生じる、実際の被写体とパネル表示画像の間に生じる違和感をなるべく無くすことは、ユーザへの訴求効果が高い。
[その他の実施形態および変形例]
なお、手ぶれ動きベクトル検出部15は、上述の例に示したようなハードウエアにより構成することできるし、また、DSP(Digital Signal Processor)を用いて構成することもできる。さらには、CPU1によりソフトウエア処理とすることもできる。また、同様に、補正解像度変換部16も、ハードウエアにより構成することできるし、また、DSP(Digital Signal Processor)を用いて構成することもできる。さらには、CPU1によりソフトウエア処理とすることもできる。
また、上述の第1および第2の実施形態の説明では、動きベクトル検出処理部151における参照ベクトルの縮小倍率は水平方向と垂直方向とで同一としたが、水平方向と、垂直方向とで、参照ベクトルの縮小倍率を異ならせるようにしても良い。
また、上述の実施形態においては、参照ブロックおよびターゲットブロック内の全ての画素についてSAD値を求めるようにしてもよいが、上述の実施形態のように、例えばk個(kは自然数)おきの画素のみを用いてSAD値を求めるようにするとよい。
また、第2の実施形態として説明したリアルタイム処理の動きベクトル検出処理部151では、演算コストと処理時間削減を目的として、ターゲットブロック内の代表点のみを参照ブロック内でサーチする、SAD演算がしばしば行われているが、この発明においても、元フレームを格納するフレームメモリには、フレーム画像内におけるそれぞれのブロックの代表点のみを格納することにより、大幅なメモリ削減が図れる。また、フレームメモリとは別に、小規模な代表点メモリをローカルで持ち、グローバルメモリ(DRAM)の帯域削減を図っても良い。
また、上述の第1、第2の実施形態では、画素の差分値およびSAD値は、画素の輝度値Yのみを用いて演算するものとしたが、動きベクトル検出のために、輝度値Yだけでなく、色差成分Cb/Crを用いてもよい。また、データ変換部14で輝度値Yおよび色差成分Cb/Crに変換される前のRAWデータを対象として、動きベクトル検出処理を行ってもよい。
なお、上述の説明では、SAD演算処理は、参照ベクトルを縮小してSAD演算処理を行う新規な方法を用いる場合について説明したが、図8〜図10を用いて説明した従来のSAD演算処理を用いることができることは言うまでもない。
また、上述の実施形態では、1フレームに設定するターゲット領域の数は、水平×垂直=4×4=16個としたが、これに限られるものではないことはもちろんである。
また、上述の実施形態の説明は、撮像装置を操作するユーザにより生起される手ぶれによる画像歪みを補正する場合であったが、ユーザにより生起される手ぶれのみではなく、撮影時に、撮像素子に対して、その撮像画像の水平方向および/または垂直方向の位置的変化を生じるように加わった振動などの偏倚力に起因して生じる画像歪みをも補正することができることは言うまでもない。
また、上述の実施形態は、X−Yアドレス型の固体撮像素子としてCMOSイメージャを用いた場合であるが、撮像素子としてはCMOSイメージャに限定されるものでないことは勿論である。
また、この発明は、撮像装置(カメラ)にのみ適用されるものではなく、例えば携帯電話端末、情報携帯端末などに撮像素子が取付けられて、画像を撮影する場合にも適用できるものである。さらに、ユーザが手で持って撮影を行なう装置にのみに適用されるものではなく、パーソナルコンピュータやテレビ電話装置などの固定的に設置される装置に対して外力が加わって振動等が生じる場合、また、自動車などに撮像素子が取付けられて、画像を撮影する場合にも適用可能である。
この発明による撮像画像の歪み補正方法の第1の実施形態が適用された撮像装置の手ぶれ動きベクトル検出部の構成例を示すブロック図である。 この発明による撮像画像の歪み補正方法の第1の実施形態が適用された撮像装置の構成例を示すブロック図である。 撮像装置における光学ズーム制御を説明するための図である。 この発明による撮像画像の歪み補正方法の実施形態の説明のために用いる図である。 この発明による撮像画像の歪み補正方法の実施形態の説明のために用いる図である。 この発明による撮像画像の歪み補正方法の実施形態の説明のために用いる図である。 この発明による撮像画像の歪み補正方法の実施形態の説明のために用いる図である。 ブロックマッチングにより動きベクトルを検出する処理を説明するための図である。 ブロックマッチングにより動きベクトルを検出する処理を説明するための図である。 ブロックマッチングにより動きベクトルを検出する処理動作を説明するためのフローチャートを示す図である。 この発明の実施形態における動きベクトルを検出する処理の概要を説明するための図である。 この発明の実施形態における動きベクトルを検出する処理の概要を説明するための図である。 この発明の実施形態における動きベクトルを検出する処理の概要を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。 この発明の実施形態における動きベクトルを検出する処理の概要を説明するための図である。 この発明の実施形態における動きベクトルを検出する処理の概要を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法の処理性能を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法の実施形態の概要を説明するための図である。 この発明の実施形態における動きベクトルを検出する方法の特徴を、従来の手法と比較して説明するために用いる図である。 この発明の実施形態における動きベクトルを検出する方法の特徴を、従来の手法と比較して説明するために用いる図である。 この発明の実施形態における動きベクトルを検出する方法の特徴を、従来の手法と比較して説明するために用いる図である。 この発明による撮像装置の第1の実施形態における動きベクトル検出処理の第1の例を説明するためのフローチャートの一部を示す図である。 この発明による撮像装置の第1の実施形態における動きベクトル検出処理の第1の例を説明するためのフローチャートの一部を示す図である。 この発明による撮像装置の第1の実施形態における動きベクトル検出処理の第2の例を説明するためのフローチャートの一部を示す図である。 この発明による撮像装置の第1の実施形態における動きベクトル検出処理の第2の例を説明するためのフローチャートの一部を示す図である。 この発明による撮像装置の第1の実施形態における動きベクトル検出処理の第3の例を説明するためのフローチャートの一部を示す図である。 この発明による撮像装置の第1の実施形態における動きベクトル検出処理の第3の例を説明するためのフローチャートの一部を示す図である。 この発明による撮像装置の第1の実施形態における動きベクトル検出処理の第3の例を説明するためのフローチャートの一部を示す図である。 この発明による撮像装置の第1の実施形態における動きベクトル検出処理の第3の例を説明するためのフローチャートの一部を示す図である。 この発明による撮像装置の第1の実施形態における全体の処理動作の説明するためのフローチャートの一部を示す図である。 この発明による撮像画像の歪み補正方法の第2の実施形態が適用された撮像装置の構成例を示すブロック図である。 撮像装置の第2の実施形態における動きベクトル検出処理を説明するための図である。 撮像装置の第2の実施形態における動きベクトル検出処理を説明するための図である。 撮像装置の第2の実施形態における動きベクトル検出処理の例を説明するためのフローチャートの一部を示す図である。 撮像装置の第2の実施形態における動きベクトル検出処理の例を説明するためのフローチャートの一部を示す図である。 撮像画像における手ぶれを説明するための図である。 光学ズームがなされたときの撮像画像の動きを説明するための図である。 光学ズームがなされたときに、手ぶれが生じたときの撮像画像の動きの例を説明するための図である。
符号の説明
101…元フレーム、102…参照フレーム、103…ターゲットブロック、105…サーチ範囲、106…参照ブロック、107…参照ベクトル、15…手ぶれ動きベクトル検出部、16…歪み補正解像度変換部、19…画像ぼけ補正処理部、41〜43…フレームメモリ、151…動きベクトル検出処理部、152…光学ズーム分ベクトル算出部、153…光学ズーム分ベクトル減算部、TBLs…縮小SADテーブル、TBLo…従来のSADテーブル、RV…参照ベクトル、CV…参照縮小ベクトル、NV1〜NV4…近傍参照ベクトル

Claims (7)

  1. 撮像素子からの画像データを受けて、当該画像データから、撮像画像の1画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出工程と、
    光学ズームがなされたときに、当該光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の1画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出工程と、
    前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記光学ズーム分ベクトル算出工程で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算工程と、
    前記光学ズームがなされないときには、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算工程の前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出工程と、
    前記グローバル手ぶれベクトル算出工程で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正工程と、
    を備える撮像画像の歪み補正方法。
  2. 請求項に記載の撮像画像の歪み補正方法において、
    前記動きベクトル検出工程は、
    前記分割領域のそれぞれにおける画像の動きベクトルを、注目画面である参照画面と当該参照画面よりも前の元画面との間の前記分割領域の画像情報から検出するものであって、
    前記元画面中の前記各分割領域において、所定の位置に複数の画素からなる所定の大きさの少なくとも1個のターゲットブロックを設定し、
    前記ターゲットブロックと同じ大きさの参照ブロックを、前記注目画面に設定されたサーチ範囲において複数個設定し、
    前記複数個の参照ブロックの内から、前記ターゲットブロックと相関の強い前記参照ブロックを検出し、
    当該検出した参照ブロックの前記ターゲットブロックに対する画面上の位置ずれ量に基づいて、前記動きベクトルを検出する
    ものである撮像画像の歪み補正方法。
  3. 請求項に記載の撮像画像の歪み補正方法において、
    前記動きベクトル検出工程において、前記分割領域のそれぞれにおける前記画像の動きベクトルを検出する方法は、
    前記参照ブロックのそれぞれにおいて、当該参照ブロック内の各画素の画素値と、前記ターゲットブロック内で対応する位置の各画素の画素値との差分の絶対値の総和を求める差分絶対値和算出工程と、
    前記参照ブロックのそれぞれの前記参照画面上の位置の、前記ターゲットブロックの画面上の位置との位置ずれ量を、方向成分も含む参照ベクトルとし、当該参照ベクトルを所定の縮小率で縮小した参照縮小ベクトルを得る参照縮小ベクトル取得工程と、
    前記参照縮小ベクトルに応じた大きさの前記参照ベクトルを前記位置ずれ量とする、前記所定の縮小率に応じて削減された数の複数個の前記参照ブロックのそれぞれについての差分絶対値和を記憶する縮小差分絶対値和テーブルを生成するテーブル生成工程と、
    前記縮小差分絶対値和テーブルにおける前記差分絶対値和の最小値に対応する前記参照ベクトルを少なくとも用いて、前記参照画面と前記元画面との間の前記分割領域のそれぞれについての動きベクトルを算出する動きベクトル算出工程と、
    を備え、
    前記テーブル生成工程は、
    前記参照縮小ベクトル取得工程で取得された前記参照縮小ベクトルの近傍値となる複数の前記参照ベクトルを検出する近傍参照ベクトル検出工程と、
    前記差分絶対値和算出工程で算出された前記参照ブロックのそれぞれについての前記差分の絶対値の総和から、前記近傍参照ベクトル検出工程で検出された前記近傍の複数の前記参照ベクトルのそれぞれに対応する差分絶対値和のそれぞれを算出する分散差分絶対値和算出工程と、
    前記分散差分絶対値和算出工程で算出された前記近傍の複数の前記参照ベクトルのそれぞれに対応する前記差分絶対値和を、それまでの前記近傍の複数の前記参照ベクトルのそれぞれに対応する前記差分絶対値和に加算する分散加算工程と、
    を備える撮像画像の歪み補正方法。
  4. 請求項に記載の撮像画像の歪み補正方法において、
    前記動きベクトル検出工程において、前記分割領域のそれぞれにおける前記画像の動きベクトルを検出する方法は、
    前記元画面中の前記各分割領域において、所定の位置に複数の画素からなる所定の大きさの少なくとも1個のターゲットブロックを設定し、
    前記ターゲットブロックと同じ大きさの参照ブロックを、前記参照画面に設定されたサーチ範囲において複数個設定し、
    前記複数個の参照ブロックの内から、前記ターゲットブロックと相関の強い前記参照ブロックを検出し、
    当該検出した参照ブロックの前記ターゲットブロックに対する画面上の位置ずれ量に基づいて、前記動きベクトルを検出する
    ものであって、
    前記参照ブロックのそれぞれにおいて、当該参照ブロック内の各画素の画素値と、前記ターゲットブロック内で対応する位置の各画素の画素値との差分の絶対値の総和を求める差分絶対値和算出工程と、
    前記参照ブロックのそれぞれの前記参照画面上の位置の、前記ターゲットブロックの画面上の位置との位置ずれ量を、方向成分も含む参照ベクトルとし、当該参照ベクトルを所定の縮小率で縮小した参照縮小ベクトルを得る参照縮小ベクトル取得工程と、
    前記参照縮小ベクトルに応じた大きさの前記参照ベクトルを前記位置ずれ量とする、前記所定の縮小率に応じて削減された数の複数個の前記参照ブロックのそれぞれについての差分絶対値和を記憶する縮小差分絶対値和テーブルを生成するテーブル生成工程と、
    前記縮小差分絶対値和テーブルにおける前記差分絶対値和の最小値に対応する前記参照ベクトルを少なくとも用いて、前記参照画面と前記元画面との間の前記分割領域のそれぞれについての動きベクトルを算出する動きベクトル算出工程と、
    を備え、
    前記テーブル生成工程は、
    前記参照縮小ベクトル取得工程で取得された前記参照縮小ベクトルの近傍値となる複数の前記参照ベクトルを検出する近傍参照ベクトル検出工程と、
    前記差分絶対値和算出工程で算出された前記参照ブロックのそれぞれについての前記差分の絶対値の総和から、前記近傍参照ベクトル検出工程で検出された前記近傍の複数の前記参照ベクトルのそれぞれに対応する差分絶対値和のそれぞれを算出する分散差分絶対値和算出工程と、
    前記分散差分絶対値和算出工程で算出された前記近傍の複数の前記参照ベクトルのそれぞれに対応する前記差分絶対値和を、それまでの前記近傍の複数の前記参照ベクトルのそれぞれに対応する前記差分絶対値和に加算する分散加算工程と、
    を備える撮像画像の歪み補正方法。
  5. 撮影時の手ぶれによる撮像素子の位置的変化による撮像画像の歪を補正し、補正後の撮像画像の情報を記録するようにするものであって、光学ズーム操作部を備える撮像装置による撮像方法であって、
    前記撮像装置の動きベクトル検出手段が前記撮像素子からの撮像画像データを受けて、当該撮像画像データから、撮像画像の1画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出工程と、
    前記撮像装置の判別手段が、前記光学ズーム操作部においてズーム操作がなされたか否かを判別する判別工程と、
    前記判別工程で前記光学ズーム操作がなされたと判別したときに、前記撮像装置の光学ズーム分ベクトル算出手段が、前記光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の1画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出工程と、
    前記撮像装置のベクトル減算手段が、前記判別工程で、前記光学ズーム操作がなされたと判別したときに、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記光学ズーム分算出工程で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算工程と、
    前記撮像装置の手ぶれベクトル算出手段が、前記判別工程で前記光学ズーム操作がなされていないと判別したときには、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算工程の前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出工程と、
    前記撮像装置の手ぶれ補正手段が、前記グローバル手ぶれベクトル算出工程で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正工程と、
    前記撮像装置の記録手段が、前記手ぶれ補正手段により補正された前記撮像画像の画像情報を記録媒体に記録する記録工程と、
    を備える撮像方法。
  6. 撮像素子からの画像データを受けて、当該画像データから、撮像画像の1画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出手段と、
    光学ズームがなされたときに、当該光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の1画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出手段と、
    前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記光学ズーム分算出手段で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算手段と、
    前記光学ズームがなされていないときには、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算手段が算出した前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出手段と、
    前記グローバル手ぶれベクトル算出手段で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正手段と、
    を備える撮像画像の歪み補正装置。
  7. 撮像素子と、
    光学ズーム操作部と、
    前記光学ズーム操作部を通じた光学ズーム操作に応じて、光学レンズ系を制御して、光学ズームを実行する光学ズーム駆動手段と、
    前記撮像素子からの画像データを受けて、当該画像データから、撮像画像の1画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出手段と、
    前記光学ズーム操作部を通じた光学ズーム操作がなされたか否かを判別する判別手段と、
    前記判別手段で前記光学ズーム操作がなされたと判別したときに、前記光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の1画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出手段と、
    前記判別手段で、前記光学ズーム操作がなされたと判別したときに、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記光学ズーム分算出手段で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算手段と、
    前記判別手段で前記光学ズーム操作がなされていないと判別したときには、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算手段が算出した前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出手段と、
    前記グローバル手ぶれベクトル算出手段で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正手段と、
    前記手ぶれ補正手段により補正された前記撮像画像の画像情報を記録媒体に記録する記録手段と、
    を備える撮像装置。
JP2006042108A 2006-02-20 2006-02-20 撮像画像の歪み補正方法、撮像画像の歪み補正装置、撮像方法および撮像装置 Expired - Fee Related JP4655957B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2006042108A JP4655957B2 (ja) 2006-02-20 2006-02-20 撮像画像の歪み補正方法、撮像画像の歪み補正装置、撮像方法および撮像装置
KR1020070016766A KR20070083202A (ko) 2006-02-20 2007-02-16 촬상 화상의 일그러짐 보정 방법, 촬상 화상의 일그러짐보정 장치, 촬상 방법 및 촬상장치
US11/676,404 US7821540B2 (en) 2006-02-20 2007-02-19 Imager-created image signal-distortion compensation method, imager-created image signal-distortion compensation apparatus, image taking method and image taking apparatus
EP07102668A EP1821522A3 (en) 2006-02-20 2007-02-19 Imager-created image signal-distortion compensation method, imager-created image signal-distortion compensation apparatus, image taking method and image taking apparatus
CNB200710103521XA CN100556082C (zh) 2006-02-20 2007-02-25 拍摄图像的失真校正方法和装置、拍摄方法和拍摄装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006042108A JP4655957B2 (ja) 2006-02-20 2006-02-20 撮像画像の歪み補正方法、撮像画像の歪み補正装置、撮像方法および撮像装置

Publications (2)

Publication Number Publication Date
JP2007221631A JP2007221631A (ja) 2007-08-30
JP4655957B2 true JP4655957B2 (ja) 2011-03-23

Family

ID=37965599

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006042108A Expired - Fee Related JP4655957B2 (ja) 2006-02-20 2006-02-20 撮像画像の歪み補正方法、撮像画像の歪み補正装置、撮像方法および撮像装置

Country Status (5)

Country Link
US (1) US7821540B2 (ja)
EP (1) EP1821522A3 (ja)
JP (1) JP4655957B2 (ja)
KR (1) KR20070083202A (ja)
CN (1) CN100556082C (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4958610B2 (ja) 2007-04-06 2012-06-20 キヤノン株式会社 画像防振装置、撮像装置及び画像防振方法
KR101392732B1 (ko) * 2007-08-20 2014-05-08 삼성전자주식회사 손떨림에 의한 움직임 추정 장치 및 방법, 그를 이용한영상 촬상 장치
JP5322416B2 (ja) * 2007-09-12 2013-10-23 株式会社メガチップス ブロックマッチング回路及びデータ更新方法
JP5105616B2 (ja) * 2008-02-08 2012-12-26 カシオ計算機株式会社 撮像装置及びプログラム
JP4544334B2 (ja) 2008-04-15 2010-09-15 ソニー株式会社 画像処理装置および画像処理方法
JP5189678B2 (ja) * 2008-04-22 2013-04-24 コア ロジック,インコーポレイテッド 動画像の手ぶれ補正装置及び方法
JP4506875B2 (ja) 2008-05-19 2010-07-21 ソニー株式会社 画像処理装置および画像処理方法
JP2009290827A (ja) 2008-06-02 2009-12-10 Sony Corp 画像処理装置および画像処理方法
JP5498087B2 (ja) * 2008-09-29 2014-05-21 キヤノン株式会社 撮像装置および撮像方法、プログラム
WO2010050632A1 (en) * 2008-10-29 2010-05-06 Udp Co., Ltd. Image stabilization method and device for performing the method
JP5298899B2 (ja) 2009-02-03 2013-09-25 株式会社Jvcケンウッド 画像補正処理装置および画像補正処理方法
JP5570769B2 (ja) * 2009-07-23 2014-08-13 オリンパス株式会社 内視鏡装置、計測方法、およびプログラム
KR101073568B1 (ko) * 2009-08-27 2011-10-14 삼성모바일디스플레이주식회사 표시 장치 및 그 구동 방법
JP5409278B2 (ja) 2009-11-06 2014-02-05 オリンパスイメージング株式会社 画像撮像装置及び画像撮像方法
US10178406B2 (en) 2009-11-06 2019-01-08 Qualcomm Incorporated Control of video encoding based on one or more video capture parameters
US20110292997A1 (en) * 2009-11-06 2011-12-01 Qualcomm Incorporated Control of video encoding based on image capture parameters
JP2011128978A (ja) * 2009-12-18 2011-06-30 Sony Corp 情報処理装置、情報処理方法、及びプログラム
JP2011182151A (ja) * 2010-03-01 2011-09-15 Sanyo Electric Co Ltd 画像合成装置
JP2011217044A (ja) * 2010-03-31 2011-10-27 Sony Corp 画像処理装置、画像処理方法および画像処理プログラム
JP5455961B2 (ja) * 2011-04-04 2014-03-26 キヤノン株式会社 撮像装置およびその制御方法
TWI475471B (zh) * 2011-09-19 2015-03-01 Acer Inc 利用觸控螢幕輔助視訊壓縮的方法及監控系統
CN103037210B (zh) * 2011-09-30 2016-07-06 宏碁股份有限公司 利用触控屏幕辅助视频压缩的方法及监控系统
JP6135220B2 (ja) * 2013-03-18 2017-05-31 富士通株式会社 動画処理装置、動画処理方法および動画処理プログラム
JP6518115B2 (ja) 2015-04-13 2019-05-22 キヤノン株式会社 画像処理装置、撮像装置、画像処理装置の制御方法、及びプログラム
JP6602141B2 (ja) * 2015-10-05 2019-11-06 キヤノン株式会社 画像処理装置および方法
US10027893B2 (en) * 2016-05-10 2018-07-17 Nvidia Corporation Real-time video stabilization for mobile devices based on on-board motion sensing
US10462377B2 (en) * 2016-07-29 2019-10-29 Nokia Of America Corporation Single-aperture multi-sensor lensless compressive image acquisition
US11205249B2 (en) * 2019-11-14 2021-12-21 Adobe Inc. Table shifting and skewing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04180371A (ja) * 1990-11-14 1992-06-26 Matsushita Electric Ind Co Ltd 画像の動き検出装置
JPH10233958A (ja) * 1997-02-20 1998-09-02 Nippon Telegr & Teleph Corp <Ntt> カメラパラメータ推定方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05130484A (ja) * 1991-11-05 1993-05-25 Sanyo Electric Co Ltd 手ブレ補正機能付きビデオカメラの画角補正回路
GB9206396D0 (en) 1992-03-24 1992-05-06 British Broadcasting Corp Video image motion measurement
JP3384459B2 (ja) 1992-04-17 2003-03-10 ソニー株式会社 撮像装置
US6172707B1 (en) * 1992-06-22 2001-01-09 Canon Kabushiki Kaisha Image pickup device
JPH0686149A (ja) 1992-08-31 1994-03-25 Sony Corp 動きベクトル検出装置及びビデオカメラ
JPH07283999A (ja) 1994-04-07 1995-10-27 Sony Corp 画像合成装置及び画像撮影装置
US6010537A (en) * 1997-08-19 2000-01-04 Minolta Co., Ltd. Zoom lens system having an image blur compensation function
US7646891B2 (en) 2002-12-26 2010-01-12 Mitshubishi Denki Kabushiki Kaisha Image processor
JP2006050457A (ja) 2004-08-06 2006-02-16 Canon Inc 撮像装置
JP2006071993A (ja) * 2004-09-02 2006-03-16 Sony Corp ズームレンズ及び撮像装置
JP4789530B2 (ja) * 2005-07-22 2011-10-12 キヤノン株式会社 ズームレンズ及びそれを有する撮像装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04180371A (ja) * 1990-11-14 1992-06-26 Matsushita Electric Ind Co Ltd 画像の動き検出装置
JPH10233958A (ja) * 1997-02-20 1998-09-02 Nippon Telegr & Teleph Corp <Ntt> カメラパラメータ推定方法

Also Published As

Publication number Publication date
JP2007221631A (ja) 2007-08-30
EP1821522A2 (en) 2007-08-22
KR20070083202A (ko) 2007-08-23
CN101079965A (zh) 2007-11-28
CN100556082C (zh) 2009-10-28
US20070195172A1 (en) 2007-08-23
EP1821522A3 (en) 2008-12-24
US7821540B2 (en) 2010-10-26

Similar Documents

Publication Publication Date Title
JP4655957B2 (ja) 撮像画像の歪み補正方法、撮像画像の歪み補正装置、撮像方法および撮像装置
JP4340915B2 (ja) 撮像画像信号の歪み補正方法、撮像画像信号の歪み補正装置、撮像方法および撮像装置
JP4304528B2 (ja) 画像処理装置および画像処理方法
JP2007215114A (ja) 撮像画像の歪み補正方法、撮像画像の歪み補正装置および撮像装置
JP4178480B2 (ja) 画像処理装置、画像処理方法、撮像装置および撮像方法
JP4178481B2 (ja) 画像処理装置、画像処理方法、撮像装置および撮像方法
JP4882956B2 (ja) 画像処理装置および画像処理方法
US8072511B2 (en) Noise reduction processing apparatus, noise reduction processing method, and image sensing apparatus
JP5341010B2 (ja) 画像処理装置、撮像装置、プログラム及び画像処理方法
JP2009071689A (ja) 画像処理装置、画像処理方法および撮像装置
JP2009105533A (ja) 画像処理装置、撮像装置、画像処理方法および撮像画像処理方法
JP4904925B2 (ja) 画像処理装置および画像処理方法
JP4670630B2 (ja) 画像処理装置、画像処理方法、撮像装置および撮像方法
JP2007323458A (ja) 画像処理装置および画像処理方法
JP2009065323A (ja) 画像処理装置、画像処理方法、撮像装置および撮像方法
JP2013115650A (ja) 画像処理装置、画像処理方法およびコンピュータプログラム

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090807

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20091005

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100524

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101130

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101213

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140107

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140107

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees