Adakah yang tahu teknik kompresi gambar dengan karakteristik berikut:
- tanpa kerugian
- streaming - Saya ingin mengompres dengan cepat, piksel demi piksel.
- memori rendah - saya mampu buffer satu baris, tetapi idealnya bahkan tidak.
- tidak ada kamus dinamis
- Gambar "dunia nyata" saja, jadi kinerja pada "kasus jahat" seperti papan catur tidak penting
- Kompresi 2-3x (5x-10x akan lebih baik, tapi itu banyak yang saya tahu)
- dapat beroperasi pada 10-16 bit piksel (tergantung pada kamera saya)
Gambar saya akan ~ 1k piksel lebar, dengan tingkat piksel ~ 20Mpix / detik. Kedalaman piksel akan berkisar antara 10 dan 16 bit per piksel (tergantung pada pilihan kamera). Asumsikan lebar piksel sub-16-bit akan diwakili dalam kata 16-bit untuk saat ini, daripada perlu diekstraksi dari bit-stream berkelanjutan.
Mungkin beberapa bentuk delta + arithmetic coding?
image-processing
image-compression
Martin Thompson
sumber
sumber
Jawaban:
Anda dapat mempertimbangkan menggunakan Huffyuv: http://neuron2.net/www.math.berkeley.edu/benrg/huffyuv.html
Ini tidak lebih baik dari zip sederhana, tetapi masih sedikit dioptimalkan untuk gambar.
Kompresi terkait gambar apa pun berasal dari teknik seperti Vector quantization atau Transform coding. Untuk menggunakan transformasi seperti DCT / Wavelet namun membuatnya lossless Anda dapat memikirkan JPEG-LS atau JPEG2000 untuk kompresi. Hanya saja, itu tidak mengalir dalam pengertian Anda.
sumber
Ini terlihat seperti apa yang Anda masukkan ke dalam kamera digital untuk RAW tanpa kerugian.
1 / Periksa kode sumber dcraw untuk melihat apa yang sudah dilakukan berbagai produsen kamera. Misalnya Pentax menggunakan beberapa skema panjang int variabel (panjang N dikodekan dengan kode huffman, lalu N bit) untuk mengkodekan delta piksel, wrt piksel sebelumnya dengan warna yang sama di mosaik Bayer; dan ini secara rutin mencapai rasio 1: 1,5 hingga 1: 2.
File 2 / DNG juga dapat dikompresi. Periksa bagaimana hal itu dilakukan dari spesifikasi Adobe ... Tidak yakin apakah itu didasarkan pada prediksi + variabel int panjang encoding yang sama (yang streaming); atau jika menggunakan JPEG-LS yang lebih maju berdasarkan LOCO (dan yang sayangnya memerlukan beberapa lintasan data).
sumber
zlib memiliki mode kompresi ("HUFFMAN_ONLY") yang cepat dan tidak memerlukan banyak memori. Untuk foto tipikal menggunakan zlib dengan libpng, saya mendapatkan rasio kompresi sekitar 1: 2. Anda dapat mencobanya dengan ImageMagick, GraphicsMagick, atau pngcrush.
Semua contoh ini menggunakan filter "sub" PNG (1) yang efektif untuk foto. Untuk * Magick, "-quality 1" dan untuk pngcrush, "-m 12" berarti menggunakan filter "sub" dan kompresi "huffman_only".
sumber