Tôi đang xem xét vấn đề giảm dung lượng lưu trữ khi lưu trữ nhiều ảnh JPEG với nhau thành một ảnh lớn hơn. Trực giác cơ bản là hình ảnh có xu hướng có một số điểm tương đồng (giống như những hình ảnh được chụp tại cùng một vị trí hoặc xung quanh cùng một thời điểm) và chúng ta có thể khai thác sự giống nhau này để tiết kiệm không gian?Nén ảnh JPEG
Dòng tổng thể là: Input JPG
Images -> Mỗi hình ảnh chuyển đổi thành RGB
gạch Image -> Tổ chức lại tương tự RGB
gạch với nhau -> Một lần nữa chuyển đổi sang định dạng JPG
. Đương nhiên, khi truy xuất hình ảnh, chúng tôi sẽ cần phải đảo ngược quy trình.
Sử dụng hệ số DC của thành phần Y làm thước đo tương tự để sắp xếp lại, tôi nhận được ~ 8% tiết kiệm không gian cho 10 hình ảnh. Khi tôi làm điều này cho 100 hình ảnh, các khoản tiết kiệm được giảm xuống còn ~ 3%.
Làm cách nào để nhận được khoản tiết kiệm sau khi sắp xếp lại gạch - tức là phần nào của quá trình mã hóa JPEG tận dụng lợi thế của việc tổ chức lại hình ảnh này?
Thay vì hệ số DC Y thành phần của, đang có một số số liệu khác mà bạn có thể nghĩ rằng sẽ được khai thác tốt hơn bằng cách mã hóa JPEG
Revised:
Có một số khác Định dạng hình ảnh bên cạnh JPG có thể khai thác loại tương tự này tốt hơn khi tổng hợp nhiều hình ảnh? Chẳng hạn như PNG chẳng hạn?
Cảm ơn, điều đó có ý nghĩa rất nhiều! Tôi sử dụng libjpeg để làm mã hóa và giải mã. Khi JPEG thực hiện DCT trong các macroblocks 8x8, sự tương đồng giữa các khối (lớn hơn các macroblocks) có lẽ không giúp được gì nhiều. Nhưng, tôi nghĩ rằng hệ số DCT của macroblocks lân cận được mã hóa tương đối, và điều này có thể được cải thiện bằng cách tổ chức lại gạch này ở một mức độ nào đó. Tôi đã sửa đổi câu hỏi của mình - hãy xem. – user655617
Vui vì tôi có thể giúp làm rõ mọi thứ. Có, libjpeg là tham chiếu JFIF của IJG về chuẩn JPEG. Tôi không nhớ các hệ số DCT sử dụng mã hóa delta (trong số các macroblocks lân cận). AFAIR, mỗi macroblock trở thành một ma trận 8x8 của các hệ số, sau đó được decimated (chia để giảm số bit cần thiết để lưu trữ chúng - và đây là nơi "mất" trong nén mất), và đọc ra trong zig - thời trang. Thứ tự này tạo ra các lần chạy dài 0, được nén hiệu quả thông qua mã hóa độ dài chạy (thay vì lưu trữ 17 số không, chúng tôi lưu trữ 17, 0). –