3つの手順は前提として押さえておく

アナログの音や画像をコンピュータで扱うには、一定の時点ごとに値を測り(標本化)、測った値を決められた段階へ当てはめ(量子化)、その結果を0と1の並びで表します(符号化)。 3つの語の定義と、それぞれで何が「飛び飛び」になるのかは、標本化・量子化・符号化の用語集ページにまとめてあります。まだあいまいなら先にそちらを読んでください。

このガイドは、その3手順を終えた後に必ず出てくる問いを扱います。 どれくらい細かく測れば足りるのか、細かくすると何が増えるのか、いったん失った情報は後から戻せるのか。 情報Iの「データの活用」では、データを集めるだけでなく、どのような処理を経て作られたデータなのかを確認する姿勢が求められます。 以降の内容は、可視化スタディで設定を変えながら実際に見比べられます。手順は最後の節にまとめました。

解像度・標本化周波数・ビット深度の関係

デジタル化の細かさは、横方向の細かさと縦方向の細かさを分けて考えると整理できます。 音の波形を時間の流れに沿って描いたとき、横方向をどれだけ細かく区切るかを表すのが標本化周波数です。 一定時間に測る回数が多いほど、短時間に起きる変化を追いやすくなります。一方、各時点の音の大きさを何段階に分けるかはビット深度で決まります。 横方向を細かくしても値の段階が粗ければ量子化によるずれが残り、段階だけを増やしても測定していない時点の変化は取り戻せません。 両者は別の原因による誤差を抑える設定です。

画像では、空間を縦横に区切った一つ一つが画素です。縦横の画素数が増えるほど、輪郭や細い模様を表しやすくなります。 これが画像の解像度に当たります。画素の集まりで表す画像はラスタ形式と呼ばれます。 ただし、画素数が多いことと、色の段階が多いことは同じではありません。一つの画素について何ビットで明るさや色を表すかがビット深度です。 低い解像度では輪郭が角張りやすく、低いビット深度では空や影のような連続した濃淡に帯状の境目が出やすくなります。

圧縮やファイル管理用の情報を除いた単純な例で考えます。縦百画素、横百画素のグレースケール画像は一万画素です。 一画素を二ビットで表すなら画素データは二万ビット、一画素を四ビットで表すなら四万ビットになります。 解像度を縦横とも二倍にすると画素数は四倍になるため、ビット深度を変えなくてもデータ量は四倍です。 カラー画像で赤・緑・青をそれぞれ八ビットにすると、一画素は合計二十四ビットになります。 音声でも、一定時間のデータ量は、一定時間に採る標本の数、一標本のビット深度、チャンネル数を掛け合わせて見積もれます。 品質を上げる設定は保存容量や転送時間と結び付くため、「最大にすればよい」ではなく、残したい特徴に合わせて選びます。

標本化定理は「速い変化を見落とさない」条件

標本化定理の中心は、記録したい信号の中で最も速く繰り返す変化よりも、十分に細かい間隔で測る必要があるという考え方です。 波の一周期の間に測定点がほとんどなければ、山と谷の位置を判断できません。点と点の間でどのように動いたのかは記録されないので、後から点を線で結んでも元の波を一意に決められないためです。 反対に、一周期の中に複数の測定点があれば、変化の向きや繰り返しを捉えやすくなります。

測る回数が足りないと、本来は速い波が遅い別の波のように記録されることがあります。これを折り返し雑音、またはエイリアシングといいます。 回転する車輪を一定間隔の画像で撮ったとき、止まって見えたり逆向きに回って見えたりする現象を思い浮かべると、考え方をつかみやすくなります。 記録された点だけを見ると、その見かけの動きも条件に合ってしまうため、元の速い動きとの区別ができません。

ここでの注意は、標本化周波数を上げても量子化の段階は増えないことです。また、いったん粗い間隔で標本化して失った変化は、保存後に点の数を増やす処理をしても本物の情報としては戻りません。 実際の変換では、記録対象より速すぎる成分を変換前に取り除き、必要な範囲に合わせて標本化する方法も使われます。 アナログとデジタルの違いは、単に連続か不連続かを暗記するだけでなく、「どの範囲を、どの細かさで残したか」という条件まで含めて読むことが重要です。

可逆圧縮と非可逆圧縮の違い

デジタル化によって得たビット列は、そのまま保存するほか、規則性を利用して短く表すこともできます。 可逆圧縮と非可逆圧縮の決定的な違いは、展開したときに元のビット列へ完全に戻るかどうかです。 可逆圧縮では、同じ値の連続を「値と回数」に置き換えたり、よく現れる記号に短い符号を割り当てたりします。 表し方を変えるだけなので、正しく展開すれば一ビットも変わりません。文章、表計算データ、プログラムなど、わずかな違いも別の情報になるデータにはこの性質が欠かせません。

非可逆圧縮は、見た目や聞こえ方への影響が比較的小さいと判断した情報を省き、元のビット列には完全には戻らない形で容量を減らします。 写真・音声・動画のようにデータ量が大きいメディアでは、用途に合う品質を保ちながら容量を小さくできる利点があります。 ただし、消した情報は展開しても復元されません。さらに同じデータを非可逆方式で繰り返し保存すると、そのたびに表現が変化する可能性があります。 編集を続ける元データは高い品質で保持し、配布用だけ容量を抑える、といった使い分けが考えられます。

「圧縮すれば必ず小さくなる」という理解も正確ではありません。可逆圧縮はデータ中の繰り返しや出現頻度の偏りを利用するため、規則性が少ない短いデータでは、回数や符号表を記録する分だけかえって大きくなる場合があります。 また、符号化と圧縮も同義ではありません。量子化した値を二進法のビット列へ対応付ければ符号化ですが、それだけで必ずデータ量が減るわけではありません。 目的が「機械で扱える形にすること」なのか「元に戻せる条件を保って短くすること」なのかを区別します。

文字コードも符号化の約束である

文字は音や画像とは出発点が少し違います。入力済みの文章は、通常、連続的に変化する波を標本化して作るのではなく、「あ」「A」「1」といった離散的な記号の並びとして扱います。 しかし、コンピュータ内部では文字の形そのものを保存するのではありません。どの文字にどの番号を対応させ、その番号をどのようなバイト列で記録するかという約束が必要です。 これが文字コードです。つまり、標本化と量子化を必要としない文字データにも、「意味のある対象を数値の列に対応させる」という符号化はあります。

文字コードでは、「文字の番号」と「保存時のバイト列」を分けて考えると混乱を減らせます。 Unicodeは多様な文字を共通の番号で扱うための体系で、UTF-8などはその番号を実際のバイト列として表す方式です。 保存した側と読み出す側が異なる方式として解釈すると、同じビット列が別の文字に対応し、文字化けが起きます。 一方、正しい文字として読み取れているのに画面が四角い記号になる場合は、表示に使う書体がその文字の形を持っていない可能性があります。これは文字コードの解釈違いとは別の問題です。

文字データにも圧縮を適用できますが、処理の層は別です。まず文字列を文字コードに従ってバイト列へ変換し、そのバイト列の規則性を使って圧縮します。 読み出すときは逆に、圧縮を展開して元のバイト列へ戻してから、文字コードに従って文字列へ解釈します。 順序や方式が一致しなければ正しく復元できません。「符号化」「圧縮」「表示」を一つの処理としてまとめず、それぞれの約束を確認することが、データ形式のトラブルを切り分ける手掛かりになります。

可視化スタディで確かめる手順

ここまでの違いは、数値を一度に全部変えるより、一つの条件だけを変えて結果を比べると確かめやすくなります。 可視化スタディを開き、トップページの「情報」から次の順に操作します。 各回で「変えた設定」「見た目の変化」「表示されたデータ量」の三つをメモすると、品質と容量の関係を混同しにくくなります。

A/D変換で時間方向と値方向を分ける

  1. 「A/D変換(標本化・量子化・符号化)」を選び、標本数を4、ビット数を2にします。
  2. 「次へ」を押して、アナログ、標本化、量子化、符号化、再構成の五段階を順番に表示します。標本化では緑の標本点、量子化では赤い量子化誤差、符号化では各点の二進数ラベルに注目します。
  3. 再構成まで進んだら、元の青い波形と階段状の橙色の波形を比べます。その後、標本数だけを32へ増やし、点の間隔とデータサイズ表示の変化を確認します。
  4. 標本数を固定したままビット数を2から8へ変え、量子化レベル、赤い誤差、各点のビット列の長さを見比べます。これで標本数とビット深度が別の方向の細かさだと確認できます。

画像のデジタル化で輪郭と階調を比べる

  1. トップへ戻って「画像のデジタル化」を選び、サンプル画像の「グラデーション」と「グレースケール」を選びます。
  2. 標本化を20×20に固定し、量子化を1ビットと4ビットで切り替えます。右側の画像で濃淡の段数を比べ、下に表示される符号化ビット列とデータ量も確認します。
  3. 次に量子化を2ビットに固定し、標本化を5×5から徐々に増やします。輪郭を比べたい場合は「文字」や「格子」も選べます。標本化数を増やすと画素が細かくなる一方、同じビット深度でもデータ量が増えることを確認します。
  4. 最後にカラーモードへ切り替えます。このデモのカラー量子化は赤・緑・青が各8ビットで固定されているため、グレースケールとの一画素当たりのビット数の違いを、表示された計算式で比較できます。

圧縮はデータの規則性で結果が変わる

  1. トップへ戻って「データ圧縮(RLE・ハフマン)」を開き、RLEで「AAAAAAAABB」を選びます。「進む」または「自動再生」で最後まで進め、連続部分が個数と文字の組へ変わる様子と圧縮率を確認します。
  2. 「ABCDEFGHIJ」に替えて同じ操作をし、繰り返しが少ないデータでは圧縮後の文字数がどうなるか比べます。方式とデータの相性によって、結果が小さくなるとは限らないことが分かります。
  3. ハフマン符号化へ切り替えて「AAABBC」を選びます。頻度表から木が作られ、符号表が完成するまで進めます。出現回数の多い文字に短いビット列が割り当てられることを、最後の符号化結果で確認します。

この圧縮デモで確認できるRLEとハフマン符号化は、元の並びを復元できる可逆圧縮の例です。非可逆圧縮で情報を省く過程を表示する機能ではないため、可逆と非可逆の違いを観察するときは、まず「完全に元へ戻すための規則を保っているか」という観点で結果を読みます。 操作後は、設定を増やしたときに見た目だけでなくデータ量も増えたか、失った情報を後から戻せるか、同じ設定でも入力の特徴によって圧縮結果が変わったかを言葉で説明できれば、三つの処理の関係を具体的に整理できています。