JP2007151169A - 動ベクトル検出装置および記録媒体 - Google Patents

動ベクトル検出装置および記録媒体 Download PDF

Info

Publication number
JP2007151169A
JP2007151169A JP2007025733A JP2007025733A JP2007151169A JP 2007151169 A JP2007151169 A JP 2007151169A JP 2007025733 A JP2007025733 A JP 2007025733A JP 2007025733 A JP2007025733 A JP 2007025733A JP 2007151169 A JP2007151169 A JP 2007151169A
Authority
JP
Japan
Prior art keywords
motion vector
block
shift register
pixel
outputs
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.)
Revoked
Application number
JP2007025733A
Other languages
English (en)
Inventor
Akira Iizuka
彰 飯塚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
United Module Corp
Original Assignee
United Module Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by United Module Corp filed Critical United Module Corp
Priority to JP2007025733A priority Critical patent/JP2007151169A/ja
Publication of JP2007151169A publication Critical patent/JP2007151169A/ja
Revoked legal-status Critical Current

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

【課題】動き探索の演算量を増大することなく動ベクトルの検出精度を高める。
【解決手段】 複数のシフトレジスタが直列に接続され、動ベクトル探索範囲内の各画素値をシフトレジスタの初段から最終段へと順次送りながら入力していくようになされるとともに、各シフトレジスタの出力が個別に取り出されるようになされたシフトレジスタ群と、符号化対象ブロック内の所定の画素位置に各々対応して設けられ、上記シフトレジスタ群内の所定のシフトレジスタからの出力を複数入力してその中から何れかを選択的に出力する複数の選択手段と、符号化対象ブロック内の各画素値と、上記選択手段あるいは上記シフトレジスタ群より供給される、動ベクトル探索範囲中で参照ブロックの候補となるブロック内の各画素値との差分絶対値を計算する各画素毎の差分絶対値計算手段と、上記選択手段を所定の制御信号により制御する制御手段とを備える。
【選択図】図9

Description

本発明は、動ベクトル検出装置および記録媒体に関するものである。
動画像信号の符号化においては、情報量を高能率圧縮するために、動画像信号のフレーム間の相関性の高さに着目してフレーム間の差分を符号化する方法(フレーム間符号化)が採用されることが多い。すなわち、差分をとる対象フレームが存在しない最初のフレームについては1画面をそのまま符号化するが、それ以降のフレームについては、符号化した情報を更に復号した1つ前のフレーム(参照フレーム)との差分をとり、その差分を符号化するという方法である。
しかし、この方法では、全てのフレームについて1画面をそのまま符号化する場合に比べれば情報量を少なくできるが、差分をとるフレーム間で画面に動きがあった部分については、差分値が大きくなることがあり、情報量の圧縮という点に関してはまだまだ十分とは言えない。そこで、このような場合も考慮して更に効率的に情報量を圧縮するために、動き補償という方法(動き補償フレーム間符号化)が用いられる。
動き補償を用いないフレーム間符号化においては、フレーム間の差分は、比較される両フレームの空間座標が互いに同一の箇所でとられる。これに対して動き補償を用いる場合は、両フレームの空間座標は必ずしも同一である必要はなく、画面の動きを考慮し、フレーム間の差分がより小さくなるような参照フレームの箇所との間で差分がとられる。このときの符号化対象箇所の座標と参照フレーム内の差分をとる箇所の座標とのずれを表すのが動ベクトルである。これを図面を用いて説明する。
図3は、動き補償フレーム間予測および動ベクトルの説明図である。図3において、301は参照フレーム、302は符号化対象フレームであり、白抜きの星☆だけが動いていて背景は全く動いていない様子が示されている。符号化対象フレーム302は、動き補償フレーム間符号化を行うにあたって複数の小さなブロックに分割され、このブロック単位で符号化が行われる。
例えば、動画像通信の符号化標準であるITU−T勧告H.261やH.263、動画像蓄積の符号化標準であるMPEG1やMPEG2、MPEG4では、マクロブロックと呼ばれる縦横16画素の単位に分割して符号化される。303は符号化対象フレーム302を複数のマクロブロックに分割した様子を示すものである。
今、符号化対象フレーム303の分割された複数のマクロブロックのうち、白抜きの星☆がある303aのブロックに注目する。304は301と同じ参照フレームであるが、ここでマクロブロック303aと同じ座標のブロックは、304aのブロックとなる。しかし、これらのフレーム間では動きが発生しているので、マクロブロック303aとの差分をとるにあたってその差分値が最も小さくなるのは304bに位置するブロックである。このとき、ブロック304aの座標とブロック304bの座標とのずれを表す304cが動ベクトルとなる。
情報の圧縮という点に関しては、符号化対象フレーム内のマクロブロック303aと参照フレーム内のブロック304aとの差分を符号化するよりも、符号化対象フレーム内のマクロブロック303aと参照フレーム内のブロック304bとの差分および動ベクトル304cを符号化した方が効率が良い。
この動ベクトルを検出する方法として、よく用いられる方法の1つにブロックマッチング法がある。これは、符号化対象ブロックの位置を中心にして動ベクトルを検出するための探索範囲をあらかじめ設定し、その探索範囲内の全ての候補ベクトルに対するブロックについて符号化対象ブロックの各画素との差分の絶対値の合計を算出し、その合計値が最小となった候補ブロックを参照ブロック(図3のブロック304bに相当)として採用するという方法である。これを図面を用いて説明する。
図4は、ブロックマッチング法の説明図であり、簡略化のため、符号化対象ブロックは縦横2画素、探索範囲は符号化対象ブロックを中心にして上下左右とも+2画素の範囲としている。図4において、401は符号化対象フレーム内の符号化対象ブロック位置を示し、402は1フレーム前の参照フレーム内の探索範囲を示している。403〜427は探索範囲402内の全ての候補ベクトルに対するブロックである。また、○内の数字は、画素番号を示している。
この例の場合、符号化対象ブロック401と探索範囲402内の各候補ブロック403〜427との間で対応する位置の画素間の差分絶対値の合計を算出する。左上の候補ブロック403を例にとると、
|a15-b1|+|a16-b2|+|a21-b7|+|a22-b8|
を算出することになる。ここで、a** は符号化対象画素の値、b** は参照画素の値であり、**が図4の画素番号に対応している。同様の演算を他の候補ブロック404〜427についても行い、その結果が最小であったブロックを参照ブロックとして採用する。
このように動ベクトルを求める圧縮方式においては、画面内における画像の動きが速い場合も考えられることから、動ベクトル検出の精度を高める、すなわち符号化対象ブロックとの間で各画素毎の差分絶対値の合計ができるだけ小さくなる参照ブロックを検出するためには、候補ベクトルがより多く含まれるように探索範囲を広げれば良い。
しかしながら、探索範囲を広げると、それだけ動き探索の演算量が増大し、動ベクトルの検出に要する時間が増加してしまうという問題がある。
本発明はこのような問題を解決するために成されたものであり、例えばH.261、H.263やMPEG1、2、4等のような動ベクトル検出を伴う符号化方式において、動き探索の演算量を増大することなく(演算処理に要する時間を増大することなく)、動ベクトルの検出精度を高めることができるようにすることを目的とする。
本発明の動ベクトル検出装置は、ブロックマッチング法により動ベクトルを発生する動ベクトル検出装置であって、複数のシフトレジスタが直列に接続され、動ベクトル探索範囲内の各画素値を上記直列に接続されたシフトレジスタの初段から最終段へと順次送りながら入力していくようになされるとともに、各シフトレジスタの出力が個別に取り出されるようになされたシフトレジスタ群と、上記符号化対象ブロック内の所定の画素位置に各々対応して設けられ、上記シフトレジスタ群内の所定のシフトレジスタからの出力を複数入力してその中から何れかを選択的に出力する複数の選択手段と、上記符号化対象ブロック内の各画素値と、上記選択手段あるいは上記シフトレジスタ群より供給される、上記動ベクトル探索範囲中で参照ブロックの候補となるブロック内の各画素値との差分絶対値を計算する各画素毎の差分絶対値計算手段と、上記選択手段を所定の制御信号により制御する制御手段とを備えことを特徴とする。
本発明のコンピュータ読み取り可能な記録媒体は、ブロックマッチング法により動ベクトルを発生する動ベクトル検出装置であり、複数のシフトレジスタが直列に接続され、動ベクトル探索範囲内の各画素値を上記直列に接続されたシフトレジスタの初段から最終段へと順次送りながら入力していくようになされるとともに、各シフトレジスタの出力が個別に取り出されるようになされたシフトレジスタ群と、上記符号化対象ブロック内の所定の画素位置に各々対応して設けられ、上記シフトレジスタ群内の所定のシフトレジスタからの出力を複数入力してその中から何れかを選択的に出力する複数の選択手段と、上記符号化対象ブロック内の各画素値と、上記選択手段あるいは上記シフトレジスタ群より供給される、上記動ベクトル探索範囲中で参照ブロックの候補となるブロック内の各画素値との差分絶対値を計算する各画素毎の差分絶対値計算手段とを備えた動ベクトル検出装置を制御するプログラムを記録するコンピュータ読み取り可能な記録媒体であって、上記選択手段を所定の制御信号により制御する処理をコンピュータに実行させるコンピュータプログラムを記録したことを特徴とする。
本発明によれば、動き探索の演算量を増大することなく動ベクトルの検出精度を高めることができる。
特に、符号化対象ブロック位置を含む所定の矩形領域内において、符号化対象ブロックからの距離が遠い領域を除外した範囲を動ベクトル探索範囲として計算を行うようにすれば、矩形領域の探索範囲を通常より大きく広げても、その大きな矩形領域内に含まれる動ベクトル探索範囲中で参照ブロックの候補として差分絶対値計算の対象となるブロックの数が増大しないようにすることができる。これにより、動き探索の演算量を増大することなく、探索範囲を広げて動ベクトルの検出精度を高めることができる。
以下、本発明の一実施形態を図面に基づいて説明する。
一般に、H.261、H.263やMPEG1、2、4等の符号化方式においては、動ベクトル検出以降の符号化処理(例えばDCT処理を含むもの)は、縦横16画素のマクロブロックを更に4分割したサブブロックと呼ばれる縦横8画素の単位で行われる。特に、H.263やMPEG4では、マクロブロック単位の動ベクトルばかりでなく、サブブロック単位の動ベクトルを採用することも可能であり、両方を求めておいて効率の良い方を選ぶことができる。このサブブロック単位の動ベクトルについて図面を用いて説明する。
図5は、サブブロック単位の動ベクトルの説明図であり、簡略化のため、符号化対象マクロブロックは縦横4画素、探索範囲は符号化対象マクロブロックを中心にして上下左右とも+2画素の範囲としている。図5において、501は符号化対象フレーム内の符号化対象マクロブロックを示し、502は1フレーム前の参照フレーム内のマクロブロック単位の探索範囲を示している。また、503〜506は符号化対象マクロブロック501を4分割して得られるサブブロックであり、それぞれ縦横2画素で構成されている。
この例の場合、サブブロック単位の動ベクトルは、左上のサブブロック503を例にとると、そのサブブロック503について上下左右に+2画素をとった探索範囲507において動ベクトル検出を行った結果となる。この動ベクトルの検出法は図4で説明した通りである。同様に、サブブロック504〜506の動ベクトルは、それらのサブブロックについての探索範囲508〜510においてそれぞれ動ベクトル検出を行った結果となる。
さらに、H.263やMPEG4では、サブブロック単位の動ベクトル検出のための探索範囲の中心を、符号化対象サブブロックの位置と全く同じにせずに、オフセットを加えて所定量だけ移動させることが可能である。これを図面を用いて説明する。
図6は、サブブロック単位の探索範囲にオフセットを加えた場合の動ベクトル検出の説明図である。図6において、503は図5に示した左上の符号化対象サブブロックの位置を示す。この符号化対象サブブロック503の動ベクトル検出のための探索範囲の原点を、オフセットを加えることで例えば601の位置にずらし、サブブロック単位の探索範囲もそれに合わせて602の位置にずらすことがH.263やMPEG4では可能である。
なお、オフセットの値は、マクロブロック単位の探索範囲502内に制限されることはないので、オフセットの値によっては、サブブロック単位の探索範囲602がマクロブロック単位の探索範囲502を外れることもあり得る。これによれば、画像の動きが速くて本来の位置の探索範囲内に符号化対象サブブロックの画像と同じ画像がない場合でも、まわりのブロックの動きから予想したオフセットを加えて探索範囲をずらすことにより、符号化対象サブブロックと同じ画像が存在する最適なブロックを参照サブブロックとして採用することができる。
上記のようにサブブロック単位の動ベクトルも採用可能なH.263やMPEG4は、最近になって標準化が成されたばかりであり、これらを応用した製品はまだ数多く存在しないのが現状である。したがって、マクロブロック単位の動ベクトルとサブブロック単位の動ベクトルとの両方を求めて効率の良い方を選ぶようにするための装置をどのように構成するかは、今後の課題とも言える。
そこで本発明では、オフセットを考慮したサブブロック単位の動ベクトルを採用することも可能なH.263やMPEG4の応用化に先駆けて、マクロブロック単位の動ベクトルとサブブロック単位の動ベクトルとをより簡単な構成で求めることが可能な動ベクトル検出装置を提供することを第1の目的とし、以下に述べる第1の実施形態を提案する。
(第1の実施形態)
図1は、第1の実施形態による動ベクトル検出装置の要部構成を示すブロック図であり、簡略化のため、図5に示したように符号化対象マクロブロックが縦横4画素、マクロブロック単位の探索範囲が符号化対象マクロブロックを中心にして上下左右とも+2画素の範囲の場合を想定している。
図1において、101は差分絶対値計算回路、102a〜102dはサブブロック合算回路、103はマクロブロック合算回路、104は最小値決定/動ベクトル発生回路、105aおよび105bはフレームメモリ、106aおよび106bは読み出し回路、107は制御回路である。
符号化対象フレームの画像は、第1のフレームメモリ105aに格納され、その中から第1の読み出し回路106aより出力されるアドレスに従って符号化対象マクロブロックの各画素値(以下、符号化対象マクロブロックデータという)が読み出されて差分絶対値計算回路101に供給される。また、上記符号化対象フレームより1フレーム前の参照フレームの画像は、第2のフレームメモリ105bに格納され、その中から第2の読み出し回路106bより出力されるアドレスに従って探索範囲内の各画素値(以下、探索データという)が読み出されて差分絶対値計算回路101に供給される。
上記差分絶対値計算回路101の内部において、11a〜11pは画素毎の差分絶対値計算回路(以下、PDCという)、12a〜12gはマルチプレクサ(以下、MPXという)、13a〜13cは4つのシフトレジスタが直列に接続された4段シフトレジスタである。上記PDC11a〜11pの位置は、実際の画面上の符号化対象マクロブロックの画素の位置に対応している。したがって、図1中の点線で囲んだ部分14a〜14dがマクロブロック内の各サブブロックの位置に対応している。
さらに、上記PDC11a〜11pの内部構成を図2に示す。図2において、201〜203はシフトレジスタ、204は計算回路である。第1のシフトレジスタ201は、第1のフレームメモリ105aから読み出された符号化対象マクロブロックデータの1画素分を保持する。第3のシフトレジスタ203は、前段の種々の回路から送られてくる探索データの1画素分を保持する。
計算回路204は、上記第1のシフトレジスタ201に保持された1画素分の符号化対象マクロブロックデータAと、シフトレジスタ203に保持された1画素分の探索データBとの差分絶対値|A−B|を計算し、その計算結果を第2のシフトレジスタ202に保持する。第2のシフトレジスタ202に保持された1画素分の差分絶対値は、4つのサブブロック合算回路102a〜102dのうち対応する回路に出力され、第3のシフトレジスタ203に保持された探索データBは、上記差分絶対値が出力されるのと同じタイミングで次段に出力される。
各PDC11a〜11pが図2のように構成されているので、差分絶対値計算回路101内の各行では、入力された探索データが右から左へと順に送られていく。上から2行目以降の一番左にあるPDC11c,11i,11kから出力された探索データは、それぞれその上の行の右端に送られる。3個の4段シフトレジスタ13a〜13cは、1番下の行を除いた残り3行の各PDCよりも入力側(右側)に夫々設けられている。
本実施形態では、マクロブロック単位の探索範囲が横方向に8画素であるのに対して、探索範囲内の各候補ブロックの大きさは横方向に4画素で探索範囲より4画素少ないので、各行に設けた3個の4段シフトレジスタ13a〜13cは、候補ブロック内の画素値として使わない各行4画素分の探索データを格納するものとして機能する。
また、MPX12aは、サブブロック14aとサブブロック14bとの間にあり、PDC11eからの出力と4段シフトレジスタ13aからの出力とのどちらかを選択出力するようになっている。MPX12bは、サブブロック14aとサブブロック14bとの間にあり、PDC11gからの出力と第2のフレームメモリ105bからの出力とのどちらかを選択出力するようになっている。
MPX12cは、4段シフトレジスタ13aの前段に設けられ、PDC11cからの出力とPDC11gからの出力とのどちらかを選択出力するようになっている。MPX12dは、PDC11hの前段に設けられ、4段シフトレジスタ13bからの出力と第2のフレームメモリ105bからの出力とのどちらかを選択出力するようになっている。
MPX12eは、サブブロック14cとサブブロック14dとの間にあり、PDC11mからの出力と4段シフトレジスタ13cからの出力とのどちらかを選択出力するようになっている。MPX12fは、サブブロック14cとサブブロック14dとの間にあり、PDC11oからの出力と第2のフレームメモリ105bからの出力とのどちらかを選択出力するようになっている。
MPX12gは、4段シフトレジスタ13cの前段に設けられ、PDC11kからの出力とPDC11oからの出力とのどちらかを選択出力するようになっている。
以上に述べた各MPX12a〜12gは、制御回路107から与えられるコントロール信号に応じて切り換えられるようになっており、マクロブロック単位の動ベクトルを求めるときは全て上側の入力が選択される。なお、サブブロック単位の動ベクトルを求めるときの選択状態は後述する。
これにより、マクロブロック単位の動ベクトルを求めるときは、16個のPDC11a〜11pが3個の4段シフトレジスタ13a〜13cを途中に介しながら直列に接続され、探索データが右下のPDC11pから左上のPDC11aへと順に送られていくことになる。一方、サブブロック単位の動ベクトルを求めるときは、各サブブロック単位で4個のPDCが直列に接続され、各サブブロック用の探索データが各サブブロックの右下のPDCから左上のPDCへと順に送られていくことになる。
各サブブロック合算回路102a〜102dは、それぞれ対応するサブブロック14a〜14d内で計算された各画素毎の差分絶対値の合計を求め、その結果をマクロブロック合算回路103および最小値決定/動ベクトル発生回路104に供給する。マクロブロック合算回路103は、各サブブロック合算回路102a〜102dから供給されるサブブロック毎の差分絶対値の合計を全て合計する計算を行い、その結果を最小値決定/動ベクトル発生回路104に供給する。
最小値決定/動ベクトル発生回路104は、各サブブロック合算回路102a〜102dあるいはマクロブロック合算回路103から各候補ブロック毎に与えられる差分絶対値の合計値の中から最小のものを決定する。そして、その合計値が最小の候補ブロックを参照ブロックとして採用し、動ベクトルを発生する。
ここで、マクロブロック単位の動ベクトルを求めるときはマクロブロック合算回路103からの合計値を用いて1個の動ベクトルを求め、サブブロック単位の動ベクトルを求めるときは各サブブロック合算回路102a〜102dからの合計値を用いて4個の動ベクトルを求める。最小値決定/動ベクトル発生回路104でどちらの合計値を用いるかは、制御回路107から与えられるコントロール信号によって制御される。
次に、上記のように構成した本実施形態による動ベクトル検出装置の動作について説明する。
まず、第1のフレームメモリ105aから符号化対象マクロブロックデータが差分絶対値計算回路101に入力され、各画素のデータがそれぞれ対応するPDC11a〜11p中の第1のシフトレジスタ201に保持される。この符号化対象マクロブロックデータは、同一のマクロブロックの処理期間中はそのまま第1のシフトレジスタ201に保持される。
なお、第1のフレームメモリ105aからの符号化対象マクロブロックデータの入力は、以下に述べる探索範囲のデータの入力において、最初のデータが図1の一番左上のPDC11aに到着するまでに完了していれば良い。
次に、差分絶対値計算回路101に探索範囲のデータを入力するが、最初に、マクロブロック単位の動ベクトルを求める場合について説明する。この場合は、差分絶対値計算回路101にマクロブロック単位の探索データが入力される。ここでは、縦横4画素の符号化対象マクロブロックに対して±2画素を探索するので、探索データの大きさは縦横8画素となる(図5の502)。
また、図1における全てのMPX12a〜12gでは、制御回路107からのコントロール信号に従って上側の入力を選択する。これにより、差分絶対値計算回路101内の4段シフトレジスタ13a〜13cおよび各画素毎のPDC11a〜11pは、横の行単位で下から上に、各行内では右から左に直列に接続される。
ここで、最終行の入力側からマクロブロック単位の探索データ(図5の探索範囲502内のデータ)をラスタスキャン順に入力すると、最初のデータ(探索範囲の左上にある画素番号1のデータ)が左上のPDC11aに到着した時点で、左上の候補ブロック(画素番号1〜4、9〜12、17〜20、25〜28の16画素からなるブロックで、図4で言うところの候補ブロック403に相当)のデータが各PDC11a〜11pに入力されたことになる。
このとき、各PDC11a〜11p内の計算回路204で符号化対象マクロブロックデータとマクロブロック単位の探索データとの差分絶対値が各画素ごとに計算され、その結果が第2のシフトレジスタ202に保持される。これらの差分絶対値は各サブブロック14a〜14dごとに対応するサブブロック合算回路102a〜102dに入力されて合算されることにより、サブブロック単位の差分絶対値の合計を得る。
さらに、各サブブロック合算回路102a〜102dで求められたサブブロック単位の差分絶対値の合計がマクロブロック合算回路103に入力されて合算されることにより、マクロブロック単位の差分絶対値の合計を得る。こうして得られたマクロブロック単位の差分絶対値の合計は、最小値決定/動ベクトル発生回路104に入力され、図示しない内部のレジスタに保持される。
次に、最終行の入力側から次の探索データを1画素分入力すると、各PDC11a〜11pには次の候補ブロック(図4で言うところの候補ブロック404に相当)のデータが入力されたことになる。この場合も同様にして、マクロブロック単位の差分絶対値の合計が算出され、それが最小値決定/動ベクトル発生回路104に入力される。最小値決定/動ベクトル発生回路104では、今回入力された差分絶対値の合計と、前回図示しない内部のレジスタに保持された差分絶対値の合計とを大小比較し、値の小さい方を上記レジスタに保持し直す。
以下同様にして、最終行の入力側から探索データを順次入力していき、マクロブロック単位の差分絶対値の合計を求めていく。ところで、最初の候補ブロックのデータが各PDC11a〜11pに入力されたときから数えて、5画素分の探索データを入力すると、水平位置が同じ5個の候補ブロック(図4で言うところの候補ブロック403〜407に相当)が各PDC11a〜11pに順に入力される。
続く3画素分の探索データを入力したときには差分絶対値の合計の計算には無関係になるが、更にそれに続く5画素分の探索データを順に入力すると、先に入力された5個の候補ブロックから水平位置が1画素下がった5個の候補ブロック(図4で言うところの候補ブロック408〜412に相当)が各PDC11a〜11pに順に入力される。このように探索データを順次入力していくことで、全ての候補ブロックの探索データが各PDC11a〜11pに順に入力される。
このとき、最小値決定/動ベクトル発生回路104は、上述したような大小比較およびレジスタへの更新記憶の処理を各候補ブロックについてマクロブロック単位の差分絶対値の合計が計算されるごとに行うことにより、最終的に各候補ブロックの中で最小の差分絶対値の合計を有する候補ブロックを参照ブロックとして決定する。そして、その決定した参照ブロックに対応する動ベクトルを発生して、マクロブロック単位の動ベクトルとして外部に出力する。
なお、もしサブブロック単位の動ベクトルを検出するための探索範囲の原点がいずれも符号化対象サブブロックと同じ位置であったら(オフセットがなかったら)、最小値決定/動ベクトル発生回路104は、各サブブロック合算回路102a〜102dで求められたサブブロック単位の差分絶対値の合計を用いて上述したマクロブロック単位の処理と同様の処理を各サブブロック毎に行うことにより、4つのサブブロック単位の動ベクトルを得ることができる。
このように、探索範囲に関するオフセットがない場合には、各MPX12a〜12gでの選択を切り換えなくても、マクロブロック単位の動ベクトルとサブブロック単位の動ベクトルとの両方を求めることができる。したがって、オフセットについて何ら考慮しない簡易なシステムを構築しようとする場合には各MPX12a〜12gは設ける必要がない。
また、オフセットが付いていても、各サブブロック14a〜14dでオフセットが同じ場合には、第2の読み出し回路106bの制御によりオフセットに応じたマクロブロック単位の探索データを入力し直すことで、サブブロック単位の動ベクトルを得ることが可能である。
次に、サブブロック単位の動ベクトルを求める場合で、しかも各サブブロック14a〜14dでオフセットが互いに異なる場合の動作を説明する。この場合は、探索データがサブブロック毎に全く異なる場合もあるので、第2のフレームメモリ105bから差分絶対値計算回路101にサブブロック毎に独立して探索データを入力する。この探索データの入力を制御しているのは、第2の読み出し回路106bである。
最初に、左上のサブブロック14aの動ベクトルを求める場合について説明する。この場合、MPX12a,12bは下側の入力を選択し、MPX12cは上側の入力を選択し、その他のMPX12d〜12gは不問(ドントケア)とする。このようにすることで、第2のフレームメモリ105bから読み出されたサブブロック単位の探索データはPDC11dに直接入力され、PDC11cより出力された探索データはMPX12c、4段シフトレジスタ13a、MPX12aを介してPDC11bに入力される。
これは、先にマクロブロック単位の動ベクトルを検出する際に構成した縦横4画素分に相当するPDC11a〜11pの接続を、縦横2画素分に相当するPDC11a〜11dの接続に縮小したものとなる。したがって、差分絶対値計算回路101にサブブロック単位の探索データ(縦横2画素の符号化対象サブブロックデータに対して±2画素を探索するので、探索データの大きさは縦横6画素となる。図5の探索範囲507を参照)をラスタースキャン順に入力し、サブブロック合算回路102aの出力についてのみ最小値決定/動ベクトル発生回路104で処理を行えば、サブブロック単位での動ベクトルを求めることができる。
以下同様に、右上、左下、右下の各サブブロック14b〜14dについてもサブブロック単位の動ベクトルを夫々求めることができる。なお、右上のサブブロック14bの動ベクトルを求める場合には、MPX12c,12dで下側の入力を選択するとともに、その他のMPXを不問(ドントケア)として、サブブロック合算回路102bの出力についてのみ最小値決定/動ベクトル発生回路104で処理を行えば良い。
また、左下のサブブロック14cの動ベクトルを求める場合には、MPX12e,12fで下側の入力を選択し、MPX12gで上側の入力を選択するとともに、その他のMPXを不問(ドントケア)として、サブブロック合算回路102cの出力についてのみ最小値決定/動ベクトル発生回路104で処理を行えば良い。
さらに、右下のサブブロック14dの動ベクトルを求める場合には、MPX12gで下側の入力を選択するとともに、その他のMPXを不問(ドントケア)として、サブブロック合算回路102dの出力についてのみ最小値決定/動ベクトル発生回路104で処理を行えば良い。
以上により、全てのサブブロックについてサブブロック単位の動ベクトルを検出することができる。
以上に述べた一連の動作、すなわち、第1のフレームメモリ105aからの符号化対象マクロブロックデータの読み出し、第2のフレームメモリ105bからの探索データの読み出し、各MPX12a〜12gでの選択切り換え動作および最小値決定/動ベクトル発生回路104での処理は、制御回路107が制御している。
制御回路107は、ハードウェア的に構成しても良いが、例えばCPU、ROMおよびRAMなどから成るマイクロコンピュータにより構成することも可能である。この場合、上述のような一連の処理を行うシーケンスを記述したプログラムは上記ROMに記憶され、このROMに記憶されたプログラムに従ってCPUが動作する。このCPUの作業プログラムを格納したROMは、本発明の記録媒体を構成する。
また、上記マイクロコンピュータに周辺インタフェースを介してハードディスクを接続し、このハードディスクに上記CPUの作業プログラムを格納するようにしても良い。このハードディスクには上記作業プログラムを外部から供給することが可能であり、この場合、ハードディスクや上記作業プログラムを供給するための手段、例えば上記作業プログラムを格納した記録媒体も、本発明の記録媒体を構成する。
上記作業プログラムを格納するための記録媒体としては、ROMやハードディスクの他に、例えばフレキシブルディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード等を用いることができる。
このように、本実施形態によれば、H.263やMPEG4等の符号化方式において、例えば画像の動きに応じてサブブロック毎にオフセットを加えてサブブロック単位の動ベクトルを求めることにより、探索範囲を広げて演算量を増大することなく(演算処理に要する時間を増大することなく)、動ベクトルの検出精度を高め、情報量をより効率的に圧縮することができる。
なお、以上の実施形態では、説明の簡略化のために符号化対象マクロブロックが縦横4画素で、マクロブロック単位の探索範囲が符号化対象マクロブロックを中心にして上下左右とも+2画素の範囲の場合について述べたが、本発明はこれに限定されない。従来例で述べたように、H.263やMPEG4では実際には符号化対象マクロブロックは縦横16画素で構成されるので、PDC、MPXおよびシフトレジスタ等をその数に応じて構成すれば良い。
また、以上の実施形態では、各サブブロック合算回路102a〜102dの出力とマクロブロック合算回路103の出力とを両方とも最小値決定/動ベクトル発生回路104に入力し、最小値決定/動ベクトル発生回路104でどちらの情報を使うかを制御回路107からのコントロール信号によって制御していたが、本発明はこれに限定されない。例えば、制御回路107が各サブブロック合算回路102a〜102dを制御し、その出力先をマクロブロック合算回路103にするか最小値決定/動ベクトル発生回路104にするかを切り換えるように構成しても良い。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。本発明は、上述したH.263やMPEG4等の符号化方式だけでなく、H.261やMPEG1、2等のようにサブブロック単位の動ベクトルを用いない他の符号化方式においても、動き探索の演算量を増大することなく動ベクトルの検出精度を高めることが可能な動ベクトル検出装置を提供することを第2の目的として、以下に述べる第2の実施形態を提案する。
上述したように、動ベクトルの検出精度を高めるために探索範囲を単純に広げると、その分だけ候補ベクトルの数が増大し、動き探索の演算量が大きくなってしまう。そこで、第2の実施形態では、探索範囲を広げる一方でその範囲内の候補ブロックを選別することで、候補ベクトルの数の増加を抑え、動ベクトルの検出に要する時間の増加も抑えることができるようにしている。
図7は、図4の例に示した縦横6画素の探索範囲に比べて探索範囲を縦横8画素に広げる(符号化対象ブロックを中心にして上下左右とも+3画素の範囲に広げる)代わりに、符号化対象ブロックからの距離が遠いブロックを候補ブロックから外した場合の例である。
図7において、701は符号化対象フレーム内の縦横2画素の符号化対象ブロック位置を示し、702は1フレーム前の参照フレーム内の縦横8画素の探索範囲を示している。また、点線で囲んだ703の範囲は、符号化対象ブロック701からの距離が遠いブロックを候補ブロックから外した真の動ベクトル探索範囲であり、704〜728は上記動ベクトル探索範囲703内の全ての候補ベクトルに対するブロックである。また、○内の数字は、画素番号を示している。
また、図8は、探索範囲の横方向に重きをおき、図4の例に比べて探索範囲を符号化対象ブロックを中心にして左右を+4画素の範囲に広げる代わりに、符号化対象ブロックからの距離が遠いブロックを候補ブロックから外した場合の例である。この図8の例は、画像データを得るべくカメラで撮影するときは、カメラを横方向に動かすことが多いことや、画像の表示画面そのものが横長の形状であることなどから、横方向に画像の相関性が強いことに基づいている。
図8において、801は符号化対象フレーム内の縦横2画素の符号化対象ブロック位置を示し、802は1フレーム前の参照フレーム内の縦6画素、横10画素の探索範囲を示している。また、点線で囲んだ803の範囲は、符号化対象ブロック801からの距離が遠いブロックを候補ブロックから外した真の動ベクトル探索範囲であり、804〜828は上記動ベクトル探索範囲803内の全ての候補ベクトルに対するブロックである。また、○内の数字は、画素番号を示している。
図7および図8の例のように、動ベクトルを求めるための探索範囲を広げる代わりに、その範囲内の候補ブロックを選別することにより、候補ブロックの数を図4の例の場合と同じ25個にしている。これにより、動き探索の演算量を増大することなく、探索範囲を広げて動ベクトルの検出精度を高めることができるようになる。
以下に、このような正方形または長方形でない動ベクトルの探索範囲にも対応可能な第2の実施形態による動ベクトル検出装置の構成を説明する。
図9は、第2の実施形態による動ベクトル検出装置の要部構成を示すブロック図であり、簡略化のため、図10に示すように、符号化対象ブロックが縦横4画素、探索範囲が符号化対象ブロックを中心にして上下左右とも+4画素の範囲(上下左右とも+2画素としていた図5の場合よりも広い範囲)で、符号化対象ブロックからの距離が遠いブロックを候補から外した場合を想定している。
図10において、1001は符号化対象フレーム内の符号化対象ブロックを示し、1002は1フレーム前の参照フレーム内における、符号化対象ブロックを中心にして上下左右とも+4画素の広い探索範囲を示している。また、点線で囲んだ1003の範囲は、上述の広い探索範囲1002の中から符号化対象ブロック1001からの距離が遠いブロックを候補から外した真の動ベクトル探索範囲を示し、1004〜1044は上記動ベクトル探索範囲1003内の全ての候補ベクトルに対するブロックを示している。なお、以下の説明で単に「探索範囲」と言うときは、距離が遠いブロックを候補から外した真の動ベクトル探索範囲1003を言うものとする。
図9において、901aおよび901bはフレームメモリ、902aおよび902bは読み出し回路、903は差分絶対値計算回路、904はシフトレジスタ群、905はブロック合算回路、906は最小値決定/動ベクトル発生回路、907は制御回路である。
符号化対象フレームの画像は、第1のフレームメモリ901aに格納され、その中から第1の読み出し回路902aより出力されるアドレスに従って符号化対象ブロックの各画素値(以下、符号化対象ブロックデータという)が読み出されて差分絶対値計算回路903に供給される。また、上記符号化対象フレームより1フレーム前の参照フレームの画像は、第2のフレームメモリ901bに格納され、その中から第2の読み出し回路902bより出力されるアドレスに従って探索範囲内の各画素値(以下、探索データという)が読み出されてシフトレジスタ群904に供給される。
上記差分絶対値計算回路903の内部構成を図11に示す。図11において、1101a〜1101l(エル)はマルチプレクサ(以下、MPXという)、1102a〜1102pは画素毎の差分絶対値計算回路(以下、PDCという)である。上記PDC1102a〜1102pの位置は、実際の画面上の符号化対象ブロックの画素の位置、すなわち図10の符号化対象ブロック1001の位置に対応している。
上記MPX1101a〜1101lの入力端子には、シフトレジスタ群904からの出力信号が複数入力され、その中から何れか1つが選択される。このMPX1101a〜1101lの出力である各選択信号は、各々対応して設けられたPDC1102a〜1102l(エル)に入力される。これらのMPX1101a〜1101lは、制御回路907から与えられるコントロール信号に応じて切り換えられるようになっている。
16個のPDC1102a〜1102pのうち、12個のPDC1102a〜1102lは、各々に対応して設けられたMPX1101a〜1101lで選択されたシフトレジスタ群904からの出力信号(探索データ)と、第1のフレームメモリ901aから読み出された符号化対象ブロックデータとの差分絶対値を画素毎に計算し、その計算結果をブロック合算回路905に供給する。
また、残り4個のPDC1102m〜1102pの入力端子には、シフトレジスタ群904からの出力信号(探索データ)が直接入力されるようになっている。これら4個のPDC1102m〜1102pは、シフトレジスタ群904から直接入力される探索データと、第1のフレームメモリ901aから読み出された符号化対象ブロックデータとの差分絶対値を画素毎に計算し、その計算結果をブロック合算回路905に供給する。
さらに、上記PDC1102a〜1102pの内部構成を図12に示す。図12において、1201、1203はシフトレジスタ、1202は計算回路である。第1のシフトレジスタ1201は、第1のフレームメモリ901aから読み出された符号化対象ブロックデータの1画素分を保持する。
計算回路1202は、上記第1のシフトレジスタ1201に保持された1画素分の符号化対象ブロックデータAと、MPX1101a〜1101lまたはシフトレジスタ群904から入力された1画素分の探索データBとの差分絶対値|A−B|を計算し、その計算結果を第2のシフトレジスタ1203に保持する。第2のシフトレジスタ1203に保持された1画素分の差分絶対値は、ブロック合算回路905に出力される。
次に、シフトレジスタ群904の内部構成を図13に示す。図13において、1301〜1340はシフトレジスタであり、これら40個のシフトレジスタ1301〜1340が直列に接続されている。この図13の例では、36個のシフトレジスタ1301〜1336が、1行内に12個(探索範囲1003の水平方向の最大数に対応)並ぶように3ラインにより構成され、その下のラインに残り4個のシフトレジスタ1337〜1340が設けられている。
シフトレジスタ群904がこのように構成されているので、各ラインでは、第2のフレームメモリ901bより1画素毎に読み出された探索データが、右から左へと順に送られていく。上から2番目以降の一番左にあるシフトレジスタ1313、1325、1337から出力された探索データは、それぞれその上のラインの右端に送られる。これにより、入力された探索データは、右下のシフトレジスタ1340から左上のシフトレジスタ1301へと順に送られていく。
さらに、探索データが順に送られていく過程で、各シフトレジスタ1301〜1340の出力が個別に取り出され、図11に示した差分絶対値計算回路903内の各MPX1101a〜1101lおよびPDC1102m〜1102pの入力端子に供給されるようになっている。ここで、図13中に各シフトレジスタ1301〜1340の後段に近い方の出力から順に付した1〜40の番号は、図11中に示した1〜40の番号に対応しており、各シフトレジスタ1301〜1340の出力は、MPX1101a〜1101lおよびPDC1102m〜1102pの対応する番号の入力端子に入力される。
ブロック合算回路905は、各PDC1102a〜1102pで計算された各画素毎の差分絶対値の合計を求め、その結果を最小値決定/動ベクトル発生回路906に供給する。最小値決定/動ベクトル発生回路906は、ブロック合算回路905から各候補ブロック毎に与えられる差分絶対値の合計値の中から最小のものを決定する。そして、その合計値が最小の候補ブロックを参照ブロックとして採用し、動ベクトルを発生する。
次に、上記のように構成した本実施形態による動ベクトル検出装置の動作について説明する。
まず、第1のフレームメモリ901aから符号化対象ブロックデータが差分絶対値計算回路903に入力され、各画素のデータがそれぞれ対応するPDC1102a〜1102p中の第1のシフトレジスタ1201に保持される。この符号化対象ブロックデータは、同一のブロックの処理期間中はそのまま第1のシフトレジスタ1201に保持される。
なお、第1のフレームメモリ901aからの符号化対象ブロックデータの入力は、以下に述べる探索データの入力において、最初の候補ブロックに対する探索データがすべてシフトレジスタ群904に入力されるまでに完了していれば良い。
次に、第2のフレームメモリ901bから探索データがシフトレジスタ群904に入力される。ここでは、図10に示した探索範囲1003内のデータを、水平方向の1ライン毎に上から順番に、かつ同一ラインでは左から右へと1画素ずつ読み出し、シフトレジスタ群904に入力する。すなわち、図10に示した1〜104の画素番号順に入力する。
ここで、このような探索データの入力処理を画素番号1〜104まで続けたときのシフトレジスタ群904の状態遷移の様子を図14に示す。
図14において、四角の各枡は、図13における各シフトレジスタ1301〜1340に対応している。枡内の斜線で区切られた上側の数字は、各シフトレジスタの番号を示し、同じく下側の数字は、入力された探索データの画素番号を示している。
すなわち、図11および図13に示したように、入力段に近い4つのシフトレジスタ1337〜1340の出力は、各々PDC1102m〜1102pに接続されており、これらに有効な探索データ(探索範囲1003内の候補ブロック1004〜1044として採用可能なブロックの探索データ)が保持されたときの状態を、図14の1401〜1409に示している。
これを図10との対応で説明すると、候補ブロック1004に対する計算を行える状態が1401の状態であり、候補ブロック1005に対する計算を行える状態が1402の状態である。以下、各候補ブロック1008、1013、1020、1029、1036、1041、1044に対する計算を行える状態が各々1403、1404、1405、1406、1407、1408、1049の状態である。
また、図14において太枠で括った4つの連続する枡内のシフトレジスタは、水平方向に連続する4つのPDC、すなわち、PDC1102a〜1102d,1102e〜1102h,1102i〜1102l,1102m〜1102pに各々入力される探索データを保持するシフトレジスタを示している。例えば、1401の状態では、シフトレジスタ1316〜1319,1321〜1324,1328〜1331,1337〜1340から、画素番号1〜4,6〜9,13〜16,22〜25の探索データが各PDC1102a〜1102pに入力されることを示している。
この図14から明らかなように、4つのPDC1102m〜1102pに入力される探索データを保持するシフトレジスタは、図13の入力段に近い4つのシフトレジスタ1337〜1340で固定である(そのためMPXは対応して設けられていない)。これに対して、それ以外のPDC1102a〜1102lに入力される探索データを保持するシフトレジスタは、残りの36個のシフトレジスタ1301〜1336の中の何れかであり、固定ではない(そのためにMPX1101a〜1101lが対応して設けられている)。
すなわち、第2のフレームメモリ901bから探索データを1画素毎に読み出し、それをシフトレジスタ群904に順次入力していくと、画素番号1〜25の25個の探索データを読み出した時点で、図14の1401の状態となる。この時点で候補ブロック1004に対する差分絶対値の計算を行える探索データが全て揃い、例えばPDC1102a〜1102dに入力される探索データを保持するシフトレジスタは、シフトレジスタ1316〜1319となる。
したがって、制御回路907は、MPX1101aの出力としてシフトレジスタ1316からの出力(番号16の出力)を選択するように、コントロール信号を発生する。また、MPX1101b〜1101dの出力としてシフトレジスタ1317〜1319からの出力(番号17〜19の出力)を各々選択するように、コントロール信号を発生する。
また、この図14の1401の状態では、PDC1102e〜1102hに入力される探索データを保持するシフトレジスタは、シフトレジスタ1321〜1324となる。したがって、制御回路907は、MPX1101e〜1101hの出力としてシフトレジスタ1321〜1324からの出力(番号21〜24の出力)を各々選択するように、コントロール信号を発生する。
さらに、PDC1102i〜1102lに入力される探索データを保持するシフトレジスタは、シフトレジスタ1328〜1331となる。したがって、制御回路907は、MPX1101i〜1101lの出力としてシフトレジスタ1328〜1331からの出力(番号28〜31の出力)を各々選択するように、コントロール信号を発生する。
このとき、各PDC1102a〜1102p内の計算回路1202で符号化対象ブロックデータと探索データとの差分絶対値が各画素毎に計算され、その結果が第2のシフトレジスタ1203に保持される。これらの差分絶対値はブロック合算回路905に入力されて合算されることにより、ブロック単位の差分絶対値の合計を得る。こうして得られたブロック単位の差分絶対値の合計は、最小値決定/動ベクトル発生回路906に入力され、図示しない内部のレジスタに保持される。
次の9クロック間(画素番号26から9画素分の探索データが新たに入力される間、すなわち、図14の1401の状態から1402の状態へ遷移するまでの間)は差分絶対値の計算が行われないので、MPX1101a〜1101lの選択状態は不問(ドントケア)であるが、1402の状態になると、次の候補ブロック1005に対する差分絶対値の計算を行える探索データが全て揃い、例えばPDC1102a〜1102dに入力される探索データを保持するシフトレジスタは、シフトレジスタ1310〜1313となる。
したがって、制御回路907は、MPX1101aの出力としてシフトレジスタ1310からの出力(番号10の出力)を選択するように、コントロール信号を発生する。また、MPX1101b〜1101dの出力としてシフトレジスタ1311〜1313からの出力(番号11〜13の出力)を各々選択するように、コントロール信号を発生する。
また、この図14の1402の状態では、PDC1102e〜1102hに入力される探索データを保持するシフトレジスタは、シフトレジスタ1317〜1320となる。したがって、制御回路907は、MPX1101e〜1101hの出力としてシフトレジスタ1317〜1320からの出力(番号17〜20の出力)を各々選択するように、コントロール信号を発生する。
さらに、PDC1102i〜1102lに入力される探索データを保持するシフトレジスタは、シフトレジスタ1326〜1329となる。したがって、制御回路907は、MPX1101i〜1101lの出力としてシフトレジスタ1326〜1329からの出力(番号26〜29の出力)を各々選択するように、コントロール信号を発生する。
この場合も同様にして、各PDC1102a〜1102p内の計算回路1202およびブロック合算回路905によりブロック単位の差分絶対値の合計が算出され、それが最小値決定/動ベクトル発生回路906に入力される。最小値決定/動ベクトル発生回路906では、今回入力された差分絶対値の合計と、前回図示しない内部のレジスタに保持された差分絶対値の合計とを大小比較し、値の小さい方を上記レジスタに保持し直す。この処理は、以降の全ての候補ブロックに対しても同様に行う。
これに続く2クロック間は、候補ブロック1006、1007に対する差分絶対値の計算を行える探索データが全て揃う。このとき各MPX1101a〜1101lの選択状態はそのままでいいので、制御回路907は、コントロール信号の状態を上記候補ブロック1005のときと同じ状態に保つようにする。
次の10クロック間は差分絶対値の計算が行われないので、MPX1101a〜1101lの選択状態は不問であるが、1403の状態になると、次の候補ブロック1008に対する差分絶対値の計算を行える探索データが全て揃い、例えばPDC1102a〜1102dに入力される探索データを保持するシフトレジスタは、シフトレジスタ1305〜1308となる。
したがって、制御回路907は、MPX1101aの出力としてシフトレジスタ1305からの出力(番号5の出力)を選択するように、コントロール信号を発生する。また、MPX1101b〜1101dの出力としてシフトレジスタ1306〜1308からの出力(番号6〜8の出力)を各々選択するように、コントロール信号を発生する。
また、この図14の1403の状態では、PDC1102e〜1102hに入力される探索データを保持するシフトレジスタは、シフトレジスタ1314〜1317となる。したがって、制御回路907は、MPX1101e〜1101hの出力としてシフトレジスタ1314〜1317からの出力(番号14〜17の出力)を各々選択するように、コントロール信号を発生する。
さらに、PDC1102i〜1102lに入力される探索データを保持するシフトレジスタは、シフトレジスタ1325〜1328となる。したがって、制御回路907は、MPX1101i〜1101lの出力としてシフトレジスタ1325〜1328からの出力(番号25〜28の出力)を各々選択するように、コントロール信号を発生する。
これに続く4クロック間は、候補ブロック1009〜1012に対する差分絶対値の計算を行える探索データが全て揃う。このとき各MPX1101a〜1101lの選択状態はそのままでいいので、制御回路907は、コントロール信号の状態を上記候補ブロック1008のときと同じ状態に保つようにする。
次の10クロック間は差分絶対値の計算が行われないので、MPX1101a〜1101lの選択状態は不問であるが、1404の状態になると、次の候補ブロック1013に対する差分絶対値の計算を行える探索データが全て揃い、例えばPDC1102a〜1102dに入力される探索データを保持するシフトレジスタは、シフトレジスタ1302〜1305となる。
したがって、制御回路907は、MPX1101aの出力としてシフトレジスタ1302からの出力(番号2の出力)を選択するように、コントロール信号を発生する。また、MPX1101b〜1101dの出力としてシフトレジスタ1303〜1305からの出力(番号3〜5の出力)を各々選択するように、コントロール信号を発生する。
また、この図14の1404の状態では、PDC1102e〜1102hに入力される探索データを保持するシフトレジスタは、シフトレジスタ1313〜1316となる。したがって、制御回路907は、MPX1101e〜1101hの出力としてシフトレジスタ1313〜1316からの出力(番号13〜16の出力)を各々選択するように、コントロール信号を発生する。
さらに、PDC1102i〜1102lに入力される探索データを保持するシフトレジスタは、シフトレジスタ1325〜1328となる。したがって、制御回路907は、MPX1101i〜1101lの出力としてシフトレジスタ1325〜1328からの出力(番号25〜28の出力)を各々選択するように、コントロール信号を発生する。
これに続く6クロック間は、候補ブロック1014〜1019に対する差分絶対値の計算を行える探索データが全て揃う。このとき各MPX1101a〜1101lの選択状態はそのままでいいので、制御回路907は、コントロール信号の状態を上記候補ブロック1013のときと同じ状態に保つようにする。
次の10クロック間は差分絶対値の計算が行われないので、MPX1101a〜1101lの選択状態は不問であるが、1405の状態になると、次の候補ブロック1020に対する差分絶対値の計算を行える探索データが全て揃い、例えばPDC1102a〜1102dに入力される探索データを保持するシフトレジスタは、シフトレジスタ1301〜1304となる。
したがって、制御回路907は、MPX1101aの出力としてシフトレジスタ1301からの出力(番号1の出力)を選択するように、コントロール信号を発生する。また、MPX1101b〜1101dの出力としてシフトレジスタ1302〜1304からの出力(番号2〜4の出力)を各々選択するように、コントロール信号を発生する。
また、この図14の1405の状態では、PDC1102e〜1102hに入力される探索データを保持するシフトレジスタは、シフトレジスタ1313〜1316となる。したがって、制御回路907は、MPX1101e〜1101hの出力としてシフトレジスタ1313〜1316からの出力(番号13〜16の出力)を各々選択するように、コントロール信号を発生する。
さらに、PDC1102i〜1102lに入力される探索データを保持するシフトレジスタは、シフトレジスタ1325〜1328となる。したがって、制御回路907は、MPX1101i〜1101lの出力としてシフトレジスタ1325〜1328からの出力(番号25〜28の出力)を各々選択するように、コントロール信号を発生する。
これに続く8クロック間は、候補ブロック1021〜1028に対する差分絶対値の計算を行える探索データが全て揃う。このとき各MPX1101a〜1101lの選択状態はそのままでいいので、制御回路907は、コントロール信号の状態を上記候補ブロック1020のときと同じ状態に保つようにする。
次の11クロック間は差分絶対値の計算が行われないので、MPX1101a〜1101lの選択状態は不問であるが、1406の状態になると、次の候補ブロック1029に対する差分絶対値の計算を行える探索データが全て揃い、例えばPDC1102a〜1102dに入力される探索データを保持するシフトレジスタは、シフトレジスタ1302〜1305となる。
したがって、制御回路907は、MPX1101aの出力としてシフトレジスタ1302からの出力(番号2の出力)を選択するように、コントロール信号を発生する。また、MPX1101b〜1101dの出力としてシフトレジスタ1303〜1305からの出力(番号3〜5の出力)を各々選択するように、コントロール信号を発生する。
また、この図14の1406の状態では、PDC1102e〜1102hに入力される探索データを保持するシフトレジスタは、シフトレジスタ1314〜1317となる。したがって、制御回路907は、MPX1101e〜1101hの出力としてシフトレジスタ1314〜1317からの出力(番号14〜17の出力)を各々選択するように、コントロール信号を発生する。
さらに、PDC1102i〜1102lに入力される探索データを保持するシフトレジスタは、シフトレジスタ1326〜1329となる。したがって、制御回路907は、MPX1101i〜1101lの出力としてシフトレジスタ1326〜1329からの出力(番号26〜29の出力)を各々選択するように、コントロール信号を発生する。
これに続く6クロック間は、候補ブロック1030〜1035に対する差分絶対値の計算を行える探索データが全て揃う。このとき各MPX1101a〜1101lの選択状態はそのままでいいので、制御回路907は、コントロール信号の状態を上記候補ブロック1029のときと同じ状態に保つようにする。
次の9クロック間は差分絶対値の計算が行われないので、MPX1101a〜1101lの選択状態は不問であるが、1407の状態になると、次の候補ブロック1036に対する差分絶対値の計算を行える探索データが全て揃い、例えばPDC1102a〜1102dに入力される探索データを保持するシフトレジスタは、シフトレジスタ1305〜1308となる。
したがって、制御回路907は、MPX1101aの出力としてシフトレジスタ1305からの出力(番号5の出力)を選択するように、コントロール信号を発生する。また、MPX1101b〜1101dの出力としてシフトレジスタ1306〜1308からの出力(番号6〜8の出力)を各々選択するように、コントロール信号を発生する。
また、この図14の1407の状態では、PDC1102e〜1102hに入力される探索データを保持するシフトレジスタは、シフトレジスタ1317〜1320となる。したがって、制御回路907は、MPX1101e〜1101hの出力としてシフトレジスタ1317〜1320からの出力(番号17〜20の出力)を各々選択するように、コントロール信号を発生する。
さらに、PDC1102i〜1102lに入力される探索データを保持するシフトレジスタは、シフトレジスタ1328〜1331となる。したがって、制御回路907は、MPX1101i〜1101lの出力としてシフトレジスタ1328〜1331からの出力(番号28〜31の出力)を各々選択するように、コントロール信号を発生する。
これに続く4クロック間は、候補ブロック1037〜1040に対する差分絶対値の計算を行える探索データが全て揃う。このとき各MPX1101a〜1101lの選択状態はそのままでいいので、制御回路907は、コントロール信号の状態を上記候補ブロック1036のときと同じ状態に保つようにする。
次の7クロック間は差分絶対値の計算が行われないので、MPX1101a〜1101lの選択状態は不問であるが、1408の状態になると、次の候補ブロック1041に対する差分絶対値の計算を行える探索データが全て揃い、例えばPDC1102a〜1102dに入力される探索データを保持するシフトレジスタは、シフトレジスタ1310〜1313となる。
したがって、制御回路907は、MPX1101aの出力としてシフトレジスタ1310からの出力(番号10の出力)を選択するように、コントロール信号を発生する。また、MPX1101b〜1101dの出力としてシフトレジスタ1311〜1313からの出力(番号11〜13の出力)を各々選択するように、コントロール信号を発生する。
また、この図14の1408の状態では、PDC1102e〜1102hに入力される探索データを保持するシフトレジスタは、シフトレジスタ1321〜1324となる。したがって、制御回路907は、MPX1101e〜1101hの出力としてシフトレジスタ1321〜1324からの出力(番号21〜24の出力)を各々選択するように、コントロール信号を発生する。
さらに、PDC1102i〜1102lに入力される探索データを保持するシフトレジスタは、シフトレジスタ1330〜1333となる。したがって、制御回路907は、MPX1101i〜1101lの出力としてシフトレジスタ1330〜1333からの出力(番号30〜33の出力)を各々選択するように、コントロール信号を発生する。
これに続く2クロック間は、候補ブロック1042,1043に対する差分絶対値の計算を行える探索データが全て揃う。このとき各MPX1101a〜1101lの選択状態はそのままでいいので、制御回路907は、コントロール信号の状態を上記候補ブロック1041のときと同じ状態に保つようにする。
次の5クロック間は差分絶対値の計算が行われないので、MPX1101a〜1101lの選択状態は不問であるが、1409の状態になると、次の候補ブロック1044に対する差分絶対値の計算を行える探索データが全て揃い、例えばPDC1102a〜1102dに入力される探索データを保持するシフトレジスタは、シフトレジスタ1316〜1319となる。
したがって、制御回路907は、MPX1101aの出力としてシフトレジスタ1316からの出力(番号16の出力)を選択するように、コントロール信号を発生する。また、MPX1101b〜1101dの出力としてシフトレジスタ1317〜1319からの出力(番号17〜19の出力)を各々選択するように、コントロール信号を発生する。
また、この図14の1409の状態では、PDC1102e〜1102hに入力される探索データを保持するシフトレジスタは、シフトレジスタ1325〜1328となる。したがって、制御回路907は、MPX1101e〜1101hの出力としてシフトレジスタ1325〜1328からの出力(番号25〜28の出力)を各々選択するように、コントロール信号を発生する。
さらに、PDC1102i〜1102lに入力される探索データを保持するシフトレジスタは、シフトレジスタ1332〜1335となる。したがって、制御回路907は、MPX1101i〜1101lの出力としてシフトレジスタ1332〜1335からの出力(番号32〜35の出力)を各々選択するように、コントロール信号を発生する。
以上により、全ての候補ブロック1004〜1044に対する差分絶対値の計算が行われる。このとき、最小値決定/動ベクトル発生回路906は、上述したような大小比較およびレジスタへの更新記憶の処理を各候補ブロックについて差分絶対値の合計が計算されるごとに行うことにより、最終的に各候補ブロックの中で最小の差分絶対値の合計を有する候補ブロックを参照ブロックとして決定する。そして、その決定した参照ブロックに対応する動ベクトルを発生する。
なお、以上の動作においては、シフトレジスタ1309および1336からの出力は何れのPDC1102a〜1102pでも利用されない。よって、この場合はこれらのシフトレジスタ1309および1336の出力を個別に取り出すように構成する必要はない。
以上に述べた一連の動作、すなわち、第1のフレームメモリ901aからの符号化対象ブロックデータの読み出し、第2のフレームメモリ901bからの探索データの読み出し、各MPX1101a〜1101lでの選択切り換え動作および最小値決定/動ベクトル発生回路906での処理は、制御回路907が制御している。
制御回路907は、ハードウェア的に構成しても良いが、例えばCPU、ROMおよびRAMなどから成るマイクロコンピュータにより構成することも可能である。この場合、上述のような一連の処理を行うシーケンスを記述したプログラムは上記ROMに記憶され、このROMに記憶されたプログラムに従ってCPUが動作する。このCPUの作業プログラムを格納したROMは、本発明の記録媒体を構成する。
また、上記マイクロコンピュータに周辺インタフェースを介してハードディスクを接続し、このハードディスクに上記CPUの作業プログラムを格納するようにしても良い。このハードディスクには上記作業プログラムを外部から供給することが可能であり、この場合、ハードディスクや上記作業プログラムを供給するための手段、例えば上記作業プログラムを格納した記録媒体も、本発明の記録媒体を構成する。
上記作業プログラムを格納するための記録媒体としては、ROMやハードディスクの他に、例えばフレキシブルディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード等を用いることができる。
このように、本実施形態によれば、H.261やH.263、あるいはMPEG1、2、4等の符号化方式において、動ベクトルを求めるための探索範囲を広げる一方で、その範囲内で差分絶対値計算に採用する候補ブロックを選別することにより、探索範囲を広げても演算量を増大することなく(演算処理に要する時間を増大することなく)、動ベクトルの検出精度を高め、情報量をより効率的に圧縮することができる。
なお、以上の実施形態では、説明の簡略化のために符号化対象ブロックおよび候補ブロックが図10に示す場合について述べたが、本発明はこれに限定されない。H.261やH.263、MPEG1、2、4では、実際には符号化対象ブロックは縦横16画素で構成されるので、PDC、MPX等をその数に応じて構成すれば良い(この場合はPDCが256個、MPXが240個)。また、候補ブロックを含む動ベクトル探索範囲の形状も、図10のような菱形に限らず、任意の形状とすることが可能である。
また、候補ブロックの存在する範囲が大きくなる場合には、探索データを入力する方向(上述の実施形態では水平方向)の最大数(上述の実施形態では12)をn、符号化対象ブロックの探索データを入力する方向の大きさ(上述の実施形態では4)をa、もう一方の大きさ(上述の実施形態では4)をbとすると、
n×(b−1)+a
で与えられる数のシフトレジスタから成るシフトレジスタ群を用意すれば良い。さらに、候補ブロックの選別方法が異なる場合には、MPXへの入力数と、MPXに入力されるシフトレジスタの出力、およびMPXの制御をそれぞれに応じて構成すれば良い。
本発明の第1の実施形態による動ベクトル検出装置の要部構成を示すブロック図である。 図1に示した画素毎の差分絶対値計算回路(PDC)の構成図である。 動き補償フレーム間予測および動ベクトルを説明するための図である。 動ベクトルを検出する方法の1つであるブロックマッチング法を説明するための図である。 サブブロック単位の動ベクトルを説明するための図である。 サブブロック単位の探索範囲にオフセットを加えた場合の動ベクトル検出を説明するための図である。 本発明の第2の実施形態による動ベクトル検出装置の特徴を説明するための図である。 本発明の第2の実施形態による動ベクトル検出装置の特徴を説明するための図である。 本発明の第2の実施形態による動ベクトル検出装置の要部構成を示すブロック図である。 本発明の第2の実施形態による動ベクトル検出装置によって行われるブロックマッチング法の一例を説明するための図である。 図9に示した差分絶対値計算回路の構成図である。 図11に示した画素毎の差分絶対値計算回路(PDC)の構成図である。 図9に示したシフトレジスタ群の構成図である。 探索データの入力処理を続けたときのシフトレジスタ群の状態遷移の様子を示す図である。
符号の説明
11a〜11p PDC
12a〜12g MPX
13a〜13c 4段シフトレジスタ
14a〜14d サブブロック位置
101 差分絶対値計算回路
102a〜102d サブブロック合算回路
103 マクロブロック合算回路
104 最小値決定/動ベクトル発生回路
105a,105b フレームメモリ
106a,106b 読み出し回路
107 制御回路
201〜203 シフトレジスタ
204 計算回路
901a,901b フレームメモリ
902a,902b 読み出し回路
903 差分絶対値計算回路
904 シフトレジスタ群
905 ブロック合算回路
906 最小値決定/動ベクトル発生回路
907 制御回路
1102a〜1102p PDC
1101a〜1101l MPX
1201,1203 シフトレジスタ
1202 計算回路
1301〜1340 シフトレジスタ

Claims (7)

  1. ブロックマッチング法により動ベクトルを発生する動ベクトル検出装置であって、
    複数のシフトレジスタが直列に接続され、動ベクトル探索範囲内の各画素値を上記直列に接続されたシフトレジスタの初段から最終段へと順次送りながら入力していくようになされるとともに、各シフトレジスタの出力が個別に取り出されるようになされたシフトレジスタ群と、
    上記符号化対象ブロック内の所定の画素位置に各々対応して設けられ、上記シフトレジスタ群内の所定のシフトレジスタからの出力を複数入力してその中から何れかを選択的に出力する複数の選択手段と、
    上記符号化対象ブロック内の各画素値と、上記選択手段あるいは上記シフトレジスタ群より供給される、上記動ベクトル探索範囲中で参照ブロックの候補となるブロック内の各画素値との差分絶対値を計算する各画素毎の差分絶対値計算手段と、
    上記選択手段を所定の制御信号により制御する制御手段とを備えことを特徴とする動ベクトル検出装置。
  2. 上記各画素毎の差分絶対値計算手段により求められた各画素毎の差分絶対値を合算するブロック合算手段と、
    上記ブロック合算手段による計算結果に基づいて上記参照ブロックを決定し、動ベクトルを求める動ベクトル発生手段とを備えたことを特徴とする請求項1に記載の動ベクトル検出装置。
  3. 上記シフトレジスタ群に各画素値が入力される上記動ベクトル探索範囲は、上記符号化対象ブロック位置を含む所定の矩形領域内において上記符号化対象ブロックからの距離が遠い領域を除外した範囲であることを特徴とする請求項1に記載の動ベクトル検出装置。
  4. 上記所定の矩形領域は上記符号化対象ブロックと相似または非相似の矩形領域であり、上記動ベクトル探索範囲は上記矩形領域に内接する菱形の領域であることを特徴とする請求項3に記載の動ベクトル検出装置。
  5. 上記動ベクトル探索範囲内の各画素値を含む参照フレームの画像メモリに対して、上記シフトレジスタ群に入力する上記動ベクトル探索範囲内の各画素値の読み出しを制御する読み出し手段を備えたことを特徴とする請求項1〜4の何れか1項に記載の動ベクトル検出装置。
  6. 符号化の方式がH.261、H.263、MPEG1、MPEG2またはMPEG4であることを特徴とする請求項1〜5の何れか1項に記載の動ベクトル検出装置。
  7. ブロックマッチング法により動ベクトルを発生する動ベクトル検出装置であり、複数のシフトレジスタが直列に接続され、動ベクトル探索範囲内の各画素値を上記直列に接続されたシフトレジスタの初段から最終段へと順次送りながら入力していくようになされるとともに、各シフトレジスタの出力が個別に取り出されるようになされたシフトレジスタ群と、上記符号化対象ブロック内の所定の画素位置に各々対応して設けられ、上記シフトレジスタ群内の所定のシフトレジスタからの出力を複数入力してその中から何れかを選択的に出力する複数の選択手段と、上記符号化対象ブロック内の各画素値と、上記選択手段あるいは上記シフトレジスタ群より供給される、上記動ベクトル探索範囲中で参照ブロックの候補となるブロック内の各画素値との差分絶対値を計算する各画素毎の差分絶対値計算手段とを備えた動ベクトル検出装置を制御するプログラムを記録するコンピュータ読み取り可能な記録媒体であって、
    上記選択手段を所定の制御信号により制御する処理をコンピュータに実行させるコンピュータプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
JP2007025733A 1996-12-26 2007-02-05 動ベクトル検出装置および記録媒体 Revoked JP2007151169A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007025733A JP2007151169A (ja) 1996-12-26 2007-02-05 動ベクトル検出装置および記録媒体

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP35700496 1996-12-26
JP2007025733A JP2007151169A (ja) 1996-12-26 2007-02-05 動ベクトル検出装置および記録媒体

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP32527997A Division JP3968161B2 (ja) 1996-12-26 1997-11-11 動ベクトル検出装置および記録媒体

Publications (1)

Publication Number Publication Date
JP2007151169A true JP2007151169A (ja) 2007-06-14

Family

ID=38211924

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007025733A Revoked JP2007151169A (ja) 1996-12-26 2007-02-05 動ベクトル検出装置および記録媒体

Country Status (1)

Country Link
JP (1) JP2007151169A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111886867A (zh) * 2018-01-09 2020-11-03 夏普株式会社 运动矢量推导装置、运动图像解码装置以及运动图像编码装置
CN112655197A (zh) * 2018-08-31 2021-04-13 佳能株式会社 利用运动相关像素结合的摄像装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01183286A (ja) * 1988-01-18 1989-07-21 Fujitsu Ltd 動画像の予測符号化方式
JPH04189093A (ja) * 1990-11-22 1992-07-07 Victor Co Of Japan Ltd 動き補償装置
JPH04207788A (ja) * 1990-11-30 1992-07-29 Sony Corp 画像信号符号化装置及び方法
JPH05103318A (ja) * 1991-08-09 1993-04-23 Seiko Epson Corp 動きベクトル検出回路

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01183286A (ja) * 1988-01-18 1989-07-21 Fujitsu Ltd 動画像の予測符号化方式
JPH04189093A (ja) * 1990-11-22 1992-07-07 Victor Co Of Japan Ltd 動き補償装置
JPH04207788A (ja) * 1990-11-30 1992-07-29 Sony Corp 画像信号符号化装置及び方法
JPH05103318A (ja) * 1991-08-09 1993-04-23 Seiko Epson Corp 動きベクトル検出回路

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111886867A (zh) * 2018-01-09 2020-11-03 夏普株式会社 运动矢量推导装置、运动图像解码装置以及运动图像编码装置
CN111886867B (zh) * 2018-01-09 2023-12-19 夏普株式会社 运动矢量推导装置、运动图像解码装置以及运动图像编码装置
CN112655197A (zh) * 2018-08-31 2021-04-13 佳能株式会社 利用运动相关像素结合的摄像装置
CN112655197B (zh) * 2018-08-31 2024-05-21 佳能株式会社 摄像装置、摄像系统和摄像装置的驱动方法

Similar Documents

Publication Publication Date Title
US6167090A (en) Motion vector detecting apparatus
KR100905880B1 (ko) 움직임 추정 방법 및 장치와, 인코딩 방법 및 인코더
US8073057B2 (en) Motion vector estimating device, and motion vector estimating method
US20050238102A1 (en) Hierarchical motion estimation apparatus and method
JP5115498B2 (ja) 画像符号化装置、画像符号化制御方法およびプログラム
JPH0568155B2 (ja)
TWI706668B (zh) 用於視訊編解碼的幀間預測方法以及裝置
JP4377693B2 (ja) 画像データ検索
JP2008060836A (ja) 動きベクトル探索方法及び装置
JP3968161B2 (ja) 動ベクトル検出装置および記録媒体
JP2007151169A (ja) 動ベクトル検出装置および記録媒体
JP2007267123A (ja) 動画像符号化装置
KR100994771B1 (ko) 블록정합에 의한 움직임 벡터 탐색방법 및 탐색장치
JP3175914B2 (ja) 画像符号化方法および画像符号化装置
JP4488805B2 (ja) 動きベクトル検出装置および方法
WO2004012460A1 (ja) 動きベクトル検出装置及び動きベクトル検出方法
JP4228705B2 (ja) 動きベクトル探索方法および装置
JPH0262178A (ja) 画像処理装置の動き検出方式
JP4570700B2 (ja) 動ベクトル検出装置
US20040120402A1 (en) Motion estimation apparatus for image data compression
JP2934146B2 (ja) 動画像圧縮におけるブロック・マッチング方法と装置
JP3698501B2 (ja) 動きベクトル検出装置
JP3483751B2 (ja) 動きベクトル検出装置及び動きベクトル検出方法
JPH1042300A (ja) 動きベクトル検出装置
JPH07288817A (ja) 動きベクトル検出装置

Legal Events

Date Code Title Description
AA91 Notification of revocation by ex officio

Free format text: JAPANESE INTERMEDIATE CODE: A971091

Effective date: 20070306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091117

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100413