2013-02-08 72 views
1

我在尋求如何更好地幫助壓縮工具獲得更好的無損壓縮的建議。幫助大型自定義數據文件壓縮的​​方法

我有許多包含來自各種傳感器的傳感器讀數的大文件(> 100meg)。來自各種傳感器的樣本具有不同的比特尺寸(16比特,24比特,32比特)和不同的頻率(70Hz至250Hz)。使用我知道的通用壓縮器(zip,gzip,bzip2),我可以獲得大約70%原始文件大小的壓縮文件。在我看來,如果我可以告訴壓縮工具這些字節是這種類型的樣本,那些字節是另一種樣本類型可能會有壓縮增益,但我沒有意識到任何事情會讓我這樣做。

+0

算法的zip家族是通用的,最適合用於檢測輸入中字節序列何時重複。在您的情況下,利用您對數據的先前知識的自定義壓縮算法可能會大幅超越此類通用算法。 – 2013-02-08 21:21:41

回答

1

第0步將編碼二進制數據。 (兩個字節中的16位,三個字節中的24位等)。我希望你已經這麼做了。

第1步將使用差異。從你的描述來看,我認爲連續的值不會有太大的變化。因此,差異會很小,並有許多領先的零位。試試看,然後是通用壓縮機。

第2步將使用變長整數編​​碼。每個字節的高位決定了每個整數的範圍。整數的第一個字節總是有一個高位爲零。同一個整數的所有後續字節都有一個高位。從每個字節的低7位中構建整數。 (我把第一個字節的最低有效位,但你也可以做到最重要的位順序。)這將在一個字節中編碼你的小差異。此外,這種編碼將處理樣本中的任意位數,這在您的應用中很方便。試試這個,然後是一個通用壓縮機。

步驟3可能是更好的預測器的波形更詳細的分析。步驟1僅使用最後一個值作爲預測值。您可以將之前的值的更復雜的函數作爲下一個值的預測值。這是否有助於高度依賴於您的數據。