説明

画像符号化装置及び画像変換装置

【課題】短い単位時間における発生符号量の増加を抑制し、画像データをリアルタイムに符号化することができる技術を提供することを課題とする。
【解決手段】画像符号化装置1は、符号化対象のマクロブロックの量子化パラメータQrを求める。量子化パラメータQrは、補正値Qoffが加算されることにより補正される。符号化部14は、補正された量子化パラメータQrを用いてマクロブロックを符号化する。符号化後、量子化パラメータ補正部13は、符号化済みのマクロブロックごとに設定された目標符号量を累積して累積目標符号量Ttを算出し、符号化済みのマクロブロックの発生符号量RMを累積して累積発生符号量Ctを算出する。累積発生符号量Ctが累積目標符号量Ttよりも大きければ、量子化パラメータ補正部13は、補正値Qoffを増加させる。新たに符号化されるマクロブロックは、符号化済みのマクロブロックよりも粗く量子化される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、MPEGあるいはH.264などの規格に基づいて画像データを符号化する技術に関する。
【背景技術】
【0002】
デジタル放送で配信される画像データや、DVD(Digital Versatile Disk)、ハードディスク装置などに格納される画像データなどは、各種の符号化方式に従って圧縮される。画像データの圧縮は、伝送帯域の圧迫の抑制、あるいは、伝送速度の向上、記憶サイズの縮小などを目的として行われる。
【0003】
画像データの圧縮には、MPEG2や、H.264などの符号化方式が頻繁に用いられる。これらの符号化方式に対応するエンコーダには、単位時間(1ピクチャなど)当たりに発生する符号量の目標値(目標符号量)が予め設定されている。エンコーダは、単位時間当たりの圧縮画像データの符号量(発生符号量)が目標符号量を超えることがないように符号量制御を行う。
【0004】
符号量制御では、目標符号量と現在の発生符号量との差分値に基づくフィードバック制御が行われる。現在の発生符号量が目標符号量よりも大きければ、量子化ステップ値は、粗めに設定される。発生符号量が目標符号量よりも小さければ、量子化ステップ値は、細かく設定される。これにより、長い時間単位(秒単位など)での平均的な発生符号量が目標符号量となるように制御することができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−325239号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述した符号量制御の方法では、GOP(Group Of Pictures)単位、ピクチャ単位などの短い単位時間では、発生符号量が目標符号量よりも大きくなることがある。この場合、圧縮画像データの伝送先のバッファが、オーバーフローするなどの問題が発生するおそれがある。
【0007】
上記特許文献1には、短い単位時間における符号量を目標符号量に抑えるエンコーダが開示されている。エンコーダは、入力画像信号の各マクロブロックをn個の量子化器で量子化する。エンコーダは、各量子化ステップ値で量子化されたマクロブロックに対して可変長符号化を行うことにより、各量子化ステップ値で量子化されたマクロブロックの符号量を検出する。エンコーダは、ピクチャの目標符号量に最も近くなるように、各マクロブロックの量子化ステップ値の組み合わせを決定する。
【0008】
しかし、特許文献1に記載された方法で入力画像信号を符号化した場合、演算量が膨大となる。このため、リアルタイムに入力画像信号を符号化することが困難である。
【0009】
そこで、本発明は前記問題点に鑑み、短い単位時間における発生符号量の増加を抑制し、画像データをリアルタイムに符号化することができる技術を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記課題を解決するため、請求項1記載の発明は、非圧縮画像データを符号化する画像符号化装置であって、符号化対象であるカレントマクロブロックの量子化の粗さを示す粗さ設定値を決定する決定部と、決定された前記粗さ設定値に補正値を加算することにより、前記粗さ設定値を補正する粗さ補正部と、補正された粗さ設定値を用いて前記カレントマクロブロックを符号化する符号化部と、を備え、前記粗さ補正部は、最初に符号化された先頭マクロブロックから前記カレントマクロブロックまでのマクロブロックごとの発生符号量を累積して第1累積発生符号量を算出し、前記マクロブロックごとに設定された目標符号量を累積して第1累積目標符号量を算出する符号量累積部と、前記第1累積発生符号量が前記第1累積目標符号量よりも大きい場合、前記補正値を更新する補正値更新部と、を含む。
【0011】
請求項2記載の発明は、請求項1に記載の画像符号化装置において、前記粗さ補正部は、前記カレントマクロブロックが符号化されるまでに符号化された符号化済みマクロブロックごとの発生符号量の総和と、前記符号化済みマクロブロックごとの目標符号量の総和との差分値を、超過符号量として算出する超過符号量算出部、を含み、前記補正値更新部は、前記第1累積発生符号量から前記第1累積目標符号量を引いた差分値が前記超過符号量よりも大きい場合、前記補正値を更新する。
【0012】
請求項3記載の発明は、請求項1または請求項2に記載の画像符号化装置において、さらに、前記カレントマクロブロックの画素値のばらつき度合いを示すアクティビティに基づいて、前記カレントマクロブロックのレベルを決定するレベル決定部、を備え、前記補正値は、前記レベルに対応したレベル対応補正値、を含み、前記粗さ補正部は、前記レベル対応補正値のうち、前記カレントマクロブロックのレベルであるカレントレベルに対応するカレントレベル対応補正値を用いて前記粗さ設定値を補正し、前記補正値更新部は、前記第1累積発生符号量が前記第1累積目標符号量よりも大きい場合、前記カレントレベル対応補正値を更新する。
【0013】
請求項4記載の発明は、請求項3に記載の画像符号化装置において、前記符号量累積部は、前記マクロブロックのうち、前記カレントレベルに分類された分類マクロブロックごとの発生符号量を累積して第2累積発生符号量を算出し、前記分類マクロブロックごとの目標符号量を累積して第2累積目標符号量を算出し、前記補正値更新部は、前記第2累積発生符号量が前記第2累積目標符号量よりも大きい場合、前記カレントレベル対応補正値を更新する。
【0014】
請求項5記載の発明は、請求項4に記載の画像符号化装置において、前記カレントマクロブロックが符号化されるまでに符号化された分類マクロブロックごとの発生符号量の総和から、前記符号化された分類マクロブロックの目標符号量の総和を引いた値をレベル超過符号量として算出する超過符号量算出部、を含み、前記補正値更新部は、前記第2累積発生符号量と前記第2累積目標符号量との差分値が前記レベル超過符号量よりも大きい場合、前記カレントレベル対応補正値を更新する。
【0015】
請求項6記載の発明は、請求項4または請求項5に記載の画像符号化装置において、前記補正値更新部は、更新された前記カレントレベル対応補正値が予め設定された上限値を超えた場合、前記カレントレベル対応補正値を前記上限値に設定する。
【0016】
請求項7記載の発明は、請求項4または請求項5に記載の画像符号化装置において、前記補正値更新部は、前記第2累積発生符号量が前記第2累積目標符号量と前記カレントレベルに対応して設定された調整値との和である更新基準値よりも大きければ、前記カレントレベル対応補正値を更新する。
【0017】
請求項8記載の発明は、請求項4または請求項5に記載の画像符号化装置において、前記補正値更新部は、前記カレントレベル対応補正値が更新された場合、更新された前記カレントレベル対応補正値を用いて前記粗さ設定値を補正した補正使用回数をカウントし、前記補正使用回数が所定値よりも大きければ、前記カレントレベル対応補正値を再び更新する。
【0018】
請求項9記載の発明は、符号化画像データを復号する画像復号化装置と、請求項1ないし請求項8のいずれかに記載の前記画像符号化装置と、を備え、前記画像復号化装置は、デコードした画像データを、前記非圧縮画像データとして前記画像符号化装置に入力する。
【発明の効果】
【0019】
本発明の画像符号化装置は、カレントマクロブロックの符号化後に、累積発生符号量と累積目標符号量とを比較する。本発明の画像符号化装置は、累積発生符号量が累積目標符号量よりも大きければ、粗さ設定値に加算される補正値を更新する。新たに符号化されるマクロブロックは、カレントマクロブロックよりも粗く量子化される。これにより、本発明の画像符号化装置は、ピクチャの発生符号量がピクチャの目標符号量を大きく上回ることを防止することができ、安定したビットレートで符号化画像データを出力することができる。
【0020】
本発明の画像符号化装置は、カレントマクロブロックのアクティビティレベルに応じたレベル対応補正値を、粗さ設定値の補正値として使用する。カレントマクロブロックの符号化後、補正値として使用されたレベル対応補正値は、比較結果に基づいて更新される。このように、本発明の画像符号化装置は、マクロブロックのアクティビティに応じて符号量制御を実行する。したがって、符号量制御に伴って、全てのマクロブロックの画質が一律に劣化することを防止することができる。
【図面の簡単な説明】
【0021】
【図1】本発明の実施の形態に係る画像符号化装置の機能的構成を示すブロック図である。
【図2】非圧縮画像データのマクロブロックの構成を示す図である。
【図3】アクティビティとアクティビティレベルとの対応を示すテーブルである。
【図4】アクティビティレベルの決定の流れを示すフローチャートである。
【図5】ピクチャ単位での符号化の流れを示すフローチャートである。
【図6】マクロブロックの符号化に応じて変化する変化パラメータの初期値を示す図である。
【図7】図5に示すステップS8の処理の流れを示すフローチャートである。
【図8】アクティビティレベルに応じて設定される固定パラメータの設定値を示す図である。
【図9】図7に示すステップS807の処理の流れを示すフローチャートである。
【図10】本発明の実施の形態の変形例に係る画像変換装置の機能的構成を示すブロック図である。
【発明を実施するための形態】
【0022】
以下、図面を参照しつつ本発明の実施の形態について説明する。
【0023】
{1.全体構成}
図1は、本実施の形態に係る画像符号化装置1の機能的構成を示すブロック図である。図1に示すように、画像符号化装置1は、入力された非圧縮画像データ21をH.264方式で符号化して、H.264画像データ22を出力する。
【0024】
画像符号化装置1は、量子化パラメータ決定部11と、アクティビティレベル決定部12と、量子化パラメータ補正部13と、符号化部14とを備える。以下、非圧縮画像データ21のマクロブロックのうち、符号化対象のマクロブロックを「カレントMB(Macroblock)」と呼ぶ。
【0025】
量子化パラメータ決定部11は、カレントMBの量子化パラメータQrを決定する。量子化パラメータQrは、量子化ステップ値を決定するために用いられる。
【0026】
アクティビティレベル決定部12は、カレントMBのアクティビティを計算し、計算したアクティビティに基づいてカレントMBのアクティビティレベルALを決定する。アクティビティ及びアクティビティレベルALの詳細は、後述する。
【0027】
量子化パラメータ補正部13は、カレントMBの量子化パラメータQrを補正する。量子化パラメータ補正部13は、量子化パラメータQrの補正値であるQP(Quantization Parameter)補正値Qoffを、カレントMBのアクティビティレベルALに基づいて決定する。
【0028】
量子化パラメータ補正部13は、量子化パラメータQrの補正に用いられ、かつアクティビティレベルALごとに設定されたレベル対応補正値HQa(i)(図6参照)を保持している。「i」はアクティビティレベルALに対応する。カレントMBのアクティビティレベルALに対応するレベル対応補正値HQa(i)が、カレントMBのQP補正値Qoffとして用いられる。たとえば、カレントMBのアクティビティレベルALが「0」であれば、レベル対応補正値HQa(0)が、量子化パラメータQrの補正に用いられる。量子化パラメータ補正部13は、決定されたQP補正値Qoffを量子化パラメータQrに加算することにより補正する。
【0029】
量子化パラメータ補正部13は、量子化パラメータQrではなく、量子化ステップ値を補正してもよい。つまり、量子化パラメータ補正部13は、カレントMBの量子化の粗さを決める設定値を補正すればよい。
【0030】
量子化パラメータ補正部13は、符号量累積部131と、超過符号量算出部132と、補正値更新部133とを備える。
【0031】
符号量累積部131は、最初に符号化された先頭マクロブロックからカレントMBまでのマクロブロックごとの発生符号量RMを積算して累積発生符号量Ctを算出する。符号量累積部131は、先頭マクロブロックからカレントMBまでのマクロブロックごとに設定された目標符号量を積算して累積目標符号量Ttを算出する。
【0032】
超過符号量算出部132は、マクロブロックが符号化されるたびに、累積発生符号量Ctから累積目標符号量Ttを差し引いた値を超過符号量Etとして算出する。
【0033】
補正値更新部133は、カレントMBのQP補正値Qoffとして使用されたレベル対応補正値HQa(i)を更新する。
【0034】
符号化部14は、補正された量子化パラメータQrを用いてカレントMBを符号化する。符号化部14は、量子化部141と、算術符号化部142とを備える。量子化部141は、補正された量子化パラメータQrを用いてカレントMBを量子化する。算術符号化部142は、量子化されたカレントMBに対して算術符号化を行う。
【0035】
画像符号化装置1は、マクロブロックを符号化するたびに符号量制御を実行するため、ピクチャ全体の発生符号量がピクチャ全体の目標符号量を大きく超えることを防止することができる。画像符号化装置1において、マクロブロックが量子化される回数は、H.264画像データ22を生成するために1回だけ行われる。画像符号化装置1は、上記の量子化の他に、符号量制御に用いるために用いることを目的としてマクロブロックの量子化を実行しない。画像符号化装置1は、符号量制御で行われる演算量を削減できるため、リアルタイムで非圧縮画像データ21を符号化することができる。
【0036】
以下、画像符号化装置1の動作について説明する。
【0037】
{2.アクティビティレベルの決定}
まず、アクティビティレベル決定部12の処理内容について説明する。カレントMBのQP補正値Qoffは、上述したように、カレントMBのアクティビティレベルALに基づいて決定される。このため、アクティビティレベルALの詳細を最初に説明する。以下、アクティビティレベルALを単に「レベルAL」と記載する。
【0038】
図2は、非圧縮画像データ21のマクロブロックの構成を示す図である。図2に示すように、非圧縮画像データ21のピクチャが、36個のマクロブロックm0〜m35で構成される場合を例に説明する。1ピクチャは、縦6個×横6個のマクロブロックで構成されている。
【0039】
アクティビティは、マクロブロックの画素値のばらつき度合いを示す数値であり、マクロブロックごとに計算される。アクティビティレベル決定部12は、(数1)を用いてカレントMBのアクティビティを算出する。
【0040】
【数1】

【0041】
(数1)において、vは、垂直ライン方向のマクロブロックの画素数である。hは、水平ライン方向のマクロブロックの画素数である。Yは、マクロブロック内の各画素の画素値を示す。(数1)に示すように、アクティビティは、ある画素(注目画素)と、注目画素の右隣に接する隣接画素の画素値との差分絶対値の総和である。画素値としては、輝度値や、色成分値などを用いることができる。隣接画素は、注目画素の左隣に接する画素でもよいし、上下のどちらかに接する画素でもよい。隣接画素の画素値に代えて、注目画素の周辺にある複数の画素の画素値の平均値を用いてもよい。アクティビティレベル決定部12は、マクロブロック内の画素値の分散を、アクティビティとして計算してもよい。
【0042】
アクティビティレベル決定部12は、算出したカレントMBのアクティビティに基づいて、カレントMBのレベルALを決定する。図3は、アクティビティとレベルALとの対応関係を示す図である。図3に示すように、カレントMBのアクティビティが0〜511であれば、カレントMBのレベルALは、「0」に設定される。カレントMBのアクティビティが512〜1023であれば、カレントMBのレベルALは、「1」に設定される。カレントMBのアクティビティが1024以上であれば、カレントMBのレベルALは、「2」に設定される。この結果、マクロブロックm0〜m35は、図2に示すように、「0」,「1」,「2」のいずれかのアクティビティレベルに分類される。
【0043】
カレントMBのレベルALを決定する流れについて説明する。図3に示すように、アクティビティレベル決定部12には、カレントMBのレベルALの決定に用いるレベル閾値Th(0),Th(1)が設定されている。レベル閾値Th(0),Th(1)は、レベルAL「0」、「1」のアクティビティの上限値に対応する。レベル閾値Th(0),Th(1)の設定値は、「511」,「1023」である。
【0044】
図4は、カレントMBのレベルALを決定する流れを示すフローチャートである。アクティビティレベル決定部12は、初期化処理を行う(ステップS41)。具体的には、レベルALの最大値を示すLevelNumが「2」に設定される。ループカウンタであるcjが「0」に設定される。カレントMBのアクティビティレベルALの初期値として、「2」が設定される。
【0045】
cjがLevelNumよりも小さければ(ステップS42においてYes)、アクティビティレベル決定部12は、カレントMBのアクティビティとレベル閾値Th(cj)とを比較する(ステップS43)。
【0046】
カレントMBのアクティビティがレベル閾値Th(cj)以下であれば(ステップS43においてYes)、アクティビティレベル決定部12は、カレントMBのレベルALを「2」から「cj」に変更する(ステップS44)。一方、カレントMBのアクティビティがレベル閾値Th(cj)よりも大きければ(ステップS43においてNo)、アクティビティレベル決定部12は、cjをインクリメントし(ステップS45)、ステップS42に戻る。
【0047】
ステップS42において、cjがLevelNum以上であれば(ステップS42においてNo)、カレントMBのアクティビティがレベル閾値Th(1)よりも大きいことになる。このため、アクティビティレベル決定部12は、カレントMBのアクティビティレベルALを初期値「2」に設定したまま、図4に示す処理を終了する。
【0048】
{3.符号量制御の流れ}
非圧縮画像データ21の符号化の際に行われる符号量制御について詳しく説明する。図5は、非圧縮画像データ21の各ピクチャのエンコードの流れを示すフローチャートである。画像符号化装置1は、マクロブロックを符号化するたびに符号量制御を実行する。
【0049】
まず、画像符号化装置1は、符号量制御に用いる各種パラメータを初期化する(ステップS1)。各種パラメータについては、符号量制御の各ステップで詳細に説明する。画像符号化装置1は、カレントMBのインデックスがピクチャ内の総マクロブロック数以下であるか否かを確認する(ステップS2)。
【0050】
インデックスが総マクロブロック数以下でなければ(ステップS2においてNo)、画像符号化装置1は、ピクチャ内の全てのマクロブロックの符号化が完了したと判断して、図5に示す処理を終了する。
【0051】
インデックスが総マクロブロック数以下であれば(ステップS2においてYes)、量子化パラメータ決定部11は、カレントMBの量子化パラメータQrを決定する(ステップS3)。量子化パラメータQrは、カレントMBの符号化コスト及び動き補償コストなどに基づいて決定される。アクティビティレベル決定部12は、上述したように、カレントMBのアクティビティを算出し、カレントMBのレベルALを決定する(ステップS4)。
【0052】
量子化パラメータ補正部13は、カレントMBのレベルALに基づいて、量子化パラメータQrの補正に用いるQP補正値Qoffを決定する(ステップS5)。たとえば、マクロブロックm4のレベルALは「0」である(図2参照)。このため、レベル対応補正値HQa(0)が、マクロブロックm4のQP補正値Qoffとして設定される。量子化パラメータ補正部13は、QP補正値Qoffを量子化パラメータQrに加算して、カレントMBの量子化パラメータQrを補正する(ステップS6)。
【0053】
図6は、マクロブロックの符号化に応じて値が変化する変化パラメータの初期値を示すテーブルである。レベル対応補正値HQa(i)の初期値は、レベルALに関係なく「0」である。したがって、先頭マクロブロックであるマクロブロックm0の量子化パラメータQrは、実質的に変化しない。図6に示すレベル対応補正値HQa(i)を除くパラメータの詳細は、後述する。
【0054】
レベル対応補正値HQa(i)は、後述する符号化済みのマクロブロックごとの発生符号量RMを累積した累積発生符号量Ctと、符号化済みのマクロブロックごとに設定された目標符号量を累積した累積目標符号量Ttとの比較結果などに応じて増加する。たとえば、マクロブロックm8のレベルALが「1」であるため(図2参照)、マクロブロックm8のQP補正値Qoffとして、レベル対応補正値HQa(1)が用いられる。レベル対応補正値HQa(1)の値が0以上であれば、マクロブロックm8の量子化パラメータQrは、補正に伴って増加する。
【0055】
符号化部14は、補正された量子化パラメータQrを用いてカレントMBを符号化する(ステップS7)。量子化部141が、補正された量子化パラメータQrを用いてカレントMBを量子化する。算術符号化部142は、量子化されたカレントMBを算術符号化する。算術符号化には、コンテキスト適応型2値算術符号化方式(CABAC:Context−Adaptive Binary Arithmetic Coding)などが用いられる。量子化パラメータQrの補正(ステップS6)により量子化パラメータQrの値が増加した場合、カレントMBは粗く量子化されるためカレントMBの発生符号量は抑制される。
【0056】
補正値更新部133は、カレントMBのQP補正値Qoffとして用いられたレベル対応補正値HQa(i)の更新処理を行う(ステップS8)。たとえば、マクロブロックm8が符号化された場合、マクロブロックm8のQP補正値Qoffとして用いられたレベル対応補正値HQa(1)が更新の対象となる。更新条件の詳細は後述する。
【0057】
{4.ステップS8の処理内容}
レベル対応補正値HQa(i)の更新処理(ステップS8、図5参照)について詳しく説明する。以下、マクロブロックm8がカレントMBとして符号化された場合を例に説明する。マクロブロックm8のレベルALは「1」であるため(図2参照)、レベル対応補正値HQa(1)が更新の対象となる。
【0058】
図7は、ステップS8の処理の流れを示すフローチャートである。マクロブロックm8のQP補正値Qoffとして用いられたレベル対応補正値HQa(1)は、以下に説明する全ての更新条件が満たされた場合、更新される。
【0059】
まず、量子化パラメータ補正部13は、マクロブロックm8の符号化の際にレベル対応補正値HQa(1)が使用されたため、補正使用回数FM(1)の値を一つ増加させる(ステップS801)。補正使用回数FM(1)は、レベル対応補正値HQa(1)の使用回数を示す。補正使用回数FM(1)は、レベル対応補正値HQa(1)の更新条件の確認に用いられるパラメータの一つである。補正使用回数FM(i)の詳細は、後述するステップS814(図9参照)で説明する。
【0060】
符号量累積部131は、符号量に関するパラメータを最新の状態に更新する(ステップS802,S803)。ステップS802では、符号量累積部131は、マクロブロックm8の発生符号量RMを累積発生符号量Ct及びレベル累積発生量Ca(1)に加算する。累積発生符号量Ctは、符号化済みのマクロブロックm0〜m8の発生符号量RMを積算した値である。累積発生符号量Ctは、マクロブロックm8の符号化が終了した時点でのピクチャ全体の発生符号量に相当する。レベル累積発生量Ca(1)は、符号化済みのマクロブロックm0〜m8のうち、レベルALが「1」に分類されたマクロブロックm0,m2,m5,m8(図2参照)の発生符号量RMの積算値である。図6に示すように、レベル累積発生量Ca(i)の初期値は、レベルALに関係なく「0」である。レベル累積発生量Ca(i)は、図9に示す処理で用いられる。
【0061】
ステップS803において、符号量累積部131は、マクロブロックm8に設定された目標符号量を累積目標符号量Tt及びレベル累積目標量Ta(1)に加算する。ここで、カレントMBに対する目標符号量の設定について説明する。図8は、レベルALに応じて予め設定される固定パラメータの初期値を示す図である。マクロブロックm8の目標符号量は、レベルALと、図8に示すレベル目標符号量ST(i)とに基づいて設定される。レベル目標符号量ST(i)は、レベルALごとに定められる目標符号量である。マクロブロックm8のレベルALが「1」であるため、マクロブロックm8の目標符号量には、ST(1)=130が設定される。図8に示すレベル目標符号量ST(i)を除くパラメータについては後述する。
【0062】
累積目標符号量Ttは、符号化済みのマクロブロックm0〜m8のそれぞれに対して設定された目標符号量の積算値である。累積目標符号量Ttは、マクロブロックm8の符号化が終了した時点でのピクチャ全体の目標符号量に相当する。レベル累積目標量Ta(1)は、符号化済みのマクロブロックm0〜m8のうち、レベルALが「1」に分類されたマクロブロックm0,m2,m5,m8(図2参照)の目標符号量の積算値である。図6に示すように、レベル累積目標量Ta(i)の初期値は、レベルALに関係なく「0」である。レベル累積目標量Ta(1)は、図9に示す処理で用いられる。
【0063】
ステップS803に示す処理の後に、量子化パラメータ補正部13は、累積目標符号量Ttと累積発生符号量Ctとを比較する(ステップS804)。累積目標符号量Ttが累積発生符号量Ctよりも小さければ(ステップS804においてYes)、量子化パラメータ補正部13は、レベル対応補正値HQa(1)の更新条件の一つが満たされていると判定する。これは、ピクチャエンコードの終了時に、ピクチャ全体の発生符号量がピクチャ全体の目標符号量を超えている可能性が高いためである。
【0064】
しかし、レベルALが「1」のマクロブロックを符号化するたびに、累積目標符号量Ttが累積発生符号量Ctよりも小さい状態が続くことが考えられる。このような状態において、レベルALが「1」のマクロブロックが符号化されるたびに、レベル対応補正量HQa(1)を増加させると、レベルALが「1」のマクロブロックの画質が急激に劣化する。レベルALが「1」のマクロブロックの画質が急激に劣化することを防ぐために、補正値更新部133は、ステップS806、S807における処理により、レベル対応補正値HQa(1)の他の更新条件が全て満たされているか否かを確認する。
【0065】
ステップS806における処理では、超過符号量Et及び仮差分量が用いられる。超過符号量Etは、マクロブロックm8を符号化する前(マクロブロックm7の符号化が終了した時点)に、累積発生符号量Ctから累積目標符号量Ttを差し引いた値である。仮差分量は、マクロブロックm8の符号化が終了した時点における累積発生符号量Ctから累積目標符号量Ttを差し引いた値である。つまり、仮差分量は、マクロブロックm8の符号化が終了した時点における超過符号量Etに相当する。
【0066】
仮差分量が超過符号量Etよりも大きければ(ステップS806においてYes)、補正値更新部133は、マクロブロックm8のQP補正値Qoffとして用いられたレベル対応補正値HQa(1)の更新条件が満たされていると判断する。なぜならば、マクロブロックm8の符号化に伴って、ピクチャ全体の発生符号量(累積発生符号量Ct)と目標符号量(累積目標符号量Tt)との差が拡大したと考えられるためである。補正値更新部133は、レベル対応補正値HQa(1)の更新条件をレベルAL単位で確認する(ステップS807)。ステップS807の詳細は、後述する。
【0067】
超過符号量算出部132は、超過符号量Etを最新の状態に更新する(ステップS808)。具体的には、超過符号量Etは、マクロブロックm8が符号化された時点での累積発生符号量Ctから累積目標符号量Ttを差し引いた値(仮差分量)に設定される。
【0068】
ステップS806において、仮差分量が超過符号量Et以下であれば(ステップS806においてNo)、補正値更新部133は、レベル対応補正値HQa(1)を更新しない。この場合、ピクチャ全体の発生符号量(累積発生符号量Ct)と目標符号量(累積目標符号量Tt)との差が縮小傾向にある。補正値更新部133は、レベル対応補正値HQa(1)を更新しなくても、ピクチャ全体の発生符号量をピクチャ全体の目標符号量以下に抑えることができると判断する。これにより、レベル対応補正値HQa(1)の更新頻度が抑制されるため、レベルALが「1」のマクロブロックの画質が急激に劣化することを防止することができる。超過符号量算出部132は、超過符号量Etを最新の状態に更新する(ステップS808)。
【0069】
ステップS804において、累積発生符号量Ctが累積目標符号量Tt以下である場合(ステップS804においてYes)、レベル対応補正値HQa(i)は、更新されない。超過符号量算出部132は、超過符号量Etを0に設定し(ステップS805)、図7に示す処理を終了する。
【0070】
{5.ステップS807の詳細}
図9は、ステップS807の詳細な処理の流れを示すフローチャートである。以下、図7の説明と同様に、レベルALが「1」であるマクロブロックm8の符号化が終了したときの処理を例に説明する。量子化パラメータ補正部13は、マクロブロックm8のQP補正値Qoffとして用いられたレベル対応補正値HQa(1)の更新条件が満たされているか否かを、レベルALごとに設定されたパラメータを用いて判定する。
【0071】
図9に示す処理では、ステップS802,S803(図7参照)で説明したレベル累積発生量Ca(1)及びレベル累積目標量Ta(1)などが用いられる。レベル累積発生量Ca(1)は、レベルALが「1」である符号化済みのマクロブロックm0,m2,m5,m8(図2参照)の発生符号量RMの積算値である。レベル累積目標量Ta(1)は、マクロブロックm0,m2,m5,m8に設定された目標符号量の積算値である。
【0072】
上述したように、レベル対応補正値HQa(1)が頻繁に更新されることにより、レベルALが「1」であるマクロブロックの画質が急激に劣化することを防止する必要がある。そこで、補正値更新部133は、レベル累積目標量Ta(1)に目標量調整値Ga(1)を加算して、レベル累積発生量Ca(1)との比較に用いる更新基準値Tyを算出する(ステップS811)。図8に示すように、目標量調整値Ga(i)は、レベルALに関係なく同一の値が設定されている。しかし、レベルALごとに異なる値を目標量調整値Ga(i)に設定してもよい。
【0073】
補正値更新部133は、レベル対応補正量HQa(1)の更新条件が満たされているか否かを確認するために、累積レベル発生量Ca(1)と更新基準値Tyとを比較する(ステップS812)。補正値更新部133は、レベル累積発生量Ca(1)とレベル累積目標量Ta(1)とを直接比較しない。これにより、レベル対応補正値HQa(1)が、レベル累積発生量Ca(1)がレベル累積目標量Ta(1)を超えるたびに更新されることを防止できる。
【0074】
累積レベル発生量Ca(1)が更新基準値Tyよりも大きければ(ステップS812においてYes)、補正値更新部133は、レベル対応補正値HQa(1)の更新条件が満たされていると判断し、ステップS814に進む。なぜならば、累積発生符号量Ctが累積目標符号量Ttを超過する(ステップS804においてYes:図7参照)原因が、レベルALが「1」のマクロブロックの符号化にあると考えられるためである。
【0075】
補正値更新部133は、補正使用回数FM(1)と更新許可回数Pa(1)とを比較する(ステップS814)。上述したように、補正使用回数FM(1)は、更新されたレベル対応補正値HQa(1)がQP補正値Qoffとして使用された回数を示す。更新許可回数Pa(1)は、レベル対応補正値HQa(1)の更新を許可するまでのレベル対応補正値HQa(1)の使用回数を示す。図8に示すように、更新許可回数Pa(1)は、「6」に設定される。レベル対応補正値HQa(1)を更新するためには、レベル対応補正値HQa(1)をQP補正値Qoffとして7回以上使用する必要がある。
【0076】
補正使用回数FM(1)が更新許可回数Pa(1)よりも大きければ(ステップS814においてYes)、補正値更新部133は、レベル対応補正値HQa(1)の更新条件が満たされていると判定し、ステップS816に進む。
【0077】
ステップS816における処理では、レベル超過符号量Ea(1)及びレベル仮差分量が用いられる。レベル超過符号量Ea(1)は、レベル累積発生量Ca(1)と更新基準値Tyとの差分値である。レベル超過符号量Ea(1)は、レベルALが「1」のマクロブロックが符号化されるたびに更新される。図9に示す処理の開始時点で、レベル超過符号量Ea(1)は、レベルALが「1」のマクロブロックm5が符号化された時に算出された値を有する。レベル仮差分量は、ステップS802で算出されたレベル累積発生量Ca(1)から、ステップS811で算出された更新基準値を差し引いた値である。つまり、レベル仮差分量は、マクロブロックm8の符号化に応じて更新されたレベル超過符号量Ea(1)に相当する。
【0078】
レベル仮差分量がレベル超過符号量Ea(1)よりも大きければ(ステップS816においてYes)、レベル超過符号量Ea(1)が増加傾向にある。この場合、補正値更新部133は、レベル対応補正値HQa(1)の更新条件が全て満たされていると判定する。レベル対応補正値HQa(1)の更新処理として、ステップS817〜S821に示す処理が実行される。
【0079】
超過符号量算出部132は、ステップS802で算出されたレベル累積発生量Ca(1)から、ステップS811で算出された更新基準値を差し引いた値(仮レベル差分量)を、レベル超過符号量Ea(1)として設定する(ステップS817)。これにより、レベル超過符号量Ea(1)は、マクロブロックm8の符号化に応じた値に更新される。
【0080】
補正値更新部133は、レベル対応補正値HQa(1)を更新するために、レベル対応補正値HQa(1)にレベル対応加算値Ia(1)を加算する(ステップS818)。レベル対応加算値Ia(1)は、レベル対応補正値HQa(1)の更新時に加算される数値である。図8に示すように、レベル対応加算値Ia(i)は、レベルALに関係なく「1」に設定されている。しかし、レベルALごとに異なる値をレベル対応加算値Ia(i)に設定してもよい。
【0081】
補正値更新部133は、レベル対応補正値HQa(1)が際限なく増加することを防ぐために、更新されたレベル対応補正値HQa(1)とレベル上限値La(1)とを比較する(ステップS819)。更新されたレベル対応補正値HQa(1)がレベル上限値La(1)よりも大きければ(ステップS819においてYes)、補正値更新部133は、更新されたレベル対応補正値HQa(1)をレベル上限値La(1)に再設定する(ステップS820)。図8に示すように、レベル上限値La(1)は、「4」である。レベル対応補正値HQa(1)がレベル上限値La(1)よりも大きくなることがないため、レベルALが「1」のマクロブロックの画質が極端に劣化することを防止できる。
【0082】
一方、更新されたレベル対応補正値HQa(1)がレベル上限値La(1)以下であれば(ステップS819においてNo)、更新されたレベル対応補正値HQa(1)がそのまま用いられる。補正値更新部133は、レベル対応補正値HQa(1)が更新されたため、補正使用回数FM(1)を「0」に設定する(ステップS821)。更新されたレベル対応補正値HQa(1)の使用回数が更新許可回数Pa(1)を超えない限り、レベル対応補正値HQa(1)は、再度更新されない。
【0083】
ステップS816の説明に戻る。仮レベル超過量がレベル超過符号量Ea(1)以下であれば(ステップS816においてNo)、レベル超過符号量Ea(1)が減少傾向にある。このため、補正値更新部133は、レベル対応補正値HQa(1)の更新条件が満たされていないと判定する。超過符号量算出部132は、レベル超過符号量Ea(1)をマクロブロックm8の符号化に応じて更新する(ステップS815)。ステップS815では、ステップS817で説明した処理と同じ処理が実行される。
【0084】
ステップS814の説明に戻る。補正使用回数FM(1)が更新許可回数Pa(1)以下であれば(ステップS814においてNo)、補正値更新部133は、レベル対応補正値HQa(1)の更新条件が満たされていないと判定する。この場合、レベル対応補正値HQa(1)は、更新されない。超過符号量算出部132は、レベル超過符号量Ea(1)をマクロブロックm8の符号化に応じて更新する(ステップS815)。
【0085】
以上説明したように、本実施の形態に係る画像符号化装置1は、マクロブロックを符号化するたびに符号量制御を実行する。符号量制御には、ピクチャ全体の発生符号量とピクチャ全体の目標符号量との比較結果が用いられる。符号量制御には、符号化済みのマクロブロックのうち、カレントMBと同じレベルALに分類されたマクロブロックの発生符号量の積算値と目標符号量の積算値との比較結果などが用いられる。この結果、符号量制御に必要な演算量が削減されるため、画像符号化装置1は、非圧縮画像データ21をリアルタイムに符号化できるとともに、ピクチャ単位での発生符号量が目標符号量を大幅に上回ることを防止することができる。
【0086】
画像符号化装置1は、カレントMBのレベルALに基づいて、量子化パラメータQrの補正に用いるレベル対応補正値HQa(i)を決定する。補正に用いられたレベル対応補正値HQa(i)は、上述の比較結果などに基づいて更新される。このように、画像符号化装置1は、マクロブロックのアクティビティに応じて符号量制御を実行するため、全てのマクロブロックの画質が符号量制御により一律に劣化することを防止できる。
【0087】
本実施の形態では、カレントMBのレベルALに応じてQP補正値Qoffを設定する例について説明した。しかし、レベルALに対応するレベル対応補正値HQa(i)を用いなくてもよい。たとえば、累積発生符号量Ctが累積目標符号量Ttよりも大きくなったときに、QP補正値Qoffを増加させてもよい。この場合、符号量制御に必要なパラメータを削減できるとともに、符号量制御の演算量を削減できる。
【0088】
図9に示すステップS812において、補正値更新部133は、レベル累積発生量Ca(1)と更新基準値Tyとを比較した。しかし、補正値更新部133は、ステップS812において、レベル累積発生量Ca(1)とレベル累積目標量Ta(1)とを直接比較してもよい。更新基準値Tyを算出しなくてもよいため、演算量を削減することができる。この場合、超過符号量Ea(1)の更新処理(ステップS815、S816)では、更新基準値Tyに代えて、レベル累積目標量Ca(1)が用いられる。
【0089】
{変形例}
本実施の形態で説明した画像符号化装置1を、画像変換装置の符号化部として用いてもよい。図10は、本実施の形態の変形例に係る画像変換装置100の機能的構成を示すブロック図である。画像変換装置100は、画像符号化装置1と、画像復号化装置2とを備える。画像符号化装置1は、上記第1の実施の形態で説明した装置である。
【0090】
画像復号化装置2は、MPEG2デコーダである。画像復号化装置2は、MPEG2方式で符号化されたMPEG2画像データ23を復号化して、非圧縮画像データ21を生成する。非圧縮画像データ21は、画像符号化装置1に入力される。画像符号化装置1は、上記第1の実施の形態で説明した手順と同様の手順で、非圧縮画像データ21をH.264方式で再び符号化する。これにより、MPEG2画像データ23をリアルタイムでH.264画像データに変換することができるとともに、H.264画像データのピクチャ当たりの発生符号量が目標符号量を大きく上回ることを防止することができる。
【0091】
図10では、MPEG2画像データをH.264画像データ1に変換する画像変換装置100を示している。しかし、画像復号化装置2は、画像変換装置100に入力されたH.264画像データを復号化してもよい。この場合、非圧縮画像データ21は、入力されるH.264画像データの符号化条件と異なる条件で符号化される。
【符号の説明】
【0092】
1 画像符号化装置
11 量子化パラメータ決定部
12 アクティビティレベル決定部
13 量子化パラメータ補正部
14 符号化部
131 符号量累積部
132 超過符号量算出部
133 補正値更新部
141 量子化部
142 算術符号化部

【特許請求の範囲】
【請求項1】
非圧縮画像データを符号化する画像符号化装置であって、
符号化対象であるカレントマクロブロックの量子化の粗さを示す粗さ設定値を決定する決定部と、
決定された前記粗さ設定値に補正値を加算することにより、前記粗さ設定値を補正する粗さ補正部と、
補正された粗さ設定値を用いて前記カレントマクロブロックを符号化する符号化部と、
を備え、
前記粗さ補正部は、
最初に符号化された先頭マクロブロックから前記カレントマクロブロックまでのマクロブロックごとの発生符号量を累積して第1累積発生符号量を算出し、前記マクロブロックごとに設定された目標符号量を累積して第1累積目標符号量を算出する符号量累積部と、
前記第1累積発生符号量が前記第1累積目標符号量よりも大きい場合、前記補正値を更新する補正値更新部と、
を含む画像符号化装置。
【請求項2】
請求項1に記載の画像符号化装置において、
前記粗さ補正部は、
前記カレントマクロブロックが符号化されるまでに符号化された符号化済みマクロブロックごとの発生符号量の総和と、前記符号化済みマクロブロックごとの目標符号量の総和との差分値を、超過符号量として算出する超過符号量算出部、
を含み、
前記補正値更新部は、前記第1累積発生符号量から前記第1累積目標符号量を引いた差分値が前記超過符号量よりも大きい場合、前記補正値を更新する画像符号化装置。
【請求項3】
請求項1または請求項2に記載の画像符号化装置において、さらに、
前記カレントマクロブロックの画素値のばらつき度合いを示すアクティビティに基づいて、前記カレントマクロブロックのレベルを決定するレベル決定部、
を備え、
前記補正値は、
前記レベルに対応したレベル対応補正値、
を含み、
前記粗さ補正部は、前記レベル対応補正値のうち、前記カレントマクロブロックのレベルであるカレントレベルに対応するカレントレベル対応補正値を用いて前記粗さ設定値を補正し、
前記補正値更新部は、前記第1累積発生符号量が前記第1累積目標符号量よりも大きい場合、前記カレントレベル対応補正値を更新する画像符号化装置。
【請求項4】
請求項3に記載の画像符号化装置において、
前記符号量累積部は、前記マクロブロックのうち、前記カレントレベルに分類された分類マクロブロックごとの発生符号量を累積して第2累積発生符号量を算出し、前記分類マクロブロックごとの目標符号量を累積して第2累積目標符号量を算出し、
前記補正値更新部は、前記第2累積発生符号量が前記第2累積目標符号量よりも大きい場合、前記カレントレベル対応補正値を更新する画像符号化装置。
【請求項5】
請求項4に記載の画像符号化装置において、
前記カレントマクロブロックが符号化されるまでに符号化された分類マクロブロックごとの発生符号量の総和から、前記符号化された分類マクロブロックの目標符号量の総和を引いた値をレベル超過符号量として算出する超過符号量算出部、
を含み、
前記補正値更新部は、前記第2累積発生符号量と前記第2累積目標符号量との差分値が前記レベル超過符号量よりも大きい場合、前記カレントレベル対応補正値を更新する画像符号化装置。
【請求項6】
請求項4または請求項5に記載の画像符号化装置において、
前記補正値更新部は、更新された前記カレントレベル対応補正値が予め設定された上限値を超えた場合、前記カレントレベル対応補正値を前記上限値に設定する画像符号化装置。
【請求項7】
請求項4または請求項5に記載の画像符号化装置において、
前記補正値更新部は、前記第2累積発生符号量が前記第2累積目標符号量と前記カレントレベルに対応して設定された調整値との和である更新基準値よりも大きければ、前記カレントレベル対応補正値を更新する画像符号化装置。
【請求項8】
請求項4または請求項5に記載の画像符号化装置において、
前記補正値更新部は、前記カレントレベル対応補正値が更新された場合、更新された前記カレントレベル対応補正値を用いて前記粗さ設定値を補正した補正使用回数をカウントし、前記補正使用回数が所定値よりも大きければ、前記カレントレベル対応補正値を再び更新する画像符号化装置。
【請求項9】
符号化画像データを復号する画像復号化装置と、
請求項1ないし請求項8のいずれかに記載の前記画像符号化装置と、
を備え、
前記画像復号化装置は、デコードした画像データを、前記非圧縮画像データとして前記画像符号化装置に入力する画像変換装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2011−171855(P2011−171855A)
【公開日】平成23年9月1日(2011.9.1)
【国際特許分類】
【出願番号】特願2010−31809(P2010−31809)
【出願日】平成22年2月16日(2010.2.16)
【出願人】(591128453)株式会社メガチップス (322)
【Fターム(参考)】