本開示は、予測処理を用いて符号化された符号化ストリームを復号する画像復号装置及び画像復号方法に関するものである。
最近、スマートフォンやスマートテレビに代表されるネットワーク配信技術の進展に伴い、より高精細でより高画質な動画配信が普及するようになってきた。一方で、高精細化
を支える通信トラフィックや放送帯域の圧迫が懸念されており、2013年1月に、ITU−T(International Telecommunication UnionTelecommunication Standardization
Sector)が国際標準規格「H.265」として勧告した「HEVC(High Efficiency
Video Coding)」は、同じ品質の動画をH.264(MPEG-4 AVC)の半分のデータ量で圧
縮および伝送できるなど、通信・放送の帯域圧迫の解決策として注目されている。H.2
65規格の詳細については、非特許文献1に記載されている。
H.265規格では、従来の符号化規格であるH.264規格に対して符合化単位ブロックのサイズが可変になる。そして、この技術に係る画像符合化装置は、従来規格の符合化単位であるマクロブロック(16×16画素)よりも大きなブロックサイズで符合化することも可能であり、高精細な画像を適切に符合化することが可能である。
具体的には、図22のH.265規格におけるピクチャ及び符号化ストリームの構成例を示す図を用いて説明する。図22(A)に示すように、符合化のデータ単位として、符合化ユニット(CU:Coding Unit)が定義されている。この符合化ユニットは、従来の画像符合化規格におけるマクロブロックと同様に、面内予測を行うイントラ予測と、動き補償を行うインター予測とを切り替えることが可能なデータ単位であり、符合化の最も基本的なブロックとして規定されている。
この符号化ユニットのサイズは、H.265規格のMain Profileでは、8×8画素、16×16画素、32×32画素、64×64画素のいずれかである。
H.265規格では、各ピクチャの符合化処理を、最も大きな符号化ユニットCTU(Coding Tree Unit)と呼ばれる画素ブロックの単位で行う。CTUのサイズは、H.264規格やMPEG−2規格のマクロブロック(16×16画素)のように固定ではなく、シーケンスの符合化時に選択できる。
H.265規格のMain Profileでは、最大64×64画素ブロックと規定される。さらに、1枚のピクチャは複数のCTUを持ったスライス単位で符号化されてもよい。なお、図22(A)は1枚のピクチャが1つのスライスで構成された例を示す。
なお、イントラ予測やインター予測の一連の符合化処理は、CTUを再帰的に四分木分割することで得られるCUの単位で行われる。
CUの符号化処理に際して、イントラ予測とインター予測については、CU内をPU(Prediction Unit、予測ユニット)と呼ばれるブロックに分割して行われる。
また、予測差分信号の周波数変換及び量子化処理は、TU(Transform Unit、周波数変換ユニット)と呼ばれるブロック単位で行われる。
図22(B)は、符号化ストリームの構成例を示す図である。通常、符号化ストリームは、シーケンスヘッダ、ピクチャヘッダ、スライスヘッダ及びスライスデータから構成される。なお、H.265規格などで符号化された画像符号化ストリームでは、各ヘッダの先頭を示す、スタートコード(Start code、SCと略す)が付加されている。
また、シーケンスヘッダは、複数のピクチャのまとまりを示すシーケンスに対するヘッダ情報を示し、ピクチャヘッダは、1枚のピクチャに対するヘッダ情報を示す。スライスヘッダはスライスデータに対するヘッダ情報を示す。スライスデータは、複数のCTU及びCUを示すCUレイヤデータから構成される。なお、H.265規格では、シーケンスヘッダは、SPS(Sequence Parameter Set)とも呼ばれ、ピクチャヘッダは、PPS(PictureParameter Set)とも呼ばれる。
図23に、CTUをH.265規格に基づいて、CU,PU,TUに分割した一例を示す。CTUは、四分木分割される前の最大CUを示すため、CU階層0とする。四分木分割されるたびに、CU階層1、CU階層2などと再帰的に分割することが可能である。
TUもCTU内のCU分割と同様、CU内部で再帰的に四分木分割を行うことが可能である。
PUはこれ以上分割されないCUに対して、1つの予測モード(PU分割モード、PartModeで規定)で分割される。例えば、32×32画素のCUがPart_Nx2NのPU分割モードで分割された場合、32×32画素のCUは16×32画素のPUが2個から構成されることを示す。
なお、PU分割モードは、イントラ予測の場合、Part_2Nx2NまたはPart_NxNの2つから選択され、インター予測の場合、Part_2Nx2N,Part_2NxN,Part_Nx2N,Part_NxNの同じ大きさのブロックからなる4つの分割モードと、Part_2NxnU,Part_2NxnD,Part_nLx2N,Part_nRx2Nの非対称の大きさのブロック(AMP:Asymmetric MotionPartitionsという)からなる4つの分割モードの、合わせて8つの分割モードから選択できる。
なお、変換ユニットTUは、PU分割とは独立して、再帰的に四分木分割を行うことが可能である。変換ユニットTUには、予測差分画像に対する周波数成分を示す係数、つまり、変換係数のN×N個で構成される(例えば、Nは、4、8、16、32を示す)。
図24は、H.265規格におけるCUレイヤデータ以下の符号化ストリームの構成例を示す図である。
図24(A)は、CU,PU及びTUの構成を示す。CU及びPUは、64×64画素のブロックからなる構成を示し、TUは、32×32の4個のブロックで構成される例を示す。
図24(B)は、H.265におけるCUレイヤデータ以下の符号化ストリームの構成例を示す図である。なお、図24(B)には、以下の説明に必要な符号のみを簡略して記載しており、詳細は、H.265規格に記載される。
図24(B)の符号化ユニットに対応する符号化ユニットレイヤデータは、CU分割フラグ、および、CUデータ(符号化ユニットデータ)で構成される。このCU分割フラグは、「1」の場合、符号化ユニットを4分割することを示し、「0」の場合、符号化ユニットを4分割しないことを示す。
図24(B)では、64x64画素の符号化ユニットは分割されない。すなわち、CU分割フラグは「0」である。さらに、CUデータは、CUタイプ、動きベクトルまたは面内予測モードを示すPUデータ、および、係数を含む変換ユニットから構成されるTUレイヤデータ0で構成される。CUタイプによって、予測ユニットのサイズが決定される。
PUデータには、動きベクトルまたは面内予測モードのほかに、参照画像を示すフラグ(参照インデックスとも呼ぶ)やインター予測に必要な情報が含まれる。TUレイヤデータ0は、最上位層を示すTU階層0を示し、CUデータと同様に、TU分割フラグ、TUレイヤデータ1から構成される。
このTU分割フラグは、CU分割フラグと同様に、「1」の場合、変換ユニットを4分割することを示し、「0」の場合、変換ユニットを4分割しないことを示す。
TUレイヤデータ1は、TU0に対するTU分割フラグ、TUデータ(TU0)、TU1に対するTU分割フラグ、TUデータ(TU1)、TU2に対するTU分割フラグ、TUデータ(TU2)、TU3に対するTU分割フラグ、TUデータ(TU3)で構成される。なお、TUレイヤデータ1におけるTU分割フラグは「0」の例である。
ここで、TU0以外のTUデータは、直前の変換ユニット(例えば、TU1なら、TU0)までを復号しないと、各TU分割フラグが出現しないため、各TUの大きさが確定しないことがわかる。
図25は、H.265規格のインター予測におけるCU構成毎に選択可能なPU構成を示す図である。例えば、64×64 CUの場合、64×64 PU,64×32 PU,32×64 PU,32×32PU,64×16 PU,64×48 PU,16×64PU,48×64 PUがPartModeによって、選択される。
そして、予測ユニット毎に、インター予測の場合、動きベクトルや参照画像を示すフラグ(参照インデックスともいう)が、イントラ予測の場合、面内予測モードが指定される。
図26は、H.265規格で選択可能なTU構成を示す図である。具体的には、32×32 TU,16×16TU,8×8 TU,4×4TU からなり、全て正方形で構成される。
ところで、インター予測の場合、動きベクトルが指し示す参照ピクチャから参照画像を取得する必要がある。
図27は、動き補償処理の概略を示す図である。図27のように、動き補償処理は、符合化ストリームから復号された動きベクトルおよび参照インデックスによって指し示される、過去に復号されたピクチャの一部を取り出し、フィルター演算を行うことによって、予測画像を生成する処理である。H.265規格の場合、動き補償処理のフィルター演算は、最大8TAPフィルターが用いられる。
例えば、図27(A)に示すように、予測対象の予測ユニットの大きさが64×64画素(64×64 PU)の参照画像に8TAPフィルターが用いられる場合、64×64画素に7画素が垂直方向及び水平方向に付加される。具体的には、動きベクトルの指し示す整数位置を基点とした予測対象予測ユニットから、左に3画素、右に4画素、上に3画素、下に4画素が付加される。したがって、参照ピクチャから取り出される参照画像は、71×71画素である。
図27(B)は、予測対象の予測ユニットの大きさが16×16画素である場合を示す。8TAPフィルターが用いられる場合、参照ピクチャから取り出される参照画像は、64×64 PUの場合と同様に、23×23画素である。なお、動きベクトルが整数位置を指し示す場合は、予測ユニットの参照画像に対してフィルター処理を必要としないため、必要な参照画像の大きさは、予測ユニットの大きさと同じにしても構わない。
H.264規格では、最大、マクロブロック単位での予測であったため、同じ大きさの参照画像の取得には、H.265規格の16×16画素(256画素)の予測ユニットに対して、最大23×23画素(529画素)を必要としたが、H.265規格の場合、参照画像の取得には、64×64画素(4096画素)の予測ユニットに対して、最大71×71画素(5041画素)となる。つまり、1つの予測ユニットに必要なデータサイズが約9.5倍となり、参照ピクチャを外部メモリ(例えば、外付けのSDRAM)から取得する場合、外部メモリバスを占有する時間が約9.5倍にも増大することになり、復号処理以外のシステムに与える影響が大きく、例えば、表示用の出画処理等が破綻するという課題がある。
これに対し、特許文献1のように、動き補償ブロックサイズを固定の大きさにする目的ではあるが、例えば4×4画素や8×8画素の予測ユニットの最小サイズに分割処理することで、対策を行うことが可能である。ただし、小さなサイズに分割すればするほど、フィルター処理に必要な画素数が増大するため、例えば、H.265規格では8TAPフィルターに必要な画素(予測ユニットのサイズに、垂直方向及び水平方向に7画素付加される画素数)の割合が増大してしまい、外部メモリバンド幅に与える影響は大きく、性能破綻をきたすという課題がある。
例えば、16×16画素の予測ユニットに対して、8TAPフィルターをかけるには参照画像として、23×23画素(529画素)を必要とするが、4×4画素ブロック、16個に分割すると、8TAPフィルターをかけるには参照画像として、11×11画素(121画素)を16個必要とするため、1936画素(=121画素×16個)と、分割する前の約3.6倍もの参照画像を必要とするため、外部メモリバンド幅への影響が大きくなるという課題がある。
また、特許文献2のように、予測ユニットPUを変換ユニットTUのエッジで分割することで対策を行うことが可能である。ただし、TUサイズが32×32画素である場合、32×32画素の同じサイズの予測ユニットに対して、39×39画素(1521画素)の参照画像の取得が必要となり、16×16画素の予測ユニットに対する参照画像サイズ23×23画素(529画素)に比べ、約3倍のデータサイズを必要とするため、外部メモリバスの占有時間が長く、復号処理以外のシステムに大きく影響し、特に表示用の出画処理等が破綻するという課題がある。
また、特許文献2のように、予測ユニットPUを変換ユニットTUのエッジで分割する場合、予測ユニットの復号処理が、変換ユニットの大きさに依存するため、予測ユニットの復号処理が変換ユニットの大きさが確定するまで開始できず、予測ユニットの復号処理が遅延するという課題がある。なお、H.265規格では、変換ユニットの大きさは、TUレイヤが最下位層まで復号処理が進まないと、確定できない。
また、特許文献2のように、予測ユニットを変換ユニットのエッジで分割すると、より小さなTUに分割された場合(例えば、4×4TU)、予測ユニットも変換ユニットに依存して、予測処理する必要があるため、変換サイズより大きな予測ユニットに対しては、予測処理の復号処理性能が悪化するという課題がある。
特開2006−311526号公報
国際公開第2013/076888号
上述した従来技術のように、動き補償回路を予測ユニットの最小サイズに合わせて、分割することで、参照画像取得時の外部メモリバスの占有率を低減することは可能である。
しかしながら、分割サイズが小さくなればなるほど、予測処理におけるフィルター処理に必要な画素数が増大し、外部メモリバンド幅を増大させてしまうという課題がある。外部メモリバンド幅の増大は、出画処理を含めたシステム全体へ影響を与え、アプリケーションの破綻に繋がってしまう。
また、逆に、予測ユニットが大きくなればなるほど、予測処理を行う回路面積が増大するという課題がある。また、予測ユニットを変換ユニットの大きさに応じて、分割し、予測処理をすると、変換ユニットの大きさが確定するまで処理を開始できない、という課題がある。つまり、予測処理が遅延してしまい、予測処理を高速に動作できない。
かかる点に鑑みて、本開示は、予測ユニットに予測処理を利用して符合化された符号化ストリームを復号する際に、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、復号処理を高速に、さらに回路面積を抑えることが可能な画像復号装置及びその方法を提供することを課題とする。
本開示の一形態に係る画像復号装置は、符号化ユニットは、予測処理の単位としては、1以上の予測ユニットから構成され、周波数変換処理の単位としては、1以上の変換ユニットを含み、前記1以上の予測ユニットに対する予測処理と、前記1以上の変換ユニットに対する周波数変換処理とを含む符号化処理によって符号化された符号化ストリームを復号する。具体的には、前記予測ユニットの大きさが予め設定された大きさを超える場合、前記変換ユニットの大きさに関わらず、前記予測ユニットを複数のブロックに分割する分割手段と、前記予測ユニットを分割することで得られたブロック毎に、前記予測ユニットの予測画像に関する復号処理を行うことで予測画像を生成する予測画像生成手段と、前記予測画像生成手段で生成された予測画像を利用して画像を復元する画像復元手段とを備える。
これによれば、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記分割手段は、前記予め設定された大きさ以下に分割してもよい。
これによれば、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを予め設定された大きさ以下に分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記分割手段は、前記符号化ユニットを構成する前記1以上の全ての予測ユニットをまとめた1つのブロックを、同じ大きさの4つのブロックに分割し、前記分割された各ブロックを前記分割手段に予め設定された大きさ以下になるまで再帰的に分割してもよい。
これによれば、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、1以上の予測ユニットをまとめた1つのブロックを、同じ大きさの4つのブロックに分割し、分割された各ブロックを予め設定された大きさ以下になるまで再帰的に分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記予測画像生成手段は、前記分割手段によって前記再帰的に分割されたブロックを再帰的に且つZ順に予測画像を生成してもよい。
これによれば、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、1以上の予測ユニットをまとめた1つのブロックを同じ大きさの4つのブロックに分割し、分割された各ブロックを予め設定された大きさ以下になるまで再帰的に分割し、再帰的に分割されたブロックを再帰的に且つZ順に予測画像を生成することで、復号処理を高速に実行することができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を高速に実行することができる。
また、前記分割手段は、前記分割手段に予め設定された大きさが16画素×16画素であってもよい。
これによれば、16×16画素を超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、16×16画素以下に予測ユニットに分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記予測画像生成手段は、過去に復号された画像データを取得し、予測画像を生成してもよい。
これによれば、過去に復号された画像データを取得し、予測画像を生成することが可能になり、さらに、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記予測画像生成手段は、過去に復号された画像データを外部メモリから取得し、予測画像を生成してもよい。
これによれば、過去に復号された画像データを外部メモリから取得することで、予測画像を生成することが可能になり、さらに、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記予測画像生成手段は、過去に復号された画像データから前記予測ユニットの動きベクトルを用いて、動き補償処理を行い、予測画像を生成してもよい。
これによれば、過去に復号された画像データから予測ユニットの動きベクトルを用いて、動き補償処理を行い、予測画像を生成することが可能になり、さらに、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記画像復元手段は、逆周波数変換処理された残差画像を加算することで画像を復元してもよい。
これによれば、予測画像に逆周波数変換処理された残差画像を加算することで画像復元することが可能になり、さらに、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
前記符合化ストリームは、H.265で符合化されてもよい。
これによれば、H.265で符号化ストリームを復元することが可能になり、さらに、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
本開示の一形態に係る画像復号方法は、符号化ユニットは、予測処理の単位としては、1以上の予測ユニットから構成され、周波数変換処理の単位としては、1以上の変換ユニットから構成され、前記1以上の予測ユニットに対する予測処理と、前記1以上の変換ユニットに対する周波数変換処理とを含む符号化処理によって符号化された符号化ストリームを復号する画像復号方法である。具体的には、前記予測ユニットの大きさが予め設定された大きさを超える場合、前記変換ユニットの大きさに関わらず、前記予測ユニットを複数のブロックに分割する分割ステップと、前記予測ユニットを分割することで得られたブロック毎に、前記予測ユニットの予測画像に関する復号処理を行うことで予測画像を生成する予測画像生成ステップと、前記予測画像生成ステップで生成された予測画像を利用して画像を復元する画像復元ステップとを含む。
これによれば、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関わらず、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
本開示の一形態に係る集積回路は、符号化ユニットは、予測処理の単位としては、1以上の予測ユニットから構成され、周波数変換処理の単位としては、1以上の変換ユニットから構成され、前記1以上の予測ユニットに対する予測処理と、前記1以上の変換ユニットに対する周波数変換処理とを含む符号化処理によって符号化された符号化ストリームを復号する。
具体的には、集積回路は、前記予測ユニットの大きさが予め設定された大きさを超える場合、前記変換ユニットの大きさに関わらず、前記予測ユニットを複数のブロックに分割する分割部と、前記予測ユニットを分割することで得られたブロック毎に、前記予測ユニットの予測画像に関する復号処理を行うことで予測画像を生成する予測画像生成部と、前記予測画像生成部で生成された予測画像を利用して画像を復元する画像復元部とを備える。
これによれば、予め設定された大きさを超えるような予測ユニットに対しても、前記変換ユニットの大きさに関わらず、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
以上のように、本開示にかかる画像復号装置によれば、変換ユニットの大きさに関わらず、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
図1は、実施の形態1に係る画像復号装置の構成を示すブロック図である。
図2は、実施の形態1に係る動き補償部の構成を示すブロック図である。
図3は、実施の形態1に係る予測画像生成のフローチャートである。
図4は、実施の形態1に係るPU分割をしない場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図5は、実施の形態1に係るPU分割をしない場合に関する、パイプライン処理を示すタイミングチャートである。
図6は、実施の形態1に係る従来のPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図7は、実施の形態1に係る従来のPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図8は、実施の形態1に係るPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図9は、実施の形態1に係るPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図10は、実施の形態1に係る64×64CUに対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。
図11は、実施の形態1に係る64×64CUに対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。
図12は、実施の形態1に係る32×32CUに対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。
図13は、実施の形態1に係る32×32CUに対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。
図14は、実施の形態1に係るPU分割をしない場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図15は、実施の形態1に係るPU分割をしない場合に関する、パイプライン処理を示すタイミングチャートである。
図16は、実施の形態1に係るPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図17は、実施の形態1に係るPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図18は、実施の形態2に係るPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図19は、実施の形態2に係るPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図20は、実施の形態3に係る従来のPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図21は、実施の形態3に係るPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図22は、H.265規格におけるピクチャ及び符号化ストリームの構成例を示す図である。
図23は、H.265規格におけるCTU,CU,PU,TU分割した一例を示す図である。
図24は、H.265規格におけるCUレイヤデータ以下の符号化ストリームの構成例を示す図である。
図25は、H.265規格のインター予測におけるCU構成毎に選択可能なPU構成を示す図である。
図26は、H.265規格で選択可能なTU構成を示す図である。
図27は、動き補償処理の概略を示す図である。
以下、図面を参照しつつ、本開示の実施の形態について説明する。
<実施の形態1>
以下、本開示の実施の形態1における画像復号装置について説明する。
図1は、実施の形態1に係る画像復号装置の構成を示すブロック図である。
図1の示すように、画像復号装置100は、復号部110と、逆量子化部120と、逆周波数変換部130と、再構成部140と、インループフィルター部150と、動き補償部160と、面内予測部170と、フレームメモリ180とを備える。各部は、基本的には、従来におけるH.265規格に基づく復号を行うものとし、従来と同様の処理については説明を簡略化する。
復号部110は、入力された符合化ストリームの符合化ユニット(Coding Unit。以下、CUと呼ぶ)がインター予測の場合、復号部110に入力された符号化ストリームを復号して、予測ユニット(Prediction Unit。以下、PUと呼ぶ)の動きベクトル及び参照画像情報(例えば、参照画像を特定するためのフラグ、参照インデックス)及びCUやPUに関する情報(例えば、CUの大きさやPU分割モードPartMode)を動き補償部160へ出力する。なお、復号部110は、H.265規格に基づく、算術復号や可変長復号などを処理する。
動き補償部160は、復号部110から受け取った動きベクトル及び参照画像情報及びCUやPUに関する情報からフレームメモリ180の参照画像位置を特定し、フレームメモリ180から参照画像を取得する。取得した参照画像からPUに対する動き補償を行い、予測画像を生成し、再構成部140へ出力する。
一方、復号部110で復号された周波数変換ユニット(Transform Unit。以下、TUと呼ぶ)の周波数成分の係数データ(例えば、DCT係数や変換係数)を逆量子化部120へ出力する。逆量子化部120は、復号部110から受け取った係数データを逆量子化し、結果を逆周波数変換部130へ出力する。逆周波数変換部130は、逆量子化部120から受け取った逆量子化後の係数データをTU単位で逆周波数変換し、残差画像として、再構成部140へ結果を出力する。
再構成部140は、逆周波数変換部130から受け取った残差画像と、動き補償部160から受け取った予測画像とを加算し、再構成画像として、結果をインループフィルター部150へ出力する。
インループフィルター部150は、再構成部140から受け取った再構成画像にインループフィルター(例えば、デブロッキングフィルターやサンプル適応フィルター(SAO:Sample AdaptiveFilter))を行った上で、復号画像として、結果をフレームメモリ180へ出力する。その後、復号画像は、フレームメモリ180から表示部(図示省略)へ出力される。
また、時間的に異なる参照画像を用いないIピクチャやイントラ予測ブロックである予測ユニットでは、復号部110で算出した面内予測モードを面内予測部170へ出力する。
面内予測部170は、復号部110から受け取った面内予測モードから面内予測を行い、予測画像を生成し、再構成部140へ出力する。なお、図示は省略しているが、面内予測に必要な再構成画像は、再構成部140から取得することが可能である。
再構成部140は、インター予測の場合と同様に、逆周波数変換部130から受け取った残差画像と、面内予測部170から受け取った予測画像とを加算し、再構成画像として、結果をインループフィルター部150へ出力する。
インループフィルター部150以降の処理は、インター予測と同じため、省略する。
次に、動き補償部160について、詳細を説明する。
図2は、実施の形態1に係る動き補償部の構成を示すブロック図である。
分割部161は、復号部110から受け取ったCUやPUの情報からPUを分割するかどうかを決定し、分割する場合は、分割したブロック毎に、分割する前のPUの動きベクトルと参照画像情報と分割後のブロック位置情報を保持し、その分割結果に応じて、分割されたブロック毎の情報をフレームメモリ転送制御部162へ転送する。なお、分割方法や分割されたブロックの処理順に関しては、後で詳細を説明する。また、分割しない場合は、PUの動きベクトルや参照画像情報やPUの位置情報をフレームメモリ転送制御部162へ転送する。
フレームメモリ転送制御部162は、分割部161から受け取った動きベクトルや参照画像情報やブロックやPUの位置情報を元に、予測画像を生成するためにフレームメモリ180にある参照ピクチャの参照画像位置を特定し、フレームメモリ180から参照画像データを取得し、局所参照メモリ163へ転送する。
動き補償演算部164は、局所参照メモリ163に格納された参照画像データを用いて、動き補償対照ブロック毎に、動き補償演算を行い、予測画像を生成し、予測画像メモリ165に出力する。
再構成部140は、予測画像メモリ165に格納された予測画像と、逆周波数変換部130から受け取った残差画像とを加算し、再構成画像として、結果を出力する。
図3は、実施の形態1に係る予測画像生成のフローチャートである。
まず、復号部110は、符合化ストリームから取得したCU情報およびPU情報を分割部161へ出力する(ステップS301)。
次に、分割部161では、PUサイズが予め設定された閾値のサイズを超えるかを求め、その結果が超えると判断された場合(ステップS302でYes)、PUサイズが閾値サイズ以下になるように分割する(ステップS303)。
フレームメモリ転送制御部162は、分割された各ブロックのフレームメモリ180上の参照画像の位置およびサイズを算出し(ステップS304)、動き補償対象ブロックの動き補償処理に必要な参照画像データをフレームメモリ180から取得し、局所参照メモリ163に転送する(ステップS306)。
なお、分割部161で、PUサイズが予め設定された閾値のサイズを超えないと判断された場合(ステップS302でNo)、フレームメモリ転送制御部162は、PU毎の動きベクトルが指し示す参照画像領域、つまり、動き補償対象ブロックの動き補償処理に必要な参照画像データの位置とサイズを算出し(ステップS305)、フレームメモリ180から参照画像を取得し、局所参照メモリ163に転送する(ステップS306)。
動き補償演算部164は、局所参照メモリ163から取得した参照画像データを用いて、動き補償対象ブロック毎に動き補償演算を行い、生成された予測画像を予測画像メモリ165に出力する(ステップS307)。
次に、PUサイズ毎の分割方法について、従来の場合と本開示との差異を分かりやすくするために、より詳細な分割方法について、以下に説明する。
図4は、実施の形態1に係るPU分割をしない場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図4(a)は、本実施の形態に係るCUの構成例を示す図である。図4(a)に示されたCU0は、64×64画素のサイズを有する。
図4(b)は、図4(a)に示されたCU0におけるTUの構成例を示す図である。図4(b)には、32×32画素で構成されたTU(以下、32×32 TUと記載。CU,PUも同様に記載)が4個の変換ユニットTU0〜TU3で示されている。そして、TU0〜TU3は、TU0,TU1,TU2,TU3の順で処理される。4個の変換ユニットTU0〜TU3に対する処理として、逆量子化、逆周波数変換等があり、結果を残差画像として出力する。
図4(c)は、図4(a)に示されたCU0におけるPUの構成例を示す図である。図4(c)には、32×64 PUが2個の予測ユニットPU0,PU1が示されている。そして、PU0及びPU1は、PU0,PU1の順で処理される。
図4(d)は、図4(a)に示されたCU0の分割後のブロックの構成例を示す図である。図4(d)には、4個のブロックBK0〜BK3が示されている。そして、4個のブロックBK0〜BK3は、BK0,BK1,BK2,BK3の順で処理される。4個のブロックBK0〜BK3に対する処理として、再構成処理、インループフィルター処理及びフレームメモリ180への格納処理等がある。なお、図4(d)におけるブロック分割は、TUサイズと同等に分割した一例であり、PUサイズと同等に分割しても構わないし、他の分割方法でも構わない。
図5は、図4に示されたCU,TU,PU、再構成画像に、図3の手順が適用されなかった場合のパイプライン処理を示すタイムチャートである。図5の例では、TU処理が、変換ユニットTU0,TU1,TU2,TU3の順で実行される。なお、TU処理前の復号部110での復号処理はTU処理以前に行われており、図示は省略している(以降のタイミングチャートでも同様に省略している)。同時に、PU処理が、予測ユニットPU0,PU1に対して、実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。
図5の例では、PU処理がPU0に対して終了して、かつ、TU処理がTU0に対して終了するまで、再構成処理が開始できない。つまり、TU0が終了してから再構築処理を実行するまでに遅延時間が生じてしまう。また、PU0は、32×64 PUから構成され、フレームメモリ転送制御部162がフレームメモリ180から39×71画素(2769画素)もの参照画像を取得するため、外部メモリバスを占有してしまう。
図6は、従来のTUのエッジに応じてPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図6(a)、図6(b)、図6(c)、図6(d)は、それぞれ、図4(a)、図4(b)、図4(c)、図4(d)と同じであるため、説明を省略する。
図6(c’)は、図6(a)に示された符合化ユニットCU0における予測ユニットをTUのエッジに応じて、分割された後のブロックの構成例を示す図である。なお、点線で処理の単位となるブロックの構成を示す(以下、分割されたブロックの構成に関しては同じである)。図6(c’)には、4個のブロックPU0a,PU0b,PU1a,PU1bが示されている。そして、PU0a,PU1a,PU0b,PU1bの順で処理される。4個のブロックPU0a,PU0b,PU1a,PU1bに対する処理として、参照画像の取得、動き補償演算、および、予測画像の出力処理等がある。なお、上記処理は、PU処理と同等の処理であるため、特に断らなければ、分割ブロックに対するPU処理(単に、PU処理)と記載する。
図7は、図6に示されたCU,TU,PU、再構成画像に、従来のTUのエッジに応じてPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図7の例では、TU処理が、変換ユニットTU0,TU1,TU2,TU3の順で実行される。同時に、PU処理が、ブロックPU0a,PU0b,PU1a,PU1bに対して、PU0a,PU1a,PU0b,PU1bの順で実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。ここで、TU0に対してTU処理が終了し、ブロックPU0aに対してPU処理が終了した後、ブロックBK0の再構成処理が開始する。同様にTU1〜TU3のTU処理が順に終了し、ブロックPU1a,PU0b,PU1bに対して、PU処理が順に終了するタイミングで、ブロックBK1〜BK3の再構成処理が順に開始する。
また、インループフィルター処理が、ブロックBK0〜BK3に対して、BK0,BK1,BK2,BK3の順で実行される。ここで、ブロックBK0の再構成処理が終了した後、ブロックBK0のインループフィルター処理が開始する。同様に、ブロックBK1〜BK3の再構成処理が順に終了するタイミングで、ブロックBK1〜BK3のインループフィルター処理が順に開始する。
図7の例では、分割後のブロックの予測画像は、変換ユニットと同じ順序で出力される。そのため、図5の場合に比べ、再構成処理に必要な、差分画像、および、差分画像と同じ領域の予測画像の両方が、早く揃う。したがって、再構成処理およびインループフィルター処理の開始の遅延が小さくなる。よって、復号処理が高速化する。
しかしながら、分割後のブロックPU0a,PU1a,PU0b,PU1bは、32×32画素から構成され、各分割後のブロックPU0a,PU1a,PU0b,PU1bは、フレームメモリ転送制御部162がフレームメモリ180からそれぞれ39×39画素(1521画素)もの参照画像を取得するため、外部メモリバスを占有してしまう。
図8は、図3の手順に従ってPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図8(a)、図8(b)、図8(c)、図8(d)は、それぞれ、図4(a)、図4(b)、図4(c)、図4(d)と同じであるため、説明を省略する。
図8(c’)では、図8(a)に示された符合化ユニットCU0における予測ユニットを予め設定された閾値、例えば、今回の場合、16×16画素として、分割された後のブロックの構成例を示す図である。図8(c’)には、16個のブロックPU0a〜PU0h,PU1a〜PU1hが示されている。そして、ブロックPU0a,PU0b,PU0c,PU0d,PU1a,PU1b,PU1c,PU1d,PU0e,PU0f,PU0g,PU0h,PU1e,PU1f,PU1g,PU1hの順で処理される。つまり、CU0を四分木分割されたブロックを再帰的に四分木分割された順番でZ順に処理されることになる。
図9は、図8に示されたCU,TU,PU、再構成画像に、図3の手順に従ってPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図9の例では、TU処理が、変換ユニットTU0,TU1,TU2,TU3の順で実行される。同時に、PU処理が、ブロックPU0a〜PU0h,PU1a〜PU1hに対して、PU0a,PU0b,PU0c,PU0d,PU1a,PU1b,PU1c,PU1d,PU0e,PU0f,PU0g,PU0h,PU1e,PU1f,PU1g,PU1hの順で実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。ここで、TU0に対してTU処理が終了し、ブロックPU0a〜PU0dに対してPU処理が終了した後、ブロックBK0の再構成処理が開始する。同様にTU1〜TU3のTU処理が順に終了し、ブロックPU1a〜PU1d,PU0e〜PU0h,PU1e〜PU1hの各4ブロックずつのPU処理が順に終了するタイミングで、ブロックBK1〜BK3の再構成処理が順に開始する。
また、インループフィルター処理が、ブロックBK0〜BK3に対して、BK0,BK1,BK2,BK3の順で実行される。ここで、ブロックBK0の再構成処理が終了した後、ブロックBK0のインループフィルター処理が開始する。同様に、ブロックBK1〜BK3の再構成処理が順に終了するタイミングで、ブロックBK1〜BK3のインループフィルター処理が順に開始する。
図9の例では、分割後のブロックの予測画像は、変換ユニットと同じ順序で出力される。そのため、図5の場合に比べ、再構成処理に必要な、差分画像、および、差分画像と同じ領域の予測画像の両方が、早く揃う。したがって、再構成処理およびインループフィルター処理の開始の遅延が小さくなる。よって、復号処理が高速化する。
また、分割後のブロックPU0a〜PU0h,PU1a〜PU1hは、16×16画素から構成され、フレームメモリ転送制御部162がフレームメモリ180から23×23画素(529画素)の参照画像を取得するため、従来のマクロブロックと同等の転送サイズとなるため、外部メモリバスを占有させることはない。また、従来と同程度のメモリバンド幅にて、復号処理を実現することが可能である。
図10は、図3の手順に従って、64×64 CU に対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。
以下、PU分割を実施する閾値サイズは、例えば、今回の場合、16×16画素とする。
図10(a)は、64×64 CU に対して、64×64 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0pが示されている。そして、ブロックPU0a,PU0b,・・・,PU0pの順で処理される。つまり、64x64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図10(b)は、64×64 CU に対して、64×32 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0h,PU1a〜PU1hが示されている。そして、ブロックPU0a,PU0b,PU0c,PU0d,PU0e,PU0f,PU0g,PU0h,PU1a,PU1b,PU1c,PU1d,PU1e,PU1f,PU1g,PU1hの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図10(c)は、64×64 CU に対して、32×64 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0h,PU1a〜PU1hが示されている。そして、ブロックPU0a,PU0b,PU0c,PU0d,PU1a,PU1b,PU1c,PU1d,PU0e,PU0f,PU0g,PU0h,PU1e,PU1f,PU1g,PU1hの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図10(d)は、64×64 CU に対して、32×32 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0d,PU1a〜PU1d,PU2a〜PU2d,PU3a〜PU3dが示されている。そして、ブロックPU0a,PU0b,PU0c,PU0d,PU1a,PU1b,PU1c,PU1d,PU2a,PU2b,PU2c,PU2d,PU3a,PU3b,PU3c,PU3dの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図11は、図3の手順に従って、64×64 CU に対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。特に、PUが非対称のブロック(AMP:Asymmetric MotionPartitionsと呼ぶ)で構成される。
以下、PU分割を実施する閾値サイズは、例えば、今回の場合、16×16画素とする。
図11(e)は、64×64 CU に対して、64×16 PU及び64×48 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0d,PU1a〜PU1lが示されている。そして、ブロックPU0a,PU0b,PU1a,PU1b,PU0c,PU0d,PU1c〜PU1lの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図11(f)は、64×64 CU に対して、64×48 PU及び64×16 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0l,PU1a〜PU1dが示されている。そして、ブロックPU0a〜PU0j,PU1a,PU1b,PU0k,PU0l,PU1c,PU1dの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図11(g)は、64×64 CU に対して、16×64 PU及び48×64 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0d,PU1a〜PU1lが示されている。そして、ブロックPU0a,PU1a,PU0b,PU1b,PU1c〜PU1f,PU0c,PU1g,PU0d,PU1h,PU1i〜PU1lの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図11(h)は、64×64 CU に対して、48×64 PU及び16×64 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0l,PU1a〜PU1dが示されている。そして、ブロックPU0a〜PU0d,PU0e,PU1a,PU0f,PU1b,PU0g〜PU0j,PU0k,PU1c,PU0l,PU1dの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
つまり、64×64 CU に対しては、図10(a)〜図10(d)、図11(e)〜図11(h)で示されるように、全て同じ16×16のブロックに分割され、全て同じ順番で処理されることになる。
図12は、図3の手順に従って、32×32 CU に対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。
図12(a)は、32×32 CU に対して、32×32 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる4個のブロックPU0a〜PU0dが示されている。そして、ブロックPU0a,PU0b,PU0c,PU0dの順で処理される。つまり、32×32 CUを四分木分割されたブロックを四分木分割された順番(例えば、Z順)で処理されることになる。
図12(b)は、32×32 CU に対して、32×16 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる4個のブロックPU0a,PU0b,PU1a,PU1bが示されている。そして、ブロックPU0a,PU0b,PU1a,PU1bの順で処理される。つまり、32×32 CUを四分木分割されたブロックを四分木分割された順番(例えば、Z順)で処理されることになる。
図12(c)は、32×32 CU に対して、16×32 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる4個のブロックPU0a,PU0b,PU1a,PU1bが示されている。そして、ブロックPU0a,PU1a,PU0b,PU1bの順で処理される。つまり、32×32 CUを四分木分割されたブロックを四分木分割された順番(例えば、Z順)で処理されることになる。
図12(d)は、32×32 CU に対して、16×16 PU では、閾値サイズ16×16画素と同じため、PU分割されない構成例を示す図である。4個のブロックPU0,PU1,PU2,PU3が示されている。そして、ブロックPU0,PU1,PU2,PU3の順で処理される。つまり、32×32 CUを四分木分割されたブロックを四分木分割された順番(例えば、Z順)で処理されることになる。
図13は、図3の手順に従って、32×32 CU に対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。特に、PUが非対称のブロック(AMP)で構成される。
図13(e)は、32×32 CU に対して、32×8 PUおよび32×24 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、さらに、実線と点線で、処理の単位となる6個のブロックPU0a,PU0b,PU1a〜PU1dが示されている。そして、ブロックPU0a,PU1a,PU0b,PU1b,PU1c,PU1dの順で処理される。つまり、32×32 CUを四分木分割された16×16ブロックをもとにした順番(例えば、Z順。16×16ブロック内もZ順)で処理されることになる。
図13(f)は、32×32 CU に対して、32×24 PUおよび32×8 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、さらに、実線と点線で、処理の単位となる6個のブロックPU0a〜PU0d,PU1a,PU1bが示されている。そして、ブロックPU0a,PU0b,PU0c,PU1a,PU0d,PU1bの順で処理される。つまり、32×32 CUを四分木分割された16×16ブロックをもとにした順番(例えば、Z順。16×16ブロック内もZ順)で処理されることになる。
図13(g)は、32×32 CU に対して、8×32PUおよび24×32PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、さらに、実線と点線で、処理の単位となる6個のブロックPU0a,PU0b,PU1a〜PU1dが示されている。そして、ブロックPU0a,PU1a,PU1b,PU0b,PU1c,PU1dの順で処理される。つまり、32×32 CUを四分木分割された16×16ブロックをもとにした順番(例えば、Z順。16×16ブロック内もZ順)で処理されることになる。
図13(h)は、32×32 CU に対して、24×32PUおよび8×32PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、さらに、実線と点線で、処理の単位となる6個のブロックPU0a〜PU0d,PU1a,PU1bが示されている。そして、ブロックPU0a,PU0b,PU1a,PU0c,PU0d,PU1bの順で処理される。つまり、32×32 CUを四分木分割された16×16ブロックをもとにした順番(例えば、Z順。16×16ブロック内もZ順)で処理されることになる。
つまり、32×32 CU に対しては、図12(a)〜図12(d)、図13(e)〜図13(h)で示されるように、32×32 CUを四分木分割された16×16ブロックをもとにした順番(例えば、Z順)でかつ、16×16ブロック内も分かれる場合は、Z順で処理されることになる。なお、上記Z順は、もし処理の単位のブロックが上下2つのブロックで構成された場合、上、下の順番で処理され、もし処理の単位のブロックが左右2つのブロックで構成された場合、左、右の順番で処理されることを意味する。したがって、同じ位置の同じ16×16のブロックであっても、処理の単位のブロックの処理の順は異なる。例えば、図13(e)と図13(g)の左上の16×16ブロックを見た場合、図13(e)では、PU0a,PU1aというように、上、下の順番となるが、図13(g)では、左、右の順となる。したがって、予測ユニットを跨ったブロックに関しても、予測ユニットの形状に関わらず、CUを四分木分割したブロック単位で処理することができ、しいては、予測ユニットの形状に関わらず、例えば、16×16毎の正方形のブロック単位で画像復号処理のパイプラインを構成することが可能になる。
PUが非対称のブロック(AMP)で構成される場合について、以下に説明する。
図14は、実施の形態1に係るPU分割をしない場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図14(a)は、本実施の形態に係るCUの構成例を示す図である。図14(a)に示されたCU0は、32×32画素のサイズを有する。
図14(b)は、図14(a)に示されたCU0におけるTUの構成例を示す図である。図14(b)には、16×16 画素で構成されたTUが4個の変換ユニットTU0〜TU3で示されている。そして、TU0〜TU3は、TU0,TU1,TU2,TU3の順で処理される。4個の変換ユニットTU0〜TU3に対する処理として、逆量子化、逆周波数変換等があり、結果を残差画像として出力する。
図14(c)は、図14(a)に示されたCU0におけるPUの構成例を示す図である。図14(c)には、32×8PUおよび32×24 PUが2個の予測ユニットPU0,PU1が示されている。そして、PU0,PU1は、PU0,PU1の順で処理される。
図14(d)は、図14(a)に示されたCU0の分割後のブロックの構成例を示す図である。図14(d)には、4個のブロックBK0〜BK3が示されている。そして、4個のブロックBK0〜BK3は、BK0,BK1,BK2,BK3の順で処理される。4個のブロックBK0〜BK3に対する処理として、再構成処理、インループフィルター処理及びフレームメモリ180への格納処理等がある。なお、図14(d)におけるブロック分割は、TUサイズと同等に分割した一例であり、PUサイズと同等に分割しても構わないし、他の分割方法でも構わない。
図15は、図14に示されたCU,TU,PU、再構成画像に、図3の手順が適用されなかった場合のパイプライン処理を示すタイムチャートである。図15の例では、TU処理が、変換ユニットTU0,TU1,TU2,TU3の順で実行される。なお、TU処理前の復号部110での復号処理はTU処理以前に行われており、図示は省略している(以降のタイミングチャートでも同様に省略している)。同時に、PU処理が、予測ユニットPU0,PU1に対して、実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。
図15の例では、TU処理がTU0に対して終了し、且つ、PU処理がPU0,PU1に対して終了するまで、再構成処理が開始できない。つまり、TU0が終了してから再構築処理を実行するまでに遅延時間が生じてしまう。
図16は、図3の手順に従ってPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図16(a)、図16(b)、図16(c)、図16(d)は、それぞれ、図14(a)、図14(b)、図14(c)、図14(d)と同じであるため、説明を省略する。
図16(c’)では、図16(a)に示された符合化ユニットCU0における予測ユニットを予め設定された閾値、例えば、今回の場合、16×16画素として、分割された後のブロックの構成例を示す図である。図16(c’)には、ブロックの構成を点線で示し、さらに、実線と点線で処理の単位となる6個のブロックPU0a,PU0b,PU1a〜PU1dが示されている。そして、ブロックPU0a,PU1a,PU0b,PU0b,PU1b,PU1c,PU1dの順で処理される。つまり、CU0を四分木分割されたブロックを四分木分割された順番でZ順に処理されることになる。
図17は、図16に示されたCU,TU,PU、再構成画像に、図3の手順に従ってPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図17の例では、TU処理が、変換ユニットTU0,TU1,TU2,TU3の順で実行される。同時に、PU処理が、ブロックPU0a,PU0b,PU1a〜PU1dに対して、PU0a,PU1a,PU0b,PU1b,PU1c,PU1dの順で実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。ここで、TU0に対してTU処理が終了し、ブロックPU0a,PU1aに対してPU処理が終了した後、ブロックBK0の再構成処理が開始する。同様にTU1〜TU3のTU処理が順に終了し、ブロックPU0b,PU1bの2ブロックと、PU1c,PU1dの各1ブロックずつのPU処理が順に終了するタイミングで、ブロックBK1〜BK3の再構成処理が順に開始する。
また、インループフィルター処理が、ブロックBK0〜BK3に対して、BK0,BK1,BK2,BK3の順で実行される。ここで、ブロックBK0の再構成処理が終了した後、ブロックBK0のインループフィルター処理が開始する。同様に、ブロックBK1〜BK3の再構成処理が順に終了するタイミングで、ブロックBK1〜BK3のインループフィルター処理が順に開始する。
図17の例では、分割後のブロックの予測画像は、変換ユニットと同じ順序で出力される。そのため、図15の場合に比べ、再構成処理に必要な、差分画像、および、差分画像と同じ領域の予測画像の両方が、早く揃う。したがって、再構成処理およびインループフィルター処理の開始の遅延が小さくなる。よって、復号処理が高速化する。また、図15の場合に比べ、再構成処理を開始が早くなる分、TU1〜TU3のTU処理結果やPU1のPU処理結果を保持しておく必要がなく、局所参照メモリや予測画像メモリといった回路面積の削減もすることができる。
上記のように、PU分割する閾値サイズを16×16程度にすることで、参照画像の取得には、従来のマクロブロック(16×16画素)程度と同等の転送サイズとなるため、外部メモリバスを占有させることはなく、また、従来と同程度のメモリバンド幅にて、復号処理を実現することが可能である。また、PU分割することで、内蔵の局所参照メモリ163や予測画像メモリ165を小さくすることができ、コストを抑えることが可能である。また、動き補償演算部164もPUサイズの規格最大である64×64画素に対応した回路を搭載する必要もなく、動き補償演算部164の面積を小さくすることが可能である。
なお、PU分割する閾値サイズと同等もしくはそれ以下のCUサイズに対しては、PU分割を行うことなく、PUの大きさをそのままで予測処理することで、外部メモリのバンドを増大させることもなく、復号することが可能である。
なお、外部メモリの性能向上により、バス占有率に問題ないのであれば、閾値サイズを大きくすることも可能である。
また、本明細では、予測ユニットがインター予測である場合に関して、説明してきたが、イントラ予測である場合に関しても同様のPU分割方法が適用可能である。
また、本明細では、変換ユニットが主に32×32 TUの場合に関して、説明してきたが、さらに小さなサイズに分割された場合に関しても(例えば、TU階層0,TU階層1,TU階層2などの場合)、TUサイズに関係なく、同様のPU分割方法が適用可能である。
<実施の形態2>
以下、本開示の実施の形態2における画像復号装置について説明する。実施の形態2に係る画像復号装置は、再構成処理の分割方法に関する点が実施の形態1と異なる。
図18は、図3の手順に従ってPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図18(a)、図18(b)、図18(c)、図18(c’)は、それぞれ、図8(a)、図8(b)、図8(c)、図8(c’)と同じであるため、説明を省略する。
図18(d)では、図18(a)に示された符合化ユニットCU0の分割後の構成例を示す図である。図18(d)には、16個のブロックBK0〜BK15が示されている。そして、16個のブロックBK0〜BK15は、BK0,BK1,・・・,BK15の順で処理される。16個のブロックBK0〜BK15に対する処理として、再構成処理、インループフィルター処理及びフレームメモリ180への格納処理等がある。なお、図18(d)におけるブロック分割は、PUの分割後のサイズと同等に分割した一例であり、その他にさらに小さく分割しても構わない。
つまり、再構成処理において、CU0を四分木分割されたブロックを再帰的に四分木分割された順番で処理されることになる。
図19は、図18に示されたCU,TU,PU、再構成画像に、図3の手順に従ってPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図19の例では、TU処理が、変換ユニットTU0,TU1,TU2,TU3の順で実行される。同時に、PU処理が、ブロックPU0a〜PU0h,PU1a〜PU1hに対して、PU0a,PU0b,PU0c,PU0d,PU1a,PU1b,PU1c,PU1d,PU0e,PU0f,PU0g,PU0h,PU1e,PU1f,PU1g,PU1hの順で実行される。その後、再構成処理が、BK0〜BK15に実行され、その後、インループフィルター処理がBK0〜BK15に対して、実行される。
ここで、TU0に対してTU処理が終了し、ブロックPU0a〜PU0dに対してPU処理が終了した後、ブロックBK0〜BK3の再構成処理が開始する。同様にTU1〜TU3のTU処理が順に終了し、ブロックPU1a〜PU1d,PU0e〜PU0h,PU1e〜PU1hの各4ブロックのPU処理が順に終了するタイミングで、ブロックBK4〜BK7,BK8〜BK11,BK12〜BK15の再構成処理が順に開始する。
また、インループフィルター処理が、ブロックBK0〜BK15に対して、BK0,BK1,BK2,・・,BK15の順で実行される。ここで、ブロックBK0の再構成処理が終了した後、ブロックBK0のインループフィルター処理が開始する。同様に、ブロックBK1〜BK15の再構成処理が順に終了するタイミングで、ブロックBK1〜BK15のインループフィルター処理が順に開始する。
図19の例では、再構成画像が16×16の単位で分割され処理されるため、インループフィルター処理もより細かな処理単位で実行されるため、図9の場合に比べ、インループフィルターの処理に必要な再構成画像がより早く揃う。したがって、インループフィルター処理の開始の遅延が小さくなる。よって、復号処理が高速化する。
上記のように、再構成処理をPU分割する閾値サイズである16×16程度にすることで、従来のマクロブロック(16×16画素)と同等のパイプライン構成をとることが可能であり、従来と同等の処理性能を実現することが可能である。また、再構成処理単位をより小さく分割することで、再構成部140とインループフィルター部150間の内蔵メモリを小さくすることができ、コストを抑えることが可能である。
<実施の形態3>
以下、本開示の実施の形態3における画像復号装置について説明する。実施の形態3に係る画像復号装置は、復号部110の処理に関する点が実施の形態1と異なる。
図20および図21では、復号部110の処理をパイプラインに追加している。
図20は、実施の形態3に係る、図6に示されたCU,TU,PU、再構成画像に、従来のPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図20の例では、PUサイズや予測ユニットに関するCUタイプやPUデータ、TUデータ(TU分割フラグ、TUに関する係数データ)TU0,TU1,TU2,TU3の順で復号処理が実行される。TU処理は、変換ユニットTU0,TU1,TU2,TU3の順で実行される。PU処理は、ブロックPU0a,PU0b,PU1a,PU1bに対して、PU0a,PU1a,PU0b,PU1bの順で実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。
ここで、TU0の復号処理が終了すると、TU0のTU処理を開始する。同様にTU1〜TU3の復号処理が終了し、TU0〜TU2のTU処理が順に終了するタイミングで、TU1〜TU3のTU処理が開始する。
PU処理は、TUの大きさが確定した後、TUのエッジで分割したPUブロックの処理を開始する。すなわち、TU0〜TU3の復号処理が終了後、ブロックPU0a,PU1a,PU0b,PU1bに対して、PU処理を開始する。ここで、TU0に対してTU処理が終了し、ブロックPU0aに対してPU処理が終了した後、ブロックBK0の再構成処理が開始する。同様にTU1〜TU3のTU処理が順に終了し、ブロックPU1a,PU0b,PU1bに対して、PU処理が順に終了するタイミングで、ブロックBK1〜BK3の再構成処理が順に開始する。
また、インループフィルター処理が、ブロックBK0〜BK3に対して、BK0,BK1,BK2,BK3の順で実行される。ここで、ブロックBK0の再構成処理が終了した後、ブロックBK0のインループフィルター処理が開始する。同様に、ブロックBK1〜BK3の再構成処理が順に終了するタイミングで、ブロックBK1〜BK3のインループフィルター処理が順に開始する。
図21は、実施の形態3に係る、図8に示されたCU,TU,PU、再構成画像に、図3の手順に従ってPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図21の例では、PUサイズや予測ユニットに関するCUタイプやPUデータ、TUデータ(TU分割フラグ、TUに関する係数データ)TU0,TU1,TU2,TU3の順で復号処理が実行される。TU処理は、変換ユニットTU0,TU1,TU2,TU3の順で実行される。PU処理は、ブロックPU0a,PU0b,PU1a,PU1bに対して、PU0a,PU1a,PU0b,PU1bの順で実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。
ここで、TU0の復号処理が終了すると、TU0のTU処理を開始する。同様にTU1〜TU3の復号処理が終了し、TU0〜TU2のTU処理が順に終了するタイミングで、TU1〜TU3のTU処理が開始する。
PU処理は、TUの大きさに関わらず、PUサイズや予測ユニットに関するCUタイプやPUデータの復号処理が終了した後、分割されたPUブロックの処理を開始する。すなわち、PUサイズや予測ユニットに関するCUタイプやPUデータの復号処理が終了後、PU処理が、ブロックPU0a〜PU0h,PU1a〜PU1hに対して、PU0a〜PU0d,PU1a〜PU1d,PU0e〜PU0h,PU1e〜PU1hの順で実行される。ここで、TU0に対してTU処理が終了し、ブロックPU0a〜PU0dに対してPU処理が終了した後、ブロックBK0の再構成処理が開始する。同様にTU1〜TU3のTU処理が順に終了し、ブロックPU1a〜PU1d,PU0e〜PU0h,PU1e〜PU1hの各4ブロックずつのPU処理が順に終了するタイミングで、ブロックBK1〜BK3の再構成処理が順に開始する。
また、インループフィルター処理が、ブロックBK0〜BK3に対して、BK0,BK1,BK2,BK3の順で実行される。ここで、ブロックBK0の再構成処理が終了した後、ブロックBK0のインループフィルター処理が開始する。同様に、ブロックBK1〜BK3の再構成処理が順に終了するタイミングで、ブロックBK1〜BK3のインループフィルター処理が順に開始する。
図21の例では、予測ユニットのPU処理がCUタイプ及びPUデータの復号処理直後に、開始される。そのため、図20の場合に比べ、再構成処理に必要な、差分画像、および、差分画像と同じ領域の予測画像の両方が、早く揃う。したがって、再構成処理およびインループフィルター処理の開始の遅延が小さくなる。よって、復号処理が高速化する。
<その他の実施の形態>
なお、実施の形態1乃至3では、その構成図を説明したが、実施の形態はこれだけでなく、1チップのLSIとして実現してもよいし、個別のLSIとして構成されてもよい。さらに、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。また、コンピューター上で実行されるプログラムとして実現されてもよい。
本開示にかかる画像復号装置は、予測処理を用いて符号化された符号化ストリームを復号する画像復号装置およびその再生方法に有用である。また、DVDレコーダ、DVDプレーヤ、ブルーレイディスクレコーダ、ブルーレイディスクプレーヤやデジタルTV、さらにはスマートフォンなどの携帯情報端末等の用途にも応用可能である。
100 画像復号装置
110 復号部
120 逆量子化部
130 逆周波数変換部
140 再構成部
150 インループフィルター部
160 動き補償部
161 分割部
162 フレームメモリ転送制御部
163 局所参照メモリ
164 動き補償演算部
165 予測画像メモリ
170 面内予測部
180 フレームメモリ
本開示は、予測処理を用いて符号化された符号化ストリームを復号する画像復号装置及び画像復号方法に関するものである。
最近、スマートフォンやスマートテレビに代表されるネットワーク配信技術の進展に伴い、より高精細でより高画質な動画配信が普及するようになってきた。一方で、高精細化を支える通信トラフィックや放送帯域の圧迫が懸念されており、2013年1月に、ITU−T(International Telecommunication Union Telecommunication Standardization Sector)が国際標準規格「H.265」として勧告した「HEVC(High Efficiency Video Coding)」は、同じ品質の動画をH.264(MPEG-4 AVC)の半分のデータ量で圧縮および伝送できるなど、通信・放送の帯域圧迫の解決策として注目されている。H.265規格の詳細については、非特許文献1に記載されている。
H.265規格では、従来の符号化規格であるH.264規格に対して符号化単位ブロックのサイズが可変になる。そして、この技術に係る画像符号化装置は、従来規格の符号化単位であるマクロブロック(16×16画素)よりも大きなブロックサイズで符号化することも可能であり、高精細な画像を適切に符号化することが可能である。
具体的には、図22のH.265規格におけるピクチャ及び符号化ストリームの構成例を示す図を用いて説明する。図22(A)に示すように、符号化のデータ単位として、符号化ユニット(CU:Coding Unit)が定義されている。この符号化ユニットは、従来の画像符号化規格におけるマクロブロックと同様に、面内予測を行うイントラ予測と、動き補償を行うインター予測とを切り替えることが可能なデータ単位であり、符号化の最も基本的なブロックとして規定されている。
この符号化ユニットのサイズは、H.265規格のMain Profileでは、8×8画素、16×16画素、32×32画素、64×64画素のいずれかである。
H.265規格では、各ピクチャの符号化処理を、最も大きな符号化ユニットCTU(Coding Tree Unit)と呼ばれる画素ブロックの単位で行う。CTUのサイズは、H.264規格やMPEG−2規格のマクロブロック(16×16画素)のように固定ではなく、シーケンスの符号化時に選択できる。
H.265規格のMain Profileでは、最大64×64画素ブロックと規定される。さらに、1枚のピクチャは複数のCTUを持ったスライス単位で符号化されてもよい。なお、図22(A)は1枚のピクチャが1つのスライスで構成された例を示す。
なお、イントラ予測やインター予測の一連の符号化処理は、CTUを再帰的に四分木分割することで得られるCUの単位で行われる。
CUの符号化処理に際して、イントラ予測とインター予測については、CU内をPU(Prediction Unit、予測ユニット)と呼ばれるブロックに分割して行われる。
また、予測差分信号の周波数変換及び量子化処理は、TU(Transform Unit、周波数変換ユニット)と呼ばれるブロック単位で行われる。
図22(B)は、符号化ストリームの構成例を示す図である。通常、符号化ストリームは、シーケンスヘッダ、ピクチャヘッダ、スライスヘッダ及びスライスデータから構成される。なお、H.265規格などで符号化された画像符号化ストリームでは、各ヘッダの先頭を示す、スタートコード(Start code、SCと略す)が付加されている。
また、シーケンスヘッダは、複数のピクチャのまとまりを示すシーケンスに対するヘッダ情報を示し、ピクチャヘッダは、1枚のピクチャに対するヘッダ情報を示す。スライスヘッダはスライスデータに対するヘッダ情報を示す。スライスデータは、複数のCTU及びCUを示すCUレイヤデータから構成される。なお、H.265規格では、シーケンスヘッダは、SPS(Sequence Parameter Set)とも呼ばれ、ピクチャヘッダは、PPS(PictureParameter Set)とも呼ばれる。
図23に、CTUをH.265規格に基づいて、CU,PU,TUに分割した一例を示す。CTUは、四分木分割される前の最大CUを示すため、CU階層0とする。四分木分割されるたびに、CU階層1、CU階層2などと再帰的に分割することが可能である。
TUもCTU内のCU分割と同様、CU内部で再帰的に四分木分割を行うことが可能である。
PUはこれ以上分割されないCUに対して、1つの予測モード(PU分割モード、PartModeで規定)で分割される。例えば、32×32画素のCUがPart_Nx2NのPU分割モードで分割された場合、32×32画素のCUは16×32画素のPUが2個から構成されることを示す。
なお、PU分割モードは、イントラ予測の場合、Part_2Nx2NまたはPart_NxNの2つから選択され、インター予測の場合、Part_2Nx2N,Part_2NxN,Part_Nx2N,Part_NxNの同じ大きさのブロックからなる4つの分割モードと、Part_2NxnU,Part_2NxnD,Part_nLx2N,Part_nRx2Nの非対称の大きさのブロック(AMP:Asymmetric MotionPartitionsという)からなる4つの分割モードの、合わせて8つの分割モードから選択できる。
なお、変換ユニットTUは、PU分割とは独立して、再帰的に四分木分割を行うことが可能である。変換ユニットTUには、予測差分画像に対する周波数成分を示す係数、つまり、変換係数のN×N個で構成される(例えば、Nは、4、8、16、32を示す)。
図24は、H.265規格におけるCUレイヤデータ以下の符号化ストリームの構成例を示す図である。
図24(A)は、CU,PU及びTUの構成を示す。CU及びPUは、64×64画素のブロックからなる構成を示し、TUは、32×32の4個のブロックで構成される例を示す。
図24(B)は、H.265におけるCUレイヤデータ以下の符号化ストリームの構成例を示す図である。なお、図24(B)には、以下の説明に必要な符号のみを簡略して記載しており、詳細は、H.265規格に記載される。
図24(B)の符号化ユニットに対応する符号化ユニットレイヤデータは、CU分割フラグ、および、CUデータ(符号化ユニットデータ)で構成される。このCU分割フラグは、「1」の場合、符号化ユニットを4分割することを示し、「0」の場合、符号化ユニットを4分割しないことを示す。
図24(B)では、64x64画素の符号化ユニットは分割されない。すなわち、CU分割フラグは「0」である。さらに、CUデータは、CUタイプ、動きベクトルまたは面内予測モードを示すPUデータ、および、係数を含む変換ユニットから構成されるTUレイヤデータ0で構成される。CUタイプによって、予測ユニットのサイズが決定される。
PUデータには、動きベクトルまたは面内予測モードのほかに、参照画像を示すフラグ(参照インデックスとも呼ぶ)やインター予測に必要な情報が含まれる。TUレイヤデータ0は、最上位層を示すTU階層0を示し、CUデータと同様に、TU分割フラグ、TUレイヤデータ1から構成される。
このTU分割フラグは、CU分割フラグと同様に、「1」の場合、変換ユニットを4分割することを示し、「0」の場合、変換ユニットを4分割しないことを示す。
TUレイヤデータ1は、TU0に対するTU分割フラグ、TUデータ(TU0)、TU1に対するTU分割フラグ、TUデータ(TU1)、TU2に対するTU分割フラグ、TUデータ(TU2)、TU3に対するTU分割フラグ、TUデータ(TU3)で構成される。なお、TUレイヤデータ1におけるTU分割フラグは「0」の例である。
ここで、TU0以外のTUデータは、直前の変換ユニット(例えば、TU1なら、TU0)までを復号しないと、各TU分割フラグが出現しないため、各TUの大きさが確定しないことがわかる。
図25は、H.265規格のインター予測におけるCU構成毎に選択可能なPU構成を示す図である。例えば、64×64 CUの場合、64×64 PU,64×32 PU,32×64 PU,32×32PU,64×16 PU,64×48 PU,16×64PU,48×64 PUがPartModeによって、選択される。
そして、予測ユニット毎に、インター予測の場合、動きベクトルや参照画像を示すフラグ(参照インデックスともいう)が、イントラ予測の場合、面内予測モードが指定される。
図26は、H.265規格で選択可能なTU構成を示す図である。具体的には、32×32 TU,16×16TU,8×8 TU,4×4TU からなり、全て正方形で構成される。
ところで、インター予測の場合、動きベクトルが指し示す参照ピクチャから参照画像を取得する必要がある。
図27は、動き補償処理の概略を示す図である。図27のように、動き補償処理は、符号化ストリームから復号された動きベクトルおよび参照インデックスによって指し示される、過去に復号されたピクチャの一部を取り出し、フィルター演算を行うことによって、予測画像を生成する処理である。H.265規格の場合、動き補償処理のフィルター演算は、最大8TAPフィルターが用いられる。
例えば、図27(A)に示すように、予測対象の予測ユニットの大きさが64×64画素(64×64 PU)の参照画像に8TAPフィルターが用いられる場合、64×64画素に7画素が垂直方向及び水平方向に付加される。具体的には、動きベクトルの指し示す整数位置を基点とした予測対象予測ユニットから、左に3画素、右に4画素、上に3画素、下に4画素が付加される。したがって、参照ピクチャから取り出される参照画像は、71×71画素である。
図27(B)は、予測対象の予測ユニットの大きさが16×16画素である場合を示す。8TAPフィルターが用いられる場合、参照ピクチャから取り出される参照画像は、64×64 PUの場合と同様に、23×23画素である。なお、動きベクトルが整数位置を指し示す場合は、予測ユニットの参照画像に対してフィルター処理を必要としないため、必要な参照画像の大きさは、予測ユニットの大きさと同じにしても構わない。
H.264規格では、最大、マクロブロック単位での予測であったため、同じ大きさの参照画像の取得には、H.265規格の16×16画素(256画素)の予測ユニットに対して、最大23×23画素(529画素)を必要としたが、H.265規格の場合、参照画像の取得には、64×64画素(4096画素)の予測ユニットに対して、最大71×71画素(5041画素)となる。つまり、1つの予測ユニットに必要なデータサイズが約9.5倍となり、参照ピクチャを外部メモリ(例えば、外付けのSDRAM)から取得する場合、外部メモリバスを占有する時間が約9.5倍にも増大することになり、復号処理以外のシステムに与える影響が大きく、例えば、表示用の出画処理等が破綻するという課題がある。
これに対し、特許文献1のように、動き補償ブロックサイズを固定の大きさにする目的ではあるが、例えば4×4画素や8×8画素の予測ユニットの最小サイズに分割処理することで、対策を行うことが可能である。ただし、小さなサイズに分割すればするほど、フィルター処理に必要な画素数が増大するため、例えば、H.265規格では8TAPフィルターに必要な画素(予測ユニットのサイズに、垂直方向及び水平方向に7画素付加される画素数)の割合が増大してしまい、外部メモリバンド幅に与える影響は大きく、性能破綻をきたすという課題がある。
例えば、16×16画素の予測ユニットに対して、8TAPフィルターをかけるには参照画像として、23×23画素(529画素)を必要とするが、4×4画素ブロック、16個に分割すると、8TAPフィルターをかけるには参照画像として、11×11画素(121画素)を16個必要とするため、1936画素(=121画素×16個)と、分割する前の約3.6倍もの参照画像を必要とするため、外部メモリバンド幅への影響が大きくなるという課題がある。
また、特許文献2のように、予測ユニットPUを変換ユニットTUのエッジで分割することで対策を行うことが可能である。ただし、TUサイズが32×32画素である場合、32×32画素の同じサイズの予測ユニットに対して、39×39画素(1521画素)の参照画像の取得が必要となり、16×16画素の予測ユニットに対する参照画像サイズ23×23画素(529画素)に比べ、約3倍のデータサイズを必要とするため、外部メモリバスの占有時間が長く、復号処理以外のシステムに大きく影響し、特に表示用の出画処理等が破綻するという課題がある。
また、特許文献2のように、予測ユニットPUを変換ユニットTUのエッジで分割する場合、予測ユニットの復号処理が、変換ユニットの大きさに依存するため、予測ユニットの復号処理が変換ユニットの大きさが確定するまで開始できず、予測ユニットの復号処理が遅延するという課題がある。なお、H.265規格では、変換ユニットの大きさは、TUレイヤが最下位層まで復号処理が進まないと、確定できない。
また、特許文献2のように、予測ユニットを変換ユニットのエッジで分割すると、より小さなTUに分割された場合(例えば、4×4TU)、予測ユニットも変換ユニットに依存して、予測処理する必要があるため、変換サイズより大きな予測ユニットに対しては、予測処理の復号処理性能が悪化するという課題がある。
特開2006−311526号公報
国際公開第2013/076888号
上述した従来技術のように、動き補償回路を予測ユニットの最小サイズに合わせて、分割することで、参照画像取得時の外部メモリバスの占有率を低減することは可能である。
しかしながら、分割サイズが小さくなればなるほど、予測処理におけるフィルター処理に必要な画素数が増大し、外部メモリバンド幅を増大させてしまうという課題がある。外部メモリバンド幅の増大は、出画処理を含めたシステム全体へ影響を与え、アプリケーションの破綻に繋がってしまう。
また、逆に、予測ユニットが大きくなればなるほど、予測処理を行う回路面積が増大するという課題がある。また、予測ユニットを変換ユニットの大きさに応じて、分割し、予測処理をすると、変換ユニットの大きさが確定するまで処理を開始できない、という課題がある。つまり、予測処理が遅延してしまい、予測処理を高速に動作できない。
かかる点に鑑みて、本開示は、予測ユニットに予測処理を利用して符号化された符号化ストリームを復号する際に、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、復号処理を高速に、さらに回路面積を抑えることが可能な画像復号装置及びその方法を提供することを課題とする。
本開示の一形態に係る画像復号装置は、符号化ユニットは、予測処理の単位としては、1以上の予測ユニットから構成され、周波数変換処理の単位としては、1以上の変換ユニットを含み、前記1以上の予測ユニットに対する予測処理と、前記1以上の変換ユニットに対する周波数変換処理とを含む符号化処理によって符号化された符号化ストリームを復号する。具体的には、前記予測ユニットの大きさが予め設定された大きさを超える場合、前記変換ユニットの大きさに関わらず、前記予測ユニットを複数のブロックに分割する分割手段と、前記予測ユニットを分割することで得られたブロック毎に、前記予測ユニットの予測画像に関する復号処理を行うことで予測画像を生成する予測画像生成手段と、前記予測画像生成手段で生成された予測画像を利用して画像を復元する画像復元手段とを備える。
これによれば、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記分割手段は、前記予め設定された大きさ以下に分割してもよい。
これによれば、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを予め設定された大きさ以下に分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記分割手段は、前記符号化ユニットを構成する前記1以上の全ての予測ユニットをまとめた1つのブロックを、同じ大きさの4つのブロックに分割し、前記分割された各ブロックを前記分割手段に予め設定された大きさ以下になるまで再帰的に分割してもよい。
これによれば、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、1以上の予測ユニットをまとめた1つのブロックを、同じ大きさの4つのブロックに分割し、分割された各ブロックを予め設定された大きさ以下になるまで再帰的に分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記予測画像生成手段は、前記分割手段によって前記再帰的に分割されたブロックを再帰的に且つZ順に予測画像を生成してもよい。
これによれば、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、1以上の予測ユニットをまとめた1つのブロックを同じ大きさの4つのブロックに分割し、分割された各ブロックを予め設定された大きさ以下になるまで再帰的に分割し、再帰的に分割されたブロックを再帰的に且つZ順に予測画像を生成することで、復号処理を高速に実行することができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を高速に実行することができる。
また、前記分割手段は、前記分割手段に予め設定された大きさが16画素×16画素であってもよい。
これによれば、16×16画素を超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、16×16画素以下に予測ユニットに分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記予測画像生成手段は、過去に復号された画像データを取得し、予測画像を生成してもよい。
これによれば、過去に復号された画像データを取得し、予測画像を生成することが可能になり、さらに、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記予測画像生成手段は、過去に復号された画像データを外部メモリから取得し、予測画像を生成してもよい。
これによれば、過去に復号された画像データを外部メモリから取得することで、予測画像を生成することが可能になり、さらに、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記予測画像生成手段は、過去に復号された画像データから前記予測ユニットの動きベクトルを用いて、動き補償処理を行い、予測画像を生成してもよい。
これによれば、過去に復号された画像データから予測ユニットの動きベクトルを用いて、動き補償処理を行い、予測画像を生成することが可能になり、さらに、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
また、前記画像復元手段は、逆周波数変換処理された残差画像を加算することで画像を復元してもよい。
これによれば、予測画像に逆周波数変換処理された残差画像を加算することで画像復元することが可能になり、さらに、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
前記符号化ストリームは、H.265で符号化されてもよい。
これによれば、H.265で符号化ストリームを復元することが可能になり、さらに、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関係なく、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
本開示の一形態に係る画像復号方法は、符号化ユニットは、予測処理の単位としては、1以上の予測ユニットから構成され、周波数変換処理の単位としては、1以上の変換ユニットから構成され、前記1以上の予測ユニットに対する予測処理と、前記1以上の変換ユニットに対する周波数変換処理とを含む符号化処理によって符号化された符号化ストリームを復号する画像復号方法である。具体的には、前記予測ユニットの大きさが予め設定された大きさを超える場合、前記変換ユニットの大きさに関わらず、前記予測ユニットを複数のブロックに分割する分割ステップと、前記予測ユニットを分割することで得られたブロック毎に、前記予測ユニットの予測画像に関する復号処理を行うことで予測画像を生成する予測画像生成ステップと、前記予測画像生成ステップで生成された予測画像を利用して画像を復元する画像復元ステップとを含む。
これによれば、予め設定された大きさを超えるような予測ユニットに対しても、変換ユニットの大きさに関わらず、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
本開示の一形態に係る集積回路は、符号化ユニットは、予測処理の単位としては、1以上の予測ユニットから構成され、周波数変換処理の単位としては、1以上の変換ユニットから構成され、前記1以上の予測ユニットに対する予測処理と、前記1以上の変換ユニットに対する周波数変換処理とを含む符号化処理によって符号化された符号化ストリームを復号する。
具体的には、集積回路は、前記予測ユニットの大きさが予め設定された大きさを超える場合、前記変換ユニットの大きさに関わらず、前記予測ユニットを複数のブロックに分割する分割部と、前記予測ユニットを分割することで得られたブロック毎に、前記予測ユニットの予測画像に関する復号処理を行うことで予測画像を生成する予測画像生成部と、前記予測画像生成部で生成された予測画像を利用して画像を復元する画像復元部とを備える。
これによれば、予め設定された大きさを超えるような予測ユニットに対しても、前記変換ユニットの大きさに関わらず、予測ユニットを分割することで、予測ユニットの大きさを抑えることができる。
これにより、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
以上のように、本開示にかかる画像復号装置によれば、変換ユニットの大きさに関わらず、外部メモリバスを占有させることなく、また、外部メモリバンド幅を増大させることなく、さらに予測処理回路の面積を増大させることなく、復号処理を実行することができる。
図1は、実施の形態1に係る画像復号装置の構成を示すブロック図である。
図2は、実施の形態1に係る動き補償部の構成を示すブロック図である。
図3は、実施の形態1に係る予測画像生成のフローチャートである。
図4は、実施の形態1に係るPU分割をしない場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図5は、実施の形態1に係るPU分割をしない場合に関する、パイプライン処理を示すタイミングチャートである。
図6は、実施の形態1に係る従来のPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図7は、実施の形態1に係る従来のPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図8は、実施の形態1に係るPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図9は、実施の形態1に係るPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図10は、実施の形態1に係る64×64CUに対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。
図11は、実施の形態1に係る64×64CUに対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。
図12は、実施の形態1に係る32×32CUに対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。
図13は、実施の形態1に係る32×32CUに対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。
図14は、実施の形態1に係るPU分割をしない場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図15は、実施の形態1に係るPU分割をしない場合に関する、パイプライン処理を示すタイミングチャートである。
図16は、実施の形態1に係るPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図17は、実施の形態1に係るPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図18は、実施の形態2に係るPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図19は、実施の形態2に係るPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図20は、実施の形態3に係る従来のPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図21は、実施の形態3に係るPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図22は、H.265規格におけるピクチャ及び符号化ストリームの構成例を示す図である。
図23は、H.265規格におけるCTU,CU,PU,TU分割した一例を示す図である。
図24は、H.265規格におけるCUレイヤデータ以下の符号化ストリームの構成例を示す図である。
図25は、H.265規格のインター予測におけるCU構成毎に選択可能なPU構成を示す図である。
図26は、H.265規格で選択可能なTU構成を示す図である。
図27は、動き補償処理の概略を示す図である。
以下、図面を参照しつつ、本開示の実施の形態について説明する。
<実施の形態1>
以下、本開示の実施の形態1における画像復号装置について説明する。
図1は、実施の形態1に係る画像復号装置の構成を示すブロック図である。
図1に示すように、画像復号装置100は、復号部110と、逆量子化部120と、逆周波数変換部130と、再構成部140と、インループフィルター部150と、動き補償部160と、面内予測部170と、フレームメモリ180とを備える。各部は、基本的には、従来におけるH.265規格に基づく復号を行うものとし、従来と同様の処理については説明を簡略化する。
復号部110は、入力された符号化ストリームの符号化ユニット(Coding Unit。以下、CUと呼ぶ)がインター予測の場合、復号部110に入力された符号化ストリームを復号して、予測ユニット(Prediction Unit。以下、PUと呼ぶ)の動きベクトル及び参照画像情報(例えば、参照画像を特定するためのフラグ、参照インデックス)及びCUやPUに関する情報(例えば、CUの大きさやPU分割モードPartMode)を動き補償部160へ出力する。なお、復号部110は、H.265規格に基づく、算術復号や可変長復号などを処理する。
動き補償部160は、復号部110から受け取った動きベクトル及び参照画像情報及びCUやPUに関する情報からフレームメモリ180の参照画像位置を特定し、フレームメモリ180から参照画像を取得する。取得した参照画像からPUに対する動き補償を行い、予測画像を生成し、再構成部140へ出力する。
一方、復号部110で復号された周波数変換ユニット(Transform Unit。以下、TUと呼ぶ)の周波数成分の係数データ(例えば、DCT係数や変換係数)を逆量子化部120へ出力する。逆量子化部120は、復号部110から受け取った係数データを逆量子化し、結果を逆周波数変換部130へ出力する。逆周波数変換部130は、逆量子化部120から受け取った逆量子化後の係数データをTU単位で逆周波数変換し、残差画像として、再構成部140へ結果を出力する。
再構成部140は、逆周波数変換部130から受け取った残差画像と、動き補償部160から受け取った予測画像とを加算し、再構成画像として、結果をインループフィルター部150へ出力する。
インループフィルター部150は、再構成部140から受け取った再構成画像にインループフィルター(例えば、デブロッキングフィルターやサンプル適応フィルター(SAO:Sample Adaptive Offset Filter))を行った上で、復号画像として、結果をフレームメモリ180へ出力する。その後、復号画像は、フレームメモリ180から表示部(図示省略)へ出力される。
また、時間的に異なる参照画像を用いないIピクチャやイントラ予測ブロックである予測ユニットでは、復号部110で算出した面内予測モードを面内予測部170へ出力する。
面内予測部170は、復号部110から受け取った面内予測モードから面内予測を行い、予測画像を生成し、再構成部140へ出力する。なお、図示は省略しているが、面内予測に必要な再構成画像は、再構成部140から取得することが可能である。
再構成部140は、インター予測の場合と同様に、逆周波数変換部130から受け取った残差画像と、面内予測部170から受け取った予測画像とを加算し、再構成画像として、結果をインループフィルター部150へ出力する。
インループフィルター部150以降の処理は、インター予測と同じため、省略する。
次に、動き補償部160について、詳細を説明する。
図2は、実施の形態1に係る動き補償部の構成を示すブロック図である。
分割部161は、復号部110から受け取ったCUやPUの情報からPUを分割するかどうかを決定し、分割する場合は、分割したブロック毎に、分割する前のPUの動きベクトルと参照画像情報と分割後のブロック位置情報を保持し、その分割結果に応じて、分割されたブロック毎の情報をフレームメモリ転送制御部162へ転送する。なお、分割方法や分割されたブロックの処理順に関しては、後で詳細を説明する。また、分割しない場合は、PUの動きベクトルや参照画像情報やPUの位置情報をフレームメモリ転送制御部162へ転送する。
フレームメモリ転送制御部162は、分割部161から受け取った動きベクトルや参照画像情報やブロックやPUの位置情報を元に、予測画像を生成するためにフレームメモリ180にある参照ピクチャの参照画像位置を特定し、フレームメモリ180から参照画像データを取得し、局所参照メモリ163へ転送する。
動き補償演算部164は、局所参照メモリ163に格納された参照画像データを用いて、動き補償対照ブロック毎に、動き補償演算を行い、予測画像を生成し、予測画像メモリ165に出力する。
再構成部140は、予測画像メモリ165に格納された予測画像と、逆周波数変換部130から受け取った残差画像とを加算し、再構成画像として、結果を出力する。
図3は、実施の形態1に係る予測画像生成のフローチャートである。
まず、復号部110は、符号化ストリームから取得したCU情報およびPU情報を分割部161へ出力する(ステップS301)。
次に、分割部161では、PUサイズが予め設定された閾値のサイズを超えるかを求め、その結果が超えると判断された場合(ステップS302でYes)、PUサイズが閾値サイズ以下になるように分割する(ステップS303)。
フレームメモリ転送制御部162は、分割された各ブロックのフレームメモリ180上の参照画像の位置およびサイズを算出し(ステップS304)、動き補償対象ブロックの動き補償処理に必要な参照画像データをフレームメモリ180から取得し、局所参照メモリ163に転送する(ステップS306)。
なお、分割部161で、PUサイズが予め設定された閾値のサイズを超えないと判断された場合(ステップS302でNo)、フレームメモリ転送制御部162は、PU毎の動きベクトルが指し示す参照画像領域、つまり、動き補償対象ブロックの動き補償処理に必要な参照画像データの位置とサイズを算出し(ステップS305)、フレームメモリ180から参照画像を取得し、局所参照メモリ163に転送する(ステップS306)。
動き補償演算部164は、局所参照メモリ163から取得した参照画像データを用いて、動き補償対象ブロック毎に動き補償演算を行い、生成された予測画像を予測画像メモリ165に出力する(ステップS307)。
次に、PUサイズ毎の分割方法について、従来の場合と本開示との差異を分かりやすくするために、より詳細な分割方法について、以下に説明する。
図4は、実施の形態1に係るPU分割をしない場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図4(a)は、本実施の形態に係るCUの構成例を示す図である。図4(a)に示されたCU0は、64×64画素のサイズを有する。
図4(b)は、図4(a)に示されたCU0におけるTUの構成例を示す図である。図4(b)には、32×32画素で構成されたTU(以下、32×32 TUと記載。CU,PUも同様に記載)が4個の変換ユニットTU0〜TU3で示されている。そして、TU0〜TU3は、TU0,TU1,TU2,TU3の順で処理される。4個の変換ユニットTU0〜TU3に対する処理として、逆量子化、逆周波数変換等があり、結果を残差画像として出力する。
図4(c)は、図4(a)に示されたCU0におけるPUの構成例を示す図である。図4(c)には、32×64 PUが2個の予測ユニットPU0,PU1が示されている。そして、PU0及びPU1は、PU0,PU1の順で処理される。
図4(d)は、図4(a)に示されたCU0の分割後のブロックの構成例を示す図である。図4(d)には、4個のブロックBK0〜BK3が示されている。そして、4個のブロックBK0〜BK3は、BK0,BK1,BK2,BK3の順で処理される。4個のブロックBK0〜BK3に対する処理として、再構成処理、インループフィルター処理及びフレームメモリ180への格納処理等がある。なお、図4(d)におけるブロック分割は、TUサイズと同等に分割した一例であり、PUサイズと同等に分割しても構わないし、他の分割方法でも構わない。
図5は、図4に示されたCU,TU,PU、再構成画像に、図3の手順が適用されなかった場合のパイプライン処理を示すタイムチャートである。図5の例では、TU処理が、変換ユニットTU0,TU1,TU2,TU3の順で実行される。なお、TU処理前の復号部110での復号処理はTU処理以前に行われており、図示は省略している(以降のタイミングチャートでも同様に省略している)。同時に、PU処理が、予測ユニットPU0,PU1に対して、実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。
図5の例では、PU処理がPU0に対して終了して、かつ、TU処理がTU0に対して終了するまで、再構成処理が開始できない。つまり、TU0が終了してから再構築処理を実行するまでに遅延時間が生じてしまう。また、PU0は、32×64 PUから構成され、フレームメモリ転送制御部162がフレームメモリ180から39×71画素(2769画素)もの参照画像を取得するため、外部メモリバスを占有してしまう。
図6は、従来のTUのエッジに応じてPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図6(a)、図6(b)、図6(c)、図6(d)は、それぞれ、図4(a)、図4(b)、図4(c)、図4(d)と同じであるため、説明を省略する。
図6(c’)は、図6(a)に示された符号化ユニットCU0における予測ユニットをTUのエッジに応じて、分割された後のブロックの構成例を示す図である。なお、点線で処理の単位となるブロックの構成を示す(以下、分割されたブロックの構成に関しては同じである)。図6(c’)には、4個のブロックPU0a,PU0b,PU1a,PU1bが示されている。そして、PU0a,PU1a,PU0b,PU1bの順で処理される。4個のブロックPU0a,PU0b,PU1a,PU1bに対する処理として、参照画像の取得、動き補償演算、および、予測画像の出力処理等がある。なお、上記処理は、PU処理と同等の処理であるため、特に断らなければ、分割ブロックに対するPU処理(単に、PU処理)と記載する。
図7は、図6に示されたCU,TU,PU、再構成画像に、従来のTUのエッジに応じてPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図7の例では、TU処理が、変換ユニットTU0,TU1,TU2,TU3の順で実行される。同時に、PU処理が、ブロックPU0a,PU0b,PU1a,PU1bに対して、PU0a,PU1a,PU0b,PU1bの順で実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。ここで、TU0に対してTU処理が終了し、ブロックPU0aに対してPU処理が終了した後、ブロックBK0の再構成処理が開始する。同様にTU1〜TU3のTU処理が順に終了し、ブロックPU1a,PU0b,PU1bに対して、PU処理が順に終了するタイミングで、ブロックBK1〜BK3の再構成処理が順に開始する。
また、インループフィルター処理が、ブロックBK0〜BK3に対して、BK0,BK1,BK2,BK3の順で実行される。ここで、ブロックBK0の再構成処理が終了した後、ブロックBK0のインループフィルター処理が開始する。同様に、ブロックBK1〜BK3の再構成処理が順に終了するタイミングで、ブロックBK1〜BK3のインループフィルター処理が順に開始する。
図7の例では、分割後のブロックの予測画像は、変換ユニットと同じ順序で出力される。そのため、図5の場合に比べ、再構成処理に必要な、差分画像、および、差分画像と同じ領域の予測画像の両方が、早く揃う。したがって、再構成処理およびインループフィルター処理の開始の遅延が小さくなる。よって、復号処理が高速化する。
しかしながら、分割後のブロックPU0a,PU1a,PU0b,PU1bは、32×32画素から構成され、各分割後のブロックPU0a,PU1a,PU0b,PU1bは、フレームメモリ転送制御部162がフレームメモリ180からそれぞれ39×39画素(1521画素)もの参照画像を取得するため、外部メモリバスを占有してしまう。
図8は、図3の手順に従ってPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図8(a)、図8(b)、図8(c)、図8(d)は、それぞれ、図4(a)、図4(b)、図4(c)、図4(d)と同じであるため、説明を省略する。
図8(c’)では、図8(a)に示された符号化ユニットCU0における予測ユニットを予め設定された閾値、例えば、今回の場合、16×16画素として、分割された後のブロックの構成例を示す図である。図8(c’)には、16個のブロックPU0a〜PU0h,PU1a〜PU1hが示されている。そして、ブロックPU0a,PU0b,PU0c,PU0d,PU1a,PU1b,PU1c,PU1d,PU0e,PU0f,PU0g,PU0h,PU1e,PU1f,PU1g,PU1hの順で処理される。つまり、CU0を四分木分割されたブロックを再帰的に四分木分割された順番でZ順に処理されることになる。
図9は、図8に示されたCU,TU,PU、再構成画像に、図3の手順に従ってPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図9の例では、TU処理が、変換ユニットTU0,TU1,TU2,TU3の順で実行される。同時に、PU処理が、ブロックPU0a〜PU0h,PU1a〜PU1hに対して、PU0a,PU0b,PU0c,PU0d,PU1a,PU1b,PU1c,PU1d,PU0e,PU0f,PU0g,PU0h,PU1e,PU1f,PU1g,PU1hの順で実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。ここで、TU0に対してTU処理が終了し、ブロックPU0a〜PU0dに対してPU処理が終了した後、ブロックBK0の再構成処理が開始する。同様にTU1〜TU3のTU処理が順に終了し、ブロックPU1a〜PU1d,PU0e〜PU0h,PU1e〜PU1hの各4ブロックずつのPU処理が順に終了するタイミングで、ブロックBK1〜BK3の再構成処理が順に開始する。
また、インループフィルター処理が、ブロックBK0〜BK3に対して、BK0,BK1,BK2,BK3の順で実行される。ここで、ブロックBK0の再構成処理が終了した後、ブロックBK0のインループフィルター処理が開始する。同様に、ブロックBK1〜BK3の再構成処理が順に終了するタイミングで、ブロックBK1〜BK3のインループフィルター処理が順に開始する。
図9の例では、分割後のブロックの予測画像は、変換ユニットと同じ順序で出力される。そのため、図5の場合に比べ、再構成処理に必要な、差分画像、および、差分画像と同じ領域の予測画像の両方が、早く揃う。したがって、再構成処理およびインループフィルター処理の開始の遅延が小さくなる。よって、復号処理が高速化する。
また、分割後のブロックPU0a〜PU0h,PU1a〜PU1hは、16×16画素から構成され、フレームメモリ転送制御部162がフレームメモリ180から23×23画素(529画素)の参照画像を取得するため、従来のマクロブロックと同等の転送サイズとなるため、外部メモリバスを占有させることはない。また、従来と同程度のメモリバンド幅にて、復号処理を実現することが可能である。
図10は、図3の手順に従って、64×64 CU に対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。
以下、PU分割を実施する閾値サイズは、例えば、今回の場合、16×16画素とする。
図10(a)は、64×64 CU に対して、64×64 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0pが示されている。そして、ブロックPU0a,PU0b,・・・,PU0pの順で処理される。つまり、64x64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図10(b)は、64×64 CU に対して、64×32 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0h,PU1a〜PU1hが示されている。そして、ブロックPU0a,PU0b,PU0c,PU0d,PU0e,PU0f,PU0g,PU0h,PU1a,PU1b,PU1c,PU1d,PU1e,PU1f,PU1g,PU1hの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図10(c)は、64×64 CU に対して、32×64 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0h,PU1a〜PU1hが示されている。そして、ブロックPU0a,PU0b,PU0c,PU0d,PU1a,PU1b,PU1c,PU1d,PU0e,PU0f,PU0g,PU0h,PU1e,PU1f,PU1g,PU1hの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図10(d)は、64×64 CU に対して、32×32 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0d,PU1a〜PU1d,PU2a〜PU2d,PU3a〜PU3dが示されている。そして、ブロックPU0a,PU0b,PU0c,PU0d,PU1a,PU1b,PU1c,PU1d,PU2a,PU2b,PU2c,PU2d,PU3a,PU3b,PU3c,PU3dの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図11は、図3の手順に従って、64×64 CU に対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。特に、PUが非対称のブロック(AMP:Asymmetric MotionPartitionsと呼ぶ)で構成される。
以下、PU分割を実施する閾値サイズは、例えば、今回の場合、16×16画素とする。
図11(e)は、64×64 CU に対して、64×16 PU及び64×48 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0d,PU1a〜PU1lが示されている。そして、ブロックPU0a,PU0b,PU1a,PU1b,PU0c,PU0d,PU1c〜PU1lの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図11(f)は、64×64 CU に対して、64×48 PU及び64×16 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0l,PU1a〜PU1dが示されている。そして、ブロックPU0a〜PU0j,PU1a,PU1b,PU0k,PU0l,PU1c,PU1dの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図11(g)は、64×64 CU に対して、16×64 PU及び48×64 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0d,PU1a〜PU1lが示されている。そして、ブロックPU0a,PU1a,PU0b,PU1b,PU1c〜PU1f,PU0c,PU1g,PU0d,PU1h,PU1i〜PU1lの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
図11(h)は、64×64 CU に対して、48×64 PU及び16×64 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる16個のブロックPU0a〜PU0l,PU1a〜PU1dが示されている。そして、ブロックPU0a〜PU0d,PU0e,PU1a,PU0f,PU1b,PU0g〜PU0j,PU0k,PU1c,PU0l,PU1dの順で処理される。つまり、64×64 CUを四分木分割されたブロックを再帰的に四分木分割された順番(例えば、Z順)で処理されることになる。
つまり、64×64 CU に対しては、図10(a)〜図10(d)、図11(e)〜図11(h)で示されるように、全て同じ16×16のブロックに分割され、全て同じ順番で処理されることになる。
図12は、図3の手順に従って、32×32 CU に対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。
図12(a)は、32×32 CU に対して、32×32 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる4個のブロックPU0a〜PU0dが示されている。そして、ブロックPU0a,PU0b,PU0c,PU0dの順で処理される。つまり、32×32 CUを四分木分割されたブロックを四分木分割された順番(例えば、Z順)で処理されることになる。
図12(b)は、32×32 CU に対して、32×16 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる4個のブロックPU0a,PU0b,PU1a,PU1bが示されている。そして、ブロックPU0a,PU0b,PU1a,PU1bの順で処理される。つまり、32×32 CUを四分木分割されたブロックを四分木分割された順番(例えば、Z順)で処理されることになる。
図12(c)は、32×32 CU に対して、16×32 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、この点線は同時に処理の単位のブロックも示している。処理の単位となる4個のブロックPU0a,PU0b,PU1a,PU1bが示されている。そして、ブロックPU0a,PU1a,PU0b,PU1bの順で処理される。つまり、32×32 CUを四分木分割されたブロックを四分木分割された順番(例えば、Z順)で処理されることになる。
図12(d)は、32×32 CU に対して、16×16 PU では、閾値サイズ16×16画素と同じため、PU分割されない構成例を示す図である。4個のブロックPU0,PU1,PU2,PU3が示されている。そして、ブロックPU0,PU1,PU2,PU3の順で処理される。つまり、32×32 CUを四分木分割されたブロックを四分木分割された順番(例えば、Z順)で処理されることになる。
図13は、図3の手順に従って、32×32 CU に対してPU分割を実施した場合に関する、PUのブロック構成例を示す図である。特に、PUが非対称のブロック(AMP)で構成される。
図13(e)は、32×32 CU に対して、32×8 PUおよび32×24 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、さらに、実線と点線で、処理の単位となる6個のブロックPU0a,PU0b,PU1a〜PU1dが示されている。そして、ブロックPU0a,PU1a,PU0b,PU1b,PU1c,PU1dの順で処理される。つまり、32×32 CUを四分木分割された16×16ブロックをもとにした順番(例えば、Z順。16×16ブロック内もZ順)で処理されることになる。
図13(f)は、32×32 CU に対して、32×24 PUおよび32×8 PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、さらに、実線と点線で、処理の単位となる6個のブロックPU0a〜PU0d,PU1a,PU1bが示されている。そして、ブロックPU0a,PU0b,PU0c,PU1a,PU0d,PU1bの順で処理される。つまり、32×32 CUを四分木分割された16×16ブロックをもとにした順番(例えば、Z順。16×16ブロック内もZ順)で処理されることになる。
図13(g)は、32×32 CU に対して、8×32PUおよび24×32PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、さらに、実線と点線で、処理の単位となる6個のブロックPU0a,PU0b,PU1a〜PU1dが示されている。そして、ブロックPU0a,PU1a,PU1b,PU0b,PU1c,PU1dの順で処理される。つまり、32×32 CUを四分木分割された16×16ブロックをもとにした順番(例えば、Z順。16×16ブロック内もZ順)で処理されることになる。
図13(h)は、32×32 CU に対して、24×32PUおよび8×32PU を閾値サイズ16×16画素で分割されたブロックの構成例を示す図である。なお、ブロックの構成を点線で示し、さらに、実線と点線で、処理の単位となる6個のブロックPU0a〜PU0d,PU1a,PU1bが示されている。そして、ブロックPU0a,PU0b,PU1a,PU0c,PU0d,PU1bの順で処理される。つまり、32×32 CUを四分木分割された16×16ブロックをもとにした順番(例えば、Z順。16×16ブロック内もZ順)で処理されることになる。
つまり、32×32 CU に対しては、図12(a)〜図12(d)、図13(e)〜図13(h)で示されるように、32×32 CUを四分木分割された16×16ブロックをもとにした順番(例えば、Z順)でかつ、16×16ブロック内も分かれる場合は、Z順で処理されることになる。なお、上記Z順は、もし処理の単位のブロックが上下2つのブロックで構成された場合、上、下の順番で処理され、もし処理の単位のブロックが左右2つのブロックで構成された場合、左、右の順番で処理されることを意味する。したがって、同じ位置の同じ16×16のブロックであっても、処理の単位のブロックの処理の順は異なる。例えば、図13(e)と図13(g)の左上の16×16ブロックを見た場合、図13(e)では、PU0a,PU1aというように、上、下の順番となるが、図13(g)では、左、右の順となる。したがって、予測ユニットを跨ったブロックに関しても、予測ユニットの形状に関わらず、CUを四分木分割したブロック単位で処理することができ、ひいては、予測ユニットの形状に関わらず、例えば、16×16毎の正方形のブロック単位で画像復号処理のパイプラインを構成することが可能になる。
PUが非対称のブロック(AMP)で構成される場合について、以下に説明する。
図14は、実施の形態1に係るPU分割をしない場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図14(a)は、本実施の形態に係るCUの構成例を示す図である。図14(a)に示されたCU0は、32×32画素のサイズを有する。
図14(b)は、図14(a)に示されたCU0におけるTUの構成例を示す図である。図14(b)には、16×16 画素で構成されたTUが4個の変換ユニットTU0〜TU3で示されている。そして、TU0〜TU3は、TU0,TU1,TU2,TU3の順で処理される。4個の変換ユニットTU0〜TU3に対する処理として、逆量子化、逆周波数変換等があり、結果を残差画像として出力する。
図14(c)は、図14(a)に示されたCU0におけるPUの構成例を示す図である。図14(c)には、32×8PUおよび32×24 PUが2個の予測ユニットPU0,PU1が示されている。そして、PU0,PU1は、PU0,PU1の順で処理される。
図14(d)は、図14(a)に示されたCU0の分割後のブロックの構成例を示す図である。図14(d)には、4個のブロックBK0〜BK3が示されている。そして、4個のブロックBK0〜BK3は、BK0,BK1,BK2,BK3の順で処理される。4個のブロックBK0〜BK3に対する処理として、再構成処理、インループフィルター処理及びフレームメモリ180への格納処理等がある。なお、図14(d)におけるブロック分割は、TUサイズと同等に分割した一例であり、PUサイズと同等に分割しても構わないし、他の分割方法でも構わない。
図15は、図14に示されたCU,TU,PU、再構成画像に、図3の手順が適用されなかった場合のパイプライン処理を示すタイムチャートである。図15の例では、TU処理が、変換ユニットTU0,TU1,TU2,TU3の順で実行される。なお、TU処理前の復号部110での復号処理はTU処理以前に行われており、図示は省略している(以降のタイミングチャートでも同様に省略している)。同時に、PU処理が、予測ユニットPU0,PU1に対して、実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。
図15の例では、TU処理がTU0に対して終了し、且つ、PU処理がPU0,PU1に対して終了するまで、再構成処理が開始できない。つまり、TU0が終了してから再構築処理を実行するまでに遅延時間が生じてしまう。
図16は、図3の手順に従ってPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図16(a)、図16(b)、図16(c)、図16(d)は、それぞれ、図14(a)、図14(b)、図14(c)、図14(d)と同じであるため、説明を省略する。
図16(c’)では、図16(a)に示された符号化ユニットCU0における予測ユニットを予め設定された閾値、例えば、今回の場合、16×16画素として、分割された後のブロックの構成例を示す図である。図16(c’)には、ブロックの構成を点線で示し、さらに、実線と点線で処理の単位となる6個のブロックPU0a,PU0b,PU1a〜PU1dが示されている。そして、ブロックPU0a,PU1a,PU0b,PU1b,PU1c,PU1dの順で処理される。つまり、CU0を四分木分割されたブロックを四分木分割された順番でZ順に処理されることになる。
図17は、図16に示されたCU,TU,PU、再構成画像に、図3の手順に従ってPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図17の例では、TU処理が、変換ユニットTU0,TU1,TU2,TU3の順で実行される。同時に、PU処理が、ブロックPU0a,PU0b,PU1a〜PU1dに対して、PU0a,PU1a,PU0b,PU1b,PU1c,PU1dの順で実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。ここで、TU0に対してTU処理が終了し、ブロックPU0a,PU1aに対してPU処理が終了した後、ブロックBK0の再構成処理が開始する。同様にTU1〜TU3のTU処理が順に終了し、ブロックPU0b,PU1bの2ブロックと、PU1c,PU1dの各1ブロックずつのPU処理が順に終了するタイミングで、ブロックBK1〜BK3の再構成処理が順に開始する。
また、インループフィルター処理が、ブロックBK0〜BK3に対して、BK0,BK1,BK2,BK3の順で実行される。ここで、ブロックBK0の再構成処理が終了した後、ブロックBK0のインループフィルター処理が開始する。同様に、ブロックBK1〜BK3の再構成処理が順に終了するタイミングで、ブロックBK1〜BK3のインループフィルター処理が順に開始する。
図17の例では、分割後のブロックの予測画像は、変換ユニットと同じ順序で出力される。そのため、図15の場合に比べ、再構成処理に必要な、差分画像、および、差分画像と同じ領域の予測画像の両方が、早く揃う。したがって、再構成処理およびインループフィルター処理の開始の遅延が小さくなる。よって、復号処理が高速化する。また、図15の場合に比べ、再構成処理を開始が早くなる分、TU1〜TU3のTU処理結果やPU1のPU処理結果を保持しておく必要がなく、局所参照メモリや予測画像メモリといった回路面積の削減もすることができる。
上記のように、PU分割する閾値サイズを16×16程度にすることで、参照画像の取得には、従来のマクロブロック(16×16画素)程度と同等の転送サイズとなるため、外部メモリバスを占有させることはなく、また、従来と同程度のメモリバンド幅にて、復号処理を実現することが可能である。また、PU分割することで、内蔵の局所参照メモリ163や予測画像メモリ165を小さくすることができ、コストを抑えることが可能である。また、動き補償演算部164もPUサイズの規格最大である64×64画素に対応した回路を搭載する必要もなく、動き補償演算部164の面積を小さくすることが可能である。
なお、PU分割する閾値サイズと同等もしくはそれ以下のCUサイズに対しては、PU分割を行うことなく、PUの大きさをそのままで予測処理することで、外部メモリのバンドを増大させることもなく、復号することが可能である。
なお、外部メモリの性能向上により、バス占有率に問題ないのであれば、閾値サイズを大きくすることも可能である。
また、本明細書では、予測ユニットがインター予測である場合に関して、説明してきたが、イントラ予測である場合に関しても同様のPU分割方法が適用可能である。
また、本明細書では、変換ユニットが主に32×32 TUの場合に関して、説明してきたが、さらに小さなサイズに分割された場合に関しても(例えば、TU階層0,TU階層1,TU階層2などの場合)、TUサイズに関係なく、同様のPU分割方法が適用可能である。
<実施の形態2>
以下、本開示の実施の形態2における画像復号装置について説明する。実施の形態2に係る画像復号装置は、再構成処理の分割方法に関する点が実施の形態1と異なる。
図18は、図3の手順に従ってPU分割を実施した場合に関する、CU,PU,TU、再構成画像のブロック構成例を示す図である。
図18(a)、図18(b)、図18(c)、図18(c’)は、それぞれ、図8(a)、図8(b)、図8(c)、図8(c’)と同じであるため、説明を省略する。
図18(d)では、図18(a)に示された符号化ユニットCU0の分割後の構成例を示す図である。図18(d)には、16個のブロックBK0〜BK15が示されている。そして、16個のブロックBK0〜BK15は、BK0,BK1,・・・,BK15の順で処理される。16個のブロックBK0〜BK15に対する処理として、再構成処理、インループフィルター処理及びフレームメモリ180への格納処理等がある。なお、図18(d)におけるブロック分割は、PUの分割後のサイズと同等に分割した一例であり、その他にさらに小さく分割しても構わない。
つまり、再構成処理において、CU0を四分木分割されたブロックを再帰的に四分木分割された順番で処理されることになる。
図19は、図18に示されたCU,TU,PU、再構成画像に、図3の手順に従ってPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図19の例では、TU処理が、変換ユニットTU0,TU1,TU2,TU3の順で実行される。同時に、PU処理が、ブロックPU0a〜PU0h,PU1a〜PU1hに対して、PU0a,PU0b,PU0c,PU0d,PU1a,PU1b,PU1c,PU1d,PU0e,PU0f,PU0g,PU0h,PU1e,PU1f,PU1g,PU1hの順で実行される。その後、再構成処理が、BK0〜BK15に実行され、その後、インループフィルター処理がBK0〜BK15に対して、実行される。
ここで、TU0に対してTU処理が終了し、ブロックPU0a〜PU0dに対してPU処理が終了した後、ブロックBK0〜BK3の再構成処理が開始する。同様にTU1〜TU3のTU処理が順に終了し、ブロックPU1a〜PU1d,PU0e〜PU0h,PU1e〜PU1hの各4ブロックのPU処理が順に終了するタイミングで、ブロックBK4〜BK7,BK8〜BK11,BK12〜BK15の再構成処理が順に開始する。
また、インループフィルター処理が、ブロックBK0〜BK15に対して、BK0,BK1,BK2,・・,BK15の順で実行される。ここで、ブロックBK0の再構成処理が終了した後、ブロックBK0のインループフィルター処理が開始する。同様に、ブロックBK1〜BK15の再構成処理が順に終了するタイミングで、ブロックBK1〜BK15のインループフィルター処理が順に開始する。
図19の例では、再構成画像が16×16の単位で分割され処理されるため、インループフィルター処理もより細かな処理単位で実行されるため、図9の場合に比べ、インループフィルターの処理に必要な再構成画像がより早く揃う。したがって、インループフィルター処理の開始の遅延が小さくなる。よって、復号処理が高速化する。
上記のように、再構成処理をPU分割する閾値サイズである16×16程度にすることで、従来のマクロブロック(16×16画素)と同等のパイプライン構成をとることが可能であり、従来と同等の処理性能を実現することが可能である。また、再構成処理単位をより小さく分割することで、再構成部140とインループフィルター部150間の内蔵メモリを小さくすることができ、コストを抑えることが可能である。
<実施の形態3>
以下、本開示の実施の形態3における画像復号装置について説明する。実施の形態3に係る画像復号装置は、復号部110の処理に関する点が実施の形態1と異なる。
図20および図21では、復号部110の処理をパイプラインに追加している。
図20は、実施の形態3に係る、図6に示されたCU,TU,PU、再構成画像に、従来のPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図20の例では、PUサイズや予測ユニットに関するCUタイプやPUデータ、TUデータ(TU分割フラグ、TUに関する係数データ)TU0,TU1,TU2,TU3の順で復号処理が実行される。TU処理は、変換ユニットTU0,TU1,TU2,TU3の順で実行される。PU処理は、ブロックPU0a,PU0b,PU1a,PU1bに対して、PU0a,PU1a,PU0b,PU1bの順で実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。
ここで、TU0の復号処理が終了すると、TU0のTU処理を開始する。同様にTU1〜TU3の復号処理が終了し、TU0〜TU2のTU処理が順に終了するタイミングで、TU1〜TU3のTU処理が開始する。
PU処理は、TUの大きさが確定した後、TUのエッジで分割したPUブロックの処理を開始する。すなわち、TU0〜TU3の復号処理が終了後、ブロックPU0a,PU1a,PU0b,PU1bに対して、PU処理を開始する。ここで、TU0に対してTU処理が終了し、ブロックPU0aに対してPU処理が終了した後、ブロックBK0の再構成処理が開始する。同様にTU1〜TU3のTU処理が順に終了し、ブロックPU1a,PU0b,PU1bに対して、PU処理が順に終了するタイミングで、ブロックBK1〜BK3の再構成処理が順に開始する。
また、インループフィルター処理が、ブロックBK0〜BK3に対して、BK0,BK1,BK2,BK3の順で実行される。ここで、ブロックBK0の再構成処理が終了した後、ブロックBK0のインループフィルター処理が開始する。同様に、ブロックBK1〜BK3の再構成処理が順に終了するタイミングで、ブロックBK1〜BK3のインループフィルター処理が順に開始する。
図21は、実施の形態3に係る、図8に示されたCU,TU,PU、再構成画像に、図3の手順に従ってPU分割を実施した場合に関する、パイプライン処理を示すタイミングチャートである。
図21の例では、PUサイズや予測ユニットに関するCUタイプやPUデータ、TUデータ(TU分割フラグ、TUに関する係数データ)TU0,TU1,TU2,TU3の順で復号処理が実行される。TU処理は、変換ユニットTU0,TU1,TU2,TU3の順で実行される。PU処理は、ブロックPU0a,PU0b,PU1a,PU1bに対して、PU0a,PU1a,PU0b,PU1bの順で実行される。その後、再構成処理が、BK0〜BK3に実行され、その後、インループフィルター処理がBK0〜BK3に対して、実行される。
ここで、TU0の復号処理が終了すると、TU0のTU処理を開始する。同様にTU1〜TU3の復号処理が終了し、TU0〜TU2のTU処理が順に終了するタイミングで、TU1〜TU3のTU処理が開始する。
PU処理は、TUの大きさに関わらず、PUサイズや予測ユニットに関するCUタイプやPUデータの復号処理が終了した後、分割されたPUブロックの処理を開始する。すなわち、PUサイズや予測ユニットに関するCUタイプやPUデータの復号処理が終了後、PU処理が、ブロックPU0a〜PU0h,PU1a〜PU1hに対して、PU0a〜PU0d,PU1a〜PU1d,PU0e〜PU0h,PU1e〜PU1hの順で実行される。ここで、TU0に対してTU処理が終了し、ブロックPU0a〜PU0dに対してPU処理が終了した後、ブロックBK0の再構成処理が開始する。同様にTU1〜TU3のTU処理が順に終了し、ブロックPU1a〜PU1d,PU0e〜PU0h,PU1e〜PU1hの各4ブロックずつのPU処理が順に終了するタイミングで、ブロックBK1〜BK3の再構成処理が順に開始する。
また、インループフィルター処理が、ブロックBK0〜BK3に対して、BK0,BK1,BK2,BK3の順で実行される。ここで、ブロックBK0の再構成処理が終了した後、ブロックBK0のインループフィルター処理が開始する。同様に、ブロックBK1〜BK3の再構成処理が順に終了するタイミングで、ブロックBK1〜BK3のインループフィルター処理が順に開始する。
図21の例では、予測ユニットのPU処理がCUタイプ及びPUデータの復号処理直後に、開始される。そのため、図20の場合に比べ、再構成処理に必要な、差分画像、および、差分画像と同じ領域の予測画像の両方が、早く揃う。したがって、再構成処理およびインループフィルター処理の開始の遅延が小さくなる。よって、復号処理が高速化する。
<その他の実施の形態>
なお、実施の形態1乃至3では、その構成図を説明したが、実施の形態はこれだけでなく、1チップのLSIとして実現してもよいし、個別のLSIとして構成されてもよい。さらに、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。また、コンピューター上で実行されるプログラムとして実現されてもよい。
本開示にかかる画像復号装置は、予測処理を用いて符号化された符号化ストリームを復号する画像復号装置およびその再生方法に有用である。また、DVDレコーダ、DVDプレーヤ、ブルーレイディスクレコーダ、ブルーレイディスクプレーヤやデジタルTV、さらにはスマートフォンなどの携帯情報端末等の用途にも応用可能である。
100 画像復号装置
110 復号部
120 逆量子化部
130 逆周波数変換部
140 再構成部
150 インループフィルター部
160 動き補償部
161 分割部
162 フレームメモリ転送制御部
163 局所参照メモリ
164 動き補償演算部
165 予測画像メモリ
170 面内予測部
180 フレームメモリ