(57)【要約】【課題】予め複数のハ−ドウェアを用意することなく、複数のブロックサイズの探索処理を実施することができる動き補償予測装置を得ることを目的とする。【解決手段】参照画像メモリ制御部１が可変ブロックサイズの参照画像を切り出す毎に、その参照画像と入力画像を比較して、その参照画像及び入力画像を構成している画素毎の差分絶対値の総和を算出する総和算出手段を設け、その総和算出手段により算出された差分絶対値の総和の中で、差分絶対値の総和が最小になる参照画像に対応する動きベクトルを生成する。【選択図】図１
2007156514.tif 000002
【特許請求の範囲】
【請求項１】
探索領域内の画像から可変ブロックサイズの参照画像を順次切り出す参照画像切出し手段と、上記参照画像切出し手段が参照画像を切り出す毎に、その参照画像と入力画像を比較して、その参照画像及び入力画像を構成している画素毎の差分絶対値の総和を算出する総和算出手段と、上記総和算出手段により算出された差分絶対値の総和の中で、差分絶対値の総和が最小になる参照画像に対応する動きベクトルを生成する動きベクトル生成手段とを備えた動き補償予測装置。
【請求項２】
入力画像を可変ブロックサイズの画像又は可変ブロックサイズより小さいサイズの画像に分割し、その分割した画像を総和算出手段に出力する入力画像分割手段を設けたことを特徴とする請求項１記載の動き補償予測装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、可変ブロックサイズの参照画像に対応する動きベクトルを生成する動き補償予測装置に関するものである。
【背景技術】
【０００２】
従来の動き補償予測装置は、複数のブロックサイズにおいて、動きベクトルを検出する場合、複数のブロックサイズの中で、最小単位のブロックサイズにおいて１回目の動きベクトルの探索処理を実施して特徴値を演算する。
この動き補償予測装置は、１回目の探索処理を実施して特徴値を演算すると、その特徴値から２回目の探索処理を実施するブロックサイズを決定する。
２回目の探索処理では、１つのブロックサイズで探索処理を行うことにより、演算量の軽減を図るようにしている（例えば、特許文献１参照）。
【０００３】
【特許文献１】特開２００５−１０１８１１号公報（第２頁から第３頁、図２）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の動き補償予測装置は以上のように構成されているので、１回目の探索処理を実施して特徴値を演算し、その特徴値から２回目の探索処理を実施するブロックサイズを決定するが、そのブロックサイズで探索処理を実施できるようにするには、予め、探索処理の対象になり得るブロックサイズ毎に専用のハ−ドウェアを用意しておく必要があるなどの課題があった。
【０００５】
この発明は上記のような課題を解決するためになされたもので、予め複数のハ−ドウェアを用意することなく、複数のブロックサイズで動きベクトルの探索処理を実施することができる動き補償予測装置を得ることを目的とする。
【課題を解決するための手段】
【０００６】
この発明に係る動き補償予測装置は、参照画像切出し手段が可変ブロックサイズの参照画像を切り出す毎に、その参照画像と入力画像を比較して、その参照画像及び入力画像を構成している画素毎の差分絶対値の総和を算出する総和算出手段を設け、その総和算出手段により算出された差分絶対値の総和の中で、差分絶対値の総和が最小になる参照画像に対応する動きベクトルを生成するようにしたものである。
【発明の効果】
【０００７】
この発明によれば、参照画像切出し手段が可変ブロックサイズの参照画像を切り出す毎に、その参照画像と入力画像を比較して、その参照画像及び入力画像を構成している画素毎の差分絶対値の総和を算出する総和算出手段を設け、その総和算出手段により算出された差分絶対値の総和の中で、差分絶対値の総和が最小になる参照画像に対応する動きベクトルを生成するように構成したので、予め複数のハ−ドウェアを用意することなく、複数のブロックサイズで動きベクトルの探索処理を実施することができる効果がある。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
図１はこの発明の実施の形態１による動き補償予測装置を示す構成図であり、図において、参照画像メモリ制御部１は入力画像の中心点ベクトル、可変ブロックサイズ及び探索領域の情報を入力すると、これらの情報を参照して、探索領域内の画像から可変ブロックサイズの参照画像を順次切り出す参照画像メモリ２のアドレス制御を実施する。
参照画像メモリ２は参照画像メモリ制御部１のアドレス制御の下で、探索領域内の画像から可変ブロックサイズの参照画像を切り出して、その参照画像を格納する。
なお、参照画像メモリ制御部１及び参照画像メモリ２から参照画像切出し手段が構成されている。
【０００９】
入力画像メモリ制御部３は入力画像を必要に応じて可変ブロックサイズの画像又は可変ブロックサイズより小さいサイズの画像に分割する入力画像メモリ４のアドレス制御を実施する。入力画像メモリ４は入力画像メモリ制御部３のアドレス制御の下で、入力画像又は入力画像の分割画像を格納する。
なお、入力画像メモリ制御部３及び入力画像メモリ４から入力画像分割手段が構成されている。
【００１０】
総和算出部５は４×４個の差分絶対値算出器５−１〜５−１６から構成されており、参照画像メモリ２に格納されている参照画像と入力画像メモリ４に格納されている入力画像（または分割画像）を比較して、その参照画像及び入力画像（または分割画像）を構成している画素毎の差分絶対値を算出する。
総和算出部５の差分絶対値算出器であるＰＥ５−１〜５−１６は参照画像の画素と入力画像（または分割画像）の画素を比較して、それらの画素の差分絶対値を算出する。
加算器６は総和算出部５により算出された画素毎の差分絶対値の総和（４×４個の画素分の差分絶対値の総和）を算出する。
【００１１】
最適動きベクトル生成部７は加算器６が４×４個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積して１６×１６個の画素分の差分絶対値の総和を求める一方、過去から現在までに求めた１６×１６個の画素分の差分絶対値の総和の中で、差分絶対値の総和が最小になる参照画像に対応する動きベクトルを生成する。
なお、総和算出部５、加算器６及び最適動きベクトル生成部７から総和算出手段が構成されており、最適動きベクトル生成部７から動きベクトル生成手段が構成されている。
【００１２】
図２はこの発明の実施の形態１による動き補償予測装置の最適動きベクトル生成部７を示す構成図であり、図において、累積制御部１１は加算器６が４×４個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積するためセレクタ１２を制御して、加算器６により算出された差分絶対値の総和の取り込みを行う。
セレクタ１２は累積制御部１１の制御の下、加算器６により算出された差分絶対値の総和を取り込んで、その差分絶対値の総和を累積器１３に出力する。
【００１３】
累積器１３はセレクタ１２から差分絶対値の総和を受ける毎に、その差分絶対値の総和の累積演算を行う。
最小評価値保持部１４は累積器１３が１６×１６個の画素分の差分絶対値の総和を累積すると、今回の累積結果と現時点までの評価値を比較し、今回の累積結果が現時点までの評価値より小さければ、現時点までの評価値を今回の累積結果に更新する。
ベクトル生成部１５は探索領域内の評価が完了すると、その時点で最小評価値保持部１４に保持されている評価値に対応する参照画像を特定し、その参照画像に対応する動きベクトルを生成する。
【００１４】
次に動作について説明する。
最初に、１６×１６の可変ブロックサイズで動きベクトルの探索処理を実施する場合について説明する。
ここでは、説明の便宜上、図３に示すような１６×１６画素の入力画像が入力されるものとする。
【００１５】
参照画像メモリ制御部１は、図３の入力画像の中心点ベクトル、１６×１６の可変ブロックサイズ及び探索領域の情報を入力すると、入力画像の中心点ベクトルが指し示す位置（中心位置）の周辺に存在する画像を参照画像とするため、その中心位置から所定距離以内に存在している１６×１６のブロックサイズの画像を参照画像Ａとして、探索領域内の画像から切り出すアドレスを生成する。
参照画像メモリ２は、参照画像メモリ制御部１がアドレスを生成すると、図３に示すように、探索領域内の画像からそのアドレスの位置に存在している参照画像Ａを切り出して、その参照画像Ａを格納する。
【００１６】
入力画像メモリ制御部３は、入力画像のブロックサイズが可変ブロックサイズより大きい場合、その入力画像を分割する入力画像メモリ４のアドレス制御を実施するが、図３の例では、入力画像のブロックサイズと可変ブロックサイズが共に１６×１６で同じであるため、入力画像を分割せずに、そのまま入力画像メモリ４に格納する。
【００１７】
総和算出部５は、４×４個のＰＥ５−１〜５−１６を備えているが、１６×１６画素分のＰＥを備えていないので、最初に、参照画像メモリ２に格納されている参照画像Ａの中から、４×４画素分の参照画像ｂ−１をＰＥ５−１〜５−１６に取り込むようにする。
また、入力画像メモリ４に格納されている入力画像の中から、４×４画素分の入力画像ａ−１をＰＥ５−１〜５−１６に取り込むようにする。
総和算出部５のＰＥ５−１〜５−１６は、入力画像ａ−１と参照画像ｂ−１を取り込むと、入力画像ａ−１の４×４個の画素と、それらの画素と対応する位置にある参照画像ｂ−１の４×４個の画素とを比較して、それら４×４個の画素の差分絶対値を算出する。
これにより、４×４個の画素分の差分絶対値が加算器６に出力され、加算器６は、４×４個の画素分の差分絶対値の総和を算出する。
【００１８】
総和算出部５は、上記のようにして、入力画像ａ−１と参照画像ｂ−１に係る画素の差分絶対値を算出すると、入力画像メモリ４に格納されている入力画像の中から入力画像ａ−２を取り込むとともに、参照画像メモリ２に格納されている参照画像Ａの中から参照画像ｂ−２を取り込み、入力画像ａ−１と参照画像ｂ−１の場合と同様にして、入力画像ａ−２と参照画像ｂ−２に係る画素の差分絶対値を算出する。
また、加算器６も、入力画像ａ−１と参照画像ｂ−１の場合と同様にして、入力画像ａ−２と参照画像ｂ−２に係る画素の差分絶対値の総和を算出する。
以後、総和算出部５及び加算器６が上記の処理を繰り返し実施して、入力画像ａ−３〜ａ−１６と参照画像ｂ−３〜ｂ−１６に係る画素の差分絶対値の総和を算出する。
【００１９】
最適動きベクトル生成部７は、加算器６が４×４個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積して１６×１６個の画素分の差分絶対値の総和を求める。
即ち、最適動きベクトル生成部７の累積制御部１１は、加算器６が４×４個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積するためセレクタ１２を制御して、加算器６により算出された差分絶対値の総和の取り込みを行う。
最適動きベクトル生成部７のセレクタ１２は、累積制御部１１の制御の下、加算器６により算出された差分絶対値の総和を取り込んで、その差分絶対値の総和を累積器１３に出力する。
最適動きベクトル生成部７の累積器１３は、セレクタ１２から差分絶対値の総和を受ける毎に、その差分絶対値の総和の累積演算を行う。
【００２０】
最適動きベクトル生成部７の最小評価値保持部１４は、累積器１３が１６×１６個の画素分の差分絶対値の総和を累積すると、累積器１３による今回の累積結果と、現時点までの評価値（過去に評価値が一度も更新されていない場合、予め設定された初期値）とを比較する。
最小評価値保持部１４は、今回の累積結果が現時点までの評価値より小さければ、現時点までの評価値を今回の累積結果に更新する。
一方、今回の累積結果が現時点までの評価値以上であれば、現時点までの評価値を引き続き保持する。
【００２１】
参照画像メモリ制御部１は、上記のようにして、最適動きベクトル生成部７の最小評価値保持部１４が累積結果の比較処理を実施すると、参照画像Ａの他にも、入力画像の中心点ベクトルが指し示す位置（中心位置）の周辺に画像（参照画像になり得る画像）が存在するため、例えば、参照画像Ａより一画素分だけ右側にずれている１６×１６のブロックサイズの画像を参照画像（ｂ−２が左上端に位置している画像）として、探索領域内の画像から切り出すアドレスを生成する。ここでは、探索領域内の画像から切り出す参照画像をＡ’とする。
【００２２】
総和算出部５、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４の動作は、探索領域内の画像から参照画像Ａ’が切り出された場合も、探索領域内の画像から参照画像Ａが切り出された場合と同様であるため説明を省略する。
参照画像メモリ制御部１は、入力画像の中心点ベクトルが指し示す位置（中心位置）の周辺に存在する全ての画像（参照画像になり得る画像）の切り出しが終了するまで、参照画像を一画素ずつずらして、探索領域内の画像から参照画像Ａ’の切り出しを行う。
総和算出部５、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４は、探索領域内の画像から切り出された全ての参照画像Ａ’について、参照画像Ａの場合と同様の処理を実施する。
【００２３】
最適動きベクトル生成部７のベクトル生成部１５は、最小評価値保持部１４が探索領域内の画像から切り出された全ての参照画像Ａ，Ａ’について累積結果の比較処理を実施すると、その時点で最小評価値保持部１４に保持されている評価値（比較処理された中で、最も小さい累積結果）に対応する参照画像を特定する。
即ち、ベクトル生成部１５は、探索領域内の画像から切り出された全ての参照画像Ａ，Ａ’の中で、累積器１３の累積結果が最も小さくなる参照画像を特定する。
ベクトル生成部１５は、最小評価値保持部１４に保持されている評価値に対応する参照画像を特定すると、その参照画像に対応する動きベクトルを生成する。例えば、入力画像の左上端（ａ−１の左上端）から当該参照画像の左上端（ｂ−１の左上端）を指し示す動きベクトルを生成する。
【００２４】
次に、８×１６の可変ブロックサイズで動きベクトルの探索処理を実施する場合について説明する。
ここでは、説明の便宜上、図３に示すような１６×１６画素の入力画像が入力されるものとする。
入力画像メモリ制御部３は、入力画像のブロックサイズ（１６×１６）が可変ブロックサイズ（８×１６）より大きいので、その入力画像をブロックＡとブロックＢに分割し、ブロックＡとブロックＢを入力画像メモリ４に格納する。
【００２５】
参照画像メモリ制御部１は、図４のブロックＡ，Ｂの中心点ベクトルＡ，Ｂ、８×１６の可変ブロックサイズ及び探索領域Ａ，Ｂの情報を入力すると、ブロックＡ，Ｂの中心点ベクトルＡ，Ｂが指し示す位置（中心位置）の周辺に存在する画像を参照画像とするため、その中心位置から所定距離以内に存在している８×１６のブロックサイズの画像を参照画像Ａ，Ｂとして、探索領域Ａ，Ｂ内の画像から切り出すアドレスを生成する。
参照画像メモリ２は、参照画像メモリ制御部１がアドレスを生成すると、図４に示すように、探索領域Ａ，Ｂ内の画像からそのアドレスの位置に存在している参照画像Ａ，Ｂを切り出して、その参照画像Ａ，Ｂを格納する。
【００２６】
総和算出部５は、４×４個のＰＥ５−１〜５−１６を備えているが、８×１６画素分のＰＥを備えていないので、最初に、参照画像メモリ２に格納されている参照画像Ａの中から、４×４画素分の参照画像ｂ−１をＰＥ５−１〜５−１６に取り込むようにする。
また、入力画像メモリ４に格納されている入力画像のブロックＡの中から、４×４画素分の入力画像ａ−１をＰＥ５−１〜５−１６に取り込むようにする。
総和算出部５のＰＥ５−１〜５−１６は、入力画像ａ−１と参照画像ｂ−１を取り込むと、入力画像ａ−１の４個の画素と、それらの画素と対応する位置にある参照画像ｂ−１の４個の画素とを比較して、それら４個の画素の差分絶対値を算出する。
これにより、４×４個の画素分の差分絶対値が加算器６に出力され、加算器６は、４×４個の画素分の差分絶対値の総和を算出する。
【００２７】
総和算出部５は、上記のようにして、入力画像ａ−１と参照画像ｂ−１に係る画素の差分絶対値を算出すると、入力画像メモリ４に格納されているブロックＡの中から入力画像ａ−２を取り込むとともに、参照画像メモリ２に格納されている参照画像Ａの中から参照画像ｂ−２を取り込み、入力画像ａ−１と参照画像ｂ−１の場合と同様にして、入力画像ａ−２と参照画像ｂ−２に係る画素の差分絶対値を算出する。
また、加算器６も、入力画像ａ−１と参照画像ｂ−１の場合と同様にして、入力画像ａ−２と参照画像ｂ−２に係る画素の差分絶対値の総和を算出する。
以後、総和算出部５及び加算器６が上記の処理を繰り返し実施して、入力画像ａ−５，ａ−６，ａ−９，ａ−１０，ａ−１３，ａ−１４と参照画像ｂ−５，ｂ−６，ｂ−９，ｂ−１０，ｂ−１３，ｂ−１４に係る画素の差分絶対値の総和を算出する。
【００２８】
最適動きベクトル生成部７は、加算器６が４×４個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積して８×１６個の画素分の差分絶対値の総和を求める。
即ち、最適動きベクトル生成部７の累積制御部１１は、加算器６が４×４個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積するためセレクタ１２を制御して、加算器６により算出された差分絶対値の総和の取り込みを行う。
最適動きベクトル生成部７のセレクタ１２は、累積制御部１１の制御の下、加算器６により算出された差分絶対値の総和を取り込んで、その差分絶対値の総和を累積器１３に出力する。
最適動きベクトル生成部７の累積器１３は、セレクタ１２から差分絶対値の総和を受ける毎に、その差分絶対値の総和の累積演算を行う。
【００２９】
最適動きベクトル生成部７の最小評価値保持部１４は、累積器１３が８×１６個の画素分の差分絶対値の総和を累積すると、累積器１３による今回の累積結果と、現時点までの評価値（過去に評価値が一度も更新されていない場合、予め設定された初期値）とを比較する。
最小評価値保持部１４は、今回の累積結果が現時点までの評価値より小さければ、現時点までの評価値を今回の累積結果に更新する。
一方、今回の累積結果が現時点までの評価値以上であれば、現時点までの評価値を引き続き保持する。
【００３０】
参照画像メモリ制御部１は、上記のようにして、最適動きベクトル生成部７の最小評価値保持部１４が累積結果の比較処理を実施すると、参照画像Ａの他にも、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に画像（参照画像になり得る画像）が存在するため、例えば、参照画像Ａより一画素分だけ右側にずれている８×１６のブロックサイズの画像を参照画像（ｂ−２が左上端に位置している画像）として、探索領域Ａ内の画像から切り出すアドレスを生成する。ここでは、探索領域Ａ内の画像から切り出す参照画像をＡ’とする。
【００３１】
総和算出部５、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４の動作は、探索領域Ａ内の画像から参照画像Ａ’が切り出された場合も、探索領域Ａ内の画像から参照画像Ａが切り出された場合と同様であるため説明を省略する。
参照画像メモリ制御部１は、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する全ての画像（参照画像になり得る画像）の切り出しが終了するまで、参照画像を一画素ずつずらして、探索領域内の画像から参照画像Ａ’の切り出しを行う。
総和算出部５、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４は、探索領域内の画像から切り出された全ての参照画像Ａ’について、参照画像Ａの場合と同様の処理を実施する。
【００３２】
最適動きベクトル生成部７のベクトル生成部１５は、最小評価値保持部１４が探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’について累積結果の比較処理を実施すると、その時点で最小評価値保持部１４に保持されている評価値（比較処理された中で、最も小さい累積結果）に対応する参照画像を特定する。
即ち、ベクトル生成部１５は、探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’の中で、累積器１３の累積結果が最も小さくなる参照画像を特定する。
ベクトル生成部１５は、最小評価値保持部１４に保持されている評価値に対応する参照画像を特定すると、その参照画像に対応する動きベクトルを生成する。例えば、ブロックＡの左上端（ａ−１の左上端）から当該参照画像の左上端（ｂ−１の左上端）を指し示す動きベクトルＡを生成する。
【００３３】
総和算出部５は、上記のようにして、最適動きベクトル生成部７が動きベクトルＡを生成すると、参照画像メモリ２に格納されている参照画像Ｂの中から、４×４画素分の参照画像ｂ−３をＰＥ５−１〜５−１６に取り込むようにする。
また、入力画像メモリ４に格納されている入力画像のブロックＢの中から、４×４画素分の入力画像ａ−３をＰＥ５−１〜５−１６に取り込むようにする。
総和算出部５のＰＥ５−１〜５−１６は、入力画像ａ−３と参照画像ｂ−３を取り込むと、入力画像ａ−３の４個の画素と、それらの画素と対応する位置にある参照画像ｂ−３の４個の画素とを比較して、それら４個の画素の差分絶対値を算出する。
これにより、４×４個の画素分の差分絶対値が加算器６に出力され、加算器６は、４×４個の画素分の差分絶対値の総和を算出する。
【００３４】
総和算出部５は、上記のようにして、入力画像ａ−３と参照画像ｂ−３に係る画素の差分絶対値を算出すると、入力画像メモリ４に格納されているブロックＢの中から入力画像ａ−４を取り込むとともに、参照画像メモリ２に格納されている参照画像Ｂの中から参照画像ｂ−４を取り込み、入力画像ａ−３と参照画像ｂ−３の場合と同様にして、入力画像ａ−４と参照画像ｂ−４に係る画素の差分絶対値を算出する。
また、加算器６も、入力画像ａ−３と参照画像ｂ−３の場合と同様にして、入力画像ａ−４と参照画像ｂ−４に係る画素の差分絶対値の総和を算出する。
以後、総和算出部５及び加算器６が上記の処理を繰り返し実施して、入力画像ａ−７，ａ−８，ａ−１１，ａ−１２，ａ−１５，ａ−１６と参照画像ｂ−７，ｂ−８，ｂ−１１，ｂ−１２，ｂ−１５，ｂ−１６に係る画素の差分絶対値の総和を算出する。
【００３５】
最適動きベクトル生成部７は、加算器６が４×４個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積して８×１６個の画素分の差分絶対値の総和を求める。
即ち、最適動きベクトル生成部７の累積制御部１１は、加算器６が４×４個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積するためセレクタ１２を制御して、加算器６により算出された差分絶対値の総和の取り込みを行う。
最適動きベクトル生成部７のセレクタ１２は、累積制御部１１の制御の下、加算器６により算出された差分絶対値の総和を取り込んで、その差分絶対値の総和を累積器１３に出力する。
最適動きベクトル生成部７の累積器１３は、セレクタ１２から差分絶対値の総和を受ける毎に、その差分絶対値の総和の累積演算を行う。
【００３６】
最適動きベクトル生成部７の最小評価値保持部１４は、累積器１３が８×１６個の画素分の差分絶対値の総和を累積すると、累積器１３による今回の累積結果と、現時点までの評価値（過去に評価値が一度も更新されていない場合、予め設定された初期値）とを比較する。
最小評価値保持部１４は、今回の累積結果が現時点までの評価値より小さければ、現時点までの評価値を今回の累積結果に更新する。
一方、今回の累積結果が現時点までの評価値以上であれば、現時点までの評価値を引き続き保持する。
【００３７】
参照画像メモリ制御部１は、上記のようにして、最適動きベクトル生成部７の最小評価値保持部１４が累積結果の比較処理を実施すると、参照画像Ｂの他にも、ブロックＢの中心点ベクトルＢが指し示す位置（中心位置）の周辺に画像（参照画像になり得る画像）が存在するため、例えば、参照画像Ｂより一画素分だけ右側にずれている８×１６のブロックサイズの画像を参照画像（ｂ−４が左上端に位置している画像）として、探索領域Ｂ内の画像から切り出すアドレスを生成する。ここでは、探索領域Ｂ内の画像から切り出す参照画像をＢ’とする。
【００３８】
総和算出部５、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４の動作は、探索領域Ｂ内の画像から参照画像Ｂ’が切り出された場合も、探索領域Ｂ内の画像から参照画像Ｂが切り出された場合と同様であるため説明を省略する。
参照画像メモリ制御部１は、ブロックＡの中心点ベクトルＢが指し示す位置（中心位置）の周辺に存在する全ての画像（参照画像になり得る画像）の切り出しが終了するまで、参照画像を一画素ずつずらして、探索領域内の画像から参照画像Ｂ’の切り出しを行う。
総和算出部５、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４は、探索領域内の画像から切り出された全ての参照画像Ｂ’について、参照画像Ｂの場合と同様の処理を実施する。
【００３９】
最適動きベクトル生成部７のベクトル生成部１５は、最小評価値保持部１４が探索領域Ｂ内の画像から切り出された全ての参照画像Ｂ，Ｂ’について累積結果の比較処理を実施すると、その時点で最小評価値保持部１４に保持されている評価値（比較処理された中で、最も小さい累積結果）に対応する参照画像を特定する。
即ち、ベクトル生成部１５は、探索領域Ｂ内の画像から切り出された全ての参照画像Ｂ，Ｂ’の中で、累積器１３の累積結果が最も小さくなる参照画像を特定する。
ベクトル生成部１５は、最小評価値保持部１４に保持されている評価値に対応する参照画像を特定すると、その参照画像に対応する動きベクトルを生成する。例えば、ブロックＢの左上端（ａ−３の左上端）から当該参照画像の左上端（ｂ−３の左上端）を指し示す動きベクトルを生成する。
【００４０】
ここまでは、１６×１６画素の入力画像に対して１６×１６の可変ブロックサイズ、または、８×１６の可変ブロックサイズの何れか一方で動きベクトルの探索処理を実施する場合について説明したが、図５に示すように、１６×１６画素の入力画像に対して、８×８の可変ブロックサイズ、４×８の可変ブロックサイズ、４×４の可変ブロックサイズのそれぞれを用いて、動きベクトルを探索するものについて説明する。
【００４１】
この場合、入力画像メモリ制御部３は、１６×１６画素の入力画像をブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆに分割し、ブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを入力画像メモリ４に格納する。
参照画像メモリ制御部１は、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆから、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ａ、ブロックＢの中心点ベクトルＢが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｂ、ブロックＣの中心点ベクトルＣが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｃ、ブロックＤの中心点ベクトルＤが指し示す位置（中心位置）の周辺に存在する４×８画素の参照画像Ｄ、ブロックＥの中心点ベクトルＥが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｅ、ブロックＦの中心点ベクトルＦが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｆを切り出すアドレスを生成する。
参照画像メモリ２は、参照画像メモリ制御部１がアドレスを生成すると、図５に示すように、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ内の画像からそのアドレスの位置に存在している参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを切り出して、その参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを格納する。
【００４２】
総和算出部５は、４×４個のＰＥ５−１〜５−１６を備えているが、８×８画素分のＰＥを備えていないので、最初に、参照画像メモリ２に格納されている参照画像Ａの中から、４×４画素分の参照画像ｂ−１をＰＥ５−１〜５−１６に取り込むようにする。
また、入力画像メモリ４に格納されている入力画像のブロックＡの中から、４×４画素分の入力画像ａ−１をＰＥ５−１〜５−１６に取り込むようにする。
総和算出部５のＰＥ５−１〜５−１６は、入力画像ａ−１と参照画像ｂ−１を取り込むと、入力画像ａ−１の４個の画素と、それらの画素と対応する位置にある参照画像ｂ−１の４個の画素とを比較して、それら４個の画素の差分絶対値を算出する。
これにより、４×４個の画素分の差分絶対値が加算器６に出力され、加算器６は、４×４個の画素分の差分絶対値の総和を算出する。
【００４３】
総和算出部５は、上記のようにして、入力画像ａ−１と参照画像ｂ−１に係る画素の差分絶対値を算出すると、入力画像メモリ４に格納されているブロックＡの中から入力画像ａ−２を取り込むとともに、参照画像メモリ２に格納されている参照画像Ａの中から参照画像ｂ−２を取り込み、入力画像ａ−１と参照画像ｂ−１の場合と同様にして、入力画像ａ−２と参照画像ｂ−２に係る画素の差分絶対値を算出する。
また、加算器６も、入力画像ａ−１と参照画像ｂ−１の場合と同様にして、入力画像ａ−２と参照画像ｂ−２に係る画素の差分絶対値の総和を算出する。
以後、総和算出部５及び加算器６が上記の処理を繰り返し実施して、入力画像ａ−５，ａ−６と参照画像ｂ−５，ｂ−６に係る画素の差分絶対値の総和を算出する。
【００４４】
最適動きベクトル生成部７は、加算器６が４×４個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積して８×８個の画素分の差分絶対値の総和を求める。
即ち、最適動きベクトル生成部７の累積制御部１１は、加算器６が４×４個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積するためセレクタ１２を制御して、加算器６により算出された差分絶対値の総和の取り込みを行う。
最適動きベクトル生成部７のセレクタ１２は、累積制御部１１の制御の下、加算器６により算出された差分絶対値の総和を取り込んで、その差分絶対値の総和を累積器１３に出力する。
最適動きベクトル生成部７の累積器１３は、セレクタ１２から差分絶対値の総和を受ける毎に、その差分絶対値の総和の累積演算を行う。
【００４５】
最適動きベクトル生成部７の最小評価値保持部１４は、累積器１３が８×８個の画素分の差分絶対値の総和を累積すると、累積器１３による今回の累積結果と、現時点までの評価値（過去に評価値が一度も更新されていない場合、予め設定された初期値）とを比較する。
最小評価値保持部１４は、今回の累積結果が現時点までの評価値より小さければ、現時点までの評価値を今回の累積結果に更新する。
一方、今回の累積結果が現時点までの評価値以上であれば、現時点までの評価値を引き続き保持する。
【００４６】
参照画像メモリ制御部１は、上記のようにして、最適動きベクトル生成部７の最小評価値保持部１４が累積結果の比較処理を実施すると、参照画像Ａの他にも、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に画像（参照画像になり得る画像）が存在するため、例えば、参照画像Ａより一画素分だけ右側にずれている８×８のブロックサイズの画像を参照画像（ｂ−２が左上端に位置している画像）として、探索領域Ａ内の画像から切り出すアドレスを生成する。ここでは、探索領域Ａ内の画像から切り出す参照画像をＡ’とする。
【００４７】
総和算出部５、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４の動作は、探索領域Ａ内の画像から参照画像Ａ’が切り出された場合も、探索領域Ａ内の画像から参照画像Ａが切り出された場合と同様であるため説明を省略する。
参照画像メモリ制御部１は、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する全ての画像（参照画像になり得る画像）の切り出しが終了するまで、参照画像を一画素ずつずらして、探索領域内の画像から参照画像Ａ’の切り出しを行う。
総和算出部５、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４は、探索領域内の画像から切り出された全ての参照画像Ａ’について、参照画像Ａの場合と同様の処理を実施する。
【００４８】
最適動きベクトル生成部７のベクトル生成部１５は、最小評価値保持部１４が探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’について累積結果の比較処理を実施すると、その時点で最小評価値保持部１４に保持されている評価値（比較処理された中で、最も小さい累積結果）に対応する参照画像を特定する。
即ち、ベクトル生成部１５は、探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’の中で、累積器１３の累積結果が最も小さくなる参照画像を特定する。
ベクトル生成部１５は、最小評価値保持部１４に保持されている評価値に対応する参照画像を特定すると、その参照画像に対応する動きベクトルを生成する。例えば、ブロックＡの左上端（ａ−１の左上端）から当該参照画像の左上端（ｂ−１の左上端）を指し示す動きベクトルＡを生成する。
【００４９】
上記のようにして、最適動きベクトル生成部７が探索領域Ａ内で動きベクトルＡを生成すると、順次、探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成する。
参照画像Ａと参照画像Ｂ，Ｃのブロックサイズが共に８×８で同一であるため、詳細な説明を省略するが、探索領域Ｂで動きベクトルＢを生成する場合、総和算出部５が入力画像ａ−９，ａ−１０，ａ−１３，ａ−１４を順番にＰＥ５−１〜５−１６に取り込むとともに、参照画像ｂ−９，ｂ−１０，ｂ−１３，ｂ−１４を順番にＰＥ５−１〜５−１６に取り込んで、８×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＢを生成する。
また、探索領域Ｃで動きベクトルＣを生成する場合、総和算出部５が入力画像ａ−３，ａ−４，ａ−７，ａ−８を順番にＰＥ５−１〜５−１６に取り込むとともに、参照画像ｂ−３，ｂ−４，ｂ−７，ｂ−８を順番にＰＥ５−１〜５−１６に取り込んで、８×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＣを生成する。
【００５０】
上記のようにして、最適動きベクトル生成部７が探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成すると、探索領域Ｄ内で動きベクトルＤを生成する。
探索領域Ｄで動きベクトルＤを生成する場合、参照画像Ｄのブロックサイズが４×８であるため、総和算出部５が入力画像ａ−１１と参照画像ｂ−１１をＰＥ５−１〜５−１６に取り込んで４×４個の画素分の差分絶対値の総和を算出したのち、入力画像ａ−１５と参照画像ｂ−１５をＰＥ５−１〜５−１６に取り込んで４×４個の画素分の差分絶対値の総和を算出する。
そして、最適動きベクトル生成部７が４×４個の画素分の差分絶対値の総和を累積して、４×８個の画素分の差分絶対値の総和を算出することにより、最小の評価値を求めて、動きベクトルＤを生成する。
【００５１】
上記のようにして、最適動きベクトル生成部７が探索領域Ｄ内で動きベクトルＤを生成すると、探索領域Ｅ，Ｆ内で動きベクトルＥ，Ｆを生成する。
探索領域Ｅで動きベクトルＥを生成する場合、参照画像Ｅのブロックサイズが４×４であるため、総和算出部５が入力画像ａ−１２と参照画像ｂ−１２をＰＥ５−１〜５−１６に取り込んで４×４個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＥを生成する。
また、探索領域Ｆで動きベクトルＦを生成する場合、参照画像Ｆのブロックサイズが４×４であるため、総和算出部５が入力画像ａ−１６と参照画像ｂ−１６をＰＥ５−１〜５−１６に取り込んで４×４個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＦを生成する。
【００５２】
以上で明らかなように、この実施の形態１によれば、参照画像メモリ制御部１が可変ブロックサイズの参照画像を切り出す毎に、その参照画像と入力画像を比較して、その参照画像及び入力画像を構成している画素毎の差分絶対値の総和を算出する総和算出手段を設け、その総和算出手段により算出された差分絶対値の総和の中で、差分絶対値の総和が最小になる参照画像に対応する動きベクトルを生成するように構成したので、予め複数のハ−ドウェアを用意することなく、複数のブロックサイズの探索処理を実施することができる効果を奏する。
【００５３】
また、この実施の形態１によれば、入力画像を可変ブロックサイズの画像又は可変ブロックサイズより小さいサイズの画像に分割し、その分割した画像を総和算出手段に出力するように構成したので、例えば、入力画像のブロックサイズが可変ブロックサイズより大きい場合でも、動きベクトルを探索することができる効果を奏する。
【００５４】
なお、この実施の形態１では、可変ブロックサイズが１６×１６、８×１６、８×８、４×８、４×４であるものについて示したが、可変ブロックサイズが１６×８、８×４である場合も、同様にして、動きベクトルを探索することができる。
【００５５】
実施の形態２．
図６はこの発明の実施の形態２による動き補償予測装置を示す構成図であり、図において、図１と同一符号は同一または相当部分を示すので説明を省略する。
総和算出部２１は２×４個の差分絶対値算出器２１−１〜２１−８から構成されており、参照画像メモリ２に格納されている参照画像と入力画像メモリ４に格納されている入力画像（または分割画像）を比較して、その参照画像及び入力画像（または分割画像）を構成している画素毎の差分絶対値を算出する。
総和算出部２１の差分絶対値算出器であるＰＥ２１−１〜２１−８は参照画像の画素と入力画像（または分割画像）の画素を比較して、それらの画素の差分絶対値を算出する。
【００５６】
次に動作について説明する。
図５に示すように、１６×１６画素の入力画像に対して、８×８の可変ブロックサイズ、４×８の可変ブロックサイズ、４×４の可変ブロックサイズのそれぞれを用いて、動きベクトルを探索するものについて説明する。
【００５７】
入力画像メモリ制御部３は、上記実施の形態１と同様に、１６×１６画素の入力画像をブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆに分割し、ブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを入力画像メモリ４に格納する。
参照画像メモリ制御部１は、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆから、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ａ、ブロックＢの中心点ベクトルＢが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｂ、ブロックＣの中心点ベクトルＣが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｃ、ブロックＤの中心点ベクトルＤが指し示す位置（中心位置）の周辺に存在する４×８画素の参照画像Ｄ、ブロックＥの中心点ベクトルＥが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｅ、ブロックＦの中心点ベクトルＦが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｆを切り出すアドレスを生成する。
参照画像メモリ２は、参照画像メモリ制御部１がアドレスを生成すると、図５に示すように、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ内の画像からそのアドレスの位置に存在している参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを切り出して、その参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを格納する。
【００５８】
総和算出部２１は、探索領域Ａで動きベクトルＡを生成する場合、参照画像メモリ２に格納されている参照画像Ａの中から、参照画像ｂ−１の左半分（２×４画素分の参照画像）をＰＥ２１−１〜２１−８に取り込むようにする。
また、入力画像メモリ４に格納されているブロックＡの入力画像の中から、入力画像ａ−１の左半分（２×４画素分の入力画像）をＰＥ２１−１〜２１−８に取り込むようにする。
総和算出部２１のＰＥ２１−１〜２１−８は、入力画像ａ−１の左半分と参照画像ｂ−１の左半分を取り込むと、入力画像ａ−１の２×４個の画素と、それらの画素と対応する位置にある参照画像ｂ−１の２×４個の画素とを比較して、それら２×４個の画素の差分絶対値を算出する。
これにより、２×４個の画素分の差分絶対値が加算器６に出力され、加算器６は、２×４個の画素分の差分絶対値の総和を算出する。
【００５９】
総和算出部２１は、上記のようにして、入力画像ａ−１の左半分と参照画像ｂ−１の左半分に係る画素の差分絶対値を算出すると、入力画像メモリ４に格納されているブロックＡの中から入力画像ａ−１の右半分を取り込むとともに、参照画像メモリ２に格納されている参照画像Ａの中から参照画像ｂ−１の右半分を取り込み、入力画像ａ−１の左半分と参照画像ｂ−１の左半分の場合と同様にして、入力画像ａ−１の右半分と参照画像ｂ−１の右半分に係る画素の差分絶対値を算出する。
また、加算器６も、入力画像ａ−１の左半分と参照画像ｂ−１の左半分の場合と同様にして、入力画像ａ−１の右半分と参照画像ｂ−１の右半分に係る画素の差分絶対値の総和を算出する。
以後、総和算出部２１及び加算器６が上記の処理を繰り返し実施して、入力画像ａ−２の左半分，ａ−２の右半分，ａ−５の左半分，ａ−５の右半分，ａ−６の左半分，ａ−６の右半分と参照画像ｂ−２の左半分，ｂ−２の右半分，ｂ−５の左半分，ｂ−５の右半分，ｂ−６の左半分，ｂ−６の右半分に係る画素の差分絶対値の総和を算出する。
【００６０】
最適動きベクトル生成部７は、加算器６が２×４個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積して８×８個の画素分の差分絶対値の総和を求める。
即ち、最適動きベクトル生成部７の累積制御部１１は、加算器６が２×４個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積するためセレクタ１２を制御して、加算器６により算出された差分絶対値の総和の取り込みを行う。
最適動きベクトル生成部７のセレクタ１２は、累積制御部１１の制御の下、加算器６により算出された差分絶対値の総和を取り込んで、その差分絶対値の総和を累積器１３に出力する。
最適動きベクトル生成部７の累積器１３は、セレクタ１２から差分絶対値の総和を受ける毎に、その差分絶対値の総和の累積演算を行う。
【００６１】
最適動きベクトル生成部７の最小評価値保持部１４は、累積器１３が８×８個の画素分の差分絶対値の総和を累積すると、累積器１３による今回の累積結果と、現時点までの評価値（過去に評価値が一度も更新されていない場合、予め設定された初期値）とを比較する。
最小評価値保持部１４は、今回の累積結果が現時点までの評価値より小さければ、現時点までの評価値を今回の累積結果に更新する。
一方、今回の累積結果が現時点までの評価値以上であれば、現時点までの評価値を引き続き保持する。
【００６２】
参照画像メモリ制御部１は、上記のようにして、最適動きベクトル生成部７の最小評価値保持部１４が累積結果の比較処理を実施すると、参照画像Ａの他にも、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に画像（参照画像になり得る画像）が存在するため、例えば、参照画像Ａより一画素分だけ右側にずれている８×８のブロックサイズの画像を参照画像（ｂ−２が左上端に位置している画像）として、探索領域Ａ内の画像から切り出すアドレスを生成する。ここでは、探索領域Ａ内の画像から切り出す参照画像をＡ’とする。
【００６３】
総和算出部２１、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４の動作は、探索領域Ａ内の画像から参照画像Ａ’が切り出された場合も、探索領域Ａ内の画像から参照画像Ａが切り出された場合と同様であるため説明を省略する。
参照画像メモリ制御部１は、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する全ての画像（参照画像になり得る画像）の切り出しが終了するまで、参照画像を一画素ずつずらして、探索領域内の画像から参照画像Ａ’の切り出しを行う。
総和算出部２１、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４は、探索領域内の画像から切り出された全ての参照画像Ａ’について、参照画像Ａの場合と同様の処理を実施する。
【００６４】
最適動きベクトル生成部７のベクトル生成部１５は、最小評価値保持部１４が探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’について累積結果の比較処理を実施すると、その時点で最小評価値保持部１４に保持されている評価値（比較処理された中で、最も小さい累積結果）に対応する参照画像を特定する。
即ち、ベクトル生成部１５は、探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’の中で、累積器１３の累積結果が最も小さくなる参照画像を特定する。
ベクトル生成部１５は、最小評価値保持部１４に保持されている評価値に対応する参照画像を特定すると、その参照画像に対応する動きベクトルを生成する。例えば、ブロックＡの左上端（ａ−１の左上端）から当該参照画像の左上端（ｂ−１の左上端）を指し示す動きベクトルＡを生成する。
【００６５】
上記のようにして、最適動きベクトル生成部７が探索領域Ａ内で動きベクトルＡを生成すると、順次、探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成する。
探索領域Ｂで動きベクトルＢを生成する場合、参照画像Ｂのブロックサイズが８×８であるため、総和算出部２１が入力画像ａ−９の左半分，ａ−９の右半分，ａ−１０の左半分，ａ−１０の右半分，ａ−１３の左半分，ａ−１３の右半分，ａ−１４の左半分，ａ−１４の右半分を順番にＰＥ２１−１〜２１−８に取り込むとともに、参照画像ｂ−９の左半分，ｂ−９の右半分，ｂ−１０の左半分，ｂ−１０の右半分，ｂ−１３の左半分，ｂ−１３の右半分，ｂ−１４の左半分，ｂ−１４の右半分を順番にＰＥ２１−１〜２１−８に取り込んで、８×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＢを生成する。
また、探索領域Ｃで動きベクトルＣを生成する場合、総和算出部２１が入力画像ａ−３の左半分，ａ−３の右半分，ａ−４の左半分，ａ−４の右半分，ａ−７の左半分，ａ−７の右半分，ａ−８の左半分，ａ−８の右半分を順番にＰＥ２１−１〜２１−８に取り込むとともに、参照画像ｂ−３の左半分，ｂ−３の右半分，ｂ−４の左半分，ｂ−４の右半分，ｂ−７の左半分，ｂ−７の右半分，ｂ−８の左半分，ｂ−８の右半分を順番にＰＥ２１−１〜２１−８に取り込んで、８×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＣを生成する。
【００６６】
上記のようにして、最適動きベクトル生成部７が探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成すると、探索領域Ｄ内で動きベクトルＤを生成する。
探索領域Ｄで動きベクトルＤを生成する場合、参照画像Ｄのブロックサイズが４×８であるため、総和算出部２１が入力画像ａ−１１の左半分，ａ−１１の右半分，ａ−１５の左半分，ａ−１５の右半分を順番にＰＥ２１−１〜２１−８に取り込むとともに、参照画像ｂ−１１の左半分，ｂ−１１の右半分，ｂ−１５の左半分，ｂ−１５の右半分を順番にＰＥ２１−１〜２１−８に取り込んで、４×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＤを生成する。
【００６７】
上記のようにして、最適動きベクトル生成部７が探索領域Ｄ内で動きベクトルＤを生成すると、探索領域Ｅ，Ｆ内で動きベクトルＥ，Ｆを生成する。
探索領域Ｅで動きベクトルＥを生成する場合、参照画像Ｅのブロックサイズが４×４であるため、入力画像ａ−１２の左半分，ａ−１２の右半分を順番にＰＥ２１−１〜２１−８に取り込むとともに、参照画像ｂ−１２の左半分，ｂ−１２の右半分を順番にＰＥ２１−１〜２１−８に取り込んで、４×４個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＥを生成する。
また、探索領域Ｆで動きベクトルＦを生成する場合、入力画像ａ−１６の左半分，ａ−１６の右半分を順番にＰＥ２１−１〜２１−８に取り込むとともに、参照画像ｂ−１６の左半分，ｂ−１６の右半分を順番にＰＥ２１−１〜２１−８に取り込んで、４×４個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＦを生成する。
【００６８】
以上で明らかなように、この実施の形態２の場合も、上記実施の形態１と同様に、予め複数のハ−ドウェアを用意することなく、複数のブロックサイズの探索処理を実施することができる効果を奏する。
また、この実施の形態２によれば、入力画像のブロックサイズが可変ブロックサイズより大きい場合でも、動きベクトルを探索することができる効果を奏する。
【００６９】
なお、この実施の形態２では、可変ブロックサイズが８×８、４×８、４×４であるものについて示したが、可変ブロックサイズが１６×１６、８×１６、１６×８、８×４である場合も、同様にして、動きベクトルを探索することができる。
【００７０】
実施の形態３．
図７はこの発明の実施の形態３による動き補償予測装置を示す構成図であり、図において、図１と同一符号は同一または相当部分を示すので説明を省略する。
総和算出部３１は４×２個の差分絶対値算出器３１−１〜３１−８から構成されており、参照画像メモリ２に格納されている参照画像と入力画像メモリ４に格納されている入力画像（または分割画像）を比較して、その参照画像及び入力画像（または分割画像）を構成している画素毎の差分絶対値を算出する。
総和算出部３１の差分絶対値算出器であるＰＥ３１−１〜３１−８は参照画像の画素と入力画像（または分割画像）の画素を比較して、それらの画素の差分絶対値を算出する。
【００７１】
次に動作について説明する。
図５に示すように、１６×１６画素の入力画像に対して、８×８の可変ブロックサイズ、４×８の可変ブロックサイズ、４×４の可変ブロックサイズのそれぞれを用いて、動きベクトルを探索するものについて説明する。
【００７２】
入力画像メモリ制御部３は、上記実施の形態１と同様に、１６×１６画素の入力画像をブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆに分割し、ブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを入力画像メモリ４に格納する。
参照画像メモリ制御部１は、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆから、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ａ、ブロックＢの中心点ベクトルＢが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｂ、ブロックＣの中心点ベクトルＣが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｃ、ブロックＤの中心点ベクトルＤが指し示す位置（中心位置）の周辺に存在する４×８画素の参照画像Ｄ、ブロックＥの中心点ベクトルＥが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｅ、ブロックＦの中心点ベクトルＦが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｆを切り出すアドレスを生成する。
参照画像メモリ２は、参照画像メモリ制御部１がアドレスを生成すると、図５に示すように、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ内の画像からそのアドレスの位置に存在している参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを切り出して、その参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを格納する。
【００７３】
総和算出部３１は、探索領域Ａで動きベクトルＡを生成する場合、参照画像メモリ２に格納されている参照画像Ａの中から、参照画像ｂ−１の上半分（４×２画素分の参照画像）をＰＥ３１−１〜３１−８に取り込むようにする。
また、入力画像メモリ４に格納されているブロックＡの入力画像の中から、入力画像ａ−１の上半分（４×２画素分の入力画像）をＰＥ３１−１〜３１−８に取り込むようにする。
総和算出部３１のＰＥ３１−１〜３１−８は、入力画像ａ−１の上半分と参照画像ｂ−１の上半分を取り込むと、入力画像ａ−１の４×２個の画素と、それらの画素と対応する位置にある参照画像ｂ−１の４×２個の画素とを比較して、それら４×２個の画素の差分絶対値を算出する。
これにより、４×２個の画素分の差分絶対値が加算器６に出力され、加算器６は、４×２個の画素分の差分絶対値の総和を算出する。
【００７４】
総和算出部３１は、上記のようにして、入力画像ａ−１の上半分と参照画像ｂ−１の上半分に係る画素の差分絶対値を算出すると、入力画像メモリ４に格納されているブロックＡの中から入力画像ａ−１の下半分を取り込むとともに、参照画像メモリ２に格納されている参照画像Ａの中から参照画像ｂ−１の下半分を取り込み、入力画像ａ−１の上半分と参照画像ｂ−１の上半分の場合と同様にして、入力画像ａ−１の下半分と参照画像ｂ−１の下半分に係る画素の差分絶対値を算出する。
また、加算器６も、入力画像ａ−１の上半分と参照画像ｂ−１の上半分の場合と同様にして、入力画像ａ−１の下半分と参照画像ｂ−１の下半分に係る画素の差分絶対値の総和を算出する。
以後、総和算出部３１及び加算器６が上記の処理を繰り返し実施して、入力画像ａ−２の上半分，ａ−２の下半分，ａ−５の上半分，ａ−５の下半分，ａ−６の上半分，ａ−６の下半分と参照画像ｂ−２の上半分，ｂ−２の下半分，ｂ−５の上半分，ｂ−５の下半分，ｂ−６の上半分，ｂ−６の下半分に係る画素の差分絶対値の総和を算出する。
【００７５】
最適動きベクトル生成部７は、加算器６が４×２個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積して８×８個の画素分の差分絶対値の総和を求める。
即ち、最適動きベクトル生成部７の累積制御部１１は、加算器６が４×２個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積するためセレクタ１２を制御して、加算器６により算出された差分絶対値の総和の取り込みを行う。
最適動きベクトル生成部７のセレクタ１２は、累積制御部１１の制御の下、加算器６により算出された差分絶対値の総和を取り込んで、その差分絶対値の総和を累積器１３に出力する。
最適動きベクトル生成部７の累積器１３は、セレクタ１２から差分絶対値の総和を受ける毎に、その差分絶対値の総和の累積演算を行う。
【００７６】
最適動きベクトル生成部７の最小評価値保持部１４は、累積器１３が８×８個の画素分の差分絶対値の総和を累積すると、累積器１３による今回の累積結果と、現時点までの評価値（過去に評価値が一度も更新されていない場合、予め設定された初期値）とを比較する。
最小評価値保持部１４は、今回の累積結果が現時点までの評価値より小さければ、現時点までの評価値を今回の累積結果に更新する。
一方、今回の累積結果が現時点までの評価値以上であれば、現時点までの評価値を引き続き保持する。
【００７７】
参照画像メモリ制御部１は、上記のようにして、最適動きベクトル生成部７の最小評価値保持部１４が累積結果の比較処理を実施すると、参照画像Ａの他にも、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に画像（参照画像になり得る画像）が存在するため、例えば、参照画像Ａより一画素分だけ右側にずれている８×８のブロックサイズの画像を参照画像（ｂ−２が左上端に位置している画像）として、探索領域Ａ内の画像から切り出すアドレスを生成する。ここでは、探索領域Ａ内の画像から切り出す参照画像をＡ’とする。
【００７８】
総和算出部３１、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４の動作は、探索領域Ａ内の画像から参照画像Ａ’が切り出された場合も、探索領域Ａ内の画像から参照画像Ａが切り出された場合と同様であるため説明を省略する。
参照画像メモリ制御部１は、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する全ての画像（参照画像になり得る画像）の切り出しが終了するまで、参照画像を一画素ずつずらして、探索領域内の画像から参照画像Ａ’の切り出しを行う。
総和算出部３１、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４は、探索領域内の画像から切り出された全ての参照画像Ａ’について、参照画像Ａの場合と同様の処理を実施する。
【００７９】
最適動きベクトル生成部７のベクトル生成部１５は、最小評価値保持部１４が探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’について累積結果の比較処理を実施すると、その時点で最小評価値保持部１４に保持されている評価値（比較処理された中で、最も小さい累積結果）に対応する参照画像を特定する。
即ち、ベクトル生成部１５は、探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’の中で、累積器１３の累積結果が最も小さくなる参照画像を特定する。
ベクトル生成部１５は、最小評価値保持部１４に保持されている評価値に対応する参照画像を特定すると、その参照画像に対応する動きベクトルを生成する。例えば、ブロックＡの左上端（ａ−１の左上端）から当該参照画像の左上端（ｂ−１の左上端）を指し示す動きベクトルＡを生成する。
【００８０】
上記のようにして、最適動きベクトル生成部７が探索領域Ａ内で動きベクトルＡを生成すると、順次、探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成する。
探索領域Ｂで動きベクトルＢを生成する場合、参照画像Ｂのブロックサイズが８×８であるため、総和算出部３１が入力画像ａ−９の上半分，ａ−９の下半分，ａ−１０の上半分，ａ−１０の下半分，ａ−１３の上半分，ａ−１３の下半分，ａ−１４の上半分，ａ−１４の下半分を順番にＰＥ３１−１〜３１−８に取り込むとともに、参照画像ｂ−９の上半分，ｂ−９の下半分，ｂ−１０の上半分，ｂ−１０の下半分，ｂ−１３の上半分，ｂ−１３の下半分，ｂ−１４の上半分，ｂ−１４の下半分を順番にＰＥ３１−１〜３１−８に取り込んで、８×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＢを生成する。
また、探索領域Ｃで動きベクトルＣを生成する場合、総和算出部３１が入力画像ａ−３の上半分，ａ−３の下半分，ａ−４の上半分，ａ−４の下半分，ａ−７の上半分，ａ−７の下半分，ａ−８の上半分，ａ−８の下半分を順番にＰＥ３１−１〜３１−８に取り込むとともに、参照画像ｂ−３の上半分，ｂ−３の下半分，ｂ−４の上半分，ｂ−４の下半分，ｂ−７の上半分，ｂ−７の下半分，ｂ−８の上半分，ｂ−８の下半分を順番にＰＥ３１−１〜３１−８に取り込んで、８×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＣを生成する。
【００８１】
上記のようにして、最適動きベクトル生成部７が探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成すると、探索領域Ｄ内で動きベクトルＤを生成する。
探索領域Ｄで動きベクトルＤを生成する場合、総和算出部３１が参照画像Ｄのブロックサイズが４×８であるため、総和算出部３１が入力画像ａ−１１の上半分，ａ−１１の下半分，ａ−１５の上半分，ａ−１５の下半分を順番にＰＥ３１−１〜３１−８に取り込むとともに、参照画像ｂ−１１の上半分，ｂ−１１の下半分，ｂ−１５の上半分，ｂ−１５の下半分を順番にＰＥ３１−１〜３１−８に取り込んで、４×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＤを生成する。
【００８２】
上記のようにして、最適動きベクトル生成部７が探索領域Ｄ内で動きベクトルＤを生成すると、探索領域Ｅ，Ｆ内で動きベクトルＥ，Ｆを生成する。
探索領域Ｅで動きベクトルＥを生成する場合、参照画像Ｅのブロックサイズが４×４であるため、総和算出部３１が入力画像ａ−１２の上半分，ａ−１２の下半分を順番にＰＥ３１−１〜３１−８に取り込むとともに、参照画像ｂ−１２の上半分，ｂ−１２の下半分を順番にＰＥ３１−１〜３１−８に取り込んで、４×４個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＥを生成する。
また、探索領域Ｆで動きベクトルＦを生成する場合、総和算出部３１が入力画像ａ−１６の上半分，ａ−１６の下半分を順番にＰＥ３１−１〜３１−８に取り込むとともに、参照画像ｂ−１６の上半分，ｂ−１６の下半分を順番にＰＥ３１−１〜３１−８に取り込んで、４×４個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＦを生成する。
【００８３】
以上で明らかなように、この実施の形態３の場合も、上記実施の形態１と同様に、予め複数のハ−ドウェアを用意することなく、複数のブロックサイズの探索処理を実施することができる効果を奏する。
また、この実施の形態３によれば、入力画像のブロックサイズが可変ブロックサイズより大きい場合でも、動きベクトルを探索することができる効果を奏する。
【００８４】
なお、この実施の形態３では、可変ブロックサイズが８×８、４×８、４×４であるものについて示したが、可変ブロックサイズが１６×１６、８×１６、１６×８、８×４である場合も、同様にして、動きベクトルを探索することができる。
【００８５】
実施の形態４．
図８はこの発明の実施の形態４による動き補償予測装置を示す構成図であり、図において、図１と同一符号は同一または相当部分を示すので説明を省略する。
総和算出部４１は２×２個の差分絶対値算出器４１−１〜４１−４から構成されており、参照画像メモリ２に格納されている参照画像と入力画像メモリ４に格納されている入力画像（または分割画像）を比較して、その参照画像及び入力画像（または分割画像）を構成している画素毎の差分絶対値を算出する。
総和算出部４１の差分絶対値算出器であるＰＥ４１−１〜４１−４は参照画像の画素と入力画像（または分割画像）の画素を比較して、それらの画素の差分絶対値を算出する。
【００８６】
次に動作について説明する。
図５に示すように、１６×１６画素の入力画像に対して、８×８の可変ブロックサイズ、４×８の可変ブロックサイズ、４×４の可変ブロックサイズのそれぞれを用いて、動きベクトルを探索するものについて説明する。
【００８７】
入力画像メモリ制御部３は、上記実施の形態１と同様に、１６×１６画素の入力画像をブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆに分割し、ブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを入力画像メモリ４に格納する。
参照画像メモリ制御部１は、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆから、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ａ、ブロックＢの中心点ベクトルＢが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｂ、ブロックＣの中心点ベクトルＣが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｃ、ブロックＤの中心点ベクトルＤが指し示す位置（中心位置）の周辺に存在する４×８画素の参照画像Ｄ、ブロックＥの中心点ベクトルＥが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｅ、ブロックＦの中心点ベクトルＦが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｆを切り出すアドレスを生成する。
参照画像メモリ２は、参照画像メモリ制御部１がアドレスを生成すると、図５に示すように、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ内の画像からそのアドレスの位置に存在している参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを切り出して、その参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを格納する。
【００８８】
総和算出部４１は、探索領域Ａで動きベクトルＡを生成する場合、参照画像メモリ２に格納されている参照画像Ａの中から、参照画像ｂ−１の左上領域Ｆ１（２×２画素分の参照画像：図１２を参照）をＰＥ４１−１〜４１−４に取り込むようにする。
また、入力画像メモリ４に格納されているブロックＡの入力画像の中から、入力画像ａ−１の左上領域Ｆ１（２×２画素分の入力画像：図１２を参照）をＰＥ４１−１〜４１−４に取り込むようにする。
総和算出部４１のＰＥ４１−１〜４１−４は、入力画像ａ−１の左上領域Ｆ１と参照画像ｂ−１の左上領域Ｆ１を取り込むと、入力画像ａ−１の２×２個の画素と、それらの画素と対応する位置にある参照画像ｂ−１の２×２個の画素とを比較して、それら２×２個の画素の差分絶対値を算出する。
これにより、２×２個の画素分の差分絶対値が加算器６に出力され、加算器６は、２×２個の画素分の差分絶対値の総和を算出する。
【００８９】
総和算出部４１は、上記のようにして、入力画像ａ−１の左上領域Ｆ１と参照画像ｂ−１の左上領域Ｆ１に係る画素の差分絶対値を算出すると、入力画像メモリ４に格納されているブロックＡの中から入力画像ａ−１の右上領域Ｆ２を取り込むとともに、参照画像メモリ２に格納されている参照画像Ａの中から参照画像ｂ−１の右上領域Ｆ２を取り込み、入力画像ａ−１の左上領域Ｆ１と参照画像ｂ−１の左上領域Ｆ１の場合と同様にして、入力画像ａ−１の右上領域Ｆ２と参照画像ｂ−１の右上領域Ｆ２に係る画素の差分絶対値を算出する。
また、加算器６も、入力画像ａ−１の左上領域Ｆ１と参照画像ｂ−１の左上領域Ｆ１の場合と同様にして、入力画像ａ−１の右上領域Ｆ２と参照画像ｂ−１の右上領域Ｆ２に係る画素の差分絶対値の総和を算出する。
【００９０】
以後、総和算出部４１及び加算器６が上記の処理を繰り返し実施して、入力画像ａ−１の左下領域Ｆ３，ａ−１の右下領域Ｆ４，ａ−２の左上領域Ｆ１，ａ−２の右上領域Ｆ２，ａ−２の左下領域Ｆ３，ａ−２の右下領域Ｆ４，ａ−５の左上領域Ｆ１，ａ−５の右上領域Ｆ２，ａ−５の左下領域Ｆ３，ａ−５の右下領域Ｆ４，ａ−６の左上領域Ｆ１，ａ−６の右上領域Ｆ２，ａ−６の左下領域Ｆ３，ａ−６の右下領域Ｆ４と、参照画像ｂ−１の左下領域Ｆ３，ｂ−１の右下領域Ｆ４，ｂ−２の左上領域Ｆ１，ｂ−２の右上領域Ｆ２，ｂ−２の左下領域Ｆ３，ｂ−２の右下領域Ｆ４，ｂ−５の左上領域Ｆ１，ｂ−５の右上領域Ｆ２，ｂ−５の左下領域Ｆ３，ｂ−５の右下領域Ｆ４，ｂ−６の左上領域Ｆ１，ｂ−６の右上領域Ｆ２，ｂ−６の左下領域Ｆ３，ｂ−６の右下領域Ｆ４に係る画素の差分絶対値の総和を算出する。
【００９１】
最適動きベクトル生成部７は、加算器６が２×２個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積して８×８個の画素分の差分絶対値の総和を求める。
即ち、最適動きベクトル生成部７の累積制御部１１は、加算器６が２×２個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積するためセレクタ１２を制御して、加算器６により算出された差分絶対値の総和の取り込みを行う。
最適動きベクトル生成部７のセレクタ１２は、累積制御部１１の制御の下、加算器６により算出された差分絶対値の総和を取り込んで、その差分絶対値の総和を累積器１３に出力する。
最適動きベクトル生成部７の累積器１３は、セレクタ１２から差分絶対値の総和を受ける毎に、その差分絶対値の総和の累積演算を行う。
【００９２】
最適動きベクトル生成部７の最小評価値保持部１４は、累積器１３が８×８個の画素分の差分絶対値の総和を累積すると、累積器１３による今回の累積結果と、現時点までの評価値（過去に評価値が一度も更新されていない場合、予め設定された初期値）とを比較する。
最小評価値保持部１４は、今回の累積結果が現時点までの評価値より小さければ、現時点までの評価値を今回の累積結果に更新する。
一方、今回の累積結果が現時点までの評価値以上であれば、現時点までの評価値を引き続き保持する。
【００９３】
参照画像メモリ制御部１は、上記のようにして、最適動きベクトル生成部７の最小評価値保持部１４が累積結果の比較処理を実施すると、参照画像Ａの他にも、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に画像（参照画像になり得る画像）が存在するため、例えば、参照画像Ａより一画素分だけ右側にずれている８×８のブロックサイズの画像を参照画像（ｂ−２が左上端に位置している画像）として、探索領域Ａ内の画像から切り出すアドレスを生成する。ここでは、探索領域Ａ内の画像から切り出す参照画像をＡ’とする。
【００９４】
総和算出部４１、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４の動作は、探索領域Ａ内の画像から参照画像Ａ’が切り出された場合も、探索領域Ａ内の画像から参照画像Ａが切り出された場合と同様であるため説明を省略する。
参照画像メモリ制御部１は、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する全ての画像（参照画像になり得る画像）の切り出しが終了するまで、参照画像を一画素ずつずらして、探索領域内の画像から参照画像Ａ’の切り出しを行う。
総和算出部４１、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４は、探索領域内の画像から切り出された全ての参照画像Ａ’について、参照画像Ａの場合と同様の処理を実施する。
【００９５】
最適動きベクトル生成部７のベクトル生成部１５は、最小評価値保持部１４が探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’について累積結果の比較処理を実施すると、その時点で最小評価値保持部１４に保持されている評価値（比較処理された中で、最も小さい累積結果）に対応する参照画像を特定する。
即ち、ベクトル生成部１５は、探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’の中で、累積器１３の累積結果が最も小さくなる参照画像を特定する。
ベクトル生成部１５は、最小評価値保持部１４に保持されている評価値に対応する参照画像を特定すると、その参照画像に対応する動きベクトルを生成する。例えば、ブロックＡの左上端（ａ−１の左上端）から当該参照画像の左上端（ｂ−１の左上端）を指し示す動きベクトルＡを生成する。
【００９６】
上記のようにして、最適動きベクトル生成部７が探索領域Ａ内で動きベクトルＡを生成すると、順次、探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成する。
探索領域Ｂで動きベクトルＢを生成する場合、参照画像Ｂのブロックサイズが８×８であるため、総和算出部４１が入力画像ａ−９の左上領域Ｆ１，ａ−９の右上領域Ｆ２，ａ−９の左下領域Ｆ３，ａ−９の右下領域Ｆ４，ａ−１０の左上領域Ｆ１，ａ−１０の右上領域Ｆ２，ａ−１０の左下領域Ｆ３，ａ−１０の右下領域Ｆ４，ａ−１３の左上領域Ｆ１，ａ−１３の右上領域Ｆ２，ａ−１３の左下領域Ｆ３，ａ−１３の右下領域Ｆ４，ａ−１４の左上領域Ｆ１，ａ−１４の右上領域Ｆ２，ａ−１４の左下領域Ｆ３，ａ−１４の右下領域Ｆ４を順番にＰＥ４１−１〜４１−４に取り込むとともに、参照画像ｂ−９の左上領域Ｆ１，ｂ−９の右上領域Ｆ２，ｂ−９の左下領域Ｆ３，ｂ−９の右下領域Ｆ４，ｂ−１０の左上領域Ｆ１，ｂ−１０の右上領域Ｆ２，ｂ−１０の左下領域Ｆ３，ｂ−１０の右下領域Ｆ４，ｂ−１３の左上領域Ｆ１，ｂ−１３の右上領域Ｆ２，ｂ−１３の左下領域Ｆ３，ｂ−１３の右下領域Ｆ４，ｂ−１４の左上領域Ｆ１，ｂ−１４の右上領域Ｆ２，ｂ−１４の左下領域Ｆ３，ｂ−１４の右下領域Ｆ４を順番にＰＥ４１−１〜４１−４に取り込んで、８×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＢを生成する。
【００９７】
また、探索領域Ｃで動きベクトルＣを生成する場合、総和算出部４１が入力画像ａ−３の左上領域Ｆ１，ａ−３の右上領域Ｆ２，ａ−３の左下領域Ｆ３，ａ−３の右下領域Ｆ４，ａ−４の左上領域Ｆ１，ａ−４の右上領域Ｆ２，ａ−４の左下領域Ｆ３，ａ−４の右下領域Ｆ４，ａ−７の左上領域Ｆ１，ａ−７の右上領域Ｆ２，ａ−７の左下領域Ｆ３，ａ−７の右下領域Ｆ４，ａ−８の左上領域Ｆ１，ａ−８の右上領域Ｆ２，ａ−８の左下領域Ｆ３，ａ−８の右下領域Ｆ４を順番にＰＥ４１−１〜４１−４に取り込むとともに、参照画像ｂ−３の左上領域Ｆ１，ｂ−３の右上領域Ｆ２，ｂ−３の左下領域Ｆ３，ｂ−３の右下領域Ｆ４，ｂ−４の左上領域Ｆ１，ｂ−４の右上領域Ｆ２，ｂ−４の左下領域Ｆ３，ｂ−４の右下領域Ｆ４，ｂ−７の左上領域Ｆ１，ｂ−７の右上領域Ｆ２，ｂ−７の左下領域Ｆ３，ｂ−７の右下領域Ｆ４，ｂ−８の左上領域Ｆ１，ｂ−８の右上領域Ｆ２，ｂ−８の左下領域Ｆ３，ｂ−８の右下領域Ｆ４を順番にＰＥ４１−１〜４１−４に取り込んで、８×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＢを生成する。
【００９８】
上記のようにして、最適動きベクトル生成部７が探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成すると、探索領域Ｄ内で動きベクトルＤを生成する。
探索領域Ｄで動きベクトルＤを生成する場合、参照画像Ｄのブロックサイズが４×８であるため、総和算出部４１が入力画像ａ−１１の左上領域Ｆ１，ａ−１１の右上領域Ｆ２，ａ−１１の左下領域Ｆ３，ａ−１１の右下領域Ｆ４，ａ−１５の左上領域Ｆ１，ａ−１５の右上領域Ｆ２，ａ−１５の左下領域Ｆ３，ａ−１５の右下領域Ｆ４を順番にＰＥ４１−１〜４１−４に取り込むとともに、参照画像ｂ−１１の左上領域Ｆ１，ｂ−１１の右上領域Ｆ２，ｂ−１１の左下領域Ｆ３，ｂ−１１の右下領域Ｆ４，ｂ−１５の左上領域Ｆ１，ｂ−１５の右上領域Ｆ２，ｂ−１５の左下領域Ｆ３，ｂ−１５の右下領域Ｆ４を順番にＰＥ４１−１〜４１−４に取り込んで、４×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＤを生成する。
【００９９】
上記のようにして、最適動きベクトル生成部７が探索領域Ｄ内で動きベクトルＤを生成すると、探索領域Ｅ，Ｆ内で動きベクトルＥ，Ｆを生成する。
探索領域Ｅで動きベクトルＥを生成する場合、参照画像Ｅのブロックサイズが４×４であるため、総和算出部４１が入力画像ａ−１２の左上領域Ｆ１，ａ−１２の右上領域Ｆ２，ａ−１２の左下領域Ｆ３，ａ−１２の右下領域Ｆ４を順番にＰＥ４１−１〜４１−４に取り込むとともに、参照画像ｂ−１２の左上領域Ｆ１，ｂ−１２の右上領域Ｆ２，ｂ−１２の左下領域Ｆ３，ｂ−１２の右下領域Ｆ４を順番にＰＥ４１−１〜４１−４に取り込んで、４×４個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＥを生成する。
また、探索領域Ｆで動きベクトルＦを生成する場合、総和算出部４１が入力画像ａ−１６の左上領域Ｆ１，ａ−１６の右上領域Ｆ２，ａ−１６の左下領域Ｆ３，ａ−１６の右下領域Ｆ４を順番にＰＥ４１−１〜４１−４に取り込むとともに、参照画像ｂ−１６の左上領域Ｆ１，ｂ−１６の右上領域Ｆ２，ｂ−１６の左下領域Ｆ３，ｂ−１６の右下領域Ｆ４を順番にＰＥ４１−１〜４１−４に取り込んで、４×４個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＦを生成する。
【０１００】
以上で明らかなように、この実施の形態４の場合も、上記実施の形態１と同様に、予め複数のハ−ドウェアを用意することなく、複数のブロックサイズの探索処理を実施することができる効果を奏する。
また、この実施の形態４によれば、入力画像のブロックサイズが可変ブロックサイズより大きい場合でも、動きベクトルを探索することができる効果を奏する。
【０１０１】
なお、この実施の形態４では、可変ブロックサイズが８×８、４×８、４×４であるものについて示したが、可変ブロックサイズが１６×１６、８×１６、１６×８、８×４である場合も、同様にして、動きベクトルを探索することができる。
【０１０２】
実施の形態５．
図９はこの発明の実施の形態５による動き補償予測装置を示す構成図であり、図において、図１と同一符号は同一または相当部分を示すので説明を省略する。
総和算出部５１は１×２個の差分絶対値算出器５１−１〜５１−２から構成されており、参照画像メモリ２に格納されている参照画像と入力画像メモリ４に格納されている入力画像（または分割画像）を比較して、その参照画像及び入力画像（または分割画像）を構成している画素毎の差分絶対値を算出する。
総和算出部５１の差分絶対値算出器であるＰＥ５１−１〜５１−２は参照画像の画素と入力画像（または分割画像）の画素を比較して、それらの画素の差分絶対値を算出する。
【０１０３】
次に動作について説明する。
図５に示すように、１６×１６画素の入力画像に対して、８×８の可変ブロックサイズ、４×８の可変ブロックサイズ、４×４の可変ブロックサイズのそれぞれを用いて、動きベクトルを探索するものについて説明する。
【０１０４】
入力画像メモリ制御部３は、上記実施の形態１と同様に、１６×１６画素の入力画像をブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆに分割し、ブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを入力画像メモリ４に格納する。
参照画像メモリ制御部１は、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆから、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ａ、ブロックＢの中心点ベクトルＢが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｂ、ブロックＣの中心点ベクトルＣが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｃ、ブロックＤの中心点ベクトルＤが指し示す位置（中心位置）の周辺に存在する４×８画素の参照画像Ｄ、ブロックＥの中心点ベクトルＥが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｅ、ブロックＦの中心点ベクトルＦが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｆを切り出すアドレスを生成する。
参照画像メモリ２は、参照画像メモリ制御部１がアドレスを生成すると、図５に示すように、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ内の画像からそのアドレスの位置に存在している参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを切り出して、その参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを格納する。
【０１０５】
総和算出部５１は、探索領域Ａで動きベクトルＡを生成する場合、参照画像メモリ２に格納されている参照画像Ａの中から、参照画像ｂ−１の部分領域Ｆ１（１×２画素分の参照画像：図１３を参照）をＰＥ５１−１〜５１−２に取り込むようにする。
また、入力画像メモリ４に格納されているブロックＡの入力画像の中から、入力画像ａ−１の部分領域Ｆ１（１×２画素分の入力画像：図１３を参照）をＰＥ５１−１〜５１−２に取り込むようにする。
総和算出部５１のＰＥ５１−１〜５１−２は、入力画像ａ−１の部分領域Ｆ１と参照画像ｂ−１の部分領域Ｆ１を取り込むと、入力画像ａ−１の１×２個の画素と、それらの画素と対応する位置にある参照画像ｂ−１の１×２個の画素とを比較して、それら１×２個の画素の差分絶対値を算出する。
これにより、１×２個の画素分の差分絶対値が加算器６に出力され、加算器６は、１×２個の画素分の差分絶対値の総和を算出する。
【０１０６】
総和算出部５１は、上記のようにして、入力画像ａ−１の部分領域Ｆ１と参照画像ｂ−１の部分領域Ｆ１に係る画素の差分絶対値を算出すると、入力画像メモリ４に格納されているブロックＡの中から入力画像ａ−１の部分領域Ｆ２を取り込むとともに、参照画像メモリ２に格納されている参照画像Ａの中から参照画像ｂ−１の部分領域Ｆ２を取り込み、入力画像ａ−１の部分領域Ｆ１と参照画像ｂ−１の部分領域Ｆ１の場合と同様にして、入力画像ａ−１の部分領域Ｆ２と参照画像ｂ−１の部分領域Ｆ２に係る画素の差分絶対値を算出する。
また、加算器６も、入力画像ａ−１の部分領域Ｆ１と参照画像ｂ−１の部分領域Ｆ１の場合と同様にして、入力画像ａ−１の部分領域Ｆ２と参照画像ｂ−１の部分領域Ｆ２に係る画素の差分絶対値の総和を算出する。
【０１０７】
以後、総和算出部５１及び加算器６が上記の処理を繰り返し実施して、入力画像ａ−１の部分領域Ｆ３，ａ−１の部分領域Ｆ４，ａ−１の部分領域Ｆ５，ａ−１の部分領域Ｆ６，ａ−１の部分領域Ｆ７，ａ−１の部分領域Ｆ８，ａ−２の部分領域Ｆ１，ａ−２の部分領域Ｆ２，ａ−２の部分領域Ｆ３，ａ−２の部分領域Ｆ４，ａ−２の部分領域Ｆ５，ａ−２の部分領域Ｆ６，ａ−２の部分領域Ｆ７，ａ−２の部分領域Ｆ８，ａ−５の部分領域Ｆ１，ａ−５の部分領域Ｆ２，ａ−５の部分領域Ｆ３，ａ−５の部分領域Ｆ４，ａ−５の部分領域Ｆ５，ａ−５の部分領域Ｆ６，ａ−５の部分領域Ｆ７，ａ−５の部分領域Ｆ８，ａ−６の部分領域Ｆ１，ａ−６の部分領域Ｆ２，ａ−６の部分領域Ｆ３，ａ−６の部分領域Ｆ４，ａ−６の部分領域Ｆ５，ａ−６の部分領域Ｆ６，ａ−６の部分領域Ｆ７，ａ−６の部分領域Ｆ８と、参照画像ｂ−１の部分領域Ｆ３，ｂ−１の部分領域Ｆ４，ｂ−１の部分領域Ｆ５，ｂ−１の部分領域Ｆ６，ｂ−１の部分領域Ｆ７，ｂ−１の部分領域Ｆ８，ｂ−２の部分領域Ｆ１，ｂ−２の部分領域Ｆ２，ｂ−２の部分領域Ｆ３，ｂ−２の部分領域Ｆ４，ｂ−２の部分領域Ｆ５，ｂ−２の部分領域Ｆ６，ｂ−２の部分領域Ｆ７，ｂ−２の部分領域Ｆ８，ｂ−５の部分領域Ｆ１，ｂ−５の部分領域Ｆ２，ｂ−５の部分領域Ｆ３，ｂ−５の部分領域Ｆ４，ｂ−５の部分領域Ｆ５，ｂ−５の部分領域Ｆ６，ｂ−５の部分領域Ｆ７，ｂ−５の部分領域Ｆ８，ｂ−６の部分領域Ｆ１，ｂ−６の部分領域Ｆ２，ｂ−６の部分領域Ｆ３，ｂ−６の部分領域Ｆ４，ｂ−６の部分領域Ｆ５，ｂ−６の部分領域Ｆ６，ｂ−６の部分領域Ｆ７，ｂ−６の部分領域Ｆ８に係る画素の差分絶対値の総和を算出する。
【０１０８】
最適動きベクトル生成部７は、加算器６が１×２個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積して８×８個の画素分の差分絶対値の総和を求める。
即ち、最適動きベクトル生成部７の累積制御部１１は、加算器６が１×２個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積するためセレクタ１２を制御して、加算器６により算出された差分絶対値の総和の取り込みを行う。
最適動きベクトル生成部７のセレクタ１２は、累積制御部１１の制御の下、加算器６により算出された差分絶対値の総和を取り込んで、その差分絶対値の総和を累積器１３に出力する。
最適動きベクトル生成部７の累積器１３は、セレクタ１２から差分絶対値の総和を受ける毎に、その差分絶対値の総和の累積演算を行う。
【０１０９】
最適動きベクトル生成部７の最小評価値保持部１４は、累積器１３が８×８個の画素分の差分絶対値の総和を累積すると、累積器１３による今回の累積結果と、現時点までの評価値（過去に評価値が一度も更新されていない場合、予め設定された初期値）とを比較する。
最小評価値保持部１４は、今回の累積結果が現時点までの評価値より小さければ、現時点までの評価値を今回の累積結果に更新する。
一方、今回の累積結果が現時点までの評価値以上であれば、現時点までの評価値を引き続き保持する。
【０１１０】
参照画像メモリ制御部１は、上記のようにして、最適動きベクトル生成部７の最小評価値保持部１４が累積結果の比較処理を実施すると、参照画像Ａの他にも、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に画像（参照画像になり得る画像）が存在するため、例えば、参照画像Ａより一画素分だけ右側にずれている８×８のブロックサイズの画像を参照画像（ｂ−２が左上端に位置している画像）として、探索領域Ａ内の画像から切り出すアドレスを生成する。ここでは、探索領域Ａ内の画像から切り出す参照画像をＡ’とする。
【０１１１】
総和算出部５１、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４の動作は、探索領域Ａ内の画像から参照画像Ａ’が切り出された場合も、探索領域Ａ内の画像から参照画像Ａが切り出された場合と同様であるため説明を省略する。
参照画像メモリ制御部１は、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する全ての画像（参照画像になり得る画像）の切り出しが終了するまで、参照画像を一画素ずつずらして、探索領域内の画像から参照画像Ａ’の切り出しを行う。
総和算出部５１、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４は、探索領域内の画像から切り出された全ての参照画像Ａ’について、参照画像Ａの場合と同様の処理を実施する。
【０１１２】
最適動きベクトル生成部７のベクトル生成部１５は、最小評価値保持部１４が探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’について累積結果の比較処理を実施すると、その時点で最小評価値保持部１４に保持されている評価値（比較処理された中で、最も小さい累積結果）に対応する参照画像を特定する。
即ち、ベクトル生成部１５は、探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’の中で、累積器１３の累積結果が最も小さくなる参照画像を特定する。
ベクトル生成部１５は、最小評価値保持部１４に保持されている評価値に対応する参照画像を特定すると、その参照画像に対応する動きベクトルを生成する。例えば、ブロックＡの左上端（ａ−１の左上端）から当該参照画像の左上端（ｂ−１の左上端）を指し示す動きベクトルＡを生成する。
【０１１３】
上記のようにして、最適動きベクトル生成部７が探索領域Ａ内で動きベクトルＡを生成すると、順次、探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成する。
探索領域Ｂで動きベクトルＢを生成する場合、参照画像Ｂのブロックサイズが８×８であるため、総和算出部５１が入力画像ａ−９の部分領域Ｆ１，ａ−９の部分領域Ｆ２，ａ−９の部分領域Ｆ３，ａ−９の部分領域Ｆ４，ａ−９の部分領域Ｆ５，ａ−９の部分領域Ｆ６，ａ−９の部分領域Ｆ７，ａ−９の部分領域Ｆ８，ａ−１０の部分領域Ｆ１，ａ−１０の部分領域Ｆ２，ａ−１０の部分領域Ｆ３，ａ−１０の部分領域Ｆ４，ａ−１０の部分領域Ｆ５，ａ−１０の部分領域Ｆ６，ａ−１０の部分領域Ｆ７，ａ−１０の部分領域Ｆ８，ａ−１３の部分領域Ｆ１，ａ−１３の部分領域Ｆ２，ａ−１３の部分領域Ｆ３，ａ−１３の部分領域Ｆ４，ａ−１３の部分領域Ｆ５，ａ−１３の部分領域Ｆ６，ａ−１３の部分領域Ｆ７，ａ−１３の部分領域Ｆ８，ａ−１４の部分領域Ｆ１，ａ−１４の部分領域Ｆ２，ａ−１４の部分領域Ｆ３，ａ−１４の部分領域Ｆ４，ａ−１４の部分領域Ｆ５，ａ−１４の部分領域Ｆ６，ａ−１４の部分領域Ｆ７，ａ−１４の部分領域Ｆ８を順番にＰＥ５１−１〜５１−２に取り込むとともに、参照画像ｂ−９の部分領域Ｆ１，ｂ−９の部分領域Ｆ２，ｂ−９の部分領域Ｆ３，ｂ−９の部分領域Ｆ４，ｂ−９の部分領域Ｆ５，ｂ−９の部分領域Ｆ６，ｂ−９の部分領域Ｆ７，ｂ−９の部分領域Ｆ８，ｂ−１０の部分領域Ｆ１，ｂ−１０の部分領域Ｆ２，ｂ−１０の部分領域Ｆ３，ｂ−１０の部分領域Ｆ４，ｂ−１０の部分領域Ｆ５，ｂ−１０の部分領域Ｆ６，ｂ−１０の部分領域Ｆ７，ｂ−１０の部分領域Ｆ８，ｂ−１３の部分領域Ｆ１，ｂ−１３の部分領域Ｆ２，ｂ−１３の部分領域Ｆ３，ｂ−１３の部分領域Ｆ４，ｂ−１３の部分領域Ｆ５，ｂ−１３の部分領域Ｆ６，ｂ−１３の部分領域Ｆ７，ｂ−１３の部分領域Ｆ８，ｂ−１４の部分領域Ｆ１，ｂ−１４の部分領域Ｆ２，ｂ−１４の部分領域Ｆ３，ｂ−１４の部分領域Ｆ４，ｂ−１４の部分領域Ｆ５，ｂ−１４の部分領域Ｆ６，ｂ−１４の部分領域Ｆ７，ｂ−１４の部分領域Ｆ８を順番にＰＥ５１−１〜５１−２に取り込んで、８×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＢを生成する。
【０１１４】
また、探索領域Ｃで動きベクトルＣを生成する場合、総和算出部５１が入力画像ａ−３の部分領域Ｆ１，ａ−３の部分領域Ｆ２，ａ−３の部分領域Ｆ３，ａ−３の部分領域Ｆ４，ａ−３の部分領域Ｆ５，ａ−３の部分領域Ｆ６，ａ−３の部分領域Ｆ７，ａ−３の部分領域Ｆ８，ａ−４の部分領域Ｆ１，ａ−４の部分領域Ｆ２，ａ−４の部分領域Ｆ３，ａ−４の部分領域Ｆ４，ａ−４の部分領域Ｆ５，ａ−４の部分領域Ｆ６，ａ−４の部分領域Ｆ７，ａ−４の部分領域Ｆ８，ａ−７の部分領域Ｆ１，ａ−７の部分領域Ｆ２，ａ−７の部分領域Ｆ３，ａ−７の部分領域Ｆ４，ａ−７の部分領域Ｆ５，ａ−７の部分領域Ｆ６，ａ−７の部分領域Ｆ７，ａ−７の部分領域Ｆ８，ａ−８の部分領域Ｆ１，ａ−８の部分領域Ｆ２，ａ−８の部分領域Ｆ３，ａ−８の部分領域Ｆ４，ａ−８の部分領域Ｆ５，ａ−８の部分領域Ｆ６，ａ−８の部分領域Ｆ７，ａ−８の部分領域Ｆ８を順番にＰＥ５１−１〜５１−２に取り込むとともに、参照画像ｂ−３の部分領域Ｆ１，ｂ−３の部分領域Ｆ２，ｂ−３の部分領域Ｆ３，ｂ−３の部分領域Ｆ４，ｂ−３の部分領域Ｆ５，ｂ−３の部分領域Ｆ６，ｂ−３の部分領域Ｆ７，ｂ−３の部分領域Ｆ８，ｂ−４の部分領域Ｆ１，ｂ−４の部分領域Ｆ２，ｂ−４の部分領域Ｆ３，ｂ−４の部分領域Ｆ４，ｂ−４の部分領域Ｆ５，ｂ−４の部分領域Ｆ６，ｂ−４の部分領域Ｆ７，ｂ−４の部分領域Ｆ８，ｂ−７の部分領域Ｆ１，ｂ−７の部分領域Ｆ２，ｂ−７の部分領域Ｆ３，ｂ−７の部分領域Ｆ４，ｂ−７の部分領域Ｆ５，ｂ−７の部分領域Ｆ６，ｂ−７の部分領域Ｆ７，ｂ−７の部分領域Ｆ８，ｂ−８の部分領域Ｆ１，ｂ−８の部分領域Ｆ２，ｂ−８の部分領域Ｆ３，ｂ−８の部分領域Ｆ４，ｂ−８の部分領域Ｆ５，ｂ−８の部分領域Ｆ６，ｂ−８の部分領域Ｆ７，ｂ−８の部分領域Ｆ８を順番にＰＥ５１−１〜５１−２に取り込んで、８×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＣを生成する。
【０１１５】
上記のようにして、最適動きベクトル生成部７が探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成すると、探索領域Ｄ内で動きベクトルＤを生成する。
探索領域Ｄで動きベクトルＤを生成する場合、参照画像Ｄのブロックサイズが４×８であるため、総和算出部５１が入力画像ａ−１１の部分領域Ｆ１，ａ−１１の部分領域Ｆ２，ａ−１１の部分領域Ｆ３，ａ−１１の部分領域Ｆ４，ａ−１１の部分領域Ｆ５，ａ−１１の部分領域Ｆ６，ａ−１１の部分領域Ｆ７，ａ−１１の部分領域Ｆ８，ａ−１５の部分領域Ｆ１，ａ−１５の部分領域Ｆ２，ａ−１５の部分領域Ｆ３，ａ−１５の部分領域Ｆ４，ａ−１５の部分領域Ｆ５，ａ−１５の部分領域Ｆ６，ａ−１５の部分領域Ｆ７，ａ−１５の部分領域Ｆ８を順番にＰＥ５１−１〜５１−２に取り込むとともに、参照画像ｂ−１１の部分領域Ｆ１，ｂ−１１の部分領域Ｆ２，ｂ−１１の部分領域Ｆ３，ｂ−１１の部分領域Ｆ４，ｂ−１１の部分領域Ｆ５，ｂ−１１の部分領域Ｆ６，ｂ−１１の部分領域Ｆ７，ｂ−１１の部分領域Ｆ８，ｂ−１５の部分領域Ｆ１，ｂ−１５の部分領域Ｆ２，ｂ−１５の部分領域Ｆ３，ｂ−１５の部分領域Ｆ４，ｂ−１５の部分領域Ｆ５，ｂ−１５の部分領域Ｆ６，ｂ−１５の部分領域Ｆ７，ｂ−１５の部分領域Ｆ８を順番にＰＥ５１−１〜５１−２に取り込んで、４×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＤを生成する。
【０１１６】
上記のようにして、最適動きベクトル生成部７が探索領域Ｄ内で動きベクトルＤを生成すると、探索領域Ｅ，Ｆ内で動きベクトルＥ，Ｆを生成する。
探索領域Ｅで動きベクトルＥを生成する場合、参照画像Ｅのブロックサイズが４×４であるため、総和算出部５１が入力画像ａ−１２の部分領域Ｆ１，ａ−１２の部分領域Ｆ２，ａ−１２の部分領域Ｆ３，ａ−１２の部分領域Ｆ４，ａ−１２の部分領域Ｆ５，ａ−１２の部分領域Ｆ６，ａ−１２の部分領域Ｆ７，ａ−１２の部分領域Ｆ８を順番にＰＥ５１−１〜５１−２に取り込むとともに、参照画像ｂ−１２の部分領域Ｆ１，ｂ−１２の部分領域Ｆ２，ｂ−１２の部分領域Ｆ３，ｂ−１２の部分領域Ｆ４，ｂ−１２の部分領域Ｆ５，ｂ−１２の部分領域Ｆ６，ｂ−１２の部分領域Ｆ７，ｂ−１２の部分領域Ｆ８を順番にＰＥ５１−１〜５１−２に取り込んで、４×４個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＥを生成する。
【０１１７】
また、探索領域Ｆで動きベクトルＦを生成する場合、総和算出部５１が入力画像ａ−１６の部分領域Ｆ１，ａ−１６の部分領域Ｆ２，ａ−１６の部分領域Ｆ３，ａ−１６の部分領域Ｆ４，ａ−１６の部分領域Ｆ５，ａ−１６の部分領域Ｆ６，ａ−１６の部分領域Ｆ７，ａ−１６の部分領域Ｆ８を順番にＰＥ５１−１〜５１−２に取り込むとともに、参照画像ｂ−１６の部分領域Ｆ１，ｂ−１６の部分領域Ｆ２，ｂ−１６の部分領域Ｆ３，ｂ−１６の部分領域Ｆ４，ｂ−１６の部分領域Ｆ５，ｂ−１６の部分領域Ｆ６，ｂ−１６の部分領域Ｆ７，ｂ−１６の部分領域Ｆ８を順番にＰＥ５１−１〜５１−２に取り込んで、４×４個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＦを生成する。
【０１１８】
以上で明らかなように、この実施の形態５の場合も、上記実施の形態１と同様に、予め複数のハ−ドウェアを用意することなく、複数のブロックサイズの探索処理を実施することができる効果を奏する。
また、この実施の形態５によれば、入力画像のブロックサイズが可変ブロックサイズより大きい場合でも、動きベクトルを探索することができる効果を奏する。
【０１１９】
なお、この実施の形態５では、可変ブロックサイズが８×８、４×８、４×４であるものについて示したが、可変ブロックサイズが１６×１６、８×１６、１６×８、８×４である場合も、同様にして、動きベクトルを探索することができる。
【０１２０】
実施の形態６．
図１０はこの発明の実施の形態６による動き補償予測装置を示す構成図であり、図において、図１と同一符号は同一または相当部分を示すので説明を省略する。
総和算出部６１は２×１個の差分絶対値算出器６１−１〜６１−２から構成されており、参照画像メモリ２に格納されている参照画像と入力画像メモリ４に格納されている入力画像（または分割画像）を比較して、その参照画像及び入力画像（または分割画像）を構成している画素毎の差分絶対値を算出する。
総和算出部６１の差分絶対値算出器であるＰＥ６１−１〜６１−２は参照画像の画素と入力画像（または分割画像）の画素を比較して、それらの画素の差分絶対値を算出する。
【０１２１】
次に動作について説明する。
図５に示すように、１６×１６画素の入力画像に対して、８×８の可変ブロックサイズ、４×８の可変ブロックサイズ、４×４の可変ブロックサイズのそれぞれを用いて、動きベクトルを探索するものについて説明する。
【０１２２】
入力画像メモリ制御部３は、上記実施の形態１と同様に、１６×１６画素の入力画像をブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆに分割し、ブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを入力画像メモリ４に格納する。
参照画像メモリ制御部１は、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆから、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ａ、ブロックＢの中心点ベクトルＢが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｂ、ブロックＣの中心点ベクトルＣが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｃ、ブロックＤの中心点ベクトルＤが指し示す位置（中心位置）の周辺に存在する４×８画素の参照画像Ｄ、ブロックＥの中心点ベクトルＥが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｅ、ブロックＦの中心点ベクトルＦが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｆを切り出すアドレスを生成する。
参照画像メモリ２は、参照画像メモリ制御部１がアドレスを生成すると、図５に示すように、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ内の画像からそのアドレスの位置に存在している参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを切り出して、その参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを格納する。
【０１２３】
総和算出部６１は、探索領域Ａで動きベクトルＡを生成する場合、参照画像メモリ２に格納されている参照画像Ａの中から、参照画像ｂ−１の部分領域Ｆ１（２×１画素分の参照画像：図１４を参照）をＰＥ６１−１〜６１−２に取り込むようにする。
また、入力画像メモリ４に格納されているブロックＡの入力画像の中から、入力画像ａ−１の部分領域Ｆ１（２×１画素分の入力画像：図１４を参照）をＰＥ６１−１〜６１−２に取り込むようにする。
総和算出部６１のＰＥ６１−１〜６１−２は、入力画像ａ−１の部分領域Ｆ１と参照画像ｂ−１の部分領域Ｆ１を取り込むと、入力画像ａ−１の２×１個の画素と、それらの画素と対応する位置にある参照画像ｂ−１の２×１個の画素とを比較して、それら２×１個の画素の差分絶対値を算出する。
これにより、２×１個の画素分の差分絶対値が加算器６に出力され、加算器６は、２×１個の画素分の差分絶対値の総和を算出する。
【０１２４】
総和算出部６１は、上記のようにして、入力画像ａ−１の部分領域Ｆ１と参照画像ｂ−１の部分領域Ｆ１に係る画素の差分絶対値を算出すると、入力画像メモリ４に格納されているブロックＡの中から入力画像ａ−１の部分領域Ｆ２を取り込むとともに、参照画像メモリ２に格納されている参照画像Ａの中から参照画像ｂ−１の部分領域Ｆ２を取り込み、入力画像ａ−１の部分領域Ｆ１と参照画像ｂ−１の部分領域Ｆ１の場合と同様にして、入力画像ａ−１の部分領域Ｆ２と参照画像ｂ−１の部分領域Ｆ２に係る画素の差分絶対値を算出する。
また、加算器６も、入力画像ａ−１の部分領域Ｆ１と参照画像ｂ−１の部分領域Ｆ１の場合と同様にして、入力画像ａ−１の部分領域Ｆ２と参照画像ｂ−１の部分領域Ｆ２に係る画素の差分絶対値の総和を算出する。
【０１２５】
以後、総和算出部６１及び加算器６が上記の処理を繰り返し実施して、入力画像ａ−１の部分領域Ｆ３，ａ−１の部分領域Ｆ４，ａ−１の部分領域Ｆ５，ａ−１の部分領域Ｆ６，ａ−１の部分領域Ｆ７，ａ−１の部分領域Ｆ８，ａ−２の部分領域Ｆ１，ａ−２の部分領域Ｆ２，ａ−２の部分領域Ｆ３，ａ−２の部分領域Ｆ４，ａ−２の部分領域Ｆ５，ａ−２の部分領域Ｆ６，ａ−２の部分領域Ｆ７，ａ−２の部分領域Ｆ８，ａ−５の部分領域Ｆ１，ａ−５の部分領域Ｆ２，ａ−５の部分領域Ｆ３，ａ−５の部分領域Ｆ４，ａ−５の部分領域Ｆ５，ａ−５の部分領域Ｆ６，ａ−５の部分領域Ｆ７，ａ−５の部分領域Ｆ８，ａ−６の部分領域Ｆ１，ａ−６の部分領域Ｆ２，ａ−６の部分領域Ｆ３，ａ−６の部分領域Ｆ４，ａ−６の部分領域Ｆ５，ａ−６の部分領域Ｆ６，ａ−６の部分領域Ｆ７，ａ−６の部分領域Ｆ８と、参照画像ｂ−１の部分領域Ｆ３，ｂ−１の部分領域Ｆ４，ｂ−１の部分領域Ｆ５，ｂ−１の部分領域Ｆ６，ｂ−１の部分領域Ｆ７，ｂ−１の部分領域Ｆ８，ｂ−２の部分領域Ｆ１，ｂ−２の部分領域Ｆ２，ｂ−２の部分領域Ｆ３，ｂ−２の部分領域Ｆ４，ｂ−２の部分領域Ｆ５，ｂ−２の部分領域Ｆ６，ｂ−２の部分領域Ｆ７，ｂ−２の部分領域Ｆ８，ｂ−５の部分領域Ｆ１，ｂ−５の部分領域Ｆ２，ｂ−５の部分領域Ｆ３，ｂ−５の部分領域Ｆ４，ｂ−５の部分領域Ｆ５，ｂ−５の部分領域Ｆ６，ｂ−５の部分領域Ｆ７，ｂ−５の部分領域Ｆ８，ｂ−６の部分領域Ｆ１，ｂ−６の部分領域Ｆ２，ｂ−６の部分領域Ｆ３，ｂ−６の部分領域Ｆ４，ｂ−６の部分領域Ｆ５，ｂ−６の部分領域Ｆ６，ｂ−６の部分領域Ｆ７，ｂ−６の部分領域Ｆ８に係る画素の差分絶対値の総和を算出する。
【０１２６】
最適動きベクトル生成部７は、加算器６が２×１個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積して８×８個の画素分の差分絶対値の総和を求める。
即ち、最適動きベクトル生成部７の累積制御部１１は、加算器６が２×１個の画素分の差分絶対値の総和を算出する毎に、それらの総和を累積するためセレクタ１２を制御して、加算器６により算出された差分絶対値の総和の取り込みを行う。
最適動きベクトル生成部７のセレクタ１２は、累積制御部１１の制御の下、加算器６により算出された差分絶対値の総和を取り込んで、その差分絶対値の総和を累積器１３に出力する。
最適動きベクトル生成部７の累積器１３は、セレクタ１２から差分絶対値の総和を受ける毎に、その差分絶対値の総和の累積演算を行う。
【０１２７】
最適動きベクトル生成部７の最小評価値保持部１４は、累積器１３が８×８個の画素分の差分絶対値の総和を累積すると、累積器１３による今回の累積結果と、現時点までの評価値（過去に評価値が一度も更新されていない場合、予め設定された初期値）とを比較する。
最小評価値保持部１４は、今回の累積結果が現時点までの評価値より小さければ、現時点までの評価値を今回の累積結果に更新する。
一方、今回の累積結果が現時点までの評価値以上であれば、現時点までの評価値を引き続き保持する。
【０１２８】
参照画像メモリ制御部１は、上記のようにして、最適動きベクトル生成部７の最小評価値保持部１４が累積結果の比較処理を実施すると、参照画像Ａの他にも、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に画像（参照画像になり得る画像）が存在するため、例えば、参照画像Ａより一画素分だけ右側にずれている８×８のブロックサイズの画像を参照画像（ｂ−２が左上端に位置している画像）として、探索領域Ａ内の画像から切り出すアドレスを生成する。ここでは、探索領域Ａ内の画像から切り出す参照画像をＡ’とする。
【０１２９】
総和算出部６１、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４の動作は、探索領域Ａ内の画像から参照画像Ａ’が切り出された場合も、探索領域Ａ内の画像から参照画像Ａが切り出された場合と同様であるため説明を省略する。
参照画像メモリ制御部１は、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する全ての画像（参照画像になり得る画像）の切り出しが終了するまで、参照画像を一画素ずつずらして、探索領域内の画像から参照画像Ａ’の切り出しを行う。
総和算出部６１、加算器６及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４は、探索領域内の画像から切り出された全ての参照画像Ａ’について、参照画像Ａの場合と同様の処理を実施する。
【０１３０】
最適動きベクトル生成部７のベクトル生成部１５は、最小評価値保持部１４が探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’について累積結果の比較処理を実施すると、その時点で最小評価値保持部１４に保持されている評価値（比較処理された中で、最も小さい累積結果）に対応する参照画像を特定する。
即ち、ベクトル生成部１５は、探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’の中で、累積器１３の累積結果が最も小さくなる参照画像を特定する。
ベクトル生成部１５は、最小評価値保持部１４に保持されている評価値に対応する参照画像を特定すると、その参照画像に対応する動きベクトルを生成する。例えば、ブロックＡの左上端（ａ−１の左上端）から当該参照画像の左上端（ｂ−１の左上端）を指し示す動きベクトルＡを生成する。
【０１３１】
上記のようにして、最適動きベクトル生成部７が探索領域Ａ内で動きベクトルＡを生成すると、順次、探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成する。
探索領域Ｂで動きベクトルＢを生成する場合、参照画像Ｂのブロックサイズが８×８であるため、総和算出部６１が入力画像ａ−９の部分領域Ｆ１，ａ−９の部分領域Ｆ２，ａ−９の部分領域Ｆ３，ａ−９の部分領域Ｆ４，ａ−９の部分領域Ｆ５，ａ−９の部分領域Ｆ６，ａ−９の部分領域Ｆ７，ａ−９の部分領域Ｆ８，ａ−１０の部分領域Ｆ１，ａ−１０の部分領域Ｆ２，ａ−１０の部分領域Ｆ３，ａ−１０の部分領域Ｆ４，ａ−１０の部分領域Ｆ５，ａ−１０の部分領域Ｆ６，ａ−１０の部分領域Ｆ７，ａ−１０の部分領域Ｆ８，ａ−１３の部分領域Ｆ１，ａ−１３の部分領域Ｆ２，ａ−１３の部分領域Ｆ３，ａ−１３の部分領域Ｆ４，ａ−１３の部分領域Ｆ５，ａ−１３の部分領域Ｆ６，ａ−１３の部分領域Ｆ７，ａ−１３の部分領域Ｆ８，ａ−１４の部分領域Ｆ１，ａ−１４の部分領域Ｆ２，ａ−１４の部分領域Ｆ３，ａ−１４の部分領域Ｆ４，ａ−１４の部分領域Ｆ５，ａ−１４の部分領域Ｆ６，ａ−１４の部分領域Ｆ７，ａ−１４の部分領域Ｆ８を順番にＰＥ６１−１〜６１−２に取り込むとともに、参照画像ｂ−９の部分領域Ｆ１，ｂ−９の部分領域Ｆ２，ｂ−９の部分領域Ｆ３，ｂ−９の部分領域Ｆ４，ｂ−９の部分領域Ｆ５，ｂ−９の部分領域Ｆ６，ｂ−９の部分領域Ｆ７，ｂ−９の部分領域Ｆ８，ｂ−１０の部分領域Ｆ１，ｂ−１０の部分領域Ｆ２，ｂ−１０の部分領域Ｆ３，ｂ−１０の部分領域Ｆ４，ｂ−１０の部分領域Ｆ５，ｂ−１０の部分領域Ｆ６，ｂ−１０の部分領域Ｆ７，ｂ−１０の部分領域Ｆ８，ｂ−１３の部分領域Ｆ１，ｂ−１３の部分領域Ｆ２，ｂ−１３の部分領域Ｆ３，ｂ−１３の部分領域Ｆ４，ｂ−１３の部分領域Ｆ５，ｂ−１３の部分領域Ｆ６，ｂ−１３の部分領域Ｆ７，ｂ−１３の部分領域Ｆ８，ｂ−１４の部分領域Ｆ１，ｂ−１４の部分領域Ｆ２，ｂ−１４の部分領域Ｆ３，ｂ−１４の部分領域Ｆ４，ｂ−１４の部分領域Ｆ５，ｂ−１４の部分領域Ｆ６，ｂ−１４の部分領域Ｆ７，ｂ−１４の部分領域Ｆ８を順番にＰＥ６１−１〜６１−２に取り込んで、８×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＢを生成する。
【０１３２】
また、探索領域Ｃで動きベクトルＣを生成する場合、総和算出部６１が入力画像ａ−３の部分領域Ｆ１，ａ−３の部分領域Ｆ２，ａ−３の部分領域Ｆ３，ａ−３の部分領域Ｆ４，ａ−３の部分領域Ｆ５，ａ−３の部分領域Ｆ６，ａ−３の部分領域Ｆ７，ａ−３の部分領域Ｆ８，ａ−４の部分領域Ｆ１，ａ−４の部分領域Ｆ２，ａ−４の部分領域Ｆ３，ａ−４の部分領域Ｆ４，ａ−４の部分領域Ｆ５，ａ−４の部分領域Ｆ６，ａ−４の部分領域Ｆ７，ａ−４の部分領域Ｆ８，ａ−７の部分領域Ｆ１，ａ−７の部分領域Ｆ２，ａ−７の部分領域Ｆ３，ａ−７の部分領域Ｆ４，ａ−７の部分領域Ｆ５，ａ−７の部分領域Ｆ６，ａ−７の部分領域Ｆ７，ａ−７の部分領域Ｆ８，ａ−８の部分領域Ｆ１，ａ−８の部分領域Ｆ２，ａ−８の部分領域Ｆ３，ａ−８の部分領域Ｆ４，ａ−８の部分領域Ｆ５，ａ−８の部分領域Ｆ６，ａ−８の部分領域Ｆ７，ａ−８の部分領域Ｆ８を順番にＰＥ６１−１〜６１−２に取り込むとともに、参照画像ｂ−３の部分領域Ｆ１，ｂ−３の部分領域Ｆ２，ｂ−３の部分領域Ｆ３，ｂ−３の部分領域Ｆ４，ｂ−３の部分領域Ｆ５，ｂ−３の部分領域Ｆ６，ｂ−３の部分領域Ｆ７，ｂ−３の部分領域Ｆ８，ｂ−４の部分領域Ｆ１，ｂ−４の部分領域Ｆ２，ｂ−４の部分領域Ｆ３，ｂ−４の部分領域Ｆ４，ｂ−４の部分領域Ｆ５，ｂ−４の部分領域Ｆ６，ｂ−４の部分領域Ｆ７，ｂ−４の部分領域Ｆ８，ｂ−７の部分領域Ｆ１，ｂ−７の部分領域Ｆ２，ｂ−７の部分領域Ｆ３，ｂ−７の部分領域Ｆ４，ｂ−７の部分領域Ｆ５，ｂ−７の部分領域Ｆ６，ｂ−７の部分領域Ｆ７，ｂ−７の部分領域Ｆ８，ｂ−８の部分領域Ｆ１，ｂ−８の部分領域Ｆ２，ｂ−８の部分領域Ｆ３，ｂ−８の部分領域Ｆ４，ｂ−８の部分領域Ｆ５，ｂ−８の部分領域Ｆ６，ｂ−８の部分領域Ｆ７，ｂ−８の部分領域Ｆ８を順番にＰＥ６１−１〜６１−２に取り込んで、８×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＣを生成する。
【０１３３】
上記のようにして、最適動きベクトル生成部７が探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成すると、探索領域Ｄ内で動きベクトルＤを生成する。
探索領域Ｄで動きベクトルＤを生成する場合、参照画像Ｄのブロックサイズが４×８であるため、総和算出部６１が入力画像ａ−１１の部分領域Ｆ１，ａ−１１の部分領域Ｆ２，ａ−１１の部分領域Ｆ３，ａ−１１の部分領域Ｆ４，ａ−１１の部分領域Ｆ５，ａ−１１の部分領域Ｆ６，ａ−１１の部分領域Ｆ７，ａ−１１の部分領域Ｆ８，ａ−１５の部分領域Ｆ１，ａ−１５の部分領域Ｆ２，ａ−１５の部分領域Ｆ３，ａ−１５の部分領域Ｆ４，ａ−１５の部分領域Ｆ５，ａ−１５の部分領域Ｆ６，ａ−１５の部分領域Ｆ７，ａ−１５の部分領域Ｆ８を順番にＰＥ６１−１〜６１−２に取り込むとともに、参照画像ｂ−１１の部分領域Ｆ１，ｂ−１１の部分領域Ｆ２，ｂ−１１の部分領域Ｆ３，ｂ−１１の部分領域Ｆ４，ｂ−１１の部分領域Ｆ５，ｂ−１１の部分領域Ｆ６，ｂ−１１の部分領域Ｆ７，ｂ−１１の部分領域Ｆ８，ｂ−１５の部分領域Ｆ１，ｂ−１５の部分領域Ｆ２，ｂ−１５の部分領域Ｆ３，ｂ−１５の部分領域Ｆ４，ｂ−１５の部分領域Ｆ５，ｂ−１５の部分領域Ｆ６，ｂ−１５の部分領域Ｆ７，ｂ−１５の部分領域Ｆ８を順番にＰＥ６１−１〜６１−２に取り込んで、４×８個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＤを生成する。
【０１３４】
上記のようにして、最適動きベクトル生成部７が探索領域Ｄ内で動きベクトルＤを生成すると、探索領域Ｅ，Ｆ内で動きベクトルＥ，Ｆを生成する。
探索領域Ｅで動きベクトルＥを生成する場合、参照画像Ｅのブロックサイズが４×４であるため、総和算出部６１が入力画像ａ−１２の部分領域Ｆ１，ａ−１２の部分領域Ｆ２，ａ−１２の部分領域Ｆ３，ａ−１２の部分領域Ｆ４，ａ−１２の部分領域Ｆ５，ａ−１２の部分領域Ｆ６，ａ−１２の部分領域Ｆ７，ａ−１２の部分領域Ｆ８を順番にＰＥ６１−１〜６１−２に取り込むとともに、参照画像ｂ−１２の部分領域Ｆ１，ｂ−１２の部分領域Ｆ２，ｂ−１２の部分領域Ｆ３，ｂ−１２の部分領域Ｆ４，ｂ−１２の部分領域Ｆ５，ｂ−１２の部分領域Ｆ６，ｂ−１２の部分領域Ｆ７，ｂ−１２の部分領域Ｆ８を順番にＰＥ６１−１〜６１−２に取り込んで、４×４個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＥを生成する。
【０１３５】
また、探索領域Ｆで動きベクトルＦを生成する場合、総和算出部６１が入力画像ａ−１６の部分領域Ｆ１，ａ−１６の部分領域Ｆ２，ａ−１６の部分領域Ｆ３，ａ−１６の部分領域Ｆ４，ａ−１６の部分領域Ｆ５，ａ−１６の部分領域Ｆ６，ａ−１６の部分領域Ｆ７，ａ−１６の部分領域Ｆ８を順番にＰＥ６１−１〜６１−２に取り込むとともに、参照画像ｂ−１６の部分領域Ｆ１，ｂ−１６の部分領域Ｆ２，ｂ−１６の部分領域Ｆ３，ｂ−１６の部分領域Ｆ４，ｂ−１６の部分領域Ｆ５，ｂ−１６の部分領域Ｆ６，ｂ−１６の部分領域Ｆ７，ｂ−１６の部分領域Ｆ８を順番にＰＥ６１−１〜６１−２に取り込んで、４×４個の画素分の差分絶対値の総和を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＦを生成する。
【０１３６】
以上で明らかなように、この実施の形態６の場合も、上記実施の形態１と同様に、予め複数のハ−ドウェアを用意することなく、複数のブロックサイズの探索処理を実施することができる効果を奏する。
また、この実施の形態６によれば、入力画像のブロックサイズが可変ブロックサイズより大きい場合でも、動きベクトルを探索することができる効果を奏する。
【０１３７】
なお、この実施の形態６では、可変ブロックサイズが８×８、４×８、４×４であるものについて示したが、可変ブロックサイズが１６×１６、８×１６、１６×８、８×４である場合も、同様にして、動きベクトルを探索することができる。
【０１３８】
実施の形態７．
図１１はこの発明の実施の形態７による動き補償予測装置を示す構成図であり、図において、図１と同一符号は同一または相当部分を示すので説明を省略する。
ＰＥ７１は参照画像の画素と入力画像（または分割画像）の画素を比較して、それらの画素の差分絶対値を算出する。
【０１３９】
次に動作について説明する。
図５に示すように、１６×１６画素の入力画像に対して、８×８の可変ブロックサイズ、４×８の可変ブロックサイズ、４×４の可変ブロックサイズのそれぞれを用いて、動きベクトルを探索するものについて説明する。
【０１４０】
入力画像メモリ制御部３は、上記実施の形態１と同様に、１６×１６画素の入力画像をブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆに分割し、ブロックＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを入力画像メモリ４に格納する。
参照画像メモリ制御部１は、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆから、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ａ、ブロックＢの中心点ベクトルＢが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｂ、ブロックＣの中心点ベクトルＣが指し示す位置（中心位置）の周辺に存在する８×８画素の参照画像Ｃ、ブロックＤの中心点ベクトルＤが指し示す位置（中心位置）の周辺に存在する４×８画素の参照画像Ｄ、ブロックＥの中心点ベクトルＥが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｅ、ブロックＦの中心点ベクトルＦが指し示す位置（中心位置）の周辺に存在する４×４画素の参照画像Ｆを切り出すアドレスを生成する。
参照画像メモリ２は、参照画像メモリ制御部１がアドレスを生成すると、図５に示すように、探索領域Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ内の画像からそのアドレスの位置に存在している参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを切り出して、その参照画像Ａ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆを格納する。
【０１４１】
探索領域Ａで動きベクトルＡを生成する場合、参照画像メモリ２に格納されている参照画像Ａの中から、参照画像ｂ−１の部分領域Ｆ１（１×１画素分の参照画像：図１５を参照）をＰＥ７１に取り込むようにする。
また、入力画像メモリ４に格納されているブロックＡの入力画像の中から、入力画像ａ−１の部分領域Ｆ１（１×１画素分の入力画像：図１５を参照）をＰＥ７１に取り込むようにする。
ＰＥ７１は、入力画像ａ−１の部分領域Ｆ１と参照画像ｂ−１の部分領域Ｆ１を取り込むと、入力画像ａ−１の部分領域Ｆ１の画素と、参照画像ｂ−１の部分領域Ｆ１の画素とを比較して、それらの画素の差分絶対値を算出する。
これにより、１×１個の画素分の差分絶対値が最適動きベクトル生成部７に出力される。
【０１４２】
ＰＥ７１は、上記のようにして、入力画像ａ−１の部分領域Ｆ１と参照画像ｂ−１の部分領域Ｆ１に係る画素の差分絶対値を算出すると、入力画像メモリ４に格納されているブロックＡの中から入力画像ａ−１の部分領域Ｆ２を取り込むとともに、参照画像メモリ２に格納されている参照画像Ａの中から参照画像ｂ−１の部分領域Ｆ２を取り込み、入力画像ａ−１の部分領域Ｆ１と参照画像ｂ−１の部分領域Ｆ１の場合と同様にして、入力画像ａ−１の部分領域Ｆ２と参照画像ｂ−１の部分領域Ｆ２に係る画素の差分絶対値を算出する。
【０１４３】
以後、ＰＥ７１が上記の処理を繰り返し実施して、入力画像ａ−１の部分領域Ｆ３，ａ−１の部分領域Ｆ４，ａ−１の部分領域Ｆ５，ａ−１の部分領域Ｆ６，ａ−１の部分領域Ｆ７，ａ−１の部分領域Ｆ８，ａ−１の部分領域Ｆ９，ａ−１の部分領域Ｆ１０，ａ−１の部分領域Ｆ１１，ａ−１の部分領域Ｆ１２，ａ−１の部分領域Ｆ１３，ａ−１の部分領域Ｆ１４，ａ−１の部分領域Ｆ１５，ａ−１の部分領域Ｆ１６，ａ−２の部分領域Ｆ１，ａ−２の部分領域Ｆ２，ａ−２の部分領域Ｆ３，ａ−２の部分領域Ｆ４，ａ−２の部分領域Ｆ５，ａ−２の部分領域Ｆ６，ａ−２の部分領域Ｆ７，ａ−２の部分領域Ｆ８，ａ−２の部分領域Ｆ９，ａ−２の部分領域Ｆ１０，ａ−２の部分領域Ｆ１１，ａ−２の部分領域Ｆ１２，ａ−２の部分領域Ｆ１３，ａ−２の部分領域Ｆ１４，ａ−２の部分領域Ｆ１５，ａ−２の部分領域Ｆ１６，ａ−５の部分領域Ｆ１，ａ−５の部分領域Ｆ２，ａ−５の部分領域Ｆ３，ａ−５の部分領域Ｆ４，ａ−５の部分領域Ｆ５，ａ−５の部分領域Ｆ６，ａ−５の部分領域Ｆ７，ａ−５の部分領域Ｆ８，ａ−５の部分領域Ｆ９，ａ−５の部分領域Ｆ１０，ａ−５の部分領域Ｆ１１，ａ−５の部分領域Ｆ１２，ａ−５の部分領域Ｆ１３，ａ−５の部分領域Ｆ１４，ａ−５の部分領域Ｆ１５，ａ−５の部分領域Ｆ１６，ａ−６の部分領域Ｆ１，ａ−６の部分領域Ｆ２，ａ−６の部分領域Ｆ３，ａ−６の部分領域Ｆ４，ａ−６の部分領域Ｆ５，ａ−６の部分領域Ｆ６，ａ−６の部分領域Ｆ７，ａ−６の部分領域Ｆ８，ａ−６の部分領域Ｆ９，ａ−６の部分領域Ｆ１０，ａ−６の部分領域Ｆ１１，ａ−６の部分領域Ｆ１２，ａ−６の部分領域Ｆ１３，ａ−６の部分領域Ｆ１４，ａ−６の部分領域Ｆ１５，ａ−６の部分領域Ｆ１６と、参照画像ｂ−１の部分領域Ｆ３，ｂ−１の部分領域Ｆ４，ｂ−１の部分領域Ｆ５，ｂ−１の部分領域Ｆ６，ｂ−１の部分領域Ｆ７，ｂ−１の部分領域Ｆ８，ｂ−１の部分領域Ｆ９，ｂ−１の部分領域Ｆ１０，ｂ−１の部分領域Ｆ１１，ｂ−１の部分領域Ｆ１２，ｂ−１の部分領域Ｆ１３，ｂ−１の部分領域Ｆ１４，ｂ−１の部分領域Ｆ１５，ｂ−１の部分領域Ｆ１６，ｂ−２の部分領域Ｆ１，ｂ−２の部分領域Ｆ２，ｂ−２の部分領域Ｆ３，ｂ−２の部分領域Ｆ４，ｂ−２の部分領域Ｆ５，ｂ−２の部分領域Ｆ６，ｂ−２の部分領域Ｆ７，ｂ−２の部分領域Ｆ８，ｂ−２の部分領域Ｆ９，ｂ−２の部分領域Ｆ１０，ｂ−２の部分領域Ｆ１１，ｂ−２の部分領域Ｆ１２，ｂ−２の部分領域Ｆ１３，ｂ−２の部分領域Ｆ１４，ｂ−２の部分領域Ｆ１５，ｂ−２の部分領域Ｆ１６，ｂ−５の部分領域Ｆ１，ｂ−５の部分領域Ｆ２，ｂ−５の部分領域Ｆ３，ｂ−５の部分領域Ｆ４，ｂ−５の部分領域Ｆ５，ｂ−５の部分領域Ｆ６，ｂ−５の部分領域Ｆ７，ｂ−５の部分領域Ｆ８，ｂ−５の部分領域Ｆ９，ｂ−５の部分領域Ｆ１０，ｂ−５の部分領域Ｆ１１，ｂ−５の部分領域Ｆ１２，ｂ−５の部分領域Ｆ１３，ｂ−５の部分領域Ｆ１４，ｂ−５の部分領域Ｆ１５，ｂ−５の部分領域Ｆ１６，ｂ−６の部分領域Ｆ１，ｂ−６の部分領域Ｆ２，ｂ−６の部分領域Ｆ３，ｂ−６の部分領域Ｆ４，ｂ−６の部分領域Ｆ５，ｂ−６の部分領域Ｆ６，ｂ−６の部分領域Ｆ７，ｂ−６の部分領域Ｆ８，ｂ−６の部分領域Ｆ９，ｂ−６の部分領域Ｆ１０，ｂ−６の部分領域Ｆ１１，ｂ−６の部分領域Ｆ１２，ｂ−６の部分領域Ｆ１３，ｂ−６の部分領域Ｆ１４，ｂ−６の部分領域Ｆ１５，ｂ−５の部分領域Ｆ１６に係る画素の差分絶対値を算出する。
【０１４４】
最適動きベクトル生成部７は、ＰＥ７１が画素の差分絶対値を算出する毎に、それらの差分絶対値を累積して８×８個の画素分の差分絶対値の総和を求める。
即ち、最適動きベクトル生成部７の累積制御部１１は、ＰＥ７１が画素の差分絶対値を算出する毎に、それらの差分絶対値を累積するためセレクタ１２を制御して、ＰＥ７１により算出された差分絶対値の取り込みを行う。
最適動きベクトル生成部７のセレクタ１２は、累積制御部１１の制御の下、ＰＥ７１により算出された差分絶対値を取り込んで、その差分絶対値を累積器１３に出力する。
最適動きベクトル生成部７の累積器１３は、セレクタ１２から差分絶対値を受ける毎に、その差分絶対値の累積演算を行う。
【０１４５】
最適動きベクトル生成部７の最小評価値保持部１４は、累積器１３が８×８個の画素分の差分絶対値を累積すると、累積器１３による今回の累積結果と、現時点までの評価値（過去に評価値が一度も更新されていない場合、予め設定された初期値）とを比較する。
最小評価値保持部１４は、今回の累積結果が現時点までの評価値より小さければ、現時点までの評価値を今回の累積結果に更新する。
一方、今回の累積結果が現時点までの評価値以上であれば、現時点までの評価値を引き続き保持する。
【０１４６】
参照画像メモリ制御部１は、上記のようにして、最適動きベクトル生成部７の最小評価値保持部１４が累積結果の比較処理を実施すると、参照画像Ａの他にも、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に画像（参照画像になり得る画像）が存在するため、例えば、参照画像Ａより一画素分だけ右側にずれている８×８のブロックサイズの画像を参照画像（ｂ−２が左上端に位置している画像）として、探索領域Ａ内の画像から切り出すアドレスを生成する。ここでは、探索領域Ａ内の画像から切り出す参照画像をＡ’とする。
【０１４７】
ＰＥ７１及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４の動作は、探索領域Ａ内の画像から参照画像Ａ’が切り出された場合も、探索領域Ａ内の画像から参照画像Ａが切り出された場合と同様であるため説明を省略する。
参照画像メモリ制御部１は、ブロックＡの中心点ベクトルＡが指し示す位置（中心位置）の周辺に存在する全ての画像（参照画像になり得る画像）の切り出しが終了するまで、参照画像を一画素ずつずらして、探索領域内の画像から参照画像Ａ’の切り出しを行う。
ＰＥ７１及び最適動きベクトル生成部７の累積制御部１１〜最小評価値保持部１４は、探索領域内の画像から切り出された全ての参照画像Ａ’について、参照画像Ａの場合と同様の処理を実施する。
【０１４８】
最適動きベクトル生成部７のベクトル生成部１５は、最小評価値保持部１４が探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’について累積結果の比較処理を実施すると、その時点で最小評価値保持部１４に保持されている評価値（比較処理された中で、最も小さい累積結果）に対応する参照画像を特定する。
即ち、ベクトル生成部１５は、探索領域Ａ内の画像から切り出された全ての参照画像Ａ，Ａ’の中で、累積器１３の累積結果が最も小さくなる参照画像を特定する。
ベクトル生成部１５は、最小評価値保持部１４に保持されている評価値に対応する参照画像を特定すると、その参照画像に対応する動きベクトルを生成する。例えば、ブロックＡの左上端（ａ−１の左上端）から当該参照画像の左上端（ｂ−１の左上端）を指し示す動きベクトルＡを生成する。
【０１４９】
上記のようにして、最適動きベクトル生成部７が探索領域Ａ内で動きベクトルＡを生成すると、順次、探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成する。
探索領域Ｂで動きベクトルＢを生成する場合、参照画像Ｂのブロックサイズが８×８であるため、ＰＥ７１が入力画像ａ−９の部分領域Ｆ１，ａ−９の部分領域Ｆ２，ａ−９の部分領域Ｆ３，ａ−９の部分領域Ｆ４，ａ−９の部分領域Ｆ５，ａ−９の部分領域Ｆ６，ａ−９の部分領域Ｆ７，ａ−９の部分領域Ｆ８，ａ−９の部分領域Ｆ９，ａ−９の部分領域Ｆ１０，ａ−９の部分領域Ｆ１１，ａ−９の部分領域Ｆ１２，ａ−９の部分領域Ｆ１３，ａ−９の部分領域Ｆ１４，ａ−９の部分領域Ｆ１５，ａ−９の部分領域Ｆ１６，ａ−１０の部分領域Ｆ１，ａ−１０の部分領域Ｆ２，ａ−１０の部分領域Ｆ３，ａ−１０の部分領域Ｆ４，ａ−１０の部分領域Ｆ５，ａ−１０の部分領域Ｆ６，ａ−１０の部分領域Ｆ７，ａ−１０の部分領域Ｆ８，ａ−１０の部分領域Ｆ９，ａ−１０の部分領域Ｆ１０，ａ−１０の部分領域Ｆ１１，ａ−１０の部分領域Ｆ１２，ａ−１０の部分領域Ｆ１３，ａ−１０の部分領域Ｆ１４，ａ−１０の部分領域Ｆ１５，ａ−１０の部分領域Ｆ１６，ａ−１３の部分領域Ｆ１，ａ−１３の部分領域Ｆ２，ａ−１３の部分領域Ｆ３，ａ−１３の部分領域Ｆ４，ａ−１３の部分領域Ｆ５，ａ−１３の部分領域Ｆ６，ａ−１３の部分領域Ｆ７，ａ−１３の部分領域Ｆ８，ａ−１３の部分領域Ｆ９，ａ−１３の部分領域Ｆ１０，ａ−１３の部分領域Ｆ１１，ａ−１３の部分領域Ｆ１２，ａ−１３の部分領域Ｆ１３，ａ−１３の部分領域Ｆ１４，ａ−１３の部分領域Ｆ１５，ａ−１３の部分領域Ｆ１６，ａ−１４の部分領域Ｆ１，ａ−１４の部分領域Ｆ２，ａ−１４の部分領域Ｆ３，ａ−１４の部分領域Ｆ４，ａ−１４の部分領域Ｆ５，ａ−１４の部分領域Ｆ６，ａ−１４の部分領域Ｆ７，ａ−１４の部分領域Ｆ８，ａ−１４の部分領域Ｆ９，ａ−１４の部分領域Ｆ１０，ａ−１４の部分領域Ｆ１１，ａ−１４の部分領域Ｆ１２，ａ−１４の部分領域Ｆ１３，ａ−１４の部分領域Ｆ１４，ａ−１４の部分領域Ｆ１５，ａ−１４の部分領域Ｆ１６を順番に取り込むとともに、参照画像ｂ−９の部分領域Ｆ１，ｂ−９の部分領域Ｆ２，ｂ−９の部分領域Ｆ３，ｂ−９の部分領域Ｆ４，ｂ−９の部分領域Ｆ５，ｂ−９の部分領域Ｆ６，ｂ−９の部分領域Ｆ７，ｂ−９の部分領域Ｆ８，ｂ−９の部分領域Ｆ９，ｂ−９の部分領域Ｆ１０，ｂ−９の部分領域Ｆ１１，ｂ−９の部分領域Ｆ１２，ｂ−９の部分領域Ｆ１３，ｂ−９の部分領域Ｆ１４，ｂ−９の部分領域Ｆ１５，ｂ−９の部分領域Ｆ１６，ｂ−１０の部分領域Ｆ１，ｂ−１０の部分領域Ｆ２，ｂ−１０の部分領域Ｆ３，ｂ−１０の部分領域Ｆ４，ｂ−１０の部分領域Ｆ５，ｂ−１０の部分領域Ｆ６，ｂ−１０の部分領域Ｆ７，ｂ−１０の部分領域Ｆ８，ｂ−１０の部分領域Ｆ９，ｂ−１０の部分領域Ｆ１０，ｂ−１０の部分領域Ｆ１１，ｂ−１０の部分領域Ｆ１２，ｂ−１０の部分領域Ｆ１３，ｂ−１０の部分領域Ｆ１４，ｂ−１０の部分領域Ｆ１５，ｂ−１０の部分領域Ｆ１６，ｂ−１３の部分領域Ｆ１，ｂ−１３の部分領域Ｆ２，ｂ−１３の部分領域Ｆ３，ｂ−１３の部分領域Ｆ４，ｂ−１３の部分領域Ｆ５，ｂ−１３の部分領域Ｆ６，ｂ−１３の部分領域Ｆ７，ｂ−１３の部分領域Ｆ８，ｂ−１３の部分領域Ｆ９，ｂ−１３の部分領域Ｆ１０，ｂ−１３の部分領域Ｆ１１，���−１３の部分領域Ｆ１２，ｂ−１３の部分領域Ｆ１３，ｂ−１３の部分領域Ｆ１４，ｂ−１３の部分領域Ｆ１５，ｂ−１３の部分領域Ｆ１６，ｂ−１４の部分領域Ｆ１，ｂ−１４の部分領域Ｆ２，ｂ−１４の部分領域Ｆ３，ｂ−１４の部分領域Ｆ４，ｂ−１４の部分領域Ｆ５，ｂ−１４の部分領域Ｆ６，ｂ−１４の部分領域Ｆ７，ｂ−１４の部分領域Ｆ８，ｂ−１４の部分領域Ｆ９，ｂ−１４の部分領域Ｆ１０，ｂ−１４の部分領域Ｆ１１，ｂ−１４の部分領域Ｆ１２，ｂ−１４の部分領域Ｆ１３，ｂ−１４の部分領域Ｆ１４，ｂ−１４の部分領域Ｆ１５，ｂ−１４の部分領域Ｆ１６を順番に取り込んで、８×８個の画素分の差分絶対値を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＢを生成する。
【０１５０】
また、探索領域Ｃで動きベクトルＣを生成する場合、ＰＥ７１が入力画像ａ−３の部分領域Ｆ１，ａ−３の部分領域Ｆ２，ａ−３の部分領域Ｆ３，ａ−３の部分領域Ｆ４，ａ−３の部分領域Ｆ５，ａ−３の部分領域Ｆ６，ａ−３の部分領域Ｆ７，ａ−３の部分領域Ｆ８，ａ−３の部分領域Ｆ９，ａ−３の部分領域Ｆ１０，ａ−３の部分領域Ｆ１１，ａ−３の部分領域Ｆ１２，ａ−３の部分領域Ｆ１３，ａ−３の部分領域Ｆ１４，ａ−３の部分領域Ｆ１５，ａ−３の部分領域Ｆ１６，ａ−４の部分領域Ｆ１，ａ−４の部分領域Ｆ２，ａ−４の部分領域Ｆ３，ａ−４の部分領域Ｆ４，ａ−４の部分領域Ｆ５，ａ−４の部分領域Ｆ６，ａ−４の部分領域Ｆ７，ａ−４の部分領域Ｆ８，ａ−４の部分領域Ｆ９，ａ−４の部分領域Ｆ１０，ａ−４の部分領域Ｆ１１，ａ−４の部分領域Ｆ１２，ａ−４の部分領域Ｆ１３，ａ−４の部分領域Ｆ１４，ａ−４の部分領域Ｆ１５，ａ−４の部分領域Ｆ１６，ａ−７の部分領域Ｆ１，ａ−７の部分領域Ｆ２，ａ−７の部分領域Ｆ３，ａ−７の部分領域Ｆ４，ａ−７の部分領域Ｆ５，ａ−７の部分領域Ｆ６，ａ−７の部分領域Ｆ７，ａ−７の部分領域Ｆ８，ａ−７の部分領域Ｆ９，ａ−７の部分領域Ｆ１０，ａ−７の部分領域Ｆ１１，ａ−７の部分領域Ｆ１２，ａ−７の部分領域Ｆ１３，ａ−７の部分領域Ｆ１４，ａ−７の部分領域Ｆ１５，ａ−７の部分領域Ｆ１６，ａ−８の部分領域Ｆ１，ａ−８の部分領域Ｆ２，ａ−８の部分領域Ｆ３，ａ−８の部分領域Ｆ４，ａ−８の部分領域Ｆ５，ａ−８の部分領域Ｆ６，ａ−８の部分領域Ｆ７，ａ−８の部分領域Ｆ８，ａ−８の部分領域Ｆ９，ａ−８の部分領域Ｆ１０，ａ−８の部分領域Ｆ１１，ａ−８の部分領域Ｆ１２，ａ−８の部分領域Ｆ１３，ａ−８の部分領域Ｆ１４，ａ−８の部分領域Ｆ１５，ａ−８の部分領域Ｆ１６を順番に取り込むとともに、参照画像ｂ−３の部分領域Ｆ１，ｂ−３の部分領域Ｆ２，ｂ−３の部分領域Ｆ３，ｂ−３の部分領域Ｆ４，ｂ−３の部分領域Ｆ５，ｂ−３の部分領域Ｆ６，ｂ−３の部分領域Ｆ７，ｂ−３の部分領域Ｆ８，ｂ−３の部分領域Ｆ９，ｂ−３の部分領域Ｆ１０，ｂ−３の部分領域Ｆ１１，ｂ−３の部分領域Ｆ１２，ｂ−３の部分領域Ｆ１３，ｂ−３の部分領域Ｆ１４，ｂ−３の部分領域Ｆ１５，ｂ−３の部分領域Ｆ１６，ｂ−４の部分領域Ｆ１，ｂ−４の部分領域Ｆ２，ｂ−４の部分領域Ｆ３，ｂ−４の部分領域Ｆ４，ｂ−４の部分領域Ｆ５，ｂ−４の部分領域Ｆ６，ｂ−４の部分領域Ｆ７，ｂ−４の部分領域Ｆ８，ｂ−４の部分領域Ｆ９，ｂ−４の部分領域Ｆ１０，ｂ−４の部分領域Ｆ１１，ｂ−４の部分領域Ｆ１２，ｂ−４の部分領域Ｆ１３，ｂ−４の部分領域Ｆ１４，ｂ−４の部分領域Ｆ１５，ｂ−４の部分領域Ｆ１６，ｂ−７の部分領域Ｆ１，ｂ−７の部分領域Ｆ２，ｂ−７の部分領域Ｆ３，ｂ−７の部分領域Ｆ４，ｂ−７の部分領域Ｆ５，ｂ−７の部分領域Ｆ６，ｂ−７の部分領域Ｆ７，ｂ−７の部分領域Ｆ８，ｂ−７の部分領域Ｆ９，ｂ−７の部分領域Ｆ１０，ｂ−７の部分領域Ｆ１１，ｂ−７の部分領域Ｆ１２，ｂ−７の部分領域Ｆ１３，ｂ−７の部分領域Ｆ１４，ｂ−７の部分領域Ｆ１５，ｂ−７の部分領域Ｆ１６，ｂ−８の部分領域Ｆ１，ｂ−８の部分領域Ｆ２，ｂ−８の部分領域Ｆ３，ｂ−８の部分領域Ｆ４，ｂ−８の部分領域Ｆ５，ｂ−８の部分領域Ｆ６，ｂ−８の部分領域Ｆ７，ｂ−８の部分領域Ｆ８，ｂ−８の部分領域Ｆ９，ｂ−８の部分領域Ｆ１０，ｂ−８の部分領域Ｆ１１，ｂ−８の部分領域Ｆ１２，ｂ−８の部分領域Ｆ１３，ｂ−８の部分領域Ｆ１４，ｂ−８の部分領域Ｆ１５，ｂ−８の部分領域Ｆ１６を順番に取り込んで、８×８個の画素分の差分絶対値を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＣを生成する。
【０１５１】
上記のようにして、最適動きベクトル生成部７が探索領域Ｂ，Ｃ内で動きベクトルＢ，Ｃを生成すると、探索領域Ｄ内で動きベクトルＤを生成する。
探索領域Ｄで動きベクトルＤを生成する場合、参照画像Ｄのブロックサイズが４×８であるため、ＰＥ７１が入力画像ａ−１１の部分領域Ｆ１，ａ−１１の部分領域Ｆ２，ａ−１１の部分領域Ｆ３，ａ−１１の部分領域Ｆ４，ａ−１１の部分領域Ｆ５，ａ−１１の部分領域Ｆ６，ａ−１１の部分領域Ｆ７，ａ−１１の部分領域Ｆ８，ａ−１１の部分領域Ｆ９，ａ−１１の部分領域Ｆ１０，ａ−１１の部分領域Ｆ１１，ａ−１１の部分領域Ｆ１２，ａ−１１の部分領域Ｆ１３，ａ−１１の部分領域Ｆ１４，ａ−１１の部分領域Ｆ１５，ａ−１１の部分領域Ｆ１６，ａ−１５の部分領域Ｆ１，ａ−１５の部分領域Ｆ２，ａ−１５の部分領域Ｆ３，ａ−１５の部分領域Ｆ４，ａ−１５の部分領域Ｆ５，ａ−１５の部分領域Ｆ６，ａ−１５の部分領域Ｆ７，ａ−１５の部分領域Ｆ８，ａ−１５の部分領域Ｆ９，ａ−１５の部分領域Ｆ１０，ａ−１５の部分領域Ｆ１１，ａ−１５の部分領域Ｆ１２，ａ−１５の部分領域Ｆ１３，ａ−１５の部分領域Ｆ１４，ａ−１５の部分領域Ｆ１５，ａ−１５の部分領域Ｆ１６を順番に取り込むとともに、参照画像ｂ−１１の部分領域Ｆ１，ｂ−１１の部分領域Ｆ２，ｂ−１１の部分領域Ｆ３，ｂ−１１の部分領域Ｆ４，ｂ−１１の部分領域Ｆ５，ｂ−１１の部分領域Ｆ６，ｂ−１１の部分領域Ｆ７，ｂ−１１の部分領域Ｆ８，ｂ−１１の部分領域Ｆ９，ｂ−１１の部分領域Ｆ１０，ｂ−１１の部分領域Ｆ１１，ｂ−１１の部分領域Ｆ１２，ｂ−１１の部分領域Ｆ１３，ｂ−１１の部分領域Ｆ１４，ｂ−１１の部分領域Ｆ１５，ｂ−１１の部分領域Ｆ１６，ｂ−１５の部分領域Ｆ１，ｂ−１５の部分領域Ｆ２，ｂ−１５の部分領域Ｆ３，ｂ−１５の部分領域Ｆ４，ｂ−１５の部分領域Ｆ５，ｂ−１５の部分領域Ｆ６，ｂ−１５の部分領域Ｆ７，ｂ−１５の部分領域Ｆ８，ｂ−１５の部分領域Ｆ９，ｂ−１５の部分領域Ｆ１０，ｂ−１５の部分領域Ｆ１１，ｂ−１５の部分領域Ｆ１２，ｂ−１５の部分領域Ｆ１３，ｂ−１５の部分領域Ｆ１４，ｂ−１５の部分領域Ｆ１５，ｂ−１５の部分領域Ｆ１６を順番に取り込んで、４×８個の画素分の差分絶対値を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＤを生成する。
【０１５２】
上記のようにして、最適動きベクトル生成部７が探索領域Ｄ内で動きベクトルＤを生成すると、探索領域Ｅ，Ｆ内で動きベクトルＥ，Ｆを生成する。
探索領域Ｅで動きベクトルＥを生成する場合、参照画像Ｅのブロックサイズが４×４であるため、ＰＥ７１が入力画像ａ−１２の部分領域Ｆ１，ａ−１２の部分領域Ｆ２，ａ−１２の部分領域Ｆ３，ａ−１２の部分領域Ｆ４，ａ−１２の部分領域Ｆ５，ａ−１２の部分領域Ｆ６，ａ−１２の部分領域Ｆ７，ａ−１２の部分領域Ｆ８，ａ−１２の部分領域Ｆ９，ａ−１２の部分領域Ｆ１０，ａ−１２の部分領域Ｆ１１，ａ−１２の部分領域Ｆ１２，ａ−１２の部分領域Ｆ１３，ａ−１２の部分領域Ｆ１４，ａ−１２の部分領域Ｆ１５，ａ−１２の部分領域Ｆ１６を順番に取り込むとともに、参照画像ｂ−１２の部分領域Ｆ１，ｂ−１２の部分領域Ｆ２，ｂ−１２の部分領域Ｆ３，ｂ−１２の部分領域Ｆ４，ｂ−１２の部分領域Ｆ５，ｂ−１２の部分領域Ｆ６，ｂ−１２の部分領域Ｆ７，ｂ−１２の部分領域Ｆ８，ｂ−１２の部分領域Ｆ９，ｂ−１２の部分領域Ｆ１０，ｂ−１２の部分領域Ｆ１１，ｂ−１２の部分領域Ｆ１２，ｂ−１２の部分領域Ｆ１３，ｂ−１２の部分領域Ｆ１４，ｂ−１２の部分領域Ｆ１５，ｂ−１２の部分領域Ｆ１６を順番に取り込んで、４×４個の画素分の差分絶対値を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＥを生成する。
【０１５３】
また、探索領域Ｆで動きベクトルＦを生成する場合、ＰＥ７１が入力画像ａ−１６の部分領域Ｆ１，ａ−１６の部分領域Ｆ２，ａ−１６の部分領域Ｆ３，ａ−１６の部分領域Ｆ４，ａ−１６の部分領域Ｆ５，ａ−１６の部分領域Ｆ６，ａ−１６の部分領域Ｆ７，ａ−１６の部分領域Ｆ８，ａ−１６の部分領域Ｆ９，ａ−１６の部分領域Ｆ１０，ａ−１６の部分領域Ｆ１１，ａ−１６の部分領域Ｆ１２，ａ−１６の部分領域Ｆ１３，ａ−１６の部分領域Ｆ１４，ａ−１６の部分領域Ｆ１５，ａ−１６の部分領域Ｆ１６を順番に取り込むとともに、参照画像ｂ−１６の部分領域Ｆ１，ｂ−１６の部分領域Ｆ２，ｂ−１６の部分領域Ｆ３，ｂ−１６の部分領域Ｆ４，ｂ−１６の部分領域Ｆ５，ｂ−１６の部分領域Ｆ６，ｂ−１６の部分領域Ｆ７，ｂ−１６の部分領域Ｆ８，ｂ−１６の部分領域Ｆ９，ｂ−１６の部分領域Ｆ１０，ｂ−１６の部分領域Ｆ１１，ｂ−１６の部分領域Ｆ１２，ｂ−１６の部分領域Ｆ１３，ｂ−１６の部分領域Ｆ１４，ｂ−１６の部分領域Ｆ１５，ｂ−１６の部分領域Ｆ１６を順番に取り込んで、４×４個の画素分の差分絶対値を算出することにより、最適動きベクトル生成部７が最小の評価値を求めて、動きベクトルＦを生成する。
【０１５４】
以上で明らかなように、この実施の形態７の場合も、上記実施の形態１と同様に、予め複数のハ−ドウェアを用意することなく、複数のブロックサイズの探索処理を実施することができる効果を奏する。
また、この実施の形態７によれば、入力画像のブロックサイズが可変ブロックサイズより大きい場合でも、動きベクトルを探索することができる効果を奏する。
【０１５５】
なお、この実施の形態７では、可変ブロックサイズが８×８、４×８、４×４であるものについて示したが、可変ブロックサイズが１６×１６、８×１６、１６×８、８×４である場合も、同様にして、動きベクトルを探索することができる。
また、上記実施の形態１〜７で挙げていないｍ×ｎの可変ブロックサイズについても、同様にして、動きベクトルを探索することができる。
【図面の簡単な説明】
【０１５６】
【図１】この発明の実施の形態１による動き補償予測装置を示す構成図である。
【図２】この発明の実施の形態１による動き補償予測装置の最適動きベクトル生成部を示す構成図である。
【図３】１６×１６の可変ブロックサイズで動きベクトルの探索処理を実施する場合の説明図である。
【図４】８×１６の可変ブロックサイズで動きベクトルの探索処理を実施する場合の説明図である。
【図５】８×８の可変ブロックサイズ、４×８の可変ブロックサイズ、４×４の可変ブロックサイズのそれぞれを用いて、動きベクトルを探索する場合の説明図である。
【図６】この発明の実施の形態２による動き補償予測装置を示す構成図である。
【図７】この発明の実施の形態３による動き補償予測装置を示す構成図である。
【図８】この発明の実施の形態４による動き補償予測装置を示す構成図である。
【図９】この発明の実施の形態５による動き補償予測装置を示す構成図である。
【図１０】この発明の実施の形態６による動き補償予測装置を示す構成図である。
【図１１】この発明の実施の形態７による動き補償予測装置を示す構成図である。
【図１２】４分割された部分領域を示す説明図である。
【図１３】８分割された部分領域を示す説明図である。
【図１４】８分割された部分領域を示す説明図である。
【図１５】１６分割された部分領域を示す説明図である。
【符号の説明】
【０１５７】
１  参照画像メモリ制御部（参照画像切出し手段）、２  参照画像メモリ（参照画像切出し手段）、３  入力画像メモリ制御部（入力画像分割手段）、４  入力画像メモリ（入力画像分割手段）、５  総和算出部（総和算出手段）、５−１〜５−１６  ＰＥ、６  加算器（総和算出手段）、７  最適動きベクトル生成部（総和算出手段、動きベクトル生成手段）、１１  累積制御部、１２  セレクタ、１３  累積器、１４  最小評価値保持部、１５  ベクトル生成部、２１  総和算出部（総和算出手段）、２１−１〜２１−８  ＰＥ、３１  総和算出部（総和算出手段）、３１−１〜３１−８  ＰＥ、４１  総和算出部（総和算出手段）、４１−１〜４１−４  ＰＥ、５１  総和算出部（総和算出手段）、５１−１〜５１−２  ＰＥ、６１  総和算出部（総和算出手段）、６１−１〜６１−２  ＰＥ、７１  ＰＥ（総和算出手段）。
【図１】
2007156514.tif 000003
【図２】
2007156514.tif 000004
【図３】
2007156514.tif 000005
【図４】
2007156514.tif 000006
【図５】
2007156514.tif 000007
【図６】
2007156514.tif 000008
【図７】
2007156514.tif 000009
【図８】
2007156514.tif 000010
【図９】
2007156514.tif 000011
【図１０】
2007156514.tif 000012
【図１１】
2007156514.tif 000013
【図１２】
2007156514.tif 000014
【図１３】
2007156514.tif 000015
【図１４】
2007156514.tif 000016
【図１５】
2007156514.tif 000017