私は現在、非常に単純な画像をさらに圧縮しようとしています。画像は2セットの色と1ピクセルの "ピクセル"を使用します。色の各セットは16のオプションのうちの1つであってもよい。このため、私は既に、両方の色を両方とも表す1ピクセルあたり1バイトにまとめました。私は既にRLEを支援するためにMTFとBWTエンコーディングメソッドを実装しました。私はそれよりいくつかの圧縮を得ることができますが、私はどのアルゴリズムを使用するかわからない肯定的です。私はハフマンを試しましたが、画像がすでに小さい傾向があり、エントロピーの欠如のためにRLEがほとんど圧縮しているため、ハーフマンはファイルのデコードテーブルを追加することによってサイズを増やします。これは遅いシステムでも実行されるので、本当に重いアルゴリズムも動作しないことに注意してください。低エントロピー画像のための良い圧縮アルゴリズム
答えて
まず、背景と文字のカラー画像を別々に圧縮する必要があるようです。次に、「色があまりにも頻繁にピクセルからピクセルに変わることはありません」と言います。いくつかの色は他の色よりも「近い」色ですか?すなわち、色xから色が変化するとき、残りの色の小さな部分集合に変化する可能性がより高いか?そうであれば、変更する可能性の高いものに近い色にマップし、コーディングする前に差をとることができます。その後、同じ色のランが0のランとなり、「次の」色への変化が1になります。
実行回数が多く、バイト値の発生確率が歪んだ一連のバイトとして適切な表現ができたら、たとえば、次のようになります。 zlibとgzipを適用して、明らかな冗長性とスキューを利用してください。
両方の色を別々に圧縮する理由を説明できますか?限り、私はそれらを一緒に組み合わせることができます私は主要なアルゴリズムを試みる前に少なくとも50%の圧縮率を約束します – HDeffo
私は画像を見ていないが、説明 "背景"と "文字"から、彼らは相関しないと思う。それらが相関していない場合、圧縮は混合されたものとは別により効果的になります。バイトへのパッキングに関しては、それがzlibのためのものです。 0..15の値だけを含むバイトシーケンスは、zlibによってバイトあたり約4ビットに圧縮されます。 –
それは無相関ではありません。 「文字」は、各ピクセルに「背景」を重ね合わせます。それぞれ16文字の1文字にすることができるためです。これは最大で15ビットまたは1111ビットであるため、最大11111111バイトまたは1バイトであることができます。これらは両方とも一緒に変化する傾向があるので、現在のRLEメソッドを少しでも節約できます。残念ながらzlibの場合は、現在の圧縮方法が実装されていないプラットフォームでこれをやっているので、私はすべてを実装したり再実装しなければなりません。 – HDeffo
- 1. 2色画像圧縮アルゴリズム
- 2. データ圧縮のためのエントロピーの計算
- 3. データ圧縮と画像圧縮の差
- 4. LZ4:圧縮画像フォーマットの圧縮
- 5. 画像圧縮アルゴリズム - 画像を四角で色で区切る
- 6. JPEG画像圧縮
- 7. VB.NET - 画像圧縮
- 8. ウェブサイトの画像圧縮
- 9. 圧縮カメラの画像アップロード
- 10. ビットストリームの圧縮アルゴリズム
- 11. PHPの圧縮アルゴリズム
- 12. ビットマップイメージの圧縮アルゴリズム
- 13. カスタム画像形式:圧縮アルゴリズムをターゲットにする方法
- 14. 画像圧縮アルゴリズムに関する混乱
- 15. PHPで画像を圧縮
- 16. 画像をアンドロイドで圧縮
- 17. 並列圧縮アルゴリズム
- 18. PCAを使用した画像圧縮
- 19. アップロードした画像をマゼンタで圧縮
- 20. SVDを使用した画像圧縮
- 21. 数値の圧縮アルゴリズム
- 22. LZ1圧縮アルゴリズムの実装
- 23. JAVAのESRIジオメトリ圧縮アルゴリズム
- 24. Mapbox新しいAPIと画像圧縮
- 25. Memcache圧縮 - 良い/悪い?
- 26. Maximo Anywhere 7.5.2画像圧縮の問題
- 27. Jpeg2000画像圧縮でのビットレート計算
- 28. 画像の圧縮率を取得
- 29. Facebookの画像圧縮iOS SDK
- 30. 最高の画像圧縮C#
カスタムメイドの圧縮アルゴリズムを使用していますか?非常にユースケース固有の問題のようです。 – apokryfos
これはオプションである可能性がありますが、実際にはこのためのカスタムアルゴリズムを実際に作成する専門知識はありません。 – HDeffo
私は "2セットの色を使用する"とは理解していません - それぞれのピクセルが2つの色を持っていることを意味しますか?または、各ピクセルは、セット#1またはセット#2(合計で32個の可能性がある)のいずれかである単一の色を有するか?後者の場合、1バイトの代わりに5ビットしか必要ありません。 –