(57)【要約】【課題】対象ピクチャへの１度のメモリアクセスで複数の参照ピクチャに対する差分絶対値和演算を並列に行なう装置であって、メモリ数を削減し、メモリ量を減少させることが可能な演算装置およびその方法を提供する。【解決手段】動画像の符号化対象ピクチャ内のブロックと参照ピクチャ内のブロックとの間の差分絶対値の和を演算する演算装置であって、複数の参照ピクチャ中の少なくとも１ブロックを記憶する複数の第１のメモリ２０５と、符号化対象ピクチャ中の少なくとも１ブロックを記憶する第２のメモリ２０６と、複数の第１のメモリ２０５の各々からのブロックの読み出しと、第２のメモリ２０６からの読み出しとを同時に行なうアクセス部２０３と、アクセス部２０３により、読み出された符号化対象ピクチャのブロックと、参照ピクチャのブロックの各々との間の差分絶対値の和を並列に演算する、２以上の差分演算部２０４とを備える。【選択図】図１
2008182471.tif 000002
【特許請求の範囲】
【請求項１】
動画像の符号化対象ピクチャ内のブロックと参照ピクチャ内のブロックとの間の差分絶対値の和を演算する演算装置であって、
複数の参照ピクチャ中の少なくとも１ブロックを記憶する複数の第１のメモリと、
符号化対象ピクチャ中の少なくとも１ブロックを記憶する第２のメモリと、
前記複数の第１のメモリの各々からのブロックの読み出しと、前記第２のメモリからのブロックの読み出しとを同時に行なうアクセス手段と、
前記アクセス手段により、読み出された前記符号化対象ピクチャのブロックと、前記参照ピクチャのブロックの各々との間の差分絶対値の和を並列に演算する、２以上の差分演算手段と
を備えることを特徴とする演算装置。
【請求項２】
前記演算装置は、さらに、
参照方向または参照ピクチャを指定する参照ピクチャ番号情報に応じて、いずれかの第１のメモリを選択する選択部と、前記選択部により選択された第１のメモリに符号化済みのピクチャを参照ピクチャとして記憶させる記憶部を有するライトメモリ選択手段を備える
ことを特徴とする請求項１に記載の演算装置。
【請求項３】
前記各第１のメモリは、Ｎ画素×Ｎ画素のサブブロックを少なくとも２つ記憶するための領域を有し、
前記演算装置は、さらに、
参照ピクチャに含まれるＮ画素×２Ｎ画素または２Ｎ画素×Ｎ画素のブロック中の前記サブブロック毎に複数の第１のメモリから１つを選択する選択部と、前記選択部が選択した第１のメモリに当該サブブロックを記憶させる記憶制御部を有するライトメモリ選択手段を備える
ことを特徴とする請求項１に記載の演算装置。
【請求項４】
前記ライトメモリ選択手段は、
対象ピクチャのブロックのサイズに応じて、当該対象ピクチャのブロック中のサブブロックを再配置して記憶させる第１のメモリを選択する
ことを特徴とする請求項３に記載の演算装置。
【請求項５】
前記演算装置は、さらに、
前記符号化対象ピクチャに対する参照ピクチャの参照方向または参照ピクチャを指定する参照ピクチャ番号情報に応じて、前記第１のメモリから読み出す当該参照ピクチャを選択するリードメモリ選択手段を備え、
前記アクセス手段は、リードメモリ選択手段により選択された２つの第１メモリと、前記第２メモリとからブロックをそれぞれ同時に読み出す
ことを特徴とする請求項１に記載の演算装置。
【請求項６】
動画像の符号化対象ピクチャ内のブロックと参照ピクチャ内のブロックとの間の差分絶対値の和を演算する方法であって、
複数の参照ピクチャ中の少なくとも１ブロックを記憶する複数の第１のメモリの各々からのブロックの読み出しと、符号化対象ピクチャ中の少なくとも１ブロックを記憶する第２のメモリからの読み出しとを同時に行なうアクセスステップと、
前記アクセス手段により、読み出された前記符号化対象ピクチャのブロックと、前記参照ピクチャのブロックの各々との間の差分絶対値の和を並列に演算する、２以上の差分演算ステップと
を含むことを特徴とする演算方法。
【請求項７】
動画像の符号化対象ピクチャ内のブロックと参照ピクチャ内のブロックとの間の差分絶対値の和を演算するプログラムであって、
複数の参照ピクチャ中の少なくとも１ブロックを記憶する複数の第１のメモリの各々からのブロックの読み出しと、符号化対象ピクチャ中の少なくとも１ブロックを記憶する第２のメモリからの読み出しとを同時に行なうアクセスステップと、
前記アクセス手段により、読み出された前記符号化対象ピクチャのブロックと、前記参照ピクチャのブロックの各々との間の差分絶対値の和を並列に演算する、２以上の差分演算ステップと
をコンピュータに実行させるためのプログラム。
【請求項８】
動画像の符号化対象ピクチャ内のブロックと参照ピクチャ内のブロックとの間の差分絶対値の和を演算する集積回路であって、
複数の参照ピクチャ中の少なくとも１ブロックを記憶する複数の第１のメモリと、
符号化対象ピクチャ中の少なくとも１ブロックを記憶する第２のメモリと、
前記複数の第１のメモリの各々からのブロックの読み出しと、前記第２のメモリからの読み出しとを同時に行なうアクセス手段と、
前記アクセス手段により、読み出された前記符号化対象ピクチャのブロックと、前記参照ピクチャのブロックの各々との間の差分絶対値の和を並列に演算する、２以上の差分演算手段と
を備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置およびその方法に関し、特に、動き検出処理等に用いられる差分和演算装置およびその方法に関するものである。
【背景技術】
【０００２】
Ｈ．２６４（ＩＳＯ／ＩＥＣ  １４４９６−１０  Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ）は、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｓｅｒｔｓ  Ｇｒｏｕｐ）２やＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｓｅｒｔｓ  Ｇｒｏｕｐ）４などに対して約２倍以上の圧縮率を実現できるといわれており、低帯域でのビデオ通信や、ハイビジョン画像伝送およびビデオカメラへの応用が期待されている。
【０００３】
従来のＨ．２６４の符号化装置の概要について以下に説明する。
図１６は従来のＨ．２６４の符号化方式を用いた符号化装置３００の構成を示すブロック図である。この図１６に示されるように、符号化装置３００は、直交変換部３０１と、量子化部３０２と、符号化部３０３と、逆量子化部３０４と、逆直交変換部３０５と、イントラ予測部３０６と、参照ピクチャメモリ３０７と、動き補償部３０８と、動きベクトル算出部３０９と、入力部３１０と、減算器３１１とを備えている。
【０００４】
入力部３１０は、符号化対象ピクチャをマクロブロックと呼ばれるＮ個のブロックに分割する。分割されたマクロブロックデータは順に減算器３１１および動きベクトル算出部３０９に送られる。
【０００５】
減算器３１１では符号化対象ピクチャと動き補償部３０８とにおいて動き補償された参照ピクチャの画像が供給され、この差分データが直交変換部３０１に供給される。
【０００６】
直交変換部３０１では、例えばＤＣＴ（Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ：離散コサイン変換）が行われ、その結果得られた変換係数は量子化部３０２によって量子化される。量子化されたデータは、逆量子化部３０４および逆直交変換部３０５により差分データが復元される。復元された差分データは、加算器３１２により動き補償されたデータを加算され、参照ピクチャメモリ３０７に参照ピクチャとして蓄積される。
【０００７】
符号化部３０３は、量子化された変換係数や動きベクトルなどを符号化する。符号化にはＣＡＶＬＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ：コンテキスト適応型可変長符号化方式）と呼ばれる可変長符号化方式、あるいはＣＡＢＡＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ：コンテキスト適応型２値算術符号化方式）とよばれる算出符号化方式が使われる。
【０００８】
動きベクトル算出部３０９は、参照ピクチャメモリ３０７に蓄積された参照ピクチャと入力される符号化対象の対象ピクチャとの差分をとりその絶対値和を求めてパターンマッチングすることにより動きベクトル検出を行なう。検出された動きベクトルは、動き補償部３０８に出力され予測画像が生成されて減算器３１１に送られる。こうした処理ループを１マクロブロック毎に行なうことにより符号化される。
【０００９】
また、高効率の圧縮を実現するＨ．２６４を支える技術の一つに、複数のピクチャを参照ピクチャとして用いることができるというものがある。これはＭＰＥＧ２やＭＰＥＧ４では直前のＰピクチャのみから動き補償予測を行なうのに対し、複数のピクチャを参照ピクチャとして用いて動き補償予測を行なうものである。
【００１０】
複数のピクチャを参照ピクチャとして用いると言うことは、符号化しようとする対象ピクチャと参照ピクチャをマクロブロック単位で差分をとりその絶対値和を求める（以下、差分絶対値和演算と記載。）という処理を複数の参照ピクチャに対して行なうことである。参照するピクチャが増えることは、より差分量の小さい参照ピクチャを検出することができる確率が多くなることを意味し、その結果、より効率的な動き補償予測を行なえる。
【００１１】
ここで、マクロブロックとは、１６×１６画素などのＮ×Ｍの画素の集まりである。
図１７は、図１６における差分絶対値和演算装置３０００の構成を示す図である。
【００１２】
差分絶対値和演算装置３０００は、参照ピクチャメモリ３０７と、符号化対象ピクチャメモリ３１０１と、差分絶対値和演算部３０９１とを備える。ここで、差分絶対値和演算装置３０００は、図１６に示す符号化装置３００における主に動き補償部３０８および動きベクトル算出部３０９によって構成される。
【００１３】
対象ピクチャメモリ３１０１は入力部３１０から動きベクトル算出部３０９に入力される前に設けられたメモリである。
【００１４】
差分絶対値和演算部３０９１は、符号化対象ピクチャメモリ３１０１から符号対象ピクチャを、参照ピクチャメモリ３０７から参照ピクチャを読み出して差分絶対値和演算（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｅｔｅ  Ｄｉｆｆｅｒｅｎｃｅｓ）を行なう。
【００１５】
しかしながら、複数のピクチャに対して差分絶対値和演算を行なうと、それを保持するためのメモリ量や演算量も増加する。すなわち、図１７において参照ピクチャメモリ３０７の数が増え、対象ピクチャと参照ピクチャとを読み出して絶対値差分演算をする回数が増えることに相当する。特に、ハイビジョン画角の処理に対応させようとすると、動作周波数を高くして単位時間あたりの処理量を増やすか、並列に処理化して処理量を増やすことなどが必要になる。動作周波数を上げて処理量を向上させる方法は、使用する半導体プロセスに依存するため、それ以上の処理を行なうには処理の並列化などの方法が必要となる。
【００１６】
特許文献１では、動作周波数を上げずに処理量を向上させる方法が紹介されている。ここでは、差分画像データ用と予測画像データ用とのバッファメモリをそれぞれ複数もつことで、書き込みと読み出しとを異なるバッファメモリから行い、一定画素数を処理するごとに使用するバッファメモリを切り替えるようにしている。それにより、差分画像データを連続して入力できるので、バッファメモリへのアクセスを切り替えながら連続に行なうことで全体の処理量を向上させている。
【特許文献１】特開平７−３３６６８９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかしながら、複数の参照ピクチャに対して並列的に差分絶対値和演算を行なうためには、複数の参照ピクチャを格納するメモリを多数必要とする。また、上記特許文献１にあるように、複数の参照ピクチャと符号化対象ピクチャとの差分絶対値和演算を行なうには、複数の参照ピクチャの各々に対する符号化対象ピクチャをその都度、読み出す必要がある。その結果、メモリアクセス量が増大してしまい、演算装置を動作させるための消費電力が増大してしまう。このことは、ビデオカメラのように高画質および低消費電力が要求される携帯型電子機器などの設計を困難にする。
【００１８】
本発明は、上記の問題点に鑑みてなされたものであり、対象ピクチャへの１度のメモリアクセスで複数の参照ピクチャに対する差分絶対値和演算を並列に行なう装置であって、メモリ数を削減し、メモリアクセス量を減少させることが可能な演算装置およびその方法を提供することを目的とする。
【課題を解決するための手段】
【００１９】
上記目的を達成するために、本発明に係る演算装置は、動画像の符号化対象ピクチャ内のブロックと参照ピクチャ内のブロックとの間の差分絶対値の和を演算する演算装置であって、複数の参照ピクチャ中の少なくとも１ブロックを記憶する複数の第１のメモリと、符号化対象ピクチャ中の少なくとも１ブロックを記憶する第２のメモリと、前記複数の第１のメモリの各々からのブロックの読み出しと、前記第２のメモリからの読み出しとを同時に行なうアクセス手段と、前記アクセス手段により、読み出された前記符号化対象ピクチャのブロックと、前記参照ピクチャのブロックの各々との間の差分絶対値の和を並列に演算する、２以上の差分演算手段とを備えることを特徴とする。
【００２０】
この構成により、符号化対象ピクチャと複数の参照ピクチャとに対する差分絶対値の和の演算を並列に行なうことができる。言い換えると、複数の参照ピクチャと符号化対象ピクチャとの差分絶対値和演算において、複数の参照ピクチャの各々に対して符号化対象ピクチャを繰り返し読み出すのではなく、１回だけ読み出すことで可能になる。したがって、符号化対象ピクチャ中の少なくとも１ブロックを記憶した符号化対象ピクチャメモリへの読み出しのためのアクセス回数を最小限にしつつ、符号化対象ピクチャとそれに対する差分絶対値和演算を並列に行なうことができ、メモリアクセス量を減少させる演算装置を実現することができる。
【００２１】
このとき、前記演算装置は、さらに、参照方向または参照ピクチャを指定する参照ピクチャ番号情報に応じて、いずれかの第１のメモリを選択する選択部と、前記選択部により選択された第１のメモリに符号化済みのピクチャを参照ピクチャとして記憶させる記憶部を有するライトメモリ選択手段を備えてもよい。
【００２２】
例えば、Ｈ．２６４では、複数のピクチャを参照ピクチャとして用いることができるが、この構成により、参照ピクチャのピクチャタイプがＢピクチャあるいはＰピクチャのいずれかであってもメモリが競合せずに対象ピクチャに対する複数の参照ピクチャを同時に読み出せるように、複数の参照ピクチャを参照ピクチャメモリに記憶させることができる。それにより、参照ピクチャメモリ数は無用に増やすことなく最小限の個数の構成となり、符号化対象ピクチャを記憶した符号化対象ピクチャメモリへの読み出しのためのアクセス回数を最小限にしつつ、符号化対象ピクチャと複数の参照ピクチャとを同時に読み出せるので、符号化対象ピクチャと複数の参照ピクチャとに対する差分絶対値和演算を並列に行なうことができる。
【００２３】
また、前記各第１のメモリは、Ｎ画素×Ｎ画素のサブブロックを少なくとも２つ記憶するための領域を有し、前記演算装置は、さらに、参照ピクチャに含まれるＮ画素×２Ｎ画素または２Ｎ画素×Ｎ画素のブロック中の前記サブブロック毎に複数の第１のメモリから１つを選択する選択部と、前記選択部が選択した第１のメモリに当該サブブロックを記憶させる記憶制御部を有するライトメモリ選択手段を備えてもよい。このとき、前記ライトメモリ選択手段は、対象ピクチャのブロックのサイズに応じて、当該対象ピクチャのブロック中のサブブロックを再配置して記憶させる第１のメモリを選択してもよい。
【００２４】
この構成により、符号化対象ピクチャのブロックに対する複数の参照ピクチャのブロック各々をブロックサイズに応じてブロック中のサブマクロブロックを再配置して参照ピクチャメモリに記憶させることでメモリが競合せずに同時に読み出せるようにできる。それにより、参照ピクチャメモリ数を無用に増やすことなく最小限の個数の構成にすることができる。
【００２５】
また、前記演算装置は、さらに、前記符号化対象ピクチャに対する参照ピクチャの参照方向または参照ピクチャを指定する参照ピクチャ番号情報に応じて、前記第１のメモリから読み出す当該参照ピクチャを選択するリードメモリ選択手段を備え、前記アクセス手段は、リードメモリ選択手段により選択された２つの第１メモリと、前記第２メモリとからブロックをそれぞれ同時に読み出してもよい。
【００２６】
この構成により、参照ピクチャのピクチャタイプがＢピクチャあるいはＰピクチャのいずれかであっても符号化対象ピクチャと、それに対応する複数の参照ピクチャとを同時に読み出すことができる。
【００２７】
なお、本発明は、装置として実現するだけでなく、このような装置が備える処理手段を備える集積回路として実現したり、その装置を構成する処理手段をステップとする方法として実現したり、それらステップをコンピュータに実行させるプログラムとして実現したり、そのプログラムを示す情報、データまたは信号として実現したりすることもできる。そして、それらプログラム、情報、データおよび信号は、ＣＤ−ＲＯＭ等の記録媒体やインターネット等の通信媒体を介して配信してもよい。
【発明の効果】
【００２８】
本発明によれば、対象ピクチャへの１度のメモリアクセスで複数の参照ピクチャに対する差分絶対値和演算を並列に行なう装置であって、メモリ数を削減し、メモリアクセス量を減少させることが可能な演算装置およびその方法を実現することができる。よって、ビデオカメラのように高画質かつ低消費電力が要求される携帯型電子機器が普及しつつある今日における本発明の実用的価値は極めて高い。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施の形態１について図面を参照して説明する。
【００３０】
（実施の形態１）
図１は本発明に係る差分絶対値和演算装置２００の構成を示すブロック図である。
【００３１】
この図１に示されるように、差分絶対値和演算装置２００は、動画像の符号化対象ピクチャ内のブロックと参照ピクチャ内のブロックとの間の差分絶対値の和を演算する演算装置であって、ライトメモリ選択部２０１と、リードメモリ選択部２０２と、同期アクセス部２０３と、差分絶対値和演算部２０４と、参照ピクチャメモリ２０５と、対象ピクチャメモリ２０６とを備えている。
【００３２】
差分絶対値和演算装置２００は、図１４に示す符号化装置３００における主に動き補償部３０８および動きベクトル算出部３０９において構成され、参照ピクチャメモリ２０５はピクチャメモリ３０７に相当し、対象ピクチャメモリ２０６は入力部３１０から入力される手前に設けられた符号化対象ピクチャメモリ３１０１に相当する。
【００３３】
参照ピクチャメモリ２０５は、本発明に係る複数の第１のメモリに相当し、複数の参照ピクチャ中の少なくとも１ブロックを記憶する。具体的には、入力された複数の参照ピクチャそれぞれが、ブロックに分割され２つの参照ピクチャメモリ２０５に格納される。
【００３４】
符号化対象ピクチャメモリ２０６は、本発明に係る第２のメモリに相当し、符号化対象ピクチャ中の少なくとも１ブロックを記憶する。具体的には、入力された符号化対象ピクチャがブロックに分割され１つの符号化対象ピクチャメモリ２０６に格納される。
【００３５】
ライトメモリ選択部２０１は、本発明に係るライトメモリ選択手段に相当し、参照方向または参照ピクチャを指定する参照ピクチャ番号情報に応じて、いずれかの第１のメモリを選択する選択部と、前記選択部により選択された第１のメモリに符号化済みのピクチャを参照ピクチャとして記憶させる記憶部を有する。具体的には、ライトメモリ選択部２０１に入力される参照ピクチャについての情報に応じて、例えば、参照ピクチャの参照方向または参照ピクチャ番号などに応じて書き込む参照ピクチャメモリ２０５を選択する。
【００３６】
リードメモリ選択部２０２は、本発明に係るリードメモリ選択手段に相当し、前符号化対象ピクチャに対する参照ピクチャの参照方向または参照ピクチャを指定する参照ピクチャ番号情報に応じて、前記第１のメモリから読み出す当該参照ピクチャを選択する。具体的には、参照ピクチャメモリ２０５に格納された参照ピクチャのブロックを、参照ピクチャについての情報、例えば、参照方向あるいは参照ピクチャ番号などに基づいて読み出す参照ピクチャメモリ２０５と参照ピクチャのブロックとを選択する。また、リードメモリ選択部２０２は、複数の参照ピクチャメモリ２０５に対して、同時にアクセスできる構成であり、これらを同時に読み出すことができる。
【００３７】
差分絶対値和演算部２０４は、本発明に係る差分演算手段に相当し、前記アクセス手段により、読み出された前記符号化対象ピクチャのブロックと、前記参照ピクチャのブロックの各々との間の差分絶対値の和を並列に演算する。具体的には、２つの同じ機能をもつ演算器からなり、それぞれ同期アクセス部２０３から与えられる参照ピクチャと符号化対象ピクチャとのブロック単位での差分絶対値を演算しそれらの総和を演算して出力する。すなわち、符号化しようとする対象ピクチャと参照ピクチャをブロック単位でブロック内のすべての画素の差分をとりその絶対値和を求めるものである。
【００３８】
同期アクセス部２０３は、本発明に係るアクセス手段に相当し、前記複数の第１のメモリの各々からのブロックの読み出しと、前記第２のメモリからの読み出しとを同時に行なう。具体的には、参照ピクチャメモリ２０５からの参照ピクチャのブロックと、符号化対象ピクチャメモリ２０６からの符号化対象ピクチャのブロックとの読み出しを同期させる制御を行なう。
【００３９】
また、同期アクセス部２０３は、符号化対象ピクチャのブロックの読み出し順序で複数の参照ピクチャのブロックを読み出して、複数の差分絶対値和演算部２０４に同時に与えれば、符号化対象ピクチャのブロックに対しては１回の読み出しで２つの参照ピクチャのブロックとの差分絶対値和演算が可能となる。つまり、同期アクセス部２０３は、リードメモリ選択部２０２による参照ピクチャの複数のブロックの読み出しと、符号化対象ピクチャメモリ２０６からの符号化対象ピクチャのブロックの読み出しタイミングを揃えて同時に符号化対象ピクチャのブロックおよび参照ピクチャのブロックを複数の差分絶対値和演算部２０４に与えることができる。従来、各々の参照ピクチャメモリ２０５から参照ピクチャのブロックを読み出すたびに符号化対象ピクチャのブロックを取得し、取得した符号化対象ピクチャのブロックおよび読み出した参照ピクチャのブロックを同時に差分絶対値和演算部に与える必要があったが、これを削減することができる。つまり、符号化対象ピクチャのブロックについては、その都度、繰り返し読み出すという無駄を回避している。
【００４０】
図２は、符号化対象ピクチャのブロックに対して１回の読み出しで複数の参照ピクチャのブロックとの差分絶対値和演算することを概念的に示した図である。
【００４１】
差分絶対値和演算部２０４（２０４−１および２０４−２）は、符号化しようとする対象ピクチャと参照ピクチャをブロック単位（マクロブロック）でブロック内のすべての画素の差分をとりその絶対値和を求める。ここでは、一例として、参照ピクチャおよび対象ピクチャのブロックとして、ブロックサイズが１６×１６画素のブロック（マクロブロック）を対象に８×８の処理単位（サブブロック）に分割されてマクロブロック内の差分絶対値和を演算する場合を示す。
【００４２】
ところで、Ｈ．２６４では、例えば１６×１６画素のブロックサイズのマクロブロックで差分絶対値和演算を求める際には、そのマクロブロックにおける、例えば８×８の処理単位（サブブロック）に分割して演算する。すなわち、処理単位（サブブロック）でマクロブロック内のすべての画素の差分をとりその絶対値和を求める。また、Ｈ．２６４では、１６×１６画素から４×４画素までの７種類のブロックサイズが用意されており、このブロックサイズの中から最適なものを切り替えてマクロブロックとして用いられる。また、処理単位（サブブロック）は８×８画素に限定されない。
【００４３】
図２において、２つの参照ピクチャのマクロブロック６００および６０１における処理単位の分割位置が左上のサブブロック６０１Ａおよび６０２Ａの２つのサブブロックの読み出しと、符号化対象ピクチャのマクロブロック６０３における処理単位の分割位置が左上のサブブロック６０３Ａとの読み出しとが、タイミングを揃えて同時になされる。そして、２つの差分絶対値和演算部２０４−１および２０４−２それぞれに符号化対象ピクチャのマクロブロック６０３のサブブロック６０３Ａと参照ピクチャの２つのサブブロック６０１Ａまたは６０２Ａとが与えられる。そして、それぞれ２つの差分絶対値和演算部２０４で並列に差分絶対値和演算される。
【００４４】
なお、上述では、符号化対象ピクチャと複数の参照ピクチャのサブブロックに対して並列に差分絶対値和演算する場合についての概念を説明したが、符号化対象ピクチャと複数の参照ピクチャのブロックに対して並列に差分絶対値和演算する場合も同様である。この場合には、上述の６００および６０１が参照ピクチャに相当し、６００Ａおよび６０１Ａが参照ピクチャのブロック（マクロブロック）に相当する。６０３は対象ピクチャに相当し、６０３Ａは対象ピクチャのブロックに相当する。
【００４５】
以上のように、対象ピクチャのブロックに対して１度のメモリアクセスで複数の参照ピクチャのブロックに対する差分絶対値和演算を並列に行なうことができる。
【００４６】
図３は、複数のピクチャに対する差分絶対値和演算を並列に行って動きベクトルが検出されるまでの処理手順を示すフローチャートである。
【００４７】
まず、差分絶対値和演算装置２００において、ライトメモリ選択部２０１は、入力される参照ピクチャについての情報から参照ピクチャのピクチャタイプを検出する（Ｓ３０１）。
【００４８】
ここで、参照ピクチャのピクチャタイプとしては、Ｐピクチャ（Ｐｒｅｄｉｃｔｉｖｅ  ｐｉｃｔｕｒｅ：画面間の順方向予測符号化によって得られるピクチャ）あるいは（Ｂｉ−ｄｉｒｅｃｔｉｏｎａｌ  ｐｒｅｄｉｃｔｉｖｅ  ｐｉｃｔｕｒｅ：過去と未来の双方向から予測符号化によって得られるピクチャ）があり、このどちらかであるかを検出する。
【００４９】
次に、ライトメモリ選択部２０１は、入力される参照ピクチャについての情報から参照ピクチャのブロック（マクロブロック）における処理単位（サブブロック）の分割位置を検出する（Ｓ３０２）。ここで、例えば１６×１６画素のブロックサイズであるマクロブロックを８×８画素の単位で処理する場合には、マクロブロックは４つの８×８画素の処理単位（サブブロック）で構成され、その位置（分割位置）は、左上、右上、左上、右下となる。
【００５０】
また、このとき、ライトメモリ選択部２０１は、参照ピクチャについての情報、例えば、参照ピクチャの参照方向や参照ピクチャ番号などの情報を同時に検出している。
【００５１】
次に、ライトメモリ選択部２０１は、上記検出結果に基づき、すわなち、得られた参照ピクチャについての情報に応じて、参照ピクチャのブロックを書き込む参照ピクチャメモリ２０５を選択する。
【００５２】
次に、リードメモリ選択部２０２は、参照ピクチャメモリ２０５に格納された参照ピクチャのブロックを、参照ピクチャの情報、例えば、参照方向あるいは参照ピクチャ番号の情報などに基づいて読み出す参照ピクチャメモリ２０５と参照ピクチャのブロックとを選択する。
【００５３】
次に、同期アクセス部２０３は、リードメモリ選択部２０２による複数の参照ピクチャのブロックの読み出しと、符号化対象ピクチャメモリ２０６からの符号化対象ピクチャのブロックの読み出しを同時に行なう（Ｓ３０４）。すなわち、参照ピクチャメモリ２０５に格納されている複数の参照ピクチャのブロックと符号化対象ピクチャメモリ２０６に格納されている１つの符号化対象ピクチャのブロックとの読み出しタイミングを同期させて同時に読み出す。
【００５４】
次に、同期アクセス部２０３は、読み出した参照ピクチャのブロックと符号化対象ピクチャのブロックとを差分絶対値和演算部２０４に与える。そして、差分絶対値和演算部２０４では、与えられた符号化対象ピクチャのブロックおよび参照ピクチャのブロックから差分絶対値和演算され、動きベクトルが検出される（Ｓ３０５）。
【００５５】
以下、具体例を示しながら、本発明の実施の形態をさらに詳しく説明する。
図４は、符号化対象ピクチャのブロックと符号化対象ピクチャのブロックが参照ピクチャのブロックとして用いることのできる複数の参照ピクチャのブロックとの関係を概念的に示した図である。
【００５６】
高効率の圧縮を実現するＨ．２６４では、画面内符号化と前方予測（規格では、Ｌ０予測といい、以下Ｌ０と記載する。）を行なうＰピクチャと、画面内符号化に加えて前方予測（Ｌ０）および後方予測（規格では、Ｌ１予測といい、以下Ｌ１と記載する。）から双方向予測を行なうＢピクチャなどが規定されている。
【００５７】
図４において、Ｌ０およびＬ１は参照ピクチャの参照方向を示しており、Ｌ０は前方予測として定義されている方向、Ｌ１は後方予測として定義されている方向であり、これは上述の通りである。
【００５８】
ところで、Ｈ．２６４では、複数の参照ピクチャの候補からブロック単位で任意のピクチャを参照ピクチャとして用いることができるので、ブロック毎にどの参照ピクチャを参照しているのかを示す必要がある。そこで、参照ピクチャを特定し区別するために各参照ピクチャに割り当てた識別番号を参照ピクチャ番号と呼んでいる。
【００５９】
図４では、符号化対象ピクチャがＬ０（前方予測）の２つの参照ピクチャを用いる場合を示しており、Ｌ０の２つの参照ピクチャを特定し区別するために用いられる情報である参照ピクチャ番号を、例えばｉｄｘ０およびｉｄｘ１としている。Ｌ１（後方予測）でも同様に、符号化対象ピクチャがＬ１（後方予測）の２つの参照ピクチャを用いる場合を示しており、Ｌ１（後方予測）の２つの参照ピクチャを特定し区別するために用いられる情報である参照ピクチャ番号を例えば、ｉｄｘ０およびｉｄｘ１としている。
【００６０】
図１におけるライトメモリ選択部２０１は、入力される参照ピクチャに関する情報からの参照ピクチャの参照方向または参照ピクチャ番号などに応じて書き込む参照ピクチャメモリ２０５を選択する。
【００６１】
図５は、２つの物理メモリから構成される参照ピクチャメモリ２０５（２０５−１、２０５−２）に参照ピクチャのブロック（マクロブロック）を処理単位（サブブロック）で格納する場合の一例を概念的に説明する図である。
【００６２】
ブロックサイズが１６×１６画素である参照ピクチャのマクロブロックを参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納する場合、参照ピクチャのマクロブロックは、その半分のブロックサイズである８×１６画素の処理単位（サブブロック）、例えばサブブロック５０１およびサブブロック５０２に分割される。参照ピクチャのピクチャタイプがＢピクチャで、参照方向がＬ０（前方予測）であった場合には、サブブロック５０１を参照ピクチャメモリ２０５−１に格納し、サブブロック５０２は参照ピクチャメモリ２０５−２に格納する。逆に、参照ピクチャのピクチャタイプがＢピクチャで、参照方向がＬ１（後方予測）であった場合には、サブブロック５０１を参照ピクチャメモリ２０５−２に格納し、サブブロック５０２を、参照ピクチャメモリ２０５−１に格納する。
【００６３】
なお、分割して格納する参照ピクチャのマクロブロックの分割境界付近の画素については、並列処理を可能にするために動き検出や動き補償で必要となる画素分を多重にメモリに格納している。
【００６４】
また、図５において、参照ピクチャのピクチャタイプがＰピクチャであった場合には、上述した予測方向（Ｌ０およびＬ１）ではなく、参照ピクチャ番号の情報で格納する参照ピクチャメモリ２０５（２０５−１および２０５−２）を決定する。
【００６５】
図６は、ブロックサイズが１６×１６画素であるＰピクチャのマクロブロックを参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納する様子を示した図である。
【００６６】
図６では、まず、参照ピクチャ番号が０であるマクロブロックを参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納し、次に、参照ピクチャ番号が１であるマクロブロックを参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納する様子を概念的に説明する。また、図６では、ブロックサイズが１６×１６画素である参照ピクチャのマクロブロックは、その４分の１のブロックサイズである８×８画素の処理単位（サブブロック）に分割されて処理される場合を示している。図６において、参照ピクチャのマクロブロック中に記載されたＵＬ、ＤＬ、ＵＲ、ＤＲはそれぞれ、ブロックサイズが１６×１６画素のマクロブロックをその４分の１である８×８画素の処理単位で分割した場合の分割位置を示している。ＵＬ（Ｕｐｐｅｒ  Ｌｅｆｔ）は左上の位置を、ＵＲ（Ｕｐｐｅｒ  Ｒｉｇｈｔ）は右上の位置を、ＤＬ（Ｄｏｗｎ  Ｌｅｆｔ）は左下の位置を、ＤＲ（Ｄｏｗｎ  Ｒｉｇｈｔ）は右下の位置を示している。
【００６７】
図６では、Ｐピクチャのマクロブロックは、その４分の１のブロックサイズである８×８画素の処理単位（サブブロック）として、ＵＬ、ＤＬ、ＵＲおよびＤＲに分割される。参照ピクチャ番号が０であった場合には、サブブロックＵＬおよびＤＬを参照ピクチャメモリ２０５−１に格納し、サブブロックＤＬおよびＵＲは参照ピクチャメモリ２０５−２に格納する。次に格納する参照ピクチャのピクチャタイプがＰピクチャのマクロブロックで、参照ピクチャ番号が１であった場合には、サブブロックＵＬおよびＤＬを参照ピクチャメモリ２０５−２に格納し、サブブロックＤＬおよびＵＲを、参照ピクチャメモリ２０５−１に格納する。
【００６８】
なお、上述した図５におけるサブブロック５０１は、ＵＬおよびＤＬのように８×８画素の処理単位で２つ占有しているように示され、図５におけるサブブロック５０２はＤＬおよびＵＲで示される処理単位（サブブロック）で２つ占有しているように示される。このように、マクロブロックにおける処理単位（サブブロック）のブロックサイズは８×８画素に限定されない。
【００６９】
図７は、ブロックサイズが１６×８画素であるＰピクチャのマクロブロックを参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納する様子を示した図である。図６のマクロブロックのブロックサイズが１６×８画素である場合に相当する。
【００７０】
図７では、Ｐピクチャのマクロブロックは、その４分の１のブロックサイズである８×８画素の処理単位（サブブロック）として、ＵＬ、ＵＲに分割される。参照ピクチャ番号が０であった場合には、サブブロックＵＬを参照ピクチャメモリ２０５−１に格納し、サブブロックＵＲは参照ピクチャメモリ２０５−２に格納する。次に格納する参照ピクチャのピクチャタイプがＰピクチャのマクロブロックで、参照ピクチャ番号が１であった場合には、サブブロックＵＬを参照ピクチャメモリ２０５−２に格納し、サブブロックＵＲを、参照ピクチャメモリ２０５−１に格納する。
【００７１】
このように、参照ピクチャメモリ２０５−１および参照ピクチャメモリ２０５−２で参照ピクチャ番号の違う参照ピクチャのブロックが格納されてゆくことで、図１におけるリードメモリ選択部２０２では、異なる参照ピクチャのブロックを同時に読み出すことができる。
【００７２】
それにより、参照ピクチャメモリ数を無用に増やすことなく最小限の個数の構成にしつつ、差分絶対値和演算部２０４では１度の符号化対象ピクチャのブロックの読み出しで複数の参照ピクチャのブロックに対して並列に差分絶対値和演算を行なうことができる。
【００７３】
図８は、参照ピクチャのブロックを参照ピクチャメモリ２０５に格納するまでの処理手順を示すフローチャートである。
【００７４】
まず、図１における差分絶対値和演算装置２００において、ライトメモリ選択部２０１は、入力された参照ピクチャに関する情報から参照ピクチャのピクチャタイプを検出する。このとき、検出された参照ピクチャタイプがＰピクチャかどうかを確認する（Ｓ９０１）。
【００７５】
次に、確認された参照ピクチャタイプがＰピクチャの場合（Ｓ９０１のＹｅｓの場合）、ライトメモリ選択部２０１は、入力された参照ピクチャに関する情報から参照ピクチャを区別する参照番号である参照ピクチャ番号を確認する（Ｓ９０２）。
【００７６】
次に、ライトメモリ選択部２０１は、参照ピクチャの確認した参照ピクチャ番号に応じて参照ピクチャメモリ２０５を決定し（Ｓ９０３）、決定した参照ピクチャメモリ２０５に参照ピクチャのブロックを格納する（Ｓ９０４）。
【００７７】
また、図１における差分絶対値和演算装置２００において、ライトメモリ選択部２０１が確認した参照ピクチャの参照ピクチャタイプがＰピクチャでない場合（Ｓ９０１のＮｏの場合）、ライトメモリ選択部２０１は、参照ピクチャタイプがＢピクチャかどうかを確認する（Ｓ９０５）。
【００７８】
次に、確認した参照ピクチャタイプがＢピクチャの場合（Ｓ９０５のＹｅｓの場合）、入力された参照ピクチャのＬ１（前方予測）あるいはＬ０（後方予測）の予測方向を確認する（Ｓ９０６）。
【００７９】
次に、ライトメモリ選択部２０１は、参照ピクチャの確認した予測方向に応じて参照ピクチャメモリ２０５を決定し（Ｓ９０７）、決定した参照ピクチャメモリ２０５に参照ピクチャのブロックを格納する（Ｓ９０４）。
【００８０】
次に、本発明の実施の形態１のその他の例として、ブロックサイズが１６×８画素である参照ピクチャのマクロブロックが参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納される場合を説明する。
【００８１】
図９は、２つの物理メモリから構成される参照ピクチャメモリ２０５（２０５−１および２０５−２）に参照ピクチャのブロック（マクロブロック）を処理単位（サブブロック）で格納する場合の一例を概念的に説明するための図である。ブロックサイズが１６×８画素である参照ピクチャのマクロブロックが参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納される場合において、参照ピクチャのマクロブロックは、その半分のブロックサイズである８×８画素の処理単位（サブブロック）、例えばサブブロック７０１およびサブブロック７０２に分割され、参照方向がＬ０（前方予測）であった場合には、サブブロック７０１は参照ピクチャメモリ２０５−１に格納され、サブブロック７０２は参照ピクチャメモリ２０５−２に格納される。参照方向がＬ１（後方予測）であった場合は、サブブロック７０１は参照ピクチャメモリ２０５−２に格納され、サブブロック７０２は、参照ピクチャメモリ２０５−１に格納される。
【００８２】
ところで、リードメモリ選択部２０２は、参照ピクチャがＢピクチャである場合には、Ｌ０（前方予測）およびＬ１（後方予測）の情報に基づいて読み出す参照ピクチャメモリ２０５を選択する。例えば、図５で上述したように格納された参照ピクチャのサブブロック５０１および５０２を読み出す場合には、参照ピクチャメモリ２０５−１を選択し格納されているサブブロック５０１を読み出し、参照ピクチャメモリ２０５−２を選択し格納されているサブブロック５０２を読み出す。ブロックサイズが１６×８画素や８×１６画素についても同様となる。
【００８３】
また、リードメモリ選択部２０２は、参照ピクチャがＰピクチャである場合には、参照ピクチャ番号に基づいて格納する参照ピクチャメモリ２０５を選択する。つまり、リードメモリ選択部２０２は、ライトメモリ選択部２０１で書き込む際に参照ピクチャメモリ２０５を選択したルールと同じルールで、読み出す参照ピクチャメモリ２０５を選択する。ここで、リードメモリ選択部２０２の大きな特徴は、物理メモリのメモリ競合が発生しないアクセスであれば、異なる複数の参照ピクチャのブロックに同時にアクセスすることができることである。例えば、図６で示されるように、参照ピクチャ番号が０であるＰピクチャのマクロブロックのサブブロックＵＬおよびＤＬは、参照ピクチャメモリ２０５−１に格納され、参照ピクチャ番号が１であるＰピクチャのマクロブロックのサブブロックＵＬおよびＤＬは、参照ピクチャメモリ２０５−２に格納されている。符号化対象ピクチャのブロックに対する複数の参照ピクチャのブロックがメモリ格納時において、別の物理メモリに格納されるので同時にアクセスが可能となる。
【００８４】
このように、ライトメモリ選択部２０１により、参照ピクチャメモリ２０５（２０５−１および２０５−２）に参照方向または処理単位（サブブロック）の分割位置の違う参照ピクチャのブロックが格納されることで、リードメモリ選択部２０２では、符号化対象ピクチャのブロックに対する複数の参照ピクチャのブロックを同時に読み出すことができる。それにより、参照ピクチャメモリ数を最小限の個数の構成にしつつ、差分絶対値和演算部２０４では対象ピクチャへの１度のメモリアクセスで複数の参照ピクチャのブロックに対する差分絶対値和演算を並列に行なうことができる。
【００８５】
なお、参照ピクチャメモリ２０５は、参照ピクチャを１フレームずつ記憶するメモリでもよく、参照ピクチャ中の少なくとも１ブロックを記憶するメモリで構成されてもよい。さらに、参照ピクチャメモリとは別に参照ピクチャ中の少なくとも１ブロック、例えばマクロブロックあるいはマクロブロックの処理単位（サブブロック）を記憶するバッファメモリとして構成してもよい。
【００８６】
以上より、本発明の実施の形態１においては、複数の参照ピクチャのブロックを、参照方向や参照ピクチャ番号、参照ピクチャのブロック（マクロブロック）における処理単位（サブブロック）の分割位置などの参照ピクチャに関する情報に応じて、参照ピクチャメモリに格納する。それにより、参照ピクチャメモリ数を無用に増やすことなく最小限の個数からなる構成にしながら、すなわち、符号化対象ピクチャを格納した符号化対象ピクチャメモリへの読み出しのためのアクセス回数を最小限にしつつ、格納された複数の参照ピクチャと符号化対象ピクチャを同時に読み出し、複数のピクチャに対する差分絶対値和演算を並列に行なうことができる。
【００８７】
以上より、対象ピクチャへの１度のメモリアクセスで複数の参照ピクチャに対する差分絶対値和演算を並列に行なう装置であって、メモリ数を削減し、メモリアクセス量を減少させることが可能な演算装置およびその方法を実現することができる。
【００８８】
（実施の形態２）
次に、本発明の実施の形態２について、図面を用いて説明する。
【００８９】
本実施の形態２の差分絶対値和演算装置２００の構成は、図１に示した実施の形態１と同じであるので、説明を省略する。
【００９０】
実施の形態１においては、参照ピクチャのマクロブロックのブロックサイズが同じ場合について説明したが、Ｈ．２６４規格では、参照ピクチャのマクロブロックのブロックサイズが同じでなくても良い。しかし、その場合には、実施例１における参照ピクチャメモリ２０５への格納方法では、参照ピクチャメモリでメモリアクセス競合してしまい、符号化対象ピクチャに対する複数の参照ピクチャを同時に読み出すことができない。
【００９１】
図１０は、参照ピクチャのマクロブロックのブロックサイズが異なる場合において、参照ピクチャメモリでメモリアクセス競合してしまい、符号化対象ピクチャに対する複数の参照ピクチャを同時に読み出すことができないことを説明するための概念図である。
【００９２】
ここで、参照ピクチャのマクロブロック１１００または１１０１にＵＬ、ＤＬおよびＵＲが記載されているが、上述したように、参照ピクチャのマクロブロック中に記載されたＵＬ、ＤＬ、ＵＲ、ＤＲはそれぞれ、ブロックサイズが１６×１６画素のマクロブロックをその４分の１である８×８画素の処理単位（サブブロック）で分割する場合の分割位置を示している。ＵＬ（Ｕｐｐｅｒ  Ｌｅｆｔ）は左上の位置を、ＵＲ（Ｕｐｐｅｒ  Ｒｉｇｈｔ）は右上の位置を、ＤＬ（Ｄｏｗｎ  Ｌｅｆｔ）は左下の位置を、ＤＲ（Ｄｏｗｎ  Ｒｉｇｈｔ）は右下の位置を示している。
【００９３】
図１０において、入力される参照ピクチャデータには、２つの参照ピクチャのマクロブロック１１００および１１０１がある。参照ピクチャのマクロブロック１１００のブロックサイズは、１６×８画素であり、参照ピクチャのマクロブロック１１０１のブロックサイズは、８×１６画素である。これらの参照ピクチャのマクロブロック１１００および１１０１に対応する符号化対象ピクチャデータの対象ピクチャのマクロブロック１１０２は、１６×１６画素のマクロブロックサイズである。
【００９４】
また、参照ピクチャのマクロブロック１１００および１１０１は、ブロックサイズが８×８画素の処理単位（サブブロック）に分割されて処理され、図１０に示す下から一つずつ順番に参照ピクチャメモリ２０５へ格納される。すなわち、参照ピクチャのマクロブロック１１０１のサブブロックＤＬ１およびサブブロックＵＬ１と参照ピクチャのマクロブロック１１００のサブブロックＵＬ２は順番に、参照ピクチャメモリ２０５−１に格納され、参照ピクチャのマクロブロック１１００のサブブロックＵＲ２は、参照ピクチャメモリ２０５−２に格納される。なお、同じ参照ピクチャメモリ２０５に格納された複数のブロックサイズが８×８画素の処理単位（サブブロック）は同時にはアクセスできない。すなわち、参照ピクチャメモリ２０５−１に格納されている参照ピクチャのマクロブロック１１０１のサブブロックＤＬ１およびＵＬ１と参照ピクチャのマクロブロック１１００のサブブロックＵＬ２は同時にはアクセスできない。
【００９５】
したがって、符号化対象ピクチャのマクロブロック１１０２のサブブロックＵＬ０に対応する参照ピクチャのマクロブロック１１００のサブブロックＵＬ２と参照ピクチャのマクロブロック１１０１のサブブロックＵＬ１とを同時に読み出すことができず、差分絶対値和演算部２０４−１および２０４−２にて並列に差分絶対値和演算することができない。すなわち、参照ピクチャのマクロブロック１１００のサブブロックＵＬ２および参照ピクチャのマクロブロック１１０１のサブブロックＵＬ１は、例えば、サブブロックＵＬ１の読み出しの後に、再度サブブロックＵＬ２の読み出しを行なうなど、別のタイミングで読み出す必要があり、その都度、対象ピクチャのマクロブロック１１０２のサブブロックＵＬ０を読み出して差分絶対値和演算部２０４にて差分絶対値和演算することになる。
【００９６】
図１１は、参照ピクチャのマクロブロックのブロックサイズが異なる場合に、参照ピクチャメモリ２０５（２０５−１および２０５−２）に参照ピクチャのマクロブロックにおける処理単位の分割位置を再配置して格納することにより符号化対象ピクチャに対する複数の参照ピクチャを同時に読み出せることを説明するための図である。
【００９７】
まず、参照ピクチャのマクロブロック１１０１のサブブロックＤＬ１、ＵＬ１および参照ピクチャのマクロブロック１１００のサブブロックＵＬ２およびＵＲ２において、符号化対象ピクチャと比較するマクロブロックにおける処理単位（サブブロック）の分割位置に応じて、例えば、ブロックサイズが８×８画素の処理単位（サブブロック）であるＵＬ２に応じて、参照ピクチャのマクロブロック１１０１のサブブロックＵＬ１およびＤＬ１の上下を反転にし、さらに縦横を入れ替える。具体的には、ブロックサイズが８×１６画素の参照ピクチャのマクロブロック１１０１内で上と下の位置にあるサブブロックＵＬ１およびＤＬ１の配置を、上の位置にサブブロックＤＬ１かつ下の位置にサブブロックＵＬ１となるように上下の配置を入れ替える（以下、この操作をシャッフルと呼ぶ。）。そして、ブロックサイズが８×１６画素である参照ピクチャのマクロブロック１１０１をブロックサイズが１６×８画素である参照ピクチャのマクロブロックとなるように配置を入れ替える。その結果、ブロックサイズが１６×８画素である参照ピクチャのマクロブロック内で、左の位置にサブブロックＤＬ１かつ右の位置にサブブロックＵＬ１となる。すなわち、シャッフルしたマクロブロックの縦の関係を横の関係となるように変換する（以下、この操作をまとめて再配置と呼ぶ。）。
【００９８】
次に、参照ピクチャのマクロブロック１１００のサブブロックＵＬ２およびＵＲ２と、シャッフルして縦と横の関係を変換した参照ピクチャのマクロブロック１１０１のサブブロックＤＬ１およびＵＬ１を、参照ピクチャメモリ２０５に格納する。このとき、参照ピクチャのマクロブロック１１００のサブブロックＵＬ２および参照ピクチャのマクロブロック１１０１のサブブロックＤＬ１は参照ピクチャメモリ２０５−１に、参照ピクチャのマクロブロック１１００のサブブロックＵＲ２および参照ピクチャのマクロブロック１１０１のサブブロックＵＬ１を参照ピクチャメモリ２０５−２に順に格納する。
【００９９】
以上より、対象ピクチャのマクロブロック１１０２のサブブロックＵＬ０に対応する参照ピクチャのマクロブロック１１００のサブブロックＵＬ２および参照ピクチャのマクロブロック１１０１のサブブロックＵＬ１は再配置されて、それぞれ別の参照ピクチャメモリ２０５−１および２０５−２に格納されるので、リードメモリ選択部２０２は、対象ピクチャのブロックに対応する２つの参照ピクチャのブロックを同時に読み出すことができる。したがって、参照ピクチャメモリ数を最小限の個数の構成にしつつ、差分絶対値和演算部２０４−１および２０４−２では、対象ピクチャへの１度のメモリアクセスで複数の参照ピクチャに対する差分絶対値和演算を並列に行なうことができる。
【０１００】
なお、参照ピクチャのマクロブロック１１０１のサブブロックＤＬ１およびＵＬ１を参照ピクチャメモリ２０５に再配置して格納する方法として、マクロブロック内のサブブロックＤＬ１およびＵＬ１の上下の配置を入れ替えてからマクロブロックの縦の関係を横の関係となるように変換したが、マクロブロックの縦の関係を横の関係にしてからマクロブロック内のサブブロックＵＬ１およびＤＬ１の左右の配置を入れ替えても良い。
【０１０１】
また、参照ピクチャのマクロブロック１１０１について再配置して参照ピクチャメモリ２０５に格納するのではなく、参照ピクチャ１のマクロブロック１００について再配置して参照ピクチャメモリ２０５に格納しても良い。対象ピクチャのマクロブロック内のサブブロックの配置（処理単位の分割位置）に対応する参照ピクチャのマクロブロックのサブブロックが、それぞれ別の参照ピクチャメモリ２０５に格納されるように、参照ピクチャのマクロブロック内におけるサブブロックの縦横の関係または左右の関係の入れ替える順番は、組み合わせによらない。
【０１０２】
図１２は、参照ピクチャのマクロブロックを参照ピクチャメモリ２０５に格納するまでの処理手順を示すフローチャートである。
【０１０３】
まず、図１の差分絶対値和演算装置２００において、ライトメモリ選択部２０１は、入力される複数の参照ピクチャデータからそれらの参照ピクチャのマクロブロックにおけるブロックサイズがＮ×Ｍ画素であるか、すなわち、複数の参照ピクチャのマクロブロックの縦と横とのブロックサイズが同じであるかを確認する（Ｓ１２０１）。
【０１０４】
ここでは、２つの参照ピクチャのマクロブロックにおけるブロックサイズが同じであるかを確認する。
【０１０５】
次に、確認した２つの参照ピクチャのマクロブロックの縦と横のブロックサイズが同じ場合（Ｓ１２０１のＹｅｓの場合）、ライトメモリ選択部２０１は、参照ピクチャのマクロブロックを処理単位（サブブロック）で分割して参照ピクチャメモリ２０５に格納する（Ｓ１２０２）。このとき、参照ピクチャのマクロブロックを参照ピクチャメモリ２０５に格納する方法は、上述したように、参照ピクチャのピクチャタイプとその参照方向および参照ピクチャ番号に従い格納するのが好ましい。
【０１０６】
また、確認した２つの参照ピクチャのマクロブロックの縦と横のブロックサイズが違う場合（Ｓ１２０１のＮｏの場合）、ライトメモリ選択部２０１は、入力される参照ピクチャデータから２つの参照ピクチャのマクロブロックのブロックサイズを検出する（Ｓ１２０３）。
【０１０７】
次に、ライトメモリ選択部２０１は、検出した参照ピクチャにおけるマクロブロックを８×８画素となる処理単位（サブブロック）で、参照ピクチャのマクロブロック内の位置関係（配置）を確認する。
【０１０８】
そして、対象ピクチャのマクロブロックにおける８×８画素の処理単位（サブブロック）に対応する複数の参照ピクチャのマクロブロックにおける８×８画素の処理単位（サブブロック）の配置が、それぞれ別の参照ピクチャメモリ２０５に格納されるように参照ピクチャのマクロブロックにおける８×８画素の処理単位（サブブロック）の配置を調整する（Ｓ１２０４）。
【０１０９】
次に、８×８画素の処理単位（サブブロック）の調整された配置（図１１で述べた再配置）に基づいて、参照ピクチャのマクロブロックを処理単位（サブブロック）で参照ピクチャメモリ２０５に格納する（Ｓ１２０５）。
【０１１０】
図１３は、ブロックサイズが８×１６画素であるＰピクチャのマクロブロックを参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納する様子を示した図である。
【０１１１】
図１３では、最初に、参照ピクチャ番号が０であるマクロブロックを参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納し、次に、参照ピクチャ番号が１であるマクロブロックを参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納する様子を概念的に説明する。また、図１３では、ブロックサイズが８×１６画素である参照ピクチャのマクロブロックが、その２分の１のブロックサイズである８×８画素の処理単位（サブブロック）に分割されて処理される場合を示している。図１３において、参照ピクチャのマクロブロック中に記載されたＵＬ、ＤＬはそれぞれ、ブロックサイズが８×１６画素のマクロブロックをその２分の１である８×８画素の処理単位で分割した場合の分割位置を示している。ＵＬは上の位置を、ＤＬは下の位置を示している。
【０１１２】
図１３では、最初、Ｐピクチャのマクロブロックは、その２分の１のブロックサイズである８×８画素の処理単位（サブブロック）として、ＵＬ、ＤＬに分割される。参照ピクチャ番号が０でブロックサイズが８×１６画素である参照ピクチャのマクロブロック１４０１を参照ピクチャメモリ２０５に格納する場合には、ブロックサイズが８×１６画素である参照ピクチャのマクロブロック１４０１をブロックサイズが１６×８画素である参照ピクチャのマクロブロックとなるように配置を入れ替える。その結果、ブロックサイズが１６×８画素である参照ピクチャのマクロブロック１４０２内で、左の位置にサブブロックＵＬかつ右の位置にサブブロックＤＬとなる。すなわち、マクロブロックの縦の関係を横の関係となるように変換する。そして、参照ピクチャのマクロブロック１４０１のサブブロックＵＬおよびＤＬの縦と横の関係を変換した参照ピクチャのマクロブロック１４０２のサブブロックＵＬおよびＤＬを参照ピクチャメモリ２０５に格納する。このとき、参照ピクチャのマクロブロック１４０２のサブブロックＵＬを参照ピクチャメモリ２０５−１に、参照ピクチャのマクロブロック１４０２のサブブロックＤＬを参照ピクチャメモリ２０５−２に順に格納する。
【０１１３】
次に、参照ピクチャのピクチャタイプがＰピクチャのマクロブロックで、参照ピクチャ番号が１であるブロックサイズが８×１６画素である参照ピクチャのマクロブロック１４０３を参照ピクチャメモリ２０５に格納する場合には、ブロックサイズが８×１６画素である参照ピクチャのマクロブロック１４０３を、ブロックサイズが１６×８画素である参照ピクチャのマクロブロック１４０４となるように再配置する。具体的には、マクロブロック内で上の位置にサブブロックＵＬかつ、下の位置にサブブロックＤＬが配置されるブロックサイズが１６×８画素である参照ピクチャのマクロブロック１４０１が、マクロブロック内で左の位置にサブブロックＵＬかつ右の位置にサブブロックＤＬが配置されるブロックサイズが１６×８画素である参照ピクチャのマクロブロック１４０２となる。そして、ブロックサイズが８×１６画素の参照ピクチャのマクロブロック１４０４内で左と右の位置にあるサブブロックＵＬおよびＤＬは、左の位置にサブブロックＤＬかつ右の位置にサブブロックＵＬとなるように左右の配置を入れ替えられる（この操作を上述同様シャッフルと呼ぶ。）。つまり、マクロブロックの縦の関係を横の関係となるように変換され、マクロブロックのサブブロックＵＬおよびＤＬの左右が反転される。
【０１１４】
次に、マクロブロック１４０３の縦と横の関係を変換されシャッフルされた参照ピクチャのマクロブロック１４０４のサブブロックＤＬおよびＵＬを参照ピクチャメモリ２０５に格納する。このとき、参照ピクチャのマクロブロック１４０４のサブブロックＤＬを参照ピクチャメモリ２０５−１に、参照ピクチャのマクロブロック１４０４のサブブロックＵＬを参照ピクチャメモリ２０５−２に格納する。
【０１１５】
それにより、対象ピクチャのマクロブロックのサブブロックＵＬに対応する参照ピクチャのマクロブロック１４０１のサブブロックＵＬおよび参照ピクチャのマクロブロック１４０３のサブブロックＵＬは再配置されて、それぞれ別の参照ピクチャメモリ２０５−１および２０５−２に格納され、リードメモリ選択部２０２は、対象ピクチャのブロックＵＬに対応する２つの参照ピクチャのブロックＵＬを同時に読み出すことができる。したがって、差分絶対値和演算部２０４−１および２０４−２において、対象ピクチャへの１度のメモリアクセスで複数の参照ピクチャに対する差分絶対値和演算を並列に行なうことができる。
【０１１６】
図１４は、ブロックサイズが１６×１６画素、１６×８画素および８×１６画素であるＰピクチャのマクロブロックを参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納する様子を示した図である。図１３は、まず、参照ピクチャ番号が０で、ブロックサイズが１６×１６画素、１６×８画素および８×１６画素であるＰピクチャのマクロブロックをこの順に参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納し、次に、参照ピクチャ番号が０で、ブロックサイズが１６×１６画素、１６×８画素および８×１６画素であるＰピクチャのマクロブロックをこの順に参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納した様子を示している。
【０１１７】
図１４に示すように、ブロックサイズが１６×１６画素である参照ピクチャのマクロブロックのサブブロックＵＬ（１５０１）と、ブロックサイズが１６×８画素である参照ピクチャのマクロブロックのサブブロックＵＬ（１５０２）とは、上述した再配置の方法により必ず別の物理メモリに格納されるので、対象ピクチャのブロックＵＬに対応する２つの参照ピクチャのサブブロックＵＬとして同時に読み出すことができる。それにより、差分絶対値和演算部２０４では符号化対象ピクチャのブロックの１度の読み出しで、複数の参照ピクチャのブロックに対して並列に差分絶対値和演算を行なうことができる。
【０１１８】
図１５は２つの物理メモリから構成される参照ピクチャメモリ２０５（２０５−１および２０５−２）にブロックサイズが８×１６画素である参照ピクチャのマクロブロックを処理単位（サブブロック）で格納する場合を概念的に説明するための図である。
【０１１９】
ブロックサイズが８×１６画素である参照ピクチャのマクロブロック９００を参照ピクチャメモリ２０５（２０５−１および２０５−２）に格納する場合において、参照ピクチャメモリ２０５への処理単位（サブブロック）ではブロックサイズが１６×８画素のマクロブロックである場合（図９の場合）に揃える。すなわち、ブロックサイズが８×１６画素のマクロブロック９００内における８×８画素の処理単位（サブブロック）であるサブブロックＵＬおよびサブブロックＤＬを上下に分割した場合の、下の位置となる参照ピクチャのマクロブロック９００のサブブロックＵＬと、上の位置となる参照ピクチャのマクロブロック９００のサブブロックＤＬとの配置を、ブロックサイズが１６×８画素である参照ピクチャのマクロブロック９００の内における８×８画素の処理単位（サブブロック）で左右に分割し、それぞれ左側がサブブロックＵＬに右側がサブブロックＤＬになるように、参照ピクチャのマクロブロック９００の縦の関係を横の関係に変換する（この操作も再配置と呼ぶ。）。そして、再配置されたブロックサイズが１６×８画素である参照ピクチャのマクロブロック９００を、参照ピクチャに関する情報に応じて、例えば、参照方向、参照ピクチャ番号などに応じて格納する参照ピクチャメモリ２０５（２０５−１および２０５−２）を選択して格納するのが好ましい。例えば、参照ピクチャのピクチャタイプがＢピクチャである場合には、Ｌ０（前方予測）およびＬ１（後方予測）の情報に基づいて格納する参照ピクチャメモリ２０５を選択し、参照ピクチャのピクチャタイプがＰピクチャである場合は、参照ピクチャ番号の情報に基づき格納する参照ピクチャメモリ２０５を選択する。参照ピクチャのピクチャタイプがＢピクチャで、参照方向がＬ０（前方予測）であった場合には、参照ピクチャのマクロブロック９００のサブブロックＵＬを参照ピクチャメモリ２０５−１に格納し、参照ピクチャのマクロブロック９００のサブブロックＤＬを参照ピクチャメモリ２０５−２に格納する。逆に、参照方向がＬ１（後方予測）であった場合には、参照ピクチャのマクロブロック９００のサブブロックＵＬを参照ピクチャメモリ２０５−２に格納し、参照ピクチャのマクロブロック９００のサブブロックＤＬを参照ピクチャメモリ２０５−１に格納する。
【０１２０】
以上のように、ライトメモリ選択部２０１により、参照ピクチャは、そのマクロブロックのブロックサイズに応じて、再配置して参照ピクチャメモリ２０５に格納されることで、リードメモリ選択部２０２では対象ピクチャのブロックに対応する複数の参照ピクチャのブロックを同時に読み出すことができる。それにより、参照ピクチャメモリ数を最小限の個数の構成にしつつ、差分絶対値和演算部２０４において、対象ピクチャへの１度のメモリアクセスで複数の参照ピクチャに対する差分絶対値和演算を並列に行なうことができる。
【０１２１】
以上より、対象ピクチャへの１度のメモリアクセスで複数の参照ピクチャに対する差分絶対値和演算を並列に行なう装置であって、メモリ数を削減し、メモリアクセス量を減少させることが可能な演算装置およびその方法を実現することができる。
【０１２２】
なお、本実施の形態で説明した差分絶対値和演算装置２００では差分絶対値和演算部２０４は２つの差分絶対値和演算部２０４で構成されているが、２つ以上で構成しても良く、本発明は差分絶対値和演算部２０４の数に依存するものではない。また、参照ピクチャメモリ２０５は本実施の形態において、２つの物理メモリの例を説明したが、構成した差分絶対値和演算部２０４に応じたメモリの個数を構成しても良く、数には限定されない。
【０１２３】
また、本実施の形態では、ブロックサイズが８×８画素の処理単位ブロック（サブブロック）に基づき、再配置して、参照ピクチャのマクロブロックを参照ピクチャメモリ２０５に格納する方法について説明したが、処理単位（サブブロック）としては、８×８画素に限定されず、４×４画素や１６×１６画素などのＮ×Ｎの画素数を処理ブロック単位（サブブロック）としても良い。さらに、参照ピクチャメモリ２０５に格納し、符号化対象ピクチャとそれに対応する複数の参照ピクチャを同時に読み出せるのなら、再配置に用いるブロックサイズとしてはＮ×Ｎでなくともよく、Ｎ×Ｍでもよく、処理単位がマクロブロックでもよい。
【０１２４】
また、参照ピクチャメモリ２０５は、参照ピクチャを１フレームずつ格納するメモリでもよく、参照ピクチャ中の少なくとも１ブロックを格納するメモリで構成されてもよい。さらに、参照ピクチャメモリとは別に参照ピクチャ中の少なくとも１ブロック、例えばマクロブロックあるいはマクロブロックの処理単位（サブブロック）を記憶するバッファメモリとして構成してもよい。
【０１２５】
以上、本発明の演算装置について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【産業上の利用可能性】
【０１２６】
本発明は、差分演算装置およびその方法に利用でき、特に、処理量やメモリ量が大きくなる動画データの圧縮符号化処理を実現するＬＳＩや、様々なシステムに組み込まれ映像蓄積装置、ビデオカメラ、映像伝送装置などの符号化処理を実現する差分演算装置やその方法において利用することができる。
【図面の簡単な説明】
【０１２７】
【図１】本発明の実施の形態１に係る差分絶対値和演算装置の構成を示すブロック図である。
【図２】本発明の実施の形態１に係る符号化対象ピクチャのブロックに対して１回の読み出しで複数の参照ピクチャのブロックとの差分絶対値和演算することを概念的に示した図である。
【図３】本発明の実施の形態１に係る複数のピクチャに対する差分絶対値和演算を並列に行い動きベクトルが検出されるまでの処理手順を示すフローチャートである。
【図４】本発明の実施の形態１に係る符号化対象ピクチャと符号化対象ピクチャが参照ピクチャとして用いることのできる複数の参照ピクチャとの関係を概念的に示した図である。
【図５】本発明の実施の形態１に係る２つの物理メモリから構成される参照ピクチャメモリに参照ピクチャを格納する場合を説明する図である。
【図６】本発明の実施の形態１に係るブロックサイズが１６×１６画素であるＰピクチャを参照ピクチャメモリに格納する場合の様子を示した図である。
【図７】本発明の実施の形態１に係るブロックサイズが１６×１６画素であるＰピクチャを参照ピクチャメモリに格納する場合の様子を示した図である。
【図８】本発明の実施の形態１に係る参照ピクチャを参照ピクチャメモリに格納するまでの処理手順を示すフローチャートである。
【図９】本発明の実施の形態１に係る２つの物理メモリから構成される参照ピクチャメモリに参照ピクチャを格納する場合を概念的に説明するための図である。
【図１０】本発明の実施の形態１に係る参照ピクチャのマクロブロックのブロックサイズが異なる場合において、参照ピクチャメモリでメモリアクセス競合してしまい、符号化対象ピクチャに対する複数の参照ピクチャを同時に読み出すことができないことを説明するための図である。
【図１１】本発明の実施の形態２に係る参照ピクチャのブロックサイズが異なる場合において、参照ピクチャのマクロブロックにおける処理単位の分割位置を再配置して格納することにより符号化対象ピクチャに対する複数の参照ピクチャを同時に読み出せることを説明する図である。
【図１２】本発明の実施の形態２に係る参照ピクチャを参照ピクチャメモリに格納するまでの処理手順を示すフローチャートである。
【図１３】本発明の実施の形態２に係るブロックサイズが８×１６画素であるＰピクチャのマクロブロックを参照ピクチャメモリに格納する様子を示した図である。
【図１４】本発明の実施の形態２に係るブロックサイズが１６×１６画素、１６×８画素および８×１６画素であるＰピクチャのマクロブロックを参照ピクチャメモリに格納する様子を示した図である。
【図１５】本発明の実施の形態２に係る２つの物理メモリから構成される参照ピクチャメモリに８×１６の参照ピクチャを格納する場合を概念的に説明するための図である。
【図１６】従来のＨ．２６４の符号化方式を用いた符号化装置の構成を示すブロック図である。
【図１７】従来の差分絶対値和演算装置の構成を示すブロック図である。
【符号の説明】
【０１２８】
１００、３０００  従来の差分絶対値和演算装置
２００  差分絶対値和演算装置
２０１  ライトメモリ選択部
２０２  リードメモリ選択部
２０３  同期アクセス部
２０４、３０９１  差分絶対値和演算部
２０５  参照ピクチャメモリ
２０６  対象ピクチャメモリ
３００  符号化装置
３０１  直交変換部
３０２  量子化部
３０３  符号化部
３０４  逆量子化部
３０５  逆直交変換部
３０６  イントラ予測部
３０７  参照ピクチャメモリ
３１０１  符号化対象ピクチャメモリ
３０８  動き補償部
３０９  動きベクトル算出部
３１０  入力部
３１１  減算器
３１２  加算器
５０１、５０２、６００Ａ、６０１Ａ、６０３Ａ、７０１、７０２、９０１、９０２、１５０１、１５０２、ＵＬ、ＤＬ、ＵＲ、ＤＲ  サブブロック
６００、６０１、６０３、１１０１、１１０２、１１０３、１４０１、１４０２、１４０３、１４０４  マクロブロック
１１０２  符号化対象ピクチャ
【図１】
2008182471.tif 000003
【図２】
2008182471.tif 000004
【図３】
2008182471.tif 000005
【図４】
2008182471.tif 000006
【図５】
2008182471.tif 000007
【図６】
2008182471.tif 000008
【図７】
2008182471.tif 000009
【図８】
2008182471.tif 000010
【図９】
2008182471.tif 000011
【図１０】
2008182471.tif 000012
【図１１】
2008182471.tif 000013
【図１２】
2008182471.tif 000014
【図１３】
2008182471.tif 000015
【図１４】
2008182471.tif 000016
【図１５】
2008182471.tif 000017
【図１６】
2008182471.tif 000018
【図１７】
2008182471.tif 000019