【発明が解決しようとする課題】
【0044】
本発明の発明者のうちの一部の者は、処理負荷を分散することができる映像符号化装置を提案した(特願2013−185994)。
【0045】
なお、特許文献1には、第1符号化部と第2符号化部とを備えた映像符号化装置が記載されている。しかし、特許文献1には、映像符号化装置における負荷を分散するための技術は開示されていない。
【0046】
図18は、処理負荷を分散することができる映像符号化装置の一例を示すブロック図である。
図18に示す映像符号化装置において、前段映像符号化器102 が、16×16画素のLCU サイズのCTU と等価であるマクロブロックをサポートするAVC(Advanced Video Coding)映像符号化器である。前段映像符号化器102 は、非特許文献1に記載されたH.264/AVC 規格に基づく映像符号化器である。後段映像符号化器105が、16×16画素だけでなく32×32画素および64×64画素のCTU をサポートするHEVC映像符号化器である。すなわち、後段映像符号化器105は、H.265/HEVC規格に基づく映像符号化器である。つまり、前段映像符号化器102 が対応できる最大LCU サイズは、後段映像符号化器105 が対応できる最大LCUサイズ以下である。
【0047】
図18に示す映像符号化装置は、サイズ拡張器101 、前段映像符号化器102 、バッファ103 、符号化データ変換器1040、および後段映像符号化器105 を備える。
【0048】
サイズ拡張器101は、入力画像src の幅src_pic_width および高さsrc_pic_heightを16の倍数にサイズ拡張する。例えば、(src_pic_width、src_pic_height) = (1920, 1080) の場合、拡張された入力画像の幅e_src_pic_width と高さe_src_pic_heightは、(e_src_pic_width、e_src_pic_height) = (1920, 1088)となる。なお、サイズ拡張された領域の画素値は、入力画像の境界の画素値のコピーでもよいし、予め定められた画素値(例えば、グレーを示す128 )でもよい。
【0049】
サイズ拡張器101 は、サイズ拡張された入力画像を前段映像符号化器102 およびバッファ103 に供給する。前段映像符号化器102 は、サイズ拡張された入力画像をH.264/AVC 方式で符号化する。
【0050】
前段映像符号化器102 の構成と動作を説明する。
【0051】
前段映像符号化器102 は、周波数変換/量子化器1021、逆量子化/逆周波数変換器1022、バッファ1023、予測器1024、および推定器(前段推定器)1025を備える。
【0052】
推定器1025は、サイズ拡張された入力画像とバッファ1023に格納された再構築画像とを用いて、サイズ拡張された入力画像を構成する各マクロブロックのAVC 符号化データを決定する。本明細書において、AVC 符号化データ(AVCMB )は、
図19に示される、マクロブロックに対応する16×16画素領域のDCT 係数を除く符号化データ(mb_type、sub_mb_type、ref_idx_l0、ref_idx_l1、mv_l0、mv_l1、intra_lumaNxN_pred、transform_size_8x8_flag )を含む。ここで、mb_type およびsub_mb_type は、それぞれ、非特許文献1のTable 7-11、Table 7-13、Table 7-14で定義されるマクロブロックの符号化モード、および非特許文献1のTable 7-17およびTable 7-18で定義されるサブマクロブロックの符号化モードを示す。また、ref_idx_lx (x=0/1)、mv_lx 、intra_lumaNxN_pred、およびtransform_size_8x8_flag は、それぞれ、参照ピクチャリストx の参照ピクチャインデックス、参照ピクチャリストx の動きベクトル、輝度イントラ予測方向、および、マクロブロックが8×8DCT で符号化されたか否かのフラグを示す。
【0053】
上述したように、マクロブロックが16×16画素であり、さらに、AVC 方式における最小処理単位が4×4画素であることに着目すると、各マクロブロックにおける各AVC 符号化データの位置は、マクロブロック中の16×16ブロックアドレスb8(0≦b8≦3)(
図20における上段)と、8×8ブロック中のブロックアドレスb4(0≦b4≦3)(
図20における下段)との組によって定義される。例えば、マクロブロック内で(x,y)=(4,4) の位置のintra_lumaNxN_predは、(b8,b4)=(0,1) となり、intra_lumaNxN_pred[0][3]に格納することができる。
【0054】
推定器1025は、決定した各マクロブロックのAVC 符号化データを予測器1024および符号化データ変換器1040に出力する。
【0055】
予測器1024は、推定器1025が決定したmb_type シンタクス値、sub_mb_type シンタクス値、ref_idx_l0シンタクス値、ref_idx_l1シンタクス値、mv_l0 シンタクス値、mv_l1 シンタクス値、および、intra_lumaNxN_predシンタクス値に基づいて、各マクロブロックのサイズ拡張された入力画像信号に対する予測信号を生成する。予測信号は、上述したイントラ予測またはフレーム間予測に基づいて生成される。
【0056】
H.264/AVC 方式のイントラ予測については、非特許文献1に記載されているように、mb_type によって定義される、3 種類のブロックサイズのイントラ予測モードIntra_4x4 、Intra_8x8 、Intra_16x16 がある。
【0057】
図21(a),(c) を参照すると、Intra_4x4 とIntra_8x8 とはそれぞれ4×4ブロックサイズと8×8ブロックサイズのイントラ予測であることがわかる。ただし、図中の丸(〇)はイントラ予測の参照画素、つまり、バッファ1023に格納された再構築画像を示す。
【0058】
Intra_4x4 のイントラ予測では、再構築画像の周辺画素をそのまま参照画素とし、
図21(b) に示す9 種類の方向に参照画素をパディング(外挿)して予測信号が形成される。Intra_8x8 のイントラ予測では、
図21(c) における右矢印の直下に記載されているローパスフィルタ(1/2 ,1/4 ,1/2 )によって再構築画像の周辺画素が平滑化された画素を参照画素として
図21(b) に示す9 種類の方向に参照画素を外挿して予測信号が形成される。
図21(b) において、矢印は参照方向(予測方向とは逆)を示す。なお、
図21(b) において、数字は、予測モード番号を示す。
【0059】
図22(a) を参照すると、Intra_16x16 は16×16ブロックサイズのイントラ予測であることがわかる。
図21に示された例と同様に、
図22において、図中の丸(〇)はイントラ予測の参照画素、つまり、バッファ1023に格納された再構築画像を示す。Intra_16x16 のイントラ予測では、再構築画像の周辺画素をそのまま参照画素として、
図22(b) に示す4 種類の方向に参照画素を外挿して予測信号が形成される。
【0060】
H.264/AVC 方式のフレーム間予測については、
図23に記載されているように、mb_type によって定義される、16×16,16×8 ,8×16 Tree の予測形状がある。マクロブロックがTreeの場合、各8×8サブマクロブロックは、sub_mb_type によって定義される、8×8,8×4, 4×8,4×4のいずれかの予測形状となる。本明細書では、説明を簡略化するために、mb_type がTreeの場合(P_8x8またはB_8x8)の場合、各8×8サブマクロブロックは8×8だけに限定されるとする。
【0061】
周波数変換/量子化器1021は、推定器1025が決定したmb_type シンタクス値およびtransform_size_8x8_flag シンタクス値に基づいて、サイズ拡張された入力画像信号から予測信号を減じた予測誤差画像を周波数変換する。
【0062】
さらに、周波数変換/量子化器1021は、周波数変換した予測誤差画像(周波数変換係数)を量子化する。以下、量子化された周波数変換係数を変換量子化値という。
【0063】
逆量子化/逆周波数変換器1022は、変換量子化値を逆量子化する。さらに、逆量子化/逆周波数変換器1022は、逆量子化した周波数変換係数を逆周波数変換する。逆周波数変換された再構築予測誤差画像は、予測信号が加えられて、バッファ1023に供給される。バッファ1023は、再構築画像を格納する。
【0064】
上述した動作に基づいて、前段映像符号化器102はサイズ拡張された入力画像信号を符号化する。
【0065】
符号化データ変換器1040は、各マクロブロックのAVCMBを、
図24に示すマクロブロックに対応する16×16画素の領域のHEVC符号化データ(cu_size ,tu_size ,pred_mode_flag,part_mode ,ref_idx_l0,ref_idx_l1,mv_l0 ,mv_l1 ,intra_lumaNxN_pred,intra_chroma_pred )であるHEVCCBに変換する。ただし、ここで、cu_size およびtu_size は、それぞれ、CUサイズおよびTUサイズを示す。
【0066】
図25は、I_SLICE のマクロブロックのAVC 符号化データからHEVCCBへの変換ルールを示す説明図である。
図26は、P_SLICE のマクロブロックのAVC 符号化データからHEVCCBへの変換ルールを示す説明図である。
図27は、B_SLICE のマクロブロックのAVC 符号化データからHEVCCBへの変換ルールを示す説明図である。
図25〜
図27において、V は垂直方向を意味し、H は水平方向を意味する。また、各行は、各々のmb_typeおよびintra_lumaNxN_predに対する変換ルールを示す。
【0067】
HEVC方式において、LCUの最小サイズが16×16画素、SCUの最小サイズが8×8画素、最小処理単位が4×4画素であることに着目すると、16×16画素単位でHEVC符号化データを管理できる。各16×16画素におけるHEVC符号化データの位置は、AVC 符号化データと同様に、マクロブロック中の8×8ブロックアドレスb8(0≦b8≦3)と8×8ブロック中のブロックアドレスb4(0≦b4≦3)の組によって定義できる。
【0068】
例えば、CUサイズが16の場合、各16×16画素におけるHEVC符号化データのcu_size[b8] (0≦b8≦3)は、すべて16となる。
【0069】
図25に示すI_SLICE マッピング、
図26に示すP_SLICE マッピング、および
図27に示すB_SLICE マッピングのそれぞれには、符号化データ変換器1040による、各AVCMBをHEVCCBにマッピング(変換)するルールがピクチャタイプ別に示されている。
【0070】
続いて、符号化データ変換器1040は、
図28に示される、隣接する4個のHEVCCBのすべてのpart_mode が2N×2Nであり、かつ、すべてのcu_size 、pred_mode_flag、ならびに、動き情報(ref_idx_l0,ref_idx_l1,mv_l0 およびmv_l1 )が同一である場合、4個のHEVCCBを併合する。具体的には、4個のHEVCCBのcu_size を32に更新する。
【0071】
さらに、符号化データ変換器1040は、
図29に示される、隣接する16個のHEVCCBのすべてのpart_mode が2N×2Nであり、かつ、すべてのcu_size 、pred_mode_flag、および、動き情報(ref_idx_l0,ref_idx_l1,mv_l0 およびmv_l1 )が同一である場合、16個のHEVCCBを併合する。具体的には、16個のHEVCCBのcu_size を64に更新する。
【0072】
後段映像符号化器105 は、符号化データ変換器1040から供給されるHEVC符号化データに基づいて、バッファ103 から供給されるサイズ拡張された入力画像をHEVC方式で符号化し、そのビットストリームを出力する。なお、後段映像符号化器105 は、入力画像src を、SCU の倍数ではなく、前段映像符号化器102 のマクロブロックサイズの倍数とする。画像境界に対する前段映像符号化器102 の符号化データの信頼度を高めるためである。
【0073】
後段映像符号化器105 の構成と動作を説明する。
【0074】
後段映像符号化器105 は、周波数変換/量子化器1051、逆量子化/逆周波数変換器1052、バッファ1053、予測器1054、推定器(後段推定器)1055、およびエントロピー符号化器1056を備える。
【0075】
後段映像符号化器105 における推定器1055は、CTU 毎に、split_cu_flag を、HEVC符号化データのcu_size に従って確定できる。例えば、cu_size=64の場合、CUDepth=0 のsplit_cu_flag を0 にすればよい。同様に、HEVC符号化データのpred_mode_flagおよびpart_mode に従って、CUのイントラ予測/インター予測およびPU分割形状を確定できる。もちろん、HEVC符号化データのpred_mode_flagおよびpart_mode に従って、PUのイントラ予測方向、および動きベクトルなどを確定できる。つまり、背景技術の推定器のように、ラグランジュ乗数λに基づいた符号化コストJ を最小とする符号化パラメータを網羅的に探索する必要がない。
【0076】
予測器1054は、推定器1055が決定したsplit_cu_flag シンタクス値、pred_mode_flagシンタクス値、part_mode シンタクス値、split_tu_flag シンタクス値、イントラ予測方向、および動きベクトルなどに基づいて、各CUの入力画像信号に対する予測信号を生成する。予測信号は、上述したイントラ予測もしくはフレーム間予測に基づいて生成される。
【0077】
周波数変換/量子化器1051は、推定器1055がHEVC符号化データのtu_size に従って確定したTU分割形状に基づいて、入力画像信号から予測信号を減じた予測誤差画像を周波数変換する。
【0078】
さらに、周波数変換/量子化器1051は、周波数変換した予測誤差画像(周波数変換係数)を量子化する。
【0079】
エントロピー符号化器1056は、推定器1055が確定したsplit_cu_flag シンタクス値、pred_mode_flagシンタクス値、part_mode シンタクス値、split_tu_flag シンタクス値、イントラ予測方向の差分情報、動きベクトルの差分情報、および変換量子化値をエントロピー符号化する。
【0080】
逆量子化/逆周波数変換器1052は、変換量子化値を逆量子化する。さらに、逆量子化/逆周波数変換器1052は、逆量子化した周波数変換係数を逆周波数変換する。逆周波数変換された再構築予測誤差画像は、予測信号が加えられて、バッファ1053に供給される。バッファ1053は、再構築画像を格納する。
【0081】
上述した動作に基づいて、後段映像符号化器105 は、符号化データ変換器1040から供給されるHEVC符号化データに基づいて、バッファ103 から供給されるサイズ拡張された入力画像をHEVC方式で符号化し、そのビットストリームを出力する。
【0082】
図30のフローチャートを参照して、映像符号化装置の動作を説明する。
【0083】
ステップS101において、サイズ拡張器101は、入力画像を前段映像符号化器102 のマクロブロックサイズである16の倍数にサイズ拡張する。
【0084】
ステップS102において、前段映像符号化器102 は、サイズ拡張された入力画像をAVC 方式で符号化する。
【0085】
ステップS103において、符号化データ変換器1040は、サイズ拡張された入力画像の各マクロブロックのAVCMB をHEVCCBに変換し、さらにHEVCCBの併合を行う。
【0086】
ステップS104において、後段映像符号化器105 は、符号化データ変換器1040から供給されるHEVC符号化データに基づいて、バッファ103 から供給されるサイズ拡張された入力画像をHEVC方式で符号化し、ビットストリームを出力する。
【0087】
上記の映像符号化装置において、split_cu_flag シンタクス値、pred_mode_flagシンタクス値、part_mode シンタクス値、split_tu_flag シンタクス値、イントラ予測方向、および動きベクトルなどを決定する映像符号化処理の負荷が前段映像符号化器102 と後段映像符号化器105 とに分配され、映像符号化処理の負荷の集中が緩和される。
【0088】
なお、符号化データ変換器1040は、隣接する4個のHEVCCBが以下に示す32×32 2N×N条件を全て満たす場合、4個のHEVCCBのcu_size およびpart_mode をそれぞれ32および2N×N に更新してもよい。
【0089】
[32×32 2N×N条件]
・すべてのpart_mode が2N×2Nである
・すべてのcu_size が同一である
・すべてのpred_mode_flagが0 である
・すべてのHEVCCB動き情報が同一でない
・上側2つのHEVCCB動き情報が同一である
・下側2つのHEVCCB動き情報が同一である
【0090】
また、符号化データ変換器1040は、隣接する4個のHEVCCBが以下に示す32×32 N×2N条件を全て満たす場合、4個のHEVCCBのcu_size およびpart_mode をそれぞれ32およびN×2N に更新してもよい。
【0091】
[32×32 N×2N条件]
・すべてのpart_mode が2N×2Nである
・すべてのcu_size が同一である
・すべてのpred_mode_flag が0 である
・すべてのHEVCCB動き情報が同一でない
・左側2つのHEVCCB動き情報が同一である
・右側2つのHEVCCB動き情報が同一である
【0092】
さらに、符号化データ変換器1040は、隣接する16個のHEVCCBが以下に示す64×64 2N×N 条件を全て満たす場合、16個のHEVCCBのcu_size およびpart_mode をそれぞれ64および2N×N に更新してもよい。
【0093】
[64×64 2N×N条件]
・すべてのpart_mode が2N×2Nである
・すべてのcu_size が同一である
・すべてのpred_mode_flagが0 である
・すべてのHEVCCB動き情報が同一でない
・上側8つのHEVCCB動き情報が同一である
・下側8つのHEVCCB動き情報が同一である
【0094】
また、符号化データ変換器1040は、隣接する16個のHEVCCBが以下に示す64×64 N×2N条件を全て満たす場合、16個のHEVCCBのcu_size およびpart_mode をそれぞれ64およびN×2N に更新してもよい。
【0095】
[64×64 N×2N条件]
・すべてのpart_mode が2N×2Nである
・すべてのcu_size が同一である
・すべてのpred_mode_flagが0 である
・すべてのHEVCCB動き情報が同一でない
・左側8つのHEVCCB動き情報が同一である
・右側8つのHEVCCB動き情報が同一である
【0096】
図21(b) に示すように、H.264/AVC 方式では、イントラ予測モードとして、8 種類の方向性予測とDC予測との計9 種類の予測モードがある。H.265/HEVC方式では、イントラ予測モードとして、33種類の方向性予測(
図11参照)とDC予測およびPlanar予測との計35種類の予測モードがある。また、H.265/HEVC方式では、Most probable mode(MPM )と呼ばれる符号化方式を用いることができる。MPM では、処理対象のPUに隣接するPUの予測方向、DC予測モードまたはPlanar予測モードが、処理対象のPUに適用される。
【0097】
上述したように、符号化データ変換器1040は、所定のルール(
図25〜
図27参照)に従って各AVCMBをHEVCCBに変換する。
図25〜
図27に示されているように、符号化データ変換器1040は、H.264/AVC 方式の予測モードを、H.265/HEVC方式の予測モードに変換する。
【0098】
H.264/AVC 方式における予測モードの種類はH.265/HEVC方式における予測モードの種類よりも少ないので、後段映像符号化器105 の符号圧縮効率(符号化効率)が低下するおそれがある。例えば、H.264/AVC 方式で頻繁に使われるPlanar予測がH.264/AVC 方式には存在しないため、符号化データ変換器1040は、Planar予測に変換しないことになる。なお、
図25〜
図27には、例外的に、H.264/AVC 方式でIntra_16x16においてPlane 予測(予測モード3)が行われた場合にはPlanar予測に変換されることが示されているが、その他の場合にPlanar予測は用いられない。
【0099】
本発明は、処理負荷を分散しつつ、符号化効率の低下を防止することができる映像符号化装置、映像符号化方法およびプログラムを提供することを目的とする。