MPEG-1のキャプチャーカードを買い,データ作成を始めました。データサイズはかなり小さくなるのですが,どうしてMPEG-1ではサイズが小さくなるのでしょうか。
キャプチャー関係ハードウェアの低価格化で,始められる方も増えてきていると思います。それでは,動画キャプチャーでよく使われるいくつかの規格と比べて解説していきましょう。
代表的な動画規格の一つにMotion JPEGがあります。これは,各フレームをJPEG画像として保存しています。つまり,各フレームは完全に独立していることになります。このようなフレームをIピクチャー(Intra-Picture:フレーム内符号化画像)と呼びます。
これに対して,MPEG以外の多くの動画圧縮は,最初のフレームだけをIピクチャーにして,以後は直前のフレームとの差分だけを記録しています。これにより,例えば背景などの動かない(=変化しない)部分は記録する必要がなくなり,その分,サイズが縮まります。このようなフレームをPピクチャー(Predictive-Picture:フレーム間順方向予測符号化画像)と呼びます。
しかし,データの途中から再生する場合,最初のフレームから追跡しなければならなかったり,(非可逆圧縮のため)誤差が蓄積するといった問題も出てきます。これを避けるため,一定時間ごとにIピクチャーを挿入して動画情報を初期化しているのです。つまり,実際のフレームの並びはIPP……PPIPP……という構成になっているのです。なお,このIピクチャーを含む独立したブロックをGOP(Group Of Pictures)と呼びます。
MPEG-1は,これをさらに進めて,Bピクチャー(Bidirectionally predictive-Picture:双方向予測符号化画像)を導入しています。Bピクチャーとは,直前のI/Pピクチャーと直後のI/Pピクチャーの間を補完するフレームのことで,前のI/Pピクチャーからの変化,後ろのI/Pピクチャーからの変化,前後のI/Pピクチャーの中間の画像から最も圧縮できそうなものを選びます。また,画面上の要素が平行移動したことを検査,処理するための「動き補償」が導入されていて,これにより,静止背景上を動くオブジェクトなどはきわめて効率よく圧縮されるようになります。
Bピクチャーを導入する効果は,単にBピクチャーが高圧縮されるだけではありません。IPPP……構造は,フレームごとに誤差が蓄積していくので,比較的短いインターバルでIピクチャーを挿入する必要が出てきますが,これではデータ容量も増加してしまいます。それに対して,IBBPBBPBB……構造(I/P間のBピクチャーの数は一般に1〜2枚程度)では,Pピクチャーでしか誤差が蓄積しないため,Iピクチャーの挿入間隔を広げることができます。
Bピクチャーは誤差の蓄積に関与しないので,I/Pピクチャーに比べて量子化パラメータを大きくすることができます。量子化パラメータを大きくすると画像のクオリティは落ちますが,ビットレートを固定した場合,Bピクチャーを犠牲にすることでI/Pピクチャーの量子化パラメータを小さくすることができ,結果的に平均画質が向上します。
(小西晃治)
図1 MPEG-1とMotion JPEGのフレーム構造