JP2009105533A - 画像処理装置、撮像装置、画像処理方法および撮像画像処理方法 - Google Patents
画像処理装置、撮像装置、画像処理方法および撮像画像処理方法 Download PDFInfo
- Publication number
- JP2009105533A JP2009105533A JP2007273605A JP2007273605A JP2009105533A JP 2009105533 A JP2009105533 A JP 2009105533A JP 2007273605 A JP2007273605 A JP 2007273605A JP 2007273605 A JP2007273605 A JP 2007273605A JP 2009105533 A JP2009105533 A JP 2009105533A
- Authority
- JP
- Japan
- Prior art keywords
- image
- unit
- pixels
- block
- sad value
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 325
- 238000003384 imaging method Methods 0.000 title claims description 72
- 238000003672 processing method Methods 0.000 title claims description 44
- 239000013598 vector Substances 0.000 claims abstract description 290
- 238000000034 method Methods 0.000 claims description 292
- 230000008569 process Effects 0.000 claims description 132
- 230000009467 reduction Effects 0.000 claims description 132
- 238000001514 detection method Methods 0.000 claims description 102
- 238000006243 chemical reaction Methods 0.000 claims description 22
- 238000007792 addition Methods 0.000 description 249
- 238000004364 calculation method Methods 0.000 description 94
- 238000010586 diagram Methods 0.000 description 29
- 238000007906 compression Methods 0.000 description 18
- 230000006835 compression Effects 0.000 description 18
- 238000000605 extraction Methods 0.000 description 16
- 238000003702 image correction Methods 0.000 description 16
- 238000012937 correction Methods 0.000 description 11
- 230000000694 effects Effects 0.000 description 11
- 206010047571 Visual impairment Diseases 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 5
- 230000001747 exhibiting effect Effects 0.000 description 5
- 230000006837 decompression Effects 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 3
- 238000011946 reduction process Methods 0.000 description 3
- 238000010187 selection method Methods 0.000 description 3
- 230000035945 sensitivity Effects 0.000 description 3
- 102100033458 26S proteasome non-ATPase regulatory subunit 4 Human genes 0.000 description 2
- 101150001079 PSMD4 gene Proteins 0.000 description 2
- 101150006293 Rpn10 gene Proteins 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005286 illumination Methods 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000001454 recorded image Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Landscapes
- Picture Signal Circuits (AREA)
- Studio Devices (AREA)
Abstract
【課題】複数枚の画像の重ね合わせによりゲインを上げ、ダイナミックレンジを元の画像よりも大きくするように2画面を重ね合わせるときに、被写体の動きの残像を軽減する。
【解決手段】重ね合わせる2画面間の動きベクトルを検出し、検出した動きベクトルを用いて2画面間の動きを補償しながら、2画面を重ね合わせる処理を行う。当該画面の重ね合わせを、連続して入力される画像のN枚(Nは2以上の整数)の画面について行うことで、ノイズを低減すると共に、ダイナミックレンジがN倍の画像を生成する。2画面の重ね合わせる2画素毎に、当該2画素間の差分を検出する。検出された差分に基づいて、重ね合わせる2画素毎に、当該2画素の加算割合を決定する。決定された加算割合で、重ね合わせる2画素の重ね合わせを実行する。
【選択図】図22
【解決手段】重ね合わせる2画面間の動きベクトルを検出し、検出した動きベクトルを用いて2画面間の動きを補償しながら、2画面を重ね合わせる処理を行う。当該画面の重ね合わせを、連続して入力される画像のN枚(Nは2以上の整数)の画面について行うことで、ノイズを低減すると共に、ダイナミックレンジがN倍の画像を生成する。2画面の重ね合わせる2画素毎に、当該2画素間の差分を検出する。検出された差分に基づいて、重ね合わせる2画素毎に、当該2画素の加算割合を決定する。決定された加算割合で、重ね合わせる2画素の重ね合わせを実行する。
【選択図】図22
Description
この発明は、2枚の異なる画面の間での動きベクトルを検出し、検出した動きベクトルを用いて動きを補償しながら、前記2画面を重ね合わせることで、ノイズ低減を図ることができるようにする画像処理装置および撮像装置に関する。また、これら画像処理装置および撮像装置が行う画像処理方法および撮像画像処理方法に関する。
この明細書で、画面とは、1フレーム分または1フィールド分の画像データからなり、1枚分としてディスプレイに表示される画像を意味しているものとしている。
2つの画面間の動きベクトルを、画像情報自身から求めるブロックマッチング手法は、歴史の古い技術である。テレビジョンカメラのパン・チルト検出や被写体追尾、MPEG(Moving Picture Experts Group)方式の動画符号化などを中心に開発が進み、90年代に入ってからは、画像の重ね合わせによる、センサレス手ブレ補正や低照度撮影時のノイズ除去(Noise Reduction:以降、NRと表記する)など多岐に渡って応用が進められている。
ブロックマッチングは、注目画面である参照画面と、当該参照画面の動きの元となる元画面(ターゲット画面と称する)との間の2画面間の動きベクトルを、所定の大きさの矩形領域のブロックについて、参照画面と元画面との間での相関を算出することにより算出する方法である。元画面が時間的に参照画面よりも前の画面とされる場合(例えば、MPEGにおける動き検出の場合)と、参照画面が時間的に元画面よりも前の画面とされる場合(例えば、後述する画像フレームの重ね合わせによるノイズ低減の場合)の両方がある。
なお、前述したように、この明細書で、画面とは、1フレームまたは1フィールドの画像データからなる画像を意味しているが、この明細書における以下の説明の便宜上、画面は1フレームからなるものとして、画面をフレームと称することとする。したがって、参照画面は参照フレーム、元画面は元フレームと称することとする。
図61〜図66は、従来のブロックマッチングの概要を説明するための図である。ここで説明するブロックマッチング手法においては、例えば、図61(A)に示すように、元フレーム(ターゲットフレーム)100を、それぞれ水平方向の複数画素および垂直方向の複数ライン分からなる所定の大きさの矩形領域(ブロックという)の複数個に分割する。ターゲットフレームにおけるこれらの複数個のブロック102のそれぞれを、ターゲットブロックという。
ブロックマッチングにおいては、ターゲットブロック102と相関性の高いブロックを、参照フレーム101の中から検索する。この検索の結果、相関性が最も高いとして参照フレーム101内に検出されたブロック103(図61(B)参照)を、動き補償ブロックと呼ぶ。また、ターゲットブロック102と動き補償ブロック103との間の位置ずれ量を、動きベクトル(図61(B)の符号104参照)と称する。
ターゲットブロック102と動き補償ブロック103との間の位置ずれ(位置ずれ量と位置ずれ方向を含む)に対応する動きベクトル104は、参照フレーム101において、ターゲットフレーム100の各ターゲットブロック102の位置と同じ位置に、ターゲットブロック102の射影イメージブロック109を想定したとき、このターゲットブロックの射影イメージブロック109の位置(例えば中心位置)と、動き補償ブロック103の位置(例えば中心位置)との間の位置ずれに相当し、位置ずれ量と位置ずれの方向成分も有するものである。
ブロックマッチング処理の概要を説明する。図62において点線で示すように、参照フレーム101において、ターゲットフレーム100の各ターゲットブロック102の位置と同じ位置にターゲットブロックの射影イメージブロック109を想定し、このターゲットブロックの射影イメージブロック109の中心の座標を、動き検出の原点105とする。そして、動きベクトル104が、動き検出の原点105から或る範囲内に存在すると仮定し、この動き検出の原点105を中心した所定の範囲をサーチ範囲106(図62の一点鎖線参照)と設定する。
次に、ターゲットブロック102と同じ大きさのブロック(参照ブロックという)108を参照画面において設定する。そして、この参照ブロック108の位置を、サーチ範囲106内において、例えば水平方向および垂直方向に、1画素または複数画素単位で移動させるようにする。したがって、サーチ範囲106においては、複数個の参照ブロック108が設定されることになる。
ここで、参照ブロック108を、サーチ範囲106内を移動させるというのは、この例では、動き検出原点105がターゲットブロックの中心位置であるので、参照ブロック108の中心位置を、サーチ範囲106内を移動させることを意味し、参照ブロック108を構成する画素は、サーチ範囲106よりもはみ出すことがある。
そして、サーチ範囲において、設定される各参照ブロック108に対して、当該各参照ブロック108とターゲットブロック102との位置ずれ量および位置ずれ方向を表すベクトル(参照ベクトルという)107(図62参照)を設定し、それぞれの参照ベクトル107が指し示す位置にある参照ブロック108の画像内容と、ターゲットブロック102の画像内容との相関性を評価する。
参照ベクトル107は、図63に示すように、参照ブロック108の水平方向(X方向)の位置ずれ量Vxとし、垂直方向(Y方向)の位置ずれ量をVyとしたとき、ベクトル(Vx,Vy)と表すことができ、参照ブロック108の位置座標(例えば中心位置座標)とターゲットブロック102の位置座標(例えば中心位置座標)とが同じときには、参照ベクトル107は、ベクトル(0,0)と表す。
例えば、参照ブロック108が、ターゲットブロック102の位置から、X方向に1画素ずれた位置にある場合、参照ベクトル107はベクトル(1,0)となる。また、図64に示すように、参照ブロック108が、ターゲットブロック102の位置から、X方向に3画素、Y方向に2画素ずれた位置にある場合には、参照ベクトル107はベクトル(3,2)となる。
つまり、参照ベクトル107は、図64の例に示すように、ターゲットブロック102および参照ブロック108の位置を、それぞれのブロックの中心位置とした場合、各参照ベクトル108は、対応する各参照ブロック108の中心位置とターゲットブロック102の中心位置との位置ずれ(位置ずれ量と位置ずれの方向を含むベクトルとなる)を意味する。
参照ブロック108は、サーチ範囲106において移動するものとなるが、その場合に、参照ブロック108の中心位置がサーチ範囲106内を移動する。前述もしたように、参照ブロック108は、水平方向および垂直方向の複数画素からなるので、ターゲットブロック102とブロックマッチング処理される対象となる参照ブロック108が移動する最大範囲は、図64に示すように、サーチ範囲106よりも広いマッチング処理範囲110となる。
そして、ターゲットブロック102の画像内容との相関が最も強いとして検出された参照ブロック108の位置を、ターゲットフレーム100のターゲットブロック102の、参照フレーム101における位置(動いた後の位置)として検出し、検出した参照ブロックを、前述した動き補償ブロック103とする。そして、その検出した動き補償ブロック103の位置と、ターゲットブロック102の位置との間の位置ずれ量を、方向成分を含む量としての動きベクトル104として検出するようにする(図61(B)参照)。
ここで、ターゲットブロック102と、サーチ範囲106において移動する参照ブロック108との相関の強さを表す相関値は、基本的にはターゲットブロック102と参照ブロック108との対応する画素値を用いて算出されるが、その算出方法は、自乗平均を用いる方法やその他種々の方法が提案されている。
そのうち、動きベクトルを算出する際に一般的に用いられる相関値としては、例えば、ターゲットブロック102内の各画素の輝度値と、参照ブロック106内の対応する各画素の輝度値との差分の絶対値の、ブロック内の全画素についての総和(この差分の絶対値の総和を差分絶対値和と呼ぶ。以下、この差分絶対値和をSAD(Sum of Absolute Difference)と記載することとする)が用いられる(図65参照)。
相関値としてSAD値が用いられる場合には、SAD値が小さいほど相関が強いものとされる。したがって、サーチ範囲106において移動する参照ブロック108のうち、SAD値が最小となる位置の参照ブロック108が最も相関が強い最強相関参照ブロックとなり、この最強相関参照ブロックが、動き補償ブロック103として検出され、その検出された動き補償ブロック103のターゲットブロック102の位置に対する位置ずれ量が動きベクトルとして検出される。
前述したように、ブロックマッチングでは、サーチ範囲106において設定される複数個の参照ブロック108のそれぞれの、ターゲットブロック102の位置に対する位置ずれ量は、方向成分を含む量としての参照ベクトル107で表現される。各参照ブロック108の参照ベクトル107は、参照ブロック108の参照フレーム102上の位置に応じた値となる。前述したように、ブロックマッチングでは、相関値であるSAD値が最小値となる参照ブロック108の参照ベクトルを、動きベクトル104として検出する。
そこで、ブロックマッチングでは、一般に、図66に示すように、サーチ範囲106において設定される複数個の参照ブロック108のそれぞれとターゲットブロック102との間におけるSAD値(以下、説明の簡単のため参照ブロック108についてのSAD値という)を、それぞれの参照ブロック108の位置に応じた参照ベクトル107(以下、説明の簡単のため、参照ブロック106の位置に応じた参照ベクトル107を参照ブロック108の参照ベクトル107という)のそれぞれに対応させて、メモリに記憶しておき、そのメモリに記憶された全ての参照ブロック108についてのSAD値の中から、最小のSAD値の参照ブロック108を検出することで、動きベクトル104を検出するようにしている。
サーチ範囲106において設定された複数個の参照ブロック108の位置に応じた参照ベクトル107のそれぞれに対応させて、それぞれの参照ブロック108についての相関値(この例では、SAD値)を記憶したものを相関値テーブルと呼ぶ。この例では、相関値として差分絶対値和であるSAD値を用いるので、この相関値テーブルを、差分絶対値和テーブル(以下SADテーブルという)と呼ぶことにする。
図66のSADテーブルTBLが、これを示しており、このSADテーブルTBLにおいて、それぞれの参照ブロック108についての相関値(この例ではSAD値)を相関値テーブル要素という。図66の例では、符号111で指し示すSAD値は、参照ベクトルがベクトル(0,0)のときのSAD値である。そして、図66の例では、SAD値の最小値は、参照ベクトルがベクトル(3,2)のときの「7」であるので、求める動きベクトル104は、当該(3,2)となる。
なお、上述の説明において、ターゲットブロック102および参照ブロック108の位置とは、それらのブロックの任意の特定の位置、例えば中心位置を意味するものであり、参照ベクトル107は、参照フレーム102におけるターゲットブロック102の射影イメージブロック109の位置と、参照ブロック108の位置との間のずれ量(方向を含む)を示すものである。
そして、各参照ブロック108に対応する参照ベクトル107は、参照フレーム101上において、ターゲットブロック102に対応する射影イメージブロック109の位置からの、各参照ブロック108の位置ずれとなっているので、参照ブロック108の位置が特定されると、その位置に対応して参照ベクトルの値も特定される。したがって、SADテーブル110のメモリにおける参照ブロックの相関値テーブル要素のアドレスが特定されると、対応する参照ベクトルは特定されることになる。
なお、SAD値は、同時に、2つ以上のターゲットブロックについて計算するようにしてもよい。同時に処理するターゲットブロックが増加すると、処理は高速化する。しかし、SAD値を計算するハードウエアの規模が増大するので、処理の高速化と、回路規模の増大のトレードオフになる。
ところで、上述したブロックマッチング手法を用いて、いわゆるセンサレスで手ブレを補正する技術が、例えば特許文献1(特開平6−086149号公報参照)などとして提案されている。この特許文献1の技術は、撮像画像の中に有効画像を設定し、画面のぶれに応じて、有効画像をシフトすることによってなされてきたもので、主に動画像を対象に開発されてきていた。
一方、静止画のセンサレス手ブレ補正について開発が始まったのは、2000年前後からで、手ブレが生じないような高速のシャッター動作で複数枚の画像の撮影を行い、手ブレの影響を考慮して、撮影した低照度の画像を重ね合わせ、照度の高い1枚の静止画像にするというものである(例えば特許文献2(特開2001−86398号公報)など参照)。
後者の技術は、低照度の画像に対して単純にゲインをかけるとノイズも拡大してしまうが、連続撮影した画像を重ねれば、ランダム成分であるノイズは分散されるという考えであり、ノイズ低減という観点では、動画像のフレームNR手法に近い技術であるといえる。
動画像のフレームNR手法は、現フレームと参照フレームをリアルタイムに重ね合わせる技術であり、現フレームと参照フレームは常に1:1で重ね合わせるものである。
一方、静止画のセンサレス手ブレ補正手法は、シャッターを高速化するほど手ブレの影響は減り、重ね合わせ枚数を増やすほど高感度化を期待できる。したがって、現フレーム1枚に対して、通常、参照フレームは複数枚となる。
上記の特許文献は、次の通りである。
特開平6−086149号公報
特開2001−86398号公報
複数枚の画像の重ね合わせを行う場合、1:1で画像を重ね合わせると、その重ね合わせ結果の画像は、ダイナミックレンジは元の画像の2倍になる。したがって、低照度の画像を重ね合わせて、NRをかけつつ画像を高感度化したい場合は、1:1で加算する方式(単純加算方式と称する)が望ましい。
一方、照度が確保できる条件で撮影された画像に対してNRを施す場合は、ダイナミックレンジを増やさず、合計が1になるように加算する方式(平均加算方式と称する)が望ましい。
従来の単純加算方式、平均加算方式は、画面全体の加算率が一定のものであった。例えば、単純加算方式では、ターゲット画像と参照画像との2枚の画像の全ての画素を1:1で加算するものである。また、平均加算方式は、ターゲット画像と参照画像を、初めは1/2:1/2で加算、次は2/3:1/3で加算、以降、N枚目では、N/(n+1):1/(n+1)で加算するものである。
ところが、重ね合わせる被写体画像に動きがある場合、1画面単位の動きベクトルに基づいて、画像の動きを補償したとしても、当該被写体画像の動き部分については、補償されず、画像の重ね合わせ結果には、被写体の動きの残像が残ってしまうことになる。
この発明は、この点にかんがみ、特に、単純加算方式のように、重ね合わせによりゲインを上げ、ダイナミックレンジを元の画像よりも大きくするように2画面を重ね合わせるときに、被写体の動きの残像を軽減することができる画像処理装置および画像処理方法を提供することを目的とする。
上記の課題を解決するために、請求項1の発明による画像処理装置は、
重ね合わせる2画面間の動きベクトルを検出し、この検出した前記動きベクトルを用いて前記2画面間の動きを補償しながら、前記2画面を重ね合わせる処理を行い、当該画面の重ね合わせを、連続して入力される画像のN枚(Nは2以上の整数)の画面について行うことで、ノイズを低減すると共に、ダイナミックレンジがN倍の画像を生成するようにする画像処理装置であって、
前記2画面の前記重ね合わせる2画素毎に、前記2画素間の差分を検出する差分検出手段と、
前記差分検出手段で検出された前記差分に基づいて、前記重ね合わせる2画素毎に、当該2画素の加算割合を決定する決定手段と、
前記決定手段で決定された前記加算割合で、前記重ね合わせる2画素の重ね合わせを実行する重ね合わせ手段と、
を備えることを特徴とする。
重ね合わせる2画面間の動きベクトルを検出し、この検出した前記動きベクトルを用いて前記2画面間の動きを補償しながら、前記2画面を重ね合わせる処理を行い、当該画面の重ね合わせを、連続して入力される画像のN枚(Nは2以上の整数)の画面について行うことで、ノイズを低減すると共に、ダイナミックレンジがN倍の画像を生成するようにする画像処理装置であって、
前記2画面の前記重ね合わせる2画素毎に、前記2画素間の差分を検出する差分検出手段と、
前記差分検出手段で検出された前記差分に基づいて、前記重ね合わせる2画素毎に、当該2画素の加算割合を決定する決定手段と、
前記決定手段で決定された前記加算割合で、前記重ね合わせる2画素の重ね合わせを実行する重ね合わせ手段と、
を備えることを特徴とする。
また、請求項2の発明は、請求項1に記載の画像処理装置において、
前記重ね合わせる2画面のうち、ノイズ低減を施したい画面をターゲット画面、ターゲット画面に重ね合わせたい画面を参照画面としたとき、前記決定手段は、前記差分検出手段で検出された前記差分に応じて、前記重ね合わせる2画素の前記参照画面の画素についての加算率α(0≦α≦1)を決定すると共に、前記ターゲット画面の画素についての加算率βを、β=1+(1−α)/(N−1)として算出する手段を備える
ことを特徴とする。
前記重ね合わせる2画面のうち、ノイズ低減を施したい画面をターゲット画面、ターゲット画面に重ね合わせたい画面を参照画面としたとき、前記決定手段は、前記差分検出手段で検出された前記差分に応じて、前記重ね合わせる2画素の前記参照画面の画素についての加算率α(0≦α≦1)を決定すると共に、前記ターゲット画面の画素についての加算率βを、β=1+(1−α)/(N−1)として算出する手段を備える
ことを特徴とする。
請求項1の発明においては、2画面を重ね合わせる際に、重ね合わせる2画素毎に、当該2画素間の差分を検出し、その差分に応じて2画面(2画素)の加算割合を決定する。例えば、2画素間の差分が小さいときには、参照画面の加算率αを大きくする。例えばα=1とすれば、請求項2から、ターゲット画面と参照画面とは1:1で加算され、ダイナミックレンジが2倍になる。
また、2画素間の差分が大きいときには、動き補償されない動き成分が多いとして、参照画面の加算率αを小さくする。例えばα=0として、参照画面を重ね合わせないときには、請求項2から、ターゲット画面の画像データに掛け合わせる係数を、β=2となり、ダイナミックレンジは、大きくなる。
以上のようにして、請求項1の発明によれば、画素毎に、ターゲット画面と参照画面とにおける重ねあわすべき2画素間の差分を求め、その差分に応じて加算率を算出して、重ね合わせを実行するようにするので、被写体の動きなど、動きベクトルでは、動き補償が仕切れない場合であっても、その影響を軽減することができる。しかも、請求項1の発明によれば、画素単位で、加算率が変えられるものであっても、画面単位で、ダイナミックレンジを上げることができ、従来の単純加算方式と同様の効果を得ることができる。
この発明によれば、重ね合わせる2画素毎に、当該2画素間の差分を求め、その差分に基づいて、両画素の加算率を決定するようにするので、単純加算方式のように、重ね合わせによりダイナミックレンジを元の画像よりも大きくするように2画面を重ね合わせるときにおいて、被写体の動きの残像を軽減することができる。
以下、この発明による画像処理方法を用いた画像処理装置の実施形態として、撮像装置の場合を例にとって、図を参照しながら説明する。また、検出した動きベクトルを用いて行う処理として、撮像素子からの複数枚の撮像画像を重ね合わせてノイズ低減を行う場合の例について説明する。
[この発明による画像処理装置の実施形態]
以下に説明する実施の形態の撮像装置では、図2に示すように、連続して撮影されて得られた複数枚の撮像画像、例えばP1,P2,P3を、動き検出および動き補償を用いて位置合わせをした後、重ね合わせすることで、ノイズが低減された画像Pmixを得ることができるようにしている。すなわち、複数枚の画像のそれぞれにおけるノイズはランダムなものであるので、同一内容の画像を重ね合わせることで、画像に対してノイズが低減されるものである。
以下に説明する実施の形態の撮像装置では、図2に示すように、連続して撮影されて得られた複数枚の撮像画像、例えばP1,P2,P3を、動き検出および動き補償を用いて位置合わせをした後、重ね合わせすることで、ノイズが低減された画像Pmixを得ることができるようにしている。すなわち、複数枚の画像のそれぞれにおけるノイズはランダムなものであるので、同一内容の画像を重ね合わせることで、画像に対してノイズが低減されるものである。
以下の説明において、動き検出および動き補償を用いて複数枚の画像を重ね合わせて、ノイズを低減することをNR(Noise Reduction)と呼び、NRによりノイズ低減された画像をNR画像と称することとする。
この明細書の説明においては、ノイズ低減を施したい画面(画像)をターゲット画面(ターゲットフレーム)、重ね合わせたい画面を参照画面(参照フレーム)と定義する。連続して撮影された画像は、撮影者の手ブレなどにより、画像の位置がずれており、両画像の重ね合わせを行うには、位置合わせが重要となる。ここで、考慮しなければならないのは、手ブレのような画面全体のブレと共に、画面内における被写体の動きも存在することである。
このため、被写体に対してもノイズ低減効果を高めるためには、図3に示すように、ターゲットフレーム100を水平方向および垂直方向に分割して生成される複数個のターゲットブロック102のそれぞれ単位での位置合わせが必要になる。
したがって、この実施の形態では、複数個のターゲットブロック102の全てについて、ブロック単位の動きベクトル(以下、ブロック動きベクトルという)104Bを検出し、それぞれのターゲットブロック102について、対応するブロック動きベクトル104Bを用いて位置合わせを行い、画像を重ね合わせるようにする。
この実施の形態の撮像装置において、静止画撮影時は、図4に示すように、高速で複数枚の画像の撮影を行い、1枚目の撮影画像をターゲットフレーム100とし、2枚目以降、所定枚数の撮影画像を参照フレーム101とし、重ね合わせを行い、その重ね合わせたものを静止画撮影画像として記録するようにする。すなわち、撮影者が撮像装置のシャッターボタンを押下操作すると、高速で前記所定枚数の画像が撮影され、その1枚目に撮影した画像(フレーム)に対して、時間的に後で撮影された複数枚の画像(フレーム)が、重ね合わされることになる。
また、動画撮影時は、図5のように、撮像素子から出力されている現フレームの画像をターゲットフレーム100の画像とし、その前フレームの過去の画像を参照フレーム101の画像とする。したがって、現フレームの画像のノイズ低減を行うために、現フレームの前フレームの画像を現フレームに重ね合わせるということになる。
なお、上述の図4および図5の画像の重ね合わせの方法の説明の場合は、記録する動画画像のフレームレートを60fps(flame/second)としたときに、撮像素子から当該60fpsのフレームレートの2枚の画像フレームを重ね合わせて、その結果としてノイズの低減された60fpsのフレームレートで撮像画像信号が得られる場合である。
しかし、この実施形態では、撮像素子からは、より高速の、例えば240fpsの高フレームレートで、撮像画像が出力されるように構成されており、動画撮影時においても、4枚ずつの画像を重ねて1枚の動画フレームを生成することで、60fpsのフレームレートの撮像画像信号を得るようにすることもできる。もちろん、240fpsの撮像動画画像を、この例と同様にして、2枚の画像フレームを重ね合わせて、その結果として240fpsのフレームレートのノイズ低減された撮像画像信号を得るようにすることもできる。
なお、この実施の形態においては、さらに、より高精度で画像の重ね合わせができるように、処理対象画像の画素ピッチの精度(ピクセル精度という)よりも高精度、つまり、元の画面(ターゲットフレーム)の画素ピッチよりも小さいピッチの高精度(この高精度をサブピクセル精度と呼ぶことにする)で、ブロック動きベクトルを検出するようにする。このサブピクセル精度での動きベクトル算出のために、後述するように、この実施の形態においては、ピクセル精度で求めた動きベクトルと、その近傍の参照ベクトルとを用いて補間処理をするようにする。
図1は、この発明の画像処理装置の実施形態としての撮像装置の一例のブロック図を示すものである。
この図1に示すように、この実施形態の撮像装置は、システムバス2にCPU(Central Processing Unit)1が接続されると共に、システムバス2に、撮像信号処理系10や、ユーザ操作入力部3、画像メモリ部4、記録再生装置部5などが接続されて構成されている。なお、この明細書においては、CPU1は、図示は省略するが、種々のソフトウエア処理を行なうプログラムを記憶するROM(Read Only Memory)やワークエリア用RAM(Random Access Memory)などを含むものとしている。
ユーザ操作入力部3を通じた撮像記録開始操作を受けて、図1の撮像装置の撮像信号処理系は、後述するような撮像画像データの記録処理を行なう。また、ユーザ操作入力部3を通じた撮像記録画像の再生開始操作を受けて、図1の撮像装置の撮像信号処理系10は、記録再生装置部5の記録媒体に記録された撮像画像データの再生処理を行なう。なお、撮像信号処理系10の後述する各部は、制御レジスタ部7を通じたCPU3の制御コマンドを受けて、CPU3の制御を受けながら、それぞれの処理を実行するものである。
この実施形態では、静止画撮影モードと、動画撮影モードとを備えると共に、静止画撮影モード、動画撮影モードのそれぞれにおいて、複数の動作モードを備え、それらの動作モードが、ユーザ操作入力部3を通じて切り替えられる。この実施形態では、これらの複数種の動作モードのそれぞれにおいては、それぞれの動作モードに適切な画像重ね合わせ処理方式が設定されている。静止画撮影モード、動画撮影モードのそれぞれにおける複数種の動作モードと、それぞれの動作モードに設定されている処理方式については、画像重ね合わせ処理の説明において後述する。
図1に示すように、撮像信号処理系10においては、撮像レンズ10Lを備えるカメラ光学系(図示は省略)を通じた被写体からの入射光は、撮像素子11に照射されて撮像される。この例では、撮像素子11は、CCD(Charge Coupled Device)イメージャで構成されている。なお、撮像素子11は、CMOS(Complementary Metal Oxide Semiconductor)イメージャで構成してもよい。
この例の撮像装置においては、撮像記録開始操作がなされると、レンズ10Lを通じて入力された映像が、撮像素子11により撮像画像信号に変換され、タイミング信号発生部12からのタイミング信号に同期した信号として、赤(R)、緑(G)、青(B)の3原色から構成されるベイヤー配列のRAW信号(生の信号)であるアナログ撮像信号が出力される。出力されたアナログ撮像信号は、前処理部13に供給され、欠陥補正やγ補正等の前処理が施され、データ変換部14に供給される。
データ変換部14は、これに入力されたRAW信号であるアナログ撮像信号を、輝度信号成分Yと、色差信号成分Cb/Crとにより構成されるデジタル撮像信号(YCデータ)に変換し、そのデジタル撮像信号を画像補正・解像度変換部15に供給する。画像補正・解像度変換部15では、ユーザ操作入力部3を通じて指定された解像度に、デジタル撮像信号を変換し、システムバスを介して、画像メモリ部4に供給する。
ユーザ操作入力部3を通じた撮影指示が、シャッターボタンの押下による静止画撮影指示であったときには、この例では、画像補正・解像度変換部15で解像度変換されたデジタル撮像信号は、前述した複数フレーム分が画像メモリ部4に書き込まれる。そして、この例では、複数フレーム分の画像が画像メモリ部4に書き込まれた後、ターゲットフレームの画像データと参照フレームの画像データが、動き検出・動き補償部16によって読み込まれ、後述するようなこの実施形態におけるブロックマッチング処理がなされて、動きベクトルが検出され、当該検出された動きベクトルに基づいて、画像重ね合わせ部17で後述するような画像の重ね合わせ処理が行われ、その重ね合わせ結果、ノイズ低減されたNR画像の画像データが画像メモリ部4に格納される。
そして、この画像メモリ部4に格納された重ね合わせ結果のNR画像の画像データは、静止画コーデック部18においてコーデック変換され、システムバス2を通じて記録再生装置部5の例えばDVD(Digital Versatile Disc)やハードディスクなどの記録媒体に記録される。この実施形態では、静止画コーデック部18では、JPEG(Joint Photographic Experts Group)方式の静止画についての画像圧縮符号化処理が行われる。
また、この静止画撮影時、シャッターボタンが押下操作される前においては、画像補正・解像度変換部15からの画像データは、画像メモリ部4を通じてNTSC(National Television System Committee)エンコーダ20に供給され、このNTSCエンコーダ20によりNTSC方式の標準カラー映像信号に変換され、例えばLCD(Liquid Crystal Display;液晶ディスプレイ)からなるモニターディスプレイ6に供給され、静止画撮影時のモニター画像がその表示画面にモニター表示される。
また、ユーザ操作入力部3を通じた撮影指示が、動画記録ボタンの押下による動画撮影指示であったときには、解像度変換された画像データは、画像メモリ部4に書き込まれると共に、リアルタイムに動き検出・動き補償部16へ送られ、後述するようなこの実施形態におけるブロックマッチング処理がなされて、動きベクトルが検出され、当該検出された動きベクトルに基づいて、画像重ね合わせ部17で後述するような画像の重ね合わせ処理が行われ、その重ね合わせ結果、ノイズ低減されたNR画像の画像データが画像メモリ部4に格納される。
そして、この画像メモリ部4に格納された重ね合わせ結果のNR画像の画像データは、NTSCエンコーダ部20を通じてモニターディスプレイ6の表示画面に出力されながら、動画コーデック部19でコーデック変換され、システムバス2を通じて記録再生装置部5に供給され、DVDやハードディスクなどの記録媒体に記録される。この実施形態では、動画コーデック部18では、MPEG(Moving Picture Experts Group)方式の動画についての画像圧縮符号化処理が行われる。
この記録再生装置部5の記録媒体に記録された撮像画像データは、ユーザ操作入力部3を通じた再生開始操作に応じて読み出され、動画コーデック部19に供給されて、再生デコードされる。そして、再生デコードされた画像データはNTSCエンコーダ20を通じてモニターディスプレイ6に供給され、再生画像がその表示画面に表示される。なお、図1では、図示を省略したが、NTSCエンコーダ20からの出力映像信号は、映像出力端子を通じて外部に導出することが可能とされている。
上述した動き検出・動き補償部16は、ハードウエアにより構成することできるし、また、DSP(Digital Signal Processor)を用いて構成することもできる。さらには、CPU1によりソフトウエア処理とすることもできる。
同様に、画像重ね合わせ部17も、ハードウエアにより構成することできるし、また、DSPを用いて構成することもできる。さらには、CPU1によりソフトウエア処理とすることもできる。また、静止画コーデック部18、動画コーデック部19なども、同様である。
[動き検出・動き補償部16の説明]
動き検出・動き補償部16では、この実施の形態では、基本的には、図61〜図66を用いて説明した、SAD値を用いてブロックマッチング処理を行うことで、動きベクトル検出を行うようにする。ただし、この実施の形態では、動き検出・動き補償部16は、後述するようなハードウエアで構成され、共通のハードウエアで階層化したブロックマッチング処理を行うようにする。また、後述するように、共通のハードウエアで、静止画についてのノイズ低減処理と、動画についてのノイズ低減処理とが実現できるように構成している。
動き検出・動き補償部16では、この実施の形態では、基本的には、図61〜図66を用いて説明した、SAD値を用いてブロックマッチング処理を行うことで、動きベクトル検出を行うようにする。ただし、この実施の形態では、動き検出・動き補償部16は、後述するようなハードウエアで構成され、共通のハードウエアで階層化したブロックマッチング処理を行うようにする。また、後述するように、共通のハードウエアで、静止画についてのノイズ低減処理と、動画についてのノイズ低減処理とが実現できるように構成している。
<実施の形態の階層化ブロックマッチング処理の概要>
一般的な従来のブロックマッチングにおける動きベクトル検出処理は、ピクセル単位(1ピクセル単位または複数ピクセル単位)で参照ブロックを移動させて、各移動位置における参照ブロックについてのSAD値を算出し、その算出したSAD値の中から最小値を示すSAD値を検出し、当該最小SAD値を呈する参照ブロック位置に基づいて動きベクトルを検出するようにする。
一般的な従来のブロックマッチングにおける動きベクトル検出処理は、ピクセル単位(1ピクセル単位または複数ピクセル単位)で参照ブロックを移動させて、各移動位置における参照ブロックについてのSAD値を算出し、その算出したSAD値の中から最小値を示すSAD値を検出し、当該最小SAD値を呈する参照ブロック位置に基づいて動きベクトルを検出するようにする。
しかし、このような従来の動きベクトル検出処理では、サーチ範囲内をピクセル単位で参照ブロックを移動させるようにするので、検索するサーチ範囲に比例して、SAD値を算出するマッチング処理回数が多くなって、マッチング処理時間が大きくなると共に、SADテーブルの容量も大きくなるという問題があった。
そこで、この実施の形態では、ターゲット画像(ターゲットフレーム)および参照画像(参照フレーム)に対して縮小画像を作成し、作成した縮小画像でブロックマッチングを行い、縮小画像での動き検出結果を基に、もとのターゲット画像でのブロックマッチングを行う。ここで、縮小画像のことを縮小面、縮小化をしていない元の画像のことを基底面と呼ぶことにする。したがって、この実施の形態では、縮小面でのブロックマッチングを行ったあと、そのマッチング結果を用いて基底面でのブロックマッチングを行う。
図6および図7に、ターゲットフレーム(画面)および参照フレーム(画面)の画像縮小化のイメージを示す。すなわち、この実施の形態においては、例えば図6に示すように、基底面ターゲットフレーム130は、水平方向および垂直方向のそれぞれを、1/n(nは正の数)に縮小して、縮小面ターゲットフレーム132とする。したがって、基底面ターゲットフレーム130を複数個に分割して生成した基底面ターゲットブロック131は、縮小面ターゲットフレームでは、水平方向および垂直方向のそれぞれが1/n×1/nに縮小された縮小面ターゲットブロック133となる。
そして、ターゲットフレームの画像縮小倍率1/nに合わせて、参照フレームを縮小する。すなわち、図7に示すように、基底面参照フレーム134は、水平方向および垂直方向のそれぞれを、1/nに縮小して、縮小面参照フレーム135とする。そして、基底面参照フレーム134上で検出された動き補償ブロック103についての動きベクトル104は、縮小面参照フレーム135では、1/n×1/nに縮小された縮小面動きベクトル136として検出される。
なお、上記の例では、ターゲットフレームと参照フレームとの画像縮小倍率は同じとしたが、演算量削減のため、ターゲットフレーム(画像)と参照フレーム(画像)とで異なる画像縮小倍率を用い、画素補間等の処理で、両フレームの画素数を合わせて、マッチングを行うようにしてもよい。
また、水平方向および垂直方向のそれぞれの縮小倍率を同一としたが、水平方向と垂直方向とで、縮小倍率を異ならせるようにしても良い。例えば水平方向は1/nに縮小し、垂直方向は、1/m(mは正の数で、n≠m)に縮小する場合には、縮小画面は、元の画面の1/n×1/mの大きさになる。
図8に、縮小面参照ベクトルと基底面参照ベクトルの関係を示す。基底面参照フレーム134において、動き検出原点105と、サーチ範囲106が、図8(A)に示すように決定されたとすると、1/n×1/nに画像縮小された縮小面参照フレーム135上では、図8(B)に示すように、サーチ範囲は、1/n×1/nに縮小された縮小面サーチ範囲137とされる。
そして、この実施の形態では、縮小面サーチ範囲137内において、縮小面参照フレーム135での動き検出原点105からの位置ズレ量を表す縮小面参照ベクトル138を設定し、それぞれの縮小面参照ベクトル138が指し示す位置にある縮小面参照ブロック139と、縮小面ターゲットブロック131(図8では図示は省略)との相関性を評価する。
この場合、縮小画像において、ブロックマッチングを行うので、縮小面参照フレーム135においてSAD値を算出すべき縮小面参照ブロック位置(縮小面参照ベクトル)の数を少なくすることができ、SAD値の算出回数(マッチング処理回数)が少なくなる分だけ、処理を高速化することができると共に、SADテーブルを小規模とすることができる。
図9に示すように、縮小面サーチ範囲137に応じて定まる縮小面マッチング処理範囲143内に設定される複数個の縮小面参照ブロック139と縮小面ターゲットブロック131とのブロックマッチングによる相関性評価により、縮小面参照フレーム135における縮小面動きベクトル136が算出される。この縮小面動きベクトル136の精度は、画像が1/n×1/nに縮小されているので、1ピクセルのn倍の低精度となっている。そこで、この算出された縮小面動きベクトル136をn倍しても、基底面参照フレーム134において、1ピクセル精度の動きベクトル104は得られない。
しかし、基底面参照フレーム134においては、縮小面動きベクトル136をn倍した動きベクトルの近傍に、1ピクセル精度の基底面動きベクトル104が存在することは明らかである。
そこで、この実施の形態では、図8(C)および図9に示すように、基底面参照フレーム134において、縮小面動きベクトル136をn倍した動きベクトル(基底面参照ベクトル141)が指し示す位置を中心として、基底面動きベクトル104が存在するであろうと考えられる狭い範囲に、基底面サーチ範囲140を設定し、設定された基底面サーチ範囲140に応じて基底面マッチング処理範囲144を設定する。
そして、図8(C)に示すように、この基底面サーチ範囲140内の位置を示すものとして、基底面参照フレーム134における基底面参照ベクトル141を設定し、各基底面参照ベクトル141が指し示す位置に基底面参照ブロック142を設定して、基底面参照フレーム134におけるブロックマッチングを行うようにする。
ここで設定された基底面サーチ範囲140および基底面マッチング処理範囲144は、図9に示すように、縮小面サーチ範囲137および縮小面マッチング処理範囲143を縮小率の逆数倍であるn倍したサーチ範囲137´およびマッチング処理範囲143´に比較して非常に狭い範囲でよい。
したがって、階層化マッチングを行わずに、基底面においてのみブロックマッチング処理をした場合には、基底面においては、サーチ範囲137´およびマッチング処理範囲143´において、複数個の参照ブロックを設定して、ターゲットブロックとの相関値を求める演算をする必要があるが、階層化マッチング処理においては、図9のように、非常に狭い範囲においてのみマッチング処理を行えばよい。
このため、当該狭い範囲である、基底面サーチ範囲140および基底面マッチング処理範囲144に設定される基底面参照ブロックの数は非常に少なくなり、マッチング処理回数(相関値演算回数)および保持するSAD値を非常に小さくすることができ、処理を高速化することができると共に、SADテーブルを小規模化することができるという効果を得ることができる。
こうして、基底面参照フレーム134において、ピクセル精度の基底面動きベクトル136が検出できたら、この実施の形態においては、基底面動きベクトル136が指し示す参照ブロックのSAD値、すなわち、最小SAD値と、その近傍の近傍SAD値とを用いて、この例においても二次曲線近似補間処理を行って、サブピクセル精度の基底面高精度動きベクトルを算出するようにする。
サブピクセル精度の基底面高精度動きベクトルについて説明する。前述したブロックマッチング手法では、ピクセル単位でブロックマッチングを行っているため、動きベクトルはピクセル精度でしか算出されない。図66に示したように、マッチング処理を行った点、つまり、参照ブロックの位置は、ピクセル精度で存在し、より精度の高い動きベクトルを算出するには、サブピクセル単位でのマッチング処理が必要になる。
N倍のピクセル精度(画素ピッチは、1/N)の動きベクトルを算出するために、N倍のピクセル単位でマッチング処理を行うと、SADテーブルは約N2倍の大きさになり、膨大なメモリが必要になる。また、ブロックマッチング処理のために、N倍にアッパーサンプルした画像を生成しなくてはならず、ハードウエアの規模は飛躍的に増大する。
そこで、二次曲線を用いて、SADテーブルを補間することで、ピクセル単位でマッチング処理を行ったSADテーブルから、サブピクセル精度の動きベクトルを算出することを考える。この場合において、二次曲線近似補間ではなく、線形補間や、三次以上の高次の近似曲線補間を用いても良いが、精度とハードウエア化との兼ね合いから、この例では、二次曲線近似補間を用いている。
この二次曲線近似補間においては、図10に示すように、ピクセル精度の基底面動きベクトル104が指し示すSADテーブルのSAD値の基底面最小値Smin(図10の参照符号113参照)と、当該最小値Sminの位置の近傍位置の複数個のSAD値(基底面近傍SAD値という)、この例では、基底面最小値Sminの位置のX方向およびY方向に隣接する4個の基底面近傍SAD値Sx1、Sx2およびSy1、Sy2(図10の参照符号114,115,116,117参照)を使用する。
図11に示すように、基底面最小値Sminと、X方向(水平方向)の近傍2点の基底面近傍SAD値Sx1、Sx2を使って、二次の近似曲線118を当てはめ、この二次曲線118の極小を取る座標が、サブピクセル精度の基底面高精度最小値SXminとなる動きベクトル(高精度動きベクトル)のX座標Vxとなる。このときの二次曲線近似補間の式を、次式(1)に示す。
SXmin=1/2×(Sx2−Sx1)/(Sx2−2Smin+Sx1)…式(1)
この計算式(1)で求めたサブピクセル精度の基底面高精度最小値SXminがSADテーブル上で取るX座標が、サブピクセル精度のSAD値の最小値となるX座標Vxとなる。
この計算式(1)で求めたサブピクセル精度の基底面高精度最小値SXminがSADテーブル上で取るX座標が、サブピクセル精度のSAD値の最小値となるX座標Vxとなる。
この計算式(1)の割り算は、複数回の引き算で実現可能である。求めたいサブピクセル精度が、例えば元の基底面における画素ピッチの1/4の画素ピッチの精度であれば、僅か2回の引き算でも求められるため、回路規模、演算時間、共に小さく、二次の近時曲線補間よりもかなり複雑な三次曲線補間と殆ど変わらない性能が実現できる。
同様に、基底面最小値Sminと、Y方向(垂直方向)の近傍2点の基底面近傍SAD値Sy1、Sy2を使って、二次の近似曲線を当て嵌め、この二次曲線の極小値SYminを取るY座標が、サブピクセル精度の基底面高精度最小値となるY座標Vyとなる。このときの二次曲線近似補間の式を、次式(2)に示す。
SYmin=1/2×(Sy2−Sy1)/(Sy2−2Smin+Sy1)…式(2)
以上のようにして、二次曲線の近似を、X方向およびY方向の2回、行うことで、サブピクセル精度の基底面高精度動きベクトル(Vx、Vy)が求まる。
以上のようにして、二次曲線の近似を、X方向およびY方向の2回、行うことで、サブピクセル精度の基底面高精度動きベクトル(Vx、Vy)が求まる。
以上の説明では、SAD値の最小値と、そのX方向(水平方向)およびY方向(垂直方向)の近傍2点のSAD値を使用したが、各方向の近傍のSAD値は2点以上であってもよい。また、二次曲線をX方向、Y方向に代えて、例えば、斜め方向に近似曲線を当て嵌めてもかまわない。さらに、X方向、Y方向に、斜め方向を加えて近似曲線を当て嵌めてもかまわない。
以上のような手段、手順を用いることにより、ピクセル単位の精度のSADテーブルの値から、サブピクセル精度のベクトル検出結果が得られることを図12に示す。図12の横軸は、補間倍率であり、1次元方向に分解能を何倍にするかを表している。SADテーブルは2次元のため、テーブル面積は、この2乗の割合で削減されるのに対し、補間による誤差は、線形程度にしか増加しないことから、上述の補間手法の有用性が分かる。
<動き検出・動き補償部16の構成例>
図13に、動き検出・動き補償部16の構成例のブロック図を示す。この例では、動き検出・動き補償部16は、ターゲットブロック102の画素データを保持するターゲットブロックバッファ部161と、参照ブロック108の画素データを保持する参照ブロックバッファ部162と、ターゲットブロック102と参照ブロック108とで対応する画素についてのSAD値を計算するマッチング処理部163と、マッチング処理部163から出力されるSAD値情報から動きベクトルを算出する動きベクトル算出部164と、各部を制御するコントロール部165と、を備える。
図13に、動き検出・動き補償部16の構成例のブロック図を示す。この例では、動き検出・動き補償部16は、ターゲットブロック102の画素データを保持するターゲットブロックバッファ部161と、参照ブロック108の画素データを保持する参照ブロックバッファ部162と、ターゲットブロック102と参照ブロック108とで対応する画素についてのSAD値を計算するマッチング処理部163と、マッチング処理部163から出力されるSAD値情報から動きベクトルを算出する動きベクトル算出部164と、各部を制御するコントロール部165と、を備える。
そして、動き検出・動き補償部16と、画像メモリ部4とは、システムバス2を通じて接続されている。すなわち、この例では、システムバス2とターゲットブロックバッファ部161および参照ブロックバッファ部162との間には、それぞれバス・インターフェース部21およびバス・インターフェース部22が接続されている。ここで、システムバス2でのプロトコルは、この例では、AXIインターコネクトが用いられている。
静止画撮像時においては、ターゲットブロックバッファ部161には、画像メモリ部4に記憶されている縮小面ターゲット画像Prtまたは基底面ターゲット画像Pbtの画像フレームからの縮小面ターゲットブロックまたは基底面ターゲットブロックが書き込まれる。縮小面ターゲット画像Prtまたは基底面ターゲット画像Pbtは、1枚目は、シャッターボタン押下後の最初の撮像フレームの画像がターゲットフレーム102としてターゲットブロックバッファ部161に書き込まれる。参照画像とのブロックマッチングに基づき画像の重ね合わせがなされると、画像メモリ部4に当該画像の重ね合わせ後のNR画像が書き込まれ、ターゲットブロックバッファ部161のターゲットフレーム102が、当該NR画像に書き換えられてゆく。
参照ブロックバッファ部162には、画像メモリ部4に記憶されている縮小面参照画像Prrまたは基底面参照画像Pbrの画像フレームからの縮小面マッチング処理範囲または基底面マッチング処理範囲の画像データが、画像メモリ部4から読み出されて、書き込まれる。縮小面参照画像Prrまたは基底面参照画像Pbrは、前記最初の撮像フレームの後の撮像フレームが、参照フレーム108として画像メモリ部4に書き込まれる。
この場合、連続して撮影された複数枚の撮像画像を取り込みながら画像の重ね合わせ処理を行う場合(これを撮影中加算と呼ぶことにする)には、基底面参照画像および縮小面参照画像としては、前記最初の撮像フレームの後の撮像フレームが、1枚ずつ順次に画像メモリ部4に取り込まれる。したがって、画像メモリ部4は、基底面参照画像および縮小面参照画像としては、1枚ずつを保持すればよい。
しかし、連続して撮影された複数枚の撮像画像を画像メモリ部4に取り込んだ後、動き検出・動き補償部16および画像重ね合わせ部17で、動きベクトル検出を行い、画像の重ね合わせを実行するようにする場合(これを撮影後加算と呼ぶことにする)には、基底面参照画像および縮小面参照画像としては、前記最初の撮像フレームの後の複数枚の撮像フレームの全てを画像メモリ部4に格納保持しておく必要がある。
撮像装置としては、撮影中加算および撮影後加算のいずれも用いることができるが、この実施形態では、静止画NR処理は、多少処理時間がかかっても、ノイズが低減された綺麗な画像が要求されることを考慮して、撮影後加算の処理を採用している。この実施形態における静止画NR処理の詳細な動作説明は、後で詳述する。
一方、動画撮影時においては、動き検出・動き補償部16には、画像補正・解像度変換部15からの撮像フレームがターゲットフレーム102として入力される。ターゲットブロックバッファ部161には、この画像補正・解像度変換部15からの、ターゲットフレームから抽出されたターゲットブロックが書き込まれる。また、参照ブロックバッファ部162には、前記ターゲットフレームよりも1枚前の、画像メモリ部4に記憶されている撮像フレームが、参照フレーム108とされ、この参照フレーム(基底面参照画像Pbrまたは縮小面参照画像Prr)からの基底面マッチング処理範囲または縮小面マッチング処理範囲が書き込まれる。
この動画撮影時には、画像メモリ部4には、画像補正・解像度変換部15からのターゲットフレームとの間でブロックマッチングをすべき、1枚前の撮像画像フレームを基底面参照画像Pbrおよび縮小面参照画像Prrとして保持するだけでよく、画像メモリ部4に保持する画像情報は、1枚分(1フレーム分)でよいので、この例では、基底面参照画像Pbrおよび縮小面参照画像Prrとしては、画像データ圧縮していない。
マッチング処理部163では、縮小面でのマッチング処理および基底面でのマッチング処理を、ターゲットブロックバッファ部161に記憶されたターゲットブロックと、参照ブロックバッファ部162に記憶された参照ブロックとについて行う。
ここで、ターゲットブロックバッファ部161に記憶されたものが縮小面ターゲットブロックの画像データであり、参照ブロックバッファ162に記憶されたものが縮小面参照画面から抽出された縮小面マッチング処理範囲の画像データである場合には、マッチング処理部163では、縮小面マッチング処理が実行される。また、ターゲットブロックバッファ部161に記憶されたものが基底面ターゲットブロックの画像データであり、参照ブロックバッファ162に記憶されたものが基底面参照画面から抽出された基底面マッチング処理範囲の画像データである場合には、マッチング処理部163では、基底面マッチング処理が実行されることになる。
マッチング処理部163で、ブロックマッチングにおけるターゲットブロックと、参照ブロックとの相関の強さを検出するためには、この実施の形態においても、画像データの輝度情報を用いてSAD値算出を行い、その最小SAD値を検出して、当該最小SAD値を呈する参照ブロックを最強相関参照ブロックとして検出するようにする。
なお、SAD値の算出は、輝度情報ではなく、色差信号や、3原色信号R,G,Bの情報を使用しても良いことは言うまでもない。また、SAD値の算出に当たっては、通常は、ブロック内の全画素を用いるようにするが、演算量削減のため、間引き等により、飛び飛びの位置の限られた画素の画素値のみを使用するようにしてもよい。
動きベクトル算出部164は、マッチング処理部163のマッチング処理結果からターゲットブロックに対する参照ブロックの動きベクトルを検出する。この実施形態では、マッチング処理部163で縮小面マッチング処理がなされるときには、動きベクトル検出部164では、縮小面動きベクトルが検出され、また、マッチング処理部163で基底面マッチング処理がなされるときには、動きベクトル検出部164では、基底面動きベクトルが検出される。
そして、この実施形態では、動きベクトル算出部164は、SAD値の最小値を検出保持すると共に、この最小SAD値を呈する参照ベクトルの近傍の複数個の参照ベクトルのSAD値をも保持して、例えば前述したような二次曲線近似補間処理を行って、サブピクセル精度の基底面高精度動きベクトルを検出する機能も備える。
コントロール部165は、CPU1による制御を受けながら、この動き検出・動き補償部16における階層化ブロックマッチング処理の処理動作を制御するようにする。
<ターゲットブロックバッファ161の構成例>
ターゲットブロックバッファ161の構成例のブロック図を、図14に示す。この図14に示すように、ターゲットブロックバッファ161は、基底面バッファ部1611と、縮小面バッファ部1612と、縮小化処理部1613と、セレクタ1614,1615および1616とを備えている。セレクタ1614,1615および1616は、図14では、図示は省略したが、コントロール部165からの選択制御信号によりそれぞれ選択制御される。
ターゲットブロックバッファ161の構成例のブロック図を、図14に示す。この図14に示すように、ターゲットブロックバッファ161は、基底面バッファ部1611と、縮小面バッファ部1612と、縮小化処理部1613と、セレクタ1614,1615および1616とを備えている。セレクタ1614,1615および1616は、図14では、図示は省略したが、コントロール部165からの選択制御信号によりそれぞれ選択制御される。
基底面バッファ部1611は、基底面ターゲットブロックを一時格納するためのものである。この基底面バッファ部1611は、基底面ターゲットブロックを、画像重ね合わせ部17に送ると共に、セレクタ1616に供給する。
縮小面バッファ部1612は、縮小面ターゲットブロックを一時格納するためのものである。縮小面バッファ部1612は、縮小面ターゲットブロックを、セレクタ1616に供給する。
縮小化処理部1613は、動画撮影時には上述したように、ターゲットブロックは、画像補正・解像度変換部15から送られてくるので、この縮小化処理部1613で縮小面ターゲットブロックを生成するために設けられている。縮小化処理部1613からの縮小面ターゲットブロックは、セレクタ1615に供給される。
セレクタ1614は、動画撮影時には画像補正・解像度変換部15からのターゲットブロック(基底面ターゲットブロック)を、静止画撮影時には画像メモリ部4からの基底面ターゲットブロックまたは縮小面ターゲットブロックを、コントロール部165からの選択制御信号により選択して出力し、その出力を基底面バッファ部1611と、縮小化処理部1613と、セレクタ1615とに供給する。
セレクタ1615は、動画撮影時には縮小化処理部15からの縮小面ターゲットブロックを、静止画撮影時には画像メモリ部4からの縮小面ターゲットブロックを、コントロール部165からの選択制御信号により選択して出力し、その出力を縮小面バッファ部1612に供給する。
セレクタ1616は、コントロール部1615からの選択制御信号に応じて、縮小面でのブロックマッチング時には、縮小面バッファ部1612からの縮小面ターゲットブロックを、基底面でのブロックマッチング時には、基底面バッファ部1611からの基底面ターゲットブロックを、それぞれ選択出力し、出力した縮小面ターゲットブロックまたは基底面ターゲットブロックをマッチング処理部163に送る。
<参照ブロックバッファ162の構成例>
参照ブロックバッファ162の構成例のブロック図を、図15に示す。この図15に示すように、参照ブロックバッファ162は、基底面バッファ部1621と、縮小面バッファ部1622と、セレクタ1623とを備えている。セレクタ1623は、図15では、図示は省略したが、コントロール部165からの選択制御信号により選択制御される。
参照ブロックバッファ162の構成例のブロック図を、図15に示す。この図15に示すように、参照ブロックバッファ162は、基底面バッファ部1621と、縮小面バッファ部1622と、セレクタ1623とを備えている。セレクタ1623は、図15では、図示は省略したが、コントロール部165からの選択制御信号により選択制御される。
基底面バッファ部1621は、画像メモリ部4からの基底面参照ブロックを一時格納し、その基底面参照ブロックを、セレクタ1623に供給すると共に、画像重ね合わせ部17に、動き補償ブロックとして送る。
縮小面バッファ部1622は、画像メモリ部4からの縮小面参照ブロックを一時格納するためのものである。縮小面バッファ部1622は、縮小面参照ブロックを、セレクタ1623に供給する。
セレクタ1623は、コントロール部1615からの選択制御信号に応じて、縮小面でのブロックマッチング時には、縮小面バッファ部1612からの縮小面参照ブロックを、基底面でのブロックマッチング時には、基底面バッファ部1611からの基底面参照ブロックを、それぞれ選択出力し、出力した縮小面参照ブロックまたは基底面参照ブロックをマッチング処理部163に送る。
<画像重ね合わせ部17の構成例>
画像重ね合わせ部17の構成例のブロック図を、図16に示す。この図16に示すように、画像重ね合わせ部17は、加算率計算部171と、加算部172と、基底面出力バッファ部173と、縮小面生成部174と、縮小面出力バッファ部175とを備えて構成されている。
画像重ね合わせ部17の構成例のブロック図を、図16に示す。この図16に示すように、画像重ね合わせ部17は、加算率計算部171と、加算部172と、基底面出力バッファ部173と、縮小面生成部174と、縮小面出力バッファ部175とを備えて構成されている。
そして、画像重ね合わせ部17と、画像メモリ部4とは、システムバス2を通じて接続されている。すなわち、この例では、システムバス2と基底面出力バッファ部173および縮小面出力バッファ部162との間には、それぞれバス・インターフェース部23およびバス・インターフェース部24が接続されている。
加算率計算部171は、動き検出・動き補償部16からのターゲットブロックおよび動き補償ブロックを受けて、動き補償ブロックについての加算係数αを算出すると共に、算出した加算係数αから、ターゲットブロックについての加算係数βを算出する。この実施形態では、後述するように、加算率計算部171では、採用する加算方式が、この実施形態の単純加算方式であるか、または平均加算方式であるかに応じた、動き補償ブロックについての加算係数αおよびターゲットブロックについての加算係数βを算出する。そして、算出した動き補償ブロックについての加算係数αおよびターゲットブロックについての加算係数βを加算部172に供給する。
加算部172では、この実施形態では、加算率計算部171からの動き補償ブロックについての加算係数αを、動き補償ブロックの画素データに乗算すると共に、ターゲットブロックについての加算係数βを、ターゲットブロックの画素データに乗算し、両乗算結果を加算して、基底面NR画像の画像データを生成する。
そして、加算部172は、加算結果の基底面NR画像を、基底面出力バッファ部173およびバス・インターフェース23を通じて画像メモリ部4に書き込む。また、加算部172での加算結果の基底面NR画像は、縮小面生成部174にて縮小面NR画像に変換され、当該縮小面生成部174からの縮小面NR画像が、縮小面出力バッファ部175およびバス・インターフェース24を通じて画像メモリ部4に書き込まれる。
画像重ね合わせ部17は、動き検出・動き補償部16から入力されるターゲットブロックと、動き補償ブロックとを元に、加算率計算部171にて加算率を計算(加算係数αおよびβを算出)し、ここで求められた加算率に応じて、加算部172にて加算を行う。重ね合わせを行った画像(基底面NR画像)は、次のフレームのターゲット画像、または参照画像として使用するため、基底面出力バッファ部173に貯めた後、バス・インターフェース部23を介して、画像メモリ部4に書き込まれる。同時に、基底面NR画像は、縮小面生成部174において、縮小化処理され、縮小面出力バッファ部175に貯めた後、バス・インターフェース部24を介して、縮小面NR画像として、画像メモリ部4に書き込まれる。
次に、この実施形態における画像重ね合わせの単純加算方式と平均加算方式について説明する。
前述したように、単純加算方式は、低照度の画像を重ね合わせて、NR(ノイズ低減)をかけつつ画像を高感度化したい場合に好適な画像重ね合わせ方式であり、複数枚の画像の重ね合わせを行う場合に、輝度を1:1で画像を重ね合わせて、ダイナミックレンジを逓倍する方式である。この単純加算方式の場合、輝度が同じターゲット画像と参照画像とを重ね合わせた後の画像は、常に、元のターゲット画像の2倍の明るさとなる。
一方、平均加算方式は、照度が確保できる条件で撮影された画像に対してNRを施す場合に好適な画像重ね合わせ方式であり、ダイナミックレンジを増やさず、合計輝度が1になるように加算する方式である。つまり、平均加算方式は、加算後の画像の明るさは変えずに、ノイズ低減を行う方式ができる。
従来の単純加算方式および平均加算方式では、画面全体で、ターゲット画像と、動き補償画像との加算係数が一定であって、両者の加算率が一定なものであった。このため、動きベクトルを用いて動き補償したとしても、被写体自身が動きをするような場合には、その動き部分が補償しきれずに、重ね合わせた画像上で、動きの残像が残ってしまう。
そこで、この実施形態では、1枚の画面(画像)において、動被写体と背景を区別し、動被写体部分は加算せずに、静止している背景領域を加算するようにする。このために、この実施形態では、画像重ね合わせ部17において、画素単位で参照画像の加算率を変更して、重ね合わせを行うようにする。
そこで、この実施形態では、ターゲット画像と動き補償画像とを、重ね合わせる画素単位で差分を取って比較し、差分が小さいときには、被写体の動きが少ない背景部分と判断して、動き補償画像の加算率を従来と同様の値とする。一方、画素差分が大きいときには、被写体の動きがある、つまり動被写体部分と判断して、動き補償画像の加算率を、従来の場合よりも小さい値として、前記動きの残像を軽減できるようにする。
図17に、従来の単純加算方式の処理イメージ図を示す。単純加算方式は、1枚目の画像(ターゲット画像Org0)と2枚目の画像(動き補償画像MC1)とを、輝度を1:1の割合で加算し、2倍のダイナミックレンジを持った出力画像NR1を得、この出力画像NR1に、3枚目の画像(動き補償画像MC2)を、輝度を1:1の割合で加算し、3倍のダイナミックレンジを持った出力画像NR2を得る。これを、動き補償画像のK枚(したがって、ターゲット画像への動き補償画像の重ね合わせ回数がK回)、繰り返して、ダイナミックレンジがK倍の画像を生成する。このとき、ノイズ成分は時間的に分散しているため、加算を繰り返しても、絶対量を一定に保っている。したがって、S/Nを改善して、ノイズ低減することができる。
図18に、この実施形態における画素単位単純加算方式についてのイメージ構成図を示す。この実施形態の画素単位単純加算方式においては、ターゲット画像と動き補償画像とで重ね合わせる2画素間の差分に応じて、動き補償画像についての加算係数αspを決める。このとき、重ね合わせる画素単位での差分がゼロであれば、加算係数αsp=1とし、差分が大きくなるにしたがって加算係数αspの値を小さくし、予め定められた或るしきい値よりも差分が大きいときには、加算係数αsp=0とするようにする。
以上のように、この実施形態における画素単位単純加算方式では、ターゲット画像と動き補償画像とで重ね合わせる2画素間の差分に応じて、動き補償画像についての加算係数αspを、0≦αsp≦1の範囲で定めるようにする。
加算係数αspの生成手段としては、例えば、重ね合わせる2画素間の差分値と加算係数αspとの対応テーブルを予め用意しておき、前記差分値をテーブル入力として、当該差分値に応じた加算係数αspを出力するようにする手段を用いることにより構成することができる。
そして、動き補償画像の画素についての加算係数αspが求まったら、その画素と重ね合わせるターゲット画像の画素についての加算係数βspは、次の式(3)に基づいて算出するようにする。
βsp=1+(1−αsp)/K ・・・式(3)
ここで、Kは、前述したように、ターゲット画像への動き補償画像の重ね合わせ回数である。
ここで、Kは、前述したように、ターゲット画像への動き補償画像の重ね合わせ回数である。
この実施形態における画素単位単純加算方式においては、上述のように、画素単位で加算係数αspおよびβspを変えながら、画面単位では、図17に示した従来の単純加算方式と同様の加算結果を得られるようにするものである。
次に、従来の平均加算方式の処理イメージ図を図19に示す。平均加算方式は、1枚目の画像(ターゲット画像Org0)と2枚目の画像(動き補償画像MC1)を合計が1になるように、動き補償画像の加算率αを設定して加算していく方式である。
すなわち、この平均加算方式においては、図19に示すように、1枚目の画像(ターゲット画像Org0)と2枚目の画像(動き補償画像MC1)とを、輝度を1/2:1/2の割合で加算して、1倍のダイナミックレンジを持った出力画像NR1を得る。この出力画像NR1に、3枚目の画像(動き補償画像MC2)を重ねあわせる場合には、出力画像NR1と、動き補償画像MC2とを、輝度を2/3:1/3の割合で加算し、1倍のダイナミックレンジを持った出力画像NR2を得る。
ターゲット画像に重ね合わせるi枚目の動き補償画像MCi(i=1,2,・・・K)の加算係数αavは、αav=1/iとなり、その動き補償画像MCiが重ね合わされるターゲット画像またが出力画像NRiについての加算係数βavは、βav=(1−α)=(i−1)/iとなる。
図20に、この実施形態における画素単位平均加算方式のイメージ構成図を示す。この実施形態の画素単位平均加算方式においては、ターゲット画像と動き補償画像とで重ね合わせる画素単位での差分に応じて、動き補償画像についての加算係数αavを決める。
そして、この実施形態の画素単位平均加算方式においては、この加算係数αavの算出に当たっては、最大加算率Aが設定される。加算率αavの最大加算率Aは、図19に示すように、初期値は1/2であり、以降は動き補償画像の加算枚数Kに応じて1/Kに変化する。
そして、重ね合わせる画素単位での差分がゼロであれば、加算係数αav=Aとし、差分が大きくなるにしたがって加算係数αspの値を小さくし、予め定められた或るしきい値よりも差分が大きいときには、加算係数αav=0とするようにする。
以上のように、この実施形態における画素単位平均加算方式では、ターゲット画像と動き補償画像とで重ね合わせる画素単位での差分に応じて、動き補償画像についての加算係数αavを、0≦αav≦Aの範囲で定めるようにする。
加算係数αavの生成手段としては、例えば、重ね合わせる画素単位での差分値および動き補償画像の加算枚数Kに対する、加算係数αavとの対応テーブルを予め用意しておき、前記差分値および動き補償画像の加算枚数Kをテーブル入力として、当該差分値に応じた加算係数αavを出力するようにする手段を用いることにより構成することができる。
そして、動き補償画像の画素についての加算係数αavが求まったら、その画素と重ね合わせるターゲット画像の画素についての加算係数βavは、βav=(1−αav)として、算出するようにする。
この実施形態の撮像装置では、画像重ね合わせ部17においては、上述した画素単位の単純加算方式と平均加算方式を、撮影時の条件、または設定情報によって使い分けている。例えば、撮影時の照度、または、撮影画像の輝度情報を検波した結果に応じて、ダイナミックレンジを増やしたいときには単純加算方式、十分な照度が確保されている場合には平均加算方式を使用することができるようにしている。
すなわち、この実施形態の撮像装置においては、前述したように、静止画撮影モードと、動画撮影モードとを備えるが、それぞれの撮影モードにおいて、さらに複数種の動作モードを備え、それらの動作モードに応じて、画素単位の単純加算方式と、平均加算方式のいずれかを割り当て設定している。
図21に、上記の複数種の動作モードに対する、画像重ね合わせの加算方式の割り当て設定例を示す。
この実施形態の撮像装置は、静止画撮影モードにおいては、通常モードと、バルブ加算モードとを備える。バルブ加算モードは、低照度の画像を重ね合わせて1枚の静止画像を生成するモードである。このバルブ加算モードにおいては、シャッターを開放として、高速で複数枚の撮像画像を取り込み、当該取り込んだ複数枚の撮像画像を重ね合わせるようにするものである。なお、シャッターを開放とせずに、低照度であっても、シャッター速度を高速にして、複数枚の撮像画像を取り込み、当該取り込んだ複数枚の撮像画像を重ね合わせるようにしてもよい。
この実施形態では、図21に示すように、ユーザにより、静止画撮影モードが選択され、かつ、バルブ加算モードが選択されたときには、上述した画素単位単純加算方式により、画像の重ね合わせ処理が実行される。また、ユーザにより、静止画撮影モードが選択され、かつ、バルブ加算モード以外の通常モードが選択されたときには、上述した画素単位平均加算方式により、画像の重ね合わせ処理が実行される。
また、この実施形態の撮像装置は、動画撮影モードにおいては、通常モードと、バルブ加算動画モードと、低照度ブレ補正モードとを備える。動画撮影モードの場合も、通常モードでは、上述した画素単位平均加算方式により、画像の重ね合わせ処理が実行され、バルブ加算動画モードおよび低照度ブレ補正モードの場合に、上述した画素単位単純加算方式により、画像の重ね合わせ処理が実行される。動画撮影モードの通常モードにおける画素単位平均加算方式の場合、図5に示したように、動画撮像画像の重ね合わせは、現フレームと前フレームとの2枚の重ね合わせとなるので、上述の重ね合わせ枚数Kは、K=1となる。
動画撮影モードにおけるバルブ加算モードは、被写体を判別しづらいほどに照度が低い場合に、シャッターを開放として、高速で複数枚の撮像画像を取り込み、当該取り込んだ複数枚の撮像画像を、この実施形態の単純加算方式により複数枚の撮像画像を重ね合わせることにより、利得を上げ、ダイナミックレンジを上げるモードである。このバルブ加算動画モードにおいては、重ね合わせ結果の画像が、目的照度まで到達すると、動き補償画像の加算枚数Kが、そのときの値で固定され、以後は、当該加算枚数K単位で、画像の重ね合わせが行われる。
低照度ブレ補正モードは、被写体照度が低く、シャッター速度が遅くなることで、手ブレや被写体ブレが目立つようなときに、シャッター速度を高速にして、ブレを抑制して、画像をこの実施形態の画素単位単純加算方式で重ね合わせることで、NRおよび手ブレ補正を行うモードである。
例えば、フレームレートが60fpsの動画画像を撮像記録するとしたときに、240fpsで高速撮像を行い、4枚の撮像画像について、この実施形態の画素単位単純加算方式を実行して、60fpsの画像を生成することで、被写体照度はそのままで、シャッター速度の低速化によるブレを補正することができる。
この低照度ブレ補正モードにおいては、NR画像が設定フレームレートで出力されるように、動き補償画像の加算枚数が調節される。例えば、撮像素子からの撮像画像のフレームレートが240fpsであれば、4枚加算を行う毎に、前記Kがリセットされ、4枚の画像を重ね合わせたNR画像が、60fpsで出力されることになる。
画像重ね合わせ部17の加算率計算部171および加算部172のハードウエア構成例を、図22に示す。
すなわち、図22の例においては、加算率計算部171は、画像差分算出部1711と、単純加算用加算係数生成部1712と、平均加算用加算係数生成部1713と、モードセレクタ1714とからなる。
動き検出・動き補償部16からのターゲットブロックの画像データおよび動き補償ブロックの画像データは、そのまま、加算部172に供給されると共に、画素差分算出部1711に供給される。
この画素差分算出部1711では、動き検出・動き補償部16からのターゲットブロックの画素と、当該画素と重ね合わせようとする動き補償ブロックの画素との2画素間の差分を算出する。算出された差分は、両画素が動き部分であるほど大きいものとなり、動きが全く無ければ、差分は、ゼロとなる。この画素差分算出部1711で算出された画素差分は、単純加算用加算係数生成部1712および平均加算用加算係数生成部1713に供給される。
また、単純加算用加算係数生成部1712および平均加算用加算係数生成部1713には、CPU1あるいは動き検出・動き補償部16のコントロール部165から、動き補償画像の重ね合わせ回数Kの値が供給される。
この例では、単純加算用加算係数生成部1712は、図示は省略したが、重ね合わせる2画素間の差分値と動き補償ブロックの画素データについての加算係数αspとの対応テーブルメモリと、ターゲットブロックの画素データについての加算係数βspの計算部とを備える。
そして、単純加算用加算係数生成部1712は、画素差分算出部1711からの差分に基づいて、対応テーブルメモリから動き補償ブロックの画素データについての加算係数αspを読み出して、モードセレクタ1714に出力する。
そして、単純加算用加算係数生成部1712のターゲットブロックの画素データについての加算係数βspの計算部は、読み出した加算係数αspと、重ね合わせ回数Kの値とから、ターゲットブロックの画素データについての加算係数βspを、前述した式(3)に基づいて算出し、モードセレクタ1714に出力する。
また、この例では、平均加算用加算係数生成部1713は、図示は省略したが、重ね合わせる2画素間の差分値および重ね合わせ回数Kの値と、動き補償ブロックの画素データについての加算係数αavとの対応テーブルメモリと、ターゲットブロックの画素データについての加算係数βavの計算部とを備える。
そして、平均加算用加算係数生成部1713は、画素差分算出部1711からの差分と、重ね合わせ回数Kの値に基づいて、対応テーブルメモリから動き補償ブロックの画素データについての加算係数αavを読み出して、モードセレクタ1714に出力する。
そして、平均加算用加算係数生成部1713のターゲットブロックの画素データについての加算係数βavの計算部は、読み出した加算係数αavから、ターゲットブロックの画素データについての加算係数βspを、βsp=(1−αav)により算出し、モードセレクタ1714に出力する。
モードセレクタ1714には、CPU1から、ユーザの、静止画撮影モードか動画撮影モードかの選択指示、および選択された撮影モードにおいて、図21に示したいずれの動作モードが選択されたかの指示に応じたモード選択信号SWが供給される。
そして、図21において、画素単位の単純加算方式が割り当てられている動作モードがユーザにより選択されているときには、モード選択信号SWにより、モードセレクタ1714では、単純加算用加算係数生成部1712からの加算係数αspおよびβspが選択されて、加算部172に、動き補償ブロック用の加算係数αおよびターゲットブロック用の加算係数βとして、それぞれ供給される。
また、図21において、画素単位の平均加算方式が割り当てられている動作モードがユーザにより選択されているときには、モード選択信号SWにより、モードセレクタ1714では、平均加算用加算係数生成部1713からの加算係数αavおよびβavが選択されて、加算部172に、動き補償ブロック用の加算係数αおよびターゲットブロック用の加算係数βとして、それぞれ供給される。
加算部172は、乗算回路1721および1722と、加算回路1723とから構成されている。そして、乗算回路1721および1722には、動き補償ブロックの画素データおよび当該画素データと重ね合わせられるべきターゲットブロックの画素データがそれぞれ供給される。
そして、乗算回路1721には、加算率計算部171からの加算係数αが供給されて、動き補償ブロックの画素データと乗算され、その乗算結果が加算回路1723に供給される。
また、乗算回路1722には、加算率計算部171からの加算係数βが供給されて、ターゲットブロックの画素データと乗算され、その乗算結果が加算回路1723に供給される。
加算回路1723は、乗算回路1721および1722からの乗算結果を加算し、その加算出力を、基底面質バッファ部173を介して画像メモリ部4に書き込む。また、加算回路1723は、加算出力を縮小面生成部174および縮小面出力バッファ部175を介して画像メモリ部4に書き込む。
[撮像画像のノイズ低減処理の概要の流れ]
<静止画撮影時>
上述の構成の実施の形態の撮像装置において、静止画撮影時における画像の重ね合わせによるノイズ低減処理のフローチャートを、図23および図24に示す。この図23および図24のフローチャートの各ステップは、CPU1およびこのCPU1により制御される動き検出・動き補償部16のコントロール部165の制御の下に実行されると共に、画像重ね合わせ部17により実行されるものである。
<静止画撮影時>
上述の構成の実施の形態の撮像装置において、静止画撮影時における画像の重ね合わせによるノイズ低減処理のフローチャートを、図23および図24に示す。この図23および図24のフローチャートの各ステップは、CPU1およびこのCPU1により制御される動き検出・動き補償部16のコントロール部165の制御の下に実行されると共に、画像重ね合わせ部17により実行されるものである。
まず、シャッターボタンが押下されると、この例の撮像装置においては、CPU1による制御によって、高速で複数枚の画像の高速撮影が行われる。この例では、静止画撮影時に重ね合わすべきM枚(Mフレーム;Mは2以上の整数)の撮像画像データを高速で取り込み、画像メモリ部4に貼っておく(ステップS1)。
次に、参照フレームは、画像メモリ部4に蓄積されているM枚の画像フレームのうちの時間的にN番目(Nは2以上の整数で、最大値はM)とするのであるが、コントロール部165は、その何番目とする値Nの初期値を、N=2とする(ステップS2)。そして、次に、コントロール部165は、1枚目の画像フレームをターゲット画像(ターゲットフレーム)とし、N=2枚目の画像を参照画像(参照フレーム)に設定する(ステップS3)。
次に、コントロール部165は、ターゲットフレームにターゲットブロックを設定し(ステップS4)、動き検出・動き補償部16において、画像メモリ部4から、ターゲットブロックバッファ部161へターゲットブロックを読み込み(ステップS5)、参照ブロックバッファ部162へサーチ範囲を含むマッチング処理範囲の画素データを読み込む(ステップS6)。
次に、コントロール部165は、参照ブロックバッファ部162から、サーチ範囲内において参照ブロックを読み出し、マッチング処理部163で、この実施形態における階層化マッチング処理を行う。なお、この例では、後述するように、マッチング処理部163で算出されたSAD値のうち、後述するSAD値は、SAD値の最小値およびその近傍のSAD値を保持して、二次曲線近似補間処理を行うために、動きベクトル算出部164へ送られる。これをサーチ範囲内のすべての参照ベクトルで繰り返した後、二次曲線近似補間処理部で、前述した補間処理を行い、高精度の基底面動きベクトルを出力する(ステップS7)。
次に、コントロール部165は、以上のようにして検出された高精度の基底面動きベクトルにしたがって、参照ブロックバッファ部162から動き補償ブロックを読み出し(ステップS8)、ターゲットブロックと同期して、後段の画像重ね合わせ部17へ送る(ステップS9)。
次に、CPU1の制御に従って、画像重ね合わせ部17は、前述したように、ユーザにより選択設定された動作モードに応じて決定された画素単位単純加算方式または平均加算方式により、ターゲットブロックと動き補償ブロックの重ね合わせを行い、重ね合わせたブロックのNR画像データを画像メモリ部4に貼る。すなわち、画像重ね合わせ部17は、重ね合わせたブロックのNR画像データを画像メモリ部4に書き込む(ステップS10)。
次に、コントロール部165は、ターゲットフレーム内のすべてのターゲットブロックについてのブロックマッチングを終了したか否か判別し(ステップS11)、すべてのターゲットブロックについては未だブロックマッチングの処理が終了していないと判別したときには、ステップS4に戻って、ターゲットフレーム内の次のターゲットブロックを設定して、ステップS4〜ステップS11までの処理を繰り返す。
また、コントロール部165は、ステップS11で、ターゲットフレーム内のすべてのターゲットブロックについてのブロックマッチングを終了したと判別したときには、重ね合わすべきすべての参照フレームについての処理が終了したか否か、つまり、M=Nであるか否か判別する(ステップS12)。
ステップS12で、M=Nではないと判別したときには、N=N+1とし(ステップS13)、次に、ステップS10での重ね合わせにより生成されたNR画像をターゲット画像(ターゲットフレーム)とし、また、N=N+1枚目の画像を参照画像(参照フレーム)とする(ステップS14)。その後、ステップS4に戻って、このステップS4以降の処理を繰り返す。つまり、Mが3以上の場合は、全てのターゲットブロックにおいて重ね合わせを行った画像を次のターゲット画像とし、3枚目以降の画像を参照フレームとして、上記の処理を繰り返して行く。これをM枚目の重ね合わせが終わるまで繰り返す。そして、ステップS12で、M=Nであると判別したときには、この処理ルーチンを終了する。
なお、M枚の撮影画像が重ね合わされた結果のNR画像の画像データは、静止画コーデック部18により圧縮符号化エンコードされて、記録再生装置部5に供給されて、その記録媒体に記録されるものである。
なお、以上の静止画のノイズ低減処理方法は、M枚の画像データを画像メモリ部4に貼っておく手法であるが、1枚撮影するたびに重ね合わせを行っても良い。その場合には、画像メモリ部4に記憶する画像フレームは、1枚でよいので、図23および図24の処理ルーチンのノイズ低減処理方法に比べて、撮影間隔は長くなるが、メモリコストを最小にすることが可能である。
<動画撮影時>
次に、この実施の形態の撮像装置において、動画撮影時における画像の重ね合わせによるノイズ低減処理のフローチャートを、図25に示す。この図25のフローチャートの各ステップも、CPU1およびこのCPU1により制御される動き検出・動き補償部16のコントロール部165の制御の下に実行されるものである。動画記録ボタンがユーザにより操作されると、CPU1は、図25の処理をスタートから開始するように指示する。
次に、この実施の形態の撮像装置において、動画撮影時における画像の重ね合わせによるノイズ低減処理のフローチャートを、図25に示す。この図25のフローチャートの各ステップも、CPU1およびこのCPU1により制御される動き検出・動き補償部16のコントロール部165の制御の下に実行されるものである。動画記録ボタンがユーザにより操作されると、CPU1は、図25の処理をスタートから開始するように指示する。
この実施の形態では、動き検出・動き補償部16は、ターゲットブロック単位でマッチング処理をするのに適した構成とされている。そこで、画像補正・解像度変換部15は、CPU1の制御に従って、フレーム画像を保持し、ターゲットブロック単位で、動き検出・動き補償部16へ画像データを送る(ステップS21)。
動き検出・動き補償部16に送られたターゲットブロックの画像データは、ターゲットブロックバッファ部161に格納される。次に、コントロール部165は、ターゲットブロックに対応した参照ベクトルを設定し(ステップS22)、画像メモリ部4から、マッチング処理範囲の画像データを参照ブロックバッファ部162へ読み込む(ステップS23)。
次に、マッチング処理部163および動きベクトル算出部164は、この実施形態における階層化ブロックマッチングによる動き検出処理を行う(ステップS24)。すなわち、マッチング処理部163は、先ず、縮小面において、縮小面ターゲットブロックの画素値と縮小面参照ブロックの画素値との間のSAD値を算出し、算出したSAD値を動きベクトル算出部164へ送る。マッチング処理部163は、この処理をサーチ範囲内のすべての縮小面参照ブロックで繰り返す。サーチ範囲内のすべての縮小面参照ブロックについてのSAD値の算出が終了した後、動きベクトル算出部164は、最小のSAD値を特定して、縮小面動きベクトルを検出する。
コントロール部165は、動きベクトル算出部164で検出された縮小面動きベクトルを縮小率の逆数倍して、基底面上における動きベクトルに変換し、その変換したベクトルが、基底面において指し示す位置を中心した領域を、基底面におけるサーチ範囲とする。そして、コントロール部165は、マッチング処理部163に、当該サーチ範囲において、基底面におけるブロックマッチング処理を行わせるように制御する。マッチング処理部163は、基底面ターゲットブロックの画素値と基底面参照ブロックの画素値との間のSAD値を算出し、算出したSAD値を動きベクトル算出部164へ送る。
サーチ範囲内のすべての縮小面参照ブロックについてのSAD値の算出が終了した後、動きベクトル算出部164は、最小のSAD値を特定して、縮小面動きベクトルを検出すると共に、その近傍のSAD値を特定し、それらのSAD値を用いて、前述した二次曲線近似補間処理を行い、サブピクセル精度の高精度の基底面動きベクトルを出力する。
次に、コントロール部165は、ステップS24で算出された高精度の基底面動きベクトルにしたがって、参照ブロックバッファ部162から動き補償ブロックの画像データを読み出し(ステップS25)、ターゲットブロックと同期して、後段の画像重ね合わせ部17へ送る(ステップS26)。
画像重ね合わせ部17においては、ユーザにより選択設定された動作モードに応じて決定された画素単位単純加算方式または平均加算方式により、ターゲットブロックと動き補償ブロックの重ね合わせを行う。そして、画像重ね合わせ部17は、その重ね合わせた結果のNR画像の画像データを、NTSCエンコーダ20を通じてモニターディスプレイ6に出力することで、動画記録モニターをすると共に、動画コーデック部19を通じて記録再生装置部6に送り、記録媒体に記録するようにする(ステップS27)。
画像重ね合わせ部17で重ね合わせされた画像は、また、画像メモリ部4に格納し、次のフレーム(ターゲットフレーム)での参照フレームとなるようにする(ステップS28)。
そして、CPU1は、動画記録停止操作がユーザによりなされたか否か判別し(ステップS29)、当該動画記録停止操作がユーザによりなされていないと判別したときには、ステップS21に戻って、このステップS21以降の処理を繰り返すように指示する。また、ステップS29で、動画記録停止操作がユーザによりなされたと判別したときには、CPU1は、この処理ルーチンを終了するようにする。
以上の動画のノイズ低減処理の処理ルーチンにおいては、1フレーム前の画像フレームを参照フレームとするようにしたが、1フレームよりもさらに過去のフレームの画像を参照フレームとして用いるようにしても良い。また、1フレーム前と2フレーム前の画像を、画像メモリ部4に格納しておき、それらの2枚の画像情報の内容から、どちらの画像フレームを参照フレームにするかを選択しても良い。
上記のような手段、手順、システム構成を用いることで、一つの共通したブロックマッチング処理のハードウエアで、静止画ノイズ低減処理および動画ノイズ低減処理を行うことが可能になる。
[動きベクトル算出部164について]
次に、この実施形態で用いる動きベクトル算出部164の構成例およびその動作について説明する。
次に、この実施形態で用いる動きベクトル算出部164の構成例およびその動作について説明する。
従来から知られている動きベクトル算出部の例においては、サーチ範囲において算出したSAD値を全て記憶するSADテーブルTBLを生成し、そのSADテーブルTBLから最小SAD値を検出し、当該最小SAD値を呈する参照ブロックの位置に対応する参照ベクトルを動きベクトルとして算出する。そして、二次曲線近似補間をする場合には、生成したSADテーブルTBLから、前記最小SAD値の近傍の複数個、この例では、4個のSAD値を抽出し、これらのSAD値を用いて補間処理をする。したがって、この方法は、SADテーブルTBLの分だけ、大規模なメモリを必要とする。
以下に説明する例は、サーチ範囲で算出したSAD値を全て記憶するSADテーブルTBLを生成しないことにより、より回路規模を削減することができるとともに、処理時間も削減することができるようにするものである。
<実施形態の動きベクトル算出部164の第1の例>
上述したように、ブロックマッチング処理は、参照ベクトルの示す位置を参照ブロックの位置とし、各参照ブロックの各画素とターゲットブロックの各画素のSAD値を計算し、その計算処理を、サーチ範囲内のすべての参照ベクトルの示す位置の参照ブロックについて行う。
上述したように、ブロックマッチング処理は、参照ベクトルの示す位置を参照ブロックの位置とし、各参照ブロックの各画素とターゲットブロックの各画素のSAD値を計算し、その計算処理を、サーチ範囲内のすべての参照ベクトルの示す位置の参照ブロックについて行う。
ここで、サーチ範囲内において参照ブロックの位置を変えて、動き補償ブロックをサーチする場合に、サーチを画面(フレーム)の端から順番に行う、画面(フレーム)の中心から外側に向かって行う、などいろいろな方法が考えられるが、この実施の形態では、サーチ方向は、図26(A)で矢印120に示すように設定され、サーチ範囲の左上端から水平方向にサーチを開始し、1ライン分のサーチが終わった後、垂直方向に1ライン下のラインを、左端から水平方向にサーチする、という手順を繰り返すサーチ方法を採用する。
すなわち、図26(B)に示すように、サーチ範囲106において、当該サーチ範囲106の左上から水平方向に参照ブロック108を順次に設定してサーチして、各参照ブロック108についてのSAD値の計算を行う。すると、図26(C)に示すように、対応するSADテーブルも左上から水平方向に埋まっていく。このとき、実際にマッチング処理に使用される画素データの範囲は、参照ブロック108の大きさに応じたマッチング処理範囲110となるのは、前述した通りである。
図10および図11に示したように、この例のサブピクセル精度の二次曲線近似補間処理を行うためには、SAD値の最小値Smin、およびその近傍のSAD値Sx1、Sx2、Sy1、Sy2が求まれば良い。
各参照ブロックについてのSAD値を算出した際に、その算出したSAD値と、その時点までのSAD値の最小値とを比較して、算出したSAD値がその時までのSAD値の最小値よりも小さければ、算出したSAD値を最小値として保持すると共に、そのSAD値とそのときの参照ベクトルを保持することにより、SAD値の最小値および当該最小値を取る参照ブロックの位置情報(参照ベクトルの情報)とを、SADテーブルを生成することなく、求めることができる。
そして、検出したSAD値の最小値を保持すると共に、その最小SAD値となる参照ブロック位置の近傍の参照ブロックのSAD値を、近傍SAD値として保持するようにすれば、近傍SAD値をも、SADテーブルを生成することなく、保持することができる。
このとき、この例では、図27(A)に示すように、上述の図26(A)に示したようなサーチ方法を採用しているので、従来のSADテーブルTBLにおいて水平方向の1ライン分のSAD値を記憶する容量のメモリ(以下、ラインメモリという)を設ければ、新たに参照ブロックのSAD値が算出されたときには、SADテーブルTBL上では、図27(B)で斜線を付して示すように、当該新たに算出されたSAD値121に対して、それより前に算出されたSADテーブルTBLの1ライン分の複数個の参照ブロックのSAD値が、格納データ122として前記ラインメモリに格納されていることになる。
そこで、新たに算出された参照ブロックのSAD値が、最小のSAD値として検出されたときには、SADテーブルTBL上において、前記最小SAD値121を呈する参照ブロックの位置の1ライン上の位置の参照ブロックのSAD値123(近傍SAD値(Sy1))と、前記最小SAD値121を呈する参照ブロックの位置の左横の位置の参照ブロックのSAD値124(近傍SAD値(Sx1))は、前記ラインメモリから取得することができる。
そして、SADテーブルTBL上において、最小SAD値の参照ブロックの位置の右横の位置の参照ブロックのSAD値である近傍SAD値(Sx2)(図27(C)の符号125参照)は、後で、その参照ブロック位置で算出されたSAD値を保持すればよい。同様に、SADテーブルTBL上において、新たに算出された最小SAD値の参照ブロックの位置の1ライン下の位置の参照ブロックのSAD値である近傍SAD値(Sy2)(図27(C)の符号126参照)も、後で、その参照ブロック位置で算出されたSAD値を保持すればよい。
以上のことを考慮して、この動きベクトル算出部164の第1の例は、図28に示すようなハードウエア構成とする。
すなわち、この動きベクトル算出部164の第1の例においては、算出された全てのSAD値を保持するSADテーブルTBLは備えず、SAD値書き込み部1641と、SAD値比較部1642と、SAD値保持部1643と、X方向(水平方向)近傍値抽出部1644およびY方向(垂直方向)近傍値抽出部1645と、二次曲線近似補間処理部1646と、SADテーブルTBLの1ライン分のメモリ(ラインメモリという)1647とを備えてなる。
SAD値保持部1643は、最小SAD値Sminおよび近傍SAD値Sx1、Sx2、Sy1、Sy2の保持部(メモリ)を備える。そして、この第1の例においては、SAD値保持部1643は、その最小SAD値保持部からの最小SAD値SminをSAD値比較部1642に供給する共に、保持している近傍SAD値のうち、最小SAD値Sminの右側の近傍SAD値Sx2の参照ブロックの位置情報(参照ベクトル)と、最小SAD値Sminの下側の近傍SAD値Sy2の参照ブロックの位置情報(参照ベクトル)とを、SAD値書き込み部1641に供給する。
SAD値比較部1642は、この第1の例においては、マッチング処理部163からの参照ブロックの位置情報(参照ベクトル)と、当該参照ブロックのSAD値Sinとを受けると共に、SAD値保持部1643の最小SAD値保持部からの最小SAD値Sminとを受ける。
そして、SAD値比較部1642は、マッチング処理部163からの当該時点で算出されたSAD値Sinと、SAD値保持部1643の最小SAD値保持部からの最小SAD値Sminとの両者を比較し、マッチング処理部163からの当該時点で算出されたSAD値Sinの方が小さいときには、当該時点で、そのSAD値を最小SAD値であるとして検出し、また、SAD値Sinの方が小さいときには、当該時点では、SAD値保持部1643の最小SAD値保持部からの最小SAD値Sminが未だ最小値であると検出する。そして、SAD値比較部1642は、その検出結果の情報DETをSAD値書き込み部1641およびSAD値保持部1643に供給する。
SAD値書き込み部1641は、マッチング処理部163からの算出されたSAD値Sinおよびその位置情報(参照ベクトル)を一時保持するための1画素分のバッファメモリを備え、この第1の例においては、マッチング処理部163からの参照ブロックの位置情報(参照ベクトル)と、当該参照ブロックのSAD値Sinとを、ラインメモリ1647に書き込む。この場合、ラインメモリ1647は、シフトレジスタと同様の動作を行い、空きスペースが無いときには、新規の位置情報およびSAD値が記憶されると、ラインメモリ1647において最も古い前記位置情報およびSAD値が廃棄される。
また、SAD値書き込み部1641は、算出されたSAD値Sinおよびその位置情報をラインメモリ1647に書き込む前に、この第1の例においては、次のような処理を行う。
すなわち、SAD値書き込み部1641は、SAD値比較部1642からの比較検出結果の情報DETが、SAD値Sinが最小値であることを示しているときには、マッチング処理部163からの参照ブロックの位置情報(参照ベクトル)と、当該参照ブロックのSAD値Sinとを、SAD値保持部1643に送る。
SAD値保持部1643は、SAD値比較部1642からの比較検出結果の情報DETにより、SAD値Sinが最小値であることを検知し、SAD値書き込み部1641から送られてくる参照ブロックの位置情報(参照ベクトル)と、当該参照ブロックのSAD値Sinとを、最小SAD値保持部に格納する。
また、SAD値書き込み部1641は、この第1の例においては、マッチング処理部163からの参照ブロックの位置情報(参照ベクトル)が、SAD値保持部1643から受け取った近傍SAD値Sx2またはSy2の位置情報と一致したときにも、マッチング処理部163からの参照ブロックの位置情報(参照ベクトル)と、当該参照ブロックのSAD値Sinとを、SAD値保持部1643に送る。
SAD値保持部1643は、受け取った参照ブロックの位置情報(参照ベクトル)から、いずれの近傍SAD値に関する情報かを認識して、対応する近傍SAD値保持部に格納する。
以上の処理をサーチ範囲における全ての参照ブロックについて終了すると、SAD値保持部1643には、前述したように、最小SAD値およびその位置情報ならびに4個の近傍SAD値およびその位置情報が保持される。
そこで、X方向(水平方向)近傍値抽出部1644およびY方向(垂直方向)近傍値抽出部1645が、SAD値保持部1643に保持された、前記検出した最小のSAD値Sminとその近傍SAD値Sx1、Sx2、Sy1、Sy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部1646に送る。これを受けた二次曲線近似補間処理部1646は、二次曲線による補間を、X方向およびY方向の2回行い、前述したようにして、サブピクセル精度の高精度の基底面動きベクトルを算出する。
以上のようにして、第1の例においては、SADテーブルTBLの代わりに、SADテーブルTBLの1ライン分のラインメモリを用いることにより、サブピクセル精度の高精度基底面動きベクトルの検出ができる。
この第1の例の構成の動き検出・動き補償部16における縮小面でのブロックマッチング処理時の流れの例を図29のフローチャートに、基底面でのブロックマッチング処理時の流れの例を図30およびその続きである図31のフローチャートに、それぞれ示す。この第1の例のフローチャートの各ステップは、マッチング処理部163および動きベクトル算出部164においてなされるものである。
先ず、縮小面におけるブロックマッチング処理時の流れの例である図29のフローチャートについて説明する。
はじめに、動きベクトル算出部164のSAD値保持部1643の最小SAD値Sminの初期値を設定する(ステップS31)。この最小SAD値Sminの初期値としては、例えば、画素の差分の最大値が設定される。
次に、マッチング処理部163では、縮小面の参照ベクトル(Vx,Vy)を設定して、SAD値を計算する縮小面参照ブロック位置を設定し(ステップS32)、設定した縮小面参照ブロックの画素データを、参照ブロックバッファ部162から読み込む(ステップS33)と共に、ターゲットブロックバッファ部161から縮小面ターゲットブロックの画素データを読み込んで、縮小面ターゲットブロックおよび縮小面参照ブロックの各画素データの差分の絶対値の総和、つまり、SAD値を求め、求めたSAD値を動きベクトル算出部164に送出する(ステップS34)。
動きベクトル算出部164では、SAD値書き込み部1641により、そのSAD値をラインメモリ1647に書き込む(ステップS35)。
そして、動きベクトル算出部164では、SAD値比較部1642が、マッチング処理部163で算出されたSAD値Sinと、SAD値保持部1643に保持されている最小SAD値Sminとを比較して、算出されたSAD値Sinが、それまで保持されている最小SAD値Sminよりも小さいか否か判別する(ステップS36)。
このステップS36で、算出されたSAD値Sinが最小SAD値Sminより小さいと判別したときには、ステップS37に進み、SAD値保持部1643に保持される最小SAD値Sminの情報およびその位置情報(縮小面参照ベクトル)の更新がなされる。
また、ステップS36で、算出されたSAD値Sinが最小SAD値Sminより大きいと判別したときには、ステップS37の保持情報の更新処理は行わずにステップS38に進み、マッチング処理部163は、サーチ範囲の全ての縮小面参照ブロックの位置(縮小面参照ベクトル)でマッチング処理を終了したか否か判別し、未だ、サーチ範囲においては、未処理の参照ブロックがあると判別したときには、ステップS32に戻り、前述したステップS32以降の処理を繰り返す。
また、マッチング処理部163は、ステップS38で、サーチ範囲の全ての縮小面参照ブロックの位置(縮小面参照ベクトル)でマッチング処理を終了したと判別したときには、その旨を動きベクトル算出部164に伝える。
動きベクトル算出部164では、これを受けて、SAD値保持部1643に保持される最小SAD値Sminの位置情報(縮小面参照ベクトル)を、コントロール部165に出力する(ステップS39)。
以上で、この例における縮小面におけるブロックマッチング処理を終了する。
次に、基底面におけるブロックマッチング処理時の流れの例である図30および図31のフローチャートについて説明する。
はじめに、動きベクトル算出部164のSAD値保持部1643の最小SAD値Sminの初期値を設定する(ステップS41)。この最小SAD値Sminの初期値としては、例えば、画素の差分の最大値が設定される。
次に、マッチング処理部163では、基底面における参照ベクトル(Vx,Vy)を設定して、SAD値を計算する基底面参照ブロック位置を設定し(ステップS42)、設定した基底面参照ブロックの画素データを、参照ブロックバッファ部162から読み込む(ステップS43)。
そして、ターゲットブロックバッファ部161から基底面ターゲットブロックの画素データを読み込んで、基底面ターゲットブロックおよび基底面参照ブロックの各画素データの差分の絶対値の総和、つまり、SAD値を求め、求めたSAD値を動きベクトル算出部164に送出する(ステップS44)。
動きベクトル算出部164では、SAD値書き込み部1641により、そのSAD値をラインメモリ1647に書き込む(ステップS45)。そして、動きベクトル算出部164では、SAD値比較部1642が、マッチング処理部163で算出されたSAD値Sinと、SAD値保持部1643に保持されている最小SAD値Sminとを比較して、算出されたSAD値Sinが、それまで保持されている最小SAD値Sminよりも小さいか否か判別する(ステップS46)。
このステップS46で、算出されたSAD値Sinが最小SAD値Sminより小さいと判別したときには、ステップS47に進み、SAD値保持部1643に保持される最小SAD値Sminの情報および当該最小SAD値Sminを呈する参照ブロック位置の1ピクセル上および1ピクセル左の位置の参照ブロックのSAD値およびその位置情報(基底面参照ベクトル)の更新がなされる。
すなわち、SAD値比較部1642は、算出されたSAD値Sinが最小SAD値Sminより小さい旨の比較結果の情報DETをSAD値書き込み部1641に送る。すると、SAD値書き込み部1641は、当該算出されたSAD値Sinおよびその位置情報(基底面参照ベクトル)を、新たな最小SAD値Sminの情報としてSAD値保持部1643に送ると共に、図27(B)から分かるように、ラインメモリ1647の最も古いSAD値およびその位置情報(基底面参照ベクトル)と、最も新しいSAD値およびその位置情報(基底面参照ベクトル)とを、最小SAD値の位置の1ピクセル上の位置の基底面参照ブロックのSAD値Sy1の情報および1ピクセル左の位置の基底面参照ブロックのSAD値Sx1の情報として、SAD値保持部1643に送る。SAD値保持部1643は、受け取った新たな最小SAD値Sminの情報および1ピクセル上の位置の基底面参照ブロックのSAD値Sy1の情報および1ピクセル左の位置の基底面参照ブロックのSAD値Sx1の情報により、それぞれ対応する保持情報を更新する。
そして、ステップ47の次には、図31のステップS51に進む。また、ステップS46で、算出されたSAD値Sinが最小SAD値Sminより大きいと判別したときには、ステップS47の保持情報の更新処理は行わずにステップS51に進む。
ステップS51では、SAD値書き込み部1641は、算出されたSAD値Sinについての位置情報(参照ベクトル)の指す位置が、最小SAD値Sminとして保持されている基底面参照ブロックの位置の1ピクセル下の基底面参照ブロックの位置であるか否か判別し、1ピクセル下の基底面参照ブロックの位置であると判別したときには、算出されたSAD値Sinおよびその位置情報(参照ベクトル)をSAD値保持部1643に送る。SAD値保持部1643は、受け取ったSAD値およびその位置情報により、前記1ピクセル下の位置の基底面参照ブロックについての近傍SAD値Sy2の保持情報を更新する(ステップS52)。
ステップS51で、算出されたSAD値Sinについての位置情報(基底面参照ベクトル)の指す位置が、最小SAD値Sminとして保持されている基底面参照ブロックの位置の1ピクセル下の基底面参照ブロックの位置でないと判別したときには、SAD値書き込み部1641は、算出されたSAD値Sinについての位置情報(基底面参照ベクトル)の指す位置が、最小SAD値Sminとして保持されている基底面参照ブロックの位置の1ピクセル下の基底面参照ブロックの位置であるか否か判別する(ステップS53)。
このステップS53で、算出されたSAD値Sinについての位置情報(基底面参照ベクトル)の指す位置が、最小SAD値Sminとして保持されている基底面参照ブロックの位置の1ピクセル右の基底面参照ブロックの位置であると判別したときには、SAD値書き込み部1641は、算出されたSAD値Sinおよびその位置情報(基底面参照ベクトル)をSAD値保持部1643に送る。SAD値保持部1643は、受け取ったSAD値およびその位置情報により、前記1ピクセル右の位置の基底面参照ブロックについての近傍SAD値Sx2の保持情報を更新する(ステップS54)。
ステップS53で、算出されたSAD値Sinについての位置情報(基底面参照ベクトル)の指す位置が、最小SAD値Sminとして保持されている基底面参照ブロックの位置の1ピクセル右の基底面参照ブロックの位置でないと判別したときには、SAD値書き込み部1641は、算出されたSAD値Sinおよびその位置情報(基底面参照ベクトル)は、ラインメモリ1647にのみ書き込み(前述のステップS45)、SAD値保持部1643に送らない。
そして、マッチング処理部163は、サーチ範囲の全ての基底面参照ブロックの位置(参照ベクトル)でマッチング処理を終了したか否か判別し(ステップS55)、未だ、サーチ範囲においては、未処理の基底面参照ブロックがあると判別したときには、図30のステップS42に戻り、前述したステップS42以降の処理を繰り返す。
また、マッチング処理部163は、ステップS45で、サーチ範囲の全ての基底面参照ブロックの位置(基底面参照ベクトル)でマッチング処理を終了したと判別したときには、その旨を動きベクトル算出部164に伝える。
動きベクトル算出部164では、これを受けて、X方向(水平方向)近傍値抽出部1644およびY方向(垂直方向)近傍値抽出部1645が、SAD値保持部1643に保持された、前記検出した最小のSAD値Sminとその近傍SAD値Sx1、Sx2、Sy1、Sy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部1646に送る。これを受けた二次曲線近似補間処理部1646は、二次曲線による補間を、X方向およびY方向の2回行い、前述したようにして、サブピクセル精度の高精度の動きベクトルを算出する(ステップS56)。以上で、1枚の基底面参照フレームについての第2の例のブロックマッチング処理を終了する。
以上のように、この第1の例においては、算出された全てのSAD値を保持するSADテーブルを保持することなく、SADテーブルの1ライン分を設けると共に、SAD値書き込み部1641に1画素分のSAD値を保持しておくだけで、補間処理によるサブピクセル精度の動きベクトル検出を行うことができる。
この第1の例の方法は、従来のSADテーブルTBLのすべてを保持する手法と比べて、ブロックマッチング回数は同じであるため、処理時間は変わらず、ハードウエア規模を削減できるという効果を奏する。
なお、上述した第1の例の説明においては、SAD値比較部1642は、マッチング処理部163からの算出されたSAD値Sinと、SAD値保持部163に保持されている最小SAD値Sminとを比較するようにしたが、SAD値比較部1642が最小SAD値の保持部を備え、その保持した最小SAD値と、算出されたSAD値Sinとを比較し、算出されたSinの方が小さいときには、保持した最小SAD値を更新すると共に、その位置情報と共に、SAD値書き込み部1641を通じてSAD値保持部1643に送って、SAD値保持部1643の最小SAD値保持部に保持させるようにしても良い。
<実施形態の動きベクトル算出部164の第2の例>
この動きベクトル算出部164の第2の例においては、前記第1の例の場合のラインメモリ1647も省略して、より、ハードウエア規模の削減を図るようにした例である。
この動きベクトル算出部164の第2の例においては、前記第1の例の場合のラインメモリ1647も省略して、より、ハードウエア規模の削減を図るようにした例である。
この第2の例においては、サーチ範囲における参照ブロックのSAD値の最小値Sminおよびその位置情報(参照ベクトル)の検出および保持は、上述した第1の例と全く同様に行う。しかし、近傍SAD値およびその位置情報の取得および保持に関しては、第1の例のように、SAD値Sminの検出時と同時には行わず、検出された最小SAD値Sminの位置情報を、マッチング処理部163に返して、マッチング処理部163で、最小SAD値Sminの近傍4点位置の参照ブロックについてのSAD値を再度、算出して、動きベクトル算出部164に供給するようにする。
動きベクトル算出部164では、当該マッチング処理部163からの再度のブロックマッチング処理により算出された前記近傍4点位置のSAD値およびその位置情報(参照ベクトル)を受け取って、SAD値保持部1643のそれぞれの保持部に格納するようにする。
この動きベクトル算出部164の第2の例のハードウエア構成例を、図32に示す。すなわち、この動きベクトル算出部164の第3の例においては、第1の例のラインメモリ1647は備えずに、図32に示すように、SAD値書き込み部1641と、SAD値比較部1642と、SAD値保持部1643と、X方向(水平方向)近傍値抽出部1644およびY方向(垂直方向)近傍値抽出部1645と、二次曲線近似補間処理部1646とを備えてなる。
この第2の例においても、X方向(水平方向)近傍値抽出部1644およびY方向(垂直方向)近傍値抽出部1645と、二次曲線近似補間処理部1646とは、前述した第1の例と同様の動作を行うが、SAD値書き込み部1641、SAD値比較部1642、SAD値保持部1643およびラインメモリ1647の部分は、前述の第1の例とは、異なる動作を行う。
SAD値保持部1643は、第1の例と同様に、最小SAD値Sminおよび近傍SAD値Sx1、Sx2、Sy1、Sy2の保持部(メモリ)を備える。そして、この第2の例においても、SAD値保持部1643は、その最小SAD値保持部からの最小SAD値SminをSAD値比較部1642に供給する。しかし、この第2の例においては、SAD値保持部1643は、第1の例とは異なり、近傍SAD値の位置情報を、SAD値書き込み部1641に供給することしない。
SAD値比較部1642は、この第2の例においても、マッチング処理部163からの当該時点で算出されたSAD値Sinと、SAD値保持部1643の最小SAD値保持部からの最小SAD値Sminとの両者を比較し、マッチング処理部163からの当該時点で算出されたSAD値Sinの方が小さいときには、当該時点で、そのSAD値を最小SAD値であるとして検出し、また、SAD値Sinの方が小さいときには、当該時点では、SAD値保持部1643の最小SAD値保持部からの最小SAD値Sminが未だ最小値であると検出する。そして、SAD値比較部1642は、その検出結果の情報DETをSAD値書き込み部1641およびSAD値保持部1643に供給する。
SAD値書き込み部1641は、前述例と同様に、マッチング処理部163からの算出されたSAD値Sinおよびその位置情報(参照ベクトル)を一時保持するための1画素分のバッファメモリを備える。そして、この第2の例においては、SAD値書き込み部1641は、SAD値比較部1642からの比較検出結果の情報DETが、SAD値Sinが最小値であることを示しているときには、マッチング処理部163からの参照ブロックの位置情報(参照ベクトル)と、当該参照ブロックのSAD値Sinとを、SAD値保持部1643に送る。
SAD値保持部1643は、SAD値比較部1642からの比較検出結果の情報DETにより、SAD値Sinが最小値であることを知り、SAD値書き込み部1641から送られてくる参照ブロックの位置情報(参照ベクトル)と、当該参照ブロックのSAD値Sinとを、最小SAD値保持部に格納する。
以上の処理を、サーチ範囲内の全ての参照ブロックについてマッチング処理部163で算出されたSAD値について、行う。そして、この第2の例においては、サーチ範囲内の全ての参照ブロックについてのSAD値の算出が終了したときに、SAD値保持部1643は、保持している最小SAD値Sminの位置情報(参照ベクトル)Vminを、マッチング処理部163に供給して、当該位置情報の近傍の4点の参照ブロックについてのSAD値の再算出を依頼する。
マッチング処理部163では、SAD値保持部1643から最小SAD値Sminの位置情報(参照ベクトル)Vminを含む近傍参照ブロックについてのSAD値の再算出の依頼を受け取ると、前記最小SAD値Sminの位置情報(参照ベクトル)Vminから、その近傍4点の近傍参照ブロックの位置を検出し、検出した位置の参照ブロックについて、SAD値の算出を行う。そして、算出したSAD値を、その位置情報(参照ベクトル)と共に、SAD値書き込み部1641に順次に供給する。
この場合、マッチング処理部163は、サーチ方向の順にブロックマッチング処理を行うので、近傍SAD値は、SAD値Sy1、Sx1、Sx2、Sy2の順に算出される。SAD値書き込み部1641は、受け取った再算出されたSAD値およびその位置情報(参照ベクトル)を、順次にSAD値保持部1643に供給する。
SAD値保持部1643は、この再算出されたSAD値およびその位置情報(参照ベクトル)を、順次に、対応する格納部に書き込んで保持する。
こうして、近傍参照ブロックについてのSAD値の再算出が終了すると、前述の第1の例と同様にして、X方向(水平方向)近傍値抽出部1644およびY方向(垂直方向)近傍値抽出部1645が、SAD値保持部1643に保持された、前記検出した最小のSAD値Sminとその近傍SAD値Sx1、Sx2、Sy1、Sy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部1646に送る。これを受けた二次曲線近似補間処理部1646は、二次曲線による補間を、X方向およびY方向の2回行い、前述したようにして、サブピクセル精度の高精度の動きベクトルを算出する。
以上のようにして、第2の例においては、SADテーブルTBLやラインメモリを用いずに、サブピクセル精度の動きベクトルの検出ができる。
この第2の例における縮小面でのブロックマッチング処理時の流れの例は、ラインメモリ1647への書き込みを行わない点を除いて、図29に示した第1の例の場合と同様であるので、ここでは、説明を省略する。そして、この第2の例における基底面でのブロックマッチング処理時の流れの例を、図33のフローチャートを参照しながら説明する。
はじめに、動きベクトル算出部164のSAD値保持部1643の最小SAD値Sminの初期値を設定する(ステップS61)。この最小SAD値Sminの初期値としては、例えば、画素の差分の最大値が設定される。
次に、マッチング処理部163では、基底面での参照ベクトル(Vx,Vy)を設定して、SAD値を計算する基底面参照ブロック位置を設定し(ステップS62)、設定した基底面参照ブロックの画素データを、参照ブロックバッファ部162から読み込む(ステップS63)と共に、ターゲットブロックバッファ部161から基底面ターゲットブロックの画素データを読み込んで、基底面ターゲットブロックおよび基底面参照ブロックの各画素データの差分の絶対値の総和、つまり、SAD値を求め、求めたSAD値を動きベクトル算出部164に送出する(ステップS64)。
動きベクトル算出部164では、SAD値比較部1642が、マッチング処理部163で算出されたSAD値Sinと、SAD値保持部1643に保持されている最小SAD値Sminとを比較して、算出されたSAD値Sinが、それまで保持されている最小SAD値Sminよりも小さいか否か判別する(ステップS65)。
このステップS65で、算出されたSAD値Sinが最小SAD値Sminより小さいと判別したときには、ステップS66に進み、SAD値保持部1643に保持される最小SAD値Sminおよびその位置情報の更新がなされる。
すなわち、SAD値比較部1642は、算出されたSAD値Sinが最小SAD値Sminより小さい旨の比較結果の情報DETをSAD値書き込み部1641に送る。すると、SAD値書き込み部1641は、当該算出されたSAD値Sinおよびその位置情報(基底面参照ベクトル)を、新たな最小SAD値Sminの情報としてSAD値保持部1643に送る。SAD値保持部1643は、保持すべき最小SAD値Sminおよびその位置情報を、受け取った新たなSAD値Sinおよびその位置情報に更新する。
ステップS66の後には、ステップS67に進む。また、ステップS65で、算出されたSAD値Sinが最小SAD値Sminより大きいと判別したときには、ステップS66の保持情報の更新処理は行わずにステップS67に進む。
ステップS67では、マッチング処理部163は、サーチ範囲の全ての基底面参照ブロックの位置(基底面参照ベクトル)でマッチング処理を終了したか否か判別し、未だ、サーチ範囲においては、未処理の基底面参照ブロックがあると判別したときには、ステップS62に戻り、前述したステップS62以降の処理を繰り返す。
また、マッチング処理部163は、ステップS67で、サーチ範囲の全ての基底面参照ブロックの位置(参照ベクトル)でマッチング処理を終了したと判別したときには、SAD値保持部1643からの最小SAD値Sminの位置情報を受け取り、その近傍4点の位置の基底面参照ブロックについてのSAD値の再算出を行い、再算出した近傍SAD値をSAD値書き込み部1641を通じてSAD値保持部1643に供給し、保持させるようにする(ステップS68)。
次に、動きベクトル算出部164では、X方向(水平方向)近傍値抽出部1644およびY方向(垂直方向)近傍値抽出部1645が、SAD値保持部1643に保持された、前記検出した最小のSAD値Sminとその近傍SAD値Sx1、Sx2、Sy1、Sy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部1646に送る。これを受けた二次曲線近似補間処理部1646は、二次曲線による補間を、X方向およびY方向の2回行い、前述したようにして、サブピクセル精度の高精度の動きベクトルを算出する(ステップS69)。以上で、1枚の参照フレームについての第2の例の基底面でのブロックマッチング処理を終了する。
この第2の例においては、上述した第1の例に比較して、SAD値を再算出する分だけ、処理時間が増加するが、ラインメモリをも必要としないので、回路規模を、第1の例よりも削減することができる。しかも、SAD値の再算出は、近傍SAD値のみであるので、上述の例では、高々4回であるので、処理時間の増加は少ない。
なお、上述した第2の例の説明では、最小SAD値は、検出しながらSAD値保持部1643に保持するようにしたが、SAD値比較部1642において、最小SAD値を呈する参照ブロックの位置情報(参照ベクトル)を検出して保持するように構成し、1回目のブロックマッチングが終了したら、SAD値比較部1642から、当該最小SAD値の位置情報をマッチング処理部163に供給するようにしてもよい。
その場合には、マッチング処理部163でのSAD値の再算出においては、近傍4点のSAD値に加えて、最小SAD値をも再算出するようにする。この場合には、SAD値の再算出回数が5回となり、1回増加するが、1回目のブロックマッチングでは、SAD値比較部1642のみが動作すればよく、SAD値書き込み部1641およびSAD値保持部1643は、再算出されたSAD値を保持するように動作すればよいので、処理動作が簡略化されるというメリットがある。
また、動き検出および動き補償部16での処理は、ターゲットフレームにおいて設定された複数個のターゲットブロックについて、並列および並行して、実行することができる。その場合には、以上説明した動き検出および動き補償部16のハードウエアの系を、当該並列・並行処理するターゲットブロック数に応じた数だけ、設ける必要がある。
従来例のように、SADテーブルTBLを生成する方法の場合には、当該ターゲットブロック数分だけのSADテーブルを生成する必要があり、非常に大きなメモリが必要となってしまう。しかし、第1の例では、1ターゲットブロック当たりについて、SADテーブルの1ライン分でよく、メモリ容量を非常に少なくすることができる。さらに、第2の例の場合には、ラインメモリをも必要としないので、メモリ容量の大幅な削減をすることができる。
[階層化ブロックマッチング処理の流れの例]
次に、図34および図35に、この実施の形態における動き検出・動き補償部16での階層化ブロックマッチング処理の動作例のフローチャートを示す。
次に、図34および図35に、この実施の形態における動き検出・動き補償部16での階層化ブロックマッチング処理の動作例のフローチャートを示す。
なお、この図34および図35に示す処理の流れは、前述したマッチング処理部163、動き算出部164の処理例の流れとしての説明と、一部重複するものとなるが、この実施の形態の動作を、より理解し易くするために、説明するものである。
はじめに、動き検出・動き補償部16において、ターゲットブロックバッファ部161から、ターゲットブロックの縮小画、つまり、縮小面ターゲットブロックを読み込む(図34のステップS71)。次に、動きベクトル算出部164のSAD値保持部1643の最小SAD値Sminの初期値として、縮小面最小SAD値の初期値を設定する(ステップS72)。この縮小面最小SAD値Sminの初期値としては、例えば、画素の差分の最大値が設定される。
次に、マッチング処理部163では、縮小面サーチ範囲を設定すると共に、設定した縮小サーチ範囲において、縮小面参照ベクトル(Vx/n,Vy/n:1/nは縮小倍率)を設定して、SAD値を計算する縮小面参照ブロック位置を設定する(ステップS73)。そして、設定した縮小面参照ブロックの画素データを、参照ブロックバッファ部162から読み込み(ステップS74)、縮小面ターゲットブロックおよび縮小面参照ブロックの各画素データの差分の絶対値の総和、つまり、縮小面SAD値を求め、求めた縮小面SAD値を動きベクトル算出部164に送出する(ステップS75)。
動きベクトル算出部164では、SAD値比較部1642が、マッチング処理部163で算出された縮小面SAD値Sinと、SAD値保持部1643に保持されている縮小面最小SAD値Sminとを比較して、算出された縮小面SAD値Sinが、それまで保持されている縮小面最小SAD値Sminよりも小さいか否か判別する(ステップS76)。
このステップS76で、算出された縮小面SAD値Sinが縮小面最小SAD値Sminより小さいと判別したときには、ステップS77に進み、SAD値保持部1643に保持される縮小面最小SAD値Sminおよびその位置情報の更新がなされる。
すなわち、SAD値比較部1642は、算出された縮小面SAD値Sinが縮小面最小SAD値Sminより小さい旨の比較結果の情報DETをSAD値書き込み部1641に送る。すると、SAD値書き込み部1641は、当該算出された縮小面SAD値Sinおよびその位置情報(縮小面参照ベクトル)を、新たな縮小面最小SAD値Sminの情報としてSAD値保持部1643に送る。SAD値保持部1643は、保持すべき縮小面最小SAD値Sminおよびその位置情報を、受け取った新たな縮小面SAD値Sinおよびその位置情報に更新する。
ステップS77の後には、ステップS78に進む。また、ステップS76で、算出された縮小面SAD値Sinが縮小面最小SAD値Sminより大きいと判別したときには、ステップS77の保持情報の更新処理は行わずにステップS78に進む。
ステップS78では、マッチング処理部163は、縮小面サーチ範囲の全ての縮小面参照ブロックの位置(縮小面参照ベクトル)でマッチング処理を終了したか否か判別し、未だ、縮小面サーチ範囲においては、未処理の縮小面参照ブロックがあると判別したときには、ステップS73に戻り、前述したステップS73以降の処理を繰り返す。
また、マッチング処理部163は、ステップS78で、縮小面サーチ範囲の全ての縮小面参照ブロックの位置(縮小面参照ベクトル)でマッチング処理を終了したと判別したときには、SAD値保持部1643からの縮小面最小SAD値Sminの位置情報(縮小面動きベクトル)を受け取り、受け取った縮小面動きベクトルを、縮小倍率の逆数倍、すなわち、n倍したベクトルが、基底面ターゲットフレームにおいて指し示す位置座標を中心とした位置に基底面ターゲットブロックを設定するとともに、前記n倍したベクトルが指し示す位置座標を中心とした比較的狭い範囲として、基底面サーチ範囲を、基底面ターゲットフレームに設定し(ステップS79)、ターゲットブロックバッファ部161から、基底面ターゲットブロックの画素データを読み込む(ステップS80)。
そして、次に、動きベクトル算出部164のSAD値保持部1643の最小SAD値Sminの初期値として、基底面最小SAD値の初期値を設定する(図35のステップS81)。この基底面最小SAD値Sminの初期値としては、例えば、画素の差分の最大値が設定される。
次に、マッチング処理部163では、ステップS79で設定した基底面縮小サーチ範囲において、基底面参照ベクトル(Vx,Vy)を設定して、SAD値を計算する基底面参照ブロック位置を設定する(ステップS82)。そして、設定した基底面参照ブロックの画素データを、参照ブロックバッファ部162から読み込み(ステップS83)、基底面ターゲットブロックおよび基底面参照ブロックの各画素データの差分の絶対値の総和、つまり、基底面SAD値を求め、求めた基底面SAD値を動きベクトル算出部164に送出する(ステップS84)。
動きベクトル算出部164では、SAD値比較部1642が、マッチング処理部163で算出された基底面SAD値Sinと、SAD値保持部1643に保持されている基底面最小SAD値Sminとを比較して、算出された基底面SAD値Sinが、それまで保持されている基底面最小SAD値Sminよりも小さいか否か判別する(ステップS85)。
このステップS85で、算出された基底面SAD値Sinが基底面最小SAD値Sminより小さいと判別したときには、ステップS86に進み、SAD値保持部1643に保持される基底面最小SAD値Sminおよびその位置情報の更新がなされる。
すなわち、SAD値比較部1642は、算出された基底面SAD値Sinが基底面最小SAD値Sminより小さい旨の比較結果の情報DETをSAD値書き込み部1641に送る。すると、SAD値書き込み部1641は、当該算出された基底面SAD値Sinおよびその位置情報(参照ベクトル)を、新たな基底面最小SAD値Sminの情報としてSAD値保持部1643に送る。SAD値保持部1643は、保持すべき基底面最小SAD値Sminおよびその位置情報を、受け取った新たな基底面SAD値Sinおよびその位置情報に更新する。
ステップS86の後には、ステップS87に進む。また、ステップS85で、算出された基底面SAD値Sinが基底面最小SAD値Sminより大きいと判別したときには、ステップS86の保持情報の更新処理は行わずにステップS87に進む。
ステップS87では、マッチング処理部163は、基底面サーチ範囲の全ての基底面参照ブロックの位置(基底面参照ベクトル)でマッチング処理を終了したか否か判別し、未だ、基底面サーチ範囲においては、未処理の基底面参照ブロックがあると判別したときには、ステップS82に戻り、前述したステップS82以降の処理を繰り返す。
また、マッチング処理部163は、ステップS87で、基底面サーチ範囲の全ての基底面参照ブロックの位置(基底面参照ベクトル)でマッチング処理を終了したと判別したときには、SAD値保持部1643からの基底面最小SAD値Sminの位置情報(基底面動きベクトル)を受け取り、その近傍4点の位置の基底面参照ブロックについての基底面SAD値の再算出を行い、再算出した近傍基底面SAD値をSAD値書き込み部1641を通じてSAD値保持部1643に供給し、保持させるようにする(ステップS88)。
次に、動きベクトル算出部164では、X方向(水平方向)近傍値抽出部1644およびY方向(垂直方向)近傍値抽出部1645が、SAD値保持部1643に保持された、前記検出した最小の基底面SAD値Sminとその近傍基底面SAD値Sx1、Sx2、Sy1、Sy2およびそれらの位置情報を読み出し、二次曲線近似補間処理部1646に送る。これを受けた二次曲線近似補間処理部1646は、二次曲線による補間を、X方向およびY方向の2回行い、前述したようにして、サブピクセル精度の高精度の基底面動きベクトルを算出する(ステップS89)。以上で、1枚の参照フレームについてのこの例のブロックマッチング処理を終了する。
次に、この実施の形態による階層化ブロックマッチング手法を用いた画像処理方法の効果を、具体例を挙げて説明する。
図36に、上述の実施の形態の説明で用いた基底面、縮小面での、参照ブロック、サーチ範囲、マッチング処理範囲の具体例を示す。図36の例は、水平方向および垂直方向の縮小倍率1/nは、n=4に設定した場合である。
比較例として、図36(A)および(B)に示すように、例えば、縮小画像を用いない参照ブロック108は、横(水平)×縦(垂直)=32×32ピクセルとし、また、サーチ範囲106は、横(水平)×縦(垂直)=144×64ピクセル、マッチング処理範囲110は、横(水平)×縦(垂直)=176×96ピクセルとする。
すると、上述した実施の形態において、水平方向および垂直方向に、1/n=1/4に縮小された縮小面では、図34(C)および(D)に示すように、縮小面参照ブロック139は、横(水平)×縦(垂直)=8×8ピクセル、縮小面サーチ範囲137は、横(水平)×縦(垂直)=36×16ピクセル、縮小面マッチング処理範囲143は、横(水平)×縦(垂直)=44×24ピクセルとなる。
水平方向および垂直方向に、1/4に縮小された縮小面で、ブロックマッチングを行った場合、縮小面動きベクトルは、4ピクセル精度の動きベクトルであり、単純に4倍しただけでは、1ピクセル精度の動きベクトルに対して誤差が生じる。すなわち、基底面での画素が図37で丸印(○)で示すようなものとした場合、基底面でのマッチング処理点148は、当該基底面の全ての画素が対象となるが、1/4に縮小された縮小面で、ブロックマッチングを行う場合のマッチング処理点は、図37において、黒丸で示す4ピクセル単位のマッチング処理点147となっているからである。
しかし、少なくとも、1ピクセル精度の動きベクトルは、縮小面動きベクトルが指し示す縮小面でのマッチング処理点の周囲、4ピクセル範囲以内に存在するであろうことは予測できる。
そこで、この実施の形態では、算出された縮小面動きベクトルを元に基底面サーチ範囲を定める基底面マッチングでは、縮小面動きベクトルを縮小倍率の逆数である4倍した参照ベクトルが指し示すピクセル位置を中心に、基底面ターゲットブロックを設定するとともに、4ピクセル分のサーチ範囲(基底面サーチ範囲140)を決定して、基底面ブロックマッチングを行い、再度動きベクトルを算出する。
したがって、図36(E)および(F)に示すように、基底面参照ブロック142は、横(水平)×縦(垂直)=32×32ピクセル、基底面サーチ範囲140は、横(水平)×縦(垂直)=4×4ピクセル、基底面マッチング処理範囲144は、横(水平)×縦(垂直)=40×40ピクセルとなる。
図38に、この実施の形態のように、縮小面マッチングと、基底面マッチングの2階層マッチングを行う場合において、SADテーブルを使用すると仮定した場合における、基底面、縮小面での、SADテーブルのサイズを示す。なお、図38の例は、図36に示した具体例に対応したものである。
縮小する前の144×64のサーチ範囲(図34(B)参照)の場合におけるSADテーブルTBLは、図38(A)に示すように、145×65点である。
これに対して、36×16の縮小面サーチ範囲(図36(D)参照)の場合における縮小面SADテーブルは、図38(B)に示すように、37点×17点となる。
また、4×4の基底面サーチ範囲(図36(F)参照)の場合における基底面SADテーブルは5点×5点となる。
したがって、階層マッチングを施さない場合のマッチング処理回数は145×65=9425回であるのに対し、階層マッチングを適用した場合のマッチング回数は37×17+5×5=654回となり、処理時間を大幅に短縮できることが分かる。
そして、前述した動きベクトル検出方法の第1の例の場合におけるラインメモリは、縮小面SADテーブルの1ライン分でよいので、37個のSAD値およびその位置情報を格納できるものでよく、SADテーブルTBLの場合の、9425個のSAD値およびその位置情報を格納するメモリに対して非常に小さいメモリでよくなる。
また、前述した動きベクトル算出部164の構成例の第2の例の場合には、37個のSAD値およびその位置情報を格納する縮小面SADテーブルさえも不要となるので、さらに回路規模を小さくすることができる。
以上のようにして、上記の実施の形態によれば、階層化したマッチング処理を行った後、基底面において補間処理をすることにより、広いサーチ範囲で、サブピクセル精度の動きベクトル検出を行うことが可能になる。
なお、図39に、この実施形態の階層化ブロックマッチング方式における、縮小面および基底面におけるターゲットブロックサイズおよびマッチング処理範囲の例を示す。この図39の例は、縮小面ターゲットブロック133のサイズを、図39(A)に示すように、横×縦=8×8画素で固定値としている。このため、縮小面マッチング処理範囲143は、図39(B)に示すように、横×縦=44×24画素分となる。
そして、基底面ターゲットブロック131のサイズ、基底面マッチング処理範囲144のサイズおよび基底面参照ベクトル数は、図39(C)に示すようなものとなる。この図39(C)は、基底面に対する縮小面の縮小倍率が1/2、1/4、1/8の場合の例のそれぞれにおける基底面ターゲットブロック131のサイズ、基底面マッチング処理範囲144のサイズおよび基底面参照ベクトル数を示している。
[静止画NR処理時におけるメモリ容量削減および効率的なメモリアクセス]
上述したように、この実施形態では、静止画NR処理、および動画NR処理に対応している。動画NR処理では、精度よりもリアルタイム性、すなわちスピードが要求されるのに対して、静止画NR処理は多少処理時間がかかっても、ノイズの取れた綺麗な画像が求められる。
上述したように、この実施形態では、静止画NR処理、および動画NR処理に対応している。動画NR処理では、精度よりもリアルタイム性、すなわちスピードが要求されるのに対して、静止画NR処理は多少処理時間がかかっても、ノイズの取れた綺麗な画像が求められる。
前述したように、画像の重ね合わせ方法をシステムアーキテクトの観点から大きく分類すると、静止画撮影時の高速連写中に、リアルタイムに画像の重ね合わせを行う手法である撮影中加算法と、前記高速連写後に、すべての参照画像が揃ってから画像の重ね合わせを行う手法である撮影後加算法の、2種類がある。十分な処理時間をかけてNR処理を行うには、撮影中加算法ではなく、撮影後加算法の方が望ましく、この実施形態では、撮影後加算法を採っている。
しかしながら、撮影後加算法は、参照画像を画像メモリに保持しておかなくてはならず、重ね合わせ枚数が増えるほど、画像メモリとして大容量が必要になるという問題がある。
この実施形態では、この問題点にかんがみ、静止画NR処理時に、撮影後加算法を用いるに当たって、画像メモリ部4の容量をできるだけ削減すると共に、効率的にメモリアクセスを行うことができるように工夫している。以下、この点について説明する。
<メモリアクセス時のデータフォーマット>
先ず、この実施形態における画像メモリ部4に対するメモリアクセス時のデータフォーマットについて説明する。
先ず、この実施形態における画像メモリ部4に対するメモリアクセス時のデータフォーマットについて説明する。
図13および図16のブロック図に示したように、動き検出・動き補償部16および画像重ね合わせ部17とは、それぞれバス・インターフェース部21,22,23,24を介してシステムバス2に接続されている。
この実施形態におけるシステムバス2は、バス幅は、例えば64ビットであり、バースト長(所定の複数画素データ単位でバースト転送を連続して行える回数)は、例えば最大16バーストとされている。
動き検出・動き補償部16のターゲットブロックバッファ部161および参照ブロックバッファ部162からの読み込み要求に応じて、バス・インターフェース部21,22にて、画像メモリ部4の所定のメモリに対して、スタートアドレス、バースト長、その他のバスプロトコルを生成して、システムバス2(AXIインターコネクト)にアクセスしている。
この実施形態の撮像装置で使用している画像データは、1画素が、輝度YとクロマC(Cr,Cb)とからなる。そして、Y:Cr:Cb=4:2:2のフォーマットであり、輝度Y、クロマC(Cr,Cb)は、共に符号なしの8ビット(Cr=4ビット、Cb=4ビット)であって、4ビットのメモリアクセス幅に、YC4画素分が並んでいるものである。システムバス2のデータ処理単位は、64ビットであり、1画素分のYC画素データが16ビットであるので、4画素分になる。
図1に示したようなグローバルなシステムバス2に、撮像装置の各処理部がつながっている場合、バス帯域と、各処理部で共有している画像メモリ部のメモリコントローラの処理単位とは、密接な関係がある。
ところで、上述したように、この実施形態では、メモリコントローラ(図示は省略)が処理できる最大バースト長は16バーストである。例えば、同じデータサイズの画像データを、画像メモリ部4のメモリに書き込む場合でも、16バーストの転送をたくさん使える方が、バスのアービトレーション回数も減り、メモリコントローラの処理の効率が良く、バス帯域を削減できる。
したがって、この実施形態では、YC画素データの4画素分のデータ(64ビット)を16バーストでバスアクセスすると、効率が良い。これを画素数に換算すると、4×16=64画素分のデータになる。
そこで、この実施形態では、図40に示すように、1画面分の画像の水平方向を、1バースト転送(64画素)単位で分割して、1画面分の画像を、縦長の分割ブロックの画像単位(以下、短冊と称する)の複数個からなるものとする。そして、画像データを、この短冊単位で、画像メモリ部4に書き込み、また、画像メモリ部4から読み出しするメモリアクセス方式(以下、短冊アクセス方式と称する)を採る。
なお、水平方向の画像データが64画素で割り切れない場合は、図40で、影線を付して示すように、水平方向の右端にダミー領域を設けて、このダミー領域151に、例えば黒や白の画素データをダミーデータとして付加し、水平方向の画素数が、64の倍数になるようにしている。
従来のラスタースキャン方式は、画像メモリへのアクセスに対して、水平方向にアドレスが連続しているため、1ラインずつデータを読むのに適しているのに対して、短冊アクセス方式は、1バースト転送(64画素)単位で垂直方向にアドレスがインクリメントするため、水平方向が64画素以内であるブロック状のデータを読むのに適している。
例えば、64画素×64ラインの短冊形式のブロックを読み込む際には、画像メモリ部4のメモリコントローラ(図示せず)は、YC画素データの4画素分のデータ(64ビット)を16バーストでバスアクセスすると、当該16バーストで、4×16=64画素分のデータになるので、水平方向の64画素からなる1ライン目のアドレスの設定以降は、垂直方向にアドレスをインクリメントしていくだけで、残り63ライン分の画素データのアドレス設定をすることが可能である。
この実施形態の画像メモリ部4には、このような短冊アクセス方式を実行するためのアドレス生成部(図示は省略)を備えるメモリコントローラ(図示は省略)が設けられている。
この実施形態では、動き検出・動き補償部16が、上記の短冊アクセス方式で画像メモリ部4にアクセスできるように、その前段にある、画像補正・解像度変換部15においても、短冊アクセス方式のアクセスに対応している。また、この実施形態では、静止画撮影時の静止画NR処理においては、高速連写撮影して得た複数枚の撮像画像を、圧縮して画像メモリ部4に記憶しておき、必要に応じて伸長デコードして読み出して、動き検出・動き補償部16でのブロックマッチング処理ができるようにするため、静止画コーデック部19においても、短冊アクセス方式に対応している。
図41(A)は、1画面分の画像が、横×縦=640×480画素からなる例における短冊単位の分割例である。この例においては、1画面分の画像が、水平方向の64画素単位で分割される結果、10個の短冊T0〜T9に分けられている。
前述した図39に示した縮小倍率1/4の場合では、1つの短冊の中には、図41(B)に示すように、32×32画素の基底面ターゲットブロックが、B0〜B29として示すように、水平方向に2個、垂直方向に15個、合計30個入っている。
画像メモリ部4から基底面ターゲットブロックを読み込むときは、短冊アクセス方式の利点を活かすために、この実施形態では、64画素×1ラインずつアクセスし、バス効率を上げるようにしている。
したがって、図42に示すように、縮小倍率1/2のときは、基底面ターゲットブロックは4個ずつ、縮小倍率1/4のときは、基底面ターゲットブロックは2個ずつ、縮小倍率1/8のときは、基底面ターゲットブロックは1個ずつ、バスアクセスしている。
短冊アクセス方式は、バス帯域という面だけでなく、上記の回路の内部処理においても、非常に有益な手法である。第一に、垂直方向のフィルタ処理等を行うための、内部ラインメモリのサイズを削減することができる。また、解像度変換処理のような、ブロック形式で処理を行う回路にとっては、ラスタースキャン形式から任意のブロックに変換するよりも、短冊形式から任意のブロック形式に変換した方が、効率が良いという利点がある。
<静止画撮影時の静止画NR処理における撮像画像の圧縮、伸長処理>
前述したように、この実施形態では、静止画撮影時の静止画NR処理における加算処理としては、撮影後加算処理を採用している。このため、静止画撮影時の静止画NR処理においては、全ての参照画像を、画像メモリ部4に保持しておく必要がある。すなわち、この実施形態では、シャッターボタンが押下されると、撮像装置では、高速連写により、2枚以上の複数枚の撮像画像が取り込まれ、画像メモリ部4に格納される。
前述したように、この実施形態では、静止画撮影時の静止画NR処理における加算処理としては、撮影後加算処理を採用している。このため、静止画撮影時の静止画NR処理においては、全ての参照画像を、画像メモリ部4に保持しておく必要がある。すなわち、この実施形態では、シャッターボタンが押下されると、撮像装置では、高速連写により、2枚以上の複数枚の撮像画像が取り込まれ、画像メモリ部4に格納される。
撮影中加算方式では、画像メモリ部4には、最大2フレーム分の参照画像を保持するだけでよいのに対して、撮影後加算方式では、それ以上の枚数の参照画像を画像メモリ部4に保持する必要がある。そこで、この実施形態では、画像メモリ部4の容量を削減するため、高速連写により取り込んだ撮像画像は、静止画コーデック部18で画像データ圧縮符号化して、画像メモリ部4に格納し、取り込んだ画像を参照画像として用いるときには、圧縮符号化されている画像データを伸長復号化して用いるようにする。
静止画撮影時の静止画NR処理の流れについては、図23および図24に示したフローチャートに概要を説明したが、この図23および図24に示したフローチャート中の幾つかのステップにおいて、画像データの圧縮符号化処理または伸長復号化処理がなされることになる。
図23のステップS1においては、シャッターボタン操作に基づく高速連写により取り込まれた複数枚の撮像画像が画像メモリ部4に書き込まれるが、その際、取り込まれた撮像画像の画像データは、静止画コーデック部18で圧縮符号化される。図43に、このときの画像データの流れを、点線で示す。
すなわち、撮像素子11からの撮像画像は、前処理部13でセンサー補正などの前処理がなされた後、RAW信号形式(カメラ信号処理を行う前のデータ形式)で、一旦、画像メモリ部4に格納される。
その後、撮影画像は、画像メモリ部4から短冊形式で読み出されてデータ変換部14でRAW信号からYC画素データに変化され、画像補正・解像度変換部15で画像補正、解像度変換などが行われた後、画像メモリ部4を介さずに、直接、静止画コーデック部18で、この例ではJPEG方式で圧縮符号化されて圧縮された状態で、画像メモリ部4に書き込まれる。したがって、ここでは、画像を圧縮する単位は、画像の1枚単位ではなく、短冊単位になる。高速連写時は、以上の手順が複数枚分、繰り返して行われて、画像メモリ部4には、当該複数枚の撮像画像データの圧縮データが格納保持される。
高速連写されて取り込まれた全ての撮像画像の圧縮符号化および画像メモリ部4への格納が終わったら、図23のステップS3の処理のうちのターゲット画像の設定処理を行う。図44に、このときの画像データの流れを示す。
すなわち、シャッターボタンが押下されてから最初に取り込まれた撮像画像の圧縮画像データが画像メモリ部4から短冊単位で読み出されて、静止画コーデック部19に供給され、伸長復号化される。伸長復号化された画像データは、短冊単位で基底面ターゲット画像Pbtとして、画像メモリ部4に書き込まれる。
そして、画像メモリ部4に書き込まれた、伸長復号化された基底面ターゲット画像Pbtの画像データは短冊単位で読み出されて、動き検出・動き補償部16を通じて画像重ね合わせ部17に供給され、図16に示した画像重ね合わせ部17の縮小面生成部174で縮小化される。そして、この縮小面生成部174からの縮小化されたターゲット画像が、縮小面ターゲット画像Prtとして、短冊単位で画像メモリ部4に書き込まれる。
以上のようにしてターゲット画像についての処理が終了した後、図23のステップS3の処理のうちの参照画像についての設定処理がなされる。このときの画像データの流れを、図45に示す。
すなわち、画像メモリ部4に格納されている圧縮符号化された複数枚の撮像画像のうち、ブロックマッチングの参照画像となる、2枚目の撮影画像が画像メモリ部4から短冊単位で読み出されて、静止画コーデック部18に供給され、伸長復号化される。伸長復号化された画像データは、短冊単位で基底面参照画像Pbrとして、画像メモリ部4に書き込まれる。
そして、画像メモリ部4に書き込まれた、伸長復号化された基底面参照画像Pbrの画像データは短冊単位で読み出されて、動き検出・動き補償部16を通じて画像重ね合わせ部17に供給され、図16に示した画像重ね合わせ部17の縮小面生成部174で縮小化される。そして、この縮小面生成部174からの縮小化された参照画像が、縮小面参照画像Prrとして、短冊単位で画像メモリ部4に書き込まれる。
次に、伸長復号化ターゲット画像と、伸長復号化した参照画像とで動き検出・動き補償を行う。これは、図23のステップS4〜ステップS9の処理に相当する。また、図34および図35のフローチャートに示した処理に対応する。図46に、このときの画像データの流れを示す。
先ず、縮小面ブロックマッチング処理を行う。すなわち、画像メモリ部4の縮小面ターゲット画像Prtから、設定された縮小面ターゲットブロックの画像データを読み出して、動き検出・動き補償部16のターゲットブロックバッファ部161に格納すると共に、縮小面参照画像Prrから、縮小面ターゲットブロックについてのサーチ範囲に対応する縮小面マッチング処理範囲を読み出して、参照ブロックバッファ部162に格納する。
そして、それぞれのバッファ部161および162から、縮小面ターゲットブロックおよび縮小面参照ブロックの画像データを読み出して、マッチング処理部163で、縮小面ブロックマッチング処理を行い、設定された縮小面ターゲットブロックについての縮小面動きベクトルの検出を行い、設定された縮小面ターゲットブロックについての縮小面動きベクトルを検出する。
次に、縮小面動きベクトルに基づいて、前述したようにして、基底面ターゲットブロックを設定すると共に、基底面サーチ範囲を設定し、基底面ターゲット画像Pbtから、設定された基底面ターゲットブロックを読み出してターゲットブロックバッファ161に格納すると共に、設定された基底面サーチ範囲に対応する基底面マッチング処理範囲を読み出し、参照ブロックバッファ部162に格納する。
そして、それぞれのバッファ部161および162から、基底面ターゲットブロックおよび基底面参照ブロックの画像データを読み出して、マッチング処理部163で、基底面ブロックマッチング処理を行い、動きベクトル算出部164で、設定された基底面ターゲットブロックについてのサブピクセル精度の基底面動きベクトルの検出を行う。
そして、動き検出・動き補償部16は、検出された基底面動きベクトルに基づいて、動き補償ブロックを基底面参照画像から読み出し、基底面ターゲットブロックと共に、画像重ね合わせ部17に供給する。画像重ね合わせ部17では、ブロック単位の画像の重ね合わせを行い、その結果のブロック単位の基底面NR画像Pbnrを、画像メモリ部4に貼る。また、画像重ね合わせ部17は、その縮小面生成部174で生成した縮小面NR画像Prnrも、画像メモリ部4に貼る。
以上の動作を、ターゲット画像の全てのターゲットブロックについて繰り返し行い、全てのターゲットブロックについてのブロックマッチングが終了したら、3枚目の画像を参照画像とすると共に、基底面NR画像Pbnrおよび縮小面NR画像Prnrを、ターゲット画像として(図24のステップS14)、上述と同様のブロックマッチング処理を繰り返し行う(図23のステップS4〜図24のステップS14)。そして、取り込んだ全ての画像についての処理が終了すると、最終的に得られる基底面NR画像Pbnrを、静止画コーデック部18で圧縮符号化して、記録再生装置部5の記録媒体に記録するようにする。
上述したように、この実施形態では、ターゲット画像と参照画像を重ね合わせたNR画像は、次の重ね合わせを行うときのターゲット画像になる。また、基底面ターゲットブロックは、ブロックマッチング処理が終わった後は、必要のないデータになる。
以上の特徴から、この実施形態において、画像重ね合わせ部17では、基底面ターゲットブロックと動き補償ブロックを重ね合わせたNR済みのブロックを、もとの基底面ターゲットブロックのあったアドレスに上書きしている。
例えば、図47(A),(B)に示すように、今、短冊T5のブロックB4をターゲットブロックとしたブロックマッチング処理をしているときは、短冊T0から短冊T4、および、ブロックB0からブロックB3は、全て、NR済みのブロックということになる。
以上のようにして、画像補正・解像度変換部15で短冊アクセス方式のメモリアクセスを行い、静止画についての圧縮符号化の処理単位も短冊の形式にすることで、画像補正・解像度変換部15から静止画コーデック部18に、画像メモリ部4を介さず、直接、画像データを転送することができ、高速連写画像を効率よく圧縮符号化して、画像メモリ部4に格納することができる。
<画像メモリ容量の削減>
次に、参照画像の伸長復号化時の、画像メモリ容量の削減について説明する。
次に、参照画像の伸長復号化時の、画像メモリ容量の削減について説明する。
この実施形態における静止画撮影時の静止画NR処理時においては、画像メモリ部4に圧縮符号化して取り込んだ画像について、ターゲット画像は全て伸長復号化するが、図48の画像データフローに示すように、参照画像については、マッチング処理に使用する短冊だけを伸長復号化することで、画像メモリ容量を削減している。すなわち、画像メモリ部4における伸長復号化された参照画像(基底面および縮小面)を格納する画像メモリの容量を、短冊単位に画像データを伸長復号化することにより、削減している。
このことについて、例を挙げて説明する。例えば、基底面ターゲット画像は、図49(A)に示すように、水平方向が64画素の短冊T0から短冊T9にまで分割されており、基底面参照画像は、図49(B)に示すように、同様に水平方向が64画素の短冊R0から短冊R9にまで分割されているとする。
今、短冊T4の中のターゲットブロックについてブロックマッチングを行っているとすると、基底面参照画像の短冊R0〜R9のうち、マッチング処理範囲としてアクセスする可能性のある短冊は、短冊R4を中心として、いくつかに限定することができる。
例えば、縮小倍率が1/4の場合を例にとると、縮小化して水平方向に44画素のマッチング処理範囲(図39(B)参照)を取るためには、基底面参照画像において、水平方向に176画素の画像データが必要である。したがって、図49(C)から分かるように、基底面参照画像は、図47(B)において塗りを付して示すように、短冊R4を中心に左右に、左右それぞれ2つずつの短冊R1,R2および短冊R3,R4が必要であり、この短冊R2〜R6の5つ分だけを伸長復号化すれば良いことになる。
次に、短冊T4に含まれるターゲットブロックのマッチング処理が全て終わり、図50(A)に示すように、短冊T5に含まれるターゲットブロックのマッチング処理に入った場合について考える。このとき、マッチング処理範囲を取るためには、図50(B)に示すように、短冊R5を中心に左右に2つずつの短冊R3〜R7が必要である。すなわち、短冊R3〜R6は、短冊T4に含まれるターゲットブロックのマッチング処理時に画像メモリ部4に既に格納されているので、新たに短冊R7だけを伸長復号化すれば良いことになる。また、同時に、短冊R2は不要になる。
そこで、この実施形態では、短冊R7を伸長復号化したとき、画像メモリ部4の参照画像用メモリ上で、短冊R2があったアドレスに、伸長復号化した短冊R7を上書きするようにする。これにより、画像メモリ部4の参照画像用メモリ上で、伸長復号化されている参照画像データは、常に短冊5つ分だけになり、画像メモリ部4の参照画像用メモリ、つまり、画像メモリ部4のワーク領域を効果的に節約することが可能である。
上記方法で参照画像データの復号化を行った場合、図51(A)および(B)に示すように、画像メモリ部4の参照画像用メモリ上のアドレスの並びが変わることになる。すなわち、短冊T4内のターゲットブロックに対するものとして、参照画像用メモリの参照画像が、図51(A)に示すように、短冊R4が中心だったときは、画像データは、短冊R2から順番に画像メモリ部の参照画像用メモリに格納されているため、短冊R4の基準座標Sc4から左方向の画素を参照する場合は、基準座標Sc4のアドレスから所望の値を引き算し、基準座標Sc4から右方向の画素を参照する場合は、基準座標Sc4のアドレスに所望の値を足し算することになる。
一方、短冊T5内のターゲットブロックに対するものとして、参照画像用メモリの参照画像が、図51(B)に示すように、短冊R5が中心のときは、右方向に128画素以内の画素を参照する場合は、短冊R5の基準座標Sc5のアドレスに所望の値を足し算し、右方向に129画素以上の画素を参照する場合は、基準座標Sc5のアドレスに所望の値を足し算した後で、合計短冊幅分のアドレス値を引き算する必要がある。
なお、短冊R0〜R9のそれぞれの基準座標Sc0〜Sc9は、参照画像用メモリをアクセスする際のメモリアドレスポインターの例である。メモリアドレスポインターは、図51の例のようなアドレス位置に限られるものではない。
以上のように、静止画についての圧縮符号化の単位も短冊形式にすることで、ブロックマッチング処理に必要な範囲だけ復号化することができ、画像メモリ部4のワーク領域を節約することができる。さらに、画像メモリ上の不要な参照画像の短冊のアドレスに、次に使用する参照画像の短冊を復号化して上書きすることで、ワーク領域上の復号化された参照画像のサイズを、常に一定にすることができる。
なお、図49および図50を用いて説明した例は、参照画像において設定されるマッチング処理範囲の水平方向のサイズSAが、圧縮単位である短冊の水平方向のサイズSB以上(SA>SB)である場合である。
そして、マッチング処理範囲の水平方向のサイズが、短冊の水平方向のサイズの整数倍で、かつ、マッチング処理範囲と短冊の区切り位置とが一致していれば、無駄なデータアクセスがなくなり、効率はさらに上がる。
もしも、参照画像において設定されるマッチング処理範囲の水平方向のサイズが、圧縮単位である短冊の水平方向のサイズよりも小さい場合には、マッチング処理範囲が、1つの短冊に含まれる大きさであって、1つの短冊に含まれていれば、復号化するのは当該1つの短冊でよく、また、マッチング処理範囲が2つの短冊に跨る場合には、その2つの短冊を復号化すればよい。
その場合でも、ターゲットブロックの位置が変化して、マッチング処理範囲の位置が変わったときであって、マッチング処理範囲が2つの短冊に跨る場合になったときには、新たにマッチング処理範囲が跨ることになった短冊のみを復号化すればよいのは、上述の例と同様である。
[静止画NR処理における画像重ね合わせ方法の例]
静止画NR処理においては、ターゲット画像と参照画像とを、どのように選択設定するか、また、画像の重ね合わせ順序をどのようにするか、などにより、種々の例がある。ここでは、その幾つかを説明する。
静止画NR処理においては、ターゲット画像と参照画像とを、どのように選択設定するか、また、画像の重ね合わせ順序をどのようにするか、などにより、種々の例がある。ここでは、その幾つかを説明する。
複数枚の画像の重ね合わせを行う場合、動き補償をする基準となる画像が必要になる。上述した実施形態では、シャッターを切った瞬間の画像が撮影者の意図した画像であるという考えから、1枚目の撮影画像を基準画像にしている。つまり、図4に示したように、撮影者がシャッターを切り、1枚目に撮影した写真に対して、時間的に後で撮影した画像を使って、重ね合わせを行っている。
前述の図23、図24のフローチャートに示した例は、ターゲット画像と参照画像を重ね合わせた結果のNR画像を、次のターゲット画像としており、2回目以降の画像重ね合わせにおいて、ターゲット画像は常にNR処理を施した画像になっている。ターゲット画像と参照画像の選択方法は、上述したターゲット画像が常にNR画像となる手法(ターゲット加算方式と称する)の他に、参照画像を常にNR画像にする(参照加算方式)ことも可能である。
先ず、前述したターゲット加算方式の画像重ね合わせのイメージ図を、高速連写で4枚の画像を撮影したときを例に、図52に示す。
撮影画像を、時間的にシャッターの押下時点から近い順に、Org0、Org1、Org2、Org3とする。図52に示すように、始めに、撮影画像Org0をターゲット画像、撮影画像Org1を参照画像とし、動き補償画像MC1を作る。そして、撮影画像Org0と動き補償画像MC1を重ね合わせて、NR画像NR1を作る。
次に、NR画像NR1をターゲット画像、撮影画像Org2を参照画像とし、動き補償画像MC2を作る。そして、NR画像NR1と動き補償画像MC2を重ね合わせてNR画像NR2を作る。
次に、NR画像NR2をターゲット画像、撮影画像Org3を参照画像とし、動き補償画像MC3を作る。そして、NR画像NR2と動き補償画像MC3を重ね合わせてNR画像NR3を作る。動き補償画像NR3が、最終的に1枚に合成されたNR画像になる。
次に、図53に、図52の場合と同様に、高速連写で4枚の画像を撮影したときを例に、参照加算方式のイメージ図を示す。
始めに、撮像画像Org2をターゲット画像、撮像画像Org3を参照画像とし、動き補償画像MC3を作る。そして、撮像画像Org2と動き補償画像MC3を重ね合わせて、NR画像NR3を作る。
次に、撮像画像Org1をターゲット画像、NR画像NR3を参照画像とし、動き補償画像MC2を作る。撮像画像Org1とNR画像NR3を重ね合わせてNR画像NR2を作る。
次に、撮像画像Org0をターゲット画像、NR画像NR2を参照画像とし、動き補償画像MC1を作る。そして、撮像画像Org0と動き補償画像MC1を重ね合わせてNR画像NR1を作る。NR画像NR1が、最終的に1枚に合成されたNR画像になる。
参照加算方式の場合における処理動作のフローチャートを、図54および図55に示す。この図54および図55のフローチャートの各ステップは、CPU1およびこのCPU1により制御される動き検出・動き補償部16のコントロール部165の制御の下に実行されると共に、画像重ね合わせ部17により実行されるものである。
まず、シャッターボタンが押下されると、この例の撮像装置においては、CPU1による制御によって、高速で複数枚の画像の撮影が行われる。この例では、静止画撮影時に重ね合わすべきM枚(Mフレーム;Mは2以上の整数)の撮像画像データを取り込み、画像メモリ部4に貼っておく(ステップS91)。
次に、参照フレームは、画像メモリ部4に蓄積されているM枚の画像フレームのうちの時間的にN番目(Nは2以上の整数で、最大値はM)とするのであるが、コントロール部165は、その何番目とする値Nの初期値を、N=M−1とする(ステップS92)。そして、次に、コントロール部165は、N枚目の画像フレームをターゲット画像(ターゲットフレーム)とし、(N+1)枚目の画像を参照画像(参照フレーム)に設定する(ステップS93)。
次に、コントロール部165は、ターゲットフレームにターゲットブロックを設定し(ステップS94)、動き検出・動き補償部16において、画像メモリ部4から、ターゲットブロックバッファ部161へターゲットブロックを読み込み(ステップS95)、参照ブロックバッファ部162へマッチング処理範囲の画素データを読み込む(ステップS96)。
次に、コントロール部165は、参照ブロックバッファ部162から、サーチ範囲内において参照ブロックを読み出し、マッチング処理部163で、この実施形態における階層化マッチング処理を行う。なお、この例では、後述するように、マッチング処理部163で算出されたSAD値のうち、後述するSAD値は、SAD値の最小値およびその近傍のSAD値を保持して、二次曲線近似補間処理を行うために、動きベクトル算出部164へ送られる。これをサーチ範囲内のすべての参照ベクトルで繰り返した後、二次曲線近似補間処理部で、前述した補間処理を行い、高精度の動きベクトルを出力する(ステップS97)。
次に、コントロール部165は、以上のようにして検出された高精度の動きベクトルにしたがって、参照ブロックバッファ部162から動き補償ブロックを読み出し(ステップS98)、ターゲットブロックと同期して、後段の画像重ね合わせ部17へ送る(ステップS99)。
次に、CPU1の制御に従って、画像重ね合わせ部17は、ターゲットブロックと動き補償ブロックの重ね合わせを行い、重ね合わせたブロックのNR画像データを画像メモリ部4に貼る。すなわち、画像重ね合わせ部17は、重ね合わせたブロックのNR画像データを画像メモリ部4に書き込む(ステップS100)。
次に、コントロール部165は、ターゲットフレーム内のすべてのターゲットブロックについてのブロックマッチングを終了したか否か判別し(図55のステップS101)、すべてのターゲットブロックについては未だブロックマッチングの処理が終了していないと判別したときには、ステップS94に戻って、ターゲットフレーム内の次のターゲットブロックを設定して、ステップS94〜ステップS101までの処理を繰り返す。
また、コントロール部165は、ステップS101で、ターゲットフレーム内のすべてのターゲットブロックについてのブロックマッチングを終了したと判別したときには、重ね合わすべきすべての参照フレームについての処理が終了したか否か、つまり、M=Nであるか否か判別する(ステップS102)。
ステップS102で、M=Nではないと判別したときには、N=N−1とし(ステップS103)、次に、ステップS100での重ね合わせにより生成されたNR画像を参照画像(参照フレーム)とし、また、N=N−1枚目の画像をターゲット画像(ターゲットフレーム)とする(ステップS104)。その後、ステップS94に戻って、このステップS94以降の処理を繰り返す。そして、ステップS102で、M=Nであると判別したときには、この処理ルーチンを終了する。
なお、M枚の撮影画像が重ね合わされた結果のNR画像の画像データは、静止画コーデック部18により圧縮符号化エンコードされて、記録再生装置部5に供給されて、その記録媒体に記録されるものである。
ターゲット加算方式は、撮影時加算方式、撮影後加算方式のどちらにも適用することができる利点がある。一方、参照加算方式は、撮影後加算にしか適用できないが、ターゲット画像と参照画像の時間方向の間隔が一定であるため、同じサーチ範囲でもターゲット加算方式よりも動きをカバーできる範囲が広い利点がある。
次に、重ね合わせの単位について説明する。
図23および図24のフローチャートに示した静止画処理手法においては、ターゲット画像内のターゲットブロックを順番にブロックマッチング処理し、ターゲット画像内の全てのターゲットブロックを網羅したら、NR画像を次のターゲット画像とし、参照画像を変更して、次の重ね合わせを行う手法(逐次加算方式と称する)である。
一方、始めにターゲットブロックを設定し、全ての参照画像と、当該ターゲットブロックについてのブロックマッチング処理を行い、当該ターゲットブロックと全ての参照画像の動き補償ブロックとを重ね合わせたら、次のターゲットブロックを選択する手法(一括加算方式と称する)を取ることもできる。
図56に、上述の図52および図53の場合と同様に、高速連写で4枚の画像を撮影したときを例に、一括加算方式のイメージ図を示す。
始めに、撮像画像Org0内にターゲットブロックTB0を設定し、撮像画像Org1のマッチング処理範囲から、動き補償ブロックMCB1を作る。ターゲットブロックTB0と動き補償ブロックMCB1を重ね合わせて、NR画像ブロックNRB1を作る。
次に、NR画像ブロックNRB1をターゲットブロックとし、撮像画像Org1のマッチング処理範囲から、動き補償ブロックMCB2を作る。そして、NR画像ブロックNRB1と動き補償ブロックMCB2を重ね合わせてNR画像ブロックNRB2を作る。
次に、NR画像ブロックNRB2をターゲットブロックとし、撮像画像Org3のマッチング処理範囲から、動き補償ブロックMCB3を作る。そして、NR画像ブロックNRB2と動き補償ブロックMCB3を重ね合わせてNR画像ブロックNRB3を作る。このNR画像ブロックNRB3が、最終的に1枚に合成されるNR画像のうちの1ブロックである。上記手順を、ターゲットブロックごとに行って、1枚のNR画像が完成する。
前述の逐次加算方式は、参照画像を1枚ずつアクセスするため、上述の実施形態における、参照画像を短冊単位で伸長復号化する手法と相性が良く、画像メモリ容量を削減することができる利点がある。
逐次加算方式は、画像の重ね合わせをするたびに画像メモリ部4に書き戻す手法であるのに対して、一括加算方式は、すべての重ね合わせを画像メモリ部4に書き戻すことなく連続して加算することができる。したがって、動き検出・動き補償部16内で加算データの語長を広く取って、精度の高い加算を行うことができる利点がある。
この一括加算方式の場合における処理動作のフローチャートを、図57および図58に示す。この図57および図58のフローチャートの各ステップは、CPU1およびこのCPU1により制御される動き検出・動き補償部16のコントロール部165の制御の下に実行されると共に、画像重ね合わせ部17により実行されるものである。
まず、シャッターボタンが押下されると、この例の撮像装置においては、CPU1による制御によって、高速で複数枚の画像の撮影が行われる。この例では、静止画撮影時に重ね合わすべきM枚(Mフレーム;Mは2以上の整数)の撮像画像データを取り込み、画像メモリ部4に貼っておく(ステップS111)。
次に、コントロール部165は、ターゲットフレームにターゲットブロックを設定する(ステップS112)。次に、参照フレームは、画像メモリ部4に蓄積されているM枚の画像フレームのうちの時間的にN番目(Nは2以上の整数で、最大値はM)とするのであるが、コントロール部165は、その何番目とする値Nの初期値を、N=2とする(ステップS113)。
そして、次に、コントロール部165は、1枚目の画像フレームをターゲット画像(ターゲットフレーム)とし、N=2枚目の画像を参照画像(参照フレーム)に設定する(ステップS114)。
次に、コントロール部165は、動き検出・動き補償部16において、画像メモリ部4から、ターゲットブロックバッファ部161へターゲットブロックを読み込み(ステップS115)、参照ブロックバッファ部162へマッチング処理範囲の画素データを読み込む(ステップS116)。
次に、コントロール部165は、参照ブロックバッファ部162から、サーチ範囲内において参照ブロックを読み出し、マッチング処理部163で、この実施形態における階層化マッチング処理を行う。なお、この例では、後述するように、マッチング処理部163で算出されたSAD値のうち、後述するSAD値は、SAD値の最小値およびその近傍のSAD値を保持して、二次曲線近似補間処理を行うために、動きベクトル算出部164へ送られる。これをサーチ範囲内のすべての参照ベクトルで繰り返した後、二次曲線近似補間処理部で、前述した補間処理を行い、高精度の動きベクトルを出力する(ステップS117)。
次に、コントロール部165は、以上のようにして検出された高精度の動きベクトルにしたがって、参照ブロックバッファ部162から動き補償ブロックを読み出し(ステップS118)、ターゲットブロックと同期して、後段の画像重ね合わせ部17へ送る(ステップS119)。
次に、CPU1の制御に従って、画像重ね合わせ部17は、ターゲットブロックと動き補償ブロックの重ね合わせを行い、重ね合わせたブロックのNR画像データを画像メモリ部4に貼る。すなわち、画像重ね合わせ部17は、重ね合わせたブロックのNR画像データを画像メモリ部4に書き込む(図58のステップS121)。
次に、コントロール部165は、重ね合わすべきすべての参照フレームについての処理が終了したか否か、つまり、M=Nであるか否か判別する(ステップS122)。ステップS122で、M=Nではないと判別したときには、N=N+1とし(ステップS123)、次に、ステップS119での重ね合わせにより生成されたNR画像をターゲット画像(ターゲットフレーム)とし、また、N=N+1枚目の画像を参照画像(参照フレーム)とする(ステップS124)。その後、ステップS115に戻って、このステップS115以降の処理を繰り返す。
そして、ステップS122で、M=Nであると判別したときには、ターゲットフレーム内のすべてのターゲットブロックについてのブロックマッチングを終了したか否か判別し(ステップS125)、すべてのターゲットブロックについては未だブロックマッチングの処理が終了していないと判別したときには、ステップS112に戻って、ターゲットフレーム内の次のターゲットブロックを設定して、ステップS112以降の処理を繰り返す。
また、コントロール部165は、ステップS125で、ターゲットフレーム内のすべてのターゲットブロックについてのブロックマッチングを終了したと判別したときには、この処理ルーチンを終了する。
そして、M枚の撮影画像が重ね合わされた結果のNR画像の画像データは、静止画コーデック部18により圧縮符号化エンコードされて、記録再生装置部5に供給されて、その記録媒体に記録される。
次にターゲット画像の固定について説明する。
図52に示した逐次加算方式は、重ね合わせによって生成されたNR画像を、次の動き検出・動き補償で使用するターゲット画像にする手法(直列動き検出方式と称する)であるが、ターゲット画像を、ある1枚の撮像画像に固定して、動き検出・動き補償を行う手法(並列動き検出方式と称する)を採用するようにしても良い。
図59および図60に、並列動き検出方式における画像重ね合わせの例を示す。図59は、逐次加算方式の場合であり、図60は、一括加算方式の場合である。
例えば、図59および図60の例では、ターゲット画像を1枚目の撮像画像Org0に固定する。そして、この1枚目の撮像画像Org0と、2枚目以降の参照画像Org1、Org2、Org3のそれぞれとについて、動き検出・動き補償を行い、それぞれ動き補償画像MC1、MC2、MC3を作ってから、ターゲット画像である1枚の撮像画像Org0に、生成した動き補償画像MC1、MC2、MC3を、順番に重ね合わせてゆくものである。
動き補償画像MC1、MC2、MC3を作った後は、図59に示すように、逐次加算方式で重ね合わせを行っても良いし、図60に示すように、一括加算方式で重ね合わせを行っても良い。
直列動き検出方式は、逐次加算方式と組み合わせると効率が良い。ターゲット画像はNRをかける基準となる画像であるため、ターゲット画像にノイズがのっている場合は、ノイズ自体も基準になってしまう。直列動き検出方式は、ノイズを低減したNR画像が次のターゲット画像になるため、重ね合わせを行うにつれて、ターゲット画像のノイズは低減されていくという効果がある。
一方、並列動き検出方式は、一括加算方式と組み合わせると効率が良い。一括加算方式は、加算データの語長を広く取って、精度の高い加算を行うことができるが、図52の場合のように、撮影画像をすべて画像メモリに保存しておかなくてはならず、画像メモリの容量を必要とする。したがって、直列動き検出方式で実施すると、動き検出・動き補償と、重ね合わせが交互に行われるため、図51に示した復号化した短冊セットが、参照画像の枚数だけ必要になってしまう。
しかし、並列動き検出方式であれば、はじめに動き検出・動き補償をすべて行い、後から重ね合わせを行うため、図51に示した復号化した短冊画像は1セットで良い。したがって、大量の画像メモリを消費する一括加算方式を、少ない画像メモリ量で行うことができる。
以上のように、撮影条件や、求められるNR精度、設定情報などによって、ターゲット画像と参照画像の選択方法、重ね合わせの順序、図17〜図20を用いて説明した重ね合わせの計算方法を変更することによって、所望のNR画像を得ることが可能である。
[実施形態の効果]
上述した実施形態によれば、画像補正・解像度変換部15で、画像を、短冊状に分割したフォーマットでメモリアクセスを行い、静止画コーデック部18での圧縮符号化の単位も同じく短冊形式にすることで、画像補正・解像度変換部15から静止画コーデック部18に、メモリを介さず、直接データを転送することができ、高速連写画像を効率よく圧縮符号化し、画像メモリ部4に格納することができる。
上述した実施形態によれば、画像補正・解像度変換部15で、画像を、短冊状に分割したフォーマットでメモリアクセスを行い、静止画コーデック部18での圧縮符号化の単位も同じく短冊形式にすることで、画像補正・解像度変換部15から静止画コーデック部18に、メモリを介さず、直接データを転送することができ、高速連写画像を効率よく圧縮符号化し、画像メモリ部4に格納することができる。
また、画像メモリ部4に格納された、圧縮符号化された画像を参照画像として用いるときに、画像を分割した短冊単位で伸長復号化することで、ブロックマッチング処理に必要な範囲だけ復号化することができ、画像メモリ部4のワーク領域を節約することができる。さらに、画像メモリ部4上の不要な参照画像短冊のアドレスに、次に使用する参照画像短冊を復号化して上書きすることで、ワーク領域上の復号化された参照画像のサイズを、常に一定にすることができる。
また、前述したように、この実施形態によれば、設定情報などによって、ターゲット画像と参照画像の選択方法、重ね合わせの順序、重ね合わせの計算方法を変更することによって、所望のNR画像を得ることが可能である。
[その他の実施の形態および変形例]
上述の実施形態においては、静止画コーデック部18における圧縮符号化方式としては、JPEG方式を用いるようにしたが、これは一例であって、この発明は、どのような画像圧縮符号化方式であっても適用可能であることは言うまでもない。
上述の実施形態においては、静止画コーデック部18における圧縮符号化方式としては、JPEG方式を用いるようにしたが、これは一例であって、この発明は、どのような画像圧縮符号化方式であっても適用可能であることは言うまでもない。
また、上述の実施形態では、静止画撮影時の記録画像を圧縮符号化するための圧縮符号化処理部で、ブロックマッチング時における撮像画像の圧縮符号化を行うようにしたが、記録処理のための圧縮方式と、ブロックマッチング時における撮像画像の圧縮方式とで、異なる方式を用いるようにしても良い。
また、画像を、水平方向の複数画素毎に分割して、短冊単位のデータとしてメモリアクセスするようにしたが、これは、画像メモリからの画像データの読み出し、書き込み方向が、水平ライン方向を基準にしたからである。画像メモリからの画像データの読み出し、書き込み方向が垂直方向である場合には、画像を垂直方向の複数ライン単位で分割した帯状単位のデータとしてデータアクセスするようにすれば、上述と同様の作用効果が得られることは言うまでもない。また、さらに、画像を水平方向と垂直方向との両方向に分割しても良いことはいうまでもない。
また、上述の実施の形態において、動きベクトル算出部の第1の例においては、サーチ範囲におけるサーチ方向を水平ライン方向に取り、例えばサーチ範囲の左上から順に参照ブロックを移動させるようにしてサーチを行うようにすると共に、SADテーブルの1ライン分のメモリを設けるようにしたが、サーチ範囲におけるサーチ方向を垂直方向に取り、例えばサーチ範囲の左上端から垂直方向にサーチを開始し、垂直方向の1列分のサーチが終わった後、水平方向に、参照ブロックの位置を1つ分、例えば1画素分右の垂直方向の列に移動し、その列の上端から垂直方向にサーチする、という手順を繰り返すサーチ方法を採用するようにしても良い。このようにサーチ範囲の左上端から順に、垂直方向に参照ブロックを移動させるようにしてサーチを行うようにする場合には、SADテーブルの垂直方向の一列分のメモリを設けるようにすれば良い。
ここで、水平方向にサーチ方向を取るか、垂直方向にサーチ方向を取るかは、マッチング処理部、動きベクトル算出部の回路規模を考慮して、より回路規模が小さくなる方を採用するのが好ましい。
なお、前述もしたように、参照ブロックの移動は、1画素毎、また、1ライン毎ではなく、複数画素毎、また、複数ライン毎でもよい。したがって、前者の場合の水平方向の1ライン分メモリは、水平方向における参照ブロックの移動位置分だけでよく、また、後者の場合の垂直方向の一列分のメモリは、垂直方向における参照ブロックの移動位置分だけでよい。つまり、参照ブロックの移動を1画素毎、また、1ライン毎に行う場合には、1ライン分メモリは、1ラインの画素数分の容量のメモリが必要であり、また、垂直方向の一列分メモリは、ライン数分の容量のメモリが必要である。しかし、複数画素毎、また、複数ライン毎に、参照ブロックを移動させる場合には、1画素毎、また、1ライン毎に参照ブロックを移動させる場合よりも、1ライン分メモリおよび1列分メモリの容量は少なくなる。
また、補間処理の方法は、上述した二次曲線近似補間処理に限られるものではなく、前述もしたように、3次曲線や、より高次の曲線を用いた補間処理を行っても良い。
なお、上述の実施形態では、平均加算方式による画像重ね合わせにおいても、画素単位で加算係数を算出するようにしたが、この発明は、単純加算方式のものであり、平均加算方式としては、従来通りの画面単位で加算係数を決定する方式であっても良い。
また、上述の実施の形態は、この発明による画像処理装置を撮像装置に適用した場合であるが、この発明は、撮像装置に限られるわけではなく、複数枚の画像を重ね合わせて、ノイズ低減を図るようにする場合の全てに適用可能である。
4…画像メモリ部、16…動き検出・動き補償部、17…画像重ね合わせ部、18…静止画コーデック部、100…ターゲット画像(ターゲットフレーム)、101…参照画像(参照フレーム)、102…ターゲットブロック、104…動きベクトル106…サーチ範囲、107…参照ベクトル、108…参照ブロック、163…マッチング処理部、164…動きベクトル算出部、171…加算率計算部、172…加算部、1711…画素差分算出部、1712…単純加算用加算係数生成部
Claims (15)
- 重ね合わせる2画面間の動きベクトルを検出し、この検出した前記動きベクトルを用いて前記2画面間の動きを補償しながら、前記2画面を重ね合わせる処理を行い、当該画面の重ね合わせを、連続して入力される画像のN枚(Nは2以上の整数)の画面について行うことで、ノイズを低減すると共に、ダイナミックレンジがN倍の画像を生成するようにする画像処理装置であって、
前記2画面の前記重ね合わせる2画素毎に、前記2画素間の差分を検出する差分検出手段と、
前記差分検出手段で検出された前記差分に基づいて、前記重ね合わせる2画素毎に、当該2画素の加算割合を決定する決定手段と、
前記決定手段で決定された前記加算割合で、前記重ね合わせる2画素の重ね合わせを実行する重ね合わせ手段と、
を備えることを特徴とする画像処理装置。 - 請求項1に記載の画像処理装置において、
前記重ね合わせる2画面のうち、ノイズ低減を施したい画面をターゲット画面、ターゲット画面に重ね合わせたい画面を参照画面としたとき、前記決定手段は、前記差分検出手段で検出された前記差分に応じて、前記重ね合わせる2画素の前記参照画面の画素についての加算率α(0≦α≦1)を決定すると共に、前記ターゲット画面の画素についての加算率βを、β=1+(1−α)/(N−1)として算出する手段を備える
ことを特徴とする画像処理装置。 - 請求項1に記載の画像処理装置において、
前記重ね合わせる2画面間の動きベクトルは、画面を複数に分割したブロック単位に検出し、前記ブロック単位に前記2画面の重ね合わせを行う
ことを特徴とする画像処理装置。 - 請求項1に記載の画像処理装置において、
前記連続して入力される画像は、撮像素子からの撮像画像であり、シャッターが開放状態において、連続して撮影された画像である
ことを特徴とする画像処理装置。 - 請求項1に記載の画像処理装置において、
前記連続して入力される画像は、撮像素子からの高速のフレームレートの撮像画像であって、
前記N枚の画面毎に、前記重ね合わせを行って、前記高速のフレームレートの1/Nのフレームレートの動画像を得るようにする
ことを特徴とする画像処理装置。 - 重ね合わせる2画面間の動きベクトルを検出し、この検出した前記動きベクトルを用いて前記2画面間の動きを補償しながら、前記2画面を重ね合わせる処理を行い、当該画面の重ね合わせを、連続して入力される撮像画像のN枚(Nは2以上の整数)の画面について行うことでノイズを低減する画像加算手段として、出力画像のダイナミックレンジがN倍となるようにする第1の画像加算手段と、出力画像のダイナミックレンジは、1倍のままとする第2の画像加算手段とを備える撮像装置であって、
前記第1の画像加算手段は、
前記2画面の前記重ね合わせる2画素毎に、前記2画素間の差分を検出する差分検出手段と、
前記差分検出手段で検出された前記差分に基づいて、前記重ね合わせる2画素毎に、当該2画素の加算割合を決定する決定手段と、
前記決定手段で決定された前記加算割合で、前記重ね合わせる2画素の重ね合わせを実行する重ね合わせ手段と、
を備えることを特徴とする撮像装置。 - 請求項6に記載の画像処理装置において、
前記重ね合わせる2画面のうち、ノイズ低減を施したい画面をターゲット画面、重ね合わせたい画面を参照画面としたとき、前記決定手段は、前記差分検出手段で検出された前記差分に応じて、前記重ね合わせる2画素の前記参照画面の画素についての加算率α(0≦α≦1)を決定すると共に、前記ターゲット画面の画素についての加算率βを、β=1+(1−α)/(N−1)として算出する手段を備える
ことを特徴とする画像処理装置。 - 請求項6に記載の撮像装置において、
前記重ね合わせる2画面のうち、ノイズ低減を施したい画面をターゲット画面、重ね合わせたい画面を参照画面としたとき、前記決定手段は、前記差分検出手段で検出された前記差分に応じて、前記重ね合わせる2画素の前記参照画面の画素についての加算率α(0≦α≦1)を決定すると共に、前記ターゲット画面の画素についての加算率βを、β=1+(1−α)/(N−1)として算出する手段を備える
ことを特徴とする撮像装置。 - 請求項6に記載の撮像装置において、
前記重ね合わせる2画面間の動きベクトルは、画面を複数に分割したブロック単位に検出し、前記ブロック単位に前記2画面の重ね合わせを行う
ことを特徴とする撮像装置。 - 請求項6に記載の撮像装置において、
静止画を撮影するモードであって、シャッターが開放状態において、連続して撮影された画像を重ね合わせて、出力静止画を得るバルブ加算モードを備え、
前記バルブ加算モードの場合には、前記第1の画像加算手段を用い、前記バルブ加算モード以外の静止画を撮影するモードでは、前記第2の画像加算手段を用いる
ことを特徴とする撮像装置。 - 請求項6に記載の撮像装置において、
動画を撮影するモードであって、シャッターが開放状態において、連続して撮影された画像を重ね合わせて、出力動画を得るバルブ加算モードと、
動画を撮影するモードであって、撮像素子から高速のフレームレートの撮像画像を得、前記高速フレームレートの撮像画像の前記N枚の画面毎に前記重ね合わせを行って、前記高速のフレームレートの1/Nのフレームレートの動画像を得るフレームレート変換モードと
を備え、前記バルブ加算モードおよび前記フレームレート変換モードの場合には、前記第1の画像加算手段を用い、前記バルブ加算モードおよび前記フレームレート変換モード以外では、前記第2の画像加算手段を用いる
ことを特徴とする撮像装置。 - 重ね合わせる2画面間の動きベクトルを検出し、この検出した前記動きベクトルを用いて前記2画面間の動きを補償しながら、前記2画面を重ね合わせる処理を行い、当該画面の重ね合わせを、連続して入力される画像のN枚(Nは2以上の整数)の画面について行うことで、ノイズを低減すると共に、ダイナミックレンジがN倍の画像を生成するようにする画像処理装置における画像処理方法であって、前記画像処理装置は、
前記2画面の前記重ね合わせる2画素毎に、前記2画素間の差分を検出する差分検出工程と、
前記差分検出工程で検出された前記差分に基づいて、前記重ね合わせる2画素毎に、当該2画素の加算割合を決定する決定工程と、
前記決定工程で決定された前記加算割合で、前記重ね合わせる2画素の重ね合わせを実行する重ね合わせ工程と、
を備えることを特徴とする画像処理方法。 - 請求項12に記載の画像処理方法において、
前記重ね合わせる2画面のうち、ノイズ低減を施したい画面をターゲット画面、重ね合わせたい画面を参照画面としたとき、前記決定工程では、前記差分検出工程で検出された前記差分に応じて、前記重ね合わせる2画素の前記参照画面の画素についての加算率α(0≦α≦1)を決定すると共に、前記ターゲット画面の画素についての加算率βを、β=1+(1−α)/(N−1)として算出する
ことを特徴とする画像処理方法。 - 重ね合わせる2画面間の動きベクトルを検出し、この検出した前記動きベクトルを用いて前記2画面間の動きを補償しながら、前記2画面を重ね合わせる処理を行い、当該画面の重ね合わせを、連続して入力される撮像画像のN枚(Nは2以上の整数)の画面について行うことでノイズを低減する画像加算手段として、出力画像のダイナミックレンジがN倍となるようにする第1の画像加算手段と、出力画像のダイナミックレンジは、1倍のままとする第2の画像加算手段とを備える撮像装置における撮像画像処理方法であって、
前記第1の画像加算手段は、
前記2画面の前記重ね合わせる2画素毎に、前記2画素間の差分を検出する差分検出工程と、
前記差分検出工程で検出された前記差分に基づいて、前記重ね合わせる2画素毎に、当該2画素の加算割合を決定する決定工程と、
前記決定工程で決定された前記加算割合で、前記重ね合わせる2画素の重ね合わせを実行する重ね合わせ工程と、
を備えることを特徴とする撮像画像処理方法。 - 請求項14に記載の撮像画像処理方法において、
前記重ね合わせる2画面のうち、ノイズ低減を施したい画面をターゲット画面、重ね合わせたい画面を参照画面としたとき、前記決定工程では、前記差分検出工程で検出された前記差分に応じて、前記重ね合わせる2画素の前記参照画面の画素についての加算率α(0≦α≦1)を決定すると共に、前記ターゲット画面の画素についての加算率βを、β=1+(1−α)/(N−1)として算出する
ことを特徴とする撮像画像処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007273605A JP2009105533A (ja) | 2007-10-22 | 2007-10-22 | 画像処理装置、撮像装置、画像処理方法および撮像画像処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007273605A JP2009105533A (ja) | 2007-10-22 | 2007-10-22 | 画像処理装置、撮像装置、画像処理方法および撮像画像処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009105533A true JP2009105533A (ja) | 2009-05-14 |
Family
ID=40706835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007273605A Pending JP2009105533A (ja) | 2007-10-22 | 2007-10-22 | 画像処理装置、撮像装置、画像処理方法および撮像画像処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009105533A (ja) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110138114A (ko) * | 2010-06-18 | 2011-12-26 | 삼성전자주식회사 | 다중 노출에 의한 프레임 처리 방법 및 장치 |
JP2012044377A (ja) * | 2010-08-18 | 2012-03-01 | Casio Comput Co Ltd | 画像合成装置、画像合成方法、及びプログラム |
JP2013126237A (ja) * | 2011-12-16 | 2013-06-24 | Chuo Electronics Co Ltd | ノイズ除去装置、ノイズ除去方法およびノイズ除去プログラム |
JP2014146850A (ja) * | 2013-01-25 | 2014-08-14 | Canon Inc | 撮像装置およびその制御方法 |
JP2014236226A (ja) * | 2013-05-30 | 2014-12-15 | キヤノン株式会社 | 画像処理装置および画像処理方法 |
WO2015119207A1 (ja) * | 2014-02-07 | 2015-08-13 | 株式会社モルフォ | 画像処理装置、画像処理方法、画像処理プログラム及び記録媒体 |
JP2016213775A (ja) * | 2015-05-13 | 2016-12-15 | オリンパス株式会社 | 撮像装置、撮像方法、およびプログラム |
JP2016541191A (ja) * | 2013-12-06 | 2016-12-28 | レイセオン カンパニー | 高レートでの関心領域処理及びイベント駆動型フォレンジック・ルックバック機能を備える電気光学(eo)/赤外線(ir)凝視型焦点面 |
CN109801340A (zh) * | 2019-01-16 | 2019-05-24 | 山西班姆德机械设备有限公司 | 一种基于图像处理的砂轮磨削方法 |
WO2020137503A1 (ja) | 2018-12-27 | 2020-07-02 | ソニーセミコンダクタソリューションズ株式会社 | 画像処理装置 |
US20220188988A1 (en) * | 2019-03-29 | 2022-06-16 | Sony Group Corporation | Medical system, information processing device, and information processing method |
-
2007
- 2007-10-22 JP JP2007273605A patent/JP2009105533A/ja active Pending
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101633377B1 (ko) | 2010-06-18 | 2016-07-08 | 삼성전자주식회사 | 다중 노출에 의한 프레임 처리 방법 및 장치 |
KR20110138114A (ko) * | 2010-06-18 | 2011-12-26 | 삼성전자주식회사 | 다중 노출에 의한 프레임 처리 방법 및 장치 |
JP2012044377A (ja) * | 2010-08-18 | 2012-03-01 | Casio Comput Co Ltd | 画像合成装置、画像合成方法、及びプログラム |
JP2013126237A (ja) * | 2011-12-16 | 2013-06-24 | Chuo Electronics Co Ltd | ノイズ除去装置、ノイズ除去方法およびノイズ除去プログラム |
JP2014146850A (ja) * | 2013-01-25 | 2014-08-14 | Canon Inc | 撮像装置およびその制御方法 |
JP2014236226A (ja) * | 2013-05-30 | 2014-12-15 | キヤノン株式会社 | 画像処理装置および画像処理方法 |
JP2016541191A (ja) * | 2013-12-06 | 2016-12-28 | レイセオン カンパニー | 高レートでの関心領域処理及びイベント駆動型フォレンジック・ルックバック機能を備える電気光学(eo)/赤外線(ir)凝視型焦点面 |
KR101652658B1 (ko) | 2014-02-07 | 2016-08-30 | 가부시키가이샤 모르포 | 화상 처리 장치, 화상 처리 방법, 화상 처리 프로그램 및 기록 매체 |
US10200649B2 (en) | 2014-02-07 | 2019-02-05 | Morpho, Inc. | Image processing device, image processing method and recording medium for reducing noise in image |
JP5974250B2 (ja) * | 2014-02-07 | 2016-08-23 | 株式会社モルフォ | 画像処理装置、画像処理方法、画像処理プログラム及び記録媒体 |
KR20150110722A (ko) * | 2014-02-07 | 2015-10-02 | 가부시키가이샤 모르포 | 화상 처리 장치, 화상 처리 방법, 화상 처리 프로그램 및 기록 매체 |
CN104995908A (zh) * | 2014-02-07 | 2015-10-21 | 株式会社摩如富 | 图像处理装置、图像处理方法、图像处理程序及记录介质 |
WO2015119207A1 (ja) * | 2014-02-07 | 2015-08-13 | 株式会社モルフォ | 画像処理装置、画像処理方法、画像処理プログラム及び記録媒体 |
JPWO2015119207A1 (ja) * | 2014-02-07 | 2017-03-23 | 株式会社モルフォ | 画像処理装置、画像処理方法、画像処理プログラム及び記録媒体 |
CN104995908B (zh) * | 2014-02-07 | 2018-01-30 | 株式会社摩如富 | 图像处理装置以及图像处理方法 |
JP2016213775A (ja) * | 2015-05-13 | 2016-12-15 | オリンパス株式会社 | 撮像装置、撮像方法、およびプログラム |
WO2020137503A1 (ja) | 2018-12-27 | 2020-07-02 | ソニーセミコンダクタソリューションズ株式会社 | 画像処理装置 |
CN109801340A (zh) * | 2019-01-16 | 2019-05-24 | 山西班姆德机械设备有限公司 | 一种基于图像处理的砂轮磨削方法 |
CN109801340B (zh) * | 2019-01-16 | 2022-09-27 | 山西班姆德机械设备有限公司 | 一种基于图像处理的砂轮磨削方法 |
US20220188988A1 (en) * | 2019-03-29 | 2022-06-16 | Sony Group Corporation | Medical system, information processing device, and information processing method |
US12136196B2 (en) * | 2019-03-29 | 2024-11-05 | Sony Group Corporation | Medical system, information processing device, and information processing method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4882956B2 (ja) | 画像処理装置および画像処理方法 | |
JP2009071689A (ja) | 画像処理装置、画像処理方法および撮像装置 | |
JP2009105533A (ja) | 画像処理装置、撮像装置、画像処理方法および撮像画像処理方法 | |
JP4178480B2 (ja) | 画像処理装置、画像処理方法、撮像装置および撮像方法 | |
US7692688B2 (en) | Method for correcting distortion of captured image, device for correcting distortion of captured image, and imaging device | |
JP4340915B2 (ja) | 撮像画像信号の歪み補正方法、撮像画像信号の歪み補正装置、撮像方法および撮像装置 | |
JP4178481B2 (ja) | 画像処理装置、画像処理方法、撮像装置および撮像方法 | |
JP4655957B2 (ja) | 撮像画像の歪み補正方法、撮像画像の歪み補正装置、撮像方法および撮像装置 | |
JP4623111B2 (ja) | 画像処理装置、画像処理方法及びプログラム | |
JP4544334B2 (ja) | 画像処理装置および画像処理方法 | |
US8085848B2 (en) | Image processing apparatus and image processing method | |
JP2012142865A (ja) | 画像処理装置及び画像処理方法 | |
US8861846B2 (en) | Image processing apparatus, image processing method, and program for performing superimposition on raw image or full color image | |
JP2009055410A (ja) | 画像処理装置および画像処理方法 | |
JP2012186593A (ja) | 画像処理装置、および画像処理方法、並びにプログラム | |
JP2004056789A (ja) | 小型イメージセンサの解像度及び画質改善方法 | |
JP2012142829A (ja) | 画像処理装置および画像処理方法 | |
JP2008091979A (ja) | 画像高画質化装置、及びその方法、並びに画像表示装置 | |
JP2009116763A (ja) | 画像処理装置および画像データのメモリアクセス方法 | |
JP2007318578A (ja) | 画像処理装置および画像処理方法 | |
JP4998134B2 (ja) | 画像処理装置および画像処理方法 | |
JP4888306B2 (ja) | 画像処理装置および画像処理方法 | |
JP2009130489A (ja) | 撮像装置、撮像記録方法、撮像画像記録再生装置および撮像画像記録再生方法 | |
JP2010016580A (ja) | 画像処理装置および画像処理方法 | |
JP4670630B2 (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 |