JP2014135720A - 動画像符号化装置、符号化量制御方法およびプログラム - Google Patents

動画像符号化装置、符号化量制御方法およびプログラム Download PDF

Info

Publication number
JP2014135720A
JP2014135720A JP2013253430A JP2013253430A JP2014135720A JP 2014135720 A JP2014135720 A JP 2014135720A JP 2013253430 A JP2013253430 A JP 2013253430A JP 2013253430 A JP2013253430 A JP 2013253430A JP 2014135720 A JP2014135720 A JP 2014135720A
Authority
JP
Japan
Prior art keywords
code amount
macroblock
current
value
unit
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.)
Granted
Application number
JP2013253430A
Other languages
English (en)
Other versions
JP2014135720A5 (ja
JP6259273B2 (ja
Inventor
Takuya Hiraoka
拓也 平岡
Akira Okamoto
彰 岡本
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.)
MegaChips Corp
Original Assignee
MegaChips 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 MegaChips Corp filed Critical MegaChips Corp
Priority to JP2013253430A priority Critical patent/JP6259273B2/ja
Publication of JP2014135720A publication Critical patent/JP2014135720A/ja
Publication of JP2014135720A5 publication Critical patent/JP2014135720A5/ja
Application granted granted Critical
Publication of JP6259273B2 publication Critical patent/JP6259273B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/198Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including smoothing of a sequence of encoding parameters, e.g. by averaging, by choice of the maximum, minimum or median value
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

【課題】フレームよりも短い単位で適切に符号量制御を行うことができる動画像符号化装置、符号化量制御方法およびプログラムを実現する。
【解決手段】動画像符号化装置1000は、符号化部1と、量子化パラメータ決定部2と、目標符号量設定部3とを備える。目標符号量設定部は、マクロブロック数を指定することで、当該マクロブロック数のマクロブロックに割り当てる符号量を目標符号量に設定する。量子化パラメータ決定部は、マクロブロックごとに、動き推定処理で用いられたSATD値に基づいて、現マクロブロックを量子化処理するための量子化パラメータを算出する。動画像符号化装置1000は、算出された量子化パラメータ値により量子化処理を行う。
【選択図】図1

Description

本発明は、動画像(映像)を符号化し、動画像(映像)圧縮処理を行う技術に関する。特に、動画像(映像)圧縮処理を行う場合の符号量を制御する技術に関する。
動画像(映像)圧縮処理を行う場合の符号量の制御は、ある程度長い期間において実行されるのが一般的であり、例えば、GOP(Group Of Picture)単位またはフレーム単位で符号量制御が実行される。例えば、フレーム単位の符号量制御では、フレームごとに割り当てられる符号量が設定され、各フレーム内において、設定された符号量を超えないように発生符号量が制御される。例えば、フレーム内の各マクロブロックの量子化パラメータを調整することで、設定された符号量を超えないように発生符号量が制御される。
GOP単位またはフレーム単位で符号量制御が実行される場合、符号量調整期間が長いため、符号量のピーク値として比較的大きな値が許容されるため、画質の向上を図ることができる。しかしながら、動画像(映像)圧縮処理では、符号量調整期間を長くする程、遅延時間が長くなるので、動画像をリアルタイム伝送する場合等の遅延制限が厳しい状況下では、できる限り、短い符号量調整期間により符号量制御が実行されることが要請される。
そこで、特許文献1には、フレーム単位より短い単位、すなわち、1フレーム内に含まれるマクロブロックの総数未満の所定数のマクロブロックあたりの目標符号量を設定し、符号量制御する技術が開示されている。
特開2011−146883号公報
しかしながら、特許文献1の技術では、現マクロブロック(処理対象中のマクロブロック)の動き探索処理によって得られた予測誤差のSAD値(Sum of Difference)に基づいて、閾値処理により量子化パラメータ値を調整するため、適切に符号量制御ができない場合がある。現マクロブロックの動き探索処理によって得られた予測誤差のSAD値は、現マクロブロックと比較対象マクロブロックとの間の差分値を単純に合計したものであるため、当該差分値のばらつきや周波数成分のばらつきを考慮した値とならず、発生符号量との相関が低い。このため、現マクロブロック(処理対象中のマクロブロック)の動き探索処理によって得られた予測誤差のSAD値(Sum of Absolute Difference)に基づいて、量子化パラメータ値を調整すると、実際の発生符号量とのずれが大きくなり、適切に符号量制御を行うことができない場合が発生する。また、特許文献1の技術では、閾値処理により量子化パラメータ値を調整するため、設定された閾値によって、適切に符号量制御ができない場合がある。
そこで、本発明は、フレームよりも短い単位で適切に符号量制御を行うことができる動画像符号化装置、符号化量制御方法およびプログラムを実現することを目的とする。
上記課題を解決するために、第1の発明は、複数のマクロブロックからなるフレーム画像を形成することができる動画像信号を符号化するとともに、動画像信号を符号化する際に発生する符号化量を制御する動画像符号化装置であって、目標符号量設定部と、量子化パラメータ決定部と、符号化部と、記憶部と、動き推定部と、を備える。
目標符号量設定部は、マクロブロック数を指定することで、当該マクロブロック数のマクロブロックに割り当てる符号量を目標符号量に設定する。
量子化パラメータ決定部は、動画像を符号化するときの量子化処理に用いられる量子化パラメータ値を決定する。
符号化部は、動画像信号に対して、符号化処理を行う。また、符号化部は、量子化パラメータ決定部により決定された量子化パラメータ値を用いて、動画像信号に対して量子化処理を行う。
符号化部は、記憶部と、動き推定部とを備える。
記憶部は、過去のフレーム画像を記憶する。
動き推定部は、記憶部に記憶されている過去のフレーム画像の中から参照用フレーム画像を抽出し、処理対象のマクロブロックである現マクロブロックについて、参照用フレーム画像上のマクロブロックと同じ大きさの画像領域との差分をとることにより差分画像を取得し、取得した当該差分画像のSATD値を取得し、取得した当該SATD値に基づいて、動きベクトルを導出する。
量子化パラメータ決定部は、動き推定部により取得された現マクロブロックのSATD値に基づいて、量子化パラメータ値を決定する。
この動画像符号化装置では、現マクロブロックに対して、動き推定処理で取得されたSATD値を用いて、量子化パラメータ値を決定する。現マクロブロックの動き推定処理で取得されたSATD値は、現マクロブロックを実際に符号化処理したときの発生符号量と高い相関があるため、当該SATD値を用いて量子化パラメータを決定すると、適切に符号量制御を行うことができる。つまり、この動画像符号化装置では、マクロブロック数を指定することで、当該マクロブロック数のマクロブロックに割り当てる符号量を目標符号量に設定し、マクロブロックごとに、発生符号量と相関の高いSATD値に基づいて、量子化パラメータ値を決定する。したがって、この動画像符号化装置では、フレームよりも短い単位で適切に符号量制御を行うことができる。また、この動画像符号化装置では、算出により量子化パラメータ値を決定するので、閾値処理等を行う必要もない。
第2の発明は、第1の発明であって、目標符号量設定部は、2×k1(k1:自然数)個のマクロブロックに割り当てる符号量を目標符号量targetBitとして設定する。
量子化パラメータ決定部は、SATD値用FIFO部と、符号量用FIFO部と、カレント符号量算出部と、QP中央値換算符号量算出部と、QP算出部と、を備える。
SATD値用FIFO部は、N1個(N1:自然数)のマクロブロックのSATD値を記憶することができ、動き推定部により導出された現マクロブロックのSATD値を記憶する。
符号量用FIFO部は、N1個(N1:自然数)のマクロブロックごとの符号量を記憶することができ、現マクロブロックから1つ前のマクロブロックを符号化したときの発生符号量を記憶する。
カレント符号量算出部は、
(1)SATD値用FIFO部から、現マクロブロックのSATD値recent_SATDと、過去k1個(k1:自然数、k1≦N1)のマクロブロックのSATD値とを取得し、当該過去k1個のマクロブロックのSATD値の平均値avrg_AllocatedBitを算出し、
(2)符号量用FIFO部から、過去k1個(k1:自然数、k1≦N1)のマクロブロックの符号量を取得し、当該過去k1個のマクロブロックの符号量の平均値avrg_AllocatedBitと、当該過去k1個のマクロブロックに割り当てられた符号量の合計値usedBitを算出し、
allocatedBit=targetBit−usedBit
avrg_AllocatedBit=allocatedBit/k1
current_AllocatedBit=avrg_AllocatedBit+coe×(recent_SATD−avrg_SATD)
coe:係数
により、現マクロブロックに割り当てる符号量current_AllocatedBitを算出する。
QP中央値換算符号量算出部は、符号量用FIFO部から、現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitを取得し、取得した符号量recent_AllocatedBitを、符号化部1の量子化処理においてとりうるQP値範囲の中央値で量子化した場合の換算符号量を算出する。
QP算出部は、QP中央値換算符号量算出部により算出された、現マクロブロックの1つ前のマクロブロックの符号量の換算符号量と、カレント符号量算出部により算出された現マクロブロックに割り当てる符号量current_AllocatedBitとに基づいて、現マクロブロックを符号化する際の量子化パラメータ値を算出する。
この動画像符号化装置では、2×k1(k1:自然数)個のマクロブロックに割り当てる符号量を目標符号量と設定し、過去k1個のマクロブロックの符号量およびSATD値を用いて、現マクロブロックへの割り当て符号量を精度良く算出することができる。また、この動画像符号化装置では、現マクロブロックから1つ前のマクロブロックの発生符号量を、量子化パラメータ値のとりうる範囲の略中央値で量子化した場合の換算符号量を算出し、算出した当該換算符号量と、過去k1個のマクロブロックの符号量およびSATD値を用いて算出した現マクロブロックへの割り当て符号量との関係に基づいて、現マクロブロックを量子化する際の量子化パラメータ値を算出する。
したがって、この動画像符号化装置では、フレームよりも短い単位で適切に符号量制御を行うことができる。また、この動画像符号化装置では、算出により量子化パラメータ値を決定するので、閾値処理等を行う必要もない。
第3の発明は、第1または第2の発明であって、量子化パラメータ決定部は、QP中央値換算符号量算出部により算出された、現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitのQP中央値換算符号量bitQP26に対して、IIRフィルタ処理を行ったQP中央値換算符号量predBitQP26を取得するIIRフィルタ部をさらに備える。
そして、QP算出部は、
QP=C0−6×log2(current_AllocatedBit/predBitQP26)
C0:QP値の取り得る範囲の中央値
log2():底を「2」とする対数をとる関数
により、現マクロブロックを符号化する際の量子化パラメータ値QPを算出する。
この動画像符号化装置では、所定のマクロブロック数を単位として目標符号量(例えば、2×k1個のマクロブロックに割り当てる符号量)targetBitを設定し、過去k1個のマクロブロックに割り当てられた符号量と、発生符号量と相関の高いSATD値の変化の状況に応じて、現マクロブロックに割り当てる符号量current_AllocatedBitを、
allocatedBit=targetBit−usedBit
avrg_AllocatedBit=allocatedBit/k1
current_AllocatedBit=avrg_AllocatedBit+coe×(recent_SATD−avrg_SATD)
により算出する。
さらに、この動画像符号化装置では、現マクロブロックの1つ前のマクロブロックに割り当てられた符号量をQP値の中央値で符号化した場合の換算符号量(IIRフィルタ処理を行った後の換算符号量)predBitQP26と現マクロブロックに割り当てる符号量current_AllocatedBitとの比(大小関係)に応じて、現マクロブロックに対して量子化処理を実行する際の量子化パラメータ値QPを、
QP=C0−6×log2(current_AllocatedBit/predBitQP26)
C0:QP値の中央値(例えば、QP値が0〜51をとる場合、「26」に設定される。)
により決定する。つまり、この動画像符号化装置では、現マクロブロックの割り当て符号量current_AllocatedBitを、発生符号量と相関の高いSATD値を用いて決定(推測)しているので、現マクロブロックを符号化するときに実際に発生する符号量と現マクロブロックの割り当て符号量current_AllocatedBitとの誤差を小さくすることができる。そして、この動画像符号化装置では、予測精度の高い、現マクロブロックの割り当て符号量current_AllocatedBitと、現マクロブロックの1つ前のマクロブロックに割り当てられた符号量をQP値の中央値で符号化した場合の換算符号量(IIRフィルタ処理を行った後の換算符号量)predBitQP26と現マクロブロックに割り当てる符号量current_AllocatedBitとの比(大小関係)に応じて、現マクロブロックに対して量子化処理を実行する際の量子化パラメータ値QPを決定する。したがって、この動画像符号化装置では、精度の高いQP値の算出を行うことができる。その結果、この動画像符号化装置で符号化される信号の発生符号量は、目標符号量と近い値となるので、この動画像符号化装置において、固定ビットレート(CBR(Constant Bit Rate))による符号量制御を、容易に、かつ、高精度で行うことができる。
第4の発明は、第2の発明であって、QP中央値換算符号量算出部は、符号量換算部と、イントラMB用FIFO部と、インターMB用FIFO部と、第1平均値算出部と、第2平均値算出部と、を備える。
符号量換算部は、現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitを、符号化部の量子化処理においてとりうるQP値範囲の中央値で量子化した場合の換算符号量に換算する。
イントラMB用FIFO部は、N3個(N3:自然数)のイントラマクロブロックのQP中央値換算符号量を記憶することができ、現マクロブロックの1つ前のマクロブロックがイントラマクロブロックである場合、符号量換算部により換算された換算符号量を記憶する。
インターMB用FIFO部は、N4個(N4:自然数)のインターマクロブロックのQP中央値換算符号量を記憶することができ、現マクロブロックの1つ前のマクロブロックがインターマクロブロックである場合、符号量換算部により換算された換算符号量を記憶する。
第1平均値算出部は、イントラMB用FIFO部に記憶されているN3個のイントラマクロブロックのQP中央値換算符号量の平均値predBitQP26(1)を算出する。
第2平均値算出部は、インターMB用FIFO部に記憶されているN4個のインターマクロブロックのQP中央値換算符号量の平均値predBitQP26(0)を算出する。
そして、QP算出部は、
(1)現マクロブロックがイントラマクロブロックである場合、イントラマクロブロックのQP中央値換算符号量の平均値predBitQP26(1)に基づいて、現マクロブロックを符号化する際の量子化パラメータ値を算出し、
(2)現マクロブロックがインターマクロブロックである場合、インターマクロブロックのQP中央値換算符号量の平均値predBitQP26(0)に基づいて、現マクロブロックを符号化する際の量子化パラメータ値を算出する。
この動画像符号化装置では、QP中央値換算符号量算出部は、イントラマクロブロックのQP中央値換算符号量のみを記憶するイントラMB用FIFO部と、インターマクロブロックのQP中央値換算符号量のみを記憶するインターMB用FIFO部と、を備える。そして、この動画像符号化装置では、(1)現マクロブロックがイントラマクロブロックである場合、イントラマクロブロックのQP中央値換算符号量のみの平均値を用いて、QP算出処理を行い、(2)現マクロブロックがインターマクロブロックである場合、インターマクロブロックのQP中央値換算符号量のみの平均値を用いて、QP算出処理を行う。したがって、この動画像符号化装置では、より適切に、イントラマクロブロックおよびインターマクロブロックに符号量を割り当てることができる。イントラマクロブロックとインターマクロブロックとを区別することなく符号量の平均値を算出し、当該平均値により、QP算出処理を行うと、イントラマクロブロックが多く存在していると平均の符号量が大きくなってしまい、例えば、インターマクロブロックに多くの符号量を割り当てることができる場合であっても、少ない符号量しか割り当てられず、適切な符号量割り当て処理が実行できない場合がある。この動画像符号化装置では、上記のとおり、イントラマクロブロックとインターマクロブロックとを区別してQP算出処理を実行するので、現マクロブロックが、イントラマクロブロックであっても、インターマクロブロックであっても、適切に符号量割り当て処理を実行することができる。
第5の発明は、第4の発明であって、QP算出部は、
(1)現マクロブロックがイントラマクロブロックである場合、
QP=C0−6×log2(current_AllocatedBit/predBitQP26(1))
C0:QP値の取り得る範囲の中央値
log2():底を「2」とする対数をとる関数
により、現マクロブロックを符号化する際の量子化パラメータ値QPを算出し、
(2)現マクロブロックがインターマクロブロックである場合、
QP=C0−6×log2(current_AllocatedBit/predBitQP26(0))
C0:QP値の取り得る範囲の中央値
log2():底を「2」とする対数をとる関数
により、現マクロブロックを符号化する際の量子化パラメータ値QPを算出する。
これにより、この動画像符号化装置では、上記に相当する処理を実行することで、イントラマクロブロックとインターマクロブロックとを区別してQP算出処理を実行することができる。したがって、この動画像符号化装置では、現マクロブロックが、イントラマクロブロックであっても、インターマクロブロックであっても、適切に符号量割り当て処理を実行することができる。
第6の発明は、第4または第5の発明であって、量子化パラメータ決定部は、データ変換部と、積分処理部と、カレント符号量補正部と、さらに備える。
データ変換部は、目標符号量targetBitから、1マクロブロックあたりの目標符号量IdealMBBitを取得する。
積分処理部は、現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitと、目標符号量IdealMBBitから、
sum_diff=sum_diff+(IdealMBBit−recent_AllocatedBit)
に相当する処理により、実際に発生した符号量と目標符号量との差の積算値sum_diffを取得する。
カレント符号量補正部は、積算値sum_diffに基づいて、カレント符号量算出部により算出された現マクロブロックに割り当てる符号量current_AllocatedBitを補正する。
そして、 QP算出部は、カレント符号量補正部により補正された符号量current_AllocatedBitに基づいて、現マクロブロックを符号化する際の量子化パラメータ値を算出する。
この動画像符号化装置では、カレント符号量補正部により、発生符号量と目標符号量との差の積算値sum_diffに基づいて、符号量の補正処理を行うため、本来使用できる符号量を余らせている場合、現マクロブロックに対する割り当て符号量を多くし、逆に、符号量を使い過ぎている場合、現マクロブロックに対する割り当て符号量を少なくすることができる。したがって、この動画像符号化装置では、適切に符号量割り当て処理を実現することができる。
第7の発明は、第6の発明であって、カレント符号量補正部は、カレント符号量算出部により算出された現マクロブロックに割り当てる符号量current_AllocatedBitを符号量current_AllocatedBit0としたとき、
current_AllocatedBit1
=current_AllocatedBit0+{sum_diff/(k1×2)}
に相当する処理により、補正後の符号量current_AllocatedBit1を取得する。
QP算出部は、カレント符号量補正部により取得された補正後の符号量current_AllocatedBit1に基づいて、
(1)現マクロブロックがイントラマクロブロックである場合、
QP=C0−6×log2(current_AllocatedBit1/predBitQP26(1))
C0:QP値の取り得る範囲の中央値
log2():底を「2」とする対数をとる関数
により、現マクロブロックを符号化する際の量子化パラメータ値QPを算出し、
(2)現マクロブロックがインターマクロブロックである場合、
QP=C0−6×log2(current_AllocatedBit1/predBitQP26(0))。
C0:QP値の取り得る範囲の中央値
log2():底を「2」とする対数をとる関数
により、現マクロブロックを符号化する際の量子化パラメータ値QPを算出する。
この動画像符号化装置では、カレント符号量補正部により、発生符号量と目標符号量との差の積算値sum_diffに基づいて、上記処理を実行することで、本来使用できる符号量を余らせている場合であっても、符号量を使い過ぎている場合であっても、割り当て符号量を適切に補正することができる。その結果、この動画像符号化装置では、適切に符号量割り当て処理を実現することができる。
第8の発明は、第6または第7の発明であって、QP中央値換算符号量算出部は、過去の所定期間内におけるイントラマクロブロックの出現数intraNumを取得する。
カレント符号量補正部は、現マクロブロックがイントラマクロブロックであり、かつ、過去の所定期間内におけるイントラマクロブロックの出現数intraNumが所定の閾値以下である場合、加算する符号量をadd1(>0)として、
current_AllocatedBit
=current_AllocatedBit1+add1
に相当する処理により、符号量current_AllocatedBitを補正する。
QP算出部は、カレント符号量補正部により補正された符号量current_AllocatedBitに基づいて、現マクロブロックを符号化する際の量子化パラメータ値を算出する。
これにより、この動画像符号化装置では、カレント符号量補正部により、一定期間内において、イントラマクロブロック数が少ないとき、イントラマクロブロックの割り当て符号量を多くすることができる。これにより、この動画像符号化装置では、イントラマクロブロックに対する割り当て符号量が多くなり、より高品質な動画像符号化処理を実現することができる。
第9の発明は、複数のマクロブロックからなるフレーム画像を形成することができる動画像信号を符号化する際に発生する符号化量を制御するための符号化量制御方法であって、目標符号量設定ステップと、SATD値取得ステップと、カレント符号量算出ステップと、QP中央値換算符号量算出ステップと、IIRフィルタステップと、量子化パラメータ決定ステップと、を備える。
目標符号量設定ステップは、2×k1(k1:自然数)個のマクロブロックに割り当てる符号量を目標符号量targetBitとして設定する。
SATD値取得ステップは、動き推定処理において、現マクロブロックと参照フレーム画像との対応画像領域との差分画像から算出されたSATD値を取得する。
カレント符号量算出ステップは、現マクロブロックのSATD値recent_SATDと、過去k1個(k1:自然数、k1≦N1)のマクロブロックのSATD値とを取得し、当該過去k1個のマクロブロックのSATD値の平均値avrg_AllocatedBitを算出し、過去k1個(k1:自然数、k1≦N1)のマクロブロックの符号量を取得し、当該過去k1個のマクロブロックの符号量の平均値avrg_AllocatedBitと、当該過去k1個のマクロブロックに割り当てられた符号量の合計値usedBitを算出し、
allocatedBit=targetBit−usedBit
avrg_AllocatedBit=allocatedBit/k1
current_AllocatedBit=avrg_AllocatedBit+coe×(recent_SATD−avrg_SATD)
coe:係数
により、現マクロブロックに割り当てる符号量current_AllocatedBitを算出する。
QP中央値換算符号量算出ステップは、現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitを取得し、取得した符号量recent_AllocatedBitを、動画像信号を符号化する際の量子化処理においてとりうるQP値範囲の中央値で量子化した場合の換算符号量bitQP26を算出する。
IIRフィルタステップは、QP中央値換算符号量算出ステップにより算出された、現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitのQP中央値換算符号量bitQP26に対して、IIRフィルタ処理を行ったQP中央値換算符号量predBitQP26を取得する。
量子化パラメータ決定ステップは、現マクロブロックを符号化する際の量子化パラメータ値QPを、
QP=C0−6×log2(current_AllocatedBit/predBitQP26)
C0:QP値の取り得る範囲の中央値
log2():底を「2」とする対数をとる関数
により、算出する。
この符号化量制御方法では、所定のマクロブロック数を単位として目標符号量(例えば、2×k1個のマクロブロックに割り当てる符号量)targetBitを設定し、過去k1個のマクロブロックに割り当てられた符号量と、発生符号量と相関の高いSATD値の変化の状況に応じて、現マクロブロックに割り当てる符号量current_AllocatedBitを、
allocatedBit=targetBit−usedBit
avrg_AllocatedBit=allocatedBit/k1
current_AllocatedBit=avrg_AllocatedBit+coe×(recent_SATD−avrg_SATD)
により算出する。
さらに、この符号化量制御方法では、現マクロブロックの1つ前のマクロブロックに割り当てられた符号量をQP値の中央値で符号化した場合の換算符号量(IIRフィルタ処理を行った後の換算符号量)predBitQP26と現マクロブロックに割り当てる符号量current_AllocatedBitとの比(大小関係)に応じて、現マクロブロックに対して量子化処理を実行する際の量子化パラメータ値QPを、
QP=C0−6×log2(current_AllocatedBit/predBitQP26)
C0:QP値の中央値(例えば、QP値が0〜51をとる場合、「26」に設定される。)
により決定する。つまり、この符号化量制御方法では、現マクロブロックの割り当て符号量current_AllocatedBitを、発生符号量と相関の高いSATD値を用いて決定(推測)しているので、現マクロブロックを符号化するときに実際に発生する符号量と現マクロブロックの割り当て符号量current_AllocatedBitとの誤差を小さくすることができる。そして、この符号化量制御方法では、予測精度の高い、現マクロブロックの割り当て符号量current_AllocatedBitと、現マクロブロックの1つ前のマクロブロックに割り当てられた符号量をQP値の中央値で符号化した場合の換算符号量(IIRフィルタ処理を行った後の換算符号量)predBitQP26と現マクロブロックに割り当てる符号量current_AllocatedBitとの比(大小関係)に応じて、現マクロブロックに対して量子化処理を実行する際の量子化パラメータ値QPを決定する。したがって、この符号化量制御方法では、精度の高いQP値の算出を行うことができる。その結果、この符号化量制御方法により、符号化される信号の発生符号量は、目標符号量と近い値となるので、この符号化量制御方法を用いることで、固定ビットレート(CBR(Constant Bit Rate))による符号量制御を、容易に、かつ、高精度で行うことができる。
第10の発明は、複数のマクロブロックからなるフレーム画像を形成することができる動画像信号を符号化する際に発生する符号化量を制御するための符号化量制御方法であって、目標符号量設定ステップと、SATD値取得ステップと、カレント符号量算出ステップと、符号量換算ステップと、イントラMB用記憶ステップと、インターMB用記憶ステップと、第1平均値算出ステップと、第2平均値算出ステップと、QP算出ステップと、を備える。
目標符号量設定ステップは、2×k1(k1:自然数)個のマクロブロックに割り当てる符号量を目標符号量targetBitとして設定する。
SATD値取得ステップは、動き推定処理において、現マクロブロックと参照フレーム画像との対応画像領域との差分画像から算出されたSATD値を取得する。
カレント符号量算出ステップは、現マクロブロックのSATD値recent_SATDと、過去k1個(k1:自然数、k1≦N1)のマクロブロックのSATD値とを取得し、当該過去k1個のマクロブロックのSATD値の平均値avrg_AllocatedBitを算出する。また、カレント符号量算出ステップは、過去k1個(k1:自然数、k1≦N1)のマクロブロックの符号量を取得し、当該過去k1個のマクロブロックの符号量の平均値avrg_AllocatedBitと、当該過去k1個のマクロブロックに割り当てられた符号量の合計値usedBitを算出し、
allocatedBit=targetBit−usedBit
avrg_AllocatedBit=allocatedBit/k1
current_AllocatedBit=avrg_AllocatedBit+coe×(recent_SATD−avrg_SATD)
coe:係数
により、現マクロブロックに割り当てる符号量current_AllocatedBitを算出する。
符号量換算ステップは、現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitを、動画像信号を符号化する際の量子化処理においてとりうるQP値範囲の中央値で量子化した場合の換算符号量に換算する。
イントラMB用記憶ステップは、現マクロブロックの1つ前のマクロブロックがイントラマクロブロックである場合、符号量換算ステップにより換算された換算符号量を記憶する。
インターMB用記憶ステップは、現マクロブロックの1つ前のマクロブロックがインターマクロブロックである場合、符号量換算ステップにより換算された換算符号量を記憶する。
第1平均値算出ステップは、イントラMB用記憶ステップで記憶されたイントラマクロブロックのQP中央値換算符号量の平均値predBitQP26(1)を算出する。
第2平均値算出ステップは、インターMB用記憶ステップで記憶されたインターマクロブロックのQP中央値換算符号量の平均値predBitQP26(0)を算出する。
QP算出ステップは、
(1)現マクロブロックがイントラマクロブロックである場合、イントラマクロブロックのQP中央値換算符号量の平均値predBitQP26(1)に基づいて、現マクロブロックを符号化する際の量子化パラメータ値を算出し、
(2)現マクロブロックがインターマクロブロックである場合、インターマクロブロックのQP中央値換算符号量の平均値predBitQP26(0)に基づいて、現マクロブロックを符号化する際の量子化パラメータ値を算出する。
この符号化量制御方法では、(1)現マクロブロックがイントラマクロブロックである場合、イントラマクロブロックのQP中央値換算符号量のみの平均値を用いて、QP算出処理が実行され、(2)現マクロブロックがインターマクロブロックである場合、インターマクロブロックのQP中央値換算符号量のみの平均値を用いて、QP算出処理が実行される。したがって、この符号化量制御方法では、より適切に、イントラマクロブロックおよびインターマクロブロックに符号量を割り当てることができる。イントラマクロブロックとインターマクロブロックとを区別することなく符号量の平均値を算出し、当該平均値により、QP算出処理を行うと、イントラマクロブロックが多く存在していると平均の符号量が大きくなってしまい、例えば、インターマクロブロックに多くの符号量を割り当てることができる場合であっても、少ない符号量しか割り当てられず、適切な符号量割り当て処理が実行できない場合がある。この符号化量制御方法では、上記のとおり、イントラマクロブロックとインターマクロブロックとを区別してQP算出処理を実行するので、現マクロブロックが、イントラマクロブロックであっても、インターマクロブロックであっても、適切に符号量割り当て処理を実行することができる。
第11の発明は、第9または第10の発明である符号化量制御方法を、コンピュータに実行させるためのプログラムである。
これにより、第9または第10の発明と同様の効果を奏する符号化量制御方法を、コンピュータに実行させるためのプログラムを実現することができる。
本発明によれば、フレームよりも短い単位で適切に符号量制御を行うことができる動画像符号化装置、符号化量制御方法およびプログラムを実現することができる。
第1実施形態に係る動画像符号化装置1000の概略構成図。 第1実施形態に係る動画像符号化装置1000の量子化パラメータ決定部2の概略構成図。 第1実施形態に係る動画像符号化装置1000のIIRフィルタ部26の概略構成図。 動画像符号化装置1000に入力される動画像信号Dinの一例を示す図。 第2実施形態に係る動画像符号化装置2000の概略構成図。 第2実施形態に係る動画像符号化装置2000の量子化パラメータ決定部2Aの概略構成図。 第2実施形態に係る動画像符号化装置1000のQP中央値換算符号量算出部25Aの概略構成図。 第2実施形態に係る動画像符号化装置1000のカレント符号量補正部30の概略構成図。
[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
<1.1:動画像符号化装置の構成>
図1は、第1実施形態に係る動画像符号化装置1000の概略構成図である。
図2は、第1実施形態に係る動画像符号化装置1000の量子化パラメータ決定部2の概略構成図である。
図3は、第1実施形態に係る動画像符号化装置1000のIIRフィルタ部26の概略構成図である。
動画像符号化装置1000は、図1に示すように、入力動画像信号Dinに対して動画像符号化を行う符号化部1と、符号化部1における動画像符号化処理の量子化処理において用いられる量子化パラメータ値を決定する量子化パラメータ決定部2と、目標符号量を設定する目標符号量設定部3と、を備える。
符号化部1は、図1に示すように、減算器101と、セレクタSEL1と、直交変換部102と、量子化部103と、逆量子化部104と、逆直交変換部105と、加算器106と、記憶部107と、動き推定部108と、動き補償部109と、セレクタSEL2と、可変長符号化部110と、を備える。
減算器101は、入力動画像信号Dinと、動き補償部109から出力される動き補償処理を実行した後の動画像信号(参照フレームの動画像信号(例えば、1フレーム前の動画像信号)を用いて動き補償処理を行った後の動画像信号)とを入力とし、両者の差分信号(予測差分信号)を取得する。例えば、現フレームの動画像信号をDinとし、参照フレームの動画像信号に対して動き補償処理を実行した後の動画像信号Dref_MCとし、予測誤差信号をdiffとすると、減算器101は、
diff=Din−Dref_MC
により、予測誤差信号diffを取得する。そして、減算器101は、取得した予測誤差信号diffをセレクタSEL1に出力する。
セレクタSEL1は、現フレームの動画像信号Dinと、減算器101から出力される予測誤差信号diffとを入力とする。セレクタSEL1は、制御部(不図示)からの制御信号SWにより、現フレームの動画像信号Dinおよび予測誤差信号diffのいずれか一方を選択して、直交変換部102および量子化パラメータ決定部2に出力する。具体的には、現フレームの動画像信号に対して、イントラ符号化が実行される場合、セレクタSEL1は、a端子に入力されている現フレームの動画像信号Dinを直交変換部102に出力する。一方、現フレームの動画像信号に対して、インター符号化が実行される場合、セレクタSEL1は、b端子に入力されている予測誤差信号diffを直交変換部102に出力する。
直交変換部102は、セレクタSEL1から出力された信号に対して、マクロブロック単位で直交変換(例えば、整数変換や離散コサイン変換(DCT))を行う。そして、直交変換部102は、直交変換後の信号を量子化部に出力する。
量子化部103は、直交変換部102から出力される信号と、量子化パラメータ決定部2から出力される量子化パラメータ値QPに関する情報とを入力とする。量子化部103は、直交変換部102から出力される直交変換後の信号に対して、量子化パラメータ決定部2により決定された量子化パラメータ値QPを用いて、量子化処理を行う。そして、量子化部103は、量子化処理後の信号を逆量子化部104および可変長符号化部110に出力する。
逆量子化部104は、量子化部103により量子化された信号を入力とする。逆量子化部104は、量子化部103で行った量子化処理と逆の処理(逆量子化処理)を行うことで、量子化部103に入力された信号と同様の信号を取得する。そして、逆量子化部104は、取得した信号を逆直交変換部105に出力する。
逆直交変換部105は、逆量子化部104から出力された信号を入力とする。逆直交変換部105は、逆量子化部104から出力された信号に対して、直交変換部102で行った直交変換と逆の処理(逆直交変換)を行うことで、直交変換部102に入力された信号と同様の信号(予測誤差信号diff’または動画像信号Din’)を取得する。そして、逆直交変換部105は、取得した信号を加算器106に出力する。なお、予測誤差信号diff’は、予測誤差信号diffを、直交変換、量子化処理、逆量子化処理、および、逆直交変換処理を行うことで取得される信号であり、直交変換、量子化処理等に伴う誤差を含む信号である。また、動画像信号Din’は、入力動画像信号Dinを、直交変換、量子化処理、逆量子化処理、および、逆直交変換処理を行うことで取得される信号であり、直交変換、量子化処理等に伴う誤差を含む信号である。
加算器106は、逆直交変換部105から出力される信号と、セレクタSEL2から出力される信号とを入力とし、両者を加算する。なお、イントラ符号化処理が実行される場合、セレクタSEL2において、a端子が選択され、セレクタSEL2からは何も出力されないので、加算器106は、逆直交変換部105から出力される信号を、そのまま、記憶部107に出力する。一方、インター符号化処理が実行される場合、加算器106は、動き補償部109から出力される参照フレームの動き補償後の動画像信号Dref_MC(参照フレームの動画像信号に対して動き補償処理を実行した後の動画像信号)と、逆直交変換部105から出力される信号(予測誤差信号diff’)とを加算し、加算した信号を記憶部107に出力する。
つまり、加算器106は、
(1)イントラ符号化処理が実行される場合、
Din’=Din’
として、動画像信号Din’を記憶部107に出力し、
(2)インター符号化処理が実行される場合、
Din’=diff’+Dref_MC
として、動画像信号Din’を記憶部107に出力する。
記憶部107は、例えば、複数フレーム分の動画像信号(データ)を記憶することができるフレームメモリである。記憶部107は、加算器106から出力される動画像信号を記憶する。また、記憶部107は、参照フレーム(例えば、現フレームの1フレーム前のフレーム)の動画像信号Drefを動き推定部108および動き補償部109に出力する。
動き推定部108は、現フレームの動画像信号Dinと、記憶部107から出力される参照フレームの動画像信号Drefとを入力とする。動き推定部108は、現フレーム画像と参照フレーム画像とを用いて、動き探索処理を行い、例えば、マクロブロックごとに、動きベクトルを決定する。具体的には、動き推定部108は、動き探索処理を行う場合に、現フレームのマクロブロックと参照フレームの所定の画像領域(処理対象マクロブロックを動きベクトルに基づいて移動させた後の参照フレーム画像上の画像領域)との差分画像のSATD値(Sum of absolute transformed differences)を算出し、算出したSATD値が最小となるように、動きベクトルを決定する。そして、動き推定部108は、決定した動きベクトルに関する情報と参照フレームに関する情報とを動き補償部109に出力する。また、動き推定部108は、(最適な)動きベクトルを決定したときのSATD値に関する情報を量子化パラメータ決定部2に出力する。
なお、SATD値は、例えば、アダマール変換により取得される。現フレームのマクロブロックと参照フレームの所定の画像領域(処理対象マクロブロックを動きベクトルにより移動させた後の参照フレーム画像上の画像領域)との差分画像f(x,y)(0≦x≦n−1、0≦y≦n−1、n:自然数)に対して、n×nのアダマール行列Hを、水平方向および垂直方向に施す。つまり、
F(u,v)=H・f(x,y)・H
(H:アダマール行列Hの転置行列)
により、アダマール変換後のデータF(u,v)を取得し、F(u,v)の各成分の絶対値和を取得することで、SATD値が取得される。
動き補償部109は、動き推定部108から出力される動きベクトルおよび参照フレームに関する情報と、記憶部107から出力される参照フレームの動画像信号とを入力とする。動き補償部109は、参照フレーム画像の各画像領域を、動き推定部108に決定された動きベクトルに基づいて、シフトさせることで、動き補償後のフレーム画像を取得する。そして、動き補償部109は、動き補償後のフレーム画像を形成することができる動画像信号(動き補償後の動画像信号)Dref_MCを、減算器101およびセレクタSEL2に出力する。
セレクタSEL2は、動き補償部109から出力される動き補償後の動画像信号Dref_MCを入力とする。セレクタSEL2は、イントラ符号化処理が実行される場合、図1に示すa端子(無入力の端子)を選択し、その出力を加算器106に入力する。つまり、この場合、加算器106には、何も入力されない。一方、インター符号化処理が実行される場合、セレクタSEL2は、b端子を選択し、動き補償後の動画像信号Dref_MCを加算器106に出力する。
可変長符号化部110は、量子化部103から出力される信号を入力とし、入力され信号(量子化信号)に対して可変長符号化処理(エントロピー符号化処理(例えば、ハフマン符号化処理や算術符号化処理))を行う。そして、可変長符号化部110は、処理後の信号Doutを出力する。
量子化パラメータ決定部2は、図2に示すように、符号量取得部21と、符号量用FIFO部22と、SATD用FIFO部23と、カレント符号量算出部24と、QP中央値換算符号量算出部25と、IIRフィルタ部26と、QP算出部27と、を備える。
符号量取得部21は、可変長符号化部110から出力される符号化信号Doutを入力とする。符号量取得部21は、符号化信号Doutから、現マクロブロック(処理対象となっているマクロブロック)の符号量を取得し、取得した符号量を符号量用FIFO部22に出力する。なお、符号量取得部21は、例えば、可変長符号化部110の後段に設置されるビデオバッファ(不図示)、あるいは、符号化部1内に設置されるものであってもよい。この場合、量子化パラメータ決定部2の符号量取得部21は省略可能である。
符号量用FIFO部22は、FIFO(First In Fist Out)メモリであり、符号量取得部21から出力される符号量のデータを記憶する。なお、符号量用FIFO部22は、N1個(N1:自然数)のマクロブロックの符号量を記憶することができる。また、符号量用FIFO部22に記憶されている最新のマクロブロックの符号量(つまり、最後に符号量用FIFO部22に入力されたマクロブロックの符号量)をrecent_AllocatedBitとする。符号量用FIFO部22は、他の機能部(例えば、カレント符号量算出部24、QP中央値換算符号量算出部等)からの要求に従い、符号量用FIFO部22に記憶保持されている任意のデータを読み出すことができる。
SATD用FIFO部23は、FIFO(First In Fist Out)メモリであり、動き推定部108から出力されるSATD値に関する情報を入力とする。なお、SATD用FIFO部23は、N1個(N1:自然数)のマクロブロックのSATD値を記憶することができる。また、SATD用FIFO部23に記憶されている最新のマクロブロックのSATD値(つまり、最後にSATD用FIFO部23に入力されたマクロブロックのSATD値)をrecent_SATDとする。SATD用FIFO部23は、他の機能部(例えば、カレント符号量算出部24等)からの要求に従い、SATD用FIFO部23に記憶保持されている任意のデータを読み出すことができる。
カレント符号量算出部24は、符号量用FIFO部22に記憶されている、最新のマクロブロックの符号量recent_AllocatedBitを含むk1個(k1:自然数、k1≦N1)のマクロブロックの符号量を、符号量用FIFO部22から読み出す。なお、読み出すk1個のマクロブロックの符号量は、符号量用FIFO部22に記憶されているデータのうち、最新のデータから過去へ向かって(時系列に)連続するk1個のマクロブロックの符号量(のデータ)である。また、カレント符号量算出部24は、SATD用FIFO部23に記憶されている、最新のマクロブロックのSATD値recent_SATDと、過去k1個(k1:自然数、k1≦N1)のマクロブロックのSATD値を、SATD用FIFO部23から読み出す。なお、読み出すk1個のマクロブロックのSATD値は、SATD用FIFO部23に記憶されているデータのうち、現マクロブロックの1つ前のデータから過去へ向かって(時系列に)連続するk1個のマクロブロックのSATD値(のデータ)である。
また、カレント符号量算出部24には、目標符号量設定部により設定された目標符号量が入力される。カレント符号量算出部24は、目標符号量と、符号量用FIFO部22から読み出した複数のマクロブロックの符号量と、最新のマクロブロックのSATD値recent_SATDと、SATD用FIFO部23から読み出した複数のSATD値とに基づいて、現マクロブロック(処理対象マクロブロック)に割り当てる符号量current_AllocatedBitを算出する(詳細については後述)。そして、カレント符号量算出部24は、算出した、現マクロブロック(処理対象マクロブロック)に割り当てる符号量current_AllocatedBitをQP算出部27に出力する。
QP中央値換算符号量算出部25は、最新のマクロブロックの符号量recent_AllocatedBitを、符号量用FIFO部22から読み出し、読み出した符号量recent_AllocatedBitを、QP値の中央値(QP値の取り得る範囲の略中央値)で量子化した場合の符号量を算出する。そして、算出したQP中央値換算符号量をIIRフィルタ部26に出力する。
IIRフィルタ部26は、図3に示すように、更新判定部261と、第1ゲイン調整部262と、セレクタ263と、加算器264と、IIR用記憶部265と、第2ゲイン調整部266と、セレクタ267と、を備える。
更新判定部261は、セレクタSEL1からの出力を入力とする。更新判定部261は、動画像符号化装置1000においてインター符号化処理が実行されている場合であって、セレクタSEL1から出力される予測誤差信号diffが「0」である場合、つまり、現マクロブロックの予測誤差信号diffが「0」である場合(現マクロブロックの予測誤差成分値が、現マクロブロック内の全ての画素において「0」である場合)、更新判定フラグを「0」に設定する。一方、上記以外の場合、更新判定部261は、更新判定フラグを「1」に設定する。更新判定部261は、更新判定フラグをセレクタ263およびセレクタ267に出力する。
第1ゲイン調整部262は、QP中央値換算符号量算出部から出力されるQP中央値換算符号量bitQP26に対して、係数a(0≦a≦1)による乗算処理を行い、乗算後の符号量をセレクタ263に出力する。
セレクタ263は、更新判定部261から入力される更新判定フラグが「1」である場合、第1ゲイン調整部262からの出力を加算器264に出力する。一方、セレクタ263は、更新判定部261から入力される更新判定フラグが「0」である場合、加算器264には、何にも出力しない。
加算器264は、セレクタ263の出力およびセレクタ267の出力を入力とし、両者を加算し、加算結果をQP中央値換算符号量predBitQP26として、QP算出部27に出力する。
IIR用記憶部265は、加算器264から出力されるQP中央値換算符号量predBitQP26を入力とし、1MBに相当する時間遅延させて、第2ゲイン調整部266およびセレクタ267に出力する。
第2ゲイン調整部266は、IIR用記憶部265からの出力に対して、係数1−a(0≦a≦1)による乗算処理を行い、乗算後の符号量をセレクタ267に出力する。
セレクタ267は、更新判定部261から入力される更新判定フラグが「1」である場合、第2ゲイン調整部266からの出力を加算器264に出力する。一方、セレクタ267は、更新判定部261から入力される更新判定フラグが「0」である場合、IIR用記憶部265からの出力を加算器264に出力する。
QP算出部27は、IIRフィルタ部26の加算器264から出力されるQP中央値換算符号量predBitQP26と、カレント符号量算出部24から出力される現マクロブロックに割り当てる符号量current_AllocatedBitとを入力とする。QP算出部27は、QP中央値換算符号量predBitQP26と、現マクロブロックに割り当てる符号量current_AllocatedBitとに基づいて、現マクロブロックの量子化処理に使用する量子化パラメータ値QPを算出する。そして、QP算出部27は、算出した量子化パラメータ値QPを量子化部103に出力する。
目標符号量設定部3は、マクロブロック数を指定することにより、目標符号量を設定する。例えば、k1×2個のマクロブロックに割り当てる符号量が目標符号量に設定される。なお、目標符号量は、外部IFを介して設定されるものであってもよいし、予め設定されているものであってもよい。
<1.2:動画像符号化装置の動作>
以上のように構成された動画像符号化装置1000の動作について、以下、説明する。
図4は、動画像符号化装置1000に入力される動画像信号Dinの一例を示す図である。図4に示す動画像信号Dinは、30fpsの信号であり、例えば、固定ビットレート(CBR(Constant Bit Rate))制御を行うために、Bピクチャを用いない動画像信号であるものとする。具体的には、動画像信号Dinは、最初のフレーム(ピクチャ)のみIピクチャであり、それ以降のフレーム(ピクチャ)は、全てPピクチャから構成されている。つまり、動画像信号Dinは、最初の30フレームのみ、図4(a)に示すピクチャ構成となっており、それ以降は、30フレームごとに、図4(b)に示すピクチャ構成となっている。ピクチャ番号を単位時間(図4の場合、単位時間は1秒であり、単位時間あたりのフレーム(ピクチャ)数は、「30」である。)において、時系列に順番に振るものとすると、最初の30フレームにおいて、ピクチャ番号0のピクチャのみがIピクチャであり、ピクチャ番号1〜29のピクチャはPピクチャである。さらに、それ以降については、30フレームごとに、ピクチャ番号0〜29のピクチャ(全てのピクチャ)はPピクチャである。
なお、以下では、動画像信号Dinは、フレームレートが30fpsであり、最初のフレームのみがIピクチャであり、それ以降のフレームは全てPピクチャであるものとして、説明する。また、動画像符号化装置1000において、動画像信号DinのPピクチャの所定のマクロブロックに対してイントラ符号化処理(マクロブロック単位のイントラ符号化処理)が実行されるものであってもよい。
動画像信号Dinは、符号化部1の減算器101と、セレクタSEL1と、動き推定部108とに入力される。
現マクロブロック(処理対象マクロブロック)がイントラ符号化処理される場合、セレクタSEL1では、制御信号SWにより、図1のa端子側が選択され、動画像信号Dinは、直交変換部102に入力される。一方、現マクロブロックがインター符号化処理される場合、セレクタSEL1では、制御信号SWにより、図1のb端子側が選択される。この場合、減算器101では、動画像信号Dinから、動き補償部109から出力される動き補償後の動画像信号Dref_MCを減算することで、予測誤差信号diffが取得される。すなわち、減算器101では、
diff=Din−Dref_MC
に相当する処理が実行される。
直交変換部102では、セレクタSEL1から出力される動画像信号Dinまたは予測誤差信号diffに対して、直交変換(例えば、整数変換やDCT)が実行される。そして、直交変換後の信号が量子化部103に出力される。
量子化部103では、直交変換後の信号に対して、量子化パラメータ決定部2から出力される量子化パラメータ値QPによる量子化処理が実行される。
量子化部103により量子化された信号は、可変長符号化部110にて、可変長符号化処理(例えば、ハフマン符号化処理や算術符号化処理)が実行され、符号化部1から符号化信号Doutとして出力される。
また、量子化部103により量子化された信号は、逆量子化部104により逆量子化され、さらに、逆直交変換部105により逆直交変換が実行される。
逆直交変換された信号は、加算器106に入力され、加算器106にて、以下の加算処理が実行される。
(1)イントラ符号化処理が実行される場合、
Din’=Din’
として、動画像信号Din’が、加算器106から記憶部107に出力される。
(2)インター符号化処理が実行される場合、
Din’=diff’+Dref_MC
により取得された動画像信号Din’が、加算器106から記憶部107に出力される。
記憶部107では、加算器106から出力される動画像信号Din’が記憶される。
動き推定部108では、現フレーム画像と記憶部107から読み出された参照フレーム画像とを用いて、動き探索処理が実行され、例えば、マクロブロックごとに、動きベクトルが決定される。具体的には、動き推定部108では、動き探索処理を行う場合に、現フレームのマクロブロックと参照フレームの所定の画像領域(処理対象マクロブロックを動きベクトルにより移動させた後の参照フレーム画像上の画像領域)との差分画像のSATD値(Sum of absolute transformed differences)が算出され、算出されたSATD値が最小となるように、動きベクトルが決定される。そして、動き推定部108により決定された動きベクトルに関する情報と参照フレームに関する情報とが動き補償部109に出力される。また、動き推定部108により(最適な)動きベクトルが決定されたときのSATD値に関する情報が量子化パラメータ決定部2に出力される。
動き補償部109では、参照フレーム画像の各画像領域を、動き推定部108に決定された動きベクトルに基づいて、シフトさせることで、動き補償後のフレーム画像が取得される。そして、動き補償部109により取得された動画像信号、すなわち、動き補償後のフレーム画像を形成することができる動画像信号(動き補償後の動画像信号)Dref_MCが、減算器101およびセレクタSEL2に出力される。
(1.2.1:量子化パラメータ決定部の動作)
次に、量子化パラメータ決定部2の動作について、説明する。
可変長符号化部110から出力された符号化信号Doutが、量子化パラメータ決定部2の符号量取得部21に入力される。
符号量取得部21では、符号化信号Doutからマクロブロックごとの符号量が取得され、取得された符号量が符号量用FIFO部22に入力される。
符号量用FIFO部22では、マクロブロックごとの符号量(符号量に関するデータ)が記憶される。具体的には、符号量用FIFO部22では、N1個のマクロブロックの符号量が記憶保持されており、最後に符号量用FIFO部22に入力された符号量、つまり、最新のマクロブロックの符号量がrecent_AllocatedBitであり、最新のマクロブロックの符号量が符号量用FIFO部22に入力される度に、一番古いマクロブロックの符号量(符号量に関するデータ)が符号量用FIFO部22から排出(破棄)される。つまり、符号量用FIFO部22は、N1個のマクロブロックの符号量(符号量データ)をキュー・メモリ形式(FIFOメモリ形式)で記憶保持する。
また、動き推定部108により取得された現マクロブロックのSATD値が量子化パラメータ決定部2のSATD用FIFO部23に入力される。
SATD用FIFO部23では、マクロブロックごとのSATD値が記憶される。具体的には、SATD用FIFO部23では、N1個のマクロブロックのSATD値が記憶保持されており、最後にSATD用FIFO部23に入力されたSATD値、つまり、最新のマクロブロックのSATD値がrecent_SATDであり、最新のマクロブロックのSATD値がSATD用FIFO部23に入力される度に、一番古いマクロブロックのSATD値(SATD値に関するデータ)がSATD用FIFO部23から排出(破棄)される。つまり、SATD用FIFO部23は、N2個のマクロブロックのSATD値(SATD値に関するデータ)をキュー・メモリ形式(FIFOメモリ形式)で記憶保持する。
カレント符号量算出部24は、符号量用FIFO部22に記憶されている、最新のマクロブロックの符号量recent_AllocatedBitを含むk1個(k1:自然数)のマクロブロックの符号量(符号量データ)を、符号量用FIFO部22から読み出す。また、カレント符号量算出部24は、SATD用FIFO部23に記憶されている、最新のマクロブロックのSATD値recent_SATDを含むk1個(k1:自然数)のマクロブロックのSATD値を、SATD用FIFO部23から読み出す。
また、目標符号量設定部3により、目標符号量が設定される。目標符号量は、k1×2個のマクロブロックの理想符号量(k1×2個のマクロブロックに割り当てられる符号量)である。
カレント符号量算出部24では、目標符号量と、符号量用FIFO部22から読み出したk1個のマクロブロックの符号量と、最新のマクロブロックのSATD値recent_SATDと、SATD用FIFO部23から読み出したk1個のSATD値とに基づいて、現マクロブロック(処理対象マクロブロック)に割り当てる符号量current_AllocatedBitが算出される。具体的には、カレント符号量算出部24は、以下の(1)〜(3)の処理により、符号量current_AllocatedBitを算出する。
(1)SATD値の平均値の算出
カレント符号量算出部24は、SATD用FIFO部23から読み出したk1個のSATD値の平均値を算出し、算出した平均値をavrg_SATDとする。
(2)割り当て符号量の平均値の算出
カレント符号量算出部24は、符号量用FIFO部22から読み出したk1個のマクロブロックの符号量の合計値usedBitを算出する。そして、未来のk1個のマクロブロックに割り当てる符号量allocatedBitを、
allocatedBit=targetBit−usedBit
targetBit:目標符号量(2×k1個のマクロブロックに割り当てる符号量)
usedBit:過去k1個のマクロブロックに割り当てられた符号量
により算出する。これにより、現マクロブロックを含む未来のk1個のマクロブロックに割り当てる符号量allocatedBitが算出される。
そして、カレント符号量算出部24は、
avrg_AllocatedBit=allocatedBit/k1
により、未来のk1個のマクロブロックの各マクロブロックの符号量の平均値avrg_AllocatedBitを算出する。
(3)現マクロブロックに割り当てる符号量の算出
カレント符号量算出部24は、
current_AllocatedBit=avrg_AllocatedBit+coe×(recent_SATD−avrg_SATD)
recent_SATD:SATD用FIFO部23に記憶されている最新のマクロブロックのSATD値
coe:係数
により、現マクロブロックに割り当てる符号量を算出する。つまり、recent_SATDは、動き推定部108により、算出された現マクロブロックのSATD値であり、当該SATD値と現マクロブロックを含む過去k1個のSATD値の平均値avrg_SATDとの差分(recent_SATD−avrg_SATD)は、現マクロブロックに割り当てる符号量の増減と相関する。したがって、(recent_SATD−avrg_SATD)に基づいて、現マクロブロックの割り当て符号量を決定(推定)することで、現マクロブロックに実際に割り当てられる符号量に近い値の符号量を算出することができる。なお、係数coeは、SATD値と符号量との調整用の係数である。なお、SATD値と符号量とが1:1の比例関係にある場合、係数coeは「1」に設定されるので、この場合、係数coeによる乗算処理は省略可能である。
また、符号量用FIFO部22およびSATD用FIFO部23に記憶保持されているデータがk1個未満の場合、平均値avrg_AllocatedBit、avrg_SATD等を所定の値(記憶保持されているデータ数による平均値や、平均値の近似値や、平均値の推定値等)に設定するようにしてもよい。
以上のように、カレント符号量算出部24により算出された、現マクロブロックの割り当て符号量current_AllocatedBitは、QP算出部27に出力される。
QP中央値換算符号量算出部25は、符号量用FIFO部22に記憶されている最新のマクロブロック(現マクロブロックの1つ前のマクロブロック)の符号量recent_AllocatedBitを、符号量用FIFO部22から読み出す。そして、QP中央値換算符号量算出部25では、最新のマクロブロック(現マクロブロックの1つ前のマクロブロック)の符号量recent_AllocatedBitが、QP値の中央値(QP値の取り得る範囲の略中央値)で量子化した場合の符号量bitQP26を算出する。具体的には、QP中央値換算符号量算出部25は、
bitQP26=recent_AllocatedBit/2^((C0―recent_AllocatedBit)/6)
C0:QP値の中央値
により、最新のマクロブロック(現マクロブロックの1つ前のマクロブロック)の符号量recent_AllocatedBitを、QP値の中央値で量子化した場合の換算符号量bitQP26を算出する。
なお、C0は、例えば、QP値が0〜51をとる場合、「26」に設定される。また、上記数式では、量子化パラメータ値が6増えると、符号量は2倍になるものとしている。
以上により、QP中央値換算符号量算出部25で算出された、最新のマクロブロック(現マクロブロックの1つ前のマクロブロック)のQP値の中央値での換算符号量bitQP26は、IIRフィルタ部26に出力される。
IIRフィルタ部26では、更新判定部261により、現マクロブロックの予測誤差信号diffが「0」であるか否かが判定される。現マクロブロックの予測誤差信号diffが「0」である場合(現マクロブロックの予測誤差成分値が、現マクロブロック内の全ての画素において「0」である場合)、更新判定フラグは「0」に設定される。一方、上記以外の場合、更新判定部261により、更新判定フラグは「1」に設定される。
そして、IIRフィルタ部26では、以下の処理が実行される。
(1)更新判定フラグが「1」である場合
IIRフィルタ部26は、
predBitQP26(MB(N))=(1−a)×predBitQP26(MB(N−1))+a×bitQP(MB(N))
predBitQP26(MB(N)):N番目のマクロブロックのQP値の中央値換算符号量(IIRフィルタ部26に入力されているデータ)のフィルタ処理後QP値の中央値換算符号量
predBitQP26(MB(N−1)):N−1番目のマクロブロック(N番目のマクロブロックの1つ前のマクロブロック)のQP値の中央値換算符号量のフィルタ処理後の値
a:内分比(0≦a≦1)
により、IIRフィルタ処理後のQP値の中央値換算符号量predBitQP26を算出する。比例係数aは、例えば、「1/32」であり、この場合、bitQP(MB(N))とpredBitQP26(MB(N−1))(入力データの1つ前のマクロブロックについてのデータ)との重み付けは、1:31となる。IIRフィルタ部26では、このように過去のデータに対する重み付けを大きくすることで、IIRフィルタ処理後のQP値の中央値換算符号量predBitQP26の変化を緩やかなものにする。つまり、QP値を急激に変化させると、符号化される動画像の画質が急激に変化する場合があるため、これを適切に防止するために、IIRフィルタ部26では、上記のように、IIRフィルタ処理後のQP値の中央値換算符号量predBitQP26が急激に変化しないようにしている。
(2)更新判定フラグが「0」である場合
IIRフィルタ部26は、
predBitQP26(MB(N))=predBitQP26(MB(N−1))
とする。つまり、予測誤差信号が「0」である場合、現在設定されているQP値を使用する方が適切な符号化処理が実行できると推測できるため、IIRフィルタ部26は、更新処理を実行しない。
上記処理により、IIRフィルタ部26で処理されたIIRフィルタ処理後のQP値の中央値換算符号量predBitQP26は、QP算出部27に出力される。
QP算出部27では、QP中央値換算符号量predBitQP26と、現マクロブロックに割り当てる符号量current_AllocatedBitとに基づいて、現マクロブロックの量子化処理に使用する量子化パラメータ値QPを算出する。具体的には、QP算出部27は、量子化パラメータ値QPを、
QP=C0−6×log2(current_AllocatedBit/predBitQP26)
C0:QP値の中央値(例えば、QP値が0〜51をとる場合、「26」に設定される。)
log2(x):底を「2」とする対数をとる関数
により算出する。
なお、上記数式では、量子化パラメータ値が6増えると、符号量は2倍になるものとしている。また、QP算出部27では、上記数式を
QP=C0−6×(log2(current_AllocatedBit)―log2(predBitQP26))
と変形し、この数式に相当する処理により、量子化パラメータ値QPを決定するようにしてもよい。
さらに、対数をとる関数log2(x)に相当する処理を、LUT(ルック・アップ・テーブル)等により処理するようにしてもよい。
このように、QP算出部27では、1つ前のマクロブロックのQP値の中央値換算符号量predBitQP26(IIRフィルタ処理後のデータ)と、符号量との相関の高いSATD値に基づいて算出した現マクロブロックの割り当て符号量current_AllocatedBitとの比を算出し、その算出結果に基づいて、現マクロブロックのデータに対する量子化処理に使用する量子化パラメータ値QPを上記数式により決定する。
そして、決定された量子化パラメータ値QPは、量子化部103に出力され、量子化部103では、決定された量子化パラメータ値QPにより、現マクロブロックに対して量子化処理が実行される。
以上のように、動画像符号化装置1000では、所定のマクロブロック数を単位として目標符号量(例えば、2×k1個のマクロブロックに割り当てる符号量)targetBitを設定し、過去k1個のマクロブロックに割り当てられた符号量と、発生符号量と相関の高いSATD値の変化の状況に応じて、現マクロブロックに割り当てる符号量current_AllocatedBitを、
allocatedBit=targetBit−usedBit
avrg_AllocatedBit=allocatedBit/k1
current_AllocatedBit=avrg_AllocatedBit+coe×(recent_SATD−avrg_SATD)
により算出する。
さらに、動画像符号化装置1000では、現マクロブロックの1つ前のマクロブロックに割り当てられた符号量をQP値の中央値で符号化した場合の換算符号量(IIRフィルタ処理を行った後の換算符号量)predBitQP26と現マクロブロックに割り当てる符号量current_AllocatedBitとの比(大小関係)に応じて、現マクロブロックに対して量子化処理を実行する際の量子化パラメータ値QPを、
QP=C0−6×log2(current_AllocatedBit/predBitQP26)
C0:QP値の中央値(例えば、QP値が0〜51をとる場合、「26」に設定される。)
により決定する。つまり、動画像符号化装置1000では、現マクロブロックの割り当て符号量current_AllocatedBitを、発生符号量と相関の高いSATD値を用いて決定(推測)しているので、現マクロブロックを符号化するときに実際に発生する符号量と現マクロブロックの割り当て符号量current_AllocatedBitとの誤差を小さくすることができる。そして、動画像符号化装置1000では、予測精度の高い、現マクロブロックの割り当て符号量current_AllocatedBitと、現マクロブロックの1つ前のマクロブロックに割り当てられた符号量をQP値の中央値で符号化した場合の換算符号量(IIRフィルタ処理を行った後の換算符号量)predBitQP26と現マクロブロックに割り当てる符号量current_AllocatedBitとの比(大小関係)に応じて、現マクロブロックに対して量子化処理を実行する際の量子化パラメータ値QPを決定する。したがって、動画像符号化装置1000では、精度の高いQP値の算出を行うことができる。その結果、動画像符号化装置1000で符号化される信号の発生符号量は、目標符号量と近い値となるので、動画像符号化装置1000において、固定ビットレート(CBR(Constant Bit Rate))による符号量制御を、容易に、かつ、高精度で行うことができる。
また、動画像符号化装置1000では、目標符号量をマクロブロック数により設定することができる。したがって、動画像符号化装置1000では、フレームよりも短い単位で適切に符号量制御を行うことができる。
[第2実施形態]
次に、第2実施形態について、説明する。
なお、本実施形態において、上記実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
<2.1:動画像符号化装置の構成>
図5は、第2実施形態に係る動画像符号化装置2000の概略構成図である。
図6は、第2実施形態に係る動画像符号化装置2000の量子化パラメータ決定部2Aの概略構成図である。
図7は、第2実施形態に係る動画像符号化装置1000のQP中央値換算符号量算出部25Aの概略構成図である。
図8は、第2実施形態に係る動画像符号化装置1000のカレント符号量補正部30の概略構成図である。
本実施形態の動画像符号化装置2000は、第1実施形態の動画像符号化装置1000において、量子化パラメータ決定部2を、量子化パラメータ決定部2Aに置換した構成を有している。
本実施形態の量子化パラメータ決定部2Aは、図6に示すように、第2実施形態の量子化パラメータ決定部2において、QP中央値換算符号量算出部25を、QP中央値換算符号量算出部25Aに置換し、IIRフィルタ部26を削除し、データ変換部28と、積分処理部29と、カレント符号量補正部30とを追加した構成を有している。
QP中央値換算符号量算出部25Aは、図7に示すように、最新のマクロブロックの符号量recent_AllocatedBitと、現マクロブロック(処理対象マクロブロック)が、イントラマクロブロックか、インターマクロブロックのいずれであるかを示すフラグIntra/Inter_flagとを入力する。フラグIntra/Inter_flagは、動画像符号化装置2000を制御する制御部(不図示)により取得され、量子化パラメータ決定部2Aに入力されるものであってもよい。また、フラグIntra/Inter_flagは、符号化部1により取得され、量子化パラメータ決定部2Aに入力されるものであってもよい。
QP中央値換算符号量算出部25Aは、フラグIntra/Inter_flagに基づいて、イントラマクロブロック用のQP中央値換算符号量predBitQP26(1)と、インターマクロブロック用のQP中央値換算符号量predBitQP26(0)と、切り替えて、QP中央値換算符号量predBitQP26として、QP算出部27に出力する。
また、QP中央値換算符号量算出部25Aは、フラグIntra/Inter_flagを記憶し、所定期間内におけるイントラマクロブロック数を、イントラマクロブロック数intraNumとして、カレント符号量補正部30に出力する。
QP中央値換算符号量算出部25Aは、図7に示すように、符号量換算部251と、セレクタ252と、イントラMB用FIFO部253と、インターMB用FIFO部254と、第1平均値算出部255と、第2平均値算出部256と、セレクタ257、遅延器258とを備える。また、QP中央値換算符号量算出部25Aは、図7に示すように、フラグ用FIFO部259と、カウンタ部260とを備える。
符号量換算部251は、符号量用FIFO部から、現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitを取得し、取得した符号量recent_AllocatedBitを、符号化部1の量子化処理においてとりうるQP値範囲の中央値で量子化した場合のQP中央値換算符号量を算出する。符号量換算部251は、算出したQP中央値換算符号量をセレクタ252に出力する。
セレクタ252は、符号量換算部251からの出力を入力する。
セレクタ252は、
(1)入力されるフラグIntra/Inter_flagがイントラマクロブロックであることを示す値である場合、つまり、現マクロブロックの1つ前のマクロブロックがイントラマクロブロックである場合、符号量換算部251からの出力を、イントラMB用FIFO部253に出力し、
(2)入力されるフラグIntra/Inter_flagがインターマクロブロックであることを示す値である場合、つまり、現マクロブロックの1つ前のマクロブロックがインターマクロブロックである場合、符号量換算部251からの出力を、インターMB用FIFO部254に出力する。
イントラMB用FIFO部253は、FIFO(First In Fist Out)メモリであり、N3個(N3:自然数)のマクロブロックごとの換算符号量を記憶することができる。イントラMB用FIFO部253は、現マクロブロックから1つ前のマクロブロックがイントラマクロブロックである場合、セレクタ252から出力される、符号量換算部251により取得されたQP中央値換算符号量を記憶する。なお、イントラMB用FIFO部253のN3個のデータの初期値は、例えば、入力される画像サイズや、ピクチャサイズに基づいて、設定されることが好ましい。
インターMB用FIFO部254は、FIFO(First In Fist Out)メモリであり、N4個(N4:自然数)のマクロブロックごとの符号量を記憶することができる。インターMB用FIFO部254は、現マクロブロックから1つ前のマクロブロックがイントラマクロブロックである場合、セレクタ252から出力される、符号量換算部251により取得されたQP中央値換算符号量を記憶する。なお、イントラMB用FIFO部253のN3個のデータの初期値は、例えば、入力される画像サイズや、ピクチャサイズに基づいて、設定されることが好ましい。また、N4は、N3と同じ値であってもよい。
第1平均値算出部255は、イントラMB用FIFO部253に記憶されているN3個のQP中央値換算符号量の平均値を算出し、算出した平均値を、predBitQP26(1)として、セレクタ257に出力する。
第2平均値算出部256は、インターMB用FIFO部254に記憶されているN4個のQP中央値換算符号量の平均値を算出し、算出した平均値を、predBitQP26(0)として、セレクタ257に出力する。
セレクタ257は、第1平均値算出部255の出力と、第2平均値算出部256の出力とを入力とする。また、セレクタ257は、フラグIntra/Inter_flagを入力する。
セレクタ257は、
(1)入力されるフラグIntra/Inter_flagがイントラマクロブロックであることを示す値である場合、つまり、現マクロブロックがイントラマクロブロックである場合、第1平均値算出部255からの出力predBitQP26(1)を、predBitQP26として、QP算出部27に出力し、
(2)入力されるフラグIntra/Inter_flagがインターマクロブロックであることを示す値である場合、つまり、現マクロブロックがインターマクロブロックである場合、第2平均値算出部256からの出力predBitQP26(0)を、predBitQP26として、QP算出部27に出力する。
遅延器258は、現マクロブロックについてのフラグIntra/Inter_flagを入力し、入力したフラグIntra/Inter_flagを1マクロブロックに相当する時間だけ遅延させてセレクタ252に出力する。つまり、遅延器258から出力されるフラグIntra/Inter_flagは、現マクロブロックの1つ前のマクロブロックが、イントラマクロであるか、それとも、インターマクロブロックであるかを示すフラグである。なお、遅延器258を省略し、フラグ用FIFO部259から、現マクロブロックの1つ前のマクロブロックのフラグIntra/Inter_flagを取得し、取得した当該フラグIntra/Inter_flagをセレクタ252に入力するようにしてもよい。
フラグ用FIFO部259は、N5個(N5:自然数)のフラグIntra/Inter_flagを記憶することができ、現マクロブロックについてのフラグIntra/Inter_flagを記憶する。なお、以下では、フラグIntra/Inter_flagが「1」である場合、イントラマクロブロックであることを示し、フラグIntra/Inter_flagが「0」である場合、インターマクロブロックであることを示すものとして、説明する。最初にIフレームの画像(画像信号)が入力される場合、フラグ用FIFO部259のN5個のデータは、すべてイントラマクロブロックであることを示す値「1」に初期化される。
カウンタ部260は、フラグ用FIFO部259に記憶されているN5個のフラグIntra/Inter_flagのうち、イントラマクロブロックであることを示す(値が「1」である)フラグの数をカウントし、カウントした値をintraNumとして、カレント符号量補正部30に出力する。
データ変換部28は、目標符号量を入力し、目標符号量から1ブロックあたりの目標符号量を算出する。そして、データ変換部28は、算出した、1ブロックあたりの目標符号量を、IdealMBBitとして積分処理部29に出力する。
積分処理部29は、符号量用FIFO部から、現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitを取得する。また、積分処理部29は、データ変換部28から出力される、1ブロックあたりの目標符号量IdealMBBitを入力する。そして、積分処理部29は、
sum_diff=sum_diff+(IdealMBBit−recent_AllocatedBit)
に相当する処理を実行し、実際に発生した符号量と目標符号量との差を積算する。なお、発生符号量と目標符号量との差の積算値sum_diffの初期値は、「0」とすることが好ましい。
積分処理部29は、上記処理により取得した、発生符号量と目標符号量との差の積算値sum_diffをカレント符号量補正部30に出力する。
カレント符号量補正部30は、図8に示すように、符号量補正部301と、イントラMB用符号量補正部302とを備える。
符号量補正部301は、カレント符号量算出部24からの出力と、積分処理部29から出力される発生符号量と目標符号量との差の積算値sum_diffと、を入力する。なお、本実施形態では、カレント符号量算出部24からの出力をcurrent_AllocatedBit0とする。符号量補正部301は、
current_AllocatedBit1
=current_AllocatedBit0+{sum_diff/(k1×2)}
に相当する処理を実行し、補正(調整)した符号量current_AllocatedBit1を取得する。そして、符号量補正部301は、補正後の符号量current_AllocatedBit1をイントラMB用符号量補正部302に出力する。
イントラMB用符号量補正部302は、フラグIntra/Inter_flagと、QP中央値換算符号量算出部25Aから出力される、所定期間におけるイントラマクロブロック数intraNumと、符号量補正部301から出力される補正後の符号量current_AllocatedBit1を入力する。
イントラMB用符号量補正部302は、現マクロブロックがイントラマクロブロックである場合であって、所定期間におけるイントラマクロブロック数intraNumが閾値Th1以下である場合、現マクロブロックに割り当てる符号量が増加するように補正する。そして、イントラMB用符号量補正部302は、補正後の符号量を、current_AllocatedBitとして、QP算出部27に出力する。
一方、上記以外の場合、イントラMB用符号量補正部302は、符号量補正部301から出力された符号量current_AllocatedBit1を、符号量current_AllocatedBitとして、QP算出部27に出力する。
なお、カレント符号量補正部30において、符号量補正部301またはイントラMB用符号量補正部302を省略してもよい。
<2.2:動画像符号化装置の動作>
以上のように構成された動画像符号化装置2000の動作について、説明する。
なお、第1実施形態と同様の部分については、詳細な説明を省略する。
QP中央値換算符号量算出部25Aの符号量換算部251では、入力された現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitは、符号化部1の量子化処理においてとりうるQP値範囲の中央値で量子化した場合のQP中央値換算符号量に換算される。そして、換算されたQP中央値換算符号量は、セレクタ252に出力される。
セレクタ252では、以下の選択処理が実行される。
(1)入力されるフラグIntra/Inter_flagがイントラマクロブロックであることを示す値である場合、つまり、現マクロブロックの1つ前のマクロブロックがイントラマクロブロックである場合、符号量換算部251からの出力は、イントラMB用FIFO部253に出力される。
(2)入力されるフラグIntra/Inter_flagがインターマクロブロックであることを示す値である場合、つまり、現マクロブロックの1つ前のマクロブロックがインターマクロブロックである場合、符号量換算部251からの出力は、インターMB用FIFO部254に出力される。
イントラMB用FIFO部253では、現マクロブロックから1つ前のマクロブロックがイントラマクロブロックである場合、セレクタ252から出力される、符号量換算部251により取得されたQP中央値換算符号量が記憶される。
インターMB用FIFO部254では、現マクロブロックから1つ前のマクロブロックがイントラマクロブロックである場合、セレクタ252から出力される、符号量換算部251により取得されたQP中央値換算符号量が記憶される。
第1平均値算出部255では、イントラMB用FIFO部253に記憶されているN3個のQP中央値換算符号量の平均値が算出され、算出された平均値が、predBitQP26(1)として、セレクタ257に出力される。
第2平均値算出部256では、インターMB用FIFO部254に記憶されているN4個のQP中央値換算符号量の平均値が算出され、算出された平均値が、predBitQP26(0)として、セレクタ257に出力される。
セレクタ257では、以下の選択処理が実行される。
(1)入力されるフラグIntra/Inter_flagがイントラマクロブロックであることを示す値である場合、つまり、現マクロブロックがイントラマクロブロックである場合、第1平均値算出部255からの出力predBitQP26(1)が、predBitQP26として、QP算出部27に出力される。
(2)入力されるフラグIntra/Inter_flagがインターマクロブロックであることを示す値である場合、つまり、現マクロブロックがインターマクロブロックである場合、第2平均値算出部256からの出力predBitQP26(0)が、predBitQP26として、QP算出部27に出力される。
フラグ用FIFO部259では、現マクロブロックについてのフラグIntra/Inter_flagが記憶される。
カウンタ部260では、フラグ用FIFO部259に記憶されているN5個のフラグIntra/Inter_flagのうち、イントラマクロブロックであることを示す(値が「1」である)フラグの数をカウントし、カウントした値がintraNumとして、カレント符号量補正部30に出力される。
データ変換部28では、入力された目標符号量からから1ブロックあたりの目標符号量IdealMBBitが算出される。そして、算出された、1ブロックあたりの目標符号量IdealMBBitは、積分処理部29に出力される。
積分処理部29では、符号量用FIFO部から取得した現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitと、データ変換部28から出力される、1ブロックあたりの目標符号量IdealMBBitとに対して、
sum_diff=sum_diff+(IdealMBBit−recent_AllocatedBit)
に相当する処理が実行され、実際に発生した符号量と目標符号量との差が積算される。
積分処理部29において、上記処理により取得された、発生符号量と目標符号量との差の積算値sum_diffは、カレント符号量補正部30に出力される。
なお、積分処理部29において、(IdealMBBit−recent_AllocatedBit)の値が所定の範囲を超えないように下限値A1、上限値A2を設けて、
A1≦(IdealMBBit−recent_AllocatedBit)≦A2
となるように、クリップ処理を行うようにしてもよい。また、上限値、下限値のいずれか一方のみでのクリップ処理を行うようにしてもよい。
カレント符号量補正部30の符号量補正部301では、カレント符号量算出部24からの出力current_AllocatedBit0と、積分処理部29から出力される発生符号量と目標符号量との差の積算値sum_diffと、に対して、
current_AllocatedBit1
=current_AllocatedBit0+{sum_diff/(k1×2)}
に相当する処理が実行され、補正(調整)した符号量current_AllocatedBit1が取得される。
sum_diffは、発生符号量と目標符号量との差の積算値であるので、過去において使用した符号量のマクロブロック単位での積算値が、目標符号量のマクロブロック単位での積算値よりも多い場合、sum_diffは、マイナスの値をとる。したがって、上記処理を実行することで、補正後の符号量current_AllocatedBit1は、補正前の符号量current_AllocatedBit0よりも小さい値となる。つまり、この場合、符号量を過剰に使い過ぎている状態であるため、現マクロブロックに対する割り当て符号量を少なくする補正を行うことで、適切な符号量割り当てを行うことができる。なお、sum_diffを、目標符号量の設定対象としているマクロブロック数である(k1×2)で除算することで、1マクロブロック当たりの割り当て符号量を算出することができる。
一方、過去において使用した符号量のマクロブロック単位での積算値が、目標符号量のマクロブロック単位での積算値よりも少ない場合、sum_diffは、プラスの値をとる。したがって、上記処理を実行することで、補正後の符号量current_AllocatedBit1は、補正前の符号量current_AllocatedBit0よりも大きな値となる。つまり、この場合、使用できる符号量を余らせている状態であるため、現マクロブロックに対する割り当て符号量を多くする補正を行うことで、適切な符号量割り当てを行うことができる。
さらに、sum_diffは、発生符号量と目標符号量との差の積算値であるため、例えば、一定期間における発生符号量と目標符号量との差により、符号量割り当て制御を行う場合に比べて精度を向上させることができる。例えば、ピクチャ間を跨ぐ場合であっても、上記処理により、適切な符号量割り当て制御を行うことができる。
符号量補正部301において、上記のように補正された符号量current_AllocatedBit1は、イントラMB用符号量補正部302に出力される。
なお、符号量補正部301において、補正後の符号量current_AllocatedBit1が所定の範囲を超えないように下限値B1、上限値B2を設けて、
B1≦(IdealMBBit−recent_AllocatedBit)≦B2
となるように、クリップ処理を行うようにしてもよい。また、上限値、下限値のいずれか一方のみでのクリップ処理を行うようにしてもよい。
イントラMB用符号量補正部302は、フラグIntra/Inter_flagにより、現マクロブロックがイントラマクロブロックであるか否かを判定する。また、イントラMB用符号量補正部302は、所定期間におけるイントラマクロブロック数intraNumが閾値Th1以下であるか否かを判定する。
現マクロブロックがイントラマクロブロックであると判定された場合であって、所定期間におけるイントラマクロブロック数intraNumが閾値Th1以下であると判定された場合、イントラMB用符号量補正部302では、現マクロブロックに割り当てる符号量が増加するように補正処理が実行される。この場合、イントラMB用符号量補正部302は、例えば、加算する符号量をadd1(>0)として、
current_AllocatedBit
=current_AllocatedBit1+add1
に相当する処理により、割り当て符号量を補正するようにしてもよい。
また、イントラMB用符号量補正部302において、QP中央値換算符号量算出部25Aの第1平均値算出部255で取得されるイントラマクロブロックのQP中央値換算符号量の平均値predBitQP26(1)と、QP中央値換算符号量算出部25Aの第2平均値算出部256で取得されるイントラマクロブロックのQP中央値換算符号量の平均値predBitQP26(0)と、を用いて、以下のように処理するようにしてもよい。
(1)変数intraPred、interPred、および、addbitに、以下の値を代入する。
intraPred=predBitQP26(1)
interPred=predBitQP26(0)
addbit=interPred/2
(2)(intraPred+addbit)と、interPredとの大小関係を判定し、
(intraPred+addbit)≧interPredである場合、
intraPred=intraPred−addbit
を実行し、(intraPred+addbit)<interPredとなるまで、上記減算処理を繰り返す。そして、上記減算処理を実行した回数をNAとする。
(3)以下の処理により、補正した符号量current_AllocatedBitを取得する。
current_AllocatedBit
=current_AllocatedBit1
+current_AllocatedBit1×0.5×NA
イントラMB用符号量補正部302は、上記処理により、割り当て符号量を補正するようにしてもよい。
なお、イントラMB用符号量補正部302において、フラグIntra/Inter_flagにより、現マクロブロックがイントラマクロブロックではない場合、あるいは、現マクロブロックがイントラマクロブロックであるが、所定期間におけるイントラマクロブロック数intraNumが閾値Th1以下ではない場合、イントラMB用符号量補正部302は、入力された符号量current_AllocatedBit1を、符号量current_AllocatedBitとして、QP算出部27に出力する。
上記のように、所定期間内において、イントラマクロブロック数が少ない場合、イントラマクロブロックに対する割り当て符号量が少なすぎる場合が多い。したがって、上記のように処理することで、イントラマクロブロックに対して、より多くの符号量を割り当てることができ、使い切れていない符号量(余っている符号量)を適切に使用することができる。
なお、イントラMB用符号量補正部302により、上記のように、イントラマクロブロックに対する割り当て符号量を増加させるように補正する場合、符号量補正部301では、符号量を抑制する方向にのみ制御するようにしてもよい。
また、イントラMB用符号量補正部302において、補正後の符号量current_AllocatedBitが所定の範囲を超えないように下限値C1、上限値C2を設けて、
C1≦current_AllocatedBit≦C2
となるように、クリップ処理を行うようにしてもよい。また、上限値、下限値のいずれか一方のみでのクリップ処理を行うようにしてもよい。
QP算出部27では、カレント符号量補正部30から出力される符号量current_AllocatedBitを用いて、第1実施形態と同様に、現マクロブロックを符号化する際の量子化パラメータ値QPを算出する。なお、QP値が急激変化することを抑制するために、QP値が所定の値以上変化しないように、クリップ処理を行うようにしてもよい。つまり、現マクロブロックのQP値と1つ前のマクロブロックのQP値の差をdiff_QPとすると、
abs(diff_QP)<D1
D1:正の定数
とするようにしてもよい。
以上のように、動画像符号化装置2000では、カレント符号量補正部30により、発生符号量と目標符号量との差の積算値sum_diffに基づいて、符号量の補正処理を行うため、本来使用できる符号量を余らせている場合、現マクロブロックに対する割り当て符号量を多くし、逆に、符号量を使い過ぎている場合、現マクロブロックに対する割り当て符号量を少なくすることができる。したがって、第1実施形態よりもさらに適切に符号量割り当て処理を実現することができる。
また、動画像符号化装置2000では、カレント符号量補正部30により、一定期間内において、イントラマクロブロック数が少ないとき、イントラマクロブロックの割り当て符号量を多くすることができる。これにより、イントラマクロブロックに対する割り当て符号量が多くなり、より高品質な動画像符号化処理を実現することができる。
また、動画像符号化装置2000では、QP中央値換算符号量算出部25Aにおいて、イントラマクロブロックのQP中央値換算符号量のみを記憶するイントラMB用FIFO部253と、インターマクロブロックのQP中央値換算符号量のみを記憶するインターMB用FIFO部254と、を設けた。そして、動画像符号化装置2000では、(1)現マクロブロックがイントラマクロブロックである場合、イントラマクロブロックのQP中央値換算符号量のみの平均値を用いて、QP算出処理を行い、(2)現マクロブロックがインターマクロブロックである場合、インターマクロブロックのQP中央値換算符号量のみの平均値を用いて、QP算出処理を行う。したがって、動画像符号化装置2000では、より適切に、イントラマクロブロックおよびインターマクロブロックに符号量を割り当てることができる。イントラマクロブロックとインターマクロブロックとを区別することなく符号量の平均値を算出し、当該平均値により、QP算出処理を行うと、イントラマクロブロックが多く存在していると平均の符号量が大きくなってしまい、例えば、インターマクロブロックに多くの符号量を割り当てることができる場合であっても、少ない符号量しか割り当てられず、適切な符号量割り当て処理が実行できない場合がある。動画像符号化装置2000では、上記のとおり、イントラマクロブロックとインターマクロブロックとを区別してQP算出処理を実行するので、現マクロブロックが、イントラマクロブロックであっても、インターマクロブロックであっても、適切に符号量割り当て処理を実行することができる。
[他の実施形態]
上記実施形態では、実数演算処理(浮動小数演算)により各処理を実行する場合を例に説明を行っているが、これに限定されることはなく、所望の精度に応じて、上記各処理を整数演算処理により実行するようにしてもよい。この場合、必要な精度に応じて、適宜丸め処理等を行うようにしてもよい。また、上記実施形態において、非線形処理や非線形関数による処理を行う部分(例えば、log2(x)関数による処理や、2^((C0―recent_AllocatedBit)/6)による除算処理)については、LUT(ルック・アップ・テーブル)等を用いて処理を行うようにしてもよい。
また、上記実施形態では、動き推定部108において、動き探索処理により、現マクロブロックのSATD値を取得する機能を有する場合について説明した。しかし、これに限定されることはなく、動き推定部108が、SATD値を取得する機能を有しない場合、別途、SATD値を取得する機能部を設けるようにしてもよい。
また、上記実施形態の動画像符号化装置の一部または全部は、集積回路(例えば、LSI、システムLSI等)として実現されるものであってもよい。
上記実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。なお、上記実施形態に係る動画像符号化装置をハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
1000、2000 動画像符号化装置
1 符号化部
2、2A 量子化パラメータ決定部
3 目標符号量設定部
107 記憶部
108 動き推定部
22 符号量用FIFO部
23 SATD用FIFO部
24 カレント符号量算出部
25、25A QP中央値換算符号量算出部
251 符号量換算部
253 イントラMB用FIFO部
254 インターMB用FIFO部
255 第1平均値算出部
256 第2平均値算出部
259 フラグ用FIFO部
260 カウンタ部
26 IIRフィルタ部
27 QP算出部
28 データ変換部
29 積分処理部
30 カレント符号量補正部
301 符号量補正部
302 イントラMB用符号量補正部

Claims (11)

  1. 複数のマクロブロックからなるフレーム画像を形成することができる動画像信号を符号化するとともに、前記動画像信号を符号化する際に発生する符号化量を制御する動画像符号化装置であって、
    マクロブロック数を指定することで、当該マクロブロック数のマクロブロックに割り当てる符号量を目標符号量に設定する目標符号量設定部と、
    前記動画像を符号化するときの量子化処理に用いられる量子化パラメータ値を決定する量子化パラメータ決定部と、
    前記動画像信号に対して、符号化処理を行う符号化部であって、前記量子化パラメータ決定部により決定された量子化パラメータ値を用いて、前記動画像信号に対して量子化処理を行う、符号化部と、
    を備え、
    前記符号化部は、
    過去のフレーム画像を記憶する記憶部と、
    前記記憶部に記憶されている過去のフレーム画像の中から参照用フレーム画像を抽出し、処理対象のマクロブロックである現マクロブロックについて、前記参照用フレーム画像上の前記マクロブロックと同じ大きさの画像領域との差分をとることにより差分画像を取得し、取得した当該差分画像のSATD値を取得し、取得した当該SATD値に基づいて、動きベクトルを導出する動き推定部と、
    を備え、
    前記量子化パラメータ決定部は、前記動き推定部により取得された現マクロブロックのSATD値に基づいて、前記量子化パラメータ値を決定する、
    動画像符号化装置。
  2. 前記目標符号量設定部は、2×k1(k1:自然数)個のマクロブロックに割り当てる符号量を目標符号量targetBitとして設定し、
    前記量子化パラメータ決定部は、
    N1個(N1:自然数)のマクロブロックのSATD値を記憶することができ、前記動き推定部により導出された現マクロブロックのSATD値を記憶するSATD値用FIFO部と、
    N1個(N1:自然数)のマクロブロックごとの符号量を記憶することができ、現マクロブロックから1つ前のマクロブロックを符号化したときの発生符号量を記憶する符号量用FIFO部と、
    前記SATD値用FIFO部から、現マクロブロックのSATD値recent_SATDと、過去k1個(k1:自然数、k1≦N1)のマクロブロックのSATD値とを取得し、当該過去k1個のマクロブロックのSATD値の平均値avrg_AllocatedBitを算出し、
    前記符号量用FIFO部から、過去k1個(k1:自然数、k1≦N1)のマクロブロックの符号量を取得し、当該過去k1個のマクロブロックの符号量の平均値avrg_AllocatedBitと、当該過去k1個のマクロブロックに割り当てられた符号量の合計値usedBitを算出し、
    allocatedBit=targetBit−usedBit
    avrg_AllocatedBit=allocatedBit/k1
    current_AllocatedBit=avrg_AllocatedBit+coe×(recent_SATD−avrg_SATD)
    coe:係数
    により、現マクロブロックに割り当てる符号量current_AllocatedBitを算出するカレント符号量算出部と、
    前記符号量用FIFO部から、現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitを取得し、取得した符号量recent_AllocatedBitを、前記符号化部の量子化処理においてとりうるQP値範囲の中央値で量子化した場合の換算符号量を算出するQP中央値換算符号量算出部と、
    QP中央値換算符号量算出部により算出された、現マクロブロックの1つ前のマクロブロックの符号量の換算符号量と、前記カレント符号量算出部により算出された現マクロブロックに割り当てる符号量current_AllocatedBitとに基づいて、現マクロブロックを符号化する際の量子化パラメータ値を算出するQP算出部と、
    を備える、
    請求項1に記載の動画像符号化装置。
  3. 前記量子化パラメータ決定部は、
    前記QP中央値換算符号量算出部により算出された、現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitのQP中央値換算符号量bitQP26に対して、IIRフィルタ処理を行ったQP中央値換算符号量predBitQP26を取得するIIRフィルタ部をさらに備え、
    前記QP算出部は、
    QP=C0−6×log2(current_AllocatedBit/predBitQP26)
    C0:QP値の取り得る範囲の中央値
    log2():底を「2」とする対数をとる関数
    により、現マクロブロックを符号化する際の量子化パラメータ値QPを算出する、
    請求項2に記載の動画像符号化装置。
  4. 前記QP中央値換算符号量算出部は、
    現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitを、前記符号化部の量子化処理においてとりうるQP値範囲の中央値で量子化した場合の換算符号量に換算する符号量換算部と、
    N3個(N3:自然数)のイントラマクロブロックのQP中央値換算符号量を記憶することができ、現マクロブロックの1つ前のマクロブロックがイントラマクロブロックである場合、前記符号量換算部により換算された換算符号量を記憶するイントラMB用FIFO部と、
    N4個(N4:自然数)のインターマクロブロックのQP中央値換算符号量を記憶することができ、現マクロブロックの1つ前のマクロブロックがインターマクロブロックである場合、前記符号量換算部により換算された換算符号量を記憶するインターMB用FIFO部と、
    前記イントラMB用FIFO部に記憶されているN3個のイントラマクロブロックのQP中央値換算符号量の平均値predBitQP26(1)を算出する第1平均値算出部と、
    前記インターMB用FIFO部に記憶されているN4個のインターマクロブロックのQP中央値換算符号量の平均値predBitQP26(0)を算出する第2平均値算出部と、
    を備え、
    前記QP算出部は、
    (1)現マクロブロックがイントラマクロブロックである場合、前記イントラマクロブロックのQP中央値換算符号量の平均値predBitQP26(1)に基づいて、前記現マクロブロックを符号化する際の前記量子化パラメータ値を算出し、
    (2)現マクロブロックがインターマクロブロックである場合、前記インターマクロブロックのQP中央値換算符号量の平均値predBitQP26(0)に基づいて、前記現マクロブロックを符号化する際の前記量子化パラメータ値を算出する、
    請求項2に記載の動画像符号化装置。
  5. 前記QP算出部は、
    (1)現マクロブロックがイントラマクロブロックである場合、
    QP=C0−6×log2(current_AllocatedBit/predBitQP26(1))
    C0:QP値の取り得る範囲の中央値
    log2():底を「2」とする対数をとる関数
    により、前記現マクロブロックを符号化する際の量子化パラメータ値QPを算出し、
    (2)現マクロブロックがインターマクロブロックである場合、
    QP=C0−6×log2(current_AllocatedBit/predBitQP26(0))
    C0:QP値の取り得る範囲の中央値
    log2():底を「2」とする対数をとる関数
    により、前記現マクロブロックを符号化する際の量子化パラメータ値QPを算出する、
    請求項4に記載の動画像符号化装置。
  6. 前記量子化パラメータ決定部は、
    前記目標符号量targetBitから、1マクロブロックあたりの目標符号量IdealMBBitを取得するデータ変換部と、
    前記現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitと、前記目標符号量IdealMBBitから、
    sum_diff=sum_diff+(IdealMBBit−recent_AllocatedBit)
    に相当する処理により、実際に発生した符号量と目標符号量との差の積算値sum_diffを取得する積分処理部と、
    前記積算値sum_diffに基づいて、前記カレント符号量算出部により算出された前記現マクロブロックに割り当てる符号量current_AllocatedBitを補正するカレント符号量補正部と、
    をさらに備え、
    前記QP算出部は、
    前記カレント符号量補正部により補正された符号量current_AllocatedBitに基づいて、前記現マクロブロックを符号化する際の量子化パラメータ値を算出する、
    請求項4又は5に記載の動画像符号化装置。
  7. 前記カレント符号量補正部は、
    前記カレント符号量算出部により算出された前記現マクロブロックに割り当てる符号量current_AllocatedBitを符号量current_AllocatedBit0としたとき、
    current_AllocatedBit1
    =current_AllocatedBit0+{sum_diff/(k1×2)}
    に相当する処理により、補正後の符号量current_AllocatedBit1を取得し、
    前記QP算出部は、
    前記カレント符号量補正部により取得された補正後の符号量current_AllocatedBit1に基づいて、
    (1)現マクロブロックがイントラマクロブロックである場合、
    QP=C0−6×log2(current_AllocatedBit1/predBitQP26(1))
    C0:QP値の取り得る範囲の中央値
    log2():底を「2」とする対数をとる関数
    により、前記現マクロブロックを符号化する際の量子化パラメータ値QPを算出し、
    (2)現マクロブロックがインターマクロブロックである場合、
    QP=C0−6×log2(current_AllocatedBit1/predBitQP26(0))
    C0:QP値の取り得る範囲の中央値
    log2():底を「2」とする対数をとる関数
    により、前記現マクロブロックを符号化する際の量子化パラメータ値QPを算出する、
    請求項6に記載の動画像符号化装置。
  8. 前記QP中央値換算符号量算出部は、過去の所定期間内におけるイントラマクロブロックの出現数intraNumを取得し、
    前記カレント符号量補正部は、現マクロブロックがイントラマクロブロックであり、かつ、前記過去の所定期間内におけるイントラマクロブロックの出現数intraNumが所定の閾値以下である場合、加算する符号量をadd1(>0)として、
    current_AllocatedBit
    =current_AllocatedBit1+add1
    に相当する処理により、前記符号量current_AllocatedBitを補正し、
    前記QP算出部は、前記カレント符号量補正部により補正された符号量current_AllocatedBitに基づいて、前記現マクロブロックを符号化する際の量子化パラメータ値を算出する、
    請求項6又は7に記載の動画像符号化装置。
  9. 複数のマクロブロックからなるフレーム画像を形成することができる動画像信号を符号化する際に発生する符号化量を制御するための符号化量制御方法であって、
    2×k1(k1:自然数)個のマクロブロックに割り当てる符号量を目標符号量targetBitとして設定する目標符号量設定ステップと、
    動き推定処理において、現マクロブロックと参照フレーム画像との対応画像領域との差分画像から算出されたSATD値を取得するSATD値取得ステップと、
    現マクロブロックのSATD値recent_SATDと、過去k1個(k1:自然数、k1≦N1)のマクロブロックのSATD値とを取得し、当該過去k1個のマクロブロックのSATD値の平均値avrg_AllocatedBitを算出し、
    過去k1個(k1:自然数、k1≦N1)のマクロブロックの符号量を取得し、当該過去k1個のマクロブロックの符号量の平均値avrg_AllocatedBitと、当該過去k1個のマクロブロックに割り当てられた符号量の合計値usedBitを算出し、
    allocatedBit=targetBit−usedBit
    avrg_AllocatedBit=allocatedBit/k1
    current_AllocatedBit=avrg_AllocatedBit+coe×(recent_SATD−avrg_SATD)
    coe:係数
    により、現マクロブロックに割り当てる符号量current_AllocatedBitを算出するカレント符号量算出ステップと、
    現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitを取得し、取得した符号量recent_AllocatedBitを、前記動画像信号を符号化する際の量子化処理においてとりうるQP値範囲の中央値で量子化した場合の換算符号量bitQP26を算出するQP中央値換算符号量算出ステップと、
    前記QP中央値換算符号量算出ステップにより算出された、現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitのQP中央値換算符号量bitQP26に対して、IIRフィルタ処理を行ったQP中央値換算符号量predBitQP26を取得するIIRフィルタステップと、
    現マクロブロックを符号化する際の量子化パラメータ値QPを、
    QP=C0−6×log2(current_AllocatedBit/predBitQP26)
    C0:QP値の取り得る範囲の中央値
    log2():底を「2」とする対数をとる関数
    により、算出する量子化パラメータ決定ステップと、
    を備える符号化量制御方法。
  10. 複数のマクロブロックからなるフレーム画像を形成することができる動画像信号を符号化する際に発生する符号化量を制御するための符号化量制御方法であって、
    2×k1(k1:自然数)個のマクロブロックに割り当てる符号量を目標符号量targetBitとして設定する目標符号量設定ステップと、
    動き推定処理において、現マクロブロックと参照フレーム画像との対応画像領域との差分画像から算出されたSATD値を取得するSATD値取得ステップと、
    現マクロブロックのSATD値recent_SATDと、過去k1個(k1:自然数、k1≦N1)のマクロブロックのSATD値とを取得し、当該過去k1個のマクロブロックのSATD値の平均値avrg_AllocatedBitを算出し、
    過去k1個(k1:自然数、k1≦N1)のマクロブロックの符号量を取得し、当該過去k1個のマクロブロックの符号量の平均値avrg_AllocatedBitと、当該過去k1個のマクロブロックに割り当てられた符号量の合計値usedBitを算出し、
    allocatedBit=targetBit−usedBit
    avrg_AllocatedBit=allocatedBit/k1
    current_AllocatedBit=avrg_AllocatedBit+coe×(recent_SATD−avrg_SATD)
    coe:係数
    により、現マクロブロックに割り当てる符号量current_AllocatedBitを算出するカレント符号量算出ステップと、
    現マクロブロックの1つ前のマクロブロックの符号量recent_AllocatedBitを、前記動画像信号を符号化する際の量子化処理においてとりうるQP値範囲の中央値で量子化した場合の換算符号量に換算する符号量換算ステップと、
    現マクロブロックの1つ前のマクロブロックがイントラマクロブロックである場合、前記符号量換算ステップにより換算された換算符号量を記憶するイントラMB用記憶ステップと、
    現マクロブロックの1つ前のマクロブロックがインターマクロブロックである場合、前記符号量換算ステップにより換算された換算符号量を記憶するインターMB用記憶ステップと、
    前記イントラMB用記憶ステップで記憶されたイントラマクロブロックのQP中央値換算符号量の平均値predBitQP26(1)を算出する第1平均値算出ステップと、
    前記インターMB用記憶ステップで記憶されたインターマクロブロックのQP中央値換算符号量の平均値predBitQP26(0)を算出する第2平均値算出ステップと、
    (1)現マクロブロックがイントラマクロブロックである場合、前記イントラマクロブロックのQP中央値換算符号量の平均値predBitQP26(1)に基づいて、前記現マクロブロックを符号化する際の量子化パラメータ値を算出し、
    (2)現マクロブロックがインターマクロブロックである場合、前記インターマクロブロックのQP中央値換算符号量の平均値predBitQP26(0)に基づいて、前記現マクロブロックを符号化する際の量子化パラメータ値を算出する、QP算出ステップと、
    を備える符号化量制御方法。
  11. 請求項9または10に記載の符号化量制御方法を、コンピュータに実行させるためのプログラム。
JP2013253430A 2012-12-11 2013-12-06 動画像符号化装置、符号化量制御方法およびプログラム Active JP6259273B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013253430A JP6259273B2 (ja) 2012-12-11 2013-12-06 動画像符号化装置、符号化量制御方法およびプログラム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012270139 2012-12-11
JP2012270139 2012-12-11
JP2013253430A JP6259273B2 (ja) 2012-12-11 2013-12-06 動画像符号化装置、符号化量制御方法およびプログラム

Publications (3)

Publication Number Publication Date
JP2014135720A true JP2014135720A (ja) 2014-07-24
JP2014135720A5 JP2014135720A5 (ja) 2017-01-12
JP6259273B2 JP6259273B2 (ja) 2018-01-10

Family

ID=50880950

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013253430A Active JP6259273B2 (ja) 2012-12-11 2013-12-06 動画像符号化装置、符号化量制御方法およびプログラム

Country Status (2)

Country Link
US (2) US9350989B2 (ja)
JP (1) JP6259273B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6537396B2 (ja) * 2015-08-03 2019-07-03 キヤノン株式会社 画像処理装置、撮像装置および画像処理方法
WO2017138352A1 (en) * 2016-02-08 2017-08-17 Sharp Kabushiki Kaisha Systems and methods for transform coefficient coding
CN111200734B (zh) * 2018-11-19 2022-03-11 浙江宇视科技有限公司 视频编码方法及装置
CN112235576B (zh) * 2020-11-16 2024-04-30 北京世纪好未来教育科技有限公司 编码方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007318617A (ja) * 2006-05-29 2007-12-06 Renesas Technology Corp 画像符号化装置、及び画像符号化プログラム
JP2009038746A (ja) * 2007-08-03 2009-02-19 Panasonic Corp 画像情報符号化装置
JP2010166275A (ja) * 2009-01-15 2010-07-29 Canon Inc 画像符号化装置
US20100272171A1 (en) * 2008-03-11 2010-10-28 Susan Xu Self-adapting code rate distribution method of video image macro-block level
JP2011146883A (ja) * 2010-01-14 2011-07-28 Mega Chips Corp 画像処理装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100601618B1 (ko) * 1999-08-27 2006-07-14 삼성전자주식회사 계층적 움직임 추정기를 위한 최적의 데이터 공급장치 및 그방법
US7453938B2 (en) * 2004-02-06 2008-11-18 Apple Inc. Target bitrate estimator, picture activity and buffer management in rate control for video coder
JP2006074474A (ja) 2004-09-02 2006-03-16 Toshiba Corp 動画像符号化装置、動画像符号化方法および動画像符号化プログラム
US9473792B2 (en) * 2009-11-06 2016-10-18 Texas Instruments Incorporated Method and system to improve the performance of a video encoder
US8532169B2 (en) * 2009-12-23 2013-09-10 General Instrument Corporation Rate control for two-pass encoder using adaptive quantization parameters
JP5451487B2 (ja) 2010-03-31 2014-03-26 株式会社メガチップス 画像符号化装置
WO2012117955A1 (ja) 2011-02-28 2012-09-07 株式会社メガチップス 画像符号化装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007318617A (ja) * 2006-05-29 2007-12-06 Renesas Technology Corp 画像符号化装置、及び画像符号化プログラム
JP2009038746A (ja) * 2007-08-03 2009-02-19 Panasonic Corp 画像情報符号化装置
US20100272171A1 (en) * 2008-03-11 2010-10-28 Susan Xu Self-adapting code rate distribution method of video image macro-block level
JP2010166275A (ja) * 2009-01-15 2010-07-29 Canon Inc 画像符号化装置
JP2011146883A (ja) * 2010-01-14 2011-07-28 Mega Chips Corp 画像処理装置

Also Published As

Publication number Publication date
US20140161184A1 (en) 2014-06-12
US20140192864A1 (en) 2014-07-10
JP6259273B2 (ja) 2018-01-10
US9350989B2 (en) 2016-05-24
US9538191B2 (en) 2017-01-03

Similar Documents

Publication Publication Date Title
JP4624321B2 (ja) トランスコーダおよび符号化画像変換方法
JP5472105B2 (ja) 画像処理装置及び画像処理方法
JP2008541569A (ja) マクロブロックレベルレート制御
JP2002514023A (ja) 圧縮映像のブリージングアーチファクトを低減する方法および装置
JP6259273B2 (ja) 動画像符号化装置、符号化量制御方法およびプログラム
JP3259702B2 (ja) 動画像可変ビットレート符号化装置および方法
JP5900163B2 (ja) 画像処理装置、画像処理方法およびプログラム
JP2000201354A (ja) 動画像符号化装置
US8861596B2 (en) Image encoding device and image encoding method
US9615095B2 (en) Coding device, imaging device, coding transmission system, and coding method
JP5076083B2 (ja) トランスコーダ
JP7343817B2 (ja) 符号化装置、符号化方法、及び符号化プログラム
US7570823B2 (en) Moving picture coding apparatus, moving picture coding method, and moving picture imaging apparatus
JP4362795B2 (ja) 動画像符号化装置及びその方法
JP5410638B2 (ja) 量子化制御装置及び方法、及び量子化制御プログラム
JP5098043B2 (ja) トランスコーダ
JP2001238215A (ja) 動画像符号化装置及びその方法
JP3812269B2 (ja) 動画像符号化装置及びその方法
JP5641755B2 (ja) 符号化装置、符号化装置の制御方法、プログラム
JP4857243B2 (ja) 画像符号化装置及びその制御方法、コンピュータプログラム
JP5391294B2 (ja) トランスコーダ
JP2008153802A (ja) 動画像符号化装置及び動画像符号化プログラム
JP5076085B2 (ja) トランスコーダ
JP4127006B2 (ja) 画像信号の符号化装置および符号化方法
JP2004349855A (ja) 符号化装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161124

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170912

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171106

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: 20171128

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171208

R150 Certificate of patent or registration of utility model

Ref document number: 6259273

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250