コンピュータの基礎シリーズの圧縮アルゴリズム

ファイルストレージ

  圧縮アルゴリズムの話をする前に、知識保存されたファイルを普及させる必要があります。

  ファイルは、ディスクや他の記憶媒体に格納されたデータの形式です。プログラムファイルは、基本的なデータバイトに保存されています。B =バイトバイトファイル単位で格納されます。ファイルには、データのバイトの集まりです。データバイト1バイト(8ビット)はバイナリワードで表される256種は、0000 0000 --11,111,111であることを示します。データをテキストファイルに格納されている場合、ファイルはテキストファイルです。グラフィックた場合、そのファイルはイメージファイルです。いずれの場合においても、ファイル内のバイトの数は、連続格納されています。

 

定義された圧縮アルゴリズム

  ファイルが大きすぎる場合には、通常、ファイルが占有するスペースを削減するために、ファイル圧縮を使用します。圧縮ファイルになる圧縮アルゴリズムを使用している場合たとえば、コンピュータ上で撮影の写真にカメラを節約するために、ファイル圧縮形式はJPEGは、一般的です。

  圧縮アルゴリズム(圧縮アルゴリズム)は、二段階の圧縮及び減少(減圧)を含む、データ圧縮アルゴリズムを指します。ファイルのバイトアルゴリズムの元のファイルの属性を変更することなく、スペースや占有スペースを低減しています。

圧縮アルゴリズムが異なるタイプに、定義されています。

  • ロッシーとロスレス
    • 可逆圧縮:歪みのない正確に元のデータを復元し、圧縮されたデータから再構成することができます。そのような圧縮された実行可能ファイルと通常ファイルのようなデータの精度のために厳格な要件は、ディスクの圧縮はまた、圧縮されたマルチメディアデータに使用することができる場合、それを使用することができます。圧縮方式は比較的小さいです。差分コーディング、RLE、ハフマンLZW符号化、符号化、算術符号化。
    • 非可逆圧縮:ロッシー、完全かつ正確に元のデータを回復することができない、再構成されたデータは、元のデータの近似にすぎません。これは、以下の厳しいアプリケーション、圧縮されたマルチメディアデータ等のデータの精度のために使用することができます。圧縮方法は比較的大きいです。例えば予測符号化、音声符号化センス、フラクタル圧縮、ウェーブレット圧縮、JPEG / MPEG。
  • 対称性
    • 対称符号化方法:アルゴリズムと所要時間の複雑さを符号化及び復号化は、ほぼ、ほとんどの圧縮アルゴリズムは対称であるています。
    • 非対称の符号化:符号化は、ハフマン符号化、およびフラクタル符号化などの、容易に復号化することは一般に困難です。しかし、暗号化に使用される符号化方式は、対照的に、容易にエンコードされ、デコードは非常に困難です。
  • インターおよびイントラ:フレーム内符号化及びインター両方を使用するビデオ符号化する方法で
    • イントラ符号化:同一の静止画像は、JPEGのように符号化する、独立した画像内の符号化方法をいいます
    • インター符号化:符号化及び復号化するために隣接するフレームを参照する必要があり、時間とMPEG等の符号化時に圧縮されたフレーム間冗長性を考慮する
  • リアルタイム:いくつかのマルチメディアでのアプリケーションは、(例えば、デジタルビデオ録画や需要、ライブネットワーク、ビデオ電話、ビデオ会議での再生MP3 / RM / VCD / DVD、ビデオ/オーディオの分野など)、データのリアルタイム処理または伝送を必要とします、一般的にコーデック遅延≤50ミリ秒を必要としています。これは、単純な/迅速/効率的なアルゴリズム及び高速/複合CPU / DSPチップが必要
  • 分類処理:いくつかの圧縮アルゴリズムは、同時にそのようなJPEG2000、MPEG-2/4などの異なる解像度、異なる伝送速度、マルチメディアデータの異なる品質レベルを扱うことができます

 

いくつかの一般的に使用される圧縮アルゴリズムは理解して

RLEアルゴリズムメカニズム

  繰り返しの形で文書のデータ内容を圧縮する方法*は、RLE(ランレングス符号化、ランレングス符号化)アルゴリズムと呼ばれる表現しました。RLE圧縮アルゴリズムは、良い方法、頻繁に使用するファックス画像圧縮です。画像ファイルの性質のデータのバイトの集合体であるため、RLEアルゴリズムを用いて圧縮することができます

以下は一例でどのようなRLEアルゴリズムについて説明します。

  1.まずAAAAAABBCDDEEEEEF半角文字(実際には英語の文字が)ファイルにバイトとして格納され、そのファイルの大きさは17バイトですので、このファイル文字、半角17文字(テキストファイル)は、圧縮されています。

  2.長い彼らは17バイトを超えるファイルを小さくすることができますように、我々は、任意の圧縮アルゴリズムを使用することができます。

  3.最も明白な方法は、同じ文字、その文字*繰り返しウェイ圧縮の圧縮、重複排除を置くことです。したがって、上記のファイル圧縮の後に、次なるだろう

  4.として図から分かるように、AAAAAABBCDDEEEEEF  17文字が正常に圧縮され  A6B2C1D2E5F1  12文字、すなわち12/17 = 70%、70%圧縮の圧縮率が成功しました。

 

ハフマン符号化アルゴリズムとモールス

  前ハフマンのアルゴリズムを理解することで、あなたは文字の英数字を放棄する必要が認知データの1バイト(8)です。

  ハフマンアルゴリズムの基本的な考え方:テキストファイルには、一緒に文字の異なる種類の組み合わせである、と思われる異なる文字の数は同じではありません。たとえば、テキストファイルで、Aは100回程度、Qは、このような状況が一般的で、3回のみ使用され登場しました。ハフマンアルゴリズムにおける鍵嘘  データはない頻繁に使用されるデータ表現の8つのバイトよりも使用することができる未満の8ビットバイトの複数の発生によって表されますAとQのサイズを表すために8ビットである場合の原稿は、3 + 2 * 100いることを表すために2、Q 10ビットでAを仮定すると、824 = 100×8 + 3 * 8 * 10 = 230。しかし、最終的にはディスク・ストレージにファイルを保存するために8ビットのバイトであることに注意すること。

 

次は、モールスコード、次見モースの例には、符号化される長い点11(絶望)とみなす点短い(DI)、とみなすことができます。

  モールス符号化は、一般的に短いテキストエンコーディングによって表される文字の発生の最高周波数です。示すように、短ピットビットが1で表す場合、ビット長を示すこと、次いで点11であり、データ文字のE(DI)が1で表すことができる、C(カチカチ)9を使用することができます表現する110101101。ショートポイントの長さが1である場合、実際のコーディングモールスにおいて、間隔の長さは3点長短点1点です。ここでの長さは、音の長さを指します。

  上記の例AAAAAABBCDDEEEEEFの例は、ニーズコーディングマンにおけるモアレは、シンボル時間間隔で表される各文字の間に添加される、モールス符号化書き換えられます。00との区別をここに。したがって、AAAAAABBCDDEEEEEFこのテキストは、* 16 = 4×6 + 8 * 6 + B×2回+ C * 1 CI + D×2回+ E * 5倍+ F * 1つの、CI +文字間隔Aとなります*ビット2 + 9 + 6 * 1 * 2 * 5 + 1 + 1 + 8 * 16 * 2 = 14バイト= 106。従って14/17 = 82%の圧縮率を使用して、モールス信号効率性と目立た。

  モールス符号は、長さの各文字を表すテキスト毎日のエンコードされたデータ内の各文字の出現頻度に応じて決定されます。しかし、AAAAAABBCDDEEEEEFのためのコーディングシステムは、このテキストは、最も効率的ではありません。

 

ハフマンバイナリツリーアルゴリズム

  それぞれのターゲットファイル構造のためのハフマン圧縮アルゴリズム手段最良の符号化方式、符号化方式および圧縮のための基礎です。したがって、種類のコーディングのそれぞれのファイルが分割されたデータを(ハフマン符号化)がいくらになるでしょう。圧縮ハフマンアルゴリズムファイル、データを圧縮ハフマン符号化情報を記憶します。

  次に、AのAAAAAABBCDDEEEEEF - これらの文字のF、ビット数に応じて整理するためにこの原理を表すために、いくつかの文字として出現の高周波をコードしていました。出現頻度を降順のソート順序によれば、結果として、符号化方式も示されています。

 

文字 発生頻度 (スキーム)をコードします
A 6 0 1
E 5 1 1
B 2 10 2
D 2 11 2
C 1 100 3
F 1 101 3

  文字コード情報のデータビットの発生頻度を低減させると共にテーブル上の符号化方式は、徐々に連続的に増加し始め3 2、1から増加されます。しかし、このコーディングシステムに問題がある、私は100のコードの3は、それがE、A、A何を表現するために、1,0,0 3つのコードを使用することを意味することを知らないのですか?または10,0 B、A何で表すこと?それを表すために100またはC。

  而在哈夫曼算法中,通过借助哈夫曼树的构造编码体系,即使在不使用字符区分符号的情况下,也可以构建能够明确进行区分的编码体系。不过哈夫曼树的算法要比较复杂,下面是一个哈夫曼树的构造过程。

  自然界树的从根开始生叶的,而哈夫曼树则是叶生枝

  使用哈夫曼树之后,出现频率越高的数据所占用的位数越少,这也是哈夫曼树的核心思想。通过上图的步骤二可以看出,枝条连接数据时,是从出现频率较低的数据开始的。这就意味着出现频率低的数据到达根部的枝条也越多。而枝条越多则意味着编码的位数随之增加。

  用上图得到的数据表示 AAAAAABBCDDEEEEEF 为 000000000000 100100 110 101101 0101010101 111,40位 = 5 字节。压缩前的数据是 17 字节,压缩后的数据竟然达到了惊人的5 字节,也就是压缩比率 = 5 / 17 = 29% 如此高的压缩率,简直是太惊艳了。

  无论哪种类型的数据,都可以用哈夫曼树作为压缩算法

文件类型 压缩前 压缩后 压缩比率
文本文件 14862字节 4119字节 28%
图像文件 96062字节 9456字节 10%
EXE文件 24576字节 4652字节 19%

可逆压缩和非可逆压缩

  最后,来看一下图像文件的数据形式。图像文件的使用目的通常是把图像数据输出到显示器、打印机等设备上。常用的图像格式有 : BMP、JPEG、TIFF、GIF 格式等。

  • BMP :是使用 Windows 自带的画笔来做成的一种图像形式
  • JPEG:是数码相机等常用的一种图像数据形式
  • TIFF: 是一种通过在文件中包含"标签"就能够快速显示出数据性质的图像形式
  • GIF:是由美国开发的一种数据形式,要求色数不超过 256个

  图像文件可以使用前面介绍的 RLE 算法和哈夫曼算法,因为图像文件在多数情况下并不要求数据需要还原到和压缩之前一摸一样的状态,允许丢失一部分数据。能还原到压缩前状态的压缩称为可逆压缩,无法还原到压缩前状态的压缩称为非可逆压缩 。

  一般来说,JPEG格式的文件是非可逆压缩,因此还原后有部分图像信息比较模糊。GIF 是可逆压缩

 

 

参考:对不起,学会这些知识后我飘了

 

 

 

                      

おすすめ

転載: www.cnblogs.com/zhuminghui/p/12333883.html