動画像符号化装置、動画像復号化装置及びその符号化、復号化方法

【課題】H.264の復号化装置において、シーケンスの途中のピクチャから復号する場合でも正しい表示順で復号できるようにすることである。
【解決手段】POCタイプが「1」と判定され(S22、YES)、かつリカバリポイントSEIが検出された場合には(S26、YES)、フレーム番号オフセットFrameNumOffsetの初期値として最大フレーム番号MaxFrameNum(またはその整数倍の値)を設定する。これにより、リカバリポイントSEIのピクチャから復号する場合のPOCの相対値として正しい値を得ることができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ITU−T(International Telecommunication Union-Telecommunication Standardization Sector)及びISO(International Organization for Standardization)で標準化された動画像符号化方式であるH.264/MPEG4・AVCに基づく動画像符号化装置、動画像復号化装置及びその符号化、復号化方法に関する。
【背景技術】
【0002】
特許文献1には、ビットストリームを再生する場合に、SPS情報に続くIピクチャを最初に検出したときに、デコーダの初期化を行うことで、ランダム再生を容易に行えるようにすることが記載されている。
【0003】
特許文献2には、符号化データを任意の編集点で切り出す動画像符号化データ編集装置において、編集点以降の符号化データのヘッダ情報を、編集点を先頭とする内容に変更することで、任意の編集点から符号化データを切り出せるようにすることが記載されている。
【0004】
H.264/MPEG4・AVC勧告には、復号化装置側でのピクチャの表示順を表すPOC(Picture Order Count)が規定されている。POCの符号化方法にはPOCタイプ0、POCタイプ1、POCタイプ2の3種類の方法が規定されており、POCタイプ1で符号化されたPOCの復号処理は、H.264/MPEG4・AVC勧告の8.2.1.2において、以下のように規定されている。
【0005】
1.H.264/MPEG4・AVCの(8−6)式
The variable Frame Num Offset is derived as follows:
if( nal_unit_type==5 )
FrameNumOffset=0
else if( prevFrameNum>frame_num )
FrameNumOffset=prevFrameNumOffset+MaxFrameNum
else
FrameNumOffset=prevFrameNumOffset ・・・・・・式(1)
【0006】
上記の式(1)は、Frame Num Offsetを求めるものであり、以下のような処理である。
NALユニットタイプが「5」であれば、フレーム番号オフセットFrameNumOffsetを「0」に初期化する。NALユニットタイプが「5」でなく、かつ前回のフレーム番号が今回のフレーム番号より大きいければ、prevFrameNumOffsetに最大フレーム番号MaxFrameNumを加算した値を、Frame Num Offsetとして設定する。
【0007】
2.H.264/MPEG4・AVCの(8−7)式
The variable absFrameNum is derived as follows:
if( num_ref_frames_in_pic_order_cnt_cycle!=0 )
absFrameNum=FrameNumOffset+frame_num
else
absFrameNum=0
if( nal_ref_idc==0 &&absFrameNum>0)
absFrameNum=absFrameNum−1 ・・・・・・・・・式(2)
【0008】
上記の式(2)は、IDR(Instantaneous Decoding Refresh:瞬時復号更新)ピクチャを基準としたピクチャ数であるabsFrameNumを求めるものであり、以下のような処理である。
num_ref_frames_in_pic_order_cnt_cycleが「0」でなければ、FrameNumOffsetにフレーム番号frame_numを加算した値を、absFrameNumとする。num_ref_frames_in_pic_order_cnt_cycleが「0」であれば、absFrameNumを「0」にする。
参照ピクチャか否かを示すフラグnal_ref_idcが「0」で、かつabsFrameNumが0より大きいときには、absFrameNumから「1」減算した値をabsFrameNumに設定する。
【0009】
3.H.264/MPEG4・AVCの(8−8)式
When absFrameNum>0, picOrderCntCycleCnt and frameNumInPicOrderCnt Cycle are derived as follows:
if( absFrameNum>0 ) {
picOrderCntCycleCnt=(absFrameNum-1)/num_ref_frames_in_pic_ordercnt_cycle
frameNumInPicOrderCntCycle=(absFrameNum−1)%num_ref_frames_in_pic_order_cnt_cycle } ・・・・式(3)
上記の式(3)は、picOrderCntCycleCntと、frameNumInPicOrderCntCycleを求める処理である。
【0010】
4.H.264/MPEG4・AVCの(8−9)式
The variable expectedDeltaPerPicOrderCntCycle is derived as follows:
expectedDeltaPerPicOrderCntCycle=0
for( i=0; i<num_ref_frames_in_pic_order_cnt_cycle; i++)
expectedDeltaPerPicOrderCntCycle+=offset_for_ref_frame[ i ]・・式(4)
上記の式(4)は、expectedDeltaPerPicOrderCntCycleを求める処理である。変数iの値により定まるoffset_for_ref_frame[ i ]を求める処理である。
【0011】
5.H.264/MPEG4・AVCの(8−10)式
The variable expectedPicOrderCnt is derived as follows:
if( absFrameNum>0 ){
expectedPicOrderCnt=picOrderCntCycleCnt*expectedDeltaPerPicOrderCnt Cycle
for( i=0; i<=frameNumInPicOrderCntCycle; i++)
expectedPicOrderCnt=expectedPicOrderCnt+offset_for_ref_frame[ i ]
} else
expectedPicOrderCnt=0
if( nal_ref_idc==0)
expectedPicOrderCnt=expectedPicOrderCnt+offset_for_non_ref_pic
・・・・・・式(5)
【0012】
上記の式(5)の処理において、絶対フレーム番号absFrameNumが0より大であれば、picOrderCntCycleCntにexpectedDeltaPerPicOrderCnt Cycleを乗算した値が、expectedPicOrderCntとして求められる。さらに、そのexpectedPicOrderCntに、ピクチャのPOCの差分であるoffset_for_ref_frame[ i ]を加算した値をexpectedPicOrderCnとして求める。
【0013】
また、参照ピクチャか否かを示すフラグ nal_ref_idcが0であれば、expectedPicOrderCntに非参照フレームのPOCの差分offset_for_non_ref_picを加算した値を、expectedPicOrderCnとして求める。
【0014】
6.H.264/MPEG4・AVCの(8−11)式
The variables TopFieldOrderCnt or BottomFieldOrderCnt are derived as follows:
if(!field_pic_flag ) {
TopFieldOrderCnt=expectedPicOrderCnt+delta_pic_order_cnt[ 0 ]
BottomFieldOrderCnt=TopFieldOrderCnt+
offset_for_top_to_bottom_field+delta_pic_order_cnt[ 1 ]
} else if(!bottom_field_flag )
TopFieldOrderCnt=expectedPicOrderCnt+delta_pic_order_cnt[ 0 ]
else
BottomFieldOrderCnt=expectedPicOrderCnt+offset_for_top_to_bottom_field+delta_pic_order_cnt[0] ・・・・・・式(6)
【0015】
上記の式(6)の処理は、「!field_pic_flag」、つまりフィールドスライスでなければ、expectedPicOrderCntとdelta_pic_order_cnt[ 0 ]を加算した値を、TopFieldOrderCntとして求める。
なお、符号化ストリームから復号化装置が知り得る情報は以下の通りである。
【0016】
NALユニットの種類を示すnal_unit_type、フレーム番号frame_num、最大フレーム番号MaxFrameNum、POCの導出に使用されるnum_ref_frames_in_pic_order_cnt_cycle、nal_ref_idc、POCタイプ1のPOCの導出に使用されるoffset_for_ref_frame[ i ]、offset_for_non_ref_pic, field_pic_flag、POCの計算に使用されるdelta_pic_order_cnt[ 0 ]、delta_pic_order_cnt[ 1 ]、bottom_field_flag。
【特許文献1】特開2007−318615号公報
【特許文献2】特開2007−67842号公報
【非特許文献1】Ye-Kui Wang, 他1名, JVT-F050 POC Recovery in Random Access Point SEI Message, Tampere University of Technology and Nokia Corporation.
【発明の開示】
【発明が解決しようとする課題】
【0017】
H.264/MPEG4・AVCにおいては、復号開始可能なピクチャとして、以下の2種類が規定されている。
IDR(Instantaneous Decoding Refresh:瞬時復号更新)ピクチャ:Iピクチャであり、シーケンスの最初のピクチャ。
【0018】
リカバリポイントSEI(Recovery Point SEI)が付与されたピクチャ:シーケンスの途中のピクチャにリカバリポイントSEIは付与され、シーケンスの途中であっても、このピクチャから引き込み可能であることを示す。
【0019】
H.264/MPEG4・AVC勧告の8.2.1.2のPOCタイプ1の復号においては、IDRピクチャから復号を開始した場合の処理は規定されている。しかしながら、リカバリポイントSEIを用いたランダムアクセス時(符号化ストリームの途中から復号するとき)は、POCタイプ1のPOCを上記の処理で復号しても、POCの値がピクチャの表示順と一致しない場合がある。
【0020】
例えば、最大フレーム番号MaxFrameNum=16、num_ref_frames_in_pic_order_cnt_cycle=15とする。IDRピクチャから数えて30フレーム目に、引き込み可能ピクチャとしてリカバリポイントSEIが挿入されているとする。また、変数iと、offset_for_ref_frame[i] (i=0・・num_ref_frames_in_pic_order_cnt_cycle-1) は、図8に示すような関係であるとする。さらに、簡単のために、delta_pic_order_cnt[0]、delta_pic_order_cnt[1]は常に「0」とする。また、IDRピクチャからリカバリポイントSEIのピクチャの間に非参照ピクチャは存在しないものとする。
【0021】
この場合、引き込み可能ピクチャのフレーム番号は、IDRピクチャフレーム枚数の最大フレーム番号MaxFrameNumによる剰余の値であるので、30枚目のピクチャのスライスヘッダに含まれるフレーム番号frame_numフィールドの値は、30 mod 16、すなわち 「14」である。
【0022】
IDRピクチャから復号した場合には、式(2)より絶対フレーム番号absFrameNumは「30」となる。そして、式(3)のpicOrderCntCycleCnt及びframeNumInPicOrderCntCycleに上記の値を代入することにより、
picOrderCntCycleCnt=(30−1)/15=1
frameNumInPicOrderCntCycle=(30−1)%15=14
となる。この場合のトップフィールドのPOCであるTopFieldOrderCntは式(1)〜(6)を用い
expectedDeltaPerPicOrderCntCycle=27
expectedPicOrderCnt=picOrderCntCycleCnt*picOrderCntCycleCnt+Σoffset_for_ref_frame[i](i=0…14)=54
となる。
【0023】
他方、リカバリポイントSEIが付与された30枚目のピクチャから復号を開始する場合には、ピクチャ単位でデコーダ側で取得可能な情報はフレーム番号frame_numのみである。また、式(1)で計算されるフレーム番号オフセットFrameNumOffsetは、IDRピクチャから、フレーム番号frame_numフィールドが何回キャリーオーバしたか(何回0に戻ったか)を表している。この回数をk回とすると式(2)のabsFrameNumは、以下のように書き直せる。
absFrameNum=k・MaxFrameNum+frame_num
kの値はデコーダ側では未知のため、absFrameNumを導出する際にあいまい性が生じる。
【0024】
例えば、k=0、1、2と仮定すると、
(a)k=0の場合
absFrameNum=14
picOrderCntCycleCnt=(14−1)/15=0
frameNumInPicOrderCntCycle=(14−1)%15=13
(b)k=1の場合
absFrameNum=30
picOrderCntCycleCnt=(30−1)/15=1
frameNumInPicOrderCntCycle=(30−1)%15=14
(c)k=2の場合
absFrameNum=46
picOrderCntCycleCnt=(46−1)/15=3
frameNumInPicOrderCntCycle=(46−1)%15=0
【0025】
図9は、kの値とPOC差分の関係を示す図である。図9には、引き込み点からのピクチャ枚数と、各k値におけるTopFieldOrderCntと、前ピクチャとのPOC差分が示されている。なお、IDRから復号した場合のPOCの真値はk=1の場合となる。
【0026】
図9からも明らかなように、引き込み点からのピクチャ枚数が同じでも、kの値により前のピクチャとのPOCの差分が異なっている。
例えば、引き込み点からのピクチャ枚数が5枚目と6枚目のPOCの差分は、k=0のときのPOC差分は3、k=1のときのPOCの差分は2、k=3のときのPOCの差分は4となり、値が一意にならない。
【0027】
上述した復号方法では、引き込み時のkが正しく求まらないと、各ピクチャ間のPOCの差分が正しい値にならない。
上記の問題を解決するために、非特許文献1では、ランダムアクセス時においても、POCタイプ1のPOCをIDRピクチャから復号した場合と全く同じPOCの値で復号できるようにするために、フレーム番号オフセットFrameNumOffsetを最大フレーム番号MaxFrameNumで割った値を符号化して送ることを提案している。
【0028】
しかしながら、上記の値は符号無し整数の場合は最大で28ビット、Golomb符号化した場合は最大で57ビットの情報量が必要となり、伝送する情報量が増えてしまうという問題点がある。
【0029】
本発明の課題は、H.264に基づいて符号化された動画像を、シーケンスの途中のピクチャから復号する場合でも正しい表示順で復号できるようにすることである。
【課題を解決するための手段】
【0030】
開示の動画像符号化装置は、H.264/AVCの動画像符号化装置において、H.264/AVCで規定されるシーケンスパラメータセットのnum_ref_frames_in_pic_order_cnt_cycleフィールドの値を、MaxFrameNumの約数に設定する設定手段と、画像データを符号化する符号化手段とを有する。
【0031】
この動画像符号化装置によれば、動画像復号化装置側で、リカバリポイントSEIを用いて正しい表示順で復号することができる。
開示の動画像復号化装置は、H.264/AVCの動画像復号化装置において、リカバリポイントSEIが付与されているピクチャから復号する場合に、H.264/AVCで規定されるFrameNumOffsetを、MaxFrameNumの整数倍の値に初期化する初期化手段と、符号化されたストリームを復号する復号化手段とを有する。
【0032】
この動画像復号化装置によれば、リカバリポイントSEIを用いて復号する場合に、POCタイプ1の正しいPOCの相対値を得ることができる。これにより、符号化されたストリームを正しい表示順で復号することができる。
【発明の効果】
【0033】
開示の符号化装置によれば、符号化データのデータ量を増やさずに、復号化装置において、リカバリポイントSEIから正しい表示順で復号できるように画像データを符号化できる。また、開示の符号化装置によれば、リカバリポイントSEIの付与されたピクチャから復号する場合に、正しい表示順で復号することができる。
【発明を実施するための最良の形態】
【0034】
以下、本発明の好適な実施の形態について説明する。H.264/MPEG4・AVC(以下、H.264という)の符号された画像データの復号においては、POC(Picture Order Count)の絶対値は必要でなく、各ピクチャのPOCの相対値が正しければ正しい表示順で復号することができる。
【0035】
この実施の形態では、符号化装置側において、H.264のシーケンスパラメータセットSPSに規定されるnum_ref_frames_in_pic_order_cnt_cycleフィールドの値を、MaxFrameNumの約数に設定している。
【0036】
復号装置側では、IDRピクチャ、あるいはH.264で規定されるリカバリポイントSEIなどが付与された、引き込み可能なピクチャから符号化を開始する際に次のようにしている。絶対フレーム番号absFrameNumを、フレーム番号frame_numに最大フレーム番号MaxFrameNumの整数倍を加算した値で初期化している。
【0037】
これにより、リカバリポイントSEIが付与されたピクチャから復号する場合のピクチャ間のPOCの相対値を、IDRピクチャから復号した場合のピクチャ間のPOCの相対値と同じ値にすることができる。以下、その実現方法を具体的に説明する。
【0038】
POCタイプ1のPOCの復号処理では、フレーム番号オフセットFrameNumOffsetを初期化する必要がある。FrameNumOffsetは、IDRピクチャの復号時に0に初期化され、その後frame_num<prev_frame_num(frame_numの前回値)となる毎に最大フレーム番号MaxFrameNumの値が加算されていく。
【0039】
フレーム番号frame_numは、IDRピクチャから数えたフレーム数の相対値であり、0≦frame_num<MaxFrameNum(frame_numの最大値)の条件を満たす。フレーム番号frame_numが、最大フレーム番号MaxFrameNumに等しくなると、再び0からカウントされる。
【0040】
絶対フレーム番号absFrameNumは、式(2)を参照して以下の式で表せる。
absFrameNum=FrameNumOffset+frame_num ・・・・式(7)
フレーム番号オフセットFrameNumOffsetは、式(1)の定義より、最大フレーム番号MaxFrameNumの定数倍であり、この定数をKとおくと、以下の式で表せる。
absFrameNum=K・MaxFrameNum+frame_num ・・・式(8)
【0041】
前述した式(2)から、absFrameNum=absFrameNum−1、であり、式(3)から、frameNumInPicOrderCntCycle=(absFrameNum−1)%num_ref_frames_in_pic_order_cnt_cycle、であるから、
frameNumInPicOrderCntCycle
=(K・MaxFrameNum + frame_num−1)%num_ref_frames_in_pic_order_cnt_cycle
=(((K・MaxFrameNum)%num_ref_frames_in_pic_order_cnt_cycle)+frame_num−1)%num_ref_frames_in_pic_order_cnt_cycle ・・・・式(9)
となる。
【0042】
上記の式(9)から、ランダムアクセス時に(absFrameNum−1)が不明なためにframeNumInPicOrderCntCycleの値が正しい値とならない問題は、定数Kが不明な問題に帰着できる。
ここで、定数Kを含む式、((K・MaxFrameNum)%num_ref_frames_in_pic_order_cnt_cycle)、に着目すると、num_ref_frames_in_pic_order_cnt_cycleを、最大フレーム番号MaxFrameNumの約数に設定すれば、Kを含む上記の式の剰余は0となるので、(K・MaxFrameNum)%num_ref_frames_in_pic_order_cnt_cycleの値はKの値に関わらず0になる。
【0043】
従って、num_ref_frames_in_pic_order_cnt_cycleを、最大フレーム番号MaxFrameNumの約数に設定すれば、Kの値によらず、式(9)のframeNumInPicOrderCntCycleの値は一意に求まることになる。
【0044】
次に、上記のようにして符号化した画像データを復号する場合について説明する。
この実施の形態においては、リカバリポイントSEIが付与されているピクチャから復号する場合に、フレーム番号オフセットFrameNumOffsetを、MaxFrameNumの整数倍に初期化する処理を新たに追加する。例えば、簡単のために、FrameNumOffset=MaxFrameNum、と初期化する。
【0045】
この場合、前述した式(1)を、以下の式(10)に書き換えることができる。
if(nal_unit_type==5)
FrameNumOffset=0
else if(Recover_Point_SEIからの復号)
FrameNumOffset=MaxFrameNum
else if(prevFrameNum>frame_num)
FrameNumOffset=prevFrameNumOffset+MaxFrameNum
else
FrameNumOffset=prevFrameNumOffset ・・・式(10)
【0046】
また、数(10)を別の表現であらわすと以下のとおりになる。
if( nal_unit_type = = 5 )
FrameNumOffset = 0
else if(prevFrameNumOffset is unknown)
FrameNumOffset=MaxFrameNum
else if( prevFrameNum > frame_num )
FrameNumOffset = prevFrameNumOffset + MaxFrameNum
else
FrameNumOffset = prevFrameNumOffset
但し、if(Recover_Point_SEIからの復号)の「Recover_Point_SEIからの復号」は、「prevFrameNumOffset is unknown」と等価である。
【0047】
上記の処理内容は次の通りである。NALユニットタイプが5か否かを判別する。NALユニットタイプが5でなければ、リカバリポイントSEIが付与されているピクチャからの復号か否かを判別する。リカバリポイントSEIが付与されているピクチャからの復号であれば、フレーム番号オフセットFrameNumOffsetに最大フレーム番号MaxFrameNumを設定する。
【0048】
MALユニットタイプが5でなければ、さらに、前回のフレーム番号prevFrameNumが、今回のフレーム番号frame_numより大きいか否かを判別する。前回のフレーム番号prevFrameNumが今回のフレーム番号frame_numより大きいときには、フレーム番号が最大値を超えたものと判断し、prevFrameNumOffsetに最大フレーム番号MaxFrameNumを加算した値を、FrameNumOffsetに設定する。
前回のフレーム番号prevFrameNumがframe_numより大きくなければ、revFrameNumOffsetを、FrameNumOffsetとして設定する。
【0049】
上記の処理により、リカバリポイントSEIが付与されているピクチャから復号する場合に、FrameNumOffsetがMaxFrameNumの整数倍の値に初期化される。そして、符号化装置側で、num_ref_frames_in_pic_order_cnt_cycleの値はMaxFrameNumの約数に設定されているので、式(9)のframeNumInPicOrderCntCycleの値が一意に定まる。その結果、リカバリポイントSEIが付与されているピクチャから復号する場合のPOCの相対値が、IDRピクチャから復号する場合と同じ値となる。これににより、ピクチャを正しい表示順で復号することができる。
【0050】
次に、以上のような符号化機能及び復号化機能を有する動画像符号化装置並びに動画像復号化装置について説明する。
図1は、動画像符号化装置(以下、符号化装置という)11の要部の構成を示す図である。減算器12は、画像データから予測画像生成部13で生成される予測画像を減算したデータを直交変換部14に出力する。直交変換部14は、減算器12から出力されるデータを直交変換し、量子化部15は、そのデータを量子化する。
【0051】
エントロピー符号化部16は、パラメータ設定部17を有する。エントロピー符号化部16は、画像データの符号化を行い、パラメータ設定部17は、シーケンスパラメータセットのnum_ref_frames_in_pic_order_cnt_cycleの値の設定等を行う。
【0052】
逆量子化部18と逆直交変換部19は、量子化及び直交変換の逆の処理を行う。逆直交変化部19で逆変換された画像データは、加算器20において予測画像と加算され参照画像蓄積部21に蓄積される。
【0053】
動きベクトル決定部22は、現在の画像と参照画像蓄積部21から出力される参照ピクチャに基づいて動きベクトルを算出し、算出した動きベクトルを予測画像生成部13とエントロピー符号化部16に出力する。予測画像生成部13は、動きベクトルと参照ピクチャに基づいて予測画像を生成し、その予測画像を加算器20及び減算器12に出力する。
【0054】
図2は、符号化装置11の符号化処理のフローチャートである。エントロピー符号化部16は、ピクチャをPOCタイプ1で符号化するか否かを判別する(図2、S11)。
POCタイプ1で符号化する場合には(S11、YES)、ステップS12に進み、シーケンスパラメータセットSPSのnum_ref_frames_in_pic_order_cnt_cycleを、最大フレーム番号MaxFrameNumの約数に設定する。
【0055】
ステップS12の次、またはステップS11の判別がNOとのきには、ステップS13に進み、画像データの符号化処理を実行する。
上記のように符号化装置11が、シーケンスパラメータセットSPSのnum_ref_frames_in_pic_order_cnt_cycleを、最大フレーム番号MaxFrameNumの約数に設定することで、復号化装置31側でPOCの相対値を一意に求めることができる。また、符号化装置11は、num_ref_frames_in_pic_order_cnt_cycleの値をMaxFrameNumの約数に設定するだけであるので、符号化データのデータ量は増えない。
【0056】
図3は、動画像復号化装置(以下、復号化装置という)31の要部を示す図である。エントロピー復号化部32は、可変長符号化が行われた画像ストリームを復号する機能と、初期化部33を有する。初期化部33は、フレーム番号オフセットの値を最大フレーム番号の整数倍の値に初期化する。
【0057】
逆量子化部34は、エントロピー復号化部32で復号された画像データの逆量子化の処理を行い、逆直交変換部35は、逆量子化されたデータに対して逆直交変換処理を行う。
加算器36は、逆直交変換後の画像データと、予測画像生成部37から出力される予測画像を加算して復号画像を生成する。参照画像蓄積部38は復号画像を記憶する。
予測画像生成部37は、参照画像蓄積部38に記憶されている参照ピクチャと、エントロピー復号化部32で計算される動きベクトルに基づいて予測画像を生成する。
【0058】
図4は、復号化装置31における復号処理のフローチャートである。最初に、IDRピクチャまたはリカバリポイントSEIをサーチする(S21)。
POCタイプが「1」か否かを判別する(S22)。POCタイプが「1」でないときには(S22、NO)、ステップS23に進み、POCタイプが「0」か否かを判別する。POCタイプが「0」であれば(S23、YES)、ステップS24に進み、POCタイプ0の初期化処理を行う。ステップS23の判別でPOCタイプが「0」ではないと判定されたときには(S23、NO)、ステップS25に進み、POCタイプ2の初期化処理を実行する。
【0059】
ステップS22において、POCタイプが「1」と判定されたときには、ステップS26に進み、リカバリポイントSEIを検出したか否かを判別する。
リカバリポイントSEIを検出した場合には(S26、YES)、ステップS27に進み、フレーム番号オフセットFrameNumOffsetの初期値として最大フレーム番号MaxFrameNum(または最大フレーム番号の整数倍の値)を設定する。
【0060】
ステップS26でリカバリポイントSEIが検出されなかった場合には(S26、NO)、ステップS28に進み、フレーム番号オフセットFrameNumOffsetの初期値として「0」を設定する。
ステップS24、S25、S27またはS28の次には、ステップS29に進み、ピクチャの復号処理を開始する。
【0061】
上記の処理により、リカバリポイントSEIが付与されているピクチャから復号する場合には、フレーム番号オフセットFrameNumOffsetの初期値としてMaxFrameNum(またはその整数倍の値)が設定される。そして、num_ref_frames_in_pic_order_cnt_cycleがMaxFrameNumの約数に設定されているので、前述した式(9)の剰余が0となり、式(9)の値が一意に定まる。
【0062】
図5は、H.264のシーケンスパラメータセットを示す図である。シーケンスパラメータセットには、num_ref_frames_in_pic_order_cnt_cycleが格納されるフィールド51と、変数iの値の範囲を示すフィールド52と、参照フレームオフセットoffset_for_ref_frame[?i?]が格納されるフィールド53がある。
本実施の形態においては、フィールド51のnum_ref_frames_in_pic_order_cnt_cycleには、MaxFrameNumの約数が設定される。
【0063】
図6は、スライスのフィールドを示す図である。スライスのフィールド61には、フレーム番号frame_numが格納される。
図7は、変数iとoffset_for_ref_frame[i]の関係を示す図である。例えば、i=0のとき、offset_for_ref_frame[i]=1、i=1のとき、offset_for_ref_frame[i]=2、i=2のとき、offset_for_ref_frame[i]=2の関係がある。
【0064】
図8は、IDRから復号した場合と、リカバリポイントSEIから復号した場合のパラメータの値とPOC差分を示す図である。
log2_max_frame_num_minus4=0とすると、MaxFrameNum=16となる。本実施の形態では、num_ref_frames_in_pic_order_cnt_cycleを、MaxFrameNumの約数、例えば、num_ref_frames_in_pic_order_cnt_cycle=8に設定する。
【0065】
復号化装置31においては、式(10)の処理により、NALユニットタイプが5のとき、つまりIDRピクチャの復号の場合には、フレーム番号オフセットFrameNumOffsetは初期値として0が設定される。
【0066】
IDRピクチャから復号した場合に、30枚目のピクチャのフレーム番号オフセットFrameNumOffsetは32、絶対フレーム番号absFrameNumは46となる。そして、30枚目のピクチャのTopFieldOrderCntの値は94となる。
【0067】
同様に31枚目のピクチャのFrameNumOffsetは32、absFrameNumは47となる。そして、31枚目のピクチャのTopFieldOrderCntは96となる。この場合の前ピクチャとのPOC差分は2となる。
【0068】
一方、リカバリポイントSEIから復号した場合には、式(10)により、フレーム番号オフセットFrameNumOffsetは、最大フレーム番号MaxFrameNumの整数倍の値に初期化される。この場合、MaxFrameNumは16であるので、FrameNumOffsetは、例えば、16となる。このとき、絶対フレーム番号MaxFrameNumは、式(7)のFrameNumOffset+frame_num、となる。符号化装置11から送られてくるフレーム番号frame_numは14であるので、absFrameNumは、16+14=30となる。このとき、30枚目のピクチャのTopFieldOrderCntは62となる。
【0069】
同様に31枚目のピクチャのFrameNumOffsetは16、absFrameNumは31となる。そして、32枚目のピクチャのTopFieldOrderCntは64となる。この場合の前ピクチャとのPOCの差分は2となる。
【0070】
IDRピクチャから復号した場合の前ピクチャとのPOC差分をTopFieldOrderCntの値から計算すると、31枚目以降のピクチャの前ピクチャとのPOC差分は、図8に示すように「2,1,2,2,1・・・」となる。
【0071】
一方、リカバリポイントSEIから復号した場合の前ピクチャとのPOC差分は、図8に示すように「2、1、2、2、1・・・」となる。
実施の形態の符号化装置11及び復号化装置31によれば、IDRから復号した場合とリカバリポイントSEIから復号した場合でPOCの値は異なるが、POCの差分は両者で同じ値となる。H.264においては、POCの絶対値が正確である必要なく、POCの相対値として正しい値が得られれば、ピクチャを正しい表示順で復号することができる。
【0072】
従って、実施の形態の符号化及び復号化装置及びその符号化、復号化方法により、リカバリポイントSEIを用いたランダムアクセス時にもピクチャを正しい表示順で復号できる。
また、H.264/MPEGAVC規格のサブクラス7.4.2.1におけるnum_ref_frames_in_pic_order_cnt_cycleについての変更およびH.264/MPEGAVC規格のサブクラス8.2.1.2におけるPOCタイプ1の復号処理も変更することを以下のとおり提案する。
【0073】
num_ref_frames_in_pic_order_cnt_cycleの変更について、以下のとおりに示す。
num_ref_frames_in_pic_order_cnt_cycle is used in the decoding process for picture order count as specified in subclause 8.2.1. The value of num_ref_frames_in_pic_order_cnt_cycle shall be any divisor of MaxFrameNum andin the range of 0 to 255, inclusive.
Proposed change on equation 8-6 is the following
if( nal_unit_type = = 5 )
FrameNumOffset = 0
else if( prevFrameNumOffset is unknown )
FrameNumOffset = MaxFrameNum
else if( prevFrameNum > frame_num )
FrameNumOffset = prevFrameNumOffset + MaxFrameNum
else
FrameNumOffset = prevFrameNumOffset
RATIONALE
Equation 8-8 can be written as the following
frameNumInPicOrderCntCycle = (FrameNumOffset + frame_num - 1 ) % num_ref_frames_in_pic_order_cnt_cycle
If the value of num_ref_frames_in_pic_order_cnt_cycle is a divisor of MaxFrameNum, the result of (FrameNumOffset % num_ref_frames_in_pic_order_cnt_cycle) is always zero because FrameNumOffset is the product of MaxFrameNum and non-negative integer. Thus frameNumInPicOrderCntCycle in Equation 8-8 is independent of prevFrameNumOffset.
The values of absNumFrame in Equation 8-7 and frameNumInPicOrderCntCycle in Equation 8-8 for the first decoding picture are (MaxFrameNum + frame_num) and ((frame_num - 1) % num_ref_frames_in_pic_order_cnt_cycle), respectively.
(追記)
As the definition of MaxFrameNum is 2^{log2_max_frame_num_minus4}, num_ref_frames_in_pic_order_cnt_cycle should also be in the form of 2^N where N is non-negative integer.
【図面の簡単な説明】
【0074】
【図1】符号化装置の要部を示す図である。
【図2】実施の形態の符号化処理のフローチャートである。
【図3】復号化装置の要部を示す図である。
【図4】実施の形態の復号化処理のフローチャートである。
【図5】シーケンスパラメータセットのフィールドを示す図である。
【図6】スライスのフィールドを示す図である。
【図7】変数iとoffset_for_ref_frame[i]の関係を示す図である。
【図8】IDRから復号した場合とリカバリポイントSEIから復号した場合の各フィールドの値とPOC差分を示す図である。
【図9】変数iとoffset_for_ref_frame[i]の関係を示す図である。
【図10】kの値とPOC差分の関係を示す図である。
【符号の説明】
【0075】
11 符号化装置
14 直交変換部
15 量子化部
16 エントロピー符号化部
17 パラメータ設定部
31 復号化装置
32 エントロピー復号化部
33 初期化部
34 逆量子化部
35 逆直交変換部
【特許請求の範囲】
【請求項1】
H.264/AVCの動画像符号化装置において、
H.264/AVCで規定されるシーケンスパラメータセットのnum_ref_frames_in_pic_order_cnt_cycleフィールドの値を、MaxFrameNumの約数に設定する設定手段と、
画像データを符号化する符号化手段とを有する動画像符号化装置。
【請求項2】
H.264/AVCの動画像復号化装置において、
リカバリポイントSEIが付与されているピクチャから復号する場合には、H.264/AVCで規定されるFrameNumOffsetを、MaxFrameNumの整数倍の値に初期化する初期化手段と、
符号化されたストリームを復号する復号化手段とを有する動画像復号化装置。
【請求項3】
前記初期化手段は、FrameNumOffsetをMaxFrameNumと等しい値に初期化する請求項2記載の動画像復号化装置。
【請求項4】
absFrameNumを、frame_numにMaxFrameNumの整数倍を加算して算出する算出手段を有する請求項2記載の動画像復号化装置。
【請求項5】
H.264/AVCの動画像の符号化方法において、
H.264/AVCで規定されるシーケンスパラメータセットのnum_ref_frames_in_pic_order_cnt_cycleフィールドの値を、MaxFrameNumの約数に設定する動画像符号化方法。
【請求項6】
H.264/AVCの動画像の復号化方法において、
リカバリポイントSEIが付与されているピクチャから復号する場合に、H.264/AVCで規定されるFrameNumOffsetを、MaxFrameNumの整数倍の値に初期化し、
初期化された前記FrameNumOffsetを用いてPOC差分を算出する動画像復号化方法。
【請求項7】
absFrameNumを、frame_numにMaxFrameNumの整数倍を加算して算出する請求項6記載の動画像復号化方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2009−272660(P2009−272660A)
【公開日】平成21年11月19日(2009.11.19)
【国際特許分類】
電気 | 電気通信技術 | 画像通信,例.テレビジョン | テレビジョン方式[4,2011.01] | パルス符号変調を用いるテレビジョン信号の伝送方式[6,2011.01] | ビットレートの低減をするもの | 予測符号化を含むもの
【出願番号】特願2008−108207(P2008−108207)
【出願日】平成20年4月17日(2008.4.17)
【出願人】(000005223)富士通株式会社
【Fターム(参考)】
TV信号の圧縮、符号化方式 | 符号化方式
TV信号の圧縮、符号化方式 | 符号化方式 | 予測(差分)符号化 | フレーム間予測
TV信号の圧縮、符号化方式 | 符号化方式 | 直交変換符号化→MC〜
TV信号の圧縮、符号化方式 | 変換係数の処理 | 量子化
TV信号の圧縮、符号化方式 | 符号割当 | 可変長符号(VLC)
TV信号の圧縮、符号化方式 | 動き処理 | 動きベクトル検出
TV信号の圧縮、符号化方式 | 処理画像 | 動画
TV信号の圧縮、符号化方式 | 付加情報(多重化する情報) | 符号化制御情報
TV信号の圧縮、符号化方式 | 付加情報(多重化する情報) | 符号化制御情報 | 復号化する順序の情報
TV信号の圧縮、符号化方式 | 用途 | 記録用 | 特殊再生
TV信号の圧縮、符号化方式 | 用途 | 記録用 | サーチ又は検索
TV信号の圧縮、符号化方式 | 構成要素 | 送信側構成 | 符号化回路
TV信号の圧縮、符号化方式 | 構成要素 | 受信側構成 | 復号化回路
TV信号の圧縮、符号化方式 | 構成要素 | メモリ | 予測用
[ Back to top ]
