以下、本開示を実施するための形態(以下、実施の形態という)について説明する。なお、説明は以下の順序で行う。
1.第1実施の形態:符号化装置(図1乃至図19)
2.第2実施の形態:符号化装置(図20乃至図29)
3.第3実施の形態:コンピュータ(図30)
<第1実施の形態>
(符号化方法の概要)
図1は、本開示を適用した符号化装置の第1実施の形態における符号化方法の概要を説明する図である。
第1実施の形態における符号化方法は、HEVC方式に準拠した符号化方法である。
図1のBは、横軸が符号化時刻を表し、縦軸がAU(Access Unit)単位の符号化ストリームのビット発生量を表す棒グラフである。棒グラフ内の棒には、その棒がビット発生量を表す符号化ストリームに対応するピクチャタイプを示すアルファベット(図1の例では、IまたはP)が記載されている。これらのことは、後述する図20のBにおいても同様である。
また、図1のAは、図1のBの横軸上の位置に対して、その横軸の位置が表す符号化時刻に符号化される各フレームの画像を表す四角を並べることにより、各フレームの画像の符号化順序を示す図である。なお、各フレームの画像を表す四角の中のアルファベットは、その画像のピクチャタイプを表し、ピクチャ間の矢印は参照関係を表す。これらのことは、後述する図20のAにおいても同様である。
図1のAおよび図1のBに示すように、第1実施の形態における符号化方法では、ビット発生量が大きいと予想されるフレームの画像が、複数のAUに分割して符号化される。
図1の例では、符号化時刻t14に符号化される予定である、先頭から8フレーム目の画像24が、ビット発生量が大きいと予想されるフレームの画像である。従って、画像24が4つのAUに分割して符号化されている。
具体的には、画像24が垂直方向に3つの分割領域に分割される。そして、上部の分割領域を含み、分割領域以外の領域が、画素値が固定値である固定値画像(図1の例では黒画像)である分割画像11が生成される。分割画像11は、画像24の4フレーム前の画像20の符号化時刻t10と、3フレーム前の画像21の符号化時刻t11の間の符号化時刻t21に、Iピクチャとして符号化される。これにより、画像24の1つ目のAUの符号化ストリームが生成される。このとき、符号化ストリームが復号され、図1のCに示すように、上部の領域31以外の領域が固定値画像である分割復号画像41が得られる。
次に、上部と中央部の分割領域を含み、分割領域以外の領域が固定値画像である分割画像12が生成される。そして、符号化時刻t11と、画像21の次のフレームの画像22の符号化時刻t12の間の符号化時刻t22に、分割画像12が、分割復号画像41を参照してPピクチャとして符号化される。これにより、画像24の2つ目のAUの符号化ストリームが生成される。このとき、中央部の分割領域以外の領域の符号化モードは、参照画像に対する動きベクトルおよび参照画像との残差が符号化ストリームに含められず、参照画像の各画素の画素値が、その画素と同一の位置の復号画像の画素の画素値とされるスキップモードにされる。従って、符号化時に得られる符号化ストリームの復号結果は、図1のCに示すように、上部の領域31が分割復号画像41と同一であり、上部の領域31と中央部の領域32以外の領域が固定値画像である分割復号画像42である。
次に、上部、中央部、下部の分割領域を含む画像24が分割画像13として生成される。そして、符号化時刻t12と、画像22の次のフレームの画像23の符号化時刻t13の間の符号化時刻t23に、分割画像13が、分割復号画像42を参照してPピクチャとして符号化される。これにより、画像24の3つ目のAUの符号化ストリームが生成される。このとき、下部の分割領域以外の領域の符号化モードは、スキップモードにされる。従って、符号化時に得られる符号化ストリームの復号結果は、図1のCに示すように、上部の領域31および中央部の領域32が分割復号画像42と同一である分割復号画像43、即ち画像24の全領域に対応する画像である。
最後に、符号化時刻t14において、画像24が、分割復号画像43を参照してPピクチャとして符号化される。これにより、画像24の4つ目のAUの符号化ストリームが生成される。このとき、符号化ストリームが復号され、図1のCに示すように、分割復号画像43に比べて画質の高い復号画像44が得られる。
また、分割画像11乃至13をAUとした符号化ストリームに配置される、復号画像の表示の有無を示すpic_output_flagは、復号画像を表示しないことを示す0に設定される。従って、分割復号画像41乃至43は、表示されない。一方、画像24をAUとした符号化ストリームに配置されるpic_output_flagは、復号画像を表示することを示す1に設定される。従って、復号画像44は表示される。
以上のように、第1実施の形態における符号化方法では、ビット発生量が大きいと予想されるフレームの画像24が複数の分割画像11乃至13に分割され、画像24より前のフレームの画像20乃至23の符号化時刻t10乃至t13の間にそれぞれ符号化される。従って、フレーム単位の符号化時間である単位時間あたりのビット数の局所的な増加を抑制することができる。その結果、局所的な復号負荷の増加を抑制することができる。
また、画像24の符号化時刻t14に、画像24をAUとして、画像24の全領域に対応する、画質の低い復号画像43を参照して、符号化が行われる。従って、少ないビット発生量で高画質の復号画像44の符号化ストリームを生成することができる。
さらに、分割画像11の分割領域以外の領域は、画像情報を含まないため、固定値画像にされる。これにより、分割画像11の符号化ストリームのビット発生量を削減することができる。また、分割画像12および分割画像13の分割領域以外の領域の符号化モードがスキップモードにされるので、分割画像12および分割画像13の符号化ストリームのビット発生量を削減することができる。
なお、図1の例では、ビット発生量が大きいと予想されるフレームの画像24が4つのAUに分割されて符号化されたが、分割されるAUの数は、勿論、4に限定されない。また、分割領域の数は、分割されるAUの数から1を減算した数である。
(符号化装置の第1実施の形態の構成例)
図2は、本開示を適用した符号化装置の第1実施の形態の構成例を示すブロック図である。
図2の符号化装置50は、解析部51、解析バッファ52、決定部53、非分割符号化部54、および分割符号化部55により構成される。符号化装置50は、符号化対象の画像として入力されたフレーム単位の画像を、図1で説明した符号化方法で符号化する。
具体的には、符号化装置50の解析部51は、入力された画像を解析し、AU単位で解析テーブルを生成する。解析部51は、AU単位の解析テーブルを解析バッファ52に供給し、記憶させる。
決定部53は、解析バッファ52から解析テーブルを読み出し、符号化対象のAUを決定する。決定部53は、解析テーブルに基づいて、符号化対象のAUが、1つのAUで符号化する画像のAUである場合、そのAUに対応する画像を非分割符号化部54に供給する。一方、決定部53は、符号化対象のAUが、複数のAUに分割して符号化する画像のAUである場合、そのAUに対応する画像と解析テーブルを分割符号化部55に供給する。また、決定部53は、解析部51に記憶されている、符号化対象のAUの解析テーブルを更新する。
なお、以下では、画像を1つのAUで符号化することを非分割符号化といい、複数のAUに分割して符号化することを分割符号化という。
非分割符号化部54は、決定部53から供給される画像をHEVC方式で非分割符号化し、AU単位の符号化ストリームを生成する。このとき、非分割符号化部54は、必要に応じて、分割符号化部55から供給される復号画像を参照画像として用いる。非分割符号化部54は、生成されたAU単位の符号化ストリームを出力する。
分割符号化部55は、決定部53から供給される解析テーブルに基づいて、画像をHEVC方式で分割符号化する。具体的には、符号化対象のAUが、分割符号化のAUのうちの最後のAU(以下、最後分割AUという)以外のAUである場合、分割符号化部55は、解析テーブルに基づいて、決定部53から供給される画像から分割画像を生成する。そして、分割符号化部55は、分割画像をHEVC方式で符号化し、その結果得られる符号化データとともに、pic_output_flagとして0が配置されたAU単位の符号化ストリームを生成する。
一方、符号化対象のAUが最後分割AUである場合、分割符号化部55は、最後分割AUの1つ前のAUに対応する分割復号画像を参照して、決定部53から供給される画像を符号化する。このとき生成された復号画像は、非分割符号化部54に供給される。分割符号化部55は、符号化の結果得られる符号化データとともに、pic_output_flagとして1が配置されたAU単位の符号化ストリームを生成する。分割符号化部55は、生成されたAU単位の符号化ストリームを出力する。
(解析テーブルの構成例)
図3は、図2の解析バッファ52に記憶される解析テーブルの構成例を示す図である。
図3の例では、解析バッファ52には、max_au_idx+1個のAUの解析テーブルが記憶されている。図3に示すように、解析テーブルには、au_idx, frame_idx, au_divide_flag, au_divide_idx, au_divide_num、およびcoded_flagが登録される。
au_idxは、この解析テーブルに対応するAUを識別するインデックスである。frame_idxは、この解析テーブルに対応する画像のフレームを識別するインデックスである。また、au_divide_flagは、この解析テーブルに対応するAUが分割符号化のAUであるか、非分割符号化のAUであるかを示すフラグである。au_divide_flagは、分割符号化のAUであることを示す場合1であり、非分割符号化のAUであることを示す場合0である。
au_divide_idxとau_divide_numは、au_divide_flagが1である場合に登録される。au_divide_idxは、この解析テーブルに対応するAUが、分割符号化のAUのうちの何番目のAUであるかを識別するインデックスである。au_divide_numは、この解析テーブルに対応するAUを含む分割符号化のAUの総数である。coded_flagは、この解析テーブルに対応するAUが既に符号化されたかどうかを示すフラグである。
図4は、図1の画像20乃至24が符号化対象の画像として入力された場合の解析テーブルに登録される値の例を示す図である。
図4の例では、先頭のフレームから順に、各フレームに対応するAUに対して、インデックスが0から付されている。また、先頭のフレームから順に、各フレームに対してインデックスが0から付されている。
図1の例では、先頭から8フレーム目以外のフレームの画像は、非分割符号化される。従って、図4に示すように、先頭から4フレーム目の画像20に対応する、au_idxおよびframe_idxとして3が登録される解析テーブルには、au_divide_flagとして0が登録される。同様に、先頭から5乃至7フレーム目の画像21乃至23に対応する、au_idxおよびframe_idxとして4乃至6がそれぞれ登録される解析テーブルにも、au_divide_flagとして0が登録される。
一方、先頭から8フレーム目の画像24は、4つのAUに分割符号化される。従って、図4に示すように、先頭から8フレーム目の画像24に対応して、au_idxとして7乃至10がそれぞれ登録された4つの解析テーブルが生成される。この4つの解析テーブルに対応する画像は、先頭から8フレーム目の画像24であるため、4つの解析テーブルの全てに、frame_idxとして7が登録される。また、画像24は4つのAUに分割符号化されるので、4つの解析テーブルの全てに、au_divide_flagとして1が登録され、au_divide_numとして4が登録される。さらに、4つの解析テーブルには、順に、au_divide_idxとして0から3が登録される。
また、図4の例では、画像20乃至24に対してまだ符号化が行われていない。従って、全ての解析テーブルのcoded_flagには0が登録されている。
(非分割符号化部の構成例)
図5は、図2の非分割符号化部54の構成例を示すブロック図である。
図5の非分割符号化部54は、バッファ71、演算部72、直交変換部73、量子化部74、可逆符号化部75、蓄積バッファ76、生成部77、設定部78、逆量子化部79、逆直交変換部80、および加算部81を有する。また、非分割符号化部54は、フィルタ82、フレームメモリ85、スイッチ86、イントラ予測部87、動き予測・補償部88、予測画像選択部89、およびレート制御部90を有する。
非分割符号化部54のバッファ71は、図2の決定部53から供給される画像を記憶する。バッファ71は、記憶している画像を、演算部72、イントラ予測部87、および動き予測・補償部88に出力する。
演算部72は、バッファ71から供給される画像から、予測画像選択部89から供給される予測画像を減算することにより符号化を行う。演算部72は、その結果得られる画像を、残差情報として直交変換部73に出力する。
直交変換部73は、演算部72からの残差情報をTU(transform unit)単位で直交変換する。直交変換部73は、直交変換の結果得られる直交変換係数を量子化部74に供給する。
量子化部74は、直交変換部73から供給される直交変換係数に対して量子化を行う。量子化部74は、量子化された直交変換係数を可逆符号化部75に供給する。
可逆符号化部75は、最適イントラ予測モードを示すイントラ予測モード情報をイントラ予測部87から取得する。また、可逆符号化部75は、最適インター予測モードを示すインター予測モード情報、動きベクトル、参照画像を特定する情報などを動き予測・補償部88から取得する。さらに、可逆符号化部75は、フィルタ82からオフセットフィルタに関するオフセットフィルタ情報を取得する。
可逆符号化部75は、量子化部74から供給される量子化された直交変換係数に対して、算術符号化(例えば、CABAC(Context-Adaptive Binary Arithmetic Coding)など)などの可逆符号化を行う。
また、可逆符号化部75は、イントラ予測モード情報、または、インター予測モード情報、動きベクトル、および参照画像を特定する情報とオフセットフィルタ情報とを、符号化に関する符号化情報として可逆符号化する。可逆符号化部75は、可逆符号化された符号化情報と直交変換係数を、符号化データとして蓄積バッファ76に供給し、蓄積させる。
蓄積バッファ76は、可逆符号化部75から供給される符号化データを、一時的に記憶する。また、蓄積バッファ76は、記憶している符号化データを生成部77に供給する。
生成部77は、設定部78から供給されるヘッダ部と蓄積バッファ76から供給される符号化データから符号化ストリームを生成し、出力する。
設定部78は、pic_output_flagとして1を含むスライスヘッダをスライス単位で設定する。また、設定部78は、必要に応じて、SPS(Sequence Parameter Set),PPS(Picture Parameter Set)などのパラメータセットを設定する。このとき、PPSに配置される、スライスヘッダにpic_output_flagが存在するかどうかを示すoutput_flag_present_flagは1に設定される。設定部78は、設定されたスライスヘッダやパラメータセットをヘッダ部として符号化し、生成部77に供給する。
また、量子化部74より出力された、量子化された直交変換係数は、逆量子化部79にも入力される。逆量子化部79は、量子化部74により量子化された直交変換係数に対して、量子化部74における量子化方法に対応する方法で逆量子化を行う。逆量子化部79は、逆量子化の結果得られる直交変換係数を逆直交変換部80に供給する。
逆直交変換部80は、TU単位で、逆量子化部79から供給される直交変換係数に対して、直交変換部73における直交変換方法に対応する方法で逆直交変換を行う。逆直交変換部80は、その結果得られる残差情報を加算部81に供給する。
加算部81は、逆直交変換部80から供給される残差情報と、予測画像選択部89から供給される予測画像を加算し、局部的に復号を行う。加算部81は、局部的に復号された画像をフィルタ82とフレームメモリ85に供給する。
フィルタ82は、加算部81から供給される画像に対して、ブロック歪を除去するデブロックフィルタ処理を行う。そして、フィルタ82は、デブロックフィルタ処理後の画像に対して、主にリンギングを除去する適応オフセットフィルタ(SAO(Sample adaptive offset))処理を行う。
具体的には、フィルタ82は、最大の符号化単位であるLCU(Largest Coding Unit)ごとに適応オフセットフィルタ処理の種類を決定し、その適応オフセットフィルタ処理で用いられるオフセットを求める。フィルタ82は、求められたオフセットを用いて、デブロックフィルタ処理後の画像に対して、決定された種類の適応オフセットフィルタ処理を行う。
フィルタ82は、適応オフセットフィルタ処理後の画像をフレームメモリ85に供給する。また、フィルタ82は、行われた適応オフセットフィルタ処理の種類とオフセットを示す情報を、オフセットフィルタ情報として可逆符号化部75に供給する。
フレームメモリ85は、フィルタ82から供給される画像と加算部81から供給される画像を蓄積する。また、フレームメモリ85は、図2の分割符号化部55から復号画像として供給されるフィルタ処理が行われた画像を蓄積する。フレームメモリ85に蓄積されたフィルタ処理が行われていない画像のうちのPU(Prediction Unit)に隣接する画素は、周辺画素としてスイッチ86を介してイントラ予測部87に供給される。一方、フレームメモリ85に蓄積されたフィルタ処理が行われた画像は、参照画像としてスイッチ86を介して動き予測・補償部88に出力される。
イントラ予測部87は、PU単位で、フレームメモリ85からスイッチ86を介して読み出された周辺画素を用いて、候補となる全てのイントラ予測モードのイントラ予測処理を行う。
また、イントラ予測部87は、バッファ71から読み出された画像と、イントラ予測処理の結果生成される予測画像とに基づいて、候補となる全てのイントラ予測モードに対してコスト関数値(RD(Rate Distortion)コスト)を算出する。そして、イントラ予測部87は、コスト関数値が最小となるイントラ予測モードを、最適イントラ予測モードに決定する。
イントラ予測部87は、最適イントラ予測モードで生成された予測画像、および、対応するコスト関数値を、予測画像選択部89に供給する。イントラ予測部87は、予測画像選択部89から最適イントラ予測モードで生成された予測画像の選択が通知された場合、イントラ予測モード情報を可逆符号化部75に供給する。
動き予測・補償部88は、PU単位で候補となる全てのインター予測モードの動き予測・補償処理を行う。具体的には、動き予測・補償部88は、2次元の線形内挿適応フィルタを有する。また、動き予測・補償部88は、2次元の線形内挿適応フィルタを用いて、バッファ71から供給される画像と参照画像に対して内挿フィルタ処理を行うことにより、その画像と参照画像を高解像度化する。
動き予測・補償部88は、高解像度化された画像と参照画像とに基づいて、候補となる全てのインター予測モードの動きベクトルを分数画素精度で検出する。そして、動き予測・補償部88は、その動きベクトルに基づいて参照画像に補償処理を施し、予測画像を生成する。なお、インター予測モードとは、PUのサイズ等を表すモード、スキップモード等である。
また、動き予測・補償部88は、バッファ71から供給される画像と予測画像とに基づいて、候補となる全てのインター予測モードに対してコスト関数値を算出し、コスト関数値が最小となるインター予測モードを最適インター予測モードに決定する。そして、動き予測・補償部88は、最適インター予測モードのコスト関数値と、対応する予測画像を予測画像選択部89に供給する。
また、動き予測・補償部88は、予測画像選択部89から最適インター予測モードで生成された予測画像の選択が通知された場合、インター予測モード情報、対応する動きベクトル、参照画像を特定する情報などを可逆符号化部75に出力する。
予測画像選択部89は、イントラ予測部87および動き予測・補償部88から供給されるコスト関数値に基づいて、最適イントラ予測モードと最適インター予測モードのうちの、対応するコスト関数値が小さい方を、最適予測モードに決定する。そして、予測画像選択部89は、最適予測モードの予測画像を、演算部72および加算部81に供給する。また、予測画像選択部89は、最適予測モードの予測画像の選択をイントラ予測部87または動き予測・補償部88に通知する。
レート制御部90は、蓄積バッファ76に蓄積された符号化データに基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部74の量子化パラメータを制御する。
(分割符号化部の構成例)
図6は、図2の分割符号化部55の構成例を示すブロック図である。
図6の分割符号化部55は、画像変更部110、バッファ111、演算部112(符号化部)、直交変換部113、量子化部114、可逆符号化部115、蓄積バッファ116、生成部117、設定部118、逆量子化部119、逆直交変換部120、および加算部121を有する。また、非分割符号化部54は、フィルタ122、フレームメモリ125、スイッチ126、イントラ予測部127、動き予測・補償部128、予測画像選択部129、およびレート制御部130を有する。
分割符号化部55の画像変更部110、設定部118、イントラ予測部127、動き予測・補償部128、予測画像選択部129、レート制御部130以外の構成は、図5の非分割符号化部54の設定部78、イントラ予測部87、動き予測・補償部88、予測画像選択部89、レート制御部90以外の構成と同様である。従って、ここでは、画像変更部110、設定部118、イントラ予測部127、動き予測・補償部128、および予測画像選択部129以外の処理については、適宜、説明を省略する。
画像変更部110は、図2の決定部53から供給される解析テーブルのau_divide_idxとau_divide_numに基づいて、符号化対象のAUが最後分割AU以外のAUであるかどうかを判定する。
画像変更部110は、符号化対象のAUが最後分割AU以外のAUである場合、決定部53から供給される画像を、au_divide_num-1個の分割領域に分割する。そして、画像変更部110は、au_divide_idxに基づいて、au_divide_num-1個の分割領域のうちの、上からau_divide_idx+1番目までの分割領域を含み、その分割領域以外の領域が固定値画像である1フレーム分の分割画像を生成し、バッファ111に供給する。
一方、符号化対象のAUが最後分割AUである場合、画像変更部110は、決定部53から供給される画像をそのままバッファ111に供給する。
設定部118は、符号化対象のAUが最後分割AU以外のAUである場合、pic_output_flagとして0を含むスライスヘッダ(非表示情報)を設定する。一方、符号化対象のAUが最後分割AUである場合、設定部118は、pic_output_flagとして1を含むスライスヘッダ(表示情報)を設定する。
また、設定部118は、必要に応じて、SPSやPPSなどのパラメータセットを設定する。このとき、PPSに配置されるoutput_flag_present_flagは1に設定される。設定部118は、設定されたスライスヘッダやパラメータセットをヘッダ部として符号化し、生成部117に供給する。
分割符号化部55では、フィルタ122から出力された画像は、復号画像として図5のフレームメモリ85に供給され、フレームメモリ125には、分割符号化部55の外部から画像が供給されない。
イントラ予測部127は、符号化対象のAUが分割符号化の最初のAUである場合、バッファ111から供給される分割画像に対して、図5のイントラ予測部87と同様に、候補となる全てのイントラ予測モードのイントラ予測処理を行う。
また、イントラ予測部127は、バッファ111から供給される分割画像と、イントラ予測処理の結果生成される予測画像とに基づいて、候補となる全てのイントラ予測モードに対してコスト関数値を算出する。そして、イントラ予測部127は、コスト関数値が最小となるイントラ予測モードを、最適イントラ予測モードに決定する。
イントラ予測部127は、最適イントラ予測モードで生成された予測画像を予測画像選択部129に供給する。イントラ予測部127は、イントラ予測モード情報を可逆符号化部115に供給する。
動き予測・補償部128は、符号化対象のAUが分割符号化の最初のAU以外のAUである場合、バッファ111から供給される分割画像の分割領域または画像に対して、図5の動き予測・補償部88と同様に、候補となる全てのインター予測モードの動き予測・補償処理を行う。また、動き予測・補償部128は、バッファ111から供給される画像と予測画像とに基づいて、候補となる全てのインター予測モードに対してコスト関数値を算出し、コスト関数値が最小となるインター予測モードを最適インター予測モードに決定する。そして、動き予測・補償部128は、最適インター予測モードで生成された予測画像を予測画像選択部129に供給する。また、動き予測・補償部128は、インター予測モード情報、対応する動きベクトル、参照画像を特定する情報などを可逆符号化部115に出力する。
また、動き予測・補償部128は、分割画像の分割領域以外の領域に対して、スキップモードを示すインター予測情報と、参照画像を特定する情報とを可逆符号化部115に供給することにより、スキップモードのインター符号化を行う。この場合、可逆符号化部115には、直交変換係数は入力されず、直交変換係数は0として可逆符号化が行われる。
予測画像選択部129は、イントラ予測部127または動き予測・補償部128から供給される予測画像を、演算部112および加算部121に供給する。
レート制御部130は、蓄積バッファ116に蓄積された符号化データに基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部114の量子化パラメータを制御する。
以上のように、分割符号化部55は、分割符号化の最初のAUに対応する分割画像をイントラ符号化する。また、分割符号化部55は、分割符号化の最初以外のAUに対応する分割画像および画像をインター符号化する。このとき、分割符号化部55は、分割画像内の分割領域以外の領域の符号化モードをスキップモードにする。
(符号化装置の処理の説明)
図7は、図2の符号化装置50の符号化処理を説明するフローチャートである。
図7のステップS11において、符号化装置50の解析部51は、max_au_idxとframe_idxを0に設定し、決定部53は、prev_au_divide_flagを0に設定する。ステップS12において、解析部51は、入力された画像の解析テーブルを生成する解析処理を行う。この解析処理の詳細は、後述する図8を参照して説明する。
ステップS13において、決定部53は、frame_idxが遅延枚数以上であるかどうかを判定する。遅延枚数とは、分割符号化時に分割画像の符号化を挿入するために必要な、符号化対象の画像のフレームより前のフレームの数(図1の例では3)、即ち分割符号化におけるAUの分割数であるmax_divide_numから1を減算した数以上の数である。
ステップS13で、frame_idxが遅延枚数以上であると判定された場合、ステップS14において、決定部53は、符号化対象のAUを決定するAU決定処理を行う。このAU決定処理の詳細は、後述する図9を参照して説明する。
ステップS15において、決定部53は、符号化対象のAUの解析テーブルに登録されているau_divide_flagが1であるかどうかを判定する。ステップS15でau_divide_flagが1ではないと判定された場合、符号化対象のAUに対応する画像を非分割符号化部54に供給する。
そして、ステップS16において、非分割符号化部54は、決定部53から供給される画像を非分割符号化する非分割符号化処理を行う。この非分割符号化処理の詳細は、後述する図10を参照して説明する。
一方、ステップS15でau_divide_flagが1であると判定された場合、決定部53は、符号化対象のAUの解析テーブルと画像を分割符号化部55に供給する。そして、ステップS17において、分割符号化部55は、決定部53から供給される解析テーブルに基づいて画像を分割符号化する分割符号化処理を行う。この分割符号化処理の詳細は、後述する図13を参照して説明する。
ステップS16またはステップS17の処理後、処理はステップS18に進む。ステップS18において、決定部53は、解析バッファ52に記憶されている、au_idxがステップS14のAU決定処理で設定されるcoded_au_idxである解析テーブル、即ち符号化対象のAUの解析テーブルに登録されているcoded_flagを1に変更する。そして、処理はステップS19に進む。
一方、ステップS13で、frame_idxが遅延枚数以上ではないと判定された場合、即ち分割画像の符号化の挿入に必要なフレーム数の画像がまだ入力されていない場合、処理はステップS19に進む。
ステップS19において、符号化装置50は、処理を終了するかどうか、例えば符号化装置50に新たな画像が入力されないかどうかを判定する。ステップS19で処理を終了しないと判定された場合、処理はステップS20に進む。
ステップS20において、解析部51は、frame_idxを1だけインクリメントする。そして、処理はステップS12に戻り、処理を終了すると判定されるまで、ステップS12乃至S19の処理が繰り返される。
一方、ステップS19で処理を終了すると判定された場合、処理は終了する。
図8は、図7のステップS12の解析処理を説明するフローチャートである。
図8のステップS31において、解析部51は、au_divide_flagとau_divide_idxを0に設定する。ステップS32において、解析部51は、frame_idxが、max_divide_numから1を減算した値以上であるかどうかを判定する。
ステップS32でframe_idxがmax_divide_numから1を減算した値以上であると判定された場合、即ち入力されたframe_idxで識別されるフレームの画像を分割符号化することが可能である場合、処理はステップS33に進む。
ステップS33において、解析部51は、入力されたframe_idxで識別されるフレームの画像と、そのフレームより1フレーム前のframe_idx-1で識別されるフレームの画像(前画像)の同一の位置の画素どうしの画素値のSAD(Sum of Absolute Difference)を計算する。
ステップS34において、解析部51は、ステップS33で計算されたSADが閾値より大きいかどうかを判定する。ステップS34でSADが閾値より大きいと判定された場合、解析部51は、frame_idxで識別されるフレームが、非分割符号化により生成される符号化ストリームのビット発生量が大きくなると予測されるシーンチェンジフレームであると判断し、処理をステップS35に進める。
ステップS35において、解析部51は、frame_idxで識別されるフレームの画像を分割符号化すると判断し、au_divide_flagを1に変更する。
ステップS36において、解析部51は、au_divide_idxがmax_divide_numより小さいかどうかを判定する。ステップS36でau_divide_idxがmax_divide_numより小さいと判定された場合、解析バッファ52は、処理をステップS37に進める。
ステップS37において、解析部51は、coded_flagとして0を登録し、au_idxとしてmax_au_idxを登録し、au_divide_numとしてmax_divide_numを登録した解析テーブルを生成する。また、解析部51は、この解析テーブルに、現在設定されているframe_idx,au_divide_flag、およびau_divide_idxを登録する。そして、解析部51は、生成された解析テーブルを解析バッファ52に供給し、記憶させる。
ステップS38において、解析部51は、au_divide_idxとmax_au_idxを1だけインクリメントし、処理をステップS36に戻す。これにより、au_divide_idxがmax_divide_num以上になるまで、ステップS36乃至S38の処理が繰り返される。その結果、frame_idxで識別されるフレームの画像に対して、max_divide_num個の解析テーブルが生成される。
一方、ステップS36でau_divide_idxがmax_divide_num以上であると判定された場合、処理は図7のステップS12に戻り、ステップS13に進む。
また、ステップS32でframe_idxがmax_divide_numから1を減算した値以上ではないと判定された場合、即ち入力されたframe_idxで識別されるフレームの画像をまだ分割符号化することが不可能である場合、処理はステップS39に進む。
また、ステップS34でSADが閾値以下であると判定された場合、解析部51は、frame_idxで識別されるフレームの画像を1つのAUで符号化すると判断し、処理をステップS39に進める。
ステップS39において、解析部51は、coded_flagとして0を登録し、au_idxとしてmax_au_idxを登録した解析テーブルを生成する。また、解析部51は、この解析テーブルに、現在設定されているframe_idxとau_divide_flagを登録する。そして、解析部51は、生成された解析テーブルを解析バッファ52に供給し、記憶させる。
ステップS40において、解析部51は、max_au_idxを1だけインクリメントし、処理を図7のステップS12に戻し、ステップS13に進める。
図9は、図7のステップS14のAU決定処理を説明するフローチャートである。
図9のステップS61において、決定部53は、idxとcoded_au_divide_flagを0に設定し、符号化対象のAUのau_idxを示すcoded_au_idxを、未定であることを示す−1に設定する。ステップS62において、決定部53は、idxがmax_au_idxより小さいかどうか、即ちau_idxとしてidxが登録されている解析テーブルが解析バッファ52に記憶されているかどうかを判定する。
ステップS62でidxがmax_au_idxより小さいと判定された場合、処理はステップS63に進む。ステップS63において、決定部53は、idxであるau_idxで識別されるAUを処理対象のAUに決定し、au_idxとしてidxが登録された解析テーブルを解析バッファ52から読み出し、取得する。
ステップS64において、決定部53は、取得された解析テーブルに登録されているcoded_flagが0であるかどうか、即ち、取得された解析テーブルに対応するAUの符号化がまだ行われていないかどうかを判定する。
ステップS64でcoded_flagが0であると判定された場合、処理はステップS65に進む。ステップS65において、決定部53は、prev_au_divide_flagが0であり、かつ、取得された解析テーブルに登録されているau_divide_flagが1であり、かつ、au_divide_idxがau_divide_num-1より小さいかどうかを判定する。
ステップS65で、prev_au_divide_flagが0であり、かつ、au_divide_flagが1であり、かつ、au_divide_idxがau_divide_num-1より小さいと判定された場合、即ち1つ前の符号化対象のAUが分割符号化のAUではなく、かつ、処理対象のAUが、分割符号化の最後分割AU以外のAUではない場合、処理はステップS66に進む。
ステップS66において、決定部53は、現在のidxを符号化対象のAUのau_idxに決定してcoded_au_idxをidxに変更する。これにより、分割符号化のAUが連続して符号化対象のAUとされない。また、決定部53は、coded_au_divide_flagを1に変更する。
ステップS67において、決定部53は、prev_au_divide_flagをcoded_au_divide_flagに変更する。そして、処理は図7のステップS14に戻り、ステップS15に進む。
一方、ステップS65で、prev_au_divide_flagが0ではない、または、au_divide_flagが1ではない、または、au_divide_idxがau_divide_num-1以上であると判定された場合、即ち、1つ前の符号化対象のAUが分割符号化のAUであった、または、処理対象のAUが非分割符号化のAUまたは最後分割AUである場合、処理はステップS68に進む。
ステップS68において、決定部53は、coded_au_idxが−1であるかどうかを判定する。ステップS68でcoded_au_idxが−1であると判定された場合、即ち、符号化されていない非分割符号化のAUまたは最後分割AUがまだ発見されていない場合、処理はステップS69に進む。
ステップS69において、決定部53は、au_divide_flagが0であるか、または、au_divide_idxがau_divide_num-1であるかどうかを判定する。
ステップS69でau_divide_flagが0である、または、au_divide_idxがau_divide_num-1であると判定された場合、即ち処理対象のAUが非分割符号化のAUまたは最後分割AUである場合、決定部53は、処理対象のAUを、まだ符号化されていない非分割符号化のAUまたは最後分割AUとして発見する。
そして、ステップS70において、決定部53は、現在のidxを符号化対象のAUのau_idxに仮決定してcoded_au_idxをidxに設定し、coded_au_divide_flagを0に設定する。そして、処理はステップS71に進む。
一方、ステップS64でcoded_flagが0ではないと判定された場合、即ち、処理対象のAUが既に符号化されたAUである場合、処理はステップS71に進む。
また、ステップS68でcoded_au_idxが−1ではないと判定された場合、即ち既に符号化されていない非分割符号化のAUまたは最後分割AUが発見されている場合、処理はステップS71に進む。
さらに、ステップS69でau_divide_flagが0ではなく、かつ、au_divide_idxがau_divide_num-1ではないと判定された場合、即ち処理対象のAUが、まだ符号化されていない分割符号化の最後分割AU以外のAUである場合、処理はステップS71に進む。
ステップS71において、決定部53は、idxを1だけインクリメントして処理をステップS62に戻す。そして、1つ前の符号化対象のAUが非分割符号化のAUであり、かつ、まだ符号化されていない分割符号化のAUが発見されたか、または、1つ前の符号化対象のAUが分割符号化のAUであり、解析バッファ52に記憶されている全ての解析テーブルに対応するAUを処理対象のAUとするまで、ステップS62乃至S65およびS68乃至S71の処理が繰り返される。
一方、ステップS62でidxがmax_au_idx以上であると判定された場合、即ち解析バッファ52に記憶されている全ての解析テーブルに対応するAUを処理対象のAUとした場合、処理はステップS67に進み、上述したステップS67の処理が行われる。即ち、この場合、ステップS70で設定されたcoded_au_idxで識別される、非分割符号化のAUまたは最後分割AUが符号化対象のAUに本決定される。
以上のようなAU決定処理を行うことにより、決定部53は、解析バッファ52にまだ符号化されていない分割符号化の最後分割AU以外のAUの解析テーブルが記憶されている場合、そのAUを優先的に符号化対象のAUに決定する。但し、決定部53は、分割符号化の最後分割AU以外のAUを連続して符号化対象のAUに決定しないようにする。
図10は、図7のステップS16の非分割符号化処理を説明するフローチャートである。
図10のステップS91において、非分割符号化部54の設定部78(図5)は、pic_output_flagとして1を含むスライス単位のスライスヘッダを設定する。また、設定部78は、必要に応じて、パラメータセットを設定する。
ステップS92において、設定部78は、設定されたスライスヘッダやパラメータセットなどのヘッダ部を符号化し、生成部77に供給する。
ステップS93において、非分割符号化部54は、符号化対象のAUに対応する画像を符号化する符号化処理を行う。この符号化処理の詳細は、後述する図11および図12を参照して説明する。ステップS93の処理後、処理は図7のステップS16に戻り、ステップS18に進む。
図11および図12は、図10のステップS93の符号化処理を説明するフローチャートである。
図11のステップS131において、非分割符号化部54のバッファ71(図5)は、図2の決定部53から供給される画像を記憶する。ステップS132において、バッファ71は、記憶している画像を読み出し、演算部72、イントラ予測部87、および動き予測・補償部88に供給する。
ステップS133において、イントラ予測部87は、PU単位で候補となる全てのイントラ予測モードのイントラ予測処理を行う。また、イントラ予測部87は、バッファ71から読み出された画像と、イントラ予測処理の結果生成される予測画像とに基づいて、候補となる全てのイントラ予測モードに対してコスト関数値を算出する。そして、イントラ予測部87は、コスト関数値が最小となるイントラ予測モードを、最適イントラ予測モードに決定する。イントラ予測部87は、最適イントラ予測モードで生成された予測画像、および、対応するコスト関数値を、予測画像選択部89に供給する。
また、動き予測・補償部88は、PU単位で候補となる全てのインター予測モードの動き予測・補償処理を行う。また、動き予測・補償部88は、バッファ71から供給される画像と予測画像とに基づいて、候補となる全てのインター予測モードに対してコスト関数値を算出し、コスト関数値が最小となるインター予測モードを最適インター予測モードに決定する。そして、動き予測・補償部88は、最適インター予測モードのコスト関数値と、対応する予測画像を予測画像選択部89に供給する。
ステップS134において、予測画像選択部89は、イントラ予測部87および動き予測・補償部88から供給されるコスト関数値に基づいて、最適イントラ予測モードと最適インター予測モードのうちのコスト関数値が最小となる方を、最適予測モードに決定する。そして、予測画像選択部89は、最適予測モードの予測画像を、演算部72および加算部81に供給する。
ステップS135において、予測画像選択部89は、最適予測モードが最適インター予測モードであるかどうかを判定する。ステップS135で最適予測モードが最適インター予測モードであると判定された場合、予測画像選択部89は、最適インター予測モードで生成された予測画像の選択を動き予測・補償部88に通知する。
そして、ステップS136において、動き予測・補償部88は、インター予測モード情報、動きベクトル、および参照画像を特定する情報を可逆符号化部75に供給し、処理をステップS138に進める。
一方、ステップS135で最適予測モードが最適インター予測モードではないと判定された場合、即ち最適予測モードが最適イントラ予測モードである場合、予測画像選択部89は、最適イントラ予測モードで生成された予測画像の選択をイントラ予測部87に通知する。そして、ステップS137において、イントラ予測部87は、イントラ予測モード情報を可逆符号化部75に供給し、処理をステップS138に進める。
ステップS138において、演算部72は、バッファ71から供給される画像から、予測画像選択部89から供給される予測画像を減算することにより符号化を行う。演算部72は、その結果得られる画像を、残差情報として直交変換部73に出力する。
ステップS139において、直交変換部73は、演算部72からの残差情報に対してTU単位で直交変換を施し、その結果得られる直交変換係数を量子化部74に供給する。
ステップS140において、量子化部74は、直交変換部73から供給される直交変換係数を量子化し、量子化された直交変換係数を可逆符号化部75と逆量子化部79に供給する。
図12のステップS141において、逆量子化部79は、量子化部74から供給される量子化された直交変換係数を逆量子化し、その結果得られる直交変換係数を逆直交変換部80に供給する。
ステップS142において、逆直交変換部80は、逆量子化部79から供給される直交変換係数に対してTU単位で逆直交変換を施し、その結果得られる残差情報を加算部81に供給する。
ステップS143において、加算部81は、逆直交変換部80から供給される残差情報と、予測画像選択部89から供給される予測画像を加算し、局部的に復号を行う。加算部81は、局部的に復号された画像をフィルタ82とフレームメモリ85に供給する。
ステップS144において、フィルタ82は、加算部81から供給される局部的に復号された画像に対して、デブロックフィルタ処理を行う。
ステップS145において、フィルタ82は、デブロックフィルタ処理後の画像に対して、LCUごとにSAO処理を行う。フィルタ82は、その結果得られる画像をフレームメモリ85に供給する。また、フィルタ82は、LCUごとに、オフセットフィルタ情報を可逆符号化部75に供給する。
ステップS146において、フレームメモリ85は、フィルタ82から供給される画像と加算部81から供給される画像を蓄積する。また、フレームメモリ85は、分割符号化部55から復号画像として供給されるフィルタ処理が行われた画像を蓄積する。フレームメモリ85に蓄積されたフィルタ処理が行われていない画像のうちのPUに隣接する画素は、周辺画素としてスイッチ86を介してイントラ予測部87に供給される。一方、フレームメモリ85に蓄積されたフィルタ処理が行われた画像は、参照画像としてスイッチ86を介して動き予測・補償部88に出力される。
ステップS147において、可逆符号化部75は、イントラ予測モード情報、または、インター予測モード情報、動きベクトル、および参照画像を特定する情報と、オフセットフィルタ情報とを、符号化情報として可逆符号化する。
ステップS148において、可逆符号化部75は、量子化部74から供給される量子化された直交変換係数を可逆符号化する。そして、可逆符号化部75は、ステップS147の処理で可逆符号化された符号化情報と可逆符号化された直交変換係数から、符号化データを生成し、蓄積バッファ76に供給する。
ステップS149において、蓄積バッファ76は、可逆符号化部75から供給される符号化データを、一時的に蓄積する。
ステップS150において、レート制御部90は、蓄積バッファ76に蓄積された符号化データに基づいて、オーバーフローあるいはアンダーフローが発生しないように、量子化部74の量子化動作のレートを制御する。
ステップS151において、蓄積バッファ76は、記憶している符号化データを、生成部77に出力する。
ステップS152において、生成部77は、設定部78から供給されるヘッダ部と蓄積バッファ76から供給される符号化データから符号化ストリームを生成し、出力する。そして、処理は、図10のステップS93に戻り、図7のステップS16に戻ってステップS18に進む。
なお、図11および図12の符号化処理では、説明を簡単化するため、常に、イントラ予測処理と動き予測・補償処理が行われるようにしたが、実際には、ピクチャタイプ等によっていずれか一方のみが行われる場合もある。
図13は、図7のステップS17の分割符号化処理を説明するフローチャートである。
図13のステップS171において、分割符号化部55の設定部118(図6)は、ヘッダ部を設定して符号化するヘッダ部設定処理を行う。このヘッダ部設定処理の詳細は、後述する図14を参照して説明する。
ステップS172において、画像変更部110は、決定部53から供給される解析テーブルに基づいて画像を変更する画像変更処理を行う。この画像変更処理の詳細は、後述する図15を参照して説明する。
ステップS173において、分割符号化部55は、画像変更部110により変更された画像を符号化する符号化処理を行う。そして、処理は図7のステップS17に戻り、ステップS18に進む。
図14は、図13のステップS171のヘッダ部設定処理を説明するフローチャートである。
図14のステップS191において、設定部118は、決定部53から供給される解析テーブルに登録されているau_divide_idxが0であるかどうかを判定する。ステップS191でau_divide_idxが0ではないと判定された場合、即ち、符号化対象のAUが分割符号化の最初のAUではない場合、処理はステップS192に進む。
ステップS192において、設定部118は、スライスタイプ(slice_type)としてPスライスを含む符号化対象のAUのスライスヘッダを設定する。ステップS193において、設定部118は、符号化対象のAUとframe_idxが同一であるが、au_divide_idxが1だけ小さいAUに対応する画像のみを参照画像の候補とする参照画像の候補のリストであるリファレンスピクチャセットを含むパラメータセットを設定する。そして、処理はステップS195に進む。
一方、ステップS191で符号化対象のAUのau_divide_idxが0であると判定された場合、即ち、符号化対象のAUが分割符号化の最初のAUである場合、処理はステップS194に進む。
ステップS194において、設定部118は、スライスタイプとしてIスライスを含むスライスヘッダを設定し、処理をステップS195に進める。
ステップS195において、決定部53から供給される解析テーブルに登録されているau_divide_idxが、au_divide_num-1であるかどうかを判定する。ステップS195でau_divide_idxがau_divide_num-1ではないと判定された場合、即ち符号化対象のAUが最後分割AUではない場合、処理はステップS196に進む。
ステップS196において、設定部118は、ステップS193またはS194で設定されたスライスヘッダに含まれるpic_output_flagを0に設定し、処理をステップS198に進める。
一方、ステップS195でau_divide_idxがau_divide_num-1であると判定された場合、即ち、符号化対象のAUが最後分割AUである場合、処理はステップS197に進む。
ステップS197において、設定部118は、ステップS193またはS194で設定されたスライスヘッダに含まれるpic_output_flagを1に設定し、処理をステップS198に進める。
ステップS198において、設定部118は、設定されたスライスヘッダとパラメータセットをヘッダ部として符号化し、生成部117に供給する。そして、処理は、図13のステップS171に戻り、ステップS172に進む。
図15は、図13のステップS172の画像変更処理を説明するフローチャートである。
図15のステップS211において、画像変更部110は、決定部53から供給される解析テーブルに登録されているau_divide_idxがau_divide_num-2より小さいかどうかを判定する。ステップS211でau_divide_idxがau_divide_num-2より小さいと判定された場合、即ち、符号化対象のAUが最後分割AUおよび最後から2番目のAUではない場合、処理はステップS212に進む。
ステップS212において、画像変更部110は、決定部53から供給される画像の垂直方向の画素数heightと、au_divide_idx+1とを乗算し、その乗算値からau_divide_num-1を除算した値を座標yに設定する。即ち、画像変更部110は、画像の垂直方向の画素をau_divide_num-1個に分割した分割領域のうちの、上からau_divide_idx+2番目の分割領域の先頭の画素のy座標を座標yに設定する。なお、画素のx座標は、左から何番目の画素であるかを0から表す整数値であり、y座標は、上から何番目の画素であるかを0から表す整数値である。
ステップS213において、画像変更部110は、座標yが符号化対象の画像の垂直方向の画素数heightよりも小さいかどうかを判定する。ステップS213で座標yが画像の垂直方向の画素数heightよりも小さいと判定された場合、即ち座標yが画像内の画素のy座標を表している場合、処理はステップS214に進む。
ステップS214において、画像変更部110は、座標xを0に設定する。ステップS215において、画像変更部110は、座標xが符号化対象の画像の水平方向の画素数widthより小さいかどうかを判定する。ステップS215で座標xが画像の水平方向の画素数widthより小さいと判定された場合、即ち座標xが画像内の画素のx座標を表している場合、処理はステップS216に進む。
ステップS216において、画像変更部110は、決定部53から供給される画像の座標(x,y)の画素値を0に変更する。ステップS217において、画像変更部110は、xを1だけインクリメントし、処理をステップS215に戻す。そして、座標xが画像の水平方向の画素数width以上になるまで、即ち座標xが画像外の画素のx座標を表すまで、ステップS215乃至S217の処理が行われる。これにより、決定部53から供給される画像内の座標yの行の全ての画素が黒画像に変更される。
一方、ステップS215で座標xが画像の水平方向の画素数width以上であると判定された場合、処理はステップS218に進む。ステップS218において、画像変更部110は、座標yを1だけインクリメントし、処理をステップS213に戻す。そして、座標yが画像の垂直方向の画素数height以上になるまで、即ちステップS212で設定された座標yの行以降の行の全ての画素が黒画像に変更されるまで、ステップS213乃至S218の処理が繰り返される。
ステップS213で座標yが画像の垂直方向の画素数height以上であると判定された場合、画像変更部110は、変更後の画像を分割画像としてバッファ111に供給する。そして、処理は図13のステップS172に戻り、ステップS173に進む。
一方、ステップS211でau_divide_idxがau_divide_num-2以上であると判定された場合、即ち、符号化対象のAUが最後分割AUまたは分割符号化の最後から2番目のAUである場合、画像変更部110は、決定部53から供給される画像をそのままバッファ111に供給する。具体的には、符号化対象のAUが分割符号化の最後から2番目のAUである場合、画像変更部110は、決定部53から供給される画像を分割画像としてバッファ111に供給する。一方、符号化対象のAUが最後分割AUである場合、画像変更部110は、決定部53から供給される画像をそのままバッファ111に供給する。そして、処理は図13のステップS172に戻り、ステップS173に進む。
(復号装置の構成例)
図16は、図2の符号化装置50から出力された符号化ストリームを復号する復号装置の構成例を示す図である。
図16の復号装置150は、取得部151、復号部152、および表示部153により構成される。
図16の取得部151は、符号化装置50から出力された符号化ストリームを取得し、復号部152に供給する。
復号部152は、取得部151から供給される符号化ストリームから符号化データとヘッダ部を分離する。復号部152は、必要に応じてヘッダ部を参照しながら符号化データを復号する。復号部152は、復号画像のうちの、pic_output_flagとして1を含むスライスヘッダに対応する復号画像のみを表示部153に供給する。
表示部153は、復号部152から供給される復号画像を表示する。
(復号部の構成例)
図17は、図16の復号部152の構成例を示すブロック図である。
図17の復号部152は、分離部170、蓄積バッファ171、可逆復号部172、逆量子化部173、逆直交変換部174、加算部175、フィルタ176、および画面並べ替えバッファ179を有する。また、復号部152は、フレームメモリ181、スイッチ182、イントラ予測部183、動き補償部184、およびスイッチ185を有する。
復号部152の分離部170は、図16の取得部151から供給される符号化ストリームから符号化データとヘッダ部を分離する。分離部170は、符号化データを蓄積バッファ171に供給する。また、分離部170は、ヘッダ部のスライスヘッダに含まれるpic_output_flagを画面並べ替えバッファ179に供給する。さらに、分離部170は、必要に応じて、ヘッダ部に含まれる情報を各部に供給する。
蓄積バッファ171は、分離部170から供給される符号化データを蓄積する。蓄積バッファ171は、蓄積されている符号化データを可逆復号部172に供給する。
可逆復号部172は、蓄積バッファ171からの符号化データに対して、図5の可逆符号化部75の可逆符号化に対応する、算術復号等の可逆復号を施すことで、量子化された直交変換係数と符号化情報を得る。可逆復号部172は、量子化された直交変換係数を逆量子化部173に供給する。また、可逆復号部172は、符号化情報としてのイントラ予測モード情報などをイントラ予測部183に供給する。可逆復号部172は、動きベクトル、インター予測モード情報、参照画像を特定する情報などを動き補償部184に供給する。
さらに、可逆復号部172は、符号化情報としてのイントラ予測モード情報またはインター予測モード情報をスイッチ185に供給する。可逆復号部172は、符号化情報としてのオフセットフィルタ情報をフィルタ176に供給する。
逆量子化部173、逆直交変換部174、加算部175、フィルタ176、フレームメモリ181、スイッチ182、イントラ予測部183、および動き補償部184は、図5の逆量子化部79、逆直交変換部80、加算部81、フィルタ82、フレームメモリ85、スイッチ86、イントラ予測部87、および動き予測・補償部88とそれぞれ同様の処理を行い、これにより、画像が復号される。
具体的には、逆量子化部173は、可逆復号部172からの量子化された直交変換係数を逆量子化し、その結果得られる直交変換係数を逆直交変換部174に供給する。
逆直交変換部174は、逆量子化部173からの直交変換係数に対してTU単位で逆直交変換を行う。逆直交変換部174は、逆直交変換の結果得られる残差情報を加算部175に供給する。
加算部175は、逆直交変換部174から供給される残差情報と、スイッチ185から供給される予測画像を加算することにより、復号を行う。加算部175は、復号の結果得られる画像をフィルタ176とフレームメモリ181に供給する。
フィルタ176は、加算部175から供給される画像に対してデブロックフィルタ処理を行う。フィルタ176は、LCUごとに、可逆復号部172からのオフセットフィルタ情報が表すオフセットを用いて、デブロックフィルタ処理後の画像に対して、オフセットフィルタ情報が表す種類の適応オフセットフィルタ処理を行う。フィルタ176は、適応オフセットフィルタ処理後の画像を、フレームメモリ181および画面並べ替えバッファ179に供給する。
画面並べ替えバッファ179は、分離部170から供給されるpic_output_flagに基づいて、フィルタ176から供給される画像である復号画像のうちの、全てのスライスのpic_output_flagが1である復号画像のみをフレーム単位で記憶する。画面並べ替えバッファ179は、記憶した符号化のための順番のフレーム単位の復号画像を、元の表示の順番に並び替え、図16の表示部153に供給する。
フレームメモリ181は、フィルタ176から供給される画像と加算部175から供給される画像を蓄積する。フレームメモリ181に蓄積されたフィルタ処理が行われていない画像のうちのPUに隣接する画素は、周辺画素としてスイッチ182を介してイントラ予測部183に供給される。一方、フレームメモリ181に蓄積されたフィルタ処理が行われた画像は、参照画像として、スイッチ182を介して動き補償部184に供給される。
イントラ予測部183は、PU単位で、フレームメモリ181からスイッチ182を介して読み出された周辺画素を用いて、可逆復号部172から供給されるイントラ予測モード情報が示す最適イントラ予測モードのイントラ予測処理を行う。イントラ予測部183は、その結果生成される予測画像をスイッチ185に供給する。
動き補償部184は、フレームメモリ181からスイッチ182を介して、可逆復号部172から供給される参照画像を特定する情報により特定される参照画像を読み出す。動き補償部184は、2次元の線形内挿適応フィルタを有する。動き補償部184は、2次元の線形内挿適応フィルタを用いて、参照画像に対して内挿フィルタ処理を行うことにより、参照画像を高解像度化する。動き補償部184は、高解像度化された参照画像と可逆復号部172から供給される動きベクトルとを用いて、PU単位で、可逆復号部172から供給されるインター予測モード情報が示す最適インター予測モードの動き補償処理を行う。動き補償部184は、その結果生成される予測画像をスイッチ185に供給する。
スイッチ185は、可逆復号部172からイントラ予測モード情報が供給された場合、イントラ予測部183から供給される予測画像を加算部175に供給する。一方、可逆復号部172からインター予測モード情報が供給された場合、スイッチ185は、動き補償部184から供給される予測画像を加算部175に供給する。
(復号装置の処理)
図18は、図16の復号装置150の表示処理を説明するフローチャートである。
図18のステップS231において、取得部151は、符号化装置50から出力された符号化ストリームを取得し、復号部152に供給する。
ステップS232において、復号部152は、取得部151から供給される符号化ストリームに含まれる符号化データを復号する復号処理を行う。この復号処理の詳細は、後述する図19を参照して説明する。
ステップS233において、画面並べ替えバッファ179は、ステップS232の復号処理の結果フィルタ176から供給される画像である復号画像の全てのスライスのpic_output_flagが1であるかどうかを判定する。ステップS233で復号画像の全てのスライスのpic_output_flagが1であると判定された場合、即ち、復号画像が、非分割符号化のAUまたは最後分割AUの復号画像である場合、処理はステップS234に進む。
ステップS234において、画面並べ替えバッファ179は、復号画像を記憶し、記憶した符号化のための順番の復号画像を、元の表示の順番に並び替え、図16の表示部153に供給する。
ステップS235において、表示部153は、復号部152から供給される復号画像を表示し、処理を終了する。
一方、ステップS233で復号画像の少なくとも1つのスライスのpic_output_flagが1ではないと判定された場合、即ち、復号画像が、分割符号化の最後分割AU以外のAUの復号画像である場合、処理は終了する。
図19は、図18のステップS232の復号処理の詳細を説明するフローチャートである。
図19のステップS250において、復号部152の分離部170(図17)は、取得部151から供給される符号化ストリームから符号化データとヘッダ部を分離する。分離部170は、符号化データを蓄積バッファ171に供給する。また、分離部170は、ヘッダ部のスライスヘッダに含まれるpic_output_flagを画面並べ替えバッファ179に供給する。さらに、分離部170は、必要に応じて、ヘッダ部に含まれる情報を各部に供給する。
ステップS251において、蓄積バッファ171は、分離部170から供給される符号化データを蓄積する。蓄積バッファ171は、蓄積されている符号化データを可逆復号部172に供給する。
ステップS252において、可逆復号部172は、蓄積バッファ171からの符号化データを可逆復号し、量子化された直交変換係数と符号化情報を得る。可逆復号部172は、量子化された直交変換係数を逆量子化部173に供給する。
また、可逆復号部172は、符号化情報としてのイントラ予測モード情報などをイントラ予測部183に供給する。可逆復号部172は、動きベクトル、インター予測モード情報、参照画像を特定する情報などを動き補償部184に供給する。
さらに、可逆復号部172は、符号化情報としてのイントラ予測モード情報またはインター予測モード情報をスイッチ185に供給する。可逆復号部172は、符号化情報としてのオフセットフィルタ情報をフィルタ176に供給する。
ステップS253において、逆量子化部173は、可逆復号部172からの量子化された直交変換係数を逆量子化し、その結果得られる直交変換係数を逆直交変換部174に供給する。
ステップS254において、逆直交変換部174は、逆量子化部173からの直交変換係数に対して逆直交変換を施し、その結果得られる残差情報を加算部175に供給する。
ステップS255において、動き補償部184は、可逆復号部172からインター予測モード情報が供給されたかどうかを判定する。ステップS255でインター予測モード情報が供給されたと判定された場合、処理はステップS256に進む。
ステップS256において、動き補償部184は、PU単位で、可逆復号部172から供給される参照画像を特定する情報に基づいて参照画像を読み出し、動きベクトルと参照画像を用いて、インター予測モード情報が示す最適インター予測モードの動き補償処理を行う。動き補償部184は、その結果生成される予測画像を、スイッチ185を介して加算部175に供給し、処理をステップS258に進める。
一方、ステップS255でインター予測モード情報が供給されていないと判定された場合、即ちイントラ予測モード情報がイントラ予測部183に供給された場合、処理はステップS257に進む。
ステップS257において、イントラ予測部183は、PU単位で、フレームメモリ181からスイッチ182を介して読み出された周辺画素を用いて、イントラ予測モード情報が示すイントラ予測モードのイントラ予測処理を行う。イントラ予測部183は、イントラ予測処理の結果生成される予測画像を、スイッチ185を介して加算部175に供給し、処理をステップS258に進める。
ステップS258において、加算部175は、逆直交変換部174から供給される残差情報と、スイッチ185から供給される予測画像を加算することにより、局部的に復号を行う。加算部175は、復号の結果得られる画像をフィルタ176とフレームメモリ181に供給する。
ステップS259において、フィルタ176は、加算部175から供給される画像に対してデブロックフィルタ処理を行い、ブロック歪を除去する。
ステップS260において、フィルタ176は、可逆復号部172から供給されるオフセットフィルタ情報に基づいて、デブロックフィルタ処理後の画像に対して、LCUごとにSAO処理を行う。フィルタ176は、SAO処理後の画像を、フレームメモリ181および画面並べ替えバッファ179に供給する。
ステップS261において、フレームメモリ181は、加算部175から供給される画像と、フィルタ176から供給される画像を蓄積する。フレームメモリ181に蓄積されたフィルタ処理が行われていない画像のうちのPUに隣接する画素は、周辺画素としてスイッチ182を介してイントラ予測部183に供給される。一方、フレームメモリ181に蓄積されたフィルタ処理が行われた画像は、参照画像として、スイッチ182を介して動き補償部184に供給される。そして、処理は図18のステップS232に戻り、ステップS233に進む。
以上のように、符号化装置50は、画像を複数のAUに分割して符号化する。従って、単位時間あたりの符号化ストリームのビット発生量を平準化することができる。
また、符号化装置50は、量子化パラメータを大きくすることによりビット発生量を抑制する場合に比べて、高画質の符号化ストリームを生成することができる。これに対して、量子化パラメータを大きくすることによりビット発生量を抑制する場合、ビット発生量を抑制した符号化ストリームの復号画像だけでなく、その復号画像を参照する復号画像の画質も劣化する。
復号装置150は、符号化装置50により生成されたビット発生量が平準化された高画質の符号化ストリームを復号することにより、局所的に大きな負荷を発生させずに、高画質の画像を復号することができる。即ち、低負荷で高画質の画像を復号することができる。
また、符号化装置50は、分割符号化の最後分割AU以外のAUの復号画像のpic_output_flagを0に設定する。従って、復号装置150は、このpic_output_flagに基づいて、分割符号化の最後分割AU以外のAUの復号画像、即ち、分割符号化された符号化ストリームの復号過程の画像を表示しないようにすることができる。
<第2実施の形態>
(符号化方法の概要)
図20は、本開示を適用した符号化装置の第2実施の形態における符号化方法の概要を説明する図である。
図20に示す構成のうち、図1の構成と同じ構成には同じ符号を付してある。重複する説明については適宜省略する。
第2実施の形態における符号化方法は、分割画像または黒画像と、非分割符号化される画像または最後分割AUに対応する画像とが合成されて同時に符号化される点、および、復号画像のうちの分割画像または黒画像の領域が表示されない点が、第1実施の形態における符号化方法と異なる。
具体的には、図20のAおよび図20のBに示すように、分割画像11が、画像24の3フレーム前の画像21の下部に合成され、画像21の符号化時刻t11に、Pピクチャとして符号化される。このとき、画像21は、画像21より前のフレームの画像を必要に応じて参照して符号化され、分割画像11は、第1実施の形態と同様にイントラ符号化される。その結果、符号化時に得られる符号化ストリームの復号結果は、図20のCに示すように、画像21の復号画像191の下部に分割復号画像41が合成された合成画像201になる。
次に、分割画像12が、画像21の次のフレームの画像22の下部に合成され、画像22の符号化時刻t12に、Pピクチャとして符号化される。このとき、画像22は、合成画像201のうちの復号画像191または復号画像191より前のフレームの復号画像を必要に応じて参照して符号化され、分割画像12は、分割復号画像41を参照して第1実施の形態と同様に符号化される。その結果、符号化時に得られる符号化ストリームの復号結果は、図20のCに示すように、画像22の復号画像192の下部に分割復号画像42が合成された合成画像202になる。
次に、分割画像13が、画像22の次のフレームの画像23の下部に合成され、画像23の符号化時刻t13に、Pピクチャとして符号化される。このとき、画像23は、合成画像202のうちの復号画像192または復号画像192より前のフレームの復号画像を必要に応じて参照して符号化され、分割画像13は、分割復号画像42を参照して第1実施の形態と同様に符号化される。その結果、符号化時に得られる符号化ストリームの復号結果は、図20のCに示すように、画像23の復号画像193の下部に分割復号画像43が合成された合成画像203になる。
最後に、画像24の下部に黒画像211が合成され、画像24の符号化時刻t14に、Pピクチャとして符号化される。このとき、画像24は、合成画像203のうちの分割復号画像43を参照して第1実施の形態と同様に符号化され、黒画像211は、復号画像193または復号画像193より前のフレームの復号画像を必要に応じて参照して符号化を行う。その結果、符号化時に得られる符号化ストリームの復号結果は、図20のCに示すように、復号画像44の下部に黒画像211が合成された合成画像204である。
また、合成画像201乃至203の符号化ストリームには、それぞれ、合成画像201乃至203の上半分の復号画像191乃至193の領域を表示領域として指定する情報が設定される。また、画像204の符号化ストリームには、合成画像204の上半分の復号画像44の領域を表示領域として指定する情報が指定される。従って、分割復号画像41乃至43および黒画像211は、表示されない。
(符号化装置の第2実施の形態の構成例)
図21は、本開示を適用した符号化装置の第2実施の形態の構成例を示すブロック図である。
図21に示す構成のうち、図2の構成と同じ構成には同じ符号を付してある。重複する説明については適宜省略する。
図21の符号化装置230の構成は、決定部53、非分割符号化部54、および分割符号化部55の代わりに、ペア決定部231、およびペア符号化部232が設けられる点が、図2の符号化装置50の構成と異なる。
ペア決定部231は、解析テーブルを解析バッファ52から読み出す。ペア決定部231は、解析テーブルに基づいて、非分割符号化のAUまたは最後分割AUと、分割符号化の最後分割AU以外のAUとを符号化対象のAUのペアとして決定する。
但し、解析バッファ52に記憶されている解析テーブルの中に、まだ符号化されていない分割符号化の最後分割AU以外のAUの解析テーブルが存在しない場合には、ペア決定部231は、非分割符号化のAUまたは最後分割AUのみを符号化対象のAUのペアとして決定する。
ペア決定部231は、符号化対象のAUのペアの解析テーブルと、そのペアを構成する各AUに対応する画像とをペア符号化部232に供給する。また、ペア決定部231は、解析部51に記憶されている、符号化対象のAUのペアを構成する各AUの解析テーブルのcoded_flagを1に変更する。
ペア符号化部232は、ペア決定部231から供給される符号化対象のAUのペアの解析テーブルと画像とに基づいて、合成画像を生成する。ペア符号化部232は、合成画像を1つのAUとしてHEVC方式で符号化し、AU単位の符号化ストリームを生成する。ペア符号化部232は、生成されたAU単位の符号化ストリームを出力する。
(ペア符号化部の構成例)
図22は、図21のペア符号化部232の構成例を示すブロック図である。
図22に示す構成のうち、図5の構成と同じ構成には同じ符号を付してある。重複する説明については適宜省略する。
図22のペア符号化部232の構成は、画像合成部251が新たに設けられる点、設定部78、イントラ予測部87、動き予測・補償部88、予測画像選択部89、レート制御部90の代わりに、設定部253、イントラ予測部254、動き予測・補償部255、予測画像選択部256、レート制御部257が設けられる点が、図5の非分割符号化部54の構成と異なる。
画像合成部251は、図21のペア決定部231から供給される解析テーブルに基づいて、符号化対象のAUのペアのうちの一方が、分割符号化の最後分割AU以外のAUであるかどうかを判定する。画像合成部251は、符号化対象のAUのペアのうちの一方が、分割符号化の最後分割AU以外のAUであると判定した場合、図6の画像変更部110と同様に、そのAUに対応する画像から分割画像を生成する。そして、画像合成部251(画像変更部)は、符号化対象のAUのペアのうちの他方に対応する画像の下部に分割画像を合成して合成画像を生成する。
また、画像合成部251は、符号化対象のAUのペアが非分割符号化のAUまたは最後分割AUのみを含む場合、非分割符号化のAUまたは最後分割AUに対応する画像の下部に黒画像(所定の画像)を合成して合成画像を生成する。画像合成部251は、合成画像をバッファ71に供給する。
設定部253は、復号画像の表示領域として上半分の領域を指定する情報を含むVUI(Video usability information)を配置したSPSを設定する。具体的には、設定部253は、表示領域を指定するかどうかを示すdefault_display_window_flagを、表示領域を指定することを示す1に設定する。
また、設定部253は、復号画像の下端から表示領域の下端までの画素数を示すdef_disp_win_bottom_offsetを、復号画像の垂直方向の画素数の半分の画素数を示す値に設定する。
さらに、設定部253は、復号画像の上端から表示領域の上端までの画素数を示すdef_disp_win_top_offset、復号画像の左端から表示領域の左端までの画素数を示すdef_disp_win_left_offset、および復号画像の右端から表示領域の右端までの画素数を示すdef_disp_win_right_offsetを0に設定する。
以上のように設定されたdef_disp_win_bottom_offset, def_disp_win_top_offset, def_disp_win_left_offset、およびdef_disp_win_right_offsetは、復号画像のうちの非分割符号化のAUおよび最後分割AUに対応する上半分の画像を表示領域として指定する情報である。即ち、これらの情報は、復号画像のうちの分割符号化の最後分割AU以外のAUに対応する画像を表示しないことを示す非表示情報であり、非分割符号化のAUおよび最後分割AUに対応する画像を表示することを示す表示情報である。
設定部253は、default_display_window_flag,def_disp_win_bottom_offset, def_disp_win_top_offset, def_disp_win_left_offset、およびdef_disp_win_right_offsetを含むVUIを配置したSPSを設定する。
なお、SPSには、VUIが配置されるため、SPSに配置される、VUIが存在するかどうかを示すvui_parameters_present_flagは、VUIが存在することを示す1に設定される。また、設定部253は、必要に応じて、PPSなどの他のパラメータセットを設定する。さらに、設定部253は、スライスヘッダをスライス単位で設定する。設定部253は、設定されたスライスヘッダやSPS,PPSなどのパラメータセットを、ヘッダ部として符号化し、生成部77に供給する。
イントラ予測部254は、バッファ71から供給される合成画像のうちの非分割符号化のAUに対応する画像および黒画像に対して図5のイントラ予測部87と同様の処理を行い、分割符号化のAUに対して図6のイントラ予測部127と同様の処理を行う。
動き予測・補償部255は、バッファ71から供給される合成画像のうちの非分割符号化のAUに対応する画像および黒画像に対して図5の動き予測・補償部88と同様の処理を行い、分割符号化のAUに対して図6の動き予測・補償部128と同様の処理を行う。
予測画像選択部256は、合成画像のうちの非分割符号化のAUに対応する画像および黒画像に対して図5の予測画像選択部89と同様の処理を行い、分割符号化のAUに対して図6の予測画像選択部129と同様の処理を行う。
(符号化装置の処理の説明)
図23は、図21の符号化装置230の符号化処理を説明するフローチャートである。
図23のステップS281において、符号化装置230の解析部51は、max_au_idxとframe_idxを0に設定する。ステップS282において、解析部51は、図8の解析処理を行う。
ステップS283において、決定部53は、frame_idxが遅延枚数以上であるかどうかを判定する。ステップS283で、frame_idxが遅延枚数以上であると判定された場合、ステップS284において、ペア決定部231は、符号化対象のAUのペアを決定するペア決定処理を行う。このペア決定処理の詳細は、後述する図24を参照して説明する。
ステップS285において、ペア符号化部232は、符号化対象のAUのペアを符号化するペア符号化処理を行う。このペア符号化処理の詳細は、後述する図25を参照して説明する。
ステップS286において、ペア決定部231は、解析バッファ52に記憶されている、au_idxがステップS284のペア決定処理で設定されたdisp_au_idxである解析テーブル、即ち符号化対象のAUのペアのうちの表示領域に対応するAUの解析テーブルに登録されているcoded_flagを1に変更する。そして、処理はステップS287に進む。
ステップS287において、ペア決定部231は、ステップS284のペア決定処理で設定されるnon_disp_au_idxが−1であるかどうかを判定する。ステップS287でnon_disp_au_idxが−1ではないと判定された場合、即ち符号化対象のAUのペアに非表示領域に対応するAUが存在する場合、処理はステップS288に進む。
ステップS288において、ペア決定部231は、解析バッファ52に記憶されている、au_idxがnon_disp_au_idxである解析テーブル、即ち符号化対象のAUのペアのうちの非表示領域に対応するAUの解析テーブルに登録されているcoded_flagを1に変更する。そして、処理はステップS289に進む。
一方、ステップS287でnon_disp_au_idxが−1である場合、即ち符号化対象のAUのペアに非表示領域に対応するAUが存在しない場合、処理はステップS289に進む。
また、ステップS283でframe_idxが遅延枚数以上ではないと判定された場合、処理はステップS289に進む。ステップS289およびS290の処理は、図7のステップS19およびS20の処理と同様であるので、説明は省略する。
図24は、図23のステップS284のペア決定処理を説明するフローチャートである。
図24のステップS311において、ペア決定部231は、idxを0に設定する。また、ペア決定部231は、表示領域に対応するAUのau_idxを示すdisp_au_idxと、非表示領域に対応するAUのau_idxを示すnon_disp_au_idxを、未定であることを示す−1に設定する。
ステップS312乃至S314の処理は、図9のステップS62乃至S64の処理と同様であるので、説明は省略する。
ステップS315において、ペア決定部231は、ステップS313で取得された解析テーブルに登録されているau_divide_flagが0であるか、または、au_divide_idxがau_divide_num-1であるかどうかを判定する。ステップS315でau_divide_flagが0であるか、または、au_divide_idxがau_divide_num-1であると判定された場合、即ち、処理対象のAUが非分割符号化のAUまたは最後分割AUである場合、処理はステップS316に進む。
ステップS316において、ペア決定部231は、disp_au_idxが−1であるかどうかを判定する。ステップS316でdisp_au_idxが−1である場合、即ち符号化されていない非分割符号化のAUまたは最後分割AUが初めて発見された場合、処理はステップS317に進む。
ステップS317において、ペア決定部231は、処理対象のAUを符号化対象のAUのペアの1つに決定し、disp_au_idxをidxに設定して、処理をステップS320に進める。
一方、ステップS316でdisp_au_idxが−1であると判定された場合、即ち符号化されていない非分割符号化のAUまたは最後分割AUが既に発見されている場合、処理はステップS320に進む。
一方、ステップS315でau_divide_flagが0ではなく、かつ、au_divide_idxがau_divide_num-1ではないと判定された場合、即ち、符号化対象のAUが分割符号化の最後分割AU以外のAUである場合、処理はステップS318に進む。
ステップS318において、ペア決定部231は、non_disp_au_idxが−1であるかどうかを判定する。ステップS318でnon_disp_au_idxが−1である場合、即ち符号化されていない分割符号化の最後分割AU以外のAUが初めて発見された場合、処理はステップS319に進む。
ステップS319において、ペア決定部231は、処理対象のAUを符号化対象のAUのペアの1つに決定し、non_disp_au_idxをidxに設定して、処理をステップS320に進める。
一方、ステップS318でnon_disp_au_idxが−1ではないと判定された場合、即ち符号化されていない分割符号化の最後分割AU以外のAUが既に発見されている場合、処理はステップS320に進む。
ステップS320において、ペア決定部231は、idxを1だけインクリメントし、処理をステップS312に戻す。そして、idxがmax_au_idx以上になるまで、即ち解析バッファ52に記憶されている全ての解析テーブルに対応するAUに対して、符号化されていない、非分割符号化のAUまたは最後分割AUと分割符号化の最後分割AU以外のAUとのペアの検出が行われるまで、ステップS312乃至S320の処理が繰り返される。
これにより、符号化されていない、最もau_idxが小さい非分割符号化のAUまたは最後分割AUと分割符号化の最後分割AU以外のAUとのペアが検出される。但し、分割符号化の最後分割AU以外のAUは検出されない場合もある。この場合、non_disp_au_idxは−1のままである。
一方、ステップS312でidxがmax_au_idx以上であると判定された場合、ペア決定部231は、au_idxがdisp_au_idxおよびnon_disp_au_idxである解析テーブルと、その解析テーブルに対応する画像をペア符号化部232に供給する。なお、non_disp_au_idxが−1であり、au_idxがnon_disp_au_idxである解析テーブルがない場合には、au_idxがdisp_au_idxである解析テーブルと、その解析テーブルに対応する画像のみをペア符号化部232に供給する。そして、処理は図23のステップS284に戻り、ステップS285に進む。
図25は、図23のステップS285のペア符号化処理を説明するフローチャートである。
図25のステップS341において、ペア符号化部232の設定部253(図22)は、def_disp_win_left_offset, def_disp_win_right_offset、およびdef_disp_win_top_offsetを0に設定し、def_disp_win_bottom_offsetを復号画像の垂直方向の画素数をSubHeightCで除算した値に設定する。SubHeightCは、垂直方向の画素数を1/SubHeightC倍の値で示すために、HEVC方式で定義されるパラメータである。従って、復号時には、def_disp_win_bottom_offsetにSubHeightCが乗算された値が、復号画像の下端から表示領域の下端までの画素数とされる。
ステップS342において、設定部253は、ステップS341で設定されたdef_disp_win_bottom_offset, def_disp_win_top_offset, def_disp_win_left_offset、およびdef_disp_win_right_offsetと、default_display_window_flagとしての1を含むVUIが配置されたSPSとスライスヘッダをヘッダ部として設定する。また、設定部253は、必要に応じて、PPS等の他のパラメータセットもヘッダ部として設定する。
ステップS343において、設定部253は、ヘッダ部を符号化する。ステップS344において、画像合成部251は、符号化対象のAUのペアに対応する画像を合成する合成処理を行う。この合成処理の詳細は、後述する図26を参照して説明する。
ステップS345において、ペア符号化部232は、ステップS344の合成処理により生成された合成画像を符号化し、処理を図23のステップS285に戻り、ステップS286に進める。
図26は、図25のステップS344の合成処理を説明するフローチャートである。
図26のステップS361において、画像合成部251は、座標xおよび座標yを0に設定する。ステップS362において、画像合成部251は、ペア決定部231から供給される、au_idxがdisp_au_idxである解析テーブルに登録されているframe_idxで識別される、非分割符号化のAUまたは最後分割AUに対応する画像をdisp_frameとする。
ステップS363において、画像合成部251は、ペア決定部231で設定されたnon_disp_au_idxが−1であるかどうかを判定する。ステップS363でnon_disp_au_idxが−1ではないと判定された場合、即ちdisp_frameに対応するAUとペアを構成するAUの画像がペア決定部231から供給されている場合、処理はステップS364に進む。
ステップS364において、画像合成部251は、ペア決定部231から供給される、au_idxがnon_disp_au_idxである解析テーブルに登録されているframe_idxで識別される、分割符号化の最後分割AU以外のAUに対応する符号化対象の画像をnon_disp_frameとする。そして、処理はステップS365に進む。
一方、ステップS362でnon_disp_au_idxが−1であると判定された場合、即ちdisp_frameのみがペア決定部231から供給される場合、処理はステップS365に進む。
ステップS365において、画像合成部251は、座標xが符号化対象の画像の水平方向の画素数widthより小さいかどうかを判定する。ステップS365で座標xが符号化対象の画像の水平方向の画素数widthより小さいと判定された場合、即ち、座標xが、生成する合成画像内の列の画素のx座標である場合、処理はステップS366に進む。
ステップS366において、画像合成部251は、座標yが符号化対象の画像の垂直方向の画素数heightより小さいかどうかを判定する。ステップS366で座標yが符号化対象の画像の垂直方向の画素数heightより小さいと判定された場合、即ち、座標yが、生成する合成画像内の上半分の行の画素のy座標である場合、処理はステップS367に進む。
ステップS367において、画像合成部251は、disp_frameの座標(x,y)の画素値を、生成する合成画像の座標(x,y)の画素値にする。ステップS368において、画像合成部251は、座標yを1だけインクリメントし、処理をステップS366に戻す。そして、座標yが符号化対象の画像の垂直方向の画素数height以上になるまで、即ち、座標yが、生成する合成画像内の上半分の最も下の行の画素のy座標を表すまで、ステップS366乃至S368の処理を繰り返す。これにより、合成画像の座標xの列の上半分の各画素の画素値が、その画素と同一の位置のdisp_frameの画素値と同一になる。
一方、ステップS366で座標yが符号化対象の画像の垂直方向の画素数height以上であると判定された場合、即ち、座標yが、生成する合成画像内の上半分より下の行の画素のy座標である場合、処理はステップS369に進む。
ステップS369において、画像合成部251は、座標yが符号化対象の画像の垂直方向の画素数heightの2倍より小さいかどうかを判定する。ステップS369で座標yが符号化対象の画像の垂直方向の画素数heightの2倍より小さいと判定された場合、即ち、座標yが、生成する合成画像内の下半分の画素のy座標である場合、処理はステップS370に進む。
ステップS370において、画像合成部251は、non_disp_au_idxが−1であるかどうかを判定する。ステップS370でnon_disp_au_idxが−1ではないと判定された場合、即ちdisp_frameに対応するAUとペアを構成するAUの画像がペア決定部231から供給されている場合、処理はステップS371に進む。
ステップS371において、画像合成部251は、non_disp_frameの座標(x,y-height)の画素値を、生成する合成画像の座標(x,y)の画素値にする。
一方、ステップS370でnon_disp_au_idxが−1であると判定された場合、即ちdisp_frameのみがペア決定部231から供給される場合、処理はステップS372に進む。ステップS372において、画像合成部251は、生成する合成画像の座標(x,y)の画素値を0にする。
ステップS371またはS372の処理後、処理はステップS368に進み、座標yが1だけインクリメントされ、処理はステップS366に戻る。そして、座標yが符号化対象の画像の垂直方向の画素数heightの2倍以上であると判定されるまで、即ち、座標yが、生成する合成画像内の最も下の行の画素のy座標を表すまで、ステップS366およびS368乃至S372の処理が繰り返される。これにより、合成画像の座標xの列の下半分の各画素の画素値が、その画素よりheightだけ上の位置のnon_disp_frameの画素の画素値または0となる。
一方、ステップS369で座標yが符号化対象の画像の垂直方向の画素数heightの2倍以上であると判定された場合、即ち、座標yが、生成する合成画像内の最も下の行の画素のy座標を表している場合、処理はステップS373に進む。
ステップS373において、画像合成部251は、座標xを1だけインクリメントし、座標yを0に戻す。そして、処理はステップS365に戻り、座標xが符号化対象の画像の水平方向の画素数width以上になるまで、即ち、座標xが、生成する合成画像内の最も右の列の画素のx座標を表すまで、ステップS365乃至S373の処理が繰り返される。これにより、上半分がdisp_frameであり、下半分がnon_disp_frameまたは黒画像である合成画像が生成される。
ステップS365で座標xが符号化対象の画像の水平方向の画素数width以上であると判定された場合、即ち、座標xが、生成する合成画像内の最も右の列の画素のx座標を表している場合、処理は図25のステップS344に戻り、ステップS345に進む。
なお、上述した説明では、非分割符号化のAUまたは最後分割AUに対応する画像の下部に、分割符号化の最後分割AU以外のAUに対応する画像または黒画像が合成されるようにしたが、合成位置は、下部に限定されない。
例えば、図27に示すように、非分割符号化のAUまたは最後分割AUに対応する画像の上部に、分割符号化の最後分割AU以外のAUに対応する画像または黒画像が合成されるようにしてもよい。
この場合、復号画像の上半分が非表示領域に指定され、下半分が表示領域に指定される。具体的には、def_disp_win_top_offsetが、復号画像の垂直方向の画素数をSubHeightCで除算した値に設定される。また、def_disp_win_bottom_offset,def_disp_win_left_offset、およびdef_disp_win_right_offsetが0に設定される。
また、図28に示すように、非分割符号化のAUまたは最後分割AUに対応する画像の左側に、分割符号化の最後分割AU以外のAUに対応する画像または黒画像が合成されるようにしてもよい。
この場合、復号画像の左半分が非表示領域に指定され、右半分が表示領域に指定される。具体的には、def_disp_win_left_offsetが、復号画像の水平方向の画素数をSubWidthCで除算した値に設定される。また、def_disp_win_bottom_offset,def_disp_win_top_offset、およびdef_disp_win_right_offsetが0に設定される。なお、SubWidthCは、水平方向の画素数を1/SubWidthC倍の値で示すために、HEVC方式で定義されるパラメータである。
さらに、図29に示すように、非分割符号化のAUまたは最後分割AUに対応する画像の右側に、分割符号化の最後分割AU以外のAUに対応する画像または黒画像が合成されるようにしてもよい。
この場合、復号画像の左半分が表示領域に指定され、右半分が非表示領域に指定される。具体的には、def_disp_win_right_offsetが、復号画像の水平方向の画素数をSubWidthCで除算した値に設定される。また、def_disp_win_bottom_offset,def_disp_win_top_offset、およびdef_disp_win_left_offsetが0に設定される。
なお、図示は省略するが、第2実施の形態における復号装置の構成は、復号部152が、復号画像のうちのdef_disp_win_top_offset ,def_disp_win_bottom_offset,def_disp_win_left_offset、およびdef_disp_win_right_offsetで指定される表示領域のみを表示部153に供給する点を除いて、図16の構成と同一である。
即ち、第2実施の形態における復号装置では、画面並べ替えバッファ179が、フィルタ176から供給される画像のうちの、def_disp_win_top_offset ,def_disp_win_bottom_offset,def_disp_win_left_offset、およびdef_disp_win_right_offsetで指定される表示領域のみをフレーム単位で記憶する。
なお、第2実施の形態では、符号化方式がHEVC方式であったが、AVC方式であるようにすることもできる。この場合、default_display_window_flag,def_disp_win_top_offset ,def_disp_win_bottom_offset,def_disp_win_left_offset,def_disp_win_right_offset, SubWidthC, SubHeightCが、frame_cropping_flag ,frame_crop_top_offset , frame_crop_bottom_offset,frame_crop _left_offset, frame_crop_right_offset, CropUnitX, CropUnitYに代わる。また、可逆符号化としては、算術符号化(例えば、CABAC(Context-Adaptive Binary Arithmetic Coding)など)だけでなく、可変長符号化(例えば、CAVLC(Context-Adaptive Variable Length Coding)など)も用いることができる。
<第3実施の形態>
(本開示を適用したコンピュータの説明)
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
図30は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
コンピュータ900において、CPU(Central Processing Unit)901,ROM(Read Only Memory)902,RAM(Random Access Memory)903は、バス904により相互に接続されている。
バス904には、さらに、入出力インタフェース905が接続されている。入出力インタフェース905には、入力部906、出力部907、記憶部908、通信部909、及びドライブ910が接続されている。
入力部906は、キーボード、マウス、マイクロフォンなどよりなる。出力部907は、ディスプレイ、スピーカなどよりなる。記憶部908は、ハードディスクや不揮発性のメモリなどよりなる。通信部909は、ネットワークインタフェースなどよりなる。ドライブ910は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア911を駆動する。
以上のように構成されるコンピュータ900では、CPU901が、例えば、記憶部908に記憶されているプログラムを、入出力インタフェース905及びバス904を介して、RAM903にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ900(CPU901)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア911に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
コンピュータ900では、プログラムは、リムーバブルメディア911をドライブ910に装着することにより、入出力インタフェース905を介して、記憶部908にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部909で受信し、記憶部908にインストールすることができる。その他、プログラムは、ROM902や記憶部908に、あらかじめインストールしておくことができる。
なお、コンピュータ900が実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
また、本明細書に記載された効果はあくまで例示であって限定されるものではなく、他の効果があってもよい。
さらに、本開示の実施の形態は、上述した実施の形態に限定されるものではなく、本開示の要旨を逸脱しない範囲において種々の変更が可能である。
例えば、符号化対象の画像のピクチャタイプが、一般的にビット発生量が大きくなるIピクチャである場合、分割符号化を行うようにしてもよい。
また、分割符号化のAUの数は、分割領域の数と同一であってもよい。この場合、量子化ビットレートの異なる符号化は行われない。
なお、本開示は、以下のような構成もとることができる。
(1)
画像を複数のアクセス単位に分割して符号化し、前記複数のアクセス単位の符号化ストリームを生成する符号化部と、
前記符号化部により生成された前記複数のアクセス単位の符号化ストリームのうちの、最後のアクセス単位以外のアクセス単位の符号化ストリームを復号することにより得られる復号画像を表示しないことを示す非表示情報を設定する設定部と
を備える符号化装置。
(2)
前記符号化部は、前記画像と、前記画像より1時刻前の前画像との差分が閾値より大きい場合、前記画像を前記複数のアクセス単位に分割して符号化する
ように構成された
前記(1)に記載の符号化装置。
(3)
前記符号化部は、前記画像のピクチャタイプがIピクチャである場合、前記画像を前記複数のアクセス単位に分割して符号化する
ように構成された
前記(1)に記載の符号化装置。
(4)
前記画像を複数の分割領域に分割し、各分割領域を含む複数の分割画像を生成する画像変更部
をさらに備え、
前記符号化部は、前記画像変更部により生成された前記分割画像をアクセス単位として符号化する
ように構成された
前記(1)乃至(3)のいずれかに記載の符号化装置。
(5)
前記符号化部は、前記複数の分割画像のうちの最初の分割画像をイントラ符号化する
ように構成された
前記(4)に記載の符号化装置。
(6)
前記画像変更部は、前記最初の分割画像を構成する前記分割領域以外の領域の画素値を固定値にする
ように構成された
前記(5)に記載の符号化装置。
(7)
前記符号化部は、前記複数の分割画像のうちの最初以外の分割画像内の前記分割領域以外の領域を、スキップモードで符号化する
ように構成された
前記(6)に記載の符号化装置。
(8)
前記符号化部は、前記複数の分割画像のうちの最後の分割画像の前記符号化ストリームを復号することにより得られる前記復号画像を参照して、前記画像を前記最後のアクセス単位として符号化する
ように構成された
前記(7)に記載の符号化装置。
(9)
前記画像変更部は、前記最後のアクセス単位以外のアクセス単位に対応する分割画像と他の画像とを合成して合成画像を生成し、
前記符号化部は、前記画像変更部により生成された前記合成画像をアクセス単位として符号化し、
前記非表示情報は、前記最後のアクセス単位以外のアクセス単位の符号化ストリームを復号することにより得られる合成画像のうちの、前記分割画像を表示しないことを示す
ように構成された
前記(4)乃至(8)のいずれかに記載の符号化装置。
(10)
前記非表示情報は、前記最後のアクセス単位以外のアクセス単位の符号化ストリームを復号することにより得られる合成画像のうちの、前記分割画像の領域以外の領域を表示領域として指定する情報である
ように構成された
前記(9)に記載の符号化装置。
(11)
前記画像変更部は、前記画像と、他の画像の分割画像または所定の画像とを合成して、最後のアクセス単位に対応する合成画像を生成し、
前記符号化部は、前記画像変更部により生成された前記最後のアクセス単位に対応する合成画像を前記最後のアクセス単位として符号化し、
前記設定部は、前記最後のアクセス単位の符号化ストリームを復号することにより得られる合成画像のうちの、前記画像の領域を表示領域として指定する表示情報を設定する
ように構成された
前記(9)または(10)に記載の符号化装置。
(12)
前記設定部は、前記最後のアクセス単位の符号化ストリームを復号することにより得られる復号画像を表示することを示す表示情報を設定する
ように構成された
前記(1)乃至(8)のいずれかに記載の符号化装置。
(13)
符号化装置が、
画像を複数のアクセス単位に分割して符号化し、前記複数のアクセス単位の符号化ストリームを生成する符号化ステップと、
前記符号化ステップの処理により生成された前記複数のアクセス単位の符号化ストリームのうちの、最後のアクセス単位以外のアクセス単位の符号化ストリームを復号することにより得られる復号画像を表示しないことを示す非表示情報を設定する設定ステップと
を含む符号化方法。