JP2009116763A - 画像処理装置および画像データのメモリアクセス方法 - Google Patents
画像処理装置および画像データのメモリアクセス方法 Download PDFInfo
- Publication number
- JP2009116763A JP2009116763A JP2007291464A JP2007291464A JP2009116763A JP 2009116763 A JP2009116763 A JP 2009116763A JP 2007291464 A JP2007291464 A JP 2007291464A JP 2007291464 A JP2007291464 A JP 2007291464A JP 2009116763 A JP2009116763 A JP 2009116763A
- Authority
- JP
- Japan
- Prior art keywords
- image
- unit
- block
- memory
- image data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Image Input (AREA)
- Image Processing (AREA)
Abstract
【課題】画像メモリに対してシステムバスを介して、複数個の画像データ処理部が接続されている場合にバス帯域の削減を図ることができる画像処理方法を提供する。
【解決手段】第1の画像処理部での処理の結果の画像データは、メモリコントローラにより、画面の垂直方向のライン数と水平方向の画素数との組み合わせが第1の組み合わせとされた第1のブロック単位で、画像メモリ部の第1のメモリ領域に書き込むと共に、画面の垂直方向のライン数と水平方向の画素数との組み合わせが、第1の組み合わせとは異なる第2の組み合わせとされた第2のブロック単位で、画像メモリ部の第2のメモリ領域に書き込む。メモリコントローラにより、第2の画像処理部には、画像メモリ部の第1のメモリ領域に書き込まれた画像データが読み出されて供給され、第3の画像処理部には、画像メモリ部の第2のメモリ領域に書き込まれた画像データが読み出されて供給される。
【選択図】図58
【解決手段】第1の画像処理部での処理の結果の画像データは、メモリコントローラにより、画面の垂直方向のライン数と水平方向の画素数との組み合わせが第1の組み合わせとされた第1のブロック単位で、画像メモリ部の第1のメモリ領域に書き込むと共に、画面の垂直方向のライン数と水平方向の画素数との組み合わせが、第1の組み合わせとは異なる第2の組み合わせとされた第2のブロック単位で、画像メモリ部の第2のメモリ領域に書き込む。メモリコントローラにより、第2の画像処理部には、画像メモリ部の第1のメモリ領域に書き込まれた画像データが読み出されて供給され、第3の画像処理部には、画像メモリ部の第2のメモリ領域に書き込まれた画像データが読み出されて供給される。
【選択図】図58
Description
この発明は、システムバスを介して画像メモリ部と、種々の画像処理部とが接続され、画像メモリをアクセスしながら、前記種々の画像処理部がそれぞれの画像データ処理を実行するようにする画像処理装置に関し、特に、画像メモリ部への画像データのアクセス方法に関するものである。
この明細書で、画面とは、1フレーム分または1フィールド分の画像データからなり、1枚分としてディスプレイに表示される画像を意味しているものとしている。
2つの画面間の動きベクトルを、画像情報自身から求めるブロックマッチング手法は、歴史の古い技術である。テレビジョンカメラのパン・チルト検出や被写体追尾、MPEG(Moving Picture Experts Group)方式の動画符号化などを中心に開発が進み、90年代に入ってからは、画像の重ね合わせによる、センサレス手ブレ補正や低照度撮影時のノイズ除去(Noise Reduction:以降、NRと表記する)など多岐に渡って応用が進められている。
ブロックマッチングは、注目画面である参照画面と、当該参照画面の動きの元となる元画面(ターゲット画面と称する)との間の2画面間の動きベクトルを、所定の大きさの矩形領域のブロックについて、参照画面と元画面との間での相関を算出することにより算出する方法である
元画面が時間的に参照画面よりも前の画面とされる場合(例えば、MPEGにおける動き検出の場合)と、参照画面が時間的に元画面よりも前の画面とされる場合(例えば、後述する画像フレームの重ね合わせによるノイズ低減の場合)の両方がある。
元画面が時間的に参照画面よりも前の画面とされる場合(例えば、MPEGにおける動き検出の場合)と、参照画面が時間的に元画面よりも前の画面とされる場合(例えば、後述する画像フレームの重ね合わせによるノイズ低減の場合)の両方がある。
なお、この明細書で、画面とは、1フレームまたは1フィールドの画像データからなり、1枚分としてディスプレイに表示される画像を意味しているものとしているが、この明細書における以下の説明の便宜上、画面は1フレームからなるものとして、画面をフレームと称する場合もある。例えば、参照画面は参照フレーム、元画面は元フレームと称する場合もある。
図64〜図69は、従来のブロックマッチングの概要を説明するための図である。ここで説明するブロックマッチング手法においては、例えば、図64(A)に示すように、元フレーム(ターゲットフレーム)100を、それぞれ水平方向の複数画素および垂直方向の複数ライン分からなる所定の大きさの矩形領域(ブロックという)の複数個に分割する。ターゲットフレームにおけるこれらの複数個のブロック102のそれぞれを、ターゲットブロックという。
ブロックマッチングにおいては、ターゲットブロック102と相関性の高いブロックを、参照フレーム101の中から検索する。この検索の結果、相関性が最も高いとして参照フレーム101内に検出されたブロック103(図64(B)参照)を、動き補償ブロックと呼ぶ。また、ターゲットブロック102と動き補償ブロック103との間の位置ずれ量を、動きベクトル(図64(B)の符号104参照)と称する。
ターゲットブロック102と動き補償ブロック103との間の位置ずれ(位置ずれ量と位置ずれ方向を含む)に対応する動きベクトル104は、参照フレーム101において、ターゲットフレーム100の各ターゲットブロック102の位置と同じ位置に、ターゲットブロック102の射影イメージブロック109を想定したとき、このターゲットブロックの射影イメージブロック109の位置(例えば中心位置)と、動き補償ブロック103の位置(例えば中心位置)との間の位置ずれに相当し、位置ずれ量と位置ずれの方向成分も有するものである。
ブロックマッチング処理の概要を説明する。図65において点線で示すように、参照フレーム101において、ターゲットフレーム100の各ターゲットブロック102の位置と同じ位置にターゲットブロックの射影イメージブロック109を想定し、このターゲットブロックの射影イメージブロック109の中心の座標を、動き検出の原点105とする。そして、動きベクトル104が、動き検出の原点105から或る範囲内に存在すると仮定し、この動き検出の原点105を中心した所定の範囲をサーチ範囲106(図65の一点鎖線参照)と設定する。
次に、ターゲットブロック102と同じ大きさのブロック(参照ブロックという)108を参照画面において設定する。そして、この参照ブロック108の位置を、サーチ範囲106内において、例えば水平方向および垂直方向に、1画素または複数画素単位で移動させるようにする。したがって、サーチ範囲106においては、複数個の参照ブロック108が設定されることになる。
ここで、参照ブロック108を、サーチ範囲106内を移動させるというのは、この例では、動き検出原点105がターゲットブロックの中心位置であるので、参照ブロック108の中心位置を、サーチ範囲106内を移動させることを意味し、参照ブロック108を構成する画素は、サーチ範囲106よりもはみ出すことがある。
そして、サーチ範囲において、設定される各参照ブロック108に対して、当該各参照ブロック108とターゲットブロック102との位置ずれ量および位置ずれ方向を表すベクトル(参照ベクトルという)107(図65参照)を設定し、それぞれの参照ベクトル107が指し示す位置にある参照ブロック108の画像内容と、ターゲットブロック102の画像内容との相関性を評価する。
参照ベクトル107は、図66に示すように、参照ブロック108の水平方向(X方向)の位置ずれ量Vxとし、垂直方向(Y方向)の位置ずれ量をVyとしたとき、ベクトル(Vx,Vy)と表すことができ、参照ブロック108の位置座標(例えば中心位置座標)とターゲットブロック102の位置座標(例えば中心位置座標)とが同じときには、参照ベクトル107は、ベクトル(0,0)と表す。
例えば、参照ブロック108が、ターゲットブロック102の位置から、X方向に1画素ずれた位置にある場合、参照ベクトル107はベクトル(1,0)となる。また、図67に示すように、参照ブロック108が、ターゲットブロック102の位置から、X方向に3画素、Y方向に2画素ずれた位置にある場合には、参照ベクトル107はベクトル(3,2)となる。
つまり、参照ベクトル107は、図67の例に示すように、ターゲットブロック102および参照ブロック108の位置を、それぞれのブロックの中心位置とした場合、各参照ベクトル108は、対応する各参照ブロック108の中心位置とターゲットブロック102の中心位置との位置ずれ(位置ずれ量と位置ずれの方向を含むベクトルとなる)を意味する。
参照ブロック108は、サーチ範囲106において移動するものとなるが、その場合に、参照ブロック108の中心位置がサーチ範囲106内を移動する。前述もしたように、参照ブロック108は、水平方向および垂直方向の複数画素からなるので、ターゲットブロック102とブロックマッチング処理される対象となる参照ブロック108が移動する最大範囲は、図67に示すように、サーチ範囲106よりも広いマッチング処理範囲110となる。
そして、ターゲットブロック102の画像内容との相関が最も強いとして検出された参照ブロック108の位置を、ターゲットフレーム100のターゲットブロック102の、参照フレーム101における位置(動いた後の位置)として検出し、検出した参照ブロックを、前述した動き補償ブロック103とする。そして、その検出した動き補償ブロック103の位置と、ターゲットブロック102の位置との間の位置ずれ量を、方向成分を含む量としての動きベクトル104として検出するようにする(図64(B)参照)。
ここで、ターゲットブロック102と、サーチ範囲106において移動する参照ブロック108との相関の強さを表す相関値は、基本的にはターゲットブロック102と参照ブロック108との対応する画素値を用いて算出されるが、その算出方法は、自乗平均を用いる方法やその他種々の方法が提案されている。
そのうち、動きベクトルを算出する際に一般的に用いられる相関値としては、例えば、ターゲットブロック102内の各画素の輝度値と、参照ブロック106内の対応する各画素の輝度値との差分の絶対値の、ブロック内の全画素についての総和(この差分の絶対値の総和を差分絶対値和と呼ぶ。以下、この差分絶対値和をSAD(Sum of Absolute Difference)と記載することとする)が用いられる(図68参照)。
相関値としてSAD値が用いられる場合には、SAD値が小さいほど相関が強いものとされる。したがって、サーチ範囲106において移動する参照ブロック108のうち、SAD値が最小となる位置の参照ブロック108が最も相関が強い最強相関参照ブロックとなり、この最強相関参照ブロックが、動き補償ブロック103として検出され、その検出された動き補償ブロック103のターゲットブロック102の位置に対する位置ずれ量が動きベクトルとして検出される。
前述したように、ブロックマッチングでは、サーチ範囲106において設定される複数個の参照ブロック108のそれぞれの、ターゲットブロック102の位置に対する位置ずれ量は、方向成分を含む量としての参照ベクトル107で表現される。各参照ブロック108の参照ベクトル107は、参照ブロック108の参照フレーム102上の位置に応じた値となる。前述したように、ブロックマッチングでは、相関値であるSAD値が最小値となる参照ブロック108の参照ベクトルを、動きベクトル104として検出する。
そこで、ブロックマッチングでは、一般に、図69に示すように、サーチ範囲106において設定される複数個の参照ブロック108のそれぞれとターゲットブロック102との間におけるSAD値(以下、説明の簡単のため参照ブロック108についてのSAD値という)を、それぞれの参照ブロック108の位置に応じた参照ベクトル107(以下、説明の簡単のため、参照ブロック106の位置に応じた参照ベクトル107を参照ブロック108の参照ベクトル107という)のそれぞれに対応させて、メモリに記憶しておき、そのメモリに記憶された全ての参照ブロック108についてのSAD値の中から、最小のSAD値の参照ブロック108を検出することで、動きベクトル104を検出するようにしている。
サーチ範囲106において設定された複数個の参照ブロック108の位置に応じた参照ベクトル107のそれぞれに対応させて、それぞれの参照ブロック108についての相関値(この例では、SAD値)を記憶したものを相関値テーブルと呼ぶ。この例では、相関値として差分絶対値和であるSAD値を用いるので、この相関値テーブルを、差分絶対値和テーブル(以下SADテーブルという)と呼ぶことにする。
図69のSADテーブルTBLが、これを示しており、このSADテーブルTBLにおいて、それぞれの参照ブロック108についての相関値(この例ではSAD値)を相関値テーブル要素という。図69の例では、符号111で指し示すSAD値は、参照ベクトルがベクトル(0,0)のときのSAD値である。そして、図69の例では、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値を計算するハードウエアの規模が増大するので、処理の高速化と、回路規模の増大のトレードオフになる。
以上のように、ブロックマッチング手法は、ターゲットフレームを、複数個のターゲットブロックに分割し、各ターゲットブロックに対して、参照フレームに検索範囲を設定し、画像メモリから、ターゲットフレームのターゲットブロックと参照フレームの検索範囲内の参照ブロックを読み出し、各画素のSAD値を計算し、検索範囲の広さ分のSAD値テーブルを形成し、その最小値の座標値をターゲットブロックについての動きベクトルとしている。
画像メモリと、動きベクトル検出部などとは、システムバスを通じて接続され、メモリコントローラにより、画像メモリに対する書き込みおよび読み出しが制御される。
そして、上述のように、ブロックマッチング手法では、画像メモリからの画素単位のデータについてのSAD値を計算するようにするので、画像自体の画素数や、検索範囲の広さに比例して、画像メモリへのアクセスが多くなり、バス帯域を大きくする必要がある。ここで、バス帯域とは、データを転送するバス上で、輻輳を回避してデータ転送することができるデータレートおよびバス幅(ビット数)などからなる量である。バス帯域が大きくなると、システムの規模が大きくなると共に、コストが増大するという問題がある。
この問題に対して、従来、画像に動きが無い静止状態であれば、マッチング処理をしない手法(特許文献1(特開2005−210503号公報)など)や、参照フレームの画像を間引いて情報量を落とす手法(特許文献2(特開2006−287583号公報)など)などが提案されている。
また、ブロックマッチング精度を落とさずに、バス帯域を削減する方法としては、参照フレームの参照ブロックの共有部分を保持しておき、追加部分のみを更新する手法(特許文献3(特開2006−340139号公報))が有効である。
上述した参考となる特許文献は、次の通りである。
特開2005−210503号公報
特開2006−287583号公報
特開2006−340139号公報
しかしながら、特許文献1および特許文献2の手法は、ブロックマッチングの精度を落とすものであって、高い精度が求められないような、ある限定されたアプリケーションにしか適用できないという問題がある。
また、特許文献3の手法によれば、ブロックマッチング精度を落とさずにバス帯域を削減することができるが、マッチング処理を行うブロックの順番が重要になり、隣り合うブロックを続けてマッチング処理しない場合、マッチング処理の順番が特定できない場合などについてはバス帯域削減を図れないという問題がある。
また、画像メモリに対してシステムバスを介して、ブロックマッチング処理部以外の複数個の画像データ処理部が接続されている場合に、画像メモリに対する画像データのメモリアクセスの仕方を、ブロックマッチング処理のためには効率が良い方式を採用したとしても、他の画像データ処理部については、その画像メモリに対する画像データのメモリアクセス手法が適しておらず、かえってバス帯域を増大する方向になってしまう場合があるという問題がある。
この発明は、以上の点にかんがみ、画像メモリに対してシステムバスを介して、複数個の画像データ処理部が接続されている場合において、上述の問題点を回避しながら、バス帯域の削減を図ることができる画像処理装置および画像データのメモリアクセス方法を提供することを目的とする。
上記の課題を解決するために、この発明は、
複数画面分の画像データを記録可能な画像メモリ部と、
入力される画像データについて第1の処理を行って、前記画像メモリ部に、その処理結果の画像データを格納する第1の画像処理部と、
前記画像メモリ部から前記処理結果の画像データを読み出して第2の処理を行なう第2の画像処理部と、
前記画像メモリ部から前記処理結果の画像データを読み出して第3の処理を行なう第3の画像処理部と、
前記画像メモリ部と、前記第1の画像処理部と、前記第2の画像処理部と、前記第3の画像処理部とが接続されるバスと、
前記画像メモリ部に対する前記バスを介した画像データの書き込みおよび読み出しを制御するメモリコントローラと、
を備え、
前記第1の画像処理部での前記第1の処理の結果の画像データは、前記メモリコントローラにより、画面の垂直方向のライン数と水平方向の画素数との組み合わせが第1の組み合わせとされた第1のブロック単位で、前記画像メモリ部の第1のメモリ領域に書き込まれると共に、画面の垂直方向のライン数と水平方向の画素数との組み合わせが、前記第1の組み合わせとは異なる第2の組み合わせとされた第2のブロック単位で、前記画像メモリ部の第2のメモリ領域に書き込まれるようにされ、
前記第2の画像処理部には、前記メモリコントローラにより、前記画像メモリ部の前記第1のメモリ領域に書き込まれた画像データが読み出されて供給され、
前記第3の画像処理部には、前記メモリコントローラにより、前記画像メモリ部の前記第2のメモリ領域に書き込まれた画像データが読み出されて供給される
ことを特徴とする画像処理装置を提供する。
複数画面分の画像データを記録可能な画像メモリ部と、
入力される画像データについて第1の処理を行って、前記画像メモリ部に、その処理結果の画像データを格納する第1の画像処理部と、
前記画像メモリ部から前記処理結果の画像データを読み出して第2の処理を行なう第2の画像処理部と、
前記画像メモリ部から前記処理結果の画像データを読み出して第3の処理を行なう第3の画像処理部と、
前記画像メモリ部と、前記第1の画像処理部と、前記第2の画像処理部と、前記第3の画像処理部とが接続されるバスと、
前記画像メモリ部に対する前記バスを介した画像データの書き込みおよび読み出しを制御するメモリコントローラと、
を備え、
前記第1の画像処理部での前記第1の処理の結果の画像データは、前記メモリコントローラにより、画面の垂直方向のライン数と水平方向の画素数との組み合わせが第1の組み合わせとされた第1のブロック単位で、前記画像メモリ部の第1のメモリ領域に書き込まれると共に、画面の垂直方向のライン数と水平方向の画素数との組み合わせが、前記第1の組み合わせとは異なる第2の組み合わせとされた第2のブロック単位で、前記画像メモリ部の第2のメモリ領域に書き込まれるようにされ、
前記第2の画像処理部には、前記メモリコントローラにより、前記画像メモリ部の前記第1のメモリ領域に書き込まれた画像データが読み出されて供給され、
前記第3の画像処理部には、前記メモリコントローラにより、前記画像メモリ部の前記第2のメモリ領域に書き込まれた画像データが読み出されて供給される
ことを特徴とする画像処理装置を提供する。
上述の構成のこの発明においては、第1の画像処理部での処理結果の画像データは、第2の画像処理部での画像処理において、バス効率が良好となり、バス帯域の削減が可能な第1のブロック単位で画像メモリ部に書き込み、読み出して、第2の画像処理部に転送することができる。
これと共に、第1の画像処理部での処理結果の画像データは、第3の画像処理部での画像処理において、バス効率が良好となり、バス帯域の削減が可能な第2のブロック単位で画像メモリ部に書き込み、読み出して、第3の画像処理部に転送することができる。
この発明によれば、画像メモリに対してシステムバスを介して、複数個の画像処理部が接続されている場合においても、複数の画像処理部のそれぞれに最適の画像データフォーマットで、画像メモリ部をアクセスすることができ、バス帯域の削減を図ることができる。
以下、この発明による画像処理装置の実施形態として、撮像装置の場合を例にとって、図を参照しながら説明する。また、画像処理として、ブロックマッチングにより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)などを含むものとしている。
画像メモリ部4は、この画像メモリ部4に対する書き込みおよび読み出しを制御するメモリコントローラ8を介して、システムバス2に接続されている。
ユーザ操作入力部3を通じた撮像記録開始操作を受けて、図1の撮像装置の撮像信号処理系は、後述するような撮像画像データの記録処理を行なう。また、ユーザ操作入力部3を通じた撮像記録画像の再生開始操作を受けて、図1の撮像装置の撮像信号処理系10は、記録再生装置部5の記録媒体に記録された撮像画像データの再生処理を行なう。なお、撮像信号処理系10の後述する各部は、制御レジスタ部7を通じたCPU3の制御コマンドを受けて、CPU3の制御を受けながら、それぞれの処理を実行するものである。
図1に示すように、撮像信号処理系10においては、撮像レンズ10Lを備えるカメラ光学系(図示は省略)を通じた被写体からの入射光は、撮像素子11に照射されて撮像される。この例では、撮像素子11は、CCD(Charge Coupled Device)イメージャで構成されている。なお、撮像素子12は、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では、この実施の形態では、基本的には、図64〜図69を用いて説明した、SAD値を用いてブロックマッチング処理を行うことで、動きベクトル検出を行うようにする。ただし、この実施の形態では、動き検出・動き補償部16は、後述するようなハードウエアで構成され、共通のハードウエアで階層化したブロックマッチング処理を行うようにする。また、後述するように、共通のハードウエアで、静止画についてのノイズ低減処理と、動画についてのノイズ低減処理とが実現できるように構成している。
動き検出・動き補償部16では、この実施の形態では、基本的には、図64〜図69を用いて説明した、SAD値を用いてブロックマッチング処理を行うことで、動きベクトル検出を行うようにする。ただし、この実施の形態では、動き検出・動き補償部16は、後述するようなハードウエアで構成され、共通のハードウエアで階層化したブロックマッチング処理を行うようにする。また、後述するように、共通のハードウエアで、静止画についてのノイズ低減処理と、動画についてのノイズ低減処理とが実現できるように構成している。
<実施の形態の階層化ブロックマッチング処理の概要>
一般的な従来のブロックマッチングにおける動きベクトル検出処理は、ピクセル(画素)単位(1ピクセル単位または複数ピクセル単位)で参照ブロックを移動させて、各移動位置における参照ブロックについてのSAD値を算出し、その算出したSAD値の中から最小値を示すSAD値を検出し、当該最小SAD値を呈する参照ブロック位置に基づいて動きベクトルを検出するようにする。
一般的な従来のブロックマッチングにおける動きベクトル検出処理は、ピクセル(画素)単位(1ピクセル単位または複数ピクセル単位)で参照ブロックを移動させて、各移動位置における参照ブロックについてのSAD値を算出し、その算出したSAD値の中から最小値を示すSAD値を検出し、当該最小SAD値を呈する参照ブロック位置に基づいて動きベクトルを検出するようにする。
しかし、このような従来の動きベクトル検出処理では、サーチ範囲内をピクセル単位で参照ブロックを移動させるようにするので、検索するサーチ範囲に比例して、SAD値を算出するマッチング処理回数が多くなって、マッチング処理時間が大きくなると共に、SADテーブルの容量も大きくなるという問題があった。
そこで、この実施の形態では、ターゲット画像(ターゲットフレーム)および参照画像(参照フレーム)に対して縮小画像を作成し、作成した縮小画像でブロックマッチングを行い、縮小画像での動き検出結果を基に、もとのターゲット画像でのブロックマッチングを行う。ここで、縮小画像のことを縮小面、縮小化をしていない元の画像のことを基底面と呼ぶことにする。したがって、この第2の実施の形態では、縮小面でのブロックマッチングを行ったあと、そのマッチング結果を用いて基底面でのブロックマッチングを行う。
図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値とを用いて、この例においても二次曲線近似補間処理を行って、サブピクセル精度の基底面高精度動きベクトルを算出するようにする。
サブピクセル精度の基底面高精度動きベクトルについて説明する。前述したブロックマッチング手法では、ピクセル単位でブロックマッチングを行っているため、動きベクトルはピクセル精度でしか算出されない。図69に示したように、マッチング処理を行った点、つまり、参照ブロックの位置は、ピクセル精度で存在し、より精度の高い動きベクトルを算出するには、サブピクセル単位でのマッチング処理が必要になる。
N倍のピクセル精度(画素ピッチは、1/N)の動きベクトルを算出するために、N倍のピクセル単位でマッチング処理を行うと、SADテーブルは約N2倍の大きさになり、膨大なメモリが必要になる。また、ブロックマッチング処理のために、N倍にアッパーサンプルした画像を生成しなくてはならず、ハードウエアの規模は飛躍的に増大する。
そこで、二次曲線を用いて、SADテーブルを補間することで、ピクセル単位でマッチング処理を行ったSADテーブルから、サブピクセル精度の動きベクトルを算出することを考える。この場合において、二次曲線近似補間ではなく、線形補間や、3次以上の高次の近似曲線補間を用いても良いが、精度とハードウエア化との兼ね合いから、この例では、二次曲線近似補間を用いている。
この二次曲線近似補間においては、図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が接続されている。また、画像メモリ部4と、システムバス2との間には、画像メモリ部4に対する書き込みおよび読み出しのメモリアクセスを制御するためのメモリコントローラ8が接続されている。ここで、システムバス2でのプロトコルは、この例では、AXIインターコネクトが用いられている。
静止画撮像時においては、ターゲットブロックバッファ部161には、画像メモリ部4に記憶されている縮小面ターゲット画像Prtまたは基底面ターゲット画像Pbtの画像フレームからの縮小面ターゲットブロックまたは基底面ターゲットブロックが、メモリコントローラ8による読み出し制御にしたがって画像メモリ部4から読み出されて、書き込まれる。
縮小面ターゲット画像Prtまたは基底面ターゲット画像Pbtは、1枚目は、シャッターボタン押下後の最初の撮像フレームの画像が画像メモリ部4から読み出されて、ターゲットフレーム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のマッチング処理結果からターゲットブロックに対する参照ブロックの動きベクトルを検出する。この実施形態では、動きベクトル算出部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からのターゲットブロックおよび動き補償ブロックを受けて、両者の加算率を、採用する加算方式が単純加算方式であるか、または平均加算方式であるかに応じて定め、定めた加算率を、ターゲットブロックおよび動き補償ブロックと共に加算部172に供給する。
加算部172での加算結果の基底面NR画像は、基底面出力バッファ部173およびバス・インターフェース23を通じて画像メモリ部4に書き込まれる。また、加算部172での加算結果の基底面NR画像は、縮小面生成部174にて縮小面NR画像に変換され、当該縮小面生成部174からの縮小面NR画像が、縮小面出力バッファ部175およびバス・インターフェース24を通じて画像メモリ部4に書き込まれる。
[撮像画像のノイズ低減処理の概要の流れ]
<静止画撮影時>
上述の構成の実施の形態の撮像装置において、静止画撮影時における画像の重ね合わせによるノイズ低減処理のフローチャートを、図17および図18に示す。この図17および図18のフローチャートの各ステップは、CPU1およびこのCPU1により制御される動き検出・動き補償部16のコントロール部165の制御の下に実行されると共に、画像重ね合わせ部17により実行されるものである。
<静止画撮影時>
上述の構成の実施の形態の撮像装置において、静止画撮影時における画像の重ね合わせによるノイズ低減処理のフローチャートを、図17および図18に示す。この図17および図18のフローチャートの各ステップは、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)、また、画像メモリ部4から、参照ブロックバッファ部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枚でよいので、図17および図18の処理ルーチンのノイズ低減処理方法に比べて、撮影間隔は長くなるが、メモリコストを最小にすることが可能である。
<動画撮影時>
次に、この実施の形態の撮像装置において、動画撮影時における画像の重ね合わせによるノイズ低減処理のフローチャートを、図19に示す。この図19のフローチャートの各ステップも、CPU1およびこのCPU1により制御される動き検出・動き補償部16のコントロール部165の制御の下に実行されるものである。動画記録ボタンがユーザにより操作されると、CPU1は、図19の処理をスタートから開始するように指示する。
次に、この実施の形態の撮像装置において、動画撮影時における画像の重ね合わせによるノイズ低減処理のフローチャートを、図19に示す。この図19のフローチャートの各ステップも、CPU1およびこのCPU1により制御される動き検出・動き補償部16のコントロール部165の制御の下に実行されるものである。動画記録ボタンがユーザにより操作されると、CPU1は、図19の処理をスタートから開始するように指示する。
この実施の形態では、動き検出・動き補償部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においては、ターゲットブロックと動き補償ブロックの重ね合わせを行い、その重ね合わせた結果のNR画像の画像データを、画像メモリ部4に書き込む(ステップS27)。そして、画像重ね合わせ部17は、NR画像の画像データを、次のターゲットフレームに対する参照フレームとして、また、NTSCエンコーダ20を通じてモニターディスプレイ6に出力する動画記録モニターとして、さらに、動画コーデック部19を通じて記録再生装置部6に記録する記録用として、画像メモリ部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値を計算し、その計算処理を、サーチ範囲内のすべての参照ベクトルの示す位置の参照ブロックについて行う。
ここで、サーチ範囲内において参照ブロックの位置を変えて、動き補償ブロックをサーチする場合に、サーチを画面(フレーム)の端から順番に行う、画面(フレーム)の中心から外側に向かって行う、などいろいろな方法が考えられるが、この実施の形態では、サーチ方向は、図20(A)で矢印120に示すように設定され、サーチ範囲の左上端から水平方向にサーチを開始し、1ライン分のサーチが終わった後、垂直方向に1ライン下のラインを、左端から水平方向にサーチする、という手順を繰り返すサーチ方法を採用する。
すなわち、図20(B)に示すように、サーチ範囲106において、当該サーチ範囲106の左上から水平方向に参照ブロック108を順次に設定してサーチして、各参照ブロック108についてのSAD値の計算を行う。すると、図20(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テーブルを生成することなく、保持することができる。
このとき、この例では、図21(A)に示すように、上述の図20(A)に示したようなサーチ方法を採用しているので、従来のSADテーブルTBLにおいて水平方向の1ライン分のSAD値を記憶する容量のメモリ(以下、ラインメモリという)を設ければ、新たに参照ブロックのSAD値が算出されたときには、SADテーブルTBL上では、図21(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)(図21(C)の符号125参照)は、後で、その参照ブロック位置で算出されたSAD値を保持すればよい。同様に、SADテーブルTBL上において、新たに算出された最小SAD値の参照ブロックの位置の1ライン下の位置の参照ブロックのSAD値である近傍SAD値(Sy2)(図21(C)の符号126参照)も、後で、その参照ブロック位置で算出されたSAD値を保持すればよい。
以上のことを考慮して、この動きベクトル算出部164の第1の例は、図22に示すようなハードウエア構成とする。
すなわち、この動きベクトル算出部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の例における縮小面でのブロックマッチング処理時の流れの例を図23のフローチャートに、基底面でのブロックマッチング処理時の流れの例を図24および図25のフローチャートに、それぞれ示す。これらの第1の例のフローチャートの各ステップは、コントロール部165の制御の基に、マッチング処理部163および動きベクトル算出部164においてなされるものである。
先ず、縮小面におけるブロックマッチング処理時の流れの例である図23のフローチャートについて説明する。
はじめに、動きベクトル算出部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)。
以上で、この例における縮小面におけるブロックマッチング処理を終了する。
次に、基底面におけるブロックマッチング処理時の流れの例である図24および図25のフローチャートについて説明する。
はじめに、動きベクトル算出部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に送ると共に、図21(B)から分かるように、ラインメモリ1647の最も古いSAD値およびその位置情報(基底面参照ベクトル)と、最も新しいSAD値およびその位置情報(基底面参照ベクトル)とを、最小SAD値の位置の1ピクセル上の位置の基底面参照ブロックのSAD値Sy1の情報および1ピクセル左の位置の基底面参照ブロックのSAD値Sx1の情報として、SAD値保持部1643に送る。SAD値保持部1643は、受け取った新たな最小SAD値Sminの情報および1ピクセル上の位置の基底面参照ブロックのSAD値Sy1の情報および1ピクセル左の位置の基底面参照ブロックのSAD値Sx1の情報により、それぞれ対応する保持情報を更新する。
そして、ステップ47の次には、図25のステップ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)、未だ、サーチ範囲においては、未処理の基底面参照ブロックがあると判別したときには、図28のステップ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の例のハードウエア構成例を、図26に示す。すなわち、この動きベクトル算出部164の第3の例においては、第1の例のラインメモリ1647は備えずに、図26に示すように、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への書き込みを行わない点を除いて、図23に示した第1の例の場合と同様であるので、ここでは、説明を省略する。そして、この第2の例における基底面でのブロックマッチング処理時の流れの例を、図27のフローチャートを参照しながら説明する。
はじめに、動きベクトル算出部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の例の場合には、ラインメモリをも必要としないので、メモリ容量の大幅な削減をすることができる。
[階層化ブロックマッチング処理の流れの例]
次に、図28および図29に、この実施の形態における動き検出・動き補償部16での階層化ブロックマッチング処理の動作例のフローチャートを示す。
次に、図28および図29に、この実施の形態における動き検出・動き補償部16での階層化ブロックマッチング処理の動作例のフローチャートを示す。
なお、この図28および図29に示す処理の流れは、前述したマッチング処理部163、動き算出部164の処理例の流れとしての説明と、一部重複するものとなるが、この実施の形態の動作を、より理解し易くするために、説明するものである。
はじめに、動き検出・動き補償部16において、ターゲットブロックバッファ部161から、ターゲットブロックの縮小画、つまり、縮小面ターゲットブロックを読み込む(図28のステップ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値の初期値を設定する(図29のステップ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枚の参照フレームについてのこの例のブロックマッチング処理を終了する。
次に、この実施の形態による階層化ブロックマッチング手法を用いた画像処理方法の効果を、具体例を挙げて説明する。
図30に、上述の実施の形態の説明で用いた基底面、縮小面での、参照ブロック、サーチ範囲、マッチング処理範囲の具体例を示す。図30の例は、水平方向および垂直方向の縮小倍率1/nは、n=4に設定した場合である。
比較例として、図30(A)および(B)に示すように、例えば、縮小画像を用いない参照ブロック108は、横(水平)×縦(垂直)=32×32ピクセルとし、また、サーチ範囲106は、横(水平)×縦(垂直)=144×64ピクセル、マッチング処理範囲110は、横(水平)×縦(垂直)=176×96ピクセルとする。
すると、上述した実施の形態において、水平方向および垂直方向に、1/n=1/4に縮小された縮小面では、図30(C)および(D)に示すように、縮小面参照ブロック139は、横(水平)×縦(垂直)=8×8ピクセル、縮小面サーチ範囲137は、横(水平)×縦(垂直)=36×16ピクセル、縮小面マッチング処理範囲143は、横(水平)×縦(垂直)=44×24ピクセルとなる。
水平方向および垂直方向に、1/4に縮小された縮小面で、ブロックマッチングを行った場合、縮小面動きベクトルは、4ピクセル精度の動きベクトルであり、単純に4倍しただけでは、1ピクセル精度の動きベクトルに対して誤差が生じる。すなわち、基底面での画素が図35に示すようなものとした場合、基底面でのマッチング処理点148は、当該基底面の全ての画素が対象となるが、1/4に縮小された縮小面で、ブロックマッチングを行う場合のマッチング処理点は、図31において、黒丸で示す4ピクセル単位のマッチング処理点147となっているからである。
しかし、少なくとも、1ピクセル精度の動きベクトルは、縮小面動きベクトルが指し示す縮小面でのマッチング処理点の周囲、4ピクセル範囲以内に存在するであろうことは予測できる。
そこで、この実施の形態では、算出された縮小面動きベクトルを元に基底面サーチ範囲を定める基底面マッチングでは、縮小面動きベクトルを縮小倍率の逆数である4倍した参照ベクトルが指し示すピクセル位置を中心に、基底面ターゲットブロックを設定するとともに、4ピクセル分のサーチ範囲(基底面サーチ範囲140)を決定して、基底面ブロックマッチングを行い、再度動きベクトルを算出する。
したがって、図30(E)および(F)に示すように、基底面参照ブロック142は、横(水平)×縦(垂直)=32×32ピクセル、基底面サーチ範囲140は、横(水平)×縦(垂直)=4×4ピクセル、基底面マッチング処理範囲144は、横(水平)×縦(垂直)=40×40ピクセルとなる。
図32に、この実施の形態のように、縮小面マッチングと、基底面マッチングの2階層マッチングを行う場合において、SADテーブルを使用すると仮定した場合における、基底面、縮小面での、SADテーブルのサイズを示す。なお、図32の例は、図30に示した具体例に対応したものである。
縮小する前の144×64のサーチ範囲(図30(B)参照)の場合におけるSADテーブルTBLは、図32(A)に示すように、145×65点である。
これに対して、36×16の縮小面サーチ範囲(図30(D)参照)の場合における縮小面SADテーブルは、図32(B)に示すように、37点×17点となる。
また、4×4の基底面サーチ範囲(図30(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テーブルさえも不要となるので、さらに回路規模を小さくすることができる。
以上のようにして、上記の実施の形態によれば、階層化したマッチング処理を行った後、基底面において補間処理をすることにより、広いサーチ範囲で、サブピクセル精度の動きベクトル検出を行うことが可能になる。
なお、図33に、この実施形態の階層化ブロックマッチング方式における、縮小面および基底面におけるターゲットブロックサイズおよびマッチング処理範囲の例を示す。この図33の例は、縮小面ターゲットブロック133のサイズを、図33(A)に示すように、横×縦=8×8画素で固定値としている。このため、縮小面マッチング処理範囲143は、図33(B)に示すように、横×縦=44×24画素分となる。
そして、基底面ターゲットブロック131のサイズ、基底面マッチング処理範囲144のサイズおよび基底面参照ベクトル数は、図33(C)に示すようなものとなる。この図33(C)は、基底面に対する縮小面の縮小倍率が1/2、1/4、1/8の場合の例のそれぞれにおける基底面ターゲットブロック131のサイズ、基底面マッチング処理範囲144のサイズおよび基底面参照ベクトル数を示している。
[静止画NR処理時におけるメモリ容量削減および効率的なメモリアクセス]
上述したように、この実施形態では、静止画NR処理、および動画NR処理に対応している。動画NR処理では、精度よりもリアルタイム性、すなわちスピードが要求されるのに対して、静止画NR処理は多少処理時間がかかっても、ノイズの取れた綺麗な画像が求められる。
上述したように、この実施形態では、静止画NR処理、および動画NR処理に対応している。動画NR処理では、精度よりもリアルタイム性、すなわちスピードが要求されるのに対して、静止画NR処理は多少処理時間がかかっても、ノイズの取れた綺麗な画像が求められる。
前述したように、画像の重ね合わせ方法をシステムアーキテクトの観点から大きく分類すると、静止画撮影時の高速連写中に、リアルタイムに画像の重ね合わせを行う手法である撮影中加算法と、前記高速連写後に、すべての参照画像が揃ってから画像の重ね合わせを行う手法である撮影後加算法の、2種類がある。十分な処理時間をかけてNR処理を行うには、撮影中加算法ではなく、撮影後加算法の方が望ましく、この実施形態では、撮影後加算法を採っている。
しかしながら、撮影後加算法は、参照画像を画像メモリに保持しておかなくてはならず、重ね合わせ枚数が増えるほど、画像メモリとして大容量が必要になるという問題がある。
この実施形態では、この問題点にかんがみ、静止画NR処理時に、撮影後加算法を用いるに当たって、画像メモリ部4の容量をできるだけ削減すると共に、効率的にメモリアクセスを行うことができるように工夫している。以下、この点について説明する。
<静止画NR処理時のメモリアクセス時のデータフォーマット>
先ず、この実施形態における画像メモリ部4に対するメモリアクセス時のデータフォーマットについて説明する。
先ず、この実施形態における画像メモリ部4に対するメモリアクセス時のデータフォーマットについて説明する。
図13および図16のブロック図に示したように、動き検出・動き補償部16および画像重ね合わせ部17とは、それぞれバス・インターフェース部21,22,23,24を介してシステムバス2に接続されている。
この実施形態におけるシステムバス2は、バス幅は、例えば64ビットであり、メモリコントローラ8によるバースト長(所定の複数画素データ単位でバースト転送を連続して行える回数)は、例えば最大16バーストとされている。つまり、バースト転送の最大連続可能回数qは、この例では、q=16とされている。
動き検出・動き補償部16のターゲットブロックバッファ部161および参照ブロックバッファ部162からの読み込み要求が、バス・インターフェース部21,22を通じてメモリコントローラ8に供給され、当該メモリコントローラ8にて、画像メモリ部4の所定のメモリに対して、スタートアドレス、バースト長、その他のバスプロトコルを生成して、アクセスしている。
この実施形態の撮像装置で使用している画像データは、1画素が、輝度信号Yとクロマ信号C(Cr,Cb)とからなる。そして、Y:Cr:Cb=4:2:2のフォーマットであり、輝度信号Y、クロマ信号C(Cr,Cb)は、共に符号なしの8ビット(Cr=4ビット、Cb=4ビット)であって、64ビットのメモリアクセス幅に、YC4画素分が並んでいるものである。システムバス2のデータ処理単位(1バースト転送で転送可能なデータ量)は、64ビットであり、1画素分のYC画素データが16ビットであるので、4画素分になる。つまり、1バースト転送で転送可能な画素数pは、この例では、p=4画素である。
図1に示したようなグローバルなシステムバス2に、撮像装置の各処理部がつながっている場合、バス帯域と、各処理部で共有しているメモリコントローラ8の処理単位とは、密接な関係がある。ここで、バス帯域とは、データを転送するバス上で、輻輳を回避してデータ転送することができるデータレートおよびバス幅(ビット数)などからなる量である。
ところで、上述したように、この実施形態では、メモリコントローラ8が処理できる最大バースト長は16バーストである。例えば、同じデータサイズの画像データを、画像メモリ部4のメモリに書き込む場合でも、16バーストの転送をたくさん使える方が、バスのアービトレーション回数も減り、メモリコントローラ8によるメモリアクセス処理の効率が良く、バス帯域を削減できる。
したがって、この実施形態では、YC画素データの4画素分のデータ(64ビット)を16バーストでバスアクセスすることができると、効率が良い。これを画素数に換算すると、4×16=64画素分のデータになる。
そこで、この実施形態では、図34(A)に示すように、1画面分の画像の水平方向を、1バースト転送(64画素)単位で分割して、1画面分の画像を、縦長の分割ブロックの画像単位(以下、短冊と称する)の複数個からなるものとすることを考える。そして、画像メモリ部4に対する画像データのメモリアクセスのフォーマットの1つとして、画像データを、この短冊単位で、画像メモリ部4に書き込み、また、画像メモリ部4から読み出しするメモリアクセス方式(以下、短冊アクセス形式と称する)を採用する。静止画NR処理時には、基本的に、この短冊アクセス形式により画像メモリ部4に対する画像データのメモリアクセスを行う。
ここで、水平方向の64画素を16バーストでバスアクセスするフォーマットを、64×1フォーマットと称することとする。この64×1フォーマットは、図36(B)に示すように、4画素毎のバースト転送を、最大連続バースト回数である16回、連続して繰り返すメモリアクセス方式である。メモリコントローラ8は、64×1フォーマットのバスアクセスを実行するためのアドレス生成部(図示は省略)を備えている。すなわち、図36(B)に示すように、4画素毎のバースト転送の先頭のアドレスA1,A2,A3・・・A16が定まると、自動的に、64×1フォーマットのバスアクセスができる。メモリコントローラ8は、64×1フォーマットのメモリアクセスを実行するためのアドレス生成部(図示は省略)を備えている。
そして、短冊アクセス形式は、64×1フォーマットを、画面の垂直方向に連続して行う方式ということになる。64×1フォーマットを、水平方向に繰り返し、1ライン分の全てのアクセスを終了したら、次のラインについて同様のアクセスをすることで、ラスタースキャン形式の画像データのアクセスができる。
この実施形態のメモリコントローラ8は、このような短冊アクセス形式を実行するためのアドレス生成部(図示は省略)を備えている。
なお、水平方向の画像データが64画素で割り切れない場合は、図34で、影線を付して示すように、水平方向の右端にダミー領域151を設けて、このダミー領域151に、例えば黒や白の画素データをダミーデータとして付加し、水平方向の画素数が、64の倍数になるようにしている。
従来のラスタースキャン方式は、画像メモリへのアクセスに対して、水平方向にアドレスが連続しているため、1ラインずつデータを読むのに適しているのに対して、短冊アクセス形式は、1バースト転送(64画素)単位で垂直方向にアドレスがインクリメントするため、水平方向が64画素以内であるブロック状のデータを読むのに適している。
例えば、64画素×64ラインの短冊形式のブロックを読み込む際には、画像メモリ部4に対して、メモリコントローラ8は、YC画素データの4画素分のデータ(64ビット)を16バーストでバスアクセスすると、当該16バーストで、4×16=64画素分のデータになるので、水平方向の64画素からなる1ライン目のアドレスの設定以降は、垂直方向にアドレスをインクリメントしていくだけで、残り63ライン分の画素データのアドレス設定をすることが可能である。
この実施形態では、動き検出・動き補償部16が、上記の短冊アクセス形式で画像メモリ部4にアクセスできるように、その前段にある、画像補正・解像度変換部15においても、短冊アクセス形式のアクセスに対応している。また、この実施形態では、静止画撮影時の静止画NR処理においては、高速連写撮影して得た複数枚の撮像画像を、圧縮して画像メモリ部4に記憶しておき、必要に応じて伸長デコードして読み出して、動き検出・動き補償部16でのブロックマッチング処理ができるようにするため、静止画コーデック部19においても、短冊アクセス形式に対応している。
図35(A)は、1画面分の画像が、横×縦=640×480画素からなる例における短冊単位の分割例である。この例においては、1画面分の画像が、水平方向の64画素単位で分割される結果、10個の短冊T0〜T9に分けられている。
前述した図33に示した縮小倍率1/4の場合では、1つの短冊の中には、図35(B)に示すように、32×32画素の基底面ターゲットブロックが、B0〜B29として示すように、水平方向に2個、垂直方向に15個、合計30個入っている。
静止画NR処理時において、画像メモリ部4から基底面ターゲットブロックを読み込むときは、短冊アクセス形式の利点を活かすために、この実施形態では、64画素×1ラインずつアクセスし、バス効率を上げるようにしている。
例えば、図36に示すように、基底面に対する縮小面の縮小倍率が1/2のときは、この実施形態では、基底面ターゲットブロックの大きさは、横×縦=16画素×16ラインとされる。したがって、この基底面ターゲットブロックを4個、水平方向に並べると、水平方向の画素数が64画素となる。そこで、この実施形態では、縮小倍率1/2のときは、図36の右側に示すように、画像メモリ部4に対するアクセス単位を、当該ターゲットブロックの4個とし、上述した64×1フォーマットの短冊アクセス形式でアクセスする。つまり、4個のターゲットブロックは、水平方向の64画素単位のアクセス(4画素×16バースト)を、アドレスを垂直方向に変更しながら、16回繰り返すことで転送することができる。
同様にして、図36に示すように、基底面に対する縮小面の縮小倍率が1/4のときは、この実施形態では、基底面ターゲットブロックの大きさは、横×縦=32画素×32ラインとされるので、基底面ターゲットブロックは2個ずつ、画像メモリに対してアクセスするようにすることで、上述した64×1フォーマットの短冊アクセス形式でアクセスすることができる。また、基底面に対する縮小面の縮小倍率が1/8のときは、この実施形態では、基底面ターゲットブロックの大きさは、横×縦=64画素×64ラインとされるので、基底面ターゲットブロックは1個ずつ、画像メモリに対してアクセスするようにすることで、上述した64×1フォーマットの短冊アクセス形式でアクセスすることができる。
短冊アクセス形式は、バス帯域という面だけでなく、上記の回路の内部処理においても、非常に有益な手法である。第一に、垂直方向のフィルタ処理等を行うための、垂直フィルタ処理部の内部ラインメモリのサイズを削減することができる。
すなわち、ラスタースキャン形式で画素データのアクセスをする場合には、垂直方向のフィルタ処理のためには、1ライン分のすべての画素が垂直フィルタ処理部の内部ラインメモリに蓄積された後でないと、次のラインの画素データの蓄積が開始されないので、内部ラインメモリは、1ライン分の容量のラインメモリを複数個必要とするが、短冊アクセス形式の場合には、上述の例では、64画素単位で、垂直方向の次のラインの画素データが到来することになるので、垂直フィルタ処理部の内部ラインメモリは、64画素分の容量のラインメモリを複数個備えるだけでよくなり、ラインメモリのサイズを削減することができる。
また、解像度変換処理のような、ブロック形式で処理を行う回路にとっては、ラスタースキャン形式から任意のブロックに変換するよりも、短冊形式から任意のブロック形式に変換した方が、効率が良いという利点がある。
<静止画撮影時の静止画NR処理における撮像画像の圧縮、伸長処理>
前述したように、この実施形態では、静止画撮影時の静止画NR処理における加算処理としては、撮影後加算処理を採用している。このため、静止画撮影時の静止画NR処理においては、全ての参照画像を、画像メモリ部4に保持しておく必要がある。すなわち、この実施形態では、シャッターボタンが押下されると、撮像装置では、高速連写により、2枚以上の複数枚の撮像画像が取り込まれ、画像メモリ部4に格納される。
前述したように、この実施形態では、静止画撮影時の静止画NR処理における加算処理としては、撮影後加算処理を採用している。このため、静止画撮影時の静止画NR処理においては、全ての参照画像を、画像メモリ部4に保持しておく必要がある。すなわち、この実施形態では、シャッターボタンが押下されると、撮像装置では、高速連写により、2枚以上の複数枚の撮像画像が取り込まれ、画像メモリ部4に格納される。
撮影中加算方式では、画像メモリ部4には、最大2フレーム分の参照画像を保持するだけでよいのに対して、撮影後加算方式では、それ以上の枚数の参照画像を画像メモリ部4に保持する必要がある。そこで、この実施形態では、画像メモリ4の容量を削減するため、高速連写により取り込んだ撮像画像は、静止画コーデック部18で画像データ圧縮符号化して、画像メモリ部4に格納し、取り込んだ画像を参照画像として用いるときには、圧縮符号化されている画像データを伸長復号化して用いるようにする。
静止画撮影時の静止画NR処理の流れについては、図17および図18に示したフローチャートに概要を説明したが、この図17および図18に示したフローチャート中の幾つかのステップにおいて、画像データの圧縮符号化処理または伸長復号化処理がなされることになる。
図17のステップS1においては、シャッターボタン操作に基づく高速連写により取り込まれた複数枚の撮像画像が画像メモリ部4に書き込まれるが、その際、取り込まれた撮像画像の画像データは、静止画コーデック部18で圧縮符号化される。図37に、このときの画像データの流れを、点線で示す。
すなわち、撮像素子11からの撮像画像は、前処理部13でセンサー補正などの前処理がなされた後、RAW信号形式(カメラ信号処理を行う前のデータ形式)で、一旦、画像メモリ部4に格納される。
その後、撮影画像は、画像メモリ部4から短冊アクセス形式で読み出されてデータ変換部14でRAW信号からYC画素データに変換され、画像補正・解像度変換部15で画像補正、解像度変換などが行われた後、画像メモリ部4を介さずに、直接、静止画コーデック部18で、この例ではJPEG(Joint Photographic Experts Group)方式で圧縮符号化されて圧縮された状態で、画像メモリ部4に書き込まれる。したがって、ここでは、画像を圧縮する単位は、画像の1枚単位ではなく、短冊単位になる。高速連写時は、以上の手順が複数枚分、繰り返して行われて、画像メモリ部4には、当該複数枚の撮像画像データの圧縮データが格納保持される。
高速連写されて取り込まれた全ての撮像画像の圧縮符号化および画像メモリ部4への格納が終わったら、図17のステップS3の処理のうちのターゲット画像の設定処理を行う。図38に、このときの画像データの流れを示す。
すなわち、シャッターボタンが押下されてから最初に取り込まれた撮像画像の圧縮画像データが画像メモリ部4から短冊アクセス形式で読み出されて、静止画コーデック部19に供給され、伸長復号化される。伸長復号化された画像データは、短冊アクセス形式で基底面ターゲット画像Pbtとして、画像メモリ4に書き込まれる。
そして、画像メモリ部4に書き込まれた、伸長復号化された基底面ターゲット画像Pbtの画像データは短冊アクセス形式で読み出されて、動き検出・動き補償部16を通じて画像重ね合わせ部17に供給され、図16に示した画像重ね合わせ部17の縮小面生成部174で縮小化される。そして、この縮小面生成部174からの縮小化されたターゲット画像が、縮小面ターゲット画像Prtとして、短冊単位で画像メモリ部4に書き込まれる。
以上のようにしてターゲット画像についての処理が終了した後、図17のステップS3の処理のうちの参照画像についての設定処理がなされる。このときの画像データの流れを、図39に示す。
すなわち、画像メモリ4に格納されている圧縮符号化された複数枚の撮像画像のうち、ブロックマッチングの参照画像となる、2枚目の撮影画像が画像メモリ部4から短冊アクセス形式で読み出されて、静止画コーデック部18に供給され、伸長復号化される。伸長復号化された画像データは、短冊アクセス形式で基底面参照画像Pbrとして、画像メモリ4に書き込まれる。
そして、画像メモリ部4に書き込まれた、伸長復号化された基底面参照画像Pbrの画像データは短冊アクセス形式で読み出されて、動き検出・動き補償部16を通じて画像重ね合わせ部17に供給され、図16に示した画像重ね合わせ部17の縮小面生成部174で縮小化される。そして、この縮小面生成部174からの縮小化された参照画像が、縮小面参照画像Prrとして、短冊アクセス形式で画像メモリ部4に書き込まれる。
次に、伸長復号化ターゲット画像と、伸長復号化した参照画像とで動き検出・動き補償を行う。これは、図17のステップS4〜ステップS9の処理に相当する。また、図28および図29のフローチャートに示した処理に対応する。図40に、このときの画像データの流れを示す。
先ず、縮小面ブロックマッチング処理を行う。すなわち、画像メモリ部4の縮小面ターゲット画像Prtから、設定された縮小面ターゲットブロックの画像データを短冊アクセス形式で読み出して、動き検出・動き補償部16のターゲットブロックバッファ部161に格納すると共に、縮小面参照画像Prrから、縮小面ターゲットブロックについてのサーチ範囲に対応する縮小面マッチング処理範囲を短冊アクセス形式で読み出して、参照ブロックバッファ部162に格納する。
そして、それぞれのバッファ部161および162から、縮小面ターゲットブロックおよび縮小面参照ブロックの画素データを読み出して、マッチング処理部163で、縮小面ブロックマッチング処理を行い、設定された縮小面ターゲットブロックについての縮小面動きベクトルの検出を行い、設定された縮小面ターゲットブロックについての縮小面動きベクトルを検出する。
次に、縮小面動きベクトルに基づいて、前述したようにして、基底面ターゲットブロックを設定すると共に、基底面サーチ範囲を設定し、画像メモリ部4の基底面ターゲット画像Pbtから、設定された基底面ターゲットブロックを短冊アクセス形式で読み出してターゲットブロックバッファ161に格納すると共に、設定された基底面サーチ範囲に対応する基底面マッチング処理範囲を画像メモリ部4の基底面参照画像Pbrから短冊アクセス形式で読み出し、参照ブロックバッファ部162に格納する。
そして、それぞれのバッファ部161および162から、基底面ターゲットブロックおよび基底面参照ブロックの画素データを読み出して、マッチング処理部163で、基底面ブロックマッチング処理を行い、動きベクトル算出部164で、設定された基底面ターゲットブロックについてのサブピクセル精度の基底面動きベクトルの検出を行う。
そして、動き検出・動き補償部16は、検出された基底面動きベクトルに基づいて、動き補償ブロックを参照ブロックバッファ部162の基底面参照画像から読み出し、基底面ターゲットブロックと共に、画像重ね合わせ部17に供給する。画像重ね合わせ部17では、ブロック単位の画像の重ね合わせを行い、その結果のブロック単位の基底面NR画像Pbnrを、短冊アクセス形式で画像メモリ部4に貼る。また、画像重ね合わせ部17は、その縮小面生成部174で生成した縮小面NR画像Prnrも、画像メモリ部4に貼る。
以上の動作を、ターゲット画像の全てのターゲットブロックについて繰り返し行い、全てのターゲットブロックについてのブロックマッチングが終了したら、3枚目の画像を参照画像とすると共に、基底面NR画像Pbnrおよび縮小面NR画像Prnrを、ターゲット画像として(図18のステップS14)、上述と同様のブロックマッチング処理を繰り返し行う(図17のステップS4〜図18のステップS14)。そして、取り込んだ全ての画像についての処理が終了すると、最終的に得られる基底面NR画像Pbnrを、静止画コーデック部18で圧縮符号化して、記録再生装置部5の記録媒体に記録するようにする。
上述したように、この実施形態では、ターゲット画像と参照画像を重ね合わせたNR画像は、次の重ね合わせを行うときのターゲット画像になる。また、基底面ターゲットブロックは、ブロックマッチング処理が終わった後は、必要のないデータになる。
以上の特徴から、この実施形態において、画像重ね合わせ部17では、基底面ターゲットブロックと動き補償ブロックを重ね合わせたNR済みのブロックを、もとの基底面ターゲットブロックのあったアドレスに上書きしている。
例えば、図41(A),(B)に示すように、今、短冊T5のブロックB4をターゲットブロックとしたブロックマッチング処理をしているときは、短冊T0から短冊T4、および、ブロックB0からブロックB3は、全て、NR済みのブロックということになる。
以上のようにして、画像補正・解像度変換部15で短冊アクセス形式のメモリアクセスを行い、静止画についての圧縮符号化の処理も短冊アクセス形式でアクセスすることで、画像補正・解像度変換部15から静止画コーデック部18に、画像メモリ部4を介さず、直接、画像データを転送することができ、高速連写画像を効率よく圧縮符号化して、画像メモリ部4に格納することができる。
<画像メモリ容量の削減>
次に、参照画像の伸長復号化時の、画像メモリ容量の削減について説明する。
次に、参照画像の伸長復号化時の、画像メモリ容量の削減について説明する。
この実施形態における静止画撮影時の静止画NR処理時においては、画像メモリ部4に圧縮符号化して取り込んだ画像について、ターゲット画像は全て伸長復号化するが、図42の画像データフローに示すように、参照画像については、マッチング処理に使用する短冊単位の画像データだけを伸長復号化することで、画像メモリ容量を削減している。すなわち、画像メモリ部4における伸長復号化された参照画像(基底面および縮小面)を格納する画像メモリの容量を、短冊単位に画像データを伸長復号化することにより、削減している。
このことについて、例を挙げて説明する。例えば、基底面ターゲット画像は、図43(A)に示すように、水平方向が64画素の短冊T0から短冊T9にまで分割されており、基底面参照画像は、図43(B)に示すように、同様に水平方向が64画素の短冊R0から短冊R9にまで分割されているとする。
今、短冊T4の中のターゲットブロックについてブロックマッチングを行っているとすると、基底面参照画像の短冊R0〜R9のうち、マッチング処理範囲としてアクセスする可能性のある短冊は、短冊R4を中心として、いくつかに限定することができる。
例えば、縮小倍率が1/4の場合を例にとると、縮小化して水平方向に44画素のマッチング処理範囲(図33(B)参照)を取るためには、基底面参照画像において、水平方向に176画素の画像データが必要である。したがって、図43(C)から分かるように、基底面参照画像は、図43(B)において塗りを付して示すように、短冊R4を中心に左右に、左右それぞれ2つずつの短冊R1,R2および短冊R3,R4が必要であり、この短冊R2〜R6の5つ分だけを伸長復号化すれば良いことになる。
次に、短冊T4に含まれるターゲットブロックのマッチング処理が全て終わり、図44(A)に示すように、短冊T5に含まれるターゲットブロックのマッチング処理に入った場合について考える。このとき、マッチング処理範囲を取るためには、図44(B)に示すように、短冊R5を中心に左右に2つずつの短冊R3〜R7が必要である。すなわち、短冊R3〜R6は、短冊T4に含まれるターゲットブロックのマッチング処理時に画像メモリ部4に既に格納されているので、新たに短冊R7だけを伸長復号化すれば良いことになる。また、同時に、短冊R2は不要になる。
そこで、この実施形態では、短冊R7を伸長復号化したとき、画像メモリ部4の参照画像用メモリ上で、短冊R2があったアドレスに、伸長復号化した短冊R7を上書きするようにする。これにより、画像メモリ部4の参照画像用メモリ上で、伸長復号化されている参照画像データは、常に短冊5つ分だけになり、画像メモリ部4の参照画像用メモリ、つまり、画像メモリ部4のワーク領域を効果的に節約することが可能である。
上記方法で参照画像データの復号化を行った場合、図45(A)および(B)に示すように、画像メモリ部4の参照画像用メモリ上のアドレスの並びが変わることになる。すなわち、短冊T4内のターゲットブロックに対するものとして、参照画像用メモリの参照画像が、図45(A)に示すように、短冊R4が中心だったときは、画像データは、短冊R2から順番に画像メモリ部の参照画像用メモリに格納されているため、短冊R4の基準座標Sc4から左方向の画素を参照する場合は、基準座標Sc4のアドレスから所望の値を引き算し、基準座標Sc4から右方向の画素を参照する場合は、基準座標Sc4のアドレスに所望の値を足し算することになる。
一方、短冊T5内のターゲットブロックに対するものとして、参照画像用メモリの参照画像が、図45(B)に示すように、短冊R5が中心のときは、右方向に128画素以内の画素を参照する場合は、短冊R5の基準座標Sc5のアドレスに所望の値を足し算し、右方向に129画素以上の画素を参照する場合は、基準座標Sc5のアドレスに所望の値を足し算した後で、合計短冊幅分のアドレス値を引き算する必要がある。
なお、短冊R0〜R9のそれぞれの基準座標Sc0〜Sc9は、参照画像用メモリをアクセスする際のメモリアドレスポインターの例である。メモリアドレスポインターは、図45の例のようなアドレス位置に限られるものではない。
以上のように、静止画についての圧縮符号化の単位も短冊形式にすることで、ブロックマッチング処理に必要な範囲だけ復号化することができ、画像メモリ部4のワーク領域を節約することができる。さらに、画像メモリ上の不要な参照画像の短冊のアドレスに、次に使用する参照画像の短冊を復号化して上書きすることで、ワーク領域上の復号化された参照画像のサイズを、常に一定にすることができる。
なお、図43および図44を用いて説明した例は、参照画像において設定されるマッチング処理範囲の水平方向のサイズSAが、圧縮単位である短冊の水平方向のサイズSB以上(SA>SB)である場合である。
そして、マッチング処理範囲の水平方向のサイズが、短冊の水平方向のサイズの整数倍で、かつ、マッチング処理範囲と短冊の区切り位置とが一致していれば、無駄なデータアクセスがなくなり、効率はさらに上がる。
もしも、参照画像において設定されるマッチング処理範囲の水平方向のサイズが、圧縮単位である短冊の水平方向のサイズよりも小さい場合には、マッチング処理範囲が、1つの短冊に含まれる大きさであって、1つの短冊に含まれていれば、復号化するのは当該1つの短冊でよく、また、マッチング処理範囲が2つの短冊に跨る場合には、その2つの短冊を復号化すればよい。
その場合でも、ターゲットブロックの位置が変化して、マッチング処理範囲の位置が変わったときであって、マッチング処理範囲が2つの短冊に跨る場合になったときには、新たにマッチング処理範囲が跨ることになった短冊のみを復号化すればよいのは、上述の例と同様である。
[動画NR処理時における効率的なメモリアクセス]
前述したように、静止画NR処理は多少処理時間がかかっても、ノイズの取れた綺麗な画像が求められるのに対して、動画NR処理では、精度よりもリアルタイム性、すなわちスピードが要求される。
前述したように、静止画NR処理は多少処理時間がかかっても、ノイズの取れた綺麗な画像が求められるのに対して、動画NR処理では、精度よりもリアルタイム性、すなわちスピードが要求される。
動画NR処理動作の流れは、前述した図19に示した通りであるが、この動画NR処理時における画像データの流れは、図46および図47に示す通りとなる。この図46および図47を参照しながら、動画NR処理時における画像データの流れを説明する。
動画NR処理の場合は、データ変換部14からのYC画像データは、画像補正・解像度変換部15で水平方向の補正がなされた後、画像メモリ部4に、短冊アクセス形式で書き込まれる。そして、画像補正・解像度変換部15は、水平方向の補正画像を画像メモリ部4から短冊アクセス形式で読み出し、垂直方向の補正処理をした後、短冊アクセス形式で、動き検出・動き補償部16へ、リアルタイムにターゲットブロックを送る(図19のステップS21)。
動き検出・動き補償部16は、画像補正・解像度変換部15から送られてきたターゲットブロックをターゲットブロックバッファ部161に格納すると共に、図47に示すように、このターゲットブロックに応じて、ブロックマッチング処理範囲を画像メモリ部4に格納されている参照画像(最初は重ね合わせ無しの画像であるが、2枚目以降は、NR画像)から読み出して、参照ブロックバッファ部162に格納する(図19のステップS23)。
そして、動き検出・動き補償部16は、ターゲットブロックバッファ部161からのターゲットブロックと、当該ブロックマッチング処理範囲から参照ブロックとを読み出して、前述した階層化ブロックマッチング処理をして、動きベクトル検出および動き補償ブロックの生成を行い、動き補償ブロックおよびターゲットブロックは、画像重ね合わせ部17に供給する(図19のステップS24〜ステップS26)。
画像重ね合わせ部17は、受け取ったターゲットブロックと動き補償ブロックとを重ね合わせてゆく(図19のステップS27)。そして、画像重ね合わせ部17は、図46に示すように、画像重ね合わせをしたNR済みの画像を画像メモリ部4に貼る(図19のステップS28)。
図47に示すように、画像メモリ部4に貼られたNR画像は、次のフレーム(1フレーム前のNR画像となっている)で、動画コーデック部19に読み込まれ、圧縮された後、記録再生装置部5の記録媒体に保存されると共に、前記次のフレームでの参照画像として用いられる。また、画像メモリ部4に貼られたNR画像(1フレーム前のNR画像)は、同時に、NTSCエンコーダ20からも読み込まれ、モニターディスプレイ6に対するモニター出力も行われる。
動画NR処理時においては、以上の処理が、撮影画像毎に繰り返される。
なお、ここでは、参照画像は1フレーム分としたが、図47に示すように、参照画像を複数フレーム保持しておき、より相関性の高い画像を使用しても良い。
また、動画NR処理では、リアルタイム性が重視されるため、静止画NR処理のように、縮小面ターゲット画像を作って画像メモリ部4に格納することはせずに、図14に示したターゲットブロックバッファ部161内の縮小化処理部1613で、縮小面ターゲットブロックを生成して、そのまま縮小面バッファ1612に格納している。
<動画NR処理時のメモリアクセス時のデータフォーマット>
静止画NR処理時においては、画像メモリ部4に対するメモリアクセス時のデータフォーマットは、すべて、64×1フォーマットを垂直方向に連続して行う短冊アクセス形式を採用している。
静止画NR処理時においては、画像メモリ部4に対するメモリアクセス時のデータフォーマットは、すべて、64×1フォーマットを垂直方向に連続して行う短冊アクセス形式を採用している。
しかしながら、短冊アクセス形式は、短冊の水平方向の幅(水平方向の画素数)より少ない水平方向の画素数のブロックを読み出すときは、バースト長が16バースト未満になり、この実施形態の撮像装置で最も効率の良いデータ転送(16バースト)を使うことができなくなり、効率が悪化する。
また、短冊の水平方向の幅より大きい水平方向の画素数のブロックを読み出すときは、水平方向に隣り合う2個の短冊の境界の左右で、二つの転送に分けなくてはならず、さらに、2個の短冊の境界の左右で大きく離れたアドレスになってしまうので、かえってアドレス処理が複雑になるという問題がある。
さらに、階層化マッチング処理における基底面マッチング処理範囲は、縮小面マッチングで検出された縮小面動きベクトルに基づいて定まるものであって、固定の領域ではないため、複数個の短冊に跨った範囲となることがある。このため、基底面マッチング処理範囲を画像メモリ部4に記憶されている参照画像(NR画像)から読み出すときに、上述と同様に、当該基底面マッチング処理範囲が跨る隣り合う2個の短冊の境界の左右で、二つの転送に分けなくてはならず、さらに、2個の短冊の境界の左右で大きく離れたアドレスになってしまうので、かえってアドレス処理が複雑になるという問題がある。
そして、二つに分けた短冊のそれぞれに含まれる画素ブロックの大きさが、短冊の水平方向の幅よりも少なくなり、上述したように、短冊アクセス形式では、アクセス効率が悪くなり、動画のように、リアルタイムの高速処理が要求される用途には、不向きであるという問題がある。
以上のような問題に対して、この実施形態では、動画NR処理時の参照画像アクセス用のために、複数ライン×複数画素からなる矩形領域のブロック単位の画素データのメモリアクセス方式を用意するようにしている。
この実施形態では、動画NR処理時の参照画像アクセス用の1つとして、上述したバースト転送可能な画素数である64画素を考慮して、図48(A)に示すように、画像(画面)を最大バースト転送(64画素)単位である、横×縦=8画素×8ラインのブロックに分割して、画像メモリ部4に書き込み/読み出しするブロックアクセス形式を用いるようにしている。この8ライン×8画素からなるブロック単位のブロックアクセス形式を、以下、8×8フォーマットと称することとする。
この8×8フォーマットは、図48(B)に示すように、水平方向の4画素を1バースト転送の単位とし、水平方向の8画素を2回のバースト転送(2バースト)で転送し、当該水平方向の8画素のバースト転送が終了すると、次のラインの8画素を、同様にして、2バーストで、転送する。そして、最大バースト長である16バーストで、64画素が1回で転送される。
この8×8フォーマットのブロックアクセス形式の先頭アドレスをAD1を初期アドレスとすると、図48(B)に示すように、4画素単位のアドレスAD2〜AD16が自動的に定まり、連続した16バーストで、8×8フォーマットのメモリアクセスができる。メモリコントローラ8は、この8×8フォーマットのメモリアクセスのためのアドレス生成部を備えている。
画像メモリ部4のフレームメモリ上で、8×8フォーマットの先頭アドレスAD1が指定されると、メモリコントローラ8は、前記アドレス生成部を用いて、8×8フォーマットのメモリアクセスのためのアドレスAD1〜AD16を計算し、8×8フォーマットのメモリアクセスを実行する。
8×8フォーマットは、図48(B)に示すように、基本的には、64画素(16バースト)単位でのアクセスとなり、この実施形態の撮像装置としては、最も効率がよい。しかし、後述するように、16バーストは、最長バースト長であり、それよりも少ないバースト長とすることもできる。その場合には、実質的には、8×8フォーマットとはならないが、例えば、8画素×4ラインの場合には、半分の8バーストで画像データの転送ができる。
なお、水平方向および垂直方向の画像データが8画素で割り切れない場合は、図48で、影線を付して示すように、水平方向の右端と垂直方向の下端に、ダミー領域152を設けて、このダミー領域152に、例えば黒や白の画素データをダミーデータとして付加し、水平方向および垂直方向の画サイズが、8の倍数になるようにしている。
8×8フォーマットのメモリアクセスにより、メモリアクセスが8×8画素でアクセスできるということは、縮小面マッチング処理範囲および基底面マッチング処理範囲は、画像メモリ部4から、すべて、8×8の画素ブロック単位で読み込むことができる。したがって、この実施形態の撮像装置で、最も効率の良いデータ転送(16バースト)のみでバスアクセスすることが可能になり、バス効率は最大になる。
なお、この8×8フォーマットは、16×16画素、16×8画素、など、8×8画素の倍数にすれば、それらの複数画素単位でのアクセスにも適用できる。
また、バスの最も効率の良いデータ転送単位(最大バースト長の単位)は、上述の例では64画素であるが、最も効率の良いデータ転送単位は、1バーストで転送可能な画素数pと、最大バースト長(最大連続バースト回数)qとにより決まるp×q画素となる。そして、その画素数(p×q)により、画像メモリ部4に書き込むブロックアクセス形式のフォーマットを決定すればよい。そして、縮小面マッチング処理範囲、基底面マッチング処理範囲が、そのブロックフォーマットの水平方向および垂直方向の倍数に近いサイズになる場合が、最もバス転送効率が良い。
図33に示した縮小面マッチング処理範囲および縮小倍率が1/2のときの基底面マッチング処理範囲を例に、64×1フォーマットの短冊アクセス形式の場合と比較を行う。
縮小面マッチング処理範囲143は、図33(B)に示すように、この例では、44画素×24ラインとされる。この縮小面マッチング処理範囲143を、64×1フォーマットでアクセスした場合、図49の上側に示すように、4画素×11バーストを、垂直方向に24回繰り返す転送のアクセスが必要になる。
これに対して、同じ縮小面マッチング処理範囲143を、8×8フォーマットでアクセスする場合は、図50に示すように、縮小面参照ベクトル(0,0)の縮小面参照ブロックを中心に、44画素×24ラインの縮小面マッチング処理範囲143が決定される。縮小面参照ベクトル(0,0)の縮小面参照ブロックとは、縮小面ターゲットブロックと同じ座標の縮小面参照ブロックということである。この場合、図33(A)に示したように、縮小面ターゲットブロックは、必ず、8画素単位、8ライン単位ずつしか設定されない。
縮小面マッチング処理範囲143の垂直方向は、24ラインであるので、図50に示すように、垂直方向のサーチ範囲を、8×8のブロックサイズの倍数にすれば、垂直方向は8×8フォーマットで無駄なくアクセスすることができる。一方、縮小面マッチング処理範囲143の水平方向は44画素であるので、8の倍数とはならず、このため、図50に示した例では、水平方向を56画素として、8×8フォーマットでは、水平方向の両側に6画素ずつ、黒または白などからなるダミーの画像データ153を挿入するようにする。
この図50から、ダミーの画像データ153が左右6画素分あるものの、64×1フォーマットでは24回転送が必要であるのに対して、8×8フォーマットであれば、21回の転送で読み込むことができることが分かる。さらに、8×8フォーマットであれば、すべての転送が、この実施形態の撮像装置で最も効率の良いデータ転送(16バースト)になっており、バス効率も向上している。
また、縮小倍率が1/2の場合の基底面マッチング処理範囲144は、図33(C)に示すように、20画素×20ラインとなるが、この基底面マッチング処理範囲144をアクセスする場合には、図49の下側に示すように、64×1フォーマットの場合、4画素×5バーストを、垂直方向に20回繰り返す転送のアクセスが必要になる。
これに対して、8×8フォーマットの場合は、基底面マッチング処理範囲144としては、基底面参照ベクトル(0,0)の基底面参照ブロック142を中心に、20画素×20ラインのマッチング処理範囲が決定される。基底面マッチング処理範囲144は、縮小面マッチングで算出された縮小面動きベクトルによって決まるため、1画素単位でいろいろな組み合わせが考えられる。
例えば、最も効率の良いのは、20画素×20ラインの基底面マッチング処理範囲144が、8×8のブロックに対して、図51に示すように9ブロック分に割り当てられる場合である。この場合、図51に示すように、20画素×20ラインの基底面マッチング処理範囲144には、水平方向の端部および垂直方向の端部に8画素および8ラインに満たない領域が存在するので、そこにダミー画素データ153を挿入し、8×8フォーマットの4画素×16バーストを、9回繰り返す転送のアクセスをすることで、当該20画素×20ラインの基底面マッチング処理範囲144の画像データのアクセスができる。
しかし、図52に示すように、20画素×20ラインの基底面マッチング処理範囲144の垂直方向の端部にはダミー画像データ153を挿入せずに、当該垂直方向の端部においては、バースト回数を転送すべきデータ(4ライン分)に合わせたものとして、4画素×8バーストを、3繰り返す転送のアクセスとすることもできる。この場合には、図52に示す例においては、8×8フォーマットの4画素×16バーストを6回繰り返す転送と、4画素×8バーストを3回繰り返す転送との、合計9回の転送で、20画素×20ラインの基底面マッチング処理範囲144の画像データのアクセスができる。
逆に、最も効率の悪い例は、20画素×20ラインの基底面マッチング処理範囲144が、図53に示すように、8×8のブロックの16ブロック分に亘る場合である。この場合、図53に示すように、20画素×20ラインの基底面マッチング処理範囲144には、水平方向の端部および垂直方向の端部に8画素および8ラインに満たない領域が存在するので、そこにダミー画素データ153を挿入し、8×8フォーマットの4画素×16バーストを、16回繰り返す転送のアクセスをすることで、当該20画素×20ラインの基底面マッチング処理範囲144の画像データのアクセスができる。
しかし、図54に示すように、20画素×20ラインの基底面マッチング処理範囲144の垂直方向の端部にはダミー画像データ153を挿入せずに、当該垂直方向の上下端部においては、バースト回数を転送すべきデータ(それぞれ2ライン分)に合わせたものとして、4画素×4バーストを、合計8繰り返す転送のアクセスとすることもできる。この場合には、図54に示す例においては、8×8フォーマットの4画素×16バーストを8回繰り返す転送と、4画素×4バーストを8回繰り返す転送との、合計16回の転送で、基底面マッチング処理範囲144の画像データのアクセスができる。
したがって、20画素×20ラインの基底面マッチング処理範囲144の画像データの画像メモリ部4に対するアクセスは、64×1フォーマットでは20回転送が必要であるのに対して、8×8フォーマットであれば、最短で9転送、最長で16転送で良い。さらに、8×8フォーマットであれば、転送の半分以上が、この例の撮像装置システムで最も効率の良いデータ転送(16バースト)になっており、バス効率も向上している。
また、この実施形態では、更にバス帯域を改善するために、動画NR処理時の参照画像アクセス用の他の1つとして、図55(A)に示すように、画像(画面)を最大バースト転送(64画素)の1/4単位である4画素×4ラインのブロックに分割して、画像メモリ部に書き込み/読み出しするブロックアクセス形式を選択することもできるように構成されている。この4ライン×4画素からなるブロック単位のブロックアクセス形式を、以下、4×4フォーマットと称することとする。
この4×4フォーマットは、図55(B)に示すように、水平方向の4画素を1バースト転送の単位とし、水平方向の4画素を1回のバースト転送(1バースト)で転送し、当該水平方向の4画素のバースト転送が終了すると、次のラインの4画素を、同様にして、1バーストで転送し、4バーストで4×4フォーマットの画像データが転送できる。そして、4×4フォーマットの場合、図55(B)に示すように、4画素×4ライン=16画素分からなるブロックを水平方向に4回(4ブロック分)連続でアクセスすることで、64画素が1回で転送される。
つまり、4×4フォーマットの画像データは、4バーストで転送可能であるので、最大バースト長である16バーストで、4画素×4ラインのブロックの水平方向の4個を連続してアクセスすることができ、この4個の4画素×4ラインのブロック分の64画素が1回で転送される。
この4×4フォーマットによって64画素(最大バースト長である16バースト)を1回で転送する場合、図55(B)に示すように、4画素×4ラインのブロックの先頭アドレスをAD1を初期アドレスとすると、4画素単位のアドレスAD2〜AD16が、図示のように定まり、連続した16バーストで、4×4フォーマットによる64画素単位のメモリアクセスができる。
4×4フォーマットは、図55(B)に示すように、64画素(16バースト)単位でアクセスするときが、最も効率がよい。しかし、水平方向の4ブロック以下の単位でアクセスする必要がある場合もある。例えば水平方向の2ブロック(32画素)単位でのアクセスでは、図55(B)において、4画素単位のアドレスAD1〜AD8が定められて、連続した8バーストで32画素単位のアクセスができる。4画素×4ラインのブロックの1ブロック(16画素)単位、3ブロック(24画素)単位なども同様にしてアクセスができる。メモリコントローラ8は、この4×4フォーマットのメモリアクセスのためのアドレス生成部を備えている。
画像メモリ部4のフレームメモリ上で、4×4フォーマットの先頭アドレスAD1と、水平方向の4画素×4ラインのブロック数が指定されると、メモリコントローラ8は、前記アドレス生成部を用いて、4×4フォーマットのメモリアクセスのためのアドレスAD2以降を計算し、4×4フォーマットによるメモリアクセスを実行することができる。
なお、前述の8×8フォーマットの場合と同様に、画像データが4画素で割り切れない場合は、図55(A)に示すように、水平方向の右端および垂直方向の下端にダミー領域154を設けて、水平方向および垂直方向のサイズが、4の倍数になるようにしている。
この4×4フォーマットであれば、前述した、基底面マッチング処理範囲(20画素×20ライン)144のバスアクセスは、8×8フォーマットよりもさらに改善する。
4画素×4ラインのブロック単位に対して、最も効率の良いのは、20画素×20ラインの基底面マッチング処理範囲144が、図56に示すように、丁度、水平方向の5ブロック×垂直方向の5ブロック=25ブロック分に割り当てられる場合である。
この25ブロックをアクセスするには、水平方向の4ブロックの5ライン分と、水平方向の1ブロックの5ライン分とに分けることができ、図55(B)の最大バースト長による4ブロック単位の4画素×16バーストが5転送、1ブロック単位の4画素×4バーストが5転送、の合計10転送でよい。
逆に、最も効率の悪い例は、20画素×20ラインの基底面マッチング処理範囲144が、図57に示すように、4画素×4ラインのブロックの水平方向の6ブロック×垂直方向の6ブロック=36ブロック分に亘る場合である。この場合、図57に示すように、20画素×20ラインの基底面マッチング処理範囲144には、水平方向の左右端部および垂直方向の上下端部に4画素および4ラインに満たない領域が存在するので、そこにダミー画素データ154を挿入している。
この36ブロックを4×4フォーマットでアクセスするには、水平方向の4ブロックの6ライン分と、水平方向の2ブロックの6ライン分とに分けることができ、図55(B)の最大バースト長による4ブロック単位の4画素×16バーストが6転送、2ブロック単位の4画素×8バーストが6転送、の合計12転送でよい。
したがって、図54に示した8×8フォーマットの場合の16転送よりも、更に転送アクセス数が少なく、また、この実施形態の撮像装置で最も効率の良いデータ転送である16バーストを使用する割合が増え、バス効率はさらに向上している。
上述したように、動画NR処理時には、動き検出・動き補償部16が、マッチング処理範囲を画像メモリ部4から読み出す際には、64×1フォーマットおよび短冊アクセス形式ではなく、ブロックフォーマット、この例では8×8フォーマットや4×4フォーマットによるブロックアクセス形式の方が、メモリアクセスとして適している。
そこで、重ね合わせ結果の動画NR画像は、上述のようなブロックアクセス形式のブロックフォーマットで画像メモリ部4に書き込むと良い。
しかしながら、画像メモリ部4に対してシステムバス2およびメモリコントローラ8を通じてアクセスするのは、動き検出・動き補償部16や画像重ね合わせ部17、動画コーデック部だけでなく、他の処理部も存在するが、上記のブロックフォーマットによるメモリアクセスが、それらの他の処理部の全てにも適しているとは限らない。
例えば、この実施形態の撮像装置では、動画NR処理時には、NR処理した後の画像を、NTSCエンコーダ20で表示画像データに変換して、モニターディスプレイ6において画像モニター表示を行うようにしている。NTSCエンコーダ20では、基本的に、ラスタースキャン形式の画像データの処理を行うものであるので、8×8フォーマットや4×4フォーマットなどのブロックフォーマットによるブロックアクセス形式で画像メモリ部4から画像データをアクセスした場合には、転送効率が悪くなるという問題がある。
そこで、この実施形態では、前述した図19のステップS28においては、画像重ね合わせ部17からの動画NR処理結果のNR画像は、図58に示すように、8×8フォーマットや4×4フォーマットなどのブロックフォーマットで、画像メモリ部4のNR画像についての第1のメモリ領域41NRに書き込まれると共に、64×1フォーマットで、画像メモリ部4のNR画像についての第2のメモリ領域42NRに書き込まれる。なお、図58に示すように、第1のメモリ領域41NRには、NR画像は、縮小面画像が併せて書き込まれる。
動き検出・動き補償部16は、ターゲットブロックは、画像補正・解像度変換部15から、短冊形式で取得しており、動き検出・動き補償部16および画像重ね合わせ部17は、短冊形式で、64×1フォーマットの64画素ずつ処理を行っている。このため、画像重ね合わせ部17からの画像重ね合わせ結果のNR画像を画像メモリ部4に64×1フォーマットで書き込む際には、ラスタースキャン形式ではアドレスが飛ばされる状態で、短冊アクセス形式で書き込みを行うようにすることで行われる。
そして、この実施形態においては、画像メモリ部4のNR画像についての第1のメモリ領域41NRに1フレーム前の時点でブロックフォーマットで書き込まれているNR画像が参照画像とされ、メモリコントローラ8により、マッチング処理範囲が当該参照画像から、8×8フォーマットあるいは4×4フォーマットなどのブロックフォーマットで読み出されて、動き検出・動き補償部16に転送される。
また、この実施形態では、画像メモリ部4のNR画像についての第2のメモリ領域42NRに1フレーム前の時点で64×1フォーマットで書き込まれているNR画像が、64×1フォーマットで、かつ、ラスタースキャン形式で読み出されて、動画コーデック部19に転送され、この例では、MPEG方式により動画圧縮エンコードされて、記録再生装置部5に記録される。また、第2のメモリ領域42NRに1フレーム前の時点で64×1フォーマットで書き込まれているNR画像は、64×1フォーマットで、かつ、ラスタースキャン形式で読み出されて、NTSCエンコーダ20に供給されてNTSC信号にされ、モニターディスプレイ6に供給されて、記録モニター画像として表示される。
上述のように、この実施形態では、NR画像は、画像メモリ部4には、第1のメモリ領域41NRと、第2のメモリ領域42NRとの両方に、2重に書き込まれることとなるため、画像メモリ部4の容量、画像メモリ部4およびメモリコントローラ8の消費電力は大きくなるが、動き検出・動き補償部16に対する画像メモリ部4からの画像データのバスアクセスの効率が良く、バス帯域を大きく削減できるというメリットがある。
以上のように、この実施形態の撮像装置では、画像メモリ部4に、64×1フォーマットで短冊アクセス形式のみで書き込むか、短冊アクセス形式とブロックフォーマットによるブロックアクセス形式の2種類の方式で書き込むか、のいずれかを選択することができる。消費電力を少なくする、またはメモリ容量の削減が必要なときは短冊アクセス方式のみを用いることを選択し、バス帯域を削減したい場合は短冊アクセス形式とブロックアクセス形式の2種類の方式を用いることを選択するのが望ましい。
[撮像装置の第2の実施形態]
上述した実施形態の撮像装置は、図1に示したように、画像重ね合わせ結果のNR画像を、そのまま記録するようにしている。これに対して、図59に示すように、画像重ね合わせ部17の後段に、後処理・エフェクト部30を設け、この後処理・エフェクト部30で、画面合成、グラフィック合成、セピア処理などの画像についての後処理あるいはエフェクト処理を行った後、記録することができる撮像装置を構成することもできる。
上述した実施形態の撮像装置は、図1に示したように、画像重ね合わせ結果のNR画像を、そのまま記録するようにしている。これに対して、図59に示すように、画像重ね合わせ部17の後段に、後処理・エフェクト部30を設け、この後処理・エフェクト部30で、画面合成、グラフィック合成、セピア処理などの画像についての後処理あるいはエフェクト処理を行った後、記録することができる撮像装置を構成することもできる。
この場合、後処理・エフェクト部30は、ユーザ操作入力部3を通じたユーザ操作入力により、その処理動作がオン・オフされる。つまり、使用者が、ユーザ操作入力部3を通じて、画面合成、グラフィック合成、セピア処理などの画像についての後処理あるいはエフェクト処理を指示したときに、CPU1により、後処理・エフェクト部30は、動作オンとされ、後処理あるいはエフェクト処理が指定されないときには、この後処理・エフェクト部30は、CPU1により、動作オフとされる。
そして、後処理・エフェクト部30が動作オフとされるときには、この第2の実施形態の撮像装置では、図58に示した前述の実施形態の撮像装置の場合と同様に、画像重ね合わせ部17からの動画NR処理結果のNR画像が、図60に示すように、8×8フォーマットや4×4フォーマットなどのブロックフォーマットで、画像メモリ部4のNR画像についての第1のメモリ領域41NRに書き込まれると共に、64×1フォーマットで、画像メモリ部4のNR画像についての第2のメモリ領域42NRに書き込まれる。なお、図60に示すように、第1のメモリ領域41NRには、NR画像は、縮小面画像が併せて書き込まれる。
また、後処理・エフェクト部30が動作オンとされるときには、この第2の実施形態の撮像装置では、画像重ね合わせ部17からの動画NR処理結果のNR画像は、図61に示すように、8×8フォーマットや4×4フォーマットなどのブロックフォーマットで、画像メモリ部4のNR画像についての第1のメモリ領域41NRにのみ書き込まれる。
そして、この後処理・エフェクト部30が動作オンとされる場合には、後処理・エフェクト部30で、画面合成、グラフィック合成、セピア処理などの画像についての後処理あるいはエフェクト処理がなされたNR画像が、64×1フォーマットで、画像メモリ部4のNR画像についての第2のメモリ領域42NRに書き込まれる。この後処理あるいはエフェクト処理がなされたNR画像は、次のフレームにおける参照画像としては用いることができない。
そして、この第2の実施形態の撮像装置では、画像メモリ部4のNR画像についての第2のメモリ領域42NRに1フレーム前の時点で64×1フォーマットで書き込まれている後処理等がなされたNR画像が、64×1フォーマットで、かつ、ラスタースキャン形式で読み出されて、動画コーデック部19に転送され、動画圧縮エンコードされて、記録再生装置部5に記録される。また、第2のメモリ領域42NRに1フレーム前の時点で64×1フォーマットで書き込まれている後処理等がなされたNR画像は、64×1フォーマットで、かつ、ラスタースキャン形式で読み出されて、NTSCエンコーダ20に供給されてNTSC信号にされ、モニターディスプレイ6に供給されて、記録モニター画像として表示される。
以上のように、この第2の実施形態の撮像装置において、後処理・エフェクト部30が動作オンとされる場合には、次のフレームでの参照画像として用いられる後処理等がなされていないNR画像と、記録用また記録モニター表示用として用いられる後処理等がなされたNR画像とを、画像メモリ部4に書き込む必要がある。そして、後処理等がなされていないNR画像は、その参照画像としての用途から、ブロックフォーマットで画像メモリ部4に書き込まれ、また、後処理等がなされているNR画像は、記録用および記録モニター表示用などの用途から、ラスタースキャン形式で読み出し易い64×1フォーマットで書き込まれる。
[動画NR処理時における基底面と縮小面とでのメモリアクセスの変更について]
上述した第1および第2の実施形態の撮像装置においては、動き検出・動き補償部16におけるブロックマッチング手法として、縮小面マッチング処理と基底面マッチング処理とからなる階層化ブロックマッチング手法を採用している。
上述した第1および第2の実施形態の撮像装置においては、動き検出・動き補償部16におけるブロックマッチング手法として、縮小面マッチング処理と基底面マッチング処理とからなる階層化ブロックマッチング手法を採用している。
動画NR処理時の基底面マッチング処理においては、画像メモリ部4に書き込まれている基底面ターゲット画像および基底面参照画像は、図58に示したように、動き検出・動き補償部16のみではなく、システムバス2に接続されている他の処理部がアクセスすることがあるため、上述したように、メモリアクセスのフォーマットに制約が発生する。しかしながら、縮小面マッチングにおける縮小面画像であれば、動き検出・動き補償部16でしかアクセスしないため、メモリアクセスのフォーマットの制約は発生しない。
そこで、基底面マッチング処理時と縮小面マッチング処理時とで、画像メモリ部4の画像データに対するメモリアクセスのフォーマットを変えることで、バス帯域をさらに削減することが可能である。
バス帯域の削減を可能にする例として、ここでは、縮小面マッチング処理時における画像データの削減を行う。すなわち、上述したように、この発明による実施形態においては、ブロックマッチング手法におけるSAD値の算出では、輝度情報Yのみしか使用していない。
しかし、NR処理して、画像データを記録するためには、輝度情報Yのみではなく、クロマ信号情報C(Cr,Cb)をも必要である。このため、上述の説明では、システムバス2のバス幅が64ビット、最大バースト長は16バーストとしたとき、最大効率の転送時のデータ量、すなわち、64ビット×16バースト=128バイトは、Y:Cr:Cb=4:2:2のフォーマットの輝度信号Y(8ビット)、クロマ信号C(8ビット)は、4画素分に相当するとした。
ところで、縮小面画像は、記録対象ではないので、クロマ信号Cを用いる必要は無い。そこで、図62(A)に示すような、8×8フォーマットのYC画像データから、輝度情報Y(8ビット)のみを抽出して、図62(B)に示すような8×8フォーマットのY画像データとし、縮小面マッチング処理用とすることができるが、その場合のYC画像データのデータ量は、上述の場合の半分になる。
そこで、上述の実施形態における最大効率の転送時のデータ量、すなわち、64ビット×16バースト=128バイトは、図62(C)に示すように、8ライン×8画素=64画素のブロックの2ブロック分である128画素分となる。したがって、縮小面マッチング処理時には、画像メモリ部4に対するメモリアクセスにおいて、この128画素分を、1転送でアクセスすることができる。
すなわち、縮小面マッチング処理時においては、8×8フォーマットのYC情報のうち、Y情報のみ抽出することで、上述の例の場合よりも、最大効率の1アクセス(128バイト)で、最大、8画素×8ライン×2ブロックのデータを転送することが可能になり、マッチング精度は変わらずに、バス帯域を1/2に削減することができる。
また、縮小面マッチング処理時においては、図62(B)のY画像データを、図63(A)および(B)に示すように、千鳥格子状に間引きし、垂直方向に詰めて画像メモリ部4に書き込むようにすることで、さらにバス帯域を削減することができる。
このとき、図63(C)に示すように、1アクセス(128バイト)で、最大、4画素×8ライン×4ブロックのデータを転送可能になり、マッチング精度は落ちるものの、バス帯域は1/4に削減することが可能である。
[実施形態の効果]
以上のように、実施形態の撮像装置で最も効率の良いデータ転送サイズのブロック単位で、画像メモリ部4に対するメモリアクセスのデータフォーマットを決定し、静止画NR処理、動画NR処理に応じて、画像メモリ部4に対するメモリアクセスのデータフォーマットを選択することで、バス帯域を削減し、バスアクセスの効率も向上させることができる。
以上のように、実施形態の撮像装置で最も効率の良いデータ転送サイズのブロック単位で、画像メモリ部4に対するメモリアクセスのデータフォーマットを決定し、静止画NR処理、動画NR処理に応じて、画像メモリ部4に対するメモリアクセスのデータフォーマットを選択することで、バス帯域を削減し、バスアクセスの効率も向上させることができる。
また、基底面マッチング処理時と縮小面マッチング処理時とで画像メモリ部4に対するメモリアクセスのデータフォーマットを変更し、縮小面マッチング処理時は、動き検出・動き補償部16以外の他の処理部の画像メモリ部4のアクセスが無いことを利用して、動き検出に適したデータフォーマットにすることで、バス帯域をさらに削減することが可能である。
また、画像重ね合わせ後に、後処理やエフェクト処理を施す場合、複数フォーマットで画像メモリ部4に画像データを貼る必要があるが、マッチング処理のための参照画像を、画像メモリ部4に対して、ブロックフォーマットで書き込みおよび読み出しアクセスするようにすることで、バス帯域を削減することができる。
また、上述した実施形態によれば、画像補正・解像度変換部15で、画像を、短冊状に分割したフォーマットでメモリアクセスを行い、静止画コーデック部18での圧縮符号化の単位も同じく短冊形式にすることで、画像補正・解像度変換部15から静止画コーデック部18に、メモリを介さず、直接データを転送することができ、高速連写画像を効率よく圧縮符号化し、画像メモリ部4に格納することができる。
また、画像メモリ部4に格納された、圧縮符号化された画像を参照画像として用いるときに、画像を分割した短冊単位で伸長復号化することで、ブロックマッチング処理に必要な範囲だけ復号化することができ、画像メモリ部4のワーク領域を節約することができる。さらに、画像メモリ部4上の不要な参照画像短冊のアドレスに、次に使用する参照画像短冊を復号化して上書きすることで、ワーク領域上の復号化された参照画像のサイズを、常に一定にすることができる。
また、前述したように、この実施形態によれば、設定情報などによって、ターゲット画像と参照画像の選択方法、重ね合わせの順序、重ね合わせの計算方法を変更することによって、所望のNR画像を得ることが可能である。
[その他の実施の形態および変形例]
上述の実施形態においては、静止画コーデック部18における圧縮符号化方式としては、JPEG方式を用い、また、動画コーデック部19における圧縮符号化方式としてはMPEG方式を用いるようにしたが、これは一例であって、この発明は、どのような画像圧縮符号化方式であっても適用可能であることは言うまでもない。
上述の実施形態においては、静止画コーデック部18における圧縮符号化方式としては、JPEG方式を用い、また、動画コーデック部19における圧縮符号化方式としてはMPEG方式を用いるようにしたが、これは一例であって、この発明は、どのような画像圧縮符号化方式であっても適用可能であることは言うまでもない。
また、上述の実施形態では、静止画撮影時の記録画像を圧縮符号化するための圧縮符号化処理部で、ブロックマッチング時における撮像画像の圧縮符号化を行うようにしたが、記録処理のための圧縮方式と、ブロックマッチング時における撮像画像の圧縮方式とで、異なる方式を用いるようにしても良い。
また、上述の実施形態では、動画NR処理において、画像メモリ部4に対する複数のメモリアクセスのデータフォーマットを用いるようにしたが、静止画NR処理にも用いても良い。特に、撮影中加算方式で静止画NR処理をする場合には、処理速度も重要になるので、上述のようなバス帯域を削減する方法を採用する方が良い。
また、画像を、水平方向の複数画素毎に分割して、短冊単位のデータとしてメモリアクセスするようにしたが、これは、画像メモリからの画像データの読み出し、書き込み方向が、水平ライン方向を基準にしたからである。画像メモリからの画像データの読み出し、書き込み方向が垂直方向である場合には、画像を垂直方向の複数ライン単位で分割した帯状単位のデータとしてデータアクセスするようにすれば、上述と同様の作用効果が得られることは言うまでもない。その場合には、例えば64×1フォーマットは、垂直方向の64ライン×1画素というフォーマットになる。
また、上述の実施の形態において、動きベクトル算出部の第1の例においては、サーチ範囲におけるサーチ方向を水平ライン方向に取り、例えばサーチ範囲の左上から順に参照ブロックを移動させるようにしてサーチを行うようにすると共に、SADテーブルの1ライン分のメモリを設けるようにしたが、サーチ範囲におけるサーチ方向を垂直方向に取り、例えばサーチ範囲の左上端から垂直方向にサーチを開始し、垂直方向の1列分のサーチが終わった後、水平方向に、参照ブロックの位置を1つ分、例えば1画素分右の垂直方向の列に移動し、その列の上端から垂直方向にサーチする、という手順を繰り返すサーチ方法を採用するようにしても良い。このようにサーチ範囲の左上端から順に、垂直方向に参照ブロックを移動させるようにしてサーチを行うようにする場合には、SADテーブルの垂直方向の一列分のメモリを設けるようにすれば良い。
ここで、水平方向にサーチ方向を取るか、垂直方向にサーチ方向を取るかは、マッチング処理部、動きベクトル算出部の回路規模を考慮して、より回路規模が小さくなる方を採用するのが好ましい。
なお、前述もしたように、参照ブロックの移動は、1画素毎、また、1ライン毎ではなく、複数画素毎、また、複数ライン毎でもよい。したがって、前者の場合の水平方向の1ライン分メモリは、水平方向における参照ブロックの移動位置分だけでよく、また、後者の場合の垂直方向の一列分のメモリは、垂直方向における参照ブロックの移動位置分だけでよい。つまり、参照ブロックの移動を1画素毎、また、1ライン毎に行う場合には、1ライン分メモリは、1ラインの画素数分の容量のメモリが必要であり、また、垂直方向の一列分メモリは、ライン数分の容量のメモリが必要である。しかし、複数画素毎、また、複数ライン毎に、参照ブロックを移動させる場合には、1画素毎、また、1ライン毎に参照ブロックを移動させる場合よりも、1ライン分メモリおよび1列分メモリの容量は少なくなる。
また、補間処理の方法は、上述した二次曲線近似補間処理に限られるものではなく、前述もしたように、3次曲線や、より高次の曲線を用いた補間処理を行っても良い。
また、上述の実施の形態は、この発明による画像処理装置を撮像装置に適用した場合であるが、この発明は、撮像装置に限られるわけではなく、種々の画像処理装置に適用可能である。
また、上述の実施の形態は、ブロックマッチング手法を用いて、画像の重ね合わせによるノイズ低減処理をする場合に、この発明を適用した場合であるが、これに限られるものではなく、画像メモリ部に書き込まれた画像データを、複数の処理部がアクセスするような画像処理装置の全てに適用可能である。
4…画像メモリ部、8…メモリコントローラ、16…動き検出・動き補償部、17…画像重ね合わせ部、18…静止画コーデック部、100…ターゲット画像(ターゲットフレーム)、101…参照画像(参照フレーム)、102…ターゲットブロック、104…動きベクトル106…サーチ範囲、107…参照ベクトル、108…参照ブロック、163…マッチング処理部、164…動きベクトル算出部
Claims (16)
- 複数画面分の画像データを記録可能な画像メモリ部と、
入力される画像データについて第1の処理を行って、前記画像メモリ部に、その処理結果の画像データを格納する第1の画像処理部と、
前記画像メモリ部から前記処理結果の画像データを読み出して第2の処理を行なう第2の画像処理部と、
前記画像メモリ部から前記処理結果の画像データを読み出して第3の処理を行なう第3の画像処理部と、
前記画像メモリ部と、前記第1の画像処理部と、前記第2の画像処理部と、前記第3の画像処理部とが接続されるバスと、
前記画像メモリ部に対する前記バスを介した画像データの書き込みおよび読み出しを制御するメモリコントローラと、
を備え、
前記第1の画像処理部での前記第1の処理の結果の画像データは、前記メモリコントローラにより、画面の垂直方向のライン数と水平方向の画素数との組み合わせが第1の組み合わせとされた第1のブロック単位で、前記画像メモリ部の第1のメモリ領域に書き込まれると共に、画面の垂直方向のライン数と水平方向の画素数との組み合わせが、前記第1の組み合わせとは異なる第2の組み合わせとされた第2のブロック単位で、前記画像メモリ部の第2のメモリ領域に書き込まれるようにされ、
前記第2の画像処理部には、前記メモリコントローラにより、前記画像メモリ部の前記第1のメモリ領域に書き込まれた画像データが、前記第1のブロック単位で読み出されて供給され、
前記第3の画像処理部には、前記メモリコントローラにより、前記画像メモリ部の前記第2のメモリ領域に書き込まれた画像データが、前記第2のブロック単位で読み出されて供給される
ことを特徴とする画像処理装置。 - 請求項1に記載の画像処理装置において、
前記メモリコントローラは、前記バスを介して所定数の複数画素の単位で画像データをバースト転送可能、かつ、連続して、複数回、バースト転送することが可能であり、
前記第1のブロック単位および前記第2のブロック単位の画像データは、前記画像メモリ部に対する書き込みまたは読み出しに際し、前記メモリコントローラにより、前記所定数の複数画素単位で複数回、連続してバースト転送される
ことを特徴とする画像処理装置。 - 請求項2に記載の画像処理装置において、
前記第1のブロック単位は、垂直方向の複数ラインと水平方向の複数画素とからなり、
前記第2のブロック単位は、垂直方向または水平方向のうち、画像データの前記画像メモリ部への書き込み方向の複数画素のみからなる
ことを特徴とする画像処理装置。 - 請求項2に記載の画像処理装置において、
画面の端部における画像データの前記画像メモリ部に対して書き込みに際し、前記画像データが、前記第1のブロック単位または前記第2のブロック単位よりも少ない画素数からなるものであるときに、ダミーデータを付加して、前記第1のブロック単位または前記第2のブロック単位の複数画素とするようにした
ことを特徴とする画像処理装置。 - 請求項3に記載の画像処理装置において、
前記所定数の複数画素は、p(pは2以上の整数)個の画素であり、前記メモリコントローラにおける前記バースト転送の最大連続可能回数はq回であるとき、前記第2のブロック単位の前記書き込み方向の画素数は、p×q個であり、
前記第2のブロック単位の画像データの前記画像メモリに対するアクセスは、前記p個の画素の前記バースト転送をq回、前記読み出し方向のp×q個の画素について行うようにするものである
ことを特徴とする画像処理装置。 - 請求項2に記載の画像処理装置において、
前記第1のブロック単位の画像データの前記画像メモリに対するアクセスは、前記第1のブロック単位の矩形画像領域内で、前記画像メモリに対する書き込み方向の画素のバースト転送が終了したら、次の行または列の前記書き込み方向の画素のバースト転送を行うことを連続して行うようにするものである
ことを特徴とする画像処理装置。 - 請求項1に記載の画像処理装置において、
前記第1の画像処理部は、前記第1の処理の結果の画像データについて、表示画像に反映される処理を施す後処理部を備え、前記画像メモリ部の前記第2のメモリ領域には、前記後処理部での処理結果の画像データが、前記第2のブロック単位で書き込まれる
ことを特徴とする画像処理装置。 - 2画面間の動きベクトルを検出し、検出した動きベクトルに基づいて、前記2画面の一方を動き補償した動き補償画像を生成し、前記2画面の他方と、前記動き補償画像とを重ね合わせることにより、ノイズ低減した画像を得るようにする画像処理装置であって、
前記2画面の少なくとも一方を記憶する画像メモリ部と、
前記画像メモリ部から読み出した前記2画面の一方と、前記2画面の他方との間の動きベクトルを検出すると共に、検出した動きベクトルに基づいて前記2画面の一方を動き補償した動き補償画像を生成する動き検出・動き補償手段と、
前記動き検出・動き補償手段からの前記動き補償画像と、前記2画面の一方または他方との画像の重ね合わせをする画像重ね合わせ手段と、
前記画像重ね合わせ手段における前記重ね合わせ結果の画像データについて所定の処理をする後処理手段と、
前記画像メモリ部と、前記動き検出・動き補償手段と、前記画像重ね合わせ手段と、前記後処理手段とが接続されるバスと、
前記バスを介した、前記画像メモリ部への前記画像重ね合わせ部からの画像データの書き込みを制御すると共に、前記画像メモリ部からの画像データの読み出しを制御するメモリコントローラと、
を備え、
前記メモリコントローラは、
前記画像重ね合わせ手段からの前記重ね合わせ結果の画像の画像データを、画面の垂直方向のライン数と水平方向の画素数との組み合わせが第1の組み合わせとされた第1のブロック単位で、前記画像メモリ部の第1のメモリ領域に書き込むと共に、画面の垂直方向のライン数と水平方向の画素数との組み合わせが、前記第1の組み合わせとは異なる第2の組み合わせとされた第2のブロック単位で、前記画像メモリ部の第2のメモリ領域に書き込み、また、
前記画像メモリ部の前記第1のメモリ領域に書き込まれた画像データを、前記第1のブロック単位で読み出して、前記動き検出を行う前記2画面の一方として、前記バスを介して前記動き検出・動き補償手段に供給し、
前記画像メモリ部の前記第2のメモリ領域に書き込まれた画像データを、前記第2のブロック単位で読み出して、前記後処理手段に前記バスを介して供給する
ことを特徴とする画像処理装置。 - 請求項8に記載の画像処理装置において、
前記メモリコントローラは、前記バスを介して所定数の複数画素の単位で、複数回、連続してバースト転送することが可能であり、
前記第1のブロック単位および前記第2のブロック単位の画像データは、前記画像メモリ部に対する書き込みまたは読み出しに際し、前記メモリコントローラにより、前記所定数の複数画素単位で複数回、連続してバースト転送される
ことを特徴とする画像処理装置。 - 請求項9に記載の撮像装置において、
前記第1のブロック単位は、垂直方向の複数ラインと水平方向の複数画素とからなり、
前記第2のブロック単位は、垂直方向または水平方向のうち、画像データの前記画像メモリ部への書き込み方向の複数画素のみからなる
ことを特徴とする画像処理装置。 - 請求項9に記載の画像処理装置において、
画面の端部における画像データの前記画像メモリ部に対して書き込みに際し、前記画像データが、前記第1のブロック単位または前記第2のブロック単位よりも少ない画素数からなるものであるときに、ダミーデータを付加して、前記第1のブロック単位または前記第2のブロック単位の複数画素とするようにした
ことを特徴とする画像処理装置。 - 請求項10に記載の撮像装置において、
前記所定数の複数画素は、p(pは2以上の整数)個の画素であり、前記メモリコントローラにおける前記バースト転送の最大連続可能回数はq回であるとき、前記第2のブロック単位の前記書き込み方向の画素数は、p×q個であり、
前記第2のブロック単位の画像データの前記画像メモリに対するアクセスは、前記p個の画素の前記バースト転送をq回、前記読み出し方向のp×q個の画素について行うようにするものであると共に、
前記第2のブロック単位の画像データの前記画像メモリに対するアクセスを、前記垂直方向または水平方向のうち、画像データの前記画像メモリ部への書き込み方向でない方向に連続して行う短冊形式とする
ことを特徴とする画像処理装置。 - 請求項12に記載の画像処理装置において、
前記動き検出・動き補償手段に供給される前記2画面の他方は、前記短冊形式の画像データとされており、前記動き検出・動き補償手段は、前記2画面の他方の画像データと、前記動き補償画像の画像データとを、前記短冊形式で前記画像重ね合わせ手段に供給し、
前記画像重ね合わせ手段の前記重ね合わせ結果の画像データは、前記メモリコントローラにより、前記第1のブロック単位で前記画像メモリ部の前記第1のメモリ領域に書き込まれると共に、前記第2のブロック単位で、かつ、前記短冊形式で前記画像メモリ部の前記第2のメモリ領域に書き込まれる
ことを特徴とする画像処理装置。 - 請求項13に記載の画像処理装置において、
前記後処理手段には、前記メモリコントローラにより、前記画像メモリ部の前記第2のメモリ領域から、前記第2のブロック単位で、かつ、ラスタースキャン形式で画像データが読み出されて供給される
ことを特徴とする画像処理装置。 - 複数画面分の画像データを記録可能な画像メモリ部と、
入力される画像データについて第1の処理を行って、前記画像メモリ部に、その処理結果の画像データを格納する第1の画像処理部と、
前記画像メモリ部から前記処理結果の画像データを読み出して第2の処理を行なう第2の画像処理部と、
前記画像メモリ部から前記処理結果の画像データを読み出して第3の処理を行なう第3の画像処理部と、
前記画像メモリ部と、前記第1の画像処理部と、前記第2の画像処理部と、前記第3の画像処理部とが接続されるバスと、
前記画像メモリ部に対する前記バスを介した画像データの書き込みおよび読み出しを制御するメモリコントローラと、
を備える画像処理装置における画像データのメモリアクセス方法であって、
前記メモリコントローラは、
前記第1の画像処理部での前記第1の処理の結果の画像データを、画面の垂直方向のライン数と水平方向の画素数との組み合わせが第1の組み合わせとされた第1のブロック単位で、前記画像メモリ部の第1のメモリ領域に書き込むと共に、画面の垂直方向のライン数と水平方向の画素数との組み合わせが、前記第1の組み合わせとは異なる第2の組み合わせとされた第2のブロック単位で、前記画像メモリ部の第2のメモリ領域に書き込む画像データ書き込み工程と、
前記画像データ書き込み工程で前記第1のメモリ領域に書き込まれた画像データを読み出して、前記バスを介して前記第2の画像処理部に供給する工程と、
前記画像データ書き込み工程で前記第2のメモリ領域に書き込まれた画像データを読み出して、前記バスを介して前記第3の画像処理部に供給する工程と、
ことを特徴とする画像データのメモリアクセス方法。 - 2画面間の動きベクトルを検出し、検出した動きベクトルに基づいて、前記2画面の一方を動き補償した動き補償画像を生成し、前記2画面の他方と、前記動き補償画像とを重ね合わせることにより、ノイズ低減した画像を得るようにする画像処理装置であって、
前記2画面の少なくとも一方を記憶する画像メモリ部と、
前記画像メモリ部から読み出した前記2画面の一方と、前記2画面の他方との間の動きベクトルを検出すると共に、検出した動きベクトルに基づいて前記2画面の一方を動き補償した動き補償画像を生成する動き検出・動き補償手段と、
前記動き検出・動き補償手段からの前記動き補償画像と、前記2画面の一方または他方との画像の重ね合わせをする画像重ね合わせ手段と、
前記画像重ね合わせ手段における前記重ね合わせ結果の画像データについて所定の処理をする後処理手段と、
前記画像メモリ部と、前記動き検出・動き補償手段と、前記画像重ね合わせ手段と、前記後処理手段とが接続されるバスと、
前記バスを介した、前記画像メモリ部への前記画像重ね合わせ部からの画像データの書き込みを制御すると共に、前記画像メモリ部からの画像データの読み出しを制御するメモリコントローラと、
を備える画像処理装置における画像データのメモリアクセス方法であって、
前記メモリコントローラは、
前記画像重ね合わせ手段からの前記重ね合わせ結果の画像の画像データを、画面の垂直方向のライン数と水平方向の画素数との組み合わせが第1の組み合わせとされた第1のブロック単位で、前記画像メモリ部の第1のメモリ領域に書き込むと共に、画面の垂直方向のライン数と水平方向の画素数との組み合わせが、前記第1の組み合わせとは異なる第2の組み合わせとされた第2のブロック単位で、前記画像メモリ部の第2のメモリ領域に書き込む画像書き込み工程と、
前記画像データ書き込み工程で前記画像メモリ部の前記第1のメモリ領域に書き込まれた画像データを読み出して、前記動き検出を行う前記2画面の一方として、前記バスを介して前記動き検出・動き補償手段に供給する工程と、
前記画像データ書き込み工程で前記画像メモリ部の前記第2のメモリ領域に書き込まれた画像データを読み出して、前記後処理手段に前記バスを介して供給する工程と
を備えることを特徴とする画像データのメモリアクセス方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007291464A JP2009116763A (ja) | 2007-11-09 | 2007-11-09 | 画像処理装置および画像データのメモリアクセス方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007291464A JP2009116763A (ja) | 2007-11-09 | 2007-11-09 | 画像処理装置および画像データのメモリアクセス方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009116763A true JP2009116763A (ja) | 2009-05-28 |
Family
ID=40783819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007291464A Pending JP2009116763A (ja) | 2007-11-09 | 2007-11-09 | 画像処理装置および画像データのメモリアクセス方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009116763A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011158699A1 (ja) * | 2010-06-17 | 2011-12-22 | Nttエレクトロニクス株式会社 | 画像処理装置 |
JP2012226608A (ja) * | 2011-04-20 | 2012-11-15 | Canon Inc | 画像処理装置、画像処理装置の制御方法、およびプログラム |
JP2014078114A (ja) * | 2012-10-10 | 2014-05-01 | Canon Inc | 画像処理装置、画像処理方法及びプログラム |
JP2014174898A (ja) * | 2013-03-12 | 2014-09-22 | Pfu Ltd | 画像データ処理装置、画像データ処理方法及び画像データ処理プログラム |
-
2007
- 2007-11-09 JP JP2007291464A patent/JP2009116763A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011158699A1 (ja) * | 2010-06-17 | 2011-12-22 | Nttエレクトロニクス株式会社 | 画像処理装置 |
JP5616965B2 (ja) * | 2010-06-17 | 2014-10-29 | Nttエレクトロニクス株式会社 | 画像処理装置 |
US9286018B2 (en) | 2010-06-17 | 2016-03-15 | Ntt Electronics Corporation | Image processing device for improved access efficiency |
JP2012226608A (ja) * | 2011-04-20 | 2012-11-15 | Canon Inc | 画像処理装置、画像処理装置の制御方法、およびプログラム |
JP2014078114A (ja) * | 2012-10-10 | 2014-05-01 | Canon Inc | 画像処理装置、画像処理方法及びプログラム |
JP2014174898A (ja) * | 2013-03-12 | 2014-09-22 | Pfu Ltd | 画像データ処理装置、画像データ処理方法及び画像データ処理プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4882956B2 (ja) | 画像処理装置および画像処理方法 | |
JP2009071689A (ja) | 画像処理装置、画像処理方法および撮像装置 | |
US7630584B2 (en) | Image processing apparatus, image processing system, imaging apparatus and image processing method | |
JP2009105533A (ja) | 画像処理装置、撮像装置、画像処理方法および撮像画像処理方法 | |
JP4340915B2 (ja) | 撮像画像信号の歪み補正方法、撮像画像信号の歪み補正装置、撮像方法および撮像装置 | |
US7692688B2 (en) | Method for correcting distortion of captured image, device for correcting distortion of captured image, and imaging device | |
JP4178480B2 (ja) | 画像処理装置、画像処理方法、撮像装置および撮像方法 | |
JP4655957B2 (ja) | 撮像画像の歪み補正方法、撮像画像の歪み補正装置、撮像方法および撮像装置 | |
JP2012142865A (ja) | 画像処理装置及び画像処理方法 | |
WO2004019607A1 (ja) | 画像処理装置と画像処理システム及び画像処理方法 | |
JP2004336106A (ja) | 画像処理装置、画像処理方法ならびに撮像装置 | |
JP2009258868A (ja) | 画像処理装置および画像処理方法 | |
JP2009055410A (ja) | 画像処理装置および画像処理方法 | |
JP2004056789A (ja) | 小型イメージセンサの解像度及び画質改善方法 | |
KR101140953B1 (ko) | 영상 왜곡 보정 장치 및 방법 | |
JP2009116763A (ja) | 画像処理装置および画像データのメモリアクセス方法 | |
JP4998134B2 (ja) | 画像処理装置および画像処理方法 | |
JP4888306B2 (ja) | 画像処理装置および画像処理方法 | |
JP4874175B2 (ja) | 画像拡大方法、画像拡大装置、集積回路、およびプログラム | |
JP2008147904A (ja) | 信号処理方法および信号処理装置 | |
JP2009130489A (ja) | 撮像装置、撮像記録方法、撮像画像記録再生装置および撮像画像記録再生方法 | |
JP2009140046A (ja) | 画像処理装置および画像データのメモリアクセス方法 | |
JP2005063154A (ja) | 画像処理装置、画像処理システム、撮像装置および画像処理方法 | |
JP4670630B2 (ja) | 画像処理装置、画像処理方法、撮像装置および撮像方法 | |
JP6524644B2 (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 |