video coding

動画の符号化

July 13 2013 片山 泰男 (Yasuo Katayama)

戻る∧

目次

1. フレーム間予測と動き補償 MC-DCT
1.1 予測誤差を変換
1.2 複雑な符号化モード
2. イントラ符号化
2.1 MPEG-4 の intra DC-AC予測
2.2 H.264のイントラ予測
2.3 予測モードの推定
2.4 イントラ予測のその後
3. 予測サイズと変換サイズ
3.1 予測ブロックサイズ
3.2 変換ブロックサイズ
3.3 MC-DCTの相性のよさ
4. 固定MB、スキップMB、ダイレクト予測、動きマージ
4.1 ダイレクト予測
4.2 動きベクトル予測(MVP)
4.3 HEVC、4分木とスキップ/動きマージ/AMVPとの組み合わせ
4.4 タイル(Tile)
5. 量子化と逆量子化
5.1 mquant と QM
5.2 QM の設定方法
5.3 dQP の符号化
6. MPEG-1:B画像
6.1 B画像
6.2 半画素精度MC
6.3 2段階双方向
7. MPEG-2:インターレースと階層符号化
8. MPEG-4
8.1 MPEG-4 のオブジェクト符号化
9. H.264、MPEG-4AVC からHEVCへ
9.1 CABAC算術符号化
9.2 レート歪最適化(RDO)
9.3 適応ループフィルタ(ALF)
9.4. 画素適応オフセット(SAO)
10. その他の技術

表1. ITU-TとISO/IEC SC29/WG11(MPEG)関連、動画像符号化標準と、導入された技術

符号化標準: 導入された符号化技術
H.261: MC-DCT。2次元VLC、GOB、マクロブロック、mquant、CBP
JPEG: DCTと量子化マトリクス、2次元(run-size)VLC
MPEG-1: MC-DCTに双方向予測、半画素予測、スライス
MPEG-2(H.262): フレーム/フィールド予測、DCTtype、Dual'予測と、スケーラビリティ(空間、SNRなど)
H.263: イントラDC-AC予測、3DVLC、枠制限無(unrestricted)MC、など多くの技術
JPEG2000: 離散Wavelet変換(DWT)にEBCOT符号化、ビットプレーン、ROI符号化
MPEG-4: オブジェクトベース符号化(形と模様)、イントラDC-AC予測、1/4画素予測
MPEG-4 AVC(H.264): マルチフレーム予測とイントラ予測、4x4 DCT(整数変換) 逆スキャン符号化、ループ内デブロック
HEVC: 4分木(quadtree) による画像分割、タイル、スキップ/動きマージ/AMVPの複数候補選択、SAO
JCT3V: デプス画像を用いる3D多視点符号化

HEVC の JCT-VC 会合全書類は公開され、Webで閲覧できる。 FTPサイト: http://wftp3.itu.int/av-arch/jctvc-site/
全会合の文書の題名の用語検索と著者検索ができる "Welcome to JCT-VC" は、 http://phenix.int-evry.fr/jct/

各会合に大量の書類があり、あり得ないことだが、議長は全てを理解していると思わせる。各会合の meeting reportを頼りに、各提案技術 がどう扱われたかが分かる(*1)。2012年2月(H会合)CD、7月(J会合)J1003 WD9が最終(L1003 WD10)。スケーラビリティのCfPへの提案が2012年 10月K会合に集まった。H.264の文書 ITU-T Rec. H.264(04/2013)は無料入手可能である。検索で出る。完成途中の文書 JVT-G050か、JVT-AF11 の方が理解しやすいが。


≪=BACK TOP∧ NEXT=≫

1. フレーム間予測と動き補償 MC-DCT

動画像の性質を利用してそれを短い符号で表現する方法を組み立てるのが動画符号化技術である。"符号化" は、画像をビット列にする処理全般、 又は復号を含めた技術全般に使う。"復号" は、符号化ビットストリームからの画像の再構成である。現在の動画像符号化は、基本的に波形符号化 であり、動き補償(MC)付きのフレーム間予測と、その誤差をDCT変換する符号化とを組合せた、MC-DCTである。 "予測" とは、既に符号化した別の値 を使って予測値とし、入力値と予測値の差を符号化する。入力と予測の相関が高いとき予測差分が入力より小さいことによって効率を上げる。 符号化には様々な場面で予測が使われる。

画像は一般に空間的に滑らかな変化をするから、空間的な変化は画像をブロックに分割してDCT変換し、少数のDCT係数で符号化表現できる。さらに、 動画像は時間的にも滑らかに変化する。一般的に以前の画像との違いは小さく、画像間の変化が小さい。フレーム間(インターフレーム)予測は、 既に符号化し復号した参照フレームの同位置の対応画素との差分を符号化する。輝度の値は0-255で黒は0白は255とする。座標はx方向は右を正に、 y方向は下を正にする。そして、差分をとると不利な場合は差分しないように、ブロック毎に予測するかどうかをON/OFFする。このON/OFF情報は サイド情報として符号化する。

code(x,y) = Input(x,y) - Ref(x,y) or Input(x,y)

さらに画像の変化を平行移動として、参照画像上で対象ブロックに対応する同位置から動きベクトル (mvx、mvy) だけずれた位置の領域からする 予測を動き補償(MC)という。

code(x,y)= Input(x,y) - Ref(x+mvx,y+mvy) or Input(x,y)

ブロック毎にMC予測するかどうかをブロック毎にON/OFFし、ONのとき必要なフレーム間の動き補償のずれ量、動きベクトルをサイド情報として 符号化伝送する。動きベクトルは整数画素単位(H.261)だけでなく、精度を向上し、元の画素位置にない半画素(MPEG-1,-2)、1/4画素(MPEG-4)、 1/8画素(H.264)の補間位置も取られる。

フレーム間予測をしないブロックはそれ自身で符号化され(H.261,MPEG-1,-2)、インターに対してイントラといい、フレーム間を非イントラともいう。 イントラ符号化には近年大きな技術変化があった。MPEG-4 の "イントラDC-AC予測" は、隣接ブロック間のDCT係数の相関を利用する。DC係数とAC係数 (1次元DCTのDC)を上又は左の隣接ブロックの対応係数から予測する。そして、H.264では既に符号化した隣接画素から方向的な外挿予測する"イントラ予測" が使われる。


≪=BACK TOP∧ NEXT=≫

1.1 予測誤差を変換

予測差分ブロックは変換サイズに分割し、2次元DCT変換される。画像はDCT変換によって低域にパワーを集中でき効率的に表現できるが、予測誤差は 画像の時間的な変化であり、さらに動きベクトルを使って平行移動予測をしたMC予測誤差はさらに微妙な画像の平行移動以外の変化である。フレーム 間予測そしてMC予測の残差は、通常の画像とは統計的性質が違い、その特性が向くか疑問があったが、DCTが使われてきた。

フレーム間のMC予測誤差画像のDCTは、予測なしよりはずっと符号化効率を上げるが、元の画像をDCTで符号化できる効率ほどはうまく働かないだろう。 しかし、予測がうまく働かないとき、つまり、シーンチェンジ、影から現れる物体、動きが平行移動以外のとき、物体が変形するとき、フレーム間MC 予測が大きな予測誤差を生むときDCTはうまく働くだろう。つまり、DCTは、MCフレーム間予測のよい補完でありえるのである。

例えば MPEG-1,-2 ではDCT係数はブロック内をジグザグ走査で1次元化され、先行する0の個数(runという)と係数値(levelという)の両方の事象に対応 した2次元VLCで符号化する。変換サイズは、H.261, MPEG-1,-2,-4 まで8画素幅と高さ8のブロック単位でDCT変換する 8x8DCTであったが、H.264 AVC では4x4のブロックのDCT(整数変換)を基本にし8x8を扱わない。16x16ブロックは、各4x4の整数変換とそのDCの4x4アダマール変換との2段階処理にした。

画像の変換は、DCTよりWavelet変換の方がブロック歪がなく高域係数にある局所性がよいとされ、静止画像のJPEG2000で使われたが、動画像でも時間 方向処理(ブロック毎のMCを伴う誤差のWavelet符号化(MCTF))がある。しかし、MCとの親和性がよくないのか動画でのWaveletの優位性は確立していない。


≪=BACK TOP∧ NEXT=≫

1.2 複雑な符号化モード

静止画符号化のJPEGは、8x8DCTと係数のジグザグスキャンとダウンローダブル(符号化伝送するVLC) run-sizeの2次元VLCを使った。JPEGには符号化 モードという考え方はほとんどない。TV電話用のH.261は、8x8のブロック毎のDCTと変換係数のジグザグスキャン(走査)、固定のrun-levelの2次元 VLCをベースに使った。4つの8x8DCTブロックをまとめた16x16のマクロブロック(MB)は、予測単位としてMB毎の符号化モード(イントラ/インター切替え、 MCあり/なし、動きベクトル(MV)、係数符号化あり/なし、量子化粗さQ付き/なし)が符号化される。これらの符号化モードというサイド情報は、 MB単位の適応的な処理の種類である。それまで8x8に符号化モードを付けていたのを、16x16のMBで予測し符号化モードを付けたのは、サイド情報の 比率を削減する低レート(px64kbit/s)向け対応であった。

予測は MPEG-1 でB画像を使う双方向予測になり、MPEG-2ではインターレースのためにフレーム/フィールド予測とフレーム/フィールドのDCT型に対応 したが、マクロブロックは、H.264まで続いた。H.264では予測ブロックに小ブロックにする適応性を拡大した。片方向/双方向予測、予測ブロックの 分割(パーティション)を含めたMBタイプをもち、さらにマルチフレーム予測という、2つの参照画像リストL0, L1から MB毎に参照インデックス(参照 画像とMV)を選択して使うことも符号化モードに含められる。

処理方法の複雑化は、どこまで有効であり可能なのかという問いがある。これには、符号化方法を多様化しそれらを区別する情報を与えても、全体と して大きな効果のある方法なら採用するという実証的な判断がされてきた。符号化を標準化するとき、ある方式が例えば符号量の5%の効率向上させる とき、昔は採用されず、現在は採用されるだろう。 符号化は、多くの要素的な個別技術の組合わせ成立しているが、各技術は理解容易な単純さと効率の両立が必要である。個別技術は10%も符号化効率を 上げるものは少ない。例えば、MCは10dB、B画像は20%、半画素精度のMCは5%、VLCはFLCに比べて10%程度の効率向上といわれたが、MVのVLCを改良して 仮に10%削減できても全体には数%までの効果である。また、積み上げられた要素技術は、一度採用されたら変更されないとは考えない。無駄な処理を 削り、複雑な処理を嫌うことは技術の基本である。動画像符号化技術は、どこまでも複雑にして許されるものではない。扱う画像は次第に大きくなる から、単純で大きな効率を与えるものが望まれる。ときに標準化は単純化を行うだろう。ある標準で採用した技術が、次の標準に残ることもあり 消えることもある。


≪=BACK TOP∧ NEXT=≫

2. イントラ符号化

MPEG-1,2 のイントラ符号化は DCT係数のDC係数イントラDCだけが既に符号化復号した近隣のブロックのDCで(輝度はMBのブロックをZ状に辿り、 色差はCb、Crそれぞれ辿り)予測され、予測差分は規則的な長さのVLCと値で符号化した。AC係数はイントラ/インターともに量子化マトリクス QMとmquantの積によって量子化し符号化した。イントラDCの予測はスライス先頭から1次元的にイントラMBが続く限り連続する。似たものとして、 MVを符号化するのに、1つ前のMVとの差分を符号化するMV予測(MVP)も1次元だった。MPEG-1-2のB画像ではMV予測は双方向用に2つあり、MPEG-2の フィールド予測ではMV予測子(PMV)は各フィールドに分かれる。それゆえ、PMVは4個まで扱われる。MPEG-2でDC予測子を上下のブロックに各々 もつ案(不採用) をAT&TのAtul Puriが出したが、2次元の予測、例えば上左ブロックのDCの平均程度の工夫をすべきだった。MPEG-1,-2のI画像の 符号化効率は十分でなかった。

MC予測をするP画像は、同程度の量子化粗さでI画像の約半分の符号量で済む。さらにB画像は量子化を約2倍(MPEG-1 SM3. MPEG-2 TMで1.5倍)に 粗くして画像の符号量を1/4〜1/10程度に減らす。そのため I画像は枚数は少ないが符号量の大きな比率を占める。例えばN=15、M=3の GOP 構造 BBI BBP BBP BBP BBP では、IPBの符号量の比率を 10:5:1 として I画像の符号比率は 25%もある。これを減らすためにGOP構造を周期的にせず、 I画像頻度を下げても、一般にI/P画像の品質は下げずI,P,Bの順に画質を設定する。B画像の画質よりも予測に使うI/P画質を高く設定するつり橋 構造が全体のSNRを持ち上げる。しかし、エンコーダ事項には限界があり、イントラ符号化の改善が望まれた。


≪=BACK TOP∧ NEXT=≫

2.1 MPEG-4 の intra DC-AC予測

MPEG-4でイントラDC-AC予測(これもA. Puriによる)が生まれた。intra DC-AC予測は、隣接ブロック間のDCT係数間の相関を利用する。縦縞と横縞 成分にあたる係数だけは対応隣接ブロックの対応係数から予測可能である。 X(i,0) (i=0-7) 水平方向だけの成分 (垂直DCTのDC)係数は、上下に 相関があるカーテンの波のような縦縞を表す係数であり、上隣接ブロックの対応係数からの差分が使える。同様にX(0,j)(j= 0-7) 横縞、垂直方向 成分(水平DCTのDC) は、左隣接ブロックの対応係数と相関があり差分符号化が使える。ブロックに両者の差分を表す2フラグをもつ。その他の係数 は差分しない。それまで、隣接ブロックのDCT係数間の関係は存在しないか、複雑で利用できないと思われていたが、縦縞横縞だけは相関があり、 予測可能だったのである。だが、傾いた縦縞横縞などそれ以外のパターンには有効でないので、H.264 では消えた。


図1. MPEG-4 のイントラ DC-AC 予測


≪=BACK TOP∧ NEXT=≫

2.2 H.264のイントラ予測

H.264 AVCの大きな要素技術にイントラ予測がある。対象ブロックに隣接する上左のブロックの隣接画素から画素値をある方向に外延する外挿予測 である。方向を示す予測モードを符号化し、輝度16x16や、色差8x8には4モードのイントラ予測が用意された。垂直(上隣接画素から予測)、水平 (左隣接画素から予測)、DC(隣接画素の平均でブロックを予測)、平面(ブロックを傾斜平面)で予測する。そして、4x4ブロックでは、垂直、水平、 DC、対角下左、対角下右、垂直右、水平下、垂直左、水平上の、9種類の予測モードをもち、DC以外は8方向である。予測の式を次に示す。x=0-3, y=0-3は対象ブロック画素位置で、p()は既符号化隣接で、例えばp(-1,0)は左上隅の左隣接画素値。

0 垂直 Pred4x4(x,y)= p(x,-1) (x=0..3)
1 水平 Pred4x4(x,y)= p(-1,y) (y=0..3)

2 DC  Pred4x4(x,y)= (Σp(x,-1)+Σp(-1,y)+4)>>3 (x=0..3, y=0..3)
左隣接ないとき Pred4x4(x,y)= (Σp(x,-1)+2)>>2 (x=0..3)
上隣接ないとき Pred4x4(x,y)= (Σp(-1,y)+2)>>2 (y=0..3)
両方ないとき Pred4x4(x,y)= (1<<(BitDepth-1))

3 対角下左 Pred4x4(x,y)= if(x=y=3) (p(6,-1) + 3*p(7,-1)+2)>>2
else (p(x+y,-1) + 2*p(x+y+1,-1) + p(x+y+2,-1)+2)>>2

4 対角下右 Pred4x4(x,y)= if(x=y=3) (p(6,-1) + 3*p(7,-1)+2)>>2
if(x>y) (p(x-y-2,-1) + 2*p(x-y-1,-1) + p(x-y,-1)+2)>>2
else if(y<x) (p(-1,y-x-2) + 2*p(-1,y-x-1) + p(-1,y-x)+2)>>2
else (x==y) (p(0,-1) + 2*p(-1,-1) + p(-1,0)+2)>>2

5 垂直右 2x-yが0,2,4,6 のとき Pred4x4(x,y)= (p(x-(y>>1)-1,-1) + p(x-(y>>1),-1) + 1)>>1
else 1,3,5 では Pred4x4(x,y)= (p(x-(y>>1)-2,-1) + 2*p(x-(y>>1)-1,-1) + p(x-(y>>2),-1)+ 2)>>1
else -1  では Pred4x4(x,y)= (p(-1,0) + 2*p(-1,-1) + p(0,-1)+ 2)>>2
else -2,-3 では Pred4x4(x,y)= (p(-1,y-1) + 2*p(-1,y-2) + p(-1,y-3)+ 2)>>2

6 水平下 2y-xが0,2,4,6 では Pred4x4(x,y)= (p(-1,y-(x>>1)-1) + p(-1,y-(x>>1)) + 1)>>1
else 1,3,5 では Pred4x4(x,y)= (p(-1,y-(x>>1)-2) + 2*p(-1,y-(x>>1)-1) + p(-1,y-(x>>2))+ 2)>>1
else -1  では Pred4x4(x,y)= (p(-1,0) + 2*p(-1,-1) + p(0,-1)+ 2)>>2
else -2,-3 では Pred4x4(x,y)= (p(x-1,-1) + 2*p(x-2,-1) + p(x-3,-1)+ 2)>>2

7 垂直左 y=0,2では Pred4x4(x,y)= (p(x+(y>>1),-1) + p(x+(y>>1)+1,-1)+ 1)>>1
     y=1,3では Pred4x4(x,y)= (p(x+(y>>1),-1) + 2*p(x+(y>>1)+1,-1)+ p(x+(y>>1)+2,-1)+ 2)>>2

8 水平上 if(x+2y==0,2,4)では Pred4x4(x,y)= (p(-1,y+(x>>1)) + p(-1,y+(x>>1)+1)+ 1)>>1
else 1,3では Pred4x4(x,y)= (p(-1,y+(x>>1)) + 2*p(-1,y+(x>>1)+1)+ p(-1,y+(x>>1)+2)+2)>>2
else 5 では Pred4x4(x,y)= (p(-1,2) + 3*p(-1,3)+2)>>2
else >5では Pred4x4(x,y)= p(-1,3)


図2. H.264のイントラ予測(4x4)


≪=BACK TOP∧ NEXT=≫

2.3 予測モードの推定

さらに、4x4のイントラ予測の方向的モードを隣接ブロックの予測モードから推定する。隣接4x4ブロックから上と左のモード番号の最小で推定し、 推定との一致フラグprev_...を符号化し、不一致のとき9種のうち推定モード以外の8種のモードのどれかを示す rem_... の符号を付ける。 モード番号が使用頻度順を表すので、上左の隣接モード番号の最小による推定は、モード推定に寄与する。

H.264 のイントラ予測は、JPEG2000より符号化効率が高いことが後に示された。予測誤差は4x4毎に符号化復号される。対象ブロックの予測に隣接 ブロックの復号を使用するブロック直列処理である。画素あたりの予測モード情報は、予測モード推定がうまく働けば小さいが、ブロックサイズ によって違い(4x4に9方向は〜3/16bit/pel、16x16で4方向は 2/256 bit/pel)、その目的も違うようだ。16x16のイントラ予測は背景の平坦領域の 低レート向けテキスチャ再現で、4x4のイントラ予測は、高レート向けテキスチャ再現である。イントラ符号化において、係数空間でなく、 画素空間処理である隣接の画素値の方向外挿予測がDCT係数表現よりも効率的だったのは驚きである。

イントラ予測は、エンコーダが全予測モード(16x16の4種と16個の4x4の9種類全て)を試してモードを選択するので、エンコード処理は重い。また、 隣接の画素を使うのでスライス境界ではモードが制限される。特にスライス先頭MBではDC=128の予測しか使えない。その後の8x8DCTを復活した H.264 FRext拡張で輝度の8x8ブロックにも輝度4x4と同様な9予測モードのイントラ予測が用意され、参照する隣接画素間に(1,2,1)型フィルタを 掛ける。画像の端の画素を延長してMCブロックが画像から出ることを許す無制限MC(Unrestricted MC)のように、一般的に外挿には参照画素間の 低域通過フィルタは有効である。


≪=BACK TOP∧ NEXT=≫

2.4 イントラ予測のその後

イントラ予測はHEVCで予測モードを34(32方向)に増した。外挿方向によって縦横にDCT又はDSTが使用されるモード依存変換(MDDT)が提案された。 外挿予測は、参照画素の近くで予測が当たり、離れるに従い予測誤差が大きくなる。外挿予測には予測端の振幅の小さいDSTが合い、4x4にはDSTが 生き残った。外挿予測DSTは古い技術であり、80年代から静止画像符号化には8x8DCTとの比較で、隣接画素からの(方向的ではない)4x4外挿予測差分 のDST変換が知られていた。JPEG、MPEG-1の頃に欲しかった技術である(*2)。

方向数は、ブロックサイズによって 16x16や32x32は4方向とし、4x4と8x8は方向を増やした。 8x8のブロックの右下隅画素を中心に左隣接16画素 +上隣接16画素の方向(+DC+平面)に依存して、垂直/水平の変換を別にして、予測方向に近い方向をDSTにし他方をDCTにする。さらに、変換方向を 予測方向に合わせる、例えば水平下の方向の予測では左ほど参照画素から遠いが、水平上方向は、逆に右ほど遠いから水平のDSTの方向を逆にする 提案(最終に残ったか未確認)もあった。また、方向的予測モード数を4倍増した分、予測モード推定が当たりにくくなるので予測モードを複数推定 にした。Most Probable Mode MPM_idxを付け、複数候補に当たらない場合に予測モードを符号化する。

提案のなかには 2方向のイントラ予測の平均を使う双予測で、4x4ブロック単位に間を飛ばして実行し、間のブロックは両側から内挿で埋めるイン トラ双方向予測もあった。また、遠くなるにつれてローパスが強くなる画素順次型フィルタなどアイデアは多い。このような外挿予測の最終形は 恐らく部分画像から残りを作り出すN. Wienerの一般調和解析(GHA)であるが、符号化標準にまだ使われない。

我々は波形の一部をみて残りの波形を予想する。例えばある分析区間の標本値の並びは、増加傾向ならそのまま増加の予測をするし、波打つとき 波を続けると予想し、滑らかな連続性を分析区間外との境界に期待するが、それは正弦余弦波形の線形和によって波形を表現することである。 DFTもDCTも任意の波形を滑らかな低域の正弦余弦波形の線形和で表現することができるが、これによって表された区間の外に仮定する波形は、 分析区間の境界に滑らかな連続性を考えるものではない。変換係数を線スペクトルとみるとき、同じ区間波形の繰り返しか鏡像波形になり、 連続スペクトルとみるとき、分析区間は孤立波形である。これらの変換は、波形を完全表現できるが、(例えばDFTでは)分析区間を基本周期とする 周波数の倍数で表わすことがまずいのであり、(但し、DCTはDCの次の係数は、分析区間の4倍の周期であるから問題は少し少ない) 分析区間の外に 滑らかに連続する波形とは一般に分析区間より長い周期の正弦余弦波形であり、これを周期よりも任意に短い区間で分析できないといけない。 GHAは、正弦余弦の2係数を最小2乗法で求め、その正弦余弦波形を除去することを繰り返すが、実際の処理方法は種々可能と思う。

現在のイントラ予測は、画素値の単なる方向的外延である。隣接画素に2-4画素の厚みをもたせる提案もあり、その増減を利用した予測の提案もあった。 これはDCT係数で表すブロックから隣接ブロックを外挿する問題かもしれない。GHAより単純に、16x16の内、右下の1/4の欠けた8x8画像を16x16のDCT 係数から係数をLPFして繰返処理で予測する話もあった。

但し、2次元波形である画像では、波形の濃淡の延長は余り重要でなく、イントラ予測のように隣接画素値そのままの延長で十分かもしれない。 視覚に重要なのはエッジの延長や模様の延長であり、画像内の予測の効果の大半はすでに既存のイントラ予測で得ているかもしれない。波形の 濃淡の延長効果が大きいなら、大きい変換ブロックサイズがRDOによって選択されているはずではないかと反論できるからである。


≪=BACK TOP∧ NEXT=≫

3. 予測サイズと変換サイズ

3.1 予測ブロックサイズ

符号化ブロックは、動きの予測ブロックに分割される。MPEG-1ではMCサイズを8x8に分割する8x8MCの"8-Escape"という案が出ていたが、実験結果 が用意されなかった。同様にMquantが効果を確認したからと量子化単位をブロックにする"B-quant"も提案された(*3)。予測はブロックベースから 最近の4分木型など分割方法が発達してきたが、最適な予測サイズ分割があるのかという問いがある。物体形状に対応した予測ブロック分割は画像 への適応性を上げ物体の動きに対応したMCが予測能力向上をもたらすが、そこに上手な符号設計が伴わないとサイド情報が増えて低レートで却って 非効率になる。H.261では16x16MBを採用して予測ブロックを大きくして、サイド情報を減らして効率を上げた。DCTは予測を補完するのである。

均一な予測ブロックサイズでなく、分割を必要なときだけする適応的な分割を行う仕組みが必要である。H.263で8x8MCが入った。H.264では様々な 予測のブロックサイズ(16x16,16x8,8x16,8x8)への分割を可能にした。適応的な予測ブロックサイズの決定方法が必要で、さらにMVの効率的表現が 伴う必要があるが、H.264はレート歪最適化(RDO)によって多くの符号化モードからの選択を自動的に行う。

シェイプとテキスチャを符号化するMPEG-4のオブジェクト符号化は、画素単位まで物体の形状に対応したMCである。物体と背景の分離を前提にし、 物体は背景を含めた画像から予測するのではなく物体だけから予測し、背景は背景から形成するようにしたのは、多少の行き過ぎであり、 前提とするエンコーダ側の物体と背景の自動切り分けがまだ可能な技術でないことが問題である。


≪=BACK TOP∧ NEXT=≫

3.2 変換ブロックサイズ

変換ブロックサイズは、H.261からずっと8x8DCTであり、MCのMBサイズ16x16より小さい。そして、H.264は変換サイズが4x4であり、それ以上の 様々なサイズの予測ブロックサイズが使えるが、変換が4x4であるその小ささ自身が非効率さをもつ。H.261、MPEG-1の頃からDCTサイズは8x8か 16x16かと議論があった。恐らく16x16まで変換は効率を上げるだろうが、それを行う複雑さが代償になる。8x8が暫くその妥協点だろうと多くが 思っていた。そのため、H.264が4x4DCT(整数変換)になったと知ったとき驚いたものである。しかも、逆スキャンだとか非零係数個数だとか、 知らない道具がなんとも複雑に組み合わされていた。8x8の伝統の技術(ジグザグ走査と2,3次元VLC)は完全に捨てられた。

IDCTの実装を整数演算で規定する H.264の整数変換は好ましい。それまでのIDCTの実装の違いによるIDCTミスマッチ問題の対策が要らない。酷い 誤差を許す激しく量子化された係数の逆変換に、H.261やMPEG-1-2の IDCT の要求する高精度、恐らく20数ビットまでの計算を行い、15ビット以上 の中間結果レジスタの高精度は、単に何も共通化しない標準化の怠慢だった。整数変換にすれば数ビット精度ですむ(*5)。H.264ではこの整数型 IDCTにかけ算さえ排除した。

しかし、HDTV画像の高いレートでは、H.264もMPEG-2も効率が変わらず、逆にH.264に特有のノイズがみえることがあると聞いた。イントラ予測や ダイレクト予測に符号が不足して誤差の量子化が粗いときそれでも普段は、ループ内のデブロックが働いて問題がないが、たまに予測画像の崩れが そのまま現れるのであろう。その崩れ方はそれまでのブロック歪になる崩れ方とは違って、慣れないものだったのだろう。また、H.264はデブロック フィルタをループ内にもつ。ループ外の後処理なら標準が規定しないが、ループ内ではデコーダ必須になるから、初めて聞くとき驚くものである。

8x8DCT(整数変換)の復活追加
4x4 DCTは小画像でのブロック歪や、モスキートノイズ(リンギング)が短いという有効な半面、微細なテクスチャの再現能力は 8x8が4x4よりも よかった。変換ブロックサイズは、H.264のFRex拡張では、8x8DCT(整数変換)が復活追加された。それに伴って8x8のイントラ予測も追加された。

予測誤差を変換する変換ブロックは、基本的に画素レベルまでの波形再現能力があるDCTが使われるが、大きな変換サイズでは、符号量不足のとき 変換サイズまでの波形のリンギングが出るため、小さく独立した変換ブロックにはリンギングの広がりが小さい利点があるが、小変換サイズは、 変換のパワー集中能力が低いため符号化効率が上がらない。4x4で数個のDCT係数を符号化することが、8x8でやはり数個の係数で表現できるとき、 サイズの違いは4倍まで効率に影響するだろう。

H.264は4x4変換に偏り8x8変換を避けた。予測のサイズをブロック分割し 16x16, 16x8, 8x16, 8x8 にさらに 8x8 ブロックを 8x4、4x8、4x4 に 分割できるが、変換サイズは4x4DCTだけだった。それが FRext では 8x8 DCTを復活し、MPEG-1,-2のような量子化マトリクスを可能にし、4x4DCT と 8x8DCT とを切替え可能にしたが、予測のサイズを超える変換サイズはない。予測ブロック歪を予測ブロック境界を跨ぐ変換が解決するのは難 しい。MC予測境界のブロック歪を変換は容易に消すが、変換内部に来た予測ブロック歪は消すのが難しいからである。


≪=BACK TOP∧ NEXT=≫

3.3 MC-DCTの相性のよさ

MC-DCT という基本的技術の組合せは、どれほど相性がよかったかという理由のひとつとして、MC-DCTには、MCが招いたブロック歪をDCTが容易に 消す能力を持つことを挙げることができる。MCは動きをMB毎に追うが、動きの空間的変化によって、隣接MBとのMVの差によって予測画像のMB境界に 段差を発生する。これがMCによるブロック歪である。DCTはこれを補正するよう誤差を符号化をするが、ブロック境界の段差は両側のブロックの 少数の低域係数で容易に消すことができる。低域係数の値の変化がブロック周辺画素の誤差を生み出したり、MCブロック歪を消すのである。 しかしもし、予測ブロックサイズと変換ブロックサイズの大小が逆転すれば、予測ブロック歪は変換ブロックの内部に発生し、これを消すには 高域の多くの係数、多くの符号を必要とし容易でない。これが予測サイズと変換サイズとの大小関係を決めている。


図3. オーバーラップMC(OBMC)

MPEG-4のMCブロックの縦横に2倍の窓関数を重ねるオーバーラップ MC(OBMC)は、オーディオのMDCTのように窓関数を使ってMCブロック歪をなくす 目的の技術であるが、上記理由によってその効果は大きくない。また、MCブロック歪のないことは上下と左右に4重の画像の線形重ね合わせの代償 で成立している。

同様に、MPEG-4で提案されたアフィン動き補償予測は、MBのグリッド交差点のMVを伝送し、複雑になりそうなアフィン変換のパラメタをMBあたり 1個のMVで扱う。MC後の正方形のMBが4隅の変位によってどのような四辺形から変形して予測するかを示す。MBの各画素のMVは、4辺形から双線形内挿 (bi-linear interpolation)され、画素値は各画素のMC後画素間内挿で求められる。一般的なブロックの平行移動のMC予測と違って、この予測4辺形 には飛びや重なりがなく画素対応に連続性をもつためMCブロック歪はない。しかし、P6 1MV/MBのアフィン変換は、画素値の内挿が当時の2タップでは LPF過ぎたのかも知れないが、その有効性を明確に示せなかった。MCブロック歪のない原理の異なる方式は、符号量不足のときそのまま見える予測画像 が自然かが問われ、アフィン変換のミスが人物像の異様な変形をみせた。一般に、予測性能向上を目指したMCブロック歪のない技術は、本質的にさほど 必要でなかったのかも知れない。MC-DCTにはMCブロック歪除去能力があるからである。


図4. グリッドMC(P6)


≪=BACK TOP∧ NEXT=≫

4. 固定MB、スキップMB、ダイレクト予測、動きマージ

MPEG-1のB画像の各MBは、双方向予測を選ぶことができMBあたり、双方向のフレーム予測で2MV、MPEG-2の双方向フィールド予測では4MVまで 使用する。 MPEG-1,-2 ではこのMV符号量を十分に与えることで予測効率を確保したが、このMV符号量がレートによらずほぼ一定必要なので、 低レートではDCT係数に与える符号量が不足し、MCブロック歪とDCTのブロック歪が目立つ画像になる。そこで、MV符号量の削減が考えられる。

固定MB、スキップMB
H.261ではFixed(NonMC, NotCoded)MBがあった。TV電話の人物の背景にはそれが多用される。MPEG-1,-2のP画像のスキップMBは、H.261同様の Fixed MBであるが、B画像のスキップMBは左MBからの動きを踏襲する動きのあるスキップになった。但し、スキップMBはDCT係数も0の非符号化 である。MPEG-4ではB画像双方向予測に、最後に符号化したP画像の同一位置のMBのMVを時間方向にスケーリングして用いるダイレクト予測が 見出された。


≪=BACK TOP∧ NEXT=≫

4.1 ダイレクト予測

MPEG-4 でスキップMBには進化があった。B画像のMV符号量を削減するために、B画像では最近のP画像の対応する同一位置のMVをフレーム間隔に 応じてスケーリングしてB画像の双方向予測MVに使うダイレクト予測である。このとき動きベクトルは伝送されない。例えば表示順でBBPの画像 のPが符号化された後に、間の2枚のBが符号化されるとき、B画像のMBと同一位置のP画像のMBの(順方向)MVを最初のB画像では1/3と-2/3倍して 順逆の双方向予測に使い、2番目のB画像では2/3と-1/3倍して順逆の双方向予測に使う。そしてこの "時間ダイレクト" と、上、左、右上隣接 MBのMVの各成分の中間値(Median)による "空間ダイレクト予測" とは、MBtypeがB_skip, B_Direct_16x16, B_Direct_8x8の3者において別の フラグで選択される。動きの空間的連続と、時間的連続とは同時に起きないとするのである。

ダイレクト予測とさらに画像の予測誤差を符号化しないスキップとは、MVの差分(MVD)を付加しない極端な低レート指向の予測である。 予測モードは L0予測、L1予測、双予測が分割された予測サイズに用意されるが、P画像のMVを順逆にスケールしMVDを付加する予測、 片方だけMVを与え順逆に広げる予測はない。H.264ではフレーム間隔による輝度の重み付け予測も明示的と暗黙的との2種を可能にした。 このMV符号量削減技術の流れに、HEVCの動きマージ(スキップ、AMVP)がある。


図5. ダイレクト予測


≪=BACK TOP∧ NEXT=≫

4.2 動きベクトル予測(MVP)

一般に動き補償の動きベクトル(MV)は、MVの予測子(PMV)との差分(MVD= MV-PMV)を符号化表現する。MPEG-1,-2では予測MVもDC予測と同じく1次元で 左隣のMVであった。Bは双方向で2PMVをもつ。PMVは、スライス先頭とイントラMBで0にリセットし、途中にその方向のMCが使われなくても持続する。 MPEG-2ではフィールド予測のPMVは左MBがフィールド予測なら各フィールドに、フレーム予測なら両フィールドに予測する。フィールドから フレーム予測に戻るときはTopフィールドから予測する。双方向とフィールド予測で最大4PMVをもつ。MPEG-1,-2のMVDは、順逆のフレーム間隔 を考慮して順逆の予測方向にx成分y成分を各F_CODEによって符号化する(*4)。

H.264は、左、上、右上(A,B,C)の3MBのMVがあるとき(2つの16x8への横分割では上はB下はAから、2つの8x16への縦分割では、左はA右はCのMV。 そうでないとき)、A,B,CのMVの成分毎の中央値(Median)によってMVPを与える。成分毎の中央値は、元々存在しないMVを作り出すが、MVDは成分毎 の符号化だから問題ない。さらにHEVCでは、複数候補リストから選ぶ符号を使う選択型MVP(AMVPという)になった。


≪=BACK TOP∧ NEXT=≫

4.3 HEVC、4分木とスキップ/動きマージ/AMVPとの組み合わせ

最近の符号化標準、HEVC(2012 2月-7月CD) ではMVの効率的表現について大きな改良があった。4分木のCUの下のPUを用いて、スキップ/動きマージ/AMVP ともに複数候補リストから選択する。MBより大きいサイズの最大符号化単位(LCU 正式にはCoding Tree Block(CTB)という。恐らく64x64)から4分木 (quadtree)分割し、符号化単位(CU)にする。これから予測単位(PU)を分割し、同様にCUの下に変換単位(TU)を4分木分割する。変換は予測分割に従属 しない。PUが長方形のときイントラ予測と変換には正方形を並べる。PU分割とTU分割には限度を与え、4x4予測を禁止し、8x8より小さいPUの双予測は 禁止する。32x32まで許す大きな変換サイズは、高精細画像の低レート化の技術である。


図6. LCUとCU/PU/TU

HEVCのクワッドツリー(4分木)型符号化単位(CU)とそれを分割するPU(予測単位)とTU(変換単位)は、平坦な部分に大きな符号化単位を残すことによる 低レート化と、画像の微細な部分には自動的に小さなCUを対応させる。このとき、分割が自由になるに代わりに複雑になるPUのMVの効率的表現が必要 になる。そこに動きマージがHEVCの初期から提案され、上か左のPUに動きを合わせるmerge_flagと左/上のいずれかを示すmerge_leftフラグであったが、 最終的には最大5候補リストからの選択の merge_idx になった。AMVPの扱いも類似方法になり、空間隣接から候補を追加し、時間隣接からも追加する 最大2候補からの選択である。このとき隣接からのMVは使用するフレーム間隔にスケーリングされる。時間隣接からのMVP(TMVP)は、効率向上に有効だ が伝送エラーに弱く、これを強くしデコーダの符号解読(パース)をデコーダ動作から独立させるために、候補数を一定にして、重複ベクトル削除、 ゼロベクトル追加する。画像毎にTMVP使用/不使用フラグを記述し、数フレーム毎に全くTMVPを使用しない画像にして伝送エラー伝搬をさける。

スキップ/動きマージ/動きベクトル予測(AMVP)の3つは、いずれもイントラ予測モードの推定MPM_idxのような複数候補リストからの選択符号を与える 選択型である。スキップは、動き差0、DCT係数も0。動きマージは動き差(MVD)が0だがDCT係数を符号化する。AMVPは、予測ベクトルを選択して差分MV (MVD)を符号化する。期待された高効率符号化(HEVC)は、このような4分木構造と動きマージの組み合わせだった。これがHEVCの効率向上の主要点だろう。


≪=BACK TOP∧ NEXT=≫

4.4 タイル(Tile)

HEVCは、画像をタイルという矩形に分割し、その中をLCUの高さをもつ帯であるスライスがラスタースキャン(水平走査)する、スライスの外枠である。 タイルは、スライスをより空間的な局所に纏め符号化効率を向上させる。スライスは独立に符号化する単位であったから、イントラ予測、インターの MVP、マージ等でスライス外をアクセスせず、スライスが細長いことによる効率低下がかなり(〜5%)あったのである。スライスと同様にタイルも独立に デコードできる単位である。タイルのサイズは画面内で均一にもでき、個々の幅と高さを設定もできる。

H.261ではGOB(Group of Block 11x3MB) を使ってCIFは2x5GOBだった。MPEG-1でスライスが、Philips提案で画像フォーマットを自由にさせるとして H.261のGOBの代わりに導入され、任意サイズ(横幅〜4095)の画像を扱えるようにした。MPEG-2は横16k画素のサイズまでを扱う。GOBと比べてマクロ ブロック幅のスライスの細長さに心配はあったが、スライス内で値を引き継ぐものは quant とイントラDCとMVである。MPEG-1,-2ではquantはスライス 先頭でsquantで設定し次々のmquantで変更しながら継続する。イントラDC予測とMVPも1次元で左隣接のMBの値を引き継ぎ、上隣接の情報を利用しなか った。それゆえスライス外を使用しない効率低下の認識がなかった。また、MPEG-2のMP@MLではスライスは1行の中に限定され、同一スライスのMBが 上下に並ばないため上隣接を考慮しなかった。言い訳である。


≪=BACK TOP∧ NEXT=≫

5. 量子化と逆量子化

5.1 mquant と QM

MPEG-1は、MC-DCTの符号化の仕組みにB画像による双方向予測、半画素精度のMCに、さらにH.261から継承したMB毎のmquantとJPEGから継承した量子化 マトリックス QM(i,j)とを組み合わせた量子化をもつ。MPEG-1 は mquant(5 bit)と QM(i,j) の積で量子化粗さが決まる。JPEGのQM(i,j)は空間周波数 の高い係数は粗い量子化ができるという視覚心理的意味があった。H.261から継承した mquantによってMB毎に量子化粗さを調整でき、それのないJPEGは、 符号化途中で符号量を目標量に合わせ込めない。合わせるには何度か画像の符号化を試行するか、係数を選択的に捨てるという乱暴な処理しかない。 両者のしくみはMPEG-1のI画像をJPEG以上に効率的なレート制御できる画像にしただけでなく、mquantは画像の局所的な活動性への量子化の対応を 可能にした。つまり、画像の粗い部分で量子化を粗くすることができるのである。

MPEG-1,-2標準は逆量子化を決め、量子化はエンコーダ事項であり自由である。エンコーダは、内部に正確なデコーダをもつ必要があるが、DCT係数 の大きさが符号量に影響するからたまに発生する大きな係数を小さく符号化するような、量子化と逆量子化を違えることもできる。これは大抵、頑丈 さのためである。QMも変化できる。また、MPEG-1,-2ではイントラと非イントラで逆量子化が異なり、非イントラACは0から離して再現される。逆量子化 のイントラACはlevel*mquant*QM/16 で再現し、非イントラは、(level+0.5)*mquant*QM/16 で再現する(*6)。逆量子化に対応する量子化、代表値が 重心からずれないエンコーダ側の量子化は 16*coeff/(mquant*QM) の割算"/"には、イントラで丸め付き、非イントラで丸めなしが対応するのである。


≪=BACK TOP∧ NEXT=≫

5.2 QM の設定方法

MPEG-1 当時、私はQMのintra/inter分離に疑問を持っていた。QMが視覚心理上の特性によるだけなら、予測と残差は加算されて見えるだけであるから intra/inter個別のQMは、視覚心理上の正当性はない。interの係数分布が広いことに対応する傾斜の緩いQMの意味は不明である。QM自体、その有効性 の確認は難しく、視覚心理を理由にQMの高域を粗く設定するが、QMにはその明確な設定方法がなく、可変にする意味がない。しかし、これには 最小2乗解があった。QMの各係数位置に、係数と量子化係数との相互相関を量子化係数の自己相関で割ることが最適値を与える。

Eij= Σ(rijQij-Sij)^2
dEij/dQij= 2Σrij(rijQij-Sij)= 0
Qijopt= Σrijsij/Σrij^2

これとは別に、ブロック境界画素への影響度から、高域を粗く量子化する理由付けがある。DCT係数それぞれのブロック境界画素への貢献度は高域 ほど小さい。Qijを、その逆数に比例させればよいのである。


≪=BACK TOP∧ NEXT=≫

5.3 dQP の符号化

MPEG-1,-2 では量子化スケールは(スライス毎にsquant, MB毎には量子化を変化する符号化MBで mquant)は5bit符号化する。H.263 ではMB毎に 差分QPを符号化し、dQP= +-2の範囲で変化するものになり、H.264 の算術符号化の2進化では、dQP は正負符号を組み込んだ自然数に単進法 (Unary)符号をあて、QPは、0-51のdBデシベル単位(+6dBで2倍の粗さ)になった。負値が、同絶対値の正値より1bit長いという非対称は、HEVC で解消した。正負符号を分離し、絶対値を表す符号は、単進U(Unary)0, 10, 110, 1..10の1の連続が5bitまでに断切るTruncated Unaryを前置 (prefix)にして、後置(suffix)に指数ゴロム(Exp-Golomb)符号のk=0(EG0)を使う。

EG0符号は、0から始まる整数(又は1から始まる自然数)を 0, 01x, 001xx, 0001xxx, ... (x=0/1)によって表す。(EGk 符号は、EGの前置数 + k bitの後置を使う。k=1 なら 0x, 01xx, 001xxx, 0001xxxx、k=2 なら 0xx, 01xxx, 001xxxx。) 2進化を工夫して短い符号にして算術 符号化のbin数を減らし、かつ bin 毎も重い context を削減し、bypass (50%確率)比率を高める。これはCABACの処理の重さが原因である。


≪=BACK TOP∧ NEXT=≫

6. MPEG-1 の技術

スライス
mquantとQM

VLCテーブルの約2倍拡張
H.261からMPEG-1へDCT係数のVLCテーブルを約2倍の大きさにした効果は小さく、私の測定では +0.06dB だった。しかし、ハードウエアの 作成可能性の向上に合わせて符号化のしくみを多少複雑にするのは時代の流れであるが、VLCの設計は規則的VLCよりよいなら正当性がある。

CBP
符号化ブロックパターンのVLC。これによって、空ブロックがないことを利用した仕組み、ブロックの最初の係数にEOBは来ないから2DVLC の最初のVLCだけEOBと重なった符号が使われる。このCBPの有効性に疑いが残るが、H.261とのコンパティビリティが優先された。 CBPを無くすには2次元VLCの作り直しが必要になるからである。


≪=BACK TOP∧ NEXT=≫

6.1 B画像

MPEG-1の双方向予測。マクロブロック毎に2本の動きベクトルを使って時間的前後の画像からの2つのMC予測を画素毎に平均した予測との誤差を 符号化する。予測誤差を符号化しなければ多くのMPEG-1提案にあった内挿画像型になる。順逆の動きベクトルは共用しないし、フレーム間隔に よる重み付け予測を単純化した平均である。MPEG-1の頃は、予測性能とフレーム構造が重要だった。私はイントラ画像を中央にして両方にP画像 を並べるCenter Intra方式を考えたが、離れたP画像から間の画像を介さない双方向の2重の予測という、双方向予測は私のそれよりずっと高度な 予測構造であり、性能を上げた。

B画像は誰もが有効性を認める仕組みであり、実際に2dBというB画像の効率向上は、それまでもそれ以降もその他のどの個別技術よりも効率に貢献 した。MPEG-2のDual prime は M>1 では1dB以下だったから採用されず、M=1では 1dBを超えていたから採用された。単一の道具による+2dBもの 効率向上はB画像以外みない。にも関わらず、B画像は画像の符号化順が元の画像順と異なるので遅延を生む。しばしばB画像は不要と疑われ、通信の 低遅延には、2つの順方向を平均する予測なら遅延は増えないことがあり、MPEG-2の標準化過程でB画像の有効性は疑われたが、B画像を結局超えられ なかった。MPEG-4もこれを踏襲し、H.264はマルチフレーム予測、双予測として方向を限定しない2つのL0, L1の参照画像リスト中からMB又はサブ ブロック毎に参照画像を多数の画像から選択させ、重み付け予測も導入したが、2画像の平均は変わらない。3,4画像からの予測を同時に使用しない。


≪=BACK TOP∧ NEXT=≫

6.2 半画素精度MC

これは、動き補償の画素精度向上とループ内フィルタの代用との同時的実現であった。ループ内フィルタは、それなしに消すのに符号を要する符号化 歪み(アーティファクト)、ブロック歪、モスキートノイズ(リンギング)を除去するために、局所でON/OFFすることが好ましい。H.261のループ内フィルタは、 MCモードでONになる(1,2,1)型LPFであった。 MV=0では、MCモードをとるかNon MCモードをとるかでループ内フィルタをON/OFFできる。MPEG-1の半画素MCは、 半画素位置には (1,1)型の弱いLPFフィルタになる。つまり、ハーフペル(半画素)MCは画素精度向上と合体したループ内フィルタ機能である。実際にMVの 80%に半画素位置が使われた。平坦な全通過形半画素と整数位置LPFを与え、画素精度向上とフィルタ機能は分離すべきだったかもしれない。

MPEG-1の半画素MCは、MPEG-4では1/4画素MCとなる。H.264では1/8画素単位の画素補間と発展した。これは画素の必要な精度でもあり、平均化のもつ 偉大な符号化効率でもある。MPEG-1で双方向予測を時間間隔による重み付けさせる必要は殆どなく単なる平均にしたことも、同様な意味をもつ。 単純平均はフィルタ付き予測の効果によって、フレーム間隔に応じた重み付け予測の優位性を小さくするからである。

双方向予測は、重み付け予測から、単純平均になった
フレーム間隔の逆数による重み付け予測はほとんど効果がないと確認したというNECの太田睦氏の発言で、MPEG-1のSM2からSM3の間で、双方向予測 のフレーム間隔による輝度への重み付け係数を両方固定の1/2にして平均にした。当時、単純化(Simplicity)をも評価基準に挙げていた。


≪=BACK TOP∧ NEXT=≫

6.3 2段階双方向

MPEG-1での主観評価テスト1位と2位のSONY,JVC(Pなし)の両提案は2段階双方向を採用していた。3位のBell-core のBは内挿画像だったがY-T適応で 滑らかな動きをしたがぼやけていた。2段階双方向は結果が良かった。しかし、提案社自身が2段階双方向を辞退した。当時なぜかと私はSONYの米満氏 に尋ねた。フレームメモリがもう1枚必要になる複雑さ、提案の主観評価条件には余りに厳しい0.4秒というランダムアクセス時間要求があった、その後 のほとんどの実験ではそれより長い0.5秒のN=15のGOP長が使われ緩和されたが、一般にI画像は、P画像の倍程度の符号量を要し効率を低下させる。 GOP長はある程度長いほうが効率が上がり、それは画像のシーンチェンジまで伸ばすこともできる。0.4秒という制限では双方向は1段階ではSIF 1.15 Mbit/sではよい画像にするのが難しかったため2段階双方向を採用したが、MPEG-1にその必要はないという答えであった。双方向予測は効果を示し 2段階双方向はそれを全予測に使えるのにと私は思った。

I/P/B画像
なぜ全てをB型にしないのかという疑問が当時からあった。特にP画像は、H.261の画像型である。B画像の双方向予測はそれより予測が格段によい。 B画像でも全MBをイントラや、片方向予測にでき、I/P画像の代わりにした場合の効率低下は大きくない。I/P画像にそれ専用のMB型を持たせる必要は 効率上殆どない。そうすれば MPEG-1ですでに、H.264 のマルチフレーム予測になっていたのではないかという思いがある。

しかし当時、ピクチャタイプは、画像の予測構造を決める唯一の情報だった。Iは独立に符号化され、Pは他のI/P画像から予測し、Bは、I/Pから予測 する。そしてP画像のMBタイプのように既成の標準とのコンパティビリティ要求があった。P画像はQM=16にするとH.261画像からの変換が可能と 思われていた。

コンパティビリティは徐々に不可能になっていた。B画像はそれを使わなければよい。量子化マトリクスは平坦な設定をすればよい。GOBがスライスに 変わる。逆量子化を違える。ループ内フィルタがない。MVの半画素単位、F_CODEによるMV表現、符号化効率上必要なものは、コンパティビリティには 邪魔だった。それらによって、コンパティビリティが保てないことに、我々は徐々に気が付いていった。そして、コンパティビリティを求める通信系 の人々は、使用者の利便を標榜するが、技術の変更に保守的にさせるのは、じつは、技術の所有者の利得であった。

H.261を作成してきた通信の人々は、できる限りのコンパティビリティを望む。NonMC coded のようなMB型と逆量子化をH.261に一致させ、B画像の スキップがそれを超えるとは考えなかった。すでにH.261からMPEG-1 に変わって、双方向予測のために参照画像メモリが2倍に増えていた。これを 2段階双方向のために画像型を増やすことは、CIF画面のサイズのフレームメモリがさらに1枚必要になり、現在からみると馬鹿げているが、それは 致命的に思われた。まして、画像型を無くすことは殆ど考えが尽きてしまう。

しかし、当時の「2段階双方向」という概念も限界をもっていた。H.264のマルチフレーム予測は、参照画像をL0,L1という参照画像リストからMB毎に 選択し、どの画像型もB画像さえ何枚も参照に利用する、フレーム構造を超えた効率優先の仕組みにした。ただ、HEVCのHMのランダムアクセス画像で は階層的に量子化を違えた2段階双方向や3段階双方向の画像構造を採り、それを時間的階層という。NAL unit headerには、temporal_id が記述され、 パケット毎に時間的階層を分離できる。

1つの予測に同時に使用するのは2枚までであり双予測という。3枚以上の平均を使えば予測性能はまだ向上するかもしれない。この手の予想は、効果 を確認し最適化して初めて実証される。試し実用にするまでにはエンジニアリングがある。誰もが結果を予想して実験を開始するが、正しかったかは、 実験者がプログラムし全てのバグを取り去った後知ることである。そして、大半の予想は間違ってきた。最大のバグはそれが有効という予想自体だっ たりする。ひとつの道具ができるとき、その数十倍の道具が生まれ消えていくのである。


≪=BACK TOP∧ NEXT=≫

7. MPEG-2:インターレースと階層符号化

MPEG-2が追加した技術は、インタレース対応のフレーム/フィールド予測と、フレーム/フィールドDCT(DCT type)、Dual-prime予測である。 MPEG-2のメインプロファイルは、DVDと世界中のディジタルTV放送に使われた。インターレースの符号化は絶対的に必要な道具であった。 それ以外のスケーラビリティ(SNR/空間) の他のプロファイルは標準を作成しても殆ど使われなかった。周波数によるストリーム分割は 性能が低く、周波数スケーラビリティは途中でSNRスケーラビリティに取って代わられた。コンパティビリティ、スケーラビリティなど、 提案段階に明確でなかった階層符号化技術は、慌てて議論して標準化しても無駄だった。我々は使われない標準を作成することがある。

インターレース符号化は必要だったのか?

MPEG-2は、インターレース (飛び越し走査) 符号化である。これはアナログ時代の産物で、時間的分解能を上げ、フリッカー(ちらつき)を 避けるため、画像は走査線を1本おきに走査される。時間的に前後半分の画像をフィールドといい、2フィールドをマージしたのがフレーム である。MPEG-2 ではインターレースの仕組みを符号化に採り入れているが、インターレースは、アナログ特有の必要性によって作られた ものである。デジタル化によってそれが不要なことが確定すると、MPEG-2の殆どの道具は不要になり、ノンインターレースの符号化 MPEG-1 に戻るか、H.264かHEVC(H.265) のものになるだろう。

いつまで待つのだろう?

しかしそれまで、どれだけの年数をかけるのだろう。ディジタル放送は、普及に10年以上かかり 2011年7月24日地上放送がアナログ停波された。 次の符号化方式の変更によって全家庭のテレビジョンを変えることは、最低10年〜20年は待たれなくてはいけない。一方、我々は、すでに 20年前(MPEG-2:1993年CD, 1995年IS)の方式を使い続ける不利益も蒙っている。放送方式のサイクルが長過ぎて新しい符号化方式が放送への 道が閉ざされている。

可変ハードウエアとデコーダ伝送による放送

符号化標準化から放送実施までの大きな遅延は、符号化方式によらない放送、放送がデコーダを送り付ける放送方式まで解決されないだろう。 そのアイデアは決して新しくはなく、MPEG-2がITU-Tと一体化され、ディジタル放送に使われることが確定した20年前から度々議論された。 しかし、その実現はますます遠ざかっていくように思う。可変デコーダ放送では、符号化を標準化する必要もなく、コンテンツによって 符号化も選択できる。MPEGもいらなくなる。これは、LSI化が難しいために夢物語だろうか。いやFPGAや、再構成可能LSIで、まだ手の届く 範囲と考えるべきだろうか。少なくとも今は、FPGAは専用LSIによるデコーダよりは高価で、今も今後も常に高価であろう。いや、それほど 違いはないかも知れない。

ネットワークが危険だからか?

インターネットが危険な時代に実行ファイルをダウンロードしそれを実行させるなど、セキュリティ上許されないからあり得ないのだろうか。 インターネットが今ほど危険な時代ばかりでなく、ほとんど全てのワークステーションがどこからもリモートに扱える時代があったことを 思い出せば、ネットワークが生き返ることができれば可能かもしれない。この疑問が私には20年前から続いている。

MPEG-2インタレース符号化では私はスキャンの切替え(zigzag/vertical)を提案して、量子化グループで、run-level 2次元 VLCを run, level 個別符号化で、しかも単純なWyle符号(今ならEG0(Exp-Golomb, k=0)という)で、それぞれ符号化したほうが却ってよいSNRを与える ことを知った。つまりMPEG-1,-2の 2次元VLCはよく調整されていない。その後、MPEG-4 標準化のなかで Universal VLC(UVLC) が主張された。 そのような規則的VLCでよいなら大規模なVLCよりその方が単純である。VLCは統計から設計するが、熟慮されていない設計は無意味である。 但し、DCT係数の符号化は、全体に最も大きな影響を与えるから、最大の注意が払われるべきである。

H.264以降は、最大頻度の符号は、係数の有意性(非0)の符号であるという。HEVCでは最後の係数位置とともに、16x16以上は4x4サブブロック(SB) 有意性を符号化して、隣接SB有意によるSB内部の係数位置によるコンテキストを使って係数位置の有意性を符号化する。H.264では絶対値-1と 正負符号だったレベルは、絶対値-1, 絶対値-2, 絶対値-3と正負符号で符号化する。


≪=BACK TOP∧ NEXT=≫

8. MPEG-4

MPEG-2の後のH.263は、1/4画素MCと、run-level-last という最後の係数を分離した3次元VLCで、EOBをなくす符号の連接一体化で効率を上げる。 そして、超低レート用符号化 MPEG-4 は、符号化効率上昇のために intra DC-AC 予測, 1/4精度MCを導入した。 MPEG-4の主観評価では、提案者のなかで参照となるべきH.263が上位の成績を取って、MPEG-4のなかで許される形式となった。MPEG-4 は、MPEG-2 のノンインタレースに比較して約1.5倍の圧縮性能という。

MPEG-4は、オブジェクトベースの符号化という、シェイプ(形状)とテクスチャ(模様)による機能性を追求した符号化標準である。形状の符号と 模様の符号化であるが、形状周辺で2次元DCTの正方形が5角形や3角形になる対応をするshape-adaptiveDCT(SA-DCT)によるテクスチャ符号をもった 物体を符号化し、別に符号化した背景の前を運動させる、2次元オブジェクトである。背景の符号化も、最初から背景をできるだけ広く与える スタティック・スプライト、隠れた部分が再度表れることを利用したダイナミック・スプライトが技術があった。それらは高いプロファイルに 置かれたが、使われたのだろうか。効率にまさる機能性などなかったのではないだろうか。

JPEG-2000は、変換に Discrete Wavelet変換(DWT) を使いブロック歪みなく、JPEGの2倍の効率の符号化にしたというが、ここ10年間JPEGベース ラインの単純さに勝てなかったのではないか。そして、H.264のイントラ予測が JPEG2000 よりも効率が高いことが示された。符号化は、 より効率的な符号化によって淘汰されるものである。

MPEG-4 のスーパーマクロブロックは MPEG-2のマクロブロックMB内部で済んでいたフレーム/フィールド予測とDCTtypeの構造を崩し、MB層の 外側に影響を広げ、フレーム画像に上下に並ぶスライスのMB正方形を関連づける必要をもち、フレームの正方MBを崩す利点はなかったと思う。 MPEG-4 は、インターレース符号化ではMPEG-2よりも後退させただろう。放送用途など高品質な用途を考えない低レートでは起こりえることである。


≪=BACK TOP∧ NEXT=≫

8.1 MPEG-4 のオブジェクト符号化

MPEG-4 は、任意形状のオブジェクト符号化(シェイプとテクスチャーに分離した符号化)を目指したが、 MPEG-2 の階層符号化(スケーラビリティ、 コンパティビリティ)と同様に、使われない標準を用意したのではないか。標準のドキュメントは厚過ぎ、誰も読もうともしないだろうことは、 使われない標準の兆候である。オブジェクト符号化は、そのエンコーダ側の自動的なオブジェクト切りだし方法なしには、使える場面がゲーム などに限定される。エンコーダが遠い将来しかできないものを標準化しても有効ではあり得ない。すでにゲームも3次元オブジェクトである。

平行移動とアフィン変換、GMC、グリッド内挿MC、ダイナミック・スプライト
画像からのオブジェクトの切出しは、簡単でなく成功していない。動きによって奥行きを知るのは、「不完全設定問題」である。 画像の部分的動きの大きさは、物体の表面模様の近さを表す。オクルージョンによって立体構造を知るようなことをしないと、単に オクリュージョンがあるからMCが当たらないといつまでも言い訳をいうことになる。MPEG-1の双方向予測は、隠れた背景の現れ (uncovered background)の予測を可能にしたが。画面内の動きが平行移動でないのは、実際に物体が不均一な動きをするときもあるが、 剛体なら動きの大小から、物体の奥行きを求めることもできる。しかし、動きの原因が平行移動か回転か変形かは知ることができない。

平行移動の動きベクトル以外、多くのパラメタをもつ2次元のアフィンマッピングを効率的に表現するブロック交差点(グリッド点)の 動きのブロック画素への内挿がMPEG-4で議論された。画像全体の4隅の動きで画面のアフィン変換を扱うグローバルMC(GMC)もパニング などによいが、グリッドMCはさらに既存の動き表現に互換性をもち、ブロック内の物体の変形を表現できる。符号化効率のよい証拠が 十分なかったからだろう、残念ながら標準に入らなかった。符号化の道具として単純で美しく有効そうに思えた。 それでも、MPEG-4は波形ベースでなく、モデルベースの符号化に一歩踏み出し、背景のスプライトによる形成、隠れていた背景が現れる 度に背景画像に修正追加するダイナミック・スプライトなど、それが可能であることを示した点を評価すべきであろう。


≪=BACK TOP∧ NEXT=≫

9. H.264 からHEVCへ

H.263の後に H.26Lとして長期の符号化効率の追求をした、H.264(MPEG-4 part10 AVC)は、複雑さを顧みず高い圧縮性能を目指した。 マルチフレーム双予測、1/8精度予測、方向性によるイントラ外挿予測、sub-block分割予測、4x4DCT、CABAC/CAVLC、R-D最適化をフルに 使用して、MPEG-2の約2倍の符号化効率をもつという。これほどの複雑な符号化が標準化され、さらに、Fedelity range extension では、 8x8DCT変換と8x8イントラ予測、量子化マトリクスを追加した。映画会社のフィルムグレインの再現も要求された。

しかし、H.264 の目的にした高能率符号化は、将来にも残るだろうと好意的に受け止められる。現在、H.264で必要なものはエンコーダ の選択と単純化である。余りに複雑なために使われない道具立てやRD最適化は、将来可能な計算量によって実用になると計算量は正当化 しても、細々した複雑な仕組みは違うのであり、効果の少なかった道具類の整頓は必要かと思うと、ソフトウエアならあまり整頓の必要 もなく、整頓もエンコーダ事項かもしれない。しかし、次の標準HEVCにその技術のほとんどが引継がれ継承され拡張されたことが技術の 正しい方向を指していたといえるのではないか。

しかし、HEVCが本当にH.264の2倍の符号化効率、MPEG-2の4倍の符号化効率とは思わない。H.264の3,4割増し程度の符号量に対応するという 性能報告が終盤にあった。CABACとRDOはすでにH.264で使われていて効率増加にならない。H.264もRDOを除去すればMPEG-2の1.5倍程度まで であり、2倍というのはRDOによる複雑なエンコーダに頼った性能である。MPEG-2はMPEG-1に比べてインターレースで2割の圧縮性能向上という 大変控えめな性能評価をMPEG-1,-2のVideoの議長のLe Galは行ったが、それに比べてH.264とHEVCは、大変几帳面な決断の連続を記録に残す 議長の、符号化標準性能の宣伝文句である。そのような複雑なエンコーダを使えば MPEG-1, -2にも1.5倍〜2倍程度の符号化効率の向上は容易 といえるし、MPEGはデコード処理とストリームシンタックスの標準化であって、将来のためにエンコーダ事項を標準化しないのであるから、 エンコーダによる性能は、符号化標準の性能とは、切り分ける必要がある。


≪=BACK TOP∧ NEXT=≫

9.1 CABAC算術符号化

偏った多シンボルの発生確率を2進化によって2進の発生確率の偏りにして算術符号化するのが H.264のCABAC(文脈適応2進算術符号化)である。 CAVLCという文脈依存のVLC切替えと比較して、実行を複雑にする割に10%程度の効率向上があるとされる。ランやレベルの多値符号に、 各シンボルの発生確率の代わり、2値化を経て並べた単進法的な規則的VLCよって作られる1と0の2値の確率の偏りを利用して圧縮する。 問題なのはその2値化符号に余りに無頓着で不正確なことである。少なくともハフマン符号程度に正確にすべきではないのか。2値化で シンボルの発生確率を不正確に扱うのにCAVLCよりも効率が高いのは殆ど優勢シンボルの纏めによるだろう。算術符号化は、複数の優勢 シンボルの発生を自動的に纏める符号化を行う。各シンボルに最低1ビットを必要とする可変長符号化よりも有効なのである。

HEVCではCABACの算術符号化の部分の代用の提案がいくつかあった。例えばV2Vという可変長から可変長への変換によるものである。 CAVLCとともにそれらは全て消えたが、元もと効率優先よりも処理削減優先の技術は中途半端であった。しかし、2値化で2進符号にして 0/1比率の偏った短い符号を作れば、それを自動的に50%の符号にまで短縮する方法は文脈に依らずとも可能だろう。HEVCの後半では コンテキスト削減とバイパス化とその纏めに力を尽くし、コンテキストはH.264の数分の1にした。

上述したが、H.264のイントラ方向性予測は、符号化対象ブロックの隣接画素からの多くの方向の外挿予測の選択で、上、左、DC、.... と 9種の予測方向をもつ。16x16 と間が飛んで 4x4 しか無かった。各ブロックにその選択の符号が使われる。16x16にはたった4種であり、 Highレベル用の Fedelity Range Extension では 8x8 DCT が復活したと同時に、イントラ予測にLPF(121型) フィルタ付き 8x8 が用意された。 このような模様の周辺からの方向予測、一種の空間的DPCM予測の有効性はどの程度だろうか。どこまで発展しうるのだろうか。


≪=BACK TOP∧ NEXT=≫

9.2 レート歪最適化(RDO)

必要な符号と残った歪の両方を勘案して最適なものを選ぶ高複雑性の、レート歪最適化(RDO)を行うと符号量の10%程度まで効果がある。 全発生符号bitとブロックのMSEをモード毎に測定し、cost= α x bit + log √MSE を最小化する予測モードを選択する。符号を2倍使えばエラー 振幅は約1/2になる(-6dB実際は-3〜-4dB)と単純化すれば、画像のある領域なりブロックにおいて符号量と歪量には積一定の関係がある。この式は、 積式の対数をとった和一定の式の中のモードによる微小な得失を評価する。係数αはビットレートに依存し低ビットレートで大きくする。全予測 モードを試したモード選択は MPEG-2の双方向フレーム/フィールド予測選択で使われ、2乗誤差(SSD)最小又は絶対値誤差(MAD)最小で判断したが、 H.264ではさらにアダマール変換した変換2乗誤差(TSSD)や、発生符号量まで考慮して計算するRDO最適化が導入された。これなら、 モード選択から予測誤差だけでなく、最終的な符号量までの結果を確認してコストと残る歪の中を最適化できる。


≪=BACK TOP∧ NEXT=≫

9.3 適応ループフィルタ(ALF)

Wiener フィルタの相互相関ベクトルか、フィルタ係数をポストフィルタヒントとして伝送する、ALFフィルタの有効性がないと確認された。 エンコーダは、再構成画像を原画像に近づけるようなフィルタパラメタを計算で求めることができる。エンコーダは、このパラメタをデコーダ に伝送しデコーダも同じフィルタを使用して画質を向上する。HEVC ではデブロックフィルタ+SAO+ALFの縦列接続でループ内である。一般に効果 が高いからループ内が選ばれる。ところが、デコーダの処理の大半をこれが使用する計算量の大きいフィルタである。勝手にこれをさぼる デコーダは許されない。ポストフィルタなら、デコーダはサボることができるが、約半分の効果しかない。HEVCで期待が大だったALFはある時期 に効果を疑われ、主観評価を行い、デブロックと画素適応オフセット(SAO)以外、WDから除かれた。


≪=BACK TOP∧ NEXT=≫

9.4 画素適応オフセット(SAO)

SAOは、LCU単位に掛けられ、その単位で種類を決め、画素の近傍の性質によってさらにクラス分けして、エンコーダは各クラスの復号画素値と 入力画素値のクラス内平均の差を求め、エンコーダが各クラスに用意したオフセットをデコーダが画素毎のクラス分類に従って加算する。SAOは、 LCU単位に sao_merge_left, 左マージしないとき sao_merge_upフラグを付け、上ともマージしないとき、saoのON/OFFを示し、1のときSAO_type (EO/BO区別)が符号化される。EOとはエッジオフセットでエッジ方向4種(横、縦、斜1、斜2)に対して3画素の変化6種の変化を鈍らす方向の オフセットを与える。BOはバンドオフセットでバンドとは輝度の上位4bitのような値の帯域である。バンド開始位置を与え、各クラスのオフセット は、ASP, PPSで先に与える。BOには正負符号付きオフセットで、EOが符号無しオフセットなのはエッジ方向を決めてその方向内で変化を鈍らす値 だからである。最初、BBC, Samsung提案にあったのを、Mediatek が単純化し発展させた。当初、FUという矩形フィルタ領域を設けていたがLCU単位 にしてマージを採り入れた。


≪=BACK TOP∧ NEXT=≫

10. その他の技術

MVを送らない動き補償、符号を送らない intra/inter等
対象MBの周辺MBの情報を正確なMVの予測(PMV)に使うのではなく、PMVをMVとしてそのまま使用すれば、MVを送らない動きマージができる。 このような仕組みは、正確なMVを送らず概略の予測を与えるから予測性能は低いが、MVの符号量を必要としない点で優れていると昔から提案 されてきた。また、周辺MBのMVから行うのではなく、符号化対象MBの近傍の逆L字型周辺画素を使用すると計算量が小さくデコーダでMV検出する。 これをテンプレートマッチングという。逆L字型領域によるintra外挿予測は、80年代から神奈川大学の小松先生が使われていた。

イントラ MC
画像内の動き補償、イントラのブロックコピー、イントラ画像内の上や左にずれた位置からMC予測するイントラMCはまだ標準外である。HEVCへの Renesas提案(JCTVC-A126)は、現在ブロックと予測ブロックの重複部分で2MVの位置の画素を使うようにした。HEVCのRExtではイントラMCが再登場し、 ディスプレイ画像の符号化、ロスレスなど高画質で効果の大きさが認識された。今度は標準の道具になるかもしれない。画素が重複するコピーは 処理順によるが、 (重複領域の扱いかたをスキャン順の画素処理とすると、)方向的外挿予測になる。例えば(-1、-1)のMVを使うイントラMCは、 左上の隣接画素からのイントラ予測になる。(0,-1)は上から、(-1,0)は左から、(1,-1)は右上からである。提案(JCTVC-F617)のようにMV精度を 1/2画素にすると、角度分解能(45度)が倍になり、H.264の4x4と同じく8方向からのイントラ予測類似になる。しかも、画素延長だけでなく、 繰り返し模様を再現できる。例えば(-2,-2)とすると2画素幅の左上からの模様の繰り返し延長になる。イントラ予測は余りに細々とした繁雑 な処理であり、このイントラ予測を包含したイントラMCに単純化できるかもしれない。

使用頻度順位列による符号化
数十年前、神奈川大学の小松先生はエンコーダとデコーダで同時に使用頻度を直接に計測しながら可変長符号の割り当ての変更を研究された。 ベクトル量子化のコード使用順においてVLCを割り当て、使用頻度の順を非零係数ごとに累積し頻度が逆転すると1つ前と交代する。同時にVLCも 交代し変更する。この順序列は係数の可変長符号化(VLC)においても、可変長符号の適応性を確保するのに有効であろう。また、使用順位にVLC を割り当てる問題だけではなく、この順位列適応は、係数位置の符号化又は走査順の自動化においても有効であろう。

順位変更は、使用頻度表をもって直前の候補と交代する方法以外にも、使用頻度表を持たずに、非零係数発生において直前の零係数位置と交代 するという方法もある。これは順位自体が過去の確率の結果に適応することを利用する。先頭に移動(Move to Front MTF) という方法もある。 Nだけ前に移動という方法もある。さらには、Tree状になったVLCで表される各シンボルが使用頻度をもち、符号の使用によって、Tree 構造を 変更する必要が出たときに変更すれば行える。これは Dynamic Huffman という方法である。しかし、VLCではどのようにしてもCABACには 勝てないだろう。



(*1) MPEG-1,-2では書類の量はこの1/10以下であるが、現実に10cm厚以上の紙文書を旅行鞄で持ち運ぶのは限界だった。多くの同僚は配属換え で書類を私に残し、私の家は今も紙の山である。MPEGは当時の正確な記録を残さないが、ITU-TはMPEGと違って書類を整備して残した。記録は 将来まで残るから参加者はいい加減な提案はできないだろう。それにしても大量な文書を、MPEG-2の頃とさほど違わない200数10人の参加者が 平均5以上提案している。

(*2) つまり、外挿予測もDSTも古い技術で、JPEG、MPEG-1の頃に欲しかった技術だが、そんなことは決してできなかっただろう。 当時のシミュレーションではあの単純なMPEG-1のSIF、MPEG-2のSDTVの1フレーム処理するのに数10秒から1分もかかった。

デコードしてリアルタイム表示は、MPEG-1 のときワークステーションでも不可能だった。SIFの30Hzデコード表示は、かなり後である。 それゆえ、道具を考案してもプログラムする労力がいる。そしてテストすることは難しい。多くの画像でテストして初めてその道具が役立つか どうかが分かる。そのような道具を10個ぐらい考えて作り、組み合わせて初めて提案に参加できるのである。これは会社がサポートしてくれて 直前にチームを組んでくれても才能がある後輩に恵まれることは稀で、才能ある先輩はもっと稀である。才能ある若手は批判はするが手助けは しないだろう。ほとんど全て自分一人でやることになる。それを覚悟して初めてできる作業である。提案はきつかったし、提案の書類を作った ワークステーションはHDDがクラッシュする。他社からの社員は巧言をいって私から技術を聞き出して特許を書いていた。それはずいぶん後にな って知った。そして、標準化で知り合った人々も私の技術を聞いて色を変えたときは、大抵あとでその人が私のアイデアを使って特許を書いた ことを知るのである。私も特許は要求されるがそれさえ一人の作業になってのしかかる。先輩は要求するが技術的内容を知らないので肩代りし てくれるはずもない。そこで私は特許だけは放棄して技術者の成果から抜け落ち、そして論文を書くことも放棄して名誉から抜け落ちることを 選ぶ。両方とも自分だけが我慢すればすむことだからである。少なくとも誰かを傷つけることはない。そして、自分から求めた苦労だけは自分 を救うことを知る。

現実にプログラムを書き最適化しデバッグする人的労力に限界があり、10本程度の標準画像各5秒をテストするには一晩かかるという計算機 パワーの限界がある。当時不可能だった高度な最適化処理が徐々に可能になっていく。そしてそれは現在も量的な違いはあっても同様な限界 があると考えざるを得ない。符号化の技術は、とくに画像は、扱う画素数が多いために単純なことしかできない。画像は右から左に移すだけ でも重たい。

(*3) MPEG-1からMPEG-2まで、シミュレーションモデル、テストモデルは仕様だけで、プログラムは参加各社がそれぞれ作成した。共通ソフト がないので結果の出る速度は遅かった。B-quant は、TCE の Tristan Savatierによって主張され、私の反対で消えた。実験結果なしの道具 追加は許されないことと、符号設計もだめだった。

(*4) F_CODEは、動きの分布を知る符号化前にその最大の大きさを決める必要があるという不都合がある。大抵の動き検出には最大動きの制限 があり、それを画像間隔に応じて設定することで事足りるが、MVDに拡張可能な規則的なVLCを使えばどこまでも伸びるMCは容易に実現できる。 MPEG-2で私は動きベクトル差分MVDの符号化にはF_CODEでなく、Wyle符号を使い制限なく拡張できることを示した。殆ど全ての標準画像で結果 が良かったが、特別に動きの大きいCG画像、Confetti(紙吹雪)で結果はF_CODEに負け、採用されなかった。

(*5) 私が MPEG-2の終了近い時期にPCSとMPEGに、3.5bit精度の整数型DCTを発表したとき、IBMはすでに興味をもって研究していたことを知り、 同じ時期にNECの宮本さんが、同じ係数を独立に発表したことに驚いたものである。これによって低下するSNRは、0.1dB未満だから採用されれ ば利点が大だっただろう。

(*6) このときの"/16"に、私は、逆量子化に+8の丸めが不要で、量子化側の対応も必要がない結果を示し、確率分布を理由にもつとし、逆量子化 の丸めを省略させた。