JP6197496B2 - 量子化装置、量子化方法および量子化プログラム - Google Patents

量子化装置、量子化方法および量子化プログラム Download PDF

Info

Publication number
JP6197496B2
JP6197496B2 JP2013180662A JP2013180662A JP6197496B2 JP 6197496 B2 JP6197496 B2 JP 6197496B2 JP 2013180662 A JP2013180662 A JP 2013180662A JP 2013180662 A JP2013180662 A JP 2013180662A JP 6197496 B2 JP6197496 B2 JP 6197496B2
Authority
JP
Japan
Prior art keywords
coefficient
quantization
absolute value
coefficients
quantized
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
JP2013180662A
Other languages
English (en)
Other versions
JP2015050608A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013180662A priority Critical patent/JP6197496B2/ja
Priority to US14/333,898 priority patent/US9635366B2/en
Publication of JP2015050608A publication Critical patent/JP2015050608A/ja
Application granted granted Critical
Publication of JP6197496B2 publication Critical patent/JP6197496B2/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
    • 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/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/18Methods 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 a set of transform coefficients
    • 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/19Methods 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 using optimisation based on Lagrange multipliers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/93Run-length coding

Landscapes

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

Description

本発明は、量子化装置、量子化方法および量子化プログラムに関する。
H.265は、HEVC(High Efficiency Video Coding)とも呼ばれる動画圧縮規格の一つである。HEVC等に代表される動画像の圧縮符号化処理では、入力画像を分割した処理単位ごとに、入力画像と予測画像との差分である予測残差信号に直交変換を施した変換係数を量子化し、エントロピー符号化することによって高効率の動画像圧縮を実現する。
この際、量子化により量子化雑音が発生し、復号側で再生される復号画像に歪みが生じる。一方、量子化することで符号化すべき情報量が削減され高効率の圧縮が実現される。符号化における何らかの選択肢の選択時に、歪みとレート(符号量)のトレードオフの評価を行った上で選択する技術として、レート歪み最適化技術がある。
例えば、符号化モード等の選択において、各選択肢についてRDコストを算出し、RDコストを最小化するような選択を行うことで、レートと歪みのトレードオフを最適化する技術がある。RDコストは、例えば、各選択肢について、その選択肢を選択した場合に得られる復号画像の歪み「D」と、その選択肢で符号化したときに発生する符号量「R」と、ラグランジュ乗数「λ」で表される。
また、レート歪み最適化技術を変換係数の量子化に利用する方法として、いわゆるRDOQ(Rate Distortion Optimized Quantization)と呼ばれる技術がある。HEVCのリファレンスエンコーダであるHM(HEVC Test Model)においても、RDOQは使用されている。
HMにおけるRDOQは、『各係数絶対値の決定』と『最終係数位置の決定』の2ステップからなる。なお、動画像符号化においては、ブロック内の係数は、いわゆるスキャン処理によって符号化後ビットストリームで送られる順序が付与される。以下の説明では、この順序を「スキャン順」と表記する場合がある。
『各係数絶対値の決定』では、符号化装置は、ブロック内の各係数に対してスキャン順に、その係数を0とした場合、「量子化結果(係数絶対値)の小数点以下を切り捨てた場合、切り上げた場合の3つの係数値について係数のRDコストを算出する。そして、符号化装置は、算出したRDコストのうちの最も小さなRDコストを示した係数絶対値を仮の係数絶対値として採用する。
『最終係数位置の決定』では、符号化装置は、ブロック内の非零である仮の係数絶対値に対してスキャン順に、その係数を0に変えてよいか、すなわち、最終係数位置をスキャン順でつぎの非零係数としてよいかを評価する。そして、符号化装置は、その評価結果に従って仮の係数絶対値を更新、すなわち、該当位置の係数を0にする。
この評価は、処理対象位置の仮の係数絶対値に1より大きいものが出てくるか、ブロック内の全ての非零の仮の係数絶対値についての評価をする(これはブロック内の全ての非零の仮の係数絶対値が1であったことを示す)まで行う。各係数を0に変えてよいかは、その係数を0に変えた時のブロック全体のRDコストを算出し、これがその係数を0に変える前のブロック全体のRDコストを下回るかで判断する。
下回った場合には最良コストをそのRDコストとする。最良コストの初期値は、例えば、『各係数絶対値の決定』で決定された仮の係数絶対値によるブロック全体のRDコストと、全ての係数が0であった時のRDコストのうちの小さい方とする。『最終係数位置の決定』が完了した時点での仮の係数絶対値が、最終的な係数絶対値となる。
RDOQにおけるRDコスト算出のために必要なレート(符号量)は、HEVCにおいてはCABAC処理の結果として得られる。CABAC処理では、各係数絶対値や、最終係数位置情報等のシンボル(Syntax Element)を直列に処理するため、処理に要する時間は長いものとなる。
一方、RDOQ処理はなるべく高速に行われることが望ましい。例えば、処理対象ブロックのつぎに符号化されるブロックがイントラ予測であるために処理対象ブロックの処理結果(LoopFilter処理前の局所復号画像)を参照する場合がある。この場合、RDOQにおける遅延がそのまま次の処理ブロックのイントラ予測開始の遅延となり、符号化処理全体の遅延となる可能性が極めて高い。
関連する先行技術としては、例えば、入力動画像信号を予測符号化により複数の符号化モードで符号化して得られる符号化要素から、処理負担の大きな算術符号化を行う前のBin数として符号量を計測し、最も符号量の小さい符号化モードを選択するものがある。
また、動画像の各ピクチャのデータ列を二値列へ変換する変換手段の出力で発生データ量を見積って量子化制御を順次行うとともに、変換手段により変換された二値列を算術符号列へ変換する算術符号化手段の出力から発生データ量を検出し、発生データの見積もり量の補正を行う技術がある。
また、bin量の増大によりしきい値を境にして次数が変化する予測関数を用いて、bin量から発生ビット量を予測してレート制御する技術がある。また、量子化部の量子化値をもとに符号量推定部で変換テーブルを参照して、CABAC後の符号量を推定し、推定符号量を基にレート制御判定部が予測処理部および量子化部に制御量に応じた符号化条件を返すことでレート制御を行う技術がある。
また、MBパイプライン構成の画像符号化装置において、n番目のMBの二値化シンボル長をn+1番目のMBに対する量子化パラメータに反映させることができるようにするための技術がある。また、入力信号の分布に依存することなく、与えられた符号量の制約条件下において近似誤差を最小化する適応量子化を行うための技術がある。
特開2005−318296号公報 特開2008−010943号公報 特開2009−055384号公報 特開2007−158430号公報 特開2010−109912号公報 特開2012−060210号公報
Marta Karczewicz、Yan Ye、Peisong Chen著、「Rate Distortion Optimized Quantization」、[平成25年7月2日検索]、インターネット<URL:http://ftp3.itu.int/av−arch/jvt−site/2008_04_Geneva/JVT−AA026.zip>
しかしながら、従来技術では、RDOQ処理におけるコストの導出演算の処理間に依存関係があるため、コストの導出演算にかかる処理を並列化することができず、RDOQ処理における処理性能を高めることが難しいという問題がある。
例えば、HEVCにおいては、RDOQ処理の各RDコストの算出に用いるシンタックスエレメント値の間に依存関係が存在する。このため、『直前の係数絶対値の値がいくつであるか?』、『直前の非零係数を0に変えたか?』などが、現在の係数または係数位置におけるRDコストに影響を与え、係数絶対値を最適化するRDOQ処理におけるコストの導出演算を係数ごとに並列に行うことができない。これに対して、RDOを行わない量子化処理では、係数間に依存関係が存在しないため、係数ごとに並列に処理を行うことができる。このため、RDOを行わない量子化処理と同程度の処理時間でRDOQ処理を実現することは困難である。
一つの側面では、本発明は、演算処理の並列化を可能にして処理性能の向上を図ることができる量子化装置、量子化方法および量子化プログラムを提供することを目的とする。
本発明の一側面によれば、符号化対象の動画像を構成する入力画像と前記入力画像の予測画像との予測残差信号を直交変換した変換係数を量子化する量子化装置が、対象ブロックの変換係数に対してスケーリングを行い、スケーリングした変換係数を量子化して得られる量子化係数の複数の係数絶対値候補のいずれかの係数絶対値候補を用いて前記対象ブロックを符号化するコストを、前記対象ブロックを符号化した場合の量子化誤差と符号量を用いて算出する際に、前記量子化係数に係る符号化要素の存否を示す条件、または、前記量子化係数の係数絶対値候補、係数位置および特定のパラメータの少なくともいずれかに応じて前記符号化要素の存否を選択する条件のいずれかの条件で前記符号化要素を二値化して得られる前記符号化要素の符号量に基づいて、前記対象ブロックを符号化した場合の符号量を算出する量子化装置、量子化方法および量子化プログラムが提案される。
本発明の一態様によれば、演算処理の並列化を可能にして処理性能の向上を図ることができるという効果を奏する。
図1は、量子化装置100の機能的構成例を示すブロック図である。 図2は、TR binarizationの疑似コードの一例を示す説明図である。 図3は、EGk binarizationの疑似コードの一例を示す説明図である。 図4は、HEVCの勧告書を示す説明図(その1)である。 図5は、HEVCの勧告書を示す説明図(その2)である。 図6は、量子化装置100の量子化処理手順の一例を示すフローチャート(その1)である。 図7は、量子化係数Piの係数絶対値決定処理の具体的処理手順の一例を示すフローチャートである。 図8は、RDコスト導出処理の具体的処理手順の一例を示すフローチャートである。 図9は、符号量導出処理の具体的処理手順の一例を示すフローチャートである。 図10は、sig_coeff_flag符号量算出処理の具体的処理手順の一例を示すフローチャートである。 図11は、coeff_abs_level_greater1_flag符号量算出処理の具体的処理手順の一例を示すフローチャートである。 図12は、coeff_abs_level_greater2_flag符号量算出処理の具体的処理手順の一例を示すフローチャートである。 図13は、coeff_sign_flag符号量算出処理の具体的処理手順の一例を示すフローチャートである。 図14は、coeff_abs_level_remaining符号量算出処理の具体的処理手順の一例を示すフローチャートである。 図15は、量子化装置100の量子化処理手順の一例を示すフローチャート(その2)である。 図16は、対象ブロックBの量子化係数P1〜Pnの具体例を示す説明図である。 図17は、符号化装置の構成例を示すブロック図である。
以下に図面を参照して、本発明にかかる量子化装置、量子化方法および量子化プログラムの実施の形態を詳細に説明する。
(量子化装置100の一実施例)
まず、実施の形態にかかる量子化装置100の一実施例について説明する。
図1は、量子化装置100の機能的構成例を示すブロック図である。図1において、量子化装置100は、スケーリング部101と、係数絶対値決定部102と、最終係数位置決定部103と、を含む。具体的には、例えば、各機能部は、論理積回路であるAND、否定論理回路であるINVERTER、論理和回路であるOR、論理和否定回路であるNORや、ラッチ回路であるFF(Flip Flop)などの素子によって形成されてもよい。また、各機能部は、例えば、Verilog−HDL(Hardware Description Language)などの記述によって機能定義し、その記述を論理合成してFPGA(Field Programmable Gate Array)によって実現してもよい。また、各機能部は、例えば、メモリに記憶されたプログラムをCPU(Central Processing Unit)に実行させることにより、または、アクセラレータにより、またはCPUとアクセラレータとで処理を分担して、その機能を実現することにしてもよい。
スケーリング部101は、スケーリング部#1〜#nを有し、対象ブロックBの変換係数C1〜Cnに対してスケーリングを行う。ここで、対象ブロックBとは、入力画像と予測画像との差分である予測残差信号に対して直交変換を行う処理単位である。入力画像は、動画像を構成する画像である。予測画像は、イントラ予測や動き補償予測等によって生成される画像である。
対象ブロックBは、例えば、TB(Transform Block)であり、4画素×4画素、8画素×8画素、16画素×16画素、32画素×32画素のいずれかの処理単位である。変換係数C1〜Cnは、対象ブロックBの各画素に対して、離散コサイン変換(DCT:Discrete Cosine Transform)等の直交変換を施した係数(例えば、DCT係数)である。各変換係数C1〜Cnは、直交変換後の対象ブロックBの各周波数成分を示す。
以下の説明では、スケーリング部#1〜#nのうちの任意のスケーリング部を「スケーリング部#i」と表記し、対象ブロックBの変換係数C1〜Cnのうちの任意の変換係数を「変換係数Ci」と表記する場合がある(i=1,2,…,n)。また、変換係数C1〜Cnは、スキャン順とは逆の順序(逆スキャン順)に並べたものとする。また、対象ブロックBを直交変換、量子化した結果に対して可変長符号等のエントロピー符号化する際の処理単位を「サブブロックsb」と表記する場合がある。
具体的には、例えば、スケーリング部#iは、変換係数Ciの絶対値に対して、係数位置、スケーリングリスト値、対象ブロックBの特徴量、量子化パラメータ値に応じた値を乗ずることにより、変換係数Ciのスケーリングを行う。
係数位置とは、例えば、対象ブロックBのブロックサイズ、対象ブロックBにおける変換係数Ciの位置を含む情報である。スケーリングリスト値とは、周波数に応じて量子化の重みを調整する量子化マトリクスの値である。対象ブロックBの特徴量を表すパラメータとしては、例えば、TM5レートコントロールで使用されるアクティビティがある。アクティビティは、対象ブロックB内の各画素と平均値の差の二乗和を、対象ブロックB内の画素数で割ったものである。量子化パラメータ値とは、量子化の際の除数の大きさを表現するための量子化パラメータの値である。
係数絶対値決定部102は、係数絶対値決定部#1〜#nを有し、変換係数C1〜Cnのスケーリング結果を量子化した量子化係数P1〜Pnの係数絶対値を決定する。以下の説明では、係数絶対値決定部#1〜#nのうちの任意の係数絶対値決定部を「係数絶対値決定部#i」と表記する場合がある。
具体的には、例えば、まず、係数絶対値決定部#iは、変換係数Ciのスケーリング結果を、係数位置、スケーリングリスト値、対象ブロックBの特徴量、量子化パラメータ値から決まるシフト量で右シフトさせることにより量子化を行う。
つぎに、係数絶対値決定部#iは、変換係数Ciのスケーリング結果を量子化した量子化結果の小数点以下を切り上げたものを量子化係数Piの係数絶対値候補AVC1として求める。また、係数絶対値決定部#iは、量子化結果の小数点以下を切り捨てたものを量子化係数Piの係数絶対値候補AVC2として求める。また、係数絶対値決定部#iは、量子化結果を「0」としたものを量子化係数Piの係数絶対値候補AVC3とする。
つぎに、係数絶対値決定部#iは、量子化係数Piの各係数絶対値候補AVC1〜AVC3についてのRDコストJ1〜J3を算出する。ここで、RDコストJとは、RDOQ処理において、レート(符号量)と歪みのトレードオフの最適化を行う際に用いられる評価値である。ここでは、RDコストJを、対象ブロックBを符号化するコストとして、量子化係数Piの係数絶対値の最適化を行う際の評価値に用いる。
具体的には、例えば、係数絶対値決定部#iは、下記式(1)を用いて、量子化係数Piの係数絶対値を係数絶対値候補AVCkとした場合のRDコストJkを算出する(k=1,2,3)。ただし、Jkは、量子化係数Piの係数絶対値を係数絶対値候補AVCkとした場合の対象ブロックBの1周波数成分についてのRDコストJである。Dkは、量子化係数Piの係数絶対値を係数絶対値候補AVCkとして対象ブロックBを符号化した場合の量子化誤差(復号画像の歪み)である。量子化誤差Dkは、例えば、復号画素値と入力画素値との2乗誤差の和で評価される。Rkは、量子化係数Piの係数絶対値を係数絶対値候補AVCkとして対象ブロックBを符号化した場合の符号量である。λは、ラグランジュ乗数である。
Jk=Dk+λ・Rk ・・・(1)
ここで、係数絶対値決定部#iは、下記条件(A)または(B)のいずれかの条件で符号化要素を二値化して得られる符号化要素の符号量rに基づいて、対象ブロックBを符号化した場合の符号量Rkを算出する。
(A)量子化係数Piに係る符号化要素の存否を示す条件
(B)量子化係数Piの係数絶対値候補AVC、係数位置および特定のパラメータの少なくともいずれかに応じて符号化要素の存否を選択する条件
ここで、特定のパラメータとは、変換係数C1〜Cn、量子化係数P1〜Pnとは異なる他のパラメータであり、ピクチャタイプ(Iピクチャ、Pピクチャ、Bピクチャ)、参照構造において符号化対象ピクチャがどのピクチャであるか、予測モード(Intra/Inter)、量子化パラメータおよびスケーリングリストなどである。
また、符号化要素とは、ビットストリームの中に入るSyntax Elementである。符号化要素としては、例えば、下記(i)〜(v)のようなものがある。
(i)対象ブロックBの量子化係数P1〜Pnを逆スキャン順に並べた量子化係数列Lの最終係数位置から先頭側の各位置の量子化係数Piが非零か否かを示す情報(後述する「sig_coeff_flag」に相当)
(ii)対象ブロックBの量子化係数P1〜Pnを逆スキャン順に並べた量子化係数列Lの末尾から最大7個の非零係数の係数絶対値が1か否かを示す情報(後述する「coeff_abs_level_greater1_flag」に相当)
(iii)対象ブロックBの量子化係数P1〜Pnを逆スキャン順に並べた量子化係数列Lの末尾からみて係数絶対値が2以上の最初の量子化係数Piの係数絶対値が3以上か否かを示す情報(後述する「coeff_abs_level_greater2_flag」に相当)
(iv)対象ブロックBの量子化係数P1〜Pnを逆スキャン順に並べた量子化係数列Lの非零係数の符号を示す情報(後述する「coeff_sign_flag」に相当)
(v)係数絶対値が2以上の量子化係数Piの係数絶対値を二値化した情報(後述する「coeff_abs_level_remaining」に相当)
符号化要素には(例えば、上記(i)〜(v))、例えば、スキャン順において先に処理される位置の量子化係数が確定しないと得られないものがある。このため、RDOQ処理におけるRDコストJの導出演算の処理間に依存関係が存在し、RDコストJの導出演算にかかる処理を並列化することができない。
そこで、本実施の形態では、量子化装置100は、RDOQ処理におけるRDコストJの導出演算において量子化係数間の依存関係をなくす近似演算を行うことにより、RDコストJの導出演算にかかる処理の並列化を可能にする。
具体的には、例えば、係数絶対値決定部#iは、上記条件(A)または(B)で示すように、初期設定、あるいは、他の量子化係数に依存しない情報に応じて各符号化要素の存否を選択して、各符号化要素の符号量rを算出する。そして、係数絶対値決定部#iは、算出した各符号化要素の符号量rを累積加算することにより符号量Rを算出する。符号量rは、例えば、符号化要素に対応するbin数である。bin数は、符号化要素を二値化して得られるビット列(bin)のビット数である。
符号化要素を二値化する手法としては、例えば、Binarization process for coeff_abs_level_remaining、FL(Fixed Length) binarization、TR(Truncated Rice) binarization、EGk(k−th order Exp−Golomb) binarizationがある。
Binarization process for coeff_abs_level_remainingは、係数絶対値が2以上の量子化係数Piの係数絶対値を二値化する処理である。Binarization process for coeff_abs_level_remainingの具体的な処理内容については、図14を用いて後述する。また、FL binarizationは、1bitのフラグ情報を対象とした二値化である。FL binarizationでは、二値化対象フラグそのものが、binとなる。
TR binarizationは、Binarization process for coeff_abs_level_remainingの中で行われる二値化処理である(後述する図14に示すステップS1406参照)。TR binarizationの処理内容を疑似コードで表すと、図2のようになる。
図2は、TR binarizationの疑似コードの一例を示す説明図である。図2において、疑似コード200は、TR binarizationの処理内容をC言語の疑似コードで表したものである。TR binarizationの入力は、synVal(Syntax Element値)、cMax(Prefix部の最大長)、cRiceParam(Rice符号のパラメータ)であり、出力は、bin列である。bin_string_tは、bin列を表す型である。
TR binarizationは、Rice符号と呼ばれる符号の一種である。また、Rice符号は、Golomb符号と呼ばれる種類の正整数を対象とする符号方法の一種である。Golomb符号は、符号化対象整数をパラメータmで割った商と剰余を求めて、それぞれを符号化した結果をbit連接したものである。
この商と剰余を符号化したそれぞれをHEVCの規格内では、「prefix部」、「suffix部」と呼ぶ。また、Golomb符号のうち、m=2^nのようにmが2のべき乗であるものをRice符号と呼び、TR binarizationにおけるcRiceParamは、このnに相当する。
また、EGk binarizationは、Binarization process for coeff_abs_level_remainingの中で行われる二値化処理である(後述する図14に示すステップS1409参照)。EGk binarizationの処理内容を疑似コードで表すと、図3のようになる。
図3は、EGk binarizationの疑似コードの一例を示す説明図である。図3において、疑似コード300は、EGk binarizationの処理内容をC言語の疑似コードで表したものである。EGk binarizationの入力は、synVal(Syntax Element値)、k(Golomb符号のパラメータ)であり、出力は、bin列である。bin_string_tは、bin列を表す型である。
図1の説明に戻り、係数絶対値決定部#iは、算出したRDコストJ1〜J3に基づいて、量子化係数Piの係数絶対値を決定する。具体的には、例えば、係数絶対値決定部#iは、RDコストJ1〜J3のうちの最小のRDコストJに対応する係数絶対値候補AVCkを、量子化係数Piの係数絶対値に決定する。
最終係数位置決定部103は、係数絶対値決定部102によって決定された量子化係数P1〜Pnの係数絶対値に基づいて、対象ブロックBの最終係数位置を決定する。ここで、最終係数位置とは、量子化係数P1〜Pnを逆スキャン順に並べた量子化係数列Lにおいて、係数絶対値が非零となる最終の量子化係数の位置を示す情報である。
具体的には、例えば、まず、最終係数位置決定部103は、下記式(2)を用いて、決定された量子化係数P1〜Pnの係数絶対値を逆スキャン順に並べた量子化係数列LについてのRDコストJ[i]を算出する。ただし、J[i]は、量子化係数Piを最終係数位置とした場合の対象ブロックBの全周波数成分についてのRDコストである。D[i]は、量子化係数Piを最終係数位置として対象ブロックBを符号化した場合の量子化誤差(復号画像の歪み)である。R[i]は、量子化係数Piを最終係数位置として対象ブロックBを符号化した場合の符号量である。λは、ラグランジュ乗数である。
J[i]=D[i]+λ・R[i] ・・・(2)
また、最終係数位置決定部103は、上記式(2)を用いて、量子化係数P1〜Pnを全て「0」とした場合のRDコストJ[0]を算出する。そして、最終係数位置決定部103は、算出したRDコストJ[i]とRDコストJ[0]のうちの値が小さいほうを最小RDコストJ[min]とする。
つぎに、最終係数位置決定部103は、上記式(2)を用いて、量子化係数列L内の非零の係数絶対値に対してスキャン順に、その係数絶対値を「0」に変えた場合のRDコストJ[i]を算出する。そして、最終係数位置決定部103は、算出したRDコストJ[i]とRDコストJ[min]とを比較する。
ここで、RDコストJ[i]のほうが小さい場合、最終係数位置決定部103は、RDコストJ[i]を最小RDコストJ[min]とし、さらに、量子化係数列L内のつぎの非零の係数絶対値を「0」に変えた場合のRDコストJ[i]を算出する。一方、RDコストJ[min]のほうが小さい場合、最終係数位置決定部103は、その時点での量子化係数列Lの最終係数位置を、対象ブロックBの最終係数位置に決定する。
このように、量子化装置100によれば、RDOQ処理に用いるRDコストJの算出において、対象ブロックB内の量子化係数Piに係る符号化要素の符号量rを、対象ブロックB内の他の量子化係数の値に依存することなく求めることができる。これにより、RDOQ処理におけるRDコストJ(例えば、RDコストJk)の導出演算にかかる処理の並列化が可能となり、RDOを行わない量子化処理と同程度の処理時間での処理を可能にして処理性能の向上を図ることができる。
(符号化要素の具体例)
つぎに、図4および図5を用いて、対象ブロックBの符号化要素(Syntax Element)の具体例について説明する。
図4および図5は、HEVCの勧告書を示す説明図である。図4および図5において、勧告書400には、HEVCのビットストリームの中に、どのような符号化要素が、どのような順番で入っているのかが記載されている。具体的には、例えば、勧告書400には、以下に示す符号化要素が記載されている。なお、各符号化要素の直前に付した数字は、ビットストリームの中に入る各符号化要素の順番を示す。
(0)transform_skip_flag
transform_skip_flagは、対象ブロックBごとに直交変換をする/しないを選択するためのフラグである。
(1)last_sig_coeff_x_prefix/last_sig_coeff_y_prefix/last_sig_coeff_x_suffix/last_sig_coeff_y_suffix
last_sig_coeff_x_prefix/last_sig_coeff_y_prefix/last_sig_coeff_x_suffix/last_sig_coeff_y_suffixは、対象ブロックBの最終係数位置を示す情報である。
(1.5)coded_sub_block_flag
coded_sub_block_flagは、サブブロックsbごとに1つでも非零係数があるか否かを示すフラグである。
(2)sig_coeff_flag
sig_coeff_flagは、量子化係数列Lにおいて最終係数位置から左(先頭側)の各位置の量子化係数が非零か否かを示すフラグである。
(3)coeff_abs_level_greater1_flag
coeff_abs_level_greater1_flagは、量子化係数列Lにおいて高周波側(末尾側)から最大7個の各非零係数の係数絶対値が「1」か否かを示すフラグである。
(4)coeff_abs_level_greater2_flag
coeff_abs_level_greater2_flagは、量子化係数列Lにおいて高周波側(末尾側)からみて係数絶対値が2以上の最初の量子化係数の値が3以上か否かを示すフラグである。
(5)coeff_sign_flag
coeff_sign_flagは、量子化係数列Lの非零係数の符号を示すフラグである。coeff_sign_flagは、符号が正の場合は「0」となり、符号が負の場合は「1」となる。
(6)coeff_abs_level_remaining
coeff_abs_level_remainingは、係数絶対値から、1+coeff_abs_level_greater1_flag+coeff_abs_level_greater2_flag減じた値を二値化した情報である。
(符号量Rkを算出する具体的な処理内容)
つぎに、RDコストJkを求める際に用いる符号量Rkを算出する具体的な処理内容について説明する。ここでは、対象ブロックBを4画素×4画素の処理単位とする。また、符号量Rkを算出する際に用いる符号化要素を、(2)sig_coeff_flag、(3)coeff_abs_level_greater1_flag、(4)coeff_abs_level_greater2_flag、(5)coeff_sign_flagおよび(6)coeff_abs_level_remainingとする。
(2)sig_coeff_flagについて
係数絶対値決定部#iは、下記条件(2−1)、(2−2)および(2−3)のいずれかの条件に基づいて、量子化係数Piのsig_coeff_flagの符号量r1を算出する。具体的には、例えば、係数絶対値決定部#iは、量子化係数Piのsig_coeff_flagに対応するbin数を符号量r1として算出する。
(2−1)全ての量子化係数P1〜Pnについて存在するとする
(2−2)全ての量子化係数P1〜Pnについて存在しないとする
(2−3)量子化係数Piの係数位置、特定のパラメータに応じて存否を設定する
ここで、HEVCの規格によれば、sig_coeff_flagが、ある量子化係数に対して存在する条件の1つとして、「last_sig_coeff_x/y_prefix/suffixで示される、対象ブロックB内の最終係数位置よりも低周波側の量子化係数であること」というものがある。すなわち、この符号化要素が、ある量子化係数に対して存在するかを判定するには、「該当量子化係数よりも高周波数側に非零係数が存在するか否か」の情報が必要となり、量子化係数間に処理の依存関係が生じる。
これに対して、上記条件(2−1)および(2−2)によれば、ある量子化係数のsig_coeff_flagの存否が他の量子化係数の値に依存しないため、sig_coeff_flagについての量子化係数間の処理の依存関係を切ることができる。
また、上記条件(2−3)の場合、例えば、特定のパラメータから、対象ブロックBの最高周波数成分となる確率が最も高い係数位置を推定し、last_sig_coeff_x/y_prefix/suffixが、推定した係数位置を示しているものとする。この場合、この係数位置よりも高周波数側の量子化係数では、sig_coeff_flagは存在せず、低周波数側の量子化係数では、sig_coeff_flagを存在するものと考えることができる。また、特定のパラメータは、対象ブロックB、サブブロックsb内の係数値には依存しない。したがって、上記条件(2−3)によれば、sig_coeff_flagについての量子化係数間の処理の依存関係を切ることができる。
より具体的には、例えば、係数絶対値決定部#iは、量子化係数Piのsig_coeff_flagが存在するとした場合、量子化係数Piのsig_coeff_flagの符号量r1を「r1=1」とする。一方、係数絶対値決定部#iは、量子化係数Piのsig_coeff_flagが存在しないとした場合、量子化係数Piのsig_coeff_flagの符号量r1を「r1=0」とする。
(3)coeff_abs_level_greater1_flagについて
係数絶対値決定部#iは、下記条件(3−1)、(3−2)および(3−3)のいずれかの条件に基づいて、量子化係数Piのcoeff_abs_level_greater1_flagの符号量r2を算出する。具体的には、例えば、係数絶対値決定部#iは、量子化係数Piのcoeff_abs_level_greater1_flagに対応するbin数を符号量r2として算出する。
(3−1)係数絶対値がある非負整数以下である量子化係数Piについては存在しないとし、それ以外は存在するとする
(3−2)係数絶対値がある非負整数以下である量子化係数Piについては存在するとし、それ以外は存在しないとする
(3−3)係数絶対値がある非負整数以下である量子化係数Piについては存在しないとし、それ以外は量子化係数Piの係数位置、特定のパラメータに応じて存否を設定する
ここで、HEVCの規格によれば、coeff_abs_level_greater1_flagは、サブブロックsb内で高周波数側から数えて7個目までの非零係数に対して存在する。これを判定するには、該当量子化係数よりも高周波側に非零係数がいくつあるかの情報が必要となり、量子化係数間に処理の依存関係が生じる。
これに対して、上記条件(3−1)および(3−2)によれば、ある量子化係数のcoeff_abs_level_greater1_flagの存否が該当量子化係数の値(係数絶対値候補)にのみ依存するため、coeff_abs_level_greater1_flagについての量子化係数間の処理の依存関係を切ることができる。
また、上記(3−3)の場合、例えば、特定のパラメータから、対象ブロックBの量子化係数ごとに高周波側から数えて7個目までの非零係数であるかを推定して、この符号化要素の有無を決定することができる。上述したように、特定のパラメータは、対象ブロックB、サブブロックsb内の係数値には依存しない。したがって、上記条件(3−3)によれば、coeff_abs_level_greater1_flagについての量子化係数間の処理の依存関係を切ることができる。
より具体的には、例えば、係数絶対値決定部#iは、量子化係数Piのcoeff_abs_level_greater1_flagが存在するとした場合、量子化係数Piのcoeff_abs_level_greater1_flagの符号量r2を「r2=1」とする。一方、係数絶対値決定部#iは、量子化係数Piのcoeff_abs_level_greater1_flagが存在しないとした場合、量子化係数Piのcoeff_abs_level_greater1_flagの符号量r2を「r2=0」とする。
ここで、上記(3−3)についてより詳細に説明すると、上述したように、coeff_abs_level_greater1_flagは、サブブロックsb内で高周波数側から数えて7個目までの非零係数に対して存在する。すなわち、サブブロックsb内の16係数のうち初めの7個については係数絶対値が非零である場合については存在することになる。
そこで、係数絶対値決定部#iは、例えば、係数位置が高周波側からn個の非零係数については、coeff_abs_level_greater1_flagが存在し、係数位置が低周波側から(16−n)個の非零係数についてはcoeff_abs_level_greater1_flagが存在しないとしてもよい。ここで、nは「n≧7」である。
確実にcoeff_abs_level_greater1_flagが存在しない範囲を考えると「n=7」とすべきであるが、実際には高周波側の量子化係数は量子化によって「0」になっていることが十分考えられる。このため、「n>7」の値を用いたほうが真のbin量に近い値を求めることができる。この「n」の値は固定値(すなわち、係数位置に関する情報のみを用いる)でもよく、また、以下のように特定のパラメータを用いて設定することができる。
例えば、予測モード(Intra/Inter)を用いる場合、Inter予測のほうがIntra予測よりも原画に近い画像を生成可能であるため、差分情報が少なくなり、量子化結果においても高周波側に「0」が多く出現する可能性が高い。このため、Inter予測ほど、nの値を大きくすることにしてもよい。
また、例えば、量子化パラメータを用いる場合、量子化パラメータの値の大小によって、量子化の強度、すなわち、「零付近の値のどこまでを量子化結果で零とするか」が変化する。このため、高周波側に「0」が多く出現する可能性が高くなるような量子化パラメータを用いた場合はnの値を大きくすることにしてもよい。
また、例えば、アクティビティを用いる場合、アクティビティは、その領域の複雑度(大雑把にいうと、細かいテクスチャの強度)を表し、この値が高い領域(対象ブロックB)では、より高周波成分が残る可能性が高い。このため、アクティビティが低いほどnの値を大きくすることにしてもよい。
(4)coeff_abs_level_greater2_flagについて
係数絶対値決定部#iは、下記条件(4−1)に基づいて、量子化係数Piのcoeff_abs_level_greater2_flagの符号量r3を算出する。具体的には、例えば、係数絶対値決定部#iは、量子化係数Piのcoeff_abs_level_greater2_flagに対応するbin数を符号量r3として算出する。
(4−1)全ての量子化係数P1〜Pnについて存在しないとする
ここで、HEVCの規格によれば、coeff_abs_level_greater2_flagは、サブブロックsb内で最も高周波側にある、係数絶対値が2以上の量子化係数に対して存在する。サブブロックsb内で最も高周波側にある量子化係数か否かの判定には、対象ブロックB、サブブロックsb内の他の量子化係数の値が必要となり、量子化係数間に処理の依存関係が生じる。
これに対して、上記条件(4−1)によれば、ある量子化係数のcoeff_abs_level_greater2_flagの存否が他の量子化係数の値に依存しないため、coeff_abs_level_greater2_flagについての量子化係数間の処理の依存関係を切ることができる。
より具体的には、例えば、係数絶対値決定部#iは、量子化係数Piのcoeff_abs_level_greater2_flagを存在しないとして、量子化係数Piのcoeff_abs_level_greater2_flagの符号量r3を「r3=0」とする。
(5)coeff_sign_flagについて
係数絶対値決定部#iは、下記条件(5−1)に基づいて、量子化係数Piのcoeff_sign_flagの符号量r4を算出する。具体的には、例えば、係数絶対値決定部#iは、量子化係数Piのcoeff_sign_flagに対応するbin数を符号量r4として算出する。
(5−1)係数絶対値が「0」の量子化係数Piについては存在しないとし、それ以外は存在するとする
ここで、HEVCの規格によれば、coeff_sign_flagは、後述するsign_data_hidingという技術によって、存在させないことができる(それ以外では存在する)。この存在させない条件の1つとして、「量子化係数Piが、サブブロックsb内で最高周波側の係数絶対値が非零の係数である」という条件がある。この判定には、量子化係数Piよりも高周波側の量子化係数が全て零であるかどうかの情報が必要となり、量子化係数間に処理の依存関係が生じる。
これに対して、上記条件(5−1)によれば、ある量子化係数のcoeff_sign_flagの存否が該当量子化係数の値にのみ依存するため、coeff_sign_flagについての量子化係数間の処理の依存関係を切ることができる。
より具体的には、例えば、係数絶対値決定部#iは、量子化係数Piのcoeff_sign_flagが存在するとした場合、量子化係数Piのcoeff_sign_flagの符号量r4を「r4=1」とする。一方、係数絶対値決定部#iは、量子化係数Piのcoeff_sign_flagが存在しないとした場合、量子化係数Piのcoeff_sign_flagの符号量r4を「r4=0」とする。
(6)coeff_abs_level_remainingについて
係数絶対値決定部#iは、下記条件(6−1)および(6−2)のいずれかの条件に基づいて、量子化係数Piのcoeff_abs_level_remainingの符号量r5を算出する。具体的には、例えば、係数絶対値決定部#iは、量子化係数Piのcoeff_abs_level_remainingに対応するbin数を符号量r5として算出する。
(6−1)全ての量子化係数P1〜Pnについて存在するとする
(6−2)係数絶対値がある非負整数以下(例えば、1以下)である係数については存在しないとし、それ以外(例えば、2以上)は存在するとする
ここで、HEVCの規格によれば、coeff_abs_level_remainingは、非零係数のうち、「係数値−baseLevel」が1以上のものについて存在する。baseLevelは、「1+coeff_abs_level_greater1_flag+coeff_abs_level_greater2_flag」によって求められる。coeff_abs_greater1/2_flagは量子化係数によって存在する場合、しない場合があり、存在しない場合はその値は「0」として扱われる。上述したように、coeff_abs_level_greater1/2_flagの存在を確定させるには、サブブロックsb内の他の量子化係数の値の情報が必要となり、量子化係数間に処理の依存関係が生じる。
これに対して、上記条件(6−1)および(6−2)によれば、ある量子化係数のcoeff_abs_level_remainingの存否が他の量子化係数の値に依存しないため、coeff_abs_level_remainingについての量子化係数間の処理の依存関係を切ることができる。
なお、coeff_abs_level_remainingが存在する場合に、coeff_abs_level_remainingの二値化を行うには、サブブロックsb内の直近の高周波側の非零係数の値(cLastAbsLevel)が必要となる。また、cLastRiceParamは、cLastAbsLevelの二値化時に算出される。このため、サブブロックsb内の量子化係数間に処理の依存関係が生じる。
そこで、係数絶対値決定部#iは、量子化係数Piのcoeff_abs_level_remainingが存在するとした場合、量子化係数Piのsig_coeff_flagの符号量r5を下記(i)または(ii)のように決定する。また、係数絶対値決定部#iは、量子化係数Piのcoeff_abs_level_remainingが存在しないとした場合、量子化係数Piのcoeff_abs_level_remainingの符号量r5を「r5=0」とする。
(i)量子化係数Piの係数絶対値から、ある非負整数を減じた値にいずれかのゴロム符号を適用して符号化する。ゴロム符号のパラメータは、量子化係数Piの係数絶対値または係数位置または特定のパラメータにのみ依存して決定する。
具体的には、例えば、係数絶対値決定部#iは、量子化係数Piの係数絶対値から2を減じた値に、「cLastAbsLevel==0」、「cLastRiceParam==0」とした時の二値化を適用する。この場合、サブブロックsb内の直近の高周波側の非零係数の値に依存せずに、cLastAbsLevel、cLastRiceParamを決定することができる。
(ii)量子化係数Piの係数絶対値から、ある非負整数を減じた値にいずれかのゴロム符号に類する符号化を適用する。
具体的には、例えば、係数絶対値決定部#iは、量子化係数Piの係数絶対値から2を減じた値に、γ符号を適用した結果を二値化結果とすることにしてもよい。この場合、サブブロックsb内の直近の高周波側の非零係数の値に依存せずに二値化を行うことができる。
そして、係数絶対値決定部#iは、各符号化要素の符号量r1〜r5を足し合わせることにより、量子化係数Piの係数絶対値を係数絶対値候補AVCkとして対象ブロックBを符号化したときに発生する符号量Rkを算出する。
なお、ここでは符号量Rkを算出する場合を例に挙げて説明したが、量子化係数Piを最終係数位置として対象ブロックBを符号化したときに発生する符号量R[i]を算出する場合も同様である。符号量R[i]の算出例については、図16を用いて後述する。
(量子化装置100の量子化処理手順)
つぎに、量子化装置100の量子化処理手順について説明する。
図6は、量子化装置100の量子化処理手順の一例を示すフローチャート(その1)である。図6のフローチャートにおいて、まず、量子化装置100は、係数絶対値配列Abs[n]を宣言する(ステップS601)。係数絶対値配列Abs[n]は、各量子化係数Piの係数絶対値決定処理で決定した係数絶対値を格納する配列である。ただし、「idx=1」は最も低周波側の係数、「idx=n」は最も高周波側の係数を格納するものとする。
そして、量子化装置100は、対象ブロックBの各量子化係数Piのスケーリング処理を並列に実行する(ステップS602)。つぎに、量子化装置100は、各量子化係数Piの係数絶対値決定処理を並列に実行する(ステップS603)。量子化係数Piの係数絶対値決定処理の引数は、量子化係数Piである。量子化係数Piの係数絶対値決定処理の具体的な処理手順については、図7を用いて後述する。
そして、量子化装置100は、対象ブロックBの最終係数位置決定処理を実行して(ステップS604)、本フローチャートによる一連の処理を終了する。なお、ステップS602のスケーリング処理やステップS603の係数絶対値決定処理の並列化は、例えば、SIMD(Single Instruction Multiple Data)命令やGPGPU(General−purpose computing on graphics processing units)によって実現することにしてもよい。
<係数絶対値決定処理手順>
つぎに、図6に示したステップS603の各量子化係数Piの係数絶対値決定処理の具体的な処理手順について説明する。
図7は、量子化係数Piの係数絶対値決定処理の具体的処理手順の一例を示すフローチャートである。図7のフローチャートにおいて、まず、量子化装置100は、「量子化係数Pi=係数絶対値候補AVC1」の場合のRDコストJ1を導出するRDコスト導出処理を実行する(ステップS701)。
係数絶対値候補AVC1は、変換係数Ciのスケーリング結果を量子化した量子化結果の小数点以下を切り上げたものである。RDコスト導出処理の具体的な処理手順については、図8を用いて後述する。RDコスト導出処理の引数は、量子化係数Piの係数絶対値候補AVCkと係数indexである。係数indexは、サブブロックsb内の処理対象となる量子化係数Piを示す情報である。
つぎに、量子化装置100は、「量子化係数Pi=係数絶対値候補AVC2」の場合のRDコストJ2を導出するRDコスト導出処理を実行する(ステップS702)。係数絶対値候補AVC2は、変換係数Ciのスケーリング結果を量子化した量子化結果の小数点以下を切り捨てたものである。
つぎに、量子化装置100は、「量子化係数Pi=係数絶対値候補AVC3」の場合のRDコストJ3を導出するRDコスト導出処理を実行する(ステップS703)。係数絶対値候補AVC3は、変換係数Ciのスケーリング結果を量子化した量子化結果を「0」としたものである。
そして、量子化装置100は、導出したRDコストJ1〜J3から最小のRDコストJを選択する(ステップS704)。つぎに、量子化装置100は、選択した最小のRDコストJに対応する量子化係数Piの係数絶対値候補AVCkを、量子化係数Piの係数絶対値に決定する(ステップS705)。
そして、量子化装置100は、係数絶対値配列Abs[n]に決定した量子化係数Piの係数絶対値を格納して(ステップS706)、量子化係数Piの係数絶対値決定処理を呼び出したステップに戻る。
<RDコスト導出処理手順>
つぎに、図7に示したステップS701〜S703のRDコスト導出処理の具体的な処理手順について説明する。
図8は、RDコスト導出処理の具体的処理手順の一例を示すフローチャートである。図8のフローチャートにおいて、まず、量子化装置100は、量子化係数Piの係数絶対値を係数絶対値候補AVCkとして対象ブロックBを符号化した場合の量子化誤差Dkを算出する(ステップS801)。量子化誤差Dkは、例えば、復号画素値と入力画素値との2乗誤差の和で求めることができる。
つぎに、量子化装置100は、量子化係数Piの係数絶対値を係数絶対値候補AVCkとして対象ブロックBを符号化した場合の符号量Rkを導出する符号量導出処理を実行する(ステップS802)。符号量導出処理の具体的な処理手順については、図9を用いて後述する。
そして、量子化装置100は、量子化誤差Dkと符号量Rkを上記式(1)に代入することにより、量子化係数Piの係数絶対値を係数絶対値候補AVCkとした場合の対象ブロックBの1周波数成分についてのRDコストJkを算出して(ステップS803)、RDコスト導出処理を呼び出したステップに戻る。
<符号量導出処理手順>
つぎに、図8に示したステップS802の符号量導出処理の具体的な処理手順について説明する。
図9は、符号量導出処理の具体的処理手順の一例を示すフローチャートである。図9のフローチャートにおいて、まず、量子化装置100は、sig_coeff_flagの符号量r1を算出するsig_coeff_flag符号量算出処理を実行する(ステップS901)。sig_coeff_flag符号量算出処理の具体的な処理手順については、図10を用いて後述する。
つぎに、量子化装置100は、coeff_abs_level_greater1_flagの符号量r2を算出するcoeff_abs_level_greater1_flag符号量算出処理を実行する(ステップS902)。coeff_abs_level_greater1_flag符号量算出処理の具体的な処理手順については、図11を用いて後述する。
つぎに、量子化装置100は、coeff_abs_level_greater2_flagの符号量r3を算出するcoeff_abs_level_greater2_flag符号量算出処理を実行する(ステップS903)。coeff_abs_level_greater2_flag符号量算出処理の具体的な処理手順については、図12を用いて後述する。
つぎに、量子化装置100は、coeff_sign_flagの符号量r4を算出するcoeff_sign_flag符号量算出処理を実行する(ステップS904)。coeff_sign_flag符号量算出処理の具体的な処理手順については、図13を用いて後述する。
つぎに、量子化装置100は、coeff_abs_level_remainingの符号量r5を算出するcoeff_abs_level_remaining符号量算出処理を実行する(ステップS905)。coeff_abs_level_remaining符号量算出処理の具体的な処理手順については、図14を用いて後述する。
そして、量子化装置100は、算出した符号量r1〜r5を累積加算することにより、量子化係数Piの係数絶対値を係数絶対値候補AVCkとして対象ブロックBを符号化した場合の符号量Rkを算出して(ステップS906)、符号量導出処理を呼び出したステップに戻る。
<sig_coeff_flag符号量算出処理手順>
つぎに、図9に示したステップS901のsig_coeff_flag符号量算出処理の具体的な処理手順について説明する。
図10は、sig_coeff_flag符号量算出処理の具体的処理手順の一例を示すフローチャートである。図10のフローチャートにおいて、量子化装置100は、sig_coeff_flagの符号量r1を「r1=1」として(ステップS1001)、sig_coeff_flag符号量算出処理を呼び出したステップに戻る。
これにより、Abs[n]〜Abs[i+1]の値が確定していなくても、量子化係数Piのsig_coeff_flagの符号量r1を算出することができる。
<coeff_abs_level_greater1_flag符号量算出処理手順>
つぎに、図9に示したステップS902のcoeff_abs_level_greater1_flag符号量算出処理の具体的な処理手順について説明する。
図11は、coeff_abs_level_greater1_flag符号量算出処理の具体的処理手順の一例を示すフローチャートである。図11のフローチャートにおいて、量子化装置100は、量子化係数Piの係数絶対値候補AVCkが1以上であるか否かを判断する(ステップS1101)。
ここで、量子化係数Piの係数絶対値候補AVCkが1以上の場合(ステップS1101:Yes)、量子化装置100は、coeff_abs_level_greater1_flagの符号量r2を「r2=1」として(ステップS1102)、coeff_abs_level_greater1_flag符号量算出処理を呼び出したステップに戻る。
一方、量子化係数Piの係数絶対値候補AVCkが1未満の場合(ステップS1101:No)、量子化装置100は、coeff_abs_level_greater1_flagの符号量r2を「r2=0」として(ステップS1103)、coeff_abs_level_greater1_flag符号量算出処理を呼び出したステップに戻る。
これにより、Abs[n]〜Abs[i+1]の値が確定していなくても、量子化係数Piのcoeff_abs_level_greater1_flagの符号量r2を算出することができる。
<coeff_abs_level_greater2_flag符号量算出処理手順>
つぎに、図9に示したステップS903のcoeff_abs_level_greater2_flag符号量算出処理の具体的な処理手順について説明する。ここでは、coeff_abs_level_greater2_flagは存在しないものとする。
図12は、coeff_abs_level_greater2_flag符号量算出処理の具体的処理手順の一例を示すフローチャートである。図12のフローチャートにおいて、量子化装置100は、coeff_abs_level_greater2_flagの符号量r3を「r3=0」として(ステップS1201)、coeff_abs_level_greater2_flag符号量算出処理を呼び出したステップに戻る。
これにより、Abs[n]〜Abs[i+1]の値が確定していなくても、量子化係数Piのcoeff_abs_level_greater2_flagの符号量r3を算出することができる。
<coeff_sign_flag符号量算出処理手順>
つぎに、図9に示したステップS904のcoeff_sign_flag符号量算出処理の具体的な処理手順について説明する。
図13は、coeff_sign_flag符号量算出処理の具体的処理手順の一例を示すフローチャートである。図13のフローチャートにおいて、量子化装置100は、量子化係数Piの係数絶対値候補AVCkが0であるか否かを判断する(ステップS1301)。
ここで、量子化係数Piの係数絶対値候補AVCkが0ではない場合(ステップS1301:No)、量子化装置100は、coeff_sign_flagの符号量r4を「r4=1」として(ステップS1302)、coeff_sign_flag符号量算出処理を呼び出したステップに戻る。
一方、量子化係数Piの係数絶対値候補AVCkが0である場合(ステップS1301:Yes)、量子化装置100は、coeff_sign_flagの符号量r4を「r4=0」として(ステップS1303)、coeff_sign_flag符号量算出処理を呼び出したステップに戻る。
これにより、Abs[n]〜Abs[i+1]の値が確定していなくても、量子化係数Piのcoeff_sign_flagの符号量r4を算出することができる。
<coeff_abs_level_remaining符号量算出処理手順>
つぎに、図9に示したステップS905のcoeff_abs_level_remaining符号量算出処理の具体的な処理手順について説明する。
図14は、coeff_abs_level_remaining符号量算出処理の具体的処理手順の一例を示すフローチャートである。図14のフローチャートにおいて、まず、量子化装置100は、cLastAbsLevelを「cLastAbsLevel=0」とし、cLastRiceParamを「cLastRiceParam=0」とする(ステップS1401)。
そして、量子化装置100は、cAbsLevelを「cAbsLevel=baseLevel+coeff_abs_level_remaining」とする(ステップS1402)。baseLevelは、中間変数である。つぎに、量子化装置100は、cRiceParamを「cRiceParam=Min(cLastRiceParam+(cLastAbsLevel>(3*(1<<cLastRiceParam))?1:0),4)」とする(ステップS1403)。
そして、量子化装置100は、cMaxを「cMax=4<<cRiceParam」とし(ステップS1404)、prefixValを「prefixVal=Min(cMax,coeff_abs_level_remaining)」とする(ステップS1405)。つぎに、量子化装置100は、prefix部bin導出処理として、TR binarization処理を実行する(ステップS1406)。二値化処理対象は「prefixVal」であり、パラメータは「cMax,cRiceParam」である。
そして、量子化装置100は、prefix部bin導出処理結果が“1111”か否かを判断する(ステップS1407)。ここで、prefix部bin導出処理結果が“1111”の場合(ステップS1407:Yes)、量子化装置100は、suffixValを「suffixVal=coeff_abs_level_remaining−cMax」とする(ステップS1408)。
つぎに、量子化装置100は、suffix部bin導出処理として、EGk binarization処理を実行する(ステップS1409)。二値化処理対象は「suffixVal」であり、パラメータは「cRiceParam+1」である。
そして、量子化装置100は、coeff_abs_level_remainingの符号量r5を「r5=prefix部bin導出処理結果とsuffix部bin導出処理結果のビット連接」として(ステップS1410)、coeff_abs_level_remaining符号量算出処理を呼び出したステップに戻る。
また、ステップS1407において、prefix部bin導出処理結果が“1111”ではない場合(ステップS1407:No)、量子化装置100は、coeff_abs_level_remainingの符号量r5を「r5=prefix部bin導出処理結果」として(ステップS1411)、coeff_abs_level_remaining符号量算出処理を呼び出したステップに戻る。
これにより、Abs[n]〜Abs[i+1]の値が確定していなくても、量子化係数Piのcoeff_abs_level_remainingの符号量r5を算出することができる。
なお、図6の例では、各量子化係数Piの係数絶対値決定処理を並列に実行する際の並列度が対象ブロックB内の量子化係数P1〜Pnの数と同じ場合について説明したが、これに限らない。具体的には、例えば、量子化装置100は、並列度を対象ブロックB内の量子化係数P1〜Pnの数よりも少なくして部分的な並列化を行うことにしてもよい。
図15は、量子化装置100の量子化処理手順の一例を示すフローチャート(その2)である。図15のフローチャートにおいて、まず、量子化装置100は、係数絶対値配列Abs[n]を宣言する(ステップS1501)。ここでは、対象ブロックBを4画素×4画素とする。この場合、「n」は、「n=16」となる。
そして、量子化装置100は、対象ブロックBの各量子化係数P1〜P16のスケーリング処理を並列に実行する(ステップS1502)。つぎに、量子化装置100は、量子化係数P1,P2の係数絶対値決定処理を並列に実行する(ステップS1503)。つぎに、量子化装置100は、量子化係数P3,P4の係数絶対値決定処理を並列に実行する(ステップS1504)。
つぎに、量子化装置100は、量子化係数P5,P6の係数絶対値決定処理を並列に実行する(ステップS1505)。つぎに、量子化装置100は、量子化係数P7,P8の係数絶対値決定処理を並列に実行する(ステップS1506)。
つぎに、量子化装置100は、量子化係数P9,P10の係数絶対値決定処理を並列に実行する(ステップS1507)。つぎに、量子化装置100は、量子化係数P11,P12の係数絶対値決定処理を並列に実行する(ステップS1508)。
つぎに、量子化装置100は、量子化係数P13,P14の係数絶対値決定処理を並列に実行する(ステップS1509)。つぎに、量子化装置100は、量子化係数P15,P16の係数絶対値決定処理を並列に実行する(ステップS1510)。そして、量子化装置100は、対象ブロックBの最終係数位置決定処理を実行して(ステップS1511)、本フローチャートによる一連の処理を終了する。
これにより、各量子化係数P1〜P16の係数絶対値決定処理を2並列で実行することができる。この場合、例えば、量子化係数P1〜P16の係数絶対値決定処理の繰り返しの最後(ステップS1510)では、他の量子化係数の係数絶対値は決定しているため、coeff_abs_level_greater1_flagを、それまでサブブロックsb内に出現した2以上の係数絶対値を持つ量子化係数の値に応じて有無を決定することが可能となる。また、coeff_abs_level_remainingを算出する際の、cLastAbsLevel、cLastRiceParamを、それまでにサブブロックsb内に出現した係数の係数絶対値、これを二値化した時のcRiceParamに応じて決定することが可能となる。
(符号量R[i]の算出例)
つぎに、量子化係数Piを最終係数位置として対象ブロックBを符号化した場合の符号量R[i]の算出例について説明する。
図16は、対象ブロックBの量子化係数P1〜Pnの具体例を示す説明図である。図16において、対象ブロックBは、4画素×4画素の処理対象ブロックである。図16の例では、対象ブロックBの変換係数C1〜C16のスケーリング結果を量子化した量子化係数P1〜P16の係数絶対値が2次元配列中に示されている。
この場合、対象ブロックBの量子化係数列Lは、例えば、[60,−34,0,−1,10,20,0,0,1,0,0,0,0,0,0,0]となる。以下、この量子化係数列Lを例に挙げて、量子化係数P9を最終係数位置として対象ブロックBを符号化した場合の符号量R[9]の算出例について説明する。
ここでは、sig_coeff_flagは、全ての量子化係数P1〜P16について存在するとする(上記条件(2−1))。また、coeff_abs_level_greater1_flagは、係数絶対値が「0」ではない、すなわち、係数絶対値が1以上の全ての量子化係数について存在するとする(上記条件(3−1))。また、coeff_abs_level_greater2_flagは、全ての量子化係数P1〜P16について存在しないものとする(上記条件(4−1))。
また、coeff_sign_flagは、係数絶対値が「0」の量子化係数については存在せず、それ以外の量子化係数では存在するものとする(上記条件(5−1))。また、coeff_abs_level_remainingは、係数絶対値が2以上の量子化係数について存在するものとする(上記条件(6−2))。また、coeff_abs_level_remainingが存在する場合、「cLastAbsLevel==0」、「cLastRiceParam==0」とする。
また、PPS(Picture Parameter Set)のtransform_skip_enabled_flagが「0」であり、PPSのsign_data_hiding_enabled_flagが「0」であるとする。PPSは、ピクチャ単位で切り替えれば十分なパラメータ群である。具体的には、PPSは、スライス単位に切り替えても符号化効率はあまり上がらないが、ピクチャ単位では切り替えられたほうが符号化効率がよいという性質のパラメータを集めたものである。
transform_skip_enabled_flagは、residual_coding内にtransform_skip_flagを含むか否かを選択するための選択用のフラグである。パソコンの画面をネットワーク経由で伝送する場合(以下、「画面伝送」と呼ぶ)は、直交変換処理を行わないほうが効率的に画像を圧縮できる場合がある。このため、HEVCでは、対象ブロックBごとに直交変換をする/しないを選択することができるようになっており、residual_coding部分のtransform_skip_flagで選択する。
このtransform_skip_flagの伝送を行うと、行わない場合に比べてビットストリームは大きくなる。ところが、画面伝送の場合は、このビットストリームの増大分を受け入れても、直交変換をする/しないを選択できることによるビットストリームの削減効果が大きく、トータルではビットストリームを小さくできる。
一方、自然画像(例えば、ビデオカメラで撮影した画像)では、直交変換をする/しないを選択できたとしても圧縮効率がほとんど変わらないため、transform_skip_flagの伝送を行うと、多くの場合にビットストリームが増加する。そこで、HEVCでは、符号化する画像の性質に応じて、residual_coding内にtransform_skip_flagを含むか否かを選択することができるようになっている。
sign_data_hiding_enabled_flagは、sign_data_hiding機能を使用するか否かを示すフラグである。sign_data_hidingとは、ある条件を満たすときに、サブブロックsb内の非零係数のうちの1つの符号(coeff_sign_flag)を、サブブロックsb内の他の係数絶対値の総和が偶数であるか、奇数であるかから決定する技術である。sign_data_hiding_enabled_flagの値が「1」かつ特定の条件を満たす場合に、サブブロックsb内でsign_data_hidingが実施される。
(0)transform_skip_flagについて
ここでは、transform_skip_enabled_flagを「0」としたため、この符号化要素は現れない。
(1)last_sig_coeff_x_prefix/last_sig_coeff_y_prefix/last_sig_coeff_x_suffix/last_sig_coeff_y_suffixについて
逆スキャン前の対象ブロックBは、図16に示すように2次元配列として考えることができ、スキャン後の最終係数位置は、last_sig_coeff_xとlast_sig_coeff_yの2つの変数(2次元配列のインデックス)として表すことができる。図16の例では、last_sig_coeff_xは「last_sig_coeff_x=2」となり、last_sig_coeff_yは「last_sig_coeff_y=1」となる。
このため、last_sig_coeff_x_prefixは「last_sig_coeff_x_prefix=2」となり、last_sig_coeff_y_prefixは「last_sig_coeff_y_prefix=1」となる。これらは、「cMax=3」、「cRiceParam=0」をパラメータとして、TR binarizationで二値化される。この二値化処理結果は、それぞれ「110」、「10」となる。また、last_sig_coeff_x_prefix、last_sig_coeff_y_prefixともに3以下のため、last_sig_coeff_x_suffix、last_sig_coeff_y_suffixは存在しない。
なお、last_sig_coeff_xとlast_sig_coeff_yの2つの変数は、そのまま何らかの二値化手法を適用するよりは、Rice符号のように、値を2つ(prefixとsuffix)に分けてそれぞれを別の二値化方法を適用したほうが符号化効率がよいため、Syntax Element上では2つに分かれている。
(1.5)coded_sub_block_flagについて
ここでは、対象ブロックBを4画素×4画素としたため、この符号化要素は現れない。
(2)sig_coeff_flagについて
ここでは、対象ブロックB内の全係数について存在するものとするため、sig_coeff_flagのSyntax Element値は「0,0,0,0,0,0,0,1,0,0,1,1,1,0,1,1」となる。このSyntax Element値の各ビットには、FL binarizationの二値化が行われる。この結果、bin列は「0000000100111011」となる。
(3)coeff_abs_level_greater1_flagについて
ここでは、係数絶対値が零ではない量子化係数について存在するとするため、量子化係数列Lのうちの「1,−1,10,20,−34,60」について存在するものとし、Syntax Element値は「0,0,1,1,1,1」となる。このSyntax Element値の各ビットには、FL binarizationの二値化が行われる。この結果、bin列は「001111」となる。
(4)coeff_abs_level_greater2_flagについて
ここでは、全ての量子化係数P1〜P16について存在しないものとするため、このSyntax Elementは存在せず、binも存在しない。
(5)coeff_sign_flagについて
ここでは、「sign_data_hiding_enabled_flag==0」としたため、全非零係数の符号を列挙することになり、符号列は「+,−,+,+,−,+」となる。符号が正の場合は「0」となり、符号が負の場合は「1」となるため、Syntax Element値は「0,1,0,0,1,0」となる。このSyntax Element値の各ビットには、FL binarizationの二値化が行われる。この結果、bin列は「010010」となる。
(6)coeff_abs_level_remainingについて
ここでは、係数絶対値が2以上の量子化係数について存在するものとするため、対象となる量子化係数を高周波側から列挙すると、「10,20,−34,60」となり、それぞれに対するcoeff_abs_level_remainingは「7,18,32,58」となる。このSyntax Elementには、図14に示したBinarization process for coeff_abs_level_remainingの二値化が行われる。
具体的には、「10」に対する二値化(baseLevel==2)は以下のようになる。
1.cLastAbsLevel=0、cLastRiceParam=0
2.cAbsLevel=10
3.cRiceParam=0
4.cMax=4
5.prefixVal=4
6.prefix部bin列導出処理の結果:「1111」
7.prefix部bin列が「1111」なのでsuffixが存在。suffix部は「1001」
また、「20」に対する二値化(baseLevel==2)は以下のようになる。
1.cLastAbsLevel=0、cLastRiceParam=0
2.cAbsLevel=20
3.cRiceParam=0
4.cMax=4
5.prefixVal=4
6.prefix部bin列導出処理の結果:「1111」
7.prefix部bin列が「1111」なのでsuffixが存在。suffix部は「11100000」
また、「−34」に対する二値化(baseLevel==2)は以下のようになる。
1.cLastAbsLevel=0、cLastRiceParam=0
2.cAbsLevel=34
3.cRiceParam=0
4.cMax=4
5.prefixVal=4
6.prefix部bin列導出処理の結果:「1111」
7.prefix部bin列が「1111」なのでsuffixが存在。suffix部は「11101110」
また、「60」に対する二値化(baseLevel==2)は以下のようになる。
1.cLastAbsLevel=0、cLastRiceParam=0
2.cAbsLevel=60
3.cRiceParam=0
4.cMax=4
5.prefixVal=4
6.prefix部bin列導出処理の結果:「1111」
7.prefix部bin列が「1111」なのでsuffixが存在。suffix部は「1111011000」
この結果、量子化係数P9を最終係数位置として対象ブロックBを符号化した場合の符号量R[9]は、上述した各符号化要素に対応するbin数の総和となる。
(符号化装置の構成例)
つぎに、量子化装置100を符号化装置に適用した場合の構成例について説明する。
図17は、符号化装置の構成例を示すブロック図である。図17において、符号化装置1700は、Intra予測部1701と、動き予測(Inter予測)部1702と、周波数変換/量子化部1703と、逆量子化/逆周波数変換部1704と、エントロピー符号化部1705と、インループフィルタ部1706と、フレームメモリ1707と、を含む。
Intra予測部1701は、同一フレーム内の空間的に隣接する画素を用いて予測画像を生成するIntra予測処理を行う。動き予測部1702は、フレームメモリ1707に格納されている符号化済みフレームの局部復号画像を用いて動きを検出して予測画像を生成するInter予測処理を行う。
周波数変換/量子化部1703は、入力画像と予測画像との差分画像(予測残差信号)に対する周波数変換、量子化を行う。量子化装置100は、周波数変換/量子化部1703の量子化を行う部分に適用される。逆量子化/逆周波数変換部1704は、周波数係数に対する逆量子化、逆周波数変換を行う。
エントロピー符号化部1705は、周波数係数に対するエントロピー符号化を行う。インループフィルタ部1706は、フィルタ前局所復号画像に対してフィルタ処理を行う。フレームメモリ1707は、インループフィルタ部1706から出力されるデコード画像(局所復号画像)を記憶する。
符号化装置1700によれば、RDOQ処理におけるRDコストJの導出演算にかかる処理の並列化が可能となり、動画像を符号化する符号化処理全体の処理性能の向上を図ることができる。
以上説明したように、実施の形態にかかる量子化装置100によれば、RDOQ処理におけるRDコストJの算出において、対象ブロックB内の量子化係数Piに係る符号化要素の符号量rを、対象ブロックB内の他の量子化係数に依存することなく求めることができる。また、量子化装置100によれば、符号化要素の符号量rを、符号化要素に対応する算術符号前のbin数から求めることができる。
これにより、対象ブロックB内の各量子化係数P1〜Pnの係数絶対値の決定に用いるRDコストJkの導出演算にかかる処理の並列化が可能となり、RDOQ処理を行う量子化処理の処理性能の向上を図ることができる。また、対象ブロックBの最終係数位置の決定に用いるRDコストJ[i]の導出演算にかかる処理の一部並列化が可能となる。
例えば、量子化装置100は、上記条件(2−1)、(2−2)および(2−3)のいずれかの条件に基づいて、量子化係数Piのsig_coeff_flagの符号量r1を算出することができる。上記条件(2−1)および(2−2)によれば、量子化係数Piのsig_coeff_flagの存否が他の量子化係数の値に依存しないため、sig_coeff_flagについての量子化係数間の処理の依存関係を切ることができる。
また、例えば、量子化装置100は、上記条件(3−1)、(3−2)および(3−3)のいずれかの条件に基づいて、量子化係数Piのcoeff_abs_level_greater1_flagの符号量r2を算出することができる。上記条件(3−1)および(3−2)によれば、量子化係数Piのcoeff_abs_level_greater1_flagの存否が量子化係数Piの値(係数絶対値候補AVCk)にのみ依存するため、coeff_abs_level_greater1_flagについての量子化係数間の処理の依存関係を切ることができる。
また、例えば、量子化装置100は、上記条件(4−1)に基づいて、量子化係数Piのcoeff_abs_level_greater2_flagの符号量r3を算出することができる。上記条件(4−1)によれば、量子化係数Piのcoeff_abs_level_greater2_flagの存否が他の量子化係数の値に依存しないため、coeff_abs_level_greater2_flagについての量子化係数間の処理の依存関係を切ることができる。
また、例えば、量子化装置100は、上記条件(5−1)に基づいて、量子化係数Piのcoeff_sign_flagの符号量r4を算出することができる。上記条件(5−1)によれば、量子化係数Piのcoeff_sign_flagの存否が量子化係数Piの値にのみ依存するため、coeff_sign_flagについての量子化係数間の処理の依存関係を切ることができる。
また、例えば、量子化装置100は、上記条件(6−1)および(6−2)のいずれかの条件に基づいて、量子化係数Piのcoeff_abs_level_remainingの符号量r5を算出することができる。上記条件(6−1)および(6−2)によれば、量子化係数Piのcoeff_abs_level_remainingの存否が他の量子化係数の値に依存しないため、coeff_abs_level_remainingについての量子化係数間の処理の依存関係を切ることができる。
なお、本実施の形態で説明した量子化方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本量子化プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本量子化プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)符号化対象の動画像を構成する入力画像と前記入力画像の予測画像との予測残差信号を直交変換した変換係数を量子化する量子化装置において、
対象ブロックの変換係数に対してスケーリングを行う第1の処理部と、
前記第1の処理部によってスケーリングされた変換係数を量子化して得られる量子化係数の複数の係数絶対値候補のいずれかの係数絶対値候補を用いて前記対象ブロックを符号化するコストを、前記対象ブロックを符号化した場合の量子化誤差と符号量を用いて算出する第2の処理部と、を有し、
前記第2の処理部は、前記量子化係数に係る符号化要素の存否を示す条件、または、前記量子化係数の係数絶対値候補、係数位置および特定のパラメータの少なくともいずれかに応じて前記符号化要素の存否を選択する条件のいずれかの条件で前記符号化要素を二値化して得られる前記符号化要素の符号量に基づいて、前記対象ブロックを符号化した場合の符号量を算出することを特徴とする量子化装置。
(付記2)前記第2の処理部は、前記符号化要素に対応するbin数を累積加算することにより前記対象ブロックを符号化した場合の符号量を算出することを特徴とする付記1に記載の量子化装置。
(付記3)前記第2の処理部は、算出した前記コストに基づいて、前記複数の係数絶対値候補から前記量子化係数の係数絶対値を決定することを特徴とする付記1または2に記載の量子化装置。
(付記4)前記第2の処理部は、算出した前記コストに基づいて、前記対象ブロックの量子化係数を逆スキャン順に並べた量子化係数列の最終係数位置を決定することを特徴とする付記1〜3のいずれか一つに記載の量子化装置。
(付記5)前記第2の処理部は、前記符号化要素が、前記対象ブロックの量子化係数を逆スキャン順に並べた量子化係数列の最終係数位置から先頭側の各位置の量子化係数が非零か否かを示す情報の場合、前記対象ブロックの全ての量子化係数について前記符号化要素が存在するとする条件、前記対象ブロックの全ての量子化係数について前記符号化要素が存在しないとする条件、前記量子化係数の係数位置、特定のパラメータに応じて前記符号化要素の存否を設定する条件のいずれかの条件で前記符号化要素を二値化することを特徴とする付記1〜4のいずれか一つに記載の量子化装置。
(付記6)前記第2の処理部は、前記符号化要素が、前記対象ブロックの量子化係数を逆スキャン順に並べた量子化係数列の末尾から最大7個の非零係数の係数絶対値が1か否かを示す情報の場合、係数絶対値がある非負整数以下である量子化係数については前記符号化要素が存在しないとし、それ以外の量子化係数については前記符号化要素が存在するとする条件、係数絶対値がある非負整数以下である量子化係数については前記符号化要素が存在するとし、それ以外の量子化係数については前記符号化要素が存在しないとする条件、係数絶対値がある非負整数以下である量子化係数については前記符号化要素が存在しないとし、それ以外の量子化係数については当該量子化係数の係数位置、特定のパラメータに応じて前記符号化要素の存否を設定する条件のいずれかの条件で前記符号化要素を二値化することを特徴とする付記1〜5のいずれか一つに記載の量子化装置。
(付記7)前記第2の処理部は、前記符号化要素が、前記対象ブロックの量子化係数を逆スキャン順に並べた量子化係数列の末尾からみて係数絶対値が2以上の最初の量子化係数の係数絶対値が3以上か否かを示す情報の場合、前記対象ブロックの全ての量子化係数について前記符号化要素が存在しないとする条件で前記符号化要素を二値化することを特徴とする付記1〜6のいずれか一つに記載の量子化装置。
(付記8)前記第2の処理部は、前記符号化要素が、前記対象ブロックの量子化係数を逆スキャン順に並べた量子化係数列の非零係数の符号を示す情報の場合、係数絶対値が零の量子化係数については前記符号化要素が存在しないとし、それ以外の量子化係数については前記符号化要素が存在するとする条件で前記符号化要素を二値化することを特徴とする付記1〜7のいずれか一つに記載の量子化装置。
(付記9)前記第2の処理部は、前記符号化要素が、係数絶対値が2以上の量子化係数の係数絶対値を二値化した情報を示す場合、前記対象ブロックの全ての量子化係数について前記符号化要素が存在するとする条件、係数絶対値がある非負整数以下である量子化係数については前記符号化要素が存在しないとし、それ以外の量子化係数について前記符号化要素が存在するとする条件のいずれかの条件で前記符号化要素を二値化することを特徴とする付記1〜8のいずれか一つに記載の量子化装置。
(付記10)前記第2の処理部は、前記符号化要素が存在する場合、前記量子化係数の係数絶対値から、ある非負整数を減じた値にいずれかのゴロム符号を適用して符号化し、当該ゴロム符号のパラメータを前記量子化係数の係数絶対値または係数位置または特定のパラメータにのみ依存して決定することを特徴とする付記9に記載の量子化装置。
(付記11)前記第2の処理部は、前記符号化要素が存在する場合、前記量子化係数の係数絶対値から、ある非負整数を減じた値にいずれかのゴロム符号に類する符号化手法を適用して符号化することを特徴とする付記9に記載の量子化装置。
(付記12)前記特定のパラメータは、ピクチャタイプ、参照構造において符号化対象ピクチャがどのピクチャであるか、予測モード、量子化パラメータおよびスケーリングリストの少なくともいずれかであることを特徴とする付記1〜11のいずれか一つに記載の量子化装置。
(付記13)前記係数位置は、前記対象ブロックのブロックサイズ、前記対象ブロックにおける前記量子化係数の位置および前記対象ブロックの特徴量を表すパラメータの少なくともいずれかであることを特徴とする付記1〜12のいずれか一つに記載の量子化装置。
(付記14)符号化対象の動画像を構成する入力画像と前記入力画像の予測画像との予測残差信号を直交変換した変換係数を量子化する量子化装置が、
対象ブロックの変換係数に対してスケーリングを行い、
スケーリングした変換係数を量子化して得られる量子化係数の複数の係数絶対値候補のいずれかの係数絶対値候補を用いて前記対象ブロックを符号化するコストを、前記対象ブロックを符号化した場合の量子化誤差と符号量を用いて算出する際に、前記量子化係数に係る符号化要素の存否を示す条件、または、前記量子化係数の係数絶対値候補、係数位置および特定のパラメータの少なくともいずれかに応じて前記符号化要素の存否を選択する条件のいずれかの条件で前記符号化要素を二値化して得られる前記符号化要素の符号量に基づいて、前記対象ブロックを符号化した場合の符号量を算出する、
処理を実行することを特徴とする量子化方法。
(付記15)符号化対象の動画像を構成する入力画像と前記入力画像の予測画像との予測残差信号を直交変換した変換係数を量子化するコンピュータに、
対象ブロックの変換係数に対してスケーリングを行い、
スケーリングした変換係数を量子化して得られる量子化係数の複数の係数絶対値候補のいずれかの係数絶対値候補を用いて前記対象ブロックを符号化するコストを、前記対象ブロックを符号化した場合の量子化誤差と符号量を用いて算出する際に、前記量子化係数に係る符号化要素の存否を示す条件、または、前記量子化係数の係数絶対値候補、係数位置および特定のパラメータの少なくともいずれかに応じて前記符号化要素の存否を選択する条件のいずれかの条件で前記符号化要素を二値化して得られる前記符号化要素の符号量に基づいて、前記対象ブロックを符号化した場合の符号量を算出する、
処理を実行させることを特徴とする量子化プログラム。
(付記16)動画像を符号化する符号化装置において、
対象ブロックの変換係数に対してスケーリングを行う第1の処理部と、
前記第1の処理部によってスケーリングされた変換係数を量子化して得られる量子化係数の複数の係数絶対値候補のいずれかの係数絶対値候補を用いて前記対象ブロックを符号化するコストを、前記対象ブロックを符号化した場合の量子化誤差と符号量を用いて算出する第2の処理部と、を有し、
前記第2の処理部は、前記量子化係数に係る符号化要素の存否を示す条件、または、前記量子化係数の係数絶対値候補、係数位置および特定のパラメータの少なくともいずれかに応じて前記符号化要素の存否を選択する条件のいずれかの条件で前記符号化要素を二値化して得られる前記符号化要素の符号量に基づいて、前記対象ブロックを符号化した場合の符号量を算出することを特徴とする符号化装置。
100 量子化装置
101 スケーリング部
102 係数絶対値決定部
103 最終係数位置決定部
1700 符号化装置
1701 Intra予測部
1702 動き予測部
1703 周波数変換/量子化部
1704 逆量子化/逆周波数変換部
1705 エントロピー符号化部
1706 インループフィルタ部
1707 フレームメモリ

Claims (12)

  1. 符号化対象の動画像を構成する入力画像と前記入力画像の予測画像との予測残差信号を直交変換した変換係数を量子化する量子化装置において、
    対象ブロックの変換係数に対してスケーリングを行う第1の処理部と、
    前記第1の処理部によってスケーリングされた変換係数をそれぞれ量子化して得られる複数の量子化係数に含まれる量子化係数について、当該量子化係数の複数の係数絶対値候補のいずれかの係数絶対値候補を用いて前記対象ブロックを符号化するコストを、前記対象ブロックを符号化した場合の量子化誤差と符号量を用いて算出する処理を、前記複数の量子化係数に含まれる他の量子化係数と並列に行う第2の処理部と、を有し、
    前記第2の処理部は、前記量子化係数に係る符号化要素の存否を示す条件、または、前記量子化係数の係数絶対値候補、係数位置、および前記変換係数と前記量子化係数との値に依存せずに決定可能なパラメータの少なくともいずれかに応じて前記符号化要素の存否を選択する条件のいずれかの条件で前記符号化要素を二値化して得られる前記符号化要素の符号量に基づいて、前記対象ブロックを符号化した場合の符号量を算出することを特徴とする量子化装置。
  2. 前記第2の処理部は、前記符号化要素に対応するbin数を累積加算することにより前記対象ブロックを符号化した場合の符号量を算出することを特徴とする請求項1に記載の量子化装置。
  3. 前記第2の処理部は、算出した前記コストに基づいて、前記複数の係数絶対値候補から前記量子化係数の係数絶対値を決定することを特徴とする請求項1または2に記載の量子化装置。
  4. 前記第2の処理部は、算出した前記コストに基づいて、前記対象ブロックの量子化係数を逆スキャン順に並べた量子化係数列の最終係数位置を決定することを特徴とする請求項1〜3のいずれか一つに記載の量子化装置。
  5. 前記第2の処理部は、前記符号化要素が、前記対象ブロックの量子化係数を逆スキャン順に並べた量子化係数列の最終係数位置から先頭側の各位置の量子化係数が非零か否かを示す情報の場合、前記対象ブロックの全ての量子化係数について前記符号化要素が存在するとする条件、前記対象ブロックの全ての量子化係数について前記符号化要素が存在しないとする条件、前記量子化係数の係数位置前記変換係数および前記量子化係数の値に依存せずに決定可能なパラメータに応じて前記符号化要素の存否を設定する条件のいずれかの条件で前記符号化要素を二値化することを特徴とする請求項1〜4のいずれか一つに記載の量子化装置。
  6. 前記第2の処理部は、前記符号化要素が、前記対象ブロックの量子化係数を逆スキャン順に並べた量子化係数列の末尾から最大7個の非零係数の係数絶対値が1か否かを示す情報の場合、係数絶対値がある非負整数以下である量子化係数については前記符号化要素が存在しないとし、それ以外の量子化係数については前記符号化要素が存在するとする条件、係数絶対値がある非負整数以下である量子化係数については前記符号化要素が存在するとし、それ以外の量子化係数については前記符号化要素が存在しないとする条件、係数絶対値がある非負整数以下である量子化係数については前記符号化要素が存在しないとし、それ以外の量子化係数については当該量子化係数の係数位置前記変換係数および前記量子化係数の値に依存せずに決定可能なパラメータに応じて前記符号化要素の存否を設定する条件のいずれかの条件で前記符号化要素を二値化することを特徴とする請求項1〜5のいずれか一つに記載の量子化装置。
  7. 前記第2の処理部は、前記符号化要素が、前記対象ブロックの量子化係数を逆スキャン順に並べた量子化係数列の末尾からみて係数絶対値が2以上の最初の量子化係数の係数絶対値が3以上か否かを示す情報の場合、前記対象ブロックの全ての量子化係数について前記符号化要素が存在しないとする条件で前記符号化要素を二値化することを特徴とする請求項1〜6のいずれか一つに記載の量子化装置。
  8. 前記第2の処理部は、前記符号化要素が、前記対象ブロックの量子化係数を逆スキャン順に並べた量子化係数列の非零係数の符号を示す情報の場合、係数絶対値が零の量子化係数については前記符号化要素が存在しないとし、それ以外の量子化係数については前記符号化要素が存在するとする条件で前記符号化要素を二値化することを特徴とする請求項1〜7のいずれか一つに記載の量子化装置。
  9. 前記第2の処理部は、前記符号化要素が、係数絶対値が2以上の量子化係数の係数絶対値を二値化した情報を示す場合、前記対象ブロックの全ての量子化係数について前記符号化要素が存在するとする条件、係数絶対値がある非負整数以下である量子化係数については前記符号化要素が存在しないとし、それ以外の量子化係数について前記符号化要素が存在するとする条件のいずれかの条件で前記符号化要素を二値化することを特徴とする請求項1〜8のいずれか一つに記載の量子化装置。
  10. 前記パラメータは、ピクチャタイプ、参照構造において符号化対象ピクチャがどのピクチャであるか、予測モード、量子化パラメータおよびスケーリングリストの少なくともいずれかである、ことを特徴とする請求項1〜9のいずれか一つに記載の量子化装置。
  11. 符号化対象の動画像を構成する入力画像と前記入力画像の予測画像との予測残差信号を直交変換した変換係数を量子化する量子化装置が、
    対象ブロックの変換係数に対してスケーリングを行い、
    スケーリングした変換係数をそれぞれ量子化して得られる複数の量子化係数に含まれる量子化係数について、当該量子化係数の複数の係数絶対値候補のいずれかの係数絶対値候補を用いて前記対象ブロックを符号化するコストを、前記対象ブロックを符号化した場合の量子化誤差と符号量を用いて算出する処理を、前記複数の量子化係数に含まれる他の量子化係数と並列に行う際に、前記量子化係数に係る符号化要素の存否を示す条件、または、前記量子化係数の係数絶対値候補、係数位置、および前記変換係数と前記量子化係数との値に依存せずに決定可能なパラメータの少なくともいずれかに応じて前記符号化要素の存否を選択する条件のいずれかの条件で前記符号化要素を二値化して得られる前記符号化要素の符号量に基づいて、前記対象ブロックを符号化した場合の符号量を算出する、
    処理を実行することを特徴とする量子化方法。
  12. 符号化対象の動画像を構成する入力画像と前記入力画像の予測画像との予測残差信号を直交変換した変換係数を量子化するコンピュータに、
    対象ブロックの変換係数に対してスケーリングを行い、
    スケーリングした変換係数をそれぞれ量子化して得られる複数の量子化係数に含まれる量子化係数について、当該量子化係数の複数の係数絶対値候補のいずれかの係数絶対値候補を用いて前記対象ブロックを符号化するコストを、前記対象ブロックを符号化した場合の量子化誤差と符号量を用いて算出する処理を、前記複数の量子化係数に含まれる他の量子化係数と並列に行う際に、前記量子化係数に係る符号化要素の存否を示す条件、または、前記量子化係数の係数絶対値候補、係数位置、および前記変換係数と前記量子化係数との値に依存せずに決定可能なパラメータの少なくともいずれかに応じて前記符号化要素の存否を選択する条件のいずれかの条件で前記符号化要素を二値化して得られる前記符号化要素の符号量に基づいて、前記対象ブロックを符号化した場合の符号量を算出する、
    処理を実行させることを特徴とする量子化プログラム。
JP2013180662A 2013-08-30 2013-08-30 量子化装置、量子化方法および量子化プログラム Active JP6197496B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013180662A JP6197496B2 (ja) 2013-08-30 2013-08-30 量子化装置、量子化方法および量子化プログラム
US14/333,898 US9635366B2 (en) 2013-08-30 2014-07-17 Quantization method, coding apparatus, and computer-readable recording medium storing quantization program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013180662A JP6197496B2 (ja) 2013-08-30 2013-08-30 量子化装置、量子化方法および量子化プログラム

Publications (2)

Publication Number Publication Date
JP2015050608A JP2015050608A (ja) 2015-03-16
JP6197496B2 true JP6197496B2 (ja) 2017-09-20

Family

ID=52583246

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013180662A Active JP6197496B2 (ja) 2013-08-30 2013-08-30 量子化装置、量子化方法および量子化プログラム

Country Status (2)

Country Link
US (1) US9635366B2 (ja)
JP (1) JP6197496B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10057577B2 (en) * 2015-06-11 2018-08-21 Sony Corporation Pre-charge phase data compression
US10602192B2 (en) * 2016-02-04 2020-03-24 Mediatek Inc. Methods and apparatuses for performing entropy encoding and entropy decoding with size determination of at least one bitstream portion
US20170311003A1 (en) * 2016-04-20 2017-10-26 Mediatek Inc. Method and apparatus for performing entropy encoding with sign data removal and associated method and apparatus for performing entropy decoding with sign data recovery
EP3270594A1 (en) * 2016-07-15 2018-01-17 Thomson Licensing Method and apparatus for advanced cabac context adaptation for last coefficient coding
WO2018135520A1 (ja) * 2017-01-20 2018-07-26 日本電気株式会社 量子化装置、量子化方法および記録媒体
JP7234925B2 (ja) * 2017-07-10 2023-03-08 ソニーグループ株式会社 情報処理装置および方法
KR20220008381A (ko) 2018-11-12 2022-01-20 삼성전자주식회사 계수 레벨의 엔트로피 부호화 방법 및 장치, 엔트로피 복호화 방법 및 장치
EP3700206A4 (en) * 2018-12-17 2020-11-18 LG Electronics Inc. METHOD AND APPARATUS FOR DECISION OF THE TRANSFORMATION COEFFICIENT SCANNING SEQUENCE BASED ON THE HIGH-FREQUENCY ZERO-POINT RESET
CN110175170B (zh) * 2019-04-19 2023-11-21 平安科技(深圳)有限公司 数据优化处理方法、装置、计算机设备及存储介质
EP3987785A1 (en) * 2019-06-20 2022-04-27 InterDigital VC Holdings France, SAS Lossless mode for versatile video coding
CN110365981B (zh) * 2019-07-10 2021-12-24 中移(杭州)信息技术有限公司 一种视频编码方法、装置、电子设备及存储介质
WO2021172916A1 (ko) * 2020-02-27 2021-09-02 엘지전자 주식회사 영상 디코딩 방법 및 그 장치
MX2022010416A (es) * 2020-02-27 2022-10-03 Lg Electronics Inc Metodo y aparato para la decodificacion de imagenes relacionadas con la ocultacion de datos de se?al.
WO2021172914A1 (ko) * 2020-02-27 2021-09-02 엘지전자 주식회사 레지듀얼 코딩에 대한 영상 디코딩 방법 및 그 장치
JP7493612B2 (ja) * 2020-03-31 2024-05-31 エルジー エレクトロニクス インコーポレイティド レジデュアルコーディングに対する映像デコーディング方法及びその装置
WO2022193389A1 (zh) * 2021-03-17 2022-09-22 Oppo广东移动通信有限公司 视频编解码方法与***、及视频编解码器

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4227067B2 (ja) 2004-04-28 2009-02-18 株式会社東芝 動画像符号化方法と装置及びプログラム
JP4828925B2 (ja) 2005-11-30 2011-11-30 パナソニック株式会社 符号化装置
JP4928176B2 (ja) 2006-06-27 2012-05-09 キヤノン株式会社 映像符号化装置及び映像符号化方法
JP4513841B2 (ja) 2007-08-28 2010-07-28 ソニー株式会社 符号化装置、符号化方法、符号化方法のプログラム及び符号化方法のプログラムを記録した記録媒体
JP4569840B2 (ja) * 2007-09-12 2010-10-27 ソニー株式会社 画像符号化装置、画像符号化方法
US8891615B2 (en) * 2008-01-08 2014-11-18 Qualcomm Incorporated Quantization based on rate-distortion modeling for CABAC coders
US9008171B2 (en) * 2008-01-08 2015-04-14 Qualcomm Incorporated Two pass quantization for CABAC coders
JP2010109912A (ja) 2008-10-31 2010-05-13 Canon Inc 画像符号化装置及び画像符号化方法
JP5426506B2 (ja) 2010-09-06 2014-02-26 日本電信電話株式会社 適応量子化方法,適応量子化装置および適応量子化プログラム

Also Published As

Publication number Publication date
US9635366B2 (en) 2017-04-25
US20150063443A1 (en) 2015-03-05
JP2015050608A (ja) 2015-03-16

Similar Documents

Publication Publication Date Title
JP6197496B2 (ja) 量子化装置、量子化方法および量子化プログラム
JP6388685B2 (ja) 固定小数点変換のためのビット深度調節を伴うビデオ符号化方法及びその装置、並びにビデオ復号化方法及びその装置
JP5873203B2 (ja) 算術符号化を伴ったビデオ符号化方法及びその装置、ビデオ復号化方法及びその装置
CN105409218B (zh) 解码器和解码方法
TWI556632B (zh) 視訊之算術編碼方法及其裝置、以及視訊之算術解碼方法及其裝置
JP5997316B2 (ja) ビデオ復号化方法及びビデオ復号化装置
CN108093256B (zh) 用于编码和解码图像的方法、编码和解码设备
KR101973568B1 (ko) 영상 변환 부호화/복호화 방법 및 장치
KR102425722B1 (ko) 영상 신호 부호화/복호화 방법 및 장치
JP2021513257A (ja) データ符号化及び復号化
JP5423469B2 (ja) 量子化装置、プログラム及び方法、並びに、動画像符号化装置
CA2917419C (en) Scanning orders for non-transform coding
Gao et al. Arithmetic coding using hierarchical dependency context model for H. 264/AVC video coding
KR20220107139A (ko) 영상 신호 부호화/복호화 방법 및 장치
KR101075670B1 (ko) 다수의 기본 블록들을 이용하여 다차원 변환하고 임계 처리하는 방법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170214

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170417

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170807

R150 Certificate of patent or registration of utility model

Ref document number: 6197496

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150