以下、発明を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態(画像符号化装置)
2.第2の実施の形態(画像復号装置)
3.第3の実施の形態(制御情報を先頭スライスのヘッダに含める例)
4.第4の実施の形態(制御情報を任意のスライスのヘッダに含める例)
5.第5の実施の形態(ポインタを利用する例)
6.第6の実施の形態(制御情報を複数のグループにまとめる例)
7.第7の実施の形態(グループ数を制御する例)
8.第8の実施の形態(要素毎に独立してグループ化する例)
9.第9の実施の形態(QALF)
10.第10の実施の形態(パーソナルコンピュータ)
11.第11の実施の形態(テレビジョン受像機)
12.第12の実施の形態(携帯電話機)
13.第13の実施の形態(ハードディスクレコーダ)
14.第14の実施の形態(カメラ)
<1.第1の実施の形態>
[デバイスの構成]
図1は、本発明を適用した画像処理装置としての画像符号化装置の一実施の形態の構成を表している。
図1に示される画像符号化装置100は、例えば、H.264及びMPEG4 Part10(Advanced Video Coding)(以下H.264/AVCと記す)方式で画像を圧縮符号化する符号化装置であり、さらに、適応ループフィルタを採用している。
図1の例において、画像符号化装置100は、A/D(Analog / Digital)変換部101、画面並べ替えバッファ102、演算部103、直交変換部104、量子化部105、可逆符号化部106、および蓄積バッファ107を有する。また、画像符号化装置100は、逆量子化部108、逆直交変換部109、演算部110、およびデブロックフィルタ111を有する。さらに、画像符号化装置100は、制御情報生成部112、適応フィルタ処理部113、およびフレームメモリ114を有する。また、画像符号化装置100は、イントラ予測部115、動き補償部116、動き予測部117、および予測画像選択部118を有する。さらに、画像符号化装置100は、レート制御部119を有する。
A/D変換部101は、入力された画像データをA/D変換し、画面並べ替えバッファ102に出力し、記憶させる。画面並べ替えバッファ102は、記憶した表示の順番のフレームの画像を、GOP(Group of Picture)構造に応じて、符号化のためのフレームの順番に並べ替える。
演算部103は、画面並べ替えバッファ102から読み出された画像から、予測画像選択部118により選択されたイントラ予測部115からの予測画像または動き補償部116からの予測画像を減算し、その差分情報を直交変換部104に出力する。直交変換部104は、演算部103からの差分情報に対して、離散コサイン変換、カルーネン・レーベ変換等の直交変換を施し、その変換係数を出力する。量子化部105は、直交変換部104が出力する変換係数を量子化する。
量子化部105の出力となる、量子化された変換係数は、可逆符号化部106に入力される。可逆符号化部106は、その量子化された変換係数に対して、可変長符号化、算術符号化等の可逆符号化を施す。
可逆符号化部106は、イントラ予測を示す情報などをイントラ予測部115から取得し、インター予測モードを示す情報などを動き予測部117から取得する。なお、イントラ予測を示す情報は、以下、イントラ予測モード情報とも称する。また、インター予測を示す情報モードを示す情報は、以下、インター予測モード情報とも称する。
可逆符号化部106は、さらに、適応フィルタ処理部113において行われる適応フィルタ処理の制御情報を、制御情報生成部112から取得する。
可逆符号化部106は、量子化された変換係数を符号化するとともに、適応フィルタ処理の制御情報、イントラ予測を示す情報やインター予測モードを示す情報、および量子化パラメータなどを、符号化データのヘッダ情報の一部とする(多重化する)。可逆符号化部106は、符号化して得られた符号化データを蓄積バッファ107に供給して蓄積させる。
例えば、可逆符号化部106においては、可変長符号化または算術符号化等の可逆符号化処理が行われる。可変長符号化としては、H.264/AVC方式で定められているCAVLC(Context-Adaptive Variable Length Coding)などがあげられる。算術符号化としては、CABAC(Context-Adaptive Binary Arithmetic Coding)などがあげられる。
蓄積バッファ107は、可逆符号化部106から供給された符号化データを、一時的に保持し、所定のタイミングにおいて、H.264/AVC方式で符号化された符号化画像として、例えば、後段の図示せぬ記録装置や伝送路などに出力する。
また、量子化部105において量子化された変換係数は、逆量子化部108にも入力される。逆量子化部108は、その量子化された変換係数を、量子化部105による量子化に対応する方法で逆量子化し、得られた変換係数を、逆直交変換部109に供給する。
逆直交変換部109は、供給された変換係数を、直交変換部104による直交変換処理に対応する方法で逆直交変換する。逆直交変換された出力は、演算部110に供給される。演算部110は、逆直交変換部109より供給された逆直交変換結果、すなわち、復元された差分情報に、予測画像選択部118から供給される予測画像を加算し、局部的に復号された画像(復号画像)を得る。その加算結果は、デブロックフィルタ111に供給される。
デブロックフィルタ111は、復号画像のブロック歪を除去する。デブロックフィルタ111は、その歪除去結果を制御情報生成部112および適応フィルタ処理部113に供給する。
制御情報生成部112は、デブロックフィルタ111から供給される復号画像と、画面並べ替えバッファ102から読み出された現在の入力画像を取得し、それらから、適応フィルタ処理部113において行われる適応フィルタの制御情報を生成する。詳細については後述するが、制御情報には、フィルタ係数、ブロックサイズ、およびフィルタブロックフラグ等が含まれる。
制御情報生成部112は、生成した制御情報を適応フィルタ処理部113に供給する。また、制御情報生成部112は、生成した制御情報を可逆符号化部106にも供給する。上述したように制御情報は、可逆符号化部106により、符号化データに含められる(多重化される)。つまり、制御情報は、符号化データとともに画像復号装置に送られる。
適応フィルタ処理部113は、制御情報生成部112から供給された制御情報のフィルタ係数、ブロックサイズ指定、およびフィルタブロックフラグ等を用いて、デブロックフィルタ111から供給される復号画像にフィルタ処理を行う。このフィルタとして、例えば、ウィナーフィルタ(Wiener Filter)が用いられる。もちろんウィナーフィルタ以外のフィルタを用いても良い。適応フィルタ処理部113は、フィルタ処理結果をフレームメモリ114に供給し、参照画像として蓄積させる。
フレームメモリ114は、所定のタイミングにおいて、蓄積されている参照画像を動き補償部116および動き予測部117に出力する。
この画像符号化装置100においては、例えば、画面並べ替えバッファ102からのIピクチャ、Bピクチャ、およびPピクチャが、イントラ予測(イントラ処理とも称する)する画像として、イントラ予測部115に供給される。また、画面並べ替えバッファ102から読み出されたBピクチャおよびPピクチャが、インター予測(インター処理とも称する)する画像として、動き予測部117に供給される。
イントラ予測部115は、画面並べ替えバッファ102から読み出されたイントラ予測する画像とフレームメモリ114から供給された参照画像に基づいて、候補となる全てのイントラ予測モードのイントラ予測処理を行い、予測画像を生成する。
イントラ予測部115において、当該ブロック/マクロブロックに対して適用されたイントラ予測モードに関する情報は、可逆符号化部106に伝送され、符号化データにおけるヘッダ情報の一部とされる。H.264画像情報符号化方式において、輝度信号に対しては、イントラ4×4予測モード、イントラ8×8予測モード及びイントラ16×16予測モードが定義されており、また、色差信号に関しては、それぞれのマクロブロックごとに、輝度信号とは独立した予測モードを定義することが可能である。イントラ4×4予測モードについては、それぞれの4×4輝度ブロックに対して1つのイントラ予測モードが定義されることになる。イントラ8×8予測モードについては、それぞれの8×8輝度ブロックに対して1つのイントラ予測モードが定義されることになる。イントラ16×16予測モード、並びに、色差信号に対しては、1つのマクロブロックに対してそれぞれ1つの予測モードが定義されることになる。
イントラ予測部115は、予測画像を生成したイントラ予測モードに対してコスト関数値を算出し、算出したコスト関数値が最小値を与えるイントラ予測モードを、最適イントラ予測モードとして選択する。イントラ予測部115は、最適イントラ予測モードで生成された予測画像を、予測画像選択部118に供給する。
動き予測部117は、インター符号化が行われる画像について、画面並べ替えバッファ102から供給される画像情報(入力画像)とフレームメモリ114から供給される参照フレームとなる画像情報(復号画像)とを取得し、動きベクトルを算出する。動き予測部117は、算出した動きベクトルを示す動きベクトル情報を可逆符号化部106に供給する。この動きベクトル情報は、可逆符号化部106により、符号化データに含められる(多重化される)。つまり、動きベクトル情報は、符号化データとともに画像復号装置に送られる。
また、動き予測部117は、動きベクトル情報を動き補償部116にも供給する。
動き補償部116は、動き予測部117から供給された動きベクトル情報に応じて動き補償処理を行い、インター予測画像情報を生成する。動き補償部116は、生成した予測画像情報を、予測画像選択部118に供給する。
予測画像選択部118は、イントラ符号化を行う画像の場合、イントラ予測部115の出力を演算部103に供給し、インター符号化を行う画像の場合、動き補償部116の出力を演算部103に供給する。
レート制御部119は、蓄積バッファ107に蓄積された圧縮画像に基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部105の量子化動作のレートを制御する。
MPEG(Moving Picture Experts Group)2においては、動き予測・補償処理の単位は、動き補償ブロックであり、動き補償ブロック毎に独立した動きベクトル情報を持つことができる。その動き補償ブロックのサイズには、フレーム動き補償モードの場合は16×16画素、フィールド動き補償モードの場合には第一フィールド、第二フィールドのそれぞれに対し、16×8画素がある。
これに対し、AVC(Advanced Video Coding)においては、図2上側に示すように、16×16画素により構成される一つのマクロブロックを、16×16、16×8、8×16若しくは8×8のいずれかのパーティションに分割し、それぞれ独立した動きベクトル情報を持つことが可能である。更に、8×8パーティションに関しては、図2下側に示されるとおり、8×8、8×4、4×8、4×4のいずれかのサブパーティションに分割し、それぞれ独立した動きベクトル情報を持つことが可能である。この動き補償ブロックを単位として動き予測・補償処理が行なわれる。
図3は、制御情報生成部112の主な構成例を示すブロック図である。
制御情報生成部112は、上述したように、適応フィルタ処理部113において行われる、ループフィルタである適応フィルタ(ALF(Adaptive Loop Filter))に用いられる制御情報を生成する。制御情報生成部112は、その制御情報として、例えば、フィルタ係数、ALFブロックサイズ、およびフィルタブロックフラグを生成する。
制御情報生成部112は、フィルタ係数算出部131、およびブロック情報生成部132を有する。
フィルタ係数算出部131は、デブロックフィルタ111から供給される復号画像と、画面並べ替えバッファ102から読み出された現在の入力画像を取得し、それらから、フレーム毎にALFのフィルタ係数を算出する。
ブロック情報生成部132は、ALFブロックサイズやフィルタブロックフラグ等のブロック情報を生成する。例えば、ブロック情報生成部132は、デブロックフィルタ111から供給される復号画像と、フィルタ係数算出部131により算出されたフィルタ係数に基づいて、ALFブロックサイズを決定する。また、例えば、ブロック情報生成部132は、それらの情報に基づいて、処理対象スライス内の各ALFブロックについてフィルタブロックフラグを生成する。
ここで、ブロック情報のALFブロックおよびフィルタブロックフラグについて説明する。図4は、ALFブロックおよびフィルタブロックフラグを説明する図である。
上述したように、適応フィルタは、フレーム毎にフィルタ係数が設定される。つまり、フレーム単位で最適なフィルタ処理が行われる。しかしながら、一般的に、フレーム画像は、全体が均一でなく、局所的に様々な特徴を有している。そのため、局所的には最適なフィルタ係数が異なる。したがって、上述したようにフレーム毎に決定されるフィルタ係数を用いたフィルタ処理では、フレーム全体では画質を改善するが、局所的には逆に悪化させてしまう恐れがあった。
そこで、局所的に画質が悪化する領域にはフィルタ処理を行わないようにするBALF(Block based Adaptive Loop Filter)が考えられた。
図4Aのフレーム151は、デブロックフィルタ処理後の復号画像を示す。ブロック情報生成部132は、図4Bに示されるように、それぞれが、局所的に行われる適応フィルタ処理の制御単位となる制御ブロックである、複数のALFブロック152を、このフレーム151の領域全体に敷き詰めるように隙間無く配置する。このALFブロック152が配置される領域は、フレーム151の領域と同一でなくても良いが、少なくともフレームの領域全体を含む。結果として、フレーム151の領域は、各ALFブロック152の領域(複数の制御領域)によって分割される。
ブロック情報生成部132は、ALFブロック152の水平方向のサイズ(両矢印153)と、垂直方向のサイズ(両矢印154)とを決定する。ALFブロックのサイズは、例えば、8×8、16×16、24×24、32×32、48×48、64×64、96×96、あるいは128×128のいずれか1つをスライス毎に指定することができる。なお、そのALFブロックのサイズを指定する情報をブロックサイズインデックスと称する。
ブロックサイズが決まれば、フレームサイズは固定であるので、1フレーム当たりのALFブロック数も決定される。
ブロック情報生成部132は、図4Cに示されるように、ALFブロック152毎に、フィルタ処理を行うか否かを制御するフィルタブロックフラグ155を設定する。例えば、適応フィルタにより画質が改善される領域については、値が「1」のフィルタブロックフラグ155が生成され、適応フィルタにより画質が悪化する領域については、値が「0」のフィルタブロックフラグ155が生成される。フィルタブロックフラグ155において、値「1」は、フィルタ処理を行うことを示す値であり、値「0」は、フィルタ処理を行わないことを示す値である。
適応フィルタ処理部113は、このフィルタブロックフラグ155の値に基づいて適応フィルタ処理を制御する。例えば、適応フィルタ処理部113は、フィルタブロックフラグ155の値が「1」のALFブロック152の領域にのみフィルタ処理を行い、フィルタブロックフラグ155の値が「0」のALFブロック152の領域にはフィルタ処理を行わない。
また、上述したブロックサイズインデックスとフィルタブロックフラグは、符号化データのスライスヘッダに含められ、画像符号化装置100から画像復号化装置へ送られる。ALFブロックの数に応じた1個以上のフィルタブロックフラグは、例えばラスタ・スキャンの順序でスライスヘッダに含められる。
従って、ALFブロックのサイズが小さい程、より細かなフィルタ制御が可能になり、より適切なALFフィルタが可能となる。ただし、ALFブロックのサイズを小さくすると、フィルタブロックフラグのビット量が増加する。つまり、ALFブロックのサイズが小さい程、符号化データの符号化効率が低減する。このように、適応フィルタの性能と符号化データの符号化効率は、トレードオフの関係にある。
ALFブロックの数は次の式(1)のように算出される。
式(1)においてNALFBLOCKは、ALFブロックの数を示す。また、NMBwは、ピクチャの水平方向のマクロブロック数を示し、NMBhは、ピクチャの垂直方向のマクロブック数を示す。さらに、NSIZEは、ALFブロックの一辺のサイズを示す。また、floor[x]は、xの少数点以下を切り捨てて、整数にする関数である。
ところで、H.264/AVCでは、1フレームを複数スライスに分割し、そのスライス毎に符号化データを出力するようにすることができる。図5は、マルチスライスの例を説明する図である。図5の例の場合、フレーム151は、スライス0、スライス1、およびスライス2の3つのスライスに分割されている。
フレームを複数のスライス領域に分割することは、画像圧縮情報の転送中のエラー耐性を高くするために有効な方法である。
BALFについて記載されている非特許文献2には、このマルチスライスについて開示されていない。つまり、ALFブロックをフレーム全体について設定することしか記載されていない。上述したようにALFブロックは、フレーム全体について設定される。つまり、スライス毎にフレーム全体についてのALFブロックが設定されることになり、スライスの領域外の不要なALFブロックが設定される恐れがあった。
例えば、図5に示されるスライス構成の例において、図6Aに示されるようにスライス0を処理する場合、図6Bに示されるように、枠161で示されるスライス0の領域に対して、フレーム151全体についてのALFブロック152が設定される。
同様に、例えば、図5に示されるスライス構成の例において図7Aに示されるようにスライス1を処理する場合、図7Bに示されるように、枠162で示されるスライス1の領域に対して、フレーム151全体についてのALFブロック152が設定される。
図6Bおよび図7Bにおいて斜線模様で示されるALFブロック152は、スライス0またはスライス1の領域外のブロックであり、スライス0またはスライス1の領域の処理に対して不要なブロックである。
このような不要なブロックやそのブロックのフラグの設定は無意味な処理である。そこで、不要に処理を増大させないように、図3の制御情報生成部112のブロック情報生成部132は、処理対象のスライスの領域を含むALFブロックおよびフィルタブロックフラグのみを生成する。
例えば、図5に示されるスライス構成の例において図8Aに示されるようにスライス1を処理する場合、ブロック情報生成部132は、図8Bに示されるように、枠162で示されるスライス1の領域に対して、その領域を含むALFブロック152のみを設定し、このALFブロック152についてのみフィルタブロックフラグを生成する。
図3に戻り、ブロック情報生成部132は、処理対象スライス領域特定部141、ALFブロック設定部142、処理対象ALFブロック領域特定部143、判定部144、およびフィルタブロックフラグ生成部145を有する。
処理対象スライス領域特定部141は、復号画像として供給される処理対象スライスの領域の、フレーム全体における位置を特定する。
ALFブロック設定部142は、ALFブロックサイズを決定し、フレーム全体のALFブロック152を設定する。これによりフレーム全体のALFブロック数も特定される。
処理対象ALFブロック領域特定部143は、ALFブロック設定部142により設定されたALFブロック152から、処理対象とするALFブロックを1つずつ選択し、選択した処理対象ALFブロックの領域の位置を特定する。
判定部144は、処理対象ALFブロックの領域が、処理対象スライスの領域を含むか否かを判定する。フィルタブロックフラグ生成部145は、判定部144によって、「処理対象スライスの領域を含む」と判定されたALFブロックのフィルタブロックフラグを生成する。フィルタブロックフラグ生成部145は、フィルタ係数算出部131により算出されたフィルタ係数を用いて、処理対象ALFブロックの領域に対して適応フィルタ処理を行い、フィルタ処理結果の画質が処理前より改善されているか否かによって、フィルタブロックフラグの値を決定する。
フィルタブロックフラグ生成部145は、フィルタブロックフラグおよびALFブロックサイズ等の制御情報を出力する。
図9は、図1の適応フィルタ処理部113の主な構成例を示すブロック図である。
適応フィルタ処理部113は、制御情報生成部112から供給される制御情報を用いて、デブロックフィルタ111から供給される復号画像にフィルタ処理を行う。
適応フィルタ処理部113は、図9に示されるように、制御部171、適応フィルタ172、および選択部173を有する。
制御部171は、適応フィルタ172および選択部173を制御する。例えば、制御部171は、制御情報生成部112から制御情報を取得する。また、制御部171は、取得した制御情報に含まれるフィルタ係数を適応フィルタ172に供給し、設定する。さらに、制御部171は、制御情報に含まれるALFブロックサイズに基づいて、処理対象とするALFブロックの領域の位置を特定する。また、制御部171は、制御情報に含まれるフィルタブロックフラグの値に基づいて、適応フィルタ172を制御し、各ALFブロックの領域を必要に応じてフィルタ処理させるとともに、選択部173の動作を制御する。
適応フィルタ172は、デブロックフィルタ111から供給される復号画像の、制御部171から処理対象ALFブロックとして指定される領域を、制御部171により設定されたフィルタ係数を用いてフィルタ処理する。適応フィルタ172は、フィルタ処理結果を選択部173に供給する。
選択部173は、制御部171に制御され、デブロックフィルタ111から供給された復号画像(適応フィルタ処理されていない復号画像)と、適応フィルタ172から供給された復号画像(適応フィルタ処理された復号画像)とのうち、いずれか一方を選択し、フレームメモリ114に供給し、参照画像として蓄積させる。
つまり、適応フィルタ処理部113は、デブロックフィルタ111から供給される復号画像の、フィルタブロックフラグによってフィルタ処理を行うことが示された領域(フィルタ処理によって画質が改善されると判定された領域)のみフィルタ処理を行う。
図10は、図1の可逆符号化部106の主な構成例を示すブロック図である。
可逆符号化部106は、上述したように、量子化部105から供給される量子化された係数データを可逆符号化して符号化データを生成するとともに、制御情報生成部112から供給される制御情報をその符号化データのスライスヘッダに埋め込む(記述する)。このとき、可逆符号化部106は、ピクチャ(フレーム)内の各スライスの制御情報をまとめ、その1ピクチャ(1フレーム)分の制御情報を、1つのスライスヘッダに埋め込む。このようにすることにより、可逆符号化部106は、各スライスの制御情報の間で重複する部分(冗長部分)を削除して、スライスヘッダに埋め込むことができる。これにより、可逆符号化部106は、各スライスの制御情報をそれぞれ符号化データに埋め込む場合よりも、符号化データの符号化効率を向上させることができる。
可逆符号化部106は、図10に示されるように、符号化部181、符号化データ保持部182、制御情報保持部183、および制御情報付加部184を有する。
符号化部181は、各スライスの画像データ(量子化された係数データ)を可逆符号化し、符号化データを生成する。各スライスの符号化データは、符号化データ保持部182に保持される。符号化データ保持部182は、少なくとも1ピクチャ分の符号化データを保持することができる。
制御情報保持部183は、制御情報生成部112により生成されるスライス毎の制御情報を取得し、保持する。制御情報保持部183は、少なくとも1ピクチャ分の制御情報を保持することができる。制御情報付加部184は、符号化データ保持部182に保持される符号化データの、ピクチャ内で最初に出力されるスライスのヘッダ情報に、制御情報保持部183に保持されている制御情報を埋め込み、蓄積バッファ107に供給する。
このとき、制御情報付加部184は、制御情報保持部183に保持されている処理対象のピクチャの制御情報をまとめ、冗長部分を削除して1ピクチャ分の制御情報を生成し、それを符号化データのスライスヘッダに埋め込む。
例えば、図11に示されるように、フレーム151がスライス0、スライス1、およびスライス2よりなり、制御情報生成部112において、スライス0に対して制御情報191−1が生成され、スライス1に対して制御情報191−2が生成され、スライス2に対して制御情報191−3が生成されるとする。
また、符号化データ194は、スライス1、スライス0、スライス2の順に出力されるとする。つまり、スライス1ヘッダ192−1、スライス1データ193−1、スライス0ヘッダ192−2、スライス0データ193−2、スライス2ヘッダ192−3、スライス2データ193−3の順に符号化データ194が出力されるとする。
このとき、制御情報付加部184は、最初に出力されるスライス1のヘッダ(スライスヘッダ)であるスライス1ヘッダ192−1に、フレーム151の制御情報191−1乃至制御情報191−3を全て埋め込む。このとき、制御情報付加部184は、制御情報191−1乃至制御情報191−3をまとめ、冗長部分を削除し、フレーム151全体に対応する(1ピクチャ分の)制御情報191(図示せず)を生成し、その制御情報191をスライス1ヘッダ192−1に埋め込む。
制御情報付加部184は、例えば、図12Aおよび図12Bに示されるようなシンタックスに従って、制御情報をスライスヘッダに埋め込む。図12Aは、スライスヘッダのシンタックスの例を示しており、図12Bは、制御情報の部分についてのシンタックスの例を示している。図12Bに示されるように、制御情報付加部184は、フレーム151全ての制御ブロックのフィルタブロックフラグを1つのスライスヘッダに埋め込む。
[処理の流れ]
次に、以上のように構成される各部を用いた処理の流れについて説明する。最初に、画像符号化装置100により行われる符号化処理の流れの例を、図13のフローチャートを参照して説明する。
ステップS101において、A/D変換部101は入力された画像をA/D変換する。ステップS102において、画面並べ替えバッファ102は、A/D変換された画像を記憶し、各ピクチャの表示する順番から符号化する順番への並べ替えを行う。
ステップS103において、演算部103は、ステップS102の処理により並び替えられた画像と、予測画像との差分を演算する。予測画像は、インター予測する場合は動き補償部116から、イントラ予測する場合はイントラ予測部115から、それぞれ予測画像選択部118を介して演算部103に供給される。
差分データは元の画像データに較べてデータ量が小さくなっている。したがって、画像をそのまま符号化する場合に較べて、データ量を圧縮することができる。
ステップS104において、直交変換部104は、ステップS103の処理により生成された差分情報を直交変換する。具体的には、離散コサイン変換、カルーネン・レーベ変換等の直交変換が行われ、変換係数が出力される。ステップS105において、量子化部105は変換係数を量子化する。この量子化に際しては、後述するステップS119の処理で説明されるように、レートが制御される。
以上のようにして量子化された差分情報は、次のようにして局部的に復号される。すなわち、ステップS106において、逆量子化部108は量子化部105により量子化された変換係数を量子化部105の特性に対応する特性で逆量子化する。ステップS107において、逆直交変換部109は逆量子化部108により逆量子化された変換係数を直交変換部104の特性に対応する特性で逆直交変換する。
ステップS108において、演算部110は、予測画像選択部118を介して入力される予測画像を局部的に復号された差分情報に加算し、局部的に復号された画像(演算部103への入力に対応する画像)を生成する。ステップS109においてデブロックフィルタ111は、演算部110より出力された画像をフィルタリングする。これによりブロック歪みが除去される。
以上の処理が、1スライス分行われると、ステップS110において、制御情報生成部112は、適応フィルタ処理に用いられる制御情報を生成する。制御情報の生成処理の詳細については後述する。
ステップS110の処理により、フィルタ係数、ALFブロックサイズ、およびフィルタブロックフラグ等の制御情報が生成されると、適応フィルタ処理部113は、ステップS111において、その制御情報を用いて、ステップS109の処理によりデブロックフィルタ処理された復号画像に対して適応フィルタ処理を行う。この適応フィルタ処理の詳細については後述する。
ステップS112において、フレームメモリ114は、ステップS111において適応フィルタ処理された画像を記憶する。
ステップS113において、イントラ予測部115は、イントラ予測モードのイントラ予測処理を行う。ステップS114において、動き予測部117および動き補償部116は、インター予測モードのインター動き予測・補償処理を行う。
ステップS115において、予測画像選択部118は、処理対象フレームの予測モードに応じて、イントラ予測処理により生成された予測画像、または、インター動き予測・補償処理により生成された予測画像のうち、いずれか一方を選択する。予測画像選択部118は、選択した予測画像を演算部103および演算部110に供給する。この予測画像が、上述したように、ステップS103、およびステップS108の演算に利用される。
ステップS116において、可逆符号化部106は量子化部105より出力された量子化された変換係数を符号化する可逆符号化処理を行う。すなわち、差分画像が可変長符号化、算術符号化等の可逆符号化され、圧縮される。このとき、可逆符号化部106は、ステップS110において生成された制御情報、ステップS113のイントラ予測処理のイントラ予測モード情報、および、ステップS114のインター動き予測・補償処理のインター予測モード等のメタデータをスライスヘッダに埋め込む(記述する)。このメタデータは、画像復号時に読み出され利用される。この可逆符号化処理の詳細については後述する。
ステップS117において蓄積バッファ107は、符号化データを蓄積する。蓄積バッファ107に蓄積された符号化データは、適宜読み出され、伝送路を介して復号側に伝送される。
ステップS118においてレート制御部119は、蓄積バッファ107に蓄積された符号化データに基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部105の量子化動作のレートを制御する。
次に、図13のステップS110において制御情報生成部112により実行される制御情報生成処理の流れの例を、図14のフローチャートを参照して説明する。
制御情報生成処理が開始されると、制御情報生成部112のフィルタ係数算出部131は、ステップS131において、画面並べ替えバッファ102から供給される入力画像と、デブロックフィルタ111から供給されるデブロックフィルタ処理された復号画像を用いてフィルタ係数を算出する。例えば、フィルタ係数算出部131は、入力画像と復号画像の残差が最小となるようにフィルタ係数の値を決定する。
フィルタ係数が算出されると、ブロック情報生成部132は、ステップS132において、ALFブロックサイズやフィルタブロックフラグを含むブロック情報の生成を行う。ブロック情報生成処理の詳細については後述する。ブロック情報が生成されると、図13のステップS110に戻り、ステップS111以降の処理が実行される。
なお、ステップS131において行われるフィルタ係数の算出は、フレーム単位で行うようにしてもよい。その場合、ステップS131の処理は、フレーム内の所定のスライス(例えば、フレーム内で識別番号が所定の値の(例えば「0」の)スライス、若しくは、フレーム内で最初に処理されるスライス等)においてのみ行われ、その他のスライスにおいては、その値が流用されるようにしてもよい。また、フィルタ係数の算出には、任意の画像を利用することができる。例えば、過去のフレーム画像に基づいて算出するようにしてもよい。
次に、図15のフローチャートを参照して、図14のステップS132において実行されるブロック情報生成処理の流れの例を説明する。
ブロック情報生成処理が開始されると、処理対象スライス領域特定部141は、ステップS151において、処理対象スライスの領域を特定する。
処理対象である当該スライスの領域を知るためには、当該スライスに含まれているマクロブロックを知り、そこからそのマクロブロックに含まれる画素を知ることで分かる。処理対象スライス領域特定部141は、スライスヘッダから当該スライスの先頭マクロブロックアドレスを得る。
ここで先頭マクロブロックアドレスとは、画面の左上からラスタ・スキャン順序でマクロブロックに対して付けられた番号である。図5に示されるように、画像(フレーム151)の左上のマクロブロックアドレスは0となる。スライス0は、フレーム151の左上から開始されているので、スライス0の先頭マクロブロック156−1のマクロブロックアドレスは0となる。この順序に従ってスライス0の最終マクロブロック156−2のマクロブロックアドレスをE0とする。また、このスライス0と同様に、スライス1の先頭マクロブロック157−1のマクロブロックアドレスをS1とし、最終マクロブロック157−2のマクロブロックアドレスをE1とする。さらに、スライス2の先頭マクロブロック158−1のマクロブロックアドレスをS2とし、最終マクロブロック158−2のマクロブロックアドレスをE2とする。
当該スライスをデコードしていくと、1つのマクロブロックのデコード処理が完了する毎にマクロブロックアドレスは1追加されてゆき、やがて当該スライスの最終マクロブックに到達する。最終マクロブロックにはスライスの最後のマクロブロックであるフラグがセットされている。これらによって、当該スライスが保有しているマクロブロックアドレスが全て分かる。すなわち、先頭マクロブロックアドレスから、最終マクロブロックアドレスまでとなる。
ところで、1フレームの画像サイズは、AVCストリーム(画像圧縮情報)のシーケンスパラメータセット(SPS(Sequence Parameter Set))において、マクロブロックの数により示される。pic_height_in_map_units_minus1は、画像の縦方向のマクロブロック数を示す。pic_width_in_mbs_minus1は、画像の横方向のマクロブロック数を示す。
従って、マクロブロックアドレスからそのマクロブロックの位置は、以下の式(2)および式(3)で示される。
mbx=macro block address % pic_width_in_mbs_minus1 ・・・(2)
mby=floor[ macro block address / pic_width_in_mbs_minus1 ] ・・・(3)
式(2)および式(3)において、mbxは、マクロブロックが左から何番目かを示し、mbyは、マクロブロックが上から何番目かを示す。また、floor[z]は、zの小数点以下を切り捨てて整数にし、A%Bは、AをBで割った余りの数を示す。
マクロブロックのサイズは16×16画素と決められているとすると、マクロブロックの左上の画素の縦方向および横方向の位置は、(16×mbx,16×mby)となり、そのマクロブロックに含まれる画素は、その左上の画素位置から下方向に16画素および右方向に16画素の範囲に含まれる画素となる。ここまでで、当該スライスの画素が全て分かる。すなわち、処理対象スライスの領域が特定される。
図15のステップS152において、ALFブロック設定部142は、ALFブロックサイズを決定する。ステップS153において、ALFブロック設定部142は、フレーム内ALFブロック数を決定する。フレームの画像サイズは予め定められているので、ALFブロックサイズが決定されると、フレームの左上を原点としてALFブロックを敷き詰めるために必要なALFブロックの数(フレーム内ALFブロック数)も算出することができる。ALFブロックの縦方向のサイズ(画素数)と横方向のサイズ(画素数)の設定値は予め用意されているので、ALFブロック設定部142は、その設定値に従って各ALFブロックのサイズとALFブロック数を決定し、ALFブロックを復号画像に対して配置する。
なお、ALFブロックの数は、以下の式(4)および式(5)により算出される。
num_alf_block_x=floor[(16×(pic_width_in_mbs_minus1+1)+(alf_block_size−1))
/alf_block_size] ・・・(4)
num_alf_block_y=floor[(16×(pic_height_in_map_units_minus1+1)
+(alf_block_size−1))/alf_block_size] ・・・(5)
式(4)および式(5)において、num_alf_block_xおよびnum_alf_block_yは、それぞれ、画像に含まれるALFブロックの横と縦の数である。また、alf_block_sizeは、ALFブロックの一辺のサイズを示す。ここでは説明の簡略化のため、ALFブロックは正方形であるものとする。もちろん、ALFブロックの縦方向のサイズと横方向のサイズとが互いに異なるようにしてもよい。
ステップS154において、処理対象ALFブロック領域特定部143は、処理対象ALFブロックを決定する。ステップS155において、処理対象ALFブロック領域特定部143は、その処理対象ALFブロックの領域を特定する。
i番目のALFブロックの位置は、以下の式(6)および式(7)で示される。
alf_block_x=i % (num_alf_block_x−1) ・・・(6)
alf_block_y=floor[i/(num_alf_block_x−1)] ・・・(7)
式(6)および式(7)において、alf_block_xとalf_block_yは、それぞれ、i番目のALFブロックが横方向と縦方向に何番目であるかを示している。i番目のALFブロックの左上の画素の位置は、alf_block_xとaof_block_yのそれぞれに、alf_block_sizeを掛けた位置となる。すなわち、横方向は16×alf_block_xとなり、縦方向は16×alf_block_yとなる。従って、i番目のALFブロックの領域は、左上のその画素からalf_block_size×alf_block_sizeの範囲となる。
ステップS156において、判定部144は、以上のように特定された処理対象ALFブロックの領域内に、処理対象スライスの領域が含まれるか否かを判定する。
処理対象ALFブロックの領域内に処理対象スライスの領域が含まれると判定された場合、ステップS157に進む。ステップS157においてフィルタブロックフラグ生成部145は、処理対象ALFブロックが処理対象スライスにとって必要なALFブロックであるので、そのALFブロックについてフィルタブロックフラグを生成する。ステップS158において、フィルタブロックフラグ生成部145は、生成したフィルタブロックフラグを出力する。
ステップS158の処理が終了するとステップS159に進む。また、ステップS156において、処理対象ALFブロックの領域内に処理対象スライスの領域が含まれないと判定された場合、そのALFブロックは、処理対象スライスにとって不要であるのでステップS159に進む。
ステップS159において、処理対象ALFブロック領域特定部143は、フレーム内ALFブロックを全て処理したか否かを判定し、処理していないと判定された場合、ステップS154に戻り、新たなALFブロックを処理対象とし、それ以降の処理を繰り返す。処理対象ALFブロック領域特定部143は、このループ処理を繰り返す度に、フレームの領域に敷き詰められたALFブロック群の中からALFブロックを、処理対象ALFブロックとして、左上のALFブロックからラスタ・スキャン順に1つずつ選択する。
また、ステップS159において、フレーム内ALFブロックを全て処理したと判定された場合、ブロック情報生成処理が終了され、図14のステップS132に戻り、制御情報生成処理が終了され、図13のステップS110に戻り、ステップS111以降の処理が行われる。
なお、以上において、ALFブロックをフレーム画像の領域に敷き詰めるように配置する際に、フレームの左上を原点とするように説明したが、この原点の位置は任意である。例えば、フレームの左下、右下、右上、または中心であってもよい。ただし、この原点の位置およびALFブロックの並べ方は、符号化処理と復号処理とで共通とするように予め取り決めておく必要がある。
また、以上においては、処理対象ALFブロックを選択する順を、左上からラスタ・スキャン順とするように説明したが、この選択順および開始位置は任意である。
次に、図16のフローチャートを参照して、図13のステップS111において実行される適応フィルタ処理の流れの例を説明する。
適応フィルタ処理が開始されると、適応フィルタ172および選択部173には、処理対象スライスの復号画像が供給される。ステップS171において、制御部171は、その処理対象スライスの領域を特定する。制御部171は、図15のステップS151の処理の場合と同様に、スライスヘッダの当該スライスの先頭マクロブロックアドレスを取得し、さらに最終マクロブロックを示すフラグを検出し、先頭のマクロブロックアドレスから最終マクロブロックアドレスまでの領域を処理対象スライスの領域として特定する。
制御部171は、ステップS172において、制御情報生成部112により生成されたフィルタ係数を取得し、そのフィルタ係数を適応フィルタ172に設定する。ステップS173において、制御部171は、制御情報生成部112により決定されたALFブロックサイズを取得し、フレームの領域全体に対してそのALFブロックサイズのALFブロックを敷き詰めるように設定(配置)する。
ステップS174において、制御部171は、このように設定されたALFブロック群のうち、未処理のALFブロックの中から1つを、図15のステップS154の場合と同様に、処理対象ALFブロックに決定する。このALFブロックの選択順は、予め定められており、制御情報生成部112における選択順と共通である。
ステップS175において、制御部171は、決定した処理対象ALFブロックの領域を、図15のステップS155の場合と同様に特定する。
ステップS176において、制御部171は、図15のステップS156の場合と同様に、処理対象ALFブロックの領域内に処理対象スライスの領域が含まれるか否かを判定する。含まれると判定された場合、ステップS177に進む。
ステップS177において、制御部171は、制御情報生成部112において生成された処理対象ALFブロックのフィルタブロックフラグを取得する。制御情報生成部112が、上述したようにフィルタブロックフラグを生成するので、実際には、処理対象スライスの領域を含むALFブロックについてのみフィルタブロックフラグが供給される。ALFブロックの処理順が制御情報生成部112と共通であるので、フィルタブロックフラグは、ALFブロックの処理順に供給される。したがって、制御部171は、その供給順にフィルタブロックフラグを取得(採用)することにより、処理対象ALFブロックのフィルタブロックフラグを取得(採用)することができる。
なお、フィルタブロックフラグの供給タイミングと、制御部171によるフィルタブロックフラグの取得タイミングは、一致していなくても良い。つまり、制御部171が、制御情報生成部112から供給されたフィルタブロックフラグを、例えば内蔵するバッファ等に一時的に保持し、ステップS177の処理において、そのバッファからフィルタブロックフラグを読み出すようにしてもよい。その場合も、フィルタブロックフラグの読み出し順は、制御情報生成部112から供給される順、すなわち、バッファへの蓄積順と同一となるようにするだけで、制御部171は、処理対象ALFブロックのフィルタブロックフラグを取得することができる。
ステップS178において、制御部171は、フィルタブロックフラグの値が1であるか否かを判定する。フィルタブロックフラグの値が1であり、処理対象ALFブロックの領域についてフィルタ処理を行うように指示されている場合、ステップS179に進む。ステップS179において、適応フィルタ172は、制御部171に制御されて、処理対象ALFブロックにフィルタ処理を行う。ステップS179の処理が終了するとステップS180に進む。この場合、選択部173は、ステップS180において、制御部171に制御されて適応フィルタ172の出力を選択し、フレームメモリ114に出力する。つまり、フィルタ処理された復号画像(の一部の領域)がフレームメモリ114に蓄積される。ステップS180の処理が終了するとステップS181に進む。
また、ステップS178において、フィルタブロックフラグの値が0であり、処理対象ALFブロックの領域についてフィルタ処理が行われないように指示されている場合、ステップS179の処理を省略し、ステップS180に進む。この場合、選択部173は、ステップS180において、制御部171に制御されてデブロックフィルタ111の出力を選択し、フレームメモリ114に出力する。つまり、フィルタ処理されていない復号画像(の一部の領域)がフレームメモリ114に蓄積される。ステップS180の処理が終了するとステップS181に進む。
また、ステップS176において、処理対象ALFブロックの領域内に処理対象スライスの領域が含まれないと判定された場合、処理対象ALFブロックは処理対象スライスに関係の無いALFブロックであるので、ステップS177乃至ステップS180の処理を省略し、ステップS181に進む。
ステップS181において、制御部171は、フレーム内ALFブロックを全て処理したか否かを判定する。未処理のALFブロックが存在すると判定された場合、ステップS174に戻り、新たな処理対象ALFブロックについてそれ以降の処理を繰り返す。制御部171は、このループ処理を繰り返す度に、フレームの領域に敷き詰められたALFブロック群の中からALFブロックを、処理対象ALFブロックとして、左上のALFブロックからラスタ・スキャン順に1つずつ選択する。
また、ステップS181において、フレーム内ALFブロックを全て処理したと判定された場合、適応フィルタ処理が終了され、図13のステップS111に戻り、ステップS112以降の処理が行われる。
以上のように適応フィルタ処理を行うことにより、適応フィルタ処理部113は、フレームに形成される複数のスライスの中の処理対象スライスに必要な、フレーム内の一部のALFブロックのフィルタブロックフラグに基づいて、処理対象スライスに対するフィルタ処理を適切に実行することができる。これにより、適応フィルタ処理部113は、処理対象スライスの、デブロックフィルタにより取りきれなかったブロック歪みや量子化による歪みを低減することができる。
次に、図17のフローチャートを参照して、図13のステップS116において実行される可逆符号化処理の流れの例を説明する。
可逆符号化処理が開始されると、ステップS191において、可逆符号化部106の符号化部181は、供給される画像データ(量子化された係数データ)を順次符号化することにより、処理対象スライスを符号化し、符号化データを生成する。
ステップS192において、符号化データ保持部182は、ステップS191において生成された符号化データを保持する。ステップS193において、制御情報保持部183は、制御情報生成部112より供給される、符号化データが属するスライス(処理対象スライス)に対応する制御情報を保持する。
以上のようなステップS191乃至ステップS193の各処理がフレーム内の各スライスについて行われる。1スライス分の処理が終了すると、ステップS194において、制御情報付加部184は、符号化部181がフレーム内の全てのスライスについて画像データ(量子化された係数データ)を符号化したか否かを判定する。未処理のスライスが存在すると判定された場合、ステップS191に戻り、それ以降の処理が繰り返される。
ステップS194において、符号化部181によってフレーム内の全てのスライスが符号化されたと判定された場合、ステップS195に進む。
ステップS195において、制御情報付加部184は、制御情報保持部183に保持されている制御情報を、符号化データ保持部182に保持されている1フレーム分の符号化データの、最初に伝送されるスライスのスライスヘッダに埋め込む。このとき、制御情報付加部184は、制御情報保持部183に保持されている制御情報を取得してまとめ、符号化データが属するフレーム(ピクチャ)の1ピクチャ分の制御情報を生成する。制御情報付加部184は、その1ピクチャ分の制御情報を、スライスヘッダに埋め込む。
つまり、複数のスライスからなる1フレーム分の符号化データには、その中の1つのスライスヘッダに、1フレーム(ピクチャ)分の制御情報(フィルタ係数、ALFブロックサイズ、およびフィルタブロックフラグ等)が付加される(埋め込まれる)。
つまり、複数のスライスの制御情報が1つのスライスヘッダに付加される(他のスライスの制御情報も付加される)。制御情報をスライス毎に分けて複数のスライスヘッダに埋め込む場合、各制御情報に重複する内容が生じてしまうが、制御情報付加部184は、このように1フレーム分の制御情報を1つのスライスヘッダにまとめて付加するので、そのような冗長性を低減し、符号化効率を向上させることができる。
なお、ここで「付加する」とは、任意の形態で制御情報を符号化データに関連付けることを示す。例えば、符号化データのシンタックスとして記述するようにしてもよいし、ユーザデータとして記述するようにしてもよい。また、ブロック情報をメタデータとして符号化データとリンクされた状態にするようにしてもよい。つまり、「付加」は、「埋め込み」、「記述」、「多重化」、および「連結」等を含む。
制御情報を符号化データに付加した、制御情報付加部184は、ステップS196において、符号化データを所定順に出力する。1ピクチャ分の符号化データを出力すると、可逆符号化部106は、可逆符号化処理を終了し、図13のステップS116に戻り、ステップS117以降の処理に進む。
以上のような可逆符号化処理を行うことにより、画像符号化装置100は、符号化時または復号時のフィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。例えば、画像の各フレームを複数のスライスに分けて処理する場合においても、画像符号化装置100は、符号化効率の低減を抑制することができる。
<2.第2の実施の形態>
[デバイスの構成]
次に、第1の実施の形態において説明した画像符号化装置100に対応する画像復号装置について説明する。図18は、本発明を適用した画像処理装置としての画像復号装置の一実施の形態の構成例を示すブロック図である。
画像復号装置200は、画像符号化装置100より出力される符号化データを復号し、復号画像を生成する。
画像復号装置200は、蓄積バッファ201、可逆復号部202、逆量子化部203、逆直交変換部204、演算部205、およびデブロックフィルタ206を有する。また、画像復号装置200は、適応フィルタ処理部207を有する。さらに、画像復号装置200は、画面並べ替えバッファ208、およびD/A(Digital / Analog l)変換部209を有する。また、画像復号装置200は、フレームメモリ210、イントラ予測部211、動き補償部212、および選択部213を有する。
蓄積バッファ201は、伝送されてきた画像圧縮情報を蓄積する。可逆復号部202は、蓄積バッファ201より供給された、図1の可逆符号化部106により符号化された情報を、可逆符号化部106の符号化方式に対応する方式で復号する。
当該マクロブロックがイントラ符号化されたものである場合、可逆復号部202は、符号化データのヘッダ部に格納されたイントラ予測モード情報を抽出し、イントラ予測部211へ伝送する。また、当該マクロブロックがインター符号化されたものである場合、可逆復号部202は、符号化データのヘッダ部に格納された動きベクトル情報を抽出し、動き補償部212へ転送する。
また、可逆復号部202は、符号化データの、フレーム内で最初に供給されるスライスのスライスヘッダから、適応フィルタ用の1ピクチャ分の制御情報(制御情報生成部112により生成された制御情報)を抽出し、適応フィルタ処理部207に供給する。
逆量子化部203は可逆復号部202により復号された画像を、図1の量子化部105の量子化方式に対応する方式で逆量子化する。逆直交変換部204は、図1の直交変換部104の直交変換方式に対応する方式で逆量子化部203の出力を逆直交変換する。
演算部205は、逆直交変換された差分情報に、選択部213から供給される予測画像を加算し、復号画像を生成する。デブロックフィルタ206は、その加算処理されて生成された復号画像のブロック歪を除去する。
適応フィルタ処理部207は、可逆復号部202より供給された1ピクチャ分の制御情報に含まれるフィルタ係数、ALFブロックサイズ、およびフィルタブロックフラグ等の情報に基づいて、デブロックフィルタ206より供給される画像に対してフィルタ処理を行う。適応フィルタ処理部207は、図1の適応フィルタ処理部113と同様の適応フィルタ処理を行う。これにより、適応フィルタ処理部207は、デブロックフィルタ206では取りきれなかったブロック歪や量子化による歪を低減することができる。
適応フィルタ処理部207は、フィルタ処理後の画像をフレームメモリ210に供給し、参照画像情報として蓄積させるとともに、画面並べ替えバッファ208に出力する。
画面並べ替えバッファ208は、画像の並べ替えを行う。すなわち、図1の画面並べ替えバッファ102により符号化の順番のために並べ替えられたフレームの順番が、元の表示の順番に並べ替えられる。D/A変換部209は、画面並べ替えバッファ208から供給された画像をD/A変換し、出力する。例えば、D/A変換部209は、D/A変換して得られた出力信号を図示せぬディスプレイに出力し、画像を表示させる。
イントラ予測部211は、当該フレームがイントラ符号化されたものである場合、可逆復号部202から供給される情報に基づいて、予測画像を生成し、生成した予測画像を、選択部213に出力する。
動き補償部212は、当該フレームがインター符号化されたものである場合、可逆復号部202から供給された動きベクトル情報に基づき、フレームメモリ210に格納された参照画像情報に対して動き補償処理を行う。
選択部213は、当該マクロブロックがイントラ符号化されたものである場合、イントラ予測部211に接続し、イントラ予測部211より供給される画像を予測画像として演算部205に供給する。また、当該マクロブロックがインター符号化されたものである場合、選択部213は、動き補償部212に接続し、動き補償部212から供給される画像を予測画像として演算部205に供給する。
図19は、図18の可逆復号部202の詳細な構成例を示すブロック図である。なお、説明の便宜上、イントラ予測モード情報および動きベクトル情報の抽出に関する構成についての説明は省略する。
図19に示されるように、可逆復号部202は、制御情報抽出部221および復号部222を有する。制御情報抽出部221は、蓄積バッファ201から符号化データを取得し、フレーム内で最初に供給されるスライスのスライスヘッダから、1ピクチャ分の制御情報を抽出し、適応フィルタ処理部207に供給する。
復号部222は、制御情報抽出部221から供給される符号化データを、可逆符号化部106の符号化方式に対応する復号方式で復号し、復号データ(量子化された係数データ)を生成する。復号部222は、生成した復号データを逆量子化部203に供給する。
このように、制御情報抽出部221が符号化データのスライスヘッダに埋め込まれた制御情報を抽出し、適応フィルタ処理部207に供給するので、適応フィルタ処理部207は、その制御情報に基づいて、適切に適応フィルタ処理を行うことができる。つまり、適応フィルタ処理部207は、画像符号化装置100の適応フィルタ処理部113と同様に適応フィルタ処理を行うことができる。
[処理の流れ]
図20のフローチャートを参照して、この画像復号装置200が実行する復号処理の流れの例を説明する。
ステップS201において、蓄積バッファ201は伝送されてきた画像(符号化データ)を蓄積する。ステップS202において、可逆復号部202は、蓄積バッファ201から供給される符号化データを可逆復号する可逆復号処理を行う。
詳細については後述するが、この可逆復号処理により、図1の可逆符号化部106により符号化されたIピクチャ、Pピクチャ、並びにBピクチャが復号される。なお、このとき、動きベクトル情報、参照フレーム情報、予測モード情報(イントラ予測モード、またはインター予測モードを示す情報)などの抽出も行われる。
すなわち、予測モード情報がイントラ予測モード情報である場合、予測モード情報は、イントラ予測部211に供給される。予測モード情報がインター予測モード情報である場合、予測モード情報と対応する動きベクトル情報および参照フレーム情報は、動き補償部212に供給される。
また、この可逆復号処理により、符号化データのスライスヘッダから1ピクチャ分の適応フィルタ処理用の制御情報が抽出され、適応フィルタ処理部207に供給される。
ステップS203において、逆量子化部203は、ステップS202において復号された変換係数を、図1の量子化部105の特性に対応する特性で逆量子化する。ステップS204において逆直交変換部204は、ステップS203の処理により逆量子化された変換係数を、図1の直交変換部104の特性に対応する特性で逆直交変換する。これにより図1の直交変換部104の入力(演算部103の出力)に対応する差分情報が復号されたことになる。
ステップS205において、演算部205は、後述するステップS211の処理で選択される予測画像を差分情報と加算する。これにより元の画像が復号される。ステップS206において、デブロックフィルタ206は、演算部205より出力された画像をフィルタリングする。これによりブロック歪みが除去される。
ステップS207において、適応フィルタ処理部207は、デブロックフィルタ処理された画像に、さらに適応フィルタ処理を施す。この適応フィルタ処理は、図1の適応フィルタ処理部113が行う処理と同様である。すなわち、この適応フィルタ処理は、可逆復号部202より供給された制御情報を用いること以外、図16のフローチャートを参照して説明した場合と同様に行われる。ただし、この可逆復号部202より供給される制御情報も、図1の制御情報生成部112が生成したものであり、実質的に図1の適応フィルタ処理部113が利用する、制御情報生成部112より供給される制御情報と同等である。
この適応フィルタ処理により、デブロッキングフィルタ処理により取りきれなかったブロック歪みや量子化による歪みを低減することができる。
ステップS208において、フレームメモリ210は、フィルタリングされた画像を記憶する。
イントラ予測モード情報が供給された場合、イントラ予測部211は、ステップS209において、イントラ予測モードのイントラ予測処理を行う。また、インター予測モード情報が供給された場合、動き補償部212は、ステップS210において、インター予測モードの動き補償処理を行う。
ステップS211において、選択部213は、予測画像を選択する。すなわち、イントラ予測部211により生成された予測画像、または動き補償部212により生成された予測画像のうちいずれか一方を選択し、選択した予測画像を演算部205に供給する。
例えば、イントラ符号化された画像の場合、選択部213は、イントラ予測部211により生成された予測画像を選択し、演算部205に供給する。また、インター符号化された画像の場合、選択部213は、動き補償部212により生成された予測画像を選択し、演算部205に供給する。
ステップS212において、画面並べ替えバッファ208は、並べ替えを行う。すなわち、図1の画像符号化装置100の画面並べ替えバッファ102により符号化のために並べ替えられたフレームの順序が、元の表示の順序に並べ替えられる。
ステップS213において、D/A変換部209は、画面並べ替えバッファ208からの画像をD/A変換する。この画像が図示せぬディスプレイに出力され、画像が表示される。
このように、画像復号装置200は、可逆復号部202が、画像符号化装置100から供給された制御情報を抽出して復号し、適応フィルタ処理部207が、その制御情報を用いて、画像符号化装置100の適応フィルタ処理部113と同様に、適応フィルタ処理を行う。
次に、図21のフローチャートを参照して、図20のステップS202において実行される可逆復号処理の流れの例を説明する。
可逆復号処理が開始されると、制御情報抽出部221は、ステップS231において、供給された符号化データが、フレーム(ピクチャ)の最初に伝送されたスライスであるか否かを判定する。
例えば、フレーム番号(frame_num)がこれまでのスライスと異なる場合、そのスライスが当該ピクチャの最初のスライスである。また、例えば、フレーム・ピクチャかフィールド・ピクチャかを示すフラグ(field_pic_flag)がこれまでのスライスと異なる場合、そのスライスが当該ピクチャの最初のスライスである。さらに、例えば、トップ・フィールドかボトム・フィールドかを示すフラグ(bottom_field_flag)がこれまでのスライスと異なる場合、そのスライスが当該ピクチャの最初のスライスである。また、例えば、フレーム番号(frame_num)が同じであってピクチャ・オーダー・カウントPOCの値がこれまでのスライスと異なる場合、そのスライスが当該ピクチャの最初のスライスである。さらに、例えば、nal_ref_idc情報がこれまでのスライスと異なる場合、そのスライスが当該ピクチャの最初のスライスである。また、IDRピクチャであってidr_pic_idc情報がこれまでのスライスと異なる場合、そのスライスが当該ピクチャの最初のスライスである。
したがって、制御情報抽出部221は、これらの値を参照し、いずれかの値が、これまでのスライスと異なる場合、そのスライスが当該ピクチャの最初のスライスであると判定する。
もちろん、制御情報抽出部221は、これ以外の情報に基づいて、最初に伝送されたスライスであるか否かを判定するようにしてもよい。
ステップS231において、フレームの最初に伝送されたスライスであると判定された場合、ステップS232に進む。ステップS232において、制御情報抽出部221は、そのスライスヘッダから、1ピクチャ分の制御情報を抽出し、適応フィルタ処理部207に供給する。
制御情報が抽出されると、ステップS233に進む。また、ステップS231において、供給された符号化データが、フレーム(ピクチャ)の最初に伝送されたスライスでないと判定された場合、ステップS233に進む。
ステップS233において、復号部222は、符号化データの処理対象スライスを復号する。ステップS234において、復号部222は、復号して得られた復号データ(量子化された係数データ)を逆量子化部203に出力する。ステップS235において、復号部222は、フレーム内の全てのスライスを処理したか否かを判定する。未処理のスライスが存在すると判定された場合、ステップS231に戻り、それ以降の処理が繰り返される。また、ステップS235において、フレーム内の全てのスライスが処理されたと判定された場合、可逆復号処理を終了し、図20のステップS207に戻り、ステップS208以降の処理が実行される。
以上のように可逆復号処理を行うことにより、可逆復号部202は、符号化データに付加された制御情報を抽出し、適応フィルタ処理部207に供給することができる。これにより、適応フィルタ処理部207は、適切に適応フィルタ処理を実行することができる。これにより、適応フィルタ処理部207は、処理対象スライスの、デブロックフィルタにより取りきれなかったブロック歪みや量子化による歪みを低減することができる。
また、このとき、上述したように、制御情報は、当該ピクチャの最初のスライスのスライスヘッダに埋め込まれており、制御情報抽出部221は、その当該ピクチャの最初のスライスを適切に検出し、そのスライスヘッダから1ピクチャ分の制御情報を抽出する。
このようにすることにより、適応フィルタ処理部207は、当該ピクチャの制御情報を、最初のスライスを処理する時点で準備することができ、不要な遅延無く適応フィルタ処理を行うことができる。つまり、各スライスに対して適応フィルタ処理を行う際に、制御情報の準備のための不要な待機時間を設ける必要が無いので、適応フィルタ処理部207は、制御情報を各スライスヘッダに埋め込む場合と同様の処理時間で、適応フィルタ処理を行うことができる。
したがって、画像復号装置200は、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。例えば、画像の各フレームを複数のスライスに分けて処理する場合においても、符号化効率の低減を抑制することができる。
<3.第3の実施の形態>
[制御情報を先頭スライスのヘッダに含める例の概要説明]
なお、以上においては、1ピクチャ分の制御情報が、最初に出力(伝送)されるスライスのスライスヘッダに付加されるように説明したが、制御情報は、他のスライスのスライスヘッダに付加されるようにしてもよい。例えば、先頭スライスのスライスヘッダに、制御情報が付加されるようにしてもよい。
先頭スライスとは、例えば、フレーム(ピクチャ)の中で一番上に位置するスライスである。また、例えば、先頭スライスとは、スライスの識別番号が最も若いスライスである。さらに、例えば、先頭スライスとは、MBアドレスが「0」のマクロブロックを含むスライスである。一般的にはこれらのスライスは全て同じスライスとなるが、一致しなくても良い。その場合、いずれか1つの条件に基づいて先頭スライスが決定される。
つまり、第1の実施の形態や、第2の実施の形態において説明した、最初に伝送されるスライスが、その処理順によって特定されるスライスであるのに対し、この先頭スライスは、その位置関係(例えば識別番号や座標)によって特定されるスライスである。
例えば、図22に示されるように、3つのスライス(スライス0、スライス1、およびスライス2)により構成されるフレーム151において、スライス0が先頭スライスとして設定されるとする。
このとき、各スライスに対して生成される制御情報191−1乃至制御情報191−3は、スライスの処理順に関わらず、全て、先頭スライスのスライスヘッダであるスライス0ヘッダ192−2に付加される。このスライス0の最初のMBアドレスは0である。したがって、この場合、制御情報抽出部221は、スライスヘッダにあるfirst_mb_in_slice(スライス中の最初のMBアドレスを規定する情報)の値を参照し、その値が「0」であれば、その後に制御情報を含んでいることが分かる。したがって、制御情報抽出部221は、境界検査なしに容易に制御情報の存在を確認し、それを抽出することができる。
ただし、図22にも示されるように、先頭スライスが、最初に伝送されるとは限らない。図22の例の場合、符号化データ194は、スライス1、スライス0、スライス2の順に伝送される。
したがって、この場合、適応フィルタ処理部207は、先頭スライスより先に伝送されたスライス(図22の例の場合、スライス0)について、先頭スライスより制御情報が抽出されるまで適応フィルタ処理を行うことができない。
[符号化側]
この場合の、画像符号化装置100の可逆符号化部106の構成は、図10を参照して説明した第1の実施の形態の場合と同様である。
図23のフローチャートを参照して、この場合の可逆符号化処理の流れの例を説明する。この図23のフローチャートは、図17に示されるフローチャートに対応する。
この場合も、第1の実施の形態の場合と基本的に同様に処理が行われる。すなわち、図13のステップS116において可逆符号化処理が開始されると、ステップS251乃至ステップS254の各処理が、図17のステップS191乃至ステップS194の各処理と同様に実行され、量子化された係数データがスライス毎に符号化される。
ステップS255において、制御情報付加部184は、制御情報保持部183に保持されている制御情報を、符号化データ保持部182に保持されている1フレーム分の符号化データの、先頭スライスのスライスヘッダに埋め込む。このとき、制御情報付加部184は、制御情報保持部183に保持されている制御情報を取得してまとめ、符号化データが属するフレーム(ピクチャ)の1ピクチャ分の制御情報を生成する。制御情報付加部184は、その1ピクチャ分の制御情報を、先頭スライスのスライスヘッダに埋め込む。
制御情報を符号化データに付加した、制御情報付加部184は、ステップS256において、符号化データを所定順に出力する。1ピクチャ分の符号化データを出力すると、可逆符号化部106は、可逆符号化処理を終了し、図13のステップS116に戻り、ステップS117以降の処理に進む。
以上のような可逆符号化処理を行うことにより、画像符号化装置100は、第1の実施の形態の場合と同様に、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。また、復号時の制御情報の抽出を容易にすることができる。
[復号側]
次に、本実施の形態の画像復号装置200について説明する。図24は、この場合の、画像復号装置200の可逆復号部202の構成例を示すブロック図である。図24に示されるように、この場合の可逆復号部202は、図19を参照して説明した第2の実施の形態の場合の可逆復号部202と基本的に同様の構成を有する。
ただし、この場合、可逆復号部202は、復号データ保持部223をさらに有する。復号データ保持部223は、復号部222において復号されて生成された復号データを保持する。
制御情報を先頭スライスのスライスヘッダに含めるようにする場合、上述したように、先頭スライスが伝送されるまで制御情報が得られない。したがって、復号データ保持部223は、先頭スライスより先に伝送されるスライスの復号データを、制御情報が得られるまで保持する。
次に、図25のフローチャートを参照して、図20のステップS202において実行される、この場合の可逆復号処理の流れの例を説明する。この図25のフローチャートは、図21に示されるフローチャートに対応する。
この場合も、第2の実施の形態の場合と基本的に同様に処理が行われる。すなわち、可逆復号処理が開始されると、制御情報抽出部221は、ステップS271において、供給された符号化データが、フレーム(ピクチャ)の先頭スライスであるか否かを判定する。
例えば、スライスヘッダにあるfirst_mb_in_sliceの値が「0」であり、先頭スライスであると判定された場合、ステップS272に進む。ステップS272において、制御情報抽出部221は、そのスライスヘッダから、1ピクチャ分の制御情報を抽出し、適応フィルタ処理部207に供給する。
制御情報が抽出されると、ステップS273に進む。また、ステップS271において、供給された符号化データが、先頭スライスでないと判定された場合、ステップS273に進む。
ステップS273において、復号部222により、その符号化データが復号されると、復号データ保持部223は、ステップS274において、復号されて得られた復号データを保持する。
ステップS275において、復号データ保持部223は、制御情報抽出部221により制御情報が抽出されたか否かを判定する。抽出されたと判定された場合、復号データ保持部223は、ステップS276に進み、保持している復号データの逆量子化部203への出力を開始する。
復号データの出力が開始されると、ステップS277に進む。また、ステップS275において、現在処理中の当該フレームについて、制御情報が抽出されていないと判定された場合、ステップS277に進む。
ステップS277において、制御情報抽出部221は、フレーム内の全てのスライスを処理したか否かを判定する。未処理のスライスが存在すると判定された場合、ステップS271に戻り、未処理のスライスに対して、それ以降の処理を繰り返す。また、ステップS277において、フレーム内の全てのスライスを処理したと判定された場合、可逆復号処理を終了し、図20のステップS207に戻り、ステップS208以降の処理が実行される。
以上のように可逆復号処理を行うことにより、可逆復号部202は、符号化データに付加された制御情報を抽出し、適応フィルタ処理部207に供給することができる。これにより、適応フィルタ処理部207は、適切に適応フィルタ処理を実行することができる。これにより、適応フィルタ処理部207は、処理対象スライスの、デブロックフィルタにより取りきれなかったブロック歪みや量子化による歪みを低減することができる。
また、このとき、上述したように、制御情報は、当該ピクチャの先頭スライスのスライスヘッダに埋め込まれており、制御情報抽出部221は、その当該ピクチャの先頭スライスを容易に検出し、そのスライスヘッダから1ピクチャ分の制御情報を抽出することができる。
<4.第4の実施の形態>
[制御情報を所定のスライスのヘッダに含める例の概要説明]
なお、制御情報は、上述した最初に伝送されるスライスや先頭スライス以外のスライスのスライスヘッダに、制御情報が付加されるようにしてもよい。
例えば、図26に示されるように、3つのスライス(スライス0、スライス1、およびスライス2)により構成されるフレーム151において、スライス0が先頭スライスとして設定されるとする。
このとき、各スライスに対して生成される制御情報191−1乃至制御情報191−3は、スライスの処理順に関わらず、全て、予め定められた所定のスライスであるスライス2のスライスヘッダであるスライス2ヘッダ192−3に付加されるようにしてもよい。
このスライス2(スライス2ヘッダ192−3)の特定方法は、任意である。また、この場合、画像復号装置200の制御情報抽出部221の制御情報検出方法も任意である。
この場合も、第3の実施の形態の場合と同様に、制御情報が埋め込まれたスライスが、最初に伝送されるとは限らない。図26の例の場合、符号化データ194は、スライス1、スライス0、スライス2の順に伝送される。つまり、スライス0およびスライス1は、制御情報を含むスライス2よりも先に伝送される。
したがって、この場合も、適応フィルタ処理部207は、スライス2より先に伝送されたスライス(図26の例の場合、スライス0およびスライス1)について、スライス2より制御情報が抽出されるまで適応フィルタ処理を行うことができない。
[符号化側]
この場合の、画像符号化装置100の可逆符号化部106の構成は、図10を参照して説明した第1の実施の形態の場合と同様である。
図27のフローチャートを参照して、この場合の可逆符号化処理の流れの例を説明する。この図27のフローチャートは、図17に示されるフローチャートに対応する。
この場合も、第1の実施の形態の場合と基本的に同様に処理が行われる。すなわち、図13のステップS116において可逆符号化処理が開始されると、ステップS291乃至ステップS294の各処理が、図17のステップS191乃至ステップS194の各処理と同様に実行され、量子化された係数データがスライス毎に符号化される。
ステップS295において、制御情報付加部184は、制御情報保持部183に保持されている制御情報を、符号化データ保持部182に保持されている1フレーム分の符号化データの、予め定められた所定のスライスのスライスヘッダに埋め込む。このとき、制御情報付加部184は、制御情報保持部183に保持されている制御情報を取得してまとめ、符号化データが属するフレーム(ピクチャ)の1ピクチャ分の制御情報を生成する。制御情報付加部184は、その1ピクチャ分の制御情報を、所定のスライスのスライスヘッダに埋め込む。
制御情報を符号化データに付加した、制御情報付加部184は、ステップS296において、符号化データを所定順に出力する。1ピクチャ分の符号化データを出力すると、可逆符号化部106は、可逆符号化処理を終了し、図13のステップS116に戻り、ステップS117以降の処理に進む。
以上のような可逆符号化処理を行うことにより、画像符号化装置100は、第1の実施の形態の場合と同様に、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。
[復号側]
次に、本実施の形態の画像復号装置200について説明する。この場合の、画像復号装置200の可逆復号部202の構成は、図24を参照して説明した第3の実施の形態の場合と同様である。
図28のフローチャートを参照して、図20のステップS202において実行される、この場合の可逆復号処理の流れの例を説明する。この図28のフローチャートは、図25に示されるフローチャートに対応する。
この場合も、第3の実施の形態の場合と基本的に同様に処理が行われる。すなわち、可逆復号処理が開始されると、制御情報抽出部221は、ステップS311において、供給された符号化データが、フレーム(ピクチャ)の所定のスライス(スライスヘッダに制御情報を含むスライス)であるか否かを判定する。
所定のスライスであると判定された場合、ステップS312に進む。ステップS312において、制御情報抽出部221は、そのスライスヘッダから、1ピクチャ分の制御情報を抽出し、適応フィルタ処理部207に供給する。
制御情報が抽出されると、ステップS313に進む。また、ステップS311において、供給された符号化データが、制御情報が付加された所定のスライスでないと判定された場合、ステップS313に進む。
その後、ステップS313乃至ステップS317の各処理が、図25のステップS273乃至ステップS277の各処理と同様に実行される。
以上のように可逆復号処理を行うことにより、可逆復号部202は、符号化データに付加された制御情報を抽出し、適応フィルタ処理部207に供給することができる。これにより、適応フィルタ処理部207は、適切に適応フィルタ処理を実行することができる。これにより、適応フィルタ処理部207は、処理対象スライスの、デブロックフィルタにより取りきれなかったブロック歪みや量子化による歪みを低減することができる。
<5.第5の実施の形態>
[ポインタを利用する例の概要説明]
また、制御情報は、上述したように制御情報そのものをスライスヘッダに付加する以外にも、例えば、制御情報が付加された場所を示すポインタを、スライスヘッダに含めるようにしてもよい。
例えば、図29に示されるように、フレーム151のスライス0乃至スライス2に対応する制御情報191−1乃至制御情報191−3は、まとめられ、1ピクチャ分の制御情報231として、符号化データ194のスライス2データ193−3の後ろに付加される。そして、最初に伝送されるスライス1ヘッダ192−1には、制御情報231の位置を示すポインタが付加される。
このようにすることにより、画像復号装置200の制御情報抽出部221は、スライス1ヘッダ192−1を参照し、そこに付加されているポインタから、制御情報231を取得することができる。つまり、制御情報抽出部231は、第2の実施の形態の場合と略同様に、符号化データから制御情報を抽出することができる。
ただし、この場合、実際には、制御情報抽出部221は、制御情報231が供給されるまで、制御情報231を抽出することができない。
もちろん、制御情報231を付加する場所は任意である。例えば、制御情報が、スライス1ヘッダ192−1よりも先に伝送されるような位置に付加されるようにしてもよい。その場合、制御情報抽出部221は、スライス1ヘッダ192−1のポインタを参照した時点で制御情報を抽出することができる。
[符号化側]
この場合も、画像符号化装置100の可逆符号化部106の構成は、図10を参照して説明した第1の実施の形態の場合と同様である。
図30のフローチャートを参照して、この場合の可逆符号化処理の流れの例を説明する。この図30のフローチャートは、図17に示されるフローチャートに対応する。
この場合も、第1の実施の形態の場合と基本的に同様に処理が行われる。すなわち、図13のステップS116において可逆符号化処理が開始されると、ステップS331乃至ステップS334の各処理が、図17のステップS191乃至ステップS194の各処理と同様に実行され、量子化された係数データがスライス毎に符号化される。
ステップS335において、制御情報付加部184は、制御情報保持部183に保持されている制御情報を、符号化データの所定の位置に付加する。このとき、制御情報付加部184は、制御情報保持部183に保持されている制御情報を取得してまとめ、符号化データが属するフレーム(ピクチャ)の1ピクチャ分の制御情報を生成する。制御情報付加部184は、その1ピクチャ分の制御情報を、符号化データの所定の位置に付加する。
ステップS336において、制御情報付加部184は、制御情報を付加した位置を示すポインタを、符号化データ保持部182に保持されている1フレーム分の符号化データの、最初に伝送されるスライスのスライスヘッダに埋め込む。
制御情報を符号化データに付加し、そのポインタをスライスヘッダに埋め込んだ制御情報付加部184は、ステップS337において、符号化データを所定順に出力する。1ピクチャ分の符号化データを出力すると、可逆符号化部106は、可逆符号化処理を終了し、図13のステップS116に戻り、ステップS117以降の処理に進む。
以上のような可逆符号化処理を行うことにより、画像符号化装置100は、第1の実施の形態の場合と同様に、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。
[復号側]
次に、本実施の形態の画像復号装置200について説明する。この場合の、画像復号装置200の可逆復号部202の構成は、図24を参照して説明した第3の実施の形態の場合と同様である。
図28のフローチャートを参照して、図20のステップS202において実行される、この場合の可逆復号処理の流れの例を説明する。この図28のフローチャートは、図25に示されるフローチャートに対応する。
次に、図31のフローチャートを参照して、図20のステップS202において実行される、この場合の可逆復号処理の流れの例を説明する。この図31のフローチャートは、図25に示されるフローチャートに対応する。
この場合も、第3の実施の形態の場合と基本的に同様に処理が行われる。すなわち、可逆復号処理が開始されると、制御情報抽出部221は、ステップS351において、供給された符号化データが、フレーム(ピクチャ)の最初に伝送されたスライスであるか否かを判定する。
第2の実施の形態の場合と同様に判定により、最初に伝送されたスライスであると判定された場合、ステップS352に進む。ステップS352において、制御情報抽出部221は、そのスライスヘッダに付加されたポインタを参照する。
ポインタを参照すると、ステップS353に進む。また、ステップS351において、供給された符号化データが、フレームの最初に伝送されたスライスでないと判定された場合、ステップS353に進む。
ステップS353において、制御情報抽出部221は、現時点で制御情報を抽出可能であるか否かを判定する。その時点において、符号化データに付加された1ピクチャ分の制御情報が既に供給されており、抽出可能であると判定された場合、ステップS354に進み、制御情報抽出部221は、その1ピクチャ分の制御情報を抽出し、適応フィルタ処理部207に供給する。
制御情報が抽出されると、ステップS355に進む。また、ステップS353において、制御情報がまだ供給されておらず、抽出不可能であると判定された場合、ステップS355に進む。
ステップS355において、復号部222により、符号化データの処理対象スライスが復号されると、復号データ保持部223は、ステップS356において、復号されて得られた復号データを保持する。
ステップS357において、復号データ保持部223は、制御情報抽出部221により制御情報が抽出されたか否かを判定する。抽出されたと判定された場合、復号データ保持部223は、ステップS358に進み、保持している復号データの逆量子化部203への出力を開始する。
復号データの出力が開始されると、ステップS359に進む。また、ステップS357において、現在処理中の当該フレームについて、制御情報が抽出されていないと判定された場合、ステップS359に進む。
ステップS359において、制御情報抽出部221は、フレーム内の全てのスライスを処理したか否かを判定する。未処理のスライスが存在すると判定された場合、ステップS351に戻り、未処理のスライスに対して、それ以降の処理を繰り返す。また、ステップS359において、フレーム内の全てのスライスを処理したと判定された場合、可逆復号処理を終了し、図20のステップS207に戻り、ステップS208以降の処理が実行される。
以上のように可逆復号処理を行うことにより、可逆復号部202は、符号化データに付加されたポインタに基づいて制御情報を抽出し、適応フィルタ処理部207に供給することができる。これにより、適応フィルタ処理部207は、適切に適応フィルタ処理を実行することができる。これにより、適応フィルタ処理部207は、処理対象スライスの、デブロックフィルタにより取りきれなかったブロック歪みや量子化による歪みを低減することができる。
したがって、画像復号装置200は、第2の実施の形態の場合と同様に、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。例えば、画像の各フレームを複数のスライスに分けて処理する場合においても、符号化効率の低減を抑制することができる。
[その他の例]
なお、以上においては、制御情報が付加されている位置を示すポインタが、フレームの最初に伝送されるスライスのスライスヘッダに付加されるように説明したが、ポインタの埋め込み位置は任意である。例えば、第3の実施の形態のように、先頭スライスのスライスヘッダに制御情報が付加されるようにしてもよいし、第4の実施の形態のように、予め定められた所定のスライスに制御情報が付加されるようにしてもよい。
また、上述したポインタは、どのような形態の情報であってもよい。
<6.第6の実施の形態>
[制御情報を複数のグループにまとめる例の概要説明]
以上においては、1ピクチャ分の制御情報を1つにまとめるように説明したが、これに限らず、例えば、1フレームのスライスを複数のグループに分け、そのグループ毎に制御情報をまとめるようにしてもよい。
例えば、図32において、フレーム151内の点線がスライスの境界を示し、実線が複数のスライスをまとめるグループを示している。各スライスの制御情報は、このグループ毎にまとめられる。
図32において、制御情報241−1は、フレーム151の上から1番目のグループに属するスライスの制御情報をまとめたものである。制御情報241−2は、フレーム151の上から2番目のグループに属するスライスの制御情報をまとめたものである。制御情報241−3は、フレーム151の上から3番目のグループに属するスライスの制御情報をまとめたものである。
これらの制御情報は、それぞれが対応するグループの中で最初に伝送されるスライスのスライスヘッダに埋め込まれる。
図32において、制御情報241−1は、フレーム151の上から1番目のグループの符号化データ244−1の、最初に伝送されるスライスAのスライスヘッダであるスライスAヘッダ242−1に埋め込まれる。
同様に、制御情報241−2は、フレーム151の上から2番目のグループの符号化データ244−2の、最初に伝送されるスライスBのスライスヘッダであるスライスBヘッダ242−2に埋め込まれる。
同様に、制御情報241−3は、フレーム151の上から3番目のグループの符号化データ244−3の、最初に伝送されるスライスCのスライスヘッダであるスライスCヘッダ242−3に埋め込まれる。
つまり、この場合、1フレーム分の符号化データには、複数の制御情報が付加されることになるが、グループ単位でまとめてあるので、スライス毎に制御情報を付加する場合よりも、冗長性が低減され、符号化効率が向上される。また、複数に分けて制御情報が付加されるので、上述した各実施の形態の場合よりも、伝送時のパケットロス等に対する耐性が強くなる。
なお、この複数スライスからなるグループは、予め定められている。すなわち、フレーム内のスライスがいくつのグループに分けられ、どのスライスがどのグループに属するかは予め定められている。
[符号化側]
この場合の、画像符号化装置100について説明する。この場合の画像符号化装置100の可逆符号化部106の構成は、図10を参照して説明した第1の実施の形態の場合と同様である。
図33のフローチャートを参照して、この場合の可逆符号化処理の流れの例を説明する。この図33のフローチャートは、図17に示されるフローチャートに対応する。
この場合も、第1の実施の形態の場合と基本的に同様に処理が行われる。すなわち、図13のステップS116において可逆符号化処理が開始されると、ステップS371乃至ステップS374の各処理が、図17のステップS191乃至ステップS194の各処理と同様に実行され、量子化された係数データがスライス毎に符号化される。
ただし、この場合、制御情報付加部184は、ステップS374において、フレームではなく、グループ単位で、全てのスライスが符号化されたか否かを判定する。すなわち、制御情報付加部184は、ステップS374において、符号化部181が処理対象グループに属する全てのスライスを符号化したか否かを判定する。
処理対象グループに属する未処理のスライスが存在すると判定された場合、ステップS371に戻り、未処理のスライスに対してそれ以降の処理が繰り返される。また、ステップS374において、符号化部181が処理対象グループに属する全てのスライスを符号化したと判定された場合、ステップS375に進む。
ステップS375において、制御情報付加部184は、制御情報保持部183に保持されている制御情報を、符号化データ保持部182に保持されている1グループ分の符号化データの、最初に伝送されるスライスのスライスヘッダに埋め込む。このとき、制御情報付加部184は、制御情報保持部183に保持されている制御情報を取得してまとめ、符号化データが属するグループの制御情報(1グループ分の制御情報)を生成する。制御情報付加部184は、その1グループ分の制御情報を、グループで最初に伝送されるスライスのスライスヘッダに埋め込む。
制御情報を符号化データに付加した、制御情報付加部184は、ステップS376において、その1グループ分の符号化データを所定順に出力する。1グループ分の符号化データを出力すると、可逆符号化部106は、ステップS377において、フレーム内の全てのグループを処理したか否かを判定する。
未処理のグループが存在すると判定された場合、ステップS371に戻り、未処理のグループに対してそれ以降の処理を繰り返す。また、ステップS377において、フレーム内の全てのグループが処理されたと判定された場合、可逆符号化部106は、可逆符号化処理を終了し、図13のステップS116に戻り、ステップS117以降の処理に進む。
以上のような可逆符号化処理を行うことにより、画像符号化装置100は、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。また、パケットロス等に対する耐性も向上させることができる。
[復号側]
次に、本実施の形態の画像復号装置200について説明する。この場合、画像復号装置200の可逆復号部202は、フレーム(ピクチャ)単位でなく、グループ単位で制御情報を抽出すればよい。したがって、この場合の可逆復号部202は、図19を参照して説明した第2の実施の形態の場合の可逆復号部202と同様の構成を有する。
また、可逆復号部202による可逆復号処理も、フレーム(ピクチャ)単位であるところをグループ単位とすること以外、図21のフローチャートを参照して説明した例と同様に実行することができる。
以上のように可逆復号部202は、符号化データに付加された制御情報を抽出し、適応フィルタ処理部207に供給することができる。これにより、適応フィルタ処理部207は、適切に適応フィルタ処理を実行することができる。
[その他の例]
なお、以上においては、制御情報が、各グループの最初に伝送されるスライスのスライスヘッダに付加されるように説明したが、この制御情報の埋め込み位置は任意である。例えば、第3の実施の形態のように、各グループの先頭スライスのスライスヘッダに制御情報が付加されるようにしてもよいし、第4の実施の形態のように、各グループの予め定められた所定のスライスに制御情報が付加されるようにしてもよい。
<7.第7の実施の形態>
[グループ数を制御する例の概要説明]
第6の実施の形態においては、制御情報をまとめる単位として、複数のスライスからなるグループについて説明したが、画像符号化装置100が、例えばフレーム毎やGOP毎等、所定の単位毎にこのグループを定義するようにしてもよい。つまり、この場合、画像符号化装置100が、例えばフレーム毎に、どのスライスがどのグループに属し、1フレームにいくつのグループを形成するか(制御情報を1フレーム当たりいくつに集約するか)を定義する。
[符号化側]
この場合の、画像符号化装置100について説明する。図34は、この場合の画像符号化装置100の可逆符号化部106の構成例を示すブロック図である。
図34に示されるように、この場合の可逆符号化部106は、第1の実施の形態の場合と同様に、符号化部181乃至制御情報付加部184を有する。ただし、この場合の符号化部106は、さらに、制御部251を有する。
制御部251は、グループの定義を行い、処理対象フレーム内のグループ数を決定する。換言すれば、制御部251は、符号化データに埋め込まれる各制御情報が対応するデータの範囲を決定する。
制御部251は、符号化部181および制御情報付加部184を制御し、各グループの最初に伝送されるスライスのスライスヘッダに、当該グループに対応する制御情報を埋め込ませる。
図35のフローチャートを参照して、この場合の可逆符号化処理の流れの例を説明する。この図35のフローチャートは、図33に示されるフローチャートに対応する。
この場合も、第6の実施の形態の場合と基本的に同様に処理が行われる。図13のステップS116において可逆符号化処理が開始されると、ステップS391において、制御部251は、処理対象フレームについてグループの定義を行い、グループ数を設定する。制御部251は、そのグループに関する設定に基づいて、符号化部181および制御情報付加部184を制御する。
ステップS391において行われたグループの設定にしたがって、ステップS392乃至ステップS398の各処理が実行される。つまり、グループが設定された後のステップS392乃至ステップS398の各処理は、図33のステップS371乃至ステップS377の各処理と同様に実行される。
以上のような可逆符号化処理を行うことにより、画像符号化装置100は、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。また、パケットロス等に対する耐性も向上させることができる。
[復号側]
次に、本実施の形態の画像復号装置200について説明する。図36は、この場合の、画像復号装置200の可逆復号部202の構成例を示すブロック図である。
この場合、画像復号装置200の可逆復号部202は、フレーム(ピクチャ)単位でなく、グループ単位で制御情報を抽出する。したがって、この場合の可逆復号部202は、図36に示されるように、例えば図24を参照して説明した第3の実施の形態の場合の可逆復号部202と同様に、制御情報抽出部221乃至復号データ保持部223を有する。ただし、この場合、画像復号装置200は、処理対象フレーム内のグループ数を把握していないので、各スライスヘッダを解析し、制御情報を検索する。したがって、この場合、可逆復号部202は、図36に示されるように、ヘッダ解析部261をさらに有する。
ヘッダ解析部261は、供給される符号化データの各スライスヘッダを参照し、制御情報を検索する。制御情報抽出部221は、その解析結果に基づいて制御情報の抽出を行う。また、各部は、第6の実施の形態の場合と同様に、グループ毎に処理を行う。
次に、図37のフローチャートを参照して、図20のステップS202において実行される、この場合の可逆復号処理の流れの例を説明する。この図37のフローチャートは、図25に示されるフローチャートに対応する。
この場合も、第3の実施の形態の場合と基本的に同様に処理が行われる。可逆復号処理が開始されると、ヘッダ解析部261は、ステップS411において、供給された符号化データの処理対象スライスのスライスヘッダを参照し、そのスライスヘッダに制御情報が存在するか否かを判定する。処理対象スライスがグループの最初に伝送されるスライスであり、そのスライスヘッダに当該グループの制御情報を含むと判定された場合、ステップS412に進む。
ステップS412において、制御情報抽出部221は、そのスライスヘッダから1グループ分の制御情報を抽出する。制御情報が抽出されると、ステップS413に進む。また、ステップS411において、スライスヘッダに制御情報が存在しないと判定された場合、ステップS413に進む。
ステップS413乃至ステップS417の各処理は、図25のステップS273乃至ステップS277の各処理と同様に実行される。
以上のように可逆復号部202は、符号化データに付加された制御情報を抽出し、適応フィルタ処理部207に供給することができる。これにより、適応フィルタ処理部207は、適切に適応フィルタ処理を実行することができる。
[グループ数の制御]
次に、グループ数の制御について説明する。
一般的にグループ数を増やす(1フレーム当たりの制御情報の数を増やす)と、制御情報の冗長度が高くなり、符号化データの符号化効率が低下する。これにより、画像復号装置200において処理すべき情報量が増大する。また、制御情報を抽出する回数も増大する。したがって、画像復号装置200の負荷が増大する可能性がある。ただし、1つの制御情報の情報量が小さくなるので、必要なメモリ量が低減される。
これに対して、画像符号化装置100は、グループ数を増やすことにより、より小さい単位で符号化データを出力することができるようになる。つまり、符号化処理の遅延時間を低減させることができる。また、この場合、符号化データが高頻度で出力されるので、必要なメモリ量が低減される。
逆に、グループ数を低減させる(1フレーム当たりの制御情報の数を減らす)と、制御情報の冗長度が低くなり、符号化データの符号化効率が向上する。これにより、画像復号装置200において処理すべき情報量が低減する。また、制御情報を抽出する回数も低減する。したがって、画像復号装置200の負荷が低減する可能性がある。ただし、1つの制御情報の情報量が大きくなるので、必要なメモリ量が増大する。
これに対して、画像符号化装置100は、グループ数を減らすことにより、より大きい単位で符号化データを出力することになる。つまり、符号化処理の遅延時間が増大する。また、この場合、符号化データが低頻度で出力されることになるので、必要なメモリ量が増大する。
以上のように、グループ数の増減によって、各種のパラメータが変化する。したがって、最適なグループ数は、ハードウェア資源や利用目的等のシステムの仕様によって決定される。
例えば、画像符号化装置100が生成した符号化データをサーバ等に保存し、例えば画像復号装置200からの要求に基づいて、その符号化データを提供するようなシステムの場合、画像符号化装置100における遅延時間の増大は、符号化データの提供にほとんど影響を及ぼさない。このようなシステムの場合、符号化処理の遅延時間の低減よりも、復号処理の負荷の低減を抑制させることを優先すべきである。
また、例えば、撮影等により生成された画像データを、即時的(リアルタイム)に、画像符号化装置100により符号化し、符号化データを伝送し、画像復号装置200によりその符号化データを復号し、復号画像を表示するようなシステムの場合、各処理の遅延時間の抑制が最も重要になる。
また、画像復号装置200の処理能力が低い場合、復号処理の負荷を抑制することを優先させるのが望ましい。逆に、画像符号化装置100の処理能力が低い場合、符号化処理の負荷の抑制を優先させるのが望ましい。また画像データのビットレートや伝送路の使用可能な帯域幅等によって符号化効率の向上を優先すべき場合も考えられる。
このように、遅延時間、符号化効率、処理の負荷、およびメモリ容量等、様々なパラメータの最適な値は、システムの仕様によって異なる。したがって、制御部251は、システムの仕様に対して各種パラメータが最適となるように、グループの設定を行う。これにより、より多様なシステムに適用することができる。
なお、このグループの設定のために、画像符号化装置100または画像復号装置200が、システム内の他の装置のハードウェア資源や、伝送路に関する情報を収集したり、他の装置と各種情報を交換したりするようにしてもよい。
また、1フレームのグループ数は1以上であればいくつであってもよい。さらに、グループ数の制御は、フレーム単位以外であっても良い。例えばGOP単位などであってもよい。
また、以上においては、制御情報が、各グループの最初に伝送されるスライスのスライスヘッダに付加されるように説明したが、この制御情報の埋め込み位置は任意である。例えば、第3の実施の形態のように、各グループの先頭スライスのスライスヘッダに制御情報が付加されるようにしてもよいし、第4の実施の形態のように、各グループの予め定められた所定のスライスに制御情報が付加されるようにしてもよい。
さらに、この制御情報を埋め込むスライス(スライスヘッダ)を、画像符号化装置100が設定するようにしてもよい。例えばフレーム単位やGOP単位等、任意の単位でこのような設定を行うようにしても良い。また、不定期に行うようにしてもよい。
以上の各実施の形態においては、スライスを単位としてフレーム内の制御情報を、1つまたは複数にまとめるように説明したが、この制御情報のまとめる単位は、任意である。例えば、スライスよりも小さい単位、例えば、マクロブロックを単位として行うようにしてもよい。つまり、マクロブロック毎の制御情報を複数まとめてグループ毎の制御情報を生成するようにしてもよい。
<8.第8の実施の形態>
[要素毎に独立してグループ化する例の概要説明]
以上においては、制御情報を構成する、フィルタ係数、ブロックサイズ、およびフィルタブロックフラグの各要素を互いに同じ単位でまとめるように説明したが、これらの各要素を、互いに独立した単位でまとめるようにしてもよい。つまり、フィルタ係数、ブロックサイズ、およびフィルタブロックフラグの各要素を互いに独立してグループ化するようにしてもよい。
この場合、各フィルタ係数のグループが対応する画像の範囲(スライス)と、各ブロックサイズのグループが対応する画像の範囲(スライス)と、各フィルタブロックフラグが対応するグループの画像の範囲(スライス)が互いに独立して設定されているので、それらの情報が格納されるスライスヘッダも互いに異なることがあり得る。
したがって、この場合、画像符号化装置100および画像復号装置200は、フィルタ係数、ブロックサイズ、およびフィルタブロックフラグの各要素について、それぞれ、上述した制御情報の場合と同様の処理を行う必要がある。
[符号化側]
この場合の、画像符号化装置100について説明する。図38は、この場合の画像符号化装置100の可逆符号化部106の構成例を示すブロック図である。
図38に示されるように、この場合の可逆符号化部106は、第1の実施の形態の場合と同様に、符号化部181乃至制御情報保持部183を有する。また、この場合の符号化部106は、さらに、制御情報付加部184の代わりに制御情報付加部281を有する。
制御情報付加部281は、フィルタ係数、ブロックサイズ、およびフィルタブロックフラグの各要素を、互いに独立して設定されたグループ毎に、符号化データのスライスヘッダに埋め込む。制御情報付加部281は、フラグ付加部291、ブロックサイズ付加部292、およびフィルタ係数付加部293を有する。
フラグ付加部291は、処理対象フラググループのフィルタブロックフラグを、処理対象フラググループの最初に伝送されるスライスのスライスヘッダに付加する。フラググループとは、互いに同一のスライスヘッダに埋め込まれる1組のフィルタブロックフラグが対応するスライスのグループである。
ブロックサイズ付加部292は、処理対象ブロックサイズグループのブロックサイズを、処理対象ブロックサイズグループの最初に伝送されるスライスのスライスヘッダに付加する。ブロックサイズグループとは、互いに同一のスライスヘッダに埋め込まれる1組のブロックサイズが対応するスライスのグループである。
フィルタ係数付加部293は、処理対象フィルタ係数グループのフィルタ係数を、処理対象フィルタ係数グループの最初に伝送されるスライスのスライスヘッダに付加する。フィルタ係数グループとは、互いに同一のスライスヘッダに埋め込まれる1組のフィルタ係数が対応するスライスのグループである。
図39のフローチャートを参照して、この場合の可逆符号化処理の流れの例を説明する。この図39のフローチャートは、図33に示されるフローチャートに対応する。
この場合も、第6の実施の形態の場合と基本的に同様に処理が行われる。図13のステップS116において可逆符号化処理が開始されると、ステップS431乃至ステップS433の各処理が、図33のステップS371乃至ステップS373の各処理と同様に実行される。
ステップS434において、制御情報付加部281のフラグ付加部291は、符号化部181が処理対象フラググループの全てのスライスを符号化したか否かを判定する。全てのスライスを符号化したと判定された場合、ステップS435に進む。
ステップS435において、フラグ付加部291は、1フラググループ分のフィルタブロックフラグをその処理対象フラググループ内で最初に伝送されるスライスのスライスヘッダに埋め込む。
フィルタブロックフラグの埋め込みが終了すると、ステップS436に進む。また、ステップS434において、処理対象フラググループに未処理のスライスが存在すると判定された場合、ステップS436に進む。
ステップS436において、制御情報付加部281のブロックサイズ付加部292は、符号化部181が処理対象フラググループの全てのスライスを符号化したか否かを判定する。全てのスライスを符号化したと判定された場合、ステップS437に進む。
ステップS437において、ブロックサイズ付加部292は、1ブロックサイズグループ分のブロックサイズをその処理対象ブロックサイズグループ内で最初に伝送されるスライスのスライスヘッダに埋め込む。
ブロックサイズの埋め込みが終了すると、ステップS438に進む。また、ステップS438において、処理対象ブロックサイズグループに未処理のスライスが存在すると判定された場合、ステップS438に進む。
ステップS438において、制御情報付加部281のフィルタ係数付加部293は、符号化部181が処理対象フィルタ係数グループの全てのスライスを符号化したか否かを判定する。未処理のスライスが存在すると判定された場合、ステップS431に戻り、それ以降の処理が繰り返される。
また、ステップS438において、全てのスライスを符号化したと判定された場合、ステップS439に進む。ステップS439において、フィルタ係数付加部293は、1フィルタ係数グループ分のフィルタ係数をその処理対象フィルタ係数グループ内で最初に伝送されるスライスのスライスヘッダに埋め込む。
フィルタ係数の埋め込みが終了すると、ステップS440に進む。ステップS440において、制御情報付加部281は、符号化データを所定順に出力する。ステップS441において、可逆符号化部106は、フレーム内の全てのグループを処理したか否かを判定する。未処理のグループが存在すると判定された場合、ステップS431に戻り、それ以降の処理が繰り返される。
また、ステップS441において、フレーム内の全てのグループが処理されたと判定された場合、可逆符号化部106は、可逆符号化処理を終了し、図13のステップS116に戻り、ステップS117以降の処理に進む。
以上のような可逆符号化処理を行うことにより、可逆符号化部106は、制御情報の各要素を、それぞれにとってより適切な単位で付加することができる。これにより、画像符号化装置100は、例えば符号化効率、遅延時間、負荷量等の各種要素をより適切に制御することができる。
[復号側]
次に、本実施の形態の画像復号装置200について説明する。この場合、画像復号装置200の可逆復号部202は、フィルタ係数、ブロックサイズ、およびフィルタブロックフラグの各要素を、フレーム(ピクチャ)単位でなく、それぞれのグループ単位で抽出する。
図40は、この場合の、画像復号装置200の可逆復号部202の構成例を示すブロック図である。図40に示されるように、この場合の可逆復号部202は、第3の実施の形態の場合と同様に、復号部222および復号データ保持部223を有する。また、この場合の復号部222は、さらに、制御情報抽出部221の代わりに制御情報抽出部301を有する。
制御情報抽出部301は、フィルタ係数、ブロックサイズ、およびフィルタブロックフラグの各要素を符号化データのスライスヘッダから抽出する。制御情報抽出部301は、フラグ抽出部311、ブロックサイズ抽出部312、およびフィルタ係数抽出部313を有する。
フラグ抽出部311は、処理対象フラググループの最初に伝送されるスライスのスライスヘッダから、その処理対象フラググループのフィルタブロックフラグを抽出する。
ブロックサイズ抽出部312は、処理対象ブロックサイズグループの最初に伝送されるスライスのスライスヘッダから、その処理対象ブロックサイズグループのブロックサイズを抽出する。
フィルタ係数抽出部313は、処理対象フィルタ係数グループの最初に伝送されるスライスのスライスヘッダから、その処理対象フィルタ係数グループのフィルタ係数を抽出する。
次に、図41のフローチャートを参照して、図20のステップS202において実行される、この場合の可逆復号処理の流れの例を説明する。この図41のフローチャートは、図25に示されるフローチャートに対応する。
この場合も、第2の実施の形態の場合と基本的に同様に処理が行われる。すなわち、可逆復号処理が開始されると、制御情報抽出部301のフラグ抽出部311は、ステップS461において、供給された符号化データが、処理対象フラググループの最初に伝送されたスライスであるか否かを判定する。処理対象フラググループの最初に伝送されたスライスであると判定された場合、ステップS462に進む。
ステップS462において、フラグ抽出部311は、処理対象スライスのスライスヘッダから、1フラググループ分のフィルタブロックフラグを抽出する。
フィルタブロックフラグが抽出されると、ステップS463に進む。また、ステップS461において、処理対象フラググループの最初に伝送されたスライスでないと判定された場合、ステップS463に進む。
ステップS463において、制御情報抽出部301のブロックサイズ抽出部312は、供給された符号化データが、処理対象ブロックサイズグループの最初に伝送されたスライスであるか否かを判定する。処理対象ブロックサイズグループの最初に伝送されたスライスであると判定された場合、ステップS464に進む。
ステップS464において、ブロックサイズ抽出部312は、処理対象スライスのスライスヘッダから、1ブロックサイズグループ分のブロックサイズを抽出する。
ブロックサイズが抽出されると、ステップS465に進む。また、ステップS463において、処理対象ブロックサイズグループの最初に伝送されたスライスでないと判定された場合、ステップS465に進む。
ステップS465において、制御情報抽出部301のフィルタ係数抽出部313は、供給された符号化データが、処理対象フィルタ係数グループの最初に伝送されたスライスであるか否かを判定する。処理対象フィルタ係数グループの最初に伝送されたスライスであると判定された場合、ステップS466に進む。
ステップS466において、フィルタ係数抽出部313は、処理対象スライスのスライスヘッダから、1フィルタ係数グループ分のフィルタ係数を抽出する。
フィルタ係数が抽出されると、ステップS467に進む。また、ステップS465において、処理対象フィルタ係数グループの最初に伝送されたスライスでないと判定された場合、ステップS467に進む。
ステップS467において、復号部222は、符号化データの処理対象スライスを復号する。ステップS468において、復号データ保持部223は、復号されて得られた復号データを保持する。
ステップS469において、復号データ保持部223は、制御情報抽出部301により制御情報の要素(フィルタブロックフラグ、ブロックサイズ、およびフィルタ係数)が全て抽出されたスライスが存在するか否かを判定する。抽出されたと判定された場合、復号データ保持部223は、ステップS470に進み、保持している復号データの、制御情報の全ての要素が抽出されたスライスの逆量子化部203への出力を開始する。
復号データの出力が開始されると、ステップS471に進む。また、ステップS469において、制御情報の全ての要素が抽出されたスライスが存在しないと判定された場合、ステップS471に進む。
ステップS471において、制御情報抽出部301は、フレーム内の全てのスライスを処理したか否かを判定する。未処理のスライスが存在すると判定された場合、ステップS461に戻り、未処理のスライスに対して、それ以降の処理を繰り返す。また、ステップS471において、フレーム内の全てのスライスを処理したと判定された場合、可逆復号処理を終了し、図20のステップS207に戻り、ステップS208以降の処理が実行される。
以上のように可逆復号処理を行うことにより、可逆復号部202は、符号化データに互いに独立して付加された制御情報の各要素を抽出し、適応フィルタ処理部207に供給することができる。これにより、適応フィルタ処理部207は、適切に適応フィルタ処理を実行することができる。これにより、適応フィルタ処理部207は、処理対象スライスの、デブロックフィルタにより取りきれなかったブロック歪みや量子化による歪みを低減することができる。
[その他の例]
もちろん、この場合も、フィルタ係数、ブロックサイズ、およびフィルタブロックフラグ等の各要素を、各要素のグループの先頭スライスのスライスヘッダに埋め込むようにしてもよいし、その他の所定のスライスのスライスヘッダに埋め込むようにしてもよい。
また、各要素のグループを例えばGOPやフレーム毎に設定するようにし、各要素のグループ数を時間方向に変化可能とするようにしてもよい。
<9.第9の実施の形態>
[QALFの説明]
非特許文献3に示されるように、ALFブロックをクアッドツリー構造としてもよい。この技術はQALF(Quad tree-based Adaptive Loop Filter)と称する。クアッドツリー構造とは、下位階層において1つ上位の階層の1つのALFブロックの領域が4分割される階層構造である。
図42にALFブロック分割を最大レイヤ数が3のクアッドツリー構造によって表現し、各ALFブロックにフィルタブロックフラグを指定する例を示す。
図42Aは、クアッドツリー構造の根になるALFブロックであるレイヤ0を示す。クアッドツリー構造において各ALFブロックは、下位の階層において4分割されるか否かを示すブロックパーティショニングフラグを有している。図42Aに示されるALFブロックのブロックパーティショニングフラグの値は「1」である。つまり、このALFブロックは、下位の階層(レイヤ1)において4分割される。図42Bは、そのレイヤ1を示す。すなわち、レイヤ1には、4つのALFブロックが形成される。
ブロックパーティショニングフラグが「0」の場合、これより下位の階層において4分割されない。すなわち、これ以上の分割は無く、そのALFブロックに対してフィルタブロックフラグが生成される。つまり、ブロックパーティショニングフラグが「0」のALFブロックは、フィルタブロックフラグも有する。図42Bに示される「0−1」の左の「0」が、そのALFブロックのブロックパーティショニングフラグを示し、右の「1」が、そのALFブロックのフィルタブロックフラグを示す。
レイヤ1のブロックパーティショニングフラグが「1」の2つのALFブロックは、さらに下位の階層(レイヤ2)において4分割される。図42Cは、そのレイヤ2を示す。すなわち、レイヤ2には、10個のALFブロックが形成される。
同様に、レイヤ2においてブロックパーティショニングフラグが「0」のALFブロックには、フィルタブロックフラグも割り当てられる。図42Cにおいては、1つのALFブロックのブロックパーティショニングフラグが「1」である。つまり、そのALFブロックは、さらに下位の階層(レイヤ3)において4分割される。図42Dは、そのレイヤ3を示す。すなわち、レイヤ3には、13個のALFブロックが形成される。
図42のようにクアッドツリー化することにより、ALFブロックの構成は、最終的に図43に示されるようになる。このように、クアッドツリー構造においては、ALFブロックのサイズは、その階層毎に異なる。つまり、ALFブロックは、クアッドツリー構造をとることにより、フレーム内においてその大きさを互いに異なるものとすることができる。
各ALFブロックにおけるフィルタブロックフラグの制御は、第1の実施の形態の場合と同様である。つまり、フィルタブロックフラグの値が「0」のALFブロックの領域(図43の斜線模様部分)は、フィルタ処理が行われない。
マルチスライスの場合に符号化効率が低減する恐れがあるという問題は、ALFブロックの表現を改良したQALFでも同じ問題が生じる。
図44は、図5のスライス1の領域をQALFの技術を使って符号化する例を示している。ここで太線421の領域はスライス1の領域を示す。QALF411全体の制御情報を、太線421に示されるように、スライス毎に分けて、複数の制御情報とし、それらを符号化データに付加するようにすると、その制御情報間で重複する情報が生じてしまう。
そこで、QALFの場合も、画像符号化装置100は、第1の実施の形態において説明したBALFの場合と同様の方法により、複数のスライスの制御情報を、符号化データの1つのスライスヘッダに含めるようにする。画像復号装置200も、BALFの場合と同様に、その制御情報を抽出し、適応フィルタ処理を行うようにする。
このようにすることにより、符号化データに付加される制御情報の冗長度が抑制されるため、スライス毎に制御情報を埋め込む場合よりも、符号化効率を向上させることができる。
<10.第10の実施の形態>
[パーソナルコンピュータ]
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、図45に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
図45において、パーソナルコンピュータ500のCPU501は、ROM(Read Only Memory)502に記憶されているプログラム、または記憶部513からRAM(Random Access Memory)503にロードされたプログラムに従って各種の処理を実行する。RAM503にはまた、CPU501が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU501、ROM502、およびRAM503は、バス504を介して相互に接続されている。このバス504にはまた、入出力インタフェース510も接続されている。
入出力インタフェース510には、キーボード、マウスなどよりなる入力部511、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部512、ハードディスクなどより構成される記憶部513、モデムなどより構成される通信部514が接続されている。通信部514は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース510にはまた、必要に応じてドライブ515が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア521が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部513にインストールされる。
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、例えば、図45に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc - Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア521により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM502や、記憶部513に含まれるハードディスクなどで構成される。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表すものである。
また、以上において、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。つまり、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
例えば、上述した画像符号化装置100や画像復号装置200は、任意の電子機器に適用することができる。以下にその例について説明する。
<11.第11の実施の形態>
[テレビジョン受像機]
図46は、本発明を適用した画像復号装置200を用いるテレビジョン受像機の主な構成例を示すブロック図である。
図46に示されるテレビジョン受像機1000は、地上波チューナ1013、ビデオデコーダ1015、映像信号処理回路1018、グラフィック生成回路1019、パネル駆動回路1020、および表示パネル1021を有する。
地上波チューナ1013は、地上アナログ放送の放送波信号を、アンテナを介して受信し、復調し、映像信号を取得し、それをビデオデコーダ1015に供給する。ビデオデコーダ1015は、地上波チューナ1013から供給された映像信号に対してデコード処理を施し、得られたデジタルのコンポーネント信号を映像信号処理回路1018に供給する。
映像信号処理回路1018は、ビデオデコーダ1015から供給された映像データに対してノイズ除去などの所定の処理を施し、得られた映像データをグラフィック生成回路1019に供給する。
グラフィック生成回路1019は、表示パネル1021に表示させる番組の映像データや、ネットワークを介して供給されるアプリケーションに基づく処理による画像データなどを生成し、生成した映像データや画像データをパネル駆動回路1020に供給する。また、グラフィック生成回路1019は、項目の選択などにユーザにより利用される画面を表示するための映像データ(グラフィック)を生成し、それを番組の映像データに重畳したりすることによって得られた映像データをパネル駆動回路1020に供給するといった処理も適宜行う。
パネル駆動回路1020は、グラフィック生成回路1019から供給されたデータに基づいて表示パネル1021を駆動し、番組の映像や上述した各種の画面を表示パネル1021に表示させる。
表示パネル1021はLCD(Liquid Crystal Display)などよりなり、パネル駆動回路1020による制御に従って番組の映像などを表示させる。
また、テレビジョン受像機1000は、音声A/D(Analog/Digital)変換回路1014、音声信号処理回路1022、エコーキャンセル/音声合成回路1023、音声増幅回路1024、およびスピーカ1025も有する。
地上波チューナ1013は、受信した放送波信号を復調することにより、映像信号だけでなく音声信号も取得する。地上波チューナ1013は、取得した音声信号を音声A/D変換回路1014に供給する。
音声A/D変換回路1014は、地上波チューナ1013から供給された音声信号に対してA/D変換処理を施し、得られたデジタルの音声信号を音声信号処理回路1022に供給する。
音声信号処理回路1022は、音声A/D変換回路1014から供給された音声データに対してノイズ除去などの所定の処理を施し、得られた音声データをエコーキャンセル/音声合成回路1023に供給する。
エコーキャンセル/音声合成回路1023は、音声信号処理回路1022から供給された音声データを音声増幅回路1024に供給する。
音声増幅回路1024は、エコーキャンセル/音声合成回路1023から供給された音声データに対してD/A変換処理、増幅処理を施し、所定の音量に調整した後、音声をスピーカ1025から出力させる。
さらに、テレビジョン受像機1000は、デジタルチューナ1016およびMPEGデコーダ1017も有する。
デジタルチューナ1016は、デジタル放送(地上デジタル放送、BS(Broadcasting Satellite)/CS(Communications Satellite)デジタル放送)の放送波信号を、アンテナを介して受信し、復調し、MPEG-TS(Moving Picture Experts Group-Transport Stream)を取得し、それをMPEGデコーダ1017に供給する。
MPEGデコーダ1017は、デジタルチューナ1016から供給されたMPEG-TSに施されているスクランブルを解除し、再生対象(視聴対象)になっている番組のデータを含むストリームを抽出する。MPEGデコーダ1017は、抽出したストリームを構成する音声パケットをデコードし、得られた音声データを音声信号処理回路1022に供給するとともに、ストリームを構成する映像パケットをデコードし、得られた映像データを映像信号処理回路1018に供給する。また、MPEGデコーダ1017は、MPEG-TSから抽出したEPG(Electronic Program Guide)データを図示せぬ経路を介してCPU1032に供給する。
テレビジョン受像機1000は、このように映像パケットをデコードするMPEGデコーダ1017として、上述した画像復号装置200を用いる。なお、放送局等より送信されるMPEG-TSは、画像符号化装置100によって符号化されている。
MPEGデコーダ1017は、画像復号装置200の場合と同様に、画像符号化装置100より供給される符号化データから、1つのスライスヘッダに埋め込まれた複数のスライス分の制御情報を抽出し、その制御情報に基づいて適切に適応フィルタ処理を行うので、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。
MPEGデコーダ1017から供給された映像データは、ビデオデコーダ1015から供給された映像データの場合と同様に、映像信号処理回路1018において所定の処理が施され、グラフィック生成回路1019において、生成された映像データ等が適宜重畳され、パネル駆動回路1020を介して表示パネル1021に供給され、その画像が表示される。
MPEGデコーダ1017から供給された音声データは、音声A/D変換回路1014から供給された音声データの場合と同様に、音声信号処理回路1022において所定の処理が施され、エコーキャンセル/音声合成回路1023を介して音声増幅回路1024に供給され、D/A変換処理や増幅処理が施される。その結果、所定の音量に調整された音声がスピーカ1025から出力される。
また、テレビジョン受像機1000は、マイクロホン1026、およびA/D変換回路1027も有する。
A/D変換回路1027は、音声会話用のものとしてテレビジョン受像機1000に設けられるマイクロホン1026により取り込まれたユーザの音声の信号を受信し、受信した音声信号に対してA/D変換処理を施し、得られたデジタルの音声データをエコーキャンセル/音声合成回路1023に供給する。
エコーキャンセル/音声合成回路1023は、テレビジョン受像機1000のユーザ(ユーザA)の音声のデータがA/D変換回路1027から供給されている場合、ユーザAの音声データを対象としてエコーキャンセルを行い、他の音声データと合成するなどして得られた音声のデータを、音声増幅回路1024を介してスピーカ1025より出力させる。
さらに、テレビジョン受像機1000は、音声コーデック1028、内部バス1029、SDRAM(Synchronous Dynamic Random Access Memory)1030、フラッシュメモリ1031、CPU1032、USB(Universal Serial Bus) I/F1033、およびネットワークI/F1034も有する。
A/D変換回路1027は、音声会話用のものとしてテレビジョン受像機1000に設けられるマイクロホン1026により取り込まれたユーザの音声の信号を受信し、受信した音声信号に対してA/D変換処理を施し、得られたデジタルの音声データを音声コーデック1028に供給する。
音声コーデック1028は、A/D変換回路1027から供給された音声データを、ネットワーク経由で送信するための所定のフォーマットのデータに変換し、内部バス1029を介してネットワークI/F1034に供給する。
ネットワークI/F1034は、ネットワーク端子1035に装着されたケーブルを介してネットワークに接続される。ネットワークI/F1034は、例えば、そのネットワークに接続される他の装置に対して、音声コーデック1028から供給された音声データを送信する。また、ネットワークI/F1034は、例えば、ネットワークを介して接続される他の装置から送信される音声データを、ネットワーク端子1035を介して受信し、それを、内部バス1029を介して音声コーデック1028に供給する。
音声コーデック1028は、ネットワークI/F1034から供給された音声データを所定のフォーマットのデータに変換し、それをエコーキャンセル/音声合成回路1023に供給する。
エコーキャンセル/音声合成回路1023は、音声コーデック1028から供給される音声データを対象としてエコーキャンセルを行い、他の音声データと合成するなどして得られた音声のデータを、音声増幅回路1024を介してスピーカ1025より出力させる。
SDRAM1030は、CPU1032が処理を行う上で必要な各種のデータを記憶する。
フラッシュメモリ1031は、CPU1032により実行されるプログラムを記憶する。フラッシュメモリ1031に記憶されているプログラムは、テレビジョン受像機1000の起動時などの所定のタイミングでCPU1032により読み出される。フラッシュメモリ1031には、デジタル放送を介して取得されたEPGデータ、ネットワークを介して所定のサーバから取得されたデータなども記憶される。
例えば、フラッシュメモリ1031には、CPU1032の制御によりネットワークを介して所定のサーバから取得されたコンテンツデータを含むMPEG-TSが記憶される。フラッシュメモリ1031は、例えばCPU1032の制御により、そのMPEG-TSを、内部バス1029を介してMPEGデコーダ1017に供給する。
MPEGデコーダ1017は、デジタルチューナ1016から供給されたMPEG-TSの場合と同様に、そのMPEG-TSを処理する。このようにテレビジョン受像機1000は、映像や音声等よりなるコンテンツデータを、ネットワークを介して受信し、MPEGデコーダ1017を用いてデコードし、その映像を表示させたり、音声を出力させたりすることができる。
また、テレビジョン受像機1000は、リモートコントローラ1051から送信される赤外線信号を受光する受光部1037も有する。
受光部1037は、リモートコントローラ1051からの赤外線を受光し、復調して得られたユーザ操作の内容を表す制御コードをCPU1032に出力する。
CPU1032は、フラッシュメモリ1031に記憶されているプログラムを実行し、受光部1037から供給される制御コードなどに応じてテレビジョン受像機1000の全体の動作を制御する。CPU1032とテレビジョン受像機1000の各部は、図示せぬ経路を介して接続されている。
USB I/F1033は、USB端子1036に装着されたUSBケーブルを介して接続される、テレビジョン受像機1000の外部の機器との間でデータの送受信を行う。ネットワークI/F1034は、ネットワーク端子1035に装着されたケーブルを介してネットワークに接続し、ネットワークに接続される各種の装置と音声データ以外のデータの送受信も行う。
テレビジョン受像機1000は、MPEGデコーダ1017として画像復号装置200を用いることにより、符号化データの1つのスライスヘッダに付加された複数スライス分の制御情報を抽出することができ、さらに、その制御情報を用いて適切に適応フィルタ処理を実行することができる。その結果として、テレビジョン受像機1000は、アンテナを介して受信する放送波信号や、ネットワークを介して取得するコンテンツデータの、フィルタ処理の局所的な制御のための符号化効率の低減の抑制を実現させることができる。
<12.第12の実施の形態>
[携帯電話機]
図48は、本発明を適用した画像符号化装置および画像復号装置を用いる携帯電話機の主な構成例を示すブロック図である。
図48に示される携帯電話機1100は、各部を統括的に制御するようになされた主制御部1150、電源回路部1151、操作入力制御部1152、画像エンコーダ1153、カメラI/F部1154、LCD制御部1155、画像デコーダ1156、多重分離部1157、記録再生部1162、変復調回路部1158、および音声コーデック1159を有する。これらは、バス1160を介して互いに接続されている。
また、携帯電話機1100は、操作キー1119、CCD(Charge Coupled Devices)カメラ1116、液晶ディスプレイ1118、記憶部1123、送受信回路部1163、アンテナ1114、マイクロホン(マイク)1121、およびスピーカ1117を有する。
電源回路部1151は、ユーザの操作により終話および電源キーがオン状態にされると、バッテリパックから各部に対して電力を供給することにより携帯電話機1100を動作可能な状態に起動する。
携帯電話機1100は、CPU、ROMおよびRAM等でなる主制御部1150の制御に基づいて、音声通話モードやデータ通信モード等の各種モードで、音声信号の送受信、電子メールや画像データの送受信、画像撮影、またはデータ記録等の各種動作を行う。
例えば、音声通話モードにおいて、携帯電話機1100は、マイクロホン(マイク)1121で集音した音声信号を、音声コーデック1159によってデジタル音声データに変換し、これを変復調回路部1158でスペクトラム拡散処理し、送受信回路部1163でデジタルアナログ変換処理および周波数変換処理する。携帯電話機1100は、その変換処理により得られた送信用信号を、アンテナ1114を介して図示しない基地局へ送信する。基地局へ伝送された送信用信号(音声信号)は、公衆電話回線網を介して通話相手の携帯電話機に供給される。
また、例えば、音声通話モードにおいて、携帯電話機1100は、アンテナ1114で受信した受信信号を送受信回路部1163で増幅し、さらに周波数変換処理およびアナログデジタル変換処理し、変復調回路部1158でスペクトラム逆拡散処理し、音声コーデック1159によってアナログ音声信号に変換する。携帯電話機1100は、その変換して得られたアナログ音声信号をスピーカ1117から出力する。
更に、例えば、データ通信モードにおいて電子メールを送信する場合、携帯電話機1100は、操作キー1119の操作によって入力された電子メールのテキストデータを、操作入力制御部1152において受け付ける。携帯電話機1100は、そのテキストデータを主制御部1150において処理し、LCD制御部1155を介して、画像として液晶ディスプレイ1118に表示させる。
また、携帯電話機1100は、主制御部1150において、操作入力制御部1152が受け付けたテキストデータやユーザ指示等に基づいて電子メールデータを生成する。携帯電話機1100は、その電子メールデータを、変復調回路部1158でスペクトラム拡散処理し、送受信回路部1163でデジタルアナログ変換処理および周波数変換処理する。携帯電話機1100は、その変換処理により得られた送信用信号を、アンテナ1114を介して図示しない基地局へ送信する。基地局へ伝送された送信用信号(電子メール)は、ネットワークおよびメールサーバ等を介して、所定のあて先に供給される。
また、例えば、データ通信モードにおいて電子メールを受信する場合、携帯電話機1100は、基地局から送信された信号を、アンテナ1114を介して送受信回路部1163で受信し、増幅し、さらに周波数変換処理およびアナログデジタル変換処理する。携帯電話機1100は、その受信信号を変復調回路部1158でスペクトラム逆拡散処理して元の電子メールデータを復元する。携帯電話機1100は、復元された電子メールデータを、LCD制御部1155を介して液晶ディスプレイ1118に表示する。
なお、携帯電話機1100は、受信した電子メールデータを、記録再生部1162を介して、記憶部1123に記録する(記憶させる)ことも可能である。
この記憶部1123は、書き換え可能な任意の記憶媒体である。記憶部1123は、例えば、RAMや内蔵型フラッシュメモリ等の半導体メモリであってもよいし、ハードディスクであってもよいし、磁気ディスク、光磁気ディスク、光ディスク、USBメモリ、またはメモリカード等のリムーバブルメディアであってもよい。もちろん、これら以外のものであってもよい。
さらに、例えば、データ通信モードにおいて画像データを送信する場合、携帯電話機1100は、撮像によりCCDカメラ1116で画像データを生成する。CCDカメラ1116は、レンズや絞り等の光学デバイスと光電変換素子としてのCCDを有し、被写体を撮像し、受光した光の強度を電気信号に変換し、被写体の画像の画像データを生成する。CCDカメラ1116は、その画像データを、カメラI/F部1154を介して、画像エンコーダ1153で符号化し、符号化画像データに変換する。
携帯電話機1100は、このような処理を行う画像エンコーダ1153として、上述した画像符号化装置100を用いる。したがって、画像エンコーダ1053は、画像符号化装置100の場合と同様に、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。例えば、画像エンコーダ1053は、符号化データの1つのスライスヘッダに付加された複数スライス分の制御情報を付加するので、スライス毎に制御情報を埋め込む場合よりも符号化効率を向上させることができる。
なお、携帯電話機1100は、このとき同時に、CCDカメラ1116で撮像中にマイクロホン(マイク)1121で集音した音声を、音声コーデック1159においてアナログデジタル変換し、さらに符号化する。
携帯電話機1100は、多重分離部1157において、画像エンコーダ1153から供給された符号化画像データと、音声コーデック1159から供給されたデジタル音声データとを、所定の方式で多重化する。携帯電話機1100は、その結果得られる多重化データを、変復調回路部1158でスペクトラム拡散処理し、送受信回路部1163でデジタルアナログ変換処理および周波数変換処理する。携帯電話機1100は、その変換処理により得られた送信用信号を、アンテナ1114を介して図示しない基地局へ送信する。基地局へ伝送された送信用信号(画像データ)は、ネットワーク等を介して、通信相手に供給される。
なお、画像データを送信しない場合、携帯電話機1100は、CCDカメラ1116で生成した画像データを、画像エンコーダ1153を介さずに、LCD制御部1155を介して液晶ディスプレイ1118に表示させることもできる。
また、例えば、データ通信モードにおいて、簡易ホームページ等にリンクされた動画像ファイルのデータを受信する場合、携帯電話機1100は、基地局から送信された信号を、アンテナ1114を介して送受信回路部1163で受信し、増幅し、さらに周波数変換処理およびアナログデジタル変換処理する。携帯電話機1100は、その受信信号を変復調回路部1158でスペクトラム逆拡散処理して元の多重化データを復元する。携帯電話機1100は、多重分離部1157において、その多重化データを分離して、符号化画像データと音声データとに分ける。
携帯電話機1100は、画像デコーダ1156において符号化画像データをデコードすることにより、再生動画像データを生成し、これを、LCD制御部1155を介して液晶ディスプレイ1118に表示させる。これにより、例えば、簡易ホームページにリンクされた動画像ファイルに含まれる動画データが液晶ディスプレイ1118に表示される。
携帯電話機1100は、このような処理を行う画像デコーダ1156として、上述した画像復号装置200を用いる。したがって、画像デコーダ1156は、画像復号装置200の場合と同様に、符号化データの1つのスライスヘッダに付加された複数スライス分の制御情報を抽出することができ、さらに、その制御情報を用いて適切に適応フィルタ処理を実行することができる。その結果として、フィルタ処理の局所的な制御のための符号化効率の低減の抑制を実現させることができる。
このとき、携帯電話機1100は、同時に、音声コーデック1159において、デジタルの音声データをアナログ音声信号に変換し、これをスピーカ1117より出力させる。これにより、例えば、簡易ホームページにリンクされた動画像ファイルに含まれる音声データが再生される。
なお、電子メールの場合と同様に、携帯電話機1100は、受信した簡易ホームページ等にリンクされたデータを、記録再生部1162を介して、記憶部1123に記録する(記憶させる)ことも可能である。
また、携帯電話機1100は、主制御部1150において、撮像されてCCDカメラ1116で得られた2次元コードを解析し、2次元コードに記録された情報を取得することができる。
さらに、携帯電話機1100は、赤外線通信部1181で赤外線により外部の機器と通信することができる。
携帯電話機1100は、画像エンコーダ1153として画像符号化装置100を用いることにより、例えばCCDカメラ1116において生成された画像データを符号化して生成する符号化データの、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。結果として、携帯電話機1100は、スライス毎に制御情報を埋め込む場合よりも符号化効率のよい符号化データ(画像データ)を、他の装置に提供することができる。
また、携帯電話機1100は、画像デコーダ1156として画像復号装置200を用いることにより、符号化データの1つのスライスヘッダに付加された複数スライス分の制御情報を抽出することができ、さらに、その制御情報を用いて適切に適応フィルタ処理を実行することができる。その結果として、携帯電話機1100は、例えば、簡易ホームページ等にリンクされた動画像ファイルのデータの、フィルタ処理の局所的な制御のための符号化効率の低減の抑制を実現させることができる。
なお、以上において、携帯電話機1100が、CCDカメラ1116を用いるように説明したが、このCCDカメラ1116の代わりに、CMOS(Complementary Metal Oxide Semiconductor)を用いたイメージセンサ(CMOSイメージセンサ)を用いるようにしてもよい。この場合も、携帯電話機1100は、CCDカメラ1116を用いる場合と同様に、被写体を撮像し、被写体の画像の画像データを生成することができる。
また、以上においては携帯電話機1100として説明したが、例えば、PDA(Personal Digital Assistants)、スマートフォン、UMPC(Ultra Mobile Personal Computer)、ネットブック、ノート型パーソナルコンピュータ等、この携帯電話機1100と同様の撮像機能や通信機能を有する装置であれば、どのような装置であっても携帯電話機1100の場合と同様に、画像符号化装置100および画像復号装置200を適用することができる。
<13.第13の実施の形態>
[ハードディスクレコーダ]
図48は、本発明を適用した画像符号化装置および画像復号装置を用いるハードディスクレコーダの主な構成例を示すブロック図である。
図48に示されるハードディスクレコーダ(HDDレコーダ)1200は、チューナにより受信された、衛星や地上のアンテナ等より送信される放送波信号(テレビジョン信号)に含まれる放送番組のオーディオデータとビデオデータを、内蔵するハードディスクに保存し、その保存したデータをユーザの指示に応じたタイミングでユーザに提供する装置である。
ハードディスクレコーダ1200は、例えば、放送波信号よりオーディオデータとビデオデータを抽出し、それらを適宜復号し、内蔵するハードディスクに記憶させることができる。また、ハードディスクレコーダ1200は、例えば、ネットワークを介して他の装置からオーディオデータやビデオデータを取得し、それらを適宜復号し、内蔵するハードディスクに記憶させることもできる。
さらに、ハードディスクレコーダ1200は、例えば、内蔵するハードディスクに記録されているオーディオデータやビデオデータを復号してモニタ1260に供給し、モニタ1260の画面にその画像を表示させ、モニタ1260のスピーカよりその音声を出力させることができる。また、ハードディスクレコーダ1200は、例えば、チューナを介して取得された放送波信号より抽出されたオーディオデータとビデオデータ、または、ネットワークを介して他の装置から取得したオーディオデータやビデオデータを復号してモニタ1260に供給し、モニタ1260の画面にその画像を表示させ、モニタ1260のスピーカよりその音声を出力させることもできる。
もちろん、この他の動作も可能である。
図48に示されるように、ハードディスクレコーダ1200は、受信部1221、復調部1222、デマルチプレクサ1223、オーディオデコーダ1224、ビデオデコーダ1225、およびレコーダ制御部1226を有する。ハードディスクレコーダ1200は、さらに、EPGデータメモリ1227、プログラムメモリ1228、ワークメモリ1229、ディスプレイコンバータ1230、OSD(On Screen Display)制御部1231、ディスプレイ制御部1232、記録再生部1233、D/Aコンバータ1234、および通信部1235を有する。
また、ディスプレイコンバータ1230は、ビデオエンコーダ1241を有する。記録再生部1233は、エンコーダ1251およびデコーダ1252を有する。
受信部1221は、リモートコントローラ(図示せず)からの赤外線信号を受信し、電気信号に変換してレコーダ制御部1226に出力する。レコーダ制御部1226は、例えば、マイクロプロセッサなどにより構成され、プログラムメモリ1228に記憶されているプログラムに従って、各種の処理を実行する。レコーダ制御部1226は、このとき、ワークメモリ1229を必要に応じて使用する。
通信部1235は、ネットワークに接続され、ネットワークを介して他の装置との通信処理を行う。例えば、通信部1235は、レコーダ制御部1226により制御され、チューナ(図示せず)と通信し、主にチューナに対して選局制御信号を出力する。
復調部1222は、チューナより供給された信号を、復調し、デマルチプレクサ1223に出力する。デマルチプレクサ1223は、復調部1222より供給されたデータを、オーディオデータ、ビデオデータ、およびEPGデータに分離し、それぞれ、オーディオデコーダ1224、ビデオデコーダ1225、またはレコーダ制御部1226に出力する。
オーディオデコーダ1224は、入力されたオーディオデータをデコードし、記録再生部1233に出力する。ビデオデコーダ1225は、入力されたビデオデータをデコードし、ディスプレイコンバータ1230に出力する。レコーダ制御部1226は、入力されたEPGデータをEPGデータメモリ1227に供給し、記憶させる。
ディスプレイコンバータ1230は、ビデオデコーダ1225またはレコーダ制御部1226より供給されたビデオデータを、ビデオエンコーダ1241により、例えばNTSC(National Television Standards Committee)方式のビデオデータにエンコードし、記録再生部1233に出力する。また、ディスプレイコンバータ1230は、ビデオデコーダ1225またはレコーダ制御部1226より供給されるビデオデータの画面のサイズを、モニタ1260のサイズに対応するサイズに変換し、ビデオエンコーダ1241によってNTSC方式のビデオデータに変換し、アナログ信号に変換し、ディスプレイ制御部1232に出力する。
ディスプレイ制御部1232は、レコーダ制御部1226の制御のもと、OSD(On Screen Display)制御部1231が出力したOSD信号を、ディスプレイコンバータ1230より入力されたビデオ信号に重畳し、モニタ1260のディスプレイに出力し、表示させる。
モニタ1260にはまた、オーディオデコーダ1224が出力したオーディオデータが、D/Aコンバータ1234によりアナログ信号に変換されて供給されている。モニタ1260は、このオーディオ信号を内蔵するスピーカから出力する。
記録再生部1233は、ビデオデータやオーディオデータ等を記録する記憶媒体としてハードディスクを有する。
記録再生部1233は、例えば、オーディオデコーダ1224より供給されるオーディオデータを、エンコーダ1251によりエンコードする。また、記録再生部1233は、ディスプレイコンバータ1230のビデオエンコーダ1241より供給されるビデオデータを、エンコーダ1251によりエンコードする。記録再生部1233は、そのオーディオデータの符号化データとビデオデータの符号化データとをマルチプレクサにより合成する。記録再生部1233は、その合成データをチャネルコーディングして増幅し、そのデータを、記録ヘッドを介してハードディスクに書き込む。
記録再生部1233は、再生ヘッドを介してハードディスクに記録されているデータを再生し、増幅し、デマルチプレクサによりオーディオデータとビデオデータに分離する。記録再生部1233は、デコーダ1252によりオーディオデータおよびビデオデータをデコードする。記録再生部1233は、復号したオーディオデータをD/A変換し、モニタ1260のスピーカに出力する。また、記録再生部1233は、復号したビデオデータをD/A変換し、モニタ1260のディスプレイに出力する。
レコーダ制御部1226は、受信部1221を介して受信されるリモートコントローラからの赤外線信号により示されるユーザ指示に基づいて、EPGデータメモリ1227から最新のEPGデータを読み出し、それをOSD制御部1231に供給する。OSD制御部1231は、入力されたEPGデータに対応する画像データを発生し、ディスプレイ制御部1232に出力する。ディスプレイ制御部1232は、OSD制御部1231より入力されたビデオデータをモニタ1260のディスプレイに出力し、表示させる。これにより、モニタ1260のディスプレイには、EPG(電子番組ガイド)が表示される。
また、ハードディスクレコーダ1200は、インターネット等のネットワークを介して他の装置から供給されるビデオデータ、オーディオデータ、またはEPGデータ等の各種データを取得することができる。
通信部1235は、レコーダ制御部1226に制御され、ネットワークを介して他の装置から送信されるビデオデータ、オーディオデータ、およびEPGデータ等の符号化データを取得し、それをレコーダ制御部1226に供給する。レコーダ制御部1226は、例えば、取得したビデオデータやオーディオデータの符号化データを記録再生部1233に供給し、ハードディスクに記憶させる。このとき、レコーダ制御部1226および記録再生部1233が、必要に応じて再エンコード等の処理を行うようにしてもよい。
また、レコーダ制御部1226は、取得したビデオデータやオーディオデータの符号化データを復号し、得られるビデオデータをディスプレイコンバータ1230に供給する。ディスプレイコンバータ1230は、ビデオデコーダ1225から供給されるビデオデータと同様に、レコーダ制御部1226から供給されるビデオデータを処理し、ディスプレイ制御部1232を介してモニタ1260に供給し、その画像を表示させる。
また、この画像表示に合わせて、レコーダ制御部1226が、復号したオーディオデータを、D/Aコンバータ1234を介してモニタ1260に供給し、その音声をスピーカから出力させるようにしてもよい。
さらに、レコーダ制御部1226は、取得したEPGデータの符号化データを復号し、復号したEPGデータをEPGデータメモリ1227に供給する。
以上のようなハードディスクレコーダ1200は、ビデオデコーダ1225、デコーダ1252、およびレコーダ制御部1226に内蔵されるデコーダとして画像復号装置200を用いる。したがって、ビデオデコーダ1225、デコーダ1252、およびレコーダ制御部1226に内蔵されるデコーダは、画像復号装置200の場合と同様に、符号化データの1つのスライスヘッダに付加された複数スライス分の制御情報を抽出することができ、さらに、その制御情報を用いて適切に適応フィルタ処理を実行することができる。その結果として、フィルタ処理の局所的な制御のための符号化効率の低減の抑制を実現させることができる。
したがって、ハードディスクレコーダ1200は、符号化データの1つのスライスヘッダに付加された複数スライス分の制御情報を抽出することができ、さらに、その制御情報を用いて適切に適応フィルタ処理を実行することができる。その結果として、ハードディスクレコーダ1200は、例えば、チューナや通信部1235を介して受信されるビデオデータや、記録再生部1233のハードディスクに記録されるビデオデータの、フィルタ処理の局所的な制御のための符号化効率の低減の抑制を実現させることができる。
また、ハードディスクレコーダ1200は、エンコーダ1251として画像符号化装置100を用いる。したがって、エンコーダ1251は、画像符号化装置100の場合と同様に、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。例えば、エンコーダ1251は、符号化データの1つのスライスヘッダに付加された複数スライス分の制御情報を付加するので、スライス毎に制御情報を埋め込む場合よりも符号化効率を向上させることができる。
したがって、ハードディスクレコーダ1200は、エンコーダ1251として画像符号化装置100を用いることにより、例えばハードディスクに記録する符号化データの、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。その結果として、ハードディスクレコーダ1200は、スライス毎に制御情報を埋め込む場合よりもハードディスクの記憶領域をより効率よく使用することができる。
なお、以上においては、ビデオデータやオーディオデータをハードディスクに記録するハードディスクレコーダ1200について説明したが、もちろん、記録媒体はどのようなものであってもよい。例えばフラッシュメモリ、光ディスク、またはビデオテープ等、ハードディスク以外の記録媒体を適用するレコーダであっても、上述したハードディスクレコーダ1200の場合と同様に、画像符号化装置100および画像復号装置200を適用することができる。
<14.第14の実施の形態>
[カメラ]
図49は、本発明を適用した画像符号化装置および画像復号装置を用いるカメラの主な構成例を示すブロック図である。
図49に示されるカメラ1300は、被写体を撮像し、被写体の画像をLCD1316に表示させたり、それを画像データとして、記録メディア1333に記録したりする。
レンズブロック1311は、光(すなわち、被写体の映像)を、CCD/CMOS1312に入射させる。CCD/CMOS1312は、CCDまたはCMOSを用いたイメージセンサであり、受光した光の強度を電気信号に変換し、カメラ信号処理部1313に供給する。
カメラ信号処理部1313は、CCD/CMOS1312から供給された電気信号を、Y,Cr,Cbの色差信号に変換し、画像信号処理部1314に供給する。画像信号処理部1314は、コントローラ1321の制御の下、カメラ信号処理部1313から供給された画像信号に対して所定の画像処理を施したり、その画像信号をエンコーダ1341で符号化したりする。画像信号処理部1314は、画像信号を符号化して生成した符号化データを、デコーダ1315に供給する。さらに、画像信号処理部1314は、オンスクリーンディスプレイ(OSD)1320において生成された表示用データを取得し、それをデコーダ1315に供給する。
以上の処理において、カメラ信号処理部1313は、バス1317を介して接続されるDRAM(Dynamic Random Access Memory)1318を適宜利用し、必要に応じて画像データや、その画像データが符号化された符号化データ等をそのDRAM1318に保持させる。
デコーダ1315は、画像信号処理部1314から供給された符号化データを復号し、得られた画像データ(復号画像データ)をLCD1316に供給する。また、デコーダ1315は、画像信号処理部1314から供給された表示用データをLCD1316に供給する。LCD1316は、デコーダ1315から供給された復号画像データの画像と表示用データの画像を適宜合成し、その合成画像を表示する。
オンスクリーンディスプレイ1320は、コントローラ1321の制御の下、記号、文字、または図形からなるメニュー画面やアイコンなどの表示用データを、バス1317を介して画像信号処理部1314に出力する。
コントローラ1321は、ユーザが操作部1322を用いて指令した内容を示す信号に基づいて、各種処理を実行するとともに、バス1317を介して、画像信号処理部1314、DRAM1318、外部インタフェース1319、オンスクリーンディスプレイ1320、およびメディアドライブ1323等を制御する。FLASH ROM1324には、コントローラ1321が各種処理を実行する上で必要なプログラムやデータ等が格納される。
例えば、コントローラ1321は、画像信号処理部1314やデコーダ1315に代わって、DRAM1318に記憶されている画像データを符号化したり、DRAM1318に記憶されている符号化データを復号したりすることができる。このとき、コントローラ1321は、画像信号処理部1314やデコーダ1315の符号化・復号方式と同様の方式によって符号化・復号処理を行うようにしてもよいし、画像信号処理部1314やデコーダ1315が対応していない方式により符号化・復号処理を行うようにしてもよい。
また、例えば、操作部1322から画像印刷の開始が指示された場合、コントローラ1321は、DRAM1318から画像データを読み出し、それを、バス1317を介して外部インタフェース1319に接続されるプリンタ1334に供給して印刷させる。
さらに、例えば、操作部1322から画像記録が指示された場合、コントローラ1321は、DRAM1318から符号化データを読み出し、それを、バス1317を介してメディアドライブ1323に装着される記録メディア1333に供給して記憶させる。
記録メディア1333は、例えば、磁気ディスク、光磁気ディスク、光ディスク、または半導体メモリ等の、読み書き可能な任意のリムーバブルメディアである。記録メディア1333は、もちろん、リムーバブルメディアとしての種類も任意であり、テープデバイスであってもよいし、ディスクであってもよいし、メモリカードであってもよい。もちろん、非接触ICカード等であっても良い。
また、メディアドライブ1323と記録メディア1333を一体化し、例えば、内蔵型ハードディスクドライブやSSD(Solid State Drive)等のように、非可搬性の記憶媒体により構成されるようにしてもよい。
外部インタフェース1319は、例えば、USB入出力端子などで構成され、画像の印刷を行う場合に、プリンタ1334と接続される。また、外部インタフェース1319には、必要に応じてドライブ1331が接続され、磁気ディスク、光ディスク、あるいは光磁気ディスクなどのリムーバブルメディア1332が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて、FLASH ROM1324にインストールされる。
さらに、外部インタフェース1319は、LANやインターネット等の所定のネットワークに接続されるネットワークインタフェースを有する。コントローラ1321は、例えば、操作部1322からの指示に従って、DRAM1318から符号化データを読み出し、それを外部インタフェース1319から、ネットワークを介して接続される他の装置に供給させることができる。また、コントローラ1321は、ネットワークを介して他の装置から供給される符号化データや画像データを、外部インタフェース1319を介して取得し、それをDRAM1318に保持させたり、画像信号処理部1314に供給したりすることができる。
以上のようなカメラ1300は、デコーダ1315として画像復号装置200を用いる。したがって、デコーダ1315は、画像復号装置200の場合と同様に、符号化データの1つのスライスヘッダに付加された複数スライス分の制御情報を抽出することができ、さらに、その制御情報を用いて適切に適応フィルタ処理を実行することができる。その結果として、フィルタ処理の局所的な制御のための符号化効率の低減の抑制を実現させることができる。
したがって、カメラ1300は、符号化データの1つのスライスヘッダに付加された複数スライス分の制御情報を抽出することができ、さらに、その制御情報を用いて適切に適応フィルタ処理を実行することができる。その結果として、カメラ1300は、例えば、CCD/CMOS1312において生成される画像データや、DRAM1318または記録メディア1333から読み出されるビデオデータの符号化データや、ネットワークを介して取得するビデオデータの符号化データの、フィルタ処理の局所的な制御のための符号化効率の低減の抑制を実現させることができる。
また、カメラ1300は、エンコーダ1341として画像符号化装置100を用いる。したがって、エンコーダ1341は、画像符号化装置100の場合と同様に、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。例えば、符号化データの1つのスライスヘッダに付加された複数スライス分の制御情報を付加するので、スライス毎に制御情報を埋め込む場合よりも符号化効率を向上させることができる。
したがって、カメラ1300は、例えば、DRAM1318や記録メディア1333に記録する符号化データや、他の装置に提供する符号化データの、フィルタ処理の局所的な制御による符号化効率の低減を抑制することができる。その結果として、カメラ1300は、DRAM1318や記録メディア1333の記憶領域をより効率よく使用することができる。また、カメラ1300は、符号化効率のよい符号化データ(画像データ)を、他の装置に提供することもできる。
なお、コントローラ1321が行う復号処理に画像復号装置200の復号方法を適用するようにしてもよい。同様に、コントローラ1321が行う符号化処理に画像符号化装置100の符号化方法を適用するようにしてもよい。
また、カメラ1300が撮像する画像データは動画像であってもよいし、静止画像であってもよい。
もちろん、画像符号化装置100および画像復号装置200は、上述した装置以外の装置やシステムにも適用可能である。
また、マクロブロックの大きさも、16×16画素に限らない。例えば図50に示される32×32画素のような、あらゆる大きさのマクロブロックに対して適用することが可能である。
以上においては、フラグ情報等をビットストリームに多重化(記述)するものとして説明したが、多重化する以外にも、例えば、フラグと画像データ(又はビットストリーム)とを伝送(記録)してもよい。フラグと画像データ(又はビットストリーム)とを連結する(付加する)形態もありうる。
連結(付加)とは、画像データ(又はビットストリーム)とフラグとが互いにリンクされている状態(対応が取れている状態)を示すものであり、物理的な位置関係は任意である。例えば、画像データ(又はビットストリーム)とフラグとを、別の伝送路で伝送してもよい。また、画像データ(又はビットストリーム)とフラグとを、互いに別の記録媒体(又は同一の記録媒体内の別々の記録エリア)に記録してもよい。なお、画像データ(又はビットストリーム)とフラグとをリンクさせる単位は、任意であり、例えば、符号化処理単位(1フレーム、複数フレーム等)で設定してもよい。