以下、図を参照して本発明の実施の形態について説明する。
[画像符号化装置の構成例]
図2は、本発明を適用した画像処理装置としての画像符号化装置の一実施の形態の構成を表している。
この画像符号化装置51は、例えば、H.264及びMPEG-4 Part10(Advanced Video Coding)(以下H.264/AVCと記す)方式で画像を圧縮符号化する。
図2の例において、画像符号化装置51は、A/D変換部61、画面並べ替えバッファ62、演算部63、直交変換部64、量子化部65、可逆符号化部66、蓄積バッファ67、逆量子化部68、逆直交変換部69、演算部70、デブロックフィルタ71、フレームメモリ72、スイッチ73、イントラ予測部74、隣接画素内挿部75、動き予測・補償部76、予測画像選択部77、およびレート制御部78により構成されている。
A/D変換部61は、入力された画像をA/D変換し、画面並べ替えバッファ62に出力し、記憶させる。画面並べ替えバッファ62は、記憶した表示の順番のフレームの画像を、GOP(Group of Picture)に応じて、符号化のためのフレームの順番に並べ替える。
演算部63は、画面並べ替えバッファ62から読み出された画像から、予測画像選択部77により選択されたイントラ予測部74からの予測画像または動き予測・補償部76からの予測画像を減算し、その差分情報を直交変換部64に出力する。直交変換部64は、演算部63からの差分情報に対して、離散コサイン変換、カルーネン・レーベ変換等の直交変換を施し、その変換係数を出力する。量子化部65は直交変換部64が出力する変換係数を量子化する。
量子化部65の出力となる、量子化された変換係数は、可逆符号化部66に入力され、ここで可変長符号化、算術符号化等の可逆符号化が施され、圧縮される。
可逆符号化部66は、イントラ予測を示す情報などをイントラ予測部74から取得し、インター予測モードを示す情報などを動き予測・補償部76から取得する。なお、イントラ予測を示す情報は、以下、イントラ予測モード情報とも称する。また、インター予測を示す情報モードを示す情報は、以下、インター予測モード情報とも称する。
可逆符号化部66は、量子化された変換係数を符号化するとともに、イントラ予測を示す情報やインター予測モードを示す情報などを符号化し、圧縮画像におけるヘッダ情報の一部とする。可逆符号化部66は、符号化したデータを蓄積バッファ67に供給して蓄積させる。
例えば、可逆符号化部66においては、可変長符号化または算術符号化等の可逆符号化処理が行われる。可変長符号化としては、H.264/AVC方式で定められているCAVLC(Context-Adaptive Variable Length Coding)などがあげられる。算術符号化としては、CABAC(Context-Adaptive Binary Arithmetic Coding)などがあげられる。
蓄積バッファ67は、可逆符号化部66から供給されたデータを、H.264/AVC方式で符号化された圧縮画像として、例えば、後段の図示せぬ記録装置や伝送路などに出力する。
また、量子化部65より出力された、量子化された変換係数は、逆量子化部68にも入力され、逆量子化された後、さらに逆直交変換部69において逆直交変換される。逆直交変換された出力は演算部70により予測画像選択部77から供給される予測画像と加算されて、局部的に復号された画像となる。デブロックフィルタ71は、復号された画像のブロック歪を除去した後、フレームメモリ72に供給し、蓄積させる。フレームメモリ72には、デブロックフィルタ71によりデブロックフィルタ処理される前の画像も供給され、蓄積される。
スイッチ73はフレームメモリ72に蓄積された参照画像を動き予測・補償部76またはイントラ予測部74に出力する。
この画像符号化装置51においては、例えば、画面並べ替えバッファ62からのIピクチャ、Bピクチャ、およびPピクチャが、イントラ予測(イントラ処理とも称する)する画像として、イントラ予測部74に供給される。また、画面並べ替えバッファ62から読み出されたBピクチャおよびPピクチャが、インター予測(インター処理とも称する)する画像として、動き予測・補償部76に供給される。
イントラ予測部74は、画面並べ替えバッファ62から読み出されたイントラ予測する画像とフレームメモリ72から供給された参照画像に基づいて、候補となる全てのイントラ予測モードのイントラ予測処理を行い、予測画像を生成する。
イントラ予測部74は、予測画像を生成したイントラ予測モードに対してコスト関数値を算出し、算出したコスト関数値が最小値を与えるイントラ予測モードを、最適イントラ予測モードとして選択する。イントラ予測部74は、イントラ予測する対象ブロックの隣接画素と、最適イントラ予測モードの情報を、隣接画素内挿部75に供給する。
隣接画素内挿部75は、イントラ予測部74からの最適イントラ予測モードに応じたシフト方向に、候補となるシフト量で、隣接画素の位相をシフトさせる。実際には、隣接画素内挿部75は、最適イントラ予測モードに応じたシフト方向について、隣接画素に対して、6タップのFIRフィルタをかけ、線形内挿することで、隣接画素の位相を、小数画素精度にシフトさせる。したがって、以下、説明の便宜上、6タップのFIRフィルタおよび線形内挿により位相がシフトされた隣接画素を、内挿された隣接画素または位相がシフトされた隣接画素と適宜説明するが、それらは同意である。
隣接画素内挿部75は、位相がシフトされた隣接画素を、イントラ予測部74に供給する。
イントラ予測部74は、隣接画像バッファ81からの隣接画素の画素値および隣接画素内挿部75により位相がシフトされた隣接画素の画素値を用いて、隣接画素に対して位相の最適シフト量を決定する。また、イントラ予測部74は、決定した最適シフト量で位相がシフトされた隣接画素の画素値を用いて、対象ブロックの予測画像を生成し、生成された予測画像と、対応する最適イントラ予測モードについて算出されたコスト関数値を、予測画像選択部77に供給する。
イントラ予測部74は、予測画像選択部77により最適イントラ予測モードで生成された予測画像が選択された場合、最適イントラ予測モードを示す情報と最適シフト量の情報を、可逆符号化部66に供給する。可逆符号化部66は、イントラ予測部74から情報が送られてきた場合には、この情報を符号化し、圧縮画像におけるヘッダ情報の一部とする。
動き予測・補償部76は、候補となる全てのインター予測モードの動き予測・補償処理を行う。すなわち、動き予測・補償部76には、画面並べ替えバッファ62から読み出されたインター処理する画像と、スイッチ73を介してフレームメモリ72から参照画像が供給される。動き予測・補償部76は、インター処理する画像と参照画像に基づいて、候補となる全てのインター予測モードの動きベクトルを検出し、動きベクトルに基づいて参照画像に補償処理を施し、予測画像を生成する。
また、動き予測・補償部76は、候補となる全てのインター予測モードに対してコスト関数値を算出する。動き予測・補償部76は、算出したコスト関数値のうち、最小値を与える予測モードを、最適インター予測モードとして決定する。
動き予測・補償部76は、最適インター予測モードで生成された予測画像とそのコスト関数値を、予測画像選択部77に供給する。動き予測・補償部76は、予測画像選択部77により最適インター予測モードで生成された予測画像が選択された場合、最適インター予測モードを示す情報(インター予測モード情報)を可逆符号化部66に出力する。
なお、必要であれば、動きベクトル情報、フラグ情報、参照フレーム情報なども可逆符号化部66に出力される。可逆符号化部66は、動き予測・補償部76からの情報をやはり可変長符号化、算術符号化といった可逆符号化処理し、圧縮画像のヘッダ部に挿入する。
予測画像選択部77は、イントラ予測部74または動き予測・補償部76より出力された各コスト関数値に基づいて、最適イントラ予測モードと最適インター予測モードから、最適予測モードを決定する。そして、予測画像選択部77は、決定された最適予測モードの予測画像を選択し、演算部63,70に供給する。このとき、予測画像選択部77は、予測画像の選択情報を、イントラ予測部74または動き予測・補償部76に供給する。
レート制御部78は、蓄積バッファ67に蓄積された圧縮画像に基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部65の量子化動作のレートを制御する。
[H.264/AVC方式の説明]
図3は、H.264/AVC方式における動き予測・補償のブロックサイズの例を示す図である。H.264/AVC方式においては、ブロックサイズを可変にして、動き予測・補償が行われる。
図3の上段には、左から、16×16画素、16×8画素、8×16画素、および8×8画素のパーティションに分割された16×16画素で構成されるマクロブロックが順に示されている。また、図3の下段には、左から、8×8画素、8×4画素、4×8画素、および4×4画素のサブパーティションに分割された8×8画素のパーティションが順に示されている。
すなわち、H.264/AVC方式においては、1つのマクロブロックを、16×16画素、16×8画素、8×16画素、あるいは8×8画素のいずれかのパーティションに分割して、それぞれ独立した動きベクトル情報を持つことが可能である。また、8×8画素のパーティションに関しては、8×8画素、8×4画素、4×8画素、あるいは4×4画素のいずれかのサブパーティションに分割し、それぞれ独立した動きベクトル情報を持つことが可能である。
図4は、H.264/AVC方式における1/4画素精度の予測・補償処理を説明する図である。H.264/AVC方式においては、6タップのFIR (Finite Impulse Response Filter)フィルタを用いた1/4画素精度の予測・補償処理が行われている。
図4の例において、位置Aは、整数精度画素の位置、位置b,c,dは、1/2画素精度の位置、位置e1,e2,e3は、1/4画素精度の位置を示している。まず、以下においては、Clip()を次の式(1)のように定義する。
なお、入力画像が8ビット精度である場合、max_pixの値は255となる。
位置bおよびdにおける画素値は、6タップのFIRフィルタを用いて、次の式(2)のように生成される。
位置cにおける画素値は、水平方向および垂直方向に6タップのFIRフィルタを適用し、次の式(3)のように生成される。
なお、Clip処理は、水平方向および垂直方向の積和処理の両方を行った後、最後に1度のみ実行される。
位置e1乃至e3は、次の式(4)のように線形内挿により生成される。
H.264/AVC方式においては、図3および図4を参照して上述した動き予測・補償処理が行われることにより、膨大な動きベクトル情報が生成され、これをこのまま符号化することは、符号化効率の低下を招いてしまう。これに対して、H.264/AVC方式においては、図5に示す方法により、動きベクトルの符号化情報の低減が実現されている。
図5は、H.264/AVC方式による動きベクトル情報の生成方法について説明する図である。
図5の例において、これから符号化される対象ブロックE(例えば、16×16画素)と、既に符号化済みであり、対象ブロックEに隣接するブロックA乃至Dが示されている。
すなわち、ブロックDは、対象ブロックEの左上に隣接しており、ブロックBは、対象ブロックEの上に隣接しており、ブロックCは、対象ブロックEの右上に隣接しており、ブロックAは、対象ブロックEの左に隣接している。なお、ブロックA乃至Dが区切られていないのは、それぞれ、図2で上述した16×16画素乃至4×4画素のうちのいずれかの構成のブロックであることを表している。
例えば、X(=A,B,C,D,E)に対する動きベクトル情報を、mvXで表す。まず、対象ブロックEに対する予測動きベクトル情報pmvEは、ブロックA,B,Cに関する動きベクトル情報を用いて、メディアン予測により次の式(5)のように生成される。
pmvE = med(mvA,mvB,mvC) ・・・(5)
ブロックCに関する動きベクトル情報が、画枠の端であったり、あるいは、まだ符号化されていないなどの理由により、利用可能でない(unavailableである)場合がある。この場合には、ブロックCに関する動きベクトル情報は、ブロックDに関する動きベクトル情報で代用される。
対象ブロックEに対する動きベクトル情報として、圧縮画像のヘッダ部に付加されるデータmvdEは、pmvEを用いて、次の式(6)のように生成される。
mvdE = mvE - pmvE ・・・(6)
なお、実際には、動きベクトル情報の水平方向、垂直方向のそれぞれの成分に対して、独立に処理が行われる。
このように、予測動きベクトル情報を生成し、隣接するブロックとの相関で生成された予測動きベクトル情報と動きベクトル情報との差分であるデータmvdEを、動きベクトル情報として、圧縮画像のヘッダ部に付加することにより、動きベクトル情報を低減することができる。
ここで、図4を参照して上述したH.264/AVC方式における1/4画素精度の予測・補償処理は、動き予測・補償部において実行されるが、図2の画像符号化装置51においては、1/4画素精度の予測が、イントラ予測においても行われる。この小数画素精度のイントラ予測は、次に説明するイントラ予測部74および隣接画素内挿部75により実行される。
[イントラ予測部および隣接画素内挿部の構成例]
図6は、イントラ予測部および隣接画素内挿部の詳細な構成例を示すブロック図である。
図6の例の場合、イントラ予測部74は、隣接画像バッファ81、最適モード決定部82、最適シフト量決定部83、および予測画像生成部84により構成されている。
隣接画素内挿部75は、モード判別部91、水平方向内挿部92、および垂直方向内挿部93により構成されている。
隣接画像バッファ81は、フレームメモリ72からのイントラ予測の対象ブロックの隣接画素を蓄積する。図6の場合、スイッチ73の図示は省略されているが、隣接画素は、フレームメモリ72から、スイッチ73を介して隣接画像バッファ81に供給される。
最適モード決定部82には、画面並べ替えバッファ62から読み出されたイントラ予測する画像が入力される。最適モード決定部82は、イントラ予測する対象ブロックに対応する隣接画素を隣接画像バッファ81から読み出す。
最適モード決定部82は、イントラ予測する対象ブロックの画像と対応する隣接画素を用いて、候補となる全てのイントラ予測モードのイントラ予測処理を行い、予測画像を生成する。最適モード決定部82は、予測画像を生成したイントラ予測モードに対してコスト関数値を算出し、算出したコスト関数値が最小値を与えるイントラ予測モードを、最適イントラ予測モードとして決定する。決定された予測モードの情報は、モード判別部91、最適シフト量決定部83、および予測画像生成部84に供給される。また、予測画像生成部84には、供給される予測モードに対応するコスト関数値も供給される。
最適シフト量決定部83には、画面並べ替えバッファ62から読み出されたイントラ予測する画像と、最適モード決定部82により最適と決定された予測モードの情報が入力される。また、最適シフト量決定部83には、最適イントラ予測モードに応じて、水平方向内挿部92および垂直方向内挿部93により線形内挿され、位相がシフトされた隣接画素が入力される。最適シフト量決定部83は、イントラ予測する対象ブロックに対応する隣接画素を隣接画像バッファ81から読み出す。
最適シフト量決定部83は、最適モード決定部82により決定された予測モードについて、イントラ予測する対象ブロックの画像、対応する隣接画素、および対応する内挿された隣接画素の画素値を用いて、最適なシフト量を決定する。最適シフト量決定部83は、例えば、予測誤差(残差)などを算出して、算出した予測誤差の小さいものを最適なシフト量として決定する。最適シフト量決定部83により決定された最適シフト量の情報は、予測画像生成部84に供給される。
予測画像生成部84には、最適モード決定部82により決定された予測モードの情報と対応するコスト関数値、および最適シフト量決定部83により決定された最適シフト量の情報が入力される。予測画像生成部84は、イントラ予測する対象ブロックに対応する隣接画素を隣接画像バッファ81から読み出し、予測モードに応じた位相方向に、読みだした隣接画素を最適シフト量で、隣接画素の位相をシフトする。
予測画像生成部84は、位相がシフトされた隣接画素を用いて、最適モード決定部82により決定された最適イントラ予測モードでイントラ予測を行い、対象ブロックの予測画像を生成する。予測画像生成部84は、生成された予測画像と、対応するコスト関数値を予測画像選択部77に出力する。
また、予測画像生成部84は、予測画像選択部77により最適イントラ予測モードで生成された予測画像が選択された場合、最適イントラ予測モードを示す情報とシフト量の情報を、可逆符号化部66に供給する。
モード判別部91は、最適モード決定部82により決定された予測モードに応じた制御信号を、水平方向内挿部92および垂直方向内挿部93に出力する。例えば、内挿処理のONを示す制御信号が予測モードに応じて出力される。
水平方向内挿部92および垂直方向内挿部93は、モード判別部91からの制御信号に応じて、隣接画像バッファ81より隣接画素をそれぞれ読み出す。水平方向内挿部92および垂直方向内挿部93は、読み出した隣接画素に対して、6タップのFIRフィルタおよび線形内挿により、水平方向および垂直方向に、位相をそれぞれシフトする。水平方向内挿部92および垂直方向内挿部93により内挿された隣接画素の情報は、最適シフト量決定部83に供給される。
[画像符号化装置の符号化処理の説明]
次に、図7のフローチャートを参照して、図2の画像符号化装置51の符号化処理について説明する。
ステップS11において、A/D変換部61は入力された画像をA/D変換する。ステップS12において、画面並べ替えバッファ62は、A/D変換部61より供給された画像を記憶し、各ピクチャの表示する順番から符号化する順番への並べ替えを行う。
ステップS13において、演算部63は、ステップS12で並び替えられた画像と予測画像との差分を演算する。予測画像は、インター予測する場合は動き予測・補償部76から、イントラ予測する場合はイントラ予測部74から、それぞれ予測画像選択部77を介して演算部63に供給される。
差分データは元の画像データに較べてデータ量が小さくなっている。したがって、画像をそのまま符号化する場合に較べて、データ量を圧縮することができる。
ステップS14において、直交変換部64は演算部63から供給された差分情報を直交変換する。具体的には、離散コサイン変換、カルーネン・レーベ変換等の直交変換が行われ、変換係数が出力される。ステップS15において、量子化部65は変換係数を量子化する。この量子化に際しては、後述するステップS25の処理で説明されるように、レートが制御される。
以上のようにして量子化された差分情報は、次のようにして局部的に復号される。すなわち、ステップS16において、逆量子化部68は量子化部65により量子化された変換係数を量子化部65の特性に対応する特性で逆量子化する。ステップS17において、逆直交変換部69は逆量子化部68により逆量子化された変換係数を直交変換部64の特性に対応する特性で逆直交変換する。
ステップS18において、演算部70は、予測画像選択部77を介して入力される予測画像を局部的に復号された差分情報に加算し、局部的に復号された画像(演算部63への入力に対応する画像)を生成する。ステップS19においてデブロックフィルタ71は、演算部70より出力された画像をフィルタリングする。これによりブロック歪みが除去される。ステップS20においてフレームメモリ72は、フィルタリングされた画像を記憶する。なお、フレームメモリ72にはデブロックフィルタ71によりフィルタ処理されていない画像も演算部70から供給され、記憶される。
ステップS21において、イントラ予測部74および動き予測・補償部76は、それぞれ画像の予測処理を行う。すなわち、ステップS21において、イントラ予測部74は、イントラ予測モードのイントラ予測処理を行う。動き予測・補償部76は、インター予測モードの動き予測・補償処理を行う。
ステップS21における予測処理の詳細は、図8を参照して後述するが、この処理により、候補となる全ての予測モードでの予測処理がそれぞれ行われ、候補となる全ての予測モードでのコスト関数値がそれぞれ算出される。そして、算出されたコスト関数値に基づいて、最適イントラ予測モードが選択され、最適イントラ予測モードのイントラ予測により生成された予測画像とそのコスト関数値が予測画像選択部77に供給される。
具体的には、このとき、イントラ予測部74は、6タップのFIRフィルタおよび線形内挿により、最適イントラ予測モードに応じたシフト方向に、最適シフト量で、位相がシフトされた隣接画素を用いてイントラ予測で生成した予測画像を予測画像選択部77に供給する。なお、予測画像と一緒に、最適イントラ予測モードについてのコスト関数値も、予測画像選択部77に供給される。
一方、算出されたコスト関数値に基づいて、インター予測モードの中から、最適インター予測モードが決定され、最適インター予測モードで生成された予測画像とそのコスト関数値が、予測画像選択部77に供給される。
ステップS22において、予測画像選択部77は、イントラ予測部74および動き予測・補償部76より出力された各コスト関数値に基づいて、最適イントラ予測モードと最適インター予測モードのうちの一方を、最適予測モードに決定する。そして、予測画像選択部77は、決定した最適予測モードの予測画像を選択し、演算部63,70に供給する。この予測画像が、上述したように、ステップS13,S18の演算に利用される。
なお、この予測画像の選択情報は、イントラ予測部74または動き予測・補償部76に供給される。最適イントラ予測モードの予測画像が選択された場合、イントラ予測部74は、最適イントラ予測モードを示す情報(すなわち、イントラ予測モード情報)と最適と決定されたシフト量の情報を、可逆符号化部66に供給する。
最適インター予測モードの予測画像が選択された場合、動き予測・補償部76は、最適インター予測モードを示す情報と、必要に応じて、最適インター予測モードに応じた情報を可逆符号化部66に出力する。最適インター予測モードに応じた情報としては、動きベクトル情報やフラグ情報、参照フレーム情報などがあげられる。すなわち、最適インター予測モードとして、インター予測モードによる予測画像が選択されているときには、動き予測・補償部76は、インター予測モード情報、動きベクトル情報、参照フレーム情報を可逆符号化部66に出力する。
ステップS23において、可逆符号化部66は量子化部65より出力された量子化された変換係数を符号化する。すなわち、差分画像が可変長符号化、算術符号化等の可逆符号化され、圧縮される。このとき、上述したステップS22において可逆符号化部66に入力された、イントラ予測部74からのイントラ予測モード情報、または、動き予測・補償部76からの最適インター予測モードに応じた情報なども符号化され、ヘッダ情報に付加される。
ステップS24において蓄積バッファ67は差分画像を圧縮画像として蓄積する。蓄積バッファ67に蓄積された圧縮画像が適宜読み出され、伝送路を介して復号側に伝送される。
ステップS25においてレート制御部78は、蓄積バッファ67に蓄積された圧縮画像に基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部65の量子化動作のレートを制御する。
[予測処理の説明]
次に、図8のフローチャートを参照して、図7のステップS21における予測処理を説明する。
画面並べ替えバッファ62から供給される処理対象の画像がイントラ処理されるブロックの画像である場合、参照される復号済みの画像がフレームメモリ72から読み出され、スイッチ73を介してイントラ予測部74に供給される。
ステップS31において、イントラ予測部74は、供給された画像を用いて、処理対象のブロックの画素を、候補となる全てのイントラ予測モードでイントラ予測する。なお、参照される復号済みの画素としては、デブロックフィルタ71によりデブロックフィルタリングされていない画素が用いられる。
ステップS31におけるイントラ予測処理の詳細は、図20を参照して後述するが、この処理により、候補となる全てのイントラ予測モードでイントラ予測が行われる。そして、候補となる全てのイントラ予測モードに対してコスト関数値が算出され、算出されたコスト関数値に基づいて、最適イントラ予測モードが決定される。
そして、6タップのFIRフィルタおよび線形内挿により、決定された最適イントラ予測モードに応じたシフト方向に最適シフト量で、隣接画素の位相がシフトされる。この位相がシフトされた隣接画素が用いられて、最適イントラ予測モードでのイントラ予測により予測画像が生成される。生成された予測画像と最適イントラ予測モードのコスト関数値は、予測画像選択部77に供給される。
画面並べ替えバッファ62から供給される処理対象の画像がインター処理される画像である場合、参照される画像がフレームメモリ72から読み出され、スイッチ73を介して動き予測・補償部76に供給される。これらの画像に基づいて、ステップS32において、動き予測・補償部76はインター動き予測処理を行う。すなわち、動き予測・補償部76は、フレームメモリ72から供給される画像を参照して、候補となる全てのインター予測モードの動き予測処理を行う。
ステップS32におけるインター動き予測処理の詳細は、図22を参照して後述するが、この処理により、候補となる全てのインター予測モードで動き予測処理が行われ、候補となる全てのインター予測モードに対してコスト関数値が算出される。
ステップS33において、動き予測・補償部76は、ステップS32において算出されたインター予測モードに対してのコスト関数値を比較し、最小値を与える予測モードを、最適インター予測モードとして決定する。そして、動き予測・補償部76は、最適インター予測モードで生成された予測画像とそのコスト関数値を、予測画像選択部77に供給する。
[H.264/AVC方式におけるイントラ予測処理の説明]
次に、H.264/AVC方式で定められているイントラ予測の各モードについて説明する。
まず、輝度信号に対するイントラ予測モードについて説明する。輝度信号のイントラ予測モードには、イントラ4×4予測モード、イントラ8×8予測モード、およびイントラ16×16予測モードの3通りの方式が定められている。これは、ブロック単位を定めるモードであり、マクロブロック毎に設定される。また、色差信号に対しては、マクロブロック毎に輝度信号とは独立したイントラ予測モードを設定することが可能である。
さらに、イントラ4×4予測モードの場合、4×4画素の対象ブロック毎に、9種類の予測モードから1つの予測モードを設定することができる。イントラ8×8予測モードの場合、8×8画素の対象ブロック毎に、9種類の予測モードから1つの予測モードを設定することができる。また、イントラ16×16予測モードの場合、16×16画素の対象マクロブロックに対して、4種類の予測モードから1つの予測モードを設定することができる。
なお、以下、イントラ4×4予測モード、イントラ8×8予測モード、およびイントラ16×16予測モードは、それぞれ、4×4画素のイントラ予測モード、8×8画素のイントラ予測モード、および16×16画素のイントラ予測モードとも適宜称する。
図9の例において、各ブロックに付されている数字−1乃至25は、その各ブロックのビットストリーム順(復号側における処理順)を表している。なお、輝度信号については、マクロブロックが4×4画素に分割されて、4×4画素のDCTが行われる。そして、イントラ16×16予測モードの場合のみ、−1のブロックに示されるように、各ブロックの直流成分を集めて、4×4行列が生成され、これに対して、さらに、直交変換が施される。
一方、色差信号については、マクロブロックが4×4画素に分割され、4×4画素のDCTが行われた後に、16および17の各ブロックに示されるように、各ブロックの直流成分を集めて、2×2行列が生成され、これに対して、さらに、直交変換が施される。
なお、このことは、イントラ8×8予測モードに関しては、ハイプロファイルまたはそれ以上のプロファイルで、対象マクロブロックに、8×8直交変換が施される場合についてのみ適用可能である。
図10および図11は、9種類の輝度信号の4×4画素のイントラ予測モード(Intra_4x4_pred_mode)を示す図である。平均値(DC)予測を示すモード2以外の8種類の各モードは、それぞれ、上述した図1の番号0,1,3乃至8で示される方向に対応している。
9種類のIntra_4x4_pred_modeについて、図12を参照して説明する。図12の例において、画素a乃至pは、イントラ処理される対象ブロックの画素を表し、画素値A乃至Mは、隣接ブロックに属する画素の画素値を表している。すなわち、画素a乃至pは、画面並べ替えバッファ62から読み出された処理対象の画像であり、画素値A乃至Mは、フレームメモリ72から読み出され、参照される復号済みの画像の画素値である。
図10および図11に示す各イントラ予測モードの場合、画素a乃至pの予測画素値は、隣接ブロックに属する画素の画素値A乃至Mを用いて、以下のように生成される。なお、画素値が“available”であるとは、画枠の端であったり、あるいは、まだ符号化されていないなどの理由がなく、利用可能であることを表す。これに対して、画素値が“unavailable”であるとは、画枠の端であったり、あるいは、まだ符号化されていないなどの理由により利用可能ではないことを表す。
モード0はVertical Prediction modeであり、画素値A乃至Dが “available” の場合のみ適用される。この場合、画素a乃至pの予測画素値は、次の式(7)のように生成される。
画素a, e, i, mの予測画素値 = A
画素b, f, j, nの予測画素値 = B
画素c, g, k, oの予測画素値 = C
画素d, h, l, pの予測画素値 = D ・・・(7)
モード1はHorizontal Prediction modeであり、画素値I乃至Lが “available” の場合のみ適用される。この場合、画素a乃至pの予測画素値は、次の式(8)のように生成される。
画素a, b, c, dの予測画素値 = I
画素e, f, g, hの予測画素値 = J
画素i, j, k, lの予測画素値 = K
画素m, n, o, pの予測画素値 = L ・・・(8)
モード2はDC Prediction modeであり、画素値A,B,C,D,I,J,K,Lが全て “available” である時、予測画素値は式(9)のように生成される。
(A+B+C+D+I+J+K+L+4) >> 3 ・・・(9)
また、画素値A,B,C,Dが全て “unavailable” である時、予測画素値は式(10)のように生成される。
(I+J+K+L+2) >> 2 ・・・(10)
また、画素値I,J,K,Lが全て “unavailable” である時、予測画素値は式(11)のように生成される。
(A+B+C+D+2) >> 2 ・・・(11)
なお、画素値A,B,C,D,I,J,K,Lが全て“unavailable” である時、128を予測画素値として用いる。
モード3はDiagonal_Down_Left Prediction modeであり、画素値A,B,C,D,I,J,K,L,Mが“available”の場合のみ適用される。この場合、画素a乃至pの予測画素値は、次の式(12)のように生成される。
画素aの予測画素値 = (A+2B+C+2) >> 2
画素b,eの予測画素値 = (B+2C+D+2) >> 2
画素c,f,iの予測画素値 = (C+2D+E+2) >> 2
画素d,g,j,mの予測画素値 = (D+2E+F+2) >> 2
画素h,k,nの予測画素値 = (E+2F+G+2) >> 2
画素l,oの予測画素値 = (F+2G+H+2) >> 2
画素pの予測画素値 = (G+3H+2) >> 2
・・・(12)
モード4はDiagonal_Down_Right Prediction modeであり、画素値A,B,C,D,I,J,K,L,Mが “available” の場合のみ適用される。この場合、画素a乃至pの予測画素値は、次の式(13)のように生成される。
画素mの予測画素値 = (J+2K+L+2) >> 2
画素i,nの予測画素値 = (I+2J+K+2) >> 2
画素e,j,oの予測画素値 = (M+2I+J+2) >> 2
画素a,f,k,pの予測画素値 = (A+2M+I+2) >> 2
画素b,g,lの予測画素値 = (M+2A+B+2) >> 2
画素c,hの予測画素値 = (A+2B+C+2) >> 2
画素dの予測画素値 = (B+2C+D+2) >> 2
・・・(13)
モード5はDiagonal_Vertical_Right Prediction modeであり、画素値A,B,C,D,I,J,K,L,Mが“available”の場合のみ適用される。この場合、画素a乃至pの予測画素値は、次の式(14)のように生成される。
画素a,jの予測画素値 = (M+A+1) >> 1
画素b,kの予測画素値 = (A+B+1) >> 1
画素c,lの予測画素値 = (B+C+1) >> 1
画素dの予測画素値 = (C+D+1) >> 1
画素e,nの予測画素値 = (I+2M+A+2) >> 2
画素f,oの予測画素値 = (M+2A+B+2) >> 2
画素g,pの予測画素値 = (A+2B+C+2) >> 2
画素hの予測画素値 = (B+2C+D+2) >> 2
画素iの予測画素値 = (M+2I+J+2) >> 2
画素mの予測画素値 = (I+2J+K+2) >> 2
・・・(14)
モード6はHorizontal_Down Prediction modeであり、画素値A,B,C,D,I,J,K,L,Mが“available”の場合のみ適用される。この場合、画素a乃至pの予測画素値は、次の式(15)のように生成される。
画素a,gの予測画素値 = (M+I+1) >> 1
画素b,hの予測画素値 = (I+2M+A+2) >> 2
画素cの予測画素値 = (M+2A+B+2) >> 2
画素dの予測画素値 = (A+2B+C+2) >> 2
画素e,kの予測画素値 = (I+J+1) >> 1
画素f,lの予測画素値 = (M+2I+J+2) >> 2
画素i,oの予測画素値 = (J+K+1) >> 1
画素j,pの予測画素値 = (I+2J+K+2) >> 2
画素mの予測画素値 = (K+L+1) >> 1
画素nの予測画素値 = (J+2K+L+2) >> 2
・・・(15)
モード7は、Vertical_Left Prediction modeであり、画素値A,B,C,D,I,J,K,L,Mが“available”の場合のみ適用される。この場合、画素a乃至pの予測画素値は、次の式(16)のように生成される。
画素aの予測画素値 = (A+B+1) >> 1
画素b,iの予測画素値 = (B+C+1) >> 1
画素c,jの予測画素値 = (C+D+1) >> 1
画素d,kの予測画素値 = (D+E+1) >> 1
画素lの予測画素値 = (E+F+1) >> 1
画素eの予測画素値 = (A+2B+C+2) >> 2
画素f,mの予測画素値 = (B+2C+D+2) >> 2
画素g,nの予測画素値 = (C+2D+E+2) >> 2
画素h,oの予測画素値 = (D+2E+F+2) >> 2
画素pの予測画素値 = (E+2F+G+2) >> 2
・・・(16)
モード8は、Horizontal_Up Prediction modeであり、画素値A,B,C,D,I,J,K,L,Mが“available”の場合のみ適用される。この場合、画素a乃至pの予測画素値は、次の式(17)のように生成される。
画素aの予測画素値 = (I+J+1) >> 1
画素bの予測画素値 = (I+2J+K+2) >> 2
画素c,eの予測画素値 = (J+K+1) >> 1
画素d,fの予測画素値 = (J+2K+L+2) >> 2
画素g,iの予測画素値 = (K+L+1) >> 1
画素h,jの予測画素値 = (K+3L+2) >> 2
画素k,l,m,n,o,pの予測画素値 = L
・・・(17)
次に、図13を参照して、輝度信号の4×4画素のイントラ予測モード(Intra_4x4_pred_mode)の符号化方式について説明する。図13の例において、4×4画素からなり、符号化対象となる対象ブロックCが示されており、対象ブロックCに隣接する4×4画素からなるブロックAおよびブロックBが示されている。
この場合、対象ブロックCにおけるIntra_4x4_pred_modeと、ブロックAおよびブロックBにおけるIntra_4x4_pred_modeとは高い相関があると考えられる。この相関性を用いて、次のように符号化処理を行うことにより、より高い符号化効率を実現することができる。
すなわち、図13の例において、ブロックAおよびブロックBにおけるIntra_4x4_pred_modeを、それぞれ、Intra_4x4_pred_modeAおよびIntra_4x4_pred_modeBとして、MostProbableModeを次の式(18)と定義する。
MostProbableMode=Min(Intra_4x4_pred_modeA, Intra_4x4_pred_modeB)
・・・(18)
すなわち、ブロックAおよびブロックBのうち、より小さなmode_numberを割り当てられている方をMostProbableModeとする。
ビットストリーム中には、対象ブロックCに対するパラメータとして、prev_intra4x4_pred_mode_flag[luma4x4BlkIdx] および rem_intra4x4_pred_mode[luma4x4BlkIdx] という2つの値が定義されており、次の式(19)に示される擬似コードに基づく処理により、復号処理が行われ、対象ブロックCに対するIntra_4x4_pred_mode、Intra4x4PredMode[luma4x4BlkIdx] の値を得ることができる。
if(prev_intra4x4_pred_mode_flag[luma4x4BlkIdx])
Intra4x4PredMode[luma4x4BlkIdx] = MostProbableMode
else
if(rem_intra4x4_pred_mode[luma4x4BlkIdx] < MostProbableMode)
Intra4x4PredMode[luma4x4BlkIdx]=rem_intra4x4_pred_mode[luma4x4BlkIdx]
else
Intra4x4PredMode[luma4x4BlkIdx]=rem_intra4x4_pred_mode[luma4x4BlkIdx] + 1
・・・(19)
次に、16×16画素のイントラ予測モードについて説明する。図14および図15は、4種類の輝度信号の16×16画素のイントラ予測モード(Intra_16x16_pred_mode)を示す図である。
4種類のイントラ予測モードについて、図16を参照して説明する。図16の例において、イントラ処理される対象マクロブロックAが示されており、P(x,y);x,y=-1,0,…,15は、対象マクロブロックAに隣接する画素の画素値を表している。
モード0は、Vertical Prediction modeであり、P(x,-1); x,y=-1,0,…,15が “available” である時のみ適用される。この場合、対象マクロブロックAの各画素の予測画素値Pred(x,y)は、次の式(20)のように生成される。
Pred(x,y) = P(x,-1);x,y=0,…,15
・・・(20)
モード1はHorizontal Prediction modeであり、P(-1,y); x,y=-1,0,…,15が “available” である時のみ適用される。この場合、対象マクロブロックAの各画素の予測画素値Pred(x,y)は、次の式(21)のように生成される。
Pred(x,y) = P(-1,y);x,y=0,…,15
・・・(21)
モード2はDC Prediction modeであり、P(x,-1)およびP(-1,y); x,y=-1,0,…,15が全て “available” である場合、対象マクロブロックAの各画素の予測画素値Pred(x,y)は、次の式(22)のように生成される。
また、P(x,-1); x,y=-1,0,…,15が “unavailable” である場合、対象マクロブロックAの各画素の予測画素値Pred(x,y)は、次の式(23)のように生成される。
P(-1,y); x,y=-1,0,…,15が “unavailable” である場合、対象マクロブロックAの各画素の予測画素値Pred(x,y)は、次の式(24)のように生成される。
P(x,-1)およびP(-1,y); x,y=-1,0,…,15が全て “unavailable” である場合には、予測画素値として128を用いる。
モード3はPlane Prediction modeであり、P(x,-1)及びP(-1,y); x,y=-1,0,…,15が全て “available” の場合のみ適用される。この場合、対象マクロブロックAの各画素の予測画素値Pred(x,y)は、次の式(25)のように生成される。
次に、色差信号に対するイントラ予測モードについて説明する。図17は、4種類の色差信号のイントラ予測モード(Intra_chroma_pred_mode)を示す図である。色差信号のイントラ予測モードは、輝度信号のイントラ予測モードと独立に設定が可能である。色差信号に対するイントラ予測モードは、上述した輝度信号の16×16画素のイントラ予測モードに順ずる。
ただし、輝度信号の16×16画素のイントラ予測モードが、16×16画素のブロックを対象としているのに対し、色差信号に対するイントラ予測モードは、8×8画素のブロックを対象としている。さらに、上述した図14と図17に示されるように、両者においてモード番号は対応していない。
ここで、図16を参照して上述した輝度信号の16×16画素のイントラ予測モードの対象マクロブロックAの画素値および隣接する画素値の定義に準じる。例えば、イントラ処理される対象マクロブロックA(色差信号の場合は、8×8画素)に隣接する画素の画素値をP(x,y);x,y=-1,0,…,7とする。
モード0はDC Prediction modeであり、P(x,-1)およびP(-1,y); x,y=-1,0,…,7が全て “available” である場合、対象マクロブロックAの各画素の予測画素値Pred(x,y)は、次の式(26)のように生成される。
また、P(-1,y) ; x,y=-1,0,…,7が “unavailable” である場合、対象マクロブロックAの各画素の予測画素値Pred(x,y)は、次の式(27)のように生成される。
また、P(x,-1) ; x,y=-1,0,…,7が “unavailable”である場合、対象マクロブロックAの各画素の予測画素値Pred(x,y)は、次の式(28)のように生成される。
モード1はHorizontal Prediction modeであり、P(-1,y) ; x,y=-1,0,…,7が “available” の場合にのみ適用される。この場合、対象マクロブロックAの各画素の予測画素値Pred(x,y)は、次の式(29)のように生成される。
Pred(x,y) = P(-1,y);x,y=0,…,7
・・・(29)
モード2はVertical Prediction modeであり、P(x,-1) ; x,y=-1,0,…,7が “available” の場合にのみ適用される。この場合、対象マクロブロックAの各画素の予測画素値Pred(x,y)は、次の式(30)のように生成される。
Pred(x,y) = P(x,-1);x,y=0,…,7
・・・(30)
モード3はPlane Prediction modeであり、P(x,-1)及びP(-1,y) ; x,y=-1,0,…,7 が “available” の場合にのみ適用される。この場合、対象マクロブロックAの各画素の予測画素値Pred(x,y)は、次の式(31)のように生成される。
以上のように、輝度信号のイントラ予測モードには、9種類の4×4画素および8×8画素のブロック単位、並びに4種類の16×16画素のマクロブロック単位の予測モードがある。このブロック単位のモードは、マクロブロック単位毎に設定される。色差信号のイントラ予測モードには、4種類の8×8画素のブロック単位の予測モードがある。この色差信号のイントラ予測モードは、輝度信号のイントラ予測モードと独立に設定が可能である。
また、輝度信号の4×4画素のイントラ予測モード(イントラ4×4予測モード)および8×8画素のイントラ予測モード(イントラ8×8予測モード)については、4×4画素および8×8画素の輝度信号のブロック毎に1つのイントラ予測モードが設定される。輝度信号の16×16画素のイントラ予測モード(イントラ16×16予測モード)と色差信号のイントラ予測モードについては、1つのマクロブロックに対して1つの予測モードが設定される。
なお、予測モードの種類は、上述した図1の番号0,1,3乃至8で示される方向に対応している。予測モード2は平均値予測である。
以上のようにH.264/AVC方式におけるイントラ予測は整数画素精度で行われる。これに対して、画像符号化装置51においては、小数画素精度のイントラ予測が行われる。
[小数画素精度のイントラ予測の動作]
次に、図18を参照して、小数画素精度のイントラ予測を実現するための動作について説明する。なお、図18の例においては、対象ブロックが4×4画素の場合の例が示されている。
図18の例の場合、黒丸がイントラ予測の対象ブロックの画素を表しており、白丸が対象ブロックに隣接する隣接画素を表している。さらに詳細には、白丸の隣接画素のうち、対象ブロックの左上部に隣接する左上部隣接画素は、A-1かつI-1であり、この画素は、図12の画素値Mの画素に相当する。白丸の隣接画素のうち、対象ブロックの上部に隣接する上部隣接画素は、A0, A1, A2,…であり、これらの画素は、図12の画素値A乃至Hの画素に相当する。白丸の隣接画素のうち、対象ブロックの左部に隣接する左部隣接画素は、I0, I1, I2,…であり、これらの画素は、図12の画素値I乃至Lの画素に相当する。
また、隣接画素の間に示されるa-0.5,a+0.5,…およびi-0.5,i+0.5,…は、1/2画素精度の画素を表している。さらに、a-0.5,a+0.5,…およびi-0.5,i+0.5,…の画素間に示されるa-0.75,a-0.25,a+0.25,a+0.75,…およびi-0.75,i-0.25,i+0.25,i+0.75,…は、1/4画素精度の画素を表している。
まず、第1の動作として、イントラ予測部74においては、図12に示される画素値A乃至Mを用いて、各イントラ予測モードに対してイントラ予測が行われ、各イントラ予測モードの中から、最適イントラ予測モードが決定される。対象ブロックが4×4の場合、この最適イントラ予測モードは、図10または図11の9つの予測モードのいずれかである。
例えば、最適イントラ予測モードとして、モード0(Vertical Prediction mode)が選ばれたとする。このとき、対象ブロックの予測に用いられる隣接画素は、図12の画素値A乃至Dの画素であり、図18の画素A0, A1, A2, A3となる。
第2の動作として、隣接画素内挿部75においては、図4を参照して上述したH.264/AVC方式における6タップのFIRフィルタにより、図18の1/2画素精度の画素a-0.5,a+0.5,…が生成される。すなわち、画素a-0.5は、次の式(32)で示される。
a-0.5 = (A-2 -5*A-1 + 20*A0 + 20*A1 -5*A1 + A2 + 16) >> 5
・・・(32)
他の1/2画素精度の画素a+0.5, a+1.5などに関しても同様である。
第3の動作として、隣接画素内挿部75においては、画素A0, A1, A2, A3および画素a-0.5,a+0.5などから、図18の1/4画素精度の画素a-0.75,a-0.25,a+0.25,a+0.75が、線形内挿により生成される。すなわち、画素a+0.25は、次の式(33)で示される。
a-0.5 = A0 + a+0.5 + 1) >> 2 ・・・(33)
他の1/4画素精度の画素に関しても同様である。
第4の動作として、イントラ予測部74においては、モード0の場合、整数画素と各小数画素精度の位相差である-0.75,-0.50,-0.25,+0.25,+0.50,+0.75の値を、水平方向のシフト量の候補として、最適なシフト量が決定される。
例えば、シフト量が+0.25の場合には、画素A0, A1, A2, A3の画素値の代わりに、画素a+0.25,a+1.25,a+2.25,a+3.25の画素値が用いられて、イントラ予測が行われる。
このように、第1の動作で選択された最適イントラ予測モードに対して、最適なシフト量が決定される。例えば、シフト量が0の場合が最適とされて、整数画素の画素値が用いられる場合もあり得る。
なお、図10または図11に示される9つの予測モードのうち、モード2(DC prediction mode)に関しては、平均値処理を行うことになる。したがって、シフトを行ったとしても、符号化効率の向上には直接関与しないため、上述した動作は禁止され、行われない。
モード0(Vertical Prediction mode)、モード3(Diagonal_Down_Left Prediction mode)、またはモード7(Vertical_Left Prediction mode)に関しては、図18における上部隣接画素A0, A1, A2,…のみのシフトが候補となる。
モード1(Horizontal Prediction mode)、またはモード8(Horizontal_Up Prediction mode)に関しては、図18における左部隣接画素I0, I1, I2,…のみのシフトが候補となる。
その他のモード(モード4乃至6)に関しては、上部隣接画素および左部隣接画素の双方に関して、シフトを考慮する必要がある。
また、上部隣接画素に関しては、水平方向のシフト量のみが決定され、左部隣接画素に関しては、垂直方向のシフト量のみが決定される。
以上の第1乃至第4の動作を行い、最適なシフト量を決定することにより、イントラ予測モードにおいて用いられる画素値の選択肢を増やすことができ、より最適なイントラ予測を行うことができる。これにより、イントラ予測における符号化効率をさらに向上させることが可能である。
また、H.264/AVC方式においては、図4を参照して上述したように、インター動き予測補償にしか用いられなかった6タップのFIRフィルタの回路を、イントラ予測にも有効活用することができる。これにより、回路を増大させることなく、効率を改善することができる。
さらに、H.264/AVC方式において定められているイントラ予測の分解能である22.5°よりさらに細かい分解能でのイントラ予測を行うことができる。
[小数画素精度のイントラ予測の効果例]
図19の例において、点線は、図1を参照して上述したH.264/AVC方式のイントラ予測の予測モードの方向を表している。点線に付された番号は、図10または図11に示されている9つの予測モードの番号に対応している。なお、モード2は、平均値予測であるため、その番号が示されていない。
H.264/AVC方式においては、点線に示す22.5°の分解能でしかイントラ予測を行うことができなかった。これに対して、画像符号化装置51においては、小数画素精度のイントラ予測を行うことにより、太線が表すように22.5°よりさらに細かな分解能でのイントラ予測を行うことができる。これにより、特に、斜めエッジを持つテクスチャに対する符号化効率を向上させることができる。
[イントラ予測処理の説明]
次に、図20のフローチャートを参照して、上述した動作としてのイントラ予測処理を説明する。なお、このイントラ予測処理は、図8のステップS31におけるイントラ予測処理であり、図20の例においては、輝度信号の場合を例として説明する。
最適モード決定部82は、ステップS41において、4×4画素、8×8画素、および16×16画素の各イントラ予測モードに対してイントラ予測を行う。
上述したように、イントラ4×4予測モードとイントラ8×8予測モードには、9種類の予測モードがあり、それぞれブロック毎に1つの予測モードを定義することができる。イントラ16×16予測モードと色差信号のイントラ予測モードには、4種類の予測モードがあり、1つのマクロブロックに対して1つの予測モードを定義することができる。
最適モード決定部82は、処理対象のブロックの画素を、隣接画像バッファ81から読み出される復号済みの隣接画像を参照して、各イントラ予測モードのすべての種類の予測モードで、イントラ予測する。これにより、各イントラ予測モードのすべての種類の予測モードでの予測画像が生成される。なお、参照される復号済みの画素としては、デブロックフィルタ71によりデブロックフィルタリングされていない画素が用いられる。
最適モード決定部82は、ステップS42において、4×4画素、8×8画素、および16×16画素の各イントラ予測モードに対するコスト関数値を算出する。ここで、コスト関数値としては、High Complexity モードか、Low Complexity モードのいずれかの手法に基づいて行う。これらのモードは、H.264/AVC方式における参照ソフトウエアであるJM(Joint Model)で定められている。
すなわち、High Complexity モードにおいては、ステップS41の処理として、候補となる全ての予測モードに対して、仮に符号化処理までが行われる。そして、次の式(34)で表わされるコスト関数値が各予測モードに対して算出され、その最小値を与える予測モードが最適予測モードであるとして選択される。
Cost(Mode) = D + λ・R ・・・(34)
Dは、原画像と復号画像の差分(歪)、Rは、直交変換係数まで含んだ発生符号量、λは、量子化パラメータQPの関数として与えられるラグランジュ乗数である。
一方、Low Complexity モードにおいては、ステップS41の処理として、候補となる全ての予測モードに対して、予測画像の生成、および、動きベクトル情報や予測モード情報、フラグ情報などのヘッダビットまでが算出される。そして、次の式(35)で表わされるコスト関数値が各予測モードに対して算出され、その最小値を与える予測モードが最適予測モードであるとして選択される。
Cost(Mode) = D + QPtoQuant(QP)・Header_Bit ・・・(35)
Dは、原画像と復号画像の差分(歪)、Header_Bitは、予測モードに対するヘッダビット、QPtoQuantは、量子化パラメータQPの関数として与えられる関数である。
Low Complexity モードにおいては、全ての予測モードに対して、予測画像を生成するのみで、符号化処理および復号処理を行う必要がないため、演算量が少なくて済む。
最適モード決定部82は、ステップS43において、4×4画素、8×8画素、および16×16画素の各イントラ予測モードに対して、それぞれ最適モードを決定する。すなわち、上述したように、イントラ4×4予測モードおよびイントラ8×8予測モードの場合には、予測モードの種類が9種類あり、イントラ16×16予測モードの場合には、予測モードの種類が4種類ある。したがって、最適モード決定部82は、ステップS42において算出されたコスト関数値に基づいて、それらの中から、最適イントラ4×4予測モード、最適イントラ8×8予測モード、最適イントラ16×16予測モードを決定する。
最適モード決定部82は、ステップS44において、4×4画素、8×8画素、および16×16画素の各イントラ予測モードに対して決定された各最適モードの中から、ステップS42において算出されたコスト関数値に基づく最適イントラ予測モードを選択する。すなわち、4×4画素、8×8画素、および16×16画素に対して決定された各最適モードの中から、コスト関数値が最小値であるモードを、最適イントラ予測モードとして選択する。
決定された予測モードの情報は、モード判別部91、最適シフト量決定部83、および予測画像生成部84に供給される。また、予測画像生成部84には、予測モードに対応するコスト関数値も供給される。
隣接画素内挿部75および最適シフト量決定部83は、ステップS45において、隣接内挿処理を実行する。ステップS45における隣接内挿処理の詳細は、図21を参照して後述するが、この処理により、決定された最適イントラ予測モードに応じたシフト方向に、最適なシフト量が決定される。決定された最適なシフト量に関する情報は、予測画像生成部84に供給される。
ステップS46において、予測画像生成部84は、最適シフト量で位相がシフトされた隣接画素を用いて、予測画像を生成する。
すなわち、予測画像生成部84は、イントラ予測する対象ブロックに対応する隣接画素を隣接画像バッファ81から読み出す。そして、予測画像生成部84は、6タップのFIRフィルタおよび線形内挿により、予測モードに応じた位相方向に、読みだした隣接画素の位相を最適シフト量でシフトする。予測画像生成部84は、位相がシフトされた隣接画素を用いて、最適モード決定部82により決定された予測モードでイントラ予測を行い、対象ブロックの予測画像を生成し、生成された予測画像と、対応するコスト関数値を予測画像選択部77に供給する。
なお、最適シフト量が0の場合には、隣接画像バッファ81からの隣接画素の画素値が用いられる。
予測画像選択部77により最適イントラ予測モードで生成された予測画像が選択された場合、予測画像生成部84により、これらの最適イントラ予測モードを示す情報とシフト量の情報は、可逆符号化部66に供給される。そして、可逆符号化部66において、符号化され、圧縮画像のヘッダ情報に付加される(上述した図7のステップS23)。
なお、このシフト量の情報の符号化としては、決定された対象ブロックのシフト量と、図13を参照して上述したMostProbableModeを与えるブロックにおけるシフト量との差分が符号化される。
ただし、例えば、MostProbableModeがモード2(DC予測)であり、対象ブロックの予測モードがモード0(Vertical予測)である場合、MostProbableModeを与えるブロックにおける水平方向のシフト量は存在しないことになる。また、インタースライスにおけるイントラマクロブロックであるという事情によっても、MostProbableModeを与えるブロックにおける水平方向のシフト量は存在しないことになる。
このような場合には、MostProbableModeを与えるブロックにおける水平方向のシフト量は0であるとして、差分符号化処理が行われる。
[隣接画素内挿処理の説明]
次に、図21のフローチャートを参照して、図20のステップS45の隣接画素内挿処理について説明する。図21の例においては、対象ブロックが4×4の場合について説明される。
最適モード決定部82により決定された予測モードの情報は、モード判別部91に供給される。モード判別部91は、ステップS51において、最適イントラ予測モードがDCモードであるか否かを判定する。ステップS51において、最適イントラ予測モードがDCモードではないと判定された場合、処理は、ステップS52に進む。
ステップS52において、モード判別部91は、最適イントラ予測モードが、Vertical Prediction mode、Diagonal_Down_Left Prediction mode、またはVertical_Left Prediction modeであるか否かを判定する。
ステップS52において、最適イントラ予測モードが、Vertical Prediction mode、Diagonal_Down_Left Prediction mode、またはVertical_Left Prediction modeであると判定された場合、処理は、ステップS53に進む。
ステップS53において、モード判別部91は、水平方向内挿部92に制御信号を出力し、水平方向の内挿を行わせる。すなわち、水平方向内挿部92は、モード判別部91からの制御信号に応じて、隣接画像バッファ81より上部隣接画素を読み出し、6タップのFIRフィルタおよび線形内挿により、読み出した上部隣接画素に対して、水平方向の位相をシフトする。水平方向内挿部92は、内挿された上部隣接画素の情報を、最適シフト量決定部83に供給する。
ステップS54において、最適シフト量決定部83は、最適モード決定部82により決定された予測モードについて、-0.75乃至+0.75のうち、上部隣接画素の最適シフト量を決定する。なお、この決定には、イントラ予測する対象ブロックの画像、隣接画像バッファ81から読み出される上部隣接画素、および内挿された上部隣接画素の情報が用いられる。また、このとき、左部隣接画素についての最適シフト量は0とされる。決定された最適シフト量の情報は、予測画像生成部84に供給される。
ステップS52において、最適イントラ予測モードが、Vertical Prediction mode、Diagonal_Down_Left Prediction mode、およびVertical_Left Prediction modeではないと判定された場合、処理は、ステップS55に進む。
ステップS55において、モード判別部91は、最適イントラ予測モードがHorizontal Prediction mode、またはHorizontal_Up Prediction modeであるか否かを判定する。ステップS55において、最適イントラ予測モードがHorizontal Prediction mode、またはHorizontal_Up Prediction modeであると判定された場合、処理は、ステップS56に進む。
ステップS56において、モード判別部91は、垂直方向内挿部93に制御信号を出力し、垂直方向の内挿を行わせる。すなわち、垂直方向内挿部93は、モード判別部91からの制御信号に応じて、隣接画像バッファ81より左部隣接画素を読み出し、6タップのFIRフィルタおよび線形内挿により、読み出した左部隣接画素に対して垂直方向の位相をシフトする。垂直方向内挿部93は、内挿された左部隣接画素の情報を、最適シフト量決定部83に供給する。
ステップS57において、最適シフト量決定部83は、最適モード決定部82により決定された予測モードについて、-0.75乃至+0.75のうち、左部隣接画素の最適シフト量を決定する。なお、この決定には、イントラ予測する対象ブロックの画像、隣接画像バッファ81から読み出される左部隣接画素、および内挿された左部隣接画素の情報が用いられる。また、このとき、上部隣接画素についての最適シフト量は0とされる。決定された最適シフト量の情報は、予測画像生成部84に供給される。
ステップS55において、最適イントラ予測モードがHorizontal Prediction mode、およびHorizontal_Up Prediction modeではないと判定された場合、処理は、ステップS58に進む。
ステップS58において、モード判別部91は、水平方向内挿部92に制御信号を出力し、水平方向の内挿を行わせ、垂直方向内挿部93に制御信号を出力し、垂直方向の内挿を行わせる。
すなわち、水平方向内挿部92は、モード判別部91からの制御信号に応じて、隣接画像バッファ81より上部隣接画素を読み出し、6タップのFIRフィルタおよび線形内挿により、読み出した上部隣接画素に対して水平方向の位相をシフトする。水平方向内挿部92は、内挿された上部隣接画素の情報を、最適シフト量決定部83に供給する。
また、垂直方向内挿部93は、モード判別部91からの制御信号に応じて、隣接画像バッファ81より左部隣接画素を読み出し、6タップのFIRフィルタおよび線形内挿により、読み出した左部隣接画素に対して垂直方向の位相をシフトする。垂直方向内挿部93は、内挿された左部隣接画素の情報を、最適シフト量決定部83に供給する。
ステップS59において、最適シフト量決定部83は、最適モード決定部82により決定された予測モードについて、-0.75乃至+0.75のうち、上部および左部隣接画素の最適シフト量を決定する。この決定には、イントラ予測する対象ブロックの画像、隣接画像バッファ81から読み出される上部および左部隣接画素、並びに内挿された上部および左部隣接画素の情報が用いられる。決定された最適シフト量の情報は、予測画像生成部84に供給される。
一方、ステップS51において、最適イントラ予測モードがDCモードであると判定された場合、隣接画素内挿処理は終了される。すなわち、水平方向内挿部82および垂直方向内挿部83は動作せず、最適シフト量決定部83においては、シフト量0が最適シフト量に決定される。
[インター動き予測処理の説明]
次に、図22のフローチャートを参照して、図8のステップS32のインター動き予測処理について説明する。
動き予測・補償部76は、ステップS61において、16×16画素乃至4×4画素からなる8種類の各インター予測モードに対して動きベクトルと参照画像をそれぞれ決定する。すなわち、各インター予測モードの処理対象のブロックについて、動きベクトルと参照画像がそれぞれ決定される。
動き予測・補償部76は、ステップS62において、16×16画素乃至4×4画素からなる8種類の各インター予測モードについて、ステップS61で決定された動きベクトルに基づいて、参照画像に動き予測と補償処理を行う。この動き予測と補償処理により、各インター予測モードでの予測画像が生成される。
動き予測・補償部76は、ステップS63において、16×16画素乃至4×4画素からなる8種類の各インター予測モードに対して決定された動きベクトルについて、圧縮画像に付加するための動きベクトル情報を生成する。このとき、図5を参照して上述した動きベクトルの生成方法が用いられる。
生成された動きベクトル情報は、次のステップS64におけるコスト関数値算出の際にも用いられ、最終的に予測画像選択部77により対応する予測画像が選択された場合には、予測モード情報および参照フレーム情報とともに、可逆符号化部66へ出力される。
動き予測・補償部76は、ステップS64において、16×16画素乃至4×4画素からなる8種類の各インター予測モードに対して、上述した式(34)または式(35)で示されるコスト関数値を算出する。ここで算出されたコスト関数値は、上述した図8のステップS34で最適インター予測モードを決定する際に用いられる。
なお、本発明における動作原理は、図18、または図20および図21を参照して上述した動作に限らない。例えば、すべてのイントラ予測モードに対して、候補となるすべてのシフト量の予測値を算出し、その残差を算出して、最適イントラ予測モードおよび最適シフト量を決定するようにすることもできる。この動作を行う場合のイントラ予測部および隣接画素内挿部の構成例は、図23に示される。
[イントラ予測部および隣接画素内挿部の他の構成例]
図23は、イントラ予測部および隣接画素内挿部の他の構成例を示すブロック図である。
図23の例の場合、イントラ予測部74は、隣接画像バッファ101、最適モード/最適シフト量決定部102、および予測画像生成部103により構成されている。
隣接画素内挿部75は、水平方向内挿部111、および垂直方向内挿部112により構成されている。
隣接画像バッファ101は、フレームメモリ72からのイントラ予測の対象ブロックの隣接画素を蓄積する。図23の場合も、スイッチ73の図示は省略されているが、実際には、隣接画素は、フレームメモリ72から、スイッチ73を介して隣接画像バッファ101に供給される。
最適モード/最適シフト量決定部102には、イントラ予測する対象ブロックの画素が画面並べ替えバッファ62から入力される。最適モード/最適シフト量決定部102は、イントラ予測する対象ブロックに対応する隣接画素を隣接画像バッファ101から読み出す。
最適モード/最適シフト量決定部102は、候補のイントラ予測モード(以下、候補モードと称する)の情報を、水平方向内挿部111および垂直方向内挿部112に供給する。最適モード/最適シフト量決定部102には、候補モードに応じて内挿された隣接画素の情報が水平方向内挿部111および垂直方向内挿部112から入力される。
最適モード/最適シフト量決定部102は、イントラ予測する対象ブロックの画素、対応する隣接画素、および内挿された隣接画素の画素値を用いて、すべての候補モードおよびすべての候補シフト量に対して、イントラ予測を行い、予測画像を生成する。そして、最適モード/最適シフト量決定部102は、コスト関数値や予測残差などを算出して、すべての候補モードおよびすべてのシフト量の中から、最適なイントラ予測モードおよび最適なシフト量を決定する。決定された予測モードおよびシフト量の情報は、予測画像生成部103に供給される。なお、このとき、予測モードに対応するコスト関数値も予測画像生成部103に供給される。
予測画像生成部103は、イントラ予測する対象ブロックに対応する隣接画素を隣接画像バッファ101から読み出し、6タップのFIRフィルタおよび線形内挿により、予測モードに応じた位相方向に、読みだした隣接画素の位相を最適シフト量でシフトする。
予測画像生成部103は、位相がシフトされた隣接画素を用いて、最適モード/最適シフト量決定部102により決定された最適イントラ予測モードでイントラ予測を行い、対象ブロックの予測画像を生成する。予測画像生成部103は、生成された予測画像と、対応するコスト関数値を予測画像選択部77に出力する。
また、予測画像生成部103は、予測画像選択部77により最適イントラ予測モードで生成された予測画像が選択された場合、最適イントラ予測モードを示す情報とシフト量の情報を、可逆符号化部66に供給する。
水平方向内挿部111および垂直方向内挿部112は、最適モード/最適シフト量決定部102からの候補モードに応じて、隣接画像バッファ101より隣接画素をそれぞれ読み出す。水平方向内挿部111および垂直方向内挿部112は、6タップのFIRフィルタおよび線形内挿により、読み出した隣接画素に対して、水平方向および垂直方向に、それぞれ、位相をシフトする。
[イントラ予測処理の他の説明]
次に、図24のフローチャートを参照して、図23のイントラ予測部74および隣接画素内挿部75が行うイントラ予測処理を説明する。なお、このイントラ予測処理は、図8のステップS31におけるイントラ予測処理の他の例である。
最適モード/最適シフト量決定部102は、候補のイントラ予測モードの情報を、水平方向内挿部111および垂直方向内挿部112に供給する。
ステップS101において、水平方向内挿部111および垂直方向内挿部112は、すべての候補のイントラ予測モードに対して、隣接画素内挿処理を実行する。すなわち、ステップS101においては、4×4画素、8×8画素、および16×16画素の各イントラ予測モードに対して、隣接画素内挿処理がそれぞれ実行される。
ステップS101における隣接内挿処理の詳細は、図25を参照して後述するが、この処理により、各イントラ予測モードに応じたシフト方向に内挿された隣接画素の情報が、最適モード/最適シフト量決定部102に供給される。
ステップS102において、最適モード/最適シフト量決定部102は、4×4画素、8×8画素、および16×16画素の各イントラ予測モードと各シフト量に対してイントラ予測を行う。
すなわち、最適モード/最適シフト量決定部102は、イントラ予測する対象ブロックの画素、対応する隣接画素、および内挿された隣接画素の画素値を用いて、すべてのイントラ予測モードおよびすべての候補シフト量に対して、イントラ予測を行う。この結果、すべてのイントラ予測モードおよびすべての候補シフト量に対して、予測画像が生成される。
ステップS103において、最適モード/最適シフト量決定部102は、予測画像を生成した4×4画素、8×8画素、および16×16画素の各イントラ予測モードと各シフト量に対して、上述した式(34)または式(35)のコスト関数値を算出する。
ステップS104において、最適モード/最適シフト量決定部102は、算出したコスト関数値を比較することで、4×4画素、8×8画素、および16×16画素の各イントラ予測モードに対して、それぞれ最適モードおよび最適シフト量を決定する。
ステップS105において、最適モード/最適シフト量決定部102は、ステップS104において決定された各最適モードと最適シフト量の中から、ステップS103において算出されたコスト関数値に基づいて、最適イントラ予測モードと最適シフト量を選択する。すなわち、4×4画素、8×8画素、および16×16画素の各イントラ予測モードに対して決定された各最適モードと最適シフト量の中から、最適イントラ予測モードと最適シフト量が選択される。選択された予測モードおよびシフト量の情報は、対応するコスト関数値とともに、予測画像生成部103に供給される。
ステップS106において、予測画像生成部103は、最適シフト量で位相がシフトされた隣接画素を用いて、予測画像を生成する。
すなわち、予測画像生成部103は、イントラ予測する対象ブロックに対応する隣接画素を隣接画像バッファ101から読み出す。そして、予測画像生成部103は、6タップのFIRフィルタおよび線形内挿により、決定された予測モードに応じた位相方向に、読みだした隣接画素の位相を最適シフト量でシフトする。
予測画像生成部103は、位相がシフトされた隣接画素を用いて、最適モード/最適シフト量決定部102により決定された予測モードでイントラ予測を行い、対象ブロックの予測画像を生成する。生成された予測画像は、対応するコスト関数値とともに予測画像選択部77に供給される。
[隣接画素内挿処理の説明]
次に、図25のフローチャートを参照して、図24のステップS101の隣接画素内挿処理について説明する。なお、この隣接画素内挿処理は、候補のイントラ予測モード毎に行われる処理である。また、図25のステップS111乃至S116は、図21のステップS51乃至S53、S55、S56、およびS58と同様の処理を行うので、その詳細な説明は適宜省略する。
最適モード/最適シフト量決定部102から候補のイントラ予測モードの情報は、水平方向内挿部111および垂直方向内挿部112に供給される。水平方向内挿部111および垂直方向内挿部112は、ステップS111において、候補のイントラ予測モードがDCモードであるか否かを判定する。ステップS111において、候補のイントラ予測モードがDCモードではないと判定された場合、処理は、ステップS112に進む。
ステップS112において、水平方向内挿部111および垂直方向内挿部112は、候補のイントラ予測モードが、Vertical Prediction mode、Diagonal_Down_Left Prediction mode、またはVertical_Left Prediction modeであるか否かを判定する。
ステップS112において、候補のイントラ予測モードが、Vertical Prediction mode、Diagonal_Down_Left Prediction mode、またはVertical_Left Prediction modeであると判定された場合、処理は、ステップS113に進む。
ステップS113において、水平方向内挿部111は、候補のイントラ予測モードに応じて、水平方向の内挿を行う。水平方向内挿部111は、内挿された上部隣接画素の情報を、最適モード/最適シフト量決定部102に供給する。このとき、垂直方向内挿部112は、垂直方向の内挿処理を行わない。
ステップS112において、候補のイントラ予測モードが、Vertical Prediction mode、Diagonal_Down_Left Prediction mode、およびVertical_Left Prediction modeではないと判定された場合、処理は、ステップS114に進む。
ステップS114において、水平方向内挿部111および垂直方向内挿部112は、候補のイントラ予測モードがHorizontal Prediction mode、またはHorizontal_Up Prediction modeであるか否かを判定する。ステップS114において、候補のイントラ予測モードがHorizontal Prediction mode、またはHorizontal_Up Prediction modeであると判定された場合、処理は、ステップS115に進む。
ステップS115において、垂直方向内挿部112は、候補のイントラ予測モードに応じて、垂直方向の内挿を行う。垂直方向内挿部112は、内挿された左部隣接画素の情報を、最適モード/最適シフト量決定部102に供給する。このとき、水平方向内挿部111は、水平方向の内挿を行なわない。
ステップS114において、候補のイントラ予測モードがHorizontal Prediction mode、およびHorizontal_Up Prediction modeではないと判定された場合、処理は、ステップS116に進む。
ステップS116において、水平方向内挿部111および垂直方向内挿部112は、候補のイントラ予測モードに応じて、水平方向の内挿、および垂直方向の内挿をそれぞれ行う。水平方向内挿部111および垂直方向内挿部112は、内挿された上部隣接画素および左部隣接画素の情報を、最適モード/最適シフト量決定部102にそれぞれ供給する。
符号化された圧縮画像は、所定の伝送路を介して伝送され、画像復号装置により復号される。
[画像復号装置の構成例]
図26は、本発明を適用した画像処理装置としての画像復号装置の一実施の形態の構成を表している。
画像復号装置151は、蓄積バッファ161、可逆復号部162、逆量子化部163、逆直交変換部164、演算部165、デブロックフィルタ166、画面並べ替えバッファ167、D/A変換部168、フレームメモリ169、スイッチ170、イントラ予測部171、隣接画素内挿部172、動き予測・補償部173、およびスイッチ174により構成されている。
蓄積バッファ161は伝送されてきた圧縮画像を蓄積する。可逆復号部162は、蓄積バッファ161より供給された、図2の可逆符号化部66により符号化された情報を、可逆符号化部66の符号化方式に対応する方式で復号する。逆量子化部163は可逆復号部162により復号された画像を、図2の量子化部65の量子化方式に対応する方式で逆量子化する。逆直交変換部164は、図2の直交変換部64の直交変換方式に対応する方式で逆量子化部163の出力を逆直交変換する。
逆直交変換された出力は演算部165によりスイッチ174から供給される予測画像と加算されて復号される。デブロックフィルタ166は、復号された画像のブロック歪を除去した後、フレームメモリ169に供給し、蓄積させるとともに、画面並べ替えバッファ167に出力する。
画面並べ替えバッファ167は、画像の並べ替えを行う。すなわち、図2の画面並べ替えバッファ62により符号化の順番のために並べ替えられたフレームの順番が、元の表示の順番に並べ替えられる。D/A変換部168は、画面並べ替えバッファ167から供給された画像をD/A変換し、図示せぬディスプレイに出力し、表示させる。
スイッチ170は、インター処理される画像と参照される画像をフレームメモリ169から読み出し、動き予測・補償部173に出力するとともに、イントラ予測に用いられる画像をフレームメモリ169から読み出し、イントラ予測部171に供給する。
イントラ予測部171には、ヘッダ情報を復号して得られたイントラ予測モードを示す情報と、隣接画素のシフト量の情報が、可逆復号部162から供給される。イントラ予測部171は、これらの情報を、隣接画素内挿部172にも供給する。
イントラ予測部171は、これらの情報に基づき、必要に応じて、隣接画素内挿部172に隣接画素の位相をシフトさせ、隣接画素または位相がシフトされた隣接画素を用いて、予測画像を生成し、生成した予測画像を、スイッチ174に出力する。
隣接画素内挿部172は、イントラ予測部171から供給されるイントラ予測モードに応じたシフト方向に、イントラ予測部171から供給されるシフト量で、隣接画素の位相をシフトさせる。実際には、隣接画素内挿部172は、イントラ予測モードに応じたシフト方向について、隣接画素に対して、6タップのFIRフィルタをかけ、線形内挿することで、隣接画素の位相を、小数画素精度にシフトさせる。隣接画素内挿部172は、位相がシフトされた隣接画素を、イントラ予測部171に供給する。
動き予測・補償部173には、ヘッダ情報を復号して得られた情報(予測モード情報、動きベクトル情報、参照フレーム情報)が可逆復号部162から供給される。インター予測モードを示す情報が供給された場合、動き予測・補償部173は、動きベクトル情報と参照フレーム情報に基づいて画像に動き予測と補償処理を施し、予測画像を生成する。動き予測・補償部173は、インター予測モードにより生成された予測画像をスイッチ174に出力する。
スイッチ174は、動き予測・補償部173またはイントラ予測部171により生成された予測画像を選択し、演算部165に供給する。
[イントラ予測部および隣接画素内挿部の構成例]
図27は、イントラ予測部および隣接画素内挿部の詳細な構成例を示すブロック図である。
図27の例の場合、イントラ予測部171は、予測モード受信部181、シフト量受信部182、イントラ予測画像生成部183により構成されている。隣接画素内挿部172は、水平方向内挿部191および垂直方向内挿部192により構成されている。
予測モード受信部181は、可逆復号部162により復号されたイントラ予測モード情報を受信する。予測モード受信部181は、受信したイントラ予測モード情報を、イントラ予測画像生成部183、水平方向内挿部191、および垂直方向内挿部192に供給する。
シフト量受信部182は、可逆復号部162により復号されたシフト量(水平方向および垂直方向)の情報を受信する。シフト量受信部182は、受信したシフト量のうち、水平方向のシフト量を、水平方向内挿部191に供給し、垂直方向のシフト量を、垂直方向内挿部192に供給する。
イントラ予測画像生成部183には、予測モード受信部181により受信されたイントラ予測モードの情報が入力される。また、イントラ予測画像生成部183には、水平方向内挿部191から上部隣接画素または内挿された上部隣接画素の情報と、垂直方向内挿部192から左部隣接画素または内挿された左部隣接画素の情報が入力される。
イントラ予測画像生成部183は、入力されるイントラ予測モード情報が示す予測モードで、隣接画素または内挿された隣接画素の画素値を用いて、イントラ予測を行い、予測画像を生成し、生成した予測画像を、スイッチ174に出力する。
水平方向内挿部191は、予測モード受信部181からの予測モードに応じて、フレームメモリ169より上部隣接画素を読み出す。水平方向内挿部191は、6タップのFIRフィルタおよび線形内挿により、読み出した上部隣接画素に対して、シフト量受信部182からの水平方向のシフト量で、位相をシフトする。内挿された上部隣接画素または内挿が行われなかった上部隣接画素(すなわち、フレームメモリ169からの隣接画素)の情報は、イントラ予測画像生成部183に供給される。図27の場合、スイッチ170の図示は省略されているが、隣接画素は、フレームメモリ169から、スイッチ170を介して読み出される。
垂直方向内挿部192は、予測モード受信部181からの予測モードに応じて、フレームメモリ169より左部隣接画素を読み出す。垂直方向内挿部192は、6タップのFIRフィルタおよび線形内挿により、読み出した左部隣接画素に対して、シフト量受信部182からの垂直方向のシフト量で、位相をシフトする。線形内挿された左部隣接画素または内挿が行われなかった左部隣接画素(すなわち、フレームメモリ169からの隣接画素)の情報は、イントラ予測画像生成部183に供給される。
[画像復号装置の復号処理の説明]
次に、図28のフローチャートを参照して、画像復号装置151が実行する復号処理について説明する。
ステップS131において、蓄積バッファ161は伝送されてきた画像を蓄積する。ステップS132において、可逆復号部162は、蓄積バッファ161から供給される圧縮画像を復号する。すなわち、図2の可逆符号化部66により符号化されたIピクチャ、Pピクチャ、並びにBピクチャが復号される。
このとき、動きベクトル情報、参照フレーム情報、予測モード情報(イントラ予測モード、またはインター予測モードを示す情報)、フラグ情報、およびシフト量の情報なども復号される。
すなわち、予測モード情報がイントラ予測モード情報である場合、予測モード情報とシフト量の情報は、イントラ予測部171に供給される。予測モード情報がインター予測モード情報である場合、予測モード情報と対応する動きベクトル情報および参照フレーム情報は、動き予測・補償部173に供給される。
ステップS133において、逆量子化部163は可逆復号部162により復号された変換係数を、図2の量子化部65の特性に対応する特性で逆量子化する。ステップS134において逆直交変換部164は逆量子化部163により逆量子化された変換係数を、図2の直交変換部64の特性に対応する特性で逆直交変換する。これにより図2の直交変換部64の入力(演算部63の出力)に対応する差分情報が復号されたことになる。
ステップS135において、演算部165は、後述するステップS141の処理で選択され、スイッチ174を介して入力される予測画像を差分情報と加算する。これにより元の画像が復号される。ステップS136においてデブロックフィルタ166は、演算部165より出力された画像をフィルタリングする。これによりブロック歪みが除去される。ステップS137においてフレームメモリ169は、フィルタリングされた画像を記憶する。
ステップS138において、イントラ予測部171、および動き予測・補償部173は、可逆復号部162から供給される予測モード情報に対応して、それぞれ画像の予測処理を行う。
すなわち、可逆復号部162からイントラ予測モード情報が供給された場合、イントラ予測部171は、イントラ予測モードのイントラ予測処理を行う。このとき、イントラ予測部171は、イントラ予測モードに応じたシフト方向に、可逆復号部162から供給されるシフト量で位相がシフトされた隣接画素を用いて、イントラ予測処理を行う。
ステップS138における予測処理の詳細は、図29を参照して後述するが、この処理により、イントラ予測部171により生成された予測画像、または動き予測・補償部173により生成された予測画像がスイッチ174に供給される。
ステップS139において、スイッチ174は予測画像を選択する。すなわち、イントラ予測部171により生成された予測画像、または動き予測・補償部173により生成された予測画像供給される。したがって、供給された予測画像が選択されて演算部165に供給され、上述したように、ステップS134において逆直交変換部164の出力と加算される。
ステップS140において、画面並べ替えバッファ167は並べ替えを行う。すなわち画像符号化装置51の画面並べ替えバッファ62により符号化のために並べ替えられたフレームの順序が、元の表示の順序に並べ替えられる。
ステップS141において、D/A変換部168は、画面並べ替えバッファ167からの画像をD/A変換する。この画像が図示せぬディスプレイに出力され、画像が表示される。
[予測処理の説明]
次に、図29のフローチャートを参照して、図28のステップS138の予測処理を説明する。
予測モード受信部181は、ステップS171において、対象ブロックがイントラ符号化されているか否かを判定する。可逆復号部162からイントラ予測モード情報が予測モード受信部181に供給されると、予測モード受信部181は、ステップ171において、対象ブロックがイントラ符号化されていると判定し、処理は、ステップS172に進む。
予測モード受信部181は、ステップS172において、可逆復号部162からのイントラ予測モード情報を受信、取得する。予測モード受信部181は、受信したイントラ予測モード情報を、イントラ予測画像生成部183、水平方向内挿部191、および垂直方向内挿部192に供給する。
シフト量受信部182は、ステップS173において、可逆復号部162により復号された隣接画素のシフト量(水平方向および垂直方向)の情報を受信、取得する。シフト量受信部182は、受信したシフト量のうち、水平方向のシフト量を、水平方向内挿部191に供給し、垂直方向のシフト量を、垂直方向内挿部192に供給する。
水平方向内挿部191および垂直方向内挿部192は、フレームメモリ169より隣接画素を読み出し、ステップS174において、隣接画素内挿処理を実行する。ステップS174における隣接内挿処理の詳細は、図25を参照して上述した隣接内挿処理と基本的に同様の処理であるため、その説明と図示は省略される。
この処理により、予測モード受信部181からのイントラ予測モードに応じたシフト方向に、内挿された隣接画素、あるいは、イントラ予測モードに応じて内挿されなかった隣接画素が、イントラ予測画像生成部183に供給される。
すなわち、イントラ予測モードがモード2(DC 予測)の場合、水平方向内挿部191および垂直方向内挿部192は、隣接画素の内挿を行わず、フレームメモリ169から読み出された上部および左部隣接画素を、イントラ予測画像生成部183に供給する。
イントラ予測モードがモード0(Vertical 予測)、モード3(Diagonal_Down_Left 予測)、またはモード7(Vertical_Left 予測)の場合、水平方向の内挿のみが行われる。すなわち、水平方向内挿部191は、フレームメモリ169から読み出された上部隣接画素に対して、シフト量受信部182からの水平方向のシフト量で内挿し、内挿された上部隣接画素を、イントラ予測画像生成部183に供給する。このとき、垂直方向内挿部192は、左部隣接画素の内挿を行わず、フレームメモリ169から読み出された左部隣接画素を、イントラ予測画像生成部183に供給する。
イントラ予測モードがモード1(Horizontal 予測)、またはモード8(Horizontal_Up 予測)の場合、垂直方向のみの内挿が行われる。すなわち、垂直方向内挿部192は、フレームメモリ169から読み出された左部隣接画素に対して、シフト量受信部182からの垂直方向のシフト量で内挿し、内挿された左部隣接画素を、イントラ予測画像生成部183に供給する。このとき、水平方向内挿部191は、上部隣接画素の内挿を行わず、フレームメモリ169から読み出された上部隣接画素を、イントラ予測画像生成部183に供給する。
イントラ予測モードがその他の予測モードの場合、水平方向および垂直方向の内挿が行われる。すなわち、水平方向内挿部191は、フレームメモリ169から読み出された上部隣接画素に対して、シフト量受信部182からの水平方向のシフト量で内挿し、内挿された上部隣接画素を、イントラ予測画像生成部183に供給する。垂直方向内挿部192は、フレームメモリ169から読み出された左部隣接画素に対して、シフト量受信部182からの垂直方向のシフト量で内挿し、内挿された左部隣接画素を、イントラ予測画像生成部183に供給する。
ステップS175において、イントラ予測画像生成部183は、入力されるイントラ予測モード情報が示す予測モードで、水平方向内挿部191および垂直方向内挿部192からの隣接画素または内挿された隣接画素の画素値を用いて、イントラ予測を行う。このイントラ予測により、予測画像が生成され、生成された予測画像は、スイッチ174に出力される。
一方、ステップS171において、イントラ符号化されていないと判定された場合、処理は、ステップS176に進む。
処理対象の画像がインター処理される画像である場合、可逆復号部162からインター予測モード情報、参照フレーム情報、動きベクトル情報が動き予測・補償部173に供給される。ステップS176において、動き予測・補償部173は、可逆復号部162からのインター予測モード情報、参照フレーム情報、動きベクトル情報などを取得する。
そして、動き予測・補償部173は、ステップS177において、インター動き予測を行う。すなわち、処理対象の画像がインター予測処理される画像である場合、必要な画像がフレームメモリ169から読み出され、スイッチ170を介して動き予測・補償部173に供給される。ステップS177において動き予測・補償部173は、ステップS176で取得した動きベクトルに基づいて、インター予測モードの動き予測をし、予測画像を生成する。生成した予測画像は、スイッチ174に出力される。
以上のように、画像符号化装置51において、6タップのFIRフィルタと線形内挿により、小数画素精度の画素を求め、最適なシフト量を決定するようにしたので、イントラ予測モードにおいて用いられる画素値の選択肢を増やすことができる。これにより最適なイントラ予測を行うことができ、イントラ予測における符号化効率をさらに向上させることが可能である。
また、H.264/AVC方式においては、図4を参照して上述したインター動き予測補償にしか用いられなかった6タップのFIRフィルタの回路を、イントラ予測にも有効活用することができる。これにより、回路を増大させることなく、効率を改善することができる。
さらに、H.264/AVC方式において定められているイントラ予測の分解能である22.5°よりさらに細かい分解能でのイントラ予測を行うことができる。
なお、画像符号化装置51においては、非特許文献2に記載の提案と異なり、H.264/AVC方式のイントラ予測で用いられる対象ブロックに所定の位置で隣接する画素のみがイントラ予測で用いられる。すなわち、隣接画素バッファ81に読み出す画素は隣接画素のみでよい。
したがって、非特許文献2の提案における符号化対象となるブロックの隣接画素以外の画素も予測に用いることによるメモリアクセス回数や処理の増加、すなわち、処理効率の低下を回避することができる。
なお、上記説明においては、隣接画素内挿処理として、輝度信号のイントラ4×4予測モードの場合を例に説明したが、本発明は、イントラ8×8やイントラ16×16予測モードの場合にも適用することができる。また、本発明は、色差信号のイントラ予測モードの場合にも適用することができる。
なお、イントラ8×8予測モードの場合には、イントラ4×4予測モードの場合と同様に、モード2(DC prediction mode)に関しては、平均値処理を行うことになる。したがって、シフトを行ったとしても、符号化効率の向上には直接関与しないため、上述した動作は禁止され、行われない。
モード0(Vertical Prediction mode)、モード3(Diagonal_Down_Left Prediction mode)、またはモード7(Vertical_Left Prediction mode)に関しては、図18における上部隣接画素A0, A1, A2,…のみのシフトが候補となる。
モード1(Horizontal Prediction mode)、またはモード8(Horizontal_Up Prediction mode)に関しては、図18における左部隣接画素I0, I1, I2,…のみのシフトが候補となる。
その他のモード(モード4乃至6)に関しては、上部隣接画素および左部隣接画素の双方に関して、シフトを考慮する必要がある。
また、イントラ16×16予測モードおよび色差信号のイントラ予測モードの場合、Vertical Prediction modeに関しては、上部隣接画素の水平方向のシフトのみが行われる。Horizontal Prediction modeに関しては、左部隣接画素の垂直方向のシフトのみが行われる。DC Prediction modeに関しては、シフト処理は行われない。Plane Prediction modeに関しては、上部隣接画素の水平方向のシフトおよび左部隣接画素の垂直方向のシフトの両方が行われる。
さらに、非特許文献1に記載されているように、動き予測で1/8画素精度の内挿処理が行われている場合、本発明においても、1/8画素精度の内挿処理が行われる。
以上においては、符号化方式としてH.264/AVC方式を用いるようにしたが、本発明はこれに限らず、隣接画素を用いたイントラ予測を行う、その他の符号化方式/復号方式を適用することができる。
なお、本発明は、例えば、MPEG、H.26x等の様に、離散コサイン変換等の直交変換と動き補償によって圧縮された画像情報(ビットストリーム)を、衛星放送、ケーブルテレビジョン、インターネット、または携帯電話機などのネットワークメディアを介して受信する際に用いられる画像符号化装置および画像復号装置に適用することができる。また、本発明は、光、磁気ディスク、およびフラッシュメモリのような記憶メディア上で処理する際に用いられる画像符号化装置および画像復号装置に適用することができる。さらに、本発明は、それらの画像符号化装置および画像復号装置などに含まれる動き予測補償装置にも適用することができる。
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な汎用のパーソナルコンピュータなどが含まれる。
図30は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
コンピュータにおいて、CPU(Central Processing Unit)301、ROM(Read Only Memory)302、RAM(Random Access Memory)303は、バス304により相互に接続されている。
バス304には、さらに、入出力インタフェース305が接続されている。入出力インタフェース305には、入力部306、出力部307、記憶部308、通信部309、およびドライブ310が接続されている。
入力部306は、キーボード、マウス、マイクロフォンなどよりなる。出力部307は、ディスプレイ、スピーカなどよりなる。記憶部308は、ハードディスクや不揮発性のメモリなどよりなる。通信部309は、ネットワークインタフェースなどよりなる。ドライブ310は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア311を駆動する。
以上のように構成されるコンピュータでは、CPU301が、例えば、記憶部308に記憶されているプログラムを入出力インタフェース305及びバス304を介してRAM303にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU301)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア311に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル放送といった、有線または無線の伝送媒体を介して提供することができる。
コンピュータでは、プログラムは、リムーバブルメディア311をドライブ310に装着することにより、入出力インタフェース305を介して、記憶部308にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部309で受信し、記憶部308にインストールすることができる。その他、プログラムは、ROM302や記憶部308に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。