Bu program, yüksek oranda yedekli 2 bayt dizileri (görüntü gibi) aktarmak için yuva kullanır. Transfer oranı nispeten yüksek (10 Mbps) iken, diziler de yüksek oranda yedeklidir (örneğin, her sıra birkaç sonuç olarak benzer değerler içerebilir). zlib ve lz4'ü denedim ve sonuçlar ümit vericiydi, ancak yine de daha iyi bir sıkıştırma yöntemi olduğunu düşünüyorum ve lütfen lz4'teki gibi nispeten hızlı olması gerektiğini unutmayın. Baska öneri? satırlardaki veriler böylece azaltan bir kaynak/dizin harita oluşturup benzer iseYüksek oranda yedekli veri için hangi sıkıştırma algoritması kullanılır
cevap
Eğer kendi yaratabilecek önemli boyut, bu
Orijinal dosya gibi bir şey:
satır 1: 1212, 34, 45,1212,45,34,56,45,56
satır 2: 34,45,1212,78,54,87, ....
Kullanımdan farklı bir değer listesi oluşturabilirsiniz. değiştirmede,
34,45,54,56,78,87,1212
satır 1: 6,0,2,6,1,0, .....
bu% 30 veya daha fazla veri transferi üzerinde kurtaracak potantialy, ancak veri
ne kadar gereksiz bağlıdırİşte GÜNCELLEME
basit uygulama çizgi ile başlar eğer başlamak eğer, "i" siz ", dizini tam tersini alabilirim sadece alıcı son anda
std::set<int> uniqueValues
DataTable my2dData; //assuming 2d vector implementation
std::string indexMap;
std::string fileCompressed = "";
int Find(int value){
for(int i = 0; i < uniqueValues.size; ++i){
if(uniqueValues[i] == value) return i;
}
return -1;
}
//create list of unique values
for(int i = 0; i < my2dData.size; ++i){
for(int j = 0; j < my2dData[i].size; ++j){
uniqueValues.insert(my2dData[i][j]);
}
}
//create indexes
for(int i = 0; i < my2dData.size; ++i){
std::string tmpRow = "";
for(int j = 0; j < my2dData[i].size; ++j){
if(tmpRow == ""){
tmpRow = Find(my2dData[i][j]);
}
else{
tmpRow += "," + Find(my2dData[i][j]);
}
}
tmpRow += "\n\r";
indexMap += tmpRow;
}
//create file to transfer
for(int k = 0; k < uniqueValues.size; ++k){
if(fileCompressed == ""){
fileCompressed = "i: " + uniqueValues[k];
}
else{
fileCompressed += "," + uniqueValues[k];
}
}
fileCompressed += "\n\r\d:" + indexMap;
d "alırsın Veriler
Teşekkürler Fabrizio. Ben aklımda benzer bir şey var, Ancak, böyle bir yöntemi uygulamaya başlamadan önce, yedek olarak (belirtilen özel model ile) veri için tasarlanmış standart bir sıkıştırma algoritması arıyorum. – beebee
Sanırım @Fabrizio haklı, ama sanırım zlib senin de sorununun kabul edilebilir bir çözümü. Yüksek performans ile yüksek karmaşıklık arasındaki denge noktasını bulmanız gerekir. – Netherwire
bahsettiğiniz kütüphane oldukça iyi bir iş çıkarır, ancak herhangi bir genel amaçlı kütüphane tüm durumlar için en iyi olmayabilecek "genel" olarak uygulandığından, size verdiğim örnek .obj 3d veri dosyaları tarafından kullanılır biçimlendirmek için uzun sürmemelidir ve güçlüdür http://en.wikipedia.org/wiki/Wavefront_.obj_file – Sherlock
Sıkıştırmadan önce PNG algorithms for filtering image data'a bakmalısınız. Önceki değerlere dayanan bir 2D dizisinde değerlerin tahmin edilmesi için daha karmaşık yöntemlere başvurmak kolaydır. Tahminlerin iyi olduğu ölçüde, filtreleme sonraki sıkıştırma adımında dramatik gelişmeler sağlayabilir.
Verilerinizde bu filtreleri denemeniz ve daha sonra lz4'e beslemeniz gerekir.
Teşekkürler Mark, konseptini aldım ve komşu piksellerin konseptinin çevredeki 1 piksel komşularından daha fazla uzatılabileceğini düşünüyorum ... Her yöne n piksel penceresine sahip olmayı düşünüyorum. o zaman belki de 3 ... – beebee
filtre tipini kullanın, ancak n-1'in makul zaman içinde n'yi bulduğunu ve 2-kenarları ile ne yapacağını bilmiyorum ... – beebee
Kenarlar için diziyi sanki sıfırlarla çevrili. –
"image-compression" etiketli mesaj verdiniz. Verileri bir görüntü akışı sıkıştırıyor mu? Eğer öyleyse ben ya Lossless Video/Image codec kullanın. – Aron
Veriler gerçek görüntüler değil, ancak resim gibi davranmak için gereken tüm gereksinimleri karşılıyorlar ve kayıpsız video kodeklerini inceledim, ancak veriler gerçek zamanlı olarak oluşturuluyor ve video kodekleri sıkıştırma aşamasında yavaş olma eğilimindedir. – beebee
[Bu makale] 'yi (https://www.usenix.org/legacy/event/fast11/tech/full_papers/Meyer.pdf) okumaya çalışın. – jxh