(57)【要約】  【課題】  ＩＳＯ／ＩＥＣ１４４９６−１０に規定されている演算を行う装置、方法及びプログラムよりも少ない回路構成・サイクル数でｃｏ−ｌｏｃａｔｅｄマクロブロックアドレスを求めることができる画像処理装置、画像処理方法及びプログラムを提供する。  【解決手段】  ２次元マクロブロック位置生成回路４３３が、カレントマクロブロックアドレスＣｕｒｒＭｂＡｄｄｒを基にカレントマクロブロックの２次元マクロブロック位置（ＭＢｘ、ＭＢｙ）を生成し、２次元マクロブロック位置生成回路４３３が生成したＭＢｙを基にｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４がＭＢｙｃｏｌを算出し、２次元マクロブロック位置生成回路４３３が生成したＭＢｘとｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４が算出したＭＢｙｃｏｌとを基にマクロブロックアドレス変換回路４３５がｃｏ−ｌｏｃａｔｅｄマクロブロックアドレスｍｂＡｄｄｒＣｏｌに変換する。【選択図】  図７
2006352238.tif 000002
【特許請求の範囲】
【請求項１】
２次元画像領域内に規定された複数のブロックの各々の動きベクトルを生成し動き補償を行う画像処理装置であって、
参照画像データ内のマクロブロックアドレスを、処理対照画像データ内のマクロブロックの２次元位置情報を基に算出する演算手段と、
前記処理対象画像データ内のマクロブロックアドレスと、前記演算手段が算出した前記参照画像データ内の前記マクロブロックアドレスとを使用して、前記処理対象画像データの動きベクトルを算出する動きベクトル算出手段と
を有する画像処理装置。
【請求項２】
前記処理対象画像データ内のマクロブロックの前記２次元位置情報は、前記処理対象画像データ内のマクロブロックの水平マクロブロック位置と垂直マクロブロック位置とからなる
請求項１に記載の画像処理装置。
【請求項３】
前記演算手段は、
前記処理対象データ内のマクロブロックの前記２次元位置情報を生成する２次元マクロブロック位置生成手段と、
前記２次元マクロブロック位置生成手段が生成した前記処理対象データ内のマクロブロックの前記２次元位置情報を基に、前記参照ブロック内のマクロブロックの２次元位置情報を算出する参照マクロブロック位置算出手段と、
前記参照マクロブロック位置算出手段が算出した前記参照ブロック内のマクロブロックの前記２次元位置情報を、前記参照ブロック内のマクロブロックアドレスに変換する参照マクロブロックアドレス変換手段と
を有する
請求項１に記載の画像処理装置。
【請求項４】
前記参照画像データ内のマクロブロックの前記水平マクロブロック位置は、前記処理対象画像データ内のマクロブロックの前記水平マクロブロック位置と等しい
請求項３に記載の画像処理装置。
【請求項５】
前記処理対象画像データと前記参照先画像データのピクチャ構造の組み合わせによって、前記演算手段に入力する値を切り替える入力値切り替え手段
を更に有する請求項３に記載の画像処理装置。
【請求項６】
２次元画像領域内に規定された複数のブロックの各々の動きベクトルを生成し動き補償を行う画像処理方法であって、
参照画像データ内のマクロブロックアドレスを、処理対照画像データ内のマクロブロックの２次元位置情報を基に算出する第１の工程と、
前記処理対象画像データ内のマクロブロックアドレスと、前記第１の工程において算出された前記参照画像データ内の前記マクロブロックアドレスとを使用して、前記処理対象画像データの動きベクトルを算出する第２の工程と
を有する画像処理方法。
【請求項７】
前記第１の工程は、
前記処理対象データ内のマクロブロックの前記２次元位置情報を生成する第３の工程と、
前記第３の工程において生成された前記処理対象データ内のマクロブロックの前記２次元位置情報を基に、前記参照ブロック内のマクロブロックの２次元位置情報を算出する第４の工程と、
前記第４の工程において算出された前記参照ブロック内のマクロブロックの前記２次元位置情報を基に、前記参照ブロック内のマクロブロックアドレスに変換する第５の工程と
を有する
請求項６に記載の画像処理方法。
【請求項８】
２次元画像領域内に規定された複数のブロックの各々の動きベクトルを生成し動き補償を行うコンピュータが実行するプログラムであって、
参照画像データ内のマクロブロックアドレスを、処理対照画像データ内のマクロブロックの２次元位置情報を基に算出する第１の手順と、
前記処理対象画像データ内のマクロブロックアドレスと、前記第１の手順において算出された前記参照画像データ内の前記マクロブロックアドレスとを使用して、前記処理対象画像データの動きベクトルを算出する第２の手順と
を前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを符号化するために用いられる画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、画像データをデジタルデータとして取り扱い、圧縮する技術が、情報の通信、放送、蓄積などの目的で重要になっている。こうした技術には、例えば、ＭＰＥＧ（Moving Picture Experts Group）等の規格が挙げられる。
更に、圧縮効率を上げた技術として、Ｈ．２６４／ＡＶＣ（Advanced Video Coding）と呼ばれる規格が提唱され、実用化されている。
【０００３】
ＭＰＥＧ２やＭＰＥＧ４のＢピクチャは双方向予測ピクチャ（Bi-directional predictive picture）のことであり、原画像データから見て前方１枚と後方１枚の参照画像データを参照して、予測を行う。しかし、Ｈ．２６４／ＡＶＣのＢピクチャは、双予測ピクチャ（Bi-predictive picture）のことであり、Ｈ．２６４／ＡＶＣでは任意の２枚の参照画像データを参照して予測を行う。
Ｈ．２６４／ＡＶＣのＢピクチャによる符号化では、画面内予測（イントラ予測）、Ｌ０予測（List 0 Prediction：主として前方予測に用いる予測）、Ｌ１予測（List 1 Prediction：主として後方予測に用いる予測）、双予測（Ｌ０とＬ１の２つの動き情報から、２つの参照画像データの平均値を用いる予測）、ダイレクトモードの５つの符号化モードを利用可能である。
【０００４】
ダイレクトモードは、動き情報を符号化済みブロックの動き情報から予測生成する符号化モードであり、圧縮効率がよい符号化モードである。
ＭＰＥＧ４においてもダイレクトモードは存在し、図１のように、Ｂ−ピクチャのカレントマクロブロック（原画像データが含むマクロブロック）とＩ・ＰまたはＳ−ピクチャ中の空間的な位置が一致するマクロブロック（ｃｏ−ｌｏｃａｔｅｄマクロブロック）の動きベクトルを利用する。ＭＰＥＧ４では、カレントマクロブロックの属するピクチャとｃｏ−ｌｏｃａｔｅｄマクロブロックの属するピクチャ（参照画像データ）の構造は同一であり、そのためｃｏ−ｌｏｃａｔｅｄマクロブロックのアドレス値はカレントマクロブロックのアドレス値と同一である。
【０００５】
しかし、Ｈ．２６４／ＡＶＣにおいては、図２に示すＭＢ−ＡＦＦ（Macroblock-Adaptive Frame-Field Coding：マクロブロック適応型フレーム／フィールド符号化）モードのように、カレントマクロブロックの属するピクチャの構造とｃｏ−ｌｏｃａｔｅｄマクロブロックの属するピクチャの構造が異なる場合が存在するので、ｃｏ−ｌｏｃａｔｅｄマクロブロックのアドレス値の算出方法が複雑になっている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したｃｏ−ｌｏｃａｔｅｄマクロブロックアドレスの算出方法は、ＩＳＯ／ＩＥＣ１４４９６−１０で規定されており、図３に示すように、カレントピクチャ（原画像データ）とｃｏ−ｌｏｃａｔｅｄマクロブロックを含むピクチャ（参照画像データ）のピクチャ構造の組み合わせによる場合分けと、除算や％演算（剰余演算）を含む複雑な演算が必要になる。
結果として、図４に示すように複雑かつ大規模な装置が必要になり、またサイクル数が増え符号化に時間がかかるといった不利益があった。図４において、ＰｉｃＣｏｄｉｎｇＳｔｒｕｃｔ（ＣｕｒｒＰｉｃ）はカレントピクチャ（原画像データ）の構造を示す値、ＰｉｃＣｏｄｉｎｇＳｔｒｕｃｔ（ｃｏｌＰｉｃ）はｃｏ−ｌｏｃａｔｅｄマクロブロックを有するピクチャ（参照画像データ）の構造を示す値、ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇはＨ．２６４／ＡＶＣのシンタックス要素であり、当該マクロブロックペア（この場合カレントマクロブロックペア）がフィールドモードである時１となり、フレームモードである時０となるフラグ、ｆｉｅｌｄＤｅｃｏｄｉｎｇＦｌａｇは、ｃｏ−ｌｏｃａｔｅｄマクロブロックがフィールドモードである時１となり、フレームモードである時０となるフラグである。
【０００７】
本発明は、上述した不利益を解消するため、２次元画像領域内に規定された複数のブロックの各々の動きベクトルを生成し動き補償を行う画像処理装置、画像処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の目的を達成するため、第１の発明の画像処理装置は、２次元画像領域内に規定された複数のブロックの各々の動きベクトルを生成し動き補償を行う画像処理装置であって、参照画像データ内のマクロブロックアドレスを、処理対照画像データ内のマクロブロックの２次元位置情報を基に算出する演算手段と、前記処理対象画像データ内のマクロブロックアドレスと、前記演算手段が算出した前記参照画像データ内の前記マクロブロックアドレスとを使用して、前記処理対象画像データの動きベクトルを算出する動きベクトル算出手段とを有する。
【０００９】
好適には、本発明の画像処理装置における前記処理対象画像データ内のマクロブロックの前記２次元位置情報は、前記処理対象画像データ内のマクロブロックの水平マクロブロック位置と垂直マクロブロック位置とからなる。
【００１０】
好適には、本発明の画像処理装置における前記演算手段は、前記処理対象データ内のマクロブロックの前記２次元位置情報を生成する２次元マクロブロック位置生成手段と、前記２次元マクロブロック位置生成手段が生成した前記処理対象データ内のマクロブロックの前記２次元位置情報を基に、前記参照ブロック内のマクロブロックの２次元位置情報を算出する参照マクロブロック位置算出手段と、前記参照マクロブロック位置算出手段が算出した前記参照ブロック内のマクロブロックの前記２次元位置情報を、前記参照ブロック内のマクロブロックアドレスに変換する参照マクロブロックアドレス変換手段とを有する。
【００１１】
更に好適には、本発明の画像処理装置における前記参照画像データ内のマクロブロックの前記水平マクロブロック位置は、前記処理対象画像データ内のマクロブロックの前記水平マクロブロック位置と等しい。
【００１２】
更に好適には、本発明の画像処理装置は、前記処理対象画像データと前記参照先画像データのピクチャ構造の組み合わせによって、前記演算手段に入力する値を切り替える入力値切り替え手段を更に有する。
【００１３】
第２の発明の画像処理方法は、２次元画像領域内に規定された複数のブロックの各々の動きベクトルを生成し動き補償を行う画像処理方法であって、参照画像データ内のマクロブロックアドレスを、処理対照画像データ内のマクロブロックの２次元位置情報を基に算出する第１の工程と、前記処理対象画像データ内のマクロブロックアドレスと、前記第１の工程において算出された前記参照画像データ内の前記マクロブロックアドレスとを使用して、前記処理対象画像データの動きベクトルを算出する第２の工程とを有する。
【００１４】
好適には、本発明の画像処理方法における前記第１の工程は、前記処理対象データ内のマクロブロックの前記２次元位置情報を生成する第３の工程と、前記第３の工程において生成された前記処理対象データ内のマクロブロックの前記２次元位置情報を基に、前記参照ブロック内のマクロブロックの２次元位置情報を算出する第４の工程と、前記第４の工程において算出された前記参照ブロック内のマクロブロックの前記２次元位置情報を基に、前記参照ブロック内のマクロブロックアドレスに変換する第５の工程とを有する。
【００１５】
第３の発明のプログラムは、２次元画像領域内に規定された複数のブロックの各々の動きベクトルを生成し動き補償を行うコンピュータが実行するプログラムであって、参照画像データ内のマクロブロックアドレスを、処理対照画像データ内のマクロブロックの２次元位置情報を基に算出する第１の手順と、前記処理対象画像データ内のマクロブロックアドレスと、前記第１の手順において算出された前記参照画像データ内の前記マクロブロックアドレスとを使用して、前記処理対象画像データの動きベクトルを算出する第２の手順を前記コンピュータに実行させる。
【発明の効果】
【００１６】
本発明によれば、ＩＳＯ／ＩＥＣ１４４９６−１０に規定されている演算を行う装置、方法及びプログラムよりも少ない回路構成・サイクル数でｃｏ−ｌｏｃａｔｅｄマクロブロックアドレスを求めることができる画像処理装置、画像処理方法及びプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施形態の画像処理装置、画像処理方法及びプログラムが適用される通信システム１について説明する。
なお、本実施形態におけるピクチャは、１水平列及び１垂直列あたりのマクロブロック数が２５５以内のピクチャを想定している。
【００１８】
なお、本実施形態のマクロブロックは本発明のブロック及びマクロブロックに、本実施形態の動きベクトルＭＶは本発明の動きベクトルに、本実施形態の参照画像データは本発明の参照画像データに、本実施形態の原画像データは本発明の処理対象画像データに、本実施形態のｃｏ−ｌｏｃａｔｅｄマクロブロックは本発明の参照画像データ内のマクロブロックに、本実施形態のカレントマクロブロックは本発明の処理対象画像データ内のマクロブロックに、本実施形態の２次元マクロブロック位置は本発明の２次元位置情報に、本実施形態の水平マクロブロック位置は本発明の水平マクロブロック位置に、本実施形態の垂直マクロブロック位置は本発明の垂直マクロブロック位置に、それぞれ対応している。
また、ｃｏ−ｌｏｃａｔｅｄマクロブロックアドレス算出回路４３２は本発明の演算手段に、本実施形態の動きベクトル生成回路４３６は本発明の動きベクトル算出手段に、本発明の２次元マクロブロック位置生成回路４３３は本発明の２次元マクロブロック位置生成手段に、本実施形態のｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４は本発明の参照マクロブロック位置算出手段に、本実施形態のマクロブロックアドレス変換回路４３５は本発明の参照マクロブロックアドレス変換手段に、それぞれ対応している。本実施形態のセレクタ４３４４、４３４５、４３５２及び４３５６は、本発明の入力値切り替え手段の一例である。
また、本実施形態のプログラムは本発明のプログラムに対応している。
また、本実施形態のステップＳＴ２１、ステップＳＴ２２及びステップＳＴ２３は、本発明の第１の工程の一例であり、本実施形態のステップＳＴ２４は本発明の第２の工程に、本実施形態のステップＳＴ２１は本発明の第３の工程に、本実施形態のステップＳＴ２２は本発明の第４の工程に、本実施形態のステップＳＴ２３は本発明の第５の工程に、それぞれ対応している。
【００１９】
図５は、本発明の実施形態に係わる通信システム１の概念図である。
図５に示すように、通信システム１は、送信側に設けられた符号化装置２と、受信側に設けられた復号装置３とを有する。
通信システム１では、送信側の符号化装置２において、離散コサイン変換やカルーネン・レーベ変換などの直交変換と動き補償によって圧縮したフレーム画像データ(ビットストリーム)を生成し、当該フレーム画像データを変調した後に、衛星放送波、ケーブルＴＶ網、電話回線網、携帯電話回線網等の伝送媒体を介して送信する。
受信側では、受信した画像信号を復調した後に、上記変調時の直交変換の逆変換と動き補償によって伸張したフレーム画像データを生成して利用する。
なお、上記伝送媒体は、光ディスク、磁気ディスク及び半導体メモリ等の記録媒体であってもよい。
復号装置３は、符号化装置２の符号化に対応した復号を行う。
【００２０】
図６は、図５に示す符号化装置２のブロック図である。
図６に示すように、符号化装置２は、例えば、Ａ／Ｄ変換回路２２、画面並べ替え回路２３、演算回路２４、直交変換回路２５、量子化回路２６、可逆符号化回路２７、バッファ２８、逆量子化回路２９、逆直交変換回路３０、フレームメモリ３１、レート制御回路３２、加算回路３３、デブロックフィルタ３４、イントラ予測回路４１、動き予測・補償回路４３及び選択回路４４を有する。
本実施形態は、動き予測・補償回路４３の処理に特徴を有している。
【００２１】
以下、符号化装置２の各構成要素について説明する。
Ａ／Ｄ変換回路２２は、入力されたアナログの輝度信号Ｙ、色差信号Ｐｂ、Ｐｒから構成される原画像信号をデジタルの画像信号Ｓ２２に変換し、これを画面並べ替え回路２３に出力する。
画面並べ替え回路２３は、Ａ／Ｄ変換回路２２から入力された原画像信号内のフレーム画像信号を、そのピクチャタイプＩ、Ｐ、ＢからなるＧＯＰ（Group of Pictures）構造に応じて、符号化する順番に並べ替えた原画像データ（フレーム画像データ）Ｓ２３を演算回路２４及び動き予測・補償回路４３に出力する。
【００２２】
演算回路２４は、原画像データＳ２３と、選択回路４４から入力された予測画像データＰＩとの差分を示す画像データＳ２４を生成し、これを直交変換回路２５に出力する。
直交変換回路２５は、画像データＳ２４に離散コサイン変換やカルーネン・レーベ変換等の直交変換を施して画像データ（例えばＤＣＴ係数信号）Ｓ２５を生成し、これを量子化回路２６に出力する。
量子化回路２６は、レート制御回路３２から入力された量子化スケールで、画像データＳ２５を量子化して変換係数Ｓ２６を生成し、これを可逆符号化回路２７及び逆量子化回路２９に出力する。
【００２３】
可逆符号化回路２７は、変換係数Ｓ２６を可変長符号化或いは算術符号化し、画像データＳ２７としてバッファ２８に格納する。
また、レート制御回路３２が、原画像データＳ２３と、バッファ２８から読み出した画像データＳ２７を基に、量子化回路２６における量子化レートを制御する。
【００２４】
バッファ２８に格納された画像データは、変調等された後に送信される。
逆量子化回路２９は、変換係数Ｓ２６を逆量子化した信号を生成し、画像データＳ２９として逆直交変換回路３０に出力する。
逆直交変換回路３０は、逆量子化回路２９から入力された画像データＳ２９に、直交変換回路２５における直交変換の逆変換を施して生成した画像データＳ３０を加算回路３３に出力する。
加算回路３３は、逆直交変換回路３０から入力された画像データＳ３０と、選択回路４４から入力された予測画像データＰＩとを加算して再構成画像データを生成し、これをデブロックフィルタ３４に出力する。
【００２５】
デブロックフィルタ３４は、加算回路３３から入力された再構成画像データのブロック歪みを除去した画像データを、参照画像データＲＥＦとしてフレームメモリ３１に書き込む。
なお、フレームメモリ３１には、例えば、動き予測・補償回路４３による動き予測・補償処理、ならびにイントラ予測回路４１におけるイントラ予測処理の対象となっている原画像データＳ２３の再構成画像データが、処理を終了したマクロブロックＭＢを単位として順に書き込まれる。
【００２６】
イントラ予測回路４１は、例えば、予め規定された４×４、１６×１６等の複数のサイズのブロックデータを単位として、イントラ予測符号化を行い、予測データＰＩと、原画像データＳ２３と予測データＰＩとの差分ＤＩＦとを選択回路４４に出力する。
【００２７】
動き予測・補償回路４３は、原画像データＳ２３内のカレントマクロブロックアドレスと、参照画像データ内のｃｏ-ｌｏｃａｔｅｄマクロブロックアドレスとを基に動きベクトルＭＶを生成し、動きベクトルＭＶを基に更に予測画像データＰＩと、原画像データＳ２３と予測データＰＩとの差分ＤＩＦとを生成し選択回路４４に出力する。
ｃｏ-ｌｏｃａｔｅｄマクロブロックアドレスはカレントマクロブロックアドレスを基に算出される。ｃｏ-ｌｏｃａｔｅｄマクロブロックアドレスの算出方法については後述する。
選択回路４４は、イントラ予測回路４１及び動き予測・補償回路４３から出力された差分ＤＩＦを比較し、イントラ予測回路４１から出力された差分ＤＩＦの方が小さいと判断した場合はイントラ予測回路４１の出力した予測データＰＩを、動き予測・補償回路４３から出力された差分ＤＩＦの方が小さいと判断した場合は動き予測・補償回路４３の出力した予測データＰＩを選択して演算回路２４に出力する。
【００２８】
以下、動き予測・補償回路４３が行うｃｏ-ｌｏｃａｔｅｄマクロブロックアドレスの算出方法の一例について説明する。
動き予測・補償回路４３は、動きベクトルＭＶを生成するために、ｃｏ−ｌｏｃａｔｅｄマクロブロックの位置情報を算出する。
図７は、動き予測・補償回路４３のブロック図である。
図７のように、動き予測・補償回路４３は、例えば、ＣＰＵ４３１、ｃｏ−ｌｏｃａｔｅｄマクロブロックアドレス算出回路４３２、動きベクトル生成回路４３６及びメモリ４３７からなる。
【００２９】
ＣＰＵ４３１は、動き予測・補償回路４３の各構成要素の動作を統括する。
ｃｏ−ｌｏｃａｔｅｄマクロブロックアドレス算出回路４３２は、例えば、２次元マクロブロック位置生成回路４３３、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４、マクロブロックアドレス変換回路４３５からなり、ｃｏ−ｌｏｃａｔｅｄマクロブロックアドレスを算出する。
２次元マクロブロック位置生成回路４３３は、処理対象となる原画像データ内のマクロブロックのアドレス値を基に、図８（Ｃ）のように、水平マクロブロック位置と垂直マクロブロック位置とを生成する。
【００３０】
図８は、マクロブロックアドレスｍｂＡｄｄｒと２次元のマクロブロック位置情報（ＭＢｘ、ＭＢｙ）との関係を示す図である。
本実施形態では、図８（Ａ）、（Ｂ）のように、１つのブロックに対し１つの値を割り当ててマクロブロックアドレスとしている。
図８（Ｂ）は、ＭＢＡＦＦ（Macroblock-Adaptive Frame-Field Coding：マクロブロック適応型フレーム／フィールド符号化）モードにおけるマクロブロックアドレスを表している。ＭＢＡＦＦとは、Ｈ．２６４／ＡＶＣに特有の符号化モードであり、上下２つのマクロブロック（マクロブロックペア）を定義し、それぞれのマクロブロックに対して符号化を行うモードである。
これに対し、２次元のマクロブロック位置は、図８（Ｃ）のように、座標のような形で各ブロックの位置を表す。
以下、２次元マクロブロック位置を（ＭＢｘ［７：０］、ＭＢｙ［７：０］）のように表す。ＭＢｘ［７：０］は水平マクロブロック位置、ＭＢｙ［７：０］は垂直マクロブロック位置である。
【００３１】
以下、２次元マクロブロック位置の算出方法を説明する。
図９、図１０は、２次元マクロブロック位置算出アルゴリズムを示す図である。図９がＭＢｘ［７：０］の算出アルゴリズムを、図１０がＭＢｙ［７：０］の算出アルゴリズムを示している。
ｐｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１は、Ｈ．２６４／ＡＶＣビットストリームに含まれるＳＰＳ（Sequence Parameter Set：シーケンスパラメータセット）に含まれるパラメータで、水平方向のマクロブロックの数を表している。
また、ＭＢｘ＋＋、ＭＢｙ＋＋は後置増分演算を、ＭＢｙ−−は後置減分演算を意味している。
以下、２次元マクロブロック位置生成回路４３３の動作例について説明する。
ＭＢｘ［７：０］は、図９のように、例えば、以下の工程で求める。
【００３２】
ステップＳＴ１：
２次元マクロブロック位置生成回路４３３は、ＭＢＡＦＦモードであるか否かを判断し、ＭＢＡＦＦモードである場合ステップＳＴ２に、ＭＢＡＦＦモードではない場合ステップＳＴ３に進む。
ＭＢＡＦＦモードであるか否かは、ｍｂ_ａｄａｐｔｉｖｅ＿ｆｒａｍｅ＿ｆｉｅｌｄ_ｆｌａｇというシンタックス要素に含まれるフラグを基に判断する。このフラグは、値が１である場合、フレームマクロブロック、フィールドマクロブロックの両方を使用可能であることを意味する。
すなわち、ｍｂ_ａｄａｐｔｉｖｅ＿ｆｒａｍｅ＿ｆｉｅｌｄ_ｆｌａｇが０ならばＳＴ２に、１ならばＳＴ３に進む。
ステップＳＴ２：
２次元マクロブロック位置生成回路４３３は、現在のＭＢｘがＰｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１と等しいか否かを判断し、等しい場合はステップＳＴ４に、等しくない場合はステップＳＴ５に進む。
ステップＳＴ３：
２次元マクロブロック位置生成回路４３３は、現在のＭＢｘがＰｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１と等しいか否かを判断し、等しい場合はステップＳＴ１０に、等しくない場合はステップＳＴ１１に進む。
【００３３】
ステップＳＴ４：
２次元マクロブロック位置生成回路４３３は、ＭＢｙ［０］（ＭＢｙ［７：０］の最下位ビット）が０であるか否かを判断し、０であればステップＳＴ６に、０でなければステップＳＴ７に進む。
ステップＳＴ５：
２次元マクロブロック位置生成回路４３３は、ＭＢｙ［０］が０であるか否かを判断し、０であればステップＳＴ８に、０でなければステップＳＴ９に進む。
【００３４】
ステップＳＴ６：
２次元マクロブロック位置生成回路４３３は、現在のＭＢｘ［７：０］を出力する。
ステップＳＴ７：
２次元マクロブロック位置生成回路４３３は、０を出力する。
【００３５】
ステップＳＴ８：
２次元マクロブロック位置生成回路４３３は、現在のＭＢｘ［７：０］を出力する。
ステップＳＴ９：
２次元マクロブロック位置生成回路４３３は、現在のＭＢｘ［７：０］の値に１を加えて出力する。
【００３６】
ステップＳＴ１０：
２次元マクロブロック位置生成回路４３３は、０を出力する。
ステップＳＴ１１：
２次元マクロブロック位置生成回路４３３は、現在のＭＢｘ［７：０］の値に１を加えて出力する。
【００３７】
ＭＢｙ［７：０］は、図１０のように、例えば、以下の工程で求める。
【００３８】
ステップＳＴ１１：
２次元マクロブロック位置生成回路４３３は、ＭＢＡＦＦモードであるか否かを判断し、ＭＢＡＦＦモードである場合ステップＳＴ１２に、ＭＢＡＦＦモードではない場合ステップＳＴ１３に進む。
すなわち、ｍｂ_ａｄａｐｔｉｖｅ＿ｆｒａｍｅ＿ｆｉｅｌｄ_ｆｌａｇが０ならばＳＴ１２に、１ならばＳＴ１３に進む。
ステップＳＴ１２：
２次元マクロブロック位置生成回路４３３は、現在のＭＢｘがＰｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１と等しいか否かを判断し、等しい場合はステップＳＴ１４に、等しくない場合はステップＳＴ１５に進む。
ステップＳＴ１３：
２次元マクロブロック位置生成回路４３３は、現在のＭＢｘがＰｉｃ＿ｗｉｄｔｈ＿ｉｎ＿ｍｂｓ＿ｍｉｎｕｓ１と等しいか否かを判断し、等しい場合はステップＳＴ１８に、等しくない場合はステップＳＴ１９に進む。
【００３９】
ステップＳＴ１４：
２次元マクロブロック位置生成回路４３３は、現在のＭＢｙ［７：０］の値に１を加えて出力する。
ステップＳＴ１５：
２次元マクロブロック位置生成回路４３３は、ＭＢｙ［０］が０であるか否かを判断し、０であればステップＳＴ１６に、０でなければステップＳＴ１７に進む。
【００４０】
ステップＳＴ１６：
２次元マクロブロック位置生成回路４３３は、現在のＭＢｙ［７：０］の値に１を加えて出力する。
ステップＳＴ１７：
２次元マクロブロック位置生成回路４３３は、現在のＭＢｙ［７：０］の値から１を減じて出力する。
【００４１】
ステップＳＴ１８：
２次元マクロブロック位置生成回路４３３は、現在のＭＢｙ［７：０］の値に１を加えて出力する。
ステップＳＴ１９：
２次元マクロブロック位置生成回路４３３は、現在のＭＢｙ［７：０］の値を出力する。
【００４２】
２次元マクロブロック位置生成回路４３３は、算出した２次元マクロブロック位置をｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４に出力する。
【００４３】
ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４は、２次元マクロブロック位置生成回路４３３が算出したカレントマクロブロックの２次元マクロブロック位置のｙ座標（垂直マクロブロック位置）ＭＢｙ［７：０］を基に、ｃｏ−ｌｏｃａｔｅｄマクロブロックのｙ座標ＭＢｙｃｏｌ［７：０］を算出する。
【００４４】
以下、ｃｏ−ｌｏｃａｔｅｄマクロブロックのｙ座標ＭＢｙｃｏｌ［７：０］の算出方法について説明する。
図１１は、ｃｏ−ｌｏｃａｔｅｄマクロアドレスのｙ座標ＭＢｙｃｏｌ［７：０］を求める際の場合分けを示す図である。
図１１に示すように、ＩＳＯ／ＩＥＣ１４４９６−１０に規定されたＰｉｃＣｏｄｉｎｇＳｔｒｕｃｔ（ＣｕｒｒＰｉｃ）、ＰｉｃＣｏｄｉｎｇＳｔｒｕｃｔ（ｃｏｌＰｉｃ）、ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇ、ｆｉｅｌｄＤｅｃｏｄｉｎｇＦｌａｇＸの値に応じて、ＭＢｙｃｏｌ［７：０］の算出方法が異なる。
ＰｉｃＣｏｄｉｎｇＳｔｒｕｃｔ（ＣｕｒｒＰｉｃ）は原画像データの構造を示す値、ＰｉｃＣｏｄｉｎｇＳｔｒｕｃｔ（ｃｏｌＰｉｃ）は参照画像データの構造を示す値、ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇはＨ．２６４／ＡＶＣのシンタックス要素であり、当該マクロブロックペア（この場合カレントマクロブロックペア）がフィールドモードである時１となり、フレームモードの時０となるフラグ、ｆｉｅｌｄＤｅｃｏｄｉｎｇＦｌａｇは、ｃｏ−ｌｏｃａｔｅｄマクロブロックがフィールドモードである時１となり、フレームモードの時０となるフラグである。
【００４５】
原画像データと参照画像データが共にＦＬＤ（フィールド構造）、或いは共にＦＲＭ（フレーム構造）である場合には、カレントマクロブロックアドレスＣｕｒｒＭｂＡｄｄｒとｃｏ−ｃｏｌａｔｅｄマクロブロックアドレスｍｂＡｄｄｒＣｏｌは等しいので、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４は、ＭＢｙ［７：０］をＭＢｙｃｏｌ［７：０］として出力する。
【００４６】
原画像データがＦＬＤ、参照画像データがＦＲＭの場合、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４は、ＭＢｙｃｏｌ１［７：０］を下記式（１）から算出する。
〔数１〕
ＭＢｙｃｏｌ１［７：０］＝（ＭＢｙ＜＜１）＋ｂｌｋ＿ｉｄｘ［３］
…（１）
ｂｌｋ＿ｉｄｘ［３：０］は、例えば、図１２に示す値を有する４×４のインデックス値であり、ｂｌｋ＿ｉｄｘ［３］はその最上位ビットを表している。
また、ＭＢｙ＜＜１は１ビット左にシフトする演算を意味する。
【００４７】
原画像データがＦＬＤ、参照画像データがＡＦＲＭ（マクロブロックペアを有するピクチャ構造）の場合、更に以下の２通りに場合分けされる。
ｃｏ−ｌｏｃａｔｅｄマクロブロックがフレームモードである場合（ｆｉｅｌｄＤｅｃｏｄｉｎｇＦｌａｇＸ＝０）、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４は、ＭＢｙｃｏｌ２［７：０］を下記式（２）から算出する。
〔数２〕
ＭＢｙｃｏｌ２［７：０］＝（ＭＢｙ＜＜１）＋ｂｌｋ＿ｉｄｘ［３］
…（２）
ｃｏ−ｌｏｃａｔｅｄマクロブロックがフィールドモードである場合（ｆｉｅｌｄＤｅｃｏｄｉｎｇＦｌａｇＸ＝１）、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４は、ＭＢｙｃｏｌ３［７：０］を下記式（３）から算出する。
〔数３〕
ＭＢｙｃｏｌ３［７：０］＝（ＭＢｙ＜＜１）＋ｂｏｔｔｏｍ＿ｆｉｅｌｄ＿ｆｌａｇ
…（３）
ｂｏｔｔｏｍ＿ｆｉｅｌｄ＿ｆｌａｇはスライスヘッダシンタックスパラメータであり、ボトムフィールドである場合１となるフラグである。
【００４８】
原画像データがＦＲＭ、参照画像データがＦＬＤの場合、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４は、ＭＢｙｃｏｌ４［７：０］を下記式（４）から算出する。
〔数４〕
ＭＢｙｃｏｌ４［７：０］＝ＭＢｙ＞＞１
…（４）
ＭＢｙ＞＞１は、現在のＭＢｙを１ビット右にシフトする演算を意味する。
【００４９】
原画像データがＡＦＲＭ、参照画像データがＦＬＤである場合は、カレントマクロブロックがフレームモードであっても（ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇ＝０）、フィールドモードであっても（ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇ＝１）、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４は、ＭＢｙｃｏｌ５［７：０］を下記式（５）から算出する。
〔数５〕
ＭＢｙｃｏｌ５［７：０］＝ＭＢｙ＞＞１
…（５）
【００５０】
原画像データ、参照画像データ共にＡＦＲＭである場合は、更に下記の３通りに分けられる。
カレントマクロブロック、ｃｏ−ｌｏｃａｔｅｄマクロブロック共にフレームモードである場合、或いはカレントマクロブロック、ｃｏ−ｌｏｃａｔｅｄマクロブロック共にフィールドモードである場合は、ｍｂＡｄｄｒＣｏｌはＣｕｒｒＭｂＡｄｄｒと等しいので、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４は、ＭＢｙｃｏｌ［７：０］としてＭＢｙ［７：０］を出力する。
カレントマクロブロックがフレームモード、ｃｏ−ｌｏｃａｔｅｄマクロブロックがフィールドモードである場合、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４は、ＭＢｙｃｏｌ６［７：０］を下記式（６）から算出する。
〔数６〕
ＭＢｙｃｏｌ６［７：０］＝（（ＭＢｙ＞＞１）＜＜１）＋（（ｔｏｐＡｂｓＤｉｆｆＰＯＣ＜ｂｏｔｔｏｍＡｂｓＤｉｆｆＰＯＣ）？０：１）
…（６）
ｔｏｐＡｂｓＤｉｆｆＰＯＣは参照画像データのトップフィールドと原画像データのＰＯＣ（Picture Order Count：ピクチャの表示順序）の差分を、ｂｏｔｔｏｍＡｂｓＤｉｆｆＰＯＣは参照画像データのボトムフィールドと原画像データのＰＯＣの差分を意味し、（ｔｏｐＡｂｓＤｉｆｆＰＯＣ＜ｂｏｔｔｏｍＡｂｓＤｉｆｆＰＯＣ）？０：１という演算は、ｔｏｐＡｂｓＤｉｆｆＰＯＣ＜ｂｏｔｔｏｍＡｂｓＤｉｆｆＰＯＣであれば０を、ｔｏｐＡｂｓＤｉｆｆＰＯＣ＞ｂｏｔｔｏｍＡｂｓＤｉｆｆＰＯＣであれば１を返す演算である。
カレントマクロブロックがフィールドモード、ｃｏ−ｌｏｃａｔｅｄマクロブロックがフレームモードである場合、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４は、ＭＢｙｃｏｌ７［７：０］を下記式（７）から算出する。
〔数７〕
ＭＢｙｃｏｌ７［７：０］＝（（ＭＢｙ＞＞１）＜＜１）＋ｂｌｋ＿ｉｄｘ［３］
…（７）
【００５１】
上記のような演算を行うために、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４は以下のような構造を有する。
図１３は、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４のブロック図である。
【００５２】
ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４は、例えば、図１３に示すように、シフタ４３４１、シフタ４３４２、シフタ４３４３、セレクタ４３４４、セレクタ４３４５及び加算器４３４６を有する。
シフタ４３４１は、入力されたＭＢｙを左に１ビットシフトした後、結果をセレクタ４３４４に出力する。
シフタ４３４２は、入力されたＭＢｙを右に１ビットシフトした後、結果をセレクタ４３４４或いはシフタ４３４３に出力する。
シフタ４３４３は、シフタ４３４２から出力された値を左に１ビットシフトし、結果をセレクタ４３４４に出力する。
【００５３】
セレクタ４３４４は、ＰｉｃＣｏｄｉｎｇＳｔｒｕｃｔ（ＣｕｒｒＰｉｃ）、ＰｉｃＣｏｄｉｎｇＳｔｒｕｃｔ（ｃｏｌＰｉｃ）、ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇ、ｆｉｅｌｄＤｅｃｏｄｉｎｇＦｌａｇＸの値に応じて、入力されたＭＢｙ、シフタ４３４１の出力、シフタ４３４２の出力、シフタ４３４３の出力の中から１つを選択し、加算器４３４６に出力する。
セレクタ４３４５は、入力されたＰｉｃＣｏｄｉｎｇＳｔｒｕｃｔ（ＣｕｒｒＰｉｃ）、ＰｉｃＣｏｄｉｎｇＳｔｒｕｃｔ（ｃｏｌＰｉｃ）、ｍｂ＿ｆｉｅｌｄ＿ｄｅｃｏｄｉｎｇ＿ｆｌａｇ、ｆｉｅｌｄＤｅｃｏｄｉｎｇＦｌａｇＸの値に応じて、ｂｌｋ＿ｉｄｘ［３］、ｂｏｔｔｏｍ＿ｆｉｅｌｄ＿ｆｌａｇ、（ｔｏｐＡｂｓＤｉｆｆＰＯＣ＜ｂｏｔｔｏｍＡｂｓＤｉｆｆＰＯＣ）？０：１の判別結果及び０の中から１つを選択し、加算器４３４６に出力する。
加算器７は、セレクタ４３４４とセレクタ４３４５の出力を加算し、ＭＢｙｃｏｌ［７：０］としてマクロブロックアドレス変換回路４３５に出力する。
上記のように、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４はＭＢｙｃｏｌ［７：０］を算出する。
【００５４】
マクロブロックアドレス変換回路４３５は、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４から入力されたＭＢｙｃｏｌ［７：０］とＭＢｘとを基に、ｃｏ−ｌｏｃａｔｅｄマクロブロックアドレスｍｂＡｄｄｒＣｏｌを算出する。
以下、ｃｏ−ｌｏｃａｔｅｄマクロブロックアドレスｍｂＡｄｄｒＣｏｌの算出方法について説明する。
【００５５】
ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４から入力されたＭＢｙｃｏｌ［７：０］がＭＢｙｃｏｌ１［７：０］、ＭＢｙｃｏｌ４［７：０］、ＭＢｙｃｏｌ５［７：０］のいずれかの場合、マクロブロックアドレス変換回路４３５は、下記式（８）を使って（ＭＢｘ、ＭＢｙｃｏｌ）からｍｂＡｄｄｒＣｏｌα［１５：０］に変換する（α＝１、４、５とする）。
〔数８〕
ｍｂＡｄｄｒＣｏｌα［１５：０］＝ＰｉｃＷｉｄｔｈＩｎＭｂｓ［８：０］＊ＭＢｙｃｏｌα［８：０］＋ＭＢｘ［８：０］
…（８）
【００５６】
ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４から入力されたＭＢｙｃｏｌ［７：０］がＭＢｙｃｏｌ２［７：０］、ＭＢｙｃｏｌ３［７：０］、ＭＢｙｃｏｌ６［７：０］、ＭＢｙｃｏｌ７［７：０］のいずれかの場合、マクロブロックアドレス変換回路４３５は、下記式（８）を使って（ＭＢｘ、ＭＢｙｃｏｌ）からｍｂＡｄｄｒＣｏｌβ［１５：０］に変換する（β＝２、３、６、７とする）。
〔数９〕
ｍｂＡｄｄｒＣｏｌβ［１５：０］＝ＰｉｃＷｉｄｔｈＩｎＭｂｓ［８：０］＊（ＭＢｙｃｏｌβ［８：０］−ＭＢｙｃｏｌβ［０］）＋（ＭＢｘ＜＜１）＋ＭＢｙｃｏｌ［８：０］β
…（９）
ここで、ＭＢｙｃｏｌβ［０］は、ＭＢｙｃｏｌβ［８：０］の最下位ビットの値である。
【００５７】
上記のような演算を行うために、マクロブロックアドレス変換回路４３５は、以下のような構造を有する。
図１４は、マクロブロックアドレス変換回路４３５のブロック図である。
マクロブロックアドレス変換回路４３５は、例えば、図１４に示すように、減算器４３５１、セレクタ４３５２、乗算器４３５３、シフタ４３５４、加算器４３５５、セレクタ４３５６、加算器４３５７を有する。
【００５８】
減算器４３５１は、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４から入力されたＭＢｙｃｏｌ［７：０］と、ＭＢｙｃｏｌ［７：０］の最下位ビットＭＢｙｃｏｌ［０］との差分をとり、セレクタ４３５２に出力する。
セレクタ４３５２には、減算器４３５１から入力されたＭＢｙｃｏｌ［７：０］とＭＢｙｃｏｌ［０］との差分と、ＭＢｙｃｏｌ［７：０］が入力されており、セレクタ４３５２は、ＰｉｃＣｏｄｉｎｇＳｔｒｕｃｔ（ｃｏｌＰｉｃ）のＡＦＲＭがオンの時差分を、オフの時ＭＢｙｃｏｌ［７：０］を選択し、乗算器４３５３に出力する。
乗算器４３５３は、セレクタ４３５２の出力と、ＰｉｃＷｉｄｔｈＩｎＭｂｓとを乗算し、加算器４３５７に出力する。
【００５９】
シフタ４３５４は、入力されたＭＢｘを左に１ビットシフトし、加算器４３５５に出力する。
加算器４３５５は、シフタ４３５４の出力と、ＭＢｙｃｏｌ［０］とを加算し、セレクタ４３５６に出力する。
セレクタ４３５６には加算器４３５５の出力とＭＢｘが入力され、セレクタ４３５６は、ＰｉｃＣｏｄｉｎｇＳｔｒｕｃｔ（ｃｏｌＰｉｃ）のＡＦＲＭがオンの時加算器４３５５の出力を、オフの時ＭＢｘを選択し、加算器４３５７に出力する。
加算器４３５７は、入力された乗算器４３５３の出力と、セレクタ４３５６の出力とを加算し、ｃｏ−ｌｏｃａｔｅｄマクロブロックアドレスｍｂＡｄｄｒＣｏｌとして動きベクトル生成回路４３６に出力する。
【００６０】
動きベクトル生成回路４３６は、上述のように生成されたｃｏ−ｌｏｃａｔｅｄマクロブロックアドレスと原画像データのカレントマクロブロックアドレスを基に、動きベクトルＭＶを生成する。
【００６１】
メモリ４３７は、上述したＣＰＵ４３１、ｃｏ−ｌｏｃａｔｅｄマクロブロックアドレス算出回路４３２、２次元マクロブロック位置生成回路４３３、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４、マクロブロックアドレス変換回路４３５及び動きベクトル生成回路４３６が使用するプログラムを格納している。
【００６２】
以下、動き予測・補償回路４３の動作例について説明する。
図１５は、動き予測・補償回路４３の動作例を示すフローチャートである。
【００６３】
ステップＳＴ２１：
カレントマクロブロックの位置を表す情報として、２次元マクロブロック位置生成回路４３３が２次元マクロブロック位置情報を生成する。
ステップＳＴ２２：
次に、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４が、ステップＳＴ２１で生成したカレントマクロブロックのｙ座標を基に、ｃｏ−ｌｏｃａｔｅｄマクロブロックのｙ座標ＭＢｙｃｏｌ［７：０］を算出する。
ステップＳＴ２３：
次に、マクロブロックアドレス変換回路４３５が、ステップＳＴ２２でｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路が算出したＭＢｙｃｏｌ［７：０］を基に、ｃｏ−ｌｏｃａｔｅｄマクロブロックのマクロブロックアドレスｍｂＡｄｄｒＣｏｌに変換する。
ステップＳＴ２４：
次に、動きベクトル生成回路４３６が、ステップＳＴ２３でマクロブロックアドレス変換回路４３５が変換したｃｏ−ｌｏｃａｔｅｄマクロブロックアドレスｍｂＡｄｄｒＣｏｌを基に、動きベクトルＭＶを生成する。
【００６４】
次に、図６に示す符号化装置２の全体動作を説明する。
入力となる画像信号は、まず、Ａ／Ｄ変換回路２２においてデジタル信号に変換される。次に、出力となる画像圧縮情報のＧＯＰ構造に応じ、画面並べ替え回路２３においてフレーム画像データの並べ替えが行われ、それによって得られた原画像データＳ２３が、演算回路２４、イントラ予測回路４１及び動き予測・補償回路４３に出力される。
次に、演算回路２４が、画面並べ替え回路２３からの原画像データＳ２３と選択回路４４からの予測データＰＩとの差分を検出し、その差分を示す画像データＳ２４を直交変換回路２５に出力する。
【００６５】
次に、直交変換回路２５が、画像データＳ２４に離散コサイン変換やカルーネン・レーベ変換等の直交変換を施して画像データＳ２５を生成し、これを量子化回路２６に出力する。
次に、量子化回路２６が画像データＳ２５を量子化し、量子化された変換係数Ｓ２６を可逆符号化回路２７及び逆量子化回路２９に出力する。
次に、可逆符号化回路２７が、変換係数Ｓ２６に可変長符号化或いは算術符号化等の可逆符号化を施して画像データＳ２７を生成し、これをバッファ２８に蓄積する。
また、レート制御回路３２が、原画像データＳ２３と、バッファ２８から読み出した画像データＳ２７を基に、量子化回路２６における量子化レートを制御する。
【００６６】
次に、逆量子化回路２９が、量子化回路２６から出力された変換係数Ｓ２６を逆量子化し、逆量子化した変換係数を示す画像データＳ２９を逆直交変換回路３０に出力する。
次に、逆直交変換回路３０が、逆量子化回路２９から出力された画像データＳ２９に対し直交変換回路２５における直交変換の逆変換を施し、生成された画像データＳ３０を加算回路３３に出力する。
次に、加算回路３３が、逆直交変換回路３０から出力された画像データＳ３０と、選択回路４４から出力された予測画像データＰＩとを加算して再構成データを生成し、これをデブロックフィルタ３４に出力する。
次に、デブロックフィルタ３４が、加算回路３３から出力された再構成画像データのブロック歪みを除去し、除去された画像データを参照画像データＲＥＦとしてフレームメモリ３１に書き込む。
【００６７】
そして、イントラ予測回路４１がイントラ予測符号化を行い、予測データＰＩと、差分ＤＩＦとを選択回路４４に出力する。
また、動き予測・補償回路４３が、動きベクトルＭＶを生成し、それを基に更に予測画像データＰＩと、原画像データＳ２３と予測データＰＩと差分ＤＩＦとを選択回路４４に出力する。
そして、選択回路４４が、イントラ予測回路４１から出力された差分ＤＩＦ及び動き予測・補償回路４３から出力された差分ＤＩＦを比較し、イントラ予測回路４１から出力された差分ＤＩＦの方が小さいと判断した場合はイントラ予測回路４１の出力した予測データＰＩを、動き予測・補償回路４３から出力された差分ＤＩＦの方が小さいと判断した場合は動き予測・補償回路４３の出力した予測データＰＩを選択して演算回路２４に出力する。
そして、バッファ２８に格納された画像データが、変調等された後に送信される。
【００６８】
以上説明したように、ＩＳＯ／ＩＥＣ１４４９６−１０に規定されているｃｏ−ｌｏｃａｔｅｄマクロブロックアドレスを求める演算は図３に示すように全部で７通りあり、各場合の演算を１つの回路で実現しようとすると図４のように大規模な回路が必要になるため、演算のために大量の時間やエネルギーが必要になる。しかし、本実施形態のｃｏ−ｌｏｃａｔｅｄマクロブロックアドレス算出回路４３２によれば、式の種類は上述したように全部で５種類であり、従って回路構成も図１３及び図１４に示すように比較的簡便になる。
更に、本実施形態のｃｏ−ｌｏｃａｔｅｄマクロブロックアドレス算出回路４３２では、各種演算器の入力信号をセレクタにより選択させることで、回路内でリソースの共有を図ることができ、回路規模や演算のサイクル数を削減することができるので、演算に要する時間やエネルギーを節約することができる。
【００６９】
本発明は上述した実施形態には限定されない。
すなわち、当業者は、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し、様々な変更、コンビネーション、サブコンビネーション、並びに代替を行ってもよい。
本実施形態では、動き予測・補償回路４３の一例として、ＣＰＵ４３１が動き予測・補償回路４３の全体の動作を統括し、２次元マクロブロック位置生成回路４３３、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４、マクロブロックアドレス変換回路４３５及び動きベクトル生成回路４３６の各回路が各種処理を行う構成について説明したが、本発明はこの例に限定されず、例えば、ＣＰＵ４３１が動き予測・補償回路４３の全ての処理を行い、上記各回路を持たない構成としてもよい。
【図面の簡単な説明】
【００７０】
【図１】図１は、カレントマクロブロックとｃｏ−ｌｏｃａｔｅｄマクロブロックの関係を示す図である。
【図２】図２は、ＭＢＡＦＦモードを示す概念図である。
【図３】図３は、原画像データと参照画像データのピクチャ構造の組み合わせによるｃｏ−ｌｏｃａｔｅｄマクロブロックアドレスｍｂＡｄｄｒＣｏｌを求める際の場合分けを示す図である。
【図４】図４は、ＩＳＯ／ＩＥＣ１４４９６−１０に規定されたｃｏ−ｌｏｃａｔｅｄマクロアドレス値を算出する装置の一例を示すブロック図である。
【図５】図５は、本発明の第１実施形態の通信システム１のブロック図である。
【図６】図６は、図４に示す符号化装置２のブロック図である。
【図７】図７は、動き予測・補償回路４３のブロック図である。
【図８】図８は、マクロブロックアドレスｍｂＡｄｄｒと２次元のマクロブロック位置情報（ＭＢｘ、ＭＢｙ）との関係を示す図である。
【図９】図９は、２次元マクロブロック位置ＭＢｘ［７：０］の算出アルゴリズムを示す図である。
【図１０】図１０は、２次元マクロブロック位置ＭＢｙ［７：０］の算出アルゴリズムを示す図である。
【図１１】図１１は、ｃｏ−ｌｏｃａｔｅｄマクロアドレスのｙ座標ＭＢｙｃｏｌ［７：０］を求める際の場合分けを示す図である。
【図１２】図１２は、４×４のインデックス値ｂｌｋ＿ｉｄｘ［３：０］を示す図である。
【図１３】図１３は、ｃｏ−ｌｏｃａｔｅｄマクロブロック位置算出回路４３４のブロック図である。
【図１４】図１４は、マクロブロックアドレス変換回路４３５のブロック図である。
【図１５】図１５は、動き予測・補償回路４３の動作例を示すフローチャートである。
【符号の説明】
【００７１】
１…通信システム、２…符号化装置、３…復号装置、２２…Ａ／Ｄ変換回路、２３…画面並べ替え回路、２４…演算装置、２５…直交変換回路、２６…量子化回路、２７…可逆符号化回路、２８…バッファ、２９…逆量子化回路、３０…逆直交変換回路、３１…フレームメモリ、３２…レート制御回路、３３…加算回路、３４…デブロックフィルタ、４１…イントラ予測回路、４３…動き予測・補償回路、４４…選択回路
【図１】
2006352238.tif 000003
【図２】
2006352238.tif 000004
【図３】
2006352238.tif 000005
【図４】
2006352238.tif 000006
【図５】
2006352238.tif 000007
【図６】
2006352238.tif 000008
【図７】
2006352238.tif 000009
【図８】
2006352238.tif 000010
【図９】
2006352238.tif 000011
【図１０】
2006352238.tif 000012
【図１１】
2006352238.tif 000013
【図１２】
2006352238.tif 000014
【図１３】
2006352238.tif 000015
【図１４】
2006352238.tif 000016
【図１５】
2006352238.tif 000017