(57)【要約】【課題】並列処理命令が同時に処理可能な画素数よりも少ない画素数の画像処理を行う際に、プロセッサの並列処理性能を有効に利用するとともに、隣接する画素の処理に与える悪影響を防止すること。【解決手段】ＳＩＭＤ型並列処理プロセッサを、画像データの異なる色成分であってＳＩＭＤ型プロセッサの並列処理命令が同時に処理可能な画素数Ｎよりも少ない複数の画素データを同時に処理する場合に、複数の画素データをＮ／Ｍ（Ｍ：整数）画素ごとに各成分の画素データが交互になるように配置する変換部１０５と、配置変換された複数の画素データを、Ｎ画素を単位として２Ｎ画素分読み出す読み出し制御部１０６と、ＳＩＭＤ型プロセッサのバイトシャッフル命令を実行して読み出された２Ｎ画素の画素データから、画像処理対象のＮ／Ｍ画素の画素データを抽出し、抽出されたＮ／Ｍ画素の画素データに対して動き補償処理を行う書き込み制御部１０７とを備えた。【選択図】        図１
2005218055.tif 000002
【特許請求の範囲】
【請求項１】
一命令で複数のデータを処理するとともに予め定められたアドレス位置でメモリに対する読み書き処理を行うＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型並列処理プロセッサによって、画像データに対する画像処理を行う画像処理方法であって、
前記画像データの異なる色成分であって前記ＳＩＭＤ型プロセッサの並列処理命令が同時に処理可能な画素数Ｎよりも少ない複数の画素データを同時に処理する場合に、Ｎ／Ｍ（Ｍ：整数）画素ごとに各成分の画素データが交互になるように配置変換する変換ステップと、
前記変換ステップにより配置変換された複数の画素データを、Ｎ画素を単位として２Ｎ画素分読み出す読み出しステップと、
前記ＳＩＭＤ型プロセッサで提供されるバイトシャッフル命令を実行して前記読み出しステップによって読み出された２Ｎ画素の画素データから、画像処理対象のＮ／Ｍ画素の画素データを抽出し、抽出されたＮ／Ｍ画素の画素データに対して画像処理を施す画像処理ステップと、
を含むことを特徴とする画像処理方法。
【請求項２】
前記画像データの異なる色差成分であって前記画素数Ｎよりも少ない複数の画素データを同時に処理する場合に、前記複数の画素データをＮ／Ｍ（Ｍ：整数）画素ごとに各成分の画素データが交互になるように配置変換することを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記画像処理ステップは、前記予め定められたアドレス位置と前記画素のアドレスとのアドレス差ごとに予め定められた制御情報に基づいて前記バイトシャッフル命令を実行して、前記読み出しステップによって読み出された２Ｎ画素の画素データから、画像処理対象のＮ／Ｍ画素の画素データを抽出し、抽出されたＮ／Ｍ画素の画素データに対して画像処理を施すことを特徴とする請求項１または２に記載の画像処理方法。
【請求項４】
前記画像処理ステップは、前記バイトシャッフル命令を実行して前記読み出しステップによって読み出された２Ｎ画素の画素データから、動き補償処理対象のＮ／Ｍ画素の画素データを抽出し、抽出されたＮ／Ｍ画素の画素データに対して動き補償処理を施すことを特徴とする請求項１〜３のいずれか一つに記載の画像処理方法。
【請求項５】
前記変換ステップは、前記画像データの異なる色差成分であって前記画素数Ｎよりも少ない複数の画素データを同時に処理する場合に、前記複数の画素データをＮ／２（Ｍ：整数）画素ごとに各成分の画素データが交互になるように配置変換し、
前記画像処理ステップは、前記バイトシャッフル命令を実行して前記読み出しステップによって読み出された２Ｎ画素の画素データから、動き補償処理対象のＮ／２画素の画素データを抽出し、抽出されたＮ／２画素の画素データに対して動き補償処理を施すことを特徴とする請求項４に記載の画像処理方法。
【請求項６】
一命令で複数のデータを処理するとともに予め定められたアドレス位置で画像メモリに対する読み書き処理を行うＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型並列処理プロセッサと、
プログラムを記憶し、前記ＳＩＭＤ型並列処理プロセッサがアクセス可能なメモリと、
画像データを記憶し、前記ＳＩＭＤ型並列処理プロセッサがアクセス可能な画像メモリと、を備え、
前記プログラムは、前記ＳＩＭＤ型並列処理プロセッサを、
前記画像データの異なる色成分であって前記ＳＩＭＤ型プロセッサの並列処理命令が同時に処理可能な画素数Ｎよりも少ない複数の画素データを同時に処理する場合に、前記複数の画素データをＮ／Ｍ（Ｍ：整数）画素ごとに各成分の画素データが交互になるように配置変換する変換手段と、
前記変換手段によって配置変換された複数の画素データを、Ｎ画素を単位として２Ｎ画素分読み出す読み出し手段と、
前記ＳＩＭＤ型プロセッサで提供されるバイトシャッフル命令を実行して前記読み出し手段によって読み出された２Ｎ画素の画素データから、画像処理対象のＮ／Ｍ画素の画素データを抽出し、抽出されたＮ／Ｍ画素の画素データに対して画像処理を施す画像処理手段
として機能させることを特徴とする画像処理装置。
【請求項７】
前記変換手段は、前記画像データの異なる色差成分であって前記画素数Ｎよりも少ない複数の画素データを同時に処理する場合に、前記複数の画素データをＮ／Ｍ（Ｍ：整数）画素ごとに各成分の画素データが交互になるように配置変換することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記画像処理手段は、前記予め定められたアドレス位置と前記画素のアドレスとのアドレス差ごとに予め定められた制御情報に基づいて前記バイトシャッフル命令を実行して、前記読み出し手段によって読み出された２Ｎ画素の画素データから、画像処理対象のＮ／Ｍ画素の画素データを抽出し、抽出されたＮ／Ｍ画素の画素データに対して画像処理を施すことを特徴とする請求項６または７に記載の画像処理装置。
【請求項９】
前記画像処理手段は、前記バイトシャッフル命令を実行して前記読み出し手段によって読み出された２Ｎ画素の画素データから、動き補償処理対象のＮ／Ｍ画素の画素データを抽出し、抽出されたＮ／Ｍ画素の画素データに対して動き補償処理を施すことを特徴とする請求項６〜８のいずれか一つに記載の画像処理装置。
【請求項１０】
前記変換手段は、前記画像データの異なる色差成分であって前記画素数Ｎよりも少ない複数の画素データを同時に処理する場合に、前記複数の画素データをＮ／２（Ｍ：整数）画素ごとに各成分の画素データが交互になるように配置変換し、
前記画像処理手段は、前記バイトシャッフル命令を実行して前記読み出し手段によって読み出された２Ｎ画素の画素データから、動き補償処理対象のＮ／２画素の画素データを抽出し、抽出されたＮ／２画素の画素データに対して動き補償処理を施すことを特徴とする請求項９に記載の画像処理装置。
【請求項１１】
一命令で複数のデータを処理するとともに予め定められたアドレス位置でメモリに対する読み書き処理を行うＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型並列処理プロセッサによって、画像データに対する画像処理を行う画像処理プログラムであって、
前記画像データの異なる色成分であって前記ＳＩＭＤ型プロセッサの並列処理命令が同時に処理可能な画素数Ｎよりも少ない複数の画素データを同時に処理する場合に、前記複数の画素データをＮ／Ｍ（Ｍ：整数）画素ごとに各成分の画素データが交互になるように配置変換する変換手順と、
前記変換手順によって配置変換された複数の画素データを、Ｎ画素を単位として２Ｎ画素分読み出す読み出し手順と、
前記ＳＩＭＤ型プロセッサで提供されるバイトシャッフル命令を実行して前記読み出し手順によって読み出された２Ｎ画素の画素データから、画像処理対象のＮ／Ｍ画素の画素データを抽出し、抽出されたＮ／Ｍ画素の画素データに対して画像処理を施す画像処理手順と、
をコンピュータに実行させる画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、予め定められたアドレス位置でメモリに対する読み書き処理を行うＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型並列処理プロセッサによって、画像データに対する画像処理を行う画像処理装置、画像処理方法および画像処理プログラムに関するものである。
【背景技術】
【０００２】
近年、ＭＰＥＧ−１、ＭＰＥＧ−２、ＭＰＥＧ−４などの動画データの画像符号化および復号化をソフトウェアで処理することが一般的に行われている。ここで、動き補償処理とは、復号画像をマクロブロックという矩形ブロックに分割し、そのマクロブロックごとに過去に復号した参照画像から、動きベクトル（映像の中の各マクロブロックが、どの方向へどのくらい動いているかという情報）だけずれた位置にあるマクロブロックをコピーする処理である（例えば、特許文献１参照）。
【０００３】
一般的なＭＰＥＧの復号化処理では、画像データは、フレームまたはフィールドごとに輝度成分（Ｙ）、色差成分（Ｃｂ／Ｃｒ）をひとまとまりとして配置する面順次フォーマットで格納される。そして、マクロブロックのサイズは輝度成分に対しては１６×１６画素、色差成分に対しては８×８画素のサイズが採用されている。
【０００４】
ここで、Ｉｎｔｅｌ社製のプロセッサには、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）という命令セットが準備されている。この命令セットに含まれるＳＩＭＤ命令は１命令で複数のデータに共通の処理を行う命令であり、ＭＰＥＧのように複数の画素に対して同様の処理を行う場合にこのＳＩＭＤ命令を用いて同時に処理することにより、処理を高速化することが可能となっている。
【０００５】
また、Ｉｎｔｅｌ社製のプロセッサには、ＭＭＸ／ＳＳＥ（Ｓｔｒｅａｍｉｎｇ  ＳＩＭＤ  Ｅｘｔｅｎｓｉｏｎ）という６４ビットレジスタを用いたＳＩＭＤ命令とＳＳＥ２という１２８ビットレジスタを用いたＳＩＭＤ命令が命令セットに含まれている。１画素のデータは８ビットで表現されるので、輝度成分に対してはＳＳＥ２を使用し、マクロブロックの水平方向の１６画素を同時に処理することができるようになっている。また、色差成分に対しては、ＭＭＸ／ＳＳＥを用い、ブロックの８画素を同時に処理することができるようになっている。
【０００６】
一方、次世代のゲーム機やホームサーバ、デジタルテレビジョンなどに搭載されるＣＰＵとして、１２８ビットのＳＩＭＤ命令のみを持つＲＩＳＣプロセッサが搭載される可能性がある．例えば、Ｐｏｗｅｒ  ＰＣプロセッサにおけるＡｌｔｉＶｅｃ命令セットなどがこのようなプロセッサの代表である。このようなＲＩＳＣプロセッサで利用できるＳＩＭＤ命令は、１２８ビットすなわち１６バイトを複数のワード（８ｂｉｔ、１６ｂｉｔ、３２ｂｉｔ）に分割した個々のデータを対象としている。また、今後将来的に、プロセッサによって同時処理可能なデータ量は増える傾向にあり、２５６ビット（３２バイト）を同時に処理できるようなＳＩＭＤ命令を備えたＲＩＳＣプロセッサが登場する可能性もある。
【０００７】
【特許文献１】特開平１１−２１５５０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、このような１２８ビットＳＩＭＤ命令セットを有するＲＩＳＣプロセッサによりＭＰＥＧの復号化処理の中の動き補償処理を実行する場合、ＳＩＭＤ命令が１２８ビット単位の処理しか実行することができない。このため、このようなＲＩＳＣプロセッサを使用した場合に、マクロブロックが１６×１６画素である輝度成分の動き補償処理については１２８ビットを有効に使用した処理が行えるが、マクロブロックが８×８画素の色差成分の動き補償処理の場合には、１２８ビットのうち６４ビットしか使用されず、残りの６４ビットは有効に利用されない。すなわち、動き補償を行う色差成分（Ｃｂ／Ｃｒ）のマクロブロックの面積は、輝度成分のマクロブロックの１／２となってるが、１２８ビットのＳＩＭＤ命令セットを使用した場合、色差成分についてはＳＩＭＤ命令の並列性を十分に生かしきれず、結果として輝度成分の動き補償処理と同程度の処理負荷がかかってしまい、ＲＩＳＣプロセッサによる並列処理の効率を向上させることができないという問題がある。
【０００９】
また、一般的なＲＩＳＣプロセッサでは、メモリのアドレッシングはプロセッサの処理単位にアラインメントされたアドレスからしか行えず、自由にアドレッシングを行えるＩｎｔｅｌ社製プロセッサと異なっている。このため、メモリからデータを読み出す場合には、その読み出しアドレスは１６×ｎ（ｎは整数）となる。
【００１０】
このため、このようなＲＩＳＣプロセッサによってＭＰＥＧの復号化処理を行う場合、ＭＰＥＧ−２のＳＤＴＶ解像度（一般的には水平７２０×垂直４８０画素）では、色差成分の水平方向の画素数が１６の倍数ではないため、Ｉｎｔｅｌ社製のＣＰＵのように自由なアドレスからデータを取得することができるプロセッサを用いて動き補償を行う場合と異なり、１６バイトアライメント右端の８画素を処理する際に次のラインの左端の画素に悪影響を与えるという問題がある。
【００１１】
本発明は、上記の点に鑑みてなされたものであって、並列処理命令が同時に処理可能な画素数よりも少ない画素数の画像処理を行う際に、プロセッサの並列処理性能を有効に利用するとともに、隣接する画素の処理に与える悪影響を防止することができる画像処理装置、画像処理方法および画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、本発明は、一命令で複数のデータを処理するとともに予め定められたアドレス位置でメモリに対する読み書き処理を行うＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型並列処理プロセッサによって、画像データに対する画像処理を行う画像処理方法であって、前記画像データの異なる色成分であって前記ＳＩＭＤ型プロセッサの並列処理命令が同時に処理可能な画素数Ｎよりも少ない複数の画素データを同時に処理する場合に、前記複数の画素データをＮ／Ｍ（Ｍ：整数）画素ごとに各成分の画素データが交互になるように配置変換する変換ステップと、前記変換ステップによって配置変換された複数の画素データを、Ｎ画素を単位として２Ｎ画素分読み出す読み出しステップと、前記ＳＩＭＤ型プロセッサで提供されるバイトシャッフル命令を実行して前記読み出しステップによって読み出された２Ｎ画素の画素データから、画像処理対象のＮ／Ｍ画素の画素データを抽出し、抽出されたＮ／Ｍ画素の画素データに対して画像処理を施す画像処理ステップと、を含むことを特徴とする。
【００１３】
また、本発明は、一命令で複数のデータを処理するとともに予め定められたアドレス位置で画像メモリに対する読み書き処理を行うＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型並列処理プロセッサと、プログラムを記憶し、前記ＳＩＭＤ型並列処理プロセッサがアクセス可能なメモリと、画像データを記憶し、前記ＳＩＭＤ型並列処理プロセッサがアクセス可能な画像メモリと、を備え、前記プログラムは、前記ＳＩＭＤ型並列処理プロセッサを、前記画像データの異なる色成分であって前記ＳＩＭＤ型プロセッサの並列処理命令が同時に処理可能な画素数Ｎよりも少ない複数の画素データを同時に処理する場合に、前記複数の画素データをＮ／Ｍ（Ｍ：整数）画素ごとに各成分の画素データが交互になるように配置変換する変換手段と、前記変換手段によって配置変換された複数の画素データを、Ｎ画素を単位として２Ｎ画素分読み出す読み出し手段と、前記ＳＩＭＤ型プロセッサで提供されるバイトシャッフル命令を実行して前記読み出しステップによって読み出された２Ｎ画素の画素データから、画像処理対象のＮ／Ｍ画素の画素データを抽出し、抽出されたＮ／Ｍ画素の画素データに対して画像処理を施す画像処理手段として機能させることを特徴とする。
【００１４】
また、本発明は、命令で複数のデータを処理するとともに予め定められたアドレス位置でメモリに対する読み書き処理を行うＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型並列処理プロセッサによって、画像データに対する画像処理を行う画像処理プログラムであって、前記画像データの異なる色成分であって前記ＳＩＭＤ型プロセッサの並列処理命令が同時に処理可能な画素数Ｎよりも少ない複数の画素データを同時に処理する場合に、前記複数の画素データをＮ／Ｍ（Ｍ：整数）画素ごとに各成分の画素データが交互になるように配置変換する変換手順と、前記変換ステップによって配置変換された複数の画素データを、Ｎ画素を単位として２Ｎ画素分読み出す読み出し手順と、前記ＳＩＭＤ型プロセッサで提供されるバイトシャッフル命令を実行して前記読み出しステップによって読み出された２Ｎ画素の画素データから、画像処理対象のＮ／Ｍ画素の画素データを抽出し、抽出されたＮ／Ｍ画素の画素データに対して画像処理を施す画像処理手順とをコンピュータに実行させる画像処理プログラムにかかるものである。
【発明の効果】
【００１５】
本発明によれば、画像データの異なる色成分であってＳＩＭＤ型プロセッサの並列処理命令が同時に処理可能な画素数Ｎよりも少ない複数の画素データを同時に処理する場合に、複数の画素データをＮ／Ｍ（Ｍ：整数）画素ごとに各成分の画素データが交互になるように配置変換し、配置変換された複数の画素データを、Ｎ画素を単位として２Ｎ画素分読み出し、バイトシャッフル命令を実行して、読み出された２Ｎ画素の画素データから、画像処理対象のＮ／Ｍ画素の画素データを抽出し、抽出されたＮ／Ｍ画素の画素データに対して画像処理を施すことで、異なる成分の画像データに対する画像処理を、無駄な領域を発生させずに同時に行うことができ、ＳＩＭＤ型プロセッサの並列処理を効果的に使用して動き補償処理を行うことができるという効果を奏する。
【００１６】
また、本実施の形態の画像復号化装置では、複数の画素データをＮ／Ｍ（Ｍ：整数）画素ごとに各成分の画素データが交互になるように配置変換しているので、自由なアドレスからメモリに対するアクセスが不可能なプロセッサを用いた場合でも、右端の画素データを処理する際に他の領域の画素データに対して悪影響を与えずに画像処理を行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、この発明にかかる画像処理装置、画像処理方法および画像処理プログラムの最良な実施の形態を詳細に説明する。本実施の形態は本発明の画像処理装置、画像処理方法および画像処理プログラムを、ＭＰＥＧの復号化処理を行う画像復号化方法、画像復号化装置および画像復号化プログラムに適用したものである。
【００１８】
図１は、本発明の実施の形態にかかる画像復号化装置の機能的構成を示すブロック図である。画像復号化装置は、図１に示すように、ストリームバッファ１２０と、ストリームバッファ制御部１３０と、デコーダ制御部１１０と、デコーダ１００と、画像メモリ１４０とを主に備えている。
【００１９】
また、デコーダ１００は、図１に示すように、可変長復号化部１０１と、逆量子化部１０２と、逆スキャン部１０３と、逆ＤＣＴ部１０４と、動き補償部１０５とを備えている。
【００２０】
ストリームバッファ１２０は、ＤＶＤなどの記録媒体やインターネットなどのネットワーク、衛星などの放送電波を介して、装置外部から入力された符号化ストリーム（ＭＰＥＧ２ビットストリーム）を蓄積するＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリである。
【００２１】
ストリームバッファ制御部１３０は、デコーダ制御部１１０の指示に基づいて、符号化ストリームの入力時刻のばらつきを均一化して、デコーダ１００に符号化ストリームを入力する処理部である。
【００２２】
デコーダ制御部１１０は、ストリームバッファ制御部１３０を介して、ストリームバッファ１２０から符号化ストリームをデコーダ１００に出力する処理部である。
【００２３】
デコーダ１００は、概略的に、ストリームバッファ制御部１３０から入力された符号化ストリームをデコーダ制御部１１０の指示に基づいて復号して、画像メモリ１４０に出力する処理部である。この復号処理は、可変長復号化部１０１、逆量子化部１０２、逆スキャン部１０３、逆ＤＣＴ部１０４および動き補償部１０８の各処理部による処理を経ておこなわれる。以下に、デコーダ１００の各処理部の処理を説明する。
【００２４】
可変長復号化部１０１は、符号化ストリームに含まれる可変長符号化データを復号して量子化ＤＣＴ係数を復元する処理部である。具体的には、ストリームバッファ制御部１３０から入力された符号化ストリームをデコーダ制御部１１０の指示に従い、マクロブロックを分離し、各マクロブロックの量子化ＤＣＴ係数を復号し、復号した量子化ＤＣＴ係数を逆量子化部１０２に出力する。
【００２５】
また、可変長復号化部１０１、予測モードや予測ベクトルなどのパラメータの復号もおこない、復号した予測モードおよび予測ベクトルを動き補償部１０５に出力する。
【００２６】
逆量子化部１０２は、可変長復号化部１０１から入力された量子化ＤＣＴ係数を逆量子化してＤＣＴ係数を復号し、復号したＤＣＴ係数を逆スキャン部１０３に出力する処理部である。
【００２７】
逆スキャン部１０３は、逆量子化部１０２から入力されたＤＣＴ係数を逆スキャンし、逆スキャンしたＤＣＴ係数を逆ＤＣＴ部１０４に出力する処理部である。なお、図１においては、逆量子化処理をおこなった後に逆スキャン処理をおこなう場合の構成を示しているが、必ずしもこの順序にしたがう必要はなく、逆スキャン処理をおこなった後に逆量子化処理をおこなう構成でもよい。
【００２８】
逆ＤＣＴ部１０４は、逆スキャン部１０３から入力されたＤＣＴ係数を逆ＤＣＴ変換して符号化前の実画像成分である画像データ（画素値を持つデータ）を復号し、復号した画像データを動き補償部１０８に出力する処理部である。
【００２９】
動き補償部１０８は、逆ＤＣＴ部１０４から入力された画像データと、可変長復号化部１０１から入力された予測モードおよび予測ベクトルとに基づいて、動き補償をおこない、動き補償をおこなった画像データを画像メモリ１４０に書き込む処理部であり、機能概念的に、変換部１０５と、書き込み制御部１０６と読み出し制御部１０７とから構成される。ここで、変換部１０５は本発明における変換手段を、書き込み制御部１０６は本発明における画像処理手段を、読み出し制御部１０７は本発明における読み出し手段を構成する。
【００３０】
動き補償部１０８における変換部１０５は、色差成分ＣｂおよびＣｒの画素データを、各成分８画素ごとに交互に配置してフレームメモリ（Ｃｂ／Ｃｒ）１４４に配置するものである。
【００３１】
動き補償部１０８における読み出し制御部１０７は、複数の画像データを画像メモリから読み出すものである。具体的には、読み出し制御部１０７は、画像メモリ１４０のフレームメモリ（Ｙ）１４１から輝度成分Ｙの画素データを１６画素分読み出し、またフレームメモリ（Ｃｂ／Ｃｒ）１４４から色差成分Ｃｂ，Ｃｒが８画素ごとに交互に配置された画素データを１６画素分読み出す処理を行う。
【００３２】
動き補償部１０８における書き込み制御部１０６は、読み出し制御部１０７から読み出された輝度成分の１６画素分の画素データからバイトシャッフル命令を実行して、動き補償処理に必要な画素を抽出する。また、書き込み制御部１０６は、読み出し制御部１０７から読み出された色差成分Ｃｂ／Ｃｒの１６画素分の画素データからバイトシャッフル命令を実行して、動き補償処理に必要な画素を抽出する。
【００３３】
画像メモリ１４０は、動き補償処理の対象となる画像データを格納するものである。画像メモリ１４０には、輝度成分Ｙの画素データを保存する領域であるフレームメモリ（Ｙ）１４１、色差成分Ｃｂの画素データと色差成分Ｃｒの画素データとを交互に配置した画像データを保存する領域であるフレームメモリ（Ｃｂ／Ｃｒ）１４４がそれぞれ確保されている。なお、フレームメモリ（ｙ）１４１、フレームメモリ（Ｃｂ／Ｃｒ）１４４は、図中はそれぞれ一つであるが、実際には、動き補償処理を行うために、参照画像のフレームメモリと復号画像のフレームメモリがフレームメモリ（ｙ）１４１、フレームメモリ（Ｃｂ／Ｃｒ）１４４のそれぞれ確保されている。
【００３４】
本実施形態の画像復号化装置は、１６バイトアライメントでメモリに対する読み書き処理を行うＲＩＳＣのＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型並列処理プロセッと、ハードディスク装置（ＨＤＤ）などの記録装置と、画像メモリ１４０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ））等の記憶装置とを有する動画再生装置あるいはコンピュータを利用した構成である。
【００３５】
本実施形態の画像復号化装置で実行される画像復号化プログラムは、本実施形態の画像復号化装置が動画再生装置の場合にはＲＯＭに組み込まれた形態で提供される。また、本実施形態の画像復号化装置がコンピュータを利用した構成の場合には、、画像復号化プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００３６】
また、本実施形態の画像復号化装置で実行される画像復号化プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の画像復号化装置で実行される画像復号化プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００３７】
本実施形態の画像復号化装置で実行される画像復号化プログラムは、ＲＯＭあるいは上記記憶媒体から読み出して実行することにより主記憶装置上にロードされ、上述した動き補償部１０８、可変長復号化部１０１、逆量子化部１０２、逆スキャン部１０３、逆ＤＣＴ部が主記憶装置上に生成されるようになっている。また、動き補償部１０８、可変長復号化部１０１、逆量子化部１０２、逆スキャン部１０３、逆ＤＣＴ部１０４の一部または全てをハードウェアで構成してもよい。
【００３８】
次に、以上のように構成された本実施の形態の画像復号化装置による各種について説明する。本実施の形態に係る画像復号化装置は、デコーダ１００の可変長復号化部１０１による可変長復号化処理、逆量子化部１０２による逆量子化処理、逆スキャン部１０３による逆スキャン処理および逆ＤＣＴ部１０４による逆ＤＣＴ変換処理を受けて動き補償部１０８による動き補償処理を実行する。
【００３９】
本実施の形態の画像復号化装置では、動き補償部１０８によって、動き補償処理が実行される。本実施の形態では、変換部１０５によって、フレームメモリにおける画像データのフォーマットが色差成分Ｃｂ／Ｃｒを８画素（８バイト）ごとに交互に配置されたフォーマットとなっている。図２は、通常の面順次フォーマットを示す説明図である。図３に示すように、面順次フォーマットでは、フレームまたはフィールドごとに輝度成分（ｙ）、色差成分（Ｃｂ／Ｃｒ）の画素をひとまとまりとして配置している。一方、図３は、本実施の形態の画像復号化装置で使用する画像データのフォーマットを示す説明図である。図３に示すように、フレームメモリ（Ｙ）１４２の輝度成分のフォーマットは図２に示す面順次と同様であるが、フレームメモリ（Ｃｂ／Ｃｒ）１４４には、色差成分ＣｂとＣｒの画素が８バイトごとに交互に配置されている。通常，ＭＰＥＧにおける色差成分の復号化処理は８×８画素の単位のマクロブロックごとに行われる。このため、図３に示すフォーマットで色差成分の画素データを格納することによる処理のオーバーヘッドはない。
【００４０】
本実施の形態の画像復号化装置では、まず輝度信号（Ｙ）についての動き補償処理を行い、次いで色差信号（Ｃｂ／Ｃｒ）についての動き補償処理を行う。輝度信号（Ｙ）についての動き補償処理については後述し、まず色差信号（Ｃｂ／Ｃｒ）についての動き補償処理について説明する。図４は、色差信号（Ｃｂ／Ｃｒ）についての動き補償処理の手順を示すフローチャートである。
【００４１】
まず、読み出し制御部１０７は、参照画像のフレームメモリ（Ｃｂ／Ｃｒ）１４４の参照ブロックの左上端のアドレスｒａｄｒを数１式のように算出する（ステップＳ４０１）。
【００４２】
【数１】
2005218055.tif 000003
【００４３】
ここで、（ｘ，ｙ）は復号ブロックの左上端の座標、（ｍｖｘ，ｍｖｙ）は動きベクトル、ｗｉｄｔｈは輝度成分の画像の幅（ＳＤＴＶでは７２０画素）を示している。また、ｍｖｘ’は動きベクトルの水平方向成分ｍｖｘから数２式で求められる。
【００４４】
【数２】
2005218055.tif 000004
【００４５】
また、ｏｆｆｓｅｔ（ｒｅｆ，ｃ）は、参照画像の色差成分（Ｃｏｌｏｒ）のフレームメモリの左上端のアドレスを示す。ここでｏｆｆｓｅｔ（ｒｅｆ，ｃ）は必ず１６バイトアラインされたアドレスとなる。色差成分Ｃｂ／Ｃｒに対しては８画素単位に処理が行われるので、ｘは必ず１６の倍数となる。通常、動きベクトルは０．５画素単位の精度を有するが、ここでは簡単のため１画素精度とする。このため，上式により算出されたアドレスｒａｄｒは一般的には１６バイトアラインされていないことになる。
【００４６】
次に、読み出し制御部１０５は、復号画像のフレームメモリ（Ｃｂ／Ｃｒ）１４４の復号ブロックの左上端のアドレスｗａｄｒを数３式のように算出する（ステップＳ４０２）。
【００４７】
【数３】
2005218055.tif 000005
【００４８】
ここで、ｏｆｆｓｅｔ（ｃｕｒ，ｃ）は、復号画像（ＣＵＲｒｅｎｔ）の色差成分のフレームメモリ（Ｃｂ／Ｃｒ）１４４の左上端のアドレスを示す。算出されたｗａｄｒは必ず１６バイトにアラインメントされている。
【００４９】
次に、読み出し制御部１０５によって、参照ブロックの左上端アドレスｒａｄｒの下位４ビットを０としたアドレス（（ｒａｄｒ／１６）＊１６）から１６バイト（１２８ビット）の画像データを読み出し、レジスタＲ０にロードする（ステップＳ４０３）。
【００５０】
ここで、アドレスｒａｄｒの下位４ビットを０としたアドレスを求めているのは、ステップＳ４０１で算出されたアドレスｒａｄｒが１６バイトアライメントされた位置のアドレスではないため、画像データのレジスタＲ０へロード処理が行えるように、アドレスｒａｄｒの直前の１６バイトアライメントされた位置のアドレスを求めているものである。
【００５１】
次に、読み出し制御部１０５によって、参照ブロックの左上端アドレスｒａｄｒの下位４ビットを０としたアドレスから１６バイト隔てて隣接するアドレス（（ｒａｄｒ／１６）＊１６＋１６）から１６バイト（１２８ビット）の画像データを読み出し、レジスタＲ１にロードする（ステップＳ４０４）。
【００５２】
そして、次に書き込み制御部１０６によって、制御テーブルから（ｒａｄｒ＆０ｘ０７）番目のバイトシャッフル制御ワードを読み出してレジスタＲ２にロードする（ステップＳ４０５）。ここで、バイトシャッフル制御ワードは、次ステップで実行するＳＩＭＤ型命令セットで提供されるバイトシャッフル命令において、動き補償処理のためにＲ０およびＲ１にロードされた画素から抽出する画素を定めたものである。このバイトシャッフル制御ワードは、参照ブロックのアドレスｒａｄｒと１６バイトアライメントの位置のアドレス差ごとに、レジスタＲ０にロードした画素データ（８画素）とレジスタＲ１にロードした画素データ（８画素）の３２画素から抽出する１６画素のレジスタＲ０とＲ１とを連結した状態での位置を予め制御テーブルに登録されている。
【００５３】
ここで、参照ブロックのアドレスｒａｄｒと１６バイトアライメントの位置のアドレス差はｒａｄｒ＆０ｘ０７で算出する。なお、この制御テーブルは、本実施の形態ではメモリ中に保持する他、画像復号化プログラムに保持するように構成してもよい。
【００５４】
図５は、制御テーブルの内容を示す説明図である。ｒａｄｒ＆０ｘ０７の値は、ｒａｄｒの下位４ビットを０にしたアドレス、すなわち参照ブロックのアドレスｒａｄｒと１６バイトアライメントの位置のアドレス差である。
【００５５】
また、制御ワードの１６個の数値は、レジスタＲ０とＲ１とを連結した場合の、先頭位置からのバイト数を示している。
【００５６】
次に、書き込み制御部１０６は、バイトシャッフル命令（例えば、ｂｓｈｕｆｆｌｅ命令）を実行し、レジスタＲ２の制御ワードに従って、レジスタＲ０とＲ１に格納された画素から動き補償に必要な画素を１６個抽出し、その実行結果、すなわち抽出された１６個の画素をレジスタＲ３に格納する（ステップＳ４０６）。
【００５７】
ここで、バイトシャッフル命令について説明する。バイトシャッフル命令とは、ＳＩＭＤ命令を備えたＲＩＳＣプロセッサにおいて，２つのレジスタの中から，各バイトごとに２つのレジスタの任意のバイトを取り出す命令である。このバイトシャッフル命令は、１６バイトアライメントの位置のアドレスでしかメモリにアクセスできない場合に、メモリの任意のアドレスからデータを読み出しまたはデータの書き込みを行うために設けられた命令である。このようなバイトシャッフル命令としては、例えば，Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍ（Ｒ）社のＵｌｔｒａＳＰＡＲＣ−ＩＩＩに実装されているＳＩＭＤ命令であるＶＩＳ命令セットで提供されるｂｓｈｕｆｆｌｅ命令や、ＰｏｗｅｒＰＣアーキテクチャにおけるＡｌｔｉＶｅｃ命令セットのｖｐｅｒｍ命令も同様の命令が該当する。
【００５８】
図６は、バイトシャッフル命令の動作を説明するための説明図である。例えば、図６に示すように、レジスタＲＡ（１６バイト）にＡ０からＡＦの各１バイトの値が格納され、レジスタＲＢ（１６バイト）にＢ０からＢＦの各１バイトの値が格納されている場合を考える。ここで、レジスタＲＡとＲＢとを連結した状態を考え、先頭から１バイトごとに００〜１ｆまでの番号を振る。制御ワードでかかる番号を指定したデータがバイトシャッフル命令の実行結果として出力される。
【００５９】
図６の例では、制御ワードに０ｘ０ｆ０００３０ｅ００１８０６１ａ０５１ａ１ｂ０６１２０３０８０ｃが設定されているため、バイトシャッフル命令を実行すると、レジスタＲＡ、ＲＢの「０ｆ」、「００」、「０３」、「０ｅ」、「００」、「１８」、「０６」、「１ａ」、「０５」、「１ａ」、「１ｂ」、「０６」、「１２」、「０３」、「０８」、「０ｃ」の位置の各データが図６のバイトシャッフル命令実行後のように抽出されることになる。
【００６０】
ここで、上記処理を具体例をあげて説明する。図７は、ｒａｄｒの下位４ビットが４であった場合、すなわちｒａｄｒが１６バイトアライメントのアドレスから４バイトずれていた場合におけるステップ４０３、Ｓ４０４を実行後のレジスタＲ０、Ｒ１の値、およびステップＳ４０６のバイトシャッフル命令実行後のレジスタＲ３の値の一例を示す説明図である。
【００６１】
ｒａｄｒの下位４ビットが４であった場合には、図５から制御ワードがｒａｄｒ＆０ｘ０７が４の列「０４  ０５  ０６  ０７  １０  １１  １２  １３  ０ｃ  ０ｄ  ０ｅ  ０ｆ  １８  １９  １ａ  １ｂ」となる。このため、図７に示すように、バイトシャッフル命令を実行するとＲ３に、Ｃｂの画素としてレジスタＲ０から０４、０５、０６、０７の画素と、レジスタＲ１から１０、１１、１２、１３の画素が抽出される。また、Ｃｒの画素としてレジスタＲ０から０ｃ、０ｄ、０ｅ、０ｆの画素と、レジスタＲ１から１８、１９、１ａ、１ｂの画素が抽出される。
【００６２】
また、図８は、ｒａｄｒの下位４ビットが６であった場合、すなわちｒａｄｒが１６バイトアライメントのアドレスから６バイトずれていた場合におけるステップ５０３、Ｓ５０４を実行後のレジスタＲ０、Ｒ１の値、およびステップＳ５０６のバイトシャッフル命令実行後のレジスタＲ３の値の一例を示す説明図である。
【００６３】
ｒａｄｒの下位４ビットが６であった場合には、図５から制御ワードがｒａｄｒ＆０ｘ０７が４の列「０６  ０７  １０  １１  １２  １３  １４１５  ０ｅ  ０ｆ  １８  １９  １ａ  １ｂ  １ｃ  １ｄ」となる。このため、図８に示すように、バイトシャッフル命令を実行するとＲ３に、Ｃｂの画素としてレジスタＲ０から０６、０７の画素と、レジスタＲ１から１０、１１、１２、１３、１４，１５の画素が抽出される。また、Ｃｒの画素としてレジスタＲ０から０ｅ、０ｆの画素と、レジスタＲ１から１８、１９、１ａ、１ｂ、１ｃ、１ｄの画素が抽出される。これにより，動き補償に必要なＣｂ／Ｃｒ成分を同時に取得することができる。
【００６４】
バイトシャッフル命令の実行後、書き込み制御部１０６は、レジスタＲ３の内容を復号ブロックの左上端のアドレスｗａｄｒから書き込む（ステップＳ４０７）。そして、読み出し制御部１０５は、参照ブロックの次のラインの先頭アドレスを取得してｒａｄｒに格納し（ステップＳ４０８）、さらに復号ブロックの次のラインの先頭アドレスを取得してｗａｄｒに格納する（ステップＳ４０９）。そして、ステップＳ４０３からＳ４０９までの処理を８回繰り返し、マクロブロック全ての画素、すなわち８×８画素について上記処理を行う。これにより色差成分の動き補償処理が完了する。
【００６５】
次に、色差信号の動き補償処理の前に実行される輝度信号の動き補償処理について説明する。図９は、輝度成分の動き補償処理の手順を示すフローチャートである。なお、画像データの輝度成分については、図２に示すように従来と同様、面順次フォーマットでフレームメモリ（Ｙ）に格納されている。
【００６６】
まず、読み出し制御部１０７は、参照画像のフレームメモリ（Ｙ）１４１の参照ブロックの左上端のアドレスｒａｄｒを次式のように算出する（ステップＳ９０１）。
【００６７】
【数４】
2005218055.tif 000006
【００６８】
ここで、（ｘ，ｙ）は復号ブロックの左上端の座標、（ｍｖｘ，ｍｖｙ）は動きベクトル、ｗｉｄｔｈは輝度成分の画像の幅（ＳＤＴＶでは７２０画素）を示している。
【００６９】
また、ｏｆｆｓｅｔ（ｒｅｆ，Ｙ）は、参照画像（ＲＥＦｅｒｅｎｃｅ）の輝度成分のフレームメモリの左上端のアドレスを示す。なお、ｏｆｆｓｅｔ（ｒｅｆ，Ｙ）は必ず１６バイトアラインされたアドレスとなる。
【００７０】
次に、読み出し制御部１０５は、復号画像のフレームメモリ（Ｙ）１４１の復号ブロックの左上端のアドレスｗａｄｒを数５式のように算出する（ステップＳ９０２）。
【００７１】
【数５】
2005218055.tif 000007
【００７２】
ここで、ｏｆｆｓｅｔ（ｃｕｒ，Ｙ）は、復号画像（ＣＵＲｒｅｎｔ）の輝度成分のフレームメモリ（Ｙ）１４１の左上端のアドレスを示す。算出されたｗａｄｒは必ず１６バイトにアラインメントされている。
【００７３】
次に、読み出し制御部１０５によって、参照ブロックの左上端アドレスｒａｄｒの下位４ビットを０としたアドレスから１６バイト（１２８ビット）の画像データを読み出し、レジスタＲ０にロードする（ステップＳ９０３）。
【００７４】
次に、読み出し制御部１０５によって、参照ブロックの左上端アドレスｒａｄｒの下位４ビットを０としたアドレスから１６バイト隔てて隣接するアドレスから１６バイト（１２８ビット）の画像データを読み出し、レジスタＲ１にロードする（ステップＳ９０４）。
【００７５】
そして、次に書き込み制御部１０６によって、制御テーブルからバイトシャッフル制御ワードを読み出してレジスタＲ２にロードする（ステップＳ９０５）。ここで、輝度成分の動き補償処理で使用する制御テーブルは、図５で示した色差成分の動き補償処理で使用する制御テーブルと異なるものである。
【００７６】
次に、書き込み制御部１０６は、バイトシャッフル命令（例えば、ｂｓｈｕｆｆｌｅ命令）を実行し、レジスタＲ２の制御ワードに従って、レジスタＲ０とＲ１に格納された画素から動き補償に必要な画素を１６個抽出し、その実行結果、すなわち抽出された１６個の画素をレジスタＲ３に格納する（ステップＳ９０６）。
【００７７】
バイトシャッフル命令の実行後、書き込み制御部１０６は、レジスタＲ３の内容を復号ブロックの左上端のアドレスｗａｄｒから書き込む（ステップＳ９０７）。そして、読み出し制御部１０５は、参照ブロックの次のラインの先頭アドレスを取得してｒａｄｒに格納し（ステップＳ９０８）、さらに復号ブロックの次のラインの先頭アドレスを取得してｗａｄｒに格納する（ステップＳ９０９）。そして、ステップＳ９０３からＳ９０９までの処理を１６回繰り返し、マクロブロック全ての画素、すなわち１６×１６画素について上記処理を行う。これにより輝度成分の動き補償処理が完了する。
【００７８】
なお、ステップＳ９０４からＳ９０６におけるバイトシャッフル命令に関する処理は、色差成分の動き補償処理と同様に行われる。
【００７９】
このように本実施の形態の画像復号化装置では、動き補償処理部１０８の読み出し制御部１０６によって、色差成分Ｃｂ，Ｃｒを８画素ごとに交互に配置変換した画像データから、１６画素を単位としてレジスタＲ０、Ｒ１にロードして、書き込み制御部１０７によって、バイトシャッフル明細によって動き補償処理の対象となる１６画素のデータを、予め定められたバイトシャッフル制御ワードに従って抽出しているため、１６バイトの容量の一つのレジスタに色差成分ＣｂとＣｒをそれぞれ８画素ずつ配置して混在させ、ＣｂとＣｒに対する動き補償処理を、レジスタの無駄な領域を発生させずに同時に行うことができる。色差成分に対する動き補償処理は、ＣｂとＣｒとで全く共通の処理であるため、その後の動き補償に必要な処理はＣｂとＣｒとを独立に処理した場合の半分の時間で行うことができ、ＳＩＭＤ型プロセッサの並列処理を効果的に使用して動き補償処理を行うことができる。これにより、従来の輝度成分と色差成分の動き補償の処理ループ数が同等であるため処理効率の向上が望めなかった従来の画像復号化装置に比べ、色差成分の処理ループ数が輝度成分に対する動き補償処理の処理ループの半分となり、動き補償処理全体として２５％程度の処理速度向上を図ることができる。
【００８０】
また、本実施の形態の画像復号化装置では、面順次フォーマットの色差成分ＣｂとＣｒの画素データを、１６画素ごとに交互になるように配置して１ラインの中に混在させているので、１ライン中の合計の画素数が１６の倍数となり、この結果、１６バイトアライメントでの画像メモリへのアクセスしか行えないＳＩＭＤ型プロセッサにおいても、右端の画素データを処理する際に他の領域の画素データに対して悪影響を与えずに動き補償処理を行うことができる。
【００８１】
なお、本実施の形態の画像復号化装置では、面順次フォーマットの画像データを色差成分毎に交互に配置しているが、色差成分を１画素毎に配置した点順次フォーマットの画像データについても上述した動き補償処理を適用することができる。
【００８２】
また、本実施の形態の画像復号化装置では、本発明の画像処理をＭＰＥＧの色差成分に対する動き補償処理に適用しているが、同時に異なる成分の画像データに対する画像処理を行うものであれば、他の画像処理についても本発明を適用することができる。
【産業上の利用可能性】
【００８３】
以上のように、本発明にかかる画像処理装置、画像処理方法および画像処理プログラムは、画像データの画像処理に有用であり、特に、色差成分Ｃｂ，Ｃｒに対する動き補償処理を行う画像復号化装置に適している。
【図面の簡単な説明】
【００８４】
【図１】本発明の実施の形態にかかる画像復号化装置の機能的構成を示すブロック図である。
【図２】面順次フォーマットを示す説明図である。
【図３】本実施の形態の画像復号化装置で使用する画像データのフォーマットを示す説明図である。
【図４】色差信号（Ｃｂ／Ｃｒ）についての動き補償処理の手順を示すフローチャートである。
【図５】制御テーブルの内容を示す説明図である。
【図６】バイトシャッフル命令の動作を説明するための説明図である。
【図７】ｒａｄｒの下位４ビットが４であった場合ステップ５０３、Ｓ５０４を実行後のレジスタＲ０、Ｒ１の値、およびステップＳ５０６のバイトシャッフル命令実行後のレジスタＲ３の値の一例を示す説明図である。
【図８】ｒａｄｒの下位４ビットが６であった場合におけるステップ４０３、Ｓ４０４を実行後のレジスタＲ０、Ｒ１の値、およびステップＳ４０６のバイトシャッフル命令実行後のレジスタＲ３の値の一例を示す説明図である。
【図９】輝度成分の動き補償処理の手順を示すフローチャートである。
【符号の説明】
【００８５】
１００  デコーダ
１０１  可変長復号化部
１０２  逆量子化部
１０３  逆スキャン部
１０４  逆ＤＣＴ部
１０５  変換部
１０６  読み出し制御部
１０７  書き込み制御部
１０８  動き補償部
１１０  デコーダ制御部
１２０  ストリームバッファ
１３０  ストリームバッファ制御部
１４０  画像メモリ
１４１  フレームメモリ（Ｙ）
１４４  フレームメモリ（Ｃｂ／Ｃｒ）
【図１】
2005218055.tif 000008
【図２】
2005218055.tif 000009
【図３】
2005218055.tif 000010
【図４】
2005218055.tif 000011
【図５】
2005218055.tif 000012
【図６】
2005218055.tif 000013
【図７】
2005218055.tif 000014
【図８】
2005218055.tif 000015
【図９】
2005218055.tif 000016