以下、本開示を実施するための形態(以下実施の形態とする)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態(画像符号化装置)
2.第2の実施の形態(画像復号装置)
3.第3の実施の形態(画像符号化装置)
4.第4の実施の形態(パーソナルコンピュータ)
5.第5の実施の形態(テレビジョン受像機)
6.第6の実施の形態(携帯電話機)
7.第7の実施の形態(ハードディスクレコーダ)
8.第8の実施の形態(カメラ)
<1.第1の実施の形態>
[画像符号化装置]
図1は、画像符号化装置の主な構成例を示すブロック図である。
図1に示される画像符号化装置100は、H.264及びMPEG(Moving Picture Experts Group)4 Part10(AVC(Advanced Video Coding))符号化方式のように、ストリームを破綻なく伝送させるようにコードストリームのレート制御を行いながら、画像データを符号化する。
図1に示されるように画像符号化装置100は、A/D変換部101、画面並べ替えバッファ102、演算部103、直交変換部104、量子化部105、可逆符号化部106、および蓄積バッファ107を有する。また、画像符号化装置100は、逆量子化部108、逆直交変換部109、演算部110、ループフィルタ111、フレームメモリ112、選択部113、イントラ予測部114、動き予測・補償部115、予測画像選択部116、およびレート制御部117を有する。
A/D変換部101は、入力された画像データをA/D変換し、変換後の画像データ(デジタルデータ)を、画面並べ替えバッファ102に供給し、記憶させる。画面並べ替えバッファ102は、記憶した表示の順番のフレームの画像を、GOP(Group Of Picture)に応じて、符号化のためのフレームの順番に並べ替え、演算部103、イントラ予測部114、および動き予測・補償部115に供給する。
演算部103は、画面並べ替えバッファ102から読み出された画像から、予測画像選択部116を介してイントラ予測部114若しくは動き予測・補償部115から供給される予測画像を減算し、その差分情報を直交変換部104に出力する。
直交変換部104は、演算部103から供給される差分情報に対して、例えば離散コサイン変換やカルーネン・レーベ変換等の直交変換を施し、量子化部105に供給する。量子化部105は、直交変換部104から供給される変換係数を量子化する。量子化部105は、レート制御部117から供給される符号量の目標値に関する情報に基づいて量子化パラメータを設定し、その量子化を行う。なお、この量子化の方法は任意である。量子化部105は、量子化された変換係数を可逆符号化部106に供給する。
可逆符号化部106は、量子化部105において量子化された変換係数を任意の符号化方式で符号化する。係数データは、レート制御部117の制御の下で量子化されているので、この符号量は、レート制御部117が設定した目標値となる(若しくは目標値に近似する)。
また、可逆符号化部106は、イントラ予測のモードを示す情報などをイントラ予測部114から取得し、インター予測のモードを示す情報や動きベクトル情報などを動き予測・補償部115から取得する。さらに、可逆符号化部106は、ループフィルタ111において使用されたフィルタ係数等を取得する。
可逆符号化部106は、これらの各種情報を任意の符号化方式で符号化し、符号化データのヘッダ情報の一部とする(多重化する)。可逆符号化部106は、符号化して得られた符号化データを蓄積バッファ107に供給して蓄積させる。
可逆符号化部106の符号化方式としては、例えば、可変長符号化または算術符号化等が挙げられる。可変長符号化としては、例えば、H.264/AVC方式で定められているCAVLC(Context-Adaptive Variable Length Coding)などが挙げられる。算術符号化としては、例えば、CABAC(Context-Adaptive Binary Arithmetic Coding)などが挙げられる。
蓄積バッファ107は、可逆符号化部106から供給された符号化データを、一時的に保持する。蓄積バッファ107は、所定のタイミングにおいて、保持している符号化データを、例えば、後段の図示せぬ記録装置(記録媒体)や伝送路などに出力する。
また、量子化部105において量子化された変換係数は、逆量子化部108にも供給される。逆量子化部108は、その量子化された変換係数を、量子化部105による量子化に対応する方法で逆量子化し、得られた変換係数を、逆直交変換部109に供給する。
逆直交変換部109は、逆量子化部108から供給された変換係数を、直交変換部104による直交変換処理に対応する方法で逆直交変換し、逆直交変換された出力(復元された差分情報)は、演算部110に供給される。
演算部110は、逆直交変換部109から供給された逆直交変換結果、すなわち、復元された差分情報に、予測画像選択部116を介してイントラ予測部114若しくは動き予測・補償部115から供給される予測画像を加算し、局部的に復号された画像(復号画像)を得る。その復号画像は、ループフィルタ111およびフレームメモリ112に供給される。
ループフィルタ111は、デブロックフィルタや適応ループフィルタ等を含み、演算部110から供給される復号画像に対して適宜フィルタ処理を行う。例えば、ループフィルタ111は、復号画像に対してデブロックフィルタ処理を行うことにより復号画像のブロック歪を除去する。また、例えば、ループフィルタ111は、そのデブロックフィルタ処理結果(ブロック歪みの除去が行われた復号画像)に対して、ウィナーフィルタ(Wiener Filter)を用いてループフィルタ処理を行うことにより画質改善を行う。
なお、ループフィルタ111が、復号画像に対して任意のフィルタ処理を行うようにしてもよい。また、ループフィルタ111は、必要に応じて、フィルタ処理に用いたフィルタ係数等の情報を可逆符号化部106に供給し、それを符号化させるようにすることもできる。
ループフィルタ111は、フィルタ処理結果(フィルタ処理後の復号画像)をフレームメモリ112に供給する。
選択部113は、フレームメモリ112から供給される参照画像の供給先を選択する。例えば、イントラ予測の場合、選択部113は、フレームメモリ112から供給される参照画像をイントラ予測部114に供給する。また、例えば、インター予測の場合、選択部113は、フレームメモリ112から供給される参照画像を動き予測・補償部115に供給する。
イントラ予測部114は、選択部113を介してフレームメモリ112から供給される参照画像を用いてイントラ予測(画面内予測)を行う。イントラ予測部114は、最適なモードで生成した予測画像を、予測画像選択部116に供給する。また、イントラ予測部114は、採用されたイントラ予測モードを示すイントラ予測モード情報等を、適宜可逆符号化部106に供給し、符号化させる。
動き予測・補償部115は、画面並べ替えバッファ102から供給される入力画像と、選択部113を介してフレームメモリ112から供給される参照画像とを用いて、動き予測(インター予測)を行い、動き補償処理によって予測画像(インター予測画像情報)を生成する。動き予測・補償部115は、最適なインター予測モードで生成した予測画像を、予測画像選択部116に供給する。また、動き予測・補償部115は、採用されたインター予測モードを示す情報や、符号化データを復号する際に、そのインター予測モードで処理を行うために必要な情報等を可逆符号化部106に供給し、符号化させる。
予測画像選択部116は、演算部103や演算部110に供給する予測画像の供給元を選択する。つまり、予測画像選択部116は、イントラ予測部114から供給される予測画像と、動き予測・補償部115から供給される予測画像とのいずれか一方を選択し、選択した方の予測画像を、演算部103や演算部110に供給する。
レート制御部117は、可逆符号化部106において発生したバイナリデータのデータ量(発生Binとも称する)や、蓄積バッファ107に蓄積された符号化データの符号量(発生Bitとも称する)等に基づいて、オーバフローあるいはアンダーフローが発生しないように、量子化部105の量子化動作のレートの制御方法を決定したり、その制御方法で実際にレートを制御したりする。
量子化部105は、レート制御部117から供給される、レートを制御する制御情報(ビットレートの目標値)であるターゲットビット(Target Bit)を取得し、そのターゲットビット(目標レート)が得られるように量子化パラメータを制御し、量子化を行う。
可逆符号化部106は、CABAC等の算術符号化を行う場合、バイナリデータのデータ量(発生Bin)をレート制御部117に供給する。
蓄積バッファ107は、可逆符号化部106がCAVLC等の可変長符号化を行う場合、コードストリームのデータ量(発生Bit)をレート制御部117に供給する。また、蓄積バッファ107は、レート制御部117において設定された、仮想デコーダに関する各種パラメータを取得し、それをコードストリームとともに伝送させる。
[HRDモデル]
デコーダは、エンコーダから伝送路を介して供給されるビットストリームを取得すると、それをバッファに保持する。デコーダは、ビットストリームを復号する際、そのバッファから必要なデータを読み出して復号を行う。その際、バッファがオーバフロー(ビットストリームがバッファからあふれてしまう場合)したり、アンダーフロー(デコーダが復号する際にビットストリームがまだ入力しきれていない場合)したりすると、デコーダは、正しくビットストリームを復号することができなくなる。
そのため、エンコーダは、そのビットストリームをデコードするデコーダを破綻させることがないように(オーバフローやアンダーフローが発生しないように)、ビットストリームを生成しなければならない。
これを実現するために、AVC等の符号化方式においては、仮想デコーダという概念が導入された。仮想デコーダとは、デコーダの振る舞い(バッファの状態)を仮想的にモデル化したものである。エンコーダは、この仮想デコーダを破たんさせないように符号化を行うことにより、デコーダを破綻させることがないビットストリームを生成することができる。
HRD(Hypothetical reference decoder)は、H.264/AVC標準が規定する仮想デコーダモデルである。このHRDには、例えばデコーダに入力される前のビットストリームを保存するバッファであるCPB(Coded Picture Buffer)が含まれる。
図2は、レート制御部117で計算されるHRDモデルの例を説明する図である。HRDでは、このCPBへのビットストリームの流入速度(trace rate)と、CPBのサイズ(CPB size)が規定される。trace rateは、bit_rate_scaleとbit_rate_value_minus1により規定され、CPB sizeは、cpb_size_scaleとcpb_size_value_minus1で規定される。
これらの変数(bit_rate_scale,bit_rate_value_minus1,cpb_size_scale、およびcpb_size_value_minus1)は、図3に示されるようにシンタックス(HRD Parameters syntax)に記述される。
図2のグラフにおいて、横軸は時間方向を示し、縦軸は、CPBに蓄積されるビットストリームの符号量を示す。垂直方向の各点線は、CPBからのデータの読み出しタイミングを示す。つまり、各点線の間隔がフレーム間隔(frame_rate)を示す。また図2のグラフの曲線は、現在のビットストリームの蓄積量を示す。
この仮想デコーダモデルにおいて、エンコーダから供給されるビットストリームは、次の垂直方向の点線(読み出しタイミング)までCPBに蓄積される。つまり、このときの曲線の傾きは、ビットストリームの流入速度(trace rate)を示す。
読み出しタイミングになると、CPBに蓄積されている所定量のビットストリームが、瞬時に読み出される。したがって、図2のグラフの曲線は垂直に降下する。そしてまた、次の読み出しタイミング(垂直方向の点線)までビットストリームの蓄積が行われる。
CPBにおいては、このようなビットストリームの入出力が繰り返し行われる。なお、図2において、水平方向の点線は、CPBのバッファサイズ(CPB size)(蓄積可能な符号量の最大値)を示す。つまり、図2のグラフの曲線が、この水平方向の点線より上に位置する場合、デコードタイミングでバッファがあふれるオーバフロー(Overflow)が発生したことを示す。
また、CPBからビットストリームが読み出されることにより、図2のグラフの曲線が、横軸より下に位置する場合、デコードタイミングにデータが届かないアンダーフロー(Underflow)が発生したことを示す。
つまり、エンコーダ(画像符号化装置100)は、CPB sizeの中でアンダーフローやオーバフローが発生しないようにレート制御を行う必要がある。
従来、これらのパラメータはすべて発生符号量で規定されていた。しかしながら、実際エンコーダではCABACの場合、算術符号器に入力するためにバイナライゼーションという処理によりバイナリデータ(2値データやBinとも称する)に変換されその後、算術符号により最終的なビットストリーム(Bitとも称する)に変換される。一般的には算術符号は遅延が発生するために一画面分の最終的なBitが確定するタイミングではマクロブロックのモード判定などの条件選択はすべて終了してしまっている。
図4に符号化に関する各処理のタイミングチャートの例を示す。各四角は、それぞれの処理単位毎の各処理を示す。図3に示されるように、算術符号化後の発生Bit量が確定するタイミングでは、符号化(その他の処理)は終了してしまっている。アーキテクチャ依存ではあるが、binからbitが確定するまでに数フレーム遅延するものも存在する。
レート制御においては、これから符号化するというタイミングでHRDがアンダーフローしないために使用できるBit量が求められる。CABACで符号化している場合、Bitの確定に遅延が発生するためにマクロブロックでフィードバック制御を行ったとしても、図5に示されるように、ある程度のマージンが必要になる。
つまり、図5に示されるように、Bit確定の遅延を考慮したマージンを確保する必要があるので、エンコーダは、使用可能Bit量として、実際に使用できるBit量からそのマージン分を減算した分しか確保することができない恐れがあった。
上述したようにbinからbitが確定するまでに数フレーム遅延するような場合、たとえば、buffering period seiで定義されるinitial_cpb_removal_delayなどを決定するときにbitでのHRDトレースが終了していない可能性がある。その場合、さらにマージンを確保する必要が生じ、確保できる使用可能Bit量はさらに低減される恐れがあった。
これにより、不要に符号量が抑制されるだけでなく、条件が厳しくなることにより、符号化が困難になる恐れがあった。
[Binによる規定]
そこで、図1の画像符号化装置100のレート制御部117は、HRD制御をBinで定義する。つまり、レート制御部117は、CPBへのビットストリームの流入速度と、CPBのサイズをBinにより規定する(trace rate binおよびCPB size bin)。
なお、発生Binは、発生Bitより必ず大きい。また、Bitの遷移は必ず、BinのHRDの推移より小さくなる。したがって、BinでHRDを定義し、CPBをBinのサイズ分確保するようにすれば、ビットストリームにおいても必ず条件が満たされる。つまり、デコーダにおいて破綻しないようなビットストリームの生成が可能である。
このようにHRDをBinで規定することにより、遅延によるマージンを確保する必要が無いので、Bitで規定する場合よりもHRDの規定が容易になる。つまり、画像符号化装置100は、より容易にレート制御を行うことができる。
HRD(CPB)の規定は、例えば、そのサイズや位置(蓄積量)を規定することにより行われる。例えば、レート制御部117は、所定のパラメータを用いて、Bitで規定されたHRD(CPB)を、Binによる規定に変換する。このBitで規定されたHRD(CPB)をBinで規定する際に用いるパラメータをバッファモデルパラメータと称する(バイナリパラメータとも称する)。
一般的にCABACのBinはBitに対して1.2倍程度になる。そこで、BinのHRDをBitのHRDの1.2倍とするようにしてもよい。図6は、その場合の、Binで規定するHRDモデルと、Bitで規定するHRDモデルを比較した場合の例を示す図である。図6に示されるグラフは、図2に示されるグラフに、Binで規定するHRDモデルの例を重畳したものである。
図6に示されるように、Binで規定するHRDモデルの場合のCPBサイズ(CPB size bin)は、Bitで規定するHRDモデルの場合(CPB size)よりも大きい。また、Binで規定するHRDモデルの場合の、その時点のCPBのデータ蓄積量を示すCPB位置(CPB pos bin)は、Bitで規定するHRDモデルの場合(CPB pos)よりも大きい。また、そのCPB位置の推移は、Binで規定するHRDモデルの場合の方が大きい。
したがって、レート制御部117は、Binにより規定されるHRDモデルを用いて、破綻しないようにビットレートを制御することにより、Bitにより規定されるHRDモデルにおいても破綻しないビットストリームを生成することができるようにレート制御を行うことができる。
このような制御のために、レート制御部117は、Binにより規定する場合と、Bitにより規定する場合との比を示すbit_to_binをバッファモデルパラメータとして設定する。つまり、bit_to_binは、ビットストリームの符号量をバイナリデータのデータ量に換算する変換用のパラメータである。また、レート制御部117は、このバッファモデルパラメータbit_to_binを用いて、Bitで規定されたHRD(CPB)を、Binによる規定に変換する。
まず、CPBへのビットストリームの流入速度(BitRate)と、CPBのサイズ(CpbSize)とは、発生Bit量を用いて、以下の式(1)および式(2)のように規定される。
BitRate[SchedSelIdx]=(bit_rate_value_minus1[SchedSelIdx]+1)
×2(6+bit_rate_scale)
・・・(1)
CpbSize[SchedSelIdx]=(cpb_size_value_minus1[SchedSelIdx]+1)
×2(4+cpb_size_scale)
・・・(2)
ここで求められたBitRate(trace rate)とCpbSizeは、bit_to_binパラメータを用いて、以下の式(3)および式(4)に示されるように再計算され、Binによる規定に変換される。
Bitrate=Bitrate×(32+bit_to_bin)>>5 ・・・(3)
CpbSize=CpbSize×(32+bit_to_bin)>>5 ・・・(4)
ここで、「>>5」は5ビットの右シフトを示す。また、パラメータbit_to_binは「0」乃至「32」の値をとるものとする。例えばbit_to_binが「0」の場合、Binで規定されるBitRateとCpbSizeは、Bitで規定される場合の1.0倍となる。また例えば、bit_to_binが「32」の場合、Binで規定されるBitRateとCpbSizeは、Bitで規定される場合の2.0倍となる。つまり、bit_to_binは、1/32精度で1.0乃至2.0を表現することができる。
なお、ストリームの途中でCABACとCAVLCとを切り換えることが可能である。このように符号化方式を切り換える場合、レート制御部117は、さらに、CPB位置(CPB pos)を、bit_to_binパラメータを用いて、以下の式(5)若しくは式(6)に示されるように再計算する。
CABACからCAVLCに切り替わる場合
CpbPos=CpbPos×32/(32+bit_to_bin) ・・・(5)
CAVLCからCABACに切り替わる場合
CpbPos=CpbPos×(32+bit_to_bin)>>5 ・・・(6)
図7に符号化方式を切り換える場合のHRDモデルの例を示す。図7に示されるグラフは、図2や図6に示されるグラフと同様のグラフである。ただし、図7の例の場合、符号化方式を、途中でCABACからCAVLCに切り替え、さらにCAVLCからCABACに切り換えている。
なお、bit_to_binパラメータの値は、CABACの場合「1.2」とし、CAVLCの場合「1.0」とする。すなわち、CABACの場合、HRDをBinにより規定し、CAVLCの場合、HRDをBitにより規定する。
直線131は、CABACで符号化を行う1回目の期間のCPBバッファサイズ(CPB size)を示す。直線132は、CAVLCで符号化を行う期間のCPBバッファサイズ(CPB size)を示す。直線133は、CABACで符号化を行う2回目の期間のCPBバッファサイズ(CPB size)を示す。つまり、直線131および直線133は、Binで規定されるCPBバッファサイズ(CPB size)を示し、直線132は、Bitで規定されるCPBバッファサイズ(CPB size)を示す。
CABACにより符号化が開始されると、CPB位置は、曲線134のように遷移する。つまり、ビットストリームがCPBに蓄積され、読み出しタイミングになると、CPB位置134−1まで蓄積されたビットストリームがCPB位置134−2まで読み出される。その後、また蓄積が行われ、次の読み出しタイミングにおいて、CPB位置134−3まで蓄積されたビットストリームがCPB位置134−4まで読み出される。同様に、その次の読み出しタイミングにおいては、CPB位置134−5まで蓄積されたビットストリームがCPB位置134−6まで読み出され、さらにその次の読み出しタイミングにおいては、CPB位置134−7まで蓄積されたビットストリームがCPB位置134−8まで読み出される。
これらはBin換算である。Bit換算(1/1.2)の場合、各読み出しタイミングにおいて、ビットストリームは、CPB位置P1乃至P4まで蓄積されることになる。このように、Bitにより規定されるCPB位置(P1乃至P4)は、Binにより規定されるCPB位置(CPB位置134−1、CPB位置134−3、CPB位置134−5、およびCPB位置134−7)よりも必ず小さくなる。したがって、Bitにより規定されるHRDにおいてもオーバフローが生じることはない。
符号化方式がCABACからCAVLCに切り替わる際、CPB位置(CPB pos)は、bit_to_binパラメータを用いて、上述した式(5)のように再計算される。つまり、CPB位置134−8が、CPB位置135−1に変換される。
このとき、CPB位置135−1は、CPB位置134−8より小さいが、Binにより規定されるHRDの方が、Bitにより規定されるHRDよりもCPB位置の推移は小さいので、この変換によりアンダーフローが生じることは無い。
CAVLCによる符号化により、CPB位置は、曲線135のように変化する。符号化方式がCAVLCからCABACに切り替わる際、CPB位置(CPB pos)は、bit_to_binパラメータを用いて、上述した式(6)のように再計算される。つまり、CPB位置135−2が、CPB位置136−1に変換される。
このとき、CPB位置136−1は、CPB位置135−2より大きく、この変換によりアンダーフローが生じることはない。その後、CABACによる符号化により、CPB位置は、曲線136のように変化する。
このように、レート制御部117は、オーバフローやアンダーフローを発生させることなく、Binによる規定とBitによる規定とを容易に切り換えることができるので、符号化方式の切り換える場合であっても容易にレートを制御することができる。
[シンタックス]
レート制御部117は、以上のようなレート制御のために、図3に示したHRD Parametersに、図8に示されるようにシンタックスを追加する。図8に示されるHRD Parametersには、図3に示されるHRD Parametersに、use_bin_hrd_flag,use_bit_to_bin_flag、および、bit_to_binが追加されている(上から第9行目乃至第11行目)。
バイナリパラメータuse_bin_hrd_flagは、binのHRDをBitのHRDと別のHRD parameterで用意するかどうかを示すパラメータ(フラグ)である。このuse_bin_hrd_flagがtrueの場合は、bitのHRDとbinのHRDが別々に定義され、別々にトレースされる。
バイナリパラメータuse_bit_to_bin_flagは、bit_to_binによるHRDトレース変換を行うかどうかを決定するパラメータ(フラグ)である。
バイナリパラメータbit_to_binは、binでHRDをトレースする際の変換パラメータである。use_bin_hrd_flagがtrueの場合のみ定義される。
これらのようなシンタックスが復号側に伝送される。
[可逆符号化部]
次に、図1の画像符号化装置100の各部についてより具体的に説明する。図9は、可逆符号化部106の主な構成例を示すブロック図である。
図9に示されるように、画像符号化装置100は、符号化モード設定部141、CABAC処理部142、およびCAVLC処理部143を有する。
符号化モード設定部141は、可逆符号化処理のモードを設定する。より具体的には、符号化モード設定部141は、CABAC処理部142およびCAVLC処理部143を制御し、可逆符号化処理をCABACで行うかCAVLCで行うかを設定する。符号化モード設定部141は、選択した符号化モードを示すパラメータ(フラグ)であるentropy_coding_mode_flagを生成し、それをレート制御部117に供給する。
CABAC処理部142は、符号化モード設定部141の制御に従ってCABACによる符号化を行う。つまり、CABAC処理部142は、符号化モード設定部141により符号化モードとしてCABACが選択された場合、符号化処理を行う。
図9に示されるように、CABAC処理部142は、2値化部151、コンテキスト計算部152、および2値算術符号化部153を有する。2値化部151は、量子化部105から供給される多値信号を2値化し、得られた2値信号(バイナリデータ)を2値算術符号化部153に供給する。2値算術符号化部153は、2値化部151から供給される2値信号を、コンテキスト計算部152から供給される2値信号発生確率を用いて符号化し、得られた符号化ビットを蓄積バッファ107に供給する。
2値化部151は、また、2値化により発生したバイナリデータのデータ量(発生Bin)をレート制御部117に供給する。
CAVLC処理部143は、符号化モード設定部141の制御に従ってCAVLCによる符号化を行う。つまり、CAVLC処理部143は、符号化モード設定部141により符号化モードとしてCAVLCが選択された場合、符号化処理を行う。CAVLC処理部143は、量子化部105から供給される多値信号を符号化し、得られた符号化ビットを蓄積バッファ107に供給する。
[レート制御部]
図10は、図1のレート制御部117の主な構成例を示すブロック図である。図10に示されるように、レート制御部117は、パラメータ設定部161、HRDトレース部162、CPB位置変換部163、およびターゲットビット決定部164を有する。
パラメータ設定部161は、パラメータ(フラグを含む)等のシンタックスの値を設定する。この設定方法は任意である。例えば、パラメータ設定部161は、例えば、開発者やユーザ等の外部から値を取得し、その値をパラメータとして設定するようにしてもよい。また、例えば、パラメータ設定部161は、符号化する画像データや符号化結果等に基づいて各値を設定するようにしてもよい。さらに、例えば、パラメータ設定部161は、予め定められた所定の値をパラメータとして設定するようにしてもよい。
なお、パラメータ設定部161は、Bitで規定されたHRDをBinで規定する際に用いるものであればどのようなパラメータを設定するようにしてもよい。
図10の例において、パラメータ設定部161は、use_bin_hrd_flag設定部171、use_bit_to_bin_flag設定部172、および、bit_to_bin設定部173を有する。
use_bin_hrd_flag設定部171は、use_bin_hrd_flagを設定する。use_bit_to_bin_flag設定部172は、use_bit_to_bin_flagを設定する。bit_to_bin設定部173は、bit_to_binを設定する。これらの値は、蓄積バッファ107に供給され、シンタックスとして復号側に伝送される。
また、bit_to_bin設定部173は、生成したbit_to_binをCPB位置変換部163に供給する。
HRDトレース部162は、最新のCPB位置を求める。例えば、HRDトレース部162は、発生Binや発生Bitに基づいて、最新のCPB位置を算出したり、CPB位置変換部163を用いて、符号化方式の切り替え等の際の、Binによる規定とBitによる規定との切り替えに伴い、CPB位置を更新させたりする。
HRDトレース部162は、図10に示されるように、entropy_coding_mode_flag取得部181、entropy_coding_mode_flag判定部182、last_entropy_coding_mode_flag記憶部183、発生量取得部184、およびCPB位置更新部185を有する。
entropy_coding_mode_flag取得部181は、可逆符号化部106からentropy_coding_mode_flagを取得し、それをentropy_coding_mode_flag判定部182に供給する。entropy_coding_mode_flag判定部182は、entropy_coding_mode_flag取得部181から供給されたentropy_coding_mode_flagと、last_entropy_coding_mode_flag記憶部183に記憶されている前回のentropy_coding_mode_flagであるlast_entropy_coding_mode_flagとで値が一致するか否かを判定する。
値が一致する場合、entropy_coding_mode_flag判定部182は、符号化モードが切り替わらないと判定し、前回と同モードでCPB位置を更新させるように指示する制御情報をCPB位置更新部185に供給する。また、値が不一致の場合、entropy_coding_mode_flag判定部182は、符号化モードが切り替わると判定し、entropy_coding_mode_flagをCPB位置変換部163に供給し、符号化モードの切り替えに伴うCPB位置変換を行わせる。
発生量取得部184は、CABACの場合、可逆符号化部106から発生Bin(発生したバイナリデータのデータ量)を取得し、それをCPB位置更新部185に供給する。また、発生量取得部184は、CAVLCの場合、蓄積バッファ107から発生Bit(発生したビットストリームの符号量)を取得し、それをCPB位置更新部185に供給する。
CPB位置更新部185は、entropy_coding_mode_flag判定部182から供給される制御情報に従って、CPB位置の更新を行う。例えば、entropy_coding_mode_flag判定部182から、発生Bin若しくは発生Bitに基づいてCPB位置の更新を行うように指示された場合、CPB位置更新部185は、発生量取得部184に発生Bin若しくは発生Bitを取得させ、それに基づいて最新のCPB位置を求める。例えば、CABACの場合、CPB位置更新部185は、発生量取得部184から供給される発生Binを用いて最新のCPB位置を求める。また、例えば、CAVLCの場合、CPB位置更新部185は、発生量取得部184から供給される発生Bitを用いて最新のCPB位置を求める。CPB位置更新部185は、求めた最新のCPB位置をターゲットビット決定部164に供給する。
また、CPB位置更新部185は、entropy_coding_mode_flag判定部182から符号化モードを切り換えることが通知された場合、CPB位置変換部163から供給されるCPB位置を最新のCPB位置として、ターゲットビット決定部164に供給する。
CPB位置変換部163は、HRDトレース部162のentropy_coding_mode_flag判定部182からentropy_coding_mode_flagが供給された場合、符号化モードが切り換えられたと判定し、CPB位置を変換する。CPB位置変換部163は、パラメータ設定部161により設定されたパラメータbit_to_binを用いてCPB位置を、Bitにより規定される位置からBinにより規定される位置へ、若しくは、Binにより規定される位置から、Bitにより規定される位置へ変換する。
図10に示されるように、CPB位置変換部163は、entropy_coding_mode_flag取得部191、entropy_coding_mode_flag判定部192、bit_to_bin取得部193、およびCPB位置算出部194を有する。
entropy_coding_mode_flag取得部191は、HRDトレース部162から供給されるentropy_coding_mode_flagを取得し、それをentropy_coding_mode_flag判定部192に供給する。entropy_coding_mode_flag判定部192は、そのentropy_coding_mode_flagの値がtrueであるか否かを判定し、その判定結果をbit_to_bin取得部193に供給する。
bit_to_bin取得部193は、パラメータ設定部161(bit_to_bin設定部173)からbit_to_binを取得し、それを、判定結果とともにCPB位置算出部194に供給する。
CPB位置算出部194は、entropy_coding_mode_flagがtrueの場合、符号化モードがCABACからCAVLCに切り替わったと判定し、上述した式(5)を用いてCPB位置を変換する。また、CPB位置算出部194は、entropy_coding_mode_flagがfalseの場合、符号化モードがCAVLCからCABACに切り替わったと判定し、上述した式(6)を用いてCPB位置を変換する。
CPB位置算出部194は、算出したCPB位置をHRDトレース部162(CPB位置更新部185)に供給する。
ターゲットビット設定部164は、HRDトレース部162(CPB位置更新部185)から供給された最新のCPB位置に基づいてターゲットビット(Target Bit)の値を決定する。ターゲットビット決定部164は、決定した値を量子化部105に供給する。
以上のように各部が処理を行うことにより、レート制御部117は、Binにより規定するHRDを用いてより容易にレート制御を行うことができる。
[符号化処理の流れ]
次に、以上のような画像符号化装置100により実行される各処理の流れについて説明する。最初に、図11のフローチャートを参照して、符号化処理の流れの例を説明する。
ステップS101において、A/D変換部101は入力された画像をA/D変換する。ステップS102において、画面並べ替えバッファ102は、A/D変換された画像を記憶し、各ピクチャの表示する順番から符号化する順番への並べ替えを行う。
ステップS103において、イントラ予測部114は、イントラ予測モードのイントラ予測処理を行う。ステップS104において、動き予測・補償部115は、インター予測モードでの動き予測や動き補償を行うインター動き予測処理を行う。
ステップS105において、予測画像選択部116は、イントラ予測部114および動き予測・補償部115から出力された各コスト関数値に基づいて、最適なモードを決定する。つまり、予測画像選択部116は、イントラ予測部114により生成された予測画像と、動き予測・補償部115により生成された予測画像のいずれか一方を選択する。
ステップS106において、演算部103は、ステップS102の処理により並び替えられた画像と、ステップS105の処理により選択された予測画像との差分を演算する。差分データは元の画像データに較べてデータ量が低減される。したがって、画像をそのまま符号化する場合に較べて、データ量を圧縮することができる。
ステップS107において、直交変換部104は、ステップS106の処理により生成された差分情報を直交変換する。具体的には、離散コサイン変換、カルーネン・レーベ変換等の直交変換が行われ、変換係数が出力される。
ステップS108において、量子化部105は、ステップS107の処理により得られた直交変換係数を量子化する。
ステップS108の処理により量子化された差分情報は、次のようにして局部的に復号される。すなわち、ステップS109において、逆量子化部108は、ステップS108の処理により生成された量子化された直交変換係数(量子化係数とも称する)を量子化部105の特性に対応する特性で逆量子化する。ステップS110において、逆直交変換部109は、ステップS107の処理により得られた直交変換係数を、直交変換部104の特性に対応する特性で逆直交変換する。
ステップS111において、演算部110は、予測画像を局部的に復号された差分情報に加算し、局部的に復号された画像(演算部103への入力に対応する画像)を生成する。ステップS112においてループフィルタ111は、ステップS111の処理により得られた局部的な復号画像に対して、デブロックフィルタ処理や適応ループフィルタ処理等を含むループフィルタ処理を適宜行う。
ステップS113において、フレームメモリ112は、ステップS112の処理によりループフィルタ処理が施された復号画像を記憶する。なお、フレームメモリ112にはループフィルタ111によりフィルタ処理されていない画像も演算部110から供給され、記憶される。
ステップS114において、可逆符号化部106は、ステップS108の処理により量子化された変換係数を符号化する。すなわち、差分画像に対して、可変長符号化や算術符号化等の可逆符号化が行われる。
なお、可逆符号化部106は、ステップS108において算出された量子化パラメータを符号化し、符号化データに付加する。また、可逆符号化部106は、ステップS105の処理により選択された予測画像の予測モードに関する情報を符号化し、差分画像を符号化して得られる符号化データに付加する。つまり、可逆符号化部106は、イントラ予測部114から供給される最適イントラ予測モード情報、または、動き予測・補償部115から供給される最適インター予測モードに応じた情報なども符号化し、符号化データに付加する。
ステップS115において蓄積バッファ107は、ステップS114の処理により得られた符号化データを蓄積する。蓄積バッファ107に蓄積された符号化データは、適宜読み出され、伝送路や記録媒体を介して復号側に伝送される。
ステップS116においてレート制御部117は、HRDを用い、ステップS115の処理により蓄積バッファ107に蓄積された符号化データの符号量(発生符号量)若しくは、ステップS114の処理において生成されるバイナリデータのデータ量に基づいて、HRDにおいてオーバフローあるいはアンダーフローが発生しないように、量子化部105の量子化動作のレートを制御する。
ステップS114においてCABAC等の算術符号化が行われる場合、レート制御部117は、Binにより規定されるHRDを用いてレート制御を行う。また、ステップS114においてCAVLC等の可変長符号化が行われる場合、レート制御部117は、Bitにより規定されるHRDを用いてレート制御を行う。
ステップS116の処理が終了すると、符号化処理が終了される。
[レート制御処理の流れ]
次に、図12のフローチャートを参照して、図11のステップS116において実行されるレート制御処理の流れの例を説明する。
レート制御処理が開始されると、ステップS121において、パラメータ設定部161は、Bitで規定されるHRDをBinで規定する際に用いるバッファも出るパラメータを設定する。
各種パラメータが設定されると、パラメータ設定部161は処理を進める。ステップS122において、HRDトレース部162のentropy_coding_mode_flag取得部181は、可逆符号化部106から供給されるentropy_coding_mode_flagを取得する。
ステップS123において、entropy_coding_mode_flag判定部182は、ステップS122において取得されたentropy_coding_mode_flagがlast_entropy_coding_mode_flag記憶部183に記憶されるlast_entropy_coding_mode_flagと一致するか否かを判定する。
一致すると判定した場合、entropy_coding_mode_flag判定部182は、処理をステップS124に進める。ステップS124において、発生量取得部184は、蓄積バッファ107から供給される発生Bit、若しくは、可逆符号化部106から供給される発生Binを取得する。
これに対して一致しないと判定した場合、entropy_coding_mode_flag判定部182は、処理をステップS125に進める。ステップS125において、CPB位置変換部163は、CPB位置変換処理を行い、符号化モード切り替え時のCPB位置の変換を行う。
ステップS124若しくはステップS125の処理が終了すると、ステップS126において、CPB位置更新部185は、CPB位置を更新する。
ステップS127において、last_entropy_coding_mode_flag記憶部183は、自身が記憶するlast_entropy_coding_mode_flagを、entropy_coding_mode_flag判定部182から供給されたentropy_coding_mode_flagを用いて更新する(置き換える)。
ステップS128において、ターゲットビット決定部164は、ステップS126において更新されたCPB位置に基づいて、ターゲットビット(Target Bit)を決定し、それを量子化部105に供給する。
ステップS128の処理を終了すると、ターゲットビット決定部164は、レート制御処理を終了する。
[パラメータ設定処理の流れ]
次に、図13のフローチャートを参照して、図12のステップS121において実行されるパラメータ設定処理の流れの例を説明する。
パラメータ設定処理が開始されると、use_bin_hrd_flag設定部171は、ステップS131において、use_bin_hrd_flagを設定する。ステップS132において、use_bit_to_bin_flag設定部172は、use_bit_to_bin_flagを設定する。ステップS133において、bit_to_bin設定部173は、bit_to_binを設定する。
ステップS134において、パラメータ設定部161は、ステップS131乃至ステップS133において設定された各パラメータを蓄積バッファ107に供給し、シンタックスとして、例えばSEI(Supplemental Enhancement Information)等のパラメータセットに格納させ、伝送させる。例えば、レート制御部117は、これらのシンタックスを、バッファ管理に関するSEI(buffering period sei)において定義し、伝送させるようにしてもよい。さらに、例えば、レート制御部117は、これらのシンタックスをビットストリーム(例えばヘッダ等)に含めて復号側に伝送させるようにしてもよい。
ステップS134の処理を終了するとパラメータ設定部161は、パラメータ設定処理を終了し、処理を図12に戻す。
[CPB位置変換処理の流れ]
次に、図14のフローチャートを参照して、図12のステップS125において実行されるCPB変換処理の流れの例を説明する。
CPB変換処理が開始されると、entropy_coding_mode_flag取得部191は、ステップS141において、HRDトレース部162から供給されるentropy_coding_mode_flagを取得する。ステップS142において、entropy_coding_mode_flag判定部192は、ステップS141において取得されたentropy_coding_mode_flagの値がtrueであるか否かを判定する。
entropy_coding_mode_flagがtrueであると判定された場合、entropy_coding_mode_flag判定部192は、符号化モードがCABACからCAVLCに切り換えられたと判定し、処理をステップS143に進める。ステップS143において、bit_to_bin取得部193は、パラメータ設定部161により設定されたbit_to_binを取得する。ステップS144において、CPB位置算出部194は、式(5)を用いてCPB位置を算出する。
また、ステップS142において、entropy_coding_mode_flagがfalseであると判定された場合、entropy_coding_mode_flag判定部192は、符号化モードがCAVLCからCABACに切り換えられたと判定し、処理をステップS145に進める。ステップS145において、bit_to_bin取得部193は、パラメータ設定部161により設定されたbit_to_binを取得する。ステップS146において、CPB位置算出部194は、式(6)を用いてCPB位置を算出する。
ステップS144若しくはステップS146の処理が終了した場合、CPB位置変換部163は、CPB位置変換処理を終了し、処理を図12に戻す。
以上のように、各処理を行うことにより、レート制御部117は、BinによりHRDを規定することができ、また、その際に用いるバッファモデルパラメータを設定し、復号側に伝送させることができる。これにより、レート制御部117は、より容易にレート制御を行うことができる。
なお、以上においては、レート制御部117が、bit_to_binを用いてBitにより規定されるHRDをBinにより規定されるHRDに変換するように説明したが、Bitにより規定されるHRDとBinにより規定されるHRDとを互いに独立して設定するようにしてもよい。
<2.第2の実施の形態>
[画像復号装置]
図15は、画像復号装置の主な構成例を示すブロック図である。図15に示される画像復号装置200は、画像符号化装置100が生成した符号化データを、その符号化方法に対応する復号方法で復号する。
図15に示されるように画像復号装置200は、蓄積バッファ201、可逆復号部202、逆量子化部203、逆直交変換部204、演算部205、ループフィルタ206、画面並べ替えバッファ207、およびD/A変換部208を有する。また、画像復号装置200は、フレームメモリ209、選択部210、イントラ予測部211、動き予測・補償部212、および選択部213を有する。
蓄積バッファ201は伝送されてきた符号化データを蓄積し、所定のタイミングにおいてその符号化データを可逆復号部202に供給する。可逆復号部202は、画像符号化装置100から供給されるシンタックスに従って、蓄積バッファ201より供給された、図1の可逆符号化部106により符号化された情報を、可逆符号化部106の符号化方式に対応する方式で復号する。可逆復号部202は、復号して得られた差分画像の量子化された係数データを、逆量子化部203に供給する。
また、可逆復号部202は、最適な予測モードにイントラ予測モードが選択されたかインター予測モードが選択されたかを判定し、その最適な予測モードに関する情報を、イントラ予測部211および動き予測・補償部212の内、選択されたと判定したモードの方に供給する。
逆量子化部203は、可逆復号部202により復号されて得られた量子化された係数データを、図1の量子化部105の量子化方式に対応する方式で逆量子化し、得られた係数データを逆直交変換部204に供給する。
逆直交変換部204は、図1の直交変換部104の直交変換方式に対応する方式で逆量子化部203から供給される係数データを逆直交変換する。逆直交変換部204は、この逆直交変換処理により、画像符号化装置100において直交変換される前の残差データに対応する復号残差データを得る。
逆直交変換されて得られた復号残差データは、演算部205に供給される。また、演算部205には、選択部213を介して、イントラ予測部211若しくは動き予測・補償部212から予測画像が供給される。
演算部205は、その復号残差データと予測画像とを加算し、画像符号化装置100の演算部103により予測画像が減算される前の画像データに対応する復号画像データを得る。演算部205は、その復号画像データをループフィルタ206に供給する。
ループフィルタ206は、供給された復号画像に対して、デブロックフィルタ処理や適応ループフィルタ処理等を含むループフィルタ処理を適宜施し、それを画面並べ替えバッファ207に供給する。
ループフィルタ206は、デブロックフィルタや適応ループフィルタ等を含み、演算部205から供給される復号画像に対して適宜フィルタ処理を行う。例えば、ループフィルタ206は、復号画像に対してデブロックフィルタ処理を行うことにより復号画像のブロック歪を除去する。また、例えば、ループフィルタ206は、そのデブロックフィルタ処理結果(ブロック歪みの除去が行われた復号画像)に対して、ウィナーフィルタ(Wiener Filter)を用いてループフィルタ処理を行うことにより画質改善を行う。
なお、ループフィルタ206が、復号画像に対して任意のフィルタ処理を行うようにしてもよい。また、ループフィルタ206が、図1の画像符号化装置100から供給されたフィルタ係数を用いてフィルタ処理を行うようにしてもよい。
ループフィルタ206は、フィルタ処理結果(フィルタ処理後の復号画像)を画面並べ替えバッファ207およびフレームメモリ209に供給する。なお、演算部205から出力される復号画像は、ループフィルタ206を介さずに画面並べ替えバッファ207やフレームメモリ209に供給することができる。つまり、ループフィルタ206によるフィルタ処理は省略することができる。
画面並べ替えバッファ207は、画像の並べ替えを行う。すなわち、図1の画面並べ替えバッファ102により符号化の順番のために並べ替えられたフレームの順番が、元の表示の順番に並べ替えられる。D/A変換部208は、画面並べ替えバッファ207から供給された画像をD/A変換し、図示せぬディスプレイに出力し、表示させる。
フレームメモリ209は、供給される復号画像を記憶し、所定のタイミングにおいて、若しくは、イントラ予測部211や動き予測・補償部212等の外部の要求に基づいて、記憶している復号画像を参照画像として、選択部210に供給する。
選択部210は、フレームメモリ209から供給される参照画像の供給先を選択する。選択部210は、イントラ符号化された画像を復号する場合、フレームメモリ209から供給される参照画像をイントラ予測部211に供給する。また、選択部210は、インター符号化された画像を復号する場合、フレームメモリ209から供給される参照画像を動き予測・補償部212に供給する。
イントラ予測部211には、ヘッダ情報を復号して得られたイントラ予測モードを示す情報等が可逆復号部202から適宜供給される。イントラ予測部211は、図1のイントラ予測部114において用いられたイントラ予測モードで、フレームメモリ209から取得した参照画像を用いてイントラ予測を行い、予測画像を生成する。イントラ予測部211は、生成した予測画像を選択部213に供給する。動き予測・補償部212は、ヘッダ情報を復号して得られた情報を可逆復号部202から取得する。
動き予測・補償部212は、図1の動き予測・補償部115において用いられたインター予測モードで、フレームメモリ209から取得した参照画像を用いてインター予測を行い、予測画像を生成する。
このようにすることにより、可逆復号部202は、画像符号化装置100から供給されるコードストリームを復号することができる。つまり、画像復号装置200は、レート制御の容易化を実現させることができる。
[可逆復号部]
図16は、可逆復号部202の主な構成例を示すブロック図である。
図16に示されるように、可逆復号部202は、パラメータ取得部231、コードストリーム取得部232、および復号処理部233を有する。
パラメータ取得部231は、蓄積バッファ201から供給される、画像符号化装置100からシンタックスとして供給されたバッファモデルパラメータを受け取り、それを復号処理部233に供給する。
コードストリーム取得部232は、蓄積バッファ201から供給される、画像符号化装置100から供給されたコードストリームを受け取り、それを復号処理部233に供給する。
復号処理部233は、パラメータ取得部231から供給されるバイナリパラメータに基づいて、コードストリーム取得部232から供給されるコードストリームに対して、画像符号化装置100が設定したHRDと同様に振舞う。つまり、復号処理部233は、画像符号化装置100のレート制御部117が設定したHRDと同様に、コードストリーム取得部232から供給されるコードストリームを復号する。復号処理部233は、得られた復号画像データを逆量子化部203に供給する。また、復号処理部233は、ヘッダ情報等を、適宜、イントラ予測部211若しくは動き予測・補償部212に供給する。
このように可逆復号部202が、画像符号化装置100において設定されたHRDと同様に動作することにより、画像復号装置200は、レート制御の容易化を実現させることができる。
[復号処理の流れ]
次に、以上のような画像復号装置200により実行される各処理の流れについて説明する。最初に、図17のフローチャートを参照して、復号処理の流れの例を説明する。
復号処理が開始されると、ステップS201において、蓄積バッファ201は、伝送されてきたコードストリームを蓄積する。ステップS202において、可逆復号部202は、蓄積バッファ201から供給されるコードストリームを復号する。すなわち、図1の可逆符号化部106により符号化されたIピクチャ、Pピクチャ、並びにBピクチャが復号される。また、差分動き情報や差分量子化パラメータなど、コードストリームに含められた差分画像情報以外の各種情報も復号される。
ステップS203において、逆量子化部203は、ステップS202の処理により得られた、量子化された直交変換係数を逆量子化する。
ステップS204において逆直交変換部204は、ステップS203において逆量子化された直交変換係数を逆直交変換する。
ステップS205において、イントラ予測部211若しくは動き予測・補償部212は、供給された情報を用いて予測処理を行う。
ステップS206において、選択部213は、ステップS205において生成された予測画像を選択する。
ステップS207において、演算部205は、ステップS204において逆直交変換されて得られた差分画像情報に、ステップS206において選択された予測画像を加算する。これにより復号画像が得られる。
ステップS208において、ループフィルタ206は、ステップS207において得られた復号画像に対して、デブロックフィルタ処理や適応ループフィルタ処理等を含むループフィルタ処理を適宜行う。
ステップS209において、画面並べ替えバッファ207は、ステップS208においてフィルタ処理された画像の並べ替えを行う。すなわち画像符号化装置100の画面並べ替えバッファ102により符号化のために並べ替えられたフレームの順序が、元の表示の順序に並べ替えられる。
ステップS210において、D/A変換部208は、ステップS209においてフレームの順序が並べ替えられた画像をD/A変換する。この画像が図示せぬディスプレイに出力され、画像が表示される。
ステップS211において、フレームメモリ209は、ステップS208においてフィルタ処理された画像を記憶する。この画像は、ステップS205において、参照画像として、予測画像の生成に使用される。
ステップS211の処理が終了すると、復号処理が終了される。
[可逆復号処理の流れ]
次に、図18のフローチャートを参照して、図17のステップS202において実行される可逆復号処理の流れの例を説明する。
可逆復号処理が開始されると、ステップS231において、パラメータ取得部231は、画像符号化装置100において生成され、シンタックスとして供給されたバッファモデルパラメータを受け取る。
ステップS232において、復号処理部233は、ステップS231において受け取られたバイナリパラメータの値に応じて、復号方法を決定する。
ステップS233において、コードストリーム取得部232は、画像符号化装置100において生成され、供給されるコードストリームを受け取る。
ステップS234において、復号処理部233は、ステップS233において受け取られたコードストリームを、ステップS232において決定した復号方法で復号する。
コードストリームを復号すると、可逆復号部202は、可逆復号処理を終了し、処理を図17に戻す。
以上のように各処理を実行することにより、画像復号装置200は、レート制御の容易化を実現させることができる。
<3.第3の実施の形態>
[デコーダの設計]
ところで、AVC等の従来の規格においては、CABACのデコーダを設計する際、ビットストリームからバイナリデータへの変換は瞬時に行われなければならないということになっている。そのため、デコーダを設計する場合、1アクセスユニット(AU)の最大Bit長を最大フレームレート(Frame rate)でバイナリデータに変換することができるようにしなければならなかった。
しかしながら、実際のビットストリームでは最大Bit長が長時間連続で現れることは少なく、実際には、Iピクチャ(I-picture)で大きな値が出た後、Pピクチャ(P-picture)やBピクチャ(B-picture)では十分に小さな値が出る。そのため、一般的には、時間で平均すると最大フレームレート(Frame rate)で瞬時にバイナリデータに変換する必要がないこと多い。つまり、現状の設計は所謂ワーストケース(worst case)デザインのために、デコーダが実際に必要な性能よりも過剰に設計されてしまう恐れがあった。換言すると、この制約のために、CABACのデコーダを設計することが困難になる恐れがあった。
そこで、バイナリデータの処理速度を規定する仮想デコーダを定義する。このようにすることでデコーダの設計に余裕が得られるようになる。さらに、正しくデコードできるかどうかをシンタックスから確認することができるようになり、アプリケーションの幅を広げることができる。例えば、モバイル機器等に搭載するデコーダの場合、バイナリデータの処理速度を多少小さくすることで消費電力を下げる等の工夫をすることができる。
上述したようにエンコーダは、仮想デコーダに準拠したストリームを生成する。つまり、エンコーダにおいて、バイナリデータの処理速度を規定する仮想デコーダを定義し、この仮想デコーダを用いてレート制御が行われるようにする。このようにすることにより、エンコーダが、性能をある程度低減させたデコーダにおいても破綻しないようなコードストリームを生成することができるようになる。換言するに、エンコーダにおいてバイナリデータの処理速度を規定する仮想デコーダを定義することにより、デコーダの設計に余裕を設け、デコーダが過剰性能になることを抑制することができる(デコーダの性能を適切なレベルとなるように制御することができる)ようになる。
[BinHRD]
図19に、バイナリデータの処理速度を規定する仮想デコーダの例を示す。図19において、上側が従来の仮想デコーダ(従来のHRD)であり、下側がバイナリデータの処理速度を規定する仮想デコーダ(BinHRD)を示す。
従来のHRDに蓄積されたビットストリームは、矢印301や矢印302に示されるように、ビットストリームがバイナリデータに変換され、バイナリデータとしてBinHRDに流入され、蓄積される。なお、ビットストリームからバイナリデータへの変換は、瞬時に行われるものとする。
図19の下側に示されるBinHRDのグラフも、基本的に図19の上側の従来のHRDと同様である。Bin buffer sizeは、BinHRDのサイズを示す。また、Bin process rateは、BinHRDに蓄積されたバイナリデータの読み出し速度を示す。1frameの間に処理が終われば、BinHRDは空になる。BinHRDがBin buffer sizeを超えないようにすれば、エンコードとデコードの整合性が保証される。
BinHRDに蓄積されたバイナリデータは、Bin process rateで読み出されるが、じゅうらいの場合、1フレームの間(frame_rate)に全てのバイナリデータが読み出されるように設計する必要があった。しかしながら、上述したように、それでは、符号量の多いIピクチャに合わせて設計されるので、符号量の少ないPピクチャやBピクチャに対して過剰性能となる。そこで、両矢印303に示されるように、複数フレーム(例えば、2、3フレーム程度)内で処理することが許容されるようにする。
すなわち、バイナリデータの読み出し速度(Bin process rate)を遅くし、BinHRDの全てのバイナリデータを読み出すのに複数フレーム分の時間を要するようにしてもよいようにする。このようにすると、特に符号量の多いIピクチャのバイナリデータを読み出すのに複数フレーム分の時間を要するようになるが、上述したようにPピクチャやBピクチャは符号量が少なく、かつ、Iピクチャが長時間連続する可能性も非常に少ないので、BinHRDがオーバフローする可能性は非常に少ない。
以上のように、バイナリデータの処理速度を規定する仮想デコーダを定義することにより、バイナリデータの処理速度を低減させるようにデコーダを設計することができるようになる。
[シンタックス]
この場合、図20に示されるようにシンタックスが追加される。図20に示されるように、この場合、バイナリパラメータbin_rateとbin_buffer_sizeが追加される。バイナリパラメータbin_rateは、バイナリデータの処理速度(BinHRDからのバイナリデータの読み出し速度)を示し、バイナリパラメータbin_buffer_sizeは、BinHRDのサイズを示す。
なお、これらの値が設定されない場合、レベルや画サイズに応じた最大値が使用されるようにしてもよい。
[画像符号化装置]
この場合の、画像符号化装置の構成は、図1に示される例と同様になる。
[レート制御部]
図21は、この場合のレート制御部117の主な構成例を示すブロック図である。
図21に示されるように、レート制御部117は、パラメータ設定部311、HRDトレース部312、BinHRDトレース部313、およびターゲットビット決定部314を有する。
パラメータ設定部311は、パラメータ(フラグを含む)等のシンタックスの値を設定する。この設定方法は任意である。例えば、パラメータ設定部311は、例えば、開発者やユーザ等の外部から値を取得し、その値をパラメータとして設定するようにしてもよい。また、例えば、パラメータ設定部311は、符号化する画像データや符号化結果等に基づいて各値を設定するようにしてもよい。さらに、例えば、パラメータ設定部311は、予め定められた所定の値をパラメータとして設定するようにしてもよい。
なお、パラメータ設定部311は、仮想デコーダに関するものであればどのようなパラメータを設定するようにしてもよい。
図21に示される例において、パラメータ設定部311は、bit_rate設定部321、bin_rate設定部322、およびbin_buffer_size設定部323を有する。
bit_rate設定部321は、ビットストリームの処理速度であるbit_rateを設定する。bin_rate設定部322は、バイナリデータの処理速度であるbin_rateを設定する。bin_buffer_size設定部323は、BinHRDのサイズを示すbin_buffer_sizeを設定する。これらの値は、蓄積バッファ107に供給され、シンタックスとして復号側に伝送される。
また、bit_rate設定部321は、生成したbit_rateをHRDトレース部312に供給する。また、bin_rate設定部322は、生成したbin_rateをBInHRDトレース部313に供給する。
HRDトレース部312は、ビットストリームを処理する仮想デコーダ(HRD)の振る舞いをシミュレートする。つまり、HRDトレース部312は、HRDの最新のCPB位置を求める。HRDトレース部312は、図21に示されるように、bit_rate取得部331、発生Bit取得部332、およびCPB位置更新部333を有する。
bit_rate取得部331は、パラメータ設定部311(bit_rate設定部321)から供給されるbit_rateを取得し、それをCPB位置更新部333に供給する。発生Bit取得部332は、蓄積バッファ107からのコードストリーム(ビットストリーム)の読み出し量(符号量)である発生Bitを取得し、それをCPB位置更新部333に供給する。
CPB位置更新部333は、bit_rate取得部331から供給されるbit_rateと、発生Bit取得部332から供給される発生Bitとに基づいて、HRDのCPB位置を更新する。つまり、CPBには、発生Bit分のビットストリームが蓄積され、所定の読み出しタイミングにおいて、bit_rate分のビットストリームが読み出される。CPB位置更新部333は、このようなビットストリームの入出力を、CPB位置に反映させる。CPB位置更新部333は、最新のCPB位置をターゲットビット決定部314に供給する。
BinHRDトレース部313は、バイナリデータの処理速度を規定する仮想デコーダ(BinHRD)の振る舞いをシミュレートする。つまり、BinHRDトレース部313は、BinHRDの最新のバイナリデータ蓄積量(BinBuffer位置)を求める。BinHRDトレース部313は、図21に示されるように、bin_rate取得部341、発生Bin取得部342、およびBinBuffer位置更新部343を有する。
bin_rate取得部341は、パラメータ設定部311(bin_rate設定部322)から供給されるbin_rateを取得し、それをBinBuffer位置更新部343に供給する。発生Bin取得部342は、可逆符号化部106から供給されるバイナリデータのデータ量である発生Binを取得し、それをBinBuffer位置更新部343に供給する。
BinBuffer位置更新部343は、bin_rate取得部341から供給されるbin_rateと、発生Bin取得部342から供給される発生Binとに基づいて、BinHRDのBinBuffer位置を更新する。つまり、BinHRDには発生Bin分のバイナリデータが蓄積され、bin_rateに示されるレートでそのバイナリデータが読み出される。BinBuffer位置更新部343は、このようなバイナリデータの入出力を、BinBuffer位置に反映させる。BinBuffer位置更新部343は、最新のBinBuffer位置をターゲットビット決定部314に供給する。
ターゲットビット決定部314は、CPB位置やBinBuffer位置に基づいて、ターゲットビット(Target Bit)を決定する。
図21に示されるように、ターゲットビット決定部314は、CPB位置取得部351、最大許容Bit算出部352、BinBuffer位置取得部353、最大許容Bin算出部354、および設定部355を有する。
CPB位置取得部351は、HRDトレース部312(CPB位置更新部333)から供給される最新のCPB位置を取得し、それを最大許容Bit算出部352に供給する。最大許容Bit算出部352は、CPB位置取得部351から供給される最新のCPB位置に基づいて、HRDからのビットストリームの読み出し可能な最大量を示す最大許容Bitを算出する。最大許容Bit算出部352は、算出した最大許容Bitを設定部355に供給する。
BinBuffer位置取得部353は、BinHRDトレース部313(BinBuffer位置更新部343)から供給される最新のBinBuffer位置を取得し、それを最大許容Bin算出部354に供給する。最大許容Bin算出部354は、BinBuffer位置取得部353から供給される最新のBinBuffer位置に基づいて、BinHRDからのビットストリームの読み出し可能な最大量を示す最大許容Binを算出する。最大許容Bin算出部354は、算出した最大許容Binを設定部355に供給する。
設定部355は、最大許容Bit算出部352から供給された最大許容Bitと、最大許容Bin算出部354から供給された最大許容Binとに基づいてターゲットビットを求める。より具体的には、BinHRDとHRDは両方を満たす必要がある。したがって、設定部355は、最大許容Bitと最大許容Binの小さい方からターゲットビットを求める。設定部355は、求めたターゲットビットを量子化部105に供給する。
以上のように各部が処理を行うことにより、レート制御部117は、Binの処理速度を規定する仮想デコーダを定義することで、デコーダの設計をより容易にすることができる。また、正しくデコードできるか否かをシンタックスから確認することができるので、アプリケーションの幅を広げることが可能になる。これにより、仮想デコーダを破綻させないようにすることが容易になり、レート制御をより容易に行うことができる。
[レート制御処理の流れ]
この場合のレート制御処理の流れの例を図22のフローチャートを参照して説明する。なお、符号化処理は、図11のフローチャートを参照して説明した第1の実施の形態の場合と同様に行われる。
レート制御処理が開始されると、ステップS321において、bit_rate設定部321は、bit_rateを設定する。ステップS322において、bin_rate設定部322は、bin_rateを設定する。ステップS323において、bin_buffer_size設定部323は、bin_buffer_siceを設定する。
ステップS324において、パラメータ設定部311は、ステップS321乃至ステップS323において生成された各種パラメータを蓄積バッファ107に供給し、シンタックスとして復号側に伝送させる。
ステップS325において、HRDトレース部312のbit_rate取得部331は、ステップS321において設定されたbit_rateを取得する。ステップS326において、発生Bit取得部332は、発生Bitを取得する。ステップS327において、CPB位置取得部333は、ステップS325において取得されたbit_rateとステップS326において取得された発生Bitを用いてCPB位置を更新する。
ステップS328において、BinHRDトレース部313のbin_rate取得部341は、ステップS322において設定されたbin_rateを取得する。ステップS329において、発生Bin取得部342は、発生Binを取得する。ステップS330において、BinBuffer位置更新部343は、ステップS328において取得されたbin_rateと、ステップS329において取得された発生Binを用いてBinBuffer位置を更新する。
ステップS331において、ターゲットビット決定部314のBinBuffer位置取得部353は、ステップS330において更新された最新のBinBuffer位置を取得する。ステップS332において、最大許容Bin算出部354は、ステップS331において取得した最新のBinBuffer位置に従って最大許容Binを求める。
ステップS333において、CPB位置取得部351は、ステップS327において更新された最新のCPB位置を取得する。ステップS334において、最大許容Bit算出部352は、ステップS333において取得した最新のCPB位置に従って最大許容Bitを求める。
ステップS335において、設定部355は、ステップS332において求められた最大許容Binと、ステップS334において求められた最大許容Bitのうち、小さい方を用いてターゲットビットを求め、それを量子化部105に供給する。
ステップS335の処理が終了すると、レート制御部117は、レート制御処理を終了し、処理を図11に戻す。
以上のように、レート制御処理を行うことにより、レート制御部117は、より容易にレート制御を行うことができる。
なお、この場合の画像復号装置の構成は、図15を参照して説明した画像復号装置200の場合と同様である。また、可逆復号部の構成も、図16を参照して説明した可逆復号部202の場合と同様であり、復号処理部233が、画像符号化装置100から供給されるパラメータに応じて、上述した仮想デコーダと同様に動作すれば良い。
なお、本技術は、例えば、MPEG、H.26x等の様に、離散コサイン変換等の直交変換と動き補償によって圧縮された画像情報(ビットストリーム)を、衛星放送、ケーブルテレビジョン、インターネット、または携帯電話機などのネットワークメディアを介して受信する際に用いられる画像符号化装置および画像復号装置に適用することができる。また、本技術は、光、磁気ディスク、およびフラッシュメモリのような記憶メディア上で処理する際に用いられる画像符号化装置および画像復号装置に適用することができる。さらに、本技術は、それらの画像符号化装置および画像復号装置などに含まれる動き予測補償装置にも適用することができる。
<4.第4の実施の形態>
[パーソナルコンピュータ]
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な汎用のパーソナルコンピュータなどが含まれる。
図23において、パーソナルコンピュータ500のCPU(Central Processing Unit)501は、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にインストールされる。
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、例えば、図23に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc - Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)を含む)、若しくは半導体メモリなどよりなるリムーバブルメディア521により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM502や、記憶部513に含まれるハードディスクなどで構成される。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表すものである。
また、以上において、1つの装置(または処理部)として説明した構成を分割し、複数の装置(または処理部)として構成するようにしてもよい。逆に、以上において複数の装置(または処理部)として説明した構成をまとめて1つの装置(または処理部)として構成されるようにしてもよい。また、各装置(または各処理部)の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置(または処理部)の構成の一部を他の装置(または他の処理部)の構成に含めるようにしてもよい。つまり、本技術は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
上述した実施形態に係る画像符号化装置及び画像復号装置は、衛星放送、ケーブルTVなどの有線放送、インターネット上での配信、及びセルラー通信による端末への配信などにおける送信機若しくは受信機、光ディスク、磁気ディスク及びフラッシュメモリなどの媒体に画像を記録する記録装置、又は、これら記憶媒体から画像を再生する再生装置などの様々な電子機器に応用され得る。以下、4つの応用例について説明する。
<5.第5の実施の形態>
[第1の応用例:テレビジョン受像機]
図24は、上述した実施形態を適用したテレビジョン装置の概略的な構成の一例を示している。テレビジョン装置900は、アンテナ901、チューナ902、デマルチプレクサ903、デコーダ904、映像信号処理部905、表示部906、音声信号処理部907、スピーカ908、外部インタフェース909、制御部910、ユーザインタフェース911、及びバス912を備える。
チューナ902は、アンテナ901を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ902は、復調により得られた符号化ビットストリームをデマルチプレクサ903へ出力する。即ち、チューナ902は、画像が符号化されている符号化ストリームを受信する、テレビジョン装置900における伝送手段としての役割を有する。
デマルチプレクサ903は、符号化ビットストリームから視聴対象の番組の映像ストリーム及び音声ストリームを分離し、分離した各ストリームをデコーダ904へ出力する。また、デマルチプレクサ903は、符号化ビットストリームからEPG(Electronic Program Guide)などの補助的なデータを抽出し、抽出したデータを制御部910に供給する。なお、デマルチプレクサ903は、符号化ビットストリームがスクランブルされている場合には、デスクランブルを行ってもよい。
デコーダ904は、デマルチプレクサ903から入力される映像ストリーム及び音声ストリームを復号する。そして、デコーダ904は、復号処理により生成される映像データを映像信号処理部905へ出力する。また、デコーダ904は、復号処理により生成される音声データを音声信号処理部907へ出力する。
映像信号処理部905は、デコーダ904から入力される映像データを再生し、表示部906に映像を表示させる。また、映像信号処理部905は、ネットワークを介して供給されるアプリケーション画面を表示部906に表示させてもよい。また、映像信号処理部905は、映像データについて、設定に応じて、例えばノイズ除去などの追加的な処理を行ってもよい。さらに、映像信号処理部905は、例えばメニュー、ボタン又はカーソルなどのGUI(Graphical User Interface)の画像を生成し、生成した画像を出力画像に重畳してもよい。
表示部906は、映像信号処理部905から供給される駆動信号により駆動され、表示デバイス(例えば、液晶ディスプレイ、プラズマディスプレイ又はOELD(Organic ElectroLuminescence Display)(有機ELディスプレイ)など)の映像面上に映像又は画像を表示する。
音声信号処理部907は、デコーダ904から入力される音声データについてD/A変換及び増幅などの再生処理を行い、スピーカ908から音声を出力させる。また、音声信号処理部907は、音声データについてノイズ除去などの追加的な処理を行ってもよい。
外部インタフェース909は、テレビジョン装置900と外部機器又はネットワークとを接続するためのインタフェースである。例えば、外部インタフェース909を介して受信される映像ストリーム又は音声ストリームが、デコーダ904により復号されてもよい。即ち、外部インタフェース909もまた、画像が符号化されている符号化ストリームを受信する、テレビジョン装置900における伝送手段としての役割を有する。
制御部910は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、プログラムデータ、EPGデータ、及びネットワークを介して取得されるデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、テレビジョン装置900の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース911から入力される操作信号に応じて、テレビジョン装置900の動作を制御する。
ユーザインタフェース911は、制御部910と接続される。ユーザインタフェース911は、例えば、ユーザがテレビジョン装置900を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース911は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部910へ出力する。
バス912は、チューナ902、デマルチプレクサ903、デコーダ904、映像信号処理部905、音声信号処理部907、外部インタフェース909及び制御部910を相互に接続する。
このように構成されたテレビジョン装置900において、デコーダ904は、上述した実施形態に係る画像復号装置の機能を有する。それにより、テレビジョン装置900の画像の復号に際して、より容易にレートを制御することができる。
<6.第6の実施の形態>
[第2の応用例:携帯電話機]
図25は、上述した実施形態を適用した携帯電話機の概略的な構成の一例を示している。携帯電話機920は、アンテナ921、通信部922、音声コーデック923、スピーカ924、マイクロホン925、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、制御部931、操作部932、及びバス933を備える。携帯電話機920は、所謂通常の携帯電話機であってもよいが、所謂スマートフォンのような、通話機能を有する携帯型の情報端末であってもよい。
アンテナ921は、通信部922に接続される。スピーカ924及びマイクロホン925は、音声コーデック923に接続される。操作部932は、制御部931に接続される。バス933は、通信部922、音声コーデック923、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、及び制御部931を相互に接続する。
携帯電話機920は、音声通話モード、データ通信モード、撮影モード及びテレビ電話モードを含む様々な動作モードで、音声信号の送受信、電子メール又は画像データの送受信、画像の撮像、及びデータの記録などの動作を行う。また、携帯電話機920は、例えばデータ通信やリムーバブルメディア等からの読み出し等により取得したソフトウェアプログラムを記憶し、実行することにより各種アプリケーションを実行することができる(アプリケーション実行モード)。
音声通話モードにおいて、マイクロホン925により生成されるアナログ音声信号は、音声コーデック923に供給される。音声コーデック923は、アナログ音声信号を音声データへ変換し、変換された音声データをA/D変換し圧縮する。そして、音声コーデック923は、圧縮後の音声データを通信部922へ出力する。通信部922は、音声データを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号を、アンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部922は、受信信号を復調及び復号して音声データを生成し、生成した音声データを音声コーデック923へ出力する。音声コーデック923は、音声データを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック923は、生成した音声信号をスピーカ924に供給して音声を出力させる。
また、データ通信モードにおいて、例えば、制御部931は、操作部932を介するユーザによる操作に応じて、電子メールを構成する文字データを生成する。また、制御部931は、文字を表示部930に表示させる。また、制御部931は、操作部932を介するユーザからの送信指示に応じて電子メールデータを生成し、生成した電子メールデータを通信部922へ出力する。通信部922は、電子メールデータを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号を、アンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部922は、受信信号を復調及び復号して電子メールデータを復元し、復元した電子メールデータを制御部931へ出力する。制御部931は、表示部930に電子メールの内容を表示させると共に、電子メールデータを記録再生部929の記憶媒体に記憶させる。
記録再生部929は、読み書き可能な任意の記憶媒体を有する。例えば、記憶媒体は、RAM又はフラッシュメモリなどの内蔵型の記憶媒体であってもよく、ハードディスク、磁気ディスク、光磁気ディスク、光ディスク、USB(Unallocated Space Bitmap)メモリ、又はメモリカードなどの外部装着型の記憶媒体であってもよい。
また、撮影モードにおいて、例えば、カメラ部926は、被写体を撮像して画像データを生成し、生成した画像データを画像処理部927へ出力する。画像処理部927は、カメラ部926から入力される画像データを符号化し、符号化ストリームを記憶再生部929の記憶媒体に記憶させる。
また、テレビ電話モードにおいて、例えば、多重分離部928は、画像処理部927により符号化された映像ストリームと、音声コーデック923から入力される音声ストリームとを多重化し、多重化したストリームを通信部922へ出力する。通信部922は、ストリームを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号を、アンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。これら送信信号及び受信信号には、符号化ビットストリームが含まれ得る。そして、通信部922は、受信信号を復調及び復号してストリームを復元し、復元したストリームを多重分離部928へ出力する。多重分離部928は、入力されるストリームから映像ストリーム及び音声ストリームを分離し、映像ストリームを画像処理部927、音声ストリームを音声コーデック923へ出力する。画像処理部927は、映像ストリームを復号し、映像データを生成する。映像データは、表示部930に供給され、表示部930により一連の画像が表示される。音声コーデック923は、音声ストリームを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック923は、生成した音声信号をスピーカ924に供給して音声を出力させる。
さらに、アプリケーション実行モードにおいて、例えば、制御部931は、操作部932により受け付けられたユーザ指示等に基づいて、記録再生部929等に記憶されているソフトウェアプログラムを読み出し、実行する。これによりアプリケーションが実行され、必要に応じて、画像処理部927において画像処理が行われたり、表示部920により画像が表示されたり、カメラ部926により画像入力が受け付けられたり、スピーカ924から音声が出力されたり、マイクロホン925により音声入力が受け付けられたり、記録再生部929にデータが記録されたり、記録再生部929からデータが読み出されたり、通信部922を介して他の装置との通信が行われたりする。
このように構成された携帯電話機920において、画像処理部927は、上述した実施形態に係る画像符号化装置及び画像復号装置の機能を有する。それにより、携帯電話機920での画像の符号化及び復号に際して、より容易にレート制御を行うことができる。
<7.第7の実施の形態>
[第3の応用例:記録再生装置]
図26は、上述した実施形態を適用した記録再生装置の概略的な構成の一例を示している。記録再生装置940は、例えば、受信した放送番組の音声データ及び映像データを符号化して記録媒体に記録する。また、記録再生装置940は、例えば、他の装置から取得される音声データ及び映像データを符号化して記録媒体に記録してもよい。また、記録再生装置940は、例えば、ユーザの指示に応じて、記録媒体に記録されているデータをモニタ及びスピーカ上で再生する。このとき、記録再生装置940は、音声データ及び映像データを復号する。
記録再生装置940は、チューナ941、外部インタフェース942、エンコーダ943、HDD(Hard Disk Drive)944、ディスクドライブ945、セレクタ946、デコーダ947、OSD(On-Screen Display)948、制御部949、及びユーザインタフェース950を備える。
チューナ941は、アンテナ(図示せず)を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ941は、復調により得られた符号化ビットストリームをセレクタ946へ出力する。即ち、チューナ941は、記録再生装置940における伝送手段としての役割を有する。
外部インタフェース942は、記録再生装置940と外部機器又はネットワークとを接続するためのインタフェースである。外部インタフェース942は、例えば、IEEE1394インタフェース、ネットワークインタフェース、USBインタフェース、又はフラッシュメモリインタフェースなどであってよい。例えば、外部インタフェース942を介して受信される映像データ及び音声データは、エンコーダ943へ入力される。即ち、外部インタフェース942は、記録再生装置940における伝送手段としての役割を有する。
エンコーダ943は、外部インタフェース942から入力される映像データ及び音声データが符号化されていない場合に、映像データ及び音声データを符号化する。そして、エンコーダ943は、符号化ビットストリームをセレクタ946へ出力する。
HDD944は、映像及び音声などのコンテンツデータが圧縮された符号化ビットストリーム、各種プログラムおよびその他のデータを内部のハードディスクに記録する。また、HDD944は、映像及び音声の再生時に、これらデータをハードディスクから読み出す。
ディスクドライブ945は、装着されている記録媒体へのデータの記録及び読み出しを行う。ディスクドライブ945に装着される記録媒体は、例えばDVDディスク(DVD-Video、DVD-RAM、DVD-R、DVD-RW、DVD+R、DVD+RW等)又はBlu-ray(登録商標)ディスクなどであってよい。
セレクタ946は、映像及び音声の記録時には、チューナ941又はエンコーダ943から入力される符号化ビットストリームを選択し、選択した符号化ビットストリームをHDD944又はディスクドライブ945へ出力する。また、セレクタ946は、映像及び音声の再生時には、HDD944又はディスクドライブ945から入力される符号化ビットストリームをデコーダ947へ出力する。
デコーダ947は、符号化ビットストリームを復号し、映像データ及び音声データを生成する。そして、デコーダ947は、生成した映像データをOSD948へ出力する。また、デコーダ904は、生成した音声データを外部のスピーカへ出力する。
OSD948は、デコーダ947から入力される映像データを再生し、映像を表示する。また、OSD948は、表示する映像に、例えばメニュー、ボタン又はカーソルなどのGUIの画像を重畳してもよい。
制御部949は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、記録再生装置940の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース950から入力される操作信号に応じて、記録再生装置940の動作を制御する。
ユーザインタフェース950は、制御部949と接続される。ユーザインタフェース950は、例えば、ユーザが記録再生装置940を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース950は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部949へ出力する。
このように構成された記録再生装置940において、エンコーダ943は、上述した実施形態に係る画像符号化装置の機能を有する。また、デコーダ947は、上述した実施形態に係る画像復号装置の機能を有する。それにより、記録再生装置940での画像の符号化及び復号に際して、より容易にレート制御を行うことができる。
<8.第8の実施の形態>
[第4の応用例:撮像装置]
図27は、上述した実施形態を適用した撮像装置の概略的な構成の一例を示している。撮像装置960は、被写体を撮像して画像を生成し、画像データを符号化して記録媒体に記録する。
撮像装置960は、光学ブロック961、撮像部962、信号処理部963、画像処理部964、表示部965、外部インタフェース966、メモリ967、メディアドライブ968、OSD969、制御部970、ユーザインタフェース971、及びバス972を備える。
光学ブロック961は、撮像部962に接続される。撮像部962は、信号処理部963に接続される。表示部965は、画像処理部964に接続される。ユーザインタフェース971は、制御部970に接続される。バス972は、画像処理部964、外部インタフェース966、メモリ967、メディアドライブ968、OSD969、及び制御部970を相互に接続する。
光学ブロック961は、フォーカスレンズ及び絞り機構などを有する。光学ブロック961は、被写体の光学像を撮像部962の撮像面に結像させる。撮像部962は、CCD(Charge Coupled Device)又はCMOS(Complementary Metal Oxide Semiconductor)などのイメージセンサを有し、撮像面に結像した光学像を光電変換によって電気信号としての画像信号に変換する。そして、撮像部962は、画像信号を信号処理部963へ出力する。
信号処理部963は、撮像部962から入力される画像信号に対してニー補正、ガンマ補正、色補正などの種々のカメラ信号処理を行う。信号処理部963は、カメラ信号処理後の画像データを画像処理部964へ出力する。
画像処理部964は、信号処理部963から入力される画像データを符号化し、符号化データを生成する。そして、画像処理部964は、生成した符号化データを外部インタフェース966又はメディアドライブ968へ出力する。また、画像処理部964は、外部インタフェース966又はメディアドライブ968から入力される符号化データを復号し、画像データを生成する。そして、画像処理部964は、生成した画像データを表示部965へ出力する。また、画像処理部964は、信号処理部963から入力される画像データを表示部965へ出力して画像を表示させてもよい。また、画像処理部964は、OSD969から取得される表示用データを、表示部965へ出力する画像に重畳してもよい。
OSD969は、例えばメニュー、ボタン又はカーソルなどのGUIの画像を生成して、生成した画像を画像処理部964へ出力する。
外部インタフェース966は、例えばUSB入出力端子として構成される。外部インタフェース966は、例えば、画像の印刷時に、撮像装置960とプリンタとを接続する。また、外部インタフェース966には、必要に応じてドライブが接続される。ドライブには、例えば、磁気ディスク又は光ディスクなどのリムーバブルメディアが装着され、リムーバブルメディアから読み出されるプログラムが、撮像装置960にインストールされ得る。さらに、外部インタフェース966は、LAN又はインターネットなどのネットワークに接続されるネットワークインタフェースとして構成されてもよい。即ち、外部インタフェース966は、撮像装置960における伝送手段としての役割を有する。
メディアドライブ968に装着される記録媒体は、例えば、磁気ディスク、光磁気ディスク、光ディスク、又は半導体メモリなどの、読み書き可能な任意のリムーバブルメディアであってよい。また、メディアドライブ968に記録媒体が固定的に装着され、例えば、内蔵型ハードディスクドライブ又はSSD(Solid State Drive)のような非可搬性の記憶部が構成されてもよい。
制御部970は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、撮像装置960の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース971から入力される操作信号に応じて、撮像装置960の動作を制御する。
ユーザインタフェース971は、制御部970と接続される。ユーザインタフェース971は、例えば、ユーザが撮像装置960を操作するためのボタン及びスイッチなどを有する。ユーザインタフェース971は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部970へ出力する。
このように構成された撮像装置960において、画像処理部964は、上述した実施形態に係る画像符号化装置及び画像復号装置の機能を有する。それにより、撮像装置960での画像の符号化及び復号に際して、より容易にレート制御を行うことができる。
なお、本明細書では、差分量子化パラメータ等の各種情報が、符号化ストリームに多重化されて、符号化側から復号側へ伝送される例について説明した。しかしながら、これら情報を伝送する手法はかかる例に限定されない。例えば、これら情報は、符号化ビットストリームに多重化されることなく、符号化ビットストリームと関連付けられた別個のデータとして伝送され又は記録されてもよい。ここで、「関連付ける」という用語は、ビットストリームに含まれる画像(スライス若しくはブロックなど、画像の一部であってもよい)と当該画像に対応する情報とを復号時にリンクさせ得るようにすることを意味する。即ち、情報は、画像(又はビットストリーム)とは別の伝送路上で伝送されてもよい。また、情報は、画像(又はビットストリーム)とは別の記録媒体(又は同一の記録媒体の別の記録エリア)に記録されてもよい。さらに、情報と画像(又はビットストリーム)とは、例えば、複数フレーム、1フレーム、又はフレーム内の一部分などの任意の単位で互いに関連付けられてよい。
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示はかかる例に限定されない。本開示の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
上述したストリーム、ビットストリーム、コードストリーム、符号化ストリーム、および符号化ビットストリームは、いずれも、画像符号化装置が出力する(画像符号化装置が生成した)符号化データを示すものである。つまり、これらは、狭義においてはそれぞれ互いに異なるものを指す場合もあるが、特に説明を付さない限り、基本的に互いに同じ意味を持つものとする。なお、符号化ストリームは、VCL(Video Coding Layer) NAL(Network Abstraction Layer)ユニット、Filler Data NALユニット、Non VCL NAL ユニット等、任意のデータを含むようにしてよい。例えば、符号化ストリームは、ビットストリームであってもよいがバイトストリームであってもよい。また、映像ストリームは、映像に関するデータのストリームであり、音声ストリームは、音声に関するデータのストリームである。映像ストリームおよび音声ストリームは、符号化ストリームに含まれる。
また、以上の説明においてパラメータは、フラグを含む。
なお、本技術は以下のような構成も取ることができる。
(1) 符号化ストリームにおいて規定される仮想デコーダをバイナリデータで規定する際に用いられるバイナリパラメータを設定する設定部と、
画像データを符号化して符号化ストリームを生成する符号化部と、
前記設定部により設定されたバイナリパラメータと、前記符号化部により生成された符号化ストリームとを伝送する伝送部と
を備える画像処理装置。
(2) 前記設定部は、前記仮想デコーダのバッファのサイズと、前記バッファに蓄積されるデータのデータ量を示す位置とを、前記バイナリパラメータとして設定する
前記(1)に記載の画像処理装置。
(3) 前記設定部は、前記符号化ストリームの符号量を前記バイナリデータのデータ量に換算する際に用いられる変換パラメータを、前記バイナリパラメータとして設定する
前記(1)または(2)に記載の画像処理装置。
(4) 前記設定部は、前記変換パラメータを用いて、前記仮想データを、符号化ストリームによる規定から、バイナリデータによる規定に変換するかを示すパラメータを、前記バイナリパラメータとして設定する
前記(3)に記載の画像処理装置。
(5) 前記設定部は、符号化ストリームで規定される仮想デコーダと、バイナリデータで規定される仮想デコーダとを異なるパラメータを用いて設定するかを示すパラメータを、前記バイナリパラメータとして設定する
前記(1)乃至(4)のいずれかに記載の画像処理装置。
(6) 前記伝送部は、前記バイナリパラメータを、前記符号化部により生成された符号化ストリームの付加情報として伝送する
前記(1)乃至(5)のいずれかに記載の画像処理装置。
(7) 前記伝送部は、前記バイナリパラメータを、前記符号化部により生成された符号化ストリームに挿入して伝送する
前記(1)乃至(5)のいずれかに記載の画像処理装置。
(8) 前記設定部は、バイナリデータの処理速度を規定する仮想デコーダを規定する際に用いられるパラメータを、前記バイナリパラメータとして設定する
前記(1)に記載の画像処理装置。
(9) 前記設定部は、前記バイナリデータの処理速度を示すパラメータを、前記バイナリパラメータとして設定する
前記(8)に記載の画像処理装置。
(10) 前記設定部は、前記仮想デコーダのバッファのサイズを示すパラメータを、前記バイナリパラメータとして設定する
前記(8)または(9)に記載の画像処理装置。
(11) 前記バイナリパラメータに応じて決定される、符号化ストリームの最大処理量と、バイナリデータの最大処理量とを用いて、符号化ストリームの目標レートであるターゲットビットを決定する決定部をさらに備える
前記(8)乃至(10)のいずれかに記載の画像処理装置。
(12) 画像処理装置の画像処理方法であって、
設定部が、符号化ストリームにおいて規定される仮想デコーダをバイナリデータで規定する際に用いられるバイナリパラメータを設定し、
符号化部が、画像データを符号化して符号化ストリームを生成し、
伝送部が、設定されたバイナリパラメータと、生成された符号化ストリームとを伝送する
画像処理方法。
(13) 符号化ストリームで規定される仮想デコーダをバイナリデータで規定する際に用いられるバイナリパラメータと、画像データを符号化した符号化ストリームとを受け取る受け取り部と、
前記受け取り部により受け取られたバイナリパラメータを用いて、前記受け取り部により受け取られた符号化ストリームを復号する復号部と
を備える画像処理装置。
(14) 画像処理装置の画像処理方法であって、
受け取り部が、符号化ストリームで規定される仮想デコーダをバイナリデータで規定する際に用いられるバイナリパラメータと、画像データを符号化した符号化ストリームとを受け取り、
復号部が、受け取られたバイナリパラメータを用いて、受け取られた符号化ストリームを復号する
画像処理方法。