<第1実施の形態>
[符号化装置の構成例]
図1は、本技術を適用した符号化装置の第1実施の形態の構成例を示す図である。
図1の符号化装置21は、A/D変換部121、画面並べ替えバッファ122、演算部123、直交変換部124、量子化部125、可逆符号化部126、蓄積バッファ127、逆量子化部128、逆直交変換部129、加算部130、デブロックフィルタ131、フレームメモリ132、スイッチ133、イントラ予測部134、動き予測・補償部135、選択部136、受付部137、マップメモリ138、イントラマクロ決定部139、およびレート制御部140により構成される。符号化装置21は、符号化対象として入力される画像データをAVC方式で符号化し、その結果得られるビットストリームを送信する。
具体的には、符号化装置21のA/D変換部121は、符号化対象のフレーム単位の画像データをA/D変換し、画面並べ替えバッファ122に出力して記憶させる。画面並べ替えバッファ122は、記憶した表示の順番のフレーム単位の画像データを、GOP(Group of Picture)構造に応じて、符号化のための順番に並べ替え、演算部123と動き予測・補償部135に出力する。
演算部123は、符号化部として機能し、選択部136から供給される予測画像データと、画面並べ替えバッファ122から出力された符号化対象の画像データの差分を演算することにより、符号化対象の画像データを符号化する。具体的には、演算部123は、画面並べ替えバッファ122から出力された符号化対象の画像データから、選択部136から供給される予測画像データを減算する。演算部123は、減算の結果得られる画像データを、残差情報として直交変換部124に出力する。なお、選択部136から予測画像データが供給されない場合、演算部123は、画面並べ替えバッファ122から読み出された画像データをそのまま残差情報として直交変換部124に出力する。
直交変換部124は、演算部123からの残差情報に対して離散コサイン変換、カルーネン・レーベ変換等の直交変換を施し、その結果得られる係数を量子化部125に供給する。
量子化部125は、直交変換部124から供給される係数を量子化する。量子化された係数は、可逆符号化部126に入力される。
可逆符号化部126は、量子化部125から供給される量子化された係数に対して、可変長符号化(例えば、CAVLC(Context-Adaptive Variable Length Coding)など)、算術符号化(例えば、CABAC(Context-Adaptive Binary Arithmetic Coding)など)などの可逆符号化を行い、符号化データを得る。また、可逆符号化部126は、イントラ予測部134から供給されるイントラ予測モード情報、または、動き予測・補償部135から供給されるインター予測モード情報を可逆符号化し、その結果得られる情報を符号化データに付加されるヘッダ情報とする。可逆符号化部126は、可逆符号化の結果得られるヘッダ情報が付加された符号化データをビットストリームとして蓄積バッファ127に供給し、蓄積させる。
蓄積バッファ127は、可逆符号化部126から供給されるビットストリームを、一時的に記憶する。蓄積バッファ127は、送信部として機能し、記憶しているビットストリームを、伝送路を介して図示せぬ復号装置に送信する。
また、量子化部125より出力された、量子化された係数は、逆量子化部128にも入力され、逆量子化された後、逆直交変換部129に供給される。
逆直交変換部129は、逆量子化部128から供給される係数に対して、逆離散コサイン変換、逆カルーネン・レーベ変換等の逆直交変換を施し、その結果得られる残差情報を加算部130に供給する。
加算部130は、逆直交変換部129から供給される復号対象の符号化データとしての残差情報と、選択部136から供給される予測画像データを加算して、局部的に復号された画像データを得る。なお、選択部136から予測画像データが供給されない場合、加算部130は、逆直交変換部129から供給される残差情報を局部的に復号された画像データとする。加算部130は、局部的に復号された画像データをデブロックフィルタ131に供給する。
デブロックフィルタ131は、加算部130から供給される局部的に復号された画像データをフィルタリングすることにより、ブロック歪を除去する。デブロックフィルタ131は、その結果得られる画像データをフレームメモリ132に供給し、蓄積させる。フレームメモリ132に蓄積された画像データは、参照画像データとしてスイッチ133を介して、イントラ予測部134または動き予測・補償部135に出力される。
イントラ予測部134は、フレームメモリ132からスイッチ133を介して供給された参照画像データを用いて、候補となる全てのイントラ予測モードのイントラ予測を行い、予測画像データを生成する。但し、このイントラ予測では、予測対象のマクロブロック以外の画素を参照しない。例えば、マクロブロックの境界のイントラ予測ブロックでは、所定値を参照画像の画素値として用いてイントラ予測を行う。
また、イントラ予測部134は、候補となる全てのイントラ予測モードに対してコスト関数値(詳細は後述する)を算出する。そして、イントラ予測部134は、コスト関数値が最小となるイントラ予測モードを最適イントラ予測モードに決定する。イントラ予測部134は、最適イントラ予測モードで生成された予測画像データ、および、対応するコスト関数値を、選択部136に供給する。イントラ予測部134は、選択部136から最適イントラ予測モードで生成された予測画像データの選択が通知された場合、最適イントラ予測モード等を示すイントラ予測情報を可逆符号化部126に供給する。
なお、コスト関数値は、RD(Rate Distortion)コストともいい、例えば、H.264/AVC方式における参照ソフトウエアであるJM(Joint Model)で定められているような、High Complexity モードか、Low Complexity モードのいずれかの手法に基づいて算出される。
具体的には、コスト関数値の算出手法としてHigh Complexity モードが採用される場合、候補となる全ての予測モードに対して、仮に可逆符号化までが行われ、次の式(1)で表わされるコスト関数値が各予測モードに対して算出される。
Cost(Mode)=D+λ・R ・・・(1)
Dは、原画像と復号画像の差分(歪)、Rは、直交変換の係数まで含んだ発生符号量、λは、量子化パラメータQPの関数として与えられるラグランジュ乗数である。
一方、コスト関数値の算出手法としてLow Complexity モードが採用される場合、候補となる全ての予測モードに対して、復号画像の生成、および、予測モードを示す情報などのヘッダビットの算出が行われ、次の式(2)で表わされるコスト関数が各予測モードに対して算出される。
Cost(Mode)=D+QPtoQuant(QP)・Header_Bit ・・・(2)
Dは、原画像と復号画像の差分(歪)、Header_Bitは、予測モードに対するヘッダビット、QPtoQuantは、量子化パラメータQPの関数として与えられる関数である。
Low Complexity モードにおいては、全ての予測モードに対して、復号画像を生成するだけでよく、可逆符号化を行う必要がないため、演算量が少なくて済む。なお、ここでは、コスト関数値の算出手法としてHigh Complexity モードが採用されるものとする。
動き予測・補償部135は、画面並べ替えバッファ122から供給される画像データと、フレームメモリ132からスイッチ133を介して供給される参照画像データとに基づいて、候補となる全てのインター予測モードの動き予測・補償処理を行い、予測画像データを生成する。但し、この動き予測・補償処理では、直前のフレームの同一位置のマクロブロックが参照画像データとされる。
なお、インター予測モードとは、インター予測の対象とするブロックのサイズ、予測方向、および参照インデックスを表す情報である。予測方向には、インター予測の対象とする画像よりも表示時刻が早い参照画像を用いた前方向の予測(L0予測)、インター予測の対象とする画像よりも表示時刻が遅い参照画像を用いた後方向の予測(L1予測)、およびインター予測の対象とする画像よりも表示時刻が早い参照画像と遅い参照画像を用いた両方向の予測(Bi-prediction)がある。また、参照インデックスとは、参照画像を特定するための番号であり、例えば、インター予測の対象とする画像に近い画像の参照インデックスほど番号が小さい。
また、動き予測・補償部135は、候補となる全てのインター予測モードに対してコスト関数値を算出する。そして、動き予測・補償部135は、コスト関数値が最小となるインター予測モードを最適インター予測モードに決定する。動き予測・補償部135は、最適インター予測モードで生成された予測画像データ、および、対応するコスト関数値を、選択部136に供給する。動き予測・補償部135は、選択部136から最適インター予測モードで生成された予測画像データの選択が通知された場合、最適インター予測モード、その最適インター予測モードに対応する動きベクトル等を示すインター予測情報を可逆符号化部126に供給する。
選択部136は、イントラマクロ決定部139からの強制イントラマクロ情報、並びにイントラ予測部134および動き予測・補償部135からのコスト関数値に基づいて、最適イントラ予測モードと最適インター予測モードのうちのいずれかを、最適予測モードに決定する。なお、強制イントラマクロ情報は、強制的に予測モードがイントラ予測モードにされるマクロブロック(以下、強制イントラマクロブロックという)の位置を示す情報である。
選択部136は、最適予測モードの予測画像データを、演算部123および加算部130に供給する。また、選択部136は、最適予測モードの予測画像データの選択をイントラ予測部134または動き予測・補償部135に通知する。
受付部137は、ユーザからの各マクロブロックの優先度の入力を受け付ける。例えば、優先度としては、重要度が高く、優先的に強制イントラマクロブロックにされるマクロブロックほど小さい値となるように、1乃至30の値が入力される。受付部137は、その優先度をマップメモリ138に供給する。
マップメモリ138は、受付部137から供給される優先度を、マクロブロックごとに記憶する。また、マップメモリ138は、マクロブロックごとに、0以上優先度未満の任意の値を位相として記憶する。例えば、優先度が7である場合、マップメモリ138は、その優先度に対応するマクロブロックの位相として、0乃至6の任意の値を記憶する。
イントラマクロ決定部139は、新たなフレーム単位の画像データが符号化対象とされるたびに、フレームカウントNの値を1だけインクリメントする。イントラマクロ決定部139は、フレームカウントN、並びに、マップメモリ138に記憶されている優先度および位相に基づいて、優先度を頻度として、対応するマクロブロックを強制イントラマクロブロックに決定する。即ち、イントラマクロ決定部139は、イントラブロック決定部として機能し、フレームカウントN、優先度、および位相に基づいて、優先度を頻度として、対応するマクロブロックの予測モードをイントラ予測モードに決定する。
具体的には、イントラマクロ決定部139は、フレームカウントNを優先度で除算し、余りが位相となる場合に、その優先度および位相に対応するマクロブロックを強制イントラマクロブロックとする。例えば、優先度が7であり、位相が6である場合、その優先度および位相に対応するマクロブロックは、フレームカウントNを7で除算し、余りが6である場合に強制イントラマクロブロックとされる。これにより、このマクロブロックは、7フレームに1回の頻度で強制イントラマクロブロックにされる。
また、優先度が30であるマクロブロックは、符号化装置21のフレーム周波数が30Hzである場合、1秒間(30フレーム)に1回、強制イントラマクロブロックにされる。さらに、優先度が1であるマクロブロックは、常に強制イントラマクロブロックにされる。イントラマクロ決定部139は、強制イントラマクロ情報を選択部136に供給する。
レート制御部140は、蓄積バッファ127に蓄積されたビデオストリームに基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部125の量子化動作のレートを制御する。
[強制イントラマクロブロックによる復号画像の復帰の説明]
図2は、強制イントラマクロブロックによる復号画像の復帰を説明する図である。
図2の例では、時刻tのフレームにおいて、図中斜線が付された正方形で表されるマクロブロックが、強制イントラマクロブロックとされている。この場合、時刻t−1のフレームにおいて受信エラーが発生しても、イントラ符号化では自分のマクロブロック以外の画素が参照されないので、時刻tのフレームの強制イントラマクロブロックの復号画像は、正常な画像となる。
そして、時刻t+1のフレームにおいて、新たな位置のマクロブロックが強制イントラマクロブロックとされると、時刻tのフレームと同様に、その強制イントラマクロブロックの復号画像が正常な画像となる。また、時刻tのフレームの強制イントラマクロブロックは、イントラ符号化される場合、自分のマクロブロックのみが参照され、インター符号化される場合、直前のフレームの自分のマクロブロックと同一の位置のマクロブロックが参照される。従って、時刻t+1のフレームでは、時刻tと時刻t+1のフレームにおいて強制イントラマクロブロックとされたマクロブロックの復号画像が正常な画像となる。
さらに、時刻t+2のフレームにおいて、新たな位置のマクロブロックが強制イントラマクロブロックとされると、時刻t+1のフレームと同様に、時刻t、時刻t+1、および時刻t+2において強制イントラマクロブロックとされたマクロブロックの復号画像が正常な画像となる。
以降も同様にして、フレームごとに、新たな位置のマクロブロックが強制イントラマクロブロックとされることにより、正常な復号画像のマクロブロックが増加していき、最終的には正常な画面が復帰する。なお、このとき、優先度が高いマクロブロックは、優先度が低いマクロブロックに比べて、高い頻度で強制イントラマクロブロックにされているため、より早い時刻に復帰する。
[優先度の決定方法の説明]
図3および図4は、優先度の決定方法を説明する図である。
図3に示すように、符号化対象の画像の種類(ジャンル)が戦闘ゲームの画像である場合、レベル表示領域141Aおよび141B並びにパワーゲージ表示領域142は、頻繁に更新され、プレイヤが注視する重要度の高い領域である。従って、この場合、符号化装置21のユーザは、レベル表示領域141Aおよび141B並びにパワーゲージ表示領域142の優先度として、他の領域に比べて高い優先度を入力する。
このように、優先度は、例えば、符号化対象の画像の種類に応じて、その画像において更新頻度の高い領域の優先度が高くなるように決定される。
また、図4に示すように、符号化対象の画像の種類が、プレイヤ自身のゲーム内容を表示する上半分の領域151と、他のプレイヤのゲーム内容を表示する下半分の領域152からなる画像である場合、上半分の領域151は、下半分の領域152に比べてプレイヤが注視する重要度の高い領域である。従って、この場合、符号化装置21のユーザは、上半分の領域151の優先度として、下半分の領域152に比べて高い優先度を入力する。
このように、優先度は、例えば、符号化対象の画像の種類に応じて、画面の所定の領域(左半分、右半分、上半分、下半分、中心部の領域など)の優先度が高くなるように決定される。
[符号化部の処理の説明]
図5および図6は、図1の符号化装置21の符号化処理を説明するフローチャートである。
図5のステップS161において、符号化装置21のA/D変換部121は、符号化対象として入力されたフレーム単位の画像データをA/D変換し、画面並べ替えバッファ122に出力して記憶させる。
ステップS162において、画面並べ替えバッファ122は、記憶した表示の順番のフレームの画像データを、GOP構造に応じて、符号化のための順番に並べ替える。画面並べ替えバッファ122は、並べ替え後のフレーム単位の画像データを、演算部123と動き予測・補償部135に供給する。以降のステップS163乃至S181の処理は、例えば、マクロブロック単位で行われる。
ステップS163において、イントラ予測部134は、フレームメモリ132からスイッチ133を介して供給される参照画像データを用いて、候補となる全てのイントラ予測モードのイントラ予測処理を行う。このとき、イントラ予測部134は、候補となる全てのイントラ予測モードに対してコスト関数値を算出する。そして、イントラ予測部134は、コスト関数値が最小となるイントラ予測モードを最適イントラ予測モードに決定する。イントラ予測部134は、最適イントラ予測モードで生成された予測画像データ、および、対応するコスト関数値を、選択部136に供給する。
ステップS164において、動き予測・補償部135は、画面並べ替えバッファ122から供給される画像データと、フレームメモリ132からスイッチ133を介して供給される参照画像データとに基づいて、動き予測・補償処理を行う。このとき、動き予測・補償部135は、候補となる全てのインター予測モードに対してコスト関数値を算出する。そして、動き予測・補償部135は、コスト関数値が最小となるインター予測モードを最適インター予測モードに決定する。動き予測・補償部135は、最適インター予測モードで生成された予測画像データ、および、対応するコスト関数値を、選択部136に供給する。
ステップS165において、選択部136は、イントラマクロ決定部139から供給される強制イントラマクロ情報に基づいて、現在の処理対象であるマクロブロックが強制イントラマクロブロックであるかどうかを判定する。
ステップS165で、現在の処理対象であるマクロブロックが強制イントラマクロブロックではないと判定された場合、処理はステップS166に進む。ステップS166において、選択部136は、イントラ予測部134および動き予測・補償部135から供給されるコスト関数値に基づいて、最適イントラ予測モードと最適インター予測モードのうちのコスト関数値が最小となる方を、最適予測モードに決定する。そして、選択部136は、最適予測モードの予測画像データを、演算部123および加算部130に供給し、処理をステップS168に進める。
また、ステップS165で、現在の処理対象であるマクロブロックが強制イントラマクロブロックであると判定された場合、処理はステップS167に進む。
ステップS167において、選択部136は、最適イントラ予測モードを最適予測モードとし、処理をステップS168に進める。
ステップS168において、選択部136は、最適予測モードが最適インター予測モードであるかどうかを判定する。ステップS168で最適予測モードが最適インター予測モードであると判定された場合、選択部136は、最適インター予測モードで生成された予測画像データの選択を動き予測・補償部135に通知する。
そして、ステップS169において、動き予測・補償部135は、インター予測情報を可逆符号化部126に出力し、処理をステップS171に進める。
一方、ステップS168で最適予測モードが最適インター予測モードではないと判定された場合、即ち最適予測モードが最適イントラ予測モードである場合、選択部136は、最適イントラ予測モードで生成された予測画像データの選択をイントラ予測部134に通知する。
そして、ステップS170において、イントラ予測部134は、イントラ予測情報を可逆符号化部126に出力し、処理をステップS171に進める。
ステップS171において、演算部123は、画面並べ替えバッファ122から供給される画像データから、選択部136から供給される予測画像データを減算する。演算部123は、減算の結果得られる画像データを、残差情報として直交変換部124に出力する。
ステップS172において、直交変換部124は、演算部123からの残差情報に対して直交変換を施し、その結果得られる係数を量子化部125に供給する。
ステップS173において、量子化部125は、直交変換部124から供給される係数を量子化する。量子化された係数は、可逆符号化部126と逆量子化部128に入力される。
ステップS174において、可逆符号化部126は、量子化部125から供給される量子化された係数と、インター予測情報またはイントラ予測情報を可逆符号化する。そして、可逆符号化部126は、可逆符号化されたインター予測情報またはイントラ予測情報をヘッダ情報として、可逆符号化された係数である符号化データに付加し、ビットストリームを生成する。
図6のステップS175において、可逆符号化部126は、ビットストリームを蓄積バッファ127に供給し、蓄積させる。
ステップS176において、蓄積バッファ127は、蓄積されているビットストリームを、伝送路を介して図示せぬ復号装置に送信する。
ステップS177において、逆量子化部128は、量子化部125から供給される量子化された係数を逆量子化する。
ステップS178において、逆直交変換部129は、逆量子化部128から供給される係数に対して逆直交変換を施し、その結果得られる残差情報を加算部130に供給する。
ステップS179において、加算部130は、逆直交変換部129から供給される残差情報と、選択部136から供給される予測画像データを加算し、局部的に復号された画像データを得る。加算部130は、得られた画像データをデブロックフィルタ131に供給する。
ステップS180において、デブロックフィルタ131は、加算部130から供給される局部的に復号された画像データに対してフィルタリングを行うことにより、ブロック歪を除去する。
ステップS181において、デブロックフィルタ131は、フィルタリング後の画像データをフレームメモリ132に供給し、蓄積させる。フレームメモリ132に蓄積された画像データは、参照画像データとしてスイッチ133を介してイントラ予測部134または動き予測・補償部135に出力される。そして、処理は終了する。
なお、図5および図6の符号化処理では、説明を簡単化するため、常に、イントラ予測処理と動き補償処理が行われるようにしたが、実際には、ピクチャタイプ等によっていずれか一方のみが行われる場合もある。
図7は、図1のイントラマクロ決定部139の強制イントラマクロブロック決定処理を説明するフローチャートである。この強制イントラマクロブロック決定処理は、例えば、符号化対象のフレーム単位の画像データが符号化装置21に入力されごとに行われる。
ステップS201において、イントラマクロ決定部139は、フレームカウントNを1だけインクリメントする。なお、フレームカウントNの初期値は0である。
ステップS202において、イントラマクロ決定部139は、フレームカウントN、並びに、マップメモリ138に記憶されている各マクロブロックの優先度および位相に基づいて、強制イントラマクロブロックとするマクロブロックの位置を求める。イントラマクロ決定部139は、その位置を示す強制イントラマクロ情報を選択部136に供給する。そして、処理は終了する。
以上のように、図1の符号化装置21は、符号化対象の画像の各マクロブロックの優先度を頻度として、そのマクロブロックの予測モードを強制的にイントラ予測モードに決定する。これにより、優先度が高いマクロブロックほど頻繁に強制イントラマクロブロックとされる。その結果、復号側でエラーが発生した場合に、復号画像のうちの、優先度の高いマクロブロック、即ち重要度の高いマクロブロックを素早く復帰させることができる。
<第2実施の形態>
[符号化装置の構成例]
図8は、本技術を適用した符号化装置の第2実施の形態の構成例を示す図である。
図8に示す構成のうち、図1の構成と同じ構成には同じ符号を付してある。重複する説明については適宜省略する。
図8の符号化装置160の構成は、受付部137の代わりに検出部161が設けられている点が、図1の構成と異なる。図8の符号化装置160は、符号化対象のフレーム単位の画像データの動きベクトルに基づいて、各マクロブロックの優先度を決定する。
具体的には、符号化装置160の検出部161は、優先度決定部として機能し、画面並べ替えバッファ122から出力される符号化対象のフレーム単位の画像データを用いて、その画像データの各マクロブロックの動きベクトルを検出する。検出部161は、検出された各マクロブロックの動きベクトルに基づいて、その動きベクトルが大きいほど優先度が高くなる(優先度の値が小さくなる)ように、各マクロブロックの優先度を決定する。検出部161は、決定された優先度をマップメモリ138に供給し、記憶させる。
以上のように、符号化装置160は、動きベクトルに基づいて優先度を決定するので、動きが大きく、エラーの発生時に素早く復帰させるべきマクロブロックの優先度を高くし、そのマクロブロックを素早く復帰させることができる。
<第3実施の形態>
[符号化装置の構成例]
図9は、本技術を適用した符号化装置の第3実施の形態の構成例を示す図である。
図9に示す構成のうち、図1の構成と同じ構成には同じ符号を付してある。重複する説明については適宜省略する。
図9の符号化装置180の構成は、新たに頻度計算部181が設けられている点と、マップメモリ138の代わりにマップメモリ182が設けられている点が、図1の構成と異なる。図9の符号化装置180は、各マクロブロックの優先度を統計処理し、統計処理後の優先度に基づいて、そのマクロブロックを強制イントラマクロブロックとする頻度を計算する。
具体的には、符号化装置180の頻度計算部181は、受付部137から出力される優先度に対して統計処理としてヒストグラムを生成し、そのヒストグラムに基づいて、各マクロブロックの強制イントラマクロブロックとする頻度を計算する。そして、頻度計算部181は、その頻度をマップメモリ182に供給する。
マップメモリ182は、頻度計算部181から供給される頻度を、マクロブロックごとに記憶する。また、マップメモリ182は、マクロブロックごとに、0以上頻度未満の任意の値を位相として記憶する。例えば、頻度が7である場合、マップメモリ182は、その頻度に対応するマクロブロックの位相として、0乃至6の任意の値を記憶する。
[頻度の計算方法]
図10および図11は、頻度計算部181による頻度の計算方法を説明する図である。
頻度計算部181は、まず、以下の式(3)により、標準更新フレーム周期N2defと画面内のマクロブロックの総数(以下、MB数という)とを用いて、最大更新フレーム周期N2max内の強制イントラマクロブロックの総数(以下、intra MB 総数という)を計算する。
なお、標準更新フレーム周期N2defは、強制イントラマクロブロックの平均更新頻度であり、例えば、AVC方式のIDRピクチャ間隔のデフォルト値である。また、最大更新フレーム周期N2maxは、予め設定される強制イントラマクロブロックの間隔の最大値であり、最大更新フレーム周期N2maxに1回以上、各マクロブロックは強制イントラマクロブロックにされる。
intra MB 総数=MB数×(N2max/N2def)
・・・(3)
例えば、図10に示すように、標準更新フレーム周期N2defが12フレームであり、最大更新フレーム周期N2maxが24フレームである場合、intra MB 総数はMB数の2(=24/12)倍となる。なお、図10において、正方形は各フレームの所定のマクロブロックを表し、正方形に斜線が付されている場合、その正方形が表すマクロブロックは強制イントラマクロブロックである。
次に、頻度計算部181は、優先度のヒストグラムを生成する。例えば、図11Aに示すように、各マクロブロックの優先度が決定されている場合、頻度計算部181は、図11Bに示すヒストグラムを生成する。
なお、図11Aにおいて、正方形はマクロブロックを表し、正方形内の数字は、その正方形が表すマクロブロックの優先度を表している。図11の例では、1画面が4×6のマクロブロックから構成され、各マクロブロックに対して、優先度0乃至3のいずれかが設定されている。また、図11Bに示すヒストグラムにおいて、優先度0の度数は10であり、優先度1および2の度数は4であり、優先度3の度数は6となっている。
そして、頻度計算部181は、優先度の高いマクロブロックの、最大更新フレーム周期N2max内で要求される強制イントラマクロブロックの数(以下、要求マクロブロック数という)が多くなるように、各優先度に応じた優先指数を用いて要求マクロブロック数を計算する。具体的には、頻度計算部181は、生成されたヒストグラムにおける各優先度の度数と、その優先度の優先指数を乗算し、その結果得られる乗算値を各優先度の要求マクロブロック数とする。
例えば、優先度0乃至3の優先指数を1乃至4とすると、図11の場合の優先度0の要求マクロブロック数は10(=10×1)であり、優先度1の要求マクロブロック数は8(=4×2)である。また、優先度2の要求マクロブロック数は12(=4×3)であり、優先度3の要求マクロブロック数は24(=6×4)である。
次に、頻度計算部181は、要求マクロブロック数に基づいて、各優先度の強制イントラマクロブロックとする頻度を決定する。具体的には、頻度計算部181は、まず、intra MB 総数のうちの1ずつを各マクロブロックに分配し、残り数を計算する。例えば、図10の場合のようにintra MB 総数が48であり、図11の場合のようにMB数が24(=4×6)である場合、残り数は24(=48-24)となる。
また、頻度計算部181は、intra MB 総数のうちの1ずつを各マクロブロックに分配したので、各優先度の要求マクロブロック数から1×度数分を減算する。これにより、図11の場合、優先度0乃至3の要求マクロブロック数は、それぞれ、0(=10-1×10),4(=8-1×4),8(=12-1×4),18(=24-1×6)となる。
そして、頻度計算部181は、以下の式(4)により、減算後の要求マクロブロック数に応じて、残り数を各優先度に分配する。
分配数=(残り数/全優先度の減算後の要求マクロブロック数の総数)×減算後の要求マクロブロック数
・・・(4)
例えば、上述したように残り数が24であり、減算後の優先度0乃至3の要求マクロブロック数が0,4,8,18である場合、優先度0乃至3の分配数は、それぞれ、0(=(24/(0+4+8+18))×0),3(≒(24/(0+4+8+18))×4),6(≒(24/(0+4+8+18))×8),14(≒(24/(0+4+8+18))×18)である。
そして、頻度計算部181は、以下の式(5)により、上述した式(4)により求められた各優先度の分配数に、最初に各マクロブロックに分配された1を加算し、最終分配数とする。
最終分配数=分配数+1×度数
・・・(5)
例えば、上述したように優先度0乃至3の分配数が0,3,6,14であり、ヒストグラムが図11に示したものである場合、優先度0乃至3の最終分配数は、それぞれ、10(=0+1×10),7(=3+1×4),10(=6+1×4),20(=14+1×6)である。
最後に、頻度計算部181は、以下の式(6)により、各優先度の最終分配数から、強制イントラマクロブロックとする頻度を計算する。
頻度=N2max/(最終分配数/度数)
・・・(6)
例えば、優先度0乃至3の最終分配数が、それぞれ、10,7,10,20である場合、優先度0乃至3の頻度は、24(=24/(10/10)),14(≒24/(7/4)),10(≒24/(10/4)),8(≒24/(20/6))である。
[符号化装置の処理の説明]
次に、符号化装置180の処理を説明する。符号化装置180の符号化処理は、図5および図6の符号化処理と同様であるので、説明は省略する。また、符号化装置180の強制イントラマクロブロック決定処理は、優先度が頻度に代わる点を除いて、図7の強制イントラマクロブロック決定処理と同様であるので、説明は省略する。
図12は、符号化装置180の頻度計算部181の頻度計算処理を説明するフローチャートである。
図12のステップS221において、頻度計算部181は、上述した式(3)により、intra MB 総数を計算する。
ステップS222において、頻度計算部181は、優先度のヒストグラムを生成する。ステップS223において、頻度計算部181は、優先度の高いマクロブロックの要求マクロブロック数が多くなるように、各優先度に応じた優先指数を用いて要求マクロブロック数を計算する。
ステップS224において、頻度計算部181は、intra MB 総数のうちの1ずつを各マクロブロックに分配し、残り数を計算する。ステップS225において、頻度計算部181は、各優先度の要求マクロブロック数から1×度数分を減算する。ステップS226において、頻度計算部181は、上述した式(4)により、減算後の要求マクロブロック数に応じて、残り数を各優先度に分配する。
ステップS227において、頻度計算部181は、上述した式(5)により、最終分配数を計算する。
ステップS228において、頻度計算部181は、上述した式(6)により、各優先度の最終分配数から、各優先度の強制イントラマクロブロックとする頻度を計算する。
ステップS229において、頻度計算部181は、各マクロブロックの優先度に応じて、各マクロブロックの強制イントラマクロブロックとする頻度をマップメモリ182に供給し、記憶させる。そして、処理は終了する。
なお、要求イントラマクロブロック数の計算方法は、優先度の高いマクロブロックの要求マクロブロック数が多くなる計算方法であれば、上述した計算方法に限定されない。また、intra MB 総数の分配方法は、上述した分配方法に限定されない。
また、上述した説明では、符号化対象の画像データのうちの所定のマクロブロックの予測モードが強制的にイントラ予測モードにされたが、予測モードが強制的にイントラ予測モードにされる単位は、マクロブロックではなく、スライスであってもよい。この場合、その単位で優先度が決定される。
さらに、優先度そのものではなく、優先度を表す優先度情報に基づいて、強制イントラマクロブロックとする頻度が決定されるようにしてもよい。この場合、優先度情報としては、例えば、−1乃至16の値が設定され、優先度情報16は優先度が最も高いことを表し、優先度情報0は優先度が最も低いことを表す。また、優先度情報−1は、強制イントラマクロブロックとされないことを表したり、常に強制イントラマクロブロックとされることを表したりする。
また、位相は、任意の値ではなく、例えば同一優先度のマクロブロックの走査順に、0から順に割り振られるようにしてもよい。
さらに、マップメモリ138(182)には、優先度(頻度)と位相以外の情報がマクロブロック単位で記録されてもよい。この場合、優先度(頻度)と位相以外の情報にも基づいて、強制イントラマクロブロックの位置が決定される。
また、受付部137は、ユーザからの各マクロブロックの優先度の入力だけでなく、その優先度に対応するパターン画像の画像データの入力を受け付けるようにしてもよい。この場合、受付部137は、画面並べ替えバッファ122から出力される符号化対象の画像データと、パターン画像の画像データとを比較し、最も似ているパターン画像に対応する優先度を出力する。これにより、ユーザは、全フレームの優先度を入力する必要がなく、より容易に優先度を入力することができる。
また、本技術の符号化方式は、AVC方式のほか、MPEG(Moving Picture Experts Group phase)方式,AVC方式に比べて符号化効率が良いHEVC方式等であってもよい。
符号化方式がHEVC方式である場合、例えば、予測ブロックのサイズが8×8画素である輝度信号のイントラ予測モードは、図13に示した33方向のイントラ予測モードとDC Predictionを示すイントラ予測モードの34個のイントラ予測モードである。また、予測ブロックのサイズが16×16画素、32×32画素、64×64画素である輝度信号のイントラ予測モードは、図14に示すように、座標(dxIntra,dyIntra)に対応し、モード数は33である。なお、座標(dxIntra,dyIntra)は、予測ブロックに隣接する隣接ブロックのうちの予測画素として用いられる画素が交わる線の、所定の座標(x,y)の基点画素以外の端点の基点画素に対する位置を表している。即ち、隣接ブロックのうちの予測画素として用いられる画素は、基点画素と座標(x+dxIntra,y+dyIntra)の位置を結んだ線と交わる。
また、上述した実施の形態では、図2に示したように、1度復帰したマクロブロックの復号画像が正常であり続けるように、参照画像データが制約されたが、参照画像データの制約は、これに限定されない。また、制約なく、従来の符号化方式における参照画像データが用いられるようにしてもよい。
<第4実施の形態>
[本技術を適用したコンピュータの説明]
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
図15は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
コンピュータにおいて、CPU(Central Processing Unit)601,ROM(Read Only Memory)602,RAM(Random Access Memory)603は、バス604により相互に接続されている。
バス604には、さらに、入出力インタフェース605が接続されている。入出力インタフェース605には、入力部606、出力部607、記憶部608、通信部609、及びドライブ610が接続されている。
入力部606は、キーボード、マウス、マイクロフォンなどよりなる。出力部607は、ディスプレイ、スピーカなどよりなる。記憶部608は、ハードディスクや不揮発性のメモリなどよりなる。通信部609は、ネットワークインタフェースなどよりなる。ドライブ610は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア611を駆動する。
以上のように構成されるコンピュータでは、CPU601が、例えば、記憶部608に記憶されているプログラムを、入出力インタフェース605及びバス604を介して、RAM603にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU601)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア611に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
コンピュータでは、プログラムは、リムーバブルメディア611をドライブ610に装着することにより、入出力インタフェース605を介して、記憶部608にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部609で受信し、記憶部608にインストールすることができる。その他、プログラムは、ROM602や記憶部608に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本明細書において、システムとは、複数の構成要素(装置、モジュール(部品)等)の集合を意味し、すべての構成要素が同一筐体中にあるか否かは問わない。したがって、別個の筐体に収納され、ネットワークを介して接続されている複数の装置、及び、1つの筐体の中に複数のモジュールが収納されている1つの装置は、いずれも、システムである。
さらに、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
例えば、本技術は、1つの機能をネットワークを介して複数の装置で分担、共同して処理するクラウドコンピューティングの構成をとることができる。
また、上述のフローチャートで説明した各ステップは、1つの装置で実行する他、複数の装置で分担して実行することができる。
さらに、1つのステップに複数の処理が含まれる場合には、その1つのステップに含まれる複数の処理は、1つの装置で実行する他、複数の装置で分担して実行することができる。
また、本技術は、以下のような構成もとることができる。
(1)
符号化対象の画像の各ブロックの優先度に基づく頻度で、そのブロックの予測モードを強制的にイントラ予測モードに決定するイントラブロック決定部と、
前記イントラブロック決定部により前記予測モードがイントラ予測モードに決定されたブロックをイントラ予測モードで符号化する符号化部と、
前記符号化部により得られた前記符号化対象の画像の符号化結果と、その画像の前記予測モードとを送信する送信部と
を備える符号化装置。
(2)
ユーザからの前記優先度の入力を受け付ける受付部
をさらに備える
前記(1)に記載の符号化装置。
(3)
前記優先度は、前記符号化対象の画像の種類に応じて決定される
前記(1)または(2)に記載の符号化装置。
(4)
前記優先度は、更新頻度の高い前記ブロックの優先度が高くなるように決定される
前記(1)乃至(3)のいずれかに記載の符号化装置。
(5)
前記優先度は、前記符号化対象の画像の画面の左半分、右半分、上半分、下半分、または中心部の領域の前記ブロックの優先度が高くなるように決定される
前記(1)乃至(3)のいずれかに記載の符号化装置。
(6)
前記ブロックの動きベクトルを検出し、前記動きベクトルが大きいブロックほど前記優先度が高くなるように、前記優先度を決定する優先度決定部
をさらに備える
前記(1)に記載の符号化装置。
(7)
前記イントラブロック決定部は、前記優先度を前記頻度とする
前記(1)乃至(6)のいずれかに記載の符号化装置。
(8)
前記優先度を統計処理し、統計処理後の前記優先度に基づいて前記頻度を計算する頻度計算部
をさらに備え、
前記イントラブロック決定部は、前記頻度計算部により計算された前記頻度で、前記ブロックの予測モードを強制的にイントラ予測モードに決定する
前記(1)乃至(6)のいずれかに記載の符号化装置。
(9)
符号化装置の符号化方法において、
前記符号化装置が、
符号化対象の画像の各ブロックの優先度に基づく頻度で、そのブロックの予測モードを強制的にイントラ予測モードに決定するイントラブロック決定ステップと、
前記イントラブロック決定ステップの処理により前記予測モードがイントラ予測モードに決定されたブロックをイントラ予測モードで符号化する符号化ステップと、
前記符号化ステップの処理により得られた前記符号化対象の画像の符号化結果と、その画像の前記予測モードとを送信する送信ステップと
を含む符号化方法。
(10)
コンピュータを、
符号化対象の画像の各ブロックの優先度に基づく頻度で、そのブロックの予測モードを強制的にイントラ予測モードに決定するイントラブロック決定部と、
前記イントラブロック決定部により前記予測モードがイントラ予測モードに決定されたブロックをイントラ予測モードで符号化する符号化部と、
前記符号化部により得られた前記符号化対象の画像の符号化結果と、その画像の前記予測モードの送信を制御する送信制御部と
して機能させるためのプログラム。