1 符号化の基本概念
符号化とは、文字、音声、画像、映像などの情報を、保存・伝送・処理に適した表現へ変換することである。多くの場合、符号化結果はビット列(あるいはシンボル列)として表され、元情報を再現するための規則(符号体系)と対になる復号手順により、受け手が元の意味や波形に近い形を得る。
符号化の設計では、単に「変換できること」だけでなく、実用上の制約が重要になる。具体的には、記憶媒体の容量や通信路の帯域に収めるための効率、処理の速度や許容される遅延、復元時の忠実性(どの程度元に近いか)、そして伝送中や記憶中に生じる誤りへの強さが検討対象となる。とくに近代のデジタル通信やデータ圧縮では、性能要件と計算量のバランスが結果を左右する。
1.1 符号化と復号の関係
符号化と復号は対を成す概念であり、符号化側は「表現方法」と「復元に必要な情報」を符号化規則に従って埋め込む。復号側は、同じ規則(または規則ファミリ)にもとづいて符号化結果を読み取り、元情報を推定または復元する。
忠実性の観点では、復号が完全に元へ戻る方式(可逆)と、多少の差を許容して再現する方式(不可逆)がある。不可逆では復号が元の正確な再現ではなく、統計的特性や知覚特性に沿った近似となることが多い。そのため、符号化段階の選択(分解能、モデル、量子化の強さなど)が最終的な品質に直結する。
1.2 符号化対象と表現形式
符号化対象は幅広いが、実装の都合上、表現形式は大きく「記号の並び」と「連続量を離散化した信号」に分かれて扱われることが多い。前者は文字列やラベルのような離散的な内容に向き、後者は音声や画像のように時間・空間に広がる信号を扱う際に用いられる。
変換の粒度(どこまでを単位として扱うか)も重要である。たとえば文字単位、音声のフレーム単位、画像のブロック単位など、対象の性質に合わせた分割は、符号化効率と復号の複雑さの両面に影響する。
1.2.1 文字情報の符号化
文字情報の符号化では、言語の文字集合をデジタル表現へ写し替える。代表的には符号点と呼ばれる番号体系を用い、各文字に一意の値を割り当てることで、送受信時の解釈を一致させる。
同じ文字でも、エンコーディング方式(例:符号点をどのようにビット列へ割り当てるか)によりビット列の形が異なるため、互換性確保が課題となる。加えて、可逆性を保つためには、正しい符号化規則とそのバージョン情報を運用側が管理する必要がある。データ圧縮を目的とする場合は、文字の出現頻度や文脈に基づく確率モデルを利用して、より短いビット列へ変換する設計が行われる。
1.2.2 音声・画像・映像の符号化
音声や画像、映像は連続的な物理量を含むため、まず時間・空間の座標に沿って離散化し、その後に数値として表現することが多い。音声ではサンプリングにより時間方向の情報を離散化し、画像では画素に相当する格子点として空間方向を離散化する。映像では両者が組み合わさり、時間方向のフレーム系列として扱われる。
さらに、符号化では人間の知覚特性や信号の冗長性を利用する場合が多い。たとえば、近接する画素間や連続フレーム間には相関が存在し、それを活用することで情報量を削減できる。不可逆方式では量子化により精度を落としつつ、視聴上の違和感が小さくなるように調整する。
1.3 符号化の目的(容量・速度・信頼性)
符号化の主目的は、データを効率よく扱える形にすることだが、具体的な評価軸は目的に応じて変わる。第一に容量効率であり、同じ内容をより少ないビット数で表すほど、保存や通信の負担が軽くなる。第二に速度であり、符号化・復号の計算量が限られた時間内に処理できる必要がある。リアルタイム性がある用途では遅延が直接の性能に結びつく。
第三に信頼性であり、通信路や記憶媒体で発生する誤りに耐えられることが求められる。これには、誤り訂正符号や検出符号の導入、あるいは誤りの影響を抑えるための符号化設計(冗長の入れ方、再同期の工夫など)が含まれる。結果として、同じ「短い符号」を目指しても、誤り条件や用途要件によって最適解は異なる。
2 符号化方式の種類
符号化方式は、変換の観点(連続量の扱い、予測の有無、圧縮の有無、表現の離散度など)で分類できる。実務では複数の考え方を組み合わせることも多く、単一分類だけで全体像を捉えるのは難しい。
分類の一つとして、量子化を含むかどうか、予測や変換を用いるかどうか、圧縮か非圧縮かに分ける方法がある。量子化を含む方式では不可逆になりやすいが、可逆の枠組みに拡張できる場合もある。一方、予測・変換型は冗長成分を減らし、圧縮効率を高める狙いがある。
2.1 量子化を含む符号化
量子化を含む符号化では、連続量(または高分解能の離散値)を有限の代表値へ丸める。丸め幅(量子化ステップ)が大きいほど表現の種類が減り、符号化に必要なビット数を抑えやすいが、誤差が増えて品質が低下する。逆に、ステップを小さくすると忠実性が上がるが、符号量は増える傾向がある。
量子化は単体でも機能するが、実用上はその前後で予測や変換が組み合わされることが多い。例えば、予測誤差をから量子化することで、誤差分布を狭くし効率を改善する設計がある。
2.1.1 均一量子化と非均一量子化
均一量子化は、代表値の間隔を一定にする方式である。実装が単純で、対象の信号が比較的均一な分布を持つ場合には効果的である。一方、非均一量子化は、値の領域ごとに刻み幅を変える。小さい値では細かく、大きい値では粗くするなど、信号の統計や人間の知覚に合わせて誤差の出方を制御する。
非均一方式は、適切な設計により同じ符号量で視覚や聴覚上の品質を高められることがある。ただし、刻み幅の設計や実装が複雑になりやすく、パラメータの選択が外れると期待した改善が得られない。
2.1.1.1 符号化効率と品質のトレードオフ
量子化の設計は、符号化効率(ビット数)と品質(再現誤差)のトレードオフに直結する。量子化を強くすると、復号時の誤差が増えてノイズやブロック歪み、スペクトルの荒れなどが顕在化しやすい。逆に量子化を弱くすると、必要なビット数が増えて帯域や保存容量の制約が厳しくなる。
この関係は、単一の指標だけで評価できない。品質は視覚・聴覚の特性に依存し、効率も符号化後の統計により変わる。したがって、用途ごとに目標品質と許容ビット量を対応づけ、量子化パラメータを調整することが設計の中心となる。
2.2 予測・変換に基づく符号化
予測・変換に基づく符号化では、信号の相関や構造を利用して、直接の表現ではなく「予測誤差」や「変換係数」を符号化する。予測は、直前や近傍のサンプルから次の値を推定し、差分を扱う考え方である。差分はしばしば小さくなり、必要な表現精度が抑えられる。
変換は、データを別の基底(例:周波数側の表現など)へ写し、エネルギーが少数の成分に集中する性質を利用する。集中が強いほど、重要でない成分を粗く扱っても影響が小さくなるため、結果として符号量の削減につながる。
予測と変換は単独でも使われるが、実際には組み合わせることで効率が改善する場合がある。予測誤差の統計特性と、変換後の係数分布の両方を見ながら設計する点が特徴である。
2.3 圧縮型と非圧縮型
非圧縮型は、情報をできるだけ損なわず、または冗長成分を削らずに表すことを目標とする。用途によっては復号の単純さや、品質劣化を避けることが優先される。圧縮型は、冗長性を取り除き同じ内容をより少ないビットで表すことを狙う。
圧縮は可逆と不可逆に分かれる。可逆圧縮は復号により完全に元へ戻れるが、圧縮率に上限があることが多い。不可逆圧縮は、品質劣化を許容してより高い圧縮率を得られる可能性がある。どの方式が適切かは、許容される誤差の種類と、用途の再現目的(保存、配信、編集など)によって決まる。
さらに、圧縮型でも誤り耐性やランダムアクセス性を考慮して設計されることがある。たとえば、誤りが入ったときの影響範囲や、特定時刻・特定領域への素早いアクセスのしやすさが異なるため、最適な圧縮設計は一様ではない。
3 誤り耐性と符号化設計
誤り耐性の設計は、符号化結果が通信路や媒体の条件を受けた後に、どれだけ正しく復元できるかを決める。誤りの発生は避けられないことが多く、設計者は誤りの種類、頻度、影響の大きさを見積もり、それに見合う冗長性を導入する。
誤り耐性は、符号化そのものの性質(冗長の入れ方、分割単位)と、誤り訂正・検出の仕組み(復元戦略)の組み合わせで成立する。結果として、同じ入力でも、符号化方式の違いにより誤りに対する頑健さが大きく変わる。
3.1 誤りの種類と影響
誤りの種類としては、ビット反転のようなランダムな誤りと、バースト状の連続誤りがある。ランダム誤りは単発で起こりやすく、局所的な情報の破損として現れることが多い。バースト誤りは時間的・空間的に連続し、復号同期の喪失や広範囲の崩れにつながる場合がある。
影響は符号化の構造にも依存する。例えば、復号が連鎖的に依存する設計では、1箇所の誤りが後続の推定を乱し、より長い期間にわたって品質が悪化することがある。逆に独立性が高い設計では、誤りの局所性が保たれやすい。
誤りの大きさ(ビット単位か、上位意味単位か)も考慮対象である。ある方式ではビット誤りが少なくても、復号後の表示では目立つ歪みとして現れることがあるため、物理層の指標と知覚上の品質を結びつける評価が重要になる。
3.2 誤り訂正符号の考え方
誤り訂正符号は、誤りが発生しても復号可能なように冗長情報を付加する仕組みである。基本的な考え方は、元データが属する集合の外に出た場合でも、復号規則によって「最も尤もらしい元」に近いものを推定する点にある。これにより、訂正の成功領域が設計される。
訂正能力は一般に、冗長度(付加するビット数)と、想定される誤り条件により決まる。冗長度を増やすほど訂正できる誤りの範囲は広がりやすいが、帯域や保存容量の要求も増える。そのため、目標の誤り率や遅延要件に合わせて、適切な方式を選ぶ必要がある。
また、訂正符号は符号化ブロックの単位に作用することが多い。ブロック長やインタリーブ(誤りの見かけの相関を弱める工夫)を調整することで、バースト誤りに対する実効的な訂正性能を改善できる場合がある。
3.3 誤り検出と再送(組み合わせ設計)
誤り検出は、復号結果が正しいかどうかを判定するための仕組みである。検出ができれば、誤りを含むパケットやブロックを信頼できないと判断し、上位で再送を行う運用が可能になる。再送は、通信路が双方向であることや、遅延許容があることなどの前提のもとで成立する。
組み合わせ設計では、訂正と検出・再送を適切に分担する。たとえば、誤り訂正で軽微な劣化はそのまま復元し、重度の誤りは検出して再送することで、帯域と待ち時間の両方を抑えられる。再送が許されない環境では訂正方式への依存が高まり、逆に訂正の計算量が抑えたい場合には検出と再送の比率が増える。
不可逆圧縮などでは、部分的な誤りが品質劣化として現れやすいため、復号エラーを検出して破棄し、次の正しい単位で回復する設計も採られる。どの程度の単位で成立を判断するかが、ユーザ体験に直接影響する。
4 符号化の実装と評価
符号化方式は、理論上の構成だけでなく、実装上の制約により性能が変動する。ハードウェア資源(計算能力、メモリ、並列度)やソフトウェア環境(実行時間、最適化余地)に応じて、アルゴリズムやパラメータが選ばれる。
また、符号化は「出力が小さいほど良い」と単純化できない。復号遅延、品質、誤り耐性、互換性、そして運用上の複雑さを総合して評価する必要がある。評価では、圧縮率、信号品質の指標、エンドツーエンドの遅延など複数の観点を同時に扱うことが多い。
4.1 ハードウェア・ソフトウェアでの実装
ハードウェア実装では、一定のデータ流に対して処理を安定に行える点が利点となる。パイプライン化や並列演算によりスループットを確保しやすいが、回路規模や消費電力の制約が設計に影響する。とくに復号が複雑な方式では、実装コストが上昇しやすい。
ソフトウェア実装では、柔軟なパラメータ調整やアルゴリズムの更新がしやすい。SIMD命令やGPUのような計算基盤を活用できる場合もある。ただし、実行環境差(CPU能力、メモリ帯域)によって性能が揺れる可能性があるため、現場ではベンチマークに基づく調整が行われる。
実装では、入出力の形式(バッファ構成、ビット操作の扱い)や、ライブラリの相互作用も性能に影響する。符号化・復号の境界で発生するオーバーヘッドは見落とされがちであるため、全体最適として評価することが求められる。
4.2 評価指標(圧縮率・遅延・品質)
圧縮率は、入力に対して出力がどれだけ小さくなったかを表す指標である。可逆圧縮では復号が完全に一致するため、主に冗長削減の度合いとして解釈される。不可逆では圧縮率だけで品質を判断できないため、別途の評価が必要になる。
遅延は、符号化から復号までに要する時間の指標である。リアルタイム用途ではこれが体感品質や運用可否に直結し、フレーム単位処理やバッファリング設計が結果を左右する。品質は、音声なら聴感に対応する尺度、画像や映像なら視覚指標など、用途に応じた測定法で評価される。
また、誤りがある環境では「誤り後の品質低下」も評価対象になる。単純な平均品質に加えて、再同期のしやすさや、重大な破綻が起きる頻度と範囲を観察することが重要である。
4.3 よくある設計上の落とし穴(オーバーヘッド、非互換など)
設計上の落とし穴としてまず、オーバーヘッドが挙げられる。符号化本体の理論的計算が軽くても、メタデータの付加、パケット境界処理、同期情報の扱いなどで全体の効率が悪化することがある。圧縮率や処理時間を別々に見積もるのではなく、システム全体で確認する必要がある。
次に非互換の問題がある。符号化規則やバージョン、パラメータの取り決めが受け手と符号化側で一致していないと、復号できない、または品質が大きく崩れる。特に可変パラメータ方式では、設定情報の伝達が欠落すると復元が不可能になる。
さらに、品質制御の過度な最適化も起こりうる。特定条件で良好でも、別の信号特性や誤り条件では破綻することがある。評価データの偏りや、実運用に近い誤りモデルの不足が原因となる場合があるため、幅広い条件で検証する姿勢が重要になる。