Mengompresi banyak gambar besar yang serupa?

16

Saya berurusan dengan arsip besar gambar satelit Bumi, masing-masing diambil 15 menit terpisah dari area yang sama, oleh karena itu mereka sangat mirip satu sama lain. Dua yang berdekatan terlihat seperti ini: masukkan deskripsi gambar di sini

Algoritme video bekerja dengan sangat baik mengompresi banyak gambar serupa. Namun, gambar ini terlalu besar untuk video (10848x10848) dan menggunakan encoders video akan menghapus metadata gambar, jadi mengekstraknya dan mengembalikan metadata akan menjadi rumit bahkan jika saya mendapatkan encoder video untuk bekerja dengan gambar besar seperti itu.

Untuk melakukan beberapa tes, saya telah mengurangi 96 gambar sehari menjadi 1080x1080 piksel, total 40,1MB dan mencoba kompresi berbeda dengan hasil berikut:

  1. zip: 39,8 MB
  2. rar: 39,8 MB
  3. 7z: 39.6 MB
  4. tar.bz2: 39,7 MB
  5. zpaq v7.14: 38.3 MB
  6. fp8 v2: 32.5 MB
  7. paq8pxd v45: 30.9 MB

Tiga yang terakhir, seharusnya mengambil keuntungan yang jauh lebih baik dari konteks dan memang bekerja lebih baik daripada kompresi tradisional, tetapi rasio kompresi masih sangat buruk dibandingkan dengan video mp4 yang dapat membawanya hingga 15 MB atau bahkan kurang menjaga kualitas gambar.

Namun, tidak ada algoritma yang digunakan oleh utilitas kompresi yang tampaknya mengambil keuntungan dari kesamaan gambar seperti kompresi video. Bahkan, menggunakan packJPG , yang mengkompres setiap gambar secara terpisah, seluruh rangkaian turun ke 32,9 MB, cukup dekat dengan fp8 dan paq8pxd tetapi tanpa mengambil keuntungan sama sekali dari kesamaan antara gambar (karena setiap gambar dikompresi secara individual).

Dalam percobaan lain, saya menghitung di Matlab perbedaan dua gambar di atas, dan terlihat seperti ini:

masukkan deskripsi gambar di sini

Mengompresi kedua gambar asli (219.5 + 217.0 = 436.5 kB total) dengan fp8 membuatnya turun menjadi 350.0 kB (80%), tetapi mengompresi salah satu dari mereka dan gambar perbedaan (sebagai jpg dengan kualitas yang sama dan menggunakan 122.5 kB), hasilnya dalam file 270,8 kB (62%), jadi sekali lagi (seperti yang diungkapkan oleh perbandingan mp4 dan packJPG), fp8 tampaknya tidak mengambil banyak keuntungan dari kesamaan. Bahkan dikompres dengan rar, satu gambar plus perbedaannya lebih baik daripada fp8 pada gambar asli. Jika demikian, rar turun ke 333.6 kB (76%).

Saya kira harus ada solusi kompresi yang baik untuk masalah ini, karena saya dapat membayangkan banyak aplikasi. Selain kasus khusus saya, saya kira banyak fotografer profesional memiliki banyak foto yang sama karena pemotretan berurutan, atau gambar selang waktu, dll. Semua kasus yang akan mendapat manfaat dari kompresi seperti itu.

Juga, saya tidak memerlukan kompresi tanpa kehilangan, paling tidak untuk data gambar (metadata harus dipertahankan).

Jadi ... Apakah ada metode kompresi yang mengeksploitasi kesamaan antara gambar yang telah dikompres?

Dua gambar dari tes di atas dapat diunduh di sini , dan 96 gambar dari tes pertama di sini .

Camilo Rada
sumber
1
Umpan balik lebih banyak dari orang-orang yang menunda pertanyaan akan dihargai. Saya merasa pertanyaannya cukup umum dan dapat dijawab tanpa menunjuk ke produk tertentu, tetapi ke metode, algoritma atau teknik.
Camilo Rada
1
Galeri kacang (saya tidak memilih untuk menutup) tetapi Is there a compression utility that take advantage of the similarities between images better than zpaq and fp8?dan Is there a updated/maintained version of the fp8 utility?kemungkinan garis menyinggung. Bandingkan dengan misalnya Is there a compression *method, algorithm or technique* that take advantage of the similarities between images better than zpaq and fp8?Fokusnya bisa dibilang jauh berbeda. Meminta perangkat lunak mungkin berlebihan, karena perangkat lunak tertentu (jika berlaku) hampir pasti akan disebutkan dalam setiap jawaban yang diberikan.
Anaksunaman
1
Saya setuju. Dan selesai. Semoga berhasil. =)
Anaksunaman
2
"Terlalu besar untuk video"? Tidak yakin saya setuju dengan ini. Beberapa codec memiliki resolusi maks yang sangat tinggi atau tidak terbatas. Anda tidak mencoba membuat video yang dapat ditonton, cukup kompres beberapa gambar statis. Bisakah Anda menyandikan metadata sebagai subtitle atau data lainnya?
benshepherd
1
Untuk menambah daftar aplikasi, saya perlu ini untuk menyimpan frame asli dari proyek time lapse yang akan mendapatkan bagian tambahan di masa depan. Gambar JPG 10.000 x 4K saat ini membutuhkan ruang 25 GB, di mana MP4 yang terdiri darinya hanya membutuhkan 85 MB.
Akseli Palén

Jawaban:

5

Saya tidak tahu perangkat lunak tertentu yang melakukan ini, tetapi ada beberapa penelitian tentang masalah ini. Misalnya, lihat artikel Mengompresi Set Gambar Mirip oleh Samy Ait-Aoudia, Abdelhalim Gabis, Amina Naimi, dan Mengompresi set gambar yang serupa menggunakan model kompresi hybrid oleh Jiann-Der Lee, Shu-Yen Lee, Chem-Min Ma, Rui -Feng Wu.

Pada tingkat yang lebih praktis, Anda dapat memperluas teknik pengurangan Anda, misalnya dengan menulis skrip yang menggunakan ImageMagick untuk menghitung perbedaan antara gambar berurutan, menyimpan hasilnya sebagai jpeg (atau png terkompresi jika Anda menginginkannya lossless). Anda akan mendapatkan satu gambar dasar dan satu set gambar "delta" terkompresi yang seharusnya jauh lebih kecil. Untuk menghitung perbedaan menggunakan ImageMagick:

convert image2.png image1.png -compose MinusSrc -composite -depth 24 -define png:compression-filter=2 -define png:compression-level=9 -define png:compression-strategy=1 difference-2-1.png

Untuk menghitung ulang dengan menambahkan kembali:

convert image1.png difference-2-1.png -compose Plus -composite image2-reconstructed.png

(Anda dapat melakukan hal yang sama menggunakan jpg dan menghemat banyak ruang).

Marco Pantaleoni
sumber
Tampaknya ini tidak mengelola luapan. Saya memiliki beberapa gambar serupa dengan warna yang sangat berbeda, dan karenanya, saya memiliki beberapa artefak dalam gambar yang dihitung ulang, baik dengan menggunakan Minus / Plus atau Subtract / Add.
Adrien Clerc