(57)【特許請求の範囲】
【請求項１】
符号化の方式がＨ．２６３またはＭＰＥＧ４のシステムにおいて用いる動ベクトル検出装置であって、
整数画素精度の動ベクトルを求めるための探索範囲内の画素値から、各画素間のデータを補間することで半画素精度の画素値を生成する半画素補間手段と、
上記半画素補間手段により生成された半画素精度の画素値か上記整数画素精度の画素値かの何れかを選択する選択手段と、
上記選択手段により選択された整数画素精度あるいは半画素精度の何れかの画素値と符号化対象ブロック内の画素値とを用いて動ベクトルを検出する動ベクトル検出手段と、
上記選択手段および上記動ベクトル検出手段を所定の制御信号により制御する制御手段とを備え、
上記半画素補間手段は、上記整数画素精度の動ベクトルを求めるための探索範囲内の画素値を保持しておき、上記動ベクトル検出手段で検出された整数画素精度の動ベクトルに基づいて、上記保持した前記整数画素精度の動ベクトルを求めるための探索範囲内の画素値における該動ベクトルに対応する参照ブロック内の画素値とその周辺の画素値とから上記半画素精度の画素値を補間生成することを特徴とする動ベクトル検出装置。
【請求項２】
上記動ベクトル検出手段は、
上記符号化対象ブロック内の各画素値と、上記選択手段により選択された整数画素精度あるいは半画素精度の探索範囲中で参照ブロックの候補となるブロック内の各画素値との差分絶対値を計算する各画素毎の差分絶対値計算手段と、
上記各画素毎の差分絶対値計算手段に対して上記整数画素精度の各画素値が入力されるように遅延処理を施すか、上記半画素精度の各画素値が入力されるように遅延処理を施すかを切り換える切り換え手段と、
上記切り換え手段の切り換えにより得られる整数画素精度あるいは半画素精度の各画素値を用いて上記差分絶対値計算手段により求められた各画素毎の差分絶対値を合算する合算手段と、
上記合算手段による計算結果に基づいて上記参照ブロックを決定し、動ベクトルを求める動ベクトル発生手段とを備え、
上記切り換え手段が上記制御手段より与えられる所定の制御信号により制御されることを特徴とする請求項１に記載の動ベクトル検出装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は動ベクトル検出装置に関し、特に、整数画素精度の動ベクトルと半画素精度の動ベクトルとの両方を検出する動ベクトル検出装置に用いて好適なものである。
【０００２】
【従来の技術】
動画像信号の符号化においては、情報量を高能率圧縮するために、動画像信号のフレーム間の相関性の高さに着目してフレーム間の差分を符号化する方法（フレーム間符号化）が採用されることが多い。すなわち、差分をとる対象フレームが存在しない最初のフレームについては１画面をそのまま符号化するが、それ以降のフレームについては、符号化した情報を更に復号した１つ前のフレーム（参照フレーム）との差分をとり、その差分を符号化するという方法である。
【０００３】
しかし、この方法では、全てのフレームについて１画面をそのまま符号化する場合に比べれば情報量を少なくできるが、差分をとるフレーム間で画面に動きがあった部分については、差分値が大きくなることがあり、情報量の圧縮という点に関してはまだまだ十分とは言えない。そこで、このような場合も考慮して更に効率的に情報量を圧縮するために、動き補償という方法（動き補償フレーム間符号化）が用いられる。
【０００４】
動き補償を用いないフレーム間符号化においては、フレーム間の差分は、比較される両フレームの空間座標が互いに同一の箇所でとられる。これに対して動き補償を用いる場合は、両フレームの空間座標は必ずしも同一である必要はなく、画面の動きを考慮し、フレーム間の差分がより小さくなるような参照フレームの箇所との間で差分がとられる。このときの符号化対象箇所の座標と参照フレーム内の差分をとる箇所の座標とのずれを表すのが動ベクトルである。これを図面を用いて説明する。
【０００５】
図４は、動き補償フレーム間予測および動ベクトルの説明図である。図４において、４０１は参照フレーム、４０２は符号化対象フレームであり、白抜きの星☆だけが動いていて背景は全く動いていない様子が示されている。符号化対象フレーム４０２は、動き補償フレーム間符号化を行うにあたって複数の小さなブロックに分割され、このブロック単位で符号化が行われる。
【０００６】
例えば、動画像通信の符号化標準であるＩＴＵ−Ｔ勧告Ｈ．２６１やＨ．２６３、動画像蓄積の符号化標準であるＭＰＥＧ１やＭＰＥＧ２、ＭＰＥＧ４では、マクロブロックと呼ばれる縦横１６画素の単位に分割して符号化される。４０３は符号化対象フレーム４０２を複数のマクロブロックに分割した様子を示すものである。
【０００７】
今、符号化対象フレーム４０３の分割された複数のマクロブロックのうち、白抜きの星☆がある４０３ａのブロックに注目する。４０４は４０１と同じ参照フレームであるが、ここでマクロブロック４０３ａと同じ座標のブロックは、４０４ａのブロックとなる。しかし、これらのフレーム間では動きが発生しているので、マクロブロック４０３ａとの差分をとるにあたってその差分値が最も小さくなるのは４０４ｂに位置するブロックである。このとき、ブロック４０４ａの座標とブロック４０４ｂの座標とのずれを表す４０４ｃが動ベクトルとなる。
【０００８】
情報の圧縮という点に関しては、符号化対象フレーム内のマクロブロック４０３ａと参照フレーム内のブロック４０４ａとの差分を符号化するよりも、符号化対象フレーム内のマクロブロック４０３ａと参照フレーム内のブロック４０４ｂとの差分および動ベクトル４０４ｃを符号化した方が効率が良い。
【０００９】
この動ベクトルを検出する方法として、よく用いられる方法の１つにブロックマッチング法がある。これは、符号化対象ブロックの位置を中心にして動ベクトルを検出するための探索範囲をあらかじめ設定し、その探索範囲内の全ての候補ベクトルに対するブロックについて符号化対象ブロックの各画素との差分の絶対値の合計を算出し、その合計値が最小となった候補ブロックを参照ブロック（図４のブロック４０４ｂに相当）として採用するという方法である。これを図面を用いて説明する。
【００１０】
図５は、ブロックマッチング法の説明図であり、説明の簡略化のため、符号化対象ブロックは縦横２画素、探索範囲は符号化対象ブロックを中心にして上下左右とも＋２画素の範囲としている。図５において、５０１は符号化対象フレーム内の符号化対象ブロック位置を示し、５０２は１フレーム前の参照フレーム内の探索範囲を示している。５０３〜５２７は探索範囲５０２内の全ての候補ベクトルに対するブロックである。また、○内の数字は、画素番号を示している。
【００１１】
この例の場合、符号化対象ブロック５０１と探索範囲５０２内の各候補ブロック５０３〜５２７との間で対応する位置の画素間の差分絶対値の合計を算出する。左上の候補ブロック５０３を例にとると、
｜a15-b1｜＋｜a16-b2｜＋｜a21-b7｜＋｜a22-b8｜
を算出することになる。ここで、a** は符号化対象画素の値、b** は参照画素の値であり、**が図５の画素番号に対応している。同様の演算を他の候補ブロック５０４〜５２７についても行い、その結果が最小であったブロックを参照ブロックとして採用する。
【００１２】
さらに、Ｈ．２６３やＭＰＥＧ１、２、４では、縦横の画素間のデータを補間することで半画素精度のデータを生成し、この補間データを含めて参照フレームのデータとして、半画素精度で動ベクトルを採用することも可能である。これを図面を用いて説明する。
【００１３】
図６は、半画素精度の動ベクトルの説明図であり、説明の簡略化のため、符号化対象ブロックを縦横４画素としている。図６において、６０１は参照フレームであり、この中の各画素のうち、丸印（白抜きの丸、黒塗りの丸、斜線を施した丸の全て）は元の画素（整数画素）を示している。これに対して、三角印（白抜きの三角、斜線を施した三角の全て）は上記整数画素を用いて補間によって生成された半画素を示している。
【００１４】
６０２は符号化対象ブロックの位置を示し、この中の黒塗りの丸が符号化対象の整数画素位置を示している。このとき、６０３が整数画素精度の動ベクトルを求めた場合の参照ブロックの一例であり、斜線を施した丸が参照画素である。また、６０４は半画素精度の動ベクトルを求めた場合の参照ブロックの一例であり、斜線を施した三角が参照画素である。
【００１５】
図６から分かるように、半画素精度の動ベクトルを採用する場合については、参照フレーム６０１内の画素の数が整数画素精度の動ベクトルを採用する場合に比べて非常に多くなり、候補ベクトルの数も非常に多くなってしまう。そのため、それら全ての候補ベクトルに対するブロックについて符号化対象ブロック間で差分絶対値を計算していると、計算時間が莫大なものとなってしまう。そこで、通常は、最初に整数画素精度の動ベクトルを検出し、次のそのとき求めた整数画素精度の参照ブロックを中心にして縦横±０．５画素の範囲を設定し、その範囲についてのみ同様の動ベクトル検出を行う。これを図面を用いて説明する。
【００１６】
図７は、半画素精度の動ベクトルの検出方法の説明図である。ここでは、例えば図５で説明したような処理によって、５０９のブロックが整数画素精度の参照ブロックとして選ばれたものとする。図７において、７０１は上記選択された整数画素精度の参照ブロック５０９とそれを囲む周辺の整数画素データとから半画素データを補間して生成した半画素精度の探索範囲を示している。７０２〜７１０は上記半画素精度の探索範囲７０１内の全ての候補ベクトルに対するブロックである。また、○内のアルファベットは、半画素番号を示している。
【００１７】
この例の場合、図５の符号化対象ブロック５０１と半画素精度の探索範囲７０１内の各候補ブロック７０２〜７１０との間で対応する位置の画素間の差分絶対値の合計を算出する。そして、その合計値が最小であった候補ブロックを半画素精度の動ベクトルによる参照ブロックとして採用する。すなわち、半画素精度の動ベクトルを求める方法は、符号化対象ブロック５０１ではなく、最初に求めた整数画素精度の参照ブロック５０９を原点にした縦横±０．５画素の探索範囲のブロックマッチング法ということができる。
【００１８】
【発明が解決しようとする課題】
上記に挙げた種々の符号化方式のうち、Ｈ．２６３やＭＰＥＧ４は最近になって標準化が成されたばかりであり、これらを応用した製品はまだ数多く存在しないのが現状である。したがって、整数画素精度の動ベクトルと半画素精度の動ベクトルとの両方を求めることが可能な装置をどのように構成するかは、今後の課題とも言える。
【００１９】
特に、Ｈ．２６３やＭＰＥＧ４では、ＭＰＥＧ１あるいはＭＰＥＧ２とは異なり、縦横の画素数が１７６×１４４のＱＣＩＦ（Quater Common Intermediate Format ）を単位として符号化を行うので、処理の高速化については従来ほど考慮しなくても良い。
【００２０】
そこで本発明は、このようなＨ．２６３やＭＰＥＧ４の応用化に先駆けて、処理の高速化よりも装置のコンパクト化に重点をおき、整数画素精度の動ベクトルと半画素精度の動ベクトルとをより簡単な構成で求めることが可能な動ベクトル検出装置を提供することを目的とする。
【００２１】
【課題を解決するための手段】
本発明のベクトル検出装置は、符号化の方式がＨ．２６３またはＭＰＥＧ４のシステムにおいて用いる動ベクトル検出装置であって、整数画素精度の動ベクトルを求めるための探索範囲内の画素値から、各画素間のデータを補間することで半画素精度の画素値を生成する半画素補間手段と、上記半画素補間手段により生成された半画素精度の画素値か上記整数画素精度の画素値かの何れかを選択する選択手段と、上記選択手段により選択された整数画素精度あるいは半画素精度の何れかの画素値と符号化対象ブロック内の画素値とを用いて動ベクトルを検出する動ベクトル検出手段と、上記選択手段および上記動ベクトル検出手段を所定の制御信号により制御する制御手段とを備え、上記半画素補間手段は、上記整数画素精度の動ベクトルを求めるための探索範囲内の画素値を保持しておき、上記動ベクトル検出手段で検出された整数画素精度の動ベクトルに基づいて、上記保持した前記整数画素精度の動ベクトルを求めるための探索範囲内の画素値における該動ベクトルに対応する参照ブロック内の画素値とその周辺の画素値とから上記半画素精度の画素値を補間生成することを特徴とする。
本発明の他の特徴とするところは、上記動ベクトル検出手段は、上記符号化対象ブロック内の各画素値と、上記選択手段により選択された整数画素精度あるいは半画素精度の探索範囲中で参照ブロックの候補となるブロック内の各画素値との差分絶対値を計算する各画素毎の差分絶対値計算手段と、上記各画素毎の差分絶対値計算手段に対して上記整数画素精度の各画素値が入力されるように遅延処理を施すか、上記半画素精度の各画素値が入力されるように遅延処理を施すかを切り換える切り換え手段と、上記切り換え手段の切り換えにより得られる整数画素精度あるいは半画素精度の各画素値を用いて上記差分絶対値計算手段により求められた各画素毎の差分絶対値を合算する合算手段と、上記合算手段による計算結果に基づいて上記参照ブロックを決定し、動ベクトルを求める動ベクトル発生手段とを備え、上記切り換え手段が上記制御手段より与えられる所定の制御信号により制御されることを特徴とする。
【００２５】
本発明は上記技術手段より成るので、動ベクトル検出手段に入力する探索範囲の画素値として整数画素精度の画素値を選択するか半画素精度の画素値を選択するかを選択手段により切り換えて、１つの動ベクトル検出手段を使い回すことにより、１つの動ベクトル検出手段で整数画素精度の動ベクトルと半画素精度の動ベクトルとの両方を求めることが可能となる。
【００２６】
【発明の実施の形態】
以下、本発明の一実施形態を図面に基づいて説明する。
図１は、本実施形態による動ベクトル検出装置の要部構成を示すブロック図である。図１において、１０１はマルチプレクサ、１０２は整数／半画素精度動ベクトル検出部、１０３は整数画素精度探索データ用メモリ、１０４は半画素補間部、１０５ａ，１０５ｂはフレームメモリ、１０６ａ，１０６ｂ，１０６ｃは読み出し部、１０７は制御回路である。
【００２７】
符号化対象フレームの画像は、第１のフレームメモリ１０５ａに格納され、その中から第１の読み出し部１０６ａより出力されるアドレスに従って符号化対象ブロックの各画素値（以下、符号化対象ブロックデータ）が読み出されて、整数／半画素精度動ベクトル検出部１０２に供給される。
【００２８】
また、上記符号化対象フレームより１フレーム前の参照フレームの画像は、第２のフレームメモリ１０５ｂに格納され、その中から第２の読み出し部１０６ｂより出力されるアドレスに従って整数画素精度の探索範囲内の各画素値（以下、整数画素精度探索データ）が読み出されて、マルチプレクサ１０１および整数画素精度探索データ用メモリ１０３に供給される。
【００２９】
マルチプレクサ１０１は、制御回路１０７から与えられる所定のコントロール信号に従って、第２のフレームメモリ１０５ｂから読み出された整数画素精度探索データか半画素補間部１０４から出力された半画素精度探索データかの何れかを選択して整数／半画素精度動ベクトル検出部１０２に供給する。
【００３０】
整数／半画素精度動ベクトル検出部１０２は、制御回路１０７から与えられる所定のコントロール信号に従って、第１のフレームメモリ１０５ａから読み出された符号化対象ブロックデータと、マルチプレクサ１０１から出力された整数画素精度探索データあるいは半画素精度探索データとの間でブロックマッチング法による動ベクトル検出処理を行う。
【００３１】
半画素補間部１０４は、整数画素精度探索データ用メモリ１０３から読み出される整数画素精度探索データを用いて半画素データを補間生成する。上記整数画素精度探索データ用メモリ１０３からどの部分の整数画素データを読み出すかは、第３の読み出し部１０６ｃからのアドレスに従って制御される。第３の読み出し部１０６ｃは、整数／半画素精度動ベクトル検出部１０２で求められた整数画素精度の動ベクトルに対応する参照ブロックとその周辺の整数画素データとを読み出すように制御する。
【００３２】
以下に、上記のように構成した本実施形態による動ベクトル検出装置の大まかな動作について説明する。
【００３３】
まず、整数画素精度の動ベクトルを検出するために、符号化対象ブロックデータと整数画素精度探索データとが整数／半画素精度動ベクトル検出部１０２に入力される。ここで、マルチプレクサ１０１においては、第２のフレームメモリ１０５ｂからの整数画素精度探索データと半画素補間部１０４からの半画素精度探索データとの何れかの選択で前者が選択され、整数／半画素精度動ベクトル検出部１０２に入力される。このとき、整数画素精度探索データは整数画素精度探索データ用メモリ１０３にも入力され、その全てが保持される。
【００３４】
上記整数／半画素精度動ベクトル検出部１０２では、整数画素精度の動ベクトルがブロックマッチング法により決定される。ここで求められた動ベクトルの値は、外部に出力されるとともに第３の読み出し部１０６ｃに入力され、これによって整数画素精度探索データ用メモリ１０３の中から上記決定された整数画素精度動ベクトルに対応する参照ブロックの探索データとその周辺画素の探索データとが読み出され、半画素補間部１０４に入力される。
【００３５】
半画素補間部１０４では、入力された整数画素精度の探索データを用いて半画素データが補間生成される。そして、この生成された半画素精度探索データはマルチプレクサ１０１に入力される。今回は、半画素精度の動ベクトルを検出するために、マルチプレクサ１０１において、第２のフレームメモリ１０５ｂからの整数画素精度探索データと半画素補間部１０４からの半画素精度探索データとの何れかの選択で後者が選択され、整数／半画素精度動ベクトル検出部１０２に入力される。
【００３６】
整数／半画素精度動ベクトル検出部１０２では、あらかじめ入力された符号化対象ブロックデータと上記マルチプレクサ１０１で選択された半画素精度探索データとを用いて、上述した縦横±０．５画素の探索範囲のブロックマッチング法により半画素精度の動ベクトルが決定され、外部に出力される。
【００３７】
この一連の動作の中で、制御回路１０７は、整数画素精度の動ベクトルを求めるときはマルチプレクサ１０１で上側の入力を選択するように制御し、半画素精度の動ベクトルを求めるときはマルチプレクサ１０１で下側の入力を選択するように制御する。また、整数画素精度の動ベクトルを求めるか半画素精度の動ベクトルを求めるかに応じて、後述する整数／半画素精度動ベクトル検出部１０２内のマルチプレクサの切り換え動作を制御する。
【００３８】
次に、上記整数／半画素精度動ベクトル検出部１０２の内部構成について、図面を参照しながら説明する。
図２は、整数／半画素精度動ベクトル検出部１０２の構成を示す図である。なお、説明の簡略化のために、符号化対象ブロックは縦横４画素、整数画素精度動ベクトルの探索範囲は符号化対象ブロックを中心にして縦横±４画素の範囲であるものとする。
【００３９】
図２において、２０１は差分絶対値計算回路、２０２は合算回路、２０３は最小値決定／動ベクトル発生回路である。
上記差分絶対値計算回路２０１の内部において、１１ａ，１１ｂは画素毎の差分絶対値計算回路（以下、ＰＤＣという）、１２ａ，１２ｂはマルチプレクサ（以下、ＭＰＸという）、１３はシフトレジスタ（以下、ＳＲという）、１４は８つのシフトレジスタが直列に接続された８段シフトレジスタ、１５は３つのシフトレジスタが直列に接続された３段シフトレジスタである。
【００４０】
点線で囲んだ２１ａは上記ＰＤＣ１１ａ、ＭＰＸ１２ａ、ＳＲ１３の３つを組み合わせた回路ブロックであり、２１ｂ，２１ｃの点線で囲んだブロックも同様に構成されている。また、一点鎖線で囲んだ２２ａは上述の構成を全て含んだ回路ブロックであり、２２ｂ，２２ｃの一点鎖線で囲んだブロックも同様に構成されている。
【００４１】
このように、上から３行の回路ブロック２２ａ〜２２ｃは全て同様に構成されているが、一番下の行だけは、３つの回路ブロック２１ａ〜２１ｃと１つのＰＤＣ１１ｂのみにより構成されており、８段シフトレジスタ１４、ＭＰＸ１２ｂおよび３段シフトレジスタ１５は含まれていない。
【００４２】
以上の構成によれば、ＰＤＣは各行に４個、４行全部で１６個備えられているが、これらのＰＤＣの位置は、実際の画面上の符号化対象ブロック（縦横４画素）の画素の位置に対応している。なお、以下の説明において“ＰＤＣ１１”と記すときは、１６個のＰＤＣの全てを指しているものとする。また、“ＭＰＸ１２”と記すときは、差分絶対値計算回路２０１内の全てのマルチプレクサを指しているものとする。
【００４３】
さらに、上記ＰＤＣ１１の内部構成を図３に示す。図３において、３０１〜３０３はシフトレジスタ（ＳＲ）、３０４は計算回路である。第１のＳＲ３０１は、第１のフレームメモリ１０５ａから読み出された符号化対象ブロックデータの１画素分を保持する。第３のＳＲ３０３は、前段から送られてくる探索データの１画素分を保持する。
【００４４】
計算回路３０４は、上記第１のＳＲ３０１に保持された１画素分の符号化対象ブロックデータＡと、第３のＳＲ３０３に保持された１画素分の探索データＢとの差分絶対値｜Ａ−Ｂ｜を計算し、その計算結果は第２のＳＲ３０２に保持される。第２のＳＲ３０２に保持された１画素分の差分絶対値は合算回路２０２に出力され、第３のＳＲ３０３に保持された前段からの探索データＢは、上記差分絶対値が出力されるのと同じタイミングで次段に出力される。
【００４５】
各ＰＤＣ１１が図３のように構成されているので、差分絶対値計算回路２０１内の各行では、入力された探索データが右から左へと順に送られていく。また、上から２行目以降の一番左にあるＰＤＣ１１ａから出力された探索データは、それぞれその上の行に送られる。
【００４６】
本実施形態においては、整数画素精度の探索範囲が横方向に１２画素であるのに対して、探索範囲内の各候補ブロックの大きさ（符号化対象ブロックと同じ大きさ）は横方向に４画素で探索範囲より８画素少ない。そのため、３つの回路ブロック２２ａ〜２２ｃ内に設けた８段シフトレジスタ１４は、候補ブロック内の画素値として使わない各行８画素分の探索データを格納（遅延）するものとして機能する。
【００４７】
また、半画素精度の探索範囲は、各整数画素データ間に上記半画素補間部１０４で補間生成された半画素データが更に増えているので、３つの回路ブロック２２ａ〜２２ｃ内に設けたＳＲ１３および３段シフトレジスタ１５は、半画素精度の動ベクトルを求めるときに候補ブロック内の画素値として使わない探索データを格納（遅延）するものとして機能する。
【００４８】
また、ＭＰＸ１２ａは、各回路ブロック２１ａ〜２１ｃ内のＰＤＣ１１ａの前段に夫々設けられ、前段のＰＤＣからの出力とＳＲ１３からの出力とのどちらかを選択出力するようになっている。ＭＰＸ１２ｂは、８段シフトレジスタ１４の前段に設けられ、３段シフトレジスタ１５からの出力と下の行の一番左にあるＰＤＣ１１ａからの出力とのどちらかを選択出力するようになっている。
【００４９】
以上に述べた各ＭＰＸ１２は、図１の制御回路１０７から与えられるコントロール信号に応じて切り換えられるようになっており、整数画素精度の動ベクトルを求めるときは全て下側の入力が選択される。一方、半画素精度の動ベクトルを求めるときは全て上側の入力が選択される。
【００５０】
これにより、整数画素精度の動ベクトルを求めるときは、１６個のＰＤＣが３個の８段シフトレジスタ１４を途中に介しながら直列に接続され、探索データが右下のＰＤＣ１１ｂから左上のＰＤＣ１１ａへと順に送られていくことになる。
一方、半画素精度の動ベクトルを求めるときは、１６個のＰＤＣが全てのシフトレジスタ１３，１４，１５を途中に介しながら直列に接続され、探索データが右下のＰＤＣ１１ｂから左上のＰＤＣ１１ａへと順に送られていくことになる。
【００５１】
合算回路２０２は、１６個のＰＤＣ１１内で計算された各画素毎の差分絶対値の合計を求め、その結果を最小値決定／動ベクトル発生回路２０３に供給する。
最小値決定／動ベクトル発生回路２０３は、合算回路２０２から各候補ブロックごとに与えられる差分絶対値の合計値の中から最小のものを決定し、その合計値が最小の候補ブロックを参照ブロックとして採用して動ベクトルを発生する。
【００５２】
次に、上記のように構成した本実施形態による整数／半画素精度動ベクトル検出部１０２の動作について詳しく説明する。
まず、図１に示した第１のフレームメモリ１０５ａから符号化対象ブロックデータが整数／半画素精度動ベクトル検出部１０２内の差分絶対値計算回路２０１に入力され、各画素のデータがそれぞれ対応するＰＤＣ１１中の第１のＳＲ３０１に保持される。この符号化対象ブロックデータは、同一のブロックの処理期間中はそのまま第１のＳＲ３０１に保持される。
【００５３】
なお、第１のフレームメモリ１０５ａからの符号化対象ブロックデータの入力は、以下に述べる探索範囲のデータの入力において、最初のデータが図２の一番左上のＰＤＣ１１ａに到着するまでに完了していれば良い。
【００５４】
次に、差分絶対値計算回路２０１に探索範囲のデータが入力されるが、最初に整数画素精度の動ベクトルを求めるために、第２のフレームメモリ１０５ｂから整数画素精度の探索データが入力される。ここでは、縦横４画素の符号化対象ブロックに対して縦横±４画素を探索するので、整数画素精度探索データの大きさは縦横１２画素となる。
【００５５】
また、図２における全てのＭＰＸ１２では、図１の制御回路１０７からのコントロール信号に従って下側の入力を選択する。これにより、一点鎖線で囲んだ各回路ブロック２２ａ〜２２ｃ内のＰＤＣ１１ｂより前段のシフトレジスタは８段になる。さらに、点線で囲んだ各回路ブロック２１ａ〜２１ｃ内にあるＰＤＣ間のＳＲ１３は通過しなくなる。
【００５６】
このため、最下行を除く各行の探索データのパスでは、各ＰＤＣ１１内にある第３のＳＲ３０３を併せて１２段のシフトレジスタが直列に結ばれることになる。また、最下行の探索データのパスでは、各ＰＤＣ１１内にある第３のＳＲ３０３によって４段のシフトレジスタが直列に結ばれることになる。
【００５７】
各行間では直下の行の出力が直上の行の入力に接続されており、最下行の入力側から整数画素精度の探索データをラスタスキャン順に入力すると、最初のデータ（探索範囲の左上にあるデータ）が一番左上のＰＤＣ１１ａに到着した時点で、左上の候補ブロック（図５で言うところの候補ブロック５０３に相当）のデータが各ＰＤＣ１１に入力されたことになる。
【００５８】
このとき、各ＰＤＣ１１内の計算回路３０４で符号化対象ブロックデータと整数画素精度探索データとの差分絶対値が各画素ごとに計算され、その結果が第２のＳＲ３０２に保持される。これらの差分絶対値は合算回路２０２に入力されて合算されることにより、差分絶対値の合計を得る。こうして得られた差分絶対値の合計は、最小値決定／動ベクトル発生回路２０３に入力され、図示しない内部のレジスタに保持される。
【００５９】
次に、最下行の入力側から次の探索データを１画素分入力すると、各ＰＤＣ１１には次の候補ブロック（図５で言うところの候補ブロック５０４に相当）のデータが入力されたことになる。この場合も同様にして、差分絶対値の合計が算出され、それが最小値決定／動ベクトル発生回路２０３に入力される。最小値決定／動ベクトル発生回路２０３では、今回入力された差分絶対値の合計と、前回図示しない内部のレジスタに保持された差分絶対値の合計とを大小比較し、値の小さい方を上記レジスタに保持し直す。
【００６０】
以下同様にして、最下行の入力側から探索データを順次入力していき、各候補ブロックごとに差分絶対値の合計を求めていく。ところで、最初の候補ブロックのデータが各ＰＤＣ１１に入力されたときから数えて、９画素分の探索データを入力すると、水平位置が同じ９個の候補ブロック（図５で言うところの候補ブロック５０３〜５０７に相当。ただし、図５では探索範囲が本例と異なるので、候補ブロックは５個となっている）が各ＰＤＣ１１に順に入力される。
【００６１】
続く３画素分の探索データを入力したときには差分絶対値の合計の計算には無関係になるが、更にそれに続く９画素分の探索データを順に入力すると、先に入力された９個の候補ブロックから水平位置が１画素下がった９個の候補ブロック（図５で言うところの候補ブロック５０８〜５１２に相当。ただし、図５では探索範囲が本例と異なるので、候補ブロックは５個となっている）が各ＰＤＣ１１に順に入力される。このように整数画素精度探索データを順次入力していくことで、全ての候補ブロックの探索データが各ＰＤＣ１１に順に入力される。
【００６２】
このとき、最小値決定／動ベクトル発生回路２０３は、上述したような大小比較およびレジスタへの更新記憶の処理を各候補ブロックについて差分絶対値の合計が計算されるごとに行うことにより、最終的に各候補ブロックの中で最小の差分絶対値の合計を有する候補ブロックを参照ブロックとして決定する。そして、その決定した参照ブロックに対応する動ベクトルを発生して、整数画素精度の動ベクトルとして外部に出力する。
【００６３】
次に、半画素精度の動ベクトルを求めるために、差分絶対値計算回路２０１の最下行の入力側から半画素精度の探索データをラスタスキャン順に入力する。半画素精度の動ベクトルを求める場合には、縦横４画素の符号化対象ブロックデータ（整数画素データ）に対して、その上下左右の各画素間に半画素データが補間されるので、半画素精度探索データの大きさは縦横９画素となる。
【００６４】
この場合は、全てのＭＰＸ１２は上側の入力を選択する。この意味するところを、図７を用いて説明する。
まず、各ＰＤＣ１１間にＳＲ１３が挿入される。これは、図７の７０２〜７１０に示したように、半画素精度探索範囲７０１内の各候補ブロックのデータとして１画素おきの画素値が用いられることに対応するものである。
【００６５】
例えば、符号化対象ブロック５０１と半画素精度の探索範囲７０１内の候補ブロック７０２とについて差分絶対値を計算する場合、
｜15−ａ｜＋｜16−ｃ｜＋｜21−ｉ｜＋｜22−ｋ｜
を算出することになる。ここで、数字は符号化対象ブロック５０１内の対応する画素番号の画素値、アルファベットは候補ブロック７０２内の対応する半画素番号の画素値を示している。
【００６６】
上記の式から分かるように、候補ブロック７０２内の画素値は横方向に対してはａ，ｃのように１画素おきに用いられる。しかし、半画素精度探索データは差分絶対値計算回路２０１にａ，ｂ，ｃの順に入力される。そこで、各ＰＤＣ１１間に１個のＳＲ１３を挿入することで、各ＰＤＣ１１に半画素精度探索データをａ，ｃのように１画素おきに入力できるようにしている。
【００６７】
また、全てのＭＰＸ１２が上側の入力を選択することで、一点鎖線で囲んだ各回路ブロック２２ａ〜２２ｃ内のＰＤＣ１１ｂより前段のシフトレジスタは１１段になる。このため、最下行を除く各行の探索データのパスでは、各ＰＤＣ１１内にある第３のＳＲ３０３、各ＰＤＣ１１間に挿入されたＳＲ１３を併せて１８段のシフトレジスタが直列に結ばれることになり、半画素精度探索データの２行分のデータ数に等しくなる。
【００６８】
再び図７において、例えば符号化対象ブロック５０１と候補ブロック７０２とで差分絶対値を計算する場合を考えると、候補ブロック７０２内の画素値は縦方向に対してはａの行，ｉの行のように１行おきに用いられるが、半画素精度探索データは差分絶対値計算回路２０１にａの行、ｆの行、ｉの行の順に入力され、ａの行、ｉの行の順ではない。そこで、行間に１行分のシフトレジスタを挿入することで、すなわち、１行あたりのシフトレジスタの数を２行分にすることで、各行のＰＤＣ１１ａ，１１ｂに半画素精度探索データをａの行、ｉの行のように１行おきに入力できるようにしている。
【００６９】
これにより、最初の候補ブロックのデータが各ＰＤＣ１１に入力されたときから数えて、３画素分の探索データを入力すると、水平位置が同じ３個の候補ブロック（図７で言うところの候補ブロック７０２〜７０４に相当）が各ＰＤＣ１１に順に入力される。
【００７０】
続く１５画素分の探索データを入力したときには差分絶対値の合計の計算には無関係になるが、更にそれに続く３画素分の探索データを順に入力すると、先に入力された３個の候補ブロックから水平位置が１画素下がった３個の候補ブロック（図７で言うところの候補ブロック７０５〜７０７に相当）が各ＰＤＣ１１に順に入力される。このように半画素精度探索データを順次入力していくことで、全ての候補ブロックの探索データが各ＰＤＣ１１に順に入力される。
【００７１】
このとき、最小値決定／動ベクトル発生回路２０３は、上述したような大小比較およびレジスタへの更新記憶の処理を各候補ブロックについて差分絶対値の合計が計算されるごとに行うことにより、最終的に各候補ブロックの中で最小の差分絶対値の合計を有する候補ブロックを参照ブロックとして決定する。そして、その決定した参照ブロックに対応する動ベクトルを発生して、半画素精度の動ベクトルとして外部に出力する。
【００７２】
以上詳しく述べたように、本実施形態によれば、整数画素精度の動ベクトル検出部と半画素精度の動ベクトル検出部とを別々に持たず、１つの動ベクトル検出部で整数画素精度と半画素精度の動ベクトルを検出することができる。
【００７３】
本実施形態の動ベクトル検出装置は、Ｈ．２６１やＭＰＥＧ１、２の符号化方式のシステムにも適用可能であるが、Ｈ．２６３やＭＰＥＧ４の符号化方式のシステムに適用した場合に特に有利である。それは、従来例で述べたように、Ｈ．２６１やＭＰＥＧ１、２の符号化方式ではデータ量の多い画像データをそのまま符号化するため、符号化処理に時間がかかる。そのため、整数画素精度の動ベクトル検出部と半画素精度の動ベクトル検出部とを別々に持ち、パイプライン的に処理することによって処理時間を短くする必要がある。
【００７４】
これに対して、Ｈ．２６３やＭＰＥＧ４では、通信についての共通中間フォーマットであるＣＩＦに対して縦横の画素数を１／２に間引いたデータ量の少ないＱＣＩＦを単位として符号化を行うので、パイプライン処理によって符号化処理の高速化を図る必要性に乏しい。したがって、本実施形態のように、１つの整数／半画素精度動ベクトル検出部１０２を整数画素精度と半画素精度とで使い回すようにしても、全体の符号化処理時間がそれほど長くなることはない。
【００７５】
なお、以上の実施形態では、説明の簡略化のために符号化対象ブロックが縦横４画素で、整数画素精度の探索範囲が符号化対象ブロックを中心にして縦横±４画素の範囲の場合について述べたが、本発明はこれに限定されない。従来例で述べたように、Ｈ．２６３やＭＰＥＧ４では実際には符号化対象ブロックは縦横１６画素で構成されるので、ＰＤＣ、ＭＰＸおよびＳＲ等をその数に応じて構成すれば良い。
【００７６】
また、本実施形態において、半画素精度動ベクトルの検出の探索範囲を広げたい場合は、一点鎖線で囲んだ各回路ブロック２２ａ〜２２ｃ内の３段シフトレジスタ１５の段数を、０．５画素の拡張に対して１段増やすことで対応することが可能である。
【００７７】
なお、本発明においては図１で示した構成の他に、他の実施形態として図８に示す構成をとっても良いものである。
すなわち、図８において図１と異なるところは、整数画素精度探索データ用メモリ１０３および第３の読み出し部１０６ｃがないことであり、第２の読み出し部１０６ｂにおいて第２のフレームメモリ１０５ｂを整数／半画素精度それぞれの場合に応じて読み出せばよいものである。その他の構成は図１と同じであるので、説明は省略する。
【００７８】
【発明の効果】
本発明は上述したように、符号化の方式がＨ．２６３またはＭＰＥＧ４のシステムにおいて、整数画素精度の探索範囲内の画素値か、これらの画素値から生成された半画素精度の画素値かの何れかを選択する選択手段と、選択手段により選択された何れかの画素値を用いて動ベクトルを検出する動ベクトル検出手段とを設けたので、１つの動ベクトル検出手段を用いて、整数画素精度の動ベクトルと半画素精度の動ベクトルとを求めることができるようになり、上記２種類の動ベクトルをより簡単な構成で求めることができる。
【図面の簡単な説明】
【図１】本発明による動ベクトル検出装置の一実施形態を示す要部構成図である。
【図２】図１に示した整数／半画素精度動ベクトル検出部の構成図である。
【図３】図２に示した画素毎の差分絶対値計算回路（ＰＤＣ）の構成図である。
【図４】動き補償フレーム間予測および動ベクトルを説明するための図である。
【図５】動ベクトルを検出する方法の１つであるブロックマッチング法を説明するための図である。
【図６】半画素精度の動ベクトルを説明するための図である。
【図７】半画素精度の動ベクトルを検出する方法を説明するための図である。
【図８】他の実施形態による動ベクトル検出装置の要部構成図である。
【符号の説明】
１１ａ，１１ｂ  ＰＤＣ
１２ａ，１２ｂ  ＭＰＸ
１３  ＳＲ
１４  ８段シフトレジスタ
１５  ３段シフトレジスタ
１０１  マルチプレクサ
１０２  整数／半画素精度動ベクトル検出部
１０３  整数画素精度探索データ用メモリ
１０４  半画素補間部
１０５ａ，１０５ｂ  フレームメモリ
１０６ａ〜１０６ｃ  読み出し部
１０７  制御回路
２０１  差分絶対値計算回路
２０２  合算回路
２０３  最小値決定／動ベクトル発生回路
３０１〜３０３  ＳＲ
３０４  計算回路
【図１】
0004570700.tif 000002
【図２】
0004570700.tif 000003
【図３】
0004570700.tif 000004
【図４】
0004570700.tif 000005
【図５】
0004570700.tif 000006
【図６】
0004570700.tif 000007
【図７】
0004570700.tif 000008
【図８】
0004570700.tif 000009