web-dev-qa-db-ja.com

データ圧縮アルゴリズム

誰かがデータ圧縮アルゴリズムのリストを持っているかどうか疑問に思っていました。私は基本的にデータ圧縮について何も知らないので、異なるアルゴリズムについてもっと学び、どのアルゴリズムが最新のものであり、多くのASICでまだ開発されていないかを知りたいと思っていました。

データ圧縮を実装したいと思っていますASICこれは、入ってくるデータのタイプ(オーディオ、ビデオ、画像など)に依存しません)

私の質問が未解決である場合は、お知らせください。修正します。ありがとうございました

32
Veridian

そこにはたくさんの圧縮アルゴリズムがあります。ここで必要なのは、ロスレス圧縮アルゴリズムです。ロスレス圧縮アルゴリズムは、圧縮前に与えられたものを正確に達成するためにデータを圧縮解除できるようにデータを圧縮します。反対は、非可逆圧縮アルゴリズムです。非可逆圧縮は、ファイルからデータを削除できます。 PNG画像は可逆圧縮を使用しますが、JPEG画像は非可逆圧縮を使用できます。

最も広く知られている圧縮アルゴリズムには次のものがあります。

Zipアーカイブは、HuffmanコーディングとLZ77の組み合わせを使用して、高速の圧縮および解凍時間およびのかなり良い圧縮率を提供します。

LZ77はRLEのほぼ一般化された形式であり、多くの場合、より良い結果が得られます。

ハフマンは、最も繰り返されるバイトが最小のビット数を表すことを許可します。次のようなテキストファイルを想像してください。

aaaaaaaabbbbbcccdd

ハフマンの典型的な実装では、次のマップが作成されます。

Bits Character
   0         a
  10         b
 110         c
1110         d

したがって、ファイルは次のように圧縮されます。

00000000 10101010 10110110 11011101 11000000
                                       ^^^^^
                              Padding bits required

18バイトは5になります。もちろん、テーブルをファイルに含める必要があります。このアルゴリズムは、より多くのデータでよりよく機能します:P

Alex Allainには、Wikiで十分でない場合のハフマン圧縮アルゴリズムに関する Nice記事 があります。

詳細についてはお気軽にお問い合わせください。このトピックはかなり広いです。

38

いくつかのロスレスアルゴリズムを以下に示します(これらを使用して元のデータを完全に回復できます)。

  • ハフマンコード
  • LZ78(およびLZWバリエーション)
  • LZ77
  • 算術コーディング
  • セキトゥール
  • 部分一致による予測(ppm)

Pngやgifのようなよく知られているフォーマットの多くは、これらの変形または組み合わせを使用しています。

一方、損失の多いアルゴリズムもあります(データを圧縮する精度に妥協しますが、多くの場合、かなりうまく機能します)。最先端の非可逆技術は、とりわけ差分コーディング、量子化、DCTのアイデアを組み合わせています。

データ圧縮の詳細については、 https://www.elsevier.com/books/introduction-to-data-compression/sayood/978-0-12-809474-7 をお勧めします。非常にアクセスしやすい導入テキストです。オンラインのPDFにある第3版。

5
skim

私の論文 キャッシュおよびメインメモリシステムでのデータ圧縮のアーキテクチャアプローチの調査 (パーマリンク ここ )は、多くの圧縮アルゴリズムと、現代のプロセッサでそれらを使用するためのテクニックをレビューしています。研究グレードと商用グレードの両方の圧縮アルゴリズム/手法をレビューしているため、まだASICに実装されていないものを見つけることができます。

4
user984260

周りには非常に多くのデータ圧縮アルゴリズムがあります。百科事典的なものを探している場合は、Salomon et alのHandbook of Data Compressionをお勧めします。データ圧縮も同様です)。

私の推測では、ASICベースの圧縮は、通常、スタンドアロンの圧縮チップとしてではなく、特定のアプリケーション用に、またはSoCの特殊な要素として実装されます。また、「最新かつ最高の」圧縮形式を探すことがここへの道だとは思いません。特定の目的に対する標準化、成熟、適合性がより重要になると期待しています。

4
comingstorm

LZWまたはLempel Zivアルゴリズムは、優れたロスレスアルゴリズムです。ここに擬似コード: http://oldwww.rasip.fer.hr/research/compress/algorithms/fund/lz/lzw.html

0
schilippe