発明の実施の形態1.
図1を参照して、本発明の実施の形態1にかかる画像符号化装置1の構成について説明する。図1は、本発明の実施の形態1にかかる画像符号化装置1の構成図である。
画像符号化装置1は、フレームバッファ10、発生符号量記憶装置11、発生符号量予測装置12、符号量制御装置13、ストリーム結合装置14、エンコーダ30〜33、及びストリームバッファ40〜43を有する。画像符号化装置1は、複数のフレームからなる動画像データを符号化する。画像符号化装置1には、動画像データを構成する複数のフレームのそれぞれが入力画像として順次入力される。以下、フレームを「ピクチャ」又は「画像」とも言う。
画像符号化装置1は、例えば、動画像を符号化して記憶媒体に記憶するレコーダ、地上波デジタル放送番組の動画像を符号化して送信するデジタル放送送信装置、動画像を符号化して他のテレビ電話に送信するテレビ電話等に含まれる。記憶媒体は、例えば、メモリ、ハードディスク、及び光ディスク等である。
フレームバッファ10は、画像符号化装置1に入力された入力画像が一時的に記憶される。フレームバッファ10は、入力画像を記憶するための任意の記憶装置を含む。ここで、記憶装置とは、例えば、メモリ及びハードディスク等である。
発生符号量記憶装置11は、符号化済みの画像の発生符号量と、符号化途中の画像の符号化済み領域の発生符号量とが記憶される。発生符号量は、1画像を予め定めた大きさに分割した単位毎に記憶される。発生符号量記憶装置11は、発生符号量を記憶するための任意の記憶装置を含む。
発生符号量予測装置12は、符号化済みの画像の発生符号量と、符号化途中の画像の符号化済み領域の発生符号量とに基づいて、符号化途中の画像の未符号化領域の発生符号量を推定する。
符号量制御装置13は、推定された未符号化領域の発生符号量に基づいて、予め指定されたビットレートを達成するようにエンコーダ30〜33に対して指定する符号量制御パラメタを計算する。符号量制御装置13は、計算した符号量制御パラメタをエンコーダ30〜33に対して指定する。
ストリーム結合装置14は、ストリームバッファ40〜43のそれぞれに記憶されたビットストリームを指定の順序で結合して1つのビットストリームを生成する。ストリーム結合装置14は、生成したビットストリームを画像符号化装置1の外部に出力する。
エンコーダ30〜33のそれぞれは、符号化対象として指定された入力画像をフレームバッファ10から読み出して符号化する。エンコーダ30〜33のそれぞれは、符号量制御装置13から指定された符号量制御パラメタに応じた符号量で入力画像を符号化する。エンコーダ30〜33のそれぞれは、入力画像を符号化したデータを含むビットストリームを生成する。エンコーダ30〜33のそれぞれは、ビットストリームをストリームバッファ40〜43のそれぞれに記憶する。エンコーダ30〜33のそれぞれは、例えば、MPEG−2又はH.264等の動画像符号化規格において規定されている符号化方式によって入力画像を符号化する。
ストリームバッファ40〜43のそれぞれは、エンコーダ30〜33のそれぞれから出力されたビットストリームを一時的に記憶する。具体的には、ストリームバッファ40はエンコーダ30によって生成されたビットストリームを記憶し、ストリームバッファ41はエンコーダ31によって生成されたビットストリームを記憶し、ストリームバッファ42はエンコーダ32によって生成されたビットストリームを記憶し、ストリームバッファ43はエンコーダ33によって生成されたビットストリームを記憶する。
続いて、図2を参照して、本発明の実施の形態1にかかる画像符号化装置1による画像符号化処理タイミングについて説明する。図2は、本発明の実施の形態1にかかる画像符号化装置1による画像符号化処理タイミングを示す図である。図2は、4つのエンコーダ30〜33が、時分割に並列して入力画像の符号化処理を行う場合について示している。
図2に示すように、本実施の形態1では、動画像に含まれる複数のピクチャ1〜9のそれぞれは、符号化順にエンコーダ30〜33のそれぞれに順番に割り当てられる。ここで、ピクチャ1〜9は、符号化順序は、ピクチャ1、ピクチャ2、・・・、ピクチャ9の順番であるものとする。また、ピクチャ9に後続するピクチャの図示及び説明は省略する。具体的には、エンコーダ30にはピクチャ1、5及び9が割り当てられ、エンコーダ31にはピクチャ2及び6が割り当てられ、エンコーダ32にはピクチャ3及び7が割り当てられ、エンコーダ33にはピクチャ4及び8が割り当てられる。エンコーダ30〜33のそれぞれは、割り当てられたピクチャを符号化する。言い換えると、割り当てられたピクチャとは、符号化対象として指定されたピクチャである。
以下、図2について具体的に説明する。時刻t0で、エンコーダ30は、フレームバッファ10からピクチャ1を取得して、取得したピクチャ1の符号化を開始する。以降、時刻t0からピクチャ入力間隔経過する毎の時刻をt1〜t8として示す。なお、ピクチャ入力間隔は、予め任意に定められる。
時刻t1で、エンコーダ31は、フレームバッファ10からピクチャ2を取得して、取得したピクチャ2の符号化を開始する。時刻t2で、エンコーダ32は、フレームバッファ10からピクチャ3を取得して、取得したピクチャ3の符号化を開始する。時刻t3で、エンコーダ33は、フレームバッファ10からピクチャ4を取得して、取得したピクチャ4の符号化を開始する。
ここで、1つのエンコーダで、1ピクチャを符号化する時間は、ピクチャ入力間隔の4倍未満の時間がかかるものとする。よって、時刻t4では、時刻t0から開始したエンコーダ30によるピクチャ1の符号化は終了していることになる。
そのため、時刻t4で、エンコーダ30は、フレームバッファ10からピクチャ5を取得して、取得したピクチャ5の符号化を開始する。以降も同様にして、ピクチャ入力間隔が経過する毎に、時刻5でエンコーダ31によるピクチャ6の符号化が開始され、時刻6でエンコーダ32によるピクチャ7の符号化が開始され、時刻7でエンコーダ33によるピクチャ8の符号化が開始され、時刻t8でエンコーダ30によるピクチャ9の符号化が開始される。このようにして、エンコーダ30〜33は、ピクチャ1〜9のそれぞれを並列に符号化していく。
なお、エンコーダ30〜33に対するピクチャの割り当て順序は、図2に例示した順序に限定されない。本実施の形態1では、図2に例示したように、エンコーダ30、31、32、33の順にサイクリックにピクチャを割り当てるようにしているが、これ以外の順序で、エンコーダ30〜33にピクチャを割り当てるようにしてもよい。
また、上述したように、エンコーダ30〜33のそれぞれに符号化対象のピクチャを割り当てて、エンコーダ30〜33のそれぞれが割り当てられたピクチャを符号化する構成は、どのように実現しても良い。一例としては、画像符号化装置1に入力画像を符号化順に入力するようにして、フレームバッファ10に入力順に入力画像がキューイングされるようにする。そして、エンコーダ30〜33のそれぞれが順番に、フレームバッファ10から入力画像を取り出すようにする。
続いて、図3を参照して、図2の時刻tにおけるピクチャの符号化処理状況について説明する。図3は、図2の時刻tにおけるピクチャの符号化処理状況を示す図である。時刻tは、エンコーダ30によるピクチャ5の符号化の終了後、エンコーダ30によるピクチャ9の符号化の開始前の時刻である。
図3は、図2の時刻tにおけるピクチャ5〜9のそれぞれの符号化処理状況を示している。図3において、ピクチャ中のハッチング領域は、符号化済み領域を示し、ピクチャ中のハッチングをしていない無地の領域は、未符号化領域を示す。このように、符号化途中のある瞬間では、符号化途中のピクチャ5〜8のそれぞれにおいて、符号化済み領域及び未符号化領域の大きさは、それぞれ異なる。
続いて、図4を参照して、ピクチャの構成について説明する。図4は、ピクチャの構成を示す図である。
図4に示すように、1枚のピクチャは、符号化が行われる際に、複数のマクロブロックに分割されて、マクロブロック単位で符号化されていく。なお、動画像符号化規格のH.264においては、上下に隣接する2つのマクロブロックを組にしたマクロブロックペア単位で、ピクチャが符号化されることもある。よって、マクロブロックペア単位で符号化していくようにしてもよい。
ここで、本実施の形態1では、マクロブロックの水平方向1列分毎の発生符号量が発生符号量記憶装置11に記憶されていくものとする。以下、マクロブロックの水平方向1列分の単位を「マクロブロックライン」と言う。つまり、エンコーダ30〜33のそれぞれは、マクロブロックラインを符号化する毎に、そのマクロブロックラインにおける発生符号量を発生符号量記憶装置11に記憶する。エンコーダ30〜33のそれぞれは、例えば、マクロブロックを符号化する毎に、符号化によって発生した1マクロブロック当たりの符号量を累積加算していき、1マクロブロックライン当たりの発生符号量を算出する。
また、マクロブロックペアの水平方向1列分毎の発生符号量が発生符号量記憶装置11に記憶されていくようにしてもよい。以下、マクロブロックペアの水平方向1列分の単位を「マクロブロックペアライン」と言う。この場合、エンコーダ30〜33のそれぞれは、マクロブロックペアラインを符号化する毎に、そのマクロブロックペアラインにおける発生符号量を発生符号量記憶装置11に記憶する。エンコーダ30〜33のそれぞれは、例えば、マクロブロックペアを符号化する毎に、符号化によって発生した1マクロブロックペア当たりの符号量を累積加算していき、1マクロブロックペアライン当たりの発生符号量を算出する。なお、本実施の形態では、図4に示すように、1枚のピクチャにマクロブロックがNラインある場合について例示する。ここで、Nは、任意の正整数である。
続いて、図5を参照して、1ピクチャ内の発生符号量の分布の一例について説明する。図5は、本発明の実施の形態1にかかる1ピクチャ内の発生符号量の分布の一例を模式的に示した図である。
一般的に、1ピクチャ内における画素値は、一様ではなく、単調な変化をしているわけでもない。よって、符号化済みのピクチャ内における符号量も、一様ではなく、単調な変化をしない場合がある。図5に例示するように、1ピクチャ内で、符号化による発生符号量が、前半のマクロブロックラインと後半のマクロブロックラインとで大きく異なってしまうものも存在する。このような画像では、例えば、第iマクロブロックラインまで符号化が済んでおり、第iマクロブロックラインまでの発生符号量が分かっていたとしても、それ以降に符号化される第i+1マクロブロックライン〜第Nマクロブロックラインにおける発生符号量を、第iマクロブロックラインまでの符号化済み領域の発生符号量のみから予測することは困難である。ここで、iは、N以下の正整数である。
続いて、図6を参照して、本発明の実施の形態1にかかる未符号化領域の符号量推定方法について説明する。図6は、本発明の実施の形態1にかかる未符号化領域の符号量推定方法を説明するための図である。
一般的に、動画像を構成する画像が、時間的に近い画像であれば相関が高く、画像内の発生符号量分布も類似していることが知られている。そこで、本実施の形態1にかかる発生符号量予測装置12は、符号化途中のピクチャの未符号化領域の発生符号量を、符号化途中のピクチャの符号化済み領域における発生符号量と、直前に符号化が終了した符号化済みピクチャの発生符号量から推定する。図2を参照して説明すると、発生符号量予測装置12は、例えば、ピクチャ5を符号化しているときは、直前の符号化済みピクチャ1の符号発生量から、ピクチャ5の未符号化領域の符号量を推定する。以下、符号化途中のピクチャを「符号化途中ピクチャ」と言い、符号化済みのピクチャを「符号化済みピクチャ」と言う。
例えば、図6に例示するように、符号化途中ピクチャのaで示す範囲まで符号化が進んでいるものとする。図6に示すbは、符号化途中ピクチャ全体の垂直方向の長さNから、符号化済み領域の垂直方向の長さaを差し引いた長さである。つまり、N=a+bが成立する。ここで、aはN以下の正整数であり、bはN以下の正整数である。よって、符号化途中ピクチャのaで示す範囲は、符号化済み領域であり、符号化途中ピクチャのbで示す範囲は、未符号化領域である。言い換えると、符号化途中ピクチャのaで示す範囲に含まれるマクロブロックラインは、符号化されており、符号化途中ピクチャのbで示す範囲に含まれるマクロブロックラインは、符号化されていない。また、Nは1ピクチャ中のマクロブロックライン数であるため、aは、符号化済み領域に含まれるマクロブロックライン数となり、bは、未符号化領域に含まれるマクロブロックライン数となる。
このときに、符号化途中ピクチャの符号化済み領域の発生符号量がSaである場合、符号化途中の未符号化領域の発生符号量Sbを次式(1)によって推定する。ここで、S'aは、符号化済みピクチャのaで示す範囲の発生符号量であり、S'bは、符号化済みピクチャのbで示す範囲の発生符号量である。つまり、S'aは、符号化済みピクチャのうち、符号化途中ピクチャの符号化済み領域に対応する領域の発生符号量であり、S'bは、符号化済みピクチャのうち、符号化途中ピクチャの未符号化領域に対応する領域の発生符号量である。ここでは、符号化済み領域と、符号化済み領域に対応する領域は、ピクチャ中の同一位置における同一面積の領域となり、未符号化領域と、未符号化領域に対応する領域も、ピクチャ中の同一位置における同一面積の領域となる。
上述したように、時間的に近いピクチャ同士であれば、ピクチャ内の発生符号量分布は、相互に類似している。また、ここでは、符号化済みピクチャとして、直前に符号化が終了した符号化済みピクチャを使用している。つまり、この符号化済みピクチャと符号化途中ピクチャとは、時間的に近いピクチャ同士となる。よって、符号化途中ピクチャの符号化済み領域の発生符号量Saと、符号化途中ピクチャの未符号化領域の発生符号量Sbとの比率は、符号化済みピクチャのうち、符号化途中ピクチャの符号化済み領域に対応する領域の発生符号量S'aと、符号化済みピクチャのうち、符号化途中ピクチャの未符号化領域に対応する領域の発生符号量S'bとの比率と類似することになる。そのため、式(1)によって、Sa及びSbの比率が、S'a及びS'bの比率と同じとなるように、SaからSbを算出することで、符号化済みピクチャの未符号化領域の発生符号量を高い精度で推定することができる。以下、Sbを「推定符号量」とも言う。
ここで、本実施の形態1では、発生符号量の推定に使用する符号化済みピクチャとして、直前に符号化が終了した符号化済みピクチャを使用する場合について例示するが、これに限られない。上述したように、符号化途中ピクチャと時間的に近接した符号化済みピクチャであれば、符号化途中ピクチャとの相関は高い。そのため、直前に符号化が終了した符号化済みピクチャ以外の符号化途中ピクチャと時間的に近接した符号化済みピクチャを使用するようにしてもよい。
例えば、符号化途中ピクチャに時間的に近接した符号化済みピクチャとして、符号化途中ピクチャより所定数前に符号化が開始されたピクチャまでの範囲に含まれる符号化済みピクチャのいずれかを使用するようにしてもよい。また、MPEG−2又はH.264等の動画像符号化規格のように、ピクチャの符号化順序と、ピクチャの再生順序とが必ずしも一致しない場合もある。そのような場合、ピクチャの再生順序が分かるのであれば、それに基づいて使用する符号化済みピクチャを決定するようにしてもよい。例えば、符号化途中ピクチャと時間的に近接した符号化済みピクチャとして、符号化途中ピクチャより所定数前又は後に再生されるピクチャまでの範囲に含まれる符号化済みピクチャのいずれかを使用するようにしてもよい。なお、そのような動画像符号化規格であっても、符号化順序と再生順序とは大きくことなることはないため、どちらの順序に基づいて、使用する符号化済みピクチャを決定するようにしてもよい。
また、符号化済みピクチャとして、符号化途中ピクチャと同じピクチャタイプの符号化済みピクチャで、時間的に近接した符号化済みピクチャを使用してもよい。ここで、例えば、MPEG−2又はH.264等の動画像符号化規格では、ピクチャタイプによって予測符号化方式が異なる。Iピクチャに対しては、フレーム内予測(イントラ予測)が使用され、Pピクチャに対しては、順方向動き補償フレーム間予測が使用され、Bピクチャでは、順方向、逆方向、又は双方向動き補償フレーム間予測が使用される。つまり、同じピクチャタイプのピクチャ同士は、発生符号量の特性が近くなる。したがって、符号化途中ピクチャと同じピクチャタイプの符号化済みピクチャを使用することで、未符号化領域の発生符号量の推定精度を向上することができる。
ここで、動画像データの符号化開始直後には、符号化済みピクチャが存在しない。また、シーンチェンジによって、符号化済みピクチャと符号化途中ピクチャとの間で、シーンの性質が変化した場合には、符号化途中ピクチャと時間的に近接した符号化済みピクチャであっても、符号化途中ピクチャと発生符号量分布が類似していない可能性が高い。したがって、それらの場合、発生符号量予測装置12は、符号化済みピクチャを使用せずに、符号化途中ピクチャの符号化済み領域と、符号化途中ピクチャの未符号化領域との比率に応じた比例計算によって、符号化途中ピクチャの未符号化領域の発生符号量Sbを推定するようにしてもよい。つまり、符号化途中ピクチャの未符号化領域の発生符号量を次式(2)によって推定する。
符号量制御装置13は、以上に説明した方法によって推定された未符号化領域の推定符号量と、未符号化領域に割り当て可能な目標符号量との差分に基づいて、符号量制御パラメタを決定する。なお、図3を参照して説明したように、エンコーダ30〜33のそれぞれで符号化の進行状況は異なるため、エンコーダ30〜33のそれぞれに対して、別々の符号量制御パラメタが決定されることになる。そして、符号量制御装置13は、決定した符号量制御パラメタをエンコーダ30〜33のそれぞれに与える。エンコーダ30〜33のそれぞれは、符号量制御装置13から与えられた符号量制御パラメタに基づいて、符号化途中ピクチャの未符号化領域を符号化する。符号量制御パラメタは、例えば、量子化ステップである。例えば、推定符号量が目標符号量よりも大きい場合、量子化ステップを大きくして発生する符号量を抑制する。逆に、推定符号量が目標符号量よりも小さい場合、量子化ステップを小さくして発生する符号量が多くなるようにする。
なお、ピクチャの符号化開始時には、まだピクチャの符号化済み領域が存在しないため、符号量制御装置13は、符号量制御パラメタをどのように決定するようにしてもよい。一例としては、ピクチャの目標符号量に応じて、適切と考えられる符号量制御パラメタを予め定めておく。具体的には、ピクチャがとり得る目標符号量のそれぞれから、適切な符号量制御パラメタを導き出すことができる情報を画像符号化装置1が有する任意の記憶装置に予め用意しておく。この情報は、例えば、目標符号量からそれに適した符号量制御パラメタを得ることができるテーブル又は関数等としてよい。そして、符号量制御装置13が、この情報を参照して、ピクチャの目標符号量から符号量制御パラメタを決定できるようにする。
また、ピクチャの目標符号量は、予め定められたビットレートを達成するように予め決定しておく。ピクチャの目標符号量は、ビットレートに基づいて、ピクチャタイプ毎に異なる重み付けをして決定するようにしてもよい。具体的には、Iピクチャ、Pピクチャ、Bピクチャの順に符号化における圧縮率が高くなっていく。そのため、例えば、目標符号量が、Bピクチャ、Pピクチャ、Iピクチャの順に高くなっていくように重み付けをする。符号化途中ピクチャの目標符号量は、例えば、画像符号化装置1が有する任意の記憶装置に予め格納しておき、符号量制御装置13が参照可能としておく。
続いて、図7を参照して、本発明の実施の形態1にかかる画像符号化装置1の処理について説明する。図7は、本発明の実施の形態1にかかる画像符号化装置1の処理を示すフローチャートである。ここでは、エンコーダ30に対する符号量制御パラメタの最適化を例に挙げて説明するが、エンコーダ31〜33のそれぞれに対しても、並列して同様の処理が行われる。
エンコーダ30は、ピクチャに含まれるマクロブロックラインを符号化する(S1)。エンコーダ30は、符号化したデータを順次、ストリームバッファ40に格納してく。これによって、ストリームバッファ40にビットストリームが形成されていく。エンコーダ30は、符号化したマクロブロックラインの発生符号量を発生符号量記憶装置11に格納する。エンコーダ30は、ピクチャに含まれる全てのマクロブロックラインを符号化したか否かを判定する(S2)。
全てのマクロブロックラインを符号化した場合(S2:YES)、エンコーダ30は、そのピクチャの符号化を終了する。
全てのマクロブロックラインを符号化していない場合(S2:NO)、上述した式(1)によって、発生符号量S'a及びS'bの比率に基づいて、発生符号量Saから未符号化領域の発生符号量Sbを推定する(S3)。
ここで、発生符号量記憶装置11には、符号化途中ピクチャの符号化済み領域に含まれるマクロブロックラインのそれぞれにおける発生符号量と、符号化済みピクチャに含まれるマクロブロックラインのそれぞれにおける発生符号量とが格納されていることになる。そのため、発生符号量予測装置12は、発生符号量記憶装置11に格納されたマクロブロックライン毎の発生符号量に基づいて、各発生符号量Sa、S'a、及びS'bを算出する。
具体的には、発生符号量予測装置12は、符号化途中ピクチャの符号化済み領域のマクロブロックラインの発生符号量の総和を、符号化途中ピクチャの符号化済み領域の発生符号量Saとして算出する。発生符号量予測装置12は、符号化済みピクチャのうち、符号化途中ピクチャの符号化済み領域に対応する領域のマクロブロックラインの発生符号量の総和を、その符号化済み領域に対応する領域の発生符号量S'aとして算出する。発生符号量予測装置12は、符号化済みピクチャのうち、符号化途中ピクチャの未符号化領域に対応する領域のマクロブロックラインの発生符号量の総和を、その未符号化領域に対応する領域の発生符号量S'bとして算出する。
発生符号量予測装置12は、推定した未符号化領域の発生符号量Sbを符号量制御装置13に出力する。
符号量制御装置13は、発生符号量予測装置12から出力された、符号化途中ピクチャの未符号化領域の推定符号量Sbを、符号化途中ピクチャの未符号化領域の目標符号量と比較する(S4)。符号量制御装置13は、例えば、未符号化領域の目標符号量を、符号化途中ピクチャの目標符号量から、符号化途中ピクチャの符号化済み領域の発生符号量を減算することによって算出する。なお、符号量制御装置13は、符号化途中ピクチャの符号化済み領域の発生符号量を、発生符号量予測装置12と同様に発生符号量記憶装置11から取得するようにしてもよく、発生符号量予測装置12から推定符号量Sbとともに取得するようにしてもよい。
未符号化領域の推定符号量が、未符号化領域の目標符号量よりも大きい場合(S4:大きい)、符号量制御装置13は、エンコーダ30による符号化によって発生する符号量を低減させるように符号量制御パラメタを変更する(S5)。つまり、量子化ステップを大きくする。符号量制御装置13は、変更後の符号量制御パラメタをエンコーダ20に出力する。
未符号化領域の推定符号量が、未符号化領域の目標符号量よりも小さい場合(S4:小さい)、符号量制御装置13は、エンコーダ30による符号化によって発生する符号量を増加させるように符号量制御パラメタを変更する(S6)。つまり、量子化ステップを小さくする。符号量制御装置13は、変更後の符号量制御パラメタをエンコーダ20に出力する。
未符号化領域の推定符号量が、未符号化領域の目標符号量と等しい場合(S4:等しい)、符号量制御パラメタは、変更しない。
エンコーダ30は、符号量制御装置13から出力された符号量制御パラメタに基づいて、次のマクロブロックラインを符号化する(S1)。以降も同様に、ステップS1〜S6の処理を繰り返すことによって、符号化制御パラメタを最適化しながら、ピクチャ5の符号化を行うことができる。
以上に説明したように、本実施の形態1にかかる符号化処理では、相関の高いピクチャの符号化結果を利用しているため、そのピクチャの符号量の発生分布に応じて、精度の高い符号量推定が可能となる。特に、図5に例示したように、符号化による発生符号量が、ピクチャ内の前半と後半とで大きく異なってしまうピクチャであっても、精度の高い符号量推定が可能となる。
以上に説明したように、本実施の形態1では、符号化中フレームに時間的に近接する符号化済みフレームにおける、符号化中フレームに含まれる符号化済み領域及び未符号化領域に対応する領域のそれぞれの符号量の比率に基づいて、符号化済み領域の符号量から未符号化領域の符号量を推定するようにしている。
これによれば、符号化中フレームと相関の高い符号化済みフレームの符号量分布を参考にして、未符号化領域の符号量を高い精度で推定することが可能となる。したがって、高い精度で推定された未符号化領域の符号量に基づいて、適切な符号量制御パラメタを決定することができるため、符号化したときにおけるフレームの画質の劣化を抑制することができる。
発明の実施の形態2.
続いて、図8を参照して、本発明の実施の形態2にかかる画像符号化装置2の構成について説明する。図8は、本発明の実施の形態2にかかる画像符号化装置2の構成図である。なお、実施の形態1と同様の構成要素については、同一の符号を付して、説明を省略する。
画像符号化装置2は、フレームバッファ10、発生符号量記憶装置11、符号量制御装置13、ストリーム結合装置14、事前解析装置15、解析結果記憶装置16、発生符号量予測装置17、エンコーダ30〜33、及びストリームバッファ40〜43を有する。本実施の形態2において、画像符号化装置2に入力される入力画像は、動画データを構成するフレームであってもよく、静止画像データを構成する1枚のフレームであってもよい。
事前解析装置15は、画像符号化装置2の外部から入力画像が入力される。事前解析装置15は、入力画像を解析して、1画像を予め定めた大きさに分割した単位毎の特徴量を算出する。事前解析装置15は、算出した特徴量を事前解析結果として解析結果記憶装置16に記憶する。事前解析装置15は、事前解析後の入力画像をフレームバッファ10に記憶する。
解析結果記憶装置16は、入力画像の事前解析結果が一時的に記憶される。事前解析結果としての特徴量は、1画像を予め定めた大きさに分割した単位毎に記憶される。解析結果記憶装置16は、特徴量を記憶するための任意の記憶装置によって構成される。
発生符号量予測装置17は、符号化途中の画像の符号化済み領域の発生符号量と、符号化途中の画像の特徴量とに基づいて、符号化途中の画像の未符号化領域の発生符号量を推定する。
続いて、図9を参照して、本発明の実施の形態2にかかる未符号化領域の符号量推定方法について説明する。図9は、本発明の実施の形態2にかかる未符号化領域の符号量推定方法を説明するための図である。
一般的に、画像内の特定の特徴量と、その画像内の発生符号量とは相関があり、画像内の特定の特徴量分布と、その画像内の発生符号量分布とが類似していることが知られている。そこで、本実施の形態2にかかる発生符号量予測装置17は、符号化途中ピクチャの未符号化領域の発生符号量を、符号化途中ピクチャの符号化済み領域における発生符号量と、符号化途中のピクチャの特徴量から推定する。
例えば、図9に例示するように、符号化途中ピクチャのaで示す範囲まで符号化が進んでいるものとする。つまり、図9では、図6の右図と同様に、符号化途中ピクチャのaで示す範囲は、符号化済み領域であり、符号化途中ピクチャのbで示す範囲は、未符号化領域である。このときに、符号化途中ピクチャの符号化済み領域の発生符号量がSaである場合、符号化途中ピクチャの未符号化領域の発生符号量Sbを次式(3)によって推定する。ここで、Caは、符号化途中ピクチャの符号化済み領域の特徴量であり、Cbは、符号化途中ピクチャの未符号化領域の特徴量である。
上述したように、ピクチャ内の特定の特徴量分布と、そのピクチャ内の発生符号量分布とは、相互に類似している。よって、符号化途中ピクチャの符号化済み領域の発生符号量Saと、符号化途中ピクチャの未符号化領域の発生符号量Sbとの比率は、符号化途中ピクチャの符号化済み領域の発生符号量Caと、符号化途中ピクチャの未符号化の発生符号量Cbとの比率と類似することになる。そのため、式(3)によって、Sa及びSbの比率が、Ca及びCbの比率と同じとなるように、SaからSbを算出することで、符号化済みピクチャの未符号化領域の発生符号量を高い精度で推定することができる。
ここで、事前解析装置15は、特徴量として、例えば、ピクチャ内隣接画素間差分絶対値の総和、ピクチャ間差分絶対値の総和、及びピクチャ内画素分散等の発生符号量に相関のある統計量を算出する。ここで、ピクチャ内隣接画素間差分絶対値とは、ピクチャ内において隣接する画素間の画素値の差分値の絶対値のことである。ピクチャ間差分絶対値とは、符号化途中ピクチャと、符号化途中ピクチャの直前に入力されたピクチャとの同一位置における画素値の差分値の絶対値のことである。なお、事前解析装置15は、直前に入力されたピクチャに限られず、フレームバッファ10に格納済みの過去に入力されたピクチャを参照することによって、今回に入力されたピクチャとのピクチャ間差分絶対値を算出するようにしてもよい。ピクチャ内画素分散値とは、ピクチャ内における画素値の分散値である。事前解析装置15は、マクロブロックライン毎に特徴量を算出して解析結果記憶装置16に格納していく。
なお、特徴量として、ピクチャ内隣接画素間差分絶対値の総和、ピクチャ間差分絶対値の総和、及びピクチャ内画素分散値のうち、いずれか1つの統計量を使用するようにしてもよく、いずれか2つ以上の統計量を使用するようにしてもよい。いずれか2つ以上の統計量を使用する場合、統計量のそれぞれに予め任意に定めた重みを乗じてから、それらを加算した値を特徴量として使用するようにしてもよい。
ここで、符号化途中ピクチャがIピクチャのように、フレーム内予測(イントラ予測)によって符号化される場合、発生符号量は、ピクチャ内隣接画素間差分絶対値の総和、あるいはピクチャ内画素分散値に応じて大きくなる。そのため、この場合は、特徴量として、ピクチャ内隣接画素間差分絶対値の総和、及び、ピクチャ内画素分散値のうち、少なくとも1つを使用するようにするとよい。
また、符号化途中ピクチャがPピクチャ又はBピクチャのように、動き補償フレーム間予測によって符号化される場合、発生符号量は、ピクチャ間差分絶対値の総和に応じて大きくなる。そのため、この場合は、特徴量として、ピクチャ間差分絶対値の総和を使用するようにするとよい。
つまり、上述した異なる種類の統計量を全て算出するようにして、算出した統計量の中から、ピクチャタイプに応じて選択的に統計量を特徴量として使用するようにしてもよい。
続いて、図10を参照して、本発明の実施の形態2にかかる画像符号化装置2の処理について説明する。図10は、本発明の実施の形態2にかかる画像符号化装置2の処理を示すフローチャートである。ここでは、エンコーダ30に対する符号量制御パラメタの最適化を例に挙げて説明するが、エンコーダ31〜33のそれぞれに対しても、並列して同様の処理が行われる。
事前解析装置15は、入力画像として入力されたピクチャの特徴量をマクロブロックライン毎に算出する(S11)。事前解析装置15は、算出したマクロブロックライン毎の特徴量を解析結果記憶装置16に格納する。なお、ステップS12、S13については、実施の形態1におけるステップS1、S2と同様であるため、説明を省略する。
全てのマクロブロックラインを符号化していない場合(S13:NO)、上述した式(3)によって、特徴量Ca及びCbの比率に基づいて、符号化済み領域の発生符号量Saから未符号化領域の発生符号量Sbを推定する(S14)。
ここで、解析結果記憶装置16には、符号化途中ピクチャに含まれるマクロブロックラインのそれぞれにおける特徴量が格納されていることになる。そのため、発生符号量予測装置17は、解析結果記憶装置16に格納されたマクロブロックライン毎の特徴量に基づいて、各特徴量Ca及びCbを算出する。
具体的には、発生符号量予測装置17は、符号化途中ピクチャの符号化済み領域のマクロブロックラインの特徴量の総和を、符号化途中ピクチャの符号化済み領域の特徴量Caとして算出する。発生符号量予測装置17は、符号化途中ピクチャの未符号化領域のマクロブロックラインの特徴量の総和を、符号化途中ピクチャの未符号化領域の特徴量Cbとして算出する。なお、発生符号量予測装置17は、実施の形態1にかかる発生符号量予測装置12と同様に、符号化途中ピクチャの符号化済み領域の発生符号量Saとして、符号化途中ピクチャの符号化済み領域のマクロブロックラインの発生符号量の総和を算出する。
発生符号量予測装置17は、推定した未符号化領域の発生符号量Sbを示す推定符号量情報を符号量制御装置13に出力する。以降、ステップS15〜S17の処理については、実施の形態1におけるステップS4〜S6と同様であるため、説明を省略する。
以上に説明したように、本実施の形態2では、符号化中フレームに含まれる符号化済み領域の特徴量と、符号化中フレームに含まれる未符号化領域の特徴量との比率に基づいて、符号化済み領域の符号量から未符号化領域の符号量を推定するようにしている。
これによれば、符号化中フレームの符号量分布と相関の高い符号化中フレームの特徴量分布を参考にして、未符号化領域の符号量を高い精度で推定することが可能となる。したがって、高い精度で推定された未符号化領域の符号量に基づいて、符号量制御パラメタを決定することができるため、符号化したときにおけるフレームの画質の劣化を抑制することができる。
なお、上述した本実施の形態2では、発生符号量予測装置17が、符号化途中ピクチャの特徴量に基づいて、符号化途中ピクチャの未符号化領域の発生符号量を推定する場合について例示したが、これに限られない。発生符号量予測装置17は、符号化途中ピクチャに時間的に近接する符号化済みピクチャの特徴量に基づいて、符号化途中ピクチャの未符号化領域の発生符号量を推定するようにしてもよい。具体的は、発生符号量予測装置17は、符号化途中ピクチャの符号化済み領域の発生符号量と、符号化途中ピクチャの未符号化領域の発生符号量との比率が、符号化済みピクチャのうち、符号化途中ピクチャの符号化済み領域に対応する領域の特徴量と、符号化済みピクチャのうち、符号化途中ピクチャの未符号化領域に対応する領域の特徴量との比率と同じとなるように、符号化済み領域の発生符号量から未符号化領域の発生符号量を算出するようにしてもよい。
なぜなら、一般的に、符号化途中ピクチャに時間的に近接する符号化済みピクチャであれば、符号化途中ピクチャと相関が高く、符号化途中ピクチャと特徴量分布も類似しているからである。そのため、符号化途中ピクチャに時間的に近接する符号化済みピクチャの特徴量を使用しても、符号化途中ピクチャの未符号化領域の発生符号量を高い精度で推定することができる。
発明の実施の形態3.
続いて、図11を参照して、本発明の実施の形態3にかかる画像符号化装置3の構成について説明する。図11は、本発明の実施の形態3にかかる画像符号化装置3の構成図である。なお、実施の形態1及び実施の形態2と同様の構成要素については、同一の符号を付して、説明を省略する。
画像符号化装置3は、フレームバッファ10、発生符号量記憶装置11、符号量制御装置13、ストリーム結合装置14、事前解析装置15、解析結果記憶装置16、発生符号量予測装置18、エンコーダ30〜33、及びストリームバッファ40〜43を有する。
発生符号量予測装置18は、通常時には、符号化済みの画像の発生符号量と、符号化途中の画像の符号化済み領域の発生符号量とに基づいて、符号化途中の画像の未符号化領域の発生符号量を推定する。つまり、発生符号量予測装置18は、通常時には、実施の形態1と同様に式(1)を使用して符号化途中の画像の未符号化領域の発生符号量を推定する。
発生符号量予測装置18は、シーンチェンジによって、符号化済みの画像と符号化途中の画像との間で、シーンの性質が変化した場合には、符号化途中の画像の符号化済み領域の発生符号量と、符号化途中の画像の特徴量とに基づいて、符号化途中の画像の未符号化領域の発生符号量を推定する。つまり、発生符号量予測装置18は、シーンの性質が変化した場合には、実施の形態2と同様に式(3)を使用して符号化途中の画像の未符号化領域の発生符号量を推定する。上述したように、シーンの性質が変化した場合には、符号化途中ピクチャと時間的に近接した符号化済みピクチャであっても、その符号化済みピクチャの発生符号量分布と、符号化途中ピクチャの発生符号量分布とが類似していない可能性が高いからである。
続いて、図12を参照して、本発明の実施の形態3にかかる画像符号化装置3の処理について説明する。図12は、本発明の実施の形態3にかかる画像符号化装置3の処理を示すフローチャートである。ここでは、エンコーダ30における符号量制御パラメタの最適化を例に挙げて説明する。
なお、ステップS21〜23については、実施の形態2にかかるステップS11〜13と同様であるため、説明を省略する。
全てのマクロブロックラインを符号化していない場合(S23:NO)、発生符号量予測装置18は、符号化済みピクチャと符号化途中ピクチャとの間で、シーンの性質が変化したか否かを判定する(S24)。なお、シーンの性質が変化したか否かは、符号化済みピクチャと符号化途中ピクチャとの間の画素値の差分値に基づいて判定する。
例えば、事前解析装置15が、符号化済みピクチャと符号化途中ピクチャとの間におけるピクチャ間差分絶対値の総和を算出して解析結果記憶装置16に格納するようにする。発生符号量予測装置18は、解析結果記憶装置16に格納されたピクチャ間差分絶対値の総和を取得する。そして、発生符号量予測装置18は、ピクチャ全体におけるピクチャ間差分絶対値の総和が、予め任意に定めた閾値を超えた場合に、シーンの性質が変化したと判定し、ピクチャ全体におけるピクチャ間差分絶対値の総和が、予め任意に定めた閾値を超えていない場合に、シーンの性質が変化していないと判定する。
シーンの性質が変化したと判定した場合(S24:Yes)、発生符号量予測装置18は、実施の形態2におけるステップS14と同様に、符号化途中ピクチャの特徴量に基づいて、符号化途中ピクチャの未符号化領域の推定符号量を推定する(S25)。
シーンの性質が変化していないと判定した場合(S24:No)、発生符号量予測装置18は、実施の形態1にかかるステップS3と同様に、符号化済みピクチャの発生符号量に基づいて、符号化途中ピクチャの未符号化領域の推定符号量を推定する(S26)。
発生符号量予測装置18は、推定した未符号化領域の発生符号量Sbを示す推定符号量情報を符号量制御装置13に出力する。以降、ステップS27〜S29の処理については、実施の形態1におけるステップS4〜S6と同様であるため、説明を省略する。
以上に説明したように、本実施の形態3では、符号化済みフレームと符号化中フレームとの間に、所定の変化がある場合、符号化中フレームに含まれる符号化済み領域の特徴量と、符号化中フレームに含まれる未符号化領域の特徴量との比率に基づいて、符号化済み領域の符号量から未符号化領域の符号量を推定するようにしている。また、本実施の形態3では、符号化済みフレームと符号化中フレームとの間に、所定の変化がない場合は、符号化中フレームに時間的に近接する符号化済みフレームにおける、符号化中フレームに含まれる符号化済み領域及び未符号化領域に対応する領域のそれぞれの符号量の比率に基づいて、符号化済み領域の符号量から未符号化領域の符号量を推定するようにしている。
これによれば、符号化済みフレームと符号化中フレームとの間に、シーンチェンジ等の所定の変化があり、符号化済みフレームと符号化中フレームとの相関が高くないと考えられる場合には、符号化中フレームの符号量分布と相関の高い符号化中フレームの特徴量分布を参考にして、未符号化領域の符号量を高い精度で推定することが可能となる。また、符号化済みフレームと符号化中フレームとの間に、シーンチェンジ等の所定の変化がなく、符号化済みフレームと符号化中フレームとの相関が高いと考えられる場合には、符号化中フレームと相関の高い符号化済みフレームの符号量分布を参考にして、未符号化領域の符号量を高い精度で推定することが可能となる。
したがって、シーンの性質に変化のあるなしに関わらず、高い精度で推定された未符号化領域の符号量に基づいて、適切な符号量制御パラメタを決定することができるため、符号化したときにおけるフレームの画質の劣化を抑制することができる。
なお、上述した本実施の形態3では、シーンチェンジした場合に、符号化途中ピクチャの特徴量のみを使用するようにしているが、これに限られない。例えば、シーンチェンジした場合に、次式(4)で示すように、符号化途中ピクチャの特徴量と、符号化済みピクチャの発生符号量との平均値を使用して、未符号化領域の発生符号量Sbを算出するようにもよい。
また、シーンチェンジした場合に、次式(5)で示すように、符号化途中ピクチャの特徴量と、符号化済みピクチャの符号量とのそれぞれに重み付けをした加重平均値を使用して、未符号化領域の発生符号量Sbを算出するようにもよい。ここで、Wは、0以上1以下の予め定められた任意の値である。
発明の実施の形態4.
続いて、図13を参照して、本発明の実施の形態4にかかる画像符号化装置4の構成について説明する。図13は、本発明の実施の形態4にかかる画像符号化装置4の構成図である。なお、実施の形態1〜3と同様の構成要素については、同一の符号を付して、説明を省略する。
画像符号化装置4は、フレームバッファ10、発生符号量記憶装置11、符号量制御装置13、ストリーム結合装置14、事前解析装置19、解析結果記憶装置20、発生符号量予測装置21、エンコーダ30〜33、及びストリームバッファ40〜43を有する。
事前解析装置19は、画像符号化装置4の外部から入力画像が入力される。事前解析装置19は、入力画像を解析して、1画像を予め定めた大きさに分割した単位毎に動き量を算出する。動き量は、例えば、動きベクトルである。事前解析装置19は、算出した動き量を事前解析結果として解析結果記憶装置20に記憶する。事前解析装置19は、事前解析後の入力画像をフレームバッファ10に記憶する。ここで、事前解析装置19は、直前に入力された画像に限られず、フレームバッファ10に格納済みの過去に入力された画像を参照することによって、今回に入力された画像における動き量を算出するようにしてもよい。
解析結果記憶装置20は、入力画像の事前解析結果が一時的に記憶される。事前解析結果としての動き量は、1画面を予め定めた大きさに分割した単位毎に記憶される。
発生符号量予測装置21は、符号化済みの画像の発生符号量と、符号化途中の画像の符号化済み領域の発生符号量と、符号化途中の画像の動き量とに基づいて、符号化途中の画像の未符号化領域の発生符号量を推定する。
続いて、図14A、Bを参照して、本発明の実施の形態4にかかる動きがある場合における未符号化領域の符号量推定方法について説明する。図14A、Bは、本発明の実施の形態4にかかる動きがある場合における未符号化領域の符号量推定方法を説明するための図である。
本実施の形態4では、符号化途中ピクチャの未符号化領域に動きがある場合、事前解析装置19において検出した符号化途中ピクチャの未符号化領域の動きに応じて補正した位置における符号化済みピクチャの発生符号量を利用して、符号化途中ピクチャの未符号化領域の発生符号量を推定する。
事前解析装置19は、図14Aに示すように、ピクチャのマクロブロックライン毎の垂直方向の動き量を算出する。事前解析装置19は、算出した動き量をマクロブロックライン毎に解析結果記憶装置20に格納する。発生符号量予測装置21は、符号化途中ピクチャの未符号化領域の発生符号量を推定するときに、解析結果記憶装置20に格納された動き量に基づいて、未符号化領域の動き量を算出する。ここで、図14Aでは、図6と同様に、1枚のピクチャにマクロブロックラインがNラインある場合について例示している。また、図14では、図6の右図と同様に、符号化途中ピクチャのaで示す範囲は、符号化済み領域であり、符号化途中ピクチャのbで示す範囲は、未符号化領域である。
発生符号量予測装置21は、例えば、図14Aに示すように、符号化途中ピクチャの未符号化領域に含まれるマクロブロックラインの動き量の平均値を、符号化途中ピクチャの未符号化領域の動き量として算出する。なお、未符号化領域の動き量の算出方法は、これに限られない。例えば、符号化途中ピクチャの未符号化領域に含まれるマクロブロックラインの動き量の総和を、未符号化領域の動き量として算出してもよい。例えば、符号化途中ピクチャの未符号化領域に含まれる全てのマクロブロックラインではなく、その中から任意に選択した2つ以上のマクロブロックの平均値又は総和を、未符号化領域の動き量として算出してもよい。例えば、符号化途中ピクチャの未符号化領域に含まれる全てのマクロブロックラインの中間に位置するマクロブロックラインの動き量を、未符号化領域の動き量として算出してもよい。
図14Aに示すように、未符号化領域に垂直下方向の動きがある場合、図14Bに示すように、符号化途中ピクチャの未符号化領域における画像は、符号化済みピクチャにおいて、ピクチャ中の同じ位置に存在しないことになる。つまり、符号化済みピクチャのうち、符号化途中ピクチャの未符号化領域に対応する領域は、符号化途中ピクチャの未符号化領域よりも、垂直上方向にずれた位置に存在することになる。なお、厳密には、符号化途中ピクチャが、符号化済みピクチャよりも後に表示されるピクチャである場合に、このような関係となる。
符号化途中ピクチャの符号化済み領域と、符号化済みピクチャのうち、符号化途中ピクチャの符号化済み領域に対応する領域との間も、同様のことが言える。符号化途中ピクチャの未符号化領域と、それに対応する領域のそれぞれは、符号化途中ピクチャの符号化済み領域と、それに対応する領域のそれぞれと隣接するからである。この場合、図14Bに示すように、符号化途中ピクチャの符号化済み領域における画像は、符号化済みピクチャ内に全てが収まっていなかったことになる。
ここで、図14Bにおいて、符号化済みピクチャのa'で示す範囲は、符号化済みピクチャのうち、符号化途中ピクチャの符号化済み領域であるaで示す範囲に対応する領域であり、符号化済みピクチャのb'で示す範囲は、符号化済みピクチャのうち、符号化途中ピクチャの未符号化領域であるbで示す範囲に対応する領域である。そして、a'は、aよりも短くなり、b'は、bと同じ長さとなる。つまり、未符号化領域と、未符号化領域に対応する領域は、ピクチャ中の異なる位置における同一面積の領域となるが、符号化済み領域と、符号化済み領域に対応する領域とは、ピクチャ中の異なる位置における異なる面積の領域となる。
そこで、発生符号量予測装置21は、符号化途中ピクチャの未符号化領域に動きがあると判定した場合は、符号化済みピクチャの発生符号量を補正して、符号化途中ピクチャの未符号化領域の発生符号量を推定する。
具体的には、符号化途中ピクチャの符号化済み領域の発生符号量がSaである場合、符号化途中ピクチャの未符号化領域の発生符号量Sbを次式(6)によって推定する。ここで、S'aは、符号化済みピクチャのa'で示す範囲の発生符号量であり、S'bは、符号化済みピクチャのb'で示す範囲の発生符号量である。
まず、このように、符号化途中ピクチャのbで示す範囲が、符号化済みピクチャではb'で示す範囲に存在していたと考えられる場合、符号化済みピクチャのb'で示す範囲の発生符号量を、符号化途中ピクチャの未符号化領域であるbで示す範囲に対応する領域の発生符号量として使用する。つまり、符号化途中ピクチャの未符号化領域に対応する領域の位置として、未符号化領域の動き量に応じて補正された位置が決定される。符号化途中ピクチャの符号化済み領域に対応する位置についても同様である。
しかし、上述したように、符号化途中ピクチャのaで示す範囲は、符号化済みピクチャではa'で示す範囲までしか収まっていない。そのため、符号化済みピクチャのa'で示す範囲当たりの発生符号量S'aを、aで示す範囲当たりの発生符号量に補正して、推定符号量Sbを算出するようにしている。
なお、上述した式(6)は、符号化途中ピクチャのaで示す範囲当たりの発生符号量Saを、a'で示す範囲当たりの発生符号量に補正して、推定符号量Sbを算出する次式(7)と等価となる。
よって、符号化途中ピクチャの未符号化領域に動きがある場合における未符号化領域の推定符号量Sbは、式(6)及び式(7)のいずれの式によって推定してもよい。つまり、符号化途中ピクチャの未符号化領域に動きがある場合、上述した式(6)又は式(7)のように、発生符号量Sa及び発生符号量S'aのいずれか一方の発生符号量を、他方の発生符号量が算出された面積と同一面積当たりの発生符号量となるように補正して、未符号化領域の発生符号量Sbを推定する。
このように、事前解析結果を利用することで、符号化済みピクチャと符号化途中ピクチャとの間に動きがある場合であっても、適切な領域における発生符号量を使用して、未符号化領域の発生符号量を推定することができる。また、事前解析結果を利用することで、符号化済みピクチャと符号化途中ピクチャとの間に動きがある場合であっても、比較対象となる発生符号量を同一面積当たりの発生符号量に補正して、未符号化領域の発生符号量を推定することができる。そのため、本実施の形態4によれば、動きがある場合であっても、精度の低下を抑制しつつ発生符号量を推定することが可能となる。
続いて、図15を参照して、本発明の実施の形態4にかかる画像符号化装置4の処理について説明する。図15は、本発明の実施の形態4にかかる画像符号化装置4の処理を示すフローチャートである。ここでは、エンコーダ30における符号量制御パラメタの最適化を例に挙げて説明する。
事前解析装置19は、入力画像として入力されたピクチャの動き量をマクロブロックライン毎に算出する(S31)。なお、ステップS32、33については、実施の形態1におけるステップS1、S2と同様であるため、説明を省略する。
全てのマクロブロックラインを符号化していない場合(S33:NO)、発生符号量予測装置21は、符号化途中ピクチャの未符号化領域に動きがあるか否かを判定する(S34)。ここで、解析結果記憶装置20には、符号化途中ピクチャに含まれるマクロブロックラインのそれぞれにおける動き量が格納されていることになる。そのため、発生符号量予測装置21は、解析結果記憶装置20に格納されたマクロブロックライン毎の動き量に基づいて、符号化途中ピクチャの未符号化領域の動き量を算出する。具体的には、発生符号量予測装置21は、符号化途中ピクチャの未符号化領域のマクロブロックラインの動き量の平均値を、符号化途中ピクチャの未符号化領域の動き量として算出する。発生符号量予測装置21は、算出した未符号化領域の動き量が動きを示している場合、未符号化領域に動きがあると判定する。
未符号化領域に動きがないと判定した場合(S34:No)、発生符号量予測装置21は、実施の形態1にかかるステップS3と同様に、符号化済みピクチャの発生符号量に基づいて、符号化途中ピクチャの未符号化領域の推定符号量を推定する(S35)。
未符号化領域に動きがあると判定した場合(S34:Yes)、発生符号量予測装置21は、符号化途中ピクチャの未符号化領域の動き量に応じて、符号化済みピクチャのうち、符号化途中ピクチャの符号化済み領域及び未符号化領域のそれぞれに対応する領域の位置を補正する。そして、発生符号量予測装置21は、上述した式(6)又は(7)によって、発生符号量S'a及び発生符号量Saが同一面積当たりの発生符号量となるように補正した上で、発生符号量S'a及びS'bの比率に基づいて、発生符号量Saから未符号化領域の発生符号量Sbを推定する(S36)。
ここで、未符号化領域に動きがある場合において、符号化済みピクチャのうち、符号化途中ピクチャの未符号化領域に対応する領域の動き量に応じた位置を特定する方法は、どのような方法であってもよい。一例としては、符号化途中ピクチャの未符号化領域の動き量に基づいて、未符号化領域とそれに対応するべき領域とが何マクロブロックライン分ずれているかを導き出すことができる情報を画像符号化装置4が有する記憶装置(図示せず)に予め用意しておく。この情報は、例えば、動き量からマクロブロックライン数を得ることができるテーブル又は関数等としてよい。そして、発生符号量予測装置21が、この情報を参照して、未符号化領域の動き量から、未符号化領域に対応する領域の動き量に応じた位置を特定できるようにする。なお、発生符号量については、実施の形態1と同様に、対象とする領域のマクロブロックラインの発生符号量の総和によって算出することができる。
発生符号量予測装置21は、推定した未符号化領域の発生符号量Sbを示す推定符号量情報を符号量制御装置13に出力する。以降、ステップS37〜S39の処理については、実施の形態1におけるステップS4〜S6と同様であるため、説明を省略する。
以上に説明したように、本実施の形態4では、符号化中フレームの動き量に基づいて、符号化中フレームに動きがあると判定した場合、符号化済み領域及び未符号化領域のそれぞれに対応する領域の位置を、符号化中フレームにおける動き量に応じて補正するようにしている。
これによれば、符号化中フレームと、符号化中フレームと相関の高い符号化済みフレームとの間に動きがある場合であっても、符号化済みフレームの符号量分布の適切な位置を参考にして、未符号化領域の符号量を高い精度で推定することが可能となる。したがって、高い精度で推定された未符号化領域の符号量に基づいて、適切な符号量制御パラメタを決定することができるため、符号化したときにおけるフレームの画質の劣化を抑制することができる。
なお、上述した本実施の形態4では、未符号化領域に垂直下方向に動きがある場合について例示したが、図16Aに例示するように、未符号化領域に垂直上方向に動きがある場合についても、同様に、符号化済みピクチャの発生符号量を補正して、符号化途中ピクチャの未符号化領域の発生符号量を推定するようにしてもよい。図16Aに示すように、未符号化領域に垂直上方向の動きがある場合、図16Bに示すように、符号化途中ピクチャのbで示す範囲が、符号化済みピクチャではb'で示す範囲までしか収まっていないことになる。ここで、N、a、b、a'、及びb'については、図14A及び図14Bと同様であるため、説明を省略する。ただし、図16Bでは、a'は、aと同じ長さとなり、b'は、bよりも短くなる。
このような場合、符号化途中ピクチャの未符号化領域の発生符号量Sbを次式(8)によって推定する。Sa、S'a、及びS'bについては、式(6)及び(7)と同様であるため、説明を省略する。
このように、符号化済みピクチャのb'で示す範囲当たりの発生符号量S'bを、bで示す範囲当たりの発生符号量に補正して、推定符号量Sbを算出するようにすることもできる。
つまり、実施の形態4にかかる、動きがある場合における未符号化領域の符号量推定方法は、符号化途中ピクチャの符号化済み領域の発生符号量と、符号化途中ピクチャの符号化済み領域に対応する領域の発生符号量とが同一面積当たりの発生符号量となるように、いずれかの発生符号量を補正するものに限られない。符号化途中ピクチャの未符号化領域の発生符号量と、符号化途中ピクチャの未符号化領域に対応する領域の発生符号量とが同一面積当たりの発生符号量となるように、符号化途中ピクチャの未符号化領域に対応する領域の発生符号量を補正するようにしてもよい。
また、これらの補正は、上述した実施の形態4のように、完全な同一面積当たりの発生符号量に補正するものに限られず、符号量制御に影響を与えないと考えられる程度に略同一面積当たりの発生符号量に補正するようにしてもよい。一例としては、それぞれの面積の差が、いずれかの面積の数パーセント以内となる程度に略同一面積当たりの発生符号量に補正するようにしてもよい。
また、上述した本実施の形態4では、符号化途中ピクチャの未符号化領域の動き量を算出して使用するようにしているが、これに限られない。例えば、同様にして、符号化途中ピクチャ全体の動き量、又は、符号化途中ピクチャの符号化済みピクチャの動き量を算出して使用するようにしてもよい。
なお、本実施の形態4は、実施の形態3と組み合わせて実施するようにしてもよい。例えば、発生符号量予測装置21は、シーンの性質が変化したと判定した場合に(S24:No)、未符号化部分に動きがあるか否かを判定するようにし(S34)、判定結果に応じて上述の処理を実行するようにする(S35、S36)。この場合、事前解析装置19は、特徴量とともに動き量も算出するようにする。
発明の実施の形態5.
続いて、図17を参照して、本発明の実施の形態5にかかる画像符号化装置5の構成について説明する。図17は、本発明の実施の形態5にかかる画像符号化装置5の構成図である。なお、実施の形態1〜4と同様の構成要素については、同一の符号を付し、説明を省略する。
画像符号化装置5は、フレームバッファ10、発生符号量記憶装置11、ストリーム結合装置14、事前解析装置19、解析結果記憶装置20、発生符号量予測装置22、バッファ占有量予測装置23、符号量制御装置24、エンコーダ30〜33、及びストリームバッファ40〜43を有する。
発生符号量予測装置22は、実施の形態3にかかる発生符号量予測装置18と同様にして、符号化途中ピクチャの未符号化領域の発生符号量を推定するが、さらに符号化途中ピクチャの符号化済み領域の発生符号量と、符号化途中ピクチャの符号化済み領域及び未符号化領域のそれぞれの発生符号量及び推定符号量とをバッファ占有量予測装置23に出力する。ここで、発生符号量予測装置22は、バッファ占有量の予測に必要な発生符号量を発生符号量記憶装置11から取得してバッファ占有量予測装置23に出力する。
バッファ占有量予測装置23は、発生符号量予測装置22から出力された発生符号量及び推定符号量に基づいて、デコーダ側の仮想バッファのバッファ占有量の推移を予測する。ここで、デコーダ側の仮想バッファとは、例えば、MPEG−2及びH.264等の動画像符号化規格において規定される仮想デコーダ・モデルにおけるバッファである。なお、バッファ占有量予測装置23は、直接、発生符号量記憶装置11から発生符号量を取得するようにしてもよい。
符号量制御装置24は、発生符号量予測装置22によって推定された未符号化領域の推定符号量と、未符号化領域に割り当て可能な目標符号量との差分に加えて、さらにバッファ占有量予測装置23によって予測されたデコーダ側の仮想バッファのバッファ占有量の推移に基づいて、符号量制御パラメタを決定する。
続いて、図18を参照して、本発明の実施の形態5にかかるバッファ占有量の推定方法について説明する。図18は、本発明の実施の形態5にかかるバッファ占有量の推定方法によって推定されたデコーダ側の仮想バッファのバッファ占有量を示す図である。なお、図18では、図2におけるピクチャ5の符号化終了時点において、デコーダ側の仮想バッファのバッファ占有量を推定する場合について例示している。
バッファ占有量予測装置23は、図2のピクチャ5の符号化終了時点で、符号化途中ピクチャであるピクチャ6〜9のそれぞれの符号化終了時点における、デコーダ側の仮想バッファのバッファ占有量を次式(9)〜(12)によって推定する。ここで、B(x)は、ピクチャxの符号化終了時点におけるデコーダ側の仮想バッファのバッファ占有量である。言い換えると、B(x)は、デコーダ側において仮想バッファからピクチャxを引き抜く前におけるバッファ占有量である。S(x)は、ピクチャxの発生符号量である。Sa(x)は、ピクチャxの符号化済み領域の発生符号量であり、Sb(x)は、ピクチャxの未符号化領域の発生符号量である。Rtは、予め定められたビットレートRと、ピクチャ符号化間隔Δtとを乗じた値である。
図2におけるピクチャ5の符号化終了時点では、図3に示したように、ピクチャ6〜8のそれぞれは符号化途中である。そのため、上述した式(9)〜(12)のように、ピクチャ6〜8のそれぞれの未符号化領域の推定符号量Sb(6)、Sb(7)、Sb(8)と、ピクチャ5〜8のそれぞれの符号化済み領域の発生符号量S(5)、Sa(6)、Sa(7)、Sa(8)とに基づいて、符号化途中ピクチャ6〜8、及び、次に符号化を開始するピクチャ9のそれぞれの符号化終了時点におけるバッファ占有量B(6)〜B(9)の推移を推定する。
さらに、式(9)〜(12)は、次式(13)として表すことができる。式(13)は、あるピクチャnの符号化終了時点において、そのピクチャn以降に符号化が開始された符号化途中ピクチャ、又は、次に符号化を開始するピクチャであるピクチャiの符号化終了時点におけるデコーダ側の仮想バッファのバッファ占有量を算出する式となる。なお、式(13)に上述した式(9)のケースを当てはめた場合は、(Sa(5)+Sb(5))=S(5)となる。ピクチャ5は、符号化が終了しているため、Sa(5)=S(5)となり、Sb(5)=0となるからである。また、B(1)は、仮想バッファサイズの大きさまでの値で任意の値に設定する。例えば、仮想バッファサイズから適当なマージンを差し引いた値にする。
符号量制御装置24は、バッファ占有量予測装置23によって推定されたバッファ占有量に基づいて、仮想バッファが破綻しないように符号量制御を行う。例えば、推定されたバッファ占有量が大きく、オーバーフローが発生する可能性がある場合は、発生符号量を増加させるように制御する。逆に、推定されたバッファ占有量が小さく、アンダーフローが発生する可能性がある場合は、発生符号量を低減するように制御する。発生符号量の制御は、上述したように、量子化パラメタを調整することによって行う。
符号量制御装置24は、オーバーフローが発生する可能性がある否かを、例えば、B(i)が、予め定められた仮想バッファのバッファサイズより大きいか否か判定する。つまり、符号量制御装置24は、B(i)がバッファサイズより大きい場合に、オーバーフローが発生する可能性があると判定する。また、オーバーフローが発生する可能性がある否かは、B(i)とバッファサイズとの差分が予め定めた閾値よりも小さいか否かによって判定するようにしてもよい。つまり、B(i)とバッファサイズとの差分が予め定めた閾値よりも小さい場合に、オーバーフローが発生する可能性があると判定する。
また、符号量制御装置24は、アンダーフローが発生する可能性がある否かを、例えば、仮想バッファからピクチャを引き抜いた後におけるバッファ占有量が、0未満となるか否かによって判定する。つまり、符号量制御装置24は、仮想バッファからピクチャを引き抜いた後のバッファ占有量が、バッファサイズより小さい場合に、アンダーフローが発生する可能性があると判定する。また、アンダーフローが発生する可能性がある否かは、仮想バッファからピクチャ引き抜いた後のバッファ占有量が予め定めた閾値よりも小さいか否かによって判定するようにしてもよい。つまり、仮想バッファからピクチャ引き抜いた後のバッファ占有量が予め定めた閾値よりも小さい場合に、アンダーフローが発生する可能性があると判定する。
ここで、仮想バッファからのピクチャ引き抜き後のバッファ占有量は、B(i)−(Sa(i)+Sb(i))となる。つまり、仮想バッファからのピクチャ引き抜き後のバッファ占有量は、次式(14)によって表すことができる。
よって、符号量制御装置24は、例えば、未符号化領域の推定符号量が、未符号化領域の目標符号量よりも大きい場合であっても、オーバーフローが発生する可能性があるときは、発生符号量を低減させないように制御する。また、符号量制御装置24は、例えば、未符号化領域の推定符号量が、未符号化領域の目標符号量よりも小さい場合であっても、アンダーフローが発生する可能性があるときは、発生符号量を増加させないように制御するようにしてもよい。
なお、本実施の形態5にかかる画像符号化装置5におけるその他の符号化における処理内容については、図12を参照して説明した実施の形態3にかかる画像符号化装置3の処理と同様となるため、説明を省略する。
以上に説明したように、本実施の形態5では、バッファの占有量の推移において、バッファから符号化中フレームを引き抜いたときのバッファの占有量を、符号化中フレームの符号化済み領域の符号量と、発生符号量予測装置22によってその符号化済み領域の符号量から推定された未符号化領域の符号量とに基づいて算出した符号化中フレームの符号量によって推定するようにしている。
これによれば、発生符号量が確定している符号化済み領域の発生符号量と、発生符号量予測装置22によって高い精度で推定された未符号化領域の推定符号量とに基づいて、ピクチャの発生符号量を高い精度で算出することができる。よって、仮想デコーダにおけるバッファの占有量の推移を高い精度で推定することができる。そのため、推定されたバッファ占有量の推移に基づいて、仮想デコーダにおけるバッファが破綻しないように、より正確に符号量制御を行うことができる。
つまり、MPEG−2及びH.264等の動画像符号化の規格に定められた仮想デコーダのバッファの制約を考慮して、規格に対応したビットストリームを生成することができる。言い換えると、規格の制約を順守しつつ、適切な符号量制御が可能となる。
なお、上述した本実施の形態5では、発生符号量予測装置22が、実施の形態3にかかる発生符号量予測装置18と同様にして、符号化途中ピクチャの未符号化領域の発生符号量を推定する場合について例示したが、これに限られない。例えば、発生符号量予測装置22が、実施の形態1にかかる発生符号量予測装置12と同様に、符号化済みピクチャの発生符号量と、符号化途中ピクチャの符号化済み領域の発生符号量とに基づいて、符号化途中ピクチャの未符号化領域の発生符号量を推定するものであってもよい。また、発生符号量予測装置22が、実施の形態2にかかる発生符号量予測装置17と同様に、符号化途中ピクチャの符号化済み領域の発生符号量と、符号化途中ピクチャの特徴量とに基づいて、符号化途中ピクチャの未符号化領域の発生符号量を推定するものであってもよい。また、発生符号量予測装置22が、実施の形態4にかかる発生符号量予測装置21と同様に、符号化済みピクチャの発生符号量と、符号化途中ピクチャの符号化済み領域の発生符号量と、符号化途中ピクチャの動き量とに基づいて、符号化途中ピクチャの未符号化領域の発生符号量を推定するものであってもよい。
発明の実施の形態6.
続いて、図19を参照して、本発明の実施の形態6にかかる画像符号化装置6の構成について説明する。図19は、本発明の実施の形態6にかかる画像符号化装置6の構成図である。なお、実施の形態1〜5と同様の構成要素については、同一の符号を付して、説明を省略する。
画像符号化装置6は、フレームバッファ10、発生符号量記憶装置11、事前解析装置19、解析結果記憶装置20、発生符号量予測装置22、バッファ占有量予測装置23、符号量制御装置24、初期遅延量計算装置25、ストリーム修正位置記憶装置26、ストリーム結合装置27、エンコーダ30〜33、及びストリームバッファ40〜43を有する。
初期遅延量計算装置25は、デコーダ側の仮想バッファにおけるピクチャの初期遅延量の確定後に、確定した正しいピクチャの初期遅延量を計算する。初期遅延量計算装置25は、計算した正しい初期遅延量をストリーム結合装置27に出力する。
ストリーム修正位置記憶装置26は、ストリームバッファ40〜43上において、初期遅延量データの記録が開始されている位置を示す初期遅延量データ開始位置データと、初期遅延量データがとり得る最大のビット量を示す初期遅延量データビット量とが格納されている。ストリーム修正位置記憶装置26は、初期遅延量データ開始位置データ及び初期遅延量データビット量を記憶するための任意の記憶装置を含む。
ストリーム結合装置27は、実施の形態1〜5のそれぞれにおけるストリーム結合装置14と同様に、ストリームバッファ40〜43のそれぞれに記憶されたビットストリームを結合して1つのビットストリームを生成するが、さらにビットストリーム中の初期遅延量データを、初期遅延量計算装置25から出力された正しい初期遅延量に置き換える。ストリーム結合装置27は、ビットストリームを結合するための作業用の任意の記憶装置を含むようにしてもよい。
続いて、図20及び図21を参照して、MPEG−2及びH.264等の動画符号化規格においてビットストリームを生成する際における問題点について説明する。図20は、MPEG−2等の動画符号化規格における1ピクチャのビットストリームの構成を示す図である。図21は、図2に示す場合において、ピクチャ5の符号化終了時点で推定された仮想バッファのバッファ占有量の推移と、ピクチャ8の符号化終了によって確定した実際の仮想バッファのバッファ占有量の推移とを示す図である。
図20に示すように、MPEG−2では、1ピクチャのビットストリームには、ピクチャヘッダと、マクロブロック符号領域とが含まれる。ピクチャヘッダには、初期遅延量データが格納される初期遅延データ領域が含まれている。初期遅延量データは、仮想デコーダ・モデルにおけるピクチャの初期遅延量を示す。マクロブロック符号領域は、符号化されたマクロブロックのデータが格納される。つまり、マクロブロック符号領域には、ピクチャを符号化したデータが格納される。H.264でも同様に、補助的な付加情報として初期遅延量データを含むデータ領域が、マクロブロック符号領域の前に配置される。なお以下の説明では、マクロブロック符号領域の前に配置されており、H.264で定義されているピクチャパラメタセットや補助的な付加情報等のように、ピクチャ層に関する情報が符号化されたデータを含むデータ領域を、ピクチャヘッダと呼ぶことにする。
このように、MPEG−2及びH.264等の動画符号化規格では、初期遅延量データがピクチャヘッダに含まれている。また、このような動画符号化規格では、初期遅延量データは、予め定められたビット数で表現される固定長のデータか、あるいは、初期遅延量を表現可能な最小限のビット数で表現される可変長のデータとなる。初期遅延量データが可変長のデータとして表現される場合、初期遅延量データ領域は、初期遅延量データに応じたサイズとなる。したがって、初期遅延量データ領域が含まれるピクチャヘッダも、初期遅延量データに応じたサイズとなる。
ここで、規格では、ピクチャヘッダは、1バイト単位でアライメントされる。つまり、ピクチャヘッダのビット量は、8ビット(1バイト)の倍数となる。例えば、上述したピクチャ層に関する情報のような、ピクチャヘッダに含まれるデータが87ビットで表現可能な場合、ピクチャヘッダにおける残りの1ビットは、スタッフィングビットで埋められる。つまり、ピクチャヘッダのうち、スタッフィングビットを除いたデータが、ピクチャの復号及び再生等に利用される有効なデータとなる。以下、ピクチャヘッダのうち、有効なデータについて「ピクチャヘッダデータ」と呼ぶことにする。もちろん、ピクチャヘッダのサイズと、ピクチャヘッダデータのサイズが等しくなる場合もある。この場合は、ピクチャヘッダにスタッフィングビットは含まれない。なお、初期遅延量データ領域の開始位置は、8ビット(1バイト)単位の位置とは限らない。言い換えると、初期遅延量データ領域の開始位置は、アライメント境界になるとは限らない。
ここで、エンコーダによってビットストリームを生成するときに、ビットストリーム中のデータを出力順に生成していくことで、ビットストリームを生成する処理を単純にすることができる。具体的には、まず、ピクチャヘッダを作成して、ピクチャヘッダに続けて、マクロブロックを符号化したデータを、マクロブロックを符号化する毎につなげていく。このように最初にピクチャヘッダを作成しておけば、後は符号化したマクロブロックをつなげていくのみで、ビットストリームを生成することができる。
しかし、図2に示す時刻tのような、エンコーダ30でのピクチャ5の符号化終了し、ピクチャ9の符号化を開始する前の時点では、ピクチャ9の符号化終了時点の仮想バッファのバッファ占有量が確定していない。言い換えると、デコーダ側において仮想バッファからピクチャ9を引き抜いてデコードする前のデコーダ側の仮想バッファのバッファ占有量が確定していない。よって、この時点では、確定したピクチャ9の初期遅延量を、ピクチャヘッダに格納することはできない。ここで、ピクチャ9の符号化終了時における仮想バッファのバッファ占有量は、ピクチャ8の符号化終了時点で確定する。具体的には、図21に示すように、ピクチャ8の符号化終了時点には、ピクチャ8の符号化終了時点におけるバッファ占有量B(8)が分かり、ピクチャ8の発生符号量S(8)も確定している。そのため、後述するように、予め定められたビットレートによって、確定したピクチャ9の符号化終了時における仮想バッファのバッファ占有量を算出することができるからである。
そこで、ピクチャ5の符号化が終了し、ピクチャ9の符号化を開始する前の時点では、ピクチャ9の初期遅延量を推定してピクチャ9のピクチャヘッダに格納しておき、ピクチャ8の符号化が終了した時点で、ピクチャ9のピクチャヘッダに格納された推定初期遅延量を、確定した正しい初期遅延量に置き換える方法も考えられる。
しかし、図21に示すように、推定した初期遅延量と、正しい初期遅延量とは、必ずしも同じ値となるとは限らない。つまり、推定した初期遅延量を示す初期遅延量データと、正しい初期遅延量を示す初期遅延量データとで、初期遅延量データのサイズが異なってしまう場合がある。この場合、上述した方法では、ピクチャヘッダのサイズが変わってしまうため、それに合わせてビットストリームにおけるピクチャヘッダ及びマクロブロック符号領域の配置を再構成して、ビットストリームのサイズを変更する必要がでてしまうという問題がある。そのため、複数のエンコーダで並列にビットストリームを生成した場合に、それらのビットストリームを単純に結合するのみで1つのビットストリームを生成することができなくなってしまう。つまり、ビットストリームを生成する処理が複雑になってしまうという問題がある。
そこで、本実施の形態6では、初期遅延量データ領域を、初期遅延量データがとり得る最大値の初期遅延量データビット量で確保しておく。つまり、ピクチャヘッダを、ピクチャヘッダがとり得る最大サイズとしておく。そして、正しい初期遅延量が確定した後に、正しい初期遅延量を示す初期遅延量データで置き換えるようにする。このときに、必要に応じてスタッフィングビットをピクチャヘッダに追加的に含めるようにすることで、初期遅延量データの置き換え前後で、ピクチャヘッダのサイズを同一サイズに維持するようにする。以下、エンコーダ30において生成されるピクチャ9のビットストリームを例に挙げて説明するが、エンコーダ30〜33のそれぞれにおいて生成される他のピクチャのビットストリームについても同様の処理が行われる。
図21を参照して説明すると、エンコーダ30は、ピクチャ9の符号化開始時には、ピクチャ9のピクチャヘッダの初期遅延量データ領域を、初期遅延量データがとり得る最大のサイズで確保しておく。つまり、エンコーダ30は、ストリームバッファ40にピクチャヘッダを格納する際に、初期遅延量データがとり得る最大のサイズの仮の初期遅延量データを格納する。仮の初期遅延量データとしては、例えば、スタッフィングビットで埋められたデータを使用する。エンコーダ30は、ピクチャヘッダに続けてフレームを符号化したデータを、フレームの符号化に応じて順次、ストリームバッファ40に格納していく。
その後、ピクチャ8の符号化が終了したとき、ピクチャ9の符号化終了時点のデコーダ側の仮想バッファのバッファ占有量が確定する。そのため、ピクチャ8の符号化が終了したときに、初期遅延量計算装置25は、ピクチャ9の正しい初期遅延量を計算する。
なお、このときのピクチャ9の初期遅延量D(9)は、次式(15)によって算出する。また、式(16)中のピクチャ9の符号化終了時点におけるバッファ占有量B(9)は、次式(16)によって算出する。ここで、Rは、予め定められたビットレートであり、S(x)は、ピクチャxの発生符号量であり、Rtは、ビットレートRと、ピクチャ符号化終了間隔Δtとを乗じた値である。なお、初期遅延量計算装置25は、ピクチャ8の発生符号量S(8)を発生符号量記憶装置11から取得する。
さらに、式(15)は、次式(17)で表すことができ、式(16)は、次式(18)で表すことができる。iは、ピクチャ番号である。例えば、D(i)は、ピクチャiの初期遅延量を示す。なお、B(i−1)は、ピクチャi−2の符号化が終了したときに算出されていることになるため、それを使用すればよい。また、B(1)は、仮想バッファサイズの大きさまでの値で任意の値に設定する。例えば、仮想バッファサイズから適当なマージンを差し引いた値にする。
初期遅延量計算装置25は、計算したピクチャ9の正しい初期遅延量を、ストリーム結合装置27に出力する。
一方、ストリーム修正位置記憶装置26は、発生符号量記憶装置11に格納された発生符号量に基づいて、ストリームバッファ40におけるピクチャ9の初期遅延量データ開始位置を算出する。ここで、ストリームバッファ40〜43のそれぞれは、ビットストリームが生成順に循環的に記憶されていくバッファであるものとする。この場合、ピクチャ9の1つ前に符号化されるピクチャ5の発生符号量が分かれば、ストリームバッファ40におけるピクチャ9のピクチャヘッダの開始位置が分かる。その理由は、ピクチャ5の発生符号量が分かれば、ピクチャ5のビットストリームのマクロブロック符号領域のサイズが分かり、それにピクチャヘッダのサイズを加算することによってピクチャ5のビットストリームのサイズが分かるからである。つまり、ピクチャ9のピクチャヘッダの開始位置となる、ピクチャ5のビットストリームの終端位置が分かるからである。なお、ピクチャヘッダのサイズは、ストリーム修正位置記憶装置26に予め記憶しておけばよい。
このようにして、ストリーム修正位置記憶装置26は、発生符号量記憶装置11に格納されたピクチャ5の発生符号量を参照することで、ピクチャ9のピクチャヘッダの開始位置を算出する。そして、ストリーム修正位置記憶装置26は、算出したピクチャ9のピクチャヘッダの開始位置を基準として、ピクチャ9の初期遅延量データ開始位置を算出する。ストリーム修正位置記憶装置26は、算出したピクチャ9の初期遅延量データ開始位置を示す初期遅延量データ開始位置データを記憶する。なお、初期遅延量データ開始位置は、初期遅延量データ開始位置のピクチャヘッダ先頭からの相対的な位置を、ストリーム修正位置記憶装置26に予め記憶しておくことによって算出可能とする。また、初期遅延量データビット量についても、初期遅延量データがとり得る最大値として固定的に予め決まっているため、ストリーム修正位置記憶装置26に予め記憶しておけばよい。
そして、ストリーム結合装置27は、ストリーム結合時に、ストリーム修正位置記憶装置26に記憶された、ピクチャ9の初期遅延量データ開始位置データ及び初期遅延量データビット量を取得する。ストリーム結合装置27は、初期遅延量データ開始位置データが示すピクチャ9の初期遅延量データ開始位置から、初期遅延量データビット量分の領域のデータを、ピクチャ9の初期遅延量データ領域として特定する。ストリーム結合装置27は、特定した領域におけるピクチャ9の初期遅延量データを、初期遅延量計算装置25から出力されたピクチャ9の正しい初期遅延量を示す初期遅延量データに置き換える。
ここで、ストリーム結合装置27は、正しい初期遅延量データの先頭が、初期遅延量データ開始位置に位置するように、初期遅延量データ開始位置から正しい初期遅延量データを配置する。このとき、置き換え後の初期遅延量データのサイズが、置き換え前の初期遅延量データのサイズよりも小さくなる場合、単純に初期遅延量データのみを置き換えるようにすると、初期遅延量データと、初期遅延量データに後続するデータとの間で隙間が発生してしまう。よって、この場合、データ間の隙間の発生を防止するために、ストリーム結合装置27は、後続するデータを初期遅延量データの直後に続くように移動する。
しかし、そのようにすると、ピクチャヘッダデータの終端が、前方に移動することになる。そのため、ストリーム結合装置27は、ピクチャヘッダにおいて、新たなピクチャヘッダデータの終端以降に、移動前のデータの一部が残らないようにするため、新たなピクチャヘッダデータの終端から、少なくともデータの移動量に相当するビット数分のビットをスタッフィングビットに置き換える。つまり、置き換え後の初期遅延量データのサイズが置き換え前の初期遅延量データよりも小さくなる場合は、置き換え後の初期遅延量データの終端から、置き換え前のピクチャヘッダデータの終端までのデータも置き換える必要がある。
なお、ストリーム結合装置27は、アライメント単位で、仮の初期遅延量データを、正しい初期遅延量データに置き換える。ここで、置き換え前後で初期遅延量データのサイズが変わらない場合、データを置き換える範囲は、アライメント単位のサイズであり、かつ初期遅延量データを含む範囲であれば、どのような範囲としてもよい。
例えば、初期遅延量データのサイズが16ビット(2バイト)であり、初期遅延量データ領域の開始位置がアライメント境界に位置する場合、最小限のサイズで初期遅延量データを置き換えるのであれば、16ビット(2バイト)の初期遅延量データのみを置き換えればよい。また、初期遅延量データのサイズが16ビット(2バイト)であるが、初期遅延量データ領域の開始位置がアライメント境界に位置しない場合は、最小限のサイズで初期遅延量データを置き換えるのであれば、初期遅延量データを含む24ビット(3バイト)のデータを置き換えればよい。この場合、初期遅延量データが3つのアライメントに跨ることになるからである。さらに、この場合は、初期遅延量データを除いた合計8ビット(1バイト)分のデータは、置き換え前と同一のデータとすればよい。
また、これらの場合で、最小限のサイズ以外のサイズで初期遅延量データを置き換えるのであれば、例えば、初期遅延量データの開始位置から、ピクチャヘッダデータの終端までが含まれる範囲を置き換え対象としてもよく、ピクチャヘッダのうち、ピクチャヘッダデータ全体を置き換え対象としてもよく、ピクチャヘッダ全体を置き換え対象としてもよい。なお、ピクチャヘッダデータ全体又はピクチャヘッダ全体を置き換え対象とする場合、例えば、ストリーム修正位置記憶装置26に、初期遅延量データ開始位置に代えて、ピクチャヘッダ開始位置を示すデータを記憶することで、ストリーム結合装置27が置き換え対象となる領域を特定するようにする。
なお、上述したように、置き換え後に初期遅延量データのサイズが小さくなる場合は、置き換え前のピクチャヘッダデータの終端までデータを置き換える必要がある。そのため、この場合、データを置き換える範囲は、アライメント単位のサイズであり、初期遅延量データの先頭から、置き換え前のピクチャヘッダデータの終端までのデータを含む範囲であれば、どのようなサイズとしてもよい。
ここで、置き換え後に初期遅延量データのサイズが小さくなる場合も、そうでない場合も、置き換え前のピクチャヘッダデータの終端以降の範囲は、スタッフィングビットで埋められたままとなる。ただし、これは、ピクチャヘッダのサイズと、ピクチャヘッダデータのサイズとが等しくない場合に限る。また、置き換え後に初期遅延量データのサイズが小さくなる場合は、上述したように、置き換え前のピクチャヘッダデータが残らないようにスタッフィングビットへの置き換えが行われる。したがって、ピクチャヘッダのうち、スタッフィングビットで埋められた範囲を除いた範囲のピクチャヘッダデータを、正しい初期遅延量データを含むデータとして取得することができる。
なお、本実施の形態6にかかる画像符号化装置6におけるその他の符号化における処理内容については、図12を参照して説明した実施の形態3にかかる画像符号化装置3の処理と同様となるため、説明を省略する。
以上に説明したように、本実施の形態6によれば、エンコーダ30〜33のそれぞれは、フレームを符号化してストリームデータを生成するときに、初期遅延量データがとり得る最大のサイズの仮初期遅延量データを含めたピクチャヘッダをストリームバッファ40〜43のそれぞれに格納してから、当該フレームの符号化に応じて、当該フレームの符号化データを、ストリームバッファ40〜43のそれぞれに格納していくようにしている。そして、ストリーム結合装置27は、フレームの初期遅延量の確定後に、仮初期遅延量データを、確定した初期遅延量を示す初期遅延量データに置き換えるときに、前記置き換え後の初期遅延量データのサイズが前記置き換え前の仮初期遅延量データのサイズよりも減少する場合、減少するサイズ分のデータに代えてスタッフィングビットをヘッダデータに含めることで、前記初期遅延量データの置き換え前後でヘッダデータのサイズを同一とするようにしている。
これによれば、確定した正しい初期遅延量データに置き換えても、ピクチャヘッダのサイズが変わらないようにすることができる。そのため、ビットストリームにおけるピクチャヘッダ及びマクロブロック符号領域の配置を再構成して、ビットストリームのサイズを変更する必要がなく、ビットストリームを生成する処理を単純にすることができる。つまり、複数のエンコーダで並列にビットストリームを生成した場合に、それらのビットストリームを単純に結合するのみで1つのビットストリームを生成することができる。
なお、上述した実施の形態6では、仮の初期遅延量データとして、スタッフィングビットで埋められたデータを使用する場合について例示したが、これに限られない。例えば、推定した初期遅延量データを含む、初期遅延量データがとり得る最大のサイズのデータを、仮の初期遅延量データとしてもよい。なお、このときに、推定した初期遅延量データのサイズが、仮の初期遅延量データのサイズに満たない場合は、足りない分をスタッフィングビットで埋め合わせるようにすればよい。
なお、上述した本実施の形態6では、実施の形態5の構成に対して、さらに、初期遅延量計算装置25及びストリーム修正位置記憶装置26を有し、ストリーム結合装置14に代えてストリーム結合装置27を有する場合について例示したが、これに限られない。実施の形態1〜5のいずれか又はそれらのうちの任意の2つ以上の実施の形態の組み合わせに対して、同様に適用するようにしてもよい。
発明の実施の形態7.
続いて、図22を参照して、本発明の実施の形態7にかかる画像符号化装置7の構成について説明する。図22は、本発明の実施の形態7にかかる画像符号化装置7の構成図である。なお、実施の形態1〜6と同様の構成要素については、同一の符号を付して、説明を省略する。
本実施の形態7では、画像符号化装置7が、トランスコーダである場合について例示する。つまり、本実施の形態7では、画像符号化装置7に入力される入力画像が、符号化済みの画像である場合について例示する。入力画像は、例えば、MPEG−2及びH.264等の動画符号化規格に従って、符号化されている。本実施の形態7では、事前解析結果として、トランスコードにおけるデコードにおいて取得される情報を利用する。
画像符号化装置7は、フレームバッファ10、発生符号量記憶装置11、発生符号量予測装置22、バッファ占有量予測装置23、符号量制御装置24、初期遅延量計算装置25、ストリーム修正位置記憶装置26、ストリーム結合装置27、デコーダ28、デコード情報記憶装置29、エンコーダ30〜33、及びストリームバッファ40〜43を有する。
デコーダ28は、入力画像を復号化する。デコーダ28は、入力画像の復号化前に、入力画像の復号化単位毎の符号量を、特徴量としてデコード情報記憶装置29に格納する。ここで、復号化単位とは、例えば、マクロブロックライン、又は、マクロブロックペアラインである。また、入力画像がMPEG−2及びH.264等の動画符号化規格に従って符号化されている場合、入力画像には、マクロブロック毎の動き量を示す情報が含まれている。この情報は、例えば、復号処理において補償フレーム間予測に使用される動きベクトルである。デコーダ28は、その情報に基づいて、1画像を予め定めた大きさに分割した単位毎に動き量を算出してデコード情報記憶装置29に格納する。具体的には、例えば、マクロブロックライン単位、又は、マクロブロックペアライン単位毎の動き量が格納される。
デコード情報記憶装置29は、入力画像の特徴量が事前解析結果として一時的に記憶される。また、デコード情報記憶装置29は、入力画像の動き量が一時的に記憶される。デコード情報記憶装置29は、特徴量及び動き量を記憶するための任意の記憶装置を含む。
したがって、発生符号量予測装置22がデコード情報記憶装置29に格納された特徴量を使用して、符号化途中ピクチャの未符号化領域の発生符号量を推定することになる。なお、本実施の形態7にかかる画像符号化装置7におけるその他の符号化における処理内容については、図12を参照して説明した実施の形態3にかかる画像符号化装置3の処理と同様となるため、説明を省略する。
なお、ここでは、実施の形態6の構成に対して、事前解析装置19及び解析結果記憶装置20に代えて、デコーダ28及びデコード情報記憶装置29を有する場合について例示したが、これに限られない。実施の形態2〜5のいずれか又はそれらのうちの任意の2つ以上の実施の形態の組み合わせに対して、同様に適用するようにしてもよい。
そのときに、例えば、実施の形態2及び3のように、符号量推定において動き量を使用しなくてもよいものに適用する場合は、デコーダ28において、動き量を検出しないようにしてもよく、実施の形態4のように、符号量推定において特徴量を使用しなくてもよいものに適用する場合は、デコーダ28において、特徴量を検出しないようにしてもよい。例えば、実施の形態4に適用した場合、発生符号量予測装置21は、デコード情報記憶装置29に格納された動き量を使用して、符号化途中ピクチャの未符号化領域の発生符号量を推定することになる。
以上に説明したように本実施の形態7では、複数のフレームからなる動画像データを再符号化する際に、復号前のフレームの符号量を、符号量推定に使用されるフレームの特徴量として検出するようにしている。また、復号処理により算出されるフレームの動き量を、符号量推定に使用されるフレームの動き量として検出するようにしている。
これによれば、動画像データを再符号化する際に取得される情報を、未符号化領域の発生符号量の推定に利用する特徴量及び動き量としているため、別途それらを検出する処理が不要となり、処理を簡略化することができる。
発明の他の実施の形態.
上述した各実施の形態では、一例として、4つのエンコーダを有するようにして、4並列でピクチャを符号化する場合について説明したが、これに限らない。例えば、2つのエンコーダを有するようにして2並列でピクチャを符号化するようにしてもよく、3つのエンコーダを有するようにして3並列でピクチャを符号化するようにしてもよい。また、4つ以上のエンコーダを有するようにして、4つ以上のピクチャを並列に符号化するようにしてもよい。
上述した各実施の形態では、推定符号量の算出及びそれに応じた符号量制御パラメタの更新を、マクロブロックライン又はマクロブロックペアラインを符号化する毎に実施する場合について例示したが、これに限られない。推定符号量の算出及び符号量制御パラメタの更新をするタイミングは、マクロブロックを符号化する毎としてもよく、複数のマクロブロックからなるマクロブロックグループを符号化する毎としてもよい。また、複数のマクロブロックラインからなるマクロブロックライングループを符号化する毎としてもよい。ピクチャを分割した単位のそれぞれで符号化の進行速度がほぼ同じとなるのであれば、ピクチャを任意に等分割した単位を符号化する毎としてもよい。また、これらのようなピクチャを符号化する区切りに限られず、任意のタイミングとしてもよい。
事前解析結果や符号化済み画像の発生符号量を記憶する単位は、符号化処理単位と一致していなくてもよい。つまり、マクロブロックライン単位や、マクロブロックペアライン単位に記憶しなくてもよい。例えば、これらの単位よりも画面の分割数が少なく、分割された領域が大きくなっていいてもよい。この場合、処理単位に応じて比例配分とする。
例えば、図23に示すように、符号化済みピクチャの発生符号量が、それぞれx、y、zで示す3つの領域毎に記憶するようにしてもよい。この場合に、xで示す範囲の発生符号量がSxであり、yで示す範囲の発生符号量がSyであり、zで示す範囲の発生符号量がzである場合、次式(19)及び(20)によって、aで示す範囲の発生符号量S'a及びbで示す範囲の発生符号量S'bを計算する。つまり、式(19)によって算出されたS'a及び式(20)によって算出されたS'bのそれぞれは、式(1)におけるS'a及びS'bとして使用される。
これによれば、1つの符号化済みピクチャに対して、発生符号量のデータを3つ記憶するのみで済む。つまり、発生符号量のデータをマクロブロックライン毎又はマクロブロックペアライン毎に記憶する必要がなくなる。よって、記憶するデータ量を少なくできるため、記憶装置の規模を小さくでき、画像符号化装置全体の規模を小さくできる。
これは、事前解析結果である特徴量についても同様に適用してもよい。また、特徴量について適用することによって、画像のスケーリングが行われてしまい、事前解析したときの画像サイズと、符号化するときの画像サイズが異なってしまった場合に対応することができる。つまり、特徴量を算出した後に、画像のアップスケーリングが行われて、その後、その画像の符号化を行う場合であっても、符号化途中ピクチャの符号化済み領域及び未符号化領域のそれぞれに対応する領域における発生符号量を正確に算出することができる。
また、図24に示すように、式(1)において、aで示す範囲を符号化途中ピクチャの符号化済み領域全体のうちの一部の領域とし、bで示す範囲を符号化途中ピクチャの未符号化領域全体のうちの一部の領域としてもよい。この場合、推定符号量Sbと比較する目標符号量は、未符号化領域に割り当て可能な目標符号量のうち、bで示す範囲当たりの符号量と比較する。つまり、符号化中フレームに含まれる未符号化領域と言った場合、符号化中フレームに含まれる未符号化領域全体のうちの一部の領域も含まれ、符号化中フレームに含まれる符号化済み領域と言った場合、符号化中フレームに含まれる符号化済み領域全体のうちの一部の領域も含まれる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。