H.264
出典: フリー百科事典『ウィキペディア(Wikipedia)』
H.264(エイチどっとにーろくよん)はITU-TのVideo Coding Experts Group (VCEG)によって策定された動画圧縮の規格で、2003年5月に勧告として承認された。
もともと、H.26Lという名称で仕様が検討されていたが、後にISO/IEC JTC 1のMoving Picture Experts Groupとの合同チームであるJVT(Joint Video Team) での規格化作業に移され、現在に至る。また、ISO/IEC JTC 1では2003年にMPEG-4 Part 10 Advanced Video Coding (AVC) として標準化されているため、一般にはH.264/MPEG-4 AVCやH.264/AVCなどと呼ばれることが多い。
H.264は従来方式であるMPEG-2などの2倍以上の圧縮効率を実現すると言われており、携帯電話などの用途向けの低ビットレートから、HDTVクラスの高ビットレートに至るまで幅広く利用されることを想定している。
目次 |
[編集] 技術概要
圧縮アルゴリズムの原理は、従来のMPEG-1、MPEG-2、H.263、MPEG-4などと基本的には同様で、空間変換やフレーム間予測、量子化、エントロピー符号化を採用している。H.264ではこれらのツールに対して非常に多数の改良が施されており、算術符号化やフィルタなどのツールも追加されている。更に、画像特徴に応じて多彩なモードを適応的に使い分けることで、従来方式を遥かに凌ぐ圧縮効率を達成している。
[編集] 整数変換
従来技術であるMPEG-1/-2/-4やH.261, H.263では、8×8画素のブロックを単位として、原画像ないしフレーム間予測の予測誤差画像のDCT係数を求め、その係数を量子化している。このとき、コサイン関数を用いるため、実数精度の演算が必要となる。これに対し H.264では、16ビット整数精度で演算が可能な整数変換を採用している。この整数変換は、加減算とビットシフトのみによって演算可能となるように設計されているため、ソフトウェア、ハードウェアいずれの場合でも実装が非常に容易となる。
演算がすべて整数精度で行われることで、実数演算の実装差による「デコーダごとの演算結果の差分」を生じさせることなくエンコードすることが可能となった。これは、エンコード時の局部復号器の結果とすべてのデコーダでの出力結果が全く同一になることを意味している。エンコード時の局部復号器の結果とデコーダの出力結果が異なる場合、エンコーダが作成する再構成画像とデコーダが作成する再構成画像が異なることとなるため、フレームが経過するごとに画像にノイズが蓄積してしまう。これを回避するため従来技術ではそのDCT演算誤差の打消しのために定期的にイントラマクロブロックを挿入する必要があった。H.264では整数変換を用いており誤差の問題が生じないため、定期的にイントラマクロブロックを挿入する必要がない。
デコーダの実装差による出力結果の違いが生じないことは、デコーダの規格適合性を検証する上でも有利となる。H.264 の関連規格である H.264.1 は H.264規格適合性の検証手法を定めるもので、H.264 で符号化済の試験用ビットストリームとそのデコード結果の組が多数付属している。開発中のデコーダに試験用ビットストリームを入力し、その出力結果とH.264.1付属のデコード結果が厳密に一致しているかどうかを確かめることで、規格適合性の判断を行うことができる。
当初、H.264で使用可能な整数変換のブロックサイズは4×4画素のみであった。このサイズでは、低解像度の動画の圧縮では比較的好適な画質を示すが、HDTVなどのような高解像度の動画において画質の再現性に弱いという問題点があったため、後に導入されたプロファイル群においては、これを克服するために8×8サイズの整数変換が導入されている。これらのプロファイルでは、フレーム内で4×4変換と8×8変換を適応的に切り替えて使用することができる。
[編集] フレーム間予測
[編集] 複数参照フレーム
従来技術では、フレーム間予測において参照フレームとして指定できるフレームは、Pフレームについては直前のI, Pフレーム、Bフレームについては直前および直後のI, Pフレームに固定されている。
H.264では、複数の参照フレームを持つことによって、例えばシーンチェンジや移動物体を考慮してより前のフレームを参照フレームとして指定することが可能となっている。また、Bフレームについては未来方向のフレームを使わずに過去の2フレームを参照フレームとして指定したり、別のBフレームを参照フレームとして指定することが可能となっている。
複数参照フレームの導入に伴いIフレームより前のフレームも参照可能となっている。この場合、Iフレームから再生を開始しようとしても、後続のフレームが、再生を開始しようとするIフレームより前のフレームの情報を必要とすることがある。このため、H.264ではIフレームから再生を開始することができるとは限らない。この問題を解決するため、参照フレームが格納されているバッファのクリアを行うことでそのフレームから再生が可能であることを保証する、IDR(Instantaneous Decoder Refresh)フレームが導入されている。すなわち、P, BフレームはIDRフレームをまたいで参照フレームを指定することができないように定められている。
[編集] 可変ブロックサイズ
従来技術では、動き補償の単位は16×16画素のマクロブロックが基本であり、H.263およびMPEG-4においては8×8画素ブロック単位の動き補償も利用できた。
H.264ではさらに単位ブロックサイズを追加し、16×16, 16×8, 8×16, 8×8の4種類から選択可能となっている。さらに、8×8画素ブロックについては、8×8, 8×4, 4×8, 4×4の4種類のサブブロック分割も指定できる。
このように多数のブロックサイズを利用することで、形状や動きに適したブロックから予測が可能である。これは、原理的には符号化効率が上がることとなる。ただし、サブブロックを指定することは余分なヘッダが付加されることになり、これがオーバーヘッドとなって符号化効率に影響を与える可能性もある。シーンに適した動き補償ブロックサイズを選択することが、エンコーダには求められる。
[編集] 重み付け予測
H.264では、従来方式では画質向上が困難であった、フェードやディゾルブなどの特殊効果が用いられている動画の画質向上のため、参照フレームの予測誤差に重み付け係数を掛けてデコードする、重み付け予測(Weighted Prediction)が採用されている。フェードやディゾルブは、前フレームと現フレームで一定のオフセットがかかったような画像であるため、そのことで予測差分に大きな値が生じることとなり、MPEG4などでは画質劣化の原因として問題となっていた。
[編集] 1/4画素精度動き補償
動き補償の精度としては、MPEG-4 ASPで導入された1/4画素精度(クォーターペル精度)動き補償を使用している。ゆっくり動くパンなどで特に効果的である。 1/2画素精度動き補償では6tapフィルターを用いて高周波まで再現を行っており、MPEG4で使用された線形補間よりも再現性が良くなっている。1/4画素の生成は、再現性の高い1/2画素を用いてその線形補間で作成を行う。
[編集] イントラ予測
H.264では、フレーム間予測を用いないマクロブロックに対して、上や左などに隣接するマクロブロックの隣接画素から補間によって予測画像を生成し、その予測画像との差分を符号化する、イントラ予測(Intra prediction)が採用されている。予測画像の生成単位となるブロックサイズは、輝度(Y)成分については4×4および16×16画素の2種類であり、色差(Cb, Cr)成分の8×8画素については8×8画素単位の1種類である。また、予測画像生成における補間パターンは、輝度成分の4×4単位の場合は9種類、輝度成分の16×16単位および色差成分の場合は4種類が利用できる。
さらに、ハイプロファイル以上のプロファイル(後述)では、8×8画素単位のイントラ予測も利用可能である。補間パターンは4×4の場合と同様の9種類が利用できる。なお、8×8、4×4の場合は、整数変換も同じ行列サイズに固定される。
MPEG-4で導入されているAC/DC予測では、予測する係数がDCT係数の行列のうちの最上列ないし最左行の係数に限られているため、縦方向ないし横方向の画素変化に対してしか予測効率を高めることができない。これに対して、H.264のイントラ予測ではDCT係数ではなく画素レベルでの予測を行い、かつ縦・横方向以外にも斜め方向の画素予測パターンも利用できるため、予測効率が大幅に向上している。
[編集] エントロピー符号化
H.264では、ハフマン符号をベースとした可変長符号化(VLC; Variable Length Coding)と、算術符号化のいずれかを選択できる。
前者はBaseline Profileで採用され、従来の3次元VLCに近いCAVLC(Context-based Adaptive VLC)と、指数ゴロム(Exponential-Golomb)符号を用いることによって変換テーブルを用いずに符号化するUVLC(Universal VLC)が用いられる。CAVLCでは隣接MBのDCT係数の状態に依存して現在のMBの符号化に使用する符号化テーブルを切り替える。このように切り替えを行うことで、現在の画像のテクスチャに応じた符号化テーブルが使用でき、より短い符号への圧縮が期待できる。
後者はCABAC(Context-based Adaptive Binary Arithmetic Coding)と呼ばれ、Main Profileで採用されている。
H.264ではこのように複数の符号化方式が用いられている。これは、処理量は少ないが効果もそこそこのCAVLCと、処理量は大きいが効果も高いCABACではその用途が異なるため、そのことによって「符号化」という同じ目的を持ったツールが複数存在することとなった。
[編集] デブロッキングフィルタ
H.264では、かつてH.261で採用されたループ内フィルタ(In-loop Filter)と似たように、ループ内にデブロッキングフィルタ(Deblocking Filter)が設置されている。このフィルタはH.261のようなブロック全体の平滑化フィルタではなく、整数変換のブロック境界のみを平滑化してブロックノイズの発生を抑制するものである。(H.261のループ内フィルタは、MPEG2以降では半画素精度動き補償が採用されたために、数学上同等の役割を果たすループ内フィルタはその意味を失った。)
デブロッキングフィルタは圧縮率向上のためには効果的であるが処理量が大きいために、そのON/OFFがヘッダによって指定可能とされている。したがって、処理量に懸念がある場合にはデブロッキングフィルタを使用しないといった選択肢も可能である。
[編集] SI, SPフレーム
例えば番組のチャンネルを切り替えたり、再生の途中でプレビューを見ながら早送りしたりする場合のように、ある動画ストリームから途中で別のストリームに切り替えて再生する場合、次のストリームの再生はフレーム間予測を用いないIフレームを受信するまでできなくなる。そこでH.264では、切替用の中間フレームとして、SI, SP(SはSwitchingの意)フレームが採用されている。特にSPフレームの場合は、切替前の動画のフレームを参照画像として切替後の動画がデコードできるように符号化される。
[編集] NAL構造
H.264のビット列の規則(シンタックス)は、圧縮符号化された画像データをビット列に変換するための規則を定めたVCL(Video Coding Layer)と、VCLやヘッダ情報などのデータを分割および識別するためのNAL(Network Abstraction Layer)の2層構造を持つ。
従来技術では、シンタックスに従って1つの動画を圧縮符号化した場合、1つのビット列(エレメンタリストリーム)となる。これに対し、H.264では複数の種類のNALユニットに分割して符号化される。なお、従来のエレメンタリストリームと同様に1つのビット列として圧縮データを扱うことができるように、バイトストリームフォーマットがAnnex Bで規定されている。
NAL構造によって、MP4などのファイルフォーマットに格納したり、RTPパケットに分割して伝送したりするなど、圧縮データをさまざまな用途に柔軟に適用できるようになっている。
[編集] プロファイルとレベル
MPEG-2などと同様、目的用途別に定義された機能の集合を表すプロファイルと、処理の負荷や使用メモリ量 (これらは画面解像度やフレームレートに影響する) を表すレベルが定義がされる。H.264に準拠する機器 (又はビットストリームそのもの) はこのプロファイルとレベルによって性能 (又はビットストリームをデコードするのに必要な性能) を表示することが多い。
[編集] プロファイル
以下の7種類が定義されている。
- ベースラインプロファイル(Baseline Profile): I, Pフレームのみ、エントロピー符号化はCAVLC+UVLCのみ
- メインプロファイル(Main Profile): ベースラインプロファイルにBフレーム、CABAC、重み付け予測などを追加
- 拡張プロファイル(Extended Profile): ベースラインプロファイルにSI, SPフレームなどを追加
- ハイプロファイル(High Profile): メインプロファイルに 8×8画素整数変換、量子化マトリックス等を加えたもの。また、YCbCr 4:0:0色空間(すなわち白黒画像)にも対応している。
- ハイ 10 プロファイル (High 10 Profile): ハイプロファイルに10ビット画像フォーマットへの対応を追加したもの。
- ハイ 4:2:2 プロファイル (High 4:2:2 Profile): ハイ10プロファイルにYCbCr 4:2:2色空間への対応を追加したもの。
- ハイ 4:4:4 プロファイル (High 4:4:4 Profile): ハイ4:2:2プロファイルにYCbCr 4:4:4色空間や12ビット画像フォーマット、YCbCr以外への色空間への変換、可逆圧縮など多数の機能を追加したもの。
ハイ、ハイ10、ハイ4:2:2、ハイ4:4:4の4つのプロファイルは、当初Fidelity Range Extensions (FRExt)と呼ばれていた、HDTVにおける画質再現性を向上させるための機能を備えたものである。これらは2005年12月にISO/IECによって承認され、MPEG-4 AVCバージョン3として統合されている。
[編集] レベル
レベル1 から レベル5.1 まで、16段階が定義されている。それぞれのレベルにおいて、処理の負荷や使用メモリ量等を表すパラメータの上限が定められ、画面解像度やフレームレートの上限を決定している。各パラメータの詳細は英語版を参照のこと。
[編集] 利用例
H.264は下記に採用されており、実際に利用されている。
また、下記の規格においても映像コーデックのひとつとして採用されており、今後の普及が見込まれる。
[編集] 競合方式
H.264と同様に、MPEG-2の2倍以上の圧縮効率を実現する方式としては、マイクロソフトが開発したVC-1(Windows Media Video 9)などがよく知られている。また、H.264とVC-1は同一ビットレートで同等の画質性能を示す。
2003年、マイクロソフトは米国映画テレビ技術者協会(SMPTE)に、WMV9の基本アルゴリズムにインタレース映像への対応を加えた仕様をVC-9として提出した(後に名称がVC-1に改められた)。このVC-1がH.264と同様にHD DVDとBlu-ray Discに採用されている。
H.264は非常に多数の複雑な符号化ツールで構成されており、VC-1に比べてエンコーダもデコーダも処理負荷が高くなる傾向がある。しかし、H.264はITU-TおよびISO/IECといった国際標準化団体の規格であるため、世界中の多くの企業が支持を表明している。
[編集] 関連項目
[編集] H.264採用規格
- Blu-ray Disc
- HD DVD
- Universal Media Disc (UMD)
- モバHO!(2005年方式変更による)
- ワンセグ
- iPod
- Apple TV
- PSP
- AVCHD
- SBTVD-T
[編集] マルチメディア規格
- ITU-T H
- MPEG
- その他の動画フォーマット
- 音声フォーマット
- コンテナ
[編集] ソフトウェア
[編集] 関連団体
[編集] その他
[編集] 外部リンク
- 再生関連
- 作成関連
- 解説サイト
圧縮フォーマット |
動画ファイルフォーマット |
ISO/IEC: MPEG-1 | MPEG-2 | MPEG-4 | MPEG-4/AVC (H.264) | ITU-T: H.261 | H.262 | H.263 | H.264 SMPTE: VC-1 その他: VP7 | RealVideo | WMV | Indeo | MJPEG | Theora | Dirac | Flash Video | DivX |
音声ファイルフォーマット |
ISO/IEC MPEG: MPEG-1 Layer III (MP3) | MPEG-1 Layer II | AAC | HE-AAC ITU-T: G.711 | G.722 | G.722.1 | G.722.2 | G.723 | G.723.1 | G.726 | G.728 | G.729 | G.729a その他: WavPack | FLAC | TTA | Monkey's Audio | iLBC | RealAudio | WMA | SHN | Speex | Musepack | Vorbis | ATRAC | AC-3|Cwav |
画像ファイルフォーマット |
ISO/IEC/ITU-T: JPEG | JPEG 2000 | JPEG-LS | JBIG | JBIG2 その他: GIF | PNG | TIFF | PCX | TGA | BMP | HD Photo | ILBM |
マルチメディアコンテナフォーマット |
AU | AIFF | WAV | NUT | MXF | Matroska | Ogg | Ogg Media | MP4 | QuickTime | RealMedia | AVI | ASF | 3GP |