2017-02-02 16 views
1

3Dメッシュのテクスチャ座標を効率的に圧縮するアルゴリズムに取り組んでいます。私は良い圧縮率と最大の減圧を気にします 速度。予測デルタを効率的に圧縮する

今、私はメッシュの3D位置に基づくUV座標の予測子を持っています。 予測されたUV座標と実際のUV座標のエンコードの違いを欲しいです。これは、 がうまく動作し、小さな値が発生確率が最も高い整数値のベクトル(量子化デルタ)を持っているという結果です。

ここで、これらの積分値のある種のエントロピー符号化を実行したいと思います。 私はこの整数のベクトルをある一般的な圧縮 エンコーダ(私はZStdを試してみました)に供給すれば、効率的なエンコーディングをすることになると思いました。しかし、この はそうではないようです。量子化されたデルタを表す整数のベクトルを一般的な圧縮に供給するという考えは有効ですか?または、 はこのように動作しませんか?あなたはそのようなシーケンスを効率的に圧縮するために何を提案しますか?

ありがとうございました!

+0

どのような形式でデルタをエンコードしていますか? –

+1

私は2つのアプローチを試みました。最初のアプローチでは、私はstd :: vector をZStdコンプレッサに渡しました。第2のアプローチでは、「可変intエンコーディング」を使用して残余整数値をビットストリームに符号化し、得られたビットストリームを圧縮器に渡しました。いくつかのケースでは、最初のメソッドはより良い圧縮を得ましたが、場合によっては2番目のメソッドが勝ちました。 – born49

答えて

1

私は何をやろうとしています。可変長整数コーディングを使用して、デルタをバイトシーケンスにエンコードします。うまくいけば、あなたのデータは十分に滑らかで、あなたの予測子は、あなたのデルタの大部分が1バイトに収まるほど十分です。それから私はzstdやlz4のような標準のコンプレッサーにそれを供給して、速い減圧を得る。

「しかし、これは当てはまりません」とはどういう意味ですか?あなたはデルタでエンコードされた表現から全く圧縮を受けていませんか?

デルタのヒストグラムを作成して質問に記入すると、圧縮の可能性がわかります。

+1

ありがとうございました! 「しかし、これは当てはまりそうにない」と私は、ZStd圧縮器がデータサイズを入力データサイズの約75%に減らし、より良い結果を望んでいることを意味していました。真実は、元のデータのサイズを素早く縮小した変数intです。おそらく私は期待通りに現実的ではなかったかもしれません:) – born49

+0

パターンの期待はないと思うので、zlibのハフマンのみの圧縮を試みるかもしれませんデルタで。それは、ビットが偶然の文字列の一致から利益を得ることを無駄にするかもしれないので、少し良い圧縮を与えるかもしれません。 –

+0

zlibでフィルタリングされたモードまたはランレングスでエンコードされたモードは、予測子が長すぎて長時間実行されていないと効果的です。 –

1

zstdなどの圧縮プログラムを呼び出す前にトランスポーズを試すことができます。たとえば、TurboTranspose

関連する問題