アカデミック

【初学者向け】マルチメディア通信<符号化編>

この記事では,マルチメディア通信に関わる知識を簡単にまとめていきたいと思います。ただし,全ての知識が詳しく網羅されている訳ではありません。また,分かりやすいように多少意訳した部分もあります。ですので,参考程度におさめていただければ幸いです。

間違えている箇所がございましたらご指摘ください。随時更新予定です。他のサーベイまとめ記事はコチラのページをご覧ください。

符号化

私たちはディジタル化社会に生きていますが,なぜアナログ情報ではなくディジタル情報を扱う必要があるのでしょうか。ディジタルデータの特性には「伝送中のデータが(アナログデータほど)劣化しにくい」ことや「コンピュータで処理できる」といった点が挙げられます。しかし,世の中に存在する多くの情報はアナログです。

そこで,アナログデータをディジタルデータに変換する処理が必要になります。それらの処理は「標本化」「量子化」と言われています。ここでは深入りしませんが,今でも偉大なるシャノン先生による標本化定理などにしたがって音響信号がサンプリングされていたりします。

ディジタル通信では,標本化・量子化によって時間方向が有限の桁数の数値で近似されたデータを扱います。しかし,これらの「生の」データは非常に容量が大きく扱いづらいです。そこで利用されるのが,圧縮技術に代表されるような「符号化」です。符号化とは,ディジタルデータを他のディジタルデータに変換する操作を指します。

符号化は,以下のように分類することができます。

また,対象のデータを「音」と「画像」に分ければ,以下のような分類もできます。

「分析合成符号化」「ハイブリット符号化」「パラメトリック符号化」と分類される場合もあります。後述するソースフィルターモデルを利用すれば,パラメトリック符号化は実現可能です。その際,聴覚上同じように聞こえるようにパラメータを調整するのが「分析合成符号化」で,音声波形を出来るだけ再現しようとするのが「パラメトリック符号化」です。

さらに言えば,符号化という処理は情報理論と呼ばれる学問の中の1分野です。情報理論を細分化していくと,以下のような分類も可能です。

以下では,マルチメディア符号化ということで「音声」と「画像」の符号化について少しだけ見ていきます。

音声の符号化

符号化の話の前に,ソースフィルタモデルについてお話しします。ソースフィルタモデルとは,音声が生成される過程を「ソース(音源)」「フィルタ(音響管)」に分解して捉えるモデルの一つです。

ソースは声帯による発声,フィルタは声道における共鳴特性に相当します。音源側の生成過程は,パルス波と雑音に分けられます。これは,声帯の振動波形がパルス波として表されており,音の区別を雑音で表していると言えます。

例えば,有声音であれば特定のパルス波列,無声音であれば白色雑音などという仮定をおくことがあります。音源の特徴は,ピッチ(基本周波数)や有声音・無声音,音量(振幅)などにより決定されます。例えば,有声音であれば主に声帯振動,無声音であれば主に乱流が音源となります。

一方,フィルタは声道の特性を表していて,パルス波のインパルス応答を示しています。合成フィルターと呼ばれることもあり,線形予測フィルターが利用されることが多いです。つまり,このモデルでは音源の特徴を表すパルス波と音響管の特徴を表すインパルス応答を畳み込むことによって,音声波形が生成されると考えているのです。

さて,音声符号化においては,主にハイブリッド符号化ボコーダー(分析合成符号化)においてソースフィルタモデルが利用されています。波形符号化では,音声の生成過程をモデル化せずに音質を保ったまま符号化するという特徴があります。一方で,ハイブリッド符号化では音源特性に参照用の符号帳,声道特性に線形予測フィルターを仮定したCELPと呼ばれる手法が代表的です。

CELPでは,音声波形を再合成した後に聴覚に基づく補正を行い,元の音声との誤差が最小となるような符号化を符号帳から参照して実現します。符号帳への参照を効率化した方法として,符号帳にパルスの組み合わせを採用したACELPというアルゴリズムも考案されました。

CELPに代表されるハイブリッド符号化は,元の音声波形との残差を基準に符号化を実現しており,得られる情報量が少ない場面では適切な再合成ができないという問題点があります。ボコーダでは,音声波形ではなく聴覚特性に基づいて符号化を行います。ボコーダとして最も基本的なモデルはLPCボコーダです。LPCボコーダでは,上述のソースフィルターモデルに基づいて音声生成過程を忠実にモデル化します。音源特性としてはピッチや有声・無声の区別を特徴として用います。声帯特性としては線形予測フィルターが利用されます。

画像・映像の符号化

単純なビットマップ形式でデータを管理すると,1画素はRGBそれぞれ8bitの情報量をもつため3byteの容量になります。これを例えばフルHDの解像度(1920×1080)に適用すると,45Mbitにもなってしまいます。映像では,30フレーム/秒とすれば1.35Gbitにもなります。画像・映像でも圧縮を伴った符号化が重要になります。

画像の可逆圧縮としては「GIF」「PNG」があります。GIFは256色までをLZW圧縮(辞書を参照しながら圧縮する方式)によってアニメーションにします。PNGはフルカラーに対応しており,Deflate圧縮(LZ77法+ハフマン符号の組み合わせでZIPと同じ方法)によって圧縮します。

LZ法はあるデータ列が以前に出てきたかをチェックしながら必要に応じて何らかの符号に置き換える圧縮アルゴリズムです。

画像の非可逆圧縮としては,「JPEG」が有名です。JPEGを簡単に説明すると「人間の目が高周波数成分に鈍感であり,色の変化に対しても鈍感であるという性質を利用したデータの間引き方法」です。

具体的には,RGB情報を「輝度+色差」に分解し,色差成分のみを間引きます。次に,8×8画素のブロックに分けて以下の処理を行います。まず,離散コサイン変換を利用して高周波数成分を間引きます。次に,各係数の値を量子化デーブルの値で割って小数点を丸めます。量子化に相当する操作です。次に,2次元配列をジグザグスキャンによって1次元配列に直します。最後に,1次元配列に対して「差分符号化」「ランレングス符号化」「ハフマン符号化」を行うことで圧縮を実現します。

なぜフーリエ変換ではなく「DCT(離散コサイン変換)」を利用するのかは,DCTでは実数の入力に対して複素数を返さず実数を返すためです。

なぜジグザグスキャンを行うのかは,DCTの結果が2次元配列のうち左上の方が低周波成分に対応するように出力されるからです。ジグザグスキャンを行うことで,高周波数成分を1次元配列の後ろの方に集めることができます。さらに,DCTの結果は右下ほど高周波成分に対応して0が出現しやすいため,そのあとに続く圧縮アルゴリズムにおいても後ろの方に0が連続することで効率的な圧縮が可能になります。

圧縮の際に頻出するワードとして「ディザ」もあります。ディザは量子化の際に誤差が「うまく分散するように」行う方法のことです。CDを作るときの最終段階でよく利用されるようです[1]。

映像の符号化としては,JPEGに対してフレーム間予測を行う「MPEG-1」を皮切りに,様々な規格が発案されてきました。MPEG-2では予測が3フレームごとになり,直前・直後の情報も利用します。

最近では「4K」や「8K」が有名ですが,これらは解像度に関する用語です。4Kは,フルHDの解像度を「2K」としたときの4倍緻密になります。同様に,8KはフルHDに対して16倍緻密に,4Kに対して8倍緻密になります。

「H.264/MPEG4 AVC」はMPEG2などと基本的には同じ原理に基づくものですが,整数変換の導入や参照フレーム数の指定などの工夫を取り入れることでMPEG2などと比べて約2倍の圧縮率を実現しました。「H.265/HEVC」は2013年に標準化された規格で,4Kや8Kに利用されます。

最近発表されたAOMedia Video 1(AV1)は,圧縮率よりも再生数が多い動画(変換コスト<回線コストとなる状況)に対して輻輳を抑えることを優先した規格です。H.265などで見られた不透明な特許問題を解決する期待のホープとして注目されています。

参考文献

[1] Wilipedia(ディザ)

ABOUT ME
zuka
京都大学で機械学習を学んでいます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※ Please enter your comments in Japanese to prevent spam.