圧縮方式/ハフマン法/ランレングス法/コーディックとコンテナ【高校情報Ⅰ授業・共通テスト対策・基本情報】

高校情報1 教科書・参考書・問題集・プログラミング・共通テスト
高等学校 情報Ⅰ(情報1)の動画教科書・参考書・問題集です。授業・プログラミング対策/定期試験対策に利用可能!大学入学共通テスト「情報1」対...
【資料ダウンロード】
PDFの他、パワーポイント、学習指導案 等の原本も無料提供しています。
情報教育の底上げが目的なので、資料を修正して、学校・塾(営利目的含む)の授業等で利用して頂いて問題ありません。私への連絡不要ですが、利用する際には、YouTubeチャンネル・情報Ⅰ動画教科書・IT用語動画辞典を紹介してもらえると嬉しいです。
■PowerPoint・問題集
https://toppakou.com/info1/download/16ADVANCE_データの圧縮と効率化/16ADVANCE_データの圧縮と効率化.pptx
■簡易学習指導案
https://toppakou.com/info1/download/16ADVANCE_データの圧縮と効率化/【学習指導案】16ADVANCE_データの圧縮と効率化.docx
【文字おこし】
今日はデータの圧縮方式について説明していきます。
決められた方法に従ってファイルサイズを小さくする処理を圧縮と言います。
圧縮したデータを元のデータに戻すことを伸張といいます。他の言い方では、解凍、復元、展開とも言います。
圧縮の目的は、記録容量の節約や、ファイル転送時の通信時間の短縮するなどの目的があります。
ファイルの圧縮方法について説明していきます。
文書ファイルなどは,圧縮したものを完全に元に戻す必要があります。完全にもとに戻らないと、文書の一部が欠損して文書が意味不明なものになる可能性があります。
このような圧縮方法を可逆圧縮といい,ランレングス法やハフマン法などがあります。
画像,音声,動画などのファイルは,完全に元に戻す必要がない場合もあります。
このような圧縮方法を非可逆圧縮といい,可逆圧縮に比べて圧縮率をあげることができる場合が多いです。
ランレングス法の圧縮方法について説明していきます。
例えば,AAAAABBBBB という連続した文字列がある場合,最初の文字列と連続する個数を記録することにすれば,A5B5 のように表現されます。
このように10 文字分が4 文字分で表現されるので,ファイルは元の40% に圧縮されたことになる。
圧縮後の容量÷圧縮前の容量×100 で表される 元のファイルサイズに対する、圧縮後のファイルサイズの割合を、圧縮率と言います。
ランレングス法には欠点があります。
たとえばABCDEという文字列があった場合は、同じ方法で圧縮すると
A1B1C1D1E1というふうに5文字だったのが10文字に増えて圧縮したら、元のファイルより容量が大きくなってしまいます。
つまり、ランレングス法は連続する同じ値が多い場合に有効な圧縮方法になります。
FAXの例で見ていきましょう。
FAXは文字も図形もモノクロの画像として送受信されます。
先ほどのランレングス法で考えるとA を白い部分,B を黒い部分と考えれば,白が続く部分や黒が続く部分がかなりあるため,ファイルは相当程度圧縮することができます。
次に、ハフマン法について説明していきます。
「intelligence」という文字列を圧縮していきます。
intelligenceは、intelgc の7種類の文字でできています。
7種類の文字を2進法で表すには3ビット必要となります。
もう少し掘り下げて説明すると、1ビットは2の1乗で2種類、2ビットは2の2乗で4種類、3ビットは2の3乗で8種類まで表すことができます。
つまりintelligenceについていえば1文字を3ビットで表現可能なので12文字×3ビットで36ビットのデータ量が必要になります。
ここで,文字に割り当てるビット数を減らせれば,全体のデータ量を減らすことができます。
このような考え方で行う圧縮の方法をハフマン法という。
具体的に実践していきます。
まずは,「intelligence」という文字列における文字の出現回数を割り出します。
多い順に
eは3回、iは2回、nは2回、lは2回、tは1回、gは1回、cは1回となります。
そしてこれを、出現回数の多い順に並び替えて、出現回数の多い文字に対して少ないビット数の符号を順番に割り当てていきます。
eは0で1ビット iは1で1ビット ここで1ビットで表される文字を使ったので、次のnは01で2ビットというように割り振っていきます。
例えばintの文字列部分でみると101100となります。
1がi 、01がn、100がt という感じです。本来は3ビット×3で9ビットなのが6ビットまで圧縮できました。
ただこの方法だと問題があることに気づいた方もいると思います。
この方法だと、区切りが分からないので、区切る位置によっては101はg 、100はtと読めたりもします。
その問題を解決するためにハフマン木というものが使われます。
これを用いることで、どこで区切られるかということが分かります。
少しややこしいですが、順を追って詳しく説明していきます。
まずは文字の出現回数順に並べます。これはさっきやった内容とおなじになります。
そして、出現回数の少ない方から、gとcの出現回数を合計して、その上に合計値を記入します。この場合はg,c共に1回づつなので合計は2となります。
つぎにlとtも同じように2+1で3を上に記述します。
つぎにiとnは2+2で4を上に記述します。eは同列のペアがいないので、一つ前に計算したiとnの合計値にたいしてeの出現回数をプラスします。
右に戻って今度はgとeの合計値である2と、lとtの合計値である3を足した5を上に記述します。
最後に7と5をプラスして、12がピラミットの頂点となります。
つなぎ合わせたすべての部分の左に0を、右に1を入れていきます。
そして、つなぎ合わせた部分に入れた0と1を上から拾っていきます。
eの場合は00、iの場合は010、nの場合は011という感じで、それぞれの文字に圧縮したビット列を割り当てていきます。
例えば、圧縮したビット列「00」があったとすると,0と1を上からたどれば対応する文字は「e」だけとなります。
「100」を上からたどれば対応する文字は「l」となります。
このような方法で各文字に割り当てる符号を定め,これを基に圧縮する方法をハフマン法といいます。
ハフマン法では,常に各文字列に対応するハフマン符号の表と,それを基に圧縮されたビット列をセットでファイルに格納することなります。
例えば、作成したハフマン符号を用いて「intelligence」を圧縮したビット列で表すと,
「010(i) 011(n) 101(t) 00(e) 100(l) 100(l) 010(i) 110(g) 00(e) 011(n) 111(c) 00(e)」のように33 ビットとなる。
「intelligence」の1文字を3 ビットで表していた場合は36 ビットなので,約92% に圧縮されたことになります。
実際には,これに各文字列に対応するハフマン符号の表がつくので圧縮率はこれより低くはなります。ただ,ある程度長い文章であれば,出現頻度の高い文字に少ないビット数の符号が割り当てられるので,文書全体のデータ量に比べてハフマン符号の表のデータ量が小さくなるので,ランレングス法より高い圧縮率が期待できます。
======
今度は画像、動画、音声のファイル形式について見ていきましょう。
まず、画像データには用途に応じて様々なファイル形式があります。必要に応じて,元に戻せる可逆圧縮や,完全には元に戻せないがファイルサイズをより小さくできる非可逆圧縮を行います。
例えばWindowsパソコンの場合、ペイントというソフトが標準搭載されていますが、
保存するときにこんな感じで画像のファイル形式が選べます。
代表的なものを説明していきます。
※画像形式 表の貼りつけ
音声データのファイル形式について説明していきます。
次に動画のファイル形式を確認していきます。
動画は多数の静止画を連続して表示するのでファイルサイズが大きくなります。このため,保存する際には圧縮することが多いです。
動画ファイルは、音声と動く画像から成り立っています。
今見てもらっているYouTubeも動く画像と音声が合わさっていますよね。
この動画と音声のデータそれぞれをコーディックと言います。
専門的な言い方をすれば、圧縮技術を含むデータの符号化や復号の技術をコーディックと言います。
動画のコーディックとして代表的なものはH.264やMPEG-4などがあります。
音声は先ほど説明したMP3,AACなどがあります。
そしてこの動画だけのファイルと音声だけのファイルを格納する箱のようなものをコンテナと言います。
一般的に動画ファイルと言われているもは、音と動画が合わさっているので、このコンテナを指し示します。
コンテナには今から説明するaviやmp4などがありますが、コンテナによって、音声と動画のコーディックの組み合わせパターンが決まっています。
もっと簡単に言えば、MP4という箱の中に、色んな規格の動画や画像や音声などが入れられるイメージです。
このコンテナについて代表的なファイル形式について説明していきます。
代表的な動画のファイル形式について説明していきます。
※動画ファイル形式貼りつけ
今話した圧縮形式は、試験で問われやすい部分なので、ファイルの種類とその特徴をしっかり押さえておいてください。
――
※復習問題