以下、本発明の実施例を、図面を参照して説明する。
また、各図面において、同一の符号が付されている構成要素は同一の機能を有することとする。
また、本明細書の各記載及び各図面における「復号側動き探索モード」という表現は、本発明に係る新たな符号化モードを示す。
また、本明細書の各記載及び各図面における「残差成分」という表現は、「予測誤差」と同様の意味も含む。また、本明細書の各記載及び各図面における予測処理において単に「誤差」と表現した場合は、「予測誤差」を意味する。
また、本明細書の各記載及び各図面における「フラグとともに伝送」という表現は、「フラグに含めて伝送」という意味も含む。
また、本明細書の各記載及び各図面における「ブロック予測」という表現は、「ブロック単位での予測」という意味も含む。
また、本明細書の各記載及び各図面における「ピクセル予測」という表現は、「画素単位での予測」という意味も含む。
まず、本発明の第1の実施例について図面を参照して説明する
図1に本発明の一実施例に係る画像符号化装置100のブロック図の一例を示す。
画像符号化装置は、例えば原画像メモリ101、イントラ予測誤差算出部102、動き予測誤差算出部103、復号側動き探索モードの動き予測誤差算出部111、参照画像間動き探索部104、予測画像合成部105、変換・量子化部106、係数符号化部107、モード選択部108、逆量子化・逆変換・合成部109、復号画像メモリ110、制御部112、記憶部113、加算器114からなる。ここで、参照画像間動き探索部104、予測画像合成部105は、復号側動き探索モードの動き予測誤差算出部111が有する要素である。
以下に画像符号化装置100の各構成要素の動作を詳細に説明する。
なお、画像符号化装置100の各構成要素の動作は、例えば、以下の記載の通り各構成要素の自律的な動作としても良い。また、例えば制御部112が、例えば記憶部113が記憶するソフトウェアと協働することにより実現しても構わない。
まず原画像メモリ101は、符号化対象である原画像を入力し、一時的にバッファリングする。次に画像を符号化する単位ごとに予測のステップに入る。符号化する単位は、例えばマクロブロック単位でもよく、画素単位でも良い。以下ではマクロブロック単位で処理する例を示す。
以降の処理では、各マクロブロックに対して複数の符号化モードで予測を行い、例えば、これらの中から最も符号化効率の高いものをモード選択部108にて選び、符号化ストリームとして出力する。
イントラ予測誤差算出部102では、符号化モードのうちイントラ予測モードの予測画像合成を行う。当該予測画像合成により生成した予測画像と原画像との差分を取って残差成分を出力する。イントラ予測の方法については、例えば、上述の非特許文献1に記載される従来の方法を用いればよい。また、イントラ予測誤差算出部102は生成した予測画像の出力も行う。
動き予測誤差算出部103では、復号画像メモリ110に格納されている参照画像を用いて、符号化モードのうち動き予測を用いるモードの予測画像合成を行う。当該予測画像合成により生成した予測画像と原画像との差分を取って残差成分を出力する。既存のPピクチャ、Bピクチャに含まれるスキップモードやダイレクトモードについては、ここで処理を行う。これらの方式については、上述の非特許文献1に記載の従来の方法を用いればよい。また、動き予測誤差算出部103は生成した予測画像の出力も行う。
ここで、動き予測誤差算出部103は、説明のため一つだけ記載したが、各符号化モード毎にそれぞれ、画像符号化装置100が備えても良い。
次に、復号側動き探索モードの動き予測誤差算出部111では、本発明に係る新たな符号化モードのである復号側動き探索モードの予測画像合成を行う。そして当該予測画像合成により生成した予測画像と原画像との差分を取って残差成分を出力する。
ここで、参照画像間動き探索部104は、復号画像メモリ110に格納されている複数の参照画像同士の対応点を探索する。これにより動きベクトルを算出する。探索方式の詳細については後述する。
また、予測画像誤差算出部105では、参照画像間動き探索部104によって得られた動きベクトルから、符号化対象画像の予測画像を合成する。次に、当該予測画像と原画像の差分を取って残差成分を出力する。合成方式の詳細については後述する。また、復号側動き探索モードの動き予測誤差算出部111の有する予測画像誤差算出部105は生成した予測画像の出力も行う。
以上説明したイントラ予測誤差算出部102、動き予測誤差算出部103、または復号側動き探索モードの動き予測誤差算出部111が出力した各符号化モードの残差成分に、変換・量子化部106が、離散コサイン変換(Discrete Cosine Transform)処理と量子化処理とを行って、符号化係数に変換する。
さらに係数符号化部107は、該符号化係数に可変長符号化処理を行い、各符号化モードについての符号化データに変換する。
一方で、逆量子化・逆変換部109は、変換・量子化部106によって出力された符号化係数に対して、逆量子化処理、逆離散コサイン変換処理を行う。これにより、符号化係数は再度残差成分に戻る。ここで、残差成分は加算器113に出力される。
さらに、加算器113は、当該残差成分と、符号化モードの算出部から出力された予測画像とを合成して復号画像ブロックが生成される。
ここで、モード選択部108では、各符号化モードについて、係数符号化部107から取得した各符号化モードの符号化データの符号量、または加算器113が生成した各符号化モードの復号画像ブロックの画質等を比較して一の符号化モードを選択する。ここで、当該選択の方法としては、例えば、符号化効率の良い符号化モードを選択するなどの方法がある。すなわち、符号化データの符号量、画質、またはその双方を検討し、これらをより両立するように選択してもよい。
また、ここで、画質の良否の判断は、例えば、加算器113が生成した各符号化モードの復号画像ブロックと、対応する原画像のブロックとの差分値(符号化誤差)を評価するなどして行えばよい。
例えば最も符号化効率の良い符号化モードを選択する方式としてRate-Distortion最適化方式が提案されている(参考文献参照)。この方式は、各マクロブロックについて全てのモードについて符号量と復号後の原画との符号化誤差を計算し、コスト計算式に従って最も良いモードを選択する方式となっている。
(参考文献)Gary Sullivan and Thomas Wiegand : "Rate-Distortion Optimization for Video Compression", IEEE Signal Processing Magazine, vol. 15, no. 6, pp. 74-90 (November, 1998).
また、上記の方法以外にも、画質重視した重み付け、符合量重視した重み付けにより、判定の方法を変更しても構わない。
次に、モード選択部108は選択した符号化モードの符号化モードフラグとともに符号化ストリームとして出力する。上記の復号側動き探索モードが選択された場合には、復号側で動き探索をすることを示すフラグを出力する。ここで、当該復号側動き探索モードが選択された場合には、残差成分の符号化データは出力してもよく、出力しなくてもよい。
このとき、残差成分の符号化データは出力しない場合は、符号量がより小さいという利点がある。また、残差成分の符号化データは出力する場合は、画質を高めることができるという利点がある。いずれの場合においても、当該復号側動き探索モードが選択された場合には、復号側動き探索モードでは動きベクトルの出力は行われない。よって、従来の符号化モードのうち、動きベクトルのデータを出力する符号化モードよりも符号量が小さいという利点がある。
一方、加算器113は、モード選択部108の選択によって選ばれた符号化モードに係る復号画像ブロックを、復号画像メモリ110に出力する。
次に、復号画像メモリ110は、上記のように取得した復号画像ブロックから参照画像を生成し、格納する。
以上説明した図1の符号化装置によれば、動きベクトルを伝送しなくとも、復号化装置側で動き探索処理を行うことにより、精度の高い動きベクトルを算出することが可能となる。これにより、復号化装置側において誤差の少ない予測画像の合成を行うことができる。
よって、以上説明した図1の符号化装置によれば、動きベクトルを伝送する必要がなく、符号化効率の高くかつ高画質な画像符号化を行うことが可能となる。
すなわち、以上説明した図1の符号化装置によれば、画像をよりデータ量の小さい符号化データに変換し、かつより高画質に復号することのできる画像符号化を行うことが可能となる。
次に、図2に本発明の一実施例に係る画像復号化装置200のブロック図の一例を示す。
画像復号化装置200は例えば、ストリーム解析部201、モード判定部202、イントラ予測合成部203、動き予測合成部204、復号側動き探索モードの予測合成部211、係数解析部207、逆量子化・逆変換・合成部208、復号画像メモリ209、制御部212、記憶部213、加算器214からなる。ここで、参照画像間動き探索部205、予測画像合成部206は、復号側動き探索モードの予測合成部211が有する要素である。
以下に画像復号化装置200の各構成要素の動作を詳細に説明する。
なお、画像復号化装置200の各構成要素の動作は、例えば、以下の記載の通り各構成要素の自律的な動作としても良い。また、例えば制御部112が、例えば記憶部113が記憶するソフトウェアと協働することにより実現しても構わない。
まずストリーム解析部201が、入力された符号化ストリームを解析する。ここで、ストリーム解析部201は、パケットからのデータ抽出処理や各種ヘッダ、フラグの情報取得処理も行う。さらに各マクロブロックの処理を行う。
次に、モード判定部202は、各マクロブロックについて、フラグ等によって指定された符号化モードの判別を行う。以下の復号化処理は、当該判別結果の符号化モードに対応する処理が行われる。以下にそれぞれの符号化モードについての処理を説明する。
まず、符号化モードがイントラ符号化である場合には、イントラ予測合成部203がイントラ予測と予測画像の合成を行う。この方法は上述のように従来の方法を用いればよい。ここで、イントラ予測合成部203は合成した予測画像を出力する。
符号化モードが従来の動き予測による符号化である場合には、動き予測合成部204が、動き探索と予測画像の合成を行う。このとき、画像復号化装置200に入力された符号化ストリームが含む動きベクトルを用いる場合や、スキップモードやダイレクトモード等、隣り合うマクロブロックの情報や隣り合うフレームに関するマクロブロックの情報が用いられる場合がある。これについても同様に従来の方法を用いればよい。ここで、動き予測合成部204は合成した予測画像を出力する。
符号化モードが、本発明の一実施例に係る復号側動き探索モードである場合は、復号側動き探索モードの予測合成部211が、動き予測を行う。これにより、予測画像の合成が行われる。
このとき、参照画像間動き探索部205は、復号画像メモリ209に格納されている複数の参照画像同士の対応点を探索して、動き探索を行う。これにより動きベクトルを算出する。探索方式の詳細については後述する。ここで、参照画像間動き探索部205は、画像符号化装置100の参照画像間動き探索部と同様でも構わない。また、予測画像合成部206は、参照画像間動き探索部205が算出した動きベクトルから、符号化対象画像の予測画像を合成する。ここで、予測画像合成部206は合成した予測画像を出力する。
以上説明したように、モード判定部202が判定した符号化モードに応じて、それぞれ予測画像が生成される。
一方、係数解析部207は、入力符号化ストリームに含まれる各マクロブロックの符号化データを解析し、残差成分の符号化データを逆量子化・逆変換部208に出力する。
逆量子化・逆変換部208は、残差成分の符号化データに逆量子化処理、逆離散コサイン変換処理を行う。これにより、残差成分が復号される。逆量子化・逆変換部208は復号した残差成分を加算器214に出力する。
加算器214は、逆量子化・逆変換部208から取得した残差成分と、モード判定部202が判定した符号化モードの予測合成部から出力される予測画像とを合成して復号画像を生成する。加算器214は、生成した復号画像を復号画像メモリ209に出力する。
復号画像メモリ209は、加算器214が生成した復号画像を格納する。格納される復号画像は、復号画像メモリ209から画像復号化装置200の外に出力される。また、必要に応じて、イントラ予測合成部203、動き予測合成部204、または復号側動き探索モードの予測合成部211によって参照画像として用いられる。
以上説明した図2の復号化装置によれば、動きベクトルが伝送されない新しい符号化モードに対応した動き探索処理を行うことが可能となる。これにより、符号化効率の高い符号化ストリームに対して、精度の高い予測画像を生成し、より高画質な画像の復号化を行うことが可能となる。
すなわち、以上説明した図2の復号化装置によれば、よりデータ量が小さくなるように符号化された符号化データを、より高画質に復号することのできる画像復号化を行うことが可能となる。
次に図3、図4、図5(a)、図5(b)、図9を用いて、上記復号側動き探索モードにおける動き探索方式と予測画像合成方式の一例について詳細に説明する。当該動き探索処理と予測画像合成処理は、例えば、画像符号化装置100の復号側動き探索モードの動き予測誤差算出部111、画像復号化装置200の復号側動き探索モードの予測合成部211において行われる。
本発明の一実施例では、例えば、動き探索おける参照フレームの位置関係について内挿予測と外挿予測の2種類がある。また、動きベクトルの探索方法についてブロック予測とピクセル予測の2種類がある。
ここで、これらの予測方法は自由に組み合わせが可能である。よって、画像符号化装置100の復号側動き探索モードの動き予測誤差算出部111においても、画像復号化装置200の復号側動き探索モードの予測合成部211においても、いずれの組み合わせを用いても構わない。
しかし、画像復号化装置200の復号側動き探索モードの予測合成部211で動き予測を行う場合は、画像符号化装置100の復号側動き探索モードの動き予測誤差算出部111で行った組み合わせと同じ組み合わせの動き探索と予測画像を合成を行うほうがより好適である。
よって、画像符号化装置100モード選択部108では、復号側動き探索モードを選択する場合は、例えば、復号側で動き探索をすることを示すフラグに、符号化時の動き探索において内挿予測と外挿予測のいずれを用いたかを示すフラグを加えても良い。また例えば、復号側で動き探索をすることを示すフラグに、符号化時の動き探索においてブロック予測とピクセル予測のいずれを用いたかを示すフラグを加えても良い。これらのフラグは、復号時に、画像復号化装置200のストリーム解析部201やモード判定部202が認識して。復号側動き探索モードの予測合成部211に指示を送信する。当該指示を受けた復号側動き探索モードの予測合成部211は、上記フラグの示す動き探索を行う。これにより復号時の動き探索方法を、符号化時の動き探索方法ど同じ方法で行うことができる。
なお、以下の説明では符号化処理において符号化対象フレームの予測画像を作成する例を用いて説明する。復号処理の動き探索にも同様の方法を用いることができる。
まず図3を用いて、本実施例の復号側動き探索モードにおける内挿予測と外挿予測の一例を説明する。
内挿予測は、例えば、Bピクチャの予測に用いればよい。図3において302が符号化対象フレームであり、301が符号化対象フレームよりも時間的に前の参照フレーム、303が符号化対象フレームよりも時間的に後の参照フレームである。このように、例えば、符号化対象フレームより時間的に前の参照フレームと符号化対象フレームより時間的に後の参照フレームを比較して動き探索を行い、符号化対象フレームの画素を予測するものを内挿予測と呼ぶ。
また、外挿予測は、例えば、Pピクチャの予測に用いればよい。図3において306が符号化対象フレームであり、304、305が符号化対象フレームよりも時間的に前の参照フレームである。時間的に後のフレームについて同様の処理を行っても良い。このように時間的に前方の複数の参照フレームを比較して動き探索を行い、当該複数の参照フレームよりも時間的に後方にある符号化対象フレームの画素を予測するものを外挿予測と呼ぶ。
本発明による動きベクトル探索では内挿予測と外挿予測のどちらを用いてもよい。内挿予測における参照フレームの選択方法としては、例えば、H.264/AVCに規定されるリストL0とL1の最も小さい番号のものを用いるようにしてもよい。(ここで、H.264/AVCでは、リストL0には現在のフレームより過去の参照フレーム番号が現在時点に近い方から順に格納されるしくみとなっている。また、リストL1には未来の参照フレーム番号が、それぞれ現在時点に近い方から順に格納されるしくみとなっている。)また、復号側動き探索モードのフラグに追加してそれぞれのリストの番号を伝送してもよい。外挿予測における参照フレームの選択方法としては、例えば、H.264/AVCに規定されるリストL0またはL1の小さい番号から2つを選んでもよい。また、復号側動き探索モードのフラグに追加してそれぞれのリストの番号を伝送してもよい。内挿予測または外挿予測のそれぞれの方法において使用する参照フレーム枚数は、例えば2枚とすればよい。しかし、2枚よりも多くしてもよい。この場合、画像符号化装置100モード選択部108が、復号側動き探索モードの動き予測誤差算出部111で使用した枚数をフラグとともに伝送すればよい。このように予測において用いる参照フレーム数を増やすことにより、予測精度を上げることも可能である。
ここで、内挿予測または外挿予測のいずれの方法の予測画像合成においても、予測画像の画素を生成する場合には、対応する画素を平均してもよい。また、符号化対象フレームとそれぞれの参照フレームとの距離の比に従って合成してもよい。いずれにしても、参照フレーム上の画素の画素値を変数とする関数値によって符号化対象フレームにおける対応する画素の画素値を決定すればよい。
以上説明したとおり、内挿予測のみならず外挿予測も用いることにより、様々なパターンの入力画像に対してより効率の良い符号化方法を採用することができる。
次に図4を用いて、本実施例に係るブロック予測の方法の一例を説明する。上述のとおり、ブロック予測は内挿予測と外挿予測のどちらに組み合わせてもよい。以下では一例として、符号化対象フレーム402に最も近い前後の1枚ずつのフレーム401、403を参照フレームとして内挿予測する場合について説明する。なお、上述のとおり参照フレーム枚数は何枚でもよい。また、復号側でも同様の方法で予測を行えばよい。ここで、ブロック予測によって動きベクトルを探索する場合、複数の画素について纏めて探索を行い、複数の画素の組合せにて誤差判定を行う。そのため、高速に高精度な動きベクトルを探索することができる
本実施例におけるブロック予測においては、既存の符号化方式におけるブロックマッチングの動き予測と比べて、例えば、参照画像と符号化対象画像ではなく、参照画像同士を対象として動き探索を行う点が異なる。図4において、402の符号化対象フレームのマクロブロック405を符号化対象マクロブロックとする。
時間的に前の参照フレーム401と時間的に後の参照フレーム403とにおいてブロック単位で比較を行い所定の範囲を探索する。このとき、時間的に前の参照フレーム401と時間的に後の参照フレーム403における比較ブロックの関係は、図4に示す関係となるように行う。すなわち、図4において時間的に前の参照フレーム401におけるブロック404と後の参照フレーム403のブロック406を比較する。このとき、例えば、前の参照フレーム401におけるブロック404、符号化対象フレーム402の符号化対象ブロック405、後の参照フレーム403のブロック406が直線上となる関係を条件として、動き探索を行う。これにより、前の参照フレーム401のブロック及び後の参照フレーム403のブロックのいずれの組み合わせを選択しても、両者間の動きベクトルは符号化対象フレーム402の符号化対象ブロックを通過することとなる。
例えば、参照フレーム401から符号化対象フレーム402までの時間的な距離がα、符号化対象フレーム402から参照フレーム403までの時間的な距離がβであるとする。また、参照フレーム401の探索ブロック404が位置(X1,Y1)、符号化対象フレーム402の符号化対称マクロブロック405が位置(X2,Y2)、フレーム403の探索ブロック406が位置(X3,Y3)にあるとしたとき、例えば、それぞれの関係を数式1、数式2に示すようにすればよい。
上記の数式1、数式2の条件を用いれば、符号化対称フレーム402上の符号化対称マクロブロック405の位置(X2,Y2)と、参照フレーム401上の探索ブロック404が位置(X1,Y1)を与えると、フレーム403上の探索ブロック406が位置(X3,Y3)は定まることとなる。
以上のような関係を条件として、参照フレーム401と参照フレーム403において所定の範囲の探索を行う。
ここで当該所定の範囲の設定方法は、計算量と画質を考慮して装置ごとに設定すればよい。例えば、参照フレーム401と参照フレーム403において、符号化対象フレーム402の符号化対象ブロック405の位置(X2,Y2)と同一の位置を基準とし、当該基準の位置(X2,Y2)を中心として、所定の幅AをX方向の幅とし、所定の幅BをY方向の幅とする矩形の領域としてもよい。また、当該基準の位置(X2,Y2)を中心として、所定の距離Rの円の領域としてもよい。また、当該所定の領域内に探索ブロックが入るか否かで境界を設定してもよい。また、また、当該所定の領域内に探索ブロックの中心が入るか否かで境界を設定してもよい。これらの所定の領域の設定条件も、画像符号化装置100モード選択部108がフラグとともに伝送すればよい。
なお、数式1、数式2の関係は、あくまで一例であり、他の条件でも構わない。ただし、この場合も、数式1、数式2のように参照フレーム401の探索ブロックの位置、符号化対象フレーム402の符号化対称マクロブロック405の位置、フレーム403の探索ブロック406の位置の関係が判別できるような情報を、画像符号化装置100モード選択部108がフラグとともに伝送すればよい。
ここで、上記の動き探索の探索結果は、例えば、以下のように算出する。すなわち、参照フレーム401の探索ブロック404と参照フレーム403の探索ブロック406の誤差を、上記所定の領域内における各位置において求める。次に、当該誤差が最も小さくなった場合の、探索ブロック404と探索ブロック406との間の動きベクトルを探索結果とする。取得する動きベクトルは始点を符号化対象ブロックの中心位置とし、参照フレーム上の探索ブロックを終点としても構わない。また、各参照フレーム上の探索ブロックの中心位置をそれぞれ始点、終点とした動きベクトルとしても良い。
ここで、当該誤差は、例えば以下のように算出すればよい。すなわち、参照フレーム401の探索ブロック404の各画素値からなる行列と、参照フレーム403の探索ブロック406の各画素値からなる行列の差の行列を求める。次に、当該差の行列の値(参照フレーム401の探索ブロック404の画素値と参照フレーム403の探索ブロック406の画素値との差分値)について、絶対値の和を算出するか、各値の二乗和を算出する。当該絶対値の和または二乗和を誤差とすればよい。
以上説明したように算出された動きベクトルの指し示す参照フレーム401上のブロック404と、参照フレーム403上のブロック406とを合成して予測画像が生成される。
ここで、当該予測画像の生成において、参照フレーム401上のブロック404の画素値と、参照フレーム403上のブロック406の画素値との平均値を予測画像の画素値としても良い。また、符号化対象フレームと参照フレームとの時間的な距離を用いて、参照フレームのブロックにおける画素値を重み付けした値を予測画像の画素値としても良い。当該重み付けを用いた合成の一例は、以下のように行えばよい。すなわち、参照フレーム401上のブロック404の一の画素における画素値をC、参照フレーム403上のブロック406の対応する位置の画素における画素値をDとし、参照フレーム401から符号化対象フレーム402までの時間的な距離をα、符号化対象フレーム402から参照フレーム403までの時間的な距離をβとした場合、例えば以下の数式3に示すように、予測画像における対応する位置の画素の画素値Eを算出すればよい。
また、以上の例は一例であり、他の算出方法によって予測画像の画素値を設定してもよい。いずれにしても、動き探索の結果により求めた、参照フレーム上の画素の画素値を変数とする関数値によって予測画像における対応する画素の画素値を決定すればよい。
上記のようにしてブロック予測と予測画像の合成が行われる。外挿予測についても、ブロックの位置関係が異なるだけであり、同様に処理が可能である。
また、例えば図3に示す外挿予測の場合に、上記で説明した内装予測の場合と時間距離βの矢印の向きが反対となる。この場合に、上述の数式1、数式2、数式3を適用する場合は、βについてはマイナスの値をとればよい。
以上説明したように、ブロック予測によって動きベクトルを探索することにより、高速に高精度な動きベクトルを探索することができる。
また以上説明したように、対象ブロックを終点とする動きベクトルではなく、参照フレームにおける対応するブロック間の動きベクトルを探索し、これを用いて予測を行うことにより、対象フレームが存在しなくとも、動きベクトルを算出することが可能となる。これは特に復号化時に有効である。
次に、図5(a)、図5(b)を用いてピクセル予測の方法の一例を説明する。上述のとおり、ピクセル予測は内挿予測と外挿予測のどちらに組み合わせてもよい。なお、上述のとおり参照フレーム枚数は何枚でもよい。ここで、以下では符号化対象フレーム503に最も近い前後の2枚ずつのフレーム501と502、504と505を用いて内挿予測する場合について説明する。また、復号側でも同様の方法で予測を行えばよい。ここで、ピクセル予測によって動きベクトルを探索する場合、ブロック単位では切り分けられない複雑な動きを持つ画像に対しても正確な動き探索を行うことができる。
ここで、ピクセル予測では、符号化対象フレーム503の対象マクロブロック506において、各ピクセルそれぞれに動きベクトルを求める。例えば、符号化時にも符号化対象フレーム503の情報は用いなくともよい。復号化時は図の符号化対象フレーム503は復号対象フレームに相当する。当該フレームは復号化開始時には存在しない。
まず、符号化対象マクロブロックの左上の1ピクセル507について動きベクトルを求めることを考える。ここで、参照フレーム501、参照フレーム502、参照フレーム504、参照フレーム505、においてピクセル単位で比較を行い所定の範囲を探索する。
このとき、例えば、参照フレーム501、参照フレーム502、参照フレーム504、参照フレーム505における比較ブロックの関係は、図5(a)に示す関係となるように行う。すなわち、図5(a)において、参照フレーム501上の探索画素521、参照フレーム502上の探索画素522、符号化対象フレーム503上の符号化対象画素523、参照フレーム504上の探索画素524、参照フレーム505上の探索画素524が直線上となる関係を条件として、動き探索を行う。
これにより、参照フレーム501、参照フレーム502、参照フレーム504、参照フレーム505の各探索画素のいずれの組み合わせを選択して、当該探索画素を通過する動きベクトルは符号化対象フレーム503の符号化対象画素を通過することとなる。
ここで、例えば、図5(a)に示すように、参照フレーム501から符号化対象フレーム503までの時間的な距離をα2、参照フレーム502から符号化対象フレーム503までの時間的な距離をα1、符号化対象フレーム503から参照フレーム504までの時間的な距離をβ1、符号化対象フレーム503から参照フレーム505までの時間的な距離をβ2であるとする。また、参照フレーム501の探索画素521が位置(X11,Y11)、参照フレーム502の探索画素522が位置(X12,Y12)、符号化対象フレーム503の符号化対象画素523が位置(X13,Y13)、参照フレーム504の探索画素524が位置(X14,Y14)、参照フレーム505の探索画素525が位置(X15,Y15)にあるとしたとき、例えば、それぞれの関係を数式4、数式5、数式6、数式7、数式8、数式9に示すようにすればよい。
上記の数式4、数式5、数式6、数式7、数式8、数式9の条件を用いれば、符号化対象フレーム503上の符号化対称画素523の位置(X13,Y13)と、参照フレーム501上の探索画素521の位置(X11,Y11)を与えると、参照フレーム502上の探索画素522の位置(X12,Y12)、参照フレーム504上の探索画素524の位置(X14,Y14)、参照フレーム505上の探索画素525の位置(X15,Y15)は定まることとなる。
次に、上述の所定の探索範囲について図5(b)を用いて説明する。図5(b)には符号化対象フレーム503の符号化対象画素と、探索範囲参照フレーム501、参照フレーム502における探索範囲との関係を示している。
ここで、符号化対象フレーム503の符号化対象画素507と、参照フレーム501上の画素508と、参照フレーム502上の画素512との各フレーム上での画素位置はいずれも同じ位置にある。このとき、参照フレーム501における探索範囲は画素512を中心とする範囲515、参照フレーム501における探索範囲は画素508を中心とする範囲511のように設定すればよい。
このとき、例えば、符号化対象フレーム503の符号化対象画素507と、参照フレーム501上の画素508と、参照フレーム502上の画素512について、数式4、数式5の関係を満たす条件があるとき、探索範囲は範囲515と探索範囲は範囲511を互いに相似とすればよい。また、例えば、探索範囲は範囲515の横幅をH、縦幅をI、範囲511の横幅をF、縦幅をGとして、F=(α1/α2)×H及びG=(α1/α2)×Iが成立する関係とすればよい。この場合、符号化対象フレーム503の符号化対象画素507と、参照フレーム501上の画素508と、参照フレーム502上の画素512が直線上にある場合に無駄の少ない探索範囲を設定することができる。
以上説明した参照フレーム上の探索画素の位置の条件を用いて、上記所定の範囲のについて動きベクトル探索を行う。
次に、上記の動き探索の探索結果の算出方法について説明する。本実施例においては、参照フレーム同士の誤差を計測する時に、探索位置を中心としたテンプレートを用いる。テンプレートは図5(b)のテンプレート509、テンプレート513のように4近傍画素のテンプレートを用いてもよいし、テンプレート510、テンプレート514のように8近傍画素のテンプレートを用いてもよい。もっと大きな範囲のテンプレートを用いてもよい。
ここで、4近傍のテンプレート509、513を用いた場合の誤差の算出方法を図9を用いて説明する。まず、各参照フレームにおける探索画素に係るテンプレート(4近傍画素のテンプレートの場合、探索画素と当該探索画素に隣接する4画素の5画素)の画素値の組み合わせを取得する。図9には、参照フレーム501における探索テンプレート901、参照フレーム502における探索テンプレート902、参照フレーム503における探索テンプレート903、参照フレーム504における探索テンプレート904が示されている。ここで、次に、各参照フレームにおける探索テンプレートの対応する一の画素の画素値の平均処理を行い、平均テンプレート903を生成する。次に、各参照フレームにおける探索テンプレートと当該平均テンプレート903との差分処理により生成する差分テンプレート911、912、914、915を生成する。次に各差分テンプレートに含まれる値の絶対値の和を算出する。さらに、各差分テンプレートの絶対値の和を平均して誤差の値とすればよい。このとき、絶対値の和を用いずに2乗和を用いてもよい。
このように誤差の値を算出することにより、各参照フレームにおける探索画素に係るテンプレートの画素値が平均に近いか否かを評価することが可能となる。よって、当該誤差値がより小さいほど、各参照フレームにおける探索画素に係るテンプレートが近い値を示していることとなる。
よって、この場合は探索範囲内の各位置において、当該誤差値を算出し、例えば誤差の和が最も小さくなる各参照フレームにおける探索テンプレートの組み合わせを求める。ここで、各参照フレームにおける探索テンプレートの探索画素なす直線上にあるベクトルを符号化対象画素の動きベクトルとする。この場合も、取得する動きベクトルは、始点を符号化対象画素とし、終点を各探索画素としてもよい。また、始点も終点も各探索画素とした動きベクトルとしてもよい。
また、誤差の算出方法は上述の方法に限られない。例えば、図9において、平均テンプレート903を生成しなくともよい。この場合、各参照フレームの探索テンプレートの差分テンプレートを生成してもよい。具体的には、図9の各参照フレームの探索テンプレート901、902、904、905から、2ずつの探索テンプレート組み合わせを選び、それぞれの差分テンプレート生成する。すなわち、本図の例では、探索テンプレート901と探索テンプレート902、探索テンプレート901と探索テンプレート903、探索テンプレート901と探索テンプレート904、探索テンプレート902と探索テンプレート903、探索テンプレート902と探索テンプレート904、探索テンプレート904と探索テンプレート905の6通りの組み合わせの差分テンプレートを生成する。当該6つの差分テンプレートの各差分テンプレートに含まれる値の絶対値の和または2乗和を算出して、例えばこれらの平均値を算出する。この値を誤差として評価してもよい。この場合も、当該誤差値がより小さいほど、各参照フレームの探索テンプレートの画素値が近いこととなる。
なお、以上の誤差の算出の説明は、は、図5(b)のテンプレート509、テンプレート513のような4近傍画素のテンプレートを用いて行ったが、テンプレート510、テンプレート514のような8近傍画素を用いても同様に求めることができる。両者の違いは、各テンプレートに含まれる画素値の数が異なるのみである。
次に、図5(a)において、符号化対象フレーム503の対象ピクセルの予測画素値を生成する。予測画素値は、上記動きベクトルの位置にある各参照フレームの探索画素の値を平均して算出してもよい。また、符号化対象フレームからの時間的な距離に従って重み付けをして算出してもよい。当該重み付けを用いた合成の一例は、以下のように行えばよい。すなわち、参照フレーム501上の探索画素521における画素値をJ、参照フレーム502上の探索画素522における画素値をK、参照フレーム504上の探索画素524における画素値をL、参照フレーム505上の探索画素525における画素値をMとし、参照フレーム501から符号化対象フレーム503までの時間的な距離をα2、参照フレーム502から符号化対象フレーム503までの時間的な距離をα1、符号化対象フレーム503から参照フレーム504までの時間的な距離をβ1、符号化対象フレーム503から参照フレーム505までの時間的な距離をβ2とした場合、例えば以下の数式10に示すように、予測画素の画素値Nを算出すればよい。
また、以上の例は一例であり、他の算出方法によって予測画像の画素値を設定してもよい。いずれにしても、動き探索の結果により求めた、参照フレーム上の画素の画素値を変数とする関数値によって予測画素の画素値を決定すればよい。
上記のようにしてブロック予測と予測画素の生成とが行われる。外挿予測についても、ブロックの位置関係が異なるだけであり、同様に処理が可能である。
また、例えば図3に示す外挿予測の場合に、上記で説明した内装予測の場合と時間距離βの矢印の向きが反対となる。この場合に、上述の数式4〜数式10を適用する場合は、βについてはマイナスの値をとればよい。また、参照フレームの枚数が上記の説明と異なる場合における数式4〜数式10の適用については、参照フレームの枚数に応じて各参照フレームに対応する項を増減すればよい。
以上のような、ピクセル単位の動き探索及び予測画素合成を、対象マクロブロック内の全てのピクセルについて行うことにより、ピクセル予測と予測画像の合成が行われる。
以上説明したピクセル予測によって動きベクトルを行うことにより、ブロック単位では切り分けられない複雑な動きを持つ画像に対しても正確な動き探索を行うことができる。
また図4と同様に、対象ブロックを終点とする動きベクトルではなく、参照フレームにおける対応するブロック間の動きベクトルを探索し、これを用いて予測を行うことにより、対象フレームが存在しなくとも、動きベクトルを算出することが可能となる。これは特に復号化時に有効である。
以上の図3、図4、図5(a)、図5(b)、図9の説明においては、整数画素単位での予測を例に挙げたが、動き探索は小数画素単位で行ってもよい。この場合には従来のH.264/AVC等の技術を用いて、各参照フレームを補間フィルタによって小数画素精度の画像に拡大し、同様の処理を行えばよい。
次に、図6(a)を用いて、本発明の一実施例による符号化方法の流れの一例について説明する。
まず、ステップ601で、符号化対象となる原画像を入力する。例えば、ステップ601は、画像符号化装置100の原画像メモリ101が行えばよい。次に、ステップ602では、ステップ601で取得した原画像の一の画像について、各符号化モードでの予測画像の合成を行い、予測画像と原画像との残差成分を算出する。例えば、ステップ602は、画像符号化装置100のイントラ予測誤差算出部102、動き予測誤差算出部103、復号側動き探索モードの動き予測誤差算出部111などが、それぞれの符号化モードについて行えばよい。ステップ602の処理の詳細は、例えば、図1におけるイントラ予測誤差算出部102、動き予測誤差算出部103、復号側動き探索モードの動き予測誤差算出部111の各説明に示すように行えばよい。次に、ステップ603では、ステップ602で算出した各符号化モードにおける残差成分について離散コサイン変換処理と量子化処理とを行い、符号化係数を算出する。例えば、ステップ603は、画像符号化装置100の変換・量子化部106が行えばよい。ステップ603ではさらに、当該符号化係数に可変長符号化処理を行ってもよい。例えば、当該可変長符号化処理は、画像符号化装置100の係数符号化部107が行えばよい。いずれの場合でも、ステップ603では、処理後のデータを符号化データとして出力する。次に、ステップ604では、ステップ603の処理を行った、各符号化モードについての画像符号化結果を比較して、当該画像について出力する符号化モードを決定する。例えば、ステップ604は、画像符号化装置100のモード選択部108が行えばよい。ステップ604の処理の詳細は、図1におけるモード選択部108の説明に示すように行えばよい。次にステップ605では、ステップ604で選択した符号化モードにおける符号化データを符号化ストリームとして出力する。このとき、例えば、復号側動き探索モードが選択された場合には、符号化モードフラグも合わせて符号化ストリームに含めて出力する。例えば、ステップ605は、画像符号化装置100のモード選択部108が行えばよい。また、ステップ605の処理の詳細は、図1におけるモード選択部108の説明に示すように行えばよい。
次に、図6(b)を用いて、上記ステップ602において復号側動き探索モードについての予測画像の合成と残差成分の算出の詳細な流れの一例について説明する。なお、図6(b)に示す復号側動き探索モード以外の符号化モードの予測画像の合成と残差成分の算出については、例えば、図1の画像符号化装置100のイントラ予測誤差算出部102や動き予測誤差算出部103で行われる従来の方法を用いればよい。
まずステップ611では、ステップ601で取得した原画像の一の画像について、参照画像間における動き探索を行い、動きベクトルを算出する。例えば、ステップ611は、画像符号化装置100の参照画像間動き探索部104が行えばよい。ステップ611の処理の詳細は、図1における参照画像間動き探索部104の説明、図3、図4、図5(a)、図5(b)における動き探索についての各説明が示すように行えばよい。次に、ステップ612では、ステップ611にて算出された動きベクトルを用いて予測画像を合成する。例えば、ステップ612は、画像符号化装置100の予測誤差算出部105が行えばよい。ステップ612の処理の詳細は、図1における予測誤差算出部105の説明、図3、図4、図5(a)、図5(b)における予測画像合成についての各説明が示すように行えばよい。次に、次にステップ613では、ステップ612で取得した予測画像と原画像の差分を取り、残差成分を算出する。例えば、ステップ613は、同じく、画像符号化装置100の予測誤差算出部105が行えばよい。ステップ613の処理の詳細は、図1における予測誤差算出部105の説明に示すように行えばよい。
以上説明した図6の符号化方法によれば、動きベクトルを伝送しなくとも、復号化処理側において動き探索処理を行うことにより、精度の高い動きベクトルを算出することが可能な符号化処理を行うことできる。これにより、復号化処理側において誤差の少ない予測画像の合成を行うことができる。
よって、以上説明した図6の符号化方法によれば、動きベクトルを伝送する必要がなく、符号化効率の高い画像符号化を行うことが可能となる。
すなわち、以上説明した図6の符号化方法によれば、画像をよりデータ量の小さい符号化データに変換し、かつより高画質に復号することのできる画像符号化を行うことが可能となる。
次に、図7(a)を用いて、本発明の一実施例による復号化方法の流れの一例について説明する。
まず、ステップ701で、復号化対象となる符号化ストリームを取得する。例えば、ステップ701は、画像復号化装置200のストリーム解析部201が行えばよい。次に、ステップ702では、ステップ701において取得した符号化ストリームに含まれる符号化モードフラグと符号化データを解析する。例えば、ステップ702も同じく、画像復号化装置200のストリーム解析部201が行えばよい。ステップ702の処理の詳細は、例えば、図2におけるストリーム解析部201の説明に示すように行えばよい。次に、ステップ703では、ステップ702において解析した符号化モードフラグを用いて、当該符号化データに含まれる一の符号化単位(ブロック単位や画素単位など)についての符号化モードを判定する。例えば、ステップ703は、画像復号化装置200のモード判定部202が行えばよい。次に、ステップ704では、ステップ703において判定された符号化モードに対応する予測画像の合成を行う。ステップ704の処理の詳細は、例えば、判定された符号化モードに応じて、図2における画像復号化装置200のイントラ予測合成部203、動き予測合成部204、復号側動き探索モードの予測合成部211などが、それぞれの対応する符号化モードの場合に予測画像の合成処理を行えばよい。ステップ704の処理の詳細は、例えば、図2におけるイントラ予測合成部203、動き予測合成部204、復号側動き探索モードの予測合成部211の各説明に示すように行えばよい。次に、ステップ705では、ステップ701において取得した符号化ストリームに含まれる符号化データのうち、ステップ702における前記一の符号化単位についての符号化データの部分を解析し、当該符号化データについて逆量子化処理、逆離散コサイン変換処理を行い、前記一の符号化単位についての残差成分の復号を行う。例えば、ステップ705の処理は、画像復号化装置200の係数解析部207と逆量子化・逆変換部208が行えばよい。ステップ705の処理の詳細は、例えば、図2における係数解析部207と逆量子化・逆変換部208の各説明に示すように行えばよい。次に、ステップ706では、ステップ704において生成された予測画像とステップ705によって復号された残差成分とを合成し、復号画像の生成を行う。例えば、ステップ706の処理は、画像復号化装置200の加算器214が行えばよい。次に、ステップ707では、ステップ705において生成された復号画像の出力を行う。例えば、ステップ707の処理は、画像復号化装置200の復号画像メモリ209が行えばよい。
次に、図7(b)を用いて、上記ステップ703において復号側動き探索モードと判定された場合の、ステップ704における予測画像の合成の詳細な流れの一例について説明する。なお、上記ステップ703において復号側動き探索モード以外の符号化モードと判定された場合については、例えば、図2の画像復号化装置200のイントラ予測合成部203や動き予測合成部204で行われる従来の方法を用いればよい。
図7(b)では、ステップ703で判定した符号化モードが復号側動き探索モードであるので、まずステップ711では、復号化対象画像について参照画像を用いて動き探索を行う。ここで、復号化対象画像とは、ステップ703において、符号化モードを判定した前記一の符号化単位の画像である。例えば、ステップ711は、画像復号化装置200の参照画像間動き探索部205が行えばよい。ステップ711の処理の詳細は、図2における参照画像間動き探索部205の説明、図3、図4、図5(a)、図5(b)における動き探索についての各説明が示すように行えばよい。次に、ステップ712では、ステップ711にて算出された動きベクトルを用いて予測画像を合成する。例えば、ステップ712は、画像復号化装置200の予測画像合成部206が行えばよい。ステップ712の処理の詳細は、図2における予測画像合成部206の説明、図3、図4、図5(a)、図5(b)における予測画像合成についての各説明が示すように行えばよい。
以上説明した図7の復号化方法によれば、動きベクトルが伝送されない新しい符号化モードに対応した動き探索処理を行うことが可能となる。これにより、符号化効率の高い符号化ストリームに対して、精度の高い予測画像を生成し、より高画質な画像の復号化を行うことが可能となる。
すなわち、以上説明した図7の復号化方法によれば、よりデータ量が小さくなるように符号化された符号化データを、より高画質に復号することのできる画像復号化を行うことが可能となる。
次に、図8に本発明の一実施例に係るデータ記録媒体の一例を示す。
本発明の一実施例に係る符号化装置によって作成された符号化ストリームは、例えば、データ記録媒体801上にデータ列802として記録される。データ列802は、例えば、所定の文法に従う符号化ストリームとして記録されている。以下ではH.264/AVC規格の
一部を変更したものとして説明する。
まず、H.264/AVCでは、シーケンスパラメータセット803、ピクチャパラメータセット804、スライス805、806、807からストリームが構成される。以下、1つのスライスに1つの画像(ピクチャ)が格納される場合を例に示す。
各スライスの内部には、例えば、それぞれのマクロブロックに関する情報808が含まれている。マクロブロックに関する情報808の内部には、例えば、マクロブロックごとにそれぞれの符号化モードを記録する領域があり、これを符号化モードフラグ809とする。
次に、本発明の一実施例に係る復号側動き探索モードは、他のイントラ符号化モード、動き予測符号化モードと同様に符号化モードの一つの種類として、符号化モードフラグ809に記録される。ここで、本発明の一実施例に係る復号側動き探索モードによって符号化されたマクロブロックについての動きベクトル情報は、データ記録媒体801上には記録されない。また、当該復号側動き探索モードによって符号化されたマクロブロックについての残差成分の係数については、データ記録媒体801上に記録しても記録しなくてもよい。このとき、残差成分の係数がない場合の復号化処理においては、従来のスキップモードと同様に当該マクロブロックについて生成された予測画像がそのまま当該マクロブロックについての復号画像となる。
また、ここで、予測方法に図4において説明したブロック予測を用いる場合には、例えば、BピクチャではリストL0とL1の最も近い1枚ずつを用いて内挿予測を行ってもよい。PピクチャではリストL0の最も近い2枚を用いて外挿予測を行ってもよい。また、図5(a)、図5(b)において説明したピクセル予測を用いる場合には、BピクチャにおいてリストL0とL1の最も近い2枚ずつを用いて内挿予測を行なってもよい。また、Pピクチャでは同様にリストL0の最も近い2枚を用いて外挿予測を行なってもよい。このとき、動きベクトル探索に用いる参照フレームをデータ記録媒体801上に記録してもよい。また、ブロック予測とピクセル予測を指定するフラグをデータ記録媒体801上に記録してもよい。また、Bピクチャにおいて内挿予測を用いるか、外挿予測を用いるかを指定するフラグデータ記録媒体801上に記録してもよい。
以上説明した図8のデータ記録媒体によれば、より高画質な画像データを、より小さいデータ量で記録することが可能である。
なお、以上説明した各図、各方法等の実施例のいずれを組み合わせても、本発明の一実施の形態となりうる。
以上説明した本発明の実施例によれば、動きベクトルを符号化しない新たな符号化モードであり、復号側において動き探索を行う復号側動き探索モードを実現することが可能となる。
ここで、動きベクトルを伝送しないモードは動きベクトルの分だけ符号量を削減できる。また、動きベクトルを伝送しなくとも、復号側で動き探索を行うことにより、精度の高い予測画像を生成することができる。
よって、当該モードを採用することにより、高い圧縮効率と、精度の高い予測画像の生成を両立することができる。これにより、圧縮効率の高い符号化方法、符号化装置が実現できる。また、より画質のよい復号画像を生成する複合化方法、復号化装置を実現できる。
また、以上説明した各図、各方法等の実施例は、符号化された画像符号化ストリームを記録した媒体、または、これらを用いた記録装置、再生装置、携帯電話、デジタルカメラ等に適用することが可能である。
以上説明した本発明の各実施例に係る符号化方法、符号化装置、復号化方法、復号化装置によれば、符号化データの符号量を低減し、復号画像の画質の劣化を防ぐことが可能となる。
以上説明した本発明の各実施例によれば、符号量を低減し、画質の劣化を防ぐことができる。すなわち、高い圧縮率とより良い画質とを実現することができる。