(57)【特許請求の範囲】
【請求項１】
予測処理を行って画像を復号化する画像復号化方法であって、
前記予測処理についての複数の予測モードのうちの一つの予測モードを選択する予測モード選択ステップと、
前記予測モード選択ステップで選択された予測モードの予測処理を行う予測ステップと、を備え、
前記予測モード選択ステップで選択できる予測モードには、
画面内予測モードであって、復号化対象ブロックの左側または上側に隣接する復号化済ブロック内の画素を用いて第１の参照画素を生成し、前記復号化対象ブロックの上側または左側であって前記第１の参照画素とは異なる側に隣接する復号化済の第２の参照画素の画素値と前記第１の参照画素の画素値を用いた演算処理により予測画素を生成する第１の画面内予測モードと、
前記第１の画面内予測モードとは異なる画面内予測モードであって、前記復号化対象ブロックに隣接する復号化済の画素値を用いて予測画素を生成する第２の画面内予測モードと、
があり、
前記第１の画面内予測モードには、前記復号化対象ブロック内において、前記復号化対象ブロックの右端に位置するすべての境界画素を除いたいずれの画素においても、前記演算を用いた予測画素値の算出処理が可能な状態があり、
前記第１の画面内予測モードでは、前記第２の参照画素の画素値と前記第１の参照画素の画素値との補間処理を用いた演算処理により予測画素を生成し、
復号対象ブロックの処理順序は、前記予測モード選択ステップにおいて、前記第１の画面内予測モードと前記第２の画面内予測モードのいずれが選ばれても変化しない、
画像復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は動画像を符号化する動画像符号化技術に関する。
【背景技術】
【０００２】
大容量の動画像情報をデジタルデータ化して記録、伝達する手法として、MPEG (Moving Picture Experts Group)方式等の符号化方式が策定され、MPEG-1規格、MPEG-2規格、MPEG-4規格、Ｈ.２６４／ＡＶＣ(Advanced Video Coding)規格等として国際標準の符号化方式となっている。
【０００３】
これらの規格では、符号化処理が完了した画像情報を利用して符号化対象画像をブロック単位で予測し、原画像との予測差分を符号化することによって、動画像の持つ冗長性を除いて符号量を減らしている。特にＨ.２６４／ＡＶＣでは、符号化対象ブロックの周辺画素を利用する画面内予測符号化方式を採用することにより、劇的な圧縮率の向上を実現した。
【０００４】
しかし、Ｈ.２６４／ＡＶＣにおける画面内予測の場合、予測方法が単純であり十分な予測精度を実現することができなかった。例えば、Ｈ.２６４／ＡＶＣによる画面内予測では、参照画素を１つだけ指定し、予測方向に沿った画素をすべて１つの参照画素の画素値のみを参照値として予測するという単方向による予測方式を採用しており、予測精度の向上の余地があった。そのため、画面内予測の精度を向上させて圧縮率を高めるための画面内符号化技術が求められるようになった。
【０００５】
画面内予測の精度を向上させる技術として、例えば特許文献１には、画像全体を反転してから符号化することを可能にすることによって、画面内予測に利用可能な画素の種類を増やすことが開示されている。
【０００６】
また、非特許文献1には、符号化順序をブロック単位で変更することによって、上下・左右のブロックを用いた予測を行うことが開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開2006-352181
【非特許文献】
【０００８】
【非特許文献１】塩寺太一郎，  谷沢昭行，  中條健，“ブロックベース外挿／内挿予測に基づくイントラ符号化”， PCSJ2006， November， 2006.
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、特許文献1では、画像を反転した後はＨ.２６４／ＡＶＣと同様に１つの参照画素の画素値のみを参照値として、単方向による単純な予測を行うため、それ以上に予測精度を向上することができない。
【００１０】
また、非特許文献1では、上下・左右のブロックを用いた予測が可能になるブロックは一部に限られ、それ以外のブロックではＨ.２６４／ＡＶＣに比べて予測精度が低下する。
【００１１】
これらの従来技術では、例えば、予測方向に沿って輝度値が大きく変化する場合に、予測値に対しての差分が大きくなり、符号量が増大し、圧縮率が低下するという課題があった。
【００１２】
本発明は上記課題を鑑みてなされたものであり、本発明の目的は、より圧縮効率のよい画像符号化・復号化技術を提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するために、本発明の一実施の態様は、例えば、特許請求の範囲に記載されるように構成すればよい。
【発明の効果】
【００１４】
本発明によれば、より圧縮効率のよい画像符号化・復号化技術を提供することにある。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施例に係る画像符号化装置の説明図
【図２】本発明の一実施例に係る画像復号化装置の説明図
【図３】Ｈ.２６４／ＡＶＣで用いる画面内予測符号化処理の説明図
【図４】本発明の一実施例に係る画面内予測符号化処理の説明図
【図５】本発明の一実施例に係る画面内予測符号化処理の説明図
【図６】Ｈ.２６４／ＡＶＣで用いる画面内予測復号化処理の説明図
【図７】本発明の一実施例に係る画面内予測復号化処理の説明図
【図８】本発明の一実施例に係る画面内予測復号化処理の説明図
【図９】Ｈ.２６４／ＡＶＣで用いる画面内予測の説明図
【図１０】本発明の一実施例に係る画面内予測の説明図
【図１１】本発明の一実施例に係る画面内予測の説明図
【図１２】本発明の一実施例に係る画像符号化装置の流れ図
【図１３】本発明の一実施例に係る画像符号化装置の詳細な流れ図
【図１４】本発明の一実施例に係る画像復号化装置の流れ図
【図１５】本発明の一実施例に係る画像復号化装置の詳細な流れ図
【図１６】本発明の一実施例の説明図
【図１７】本発明の一実施例に係る画面内予測と異なる予測方法の説明図
【図１８】本発明の一実施例に係る符号化ストリームの構成例
【図１９】本発明の一実施例に係る符号化ストリームの構成例
【発明を実施するための形態】
【００１６】
以下、本発明の実施例を、図面を参照して説明する。
【００１７】
また、各図面において、同一の符号が付されている構成要素は同一の機能を有することとする。
【００１８】
また、本明細書の各記載及び各図面における「画素の和」という表現は、画素の画素値を加算した結果をいう。
【００１９】
まず、図３を用いて、Ｈ.２６４／ＡＶＣによる画面内予測符号化処理の動作を説明する。Ｈ.２６４／ＡＶＣでは、符号化対象画像に対してラスタースキャンの順序に従って符号化を実行する(301)。なお、ラスタースキャンの順序とは、一般的に画面の左上端から右端まで処理を行い、その後、一段下の左端から右端へ処理を行い、これを繰り返す順序をいう。
【００２０】
ここで、符号化対象ブロックの各画素についての予測は、符号化対象ブロックの左、左上、上、右上に隣接する符号化済みのブロックの復号化画像の画素値を用いて予測を行う。
【００２１】
特に、符号化済みのブロックのうち、図３に示す１３個の画素のうち一の画素の画素値を参照値とし、当該一の画素を始点として予測方向の同一直線上に整列する画素はすべて当該一の画素の画素値を参照値として予測する(302)。
【００２２】
例えば(303)に示すように、符号化対象ブロックの画素B、C、D、Eはすべて同一画素を参照して予測符号化が行われ、画素Bの直上の画素を復号化した値A’との差分(予測差分)b、c、d、eが計算される。さらに、Ｈ.２６４／ＡＶＣでは縦、横、斜めなど、8種類の予測方向候補の中から最適なものをブロック単位で選択することができ、予測差分と予測方向の値が符号化される。ただし、Ｈ.２６４／ＡＶＣでは、上記特定の方向に沿った予測の他に、参照画素の平均値によって符号化対象ブロックに含まれるすべての画素を予測する「DC予測」を利用することもできる(304)。
【００２３】
次に、図６を用いて、Ｈ.２６４／ＡＶＣによる画面内予測復号化処理の動作を説明する。復号化処理も符号化処理と同様にラスタースキャンの順序に従って復号化を実行し(601)、復号化済みの参照画素と予測差分とを用いて、復号化画像の画素値を算出する。すなわち、予測方向に沿って予測差分を参照画素と足し合わせることによって復号化画像を取得する。
【００２４】
例えば(602)では、復号化対象ブロックの予測差分b’、ｃ’、ｄ’、ｅ’(それぞれ、上記図３のb、c、d、eが復号化され量子化誤差を含んだもの)に対して、それぞれ復号化済みの参照画素A’との和を計算することにより、復号化画素B’、Ｃ’、Ｄ’、Ｅ’（それぞれ、上記図３のB、C、D、Eに対する復号化画素）を取得する。
【００２５】
以上のように、Ｈ.２６４／ＡＶＣによる画面内予測符号化処理では、参照画素を1つだけ指定し、予測方向に沿った画素をすべてその値で予測する単方向による単純な方法を採用している。
【００２６】
Ｈ.２６４／ＡＶＣによる画面内予測符号化の概念図を図９に示す。ここでは、水平軸は対象ブロックにおける座標値を予測方向に沿って設定し、垂直軸はその座標における画素値（輝度値）を設定している。そのため、グラフ中の曲線は対象ブロックにおける輝度曲線を表している。すでに説明したように、Ｈ.２６４／ＡＶＣでは、画面内予測を行う際に参照できるのは対象ブロックの左側、および上側に位置するブロックに限られる。そのため、Ｈ.２６４／ＡＶＣでは、参照画素を1方向にコピーする方法を採用している。この場合、(901)のように、対象ブロックにおける輝度勾配が小さければ予測が当たりやすく予測差分は小さくなるが、(902)のように、輝度勾配が大きいと参照画素から離れるにつれて予測差分が大きくなり、符号量が増大してしまう。
【００２７】
本実施例による画面内予測符号化の概念図を図１０に示す。Ｈ.２６４／ＡＶＣによる上記の課題に対処するために、本実施例では(1001)のように対象ブロックの境界に位置する画素を新たな参照画素（参照画素2）とし、通常の参照画素(参照画素1)と組み合わせて予測する。すなわち、対象ブロックを通過する直線上に位置する２つの参照画素(参照画素1および参照画素2)を選択し、これらの参照画素が挟み込む画素の値をこれら2つの参照画素を用いた内挿予測による補間処理によって予測する。これにより、特に輝度勾配が大きなブロックに対して予測精度を高め、予測誤差を低減させることができる。
【００２８】
しかし、Ｈ.２６４／ＡＶＣのようにラスタースキャンの順序に従って符号化を行った場合、多くの場合において対象ブロックの境界に位置する2つの参照画素のうち一方（参照画素1）の値しか得ることができない。本願に係る方式では、上記参照画素のうち他方（参照画素2）の値を、符号化済みの周辺ブロックに含まれる画素値から予測する。
【００２９】
すなわち、本実施例では、参照画素1および参照画素2を符号化済みの画素から選択できる場合は符号化済みの画素から選択する。ここで、参照画素2が符号化済みの画素から選択できない場合は、符号化済みの画素から参照画素2を先に予測することにより、図１０に示すような2つの参照画素を用いた内挿予測による補間処理によって予測する。
【００３０】
これにより、2つの参照画素のうち一方の画素が符号化済みの画素ではない場合でも、輝度勾配が大きなブロックに対して予測精度を高め、予測誤差を低減させることができる。
【００３１】
図４は本実施例による画面内予測符号化処理の動作例について概念的に示したものである。この場合も符号化対象画像に対してラスタースキャンの順序に従って符号化を行い、対象ブロックの左、左上、上、右上に隣接する符号化済みのブロックを参照して予測を行う。(401)は、垂直方向による画面内予測符号化手順を表している。ここでは、「ステップ1：対象ブロックの境界に位置する画素（例えば(1001)における参照画素2）の予測と予測差分の計算」、および「ステップ2：対象ブロックの両端に位置する参照画素を利用した双方向予測」の2ステップによる処理によって予測を実行する。
【００３２】
ステップ１では、双方向予測に利用する２つの参照画素を選択する。ここで、参照画素を符号化済みの画素から選択できない場合は、符号化済みの周辺ブロックから予測する。例えば(402)では、対象ブロックの最も下の行に位置する画素の値E、F、G、Hを、対象ブロックの左に隣接するブロックの同じ行に位置する4つの復号化画素A’、Ｂ’、Ｃ’、Ｄ’の平均値Zによって予測している。また同時に、これら4つの画素とZの差分値を予測差分e、f、g、hとして符号化する。
【００３３】
続いてステップ2では、対象ブロックに含まれる他の画素値を、ステップ1にて選択または予測した２つの参照画素を用いた内挿予測による補間処理を行うことによって予測する。例えば(403)では、対象ブロック中の同じ列に属する画素J、K、Lを参照画素I’と、ステップ1にて予測したZの値を用いた線形補間によって予測し、予測差分j、k、lを算出する手順について述べており、さらにこれらの予測差分が符号化されることになる。
【００３４】
図７は本実施例による画面内予測復号化処理の動作例について概念的に示したものである。復号化には上記図４の手順の逆を行えばよく(701)、まず対象ブロックの左側に隣接するブロックを用いて参照画素Zを計算し(702)、対象ブロックの境界に位置する画素の予測差分e’、ｆ’、ｇ’、ｈ’に加算することによって復号化画像E’、Ｆ’、Ｇ’、Ｈ’を取得する。続いて、対象ブロックの上側に隣接するブロックに含まれる参照画素I’と、上記の処理によって予測した値Zの内挿予測による線形補間によって対象ブロック中の各画素を予測し(703)、予測差分j’、ｋ’、ｌ’に加算することによって復号化画素J’、Ｋ’、Ｌ’を取得する。
【００３５】
図４によって示した画面内予測では、対象画素の左側および上側に隣接するブロックを利用して参照画素の1つを予測するため、画面端に位置するブロックに対して本願に係る方式を適用することができない。そのため、画面端に位置するブロックに対しては、例えば図５の手順に従って画面内予測符号化を行うことによって、本実施例による双方向予測を適用することができる(501)。すなわち、ステップ1（対象ブロックの境界に位置する画素の予測と予測差分の計算）では、対象ブロックの上側に隣接するブロックの両端に位置する2つの画素の復号値A’、Ｄ’を用いた外挿予測を行うことによって、対象ブロックにおける同じ列の境界に位置する画素Hを予測するとともに、画素値Hと予測値Zとの差分hを予測差分として符号化する(502)。
【００３６】
続いてステップ2（対象ブロックの両端に位置する参照画素を利用した双方向予測）では、対象ブロック中の同じ列に属する画素E、F、Gを、参照画素D’と上記ステップ1にて予測したZを用いた内挿予測による線形補間を行うことによって予測し、予測差分e、f、gを符号化する(503)。すなわち、画面端に位置するブロックに対する画面内予測処理は、それ以外の場合(図４)と比べてステップ1による手順が異なることになる。
【００３７】
画面端に位置するブロックに対して上記の手順に従うことにより、対象ブロックの左側に隣接するブロックが利用できない場合でも本実施例による双方向予測を行うことが可能になる。この場合、図８の手順に従うことによって、復号化を行うことができる。すなわち、復号化には上記図５の手順の逆を行えばよく(801)、まず対象ブロックの上側に隣接するブロックを用いて参照画素Zを計算し(802)、対象ブロックの境界に位置する画素の予測差分h’に加算することによって復号化画像Hを取得する。続いて、対象ブロックの上側に隣接するブロックに含まれる参照画素D’と、上記の処理によって予測した値Zを用いた線形補間によって対象ブロック中の各画素を予測し(903)、予測差分e’、ｆ’、ｇ’に加算することによって復号化画素E’、Ｆ’、Ｇ’を取得する。
【００３８】
本願に係る方式でも予測方法を複数の候補の中から選択可能であり、例えば図１１に示すＨ.２６４／ＡＶＣで使われている9つの予測方法(1101)のうち、DC予測を除く8種類の予測方向の中から1つを利用することができる。例えば水平方向（予測方向1）に予測する場合(1102)、画面端以外のブロックに対して対象ブロックの最も右の列に属する画素を上側に隣接するブロックを用いて予測し、これを参照画素の1つとして双方向予測を行う。
【００３９】
また、予測方向4のように斜めの方向に沿って予測を行う場合(1103)は、対象ブロックの最も右の列に属する画素と、最も下の行に属する画素をそれぞれ上側と左側に隣接するブロックから予測することによって、双方向予測を実現する。一方、画面端に位置するブロックに対しては、例えば水平方向（予測方向1）に予測する場合(1104)、左側に隣接するブロックを利用して対象ブロックの最も左の列に属する画素値を予測することによって双方向予測を実現する。また、予測方向7の場合（1105）は、上側に隣接するブロックを利用して対象ブロックの最も下の行に属する画素値を予測することによって双方向予測を実現する。この場合、(1104)と(1105)の手順に従うことによって、それぞれ上側、左側に隣接するブロックが利用できなくても本実施例による双方向予測を実現することができる。
【００４０】
本実施例による予測符号化技術は従来技術と組み合わせて利用することにより、画像の性質に応じて高い圧縮率を実現することができると考えられる。例えば、本技術と従来技術をブロック単位で使い分けて予測符号化することにより、画像の性質に適した符号化が可能になる。従来技術としては、例えば図３(図６)に示すＨ.２６４／ＡＶＣによる画面内予測符号化方式(復号化方式)や、Ｈ.２６４／ＡＶＣでも利用されている画面間予測方式(符号化対象画像とは異なる画像を参照する予測方式)などを利用すると効果的である。
【００４１】
図１は本実施例による動画像符号化装置の一実施例を示したものである。動画像符号化装置は、入力された原画像(101)を保持する入力画像メモリ(102)と、入力画像を小領域に分割するブロック分割部(103)と、ブロック単位で動きを検出する動き探索部(104)と、同じくブロック単位で例えばＨ.２６４／ＡＶＣによる画面内予測(図３に記載)など本実施例以外の手順にて画面内予測処理を行う旧画面内予測部(105)と、ブロック単位で本実施例による画面内予測(図４および図５に記載)を行う新画面内予測部(106)と、動き探索部(104)にて検出された動き量を基にブロック単位で画面間予測を行う画面間予測部(107)と、画像の性質に合った予測符号化手段(予測方法およびブロックサイズ)を決定するモード選択部(108)と、予測差分を生成するための減算部(109)と、予測差分に対して符号化を行う周波数変換部(110)および量子化部(111)と、記号の発生確率に応じた符号化を行うための可変長符号化部(112)と、一度符号化した予測差分を復号化するための逆量子化処理部(113)および逆周波数変換部(114)と、復号化された予測差分を用いて復号化画像を生成するための加算部(115)と、復号化画像を保持して後の予測に活用するための参照画像メモリ(116)を有する。
【００４２】
入力画像メモリ(102)は原画像(101)の中から一枚の画像を符号化対象画像として保持し、これをブロック分割部(103)にて細かなブロックに分割し、動き探索部(104)、旧画面内予測部(105)および新画面内予測部(106)に渡す。動き探索部(104)では、参照画像メモリ(116)に格納されている復号化済み画像を用いて該当ブロックの動き量を計算し、動きベクトルとして画面間予測部(107)に渡す。旧画面内予測部(105)、新画面内予測部(106)および画面間予測部(107)では画面内予測処理および画面間予測処理をいくつかの大きさのブロック単位で実行し、モード選択部(108)にて最適な予測符号化手段を選ぶ。続いて減算部(109)では最適な予測符号化手段による予測差分を生成し、周波数変換部(110)に渡す。周波数変換部(110)および量子化処理部(111)では、送られてきた予測差分に対して指定された大きさのブロック単位でそれぞれDCT(Discrete Cosine Transformation：離散コサイン変換)などの周波数変換および量子化処理を行い、可変長符号化処理部(112)および逆量子化処理部(113)に渡す。さらに可変長符号化処理部(112)では、周波数変換係数によって表される予測差分情報を、例えば画面内予測符号化における予測方向や画面間予測符号化における動きベクトルなど、予測復号化に必要な情報とともに、記号の発生確率に基づいて可変長符号化を行って符号化ストリームを生成する。
【００４３】
また、逆量子化処理部(113)および逆周波数変換部(114)では、量子化後の周波数変換係数に対して、それぞれ逆量子化およびIDCT(Inverse DCT：逆DCT)などの逆周波数変換を施し、予測差分を取得して加算部(115)に送る。続いて加算部(115)により復号化画像を生成して参照画像メモリ(116)に格納する。
【００４４】
図２は本実施例による動画像復号化装置の一実施例を示したものである。動画像復号化装置は、例えば図１に示す動画像符号化装置によって生成された符号化ストリーム(201)に対して可変長符号化の逆の手順を踏む可変長復号化部(202)と、予測差分を復号化するための逆量子化処理部(203)および逆周波数変換部(204)と、例えばＨ.２６４／ＡＶＣによる画面内予測(図６に記載)など、本実施例以外の手順にて画面内予測処理を行う旧画面内予測部(205)と、本実施例による画面内予測(図７および図８に記載)を行う新画面内予測部(206)と、画面内予測を行う画面間予測部(207)と、復号化画像を取得するための加算部(208)と、復号化画像を一時的に記憶しておくための参照画像メモリ(209)を有する。
【００４５】
可変長復号化部(202)では、符号化ストリーム(201)を可変長復号化し、予測差分の周波数変換係数成分と、予測方向や動きベクトルなどの予測処理に必要な情報を取得する。前者の予測差分情報に対しては逆量子化処理部(203)に、後者の予測処理に必要な情報に対しては、予測手段に応じて旧画面内予測部(205)、新画面内予測部(206)、または画面間予測部(207)に送られる。続いて、逆量子化処理部(203)および逆周波数変換部(204)では、予測差分情報に対してそれぞれ逆量子化と逆周波数変換を施して復号化を行う。一方で旧画面内予測部(205)、新画面内予測部(206)または画面間予測部(206)では、可変長復号化部(202)から送られてきた情報を基に参照画像メモリ(209)を参照して予測処理を実行し、加算部(208)にて復号化画像を生成するとともに、復号化画像を参照画像メモリ(209)に格納する。
【００４６】
図１２は、図１に示す動画像符号化装置の実施例における1フレームの符号化処理手順について示している。まず、符号化対象となるフレーム内に存在するすべてのブロックに対して(1201)、以下の処理を行う。すなわち、該当ブロックに対して一度すべての符号化モード(予測方法とブロックサイズの組み合わせ)に対して予測符号化処理を行って予測差分を計算し、その中から最も符号化効率の高いものを選択する。予測処理方法としては、本実施例による方法（以下、「新画面内予測符号化処理」(1205)）の他に、例えばＨ.２６４／ＡＶＣに採用されている画面内予測方法(以下、「旧画面内予測符号化処理」(1206))や画面間予測符号化処理(1207)を実行し、その中から最適なものを選ぶことによって、画像の性質に応じて効率良く符号化できる。上記多数の符号化モードの中から最も符号化効率の高いものを選択する際には(1208)、例えば画質歪みと符号量の関係から最適な符号化モードを決定するRD-Optimization方式を利用することによって、効率良く符号化できる。RD-Optimization方式については、例えば、以下の参考文献１に記載の方式を用いればよい。
〔参考文献１〕G. Sullivan and T.Wiegand : “Rate-Distortion Optimization for Vid
eo Compression”， IEEE Signal Processing Magazine， vol.15， no.6， pp.74-90， 1998. 
続いて、選ばれた符号化モードで生成された予測差分に対して周波数変換(1209)と量子化処理(1210)を施し、さらに可変長符号化を行うことによって符号化ストリームを生成する(1211)。一方、量子化済みの周波数変換係数に対しては逆量子化処理(1212)と逆周波数変換処理(1213)を施して予測差分を復号化し、復号化画像を生成して参照画像メモリに格納する(1214)。以上の処理をすべてのブロックに対して完了すれば、画像1フレーム分の符号化は終了する(1215)。
【００４７】
図１３は、上記新画面内予測符号化処理(1205)の詳細な処理手順について示している。ここでは、例えば(1101)のように、あらかじめ定義されたすべての予測方向に対し(1301)、予測方向に沿ったすべてのラインに対して以下の処理を行う(1302)。すなわち、対象ブロックが画面端に位置するなら(1303)、図５ステップ1の手順に従って境界画素の予測と予測差分の計算を行う(1304)。一方、対象ブロックが画面端に位置していないなら、図４ステップ1の手順に従って境界画素の予測と予測差分の計算を行う(1305)。続いて、周辺ブロックに含まれる参照画素と上記の手順にて予測した境界画素の値を用いて、図４および図５のステップ2の手順に従って双方向予測を行う(1305)。以上の処理をすべての予測方向およびすべてのラインに対して完了すれば、ブロック1つ分に対する予測符号化処理を終了する(1307)。
【００４８】
図１４は、図２に示す動画像復号化装置の実施例における1フレームの復号化処理手順について示している。まず、1フレーム内のすべてのブロックに対して、以下の処理を行う(1401)。すなわち、入力ストリームに対して可変長復号化処理を施し(1402)、逆量子化処理(1403)および逆周波数変換処理(1404)を施して予測差分を復号化する。続いて、対象ブロックがどの方法によって予測符号化されているかに応じて、新画面内予測復号化処理(1407)、従来型画面内予測復号化処理(1408)、もしくは画面間予測復号化処理(1409)を行い、復号化画像を取得して参照画像メモリに格納する。以上の処理をフレーム中のすべてのブロックに対して完了すれば、画像1フレーム分の復号化が終了する(1410)。
【００４９】
図１５は、上記新画面内予測復号化処理(1407)の詳細な処理手順について示している。ここでは、予測方向に沿ったすべてのラインに対して(1501)、以下の処理を行う。すなわち、対象ブロックが画面端に位置するなら(1402)、図８ステップ1の手順に従って境界画素の予測と予測差分の計算を行う(1403)。一方、対象ブロックが画面端に位置していないなら、図７ステップ1の手順に従って境界画素の予測と予測差分の計算を行う(1404)。続いて、周辺ブロックに含まれる参照画素と上記の手順にて予測した境界画素の値を用いて、図７および図８のステップ2の手順に従って双方向予測を行う(1405)。以上の処理をすべてのラインに対して完了すれば、ブロック1つ分に対する予測復号化処理を終了する(1406)。
【００５０】
実施例では周波数変換の一例としてDCTを挙げているが、DST(Discrete Sine Transformation：離散サイン変換)、WT(Wavelet Transformation：ウェーブレット変換)、DFT(Discrete Fourier Transformation：離散フーリエ変換)、KLT(Karhunen-Loeve Transformation：カルーネン-レーブ変換)など、画素間相関除去に利用する直交変換ならどんなものでも構わないし、特に周波数変換を施さずに予測差分そのものに対して符号化を行っても構わない。さらに、可変長符号化も特に行わなくて良い。また、実施例では特に4×4画素サイズのブロック単位で輝度成分の予測を行う場合について記載しているが、例えば8×8画素サイズや16×16画素サイズなど、どのようなサイズのブロックに対して本実施例を適用しても良いし、輝度成分以外にも、例えば色差成分に対する予測に本実施例を適用しても良い。また、実施例ではＨ.２６４／ＡＶＣで定められている8方向に沿って予測を行っているが、方向数を増やしても減らしても構わない。
【００５１】
続いて、本実施例における予測式の一例について記載する。ここでは、4×4画素サイズのブロック単位で輝度成分の予測を行う場合について記載する。まず図１６(1601)のように、対象ブロックの最も左上に位置する画素の座標を(0， 0)とし、水平右側に向かってx軸を、垂直下側に向かってy軸を設定する。そして、対象ブロック中の座標(x， y)における輝度値をp[x， ｙ]、予測値をpred4x4[x， y]と表す。また、双方向予測に利用する２つの参照画素をそれぞれRef1、Ref2とする。なお、関数Min(a， b)は、２つの整数a、bのうちで小さいほうを返し、関数ROUND(a)は、実数aの小数点第1位を四捨五入した整数値を返す。
【００５２】
以下では、9種類の予測方法(1602)〜(1610)のうち、DC予測(1604)を除く8種類の方向に沿った予測を行う場合について、それぞれ予測値pred4x4の計算式について記載する。
【００５３】
予測方向0(Vertical)(1602)の場合、以下の数式１によって予測を行う。
（数１）
・左側および上側に隣接するブロックが利用できる場合
Ref1 = p[x， -1]
Ref2 = (p[-1， 3] + p[-2， 3] + p[-3， 3] + p[-4， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2  Ref1) * (y+1) / 4)
・上側に隣接するブロックが利用でき、左側に隣接するブロックが利用できない場合
Ref1 = p[x， -1]
Ref2 = 2 * p[x， -1] - p[x， -4]
pred4x4[x， y] = ROUND(Ref1 + (Ref2  Ref1) * (y+1) / 4)
予測方向1(Horizontal)(1603)の場合、以下の数式２によって予測を行う。
（数２）
・左側および上側に隣接するブロックが利用できる場合
Ref1 = p[-1， y]
Ref2 = (p[3， -1] + p[3， -2] + p[3， -3] + p[3， -4] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2  Ref1) * (x+1) / 4)
・左側に隣接するブロックが利用でき、上側に隣接するブロックが利用できない場合
Ref1 = p[-1， y]
Ref2 = 2 * p[-1， y] - p[-4， y]
pred4x4[x， y] = ROUND(Ref1 + (Ref2  Ref1) * (x+1) / 4)
予測方向3(Diagonal Down Left)(1605)の場合、以下の数式３によって予測を行う。
（数３）
・左側および上側に隣接するブロックが利用できる場合
・x=y=3の場合
Ref1 = (p[6， -1] + 3 * p[7， -1] + 2) >> 2
Ref2 = (p[-1， 2] + 3 * p[ -1， 3 ] + 2) >> 2
pred4x4[x， y] = ROUND( (Ref1 + Ref2) / 2)
・それ以外の場合（xが3ではなく、かつyが3ではない場合）
Ref1 = ( p[x+y， -1] + 2 * p[x+y+1， -1] + p[x+y+2， -1] + 2 ) >> 2
Ref2 = ( p[-1， Min(3， x+y)] + 2 * p[-1， Min(3， x+y+1)] + p[-1， Min(3， x+y+2)] + 2 ) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2  Ref1) * (y+1) / (x+y+2))
・上側に隣接するブロックが利用でき、左側に隣接するブロックが利用できない場合
・x=y=3の場合
Ref1 = (p[6， -1] + 3 * p[7， -1] + 2) >> 2
Ref2 = (p[3， -1] + p[3， -2] + p[3， -3] + p[3， -4] + 2) >> 2
pred4x4[x， y] = ROUND( (Ref1 + Ref2) / 2)
・それ以外の場合（xが3ではなく、かつyが3ではない場合）
Ref1 = ( p[x+y， -1] + 2 * p[x+y+1， -1] + p[x+y+2， -1] + 2 ) >> 2
Ref2 = (p[3， -1] + p[3， -2] + p[3， -3] + p[3， -4] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2  Ref1) * (y+1) / (x+y+2))
予測方向4(Diagonal Down Right)(1606)の場合、以下の数式４によって予測を行う。
（数４）
・左側および上側に隣接するブロックが利用できる場合
・x>yの場合
Ref1 = (p[x-y-2， -1] + 2 * p[x-y-1， -1] + p[x-y， -1] + 2 ) >> 2
Ref2 = (p[3， -1] + p[3， -2] + p[3， -3] + p[3， -4] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * x / 3)
・x<yの場合
Ref1 = (p[-1， y-x-2] + 2 * p[-1， y-x-1] + p[-1， y-x] + 2 ) >> 2
Ref2 = (p[-1， 3] + p[-2， 3] + p[-3， 3] + p[-4， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * y / 3)
・x=yの場合
Ref1 = (p[0， -1] + 2 * p[-1， -1] + p[-1， 0] + 2) >> 2
Ref2 = (p[3， -1] + p[3， -2] + p[-1， 3] + p[-2， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (x+1) / 4)
予測方向5(1607)(Vertical Right)の場合、以下の数式５によって予測を行う。
（数５）
zVR = 2 * x  y  としたとき、
・左側および上側に隣接するブロックが利用できる場合
・zVR = 0， 2， 4， 6の場合
Ref1 = (p[x-(y>>1)-1， -1] + p[x-(y>>1)， -1] + 1) >> 1
Ref2 = (p[-1， 3] + p[-2， 3] + p[-3， 3] + p[-4， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (y+1) / 4)
・zVR = 1， 3， 5の場合
Ref1 = (p[x-(y>>1)-2， -1] + 2*p[x-(y>>1)-1， -1] + p[x-(y>>1)， -1] + 2) 
>> 2
Ref2 = (p[-1， 3] + p[-2， 3] + p[-3， 3] + p[-4， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (y+1) / 4)
・zVR = -1の場合
Ref1 = (p[-1， 0] + 2*p[-1， -1] + p[0， -1] + 2) >> 2
Ref2 = (p[-1， 3] + p[-2， 3] + p[-3， 3] + p[-4， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (y+1) / 4)
・それ以外（zVR = -2， -3の場合）
Ref1 = (-1， y-1] + 2*p[-1， y-2] + p[-1， y-3] + 2) >> 2
Ref2 = (p[-1， 3] + p[-2， 3] + p[-3， 3] + p[-4， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (y+1) / 4)
予測方向6(Horizontal Down)(1608)の場合、以下の数式６によって予測を行う。
（数６）
zHD = 2 * y  x  としたとき、
・左側および上側に隣接するブロックが利用できる場合
・zHD = 0， 2， 4， 6の場合
Ref1 = (p[-1， y-(x>>1)-1] + p[-1， y-(x>>1)] + 1) >> 1
Ref2 = (p[3， -1] + p[3， -2] + p[-1， 3] + p[-2， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (x+1) / 4)
・zHD = 1， 3， 5の場合
Ref1 = (p[-1， y-(x>>1)-2] + 2*p[-1， y-(x>>1)-1] + p[-1， y-(x>>1)] + 2) >> 2
Ref2 = (p[3， -1] + p[3， -2] + p[-1， 3] + p[-2， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (x+1) / 4)
・zHD = -1の場合
Ref1 = (p[-1， 0] + 2*p[-1， -1] + p[0， -1] + 2) >> 2
Ref2 = (p[3， -1] + p[3， -2] + p[-1， 3] + p[-2， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (x+1) / 4)
・それ以外（zHD = -2， -3の場合）
Ref1 = (p[x-1， -1] + 2*p[x-2， -1] + p[x-3， -1] + 2) >> 2
Ref2 = (p[3， -1] + p[3， -2] + p[-1， 3] + p[-2， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (x+1) / 4)
予測方向7(Vertical Left)(1609)の場合、以下の数式７によって予測を行う。
（数７）
・左側および上側に隣接するブロックが利用できる場合
・y = 0， 2の場合
Ref1 = (p[x+(y>>1)， -1] + p[x+(y>>1)+1， -1] + 1) >> 1
Ref2 = (p[-1， 3] + p[-2， 3] + p[-3， 3] + p[-4， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (y+1) / (x+y+2))
・それ以外（y = 1， 3の場合）
Ref1 = (p[x+(y>>1)， -1] + 2 * p[x+(y>>1)+1， -1] + p[x+(y>>1)+2， -1]+ 2) >> 2
Ref2 = (p[-1， 3] + p[-2， 3] + p[-3， 3] + p[-4， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (y+1) / (x+y+2))
・上側に隣接するブロックが利用でき、左側に隣接するブロックが利用できない場合
・y = 0， 2の場合
Ref1 = (p[x+(y>>1)， -1] + p[x+(y>>1)+1， -1] + 1) >> 1
Ref2 = 2 * p[x， -1] - p[x， -4]
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (y+1) / (x+y+2))
・それ以外（y = 1， 3の場合）
Ref1 = (p[x+(y>>1)， -1] + 2 * p[x+(y>>1)+1， -1] + p[x+(y>>1)+2， -1]+ 2) >> 2
Ref2 = 2 * p[x， -1] - p[x， -4]
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (y+1) / (x+y+2))
予測方向8(Horizontal Up)(1610)の場合、以下の数式８によって予測を行う。
（数８）
zHU = x + 2 * y  としたとき、
・左側および上側に隣接するブロックが利用できる場合
・zHU = 0， 2， 4の場合
Ref1 = (p[-1， y+(x>>1)] + p[-1， y+(x>>1)+1] + 1) >> 1
Ref2 = (p[3， -1] + p[3， -2] + p[-1， 3] + p[-2， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (x+1) / 4)
・zHU = 1， 3の場合
Ref1 = (p[-1， y+(x>>1)] + 2*p[-1， y+(x>>1)+1] + p[-1， y+(x>>1)+2] + 2) >> 2
Ref2 = (p[3， -1] + p[3， -2] + p[-1， 3] + p[-2， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (x+1) / 4)
・zHU = 5の場合
Ref1 = (p[-1， 2] + 3*p[-1， 3] + 2) >> 2
Ref2 = (p[3， -1] + p[3， -2] + p[-1， 3] + p[-2， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (x+1) / 4)
・それ以外（zHU > 5の場合）
Ref1 = p[-1， 3]
Ref2 = (p[3， -1] + p[3， -2] + p[-1， 3] + p[-2， 3] + 2) >> 2
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (x+1) / 4)
・左側に隣接するブロックが利用でき、上側に隣接するブロックが利用できない場合
・zHU = 0， 2， 4の場合
Ref1 = (p[-1， y+(x>>1)] + p[-1， y+(x>>1)+1] + 1) >> 1
Ref2 = 2 * p[-1， y] - p[-4， y]
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (x+1) / 4)
・zHU = 1， 3の場合
Ref1 = (p[-1， y+(x>>1)] + 2*p[-1， y+(x>>1)+1] + p[-1， y+(x>>1)+2] + 2) >> 2
Ref2 = 2 * p[-1， y] - p[-4， y]
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (x+1) / 4)
・zHU = 5の場合
Ref1 = (p[-1， 2] + 3*p[-1， 3] + 2) >> 2
Ref2 = 2 * p[-1， y] - p[-4， y]
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (x+1) / 4)
・それ以外（zHU > 5の場合）
Ref1 = p[-1， 3]
Ref2 = 2 * p[-1， y] - p[-4， y]
pred4x4[x， y] = ROUND(Ref1 + (Ref2 - Ref1) * (x+1) / 4)
上記の実施例では、２つの参照画素のうち符号化済み（復号化済み）の画素から選択できないものの予測（例えば図４のステップ1における境界画素E、F、G、Hの予測）を、主に符号化済み隣接ブロックの同じ行(もしくは列)に属する画素の平均値によって行っているが、特に平均値でなくても、例えば最小値や最大値、あるいは中間値などを用いても良いし、これらの画素を用いた外挿予測や内挿予測など、どんな計算式を用いても良い。特に内挿予測を行う場合には線形補間、非線形補間などどのような方法を用いても良いし、外挿予測を行う場合には、例えば最小二乗法を用いた直線・放物線近似、ニュートン補間、ラグランジュ補間など、どのようなモデルを利用して予測を行っても構わない。
【００５４】
図１７は、図４のステップ１(402)において、外挿予測によって境界画素E、F、G、Hを予測した場合の概念図を示している。ここでは、水平軸に座標を、垂直軸に輝度値を設定している。(1701)では直線近似を行う場合について示しており、左側に隣接するブロックの最も下の行に位置する復号化画素A’、Ｂ’、Ｃ’、Ｄ’を用いて最小二乗法などを利用することによって予測直線を算出し、その直線上において境界画素E、F、G、Hの座標に対応する点を予測値とする。また、(1702)では、同じ外挿予測を放物線近似、ニュートン補間、ラグランジュ補間など曲線近似による方法によって行う場合について示しており、この場合復号化画素A’、Ｂ’、Ｃ’、Ｄ’を用いて算出した予測曲線に基づいて境界画素E、F、G、Hを予測する。上記の処理によって予測された境界画素は、例えば図４におけるステップ2の双方向予測を行う際に、参照画素の1つとして利用される。
【００５５】
また、参照画素の予測に利用する情報としては、隣接ブロックの情報であれば特に同じ行（もしくは列）に属する画素に限定しない。さらに、実施例では双方向予測（例えば図４のステップ2における画素J、K、Lの予測）を、２つの参照画素を用いた線形補間によって行っているが、対象画素を挟む２つの参照画素を利用していればその補間方法は特に問わない。例えば、対象画素の予測値を２つの参照画素の任意の直線式によって表しても良い。この場合、２つの参照画素をRef1、Ref2とした場合、以下の数式９によって予測値pred4x4が計算される。
（数９）
pred4x4[x， y] = a * Ref1 + b * Ref2
ここで、a、bはそれぞれ実数の定数を表し、これらの値はあらかじめ一定の値に定めておいても良いし、ブロック単位で指定しても良い。また、図５（図８）に示す画面端に対する画面内予測符号化方式（復号化方式）は、特に画面端のブロックでなくても適用可能である。すなわち、この方式を画面端以外のブロックに適用しても構わない。
【００５６】
図１８は、本実施例を利用した場合に生成される符号化ストリームのうち、ブロック単位で設定されるべき符号化パラメータに関する部分の構成例について示している。ここではＨ.２６４／ＡＶＣにおける処理単位と同様に、固定長サイズのマクロブロック単位で符号化モードを決定する場合について説明している。マクロブロックはさらに細かなブロックに分割することができ、分割されたブロック単位で予測符号化が行われるものとする。この時、マクロブロックごとにその座標を特定するためのマクロブロック番号(1801)と、予測方法とブロックサイズを表す符号化モード番号(1802)、そして例えば画面間予測の際の動きベクトルや画面内予測の際の予測方向など、予測を行う際に必要となる情報(1803)、そして予測差分情報(1804)が可変長符号化されて格納される。特に符号化モード番号(1802)に対しては、すべての予測手段に対して連番で割り当てても良いし、予測手段ごとに異なるビットで表しても良い。
【００５７】
図１９は、図１８にて示したブロック単位で設定されるべき符号化パラメータに関する部分に対する別の構成例について示している。この例では、マクロブロック番号(1901)と、予測方法(1902)に対して、本実施例による隣接画素を利用した予測を行うか否かを表すフラグ(1903)を付加し、さらに予測に必要な情報(1904)と予測差分情報(1905)を格納する。
【符号の説明】
【００５８】
１０１…原画像、１０２…原画像メモリ、１０３…ブロック分割部、１０４…動き探索部、１０５…旧画面間予測部、１０６…新画面内予測部、１０７…画面間予測部、１０８…モード選択部、１０９…減算部、１１０…周波数変換部、１１１…量子化処理部、１１２…可変長符号化部、１１３…逆量子化処理部、１１４…逆周波数変換部、１１５…加算部、１１６…参照画像メモリ、２０１…符号化ストリーム、２０２…可変長復号化部、２０３…逆量子化処理部、２０４…逆周波数変換部、２０５…旧画面内予測部、２０６…新画面内予測部、２０７…画面間予測部、２０８…加算部、２０９…参照画像メモリ
【図１】
0005887013.tif 000002
【図２】
0005887013.tif 000003
【図３】
0005887013.tif 000004
【図４】
0005887013.tif 000005
【図５】
0005887013.tif 000006
【図６】
0005887013.tif 000007
【図７】
0005887013.tif 000008
【図８】
0005887013.tif 000009
【図９】
0005887013.tif 000010
【図１０】
0005887013.tif 000011
【図１１】
0005887013.tif 000012
【図１２】
0005887013.tif 000013
【図１３】
0005887013.tif 000014
【図１４】
0005887013.tif 000015
【図１５】
0005887013.tif 000016
【図１６】
0005887013.tif 000017
【図１７】
0005887013.tif 000018
【図１８】
0005887013.tif 000019
【図１９】
0005887013.tif 000020