JP6470191B2 - 映像符号化方法、映像符号化装置及び映像符号化プログラム - Google Patents

映像符号化方法、映像符号化装置及び映像符号化プログラム Download PDF

Info

Publication number
JP6470191B2
JP6470191B2 JP2016001281A JP2016001281A JP6470191B2 JP 6470191 B2 JP6470191 B2 JP 6470191B2 JP 2016001281 A JP2016001281 A JP 2016001281A JP 2016001281 A JP2016001281 A JP 2016001281A JP 6470191 B2 JP6470191 B2 JP 6470191B2
Authority
JP
Japan
Prior art keywords
code amount
pictures
picture
buffer
encoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016001281A
Other languages
English (en)
Other versions
JP2017123545A (ja
Inventor
隆一 谷田
隆一 谷田
和也 早瀬
和也 早瀬
正樹 北原
正樹 北原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2016001281A priority Critical patent/JP6470191B2/ja
Publication of JP2017123545A publication Critical patent/JP2017123545A/ja
Application granted granted Critical
Publication of JP6470191B2 publication Critical patent/JP6470191B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

本発明は、映像符号化の並列処理において、並列処理数を適切に算出する映像符号化方法、映像符号化装置及び映像符号化プログラムに関する。
映像の符号化を高速に行う方法として、複数のピクチャの符号化処理を並列に行う方法がある。図4は、各ピクチャについてその復号時に参照される他のピクチャとの関係(以下、「参照構造」という。)を表示順に示した図である。ピクチャとは、符号化対象映像の1フレーム(または1画面)である。この図は、片方向予測ピクチャ(以下、「Pピクチャ」という。)1枚に対し、双方向予測ピクチャ(以下、「Bピクチャ」という。)が2枚あるM=3と呼ばれる参照構造を示したものである。各ピクチャの上もしくは下に描かれた矢印は各ピクチャが参照する先のピクチャを表している。
この図において、符号化順は各ピクチャの下に数字で示した通り、I→P→B→B→P→B→Bという順番である。しかし参照構造によれば、Pの符号化が終了すると、BのみではなくB及びPも符号化可能である。従って、符号化処理を並列に行えるシステムにおいては、これら3ピクチャを同時に符号化処理することができる。
次に、HEVCやH.264をはじめとする一般的な映像符号化規格における符号化部の装置構成を説明する。図5は、一般的な映像符号化規格における符号化部の装置構成を示すブロック図である。図5に示す装置は、原画像バッファ1、復号画像バッファ10及び符号化部12を備える。
符号化部12は、減算器2、加算器3、DCT(離散コサイン変換)計算器(図中「DCT」)4、量子化器(図中「Q」)5、逆量子化器(図中「IQ」)6、IDCT(逆離散コサイン変換)計算器(図中「IDCT」)7、予測モード選択部8、ループフィルタ9及びエントロピー符号化部11を備える。
原画像バッファ1は、表示順に入力された原画像を保持し、符号化順に並べ替えて順に出力する。減算器2は、原画像バッファ1から送られた原画と予測モード選択部8から送られた予測画像の差分を取って予測残差信号を計算し、DCT計算器4に出力する。
加算器3は、予測モード選択部8から出力された予測画像と、IDCT計算器7から送られる量子化後の予測残差信号の和を計算し、フィルタ前の復号画像としてループフィルタ9に送る。DCT計算器4は、予測残差信号に離散コサイン変換を施し、算出されたDCT係数を量子化器5へ送る。
量子化器5は、DCT計算器4から送られたDCT係数を、外部から与えられた量子化パラメータQPを用いて量子化し、DCT係数の量子化値としてエントロピー符号化部11と逆量子化器6へ送る。逆量子化器6は、量子化器5で求まった量子化後のDCT係数を、外部から与えられた量子化パラメータQPを用いて逆量子化し、量子化後のDCT係数としてIDCT計算器7に送る。
IDCT計算器7では、逆量子化器6から送られた量子化後のDCT係数に逆離散コサイン変換を施し、量子化後の予測残差信号を求める。予測モード選択部8は、入力された原画像に最も近い予測画像を、同じく入力された参照画像から作成して出力すると共に、その予測モードの情報をエントロピー符号化器11へ送る。
ループフィルタ9は、加算器3から送られたフィルタ前の復号画像にフィルタ処理を施し、復号画像として復号画像バッファ10に送る。復号画像バッファ10は、ループフィルタ9から出力された復号画像を保存し、予測モード選択部8に対して参照画像として出力する。
エントロピー符号化部11は、量子化器5から送られるDCT係数の量子化値と予測モード選択部8から送られる予測モード情報を可変長符号化し、符号化ストリームとして出力する。
次に、図6を参照して、図5に示す装置の処理動作を説明する。図6は、図5に示すHEVCやH.264をはじめとする一般的な映像符号化規格における符号化装置の動作を示すフローチャートである。処理が始まると、まず原画像バッファ1は、入力された各ピクチャを符号化順に並べ替える(ステップS21)。
以降、符号化部12は各ピクチャを符号化順に処理する。各ピクチャは矩形のブロックに分割される。予測モード選択部8は、ブロックごとに予測モードを決定する(ステップS22)。減算器2は、予測モードに対応する予測画像と原画像との差分を取得する。減算器2は、取得された差分に基づいて予測残差信号を出力する(ステップS23)。
次に、DCT計算器4は、出力された予測残差信号にDCT(ステップS24)を施す。量子化器5は、DCT係数に対して量子化(ステップS25)を施す。逆量子化器6は、逆量子化を行う(ステップS26)。IDCT計算器7は、IDCTを計算する(ステップS27)。
次に、加算器3は、予測画像と量子化後の予測残差信号とを加算し復号画像を生成する(ステップS28)。ループフィルタ9は、生成された復号画像にループフィルタを掛けて(ステップS29)、復号画像バッファ1に復号画像として保存する(ステップS30)。保存された復号画像は、以降の予測画像生成に利用される。
一方、エントロピー符号化部11は、DCTと量子化を施した量子化済みのDCT係数と、対応する予測モード情報とに対して可変長符号化を施し、符号化ストリームとして出力する(ステップS31)。
図6に示す処理(ステップS22〜S31)が行われる際には、各ピクチャに対して量子化パラメータQPが与えられる必要がある。量子化パラメータQPは、量子化の粗さを表す。量子化パラメータQPが大きいほど粗く量子化され、符号化ノイズが多くなる。一方、量子化パラメータQPが大きいほど、圧縮率が高くなるため発生する符号量は少なくなる。量子化パラメータQPは、予め定められたビットレート及びバッファサイズを元に、デコーダのバッファモデルを順守するように算出される。
ここで、デコーダのバッファモデルについて説明する。映像デコーダには符号化ストリームを保存する受信バッファがあり、この受信バッファには外部から受信した符号化ストリームが蓄積される。また、復号の際には1フレーム分ずつ符号化ストリームを受信バッファから引き抜いて復号する。
この受信バッファのサイズは有限のため、受信した符号化ストリームを受信バッファに蓄積する速度と、受信バッファに蓄積された符号化ストリームをバッファから引き抜く速度は釣り合っている必要がある。
例えば、前者の速度が速い場合は受信バッファがフルになって符号化ストリームを受信できなくなる「バッファオーバーフロー」(以下、「オーバーフロー」という。)が発生し、逆に後者の速度が速い場合は受信バッファが空になってピクチャの復号が停止してしまう「バッファアンダーフロー」(以下、「アンダーフロー」という。)が発生する。
そこで一般的な映像符号化器では、上記のよう受信バッファのオーバーフローやアンダーフローが起こらないよう、各ピクチャの発生符号量、ひいては量子化パラメータQPを適切に制御するレート制御部と呼ばれる機構が組み込まれている。
ここで復号順でn枚目ピクチャの復号時刻をt(n)、n枚目ピクチャを復号した直後の受信バッファのデータ蓄積量をBt_after(t(n))と表記する。次のn+1枚目ピクチャを復号する時刻t(n+1)は、フレームレートFPS[フレーム/秒]を用いて、t(n+1)=t(n)+1/FPSと表記できる。
このことから、一般的なCBRモデル(ビットレート一定モデル)の場合、n+1枚目ピクチャを復号する直前の受信バッファのデータ蓄積量Bt_before(t(n+1))は、ビットレートb[bit/秒]を用いて
Bt_before(t(n+1))=Bt_after(t(n))+b/FPS
と表せる。
ここでn+1枚目ピクチャの発生符号量がG(n+1)だったとすれば、n+1枚目ピクチャを復号した直後の受信バッファにおけるデータ蓄積量Bt_after(t(n+1))は
Bt_after(t(n+1))=Bt_before(t(n+1))−G(n+1)
と表せる。
ここで、もし、G(n+1)>Bt_before(t(n+1))であった場合、Bt_after(t(n+1))<0となり、バッファアンダーフローが発生する。一方、受信バッファサイズをSと置いたとき、G(n+1)<Bt_before(t(n+1))+b/FPS−Sであった場合、Bt_after(t(n+1))>Sとなり、バッファオーバーフローが発生する。
そのため前述のレート制御部では、このようにバッファアンダーフローやオーバーフローが起こらないよう各ピクチャの発生符号量Gの適切な値を算出し、またそのような発生符号量となるようにQPを決定する機構となる。
この発生符号量Gと量子化パラメータQPの関係であるが、ある量子化パラメータQPに対応する量子化幅をQstep(QP)と表すと、量子化幅Qstep(QP)と、その時の発生符号量Gの間にはおおよそ反比例の関係がある。この両者の積を取ったものをこのピクチャの複雑さ指数X=G×Qstep(QP)と呼ぶ。この複雑さ指数Xは、直前に符号化したピクチャのものとおよそ近い値となることから、直前に符号化した結果の積からXを求め、次ピクチャのGとQPの算出に用いられることが多い。
また、各ピクチャの適切な発生符号量Gの計算方法としては、MPEG−2のTM5モデルがよく用いられる。これは、Iから始まる一連のピクチャ群であるGOP(Group of Pictures)に対して使用可能な符号量を設定し、各ピクチャタイプI・P・Bに対する複雑さ指数Xi、Xp、Xbに応じて、GOP内の各ピクチャに符号量を分配する、というものである。
1ピクチャずつ符号化する毎に割り当て符号量と実際の発生符号量の間の誤差をフィードバックし、バッファアンダーフローやオーバーフローを抑止しつつ、目的のビットレートbとなるよう各ピクチャの符号量配分を決定する。
ここで、レート制御部の処理例を示す。レート制御部の処理は前処理と後処理の2パートに大別される。まず前処理について説明する。処理が始まると、まずバッファ位置Bt_beforeを予め定められた初期値にて初期化する。また、各ピクチャタイプに対する複雑さ指数Xi、Xp、Xbを予め定められた定数で初期化する。
次に1GOPに割り当てる符号量Rの初期値を設定する。例えば、1GOPに含まれるピクチャ枚数をNとすれば、Rの初期値は、R=b×N/FPSなどと計算される。また、1GOPに含まれる各タイプ毎のピクチャ枚数をそれぞれNi(=Iピクチャの枚数=1)、Np(=Pピクチャの枚数)、Nb(=Bピクチャの枚数)に代入する。
次に、符号化対象のピクチャ毎に以下のような処理により割り当て符号量Tを算出する。符号化対象ピクチャがIピクチャの場合、TはT=(Xi×R)/(Xi×Ni+Xp×Np+Xb×Nb)として算出する。その後、Niの値を1デクリメントする。同様に符号化対象ピクチャがPピクチャの場合はT=(Xp×R)/(Xi×Ni+Xp×Np+Xb×Nb)として算出後、Npの値を1デクリメントする。Bピクチャの場合はT=(Xb×R)/(Xi×Ni+Xp×Np+Xb×Nb)として算出後、Nbの値を1デクリメントする。
上記で求めた符号量Tについて、符号化のバッファ位置推定値Bt_afterを
Bt_after=Bt_before−T
として算出する。この時Bt_after <0(バッファアンダーフロー)、もしくはバッファサイズをSとした時にBt_after+b/FPS>S(バッファオーバーフロー)とならないよう、TをBt_before+b/FPS−S≦T≦Bt_beforeの範囲にクリップする。
次に、この割り当て符号量Tに相当する量子化パラメータQPを算出する。この量子化パラメータQPをターゲットQPと名付ける。前述の通り、複雑さ指数Xと発生符号量Gとの間にはおよそ以下の関係が成立する。
X=G×Qstep(QP)
そのため、例えばIピクチャの場合は符号量TとQstep(QP)の積がXiに最も近くなるQPをターゲットQPとすればよい。同様に、Pピクチャの場合は積がXpに最も近くなるQP、Bピクチャの場合はXbに最も近くなるQPをターゲットQPとすればよい。
ここまでが前処理となる。このようにして求めたターゲットQPを用いて実際に符号化を行った後、レート制御部では後処理を行う。この処理は具体的には以下の通りである。まず、符号化結果から複雑さ指数の値を更新する。符号化したピクチャの発生符号量をG、その時のターゲットQPに対応する量子化幅をQstep(ターゲットQP)とすれば、複雑さ指数は両者の積で求められる。
そこで符号化したピクチャのピクチャタイプがIピクチャであればXi、PピクチャであればXp、BピクチャであればXbをG×Qstep(ターゲットQP)の値に更新する。また、符号量Rの値も更新する。具体的にはRから発生符号量Gを引いたものを新たに符号量Rとする。
次に、発生符号量Gを用いてバッファ位置Bt_beforeの値を更新する。これは、
Bt_before=Bt_before−G+b/FPS
として計算される。以上がレート制御部の後処理となる。
その後、またレート制御部の前処理に戻って次の符号化ピクチャに関するターゲットQPを算出する処理を行うことを繰り返す。1GOP分の符号化が終わったら、Rの値を更新し、次のGOPに対してまた同様の処理を繰り返す。具体的には、Rの値について、その時点で保持している値に対し、b×N/FPSを加算する。また、Ni、Np、Nbの値を1GOPに含まれる各ピクチャタイプの枚数に戻す。
このような処理を行うことで、バッファを破綻させないようにしつつも目的のビットレートに沿ったビットストリームを生成できる(例えば、非特許文献1参照)。
次に、前述したような複数ピクチャを同時に符号化するための装置の装置構成を説明する。図7は、前述したような複数ピクチャを同時に符号化するための装置の装置構成を示すブロック図である。この装置は、原画像バッファ1、復号画像バッファ10、N(Nは自然数)個の符号化部12−1〜N、ストリームバッファ13、並列処理割り当て部14、バッファ計算部15、割り当て符号量算出部16、QP計算部17、複雑さ計算部18から構成される。バッファ計算部15、割り当て符号量算出部16、QP計算部17及び複雑さ計算部18によってレート制御部19が構成されている。
原画像バッファ1は前述のものと同様、原画像を符号化順に並べ替え、符号化部12−1〜Nに送る。ただし、本構成では符号化部12−1〜Nが複数あるため、並列処理割り当て部14から送られる原画割り当て情報を元に、符号化順でN枚分のピクチャをN個ある符号化部12−1〜Nへそれぞれ送信する。
復号画像バッファ10は前述のものと同様、符号化部12−1〜Nから送られる復号画像を保存し、また必要に応じて参照画像として符号化部12−1〜Nへ送る。但し、本構成では符号化部12−1〜Nが複数あるため、このバッファも複数の復号画像の同時保存、及び複数の参照画像の同時送出に対応している。
符号化部12−1〜Nは図5の点線で囲まれた符号化部12と同等の機能を有し、本構成例ではそれがN個並列に備わっている。ストリームバッファ13は、各符号化部12−1〜Nから送られる符号化ストリームを保存すると共に、そのデータサイズを発生符号量としてバッファ計算部15、割り当て符号量算出部16、複雑さ計算部8に送る。
並列処理割り当て部14は、入力された並列処理数を元に、原画像バッファのどのピクチャをN個あるどの符号化部(符号化部12−1〜Nのいずれか)へ送るかを求め、原画像バッファ1へ割り当て情報として送信する。
バッファ計算部15は、処理が始まるとレート制御設定情報を元にバッファ位置の初期値Bt_before(0)を計算して保持する。また、ストリームバッファ13から各ピクチャの発生符号量が求まるたびにBt_beforeの値を計算し、割り当て符号量算出部16へ送る。
割り当て符号量算出部16は、外部から与えられるレート制御設定と並列数、バッファ位置、各ピクチャの発生符号量を元に、向こうNピクチャ分の各ピクチャの割り当て符号量T(1)〜T(N)を求め、QP計算部17へ送る。QP計算部17は、複雑さ計算部18から送られる各ピクチャタイプの複雑さ指数と各ピクチャの割り当て符号量を元に、Nピクチャ分のターゲットQPを計算して対応するN個の符号化部12−1〜Nへ送る。
複雑さ計算部18は、QP計算部17から送られる各ピクチャの量子化パラメータQPと、ストリームバッファ13から送られる対象ピクチャの発生符号量からピクチャタイプ毎の複雑さ指数を計算し、割り当て符号量算出部16とQP計算部17へ送る。
次に、図8を参照して、図7に示す装置の処理動作を説明する。図8は、前述したような複数ピクチャを同時に符号化する装置が行う処理動作を示すフローチャートである。符号化を開始すると、まず図6のフローと同様、原画像バッファ1は、ピクチャを符号化順に並べ替える(ステップS41)。
次に、前述のレート制御部19の処理を元に、割り当て符号量算出部16は、向こうN枚分のピクチャに対する割り当て符号量を算出する(ステップS42)。この時、N枚分のピクチャのうち、1枚目ピクチャの割り当て符号量算出は前述の通りに行えばよい。しかし2枚目以降のピクチャに関しては前述の式のままでは割り当て符号量算出ができない。
これは、例えば2枚目ピクチャの計算を行うには1枚目ピクチャの符号化結果から求まる発生符号量を使い、バッファ位置Bt_before、符号量R、及び対応するピクチャタイプの複雑さ指数を更新する必要があるためである。
同様に3枚目ピクチャは1枚目と2枚目ピクチャの符号化結果、4枚目ピクチャは1〜3枚目ピクチャの発生符号量が必要となる。しかしこの時点ではこれらピクチャの発生符号量が無いことから、割り当て符号量を発生符号量の代用に用いる。
従って2枚目ピクチャに関して言えば、複雑さ指数は1枚目と共通とし、バッファ位置Bt_before(2)は、1枚目ピクチャに関するバッファ位置Bt_before(1)と1枚目ピクチャの割り当て符号量T(1)から
Bt_before’(2)=Bt_before(1)−T(1)+b/FPS
となる。
また符号量R(2)は1枚目ピクチャ計算時の符号量R(1)から符号量T(1)を引いた
R(2)=R(1)−T(1)
を用いるとする。これらの値を用い、2枚目ピクチャに対する割り当て符号量T(2)を計算すればよい。同様に3枚目ピクチャに関しても複雑さ指数は1枚目計算時と共通で、バッファ位置Bt_before(3)は
Bt_before(3)=Bt_before(2)−T(2)+b/FPS
=Bt_before(1)−(T(1)+T(2))+2×b/FPS
また、符号量R(3)は
R(3)=R(2)−T(2)=R(1)−(T(1)+T(2))
と表せ、これらから割り当て符号量T(3)を算出すればよい。
上記の計算によりNピクチャ分の割り当て符号量T(1)〜T(N)を算出したら、QP計算部17は、これらの割り当て符号量に対応する各ピクチャの量子化パラメータQPを算出する(ステップS43)。これは、各ピクチャのピクチャタイプに対する複雑さ指数XiもしくはXpもしくはXbを各ピクチャの割り当て符号量で除した値に最も近い量子化幅となるQPを求めればよい。例えば、1枚目ピクチャのピクチャタイプがIピクチャであれば量子化幅はXi/T(1)で算出でき、この量子化幅に最も近い量子化パラメータQPが1枚目ピクチャのターゲットQPとなる。
同様にNピクチャ分全てのターゲットQPを算出したら、符号化部12−1〜Nは、これらNピクチャを同時並列に符号化する(ステップS44)。この処理は、具体的には図6に示すフローチャート中の破線で囲まれた「符号化処理のコアフロー」に従って各ピクチャを同時に符号化することに相当する。
Nピクチャ分の符号化が終わったら、各ピクチャに対応する発生符号量G(1)〜G(N)が求まるので、複雑さ計算部18は、この結果を元に複雑さ指数の更新(ステップS45)し、バッファ計算部15は、バッファ位置の更新を行う(ステップS46)。複雑さ指数の更新に関しては、発生符号量とターゲットQPに対応するQstepの積で当該ピクチャの複雑さ指数が求まるので、ピクチャタイプ毎に分類し、平均値を求めて当該ピクチャタイプの新たな複雑さ指数とするなどすればよい。
一方バッファ位置の更新については、Nピクチャ分の発生符号量G(1)〜G(N)を元にバッファ位置Bt_before(N+1)を以下の通り求める。
Bt_before(N+1)=Bt_before(1)−(T(1)+T(2)+…T(N))+N×b/FPS
以上の処理を全てのピクチャに対して行う(ステップS47)ことで、複数ピクチャ並列に符号化処理を行うことができる。
MPEG-2, Test Model5(TM5) , Doc. ISO / IECJTC1 / SC29 / WG11 / NO400, Test Model Editing Committee, Apr.1993
ところで、上記の複数ピクチャを同時に符号化する方式においては、各ピクチャの割り当て符号量に関して、必ずしも正確な情報を元に計算できていない。具体的に言えば、上記において符号量T(1)は正確なバッファ位置Bt_before(1)及び符号量R(1)を元に計算できているが、符号量T(2)に関して言えば、計算の元となるバッファ位置Bt_before(2)及びR(2)は仮の値となっている。
一般的に映像の符号化では、割り当て符号量Tと実際の発生符号量Gの間には乖離が起きる。そのため、割り当て符号量の計算時点ではバッファ破綻が起こっていないとしても、実際にNピクチャ符号化した時にはバッファ破綻が起こっている可能性がある。
特に並列数Nの値が大きければ大きいほど各ピクチャの割り当て符号量Tと実際の発生符号量Gの乖離の影響を大きく受けるため、バッファ破綻を起こす可能性が高いことが分かる。従って複数ピクチャの同時並列処理は、並列処理数が多いほど処理時間も短縮できるが、バッファ破綻のリスクも並列処理数の増加に伴って高まるという問題がある。
なお、このバッファ破綻に関して、バッファオーバーフローの場合は空データ(fillerデータ)を間に挟むことで回避する手段が存在する。一方、バッファ位置が0未満となるバッファアンダーフローに関してはこのような回避手段が存在しないため、複数ピクチャ並列符号化においては特にこのバッファアンダーフローの回避が大きな問題となる。
本発明は、このような事情に鑑みてなされたもので、バッファアンダーフローのリスクを低く抑えつつ、可能な限り並列処理数を高めることにより高速に符号化することができるようにするための並列処理数を算出することができる映像符号化方法、映像符号化装置及び映像符号化プログラムを提供することを目的とする。
本発明の一態様は、最大N(Nは2以上の自然数)枚までの複数ピクチャを並列に符号化する符号化部と、N枚の各ピクチャに対する割り当て符号量を算出する割り当て符号量算出部と、前記割り当て符号量に相当する量子化パラメータであるターゲットQPを算出するQP計算部とを備え、映像を符号化する映像符号化装置が行う映像符号化方法であって、前記N枚の各ピクチャに対する前記割り当て符号量の誤差に基づいて、前記割り当て符号量を再算出する割り当て符号量再算出ステップと、N枚の各ピクチャに対する前記割り当て符号量から各ピクチャの符号化後のバッファのデータ蓄積量の推定量を示すバッファ位置推定値を算出するバッファ位置推定値算出ステップと、算出した各ピクチャの前記符号化後のバッファ位置推定値と、予め定められた閾値との大小を比較する比較ステップと、前記大小の比較の結果に基づき、前記閾値以上となっているピクチャの枚数を求める枚数算出ステップと、前記ピクチャの枚数に基づいて、前記符号化部によって並列に符号化するピクチャの枚数である並列数を算出する並列数算出ステップとを有する映像符号化方法である。
本発明の一態様は、前記映像符号化方法であって、前記割り当て符号量再算出ステップでは、各ピクチャの割り当て符号量に対してあらかじめ定めた1以上の係数を乗算する。
本発明の一態様は、前記映像符号化方法であって、前記割り当て符号量再算出ステップでは、各ピクチャの割り当て符号量に予め定めた固定値を加算する。
本発明の一態様は、前記映像符号化方法であって、前記割り当て符号量再算出ステップでは、各ピクチャの割り当て符号量を予め定めた四則演算による方程式に代入して算出した値を用いることによって前記誤差に基づいた前記割り当て符号量を求める。
本発明の一態様は、前記映像符号化方法であって、前記バッファ位置推定値算出ステップでは、前記バッファのバッファ位置として入力された初期バッファ位置を起点として前記並列数によって規定されるピクチャ枚数分の符号化後の前記バッファの前記バッファ位置推定値を、各ピクチャに関して前記誤差に基づいた前記割り当て符号量から計算する。
本発明の一態様は、 映像を符号化する映像符号化装置であって、最大N(Nは2以上の自然数)枚までの複数ピクチャを並列に符号化する符号化部と、N枚の各ピクチャに対する割り当て符号量を算出する割り当て符号量算出部と、前記割り当て符号量に相当する量子化パラメータであるターゲットQPを算出するQP計算部と、前記N枚の各ピクチャに対する前記割り当て符号量の誤差に基づいて、前記割り当て符号量を再算出する割り当て符号量再再算出部と、N枚の各ピクチャに対する前記割り当て符号量から各ピクチャの符号化後のバッファのデータ蓄積量の推定量を示すバッファ位置推定値を算出するバッファ位置推定値算出部と、算出した各ピクチャの前記符号化後のバッファ位置推定値と、予め定められた閾値との大小を比較する比較部と、前記大小の比較の結果に基づき、前記閾値以上となっているピクチャの枚数を求める枚数算出部と、前記ピクチャの枚数に基づいて、前記符号化部によって並列に符号化するピクチャの枚数である並列数を算出する並列数算出部とを備える映像符号化装置である。
本発明の一態様は、コンピュータに、前記映像符号化方法を実行させるための映像符号化プログラムである。
本発明によれば、バッファアンダーフローのリスクを低く抑えつつ、可能な限り並列処理数を高めることにより高速に符号化することができるようにするための並列処理数を算出することができるという効果が得られる。
本発明の一実施形態による映像符号化装置の構成を示すブロック図である。 図1に示す並列数算出部20の構成を示すブロック図である。 図1に示す映像符号化装置の動作を示すフローチャートである。 ピクチャの参照構造を表示順に示した図である。 HEVCやH.264をはじめとする一般的な映像符号化規格における符号化部の装置構成を示すブロック図である。 図5に示すHEVCやH.264をはじめとする一般的な映像符号化規格における符号化部の処理動作を示すフローチャートである。 複数ピクチャを同時に符号化するための装置の装置構成を示すブロック図である。 複数ピクチャを同時に符号化する装置が行う処理動作を示すフローチャートである。
以下、図面を参照して、本発明の一実施形態による映像符号化装置を説明する。図1は同実施形態の構成を示すブロック図である。この図に示す装置が図7に示す従来の装置と異なる点は、並列数算出部20が新たに設けられている点である。
なお、並列処理割り当て部14の入力に関して、図7に示す構成では外部から与えられた並列数が固定値として与えられていたが、図1に示す構成では並列数算出部20から出力される並列処理数mが入力となっている。
図1に示す装置は、図7に示す装置と同様に、原画像バッファ1、復号画像バッファ10、N(Nは自然数)個の符号化部12−1〜N、ストリームバッファ13、並列処理割り当て部14、バッファ計算部15、割り当て符号量算出部16、QP計算部17、複雑さ計算部18から構成される。バッファ計算部15、割り当て符号量算出部16、QP計算部17及び複雑さ計算部18によってレート制御部19が構成されている。そして、新たに設けられた並列数算出部20が備えられている。図1に示す装置は、並列数算出部20を除く構成は、図7に示す構成と同様であるため、ここでは、説明を簡単に行う。
原画像バッファ1は、原画像を符号化順に並べ替え、符号化部12−1〜Nに送る。ただし、本構成では符号化部12−1〜Nが複数あるため、並列処理割り当て部14から送られる原画割り当て情報を元に、符号化順でm枚分のピクチャを、N個ある符号化部12−1〜Nのなかの任意のm個に対してそれぞれ送信する。
復号画像バッファ10は、符号化部12−1〜Nから送られる復号画像を保存し、また必要に応じて参照画像として符号化部12−1〜Nへ送る。ただし、本構成では符号化部12−1〜Nが複数あるため、この復号画像バッファ10も複数の復号画像の同時保存、及び複数の参照画像の同時送出に対応している。
符号化部12−1〜Nは図5に示す符号化部12と同等の機能を有し、本構成例では符号化部12それがN個並列に備わっている。ストリームバッファ13は、各符号化部12−1〜Nから送られる符号化ストリームを保存すると共に、そのデータサイズを発生符号量としてバッファ計算部15、割り当て符号量算出部16、複雑さ計算部8に送る。
並列処理割り当て部14は、入力された並列処理数mを元に、原画像バッファ1のどのピクチャをN個あるどの符号化部(符号化部12−1〜Nのいずれか)へ送るかを求め、原画像バッファ1へ割り当て情報として送信する。原画像バッファ1のピクチャの符号化部12−1〜Nへの割り当て方法としては、例えば、m枚を前詰めで割り当てればよい。
バッファ計算部15は、処理が始まるとレート制御設定情報を元にバッファ位置の初期値Bt_before(0)を計算して保持する。また、ストリームバッファ13から各ピクチャの発生符号量が求まるたびにBt_beforeの値を計算し、割り当て符号量算出部16及び並列数算出部20へ送る。
割り当て符号量算出部16は、外部から与えられるレート制御設定と並列数、バッファ位置、各ピクチャの発生符号量を元に、向こうNピクチャ分の各ピクチャの割り当て符号量T(1)〜T(N)を求め、QP計算部17及び並列数算出部20へ送る。QP計算部17は、複雑さ計算部18から送られる各ピクチャタイプの複雑さ指数と各ピクチャの割り当て符号量を元に、Nピクチャ分のターゲットQPを計算して対応するN個の符号化部12−1〜Nへ送る。
複雑さ計算部18は、QP計算部17から送られる各ピクチャの量子化パラメータQPと、ストリームバッファ13から送られる対象ピクチャの発生符号量からピクチャタイプ毎の複雑さ指数を計算し、割り当て符号量算出部16とQP計算部17へ送る。
並列数算出部20は、割り当て符号量算出部16が出力する各ピクチャの割り当て符号量と、バッファ計算部15が出力するバッファ位置と、外部から指定される並列数とから符号化部12−1〜Nにおける並列処理数mを出力する。ここで、出力される並列処理数mは、N≧mを満たすことが条件である。
次に、図2を参照して、図1に示す並列数算出部20の構成を説明する。図2は、図1に示す並列数算出部20の構成を示すブロック図である。並列数算出部20は、誤差考慮済み符号量計算部21、バッファ推移推定部22、閾値判定部23、並列処理数決定部24から構成される。並列数算出部20には、各ピクチャの割り当て符号量と、並列数と、バッファ位置とが入力される。
誤差考慮済み符号量計算部21は、入力された並列数で指定されるピクチャ数分の割り当て符号量を入力とし、それらにあらかじめ定められた誤差係数k=1.2を乗じた値を各ピクチャの誤差考慮済み符号量としてバッファ推移推定部22に送る。ここで、誤差係数kとして、1.2を乗じているが、この値に限るものではなく、任意の値を用いることが可能である。
バッファ推移推定部22は、バッファ位置として入力された初期バッファ位置を起点として並列数によって規定されるピクチャ枚数分の符号化後バッファ位置(n枚目ピクチャを復号した直後の受信バッファのデータ蓄積量Bt_after)を各ピクチャに関する誤差考慮済み割り当て符号量から計算して閾値判定部23に送る。
閾値判定部23は、並列数によって規定されたピクチャ数分の符号化後バッファ位置(各ピクチャのBt_after)に関して、予め定められた閾値Thとの間で大小比較を施し、その結果を並列処理数決定部24に送る。
並列処理数決定部24は、閾値判定部23の出力を入力し、並列数で規定された値以下の範囲で、閾値判定結果が常に閾値Th以上となる最大のピクチャ番号を求め、それを並列処理数mとして出力する。
次に、図3を参照して、図2に示す並列数算出部20を含む図1に示す映像符号化装置の動作を説明する。図3は、図1に示す映像符号化装置の動作を示すフローチャートである。
まず、符号化が始まると、従来法と同様、原画像バッファ1は、入力画像を符号化順に並べ替える(ステップS1)。続いて、割り当て符号量算出部16は、向こうN(Nは自然数)枚分のピクチャに関して割り当て符号量を算出する(ステップS2)。算出方法は前述した通りである。
次に、誤差考慮済み符号量計算部21は、算出した各ピクチャの割り当て符号量T(1)〜T(N)に対して誤差を加味する(ステップS3)。具体的にはT(1)〜T(N)に誤差係数k=1.2を掛け、誤差考慮済み符号量T’(1)〜T’(N)を算出する。
次に、バッファ推移推定部22は、バッファ推移の推定を行う(ステップS4)。具体的には各ピクチャの符号化終了時点の推定バッファ位置Bt_after(1)〜Bt_after(N)を以下のように求める。
Bt_after(1)=Bt_before(1)−T’(1)
Bt_after(2)=Bt_before(2)−T’(2)
=Bt_before(1)−(T’(1)+T’(2))+b/FPS

Bt_after(N)= Bt_before(N) −T’(N)
=Bt_before(1)−(T’(1)+T’(2)+…T’(N))+(N−1)×b/FPS
そして、閾値判定部23は、Bt_after(1)〜Bt_after(N)を予め定めた閾値Thと比較する(ステップS5)。この比較結果に基づき、並列処理数決定部24は、符号化順に見て最も早く閾値Thを下回るピクチャ番号を見つけ、その直前のピクチャ番号を並列処理数mとして出力する(ステップS6)。例えばBt_after(1)、Bt_after(2)は閾値Thを上回り、Bt_after(3)が閾値Thを下回っていた場合、並列処理数mは2とする。
その後、QP計算部17は、向こうm(並列処理数)枚分のピクチャに対して量子化パラメータQPを算出する(ステップS7)。この時の量子化パラメータQPの計算では、誤差係数k(例えば、1.2)を掛ける前の符号量T(1)〜T(m)の値を元に量子化パラメータQPを算出する。
次に、向こうm枚分のピクチャに対するターゲットQPが求まったら、以降は従来法と同様、符号化部12−1〜Nは、m(並列処理数)枚分のピクチャを並列処理して符号化を行う(ステップS8)。m枚の符号化に必ずしも符号化部12−1〜Nの全てが使われる訳ではなく、m個の符号化部のみが使われることになる。そして、複雑さ計算部18は、求まった発生符号量を元に、複雑さ指数を更新する(ステップS9)。
また、バッファ計算部15は、求まった発生符号量を元に、バッファ位置を更新する(ステップS10)。そして、符号化フレームが残っていたら向こうN枚分のピクチャに対する割り当て符号量算出処理に戻って符号化処理を最後まで繰り返す(ステップS11)。
なお、前述した説明では割り当て符号量に誤差を加味する方法として誤差係数k=1.2を乗算する例を説明したが、誤差係数kを乗算することに限るものではない。例えば、固定値を加算してもよい。また、乗算や加算に限らず、各ピクチャの割り当て符号量を予め定めた誤差係数kを算出するための四則演算による方程式に代入して得られた値に基づいた割り当て符号量としてもよい。
また、誤差係数kを乗算する際の誤差係数kは、割り当て符号量に対して、予め定めた1以上の係数を掛けて安全側に設定することを目的とするため、1以上の係数であればよい。特に、本実施形態では、割り当て符号量T(N)と、実際の発生符号量G(N)の間に乖離が生じるため、その分を補償する際に、安全側に設定するため、1以上の誤差係数を乗算するようにしている。そのため、例えば並列化を行わない状態で予め符号化を行って割り当て符号量T(N)と実際の発生符号量G(N)を算出し、その比を以って「1以上の係数」を定めれるようにしてもよい。
例えば、大量のあらゆる映像を予めエンコードして割り当て符号量T(N)と実際の発生符号量G(N)の平均値をそれぞれ求め、その比を「1以上の係数」とすると手法を用いて誤差係数kを設定することができる。
また、誤差係数kは必ずしも固定値である必要はない。実際にエンコードを行っていくと各フレームの割り当て符号量T(N)と実際の発生符号量G(N)の値が順次求まるので、その最新Mフレーム分の平均値を以って順次更新したり、先頭からずっと積算し続けた値の平均値を使ったりすることも可能である。
以上説明したように、実施形態における映像符号化装置は、複数のピクチャを同時に符号化を行う際に、割り当て符号量に誤差を加味したうえでバッファ推移の推定を行う。そして、映像符号化装置は、同時に符号化を行う適切なピクチャ数を設定する。この構成によれば、復号時においてバッファオーバーフロー及びバッファアンダーフローの発生を低く抑えることができるとともに、符号化速度の高速化を実現することができる。
特に、バッファ位置が下がっている場合は、並列数算出部20が並列処理数を少なくすることで処理速度が遅くなる代わりにバッファアンダーフローのリスクを下げることが可能になる。逆に、バッファ位置が上がっている場合などバッファアンダーフローの危険性が低い場合は、並列数算出部20が並列数を多くすることで処理速度を高めることが可能になる。この結果、バッファアンダーフローのリスクを低く抑えつつ、可能な限り並列処理数を高めることにより高速にエンコードすることができる。
前述した実施形態における映像符号化装置の全部または一部をコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、PLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されるものであってもよい。
以上、図面を参照して本発明の実施の形態を説明してきたが、上記実施の形態は本発明の例示に過ぎず、本発明が上記実施の形態に限定されるものではないことは明らかである。したがって、本発明の技術思想及び範囲を逸脱しない範囲で構成要素の追加、省略、置換、その他の変更を行ってもよい。
バッファアンダーフローのリスクを低く抑えつつ、可能な限り並列処理数を高めることにより高速に符号化することが不可欠な用途に適用できる。
1・・・原画像バッファ、10・・・復号画像バッファ、12−1〜N・・・符号化部、13・・・ストリームバッファ、14・・・並列処理割り当て部、15・・・バッファ計算部、16・・・割り当て符号量算出部、17・・・QP計算部、18・・・複雑さ計算部、19・・・レート制御部、20・・・並列数算出部

Claims (7)

  1. 最大N(Nは2以上の自然数)枚までの複数ピクチャを並列に符号化する符号化部と、N枚の各ピクチャに対する割り当て符号量を算出する割り当て符号量算出部と、前記割り当て符号量に相当する量子化パラメータであるターゲットQPを算出するQP計算部とを備え、映像を符号化する映像符号化装置が行う映像符号化方法であって、
    前記N枚の各ピクチャに対する前記割り当て符号量の誤差に基づいて、前記割り当て符号量を再算出する割り当て符号量再算出ステップと、
    N枚の各ピクチャに対する前記割り当て符号量から各ピクチャの符号化後のバッファのデータ蓄積量の推定量を示すバッファ位置推定値を算出するバッファ位置推定値算出ステップと、
    算出した各ピクチャの前記符号化後のバッファ位置推定値と、予め定められた閾値との大小を比較する比較ステップと、
    前記大小の比較の結果に基づき、前記閾値以上となっているピクチャの枚数を求める枚数算出ステップと、
    前記ピクチャの枚数に基づいて、前記符号化部によって並列に符号化するピクチャの枚数である並列数を算出する並列数算出ステップと
    を有する映像符号化方法。
  2. 前記割り当て符号量再算出ステップでは、各ピクチャの割り当て符号量に対してあらかじめ定めた1以上の係数を乗算する請求項1に記載の映像符号化方法。
  3. 前記割り当て符号量再算出ステップでは、各ピクチャの割り当て符号量に予め定めた固定値を加算する請求項1に記載の映像符号化方法。
  4. 前記割り当て符号量再算出ステップでは、各ピクチャの割り当て符号量を予め定めた四則演算による方程式に代入して算出した値を用いることによって前記誤差に基づいた前記割り当て符号量を求める請求項1に記載の映像符号化方法。
  5. 前記バッファ位置推定値算出ステップでは、前記バッファのバッファ位置として入力された初期バッファ位置を起点として前記並列数によって規定されるピクチャ枚数分の符号化後の前記バッファの前記バッファ位置推定値を、各ピクチャに関して前記誤差に基づいた前記割り当て符号量から計算する請求項1に記載の映像符号化方法。
  6. 映像を符号化する映像符号化装置であって、
    最大N(Nは2以上の自然数)枚までの複数ピクチャを並列に符号化する符号化部と、
    N枚の各ピクチャに対する割り当て符号量を算出する割り当て符号量算出部と、
    前記割り当て符号量に相当する量子化パラメータであるターゲットQPを算出するQP計算部と、
    前記N枚の各ピクチャに対する前記割り当て符号量の誤差に基づいて、前記割り当て符号量を再算出する割り当て符号量再再算出部と、
    N枚の各ピクチャに対する前記割り当て符号量から各ピクチャの符号化後のバッファのデータ蓄積量の推定量を示すバッファ位置推定値を算出するバッファ位置推定値算出部と、
    算出した各ピクチャの前記符号化後のバッファ位置推定値と、予め定められた閾値との大小を比較する比較部と、
    前記大小の比較の結果に基づき、前記閾値以上となっているピクチャの枚数を求める枚数算出部と、
    前記ピクチャの枚数に基づいて、前記符号化部によって並列に符号化するピクチャの枚数である並列数を算出する並列数算出部と
    を備える映像符号化装置。
  7. コンピュータに、請求項1から5のいずれか一項に記載の映像符号化方法を実行させるための映像符号化プログラム。
JP2016001281A 2016-01-06 2016-01-06 映像符号化方法、映像符号化装置及び映像符号化プログラム Active JP6470191B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016001281A JP6470191B2 (ja) 2016-01-06 2016-01-06 映像符号化方法、映像符号化装置及び映像符号化プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016001281A JP6470191B2 (ja) 2016-01-06 2016-01-06 映像符号化方法、映像符号化装置及び映像符号化プログラム

Publications (2)

Publication Number Publication Date
JP2017123545A JP2017123545A (ja) 2017-07-13
JP6470191B2 true JP6470191B2 (ja) 2019-02-13

Family

ID=59306654

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016001281A Active JP6470191B2 (ja) 2016-01-06 2016-01-06 映像符号化方法、映像符号化装置及び映像符号化プログラム

Country Status (1)

Country Link
JP (1) JP6470191B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11323703B2 (en) 2018-07-03 2022-05-03 Nec Corporation Moving-image encoding device, moving-image encoding method, and program
WO2021084679A1 (ja) * 2019-10-31 2021-05-06 株式会社ソシオネクスト 動画像符号化方法、符号化処理方法、動画像符号化装置および符号化処理装置
CN112333526B (zh) * 2020-10-26 2022-08-16 浙江大华技术股份有限公司 一种视频缓冲调节方法、装置、存储介质及电子装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3621598B2 (ja) * 1999-03-04 2005-02-16 日本電信電話株式会社 並列ソフトウェア画像符号化方法、および並列ソフトウェア画像符号化プログラムを記録した記録媒体
JP5706759B2 (ja) * 2011-06-01 2015-04-22 ルネサスエレクトロニクス株式会社 画像符号化装置及び画像符号化方法
JP2015171114A (ja) * 2014-03-11 2015-09-28 キヤノン株式会社 動画像符号化装置

Also Published As

Publication number Publication date
JP2017123545A (ja) 2017-07-13

Similar Documents

Publication Publication Date Title
US9282329B2 (en) Methods and devices for data compression using offset-based adaptive reconstruction levels
JP5152402B2 (ja) 動画像符号化装置、動画像符号化方法及び動画像符号化用コンピュータプログラム
JP5472105B2 (ja) 画像処理装置及び画像処理方法
KR101391661B1 (ko) 동화상 부호화 제어 방법, 동화상 부호화 장치 및 동화상 부호화 프로그램
US6229849B1 (en) Coding device and method
KR101494562B1 (ko) 동화상 부호화 장치, 동화상 부호화 방법 및 동화상 부호화용 컴퓨터 프로그램이 기록된 컴퓨터 판독가능한 기록 매체
US8582898B2 (en) Method and apparatus for encoding and decoding image based on code table selection adapted to residual value distribution
US9955168B2 (en) Constraining number of bits generated relative to VBV buffer
KR100796857B1 (ko) 동화상 부호화 방법 및 장치
JP4668767B2 (ja) 動画像符号化装置及び動画像符号化プログラム
JP6470191B2 (ja) 映像符号化方法、映像符号化装置及び映像符号化プログラム
KR101389919B1 (ko) 동화상 부호화 제어 방법, 동화상 부호화 장치 및 동화상 부호화 프로그램
JP7343817B2 (ja) 符号化装置、符号化方法、及び符号化プログラム
JP2006295535A (ja) 動画像符号化装置および方法
JP4485996B2 (ja) 画像符号化装置及び画像符号化プログラム
KR20040007818A (ko) 동영상 부호화를 위한 dct연산량 조절 방법 및 그 장치
JP7001159B2 (ja) 動画像符号化装置、動画像符号化方法、プログラム
JP2012138661A (ja) 画像処理装置および方法
JP5741073B2 (ja) 画像符号化装置、画像符号化方法、及び画像符号化プログラム
JP3889552B2 (ja) 符号量割り当て装置および方法
JP2009200871A (ja) 符号化装置
JP4962609B2 (ja) 動画像符号化装置及び動画像符号化プログラム
JP4582710B2 (ja) 動画像符号化装置
JP6985899B2 (ja) 画像符号化装置及びその制御方法並びにプログラム
JP2004349855A (ja) 符号化装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181205

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190115

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190117

R150 Certificate of patent or registration of utility model

Ref document number: 6470191

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150