以下、発明を実施するための形態(以下、「実施の形態」とする)について説明する。なお、説明を以下の順序で行う。
1.実施の形態
2.変形例
<1.実施の形態>
[1−1.画像処理装置の構成]
図1は、実施の形態としての画像処理装置100の基本機能ブロック図を示している。この画像処理装置100は、簡易符号量予測部110と、バックサーチ部120と、エンコード部130を有している。
簡易符号量予測部110は、入力画像から、簡易プレコード(符号量推定)により、おおよその量子化パラメータを推定する。バックサーチ部120は、簡易符号量予測部110で推定された量子化パラメータを起点にして、バックサーチを行って、前回のエンコード時の量子化パラメータを推定する。エンコード部130は、簡易符号量予測部110で推定された量子化パラメータおよびバックサーチ部120で得られた量子化パラメータに基づいて、実際にエンコードに使う量子化パラメータを決定して、エンコード(符号化)を行って、出力ストリームを得る。
図2は、画像処理装置100の具体的な構成例を示している。画像処理装置100は、H.264/AVC(Advanced VideoCoding;高度動画像圧縮符号化標準)等に代表される算術符号化を用いた画像圧縮方式で、符号量制御を行う。その際に、ピクチャ内で良好な符号量分布を実現し、同時にダビング特性を向上させるために、第1のプレエンコード部1で求めたパラメータを用いて、第2のプレエンコード部と前モード推定プレエンコード部40によるプレエンコードを並列に行い、ダビングモードでエンコードをするか、原画モードでエンコードをするかを決定する。本エンコード部3では、原画モードかダビングモードであるかにより、エンコードに使うパラメータを切り替えて本エンコードを行う。
画像処理装置100は、第1のプレエンコード部1および第2のプレエンコード部2により、量子化と符号長計算部のみ並列に行い、他の処理要素は共用することで、回路共通化による回路規模の削減を図る。つまり、本来であれば、並列プレエンコードを行う場合には、全ての処理要素を並列に設ける必要がある。この画像処理装置100では、精度に影響なく共通化できる処理要素を的確に特定して共通化し、回路規模と遅延時間(Latency)の増加を抑える。
第1のプレエンコード部1では、少し精度を落とし回路規模並びに処理負荷を抑えた並列プレエンコードを広い範囲の量子化パラメータ(QP)で行い、目標符号量を実現するQPを粗く見積もる。第2のプレエンコード部2では、精度を上げた並列プレエンコードを狭い範囲で行い、本エンコード部3で使用する基本量子化パラメータQPMBを決定する。以上により、画像処理装置100は、画像符号化の精度を上げつつ処理負荷を軽減する。さらに、プレエンコードを簡略化したことによる誤差がビットレートや量子化パラメータQPと相関を持つことから、詳細は後述するような統計モデルを予め作成しておき、ビットレートや量子化パラメータQPから誤差の補正を行うこととしている。
画像処理装置100は、第1のプレエンコード部1、第2のプレエンコード部2、本エンコード部3、符号量制御部4、ディレイバッファ5,6、前モード推定プレエンコード部40を有している。
第1のプレエンコード部1は、第1のプレエンコードを行うモジュールであり、画面内予測モード決定部11、画面内予測処理部12、DCT(Discrete Cosine Transform;離散コサイン変換)部13、量子化部14、エントロピー符号長計算部15、アクティビティ(Activity)計算部16を備えている。第2のプレエンコード部2は、第2のプレエンコードを行うモジュールであり、画面内予測処理部21、DCT部22、量子化部23、エントロピー符号長計算部24、バッファ25、IDCT(Inverse DCT)部26、逆量子化部27を備えている。
前モード推定プレエンコード部40は、バックサーチを行うモジュールであり、画面内予測処理部41、DCT部42、バックサーチ部43、バッファ44、量子化部45、エントロピー符号長計算部46を備えている。本エンコード部3は、本エンコードを行うモジュールであり、画面内予測処理部31、DCT部32、量子化部33、エントロピー符号化部34、バッファ35、IDCT部36、逆量子化部37を備えている。符号量制御部4は、符号量制御を行うモジュールである。
[1−2.量子化パラメータおよび量子化行列の予測]
[1−2−1.低精度発生符号量の算出]
画像処理装置100は、符号化難易度に応じて例えば3つの量子化行列 Q Matrixを適用的に選択して使用する(詳しくは後述する)。画像処理装置100は、量子化行列Q Matrixを設定すると共に、この量子化行列Q Matrixの取り得る範囲の量子化パラメータQPについて、第1のプレエンコード部1による簡易な処理によって発生符号量を粗く見積もる。以下、このプレエンコード部1で見積もられた発生符号量を低精度発生符号量と呼ぶ。
画像処理装置100は、全ての量子化行列Q Matrixについて同様の処理を実行し、量子化行列Q Matrixおよび量子化パラメータQPを変更したときの低精度発生符号量を算出する。そして、画像処理装置100は、低精度発生符号量が目標符号量に最も近くなる量子化パラメータQPおよび量子化行列QMatrixを、次のステップである第2のプレエンコード部2で使用する。この場合、量子化パラメータQPを第2のプレエンコード部2でピクチャの平均量子化パラメータBaseQPとして使用する予測量子化パラメータQPdとし、量子化行列 Q Matrixを第2のプレエンコード部2で使用するピクチャの量子化行列Q Matrix(以下、「予測量子化行列 Q MatrixD 」と呼ぶ)とする。
このとき、画像処理装置100は、離散的に選択された一部の量子化パラメータQP(以下、「選択量子化パラメータQPl」と呼ぶ)を用いて入力画像91における低精度発生符号量を算出する。画像処理装置100は、選択量子化パラメータQPl間の低精度発生符号量を補間によって算出することにより、量子化行列Q Matrixが取り得る範囲の量子化パラメータQPの全てについて、低精度発生符号量を算出する。
実際上、入力画像91は、最初に第1のプレエンコード部1の画面内予測モード決定部11に入力される。画面内予測モード決定部11は、この入力画像91に基づいて、全ての画面内予測モードによって差分画像データを生成すると共に、当該差分画像データの発生符号量の予測に基づいて画面内予測モードを決定する。予測モード(予測方向)は、最小4×4画素単位で9通りの予測モードの中から決定される。
この決定された画面内予測モードは、画面内予測処理部12に送出されると共に、第2のプレエンコード部2や本エンコード部3にも送出される。この画面内予測モードは、第2のプレエンコード部2による第2のプレエンコード、本エンコード部3による本エンコードでも使用される。
画面内予測処理部12は、予測画像と入力画像91との差分画像を計算し、差分画像データを生成する。ここでの予測画像は、処理を削減するため入力画像91から作られる。このように、第1のプレエンコード部1は、入力画像を用いて画面内予測処理を行うことで、逆量子化部、IDCT部、バッファを削減することができ、回路規模を削減することが可能となる。
DCT部13は、差分画像データに対して整数精度DCT処理を実行し、DCT係数を生成すると、これを量子化部14に送出する。量子化部14は、このDCT係数について量子化を行い、量子化係数を生成すると、これをエントロピー符号長計算部15に送出する。エントロピー符号長計算部15は、量子化係数に対し、コンテキスト適応型可変長符号化方式(CAVLC;Context-Adaptive Variable Length Coding)を行うことにより符号量を計算する。CAVLCによれば、周囲の状況に応じて高効率の符号化方式を適応的に選択できる。
このように、第1のプレエンコードでは、本エンコードにおいてエントロピー符号化方式としてCABAC( Context-Adaptive Binary Arithmetic Coding )を用いる場合でも、符号量計算にCAVLCを用いることを特徴の一つとしている。なお、CABACとは、コンテキスト適応型2値算術符号化方式である。
ここで、量子化部14は、並列に設けられた量子化部14−1,・・・,14−n(n=1,2,3・・)により構成され、エントロピー符号長計算部15は、並列に設けられたエントロピー符号長計算部15−1,・・・,15−n(n=1,2,3・・)により構成されている。nの値は、例えば15に設定されている。量子化部14は、0〜51でなる量子化パラメータQPのうち、設定されている量子化行列QMatrixに対応した選択量子化パラメータQPlを各量子化部14−1,・・・,14−nに設定する。
この選択量子化パラメータQPlは、量子化行列Q Matrixが取り得る量子化パラメータQPの範囲から、任意の間隔で離散的に選択される。なお、選択量子化パラメータQPlは、例えば一定間隔で選択されても良く、量子化パラメータQPの値に応じて変化する間隔で選択されても良い。このような構成の下、第1のプレエンコード部1は、量子化と符号長計算を、上記並列数と同数の複数の量子化パラメータQPに対して並列に実行し、それぞれの発生符号量を符号量制御部4に出力する。
すなわち、第1のプレエンコード部1は、量子化部14、エントロピー符号長計算部15による回路規模を抑えた並列プレエンコードにより、広い範囲の量子化パラメータQPで第1のプレエンコードを行うことで、広い範囲の量子化パラメータQPに対する発生符号量を算出する。
アクティビティ計算部16は、画面内予測モード決定部11による画面内予測モードの決定と同時並行して、アクティビティ(Activity)を計算し、このアクティビティによりマクロブロック(MB;Macro Block)をグループ分けする。つまり、NumOfActivityGroup のグループに分ける場合を想定すると、アクティビティ計算部16は、ActivityThreshold[0]〜ActivityThreshold[NumOfActivityGroup-2]とアクティビティの値とを比較することにより、アクティビティグループを決定する。
なお、量子化処理において実際に使用される量子化パラメータQPは、以下の数式(1)に示すように、ピクチャの平均量子化パラメータQP(BaseQP)に対して、アクティビティグループに依存したオフセット(AdaptQPDelta)を加えることで求められる。
MB_QP=BaseQP+AdaptQPDelta[Activity_group] ・・・(1)
例えば、NumOfActivityGroup を13とするなら、AdaptQPDelta の各値は、ADAPTQPDELTA[13]={-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6} とすることができる。各MBに対して決定されたアクティビティグループ(Activity Group)番号は、量子化部14に入力される。量子化部14は、選択量子化パラメータQPlに対し、アクティビティグループに応じたオフセットを付加して適応量子化パラメータQPtを算出する。量子化部14は、適応量子化パラメータQPtに基づいて、DCT係数に対する量子化処理を実行する。
第1のプレエンコード部1は、次の量子化行列 Q Matrix およびこの量子化行列Q Matrix に対応する選択量子化パラメータQPlを設定することにより、同様にして発生符号量を算出する。この結果、第1のプレエンコード部1は、量子化行列Q Matrix およびこの量子化行列 Q Matrix に対応する選択量子化パラメータQPlについて、発生符号量をそれぞれ算出することになる。
[1−2−2.発生符号量の誤差の補正]
符号量制御部4は、第1のプレエンコード部1において算出された発生符号量に対して補正を行う。ここでの補正は、誤差が、ある程度の傾向を持っている事を利用して行う。第1の誤差要因は、画面内予測処理にローカルデコード(Local Decode)画ではなく入力画像91を用いている事である。
この場合、画面内予測に使う画にコーデック(Codec)による歪がのっていないので、実際のエンコードより符号化効率が良くなり、符号量が少なめに出る傾向がある。この誤差の大きさは、歪の大きさに依存するので、発生符号量と誤差の関係では、ビットレート(Bit rate)が小さくなると誤差が大きくなる傾向がある。また、量子化パラメータQPと誤差の関係では、量子化パラメータQPが大きくなると誤差が大きくなる傾向にある。よって、予め誤差の大きさの統計データを取り、ビットレート“r”とQP“q”の関数として定義する。
具体的に、符号量制御部4は、CAVLCによって符号化されたときの発生符号量について、ビットレートによる平均的な誤差のモデル、量子化パラメータQPによる平均的な誤差のモデルをそれぞれ作成しておく。この誤差モデルは、量子化パラメータQPおよびビットレートにそれぞれ対応する例えば数式やテーブルとして予め記憶される。
符号量制御部4は、量子化パラメータQPおよびビットレートから補正すべき誤差を表す補正量C_rate、C_qpを、対応する誤差モデルからそれぞれ算出する。符号量制御部4は、量子化パラメータQPおよびビットレートに対応する補正量C_rate、C_qp のうち、以下の数式(2)に従って、小さい値を補正量Cvとして選択する。
補正量Cv=min(C_rate、C_qp) ・・・(2)
これにより、誤差の補正量が大きくなり過ぎてしまい、補正された発生符号量が第2のプレエンコード部2において算出される高精度発生符号量よりも大きくなってしまうことを防止し得るようになされている。なお、この補正量C_rate、C_qp は、第1のプレエンコード部1によって算出された発生符号量(Pre-Encode 符号量)に対する補正量の割合(%)を表している。
符号量制御部4は、第1のプレエンコード部1によって算出された発生符号量に対し、以下の数式(3)に従って、補正量Cvを乗算することにより、発生符号量に対する補正量(以下、「CAVLC補正符号量」と呼ぶ)を算出する。符号量制御部4は、発生符号量に対してCAVLC補正符号量を加算することにより、CAVLCについての低精度発生符号量を算出する。
CAVLC補正符号量=Pre-Encode符号量 × Cv ・・・(3)
第2の誤差要因は、エントロピー符号化方式でCABACを選択したときのみ発生するものである。第1のプレエンコード部1では、CABACによる符号化を実行せず、CAVLCの符号量からCABACによって符号化したときの低精度発生符号量を予測する。CABACはCAVLCより符号化効率が良いので、CAVLCでプレエンコードした発生符号量は、実際の符号量より多めに出る傾向がある。
例えば、発生符号量と誤差の関係では、この誤差の大きさは統計的に見てビットレート(Bitrate)が小さくなるとCABACの効率が良くなることに起因して、大きくなる傾向にある。これも同様に、予め誤差の大きさの統計データを取り、平均的な誤差のモデルを作成しておくことで補正する。
CABACに起因する誤差は、CAVLCの符号量による符号化において生じる誤差と比較して、量子化パラメータQPおよびビットレートに関し反対側に変化し、その変化量は小さいことが明らかになった。そこで、CABACについての補正量(以下、「CABAC補正量」と呼ぶ)をビットレート“r”とQP“q”の関数として定義する。このとき、補正量Cbは、以下の数式(4)によって、算出される。
補正量Cb=min(r,q) ・・・(4)
符号量制御部4は、第1のプレエンコード部1によって算出された発生符号量(Pre-Encode符号量)に対し、以下の数式(5)に従って、補正量Cvを乗算することにより、発生符号量に対する補正量(以下、「CABAC補正符号量」と呼ぶ)を算出する。
CABAC補正符号量= Pre-Encode 符号量 × Cb ・・・(5)
符号量制御部4は、低精度発生符号量に対してCABAC補正符号量を加算することにより、CABACについての低精度発生符号量を算出する。符号量制御部4は、図3に示すように、第1のプレエンコード部1によって算出された発生符号量(四角で表す)に対して補正されたCAVLC補正量およびCABAC補正符号量(黒丸で表す)をそれぞれ算出することができる。
次に、符号量制御部4は、量子化パラメータ(QP)の推定処理を行う。上述したように、第1のプレエンコード部1は、任意の間隔で、離散的な値の選択量子化パラメータQPlでプレエンコードを行って発生符号量を取得している。符号量制御部4は、量子化行列Q Matrixの取り得る量子化パラメータQPの範囲のうち、選択量子化パラメータQPl以外の量子化パラメータQPに関して、補間により発生符号量を計算する(白丸で示す)。
補間処理としては、線形補間など一般的な補間処理を用いることができる。すなわち、図3に示すように、第1のプレエンコード部1で得た離散的な値の量子化パラメータQP(四角で示す)ついて、補正を行い補正後の量子化パラメータQP(黒丸で示す)を得て、更に、その間の量子化パラメータQP(白に丸で示す)について補間により符号量を計算することになる。
このように、符号量制御部4は、第1のプレエンコード部1によって算出された発生符号量に対し、この第1のプレエンコード部1において簡易化した処理に応じて発生する発生符号量の誤差を補正してCAVLCについての低精度発生符号量を算出する。これにより、符号量制御部4は、簡易化された符号化処理による発生符号量の予測精度を向上させ得る。
符号量制御部4は、CAVLCについての低精度発生符号量を用いてCABACによる発生符号量の予測量である低精度発生符号量を算出する。これにより、符号量制御部4は、処理の複雑なCABACを行うことなく、CABACによる低精度発生符号量を見積もることができる。
符号量制御部4は、離散的に選択された選択量子化パラメータQPlによって予測された低精度発生符号量から、補間処理により、この選択量子化パラメータQPl以外の量子化パラメータQPについての低精度発生符号量を予測する。これにより、符号量制御部4は、わざわざ全ての量子化パラメータQPを用いて入力画像91を符号化せずに済み、第1のプレエンコード部1の構成を簡易にすることができる。
[1−2−3.予測量子化行列の決定]
上述したように、量子化行列 Q Matrix が取り得る全ての量子化パラメータQPについて、低精度発生符号量が算出された。符号量制御部4は、符号化難易度に応じて量子化行列 Q Matrixを変更し、変更された量子化行列 Q Matrix に対応する低精度発生符号量に基づいて、目標符号量に最も近い量子化パラメータQPを基本量子化パラメータQPMBとして選択するようになされている。
符号量制御部4は、量子化行列 Q Matrix毎に、目標符号量に一番近い低精度発生符号量が生成されたときに使用された量子化パラメータQPを近傍量子化パラメータQPnとして選択する。符号量制御部4は、符号化難易度として、例えば各量子化行列Q Matrix 毎に選択された近傍量子化パラメータQPnを使用する。もちろん、アクティビティなど別の指標を用いることも可能である。
ここでは、切り替えて使う量子化行列 Q Matrix の数を NumOfQMatrixId とし、傾斜の緩やかな量子化行列 Q Matrixから昇順にId(識別子)を付け、各量子化行列 QMatrixの取り得る範囲における最大の量子化パラメータQPを QMatrixThreshold[Id]とする。
符号量制御部4は、Idの値の小さい量子化行列 Q Matrix から近傍量子化パラメータQPnとQMatrixThreshold とを比較する。符号量制御部4は、近傍量子化パラメータQPnが QMatrixThreshold[Id]より小さい量子化行列 Q Matrix のうち、最小のIdを有する量子化行列 Q Matrixを予測量子化行列 Q MatrixD として決定する。符号量制御部4は、当該予測量子化行列 Q MatrixD における近傍量子化パラメータQPnを予測量子化パラメータQPdとして決定する。
すなわち、符号量制御部4は、低精度発生符号量が目標符号量に近い量子化パラメータQPを取り得る量子化行列 Q Matrix のうち、最小の傾斜を有する量子化行列 Q Matrix を予測量子化行列 Q MatrixD として決定する。この予測量子化行列 Q MatrixD は本エンコード部3による本エンコードにも使用されることになる。符号量制御部4は、低精度発生符号量の条件を満たす中で最小の傾斜を有する量子化行列Q Matrix を用いることができるため、画質の劣化を極力防止することができる。
なお、符号量制御部4は、第1のプレエンコード部1によってIdの小さい量子化行列Q Matrixから順に当該量子化行列 Q Matrix の取り得る範囲の選択量子化パラメータQPlについて低精度発生符号量を算出する。そして符号量制御部4は、近傍量子化パラメータQPnがQMatrixThreshold[Id] より小さい量子化行列 Q Matrixを検出した場合には、当該量子化行列 Q Matrix および近傍量子化パラメータQPnを予測量子化行列 Q MatrixD および予測量子化パラメータQPdとして決定する。
このとき、符号量制御部4は、第1のプレエンコード部1に、次のピクチャに対する処理を開始させる。すなわち、符号量制御部4は、第1のプレエンコード部1に処理中のピクチャに関する次のIdの量子化行列 Q Matrix についての低精度発生符号量を算出させない。これにより、符号量制御部4は、予測量子化パラメータQPd及び予測量子化行列 Q MatrixD を決定するのに要する処理時間を短縮し得る。
このように、符号量制御部4は、低精度発生符号量が目標符号量に近くなる量子化パラメータQPを取り得る量子化行列 Q Matrix のうち、画質の低下を防止するために最も傾斜の小さい量子化行列 Q Matrixを予測量子化行列 Q MatrixD として選択する。
符号量制御部4は、予測量子化行列 Q MatrixD において低精度発生符号量が目標符号量に最も近くなる量子化パラメータQPを予測量子化パラメータQPdとして選択する。これにより、符号量制御部4は、画質を極力低下させないように適応的に量子化行列 Q Matrix を変更しつつ、低精度発生符号量が目標符号量に最も近くなる量子化パラメータQPを予測量子化パラメータQPdとして選択することができる。
[1−3.基本量子化パラメータの決定]
第2のプレエンコード部2は、予測量子化パラメータQPdおよび予測量子化行列 Q MatrixD を用いて実際にエンコーダ3と同様の符号化を実行することにより、高精度発生符号量を高い精度で算出する。以下、この第2のプレエンコード部2によって算出された発生符号量を高精度発生符号量と呼ぶ。このとき第2のプレエンコード部2は、予測量子化パラメータQPdだけでなく、この予測量子化パラメータQPdの前後の量子化パラメータQPを用いて高精度発生符号量を算出し、その変動率を用いて予測量子化パラメータQPd近傍の高精度発生符号量を予測する。
符号量制御部4は、予測量子化パラメータQPd、予測量子化行列 Q MatrixD および各MBのアクティビティグループを第2のプレエンコード部2に供給する。第2のプレエンコード部2は、これらの値に基づいて第2のプレエンコードを行う。第2のプレエンコード部2では、入力画像91が、ディレイバッファ5を介して遅延処理された後に画面内予測処理部21に入力される。
画面内予測処理部21は、予測画像と入力画像91との差分を計算し、差分画像データを生成する。そして、DCT部22は、差分画像データに対してDCT処理を実行しDCT係数を生成する。量子化部23は、DCT係数に対して量子化処理を実行し、量子化係数を生成する。エントロピー符号長計算部24は、CAVLCまたはCABACを用いて量子化係数をそれぞれエントロピー符号化し、高精度発生符号量を計算する。
なお、第2のプレエンコード部2における処理の過程において、量子化部23は量子化係数を逆量子化部27に送出する。逆量子化部27は、量子化係数を逆量子化して、DCT係数を再生する。そして、IDCT部26は、DCT係数をIDCT変換し、ローカルデコード画像を生成し、バッファ25に保存する。
ここで、量子化部23は、この例では3段の量子化部23−1,23−2,23−3により構成され、エントロピー符号長計算部24は、この例では3段のエントロピー符号長計算部24−1,24−2,24−3により構成されている。3段と少なくしているのは、既に第1のプレエンコードで量子化パラメータQPが広い範囲で粗く見積もられているからである。
このような構成の下、量子化部23、エントロピー符号長計算部24は、並列に処理を実行し、予測量子化パラメータQPdおよびこの予測量子化パラメータQPdの前後の量子化パラメータQPでの高精度発生符号量を得ることになる。このとき、エントロピー符号長計算部24は、本エンコード部3による本エンコードのエントロピー符号化方式と同じ方式をCABAC/CAVLCのいずれかから選択する。
続いて、符号量制御部4は、第2のプレエンコードにより得られた高精度発生符号量から、本エンコードで使用するピクチャの基本量子化パラメータQPMBを決定する。そして、符号量制御部4は、この決定されたピクチャの基本量子化パラメータQPMB や予測量子化行列 Q MatrixD 、各MBのアクティビティグループから、量子化の情報(Q Matrix、各MBのQP等)を本エンコード部3に送出する。
この場合、目標符号量が、第2のプレエンコードで得られた高精度発生符号量に挟まれている場合、つまり、以下の数式(6)で表される場合には、目標符号量に最も近い量子化パラメータQPを基本量子化パラメータQPMB として選択する。
Generated_bits(QP_precode 1 + 1) ≦ Target_bits
≦ Generated_bits(QP_precode 1 - 1) ・・・(6)
そうでない場合、符号量制御部4は、量子化パラメータQPの変化に対する高精度発生符号量の変動率を、第2のプレエンコードの結果から求める。測量子化パラメータQPdは、第1のプレエンコード部1による低精度発生符号量に基づいて算出されている。このため、目標符号量に最も近い量子化パラメータQPは、予測量子化パラメータQPdの近傍に存在する。量子化パラメータQPの値が近い場合、発生符号量の変動率は略一定である。
そこで、符号量制御部4は、予測量子化パラメータQPdおよび当該予測量子化パラメータQPdの前後の量子化パラメータQPにおける高精度発生符号量の変動率から各量子化パラメータQPでの高精度発生符号量を予測し、目標符号量に最も近い量子化パラメータQPを基本量子化パラメータQPMBとして選択する。
まず、量子化パラメータQPが「1」減算されたときに、高精度発生符号量が何%変わるかを表す DiffRatio_1 を、第2のプレエンコード2の結果から、以下の数式(7)に示すようにして、求める。なお、Generated_bits は第2のプレエンコード2における発生符号量を表しており、QP_precode1 は、予測量子化パラメータQPdを、QP_precode1-1 は予測量子化パラメータQPdより「1」小さい量子化パラメータQPを表している。
DiffRatio_1 =
Generated_bits(QP_precode1 - 1)
− Generated_bits(QP_precode 1 ))
/ Generated_bits(QP_precode 1 ) ・・・(7)
量子化パラメータQPが「1」加算されたときに、高精度発生符号量が何%変わるかを表すDiffRatio_2を、第2のプレエンコード2の結果から以下の数式(8)に示すようにして、求める。QP_precode1+1 は予測量子化パラメータQPdより「1」大きい量子化パラメータQPを表している。
DiffRatio_2 =
Generated_bits(QP_precode 1 )
− Generated_bits(QP_precode 1 + 1))
/ Generated_bits(QP_precode 1 + 1) ・・・(8)
予測量子化パラメータQPdの近傍における高精度発生符号量の変動率 DiffRatioを、以下の数式(9)のようにして、求める。すなわち、予測量子化パラメータQPdから正負の方向にそれぞれ「1」だけ変化したときの発生符号量の変動の平均値として、DiffRatio を算出する。
DiffRatio=(DiffRatio_1 + DiffRatio_2) / 2 ・・・(9)
DeltaQPを、高精度発生符号量が目標符号量に最も近い量子化パラメータQPと予測量子化パラメータQPd(QP_precode1 )との差の絶対値とする。このとき、目標符号量に最も近い高精度発生符号量に対応する量子化パラメータQPが、予測量子化パラメータQPdより1だけ小さい量子化パラメータQP(QP_precode1-1 )より小さいときには、高精度発生符号量が目標符号量に最も近い量子化パラメータQPの高精度発生符号量(Generated_bits(QP))を、以下の数式(10)に示すように、算出する。
Generated_bits(QP)
=Generated_bits(QP_precode1 - 1) × (1.0 + DiffRatio) ^ (DeltaQP-1)
・・・(10)
目標符号量に最も近い高精度発生符号量に対応する量子化パラメータQPが予測量子化パラメータQPdより1だけ大きい量子化パラメータQP(QP_precode1+1 )より大きいときには、高精度発生符号量が目標符号量に最も近い量子化パラメータQPの高精度発生符号量(Generated_bits(QP))を、以下の数式(11)に示すように、算出する。
Generated_bits(QP)
=Generated_bits(QP_precode1 + 1) × (1.0 + DiffRatio) ^(DeltaQP-1)
・・・(11)
すなわち、符号量制御部4は、予測量子化パラメータQPdの前後の量子化パラメータQPを用いたときの高精度発生符号量に対し、予測量子化パラメータQPdを中心に量子化パラメータQPの値が「1」だけ変化したときの変動率に応じた符号量だけ増減させる。符号量制御部4は、予測量子化パラメータQPdの近傍の量子化パラメータQPを用いた場合の高精度発生符号量を高い精度で算出することができる。
以上のようにして、符号量制御部4は、目標符号量に最も近い量子化パラメータQPを本エンコードにおいて平均量子化パラメータ(BaseQP)として使用する基本量子化パラメータQPMB として選択することになる。
上述したように、第2のプレエンコード部2では、第1のプレエンコード部1により推定された予測量子化パラメータQPd(QP_precode1 )と、ひとつ大きい量子化パラメータQP(QP_precode1+1 )、ひとつ小さい量子化パラメータQP(QP_precode1-1 )でプレエンコードする。ここで、回路規模削減のため、前述したように、量子化部23とエントロピー符号長計算部24のみ並列化し、その他の処理は共用する。
このとき、画面内予測処理で使用するローカルデコード(Local Decode )画は、第1のプレエンコード部1の結果に基づいて推定された予測量子化パラメータQPd(QP_precode1)で量子化したデータとする。つまり、逆量子化とIDCTで処理されるデータは、予測量子化パラメータQPd(QP_precode1 )の量子化の出力である。
これは、予測量子化パラメータQPdの前後の量子化パラメータQP(QP_precode1+1、QP_precode1-1 )を使うプレエンコードの画面内予測処理の入力を、自分自身のローカルデコード(Local Decode )画ではなく、予測量子化パラメータQPd(QP_precode1)のローカルデコード(Local Decode )画で代用することを意味する。
このように、符号量制御部4は、第1のプレエンコード部1の結果に基づく低精度発生符号量の予測により、低精度発生符号量が目標符号量に最も近くなる可能性が極めて高い予測量子化パラメータQPdおよびその前後の量子化パラメータQPによって本エンコードと同様の符号化によって高精度発生符号量を算出する。これにより、符号量制御部4は、予測量子化パラメータQPd及びその前後の量子化パラメータQPを用いた場合の高精度発生符号量をほぼ正確に算出することができる。
さらに本技術は、狭い範囲内では量子化パラメータQPの変化に伴う高精度発生符号量の変動率がほぼ一定であることに着目した。符号量制御部4は、予測量子化パラメータQPdおよびその前後の量子化パラメータQPにおける高精度発生符号量の変動率に基づいて、予測量子化パラメータQPdの近傍の量子化パラメータQPを用いたときの高精度発生符号量を算出する。これにより、符号量制御部4は、予測量子化パラメータQPdの近傍の量子化パラメータQPについても、ほぼ正確に高精度発生符号量を算出することができる。
[1−4.バックサーチ処理]
前モード推定プレエンコード部40は、バックサーチ処理を行って、前回の符号化に使用された量子化パラメータQPを求める。この際、第1のプレエンコード部1で求めた予測量子化行列 Q MatrixD を用い、また第1のプレエンコード部1で求めた予測量子化パラメータQPdを起点として、上下の一定の範囲の量子化パラメータQPに対して推定処理を行うことで、バックサーチ処理のサーチ範囲を限定し回路規模を削減する。
ここで、「バックサーチ」とは、以前の圧縮符号化で使用された量子化ステップ、あるいは、その倍数関係にある量子化ステップを用いると、離散余弦変換(DCT;discrete cosine transfer )係数の剰余の総和が極小となるという性質を利用して、最小値に係る量子化ステップを最適な量子化ステップとして求める手法である。
バックサーチ部43は、量子化パラメータQP検出機能、並びに画面内予測モードの検出機能を備える。バックサーチ部43は、量子化パラメータQP検出機能により、前回のエンコードの過程で得られるDCT係数に基づいて、前回のエンコードにおいて使われた量子化パラメータQPを検出する。以下、検出された量子化パラメータQPを検出量子化パラメータQPeと呼ぶ。
具体的に、バックサーチ部43は、MB毎にDCT係数を複数の量子化パラメータQPによるリスケーリングファクターRFで除算したときの剰余を用いて、検出量子化パラメータQPeを検出する。そして、バックサーチ部43は、画面内予測モード検出機能により、検出された検出量子化パラメータQPeに基づいて前回の符号化に使用された画面内予測モードを検出する。なお、本実施の形態においては、処理の軽減化のため、バックサーチとして検出量子化パラメータQPeと画面内予測モードの検出のみを実行する。
エントロピー符号長計算部46は、本エンコード部3による本エンコードのエントロピー符号化と同じ方式をCABAC/CAVLCから選択する。前モード推定プレエンコード部40は、検出量子化パラメータQPeおよび検出された画面内予測モードに基づいて、バックサーチ発生符号量を算出する。符号量制御部4は、こうして得られたバックサーチ発生符号量から、目標符号量を満たすかを判断する。
符号量制御部4は、第2のプレエンコード部2と前モード推定プレエンコード部40の結果から、原画モードでエンコードするか、ダビングモードでエンコードするかを決定し、最終的なエンコードのパラメータを決定する。符号量制御部4は、原画モード/ダビングモードの判定結果と、基本量子化パラメータQPMB 、予測量子化行列 Q MatrixD 、および画面内予測モード、並びに各MBのアクティビティグループ(以下、これらをまとめて「本エンコード情報」と呼ぶ)を本エンコード部3に渡す。
この結果、本エンコード部3は、原画モードおよびダビングモードのいずれかに移行し、原画モードおよびダビングモードに応じた本エンコード情報を用いてエンコードを行う。本エンコード部3は、ディレイバッファ6を介して遅延処理された入力画像91を受け取ると、第1のプレエンコード部1によって決定された画面内予測モードを用い、画面内予測処理部31によって予測画像と入力画像との差分画像データを生成する。DCT部32はDCT処理を行い、量子化部33はDCT係数の量子化を行う。
量子化部33の出力は逆量子化部37にも送られる。逆量子化部37は、逆量子化してDCT係数を再生する。そして、IDCT部36はDCT係数をIDCT変換し、入力画像を再生し、バッファ35に保存する。こうして、前述したようなDCT部32によるDCT、量子化部33によるDCT係数の量子化を経て、エントロピー符号化部34によりエントロピー符号化がなされ、目標符号量とされた出力ストリーム92が出力される。
[1−5.非原画に対するモードの選択]
原画モード/ダビングモードの判定処理について説明する。上述したように、バックサーチ部43によって、処理対象となるMBから検出量子化パラメータQPeが検出されている。このとき、入力画像91が原画あっても、偶発的にバックサーチが成功し、検出量子化パラメータQPeが検出される場合がある。逆に、入力画像91が非原画であっても、偶発的にバックサーチが不成功となり、検出量子化パラメータQPeが検出されない場合がある。
そこで、符号量制御部4は、バックサーチの成功率が閾値以上であるか否かにより、現在処理中の入力画像91におけるピクチャが原画であるか非原画であるかを判定する。ここで、原則として、ピクチャが非原画であるときに使用されるダビングモードでは、バックサーチが成功したMBに対しては検出量子化パラメータQPeを用いるのに対し、バックサーチが不成功のMBに対して基本量子化パラメータQPMB およびアクティビティによるオフセットを用いる。
このとき、これらの組み合わせによっては、ピクチャのバックサーチ発生符号量が目標符号量を超えてしまう場合がある。このため、符号量制御部4は、ピクチャが非原画であると判定した場合には、ダビングモードにおけるバックサーチ発生符号量を算出し、バックサーチ発生符号量が目標符号量内に収まる場合には、ダビングモードを選択し、バックサーチ発生符号量が目標符号量内に収まらない場合には、原画モードを選択するようになされている。
具体的に、符号量制御部4は、バックサーチが成功したMB(以下、[成功MB]と呼ぶ)の発生符号量の和( GenBits_success )を算出する。成功MBでは、アクティビティを考慮することなく、検出量子化パラメータQPeをそのまま使用する。そのため符号量制御部4は、成功MBについて、前モード推定プレエンコード部40によって算出された発生符号量を使用し、発生符号量の和(GenBits_success )を算出する。
符号量制御部4は、バックサーチが不成功のMB(以下、「不成功MB」と呼ぶ)について、第2のプレエンコード部2において算出された高精度発生符号量に基づいて、基本量子化パラメータQPMBを用いたときの発生符号量の和( GenBits_not_success )を算出する。上述したように、第2のプレエンコード部2では、量子化パラメータQPが「1」だけ変化したときの変動率(Diffratio )、および基本量子化パラメータQPMBを算出している。
符号量制御部4は、発生符号量の和( GenBits_not_success )に対し、予測量子化パラメータQPeと基本量子化パラメータQPMBとの差分値(Diff_QP)の回数だけ変動率( Diffratio )を乗算することにより、不成功MBについて基本量子化パラメータQPMBを用いたときの発生符号量(GenBits_not_success_rev )を算出する。
すなわち、基本量子化パラメータQPMBが予測量子化パラメータQPdより大きいとき、以下の数式(12)に示すように、発生符号量(GenBits_not_success_rev )を求める。一方、基本量子化パラメータQPMBが予測量子化バラメータQPdより小さいとき、以下の数式(13)に示すように、発生符号量( GenBits_not_success_rev )を求める。
GenBits_not_success_rev
= GenBits_not_success × (1.0 + Diffratio) ^ Diff_QP ・・・(12)
GenBits_not_success_rev
= GenBits_not_success × (1.0 - Diffratio) ^ Diff_QP ・・・(13)
符号量制御部4は、成功MBの発生符号量( GenBits_success )と不成功MBの発生符号量(GenBits_not_success_rev )を加算することにより、ダビングモードを使用した場合のピクチャのバックサーチ発生符号量(GenBits_rev )を、以下の数式(14)に示すように、算出する。
GenBits_rev
= GenBits_success + GenBits_not_success_rev ・・・(14)
次に、符号量制御部4は、ピクチャのバックサーチ発生符号量( GenBits_rev )が目標符号量内に収まるか否かについて判別する。
符号量制御部4は、以下の数式(15)に従って、ピクチャのバックサーチ発生符号量( GenBits_rev )と目標符号量(TargetBit )とを比較する。なお、α は、符号量の揺れがどの程度まで許容されるかによって決定される加算符号量である。
GenBits_rev ≦ ( TargetBits+α) ・・・(15)
符号量制御部4は、ピクチャのバックサーチ発生符号量( GenBits_rev )が目標符号量内に収まる場合、ダビングモードを選択する。一方、符号量制御部4は、ピクチャのバックサーチ発生符号量(GenBits_rev )が目標符号量内に収まらない場合、不成功MBの発生符号量( GenBits_not_success_rev)が計算によって算出されたことによる誤差によって目標符号量内に収まらない可能性があるため、この可能性について検証する。
符号量制御部4は、成功MBの発生符号量( GenBits_success )と不成功MBの予測量子化パラメータQPdを用いたときの発生符号量(GenBits_not_success )とを加算したピクチャの修正前発生符号量( GenBits )と目標符号量( TargetBit )とを、以下の数式(16)に従って、比較する。
GenBits ≦ ( TargetBits+α) (16)
符号量制御部4は、ピクチャの修正前発生符号量( GenBits )が目標符号量(TargetBit )を超えている場合、計算によって算出されたことによる誤差がない状態であっても、発生符号量が目標符号量(TargetBit )を超えているため、原画モードを選択する。
なお、前モード推定プレエンコード部40は、画面内予測処理部41で予測画像として入力画像91を使用しているが、一度エンコードされた画に対して、同じパラメータでエンコードした場合、歪は乗らない。ゆえに、入力画像91とローカルデコード(Local Decode )画像は同じになり、符号量に誤差は乗らない。よって、検出率が高い場合、予測画像として入力画像91を用いたことによる誤差は非常に小さく無視できる。
このように、符号量制御部4は、ピクチャが非原画であった場合には、ダビングモードを使用した場合におけるピクチャのバックサーチ発生符号量を予測し、ピクチャのバックサーチ発生符号量が目標符号量に収まる場合には、ダビングモードを選択する。一方、符号量制御部4は、ピクチャのバックサーチ発生符号量が目標符号量に収まらない場合には、原画モードを選択するようになされている。
[1−6.本エンコード]
本エンコード部3の画面内予測処理部31は、原画モードであれば、画面内予測モード決定部11で決定された画面内予測モードを処理対象となるMBに対して使用する。そして、量子化部33は、第2のプレエンコード部2の結果に応じて決定された基本量子化パラメータQPMB を使用する。
画面内予測処理部31は、ダビングモードであれば、処理対象となるMBごとに使用する画面内予測モードを変更する。すなわち、画面内予測処理部31は、処理対象となるMBにおいてバックサーチが成功した場合には、バンクサーチ部43によって検出された画面内予測モードを使用する。画面内予測処理部31は、処理対象となるMBにおいてバックサーチが不成功であった場合には、第1のプレエンコード部1によって検出された第1位の画面内予測モードを使用する。
このとき、量子化部33は、処理対象となるMBごとに使用する量子化パラメータQPを変更する。すなわち、画面内予測処理部31は、処理対象となるMBにおいてバックサーチが成功した場合には、符号量抑制の必要性の判定結果に応じて、第2のプレエンコード部2の結果に応じて決定された基本量子化パラメータQPMB 、またはバックサーチ部43によって検出された検出量子化パラメータQPeを選択的に使用する。
すなわち、符号量制御部4は、符号量抑制が必要でないと判定する場合、検出量子化パラメータQPeを使用するように、量子化部33を制御する。また、符号量制御部4は、符号量抑制が必要であると判定する場合、検出量子化パラメータQPeが基本量子化パラメータQPMB より小さくないとき、この検出量子化パラメータQPeを使用するように、量子化部33を制御する。さらに、符号量制御部4は、符号量抑制が必要であると判定する場合、検出量子化パラメータQPeが基本量子化パラメータQPMB より小さいとき、基本量子化パラメータQPMB を使用するように、量子化部33を制御する。
なお、後述するように、検出量子化パラメータQPeは、ピクチャ発生符号量がピクチャ目標符号量を超えないようにフィードバック制御が行われる。符号量制御部4は、直前のフィードバック制御単位までの発生符号量積算値が直前のフィードバック制御単位までの目標符号量積算値より大きいとき、符号量抑制が必要であると判定する。
なお、基本量子化パラメータQPMBは、平均量子化パラメータ( BaseQP )として用いられ、第1のプレエンコード部1によって決定されたアクティビティグループに応じたオフセットが付加される。量子化部33は、バックサーチの成功の有無に拘らず、量子化行列 Q Matrixとして第1のプレエンコード部1によって決定された予測量子化行列 Q MatrixDを用いる。
[1−7.本エンコードにおけるフィードバック制御]
画像処理装置100は、上述したように、本エンコード発生符号量が目標符号量に最も近くなると予測される基本量子化パラメータQPMB を用いたフィードフォワード制御により、本エンコードを実行する。そのため、画像処理装置100は、ほとんどの場合、本エンコード発生符号量を目標符号量に抑えることができる。
しかし、画像処理装置100は、ごく稀に高精度発生符号量の算出を失敗し、不適切な基本量子化パラメータQPMB を選択してしまう場合がある。そこで、画像処理装置100は、かかる場合に対処するべく、本エンコード発生符号量のフィードバック制御により、本エンコード発生符号量を目標符号量に確実に抑えるようになされている。
なお、符号量制御部4は、高精度発生符号量が目標符号量を超えず、かつ高精度発生符号量が目標符号量に最も近い量子化パラメータQPを基本量子化パラメータQPMB に決定する。これにより、符号量制御部4は、本エンコード発生符号量が目標符号量より少し小さくなるように基本量子化パラメータQPMB を決定している。
画像処理装置100は、3パス(pass)エンコードの本エンコードにおいて、画面内フィードバック(Feed Back)によるレート制御を行い、符号量を一定値以下に抑える。画像処理装置100は、フィードバック制御による量子化パラメータQPの不要な変動を抑えるため、ピクチャごとの発生符号量が目標符号量を超えないと予測される場合には、視覚特性(アクティビティ)によってのみ、使用量子化パラメータQPを、基本量子化パラメータQPMB から変更する。すなわち、画像処理装置100は、基本量子化パラメータQPMB をピクチャの平均量子化パラメータBaseQPとしたときの適応量子化パラメータQPtを、使用量子化パラメータQPとする。
画像処理装置100は、フィードバック制御により、本エンコード発生符号量が目標符号量を超えてしまうと予測される場合、平均量子化パラメータBaseQP を基本量子化パラメータQPMB から変更する。このとき、画像処理装置100は、平均量子化パラメータBaseQPの不要な変動を抑えるため、量子化パラメータQPが大きくなる方向にのみ、従って発生符号量が小さくなる方向にのみ、平均量子化パラメータBaseQPを変更する。この結果、画像処理装置100は、変更された平均量子化パラメータ BaseQPに基づく適応量子化パラメータQPt を使用量子化パラメータQP とする。なお、一旦大きい方向に変更された平均量子化パラメータBaseQPは、小さくなる方向に戻ることはない。
具体的に、画像処理装置100の本エンコード部3は、第2のプレエンコード部2の結果に基づいて決定された基本量子化パラメータQPMB を平均量子化パラメータ BaseQPとし、第1のプレエンコード部1により決定された量子化行列Q Matrix、 Activity Group を使用してエンコードを行う。このとき、画像処理装置100は、目標符号量を越えることが無いように、平均量子化パラメータBaseQPをフィードバック制御する。
画像処理装置100の符号量制御部4は、複数のMBからなるフィードバック制御単位( FeedBackUnit)ごとに、フィードバック制御を実行する。符号量制御部4には、エントロピー符号化部34から出力ストリーム92の発生符号量が供給される。符号量制御部4は、第2のプレエンコードの予測量子化パラメータQPd(QP_precode1 )でのMB毎の発生符号量(つまり、量子化部23−1、エントロピー符号長計算部24−1の出力)を用い、ピクチャごとの目標符号量(以下、「ピクチャ目標符号量」と呼ぶ)から、フィードバック制御単位毎の目標符号量(以下、「フィードバック目標符号量」と呼ぶ)を算出する。
いま、第2のプレエンコード部2の結果に基づくフィードバック制御単位の高精度発生符号量を PrecodeGeneratedBits_FeedBackUnit[no] 、第2のプレエンコード部2の結果に基づくピクチャごとの高精度発生符号量をPrecodeGeneratedBits とすると、フィードバック制御単位のフィードバック目標符号量( TargetBit_FeedBackUnit[no] )は、以下の数式(17)で求められる。なお、「no」はフィードバック制御単位の番号(0〜FeedBackUnit個数-1 )、「 TargetBit 」はピクチャ目標符号量である。
TargetBit_FeedBackUnit[no]
=TargetBit × PrecodeGeneratedBits_FeedBackUnit[no]
/ PrecodeGeneratedBits ・・・(17)
すなわち、符号量制御部4は、フィードバック制御単位の高精度発生符号量( PrecodeGeneratedBits_FeedBackUnit[no])のピクチャの高精度発生符号量( PrecodeGeneratedBits )に対する割合に対し、ピクチャ目標符号量TargetBit を乗算することにより、フィードバック目標符号量( TargetBit_FeedBackUnit[no])を算出する。
具体的に、画像処理装置100の符号量制御部4は、以下の様な処理を行う。
(1)符号量制御部4は、エンコードを前半処理、後半処理に分け、前半処理ではフィードバック制御を行わない。符号量制御部4は、プレエンコードのフィードバック制御単位(FeedBackUnit )の符号量比によりフィードバック制御単位( FeedBackUnit)の目標符号量を決定している。
この符号量比は、量子化パラメータQPの変動により変化する。よって、画像処理装置100は、エンコード前半の発生符号量が少ない時点でフィードバック制御を行うと、不必要な平均量子化パラメータBaseQPの変更を行ってしまう可能性がある。言い換えると、画像処理装置100は、本エンコード発生符号量がピクチャ目標符号量に近くなるよう、基本量子化パラメータQPMBを選定している。したがって、ピクチャの早い段階で平均量子化パラメータ BaseQPを変動させてしまうと、本エンコード発生符号量とピクチャ目標符号量とが乖離してしまう可能性が生じてしまうためである。
(2)符号量制御部4は、量子化パラメータQPの安定化と、本エンコード発生符号量を目標符号量以下に抑えることの両面から前半処理、後半処理の切り替えタイミングを判定する。すなわち、符号量制御部4は、(a)および(b)に示す以下に示す条件のうちのいずれか一方を満たす場合に、後半処理に移行する。
(a)符号量制御部4は、ピクチャを一定割合以上エンコードしている、換言すれば、一定数以上のMBをエンコードし終えとき、後半処理に移行する。量子化パラメータQPを安定化させるためである。
(b)符号量制御部4は、エンコードしていない部分(MB)で使用できる残り符号量(ピクチャ目標符号量からその時点までの本エンコード発生符号量を減算した値)と、エンコードしていない部分(MB)の目標符号量(ピクチャ目標符号量からその時点までのフィードバック目標符号量を減算した値)とを比較する。残り符号量が一定割合以下になると、後半処理に移行する。本エンコード発生符号量を目標符号量以下に抑えるためである。
この(2)の(b)の条件は、以下の数式(18)に示すようになる。
(TargetBit - GeneratedBits_Accum)
< (TargetBit - TargetBits_Accum) × ThresholdRatio ・・・(18)
ここで、TargetBit_Accum、GeneratedBits_Accum は、それぞれ、この時点までのフィードバック目標符号量( TargetBit_FeedBackUnit[no] )、フィードバック制御単位の本エンコード発生符号量( GeneratedBits_FeedBackUnit[no] )の積算値である。また、ThresholdRatioは、許容できるずれの割合である。
本エンコード発生符号量が目標符号量になっている場合、残り符号量とエンコードしていない部分の目標符号量がイコールとなる。一方、本エンコード発生符号量が目標符号量をオーバーしている場合、残り符号量がエンコードしていない部分の目標符号量よりも小さくなる。
例えば、符号量制御部4は、残り符号量がエンコードしていない部分の目標符号量のThresholdRatio倍未満になったとき、後半処理に移行する。符号量制御部4は、発生符号量が目標符号量を必ず下回るように制御する場合、ThresholdRatio を1未満に設定する。これにより、符号量制御部4は、エンコードが終了した部分の発生符号量が目標符号量を下回り、かつ当該目標符号量に近づいてきたときに後半処理に移行することができる。
また、符号量制御部4は、発生符号量が目標符号量の近傍になるように制御する場合、この ThresholdRatioを1超に設定する。これにより、符号量制御部4は、エンコードが終了した部分の発生符号量が目標符号量を一定の比率以上で上回ったときに後半処理に移行することができる。もちろん、ThresholdRatio を「1」に設定することも可能である。これにより、符号量制御部4は、目標符号量と実際の本エンコード発生符号量が乖離する前に、フィードバック制御に入ることができ、残り符号量が少なすぎて本エンコード発生符号量が制御できなくなることを確実に防止することができる。
言い換えると、符号量制御部4は、本エンコード発生符号量の少ないうちは、残り符号量の絶対量が大きいため、目標符号量と本エンコード発生符号量が極めて大きく乖離しない限り、条件を満たすことはなく、後半処理に移行してフィードバック制御に入ることはない。符号量制御部4は、本エンコード発生符号量が大きくなってきたら、残り符号量の絶対量が小さいため、目標符号量と本エンコード発生符号量が小さく乖離しただけでも条件を満たすことになり、後半処理に移行して、フィードバック制御に入ることになる。
(3)符号量制御部4は、後半処理において、ピクチャごとの本エンコード発生符号量がピクチャ目標符号量を超えると予想した場合にのみ、平均量子化パラメータBaseQPを基本量子化パラメータQPMB より大きくする方向に変更する。符号量制御部4は、平均量子化パラメータBaseQPを大きくする場合には、一回のフィードバック処理(すなわちフィードバック制御単位ごと)で、平均量子化パラメータBaseQPを「1」のみ変化させる。これにより、符号量制御部4は、過剰な平均量子化パラメータ BaseQPの変化を抑えるようになされている。
符号量制御部4は、以下の(a)または(b)のいずれかの条件に当て嵌まる場合、ピクチャごとの本エンコード発生符号量がピクチャ目標符号量を超えると予想し、平均量子化パラメータBaseQPを大きくする。
(a)符号量制御部4は、フィードバック制御単位のエンコードが終了した時点で直前(処理を終えた直後)のフィードバック発生符号量を確認し、フィードバック発生符号量(GeneratedBits_FeedBackUnit[cur] )とフィードバック目標符号量( TargetBit_FeedBackUnit[cur] )とを、以下の数式(19)に従って、比較する。
GeneratedBits_FeedBackUnit[cur] > TargetBit_FeedBackUnit[cur] ・・・(19)
フィードバック発生符号量( GeneratedBits_FeedBackUnit[cur])がフィードバック目標符号量( TargetBit_FeedBackUnit[cur] )より大きいことは、発生符号量が増大する傾向にあるため、以降のエンコードにおいて生じる本エンコード発生符号量が目標符号量を超える可能性があることを示唆している。このとき、符号量制御部4は、平均量子化パラメータBaseQPを大きくするか否かを判別する。このときの条件を以下に示す。
符号量制御部4は、この時点でエンコードが終了した部分についての目標符号量から発生符号量を減算することにより、発生符号量の余りSurplusBits を、以下の数式(20)に示すように、計算する。
SurplusBits =Target_Accum - GeneratedBits_Accum ・・・(20)
符号量制御部4は、次のフィードバック制御単位において、本エンコード発生符号量が目標符号量を超えると予測した場合にのみ、平均量子化パラメータBaseQPを大きくする。
符号量制御部4は、次のフィードバック制御単位の目標符号量に対して次のフィードバック制御単位でオーバーすると予測される最大の符号量(以下、「過剰最大符号量」と呼ぶ)を、次のフィードバック制御単位の目標符号量から、以下の数式(21)に示すように、求める。
TargetBit_FeedBackUnit[next] × MaxErrorRatio ・・・(21)
ここで、MaxErrorRatio は、フィードバック発生符号量がフィードバック目標符号量に対する誤差として取り得る最大比率である。そして、これを元に、以下の数式(22)の判定を行う。
SurplusBits <TargetBit_FeedBackUnit[next] × MaxErrorRatio ・・・(22)
符号量制御部4は、発生符号量の余り SurplusBits と次のフィードバック制御単位の過剰最大符号量とを比較する。符号量制御部4は、発生符号量の余りSurplusBits よりも過剰最大符号量が大きい場合、次のフィードバック制御単位においてエンコードが終了した部分の本エンコード発生符号量が目標符号量を超える可能性があると判別し、平均量子化パラメータBaseQPを「1」だけ増加するする。
すなわち、符号量制御部4は、「直前のフィードバック制御単位の発生符号量が、直前のフィードバック制御単位の目標符号量より大きい」、かつ、「この時点での符号量の余りSurplusBits が、次のフィードバック制御単位でオーバーする可能性のある過剰最大符号量より小さい」とき、平均量子化パラメータBaseQPを「1」だけ増加する。発生符号量が増大する傾向にあり、かつ符号量の余りに余裕がないため、最終的なピクチャ発生符号量がピクチャ目標符号量を超えてしまうと予測されるからである。
言い換えると、符号量制御部4は、現状維持でも次のフィードバック制御単位でエンコードが終了した部分の本エンコード発生符号量が目標符号量を超えないと判断されれば、平均量子化パラメータBaseQPを「1」だけ増加することをしない。これにより、符号量制御部4は、エンコードが終了した部分の本エンコード発生符号量が目標符号量を超えそうな兆候が見られた時でも、過度に反応することを避け、平均量子化パラメータBaseQPを不要に大きくし過ぎることを防止し、平均量子化パラメータ BaseQPを安定化させ得る。
(b)符号量制御部4は、(a)に当て嵌まらない場合、すなわち「直前のフィードバック制御単位の発生符号量が、直前のフィードバック制御単位の目標符号量より小さい」または「この時点での符号量の余りSurplusBits が、次のフィードバック制御単位でオーバーする可能性のある過剰最大符号量より大きい」とき、発生符号量の余りSurplusBits が負であるかを確認する。
SurplusBits が負である場合、エンコードが終了した時点での本エンコード発生符号量が目標符号量を超えてしまっていることを意味している。このとき、符号量制御部4は、以下の様に、直前のフィードバック制御単位の目標符号量と発生符号量の比から、残りの符号化部分での発生符号量の、目標からのずれを予測する。
符号量制御部4は、直前のフィードバック制御単位の目標符号量と発生符号量の比 Diff_Ratioを、以下の数式(23)に示すように、算出する。
Diff_Ratio
= (GeneratedBits_FeedBackUnit[cur] - TargetBit_FeedBackUnit[cur]
/TargetBit_FeedBackUnit[cur] ・・・(23)
符号量制御部4は、残りの符号化部分の目標符号量 TargetBit_Rem を、以下の数式(24)に示すように、算出する。
TargetBit_Rem = TargetBit- TargetBit_Accum ・・・(24)
符号量制御部4は、残りの符号化部分での発生符号量が、直前のフィードバック制御単位の目標符号量と発生符号量の比 Diff_Ratio と同一比率でずれると仮定し、目標からのずれを、以下の数式(25)に示すように、算出する。
TargetBit_Rem × Diff_Ratio ・・・(25)
符号量制御部4は、符号化した部分と符号化してない部分のずれを足したものが、正であり、以下の数式(26)の条件を満たす場合、平均量子化パラメータBaseQPを「1」だけ増加する。
(TargetBit_Rem × Diff_Ratio) - SurplusBits > 0 ・・・(26)
符号量制御部4は、「エンコードした部分の発生符号量が、目標符号量を超えている」かつ、「直前のフィードバック制御単位の目標符号量と発生符号量の比から求めたピクチャの予測発生符号量が、ピクチャ目標符号量を超えている」とき、平均量子化パラメータBaseQPを「1」だけ増加する。すなわち、符号量制御部4は、ある時点で発生符号量が目標符号量を超えていても、目標符号量に対して発生符号量が減少傾向にあるため最終的にはピクチャ発生符号量がピクチャ目標符号量以下に収まると判断されれば、平均量子化パラメータBaseQPを「1」だけ増加することをしない。
このように、画像処理装置100は、入力画像91を本エンコードする際、ピクチャに対する本エンコードを開始した時点ではフィードバック制御を実行せず、一定条件を満たしたときのみ後半処理としてフィードバック制御を実行する。すなわち、画像処理装置100は、原則的にピクチャの後半部分に対してのみフィードバック制御を実行する。画像処理装置100は、ピクチャの前半部分であっても、エンコードした部分の発生符号量と目標符号量との比率が一定以上となる場合には、以降の発生符号量が目標符号量から乖離する可能性があるため、フィードバック制御を実行する。
画像処理装置100は、フィードバック制御として、平均量子化パラメータ BaseQPの変動を最小限に抑制するため、ピクチャごとの本エンコード発生符号量をピクチャ目標符号量以下に抑えることができないと予測したときのみ、平均量子化パラメータBaseQPを「1」だけ増加する。
すなわち、画像処理装置100は、フィードバック発生符号量がフィードバック目標符号量よりも大きく、発生符号量が目標符号量よりも増大する傾向があり、かつ次のフィードバック制御単位でエンコードした部分の発生符号量が目標符号量を超える可能性がある場合、最終的なピクチャ発生符号量がピクチャ目標符号量を超えると予測されるため、平均量子化パラメータBaseQPを「1」だけ増加する。
これにより、画像処理装置100は、発生符号量が目標符号量よりも増大する傾向がある場合であっても、残り符号量に余裕がある場合には、平均量子化パラメータBaseQPを「1」だけ増加することを行わないようにでき、平均量子化パラメータ BaseQPを不要に増大させずに済む。
さらに、画像処理装置100は、平均量子化パラメータ BaseQPを「1」だけ増加することを行わない場合において、エンコードした部分の発生符号量が目標符号量を超えており、最終的なピクチャの発生符号量がピクチャ目標符号量を超えると予測される場合には、平均量子化パラメータBaseQPを「1」だけ増加する。これにより、画像処理装置100は、エンコードした部分の発生符号量が目標符号量を超えている場合であっても、発生符号量が減少傾向にあり、ピクチャの発生符号量がピクチャ目標符号量を超えないと予測される場合には、最終的な平均量子化パラメータBaseQPを「1」だけ増加することを行わないようにでき、平均量子化パラメータ BaseQPを不要に増大させずに済む。
図4、図5のフローチャートを参照して、フィードバック制御の処理手順について説明する。この処理を開始すると、符号量制御部4は、プレエンコードで決定された基本量子化パラメータQPMB を平均量子化パラメータ BaseQPとしてセットする(ステップS31)。続いて、符号量制御部4は、フィードバック制御単位( FeedBackUnit )毎に、入力画像91をエンコードする(ステップS32)。
続いて、符号量制御部4は、ピクチャにおける全てのMBをエンコードしたか否かを判断する(ステップS33)。ここで、符号量制御部4は、全てのMBをエンコードした場合には、終了ステップに移って処理を終了する。一方、符号量制御部4は、全てのMBをエンコードしていない場合には、次のステップS34へ移る。符号量制御部4は、一定数以上のMBをエンコードしたか否かを判断する(ステップS34)。これは、上述したように、エンコード前半の発生符号量が少ない時点で、フィードバック制御を行うと平均量子化パラメータBaseQPを不必要に変更する可能性があるからである。
ここで、符号量制御部4は、一定数以上のMBをエンコードしたと判断した場合には、ステップS36に移行する。一方、符号量制御部4は、一定数以上のMBをエンコードしていないと判断した場合には、ステップS35に移る。そして、エンコードしていない部分(MB)で使用できる残り符号量(目標符号量からその時点までの発生符号量を引いたもの)と、エンコードしていない部分(MB)の目標符号量とを比較する。そして、残り符号量とエンコードしていない部分の目標符号量との比率が一定割合以下か否かを判断する(ステップS35)。
ここで、符号量制御部4は、残り符号量とエンコードしていない部分の目標符号量との比率が一定割合以下でないと判断した場合には、現在エンコード処理しているMBが後半部分ではなく、かつエンコードした部分の発生符号量が目標符号量から乖離もしていないため、ステップS32に戻り、上述の処理を繰り返す。一方、使用できる符号量が一定割合以下であると判断した場合には、ステップS36に移行し、フィードバック制御を実行する。
続いて、符号量制御部4は、直前のフィードバック制御単位の発生符号量が、直前のフィードバック制御単位の目標符号量より大きいか否かを判断する(ステップS36)。ここで、符号量制御部4は、直前のフィードバック制御単位の発生符号量が、直前のフィードバック制御単位の目標符号量より大きいと判断した場合には、この時点での符号量の余りが、次のフィードバック制御単位でオーバーする可能性があるか否かを判断する(ステップS37)。
符号量制御部4は、直前のフィードバック制御単位の発生符号量が、直前のフィードバック制御単位の目標符号量より小さい場合には、ステップS39へ移る。符号量制御部4は、この時点での符号量の余りが、次のフィードバック制御単位でオーバーする可能性があると判断した場合、平均量子化パラメータBaseQPを「1」だけ増加し(ステップS38)、ステップS32に戻る。一方、符号量制御部4は、この時点での符号量の余りが、次のフィードバック制御単位でオーバーする可能性がないと判断した場合、ステップS39に進む。
そして、ステップS39において、符号量制御部4は、エンコードした部分の発生符号量が、目標符号量を超えているか否かを判断する(ステップS39)。ここで、符号量制御部4は、エンコードした部分の発生符号量が、目標符号量を超えていないと判断した場合には、ステップS32に戻り、上述の処理を繰り返す。
一方、符号量制御部4は、エンコードした部分の発生符号量が、目標符号量を超えていると判断した場合には、直前のフィードバック制御単位の目標符号量と発生符号量の比から求めたピクチャの予測発生符号量がピクチャ目標符号量を超えているか否かを判断する(ステップS40)。そして、符号量制御部4は、ピクチャの予測発生符号量がピクチャ目標符号量を超えていないと判断した場合には、ステップS32に戻り、上述の処理を繰り返す。
符号量制御部4は、ピクチャの予測発生符号量がピクチャ目標符号量を超えていると判断した場合には、平均量子化パラメータ BaseQPを「1」だけ増加し(ステップS38)、ステップS32に戻り、上述の処理を繰り返す。こうして、符号量制御部4は、ステップS33において、全てのMBをエンコードしたと判断するまで、この処理を継続する。
[1−8.画像処理装置による符号化の処理手順]
図6のフローチャートを参照して、画像処理装置100による符号化の処理手順の一例を説明する。まず、アクティビティ計算部16は、MB毎にアクティビティを計算し、その値に応じてMBをアクティビティグループに分ける(ステップS1)。
続いて、画面内予測モード決定部11は、入力画像91に基づいて画面内予測モードを決定する(ステップS2)。この画面内予測モードは、第2のプレエンコード部2による第2のプレエンコード、本エンコード部3による本エンコードでも使用される。
次に、画面内予測処理部12は、予測画像と入力画像との差分画像データを計算する。ここでの予測画像は、処理を削減するため入力画像91が用いられる。次いで、DCT部13は、整数精度DCTを行い、DCT係数を量子化部14に送出する(ステップS3)。
量子化部14は、任意の間隔の複数の選択量子化パラメータQPlをピクチャの平均量子化パラメータ( BaseQP)としてDCT係数値を量子化する。エントロピー符号長計算部15は、量子化係数を可変長符号化し、符号長計算を行うことで、選択量子化パラメータQPlごとの発生符号量を取得する(ステップS4)。
このとき、MBの量子化パラメータQPは、上述したようにアクティビティを考慮した値が与えられて、エンコードされる。すなわち、上述したように、MBの量子化パラメータQPは、ピクチャの平均量子化パラメータ(BaseQP)に対して、アクティビティグループに依存したオフセットを加えることで求められる。
なお、適応的な量子化行列 Q Matrix 切り替え処理に対応させる場合には、上述の処理を量子化行列 Q Matrix毎に行う。つまり、量子化行列 Q Matrix 毎に、離散的な(飛び飛びの)値の選択量子化パラメータQPlでプレエンコードを行って、1ピクチャ分の発生符号量を取得する。このとき、量子化行列Q Matrix毎に量子化パラメータQPの取り得る範囲をカバーするように選択量子化パラメータQPlを選択する。
次に、符号量制御部4が、第1のプレエンコード部1によって算出された発生符号量の補正処理を行い、低精度発生符号量を算出する。符号量制御部4は、プレエンコードを簡略化したことによる誤差の補正を行うと共に、補間処理により、選択量子化パラメータQPl以外の量子化パラメータQPに対応する低精度発生符号量を算出する(ステップS5)。そして、符号量制御部4は、各量子化行列 Q Matrix に対し、ステップS5の処理を実行し、量子化行列 Q Matrix ごとの低精度発生符号量を算出する(ステップS6)。
以上の処理で、必要となる全ての量子化パラメータQPに対する低精度発生符号量が求められるので、その中で目標符号量に最も近い低精度発生符号量を生成し得る量子化パラメータQPのうち、傾斜の最も小さい量子化行列 Q Matrix 予測量子化行列 Q MatrixD として選択する。さらに、符号量制御部4は、予測量子化行列 Q MatrixD に対応する目標符号量に最も近い低精度発生符号量を生成し得る量子化パラメータQPを予測量子化パラメータQPdとして選択する(ステップS7)。
上述のように量子化行列 Q Matrix を選択することで、取り得る量子化パラメータQPの範囲を限定することになり、第1のプレエンコード部1で低精度発生符号量を算出する際の選択量子化パラメータQPlの範囲を減らすことが可能になる。これが、第1のプレエンコード部1にて決定された予測量子化行列 Q MatrixD と予測量子化パラメータQPdとなる。
ここで、図7のフローチャートを参照して、上述のステップS7において実行される QMatrix 決定処理の手順についてさらに説明する。この処理を開始すると、符号量制御部4は、まず、IdをId=0にイニシャライズした後(ステップS21)、Idの値の小さい量子化行列 Q Matrix から、低精度発生符号量が目標符号量に最も近い量子化パラメータ(QP)と、量子化行列 Q Matrix において取り得る最大の量子化パラメータQP( QMatrixThreshold[Id])とを比較する(ステップS22)。
そして、符号量制御部4は、Id番目の量子化行列 Q Matrix での低精度発生符号量が目標符号量に最も近い量子化パラメータ(QP)がQMatrixThreshold[Id] より小さければ、現在の量子化行列 Q Matrix を予測量子化行列 Q MatrixD に決定する。さらに符号量制御部4は、予測量子化行列 Q MatrixD における低精度発生符号量が目標符号量に最も近い量子化パラメータ(QP)を予測量子化パラメータQPdに決定すると(ステップS23)、Q Matrix 決定処理手順を終了する。
一方、ステップS22において、符号量制御部4は、Id番目の量子化行列 Q Matrixでの低精度発生符号量が目標符号量に最も近い量子化パラメータ(QP)が QMatrixThreshold[Id]以上であれば、Idをインクリメント(ステップS24)する。符号量制御部4は、Id=量子化行列 Q Matrixの総数よりも「1」だけ小さい値、つまり NumOfQMatrixId-1 か否かを判断する(ステップS25)。
そして、Id=NumOfQMatrixId-1 でなければ、ステップS22に戻り、次の量子化行列Q Matrixをチェックする。一方、Id=NumOfQMatrixId-1 であれば、一番急峻な傾斜を有する量子化行列 Q Matrix(Idが NumOfQMatrixId の量子化行列 Q Matrix )が選択され(ステップS23)、Q Matrix 決定処理手順を終了する。
この図7のフローチャートの Q Matrix 決定処理手順により、符号量制御部4は、量子化行列Q Matrix 毎に、取り得る最大の量子化パラメータQPを設定する。そして、傾斜の緩やかな量子化行列 Q Matrix から順に、低精度発生符号量が目標符号量に最も近いと推定された量子化パラメータQPに対応する低精度発生符号量が目標符号量に本当に近い値を示すか否かを判断する。そして、近い値であれば対応する量子化行列 Q Matrix を本エンコードで用いる予測量子化行列 Q MatrixD として決定することになる。
図6のフローチャートに戻って、ステップS7の処理に続き、第2のプレエンコード部2による発生符号量取得処理を行う(ステップS8〜S10)。この第2のプレエンコード部2の目的は、第1のプレエンコード部1による予測量子化パラメータQPdの推定が誤差を持っていることに鑑みて、再度プレエンコードすることで、基本量子化パラメータQPMBの推定精度を上げることにある。
すなわち、第1のプレエンコード部1の結果により大まかに見積もった予測量子化パラメータQPdの周辺の量子化パラメータQPで、再度プレエンコードすることにより高精度発生符号量を取得し、目標符号量に一番近い量子化パラメータQPを再度求める。エントロピー符号長計算は、本エンコードと同じ方式(CABACまたはCAVLC)が用いられる。
具体的には、第1のプレエンコード部1の結果により決定された画面内予測モードを用いて画面内予測処理部21による画面内予測処理およびDCT部22によるDCTを行う(ステップS8)。第2のプレエンコード部2は、画面内予測で使用するローカルデコード画像(予測画像)として、第1のプレエンコード部1の結果により推定された予測量子化パラメータQPd(QP_precode1 )で量子化したローカルデコード画像を共用する。
量子化に際しては、第1のプレエンコード部1の結果により決定された予測量子化パラメータQPd(QP_precode1 )、量子化行列 Q Matrix およびアクティビティグループ(Activity Group )が用いられる。量子化部23−1には予測量子化パラメータQPd(QP_precode1 )が設定され、量子化部23−2には予測量子化パラメータQPdよりも「1」だけ小さい量子化パラメータQP(QP_precode1-1 )が設定され、量子化部23−3には予測量子化パラメータQPdよりも「1」だけ大きい量子化パラメータ(QP_precode1+1 )が設定される。
さらに、MBの量子化パラメータ(QP)には、アクティビティを考慮した値が与えられてエンコードされる。以上の第2のプレエンコードにより、1ピクチャの高精度発生符号量を取得することができる(ステップS9)。続いて、符号量制御部4は、第2のプレエンコード部2に基づいて得られた高精度発生符号量から基本量子化パラメータQPMBを決定する(ステップS10)。
次に、画像処理装置100は、前モード推定プレエンコード部40による前モード推定プレエンコードを行う(ステップS41−S43)。この前モード推定プレエンコードにおいて、前モード推定プレエンコード部40は、前回の符号化パラメータ(量子化パラメータQPおよび画面内予測モード)を推定し、推定された符号化パラメータで符号化した場合のバックサーチ発生符号量を取得する。
画像処理装置100は、画面内予測処理部41によって予測画像と入力画像91との差分画像データを生成する。このとき、画面内予測処理部41は、画面内予測モード決定部11で決定された第1候補から第M候補まで各々で差分画像データを計算する。画面内予測処理では、本来、ローカルデコード(Local Decode )画像を使用して処理を行う。しかし、ここでは、入力画像91を用いて行う。
次に、画像処理装置100は、DCT部42によるDCT変換を行い、その出力を、バックサーチ部43、バッファ44に供給する(ステップS41)。続いて、前モード推定プレエンコード部40は、前回のパラメータ推定処理を行う(ステップS42)。
ここで、図8のフローチャートを参照して、上述のステップS42において実行される前モードの推定処理を説明する。まず、第1のプレエンコード結果により算出された予測量子化パラメータQPdおよび各MBのアクティビティグループから、推定の起点となる初期の量子化パラメータQPを設定する。(ステップS101)。
続いて、検出量子化パラメータQPeの推定処理を行う(ステップS102)。検出量子化パラメータQPeの推定処理は、ステップS101において設定された値に対して、一定の範囲の量子化パラメータQPに対して行われる。つまり、0〜51でなる量子化パラメータQPのうち、上限値( QP UpperQPRange )から下限値( QP LowerQPRange )の範囲の量子化パラメータQPに対して推定処理を行う。なお、この範囲は例えば「10」程度に設定される。
換言すれば、前モード推定プレエンコード部40は、第1のプレエンコード部1で求めた予測量子化行列 Q MatrixD を用い、第1のプレエンコード部1の結果に基づいて算出された予測量子化パラメータQPdを起点として、所定の範囲の量子化パラメータQPに対して推定処理を行うことになる。
そして、バックサーチ部43は、検出量子化パラメータQPeの推定が成功したか否かを判断する(ステップS103)。推定が不成功の場合は、予測量子化パラメータQPdと画面内予測モード決定部11で決定された第1候補の画面内予測モードを出力する(ステップS104)。一方、バックサーチ部43は、推定が成功した場合は、推定された検出量子化パラメータQPeを出力し(ステップS105)、画面内予測モードの推定処理を行う(ステップS106)。
この画面内予測モードの推定処理は、第1候補から第M候補に対して行われる。バックサーチ部43は、画面内予測モードの推定が成功したか否かを判断する(ステップS107)。成功した場合は、推定された画面内予測モードを出力し(ステップS108)、不成功の場合は、画面内予測モード決定部11で決定された第1候補の画面内予測モードを出力する(ステップS109)。
バックサーチ部43は、画面内予測を行うブロック数を処理したか否かを判断する(ステップS110)。処理が完了していなければステップS106に戻り、上述の処理を繰り返す。一方、バックサーチ部43は、処理が完了していると判断した場合には、前モードの推定処理を終了する。
図6のフローチャートに戻って、ステップS42の処理に続き、画像処理装置100は、量子化部45によって量子化を行い、エントロピー符号長計算部46によって符号量計算処理を行う(ステップS43)。
すなわち、量子化部45は、バックサーチ部43から出力された画面内予測モードに応じて、バッファ44に格納されているデータから指定された画面内予測モードに該当するデータを選択し、量子化を行う。このとき、量子化部45は、バックサーチ部43から出力された検出量子化パラメータQPeに基づいて量子化を行う。
その後、画像符号化装置200は、エントロピー符号長計算部46によってMBごとの発生符号量を計算する。エントロピー符号長計算は、本エンコードのエントロピー符号化と同じ方式(CABAC/CAVLC)で行われる。そして、符号量制御部4は、バックサーチの成功の有無に応じて、ダビングモードを使用したときのピクチャのバックサーチ発生符号量を推定する。
次に、画像処理装置100は、エンコードモード(原画モード/ダビングモード)判定を行う(ステップS44)。ここで、図9のフローチャートを参照して、このステップS44において実行される原画モード/ダビングモードの判定処理にについて説明する。
この処理に入ると、まず、符号量制御部4は、原画/非原画(符号化された画)の判定を行う(ステップS111)。すなわち、符号量制御部4は、前回の符号化に使用された量子化パラメータQPの推定処理で検出量子化パラメータQPeが検出されたMBの数と、MB総数から、検出率を求め、この検出率が一定以上であるとき非原画と判定する。
ここで、符号量制御部4は、処理対象であるピクチャが原画であると判定した場合には(ステップS112をYesに分岐)、原画モードに決定し(ステップS117)、判定処理を終了する。一方、符号量制御部4は、処理対象であるピクチャが非原画であると判定した場合(ステップS112をNoに分岐)、ダビングモードで処理対象のピクチャを符号化した場合のバックサーチ発生符号量を予測する(ステップS113)。
ここでは、符号量制御部4は、不成功MBについては、第2のプレエンコード部2の結果により求めた基本量子化パラメータQPMBを使った場合の符号量を予測する。そして、推定されたパラメータでエンコードした場合にビットレートの条件を満たすか判定する(ステップS114)。
符号量制御部4は、ビットレート(発生符号量)の条件を満たす場合には(ステップS115をYesに分岐)、本エンコード部3におけるエンコードモードをダビングモードに決定し(ステップS116)、判定処理を終了する。一方、符号量制御部4は、ビットレートの条件を満たさない場合、本エンコード部3におけるエンコードモードを原画モードに決定し(ステップS117)、判定処理を終了する。
図6のフローチャートに戻って、ステップS44の処理に続き、原画モードであると判定した場合(ステップS45をYESに分岐)、画像処理装置100は、本エンコード部3において、原画モードの本エンコードを行う(ステップS46)。この原画モードの本エンコードでは、フィードバック制御された平均量子化パラメータBaseQPが使用されてエンコードが行われる。
一方、非原画モード、つまりダビングモードであると判定した場合(ステップS45をNOに分岐)、画像処理装置100は、本エンコード部3において、ダビングモードの本エンコードを行う(ステップS47)。このダビングモードの本エンコードでは、処理対象となるMBにおいてバックサーチが不成功であった場合には、フィードバック制御された平均量子化パラメータBaseQPが使用される。
また、このダビングモードの本エンコードでは、処理対象となるMBにおいてバックサーチが成功であった場合には、符号量抑制の必要性の判定結果に応じて、フィードバック制御された平均量子化パラメータBaseQP、またはバックサーチ部43によって検出された検出量子化パラメータQPeが選択的に使用される。
すなわち、符号量制御部4は、符号量抑制が必要でないと判定する場合、検出量子化パラメータQPeを使用するように、量子化部33を制御する。また、符号量制御部4は、符号量抑制が必要であると判定する場合、検出量子化パラメータQPeが平均量子化パラメータBaseQPより小さくないとき、この検出量子化パラメータQPeを使用するように、量子化部33を制御する。さらに、符号量制御部4は、符号量抑制が必要であると判定する場合、検出量子化パラメータQPeが平均量子化パラメータBaseQPより小さいとき、フィードバック制御された平均量子化パラメータ BaseQPを使用するように、量子化部33を制御する。
ここで、図10のフローチャートを参照して、ダビングモードで本エンコードを行う際における量子化パラメータQPの決定処理の手順を説明する。符号量制御部4は、まず、フィードバック制御された平均量子化パラメータBaseQPを求める(ステップS301)。この平均量子化パラメータ BaseQPは、上述したフィードバック制御制御が実行されることで得られる(図4、図5のフローチャート参照)。
符号量制御部4は、バックサーチ検出が成功していない場合には(ステップS302をNOに分岐)、ステップS301で求められたフィードバック制御された平均量子化パラメータ BaseQPを使用することに決定し(ステップS303)、処理を終了する。一方、符号量制御部4は、バックサーチ検出が成功している場合には(ステップS302をYESに分岐)、ステップS304の処理に移る。
符号量制御部4は、直前のフィードバック制御単位までの目標符号量の積算値を求め(ステップS304)、さらに、直前のフィードバック制御単位までの発生符号量の積算値を求める(ステップS305)。そして、符号量制御部4は、これらの積算値を比較して、符号量抑制が必要か否かを判定する(ステップS306)。
すなわち、符号量制御部4は、目標符号量の積算値が発生符号量の積算値より大きいときは、通常モードと判定し、そうでないとき、符号量抑制モードと判定する。以下の数式(27)は、通常モードの判定条件を表している。
「直前までの目標符号積算値」 >
「直前までの発生符号量積算値」 + margin ・・・(27)
符号量制御部4は、符号量抑制が必要でないと判定するとき、バックサーチ検出で得られた検出量子化パラメータQPeを使用することに決定し(ステップS307)、処理を終了する。一方、符号量制御部4は、符号量抑制が必要であると判定するとき、ステップS308の処理に移る。そして、符号量制御部4は、バックサーチ検出で得られた検出量子化パラメータQPeが、ステップS301で求められたフィードバック制御された平均量子化パラメータBaseQPより小さいか判定する。
ここで、検出量子化パラメータQPeが平均量子化パラメータBaseQPより小さくないとき、符号量制御部4は、バックサーチ検出で得られた検出量子化パラメータQPeを使用することに決定し(ステップS307)、処理を終了する。一方、検出量子化パラメータQPeが平均量子化パラメータBaseQPより小さいとき、符号量制御部4は、フィードバック制御された平均量子化パラメータ BaseQPを使用することに決定し(ステップS303)、処理を終了する。
図11は、ダビングモードにおいて、バックサーチ検出で得られた検出量子化パラメータQPeの採用範囲を示している。範囲Daは通常モードにおける採用範囲を示し、範囲Dbは符号量抑制モードにおける採用範囲を示している。符号量抑制モードにおいては、フィードバック制御された平均量子化パラメータBaseQPより大きい場合のみ採用される。
上述したように、図1、図2に示す画像処理装置100においては、ダビングモードにおいて、バックサーチ検出で得られた検出量子化パラメータQPeの採用をMB単位(符号化単位)で判定している。したがって、ピクチャ単位で判定する場合におけるフリッカ発生を回避できる。
また、図1、図2に示す画像処理装置100においては、符号量抑制が必要である場合に、使用可能な範囲で、バックサーチ検出で得られた検出量子化パラメータQPeを使用するものである。そのため、単純にフィードバック制御された平均量子化パラメータBaseQPを使用する場合に比べて、不要な歪みを付加することが減り、画質劣化を低減して、高画質化を図ることができる。
[本技術を適用したコンピュータの説明]
上述した一連の処理は、ハードウェアにより行うこともできるし、ソフトウェアにより行うこともできる。一連の処理をソフトウェアで行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータ等にインストールされる。
図12は、上述した一連の処理を実行するプログラムがインストールされるコンピュータの構成例を示している。プログラムは、コンピュータに内蔵されている記録媒体としての記憶部208やROM(Read Only Memory)202に予め記録しておくことができる。
また、プログラムは、リムーバブルメディア211に格納(記録)しておくことができる。このようにリムーバブルメディア211は、いわゆるパッケージソフトウェアとして提供することができる。ここで、リムーバブルメディア211としては、例えば、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory)、MO(Magneto Optical)ディスク、DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどがある。
なお、プログラムは、上述したようなリムーバブルメディア211からドライブ210を介してコンピュータにインストールする他、通信網や放送網を介して、コンピュータにダウンロードし、内蔵する記憶部208にインストールすることもできる。すなわち、プログラムは、例えば、ダウンロードサイトから、デジタル衛星放送用の人工衛星を介してコンピュータに無線で転送したり、LAN(Local Area Network)、インターネットといったネットワークを介して、コンピュータに有線で転送することができる。
コンピュータは、CPU(Central Processing Unit)201を内蔵しており、CPU201には、バス204を介して、入出力インタフェース205が接続されている。CPU201は、入出力インタフェース205を介して、ユーザによって、入力部206が操作等されることにより指令が入力されると、それに従って、ROM202に格納されているプログラムを実行する。あるいは、CPU201は、記憶部208に格納されたプログラムを、RAM(Random Access Memory)203にロードして実行する。
これにより、CPU201は、上述したフローチャートに従った処理、あるいは上述したブロック図の構成により行われる処理を行う。そして、CPU201は、その処理結果を、必要に応じて、例えば、入出力インタフェース205を介して、出力部207から出力、あるいは、通信部209から送信、さらには、記憶部208に記録等させる。なお、入力部206は、キーボードや、マウス、マイク等で構成される。また、出力部207は、LCD(Liquid Crystal Display)やスピーカ等で構成される。
ここで、本明細書において、コンピュータがプログラムに従って行う処理は、必ずしもフローチャートとして記載された順序に従って時系列に行われる必要はない。すなわち、コンピュータがプログラムに従って行う処理は、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトにより処理)も含む。また、プログラムは、一のコンピュータ(プロセッサ)により処理されるものであっても良いし、複数のコンピュータによって分散処理されるものであってもよい。さらに、プログラムは、遠方のコンピュータに転送されて実行されるものであってもよい。
<2.変形例>
なお、上述実施の形態においては、画像処理装置100が第1のプレエンコード部1の結果に基づいて予測量子化パラメータQPdを決定し、第2のプレエンコード部2の結果に基づいて基本量子化パラメータQPMBを決定する3パス構成でなるようにした場合について述べた。本技術は、これに限らず、例えば第1のエンコード部1が基本量子化パラメータQPMB を決定する2パス構成や、4パス以上の構成でなる画像処理装置にも適用することができる。
また、上述実施の形態においては、入力画像91を画面内予測、DCTによる直交変換、量子化、およびCAVLCまたはCABACによる符号化によって符号化するようにした場合について述べた。本技術は、これに限らず、いずれを省略しても良く、少なくとも入力画像91を量子化すれば良い。また、これら以外の符号化方法を用いて入力画像91を符号化してもよい。
また、上述実施の形態においては、複数のMBでなるフィードバック制御単位ごとにフィードバック発生符号量を確認するようにした場合について述べた。本技術は、これに限らず、フィードバック制御単位のサイズに制限はなく、例えばフィードバック制御単位をMBやスライスに設定するようにしても良い。
また、上述実施の形態においては、画像単位としてピクチャごとの発生符号量を目標符号量以下に抑制するようにした場合について述べた。本技術は、これに限らず、例えば画像単位としてスライスごとや複数のピクチャごとに発生符号量を目標符号量以下に抑制するようにしても良い。
また、上述実施の形態においては、1のフィードバック制御単位に対するフィードバック制御につき、平均量子化パラメータ BaseQPを「1」だけ増大させるようにした場合について述べた。本発明はこれに限らず、条件に応じて「2」以上増大させるようにしても良い。
また、上述実施の形態においては、直前のフィードバック発生符号量がフィードバック目標符号量を超えた場合に、フィードバック制御単位ごとの発生符号量が増大する傾向にあると判別するようにした場合について述べた。本技術は、これに限らず、例えば直前の複数のフィードバック制御単位ごとに発生符号量が目標符号量を超えるか否かにより、フィードバック制御単位ごとの発生符号量が増大する傾向にあると判別するようにしても良い。
このように、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において、種々の変更が可能である。
また、本技術は、以下のような構成をとることもできる。
(1)入力画像を符号化したときの画像単位毎の発生符号量が上記画像単位毎の目標符号量の近傍になると予測される基準量子化パラメータを決定する量子化パラメータ決定部と、
上記入力画像が前回符号化されたときに使用された量子化パラメータを検出量子化パラメータとして符号化単位毎に検出するバックサーチ部と、
上記入力画像を符号化単位毎に符号化する符号化部と、
上記符号化部によって符号化された上記入力画像の発生符号量をフィードバック制御単位毎に確認し、上記画像単位毎の発生符号量が上記画像単位毎の目標符号量を超えると予測する場合に、上記決定された基準量子化パラメータを増大させるフィードバック制御部と、
ダビング時に、上記符号化単位毎に、上記バックサーチ検出が成功していないとき、上記フィードバック制御された基本量子化パラメータを使用し、上記バックサーチ検出が成功しているとき、符号量抑制の必要性の判定結果に応じて、上記フィードバック制御された基本量子化パラメータまたは上記バックサーチ検出で得られた検出量子化パラメータを選択的に使用するように上記符号化部を制御する符号化制御部とを備える
画像処理装置。
(2)上記符号化制御部は、上記バックサーチ検出が成功しているとき、
上記符号量抑制が必要でないと判定する場合、上記検出量子化パラメータを使用するように上記符号化部を制御し、
上記符号量抑制が必要であると判定する場合、上記検出量子化パラメータが上記フィードバック制御された基本量子化パラメータより小さくないとき、該検出量子化パラメータを使用するように上記符号化部を制御すると共に、上記検出量子化パラメータが上記フィードバック制御された基本量子化パラメータより小さいとき、該フィードバック制御された基本量子化パラメータを使用するように上記符号化部を制御する
前記(1)に記載の画像処理装置。
(3)上記符号化制御部は、
直前のフィードバック制御単位までの発生符号量積算値が直前のフィードバック制御単位までの目標符号量積算値より大きいとき、上記符号量抑制が必要であると判定する
前記(1)または(2)に記載の画像処理装置。
(4)入力画像を符号化したときの画像単位毎の発生符号量が上記画像単位毎の目標符号量の近傍になると予測される基準量子化パラメータを決定する基準量子化パラメータ決定ステップと、
上記入力画像が前回符号化されたときに使用された量子化パラメータを検出量子化パラメータとして符号化単位毎に検出するバックサーチステップと、
上記入力画像を符号化単位毎に符号化する符号化ステップと、
上記符号化ステップによって符号化された上記入力画像の発生符号量をフィードバック制御単位毎に確認し、上記画像単位毎の発生符号量が上記画像単位毎の目標符号量を超えると予測する場合に、上記決定された基準量子化パラメータを増大させるフィードバック制御ステップと、
ダビング時に、上記符号化単位毎に、上記バックサーチ検出が成功していないとき、上記フィードバック制御された基本量子化パラメータを使用し、上記バックサーチ検出が成功しているとき、符号量抑制の必要性の判定結果に応じて、上記フィードバック制御された基本量子化パラメータまたは上記バックサーチ検出で得られた検出量子化パラメータを選択的に使用するように上記符号化ステップにおける符号化を制御する符号化制御ステップとを備える
画像処理方法。
(5)コンピュータを、
入力画像を符号化したときの画像単位毎の発生符号量が上記画像単位毎の目標符号量の近傍になると予測される基準量子化パラメータを決定する基準量子化パラメータ決定手段と、
上記入力画像が前回符号化されたときに使用された量子化パラメータを検出量子化パラメータとして符号化単位毎に検出するバックサーチ手段と、
上記入力画像を符号化単位毎に符号化する符号化手段と、
上記符号化手段によって符号化された上記入力画像の発生符号量をフィードバック制御単位毎に確認し、上記画像単位毎の発生符号量が上記画像単位毎の目標符号量を超えると予測する場合に、上記決定された基準量子化パラメータを増大させるフィードバック制御手段と、
ダビング時に、上記符号化単位毎に、上記バックサーチ検出が成功していないとき、上記フィードバック制御された基本量子化パラメータを使用し、上記バックサーチ検出が成功しているとき、符号量抑制の必要性の判定結果に応じて、上記フィードバック制御された基本量子化パラメータまたは上記バックサーチ検出で得られた検出量子化パラメータを選択的に使用するように上記符号化手段を制御する符号化制御手段と
して機能させるプログラム。