フレーム画像を所定のサイズの基本ブロックに分割し、当該基本ブロックを更に複数のサブブロックに分割し、当該サブブロック単位に符号化することによって生成されたビットストリームから画像データを復号する画像復号装置であって、
前記サブブロックの符号化データおよび復号済の画像データを用いて、イントラ予測、または、インター予測を実行することによって当該サブブロックの画像データを再生する再生手段とを有し、
前記再生手段は、
注目サブブロックにおいてイントラ予測を実行する場合であって、当該注目サブブロックの右上に位置するサブブロックが、前記注目サブブロックが属する基本ブロックの右上に位置する基本ブロック内にある場合においては常に、前記注目サブブロックの右上に位置するサブブロックを、前記注目サブブロックに対するイントラ予測における参照対象から除外して、当該イントラ予測を行う
ことを特徴とする画像復号装置。
フレーム画像から予め設定されたサイズの基本ブロックをラスタースキャン順に分離し、当該基本ブロックを更に複数のサブブロックに分割し、当該サブブロックを単位に符号化された画像データを復号する画像復号方法であって、
符号化対象のビットストリームから、サブブロックの符号化データを分離する分離工程と、
分離したサブブロックの符号化データを、イントラ予測復号、または、インター予測復号する復号工程とを有し、
前記復号工程では、
注目サブブロックをイントラ予測復号する場合であって、当該注目サブブロックの右上に位置するサブブロックが、前記注目サブブロックが属する基本ブロックの右上に位置する基本ブロック内にある場合には、前記注目サブブロックの右上に位置するサブブロックをイントラ予測復号の参照対象から除外して、イントラ予測復号を行う
ことを特徴とする画像復号方法。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。また 、基本ブロックや、サブブロックといった呼称は、各実施形態において便宜的に用いている呼称であり、その意味が変わらない範囲で、適宜、他の呼称を用いてもよい。例えば、基本ブロックやサブブロックは、基本ユニットやサブユニットと称されてもよいし、単にブロックやユニットと称されてもよい。また、現在の処理対象のブロック等の注目するべきブロックのことを注目ブロックと称することとする。例えば、現在の処理対象の基本ブロックのことを注目ブロックと称する。また、現在の処理対象のサブブロックのことを注目サブブロックと称する。
【0012】
また、下記の各実施形態において、イントラ予測において用いることができるサブブロックに関する制限と、インター予測において動きベクトル予測子として選択できるサブブロックに関する制限について説明する。これらの制限はいずれかのみ適用するようにしてもよいし、両方を適用するようにしてもよい。いずれかのみを適用した場合であっても、実装の複雑度の低減や、メモリ使用量の低減に寄与することができる。
【0013】
[第1の実施形態]
図1は本実施形態の画像符号化装置のブロック構図である。画像符号化装置は、装置全体の制御を司る制御部150を有する。この制御部150は、CPU、CPUが実行するプログラムを格納するROM、CPUのワークエリアとして利用するRAMを有する。また、画像符号化装置は、入力端子101、ブロック分割部102、予測部103、変換・量子化部104、逆量子化・逆変換部105、画像再生部106、フレームメモリ107、インループフィルタ部108、符号化部109、統合符号化部110、出力端子111、及び、動きベクトルメモリ112を有する。
【0014】
入力端子101は、図示を省略する画像データ供給部から供給される符号化対象の画像データをフレーム単位に入力する。画像データ発生源は、符号化対象の画像データを生成する撮像装置や、符号化対象の画像データを記憶したファイルサーバや記憶媒体等、その種類は問わない。また、出力端子112は、符号化データを出力先装置に出力するが、その出力先装置も記憶媒体や、ファイルサーバ等、特に限定されない。例えば、出力端子112はネットワークインターフェースであってもよく、ネットワークを介して外部に符号化データを出力してもよい。
【0015】
ブロック分割部102は、入力したフレーム画像を複数の基本ブロックに分割し、基本ブロック単位の画像データを後段の予測部103に出力する。具体的には、ブロック分割部102は、基本ブロックを単位とするラスタースキャン順に、その基本ブロックの画像データを予測部103に出力する。
【0016】
ここで、注意したい点は、基本ブロック単位に、ラスタースキャン順に逐次的に符号化を行う場合、符号化対象の注目基本ブロックに隣接する8つ基本ブロック中で、左上、上、右上、及び、左に隣接する計4つ基本ブロックは符号化済みとなり、右、左下、下、及び、右下に隣接する計4つの基本ブロックは未符号化となる。
【0017】
予測部103は、基本ブロック単位の画像データに対し、サブブロック分割を行い、サブブロック単位でフレーム内予測であるイントラ予測や、フレーム間予測であるインター予測などを行い、予測画像データを生成する。さらに、予測部103は、入力された画像データにおける注目サブブロックと予測画像データから予測誤差を算出し、出力する。例えば、予測誤差とは、注目サブブロックと、当該注目サブブロックの予測画像データとの差分である。また、予測部103は、予測に必要な情報、例えばサブブロック分割、予測モードや動きベクトル等の情報も予測誤差と併せて出力する。以下ではこの予測に必要な情報を予測情報と呼称する。この予測情報は、他のブロックにおける予測や、復号側で予測画像データを生成するために使用されることとなる。
【0018】
変換・量子化部104は、予測部103より入力した予測誤差を、サブブロック単位で直交変換して変換係数を得る。さらに変換・量子化部104は、得られた変換係数に対して量子化を行い、量子化係数を得る。なお、直交変換を行う機能と、量子化を行う機能とは別々の構成としてもよい。
【0019】
逆量子化・逆変換部105は、変換・量子化部104から出力された量子化係数を逆量子化して変換係数を再生し、さらに、逆直交変換して予測誤差を再生する。なお、逆量子化を行う機能と、逆直交変換を行う機能とは別々の構成としてもよい。
【0020】
画像再生部106は、予測部103から出力された予測情報に基づいて、フレームメモリ107を適宜参照して予測画像データを生成し、生成した予測画像データと入力した予測誤差とから再生画像データを生成し、フレームメモリ107に格納する。例えば、画像再生部106は、予測画像データに予測誤差を加算することによって、再生画像データを再生する。
【0021】
インループフィルタ部108は、フレームメモリ107に格納された再生画像データに対し、デブロッキングフィルタやサンプルアダプティブオフセットなどのインループフィルタ処理を行い、フィルタ処理後の画像データをフレームメモリ107に再格納する。
【0022】
動きベクトルメモリ112は、符号化済サブブロックの動きベクトルを保持する。このため、動きベクトルメモリ112は、予測部103が出力した予測情報における動きベクトルと、符号化対象となったサブブロックの位置とを対応づけて保持する。
【0023】
符号化部109は、変換・量子化部104から出力された量子化係数、および、予測部104から出力された予測情報を符号化して、符号データを生成し出力する。
【0024】
統合符号化部110は、復号側でビットストリームの復号に必要となる、シーケンスやピクチャのヘッダ部分に符号化されるヘッダ符号データを生成する。さらに統合符号化部110は、ヘッダ符号データに、符号化部109から出力された符号データを統合したビットストリームを形成し、出力端子111を介して出力する。
【0025】
ここで、画像符号化装置における画像の符号化動作をより詳しく以下に説明する。本実施形態では動画像データをフレーム単位に入力する構成とする。さらに本実施形態では説明のため、ブロック分割部102は、64×64画素の基本ブロックに分割するものとして説明するが、これに限定されない。例えば、基本ブロックのサイズは128×128画素であってもよい。
【0026】
なお、64×64画素というような表記は、当該ブロックの垂直方向の高さが64画素で、水平方向の幅が64画素であることを示していることとする。同様に、32×64画素という表記は、当該ブロックの垂直方向の高さが32画素で、水平方向の幅が64画素であることを示していることとする。以下、同様な表記については、上記の例と同様に、そのブロックの垂直方向の高さと水平方向の幅を示すものとする。
【0027】
入力端子101を介して入力された1フレーム分の画像データはブロック分割部102に供給される。ブロック分割部102では、入力された画像データを複数の基本ブロックに分割し、基本ブロック単位の画像データを予測部103に出力する。本実施形態では64×64画素の基本ブロック単位の画像を出力するものとする。
【0028】
予測部103は、ブロック分割部102より入力した基本ブロック単位の画像データに対し予測処理を実行する。具体的には、予測部103は、基本ブロックをさらに細かいサブブロックに分割するサブブロック分割を決定し、さらにサブブロック単位で動きベクトルメモリ112やフレームメモリ107を参照しながら、イントラ予測やインター予測などの予測モードを決定する。
【0029】
図7を参照してサブブロック分割方法の一例を示す。図7(a)乃至(f)におけるブロック700乃至705の太枠は基本ブロック(実施形態では64×64画素)を表し、その内部の細い線で分割された各四角形がサブブロックを表している。図7(a)は、基本ブロック700がサブブロックである例である。つまり、基本ブロックが分割されず、サブブロックのサイズが64×64画素の例である。図7(b)は、基本ブロック701を4個の正方形のサブブロックへ分割した分割例を示しており、1つのサブブロックのサイズは32×32画素である。図7(c)〜(f)は長方形サブブロック分割の一例を表している。図7(c)は、基本ブロック702が32×64画素サイズの2個のサブブロック(垂直方向に長手)に分割されることを示している。図7(d)は、基本ブロック703が、64×32画素サイズの2個のサブブロック(水平方向に長手)に分割されることを示している。図7(e)、(f)基本ブロック704、705の場合、分割方向が異なるものの、1:2:1の比で3つの長方形サブブロックに分割されている。このように正方形だけではなく、長方形のサブブロックも用いて符号化処理を行っている。
【0030】
実施形態では、説明を単純化するため、図7(b)に示すように、64×64画素の基本ブロック701が四分木分割され、4つの32×32画素のサブブロックに分割されるものとする。ただし、サブブロック分割方法はこれに限定されない。図7(c)、(d)のような二分木分割や、図7(e)、(f)のような三分木分割または図7(a)のような無分割を用いても構わない。
【0031】
予測部103による予測処理について詳しく説明する。HEVCをはじめとする画像符号化技術においては、再生画像の画質を維持しつつ、符号化されるビットストリームのデータ量を小さくするため、符号化済サブブロックの画素を用いて符号化対象サブブロックの画素を予測する処理が行われる。予測処理には、符号化対象のサブブロックが存在するフレーム内の符号化済サブブロックの画素を用いるイントラ予測や、符号化対象のサブブロックが存在するフレームとは異なる、符号化済みフレームのサブブロックの画素を用いるインター予測が存在する。本実施形態でも、この2種類の予測方法が用いられる。
【0032】
イントラ予測を行う場合、予測部103は、符号化対象のサブブロックの空間的に周辺に位置し、符号化済画素を用いて符号化対象のサブブロックの予測画素を生成する(なお、以降、符号化対象のサブブロックを注目サブブロック、符号化対象のサブブロックを含む基本ブロックを注目基本ブロックとも呼称する)。この際、予測部103は、注目サブブロックの左に隣接するサブブロックの符号化済画素を用いる水平予測や、上に隣接するサブブロックの符号化済画素を用いる垂直予測などのイントラ予測方法の中から注目サブブロックの予測に用いる方法を決定し、それを示す情報をイントラ予測モードとして生成する。イントラ予測に用いられる周辺のサブブロックは左や上に位置しているものに限られず、符号化済であれば左下や左上、右上に位置しているものも用いられる。図8を用いて、符号化対象サブブロックとイントラ予測に用いられる周辺のサブブロックとの関係性について更に詳しく説明する。
【0033】
図8(a)において、太枠は64×64画素の基本ブロックを示し、太枠を四分木分割した細枠は32×32画素のサブブロックを示している。図8(b)〜図8(e)は、符号化対象の注目サブブロック(C:Current)と、その周辺{左下、左、左上、上、右上}に位置する5つのサブブロック{BL:Bottom Left、L:Left、UL:Upper Left、U:Upper、UR:Upper Right}との関係性を示している。
【0034】
図8(b)は、注目サブブロック(C)が注目基本ブロック内の左上に位置している場合の周辺の5つのサブブロックとの位置関係を示している。なお、注目サブブロック(C)が注目基本ブロック内の左上に位置しているかどうかは、注目サブブロック(C)が注目基本ブロック内の左上端の画素を含んでいるか否かで判断することができる。図8(b)では、符号化対象サブブロック(C)の予測処理時には、5つのサブブロックUL、U,UR,L、BLの符号化処理が完了しているため、これら5つのサブブロックを用いてイントラ予測処理を行うことが可能である。予測の方法に応じて、これら5つのサブブロックの全てを用いて注目サブブロック(C)のイントラ予測処理を行うこともできるし、5つのサブブロックの内の一部のみを用いて注目サブブロック(C)のイントラ予測処理を行ってもよい。
【0035】
図8(c)は、注目サブブロック(C)が注目基本ブロック内の右上に位置している場合の周辺の5つのサブブロックとの位置関係を示している。注目サブブロック(C)が注目基本ブロック内の右上に位置しているかどうかは、注目サブブロック(C)が注目基本ブロック内の右上端の画素を含んでいるか否かで判断することができる。図8(c)では、符号化対象サブブロック(C)の予測処理時には、5つのサブブロックのうち左下(BL)のサブブロックは符号化処理が完了していないため、イントラ予測処理に用いることができない。
【0036】
また、右上(UR)のサブブロックは、符号化処理を逐次的に行っている場合には符号化が完了していることになる。ここで、符号化処理の速度を上げるため、符号化処理を基本ブロックの行単位で並列に実行する場合、特に各基本ブロック行(ブロックライン)間を1基本ブロック分の遅延で並列に実行する場合を考察する。つまり、ブロック行ごとに別々の符号化部を用いて、それぞれ基本ブロック1つ分だけ遅延させて符号化処理を開始する場合について考察する。図9は、4つの並列符号化処理が、4つの基本ブロック行を左から右方向に、1基本ブロック分ずつ遅延して行われる様を示している。図示の斜線部分で示される4つが、並列で符号化されている基本ブロックを示している。この中で、最上の基本ブロック行の符号化処理を除く、2乃至4行目の基本ブロックの1つを、図8(c)に当てはめると、注目サブブロック(C)の予測処理時には、その右上のサブブロック(UR)の符号化処理が完了(符号化中)していないことになるのがわかる。
【0037】
ここで、符号化処理を上述のように並列に実行している場合であって、注目サブブロックが注目基本ブロック内の右上に位置するサブブロックの場合は、注目サブブロックの右上に位置するサブブロック(UR)を用いずに予測処理を行うことが考えられる。しかしながら、このような場合に限って、予測処理において注目サブブロックの右上に位置するサブブロック(UR)を用いることを禁止(制限)すると、その分、当該符号化方法を実装する際の難易度が高くなってしまったり符号化処理が複雑になってしまうといった問題や、符号化処理の速度の低下や、メモリ使用量の増加、といった問題が発生する。
【0038】
そこで、本実施形態の予測部103は、符号化処理を並列に実行しているか否かに関わらず、注目サブブロックが注目基本ブロック内の右上に位置するサブブロックの場合、常に、注目サブブロックの右上に位置するサブブロック(UR)を用いずに注目サブブロックの予測処理を行うものとする。言い換えれば、注目サブブロックの右上のサブブロックが、注目基本ブロックの右上に位置する基本ブロック内にある場合は、右上のサブブロックを予測処理で用いるサブブロックから除外する。これにより、符号化処理を並列に実行しているか否かに関わらず、右上基本ブロックの参照により生じていた画素値の保持などの実装コストを低下させることができる。要するに、実施形態では、符号化対象のサブブロック(C)が図8(c)の状態に合致するとき、予測部103は、その予測処理時に、右上(UR)、左下(BL)を除外し(これらのブロックを使用しないように制限し)、左(L)、左上(UL)、上(U)の3つのサブブロックを用いてイントラ予測処理を行う。
【0039】
同様に、図8(d)は、注目サブブロック(C)が、基本ブロック内の左下に位置している場合の周辺の5つのサブブロックとの位置関係を示している。注目サブブロック(C)が注目基本ブロック内の左下に位置しているかどうかは、注目サブブロック(C)が注目基本ブロック内の左下端の画素を含んでいるか否かで判断することができる。図8(d)では、注目サブブロック(C)の予測処理時には、左下(BL)のサブブロックは符号化処理が完了していないため、イントラ予測処理に用いることができない。しかし、残りの左(L)、左上(UL)、上(U)、右上(UR)の4つのサブブロックは符号化済みである。よって、予測部103は、左下(BL)のサブブロックは用いずに、これら左(L)、左上(UL)、上(U)、右上(UR)の4つのサブブロックを参照してイントラ予測処理を行う。
【0040】
最後に、図8(e)は注目サブブロック(C)が、基本ブロック内の右下に位置している場合の周辺の5つのサブブロックとの位置関係を示している。注目サブブロック(C)が注目基本ブロック内の右下に位置しているかどうかは、注目サブブロック(C)が注目基本ブロック内の右下端の画素を含んでいるか否かで判断することができる。図8(e)では、注目サブブロック(C)の予測処理時には、左下(BL)および右上(UR)のサブブロックは符号化処理が完了していないため、イントラ予測処理に用いることができない。よって、同図の場合、予測部103は、左下(BL)および右上(UR)のサブブロックは用いずに、残りの左(L)、左上(UL)、上(U)の3つのサブブロックを用いてイントラ予測処理を行う。
【0041】
一方、インター予測は符号化済フレーム(符号化対象のサブブロックが属するフレームとは異なるフレーム)の画素を参照して、注目ブロック(符号化対象サブブロック)の画素を予測する処理である。例えば、参照対象の符号化済フレームと符号化対象フレームとの間で動きが無い場合は、符号化対象サブブロックの画素は参照対象の符号化済フレームの同一位置の画素を用いて予測される。このような場合、動きが無いことを示す(0、0)動きベクトルが生成される。一方で符号化対象サブブロックに対して、フレーム間で動きが発生している場合にはその動きを示す動きベクトル(MVx、MVy)を生成する。
【0042】
HEVCをはじめとする画像符号化標準ではこの動きベクトルに関するデータ量をさらに削減するため、「動きベクトル予測」と呼ばれる技術が採用されている。これは符号化済の他のサブブロックの動きベクトルを用いて符号化対象サブブロックの動きベクトルを予測する技術であり、動きベクトルのデータ量を削減する効果がある。例えば、図8(b)のサブブロックCが動いている物体の一部であった場合、サブブロックCの周辺のサブブロックL、U、UR、L、BLなどを動きベクトル予測子(Motion vector predictor)の候補として選択し、その中で、サブブロックCの動きベクトルと最も近い動きベクトルを動きベクトル予測子とする。そして、例えば、この動きベクトル予測子と、符号化対象サブブロックの動きベクトルとの差分を符号化する。
【0043】
本実施形態の予測部103は、イントラ予測の場合と同様、符号化対象の注目サブブロックCと、その周辺のサブブロックとの位置関係に応じて、動きベクトル予測に用いるサブブロックを制限する。言い換えると、動きベクトル予測子として動きベクトルを選択することができる(利用可能とする)サブブロックを、周辺のサブブロックとの位置関係に応じて異ならせる。
【0044】
例えば、図8(b)の場合、すなわち符号化対象サブブロック(C)が基本ブロックの左上に位置している場合、左下(BL)、左(L)、左上(UL)、上(U)、右上(UR)の5つ全てのサブブロックは符号化済みであるので、それらの動きベクトル(動きベクトルメモリ112に格納されている)が動きベクトル予測子の候補として選択可能である。予測部103は、これら5つ全てのサブブロックの動きベクトルを動きベクトル予測子の候補として動きベクトル予測を行う。ただし、これらのサブブロックは動きベクトルを有していない場合もあり、その場合は、そのサブブロックの動きベクトルは用いることができない。例えば、あるサブブロックがイントラ予測を用いて符号化されている場合は、そのブロックには動きベクトルを有していないこととなる。このことは、以下の図8(c)〜図(e)の説明でも同様である。
【0045】
また、本実施形態では、状況によっては、これら5つ全てのサブブロックの動きベクトルを動きベクトル予測子の候補として動きベクトル予測を行うことが可能なことがある場合について説明するが、動きベクトル予測に用いることができるサブブロックの最大数はこれら5つのサブブロックに限らず、5つのサブブロックの内の一部でもよいし、他のサブブロックを加えてもよい。ただし、いずれにしても、後述するように符号化対象サブブロック(C)の位置に応じて、使用可能なサブブロックは制限を受けることとなる。
【0046】
一方、図8(c)の場合、すなわち符号化対象サブブロック(C)が基本ブロックの右上に位置している場合、予測部103は、イントラ予測の場合と同様、符号化済でない左下(BL)のサブブロックの動きベクトルと、現在の基本ブロックの右上の基本ブロックに属する右上(UR)のサブブロックの動きベクトルは、常に、当該符号化対象サブブロック(C)の動きベクトル予測に用いない。言い換えると、この場合、左下(BL)のブロックの動きベクトルを動きベクトル予測子の候補とすることは禁止(制限)される。また、右上(UR)のブロックの動きベクトルを動きベクトル予測子の候補とすることも禁止(制限)される。
【0047】
よって、予測部103は、残りの左(L)、左上(UL)、上(U)の3つのサブブロックの動きベクトルを動きベクトル予測子の候補として動きベクトル予測を行う。これにより、イントラ予測の場合と同様、符号化処理を並列に実行しているか否かに関わらず、左下(BL)のサブブロックの動きベクトルと、右上(UR)のサブブロックの動きベクトルとは、動きベクトル予測子の候補とすることは禁止するため、右上基本ブロックの参照により生じていた画素値の保持などの実装コストを低下させることができる。
【0048】
同様に、図8(d)の場合、すなわち符号化対象サブブロック(C)が基本ブロックの左下に位置している場合、予測部103は、符号化済でない左下(BL)の動きベクトルは動きベクトル予測に用いない。つまり、この場合、左下(BL)の動きベクトルを、動きベクトル予測子の候補とすることは禁止(制限)される。よって、予測部103は、残りの左(L)、左上(UL)、上(U)、右上(UR)の4つのサブブロックの動きベクトルを動きベクトル予測子の候補として動きベクトル予測を行う。
【0049】
最後に、図8(e)の場合、すなわち符号化対象サブブロック(C)が基本ブロックの右下に位置している場合、予測部103は、符号化済でない左下(BL)の動きベクトルおよび右上(UR)の動きベクトルは動きベクトル予測に用いない。つまり、この場合、左下(BL)のブロックの動きベクトルを動きベクトル予測子の候補とすることは禁止(制限)される。また、右上(UR)のブロックの動きベクトルを動きベクトル予測子の候補とすることも禁止(制限)される。よって、予測部103は、残りの左(L)、左上(UL)、上(U)の3つのサブブロックの動きベクトルを動きベクトル予測子の候補として用いて動きベクトル予測を行う。
【0050】
予測部103は、上記のようにして決定したイントラ予測モードや動きベクトルおよび符号化済の画素から予測画像データを生成し、さらに入力された画像データと前記予測画像データから予測誤差を生成し、変換・量子化部104に出力する。また、予測部103は、サブブロック分割やイントラ予測モード、動きベクトルなどの情報は予測情報として、符号化部109、画像再生部106、動きベクトルメモリ112に出力する。
【0051】
変換・量子化部104は、入力された予測誤差に直交変換・量子化を行い、量子化係数を生成する。具体的には、変換・量子化部104は、まず、サブブロックのサイズに対応した直交変換処理を施して、直交変換係数を生成する。次に、変換・量子化部104は、直交変換係数を量子化し、量子化係数を生成する。そして、変換・量子化部104は、生成した量子化係数を符号化部109および逆量子化・逆変換部105に出力する。
【0052】
逆量子化・逆変換部105は、入力した量子化係数を逆量子化して変換係数を再生し、さらに再生された変換係数を逆直交変換して予測誤差を再生する。そして、逆量子化・逆変換部105は、再生した予測誤差を画像再生部106に出力する。
【0053】
画像再生部106は、予測部103から入力される予測情報に基づいて、フレームメモリ107や動きベクトルメモリ112を適宜参照し、予測画像を再生する。イントラ予測が用いられている場合には、画像再生部106はフレームメモリ112に格納されている周辺の符号化済サブブロックの画素を用いて予測画像を再生する。この場合、符号化対象サブブロックと周辺の符号化済サブブロックとの位置関係に応じて、イントラ予測に用いるサブブロックが制限されるが、その制限方法は予測部103の予測処理における制限方法と同様であるため、ここでの説明は省略する。同様に、インター予測が用いられている場合は、画像再生部106は、予測部103で決定した動きベクトルに基づいて、フレームメモリ112に格納されている他のフレームの符号化済サブブロックの画素を用いて予測画像を生成する。この場合、符号化対象サブブロックと周辺の符号化済サブブロックとの位置関係に応じて、動きベクトル予測に用いるサブブロックが制限されるが、その制限方法は予測部103の予測処理における制限方法と同様であるため、ここでの説明は省略する。画像再生部106は、そして再生された予測画像と、逆量子化・逆変換部105から入力された再生された予測誤差から画像データを再生し、再生した画像データをフレームメモリ107に格納する。
【0054】
インループフィルタ部108は、フレームメモリ107から再生画像を読み出し、デブロッキングフィルタなどのインループフィルタ処理を行う。そして、インループフィルタ部108は、フィルタ処理された画像データをフレームメモリ107に再格納する。
【0055】
符号化部109は、ブロック単位で、変換・量子化部104で生成された量子化係数、予測部103から入力された予測情報をエントロピー符号化し、符号データを生成する。エントロピー符号化の方法は特に問わないが、ゴロム符号化、算術符号化、ハフマン符号化などを用いることができる。符号化部109は、生成した符号データを統合符号化部110に出力する。
【0056】
統合符号化部110は、復号側でビットストリームの復号に必要となる、シーケンスやピクチャのヘッダ部分に符号化されるヘッダ符号データを生成する。統合符号化部110は、さらに、ヘッダ符号データに後続するように、符号化部109から入力された符号データなどを多重化(統合)してビットストリームを形成する。そして、符号化部109は、形成したビットストリームを、出力端子111を介して外部に出力する。
【0057】
図6は第1の実施形態で出力されるビットストリームのデータ構造の一例を示している。ピクチャ単位の符号化データであるピクチャデータに先立ち、シーケンス単位でのヘッダ情報が含まれるシーケンスヘッダやピクチャ単位でのヘッダ情報が含まれるピクチャヘッダが存在する。
【0058】
図3は、実施形態の画像符号化装置における制御部150の1フレーム分の符号化処理を示すフローチャートである。
【0059】
まず、画像の符号化に先立ち、S301にて、制御部150は、統合符号化部111を制御し、画像のサイズ(1フレームの水平、垂直方向の画素数)や基本ブロックの大きさなど、画像データの符号化や復号側でのビットストリームの復号に必要なヘッダ情報を符号化させ、出力させる。
【0060】
S302にて、制御部150はブロック分割部102を制御し、入力したフレーム画像を基本ブロック単位に分割し、その1つを予測部103に出力させる。
【0061】
S303にて、制御部150は予測部103を制御し、S302にて生成された基本ブロック単位の画像データに対する予測処理を実行させ、サブブロック分割情報や予測モードなどの予測情報および予測画像データを生成させる。予測部103は、さらに入力された画像データと前記予測画像データから予測誤差を算出し、出力する。
【0062】
S304にて、制御部150は変換・量子化部104を制御し、直交変換、量子化を行わせる。これにより、変換・量子化部104は、S303で算出された予測誤差に対する直交変換を実行し、変換係数を生成する。そして、変換・量子化部104は、その変換係数に対する量子化を行い、量子化係数を生成する。
【0063】
S305にて、制御部150は逆量子化・逆変換部105を制御し、逆量子化、逆直交変換を行わせる。これにより、逆量子化・逆変換部105は、S304にて生成された量子化係数を逆量子化し、変換係数を再生する。更に、逆量子化・逆変換部105は、その変換係数に対して逆直交変換し、予測誤差を再生する。
【0064】
S306にて、制御部150は画像再生部106を制御し、画像を再生させる。具体的には、画像再生部106は、S303で生成された予測情報に基づいて予測画像を再生する。更に、画像再生部106は、再生された予測画像と、S305で生成された予測誤差から画像データを再生し、フレームメモリ107に格納する。
【0065】
S307にて、制御部150は符号化部109を制御し、画像の符号化を行わせる。具体的には、符号化部109は、S303で生成された予測情報およびS304で生成された量子化係数を符号化し、符号データを生成する。また、符号化部109は他の符号データも含め、ビットストリームを生成する。
【0066】
S308にて、制御部150は、注目フレーム内の全ての基本ブロックの符号化が終了したか否かの判定を行い、終了していればS309に処理を進め、未符号化の基本ブロックがあると判定した場合は、その基本ブロックを符号化するため処理をS302に戻す。
【0067】
S309にて、制御部150はインループフィルタ部108を制御し、フィルタ処理を実行させる。具体的には、インループフィルタ部108は、フレームメモリ107に格納された画像(S306で再生された画像データ)に対し、インループフィルタ処理を行い、フィルタ処理された画像データをフレームメモリ107に再格納し、本処理を終える。
【0068】
以上の構成と動作、特にS303において、複数の基本ブロックで構成されるブロック行ごとに並列に符号化するか否かに関わらずに、符号化対象のサブブロック(注目サブブロック)が属する基本ブロックの右上に隣接する基本ブロックに属するサブブロックを参照せずに予測処理を行うことで、実装の複雑度を低減し、さらには符号化の並列処理の実現性も高めることができる。
【0069】
図2は、実施形態における上記画像符号化装置で生成された符号化画像データから、サブブロック単位に、イントラ予測復号、インター予測復号を行う画像復号装置のブロック構成図である。以下、同図を参照し、復号処理に係る構成とその動作を説明する。なお、当該符号化画像データを復号する復号処理においても、上述のイントラ予測において用いることができるサブブロックに関する制限や、インター予測において動きベクトル予測子として選択できるサブブロックに関する制限は同様である。
【0070】
画像復号装置は、装置全体の制御を司る制御部250を有する。この制御部250は、CPU、CPUが実行するプログラムを格納するROM、CPUのワークエリアとして利用するRAMを有する。また、画像復号装置は、入力端子201、分離復号部202、復号部203、逆量子化・逆変換部204、画像再生部205、フレームメモリ206、インループフィルタ部207、出力端子208、及び、動きベクトルメモリ209を有する。
【0071】
入力端子201は、符号化されたビットストリームを入力するものであり、入力源は例えば符号化ストリームを格納した記憶媒体であるが、ネットワークから入力しても良く、その種類は問わない。
【0072】
分離復号部202は、ビットストリームから復号処理に関する情報や係数に関する符号データに分離し、またビットストリームのヘッダ部に存在する符号データを復号する。分離復号部202は、図1の統合符号化部110と逆の動作を行う。
【0073】
復号部203は、分離復号部202から出力された符号データを復号し、量子化係数および予測情報を再生する。そして、復号部203は、得られた量子化係数や予測情報を逆量子化・逆変換部204、画像再生部205に出力する。また、復号部203は、予測情報に含まれる動きベクトルの情報を、動きベクトルメモリ209に出力し、格納する。
【0074】
逆量子化・逆変換部204は、復号部203から入力した量子化係数に対して逆量子化を行って変換係数を得る。更に、逆量子化・逆変換部204は、変換係数に対して逆直交変換を行い、予測誤差を再生する。
【0075】
画像再生部205は、入力した予測情報に基づいてフレームメモリ206を適宜参照して予測画像データを生成する。そして、画像再生部205は、この予測画像データと逆量子化・逆変換部204で再生された予測誤差から再生画像データを生成し、フレームメモリに出力(格納)する。
【0076】
インループフィルタ部207は、図1のインループフィルタ部108と同様、再生画像(フレームメモリ206に格納されている)に対し、デブロッキングフィルタなどのインループフィルタ処理を行い、フィルタ処理された画像を出力する。
【0077】
出力端子208は、フレームメモリ206に格納されたフレーム画像を順次、外部に出力する。出力先は表示装置が一般的であるが、他のデバイスであっても構わない。
【0078】
上記実施形態の画像復号装置の画像の復号に係る動作を、更に詳しく説明する。本実施形態では、符号化されたビットストリームをフレーム単位で入力する構成となっている。
【0079】
図2において、分離復号部202は、入力端子201を介して、1フレーム分のビットストリームを入力もしくは受信する。分離復号部202は、入力したビットストリームから復号処理に関する情報や係数に関する符号データに分離し、ビットストリームのヘッダ部に存在する符号データを復号する。続いて、分離復号部202は、ピクチャデータの基本ブロック単位の符号データを再生し、復号部203に出力する。
【0080】
復号部203は、符号データを復号し、量子化係数および予測情報を再生する。そして、復号部203は、量子化係数を逆量子化・逆変換部204に、予測情報を画像再生部205にそれぞれ出力する。また、復号部203は、予測情報における動きベクトルをサブブロックの位置と対応付けるように、動きベクトルメモリ209に出力し、格納する。
【0081】
逆量子化・逆変換部204は、入力された量子化係数に対し、逆量子化を行って直交変換係数を生成する。更に、逆量子化・逆変換部204は、生成した直交変換係数に対して逆直交変換を施して予測誤差を再生する。そして、逆量子化・逆変換部204は、再生した予測誤差を画像再生部205に出力する。
【0082】
画像再生部205は、復号部203から入力された予測情報及び動きベクトルメモリ209を参照し、フレームメモリ206を適宜参照し、予測画像を再生する。本実施形態では、画像符号化装置の予測部103と同様、イントラ予測およびインター予測の2種類の予測方法が用いられる。復号対象サブブロックと周辺の復号済サブブロックとの位置関係に応じて予測処理に用いるサブブロックを制限するが、具体的な予測画像の再生処理については、画像符号化装置における画像再生部106と同様であるため、説明を省略する。画像再生部205は、この予測画像と逆量子化・逆変換部204から入力された予測誤差から画像データを再生し、その再生画像データをフレームメモリ206に格納する。格納された画像データは予測の際の参照に用いられることになる。
【0083】
なお、画像再生部205においても、画像符号化装置の予測部103と同じように、イントラ予測において用いることができるサブブロックが制限される。そのため、不要なデータを他のブロックにおいて参照するために記憶しておく必要がなく、また、他のブロックのためにデータを記憶しておくかどうかの判断が簡易となるため、メモリ使用量の低減や、実装の複雑度の低減を実現することができる。また、画像符号化装置の予測部103と同じように、インター予測において動きベクトル予測子として選択できるサブブロックについても制限される。このことも、実装の複雑度の低減や、メモリ使用量の低減に寄与する。
【0084】
インループフィルタ部207は、画像符号化装置のインループフィルタ部109と同様、フレームメモリ206から再生画像データを読み出し、デブロッキングフィルタなどのインループフィルタ処理を行う。そして、インループフィルタ部207は、フィルタ処理された画像を再びフレームメモリ206に格納する。フレームメモリ206に格納され、フィルタ処理された再生画像は、最終的には端子208から外部(ディスプレイなど)に出力される。
【0085】
図4は、実施形態に係る画像復号装置における制御部250の1フレームの画像の復号処理を示すフローチャートである。以下同図を参照して、復号処理を説明する。
【0086】
S401にて、制御部250は、分離復号部202を制御し、ビットストリームから復号処理に関する情報や画像データの符号データに分離し、復号の際に必要となる情報の取得と、画像の符号データを復号部203に出力させる。
【0087】
S402にて、制御部250は復号部203を制御し、S401で分離された符号データを復号させ、量子化係数および予測情報を再生させる。
【0088】
S403にて、制御部250は逆量子化・逆変換部204を制御し、逆量子化、逆直交変換を行わせる。具体的には、逆量子化・逆変換部204は、制御部250の制御下にて、各サブブロックの量子化係数に対し逆量子化を行って変換係数を得て、更に、その変換係数に対して逆直交変換を行うことで、予測誤差を再生する。
【0089】
S404にて、制御部250は画像再生部205を制御し、画像データを再生させる。具体的には、画像再生部205は、予測情報に基づき予測画像を再生する。そして、画像再生部205は、予測画像に、S404で生成された予測誤差を加算することで、画像データを再生する。
【0090】
S405にて、制御部250は、注目フレームの復号処理を終えたか否か、つまり、注目フレーム内の全ての基本ブロックおよびその内部の全サブブロックの復号が終了したか否かの判定を行う。そして、制御部250は、注目フレームに対する復号が完了した場合には、処理をS406に進め、未復号の基本ブロックやサブブロックが存在する場合は、次の基本ブロックもしくはサブブロックの復号を行うため、処理をS402に戻す。
【0091】
S406にて、制御部250はインループフィルタ部207を制御し、フレームメモリ206に格納された画像データ(S404で再生された画像データ)に対し、インループフィルタ処理を行い、フィルタ処理された画像を生成し、処理を終了する。
【0092】
以上説明したように本実施形態の画像復号装置によれば、ブロック行ごとに並列に符号化されたか否かに関わらずに、復号対象のサブブロック(注目サブブロック)が属する基本ブロックの右上に隣接する基本ブロックに属するサブブロックを参照せずに予測処理を行ったビットストリームを復号することができる。結果として、実装の複雑度が低減されるため、復号の並列処理の実現性も高めることができる。
【0093】
[第2の実施形態]
上記実施形態の画像符号化装置及び画像復号装置が有する各処理部は、ハードウェアでもって構成しているものとして説明した。しかし、これらの図に示した各処理部で行う処理を、コンピュータプログラムでもって構成しても良い。
【0094】
図5は、上記実施形態に係る画像符号化装置、画像復号装置に適用可能なコンピュータのハードウェアの構成例を示すブロック図である。
【0095】
CPU501は、RAM502やROM503に格納されているコンピュータプログラムやデータを用いてコンピュータ全体の制御を行うと共に、上記実施形態に係る画像処理装置が行うものとして上述した各処理を実行する。即ち、CPU501は、図1、図2に示した各処理部として機能することになる。
【0096】
RAM502は、外部記憶装置506、I/F(インターフェース)507を介して外部から取得したプログラムやデータなどを一時的に記憶するためのエリアを有する。更に、RAM502は、CPU501が各種の処理を実行する際に用いるワークエリアとしても利用される。RAM502は、例えば、フレームメモリとして割り当てたり、その他の各種のエリアを適宜提供したりすることができる。
【0097】
ROM503には、本コンピュータの設定データや、ブートプログラムなどが格納されている。操作部504は、キーボードやマウスなどにより構成されており、本コンピュータのユーザが操作することで、各種の指示をCPU501に対して入力することができる。表示部505は、CPU501による処理結果を表示する。また表示部505は例えば液晶ディスプレイで構成される。
【0098】
外部記憶装置506は、ハードディスクドライブ装置に代表される、大容量情報記憶装置である。外部記憶装置506には、OS(オペレーティングシステム)や、図1、図2に示した各部の機能をCPU501に実現させるためのコンピュータプログラム(アプリケーションプログラム)が保存されている。更には、外部記憶装置506には、処理対象としての各画像データが保存されていても良い。
【0099】
外部記憶装置506に保存されているコンピュータプログラムやデータは、CPU501による制御に従って適宜、RAM502にロードされ、CPU501による処理対象となる。I/F507には、LANやインターネット等のネットワーク、投影装置や表示装置などの他の機器を接続することができ、本コンピュータはこのI/F507を介して様々な情報を取得したり、送出したりすることができる。508は上述の各部を繋ぐバスである。
【0100】
上記構成において、本装置に電源が投入されると、CPU501はROM503に格納されたブートプログラムを実行し、外部記憶装置506に格納されたOSをRAM502にロードし実行する。そして、CPU501は、OSの制御下にて、外部記憶装置506から符号化、或いは、復号に係るアプリケーションプログラムをRAM502にロードし、実行する。この結果、CPU501は、図1或いは図2の各処理部として機能し、本装置が画像符号化装置、或いは、画像復号装置として機能することになる。
【0101】
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。