近年、AV(Audio Visual)情報のデジタル化が進み、映像信号をデジタル化して取り扱うことのできる機器が広く普及しつつある。映像信号は膨大な情報量を有するので、記録媒体の記録容量又は伝送媒体の伝送効率などを考慮して情報量を削減しつつ符号化する必要がある。フレームでの発生符号量を、記録媒体又は伝送媒体などに応じた所定の符号量内に抑える符号量制御技術として、様々な方式が提案されている。
例えば、まず1フィールドのブロックに対して、ブロック毎に異なるM通りのスケールファクタα1〜αM(α1<α2<…<αM)により線形量子化し、2次元ハフマン符号化する。符号化することで得られる可変長データのブロック当りの符号量を算出する。そして、ブロック当りの符号量を用いて、各スケールファクタのM通りの符号量の積算値N1〜NMを計算する。符号量の積算値を用いて、スケールファクタと符号量との関係から1フィールドを所定の符号量とするためのスケールファクタを予測する。そして、予測されたスケールファクタで符号化対象画像を符号化する。このため、スケールファクタの予測が正しくない場合などに、発生符号量が目標符号量を超える可能性があった。
上記方式の課題を解決する方法として、符号化を進めていく中で、発生符号量と目標符号量との関係からスケールファクタを変更する方式が提案されている(例えば、特許文献1参照)。
これらの制御方式は、符号化対象画像に対して仮符号化を行い、仮符号化により得られたデータに基づき本符号化を行うもので、2パス符号化と呼ばれる技術に分類される。
2パス方式は、1回目(パス1)の仮符号化において、符号化システムが有するM個の量子化器からN個の代表量子化器を選択し、N個の代表量子化器を用いて符号化を行い、発生符号量を算出する。こうして算出したN個の代表量子化器での発生符号量から、M個の量子化器が発生する発生符号量、及び、マクロブロック毎の累積発生符号量を予測する。以降、M個の量子化器が発生する発生符号量の予測値を量子化器発生符号量予測と呼び、マクロブロック毎の累積発生符号量の予測値を累積発生符号量予測と呼ぶ。量子化器発生符号量予測及び累積発生符号量予測を合わせて、符号量予測モデルと呼ぶ。
続いて2回目(パス2)の符号化で、パス1で算出した符号量予測モデルを参照して符号化を行う。2パス方式は符号化対象画像の特徴に応じた制御ができる有効な方式である。
パス1での量子化器発生符号量予測のデータは、パス2の本符号化において発生する符号量の累積値である累計発生符号量が累積発生符号量予測から外れ、量子化器の変更が必要になったときに用いられる。
以下では、まず、従来方式による2パス符号化について説明する。
図8は、符号化対象画像の一例を示す図である。図8に示す符号化対象画像は、複数のオブジェクトを有している。以降の説明において、符号化システムが有することのできる量子化器の最大数を31個とし、パス1の仮符号化に用いる代表量子化器の個数を6個とする。なお、これは、MPEG2(Moving Picture Experts Group 2)規格による符号化方式を前提としたものである。具体的には、符号化システムは、量子化器Q1〜Q31を有する。量子化器Q1〜Q31は、この順で量子化ステップが大きくなるとする。すなわち、各量子化器で画像を符号化した場合に発生する発生符号量は、Q1〜Q31の順で小さくなる。
6個の代表量子化器をQ1、Q7、Q13、Q19、Q25、Q31とする。各代表量子化器の量子化ステップの大きさは、Q1<Q7<Q13<Q19<Q25<Q31である。
すなわち、図8に示す画像を各代表量子化器で量子化した場合、発生符号量は、Q1>Q7>Q13>Q19>Q25>Q31となる。
代表量子化器は、マクロブロック単位で切り替えられる。図9は、図8に示す符号化対象画像に対するマクロブロック分割を示す図である。説明の都合上、図9で示す矩形のブロック300の大きさでマクロブロックを表現する。また、左上隅のマクロブロックをMB0とし、図9に示すようなスキャン順でマクロブロック番号を定める。さらに、代表量子化器の数のマクロブロックを集めて1つの制御領域を構成する。ここでは、6つのマクロブロックを集めて1つの制御領域を構成する。
図10は、マクロブロックと制御領域との関係を示す図である。同図において6つのマクロブロックMB0、MB1、MB2、MB3、MB4、MB5を集めた制御領域をCZ0と呼ぶ。制御領域301はCZ0を示している。同様にMB6、MB7、MB8、MB9、MB10、MB11を集めた制御領域をCZ1と呼ぶ。制御領域302はCZ1を示している。MB12、MB13、MB14、MB15、MB16、MB17を集めた制御領域をCZ2と呼ぶ。制御領域303はCZ2を示している。MB18、MB19、MB20、MB21、MB22、MB23を集めた制御領域をCZ3と呼ぶ。制御領域304はCZ3を示している。MB24、MB25、MB26、MB27、MB28、MB29を集めた制御領域をCZ4と呼ぶ。制御領域305はCZ4を示している。MB30、MB31、MB32、MB33、MB34、MB35を集めた制御領域をCZ5と呼ぶ。制御領域306はCZ5を示している。MB36、MB37、MB38、MB39、MB40、MB41を集めた制御領域をCZ6と呼ぶ。制御領域307はCZ6を示している。MB42、MB43、MB44、MB45、MB46、MB47を集めた制御領域をCZ7と呼ぶ。制御領域308はCZ7を示している。
制御領域の個数は、符号化対象画像に含まれるマクロブロックの個数を代表量子化器の個数で割った値である。ここでは、図9及び図10に示すように、図8の符号化対象画像には48個のマクロブロックが含まれるので、8個(48÷6)の制御領域が構成される。
各制御領域には6個の代表量子化器が1つずつ含まれるように、各制御領域に含まれる6個のマクロブロックに代表量子化器は割り当てられる。各代表量子化器には8個のマクロブロックが割り当てられることになり、これは全マクロブロック数48個の1/6である。
割り当てられた代表量子化器によるパス1の仮符号化の結果、Q1の発生符号量が3000ビット、Q7の発生符号量が2200ビット、Q13の発生符号量が1500ビット、Q19の発生符号量が1000ビット、Q25の発生符号量が600ビット、Q31の発生符号量が250ビットであったとする。これらの結果から符号化対象画像を符号化する際に最初に使用される量子化器である初期量子化器を算出する。なお、これ以降、初期量子化器をQinitと呼ぶ。
まず、画像全体を1つの代表量子化器のみを用いて符号化した場合の発生符号量を代表量子化器毎に推定する。ここでは、各代表量子化器の発生符号量を8倍し、フレーム全体を代表量子化器のみを用いて符号化した場合の発生符号量を推定する。例えば、符号化対象画像を代表量子化器Q1のみで符号化したとすると、3000×8=24000ビットの発生符号量であったと予測する。以下同様に、Q7では2200×8=17600ビット、Q13では1500×8=12000ビット、Q19では1000×8=8000ビット、Q25では600×8=4800ビット、Q31では250×8=2000ビットとなる。
続いて、代表量子化器として選択されなかった残りの25個の量子化器を用いてフレームを符号化した場合の発生符号量を、代表量子化器のフレームでの発生符号量から算出する。例えば、線形補間演算により算出される。
例として、Q14を用いてフレームを符号化した場合の発生符号量について説明する。量子化ステップにおいて、Q13<Q14<Q19であるから、以下のようにQ13とQ19のフレームでの発生符号量の線形補間演算を行うと、
(5/6)×12000+(1/6)×8000=11333
であり、Q14のフレームでの発生符号量は11333ビットとなる。
図11は、量子化器番号と、フレームでの発生符号量の予測値との関係を示す図である。図11に、横軸を量子化器番号、縦軸を発生符号量として、全量子化器のフレームでの発生符号量の予測値を示す。なお、この発生符号量の予測値を、量子化器発生符号量予測と表現する。同図において、曲線310は量子化器発生符号量予測を示している。
続いて、符号化対象画像に対しパス2の本符号化を行う際のQinitの算出について説明する。目標符号量を10000ビットとしたとき、10000ビットを超えない最大の符号量を実現する量子化器を検出する。図11において、発生符号量が10000ビット付近の量子化器に着目すると、
Q13:12000ビット、Q14:11333ビット、Q15:10667ビット
Q16:10000ビット、Q17: 9333ビット、Q18: 8667ビット
となる。このことから、符号化対象画像を同一の量子化器で量子化した場合、発生符号量が10000ビットになると予測されるQ16が、Qinitとして選択される。
符号化対象画像に対しQinitで符号化を始めるが、符号化を進めていく中で、特定数のマクロブロックを符号化した段階で、残りのマクロブロックに対してもQinitで符号化を続けてよいかどうかの判断を行う必要がある。なぜなら、図11で示される量子化器発生符号量予測はあくまで予測値であるため、Qinitの発生符号量の予測値と、実際に符号化を行った場合の発生符号量とが異なる場合があるためである。そのため任意のマクロブロックでの発生符号量が適当であるかを示す指標が必要である。
ここでは、指標となるマクロブロック毎の発生符号量予測の算出について説明する。図10で制御領域について説明したが、この制御領域で発生符号量を算出する。例えば、制御領域301(CZ0)において、CZ0に属するマクロブロックMB0〜MB5のそれぞれに対して割り当てられた各代表量子化器を用いた場合のマクロブロック毎の発生符号量を加算する。これにより、CZ0における発生符号量を算出することができる。
いま、各制御領域における発生符号量が以下に示す値であったとする。
CZ0: 400ビット、 CZ1: 600ビット、CZ2: 500ビット
CZ3: 300ビット、 CZ4:1200ビット、CZ5:1600ビット
CZ6:2000ビット、 CZ7:1400ビット
CZ0まで符号化が終了した時の累計発生符号量は、
CZ0の累計発生符号量=CZ0の発生符号量=400ビット
である。続いてCZ1まで符号化が終了した時の累計発生符号量は、
CZ1の累計発生符号量=CZ1の発生符号量+CZ0の累計発生符号量
=600+400
=1000ビット
である。続いてCZ2まで符号化が終了した時の累積発生符号量は、
CZ2の累計発生符号量=CZ2の発生符号量+CZ1の累計発生符号量
=500+1000
=1500ビット
である。以下、同様に各制御領域での累計発生符号量を算出すると、
CZ0の累計発生符号量: 400ビット、CZ1の累計発生符号量:1000ビット
CZ2の累計発生符号量:1500ビット、CZ3の累計発生符号量:1800ビット
CZ4の累計発生符号量:3000ビット、CZ5の累計発生符号量:4600ビット
CZ6の累計発生符号量:6600ビット、CZ7の累計発生符号量:8000ビット
となる。
ここでCZ7まで符号化が終了したとき、すなわち、符号化対象画像内の全マクロブロックの符号化が終了したときの発生符号量は8000ビットと予測される。目標符号量は10000ビットであるため、前述した各制御領域での累計発生符号量を10000ビットで正規化した値が、最終的な各制御領域での累計発生符号量の予測値となる。
CZ0の正規化累計発生符号量: 500ビット(=400×10000÷8000)
CZ1の正規化累計発生符号量: 1250ビット(=1000×10000÷8000)
CZ2の正規化累計発生符号量: 1875ビット(=1500×10000÷8000)
CZ3の正規化累計発生符号量: 2250ビット(=1800×10000÷8000)
CZ4の正規化累計発生符号量: 3750ビット(=3000×10000÷8000)
CZ5の正規化累計発生符号量: 5750ビット(=4600×10000÷8000)
CZ6の正規化累計発生符号量: 8250ビット(=6600×10000÷8000)
CZ7の正規化累計発生符号量:10000ビット(=8000×10000÷8000)
各制御領域は6個のマクロブロックより構成されているため、上述した各制御領域での累計発生符号量の予測値は、以下のように表現することができる。
6個のマクロブロックの符号化後: 500ビット
12個のマクロブロックの符号化後: 1250ビット
18個のマクロブロックの符号化後: 1875ビット
24個のマクロブロックの符号化後: 2250ビット
30個のマクロブロックの符号化後: 3750ビット
36個のマクロブロックの符号化後: 5750ビット
42個のマクロブロックの符号化後: 8250ビット
48個のマクロブロックの符号化後:10000ビット
ここで、制御領域301(CZ0)に属する6個のマクロブロック(MB0〜MB5)での累積符号量についての予測を行う。
MB5まで符号化が終了した時の予測発生符号量が500ビットであるため、各マクロブロックの符号化が終了した時の発生符号量は以下に述べる線形補間演算によって算出する。
MB0の符号化が終了した時の発生符号量は、
MB0の累計発生符号量=500×(1/6)=83ビットである。
MB1まで符号化が終了した時の累計発生符号量は、
MB1の累計発生符号量=500×(2/6)=167ビットである。
MB2まで符号化が終了した時の累計発生符号量は、
MB2の累計発生符号量=500×(3/6)=250ビットである。
MB3まで符号化が終了した時の累計発生符号量は、
MB3の累計発生符号量=500×(4/6)=333ビットである。
MB4まで符号化が終了した時の累計発生符号量は、
MB4の累計発生符号量=500×(5/6)=417ビットである。
MB5まで符号化が終了した時の累計発生符号量は、
MB5の累計発生符号量=500×(6/6)=500ビットである。
続いて、制御領域302(CZ1)に属する6個のマクロブロック(MB6〜MB11)での累積符号量についての予測を行う。
1つ前の制御領域301(CZ0)内の最終マクロブロックMB5の符号化が終了した時の予測発生符号量が500ビット、MB11の符号化が終了した時の予測発生符号量が1250ビットであるため、各マクロブロックの符号化が終了した時の発生符号量は以下に述べる線形補間演算によって算出する。
MB6まで符号化が終了した時の累計発生符号量は、
MB6の累計発生符号量=500+750×(1/6)=625ビットである。
MB7まで符号化が終了した時の累計発生符号量は、
MB7の累計発生符号量=500+750×(2/6)=750ビットである。
MB8まで符号化が終了した時の累計発生符号量は、
MB8の累計発生符号量=500+750×(3/6)=875ビットである。
MB9まで符号化が終了した時の累計発生符号量は、
MB9の累計発生符号量=500+750×(4/6)=1000ビットである。
MB10まで符号化が終了した時の累計発生符号量は、
MB10の累計発生符号量=500+750×(5/6)=1125ビットである。
MB11まで符号化が終了した時の累計発生符号量は、
MB11の累計発生符号量=500+750×(6/6)=1250ビットである。
以下、同様の処理を制御領域303(CZ2)、304(CZ3)、305(CZ4)、306(CZ5)、307(CZ6)、308(CZ7)に対して行い、全マクロブロック(MB0〜MB47)の累積発生符号量の予測値を算出する。
図12は、マクロブロックと、累積発生符号量の予測値との関係を示す図である。図12に、横軸をマクロブロック番号、縦軸を発生符号量として、マクロブロック毎の累積発生符号量の予測値を示す。なお、この発生符号量の予測値を、累積発生符号量予測と表現する。同図において、曲線311は累積発生符号量予測を示している。
この累積発生符号量予測を用いて量子化器の変更を行う。以下では、量子化器の変更方法について簡単に説明する。なお、量子化器の変更を行うか否かの判断は、制御領域の符号化が終了する毎に、すなわち、6個のマクロブロックの符号化が終了する毎に実行されるとする。
例えば、制御領域301(CZ0)まで符号化が終了したときの実際の発生符号量が、図12の累積発生符号量予測に対し500ビット多いとする。このとき、このままQinitであるQ16で符号化を続けていけば、最終的な発生符号量が目標符号量を超える可能性が高いため、量子化器の変更が必要である。量子化器の変更には、図11に示した量子化器発生符号量予測のデータを用いる。図11において、Q16前後の量子化器の発生符号量予測は、
Q14:11333ビット、Q15:10667ビット
Q16:10000ビット、Q17: 9333ビット
Q18: 8667ビット
であった。Q17はQ16より667ビット、Q18はQ16より1334ビット発生符号量が少なくなると予測されている。
いまQ16で符号化を行っていて、実際の発生符号量が累積発生符号量予測より500ビット多くなっているとする。この場合、Q16よりも発生符号量が667ビット少なくなると予測されるQ17に変更を行う。これにより500ビットの超過分が解消され、全マクロブロックを符号化終了したときの最終的な発生符号量が目標符号量内に収まることが期待される。
以降、変更した量子化器Q17を用いて符号化を進めて行き、各制御領域(CZ1、CZ2、CZ3、CZ4、CZ5、CZ6)の符号化が終了した時点で、現在の発生符号量と累積発生符号量予測との比較を行い、量子化器の変更を行う。
実際の発生符号量が累積発生符号量予測より大きければ、現在使用中の量子化器より発生符号量が少なくなる量子化器に、すなわち、量子化器番号が大きい量子化器に変更する。逆に、実際の発生符号量が累積発生符号量予測より小さければ、現在使用中の量子化器より発生符号量が多くなる量子化器に、すなわち、量子化器番号が小さい量子化器に変更する。
量子化器番号をどれだけ小さく、あるいは、どれだけ大きくするかの判断には、図11に示した量子化器発生符号量予測のデータを用いる。
以上のようにして、従来の2パス符号化技術では、パス1の仮符号化において量子化器発生符号量予測と、マクロブロック毎の累積発生符号量とを予測することで、符号量予測モデルを生成する。そして、パス2の実際の符号化において、符号化中に符号量予測モデルに基づいて量子化器を変更することで、符号化対象画像の符号化終了時の発生符号量を所望の符号量とすることができる。これにより、高い精度で符号量を制御することができる。
特開平8−172626号公報
ここまで述べたように、従来の2パス符号化では、パス1の仮符号化で量子化器発生符号量予測、及び、累積発生符号量予測データを算出し、パス2の本符号化でパス1のデータを用いて符号化を行うことで、高い精度の符号量制御を行うことができた。
しかしながら、上記従来技術には、全ての画像に対して正しく予測ができるという訳ではなく、対象画像の性質によっては正しく予測ができないという課題がある。具体的には、以下に示すように2つの課題がある。
まず、第1の課題について説明する。第1の課題は、パス1の仮符号化において、各マクロブロックに代表量子化器を割り当てる際に、精細度の高い領域が特定の代表量子化器に集中する場合がある。この場合、量子化器発生符号量予測の精度が低いという課題があった。なお、以下の説明では、従来と同様に、符号化システムは、量子化器Q1〜Q31を有する。量子化器Q1〜Q31は、この順で量子化ステップが大きくなるとする。また、6個の代表量子化器をQ1、Q7、Q13、Q19、Q25、Q31とする。
ある特定の代表量子化器に発生符号量が少ないマクロブロックが偏って存在する場合、量子化器発生符号量予測は特異な曲線となる。
例えば、代表量子化器Q13に、発生符号量が少ないマクロブロックが集中したとする。逆に、代表量子化器Q19に、発生符号量が多いマクロブロックが集中したとする。なお、発生符号量が少ないマクロブロックは、例えば、画像がコンピュータグラフィックス画像(以下、CG画像とする)などであり、オブジェクトを含まない平坦なマクロブロックなどである。
この場合、Q13に割り当てられたマクロブロックに対して、Q13を用いて符号化した場合の発生符号量は少なくなる。このため、当該発生符号量を用いて、フレーム全体をQ13のみを用いて量子化及び符号化した場合の発生符号量を予測すると、Q13のフレームでの発生符号量も少なくなる。
一方で、Q19に割り当てられたマクロブロックに対して、Q19を用いて符号化した場合の発生符号量は多くなる。このため、当該発生符号量を用いて、フレーム全体をQ19のみを用いて量子化及び符号化した場合の発生符号量を予測すると、Q19のフレームでの発生符号量も多くなる。
図13は、代表量子化器に割り当てたマクロブロックの符号量が偏っていた場合の量子化器発生符号量予測の一例を示す図である。図13に、横軸を量子化器番号、縦軸を発生符号量として、量子化器発生符号量予測を示す。同図において、曲線320は量子化器発生符号量予測を示している。曲線320において、ポイント322は代表量子化器Q13での発生符号量予測、ポイント323は代表量子化器Q19での発生符号量予測を示している。
量子化ステップはQ13<Q19であるから、通常、発生符号量においてQ13>Q19が成立するはずであるが、図13に示すように発生符号量においてQ13<Q19となっている。これは、上述したように、代表量子化器Q13に符号化されるマクロブロックに発生符号量が少ないマクロブロック(オブジェクトを含まない平坦なマクロブロック)が集中したためである。
実際に各代表量子化器が、画面内の全マクロブロックを用いて発生符号量を算出すれば、発生符号量において、Q1>Q7>Q13>Q19>Q25>Q31となり、図11で示したような曲線310に示す量子化器発生符号量予測となるはずである。
図13に、正しい量子化器発生符号量予測を示し、これを曲線321と表現する。
続いて、符号化対象画像に対しパス2の本符号化を行う際のQinitの算出について説明する。目標符号量を10000ビットとしたとき、10000ビットを超えない最大の符号量を実現する量子化器を検出する。図13において、発生符号量が10000ビット付近の量子化器に着目すると、
Q7:17600ビット、 Q8:14933ビット、 Q9:12267ビット
Q10:9600ビット、Q11: 6933ビット、Q12: 3367ビット
となり、符号化対象画像を同一の量子化器で量子化した場合、発生符号量が9600ビットになると予測されるQ10が、Qinitに選択される。
これに対し、正しい量子化器発生符号量予測を示す曲線321から算出したQinitがQ14であったとする。パス1で算出した量子化器発生符号量予測を示す曲線320から算出したQinitはQ10であるため、パス2においてQ10を用いて符号化を行ったとき、実際の発生符号量は累積発生符号量予測よりも多くなる。なぜなら、そもそもQ10の量子化ステップは、Q14の量子化ステップより小さいために、同じ符号化対象画像(又は、同じ符号化対象マクロブロック)を符号化した場合は、必ずQ10の発生符号量は、Q14の発生符号量より多くなるためである。
以上のように、パス2において、QinitとしてQ10を用いて符号化を始めると、先述したように、目標符号量10000ビット付近の発生符号量となるQinitはQ14であるため、Q10をQinitとした場合、パス2における発生符号量は累積発生符号量予測より多くなる。
例えば、CZ0の符号化が終了した時に、累積発生符号量予測に対し1000ビット多く符号量が発生しているとする。このままQ10で符号化を続けていけば、最終的な発生符号量が目標符号量を超える可能性が高いため、量子化器の変更が必要である。量子化器の変更には、図13に示した量子化器発生符号量予測のデータを用いる。図13において、Q10前後の量子化器の発生符号量予測は、
Q10:9600ビット、Q11:6933ビット、Q12:3367ビット
Q13:1600ビット、Q14:3733ビット
であった。Q11はQ10より2667ビット発生符号量が少なくなると予測されている。
いまQ10で符号化を行っていて実際の発生符号量が累積発生符号量予測より1000ビット多くなっている。そのため、Q10よりも発生符号量が2667ビット少なくなると予測されるQ11に変更を行う。これにより1000ビットの超過分が解消され、全マクロブロックの符号化を終了したときの最終的な発生符号量が目標符号量内に収まることが期待される。
しかしながら、目標符号量10000ビット付近の発生符号量となる量子化器はQ14であるため、Q11を用いて符号化した場合でも発生符号量は累積発生符号量より多くなる。
発生符号量が累積発生符号量予測より大きい場合は、量子化器番号を大きくする(量子化ステップの大きい量子化器に変更する)必要があるが、図13の量子化器発生符号量予測から明らかなように、量子化器Q13の予測発生符号量が全量子化器の中で最小となっている。さらに、Q14の予測発生符号量がQ13の予測発生符号量よりも多いため、Q14以降の量子化器が選択されることはない。そのため、パス2の本符号化において、実際の発生符号量が目標符号量を超えてしまうことになる。この場合、目標符号量を超えてしまった符号化データは失われ、復元画像の画質において非常に大きな劣化を引き起こしてしまう。
以上のように、従来技術の第1の課題は、代表量子化器に割り当てられたマクロブロックの符号量が偏る場合があり、この場合に正しい予測ができずに、目標符号量となるように符号化が実行できなくなるという課題である。
続いて、従来技術の第2の課題について説明する。第2の課題は、符号化対象画像にオブジェクトが少なく発生符号量が小さくなる場合、パス1における量子化器発生符号量予測の精度が低いという課題である。
図14は、オブジェクトが少ない符号化対象画像に対して仮符号化を行うことで得られる量子化器発生符号量予測の一例を示す図である。図14に、横軸を量子化器番号、縦軸を発生符号量として、量子化器発生符号量予測を示す。同図において、曲線330は量子化器発生符号量予測を示している。
図14に示すように、オブジェクトが少ない画像を符号化対象画像としてパス1の仮符号化を行った場合、得られる量子化器毎の発生符号量には、大きな変化が現れない。図14に示す量子化器発生符号量予測に基づいて、本符号化を行った場合には次のような問題が生じる。
例えば、符号化対象画像に対しパス2の本符号化を行う際のQinitの算出について説明する。目標符号量を10000ビットとしたとき、10000ビットを超えない最大の符号量を実現する量子化器を検出する。図14において、発生符号量が10000ビット付近の量子化器に着目すると、
Q1:10400ビット、Q2:10267ビット、Q3:10133ビット
Q4:10000ビット、Q5: 9867ビット、Q6: 9733ビット
となり、符号化対象画像を同一の量子化器で量子化した場合、発生符号量が10000ビットになると予測される量子化器Q4が、Qinitに選択される。選択されたQ4をQinitとして量子化及び符号化を行った結果、CZ0の符号化を終了した時点で、累積発生符号量予測に対し1000ビット多く符号量が発生しているとする。
このままQ4で符号化を続けていけば、最終的な発生符号量が目標符号量を超える可能性が高いため、量子化器の変更が必要である。量子化器の変更には、図14に示した量子化器発生符号量予測のデータを用いる。図14において、Q4前後の量子化器の発生符号量予測は、
Q4:10000ビット、Q5: 9867ビット、Q6:9733ビット
Q7: 9600ビット、Q8: 9467ビット、Q9:9333ビット
Q10:9200ビット、Q11:9067ビット、Q12:8933ビット
Q13:8800ビット
であった。Q12はQ4より1067ビット発生符号量が少なくなると予測されている。
いまQ4で符号化を行っていて実際の発生符号量が累積発生符号量予測より1000ビット多くなっている。そのため、Q4よりも発生符号量が1067ビット少なくなると予測されるQ12に変更を行う。これにより1000ビットの超過分が解消され、全マクロブロックを符号化終了したときの最終的な発生符号量が目標符号量内に収まることが期待される。
しかしながら、ここで量子化器の変動に伴う画質の変動が問題となる。つまり、量子化及び符号化において量子化ステップが大きく変化すると、画質が大きく変動してしまう。したがって、符号化においては画質の点で、量子化器は画面内で極力変化しないことが望ましい。量子化が変化したとしても、その変化量は極力小さいことが望ましい。量子化器が大きく変動すると、それに伴い画質も大きく変動するからである。
これにより、オブジェクトの少ない画像を符号化対象画像として符号化した場合、正しい量子化器発生符号量予測が得られずに、符号化の途中で大きく量子化器を変更せざるを得なくなる。これにより、符号化画像を復号化した場合に得られる復号画像の画質が非常に悪くなるという課題がある。
以上のように、従来技術では、精細度の高い領域が特定の代表量子化器に集中していた場合、パス1における量子化器発生符号量予測の精度が大きく低下するという第1の課題がある。さらに、符号化対象画像の符号量が少ない場合、パス1における量子化器発生符号量予測の精度が大きく低下するという第2の課題がある。
本発明は上記課題に鑑みてなされたものであり、2パス符号化という手法において、発生符号量が所定の符号量を超えることなく、視覚的に十分に許容できる復号画像を提供できる画像符号化装置及び画像符号化方法を提供することを目的とする。
上記目的を達成するため、本発明に係る画像符号化装置は、仮符号化及び本符号化の2パスで入力画像を符号化する画像符号化装置であって、量子化ステップが互いに異なる複数の量子化器を有する量子化部と、前記複数の量子化器から選択した複数の代表量子化器によって、当該代表量子化器に対応する前記入力画像の一部をそれぞれ量子化及び符号化した場合に発生する各符号量である発生符号量を用い、前記複数の量子化器のそれぞれによって前記入力画像を量子化及び符号化した場合に発生する符号量の予測値である予測符号量を前記量子化器毎に算出する仮符号化部と、前記複数の代表量子化器に含まれる第1代表量子化器の前記発生符号量から、前記複数の代表量子化器に含まれる、前記第1代表量子化器よりも前記量子化ステップが大きい第2代表量子化器の前記発生符号量を減算した値が第1閾値以下である場合に、前記予測符号量が信頼できないと決定する信頼度決定部と、前記予測符号量及び前記信頼度決定部の前記決定に基づいて前記複数の量子化器のいずれを用いるかを選択し、選択した量子化器を用いて前記入力画像を当該入力画像を構成するマクロブロック毎に所定の順序で量子化及び符号化する本符号化部とを備え、前記信頼度決定部が、前記予測符号量が信頼できないと決定した場合、前記本符号化部は、符号化対象の前記マクロブロックを量子化及び符号化する前に発生した符号量の累積値である累積符号量と、前記予測符号量に基づいて定められる、前記符号化対象の前記マクロブロックを量子化及び符号化する前に発生すると予測される符号量の累積値の予測値である予測累積符号量との差分に応じて、前記複数の量子化器の中から第1量子化器を選択し、前記第1量子化器を用いて前記符号化対象の前記マクロブロックを量子化及び符号化することを特徴とする。
これにより、パス1における仮符号化の信頼度に応じた量子化器の選択を行うことができ、パス1の予測を有効に利用することができるので、本符号化時に発生する発生符号量が所定の符号量を超えることなく、視覚的に充分に許容できる復号画像を提供することができる。
また、これにより、代表量子化器毎の発生符号量の差を検出するという簡単な構成で信頼度を算出することができる。
また、前記本符号化部は、前記累積符号量が前記予測累積符号量よりも大きい場合、前記符号化対象の前記マクロブロックの直前の前記マクロブロックを量子化及び符号化するために用いた前記量子化器よりも前記量子化ステップが大きい前記第1量子化器を用いて前記符号化対象の前記マクロブロックを量子化及び符号化してもよい。
また、前記本符号化部は、前記累積符号量が前記予測累積符号量よりも小さい場合、前記符号化対象の前記マクロブロックの直前の前記マクロブロックを量子化及び符号化するために用いた前記量子化器よりも前記量子化ステップが小さい前記第1量子化器を用いて前記符号化対象の前記マクロブロックを量子化及び符号化してもよい。
また、前記本符号化部は、前記累積符号量が前記予測累積符号量と等しい場合、前記符号化対象の前記マクロブロックの直前の前記マクロブロックを量子化及び符号化するために用いた前記量子化器と同じ前記量子化器である前記第1量子化器を用いて前記符号化対象の前記マクロブロックを量子化及び符号化してもよい。
このように、パス1の予測の信頼性が低い場合には、パス1の予測を無視することができ、例えば、本符号化に用いる量子化器を量子化ステップの大きさが近い量子化器に変更することで、視覚的に充分に許容できる復号画像を提供することができる。
また、前記信頼度決定部は、前記第1代表量子化器の量子化ステップと前記第2代表量子化器の量子化ステップとの差が大きいほど、前記第1閾値を大きい値に設定してもよい。
これにより、代表量子化器の量子化ステップに応じた閾値を設定することができるので、精度良く信頼度を判定することができる。
また、前記第1閾値は、0より大きな所定の値であってもよい。
また、本発明に係る画像符号化装置は、仮符号化及び本符号化の2パスで入力画像を符号化する画像符号化装置であって、量子化ステップが互いに異なる複数の量子化器を有する量子化部と、前記複数の量子化器から選択したn+1個(nは2以上の整数)の代表量子化器によって、当該代表量子化器に対応する前記入力画像の一部をそれぞれ量子化及び符号化した場合に発生する各符号量である発生符号量を用い、前記複数の量子化器のそれぞれによって前記入力画像を量子化及び符号化した場合に発生する符号量の予測値である予測符号量を前記量子化器毎に算出する仮符号化部と、(1)前記n+1個の代表量子化器のうち、前記量子化ステップが最も大きい前記代表量子化器を除いたn個の代表量子化器のそれぞれについて、当該代表量子化器の前記発生符号量から、当該代表量子化器の次に前記量子化ステップが大きい前記代表量子化器の前記発生符号量を減算した値が第1閾値以下であるか否かによって定められる信頼度に、当該代表量子化器の前記量子化ステップと、前記入力画像の符号化において最初に用いられる前記量子化器の前記量子化ステップとの差が小さいほど大きい値となる重み係数を乗じた値である重み付け信頼度を算出し、(2)算出したn個の前記重み付け信頼度の総和が第2閾値未満である場合に前記予測符号量が信頼できないと決定する信頼度決定部と、前記予測符号量及び前記信頼度決定部の前記決定に基づいて前記複数の量子化器のいずれを用いるかを選択し、選択した量子化器を用いて前記入力画像を当該入力画像を構成するマクロブロック毎に所定の順序で量子化及び符号化する本符号化部とを備え、前記信頼度決定部が、前記予測符号量が信頼できないと決定した場合、前記本符号化部は、符号化対象の前記マクロブロックを量子化及び符号化する前に発生した符号量の累積値である累積符号量と、前記予測符号量に基づいて定められる、前記符号化対象の前記マクロブロックを量子化及び符号化する前に発生すると予測される符号量の累積値の予測値である予測累積符号量との差分に応じて、前記複数の量子化器の中から第1量子化器を選択し、前記第1量子化器を用いて前記符号化対象の前記マクロブロックを量子化及び符号化してもよい。
これにより、パス1の予測の信頼性が低い場合には、パス1の予測を無視することができ、例えば、本符号化に用いる量子化器を量子化ステップの大きさが近い量子化器に変更することで、視覚的に充分に許容できる復号画像を提供することができる。
なお、本発明は、このような画像符号化装置として実現することができるだけでなく、このような画像符号化装置が備える特徴的な手段をステップとする画像符号化方法として実現することができる。また、それらのステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM(Compact Disc−Read Only Memory)等の記録媒体又はインターネット等の伝送媒体を介して配信することができるのは言うまでもない。
本発明に係る画像符号化装置によれば、2パス符号化を用いた画像符号化において、より効率的な符号化が可能であり、符号化画像の画質向上が実現できる。
以下では、本発明の実施の形態について、図面を参照しながら詳細に説明する。
図1は、本実施の形態の画像符号化装置の全体の構成を示すブロック図である。同図の画像符号化装置10は、入力部100と、マクロブロック構成部110と、バッファ120と、仮符号化部130と、信頼度決定部140と、本符号化部150と、出力部160とを備える。
入力部100は、入力画像信号をマクロブロック構成部110に入力する。
マクロブロック構成部110は、入力画像信号に対し、8×8画素から構成されるブロックに分割し、複数のブロックを集めてマクロブロックを構成する。例えば、マクロブロックは、8×16画素から構成される。構成したマクロブロックは、バッファ120、仮符号化部130に入力される。なお、分割されるブロックは、4×4画素又は4×8画素などいかなる構成でもよい。また、これら分割されたブロックから構成されるマクロブロックは、16×16画素などいかなる構成でもよい。
バッファ120は、入力されたマクロブロックを一時的に保持し、本符号化部150に入力する。
仮符号化部130は、量子化ステップが互いに異なる複数の量子化器のそれぞれを用いて入力画像を量子化及び符号化した場合に発生する符号量の予測値である予測符号量を、量子化器毎に算出する。なお、複数の量子化器は、仮符号化部130、本符号化部150のいずれが備えていてもよい。また、仮符号化部130及び本符号化部150のいずれとも異なる別の処理部が備えていてもよい。
具体的には、仮符号化部130は、入力されたマクロブロックに対しパス1の仮符号化を行い、各代表量子化器の発生符号量を算出する。さらに、各代表量子化器の発生符号量から全量子化器の発生符号量の予測(量子化器発生符号量予測)、及び、マクロブロック毎の累積発生符号量の予測(累積発生符号量予測)を算出する。なお、累積発生符号量予測は、入力画像を構成するマクロブロックを予め定められた順に符号化した場合に発生する符号量の累積値の予測である。以上の2つの予測を上述のように総称して符号量予測モデルと称する。符号量予測モデルは、信頼度決定部140に入力される。
信頼度決定部140は、入力された符号量予測モデルに対しパス1の信頼度、すなわち、量子化器発生符号量予測の信頼度を算出する。算出した信頼度、及び、符号量予測モデルは、本符号化部150に入力される。なお、信頼度とは、仮符号化部130で算出された予測符号量、すなわち、量子化器発生符号量予測の正確さの程度を示す値である。より具体的には、信頼度とは、量子化器毎の量子化ステップと、量子化器毎の予測符号量との負の相関の一致度合いを示す値である。
本符号化部150は、入力された信頼度に基づいて、複数の量子化器のいずれを用いるかを決定し、決定した量子化器を用いて入力画像を量子化及び符号化する。本符号化部150は、制御部151と、直交変換部152と、量子化部153と、エントロピー符号化部154とを備える。
制御部151は、入力された符号量予測モデル、パス1の信頼度、及び、対象マクロブロックを符号化するまでの累積発生符号量より、対象マクロブロックに対する量子化器番号を決定する。決定した量子化器番号は、量子化部153に入力される。具体的には、制御部151は、信頼度が閾値より小さいか否かを判断し、信頼度が閾値より小さいと判断した場合、量子化器発生符号量予測を参照せずに、複数の量子化器のいずれを用いるかを決定する。
直交変換部152は、入力されたマクロブロックに対して周波数変換を行い、周波数変換係数を出力する。直交変換部152は、周波数変換係数を量子化部153に入力する。
量子化部153は、入力された変換係数に対して、入力された量子化器番号で決定される量子化器を用いて量子化処理を行い、量子化係数を出力する。量子化係数は、エントロピー符号化部154に入力される。
エントロピー符号化部154は、入力された量子化係数に対しエントロピー符号化を行い、ビットストリームを出力する。ビットストリームは、出力部160に入力される。
出力部160は、入力されたビットストリームを任意の媒体に出力する。
次に、本実施の形態の画像符号化装置の動作について説明する。
図2は、本実施の形態の画像符号化装置の動作を示すフローチャートである。
入力部100が、入力画像信号をマクロブロック構成部110に入力し、マクロブロック構成部110は、マクロブロックを構成する。仮符号化部130は、予め定められた順にマクロブロックを仮符号化する(S101)。仮符号化の詳細は従来技術に述べたとおりである。
仮符号化部130は、複数の量子化器の中から代表量子化器を選択し、選択した代表量子化器を各マクロブロックに割り当てる。仮符号化部130は、各マクロブロックに割り当てられた代表量子化器をそれぞれ用いて量子化及び符号化を行うことで、各代表量子化器の発生符号量を算出する。各代表量子化器の発生符号量に基づいて、例えば、線形補間演算などにより全量子化器の発生符号量を算出することで、量子化器発生符号量予測を算出する。さらに、マクロブロック毎の累積発生符号量予測を算出する。さらに、目標符号量と量子化器発生符号量予測とから、Qinitを決定する。
次に、信頼度決定部140は、仮符号化部130が算出した量子化器発生符号量予測を用いてパス1の信頼度を決定する(S102)。信頼度の決定処理については、後述する。
続いて、制御部151は、信頼度決定部140で決定された信頼度に応じて、本符号化の符号量制御を行う。具体的には、制御部151は、信頼度に応じて、パス1の仮符号化で得られた量子化器発生符号量予測を用いるか否かを決定する。
まず、制御部151は、信頼度が所定の閾値以上であるか否かを判断する(S103)。例えば、信頼度のとりうる値が0又は1の2値である場合は、信頼度が1であるか否かを判断する。
信頼度が所定の閾値以上である(または、信頼度が1である)と判断された場合(S103でYes)、本符号化部150は、量子化器発生符号量予測を参照しながら、入力画像に対して本符号化を実行する(S104)。すなわち、本符号化部150は、従来技術で説明した処理と同様の処理を実行する。
信頼度が所定の閾値より小さい(または、信頼度が0である)と判断された場合(S103でNo)、本符号化部150は、量子化器発生符号量予測を参照することなく、入力画像に対して本符号化を実行する(S105)。なお、この場合の本符号化については、図3を用いて詳細に後述する。
図3は、信頼度が低いと判断された場合の本符号化の処理を示すフローチャートである。
本符号化処理は、従来技術と同様、制御領域毎に繰り返される(S201)。まず、制御領域に含まれるマクロブロックを量子化及び符号化する(S202)。具体的には、量子化部153は、制御部151によって決定された量子化器を用いて、直交変換部152から入力される変換係数を量子化する。エントロピー符号化部154は、量子化された変換係数を符号化する。なお、1番目の制御領域に含まれるマクロブロックを量子化及び符号化する場合は、量子化部153は、パス1の仮符号化により決定されたQinitを用いる。
制御領域に含まれる全マクロブロックの符号化が終了した時点で、制御部151は、現時点までに発生した実際の符号量を取得し、実際の符号量と累積発生符号量の予測値とを比較する(S203)。
このとき、実際の符号量が、対応するマクロブロックまでの累積発生符号量の予測値より大きい場合、制御部151は、現在使用中の量子化器を、量子化器番号が1大きい量子化器に変更する(S204)。すなわち、量子化ステップの大きな量子化器に変更する。
実際の符号量が、対応するマクロブロックまでの累積発生符号量の予測値より小さい場合、制御部151は、現在使用中の量子化器を、量子化器番号が1小さい量子化器に変更する(S205)。すなわち、量子化ステップの小さな量子化器に変更する。
実際の符号量が、対応するマクロブロックまでの累積発生符号量の予測値に等しい場合、制御部151は、何も行わない。すなわち、量子化器の変更を行わない。
以上のようにして、制御部151によって変更された量子化器を用いて、次の制御領域に対して、量子化及び符号化を実行する。以上の処理(S202〜S205)は、全制御領域に対して終了されるまで繰り返される(S206)。
以上のようにして、本実施の形態の画像符号化装置は、2パス符号化を行う際に、パス1で得られる予測が信頼できるか否かを判断し、信頼できる場合は、従来技術と同様の処理を行う。信頼できない場合は、従来技術とは異なる手法を用いて本符号化を実行する。これにより、発生符号量が所定の符号量を超えることなく、視覚的に十分に許容できる復号画像を提供することができる。
ここで、信頼度決定部140の動作について説明する。なお、本実施の形態においても、従来技術の説明で述べたように、符号化システムが有することのできる量子化器の最大数を31個とし、パス1の仮符号化に用いる代表量子化器の個数を6個として説明を行う。
代表量子化器をそれぞれ、Q1、Q7、Q13、Q19、Q25、Q31とし、量子化ステップの大きさは、Q1<Q7<Q13<Q19<Q25<Q31であるとする。すなわち、発生符号量は、Q1>Q7>Q13>Q19>Q25>Q31となる。
信頼度決定部140は、パス1で算出された各代表量子化器の発生符号量を用いて、パス1の信頼度を決定する。信頼度は、以下の条件を満たしている時に1となり、それ以外のときは0となる。
ここで、信頼度が1になる条件とは、
(式1)(Q1の発生符号量 − Q7の発生符号量) > 特定の閾値
(式2)(Q7の発生符号量 − Q13の発生符号量)> 特定の閾値
(式3)(Q13の発生符号量 − Q19の発生符号量)> 特定の閾値
(式4)(Q19の発生符号量 − Q25の発生符号量)> 特定の閾値
(式5)(Q25の発生符号量 − Q31の発生符号量)> 特定の閾値
としたときに、(式1)〜(式5)の全てが成立することである。
なお、(式1)〜(式5)における特定の閾値が異なっていても構わない。例えば(式1)、(式2)及び(式3)では特定の閾値が200、(式4)及び(式5)では特定の閾値が100であっても構わない。本実施の形態では、(式1)〜(式5)における特定の閾値の値を128に設定する。
以上のように、信頼度は、量子化ステップが小さい代表量子化器での発生符号量から、量子化ステップが大きい代表量子化器での発生符号量を減算した値が、所定の閾値を超えているか否かで決定される。特定の閾値は、それぞれの代表量子化器の量子化ステップの大きさの違いによって決定されてもよい。例えば、それぞれの代表量子化器の量子化ステップの差が大きいほど、閾値も大きく設定されてもよい。なぜなら、量子化ステップの差が大きいほど、通常であれば、発生する符号量の差も大きくなるためである。
つまり、信頼度は、量子化器毎の発生符号量の大小関係と、その大小関係の程度(すなわち、傾斜)とを判断するための指標である。すなわち、(式1)〜(式5)において、特定の閾値を0とすると、単純に、大小関係だけが判断されることになる。これにより、例えば、図13に示すような量子化器発生符号量予測が得られた場合に、当該量子化器発生符号量予測の信頼性は低いと判断することができる。
さらに、特定の閾値を0より大きな所定の値とすることで、例えば、図14に示すような量子化器発生符号量予測が得られた場合に、当該量子化器発生符号量予測の信頼性は低いと判断することができる。
続いて、制御部151の動作について説明する。
制御部151は、入力された信頼度に応じた符号量制御を行う。
信頼度が1の場合、従来技術と同じ動作を行う。すなわち、Qinitを量子化器発生符号量予測より算出し、Qinitで符号化を進めていく。制御領域において量子化器の変更を行うとき、現在の累積発生符号量と累積発生符号量予測との差と、量子化器発生符号量予測における量子化器を変化させたときの発生符号量の差とから、量子化器の決定を行う。
信頼度が0の場合、Qinitを量子化器発生符号量予測より算出し、Qinitで符号化を進めていく。ここまでは従来技術と同じ動作である。
従来技術と本実施の形態とでは、制御領域において量子化器の変更を行うときの動作が異なる。本実施の形態では、制御領域において量子化器の変更を行うとき、現在の発生符号量が累積発生符号量予測より多ければ量子化器番号を1つ大きくする。現在の発生符号量が累積発生符号量予測より少なければ量子化器番号を1つ小さくする。現在の発生符号量が累積発生符号量予測と一致していれば量子化器番号を変更しない。
従来技術では、信頼度が0の場合でも、量子化器発生符号量予測を参照して量子化器の変更を行っていた。そのため、従来技術の説明で述べた2つの課題が生じていた。
本実施の形態を用いて、従来技術で述べた3つの量子化器発生符号量予測が得られた場合(図11、図13及び図14)について、それぞれの符号量制御について説明する。まず、図11に示した量子化器発生符号量予測が得られた場合について説明する。
例えば、図11に示す量子化器発生符号量予測を得るために行ったパス1の仮符号化の結果、6つの代表量子化器の発生符号量はそれぞれ、Q1の発生符号量が3000ビット、Q7の発生符号量が2200ビット、Q13の発生符号量が1500ビット、Q19の発生符号量が1000ビット、Q25の発生符号量が600ビット、Q31の発生符号量が250ビットであったとする。
信頼度を算出すると、
(Q1の発生符号量−Q7の発生符号量)=(3000−2200)=800であり、128より大きい、よって(式1)は満たしている。
(Q7の発生符号量−Q13の発生符号量)=(2200−1500)=700であり、128より大きい、よって(式2)は満たしている。
(Q13の発生符号量−Q19の発生符号量)=(1500−1000)=500であり、128より大きい、よって(式3)は満たしている。
(Q19の発生符号量−Q25の発生符号量)=(1000−600)=400であり、128より大きい、よって(式4)は満たしている。
(Q25の発生符号量−Q31の発生符号量)=(600−250)=350であり、128より大きい、よって(式5)は満たしている。
以上のように(式1)〜(式5)の全てが成立するために、パス1の信頼度は1となる。
パス1の信頼度が1であるため、制御部151は、Qinitを量子化器発生符号量予測より算出し、Qinitで符号化を進めていく。制御領域において量子化器の変更を行うとき、現在の発生符号量と累積発生符号量予測との差と、量子化器発生符号量予測における量子化器を変化させたときの発生符号量の差とから、量子化器の決定を行う。これは、従来技術と同じ動作である。
続いて、図13に示した量子化器発生符号量予測が得られた場合について説明する。
例えば、図13に示す量子化器発生符号量予測を得るために行ったパス1の仮符号化の結果、6つの代表量子化器の発生符号量はそれぞれ、Q1の発生符号量が3000ビット、Q7の発生符号量が2200ビット、Q13の発生符号量が200ビット、Q19の発生符号量が1800ビット、Q25の発生符号量が600ビット、Q31の発生符号量が250ビットであったとする。第1の課題で示したように代表量子化器に割り当てたマクロブロックの符号量が偏っていたために、Q13の発生符号量が少なく、Q19の発生符号量が多くなる例を示している。
これらを信頼度が1になる条件に当てはめると、
(Q1の発生符号量−Q7の発生符号量)=(3000−2200)=800であり、128より大きい、よって(式1)は満たしている。
(Q7の発生符号量−Q13の発生符号量)=(2200−200)=2000であり、128より大きい、よって(式2)は満たしている。
(Q13の発生符号量−Q19の発生符号量)=(200−1800)=−1600であり、128より小さい、よって(式3)は満たしていない。
(Q19の発生符号量−Q25の発生符号量)=(1800−600)=1200であり、128より大きい、よって(式4)は満たしている。
(Q25の発生符号量−Q31の発生符号量)=(600−250)=350であり、128より大きい、よって(式5)は満たしている。
以上のように(式3)が成立していないため、パス1の信頼度は0となる。
パス1の信頼度が0であるため、制御部151は、Qinitを量子化器発生符号量予測より算出し、Qinitで符号化を進めていく。制御領域において量子化器の変更を行うとき、現在の発生符号量が累積発生符号量予測より多ければ量子化器番号を1つ大きくする。現在の発生符号量が累積発生符号量予測より少なければ量子化器番号を1つ小さくする。これは、従来技術と異なる動作である。
図4は、所定の符号化対象画像に対する累積発生符号量予測の一例を示す図である。同図の曲線200は、累積発生符号量予測である。曲線201は、パス2の本符号化における実際の発生符号量である。ここでは、Q10をQinitとして符号化を行い、各制御領域で量子化器を変更し、制御領域304(CZ3)まで符号化が終了したときの実際の発生符号量を示している。なお、この段階で選択されている量子化器はQ13であったとする。
本実施の形態においては、パス1の信頼度が0であるため、量子化器の変更において量子化器発生符号量予測のデータを参照しない。この場合、パス2の発生符号量が累積発生符号量予測を超えているため、量子化器番号を1つ大きくしてQ14とする。
目標符号量10000ビット付近の発生符号量となる量子化器はQ14であるため、今までの超過符号量の分だけ、次の制御領域305(CZ4)においても、パス2の発生符号量が累積発生符号量予測を超えるはずである。したがって、本実施の形態では、制御領域305(CZ4)の符号化が終了した後、量子化器番号を1つ大きくしてQ15とする。
以降の制御領域において、パス2の発生符号量が累積発生符号量予測に応じた量子化器の変更が行われる。すなわち、実際の発生符号量が累積発生符号量予測より大きければ、量子化器番号を1つ大きくし、実際の発生符号量が累積発生符号量予測より小さければ、量子化器番号を1つ小さくする。
これに対し、量子化器の変更において量子化器発生符号量予測のデータを参照する従来技術では、図13の量子化器発生符号量予測から明らかなように、量子化器Q13の予測発生符号量が全量子化器の中で最小となっており、Q14の予測発生符号量がQ13の予測発生符号量よりも多いため、Q14以降の量子化器が選択されることはない。そのため、制御領域304(CZ3)以降、量子化器はQ13のままである。
図5は、本実施の形態と従来技術とによるパス2の発生符号量と累積発生符号量予測との関係を示す図である。
曲線202は、累積発生符号量予測であり、図4に示す曲線200と同じである。曲線203は、本実施の形態によるパス2の発生符号量である。曲線204は、従来技術によるパス2の発生符号量である。
同図より、従来技術では、パス2の発生符号量が目標符号量を超えてしまっている。これは、上述したように、従来技術では、Q13より量子化ステップが大きい量子化器を選択することができないためである。これに対し、本実施の形態では、パス2の発生符号量が目標符号量内に収まっている。
これらの結果から明らかなように、本実施の形態では、パス1で算出した符号量予測モデルに対し信頼度を設定し、パス2において信頼度に応じた符号量制御を行う。これにより、従来技術と比較して高精度の制御を行うことができ、高画質を実現することができる。
続いて、図14に示した累積発生符号量予測が得られた場合について説明する。
例えば、図14に示す累積発生符号量予測を得るために行ったパス1の仮符号化の結果、6つの代表量子化器の発生符号量はそれぞれ、Q1の発生符号量が1300ビット、Q7の発生符号量が1200ビット、Q13の発生符号量が1100ビット、Q19の発生符号量が800ビット、Q25の発生符号量が400ビット、Q31の発生符号量が200ビットであったとする。第2の課題で示したように、そもそも発生符号量が少なく、各代表量子化器での発生符号量に大きな差が現れていない。
信頼度を算出すると、
(Q1の発生符号量−Q7の発生符号量)=(1300−1200)=100であり、128より小さい、よって(式1)は満たしていない。
(Q7の発生符号量−Q13の発生符号量)=(1200−1100)=100であり、128より小さい、よって(式2)は満たしていない。
(Q13の発生符号量−Q19の発生符号量)=(1100−800)=300であり、128より大きい、よって(式3)は満たしている。
(Q19の発生符号量−Q25の発生符号量)=(800−400)=400であり、128より大きい、よって(式4)は満たしている。
(Q25の発生符号量−Q31の発生符号量)=(400−200)=200であり、128より大きい、よって(式5)は満たしている。
以上のように(式1)及び(式2)が成立していないため、パス1の信頼度は0となる。
パス1の信頼度が0であるため、制御部151は、Qinitを量子化器発生符号量予測より算出し、Qinitで符号化を進めていく。制御領域において量子化器の変更を行うとき、現在の発生符号量が累積発生符号量予測より多ければ量子化器番号を1つ大きくする。現在の発生符号量が累積発生符号量予測より少なければ量子化器番号を1つ小さくする。これは、従来技術と異なる動作である。
例えば、パス2の本符号化において、Q4をQinitとして符号化を行い、制御領域304(CZ3)まで符号化が終了した時点で、累積発生符号量予測に対し1000ビット多く符号量が発生しているとする。
本実施の形態においては、パス1の信頼度が0であるため、量子化器の変更において量子化器発生符号量予測のデータを参照しない。この場合、パス2の発生符号量が累積発生符号量予測を超えているため、量子化器番号を1つ大きくしてQ5とする。
これに対し、量子化器の変更において量子化器発生符号量予測のデータを参照する従来技術では、図14の量子化器発生符号量予測から、Q4よりも発生符号量が1067ビット少なくなると予測されるQ12に変更を行う。
図6は、本実施の形態と従来技術との量子化器番号の変化を示す図である。図6に、制御領域301(CZ0)、302(CZ1)、303(CZ2)、304(CZ3)、305(CZ4)での、本実施の形態と従来技術とにおける量子化器番号の変化を示す。縦軸は量子化器番号、横軸は制御領域番号を示す。
曲線210は、本実施の形態における量子化番号の推移を示す。曲線211は、従来技術における量子化器番号の推移を示している。
制御領域304(CZ3)及び305(CZ4)での量子化器番号の変化に注目すると、本実施の形態では量子化器番号の差は1であるが、従来技術では量子化器番号の差は8である。
制御領域304(CZ3)及び305(CZ4)は同じオブジェクトの一部を含んでいるとすると、従来技術においては、同じオブジェクト内で量子化器番号が8変化する。これにより、オブジェクト内で画質差が生じ、境界が見えてしまい、復元画像の画質において非常に大きな劣化を引き起こしてしまう。
これに対し、本実施の形態においては、同じオブジェクト内の量子化器番号の変化は1であるため、オブジェクト内での画質差はほとんど生じず、良質な復元画像を提供することができる。
これらの結果から明らかなように、本実施の形態では、パス1で算出した符号量予測モデルに対し信頼度を設定し、パス2において信頼度に応じた符号量制御を行う。これにより、オブジェクトに偏りがあるCG画像などの特殊な画像に対しても、従来技術と比較して高精度の制御を行うことができ、高画質を実現することができる。
以上、本発明の画像符号化装置について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を実施の形態に施したものも、本発明の範囲内に含まれる。
例えば、本実施の形態では、代表量子化器を6個として説明を行ったが、代表量子化器を増やしてもかまわない。ただし、その場合、信頼度を求める条件が以下のようになる。
代表量子化器の個数を11個、各代表量子化器をQ1、Q4、Q7、Q10、Q13、Q16、Q19、Q22、Q25、Q28、Q31とし、量子化ステップにおいて、Q1<Q4<Q7<Q10<Q13<Q16<Q19<Q22<Q25<Q28<Q31、発生符号量において、Q1>Q4>Q7>Q10>Q13>Q16>Q19>Q22>Q25>Q28>Q31なる関係が成立しているとき、
パス1で算出された各代表量子化器の発生符号量の信頼度が1となる条件は、
(式6)(Q1の発生符号量 − Q4の発生符号量)> 特定の閾値
(式7)(Q4の発生符号量 − Q7の発生符号量)> 特定の閾値
(式8)(Q7の発生符号量 − Q10の発生符号量)> 特定の閾値
(式9)(Q10の発生符号量 − Q13の発生符号量)> 特定の閾値
(式10)(Q13の発生符号量 − Q16の発生符号量)> 特定の閾値
(式11)(Q16の発生符号量 − Q19の発生符号量)> 特定の閾値
(式12)(Q19の発生符号量 − Q22の発生符号量)> 特定の閾値
(式13)(Q22の発生符号量 − Q25の発生符号量)> 特定の閾値
(式14)(Q25の発生符号量 − Q28の発生符号量)> 特定の閾値
(式15)(Q28の発生符号量 − Q31の発生符号量)> 特定の閾値
としたときに、(式6)〜(式15)の全てが成立することである。
また、本実施の形態では、信頼度が0か1のいずれかになる場合について述べたが、0と1との間の値をとることも考えられる。
図7を用いて、信頼度が0と1との間の値をとる場合について説明する。図7は、代表量子化器に割り当てたマクロブロックの符号量が偏っていた場合の量子化器発生符号量予測の一例を示す図である。ここで代表量子化器の数は6個であり、代表量子化器をそれぞれ、Q1、Q7、Q13、Q19、Q25、Q31とし、量子化ステップの大きさは、Q1<Q7<Q13<Q19<Q25<Q31であるとする。すなわち、発生符号量は、Q1>Q7>Q13>Q19>Q25>Q31となる。
同図において、曲線220は量子化器発生符号量予測を示している。曲線220において、ポイント222は代表量子化器Q19での発生符号量予測、ポイント223は代表量子化器Q25での発生符号量予測を示している。
ここでは、代表量子化器Q19には、発生符号量が少ないマクロブロック(オブジェクトを含まない平坦なマクロブロック)が他の代表量子化器と比べて多く、発生符号量が多いマクロブロック(オブジェクトを含むマクロブロック)が他の代表量子化器と比べて少ない。これに対し、代表量子化器Q25には、発生符号量が少ないマクロブロック(オブジェクトを含まない平坦なマクロブロック)が他の代表量子化器と比べて少なく、発生符号量が多いマクロブロック(オブジェクトを含むマクロブロック)が他の代表量子化器と比べて多い。
そのため、量子化ステップはQ19<Q25であるから、通常、発生符号量においてQ19>Q25が成立するはずであるが、図7に示すように発生符号量においてQ19<Q25となっている。
同図に正しい量子化器発生符号量予測を示し、これを曲線221と表現する。
パス1の仮符号化の結果、Q1の発生符号量が1500ビット、Q7の発生符号量が1000ビット、Q13の発生符号量が700ビット、Q19の発生符号量が200ビット、Q25の発生符号量が400ビット、Q31の発生符号量が200ビットであったとする。
信頼度の算出式、
(式1)(Q1の発生符号量 − Q7の発生符号量) > 特定の閾値
(式2)(Q7の発生符号量 − Q13の発生符号量)> 特定の閾値
(式3)(Q13の発生符号量 − Q19の発生符号量)> 特定の閾値
(式4)(Q19の発生符号量 − Q25の発生符号量)> 特定の閾値
(式5)(Q25の発生符号量 − Q31の発生符号量)> 特定の閾値
に対し、特定の閾値を128とし、図7に示す量子化器発生符号量予測を上式に当てはめると、
(Q1の発生符号量−Q7の発生符号量)=(1500−1000)=500であり、128より大きい、よって(式1)は満たしている。
(Q7の発生符号量−Q13の発生符号量)=(1000−700)=300であり、128より大きい、よって(式2)は満たしている。
(Q13の発生符号量−Q19の発生符号量)=(700−200)=500であり、128より大きい、よって(式3)は満たしている。
(Q19の発生符号量−Q25の発生符号量)=(200−400)=−200であり、128より小さい、よって(式4)は満たしていない。
(Q25の発生符号量−Q31の発生符号量)=(400−200)=200であり、128より大きい、よって(式5)は満たしている。
以上のように(式3)が成立していないため、パス1の信頼度は0となる。信頼度が0と判断された場合、量子化器の変更において量子化器発生符号量予測のデータを参照しない。よって、パス2の発生符号量が累積発生符号量予測より大きければ、制御領域で量子化器を1大きくする。パス2の発生符号量が累積発生符号量予測より小さければ、制御領域で量子化器を1小さくする。
しかしながら、量子化ステップと発生符号量との逆転が起きているのはQ13、Q19、Q25、Q31の間にある量子化器であり、それ以外のQ1、Q7、Q13の間にある量子化器については曲線221上にあり、予測値としての精度は高いと考えられる。
ここでQinitに着目すると、QinitはQ4である。量子化器番号4の量子化器で符号化を始め、各制御領域で量子化器の変更を行うが、量子化器番号が13以降まで変更になる可能性は低い。
そのため、図7に示した例においては、量子化器発生符号量予測を参照したほうが、より高い精度での符号量制御が可能である。
これらのことから、信頼度の算出式に以下に示すような重み付けを用いる。
(式1)(Q1の発生符号量 − Q7の発生符号量) > 特定の閾値
(式2)(Q7の発生符号量 − Q13の発生符号量)> 特定の閾値
(式3)(Q13の発生符号量 − Q19の発生符号量)> 特定の閾値
(式4)(Q19の発生符号量 − Q25の発生符号量)> 特定の閾値
(式5)(Q25の発生符号量 − Q31の発生符号量)> 特定の閾値
において、それぞれの式毎に信頼度を設定する。すなわち、(式1)を満たす場合に、(式1)の信頼度を1とする。(式1)を満たさない場合に、(式1)の信頼度を0とする。
(Q1の発生符号量−Q7の発生符号量)=(1500−1000)=500であり、128より大きいため、(式1)は満たしている。よって、条件(式1)の信頼度は1である。
(Q7の発生符号量−Q13の発生符号量)=(1000−700)=300であり、128より大きいため、(式2)は満たしている。よって、条件(式2)の信頼度は1である。
(Q13の発生符号量−Q19の発生符号量)=(700−200)=500であり、128より大きいため、(式3)は満たしている。よって、条件(式3)の信頼度は1である。
(Q19の発生符号量−Q25の発生符号量)=(200−400)=−200であり、128より小さいため、(式4)は満たしていない。よって、条件(式4)の信頼度は0である。
(Q25の発生符号量−Q31の発生符号量)=(400−200)=200であり、128より大きいため、(式5)は満たしている。よって、条件(式5)の信頼度は1である。
QinitはQ4であるから、以下に示すような、各条件の信頼度にQinitからの距離に応じた重み付け係数を定める。すなわち、Qinitと代表量子化器との量子化ステップの差が小さいほど、大きい値となる重み付け係数を定める。
例えば、条件(式1)の重み付け係数は0.35、条件(式2)の重み付け係数は0.35、条件(式3)の重み付け係数は0.2、条件(式4)の重み付け係数は0.05、条件(式5)の重み付け係数は0.05とする。なお、全重み付け係数の和は1となるように、各重み付け係数を定める。先に算出した各条件の信頼度に重み付け係数を掛けると、
1×0.35+1×0.35+1×0.2+0×0.05+1×0.05
=0.9
となる。制御部151は、以上のように算出された信頼度が所定の閾値以上であれば、量子化器発生符号量予測を参照して符号量制御を行う。また、算出された信頼度が所定の閾値より小さければ、量子化器発生符号量予測を参照しないで符号量制御を行う。例えば、信頼度が0.7以上であれば、量子化器発生符号量予測を参照して符号量制御を行うが、信頼度が0.7より小さければ、量子化器発生符号量予測を参照しないで符号量制御を行う。すなわち、図7の例では、量子化器発生符号量予測を参照して符号量制御を行う。なお、閾値は、ユーザによって任意に設定されてもよい。また、符号化対象画像の性質などによって設定されてもよい。例えば、CG画像などでは、第1の課題で示したように、正しい量子化器発生符号量予測が得られない可能性が高いので、閾値を大きく設定してもよい。
また、代表量子化器の発生符号量予測の差分の大きさに応じた重み付けをつけても構わない。さらには、量子化器発生符号量予測の傾きの大きさに応じた重み付けをつけても構わない。
本実施の形態のように、パス1で算出した符号量予測モデルに対し信頼度を設定し、パス2において信頼度に応じた符号量制御を行うことで、従来技術と比較して高精度の制御を行うことができ、高画質を実現することができる。
本実施の形態では、MPEG2規格を用いて画像又は動画像を符号化する場合について説明したが、本発明はこれに限定されない。例えば、H.264規格についても応用することができる。
なお、本実施の形態では、信頼度が低く、量子化器発生符号量予測を参照しない場合に、量子化器番号を1ずつ増加又は減少する構成としたが、より大きな又は小さな量子化ステップの量子化器に変更する構成としてもよい。ただし、第2の課題で説明したように、量子化ステップが大きく変更すると、復号画像の画質が低下するので、量子化器の極端な変更は好ましくない。
また、本実施の形態では制御領域を定め、制御領域毎に、実際の符号量と予測値との比較を行う構成としたが、制御領域とは無関係の1以上のマクロブロックの符号化が終了する度に比較を行う構成としてもよい。ただし、マクロブロック1つ毎に比較を行うと符号量の変動が激しく、結果として量子化器の変更が非常に多くなる場合がある。このため、2以上の所定数のマクロブロック毎に比較を行う方が好ましい。
なお、本発明は、上述したように、画像処理装置及び画像処理方法として実現できるだけではなく、本実施の形態の画像処理方法をコンピュータに実行させるためのプログラムとして実現してもよい。また、当該プログラムを記録するコンピュータ読み取り可能なCD−ROMなどの記録媒体として実現してもよい。さらに、当該プログラムを示す情報、データ又は信号として実現してもよい。そして、これらプログラム、情報、データ及び信号は、インターネットなどの通信ネットワークを介して配信されてもよい。