0

ここにバイナリ イメージがあり、ランレングス エンコーディングRLEを使用して圧縮する必要があります。通常の RLE アルゴリズムを使用し、最大カウントは 16 です。

ファイルサイズを縮小するのではなく、拡大しています。たとえば、5*5 行列の場合、10 個の値の繰り返し回数は 1 回であり、ファイルが大きくなります。

この不具合を回避するには?RLE をマトリックスに部分的に適用するより良い方法はありますか?

4

1 に答える 1

0

自分で使用する場合のみ、カスタム画像ファイル形式を作成できます。ヘッダーでは、RLEを使用するかどうか、XとYの座標範囲、および使用するビットプレーンをマークできます。ただし、RLEを使用する定義済みの画像ファイル形式(.pcx私の頭に浮かぶ)に従う画像ファイルを作成する場合は、ファイル形式の仕様に従う必要があります。私の記憶が正しければ、.pcxRLEを部分的に無効にするオプションはありませんでした。

RLEを使用する必要がなく、簡単に実装できる圧縮方法のみを探している場合は、圧縮を使用する前に、まず5x5バイナリマトリックスファイルに必要なバイト数を確認することをお勧めします。ファイルサイズが25バイト以上の場合は、要素ごとに少なくとも1バイト(8ビット)を使用して保存しています(または、マトリックスコンテンツではないデータが大量にある場合)。サイズを格納する必要がない場合、5x5バイナリマトリックスは25ビット(4バイトと1ビット)を使用するため、実際には5バイトになります。サイズが5バイトのファイルに一般的に役立つ圧縮方法はないと確信しています。異なるサイズの行列がある場合は、たとえばを使用できます。

たとえば、100x100のバイナリマトリックスは10000ビット、つまり1250バイトを取ります。16ビットサイズのフィールドの場合は2x2 = 4バイト、32ビットサイズのフィールドの場合は2 x 4=8バイトを追加します。この後、最適な圧縮方法を計画できます。

于 2012-05-15T11:25:11.857 に答える