LoginSignup
0
0

More than 5 years have passed since last update.

AV1 specification を読む (再構成と逆量子化)

Last updated at Posted at 2017-08-22

AV1 specification 日本語訳

非可逆圧縮された変換係数を、予測値と元画像との差分である残差に戻すための処理です。


再構成と逆量子化

本節では、逆量子化と逆変換を使ったブロックの再構成について説明します。

逆量子化関数

本節では、逆量子化に必要な関数 get_dc_quant, get_ac_quant を定義します。

量子化パラメタはルックアップテーブルで求めます。

関数 dc_q(b) = dc_lookup[(BitDepth-8)>>1][Clp3(0,255,b)] と定義します。
dc_lookup は以下の通りです。

dc_lookup[3][256] = {
    ...
}

関数 ac_q(b) = ac_lookup[(BitDepth-8)>>1][Clp3(0,255,b)] と定義します。
ac_lookup は以下の通りです。

ac_lookup[3][256] = {
    ...
}

関数 get_qindex() は、カレントブロックの量子化インデックスを返します。

  • seg_feature_active(SEG_LEL_ALT_Q)==1ならば、以下の手順を適用します。
    1. data = FeatureData[segmant_id][SEG_LVL_ALT_Q]
    2. segmentation_abs_or_delta_updates==0ならば、data = base_q_idx + data
    3. return Clip3(0, 255, data)
  • そうではなければ、base_q_idx w返します。

関数 get_dc_quant(plane) は、特定の plane のDC係数の量子化値を返します。

  • plane==0ならば、return dc_q(get_qindex() + deltaQYDc)
  • そうではなければ、return dc_q(get_qindex() + deltaQUVDc)

関数 get_ac_quant(plane) は、特定の plane のAC係数の量子化値を返します。

  • plane==0ならば、return ac_q(get_qindex())
  • そうではなければ、return ac_q(get_qindex()+ deltaQUVAc)

再構成処理

再構成処理は、逆量子化・逆変換・再構成を処理するために呼ばれます。
この処理は、6.4.21節で説明した残差シンタックステーブル内の関数呼び出しで呼び出されます。

この処理の入力は以下の通りです。

  • 再構成するプレーンを指定する plane
  • カレント変換ブロックの CurrFrame[plane] 内の左上座標 x,y
  • 変換ブロックサイズ txsz

この処理の出力は、かれんとふれーむ  CurrFrame の再構成された画素です。

再構成と逆量子化処理は以下の手順です。

dqDenom = (TxSz == TX_32X32) ? 2 : 1
n = 2 + txSz (変換ブロックのlog2)
n0 = 1 << n (変換ブロックの幅)

以下の手順を適用します。

  1. Dequant[i][j] = (Tokens[i*n0 + j] * get_ac_quant(plane)) / dqDenom, i=0..(n0-1), j=0..(n0-1)
  2. Dequant[0][0] = (Tokens[0] * get_dc_quant(plane)) / dqDenom
  3. nを入力として8.7.2節の2次元逆変換処理を呼び出します。逆変換出力は Dequant バッファに格納します。
  4. CurrFrame[plane][y+i][x+j] = Clip1(CurrFrame[plane][y+i][x+j] L Dequant[i][j]), i=0..(n0-1), j=0..(n0-1)

ステップ1,2のDequant配列にかかれる値は、8+BitDepthビットの符号付き整数で表現できる必要があります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0