シンプル、ストリーミング、ロスレスの画像圧縮


8

次の特性を持つ画像圧縮技術を知っていますか?

  • 無損失の
  • ストリーミング-オンザフライでピクセル単位で圧縮したい。
  • メモリ不足のオーバーヘッド-単一の行をバッファリングする余裕がありますが、理想的にはそれもできません。
  • 動的辞書なし
  • 「実世界」の画像のみなので、チェッカーボードのような「厄介なケース」でのパフォーマンスは重要ではありません
  • 2-3x圧縮(5x-10xはさらに良いでしょうが、それは私が知っている多くを求めています)
  • 10-16ビットピクセルで動作できます(カメラによって異なります)

私の画像は、幅が〜1kピクセル、ピクセルレートが〜20Mpix /秒になります。ピクセル深度は、1ピクセルあたり10〜16ビットです(カメラの選択によって異なります)。サブ16ビットピクセル幅は、連続ビットストリームから抽出する必要はなく、現時点では16ビットワード内で表されると想定します。

何らかの形のデルタ+算術コーディング?


10〜16ビットのピクセルは、たとえば16ビットと常にパディングされていますか、それともパックされていますか?
ポールR

1
画像固有の要件はそれほど多くないようです。明白に聞こえるリスクがありますが、zlib、LZMAなどの標準のストリーミングデータ圧縮アルゴリズムを試すことを検討しましたか?
Jason R

@PaulR-質問が更新されました-ピクセルが埋め込まれます。
Martin Thompson

@JasonR:「標準」の手法について少し調査しましたが、私の(おそらく不正確な)印象は、あまりにも動的で、かなりメモリを消費しているようです(「1Kでもそれを伸ばす」という基準に比べて):
マーティントンプソン

1
下記のhuffyuvは、独自の「デルタ+算術」の提案と非常に似ています。明らかにそれはエントロピーコーディング部分に算術コーディングの代わりにハフマンを使用します。8ビット/ピクセルでは、通常、2倍をわずかに超える圧縮に達し、ラインバッファーは1つだけです。
ホワイト氏、

回答:


4

Huffyuvの使用を検討できます。http//neuron2.net/www.math.berkeley.edu/benrg/huffyuv.html

これは単純なzipよりも優れているわけではありませんが、画像用にわずかに最適化されています。

画像に関連する圧縮はすべて、ベクトル量子化や変換コーディングなどの手法に由来します。DCT /ウェーブレットなどの変換を利用しながら、それをロスレスにするためには、圧縮用のJPEG-LSまたはJPEG2000を考えることができます。唯一のことは、あなたの定義の意味ではストリーミングではありません。


1
Huffyuvはラインバッファーを1つだけ必要とするため、空間非相関化手法(中央値予測子)は単純です。より高い圧縮率の場合、優れた空間予測が重要です。必要なラインバッファの量が大幅に増えることを期待してください。たとえば、DCT /ウェーブレットでは、ハフィユーフより優れた結果を得るには、少なくとも4〜8行が必要です
Mr. White

2

これは、ロスレスRAWのためにデジタルカメラに挿入するものに似ています。

1 / dcrawのソースコードをチェックして、さまざまなカメラメーカーがすでに何をしているかを確認します。たとえば、Pentaxは可変長のintスキーム(ハフマンコードでコード化された長さN、次にNビット)を使用して、バイエルモザイク内の同じ色の前のピクセルとピクセルのデルタをコード化します。そして、これは日常的に1:1.5から1:2の比率を達成します。

2 / DNGファイルも圧縮できます。アドビの仕様からどのように行われるかを確認してください...同様の予測と可変長のintエンコーディング(ストリーミング)に基づいているかどうかはわかりません。または、LOCOに基づくより高度なJPEG-LSを使用している場合(残念ながら、データに複数のパスが必要です)。


1

zlibには、高速で大量のメモリを必要としない圧縮モード( "HUFFMAN_ONLY")があります。libpngでzlibを使用する一般的な写真では、約1:2の圧縮率になります。ImageMagick、GraphicsMagick、またはpngcrushで試してみることができます。

convert input.ppm -quality 1 output_im.png
gm convert input.ppm -quality 1 output_gm.png
pngcrush -force -m 12 input.png output_pc.png

これらの例はすべて、写真に効果的なPNGの「サブ」フィルター(1)を使用しています。* Magickの場合、「-quality 1」とpngcrushの場合、「-m 12」は「sub」フィルターと「huffman_only」圧縮を使用することを意味します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.