Video compression

ビデオ圧縮

ビデオ圧縮とは、不要なデータを減らしたり取り除いたりすることで、デジタルビデオデータをネットワーク上で効率よく転送してコンピュータのハード ディスクに格納する技術です。適切な圧縮技術を使用すると、画質にほとんど影響を与えることなくファイルサイズを大幅に減少させることができます。ただ し、圧縮レベルを上げることでファイルサイズを小さくした場合、画質に何らかの影響が発生します。

圧縮技術には独自の規格や業界標準など様々なものが存在していますが、ほとんどのビデオベンダーは業界標準の圧縮技術を採用しています。標準的な技 術を使用することで、ビデオ圧縮において特に重要な高い互換性と相互運用性を得ることができます。ビデオは様々な用途で使用されたり、さらにビデオ監視で は長期間に渡って録画データが再生可能でなければならない場合があります。業界標準の規格を採用した製品を導入することで、エンドユーザはビデオ監視シス テムを設計する際に特定の条件にしばられることなく様々なベンダーを検討の対象とすることができます。

Axisは3種類の標準的なビデオ圧縮技術を採用しています。Motion JPEG、MPEG-4 Part 2(以下、MPEG-4)、そしてH.264です。H.264は最新かつ最も効率の良い圧縮技術です。

ビデオコーデック

ビデオの圧縮は、まずソースビデオに特定のアルゴリズムを適用してデータの伝送や保存を行うための圧縮データを作成します。圧縮されたデータを再生 するには、逆のアルゴリズムを適用して実質的にオリジナルのソースビデオと同じ内容を表示するビデオを作ります。圧縮、送信、解凍、およびビデオの表示に かかる時間をレイテンシー(遅延)と呼びます。高度な圧縮アルゴリズムを利用するほど、レイテンシーは長くなります。

一緒に動作するアルゴリズムのペアを、ビデオコーデック(エンコーダ/デコーダ)と呼びます。異なる規格のビデオコーデックは一般的に互換性があり ません。つまり、ある規格で圧縮された動画コンテンツは、別の規格を利用してデコードすることはできません。例えば、MPGE-4デコーダは、H.264 エンコーダと一緒に使用することはできません。ただし、これはあるアルゴリズムが他のアルゴリズムを利用して作られた圧縮ファイルを正しくデコードできな いだけで、複数の異なるアルゴリズムを同じソフトウェアやハードウェアに実装して、複数のフォーマットを共存させることは可能です。

画像圧縮とビデオ圧縮

圧縮規格はそれぞれ異なる方法を利用してデータを縮小しているため、結果的にビットレート、画質、レイテンシーに差がでます。圧縮アルゴリズムは、画像圧縮とビデオ圧縮の2種類に分類することができます。

画像圧縮:フレーム内符号化を使用しています。データの圧縮は、人間の目には見えない不必要な情報を各フレームから取り除くことで実行されます。 Motion JPEGはこの圧縮方法を用いており、Motion JPEGのシーケンスに含まれる各画像をそれぞれJPEG画像として符号化して圧縮します。

Motion JPEGフォーマットでは、上記のシーケンスに含まれる3つの画像を符号化して個々の独立した画像(Iフレーム)として送信します。

ビデオ圧縮:MPEG-4やH.264はフレーム間符号化を使用し、フレーム間の変化を予測してビデオデータの量を減らします。この方法には、あるフレー ムを参照先のフレームと比較して変化しているピクセルだけを符号化する差分コーディングの技術が含まれています。差分コーディングを利用することで、符号 化して送信するピクセルの数が少なくなります。このようにして符号化されたシーケンスを表示すると、各差分データがオリジナルのビデオシーケンスに含まれ ているかのように見えることになります。

差分コーディングを使用した例。最初の画像(Iフレーム)をすべて符号化し、それ以降の画像(Pフレーム)は、最初の画像と比較して変化していない部分(この例では「家」)を検出します。変化している部分(この例では走っている人)だけを運動ベクトルを利用して符号化することで、送信および保存する情報量を減らします。

その他の技術として、さらにデータを圧縮するためにブロック単位の動き補償などを適用することができます。ブロック単位の動き補償は、前のフレームで見つ かったビデオシーケンス内の新しいフレームを構成する情報のほとんどを計算に使用しますが、そのブロックの位置が異なる場合があります。この技術はフレー ムを一連のマクロブロック(ピクセルの集まり)に分割します。ブロックごとに新しいフレームを作成するか、参照先のフレームと一致するブロックを予測しま す。一致するブロックが見つかった場合、エンコーダは参照先のフレーム上の一致するブロックの位置を符号化します。これを動きベクトルを符号化すると言い ますが、実際のブロックを符号化するよりもビット数は少なくなります。

ブロック単位の動き補償。

フレーム間予測では、シーケンス内の各フレームをIフレーム、Pフレーム、またはBフレームのようなフレームタイプに分類します。

Iフレーム(またはintra frame)は、他の画像を参照せずに独立してデコードすることが可能なフレームです。ビデオシーケンスの最初の画像は常にIフレームになります。Iフ レームは、ビデオシーケンスを閲覧する新規ユーザの開始地点、また伝送中のビットストリームに問題が発生したときの再同期位置、さらに早送りや巻き戻し、 ランダムアクセス機能の実装に利用されます。エンコーダは一定の間隔で自動的にIフレームを挿入したり、また、ビデオストリームを閲覧するユーザが新しく 加わった時などに必要に応じてIフレームを挿入します。Iフレームはより多くのビット数を必要とするという欠点がありますが、データの欠落によるノイズな どが発生することはありません。

Pフレーム(またはpredictive inter frame)は、前のIフレームまたはPフレームの一部を参照してフレームを符号化します。一般的に、PフレームはIフレームよりも必要とするビット数が 少なくなりますが、前のPフレームまたはIフレームと複雑な依存関係にあるため、伝送エラーによる影響を受けやすくなります。

Bフレーム(またはbi-predictive inter frame)は、前後のフレームとこれから作られるフレームを参照として利用します。Bフレームを使用すると、レイテンシー(遅延)が増加します。

一般的なI、B、Pフレームのシーケンスの例。Pフレームは先攻するIまたはPフレームのみ参照します。Bフレームは先攻または後続のIまたはPフレームを参照します。

ビデオデコーダは、ビットストリームをフレームごとにデコードしてビデオを復元しますが、デコードは必ずIフレームから開始されます。PフレームとBフレームを使用する場合は、参照先のフレームと一緒にデコードする必要があります。

Axisネットワークビデオ製品では、GOV(Group of video)の長さを設定できます。GOVの長さを設定することで、Iフレームを送信する前に何枚のPフレームを送信するかを決定することができます。I フレームの枚数を減らすと(GOVを長めに設定)、ビットレートは減少します。レイテンシーを短くしたい場合は、Bフレームは使用しないようにします。

様々な符号化や動き補償などの他に、さらにデータ量を減らしてビデオの画質を向上させる方法があります。例えば、H.264は、Iフレームをエン コードするための予測を行う仕組みや、サブピクセル精度の動き補正、ブロックの端(ブロックノイズなど)を滑らかに処理するインループデブロッキングフィ ルターなどの最新技術に対応しています。

次のトピック:圧縮フォーマット

圧縮フォーマット