Втратно стискає подібні зображення?


10

Мені потрібно зменшити розмір моєї бібліотеки фотографій, тому я, природно, хочу їх стиснути. Багато з них не зовсім однакові, але все ще дуже схожі (наступні кадри тієї ж сцени). Чи існує якийсь алгоритм стиснення, який використовує цей факт для ефективного стиснення цих зображень? 7zip (LZMA) марний.

Відповіді:


11

Ви можете спробувати Paq 8 (fp8_v2.zip). Я просто спробував це сам на 1440 подібних зображеннях PNG, а потім знову на 111 подібних зображеннях JPG. Ось результати.

  • 1440 файлів PNG, 28 631 615 байт => 2 058 653 байт стиснуто
  • 111 файлів JPG, стисло 15,003,820 байт => 489,096 байт

Стиснення PNG-файлів зайняло близько 8 хвилин і 550 Мб пам'яті при використанні:

fp8_v2.exe -7 images *.png

Стиснення файлів JPG зайняло близько 5 хвилин та 125 Мб пам'яті при використанні:

fp8_v2.exe -5 images image12*.jpg

Дивіться також: тест на стиснення зображень без втрат jpg


97% стиснення для JPG здається нереальним. Цифри в тесті порівняння, на який ви посилаєтесь, говорять, що стиснення становить приблизно 20%
OneSolitaryNoob

@OneSolitaryNoob Ви забули, що JPEG схожі? 110/111 = 99,1% очікуваного стиснення. Тест порівняння, який він пов’язав, стосується стиснення одного JPEG.
Навін

@Navin це насправді малоймовірно. Навіть якщо вони виглядають майже однаково, більшість пікселів будуть дещо відрізнятися.
OneSolitaryNoob

@OneSolitaryNoob Так що? 1 секунду відео (30 кадрів) можна стиснути приблизно до того ж розміру, що й один кадр. Поки незначна різниця складає незначну частину даних, у вас все добре.
Навін

@Navin thats втрачає стиснення, багато деталей вже немає, але більшість людей не помітить. Paq * - стиснення без втрат
OneSolitaryNoob

1

Я б міг уявити, що трансформація норового колеса з арифметичним кодером буде ідеальною для цього, враховуючи досить велике вікно. Що станеться, якщо ви налаштуєте BZIP2 використовувати розмір блоку, рівний невеликому циклу фотографій? Це буде повільніше і займе більше пам’яті, але коефіцієнт стиснення повинен швидко зрости. А ви вже пробували LZMA з більшими розмірами блоків?


1

Ось просте рішення, яке не працює для фотографій, але може працювати, якщо у вас є кілька зображень з великими однаковими ділянками пікселя на піксель: збережіть зображення у розпакованому форматі, як BMP (не PNG чи GIF), а потім TAR їх та стискайте з гідним компресором, як XZ, наприклад, на Linux з чимось подібним

tar -c myDirectory | xz -9 >myDirectory.tar.xz

Замість TAR і XZ можна отримати 7-Zip з опцією "суцільний архів", щоб отримати приблизно таку ж продуктивність. Таким чином я міг стиснути 16 схожих скріншотів, на які було витрачено близько 900 КБ кожного, коли їх було збережено як окремі файли PNG, в архів 2 Мб. Перевага цього рішення полягає в тому, що він використовує загальні формати файлів, тому він працює без установки нового програмного забезпечення. (На жаль, старіші та ще більш поширені програми GZIP та BZIP2 не зробили для мене гарної роботи - можливо, тому що розмір блоку BZIP2 не може бути налаштований на більше 900 КБ.)


0

Не те, що я бачив. Напевно, найближчим моментом було б зняти кілька подібних JPEG-файлів та розмістити їх у фільмі MJPEG. Ви також можете використовувати APNG або анімовані GIF для подібних цілей.

Я не впевнений, наскільки добре це буде працювати, і це здається, що ви вже говорите про екранізації фільмів, тому перепаковування їх у файл фільму звучить ... контрпродуктивно.

Можливо, кращим способом, якщо у вас ще є кліпи, з яких з'явилися екрани, було б просто знайти інструмент командного рядка, який може витягнути точний кадр для вас, скопіювати цей унікальний ідентифікатор кудись у текстовий файл, і тоді ви завжди зможете легко повторно витягуйте кадр, коли вам це потрібно.


GIF не підходить для стиснення фотографій, а анімований GIF - ще менше. Навіть стискання фотографій до відео MJPEG не здається корисним для моїх очей, тому що відновити окремі зображення було б складно.
Мартін

Я не сказав, що це була гарна ідея ... :-) Кінцева ідея полягала в тому, щоб перетворити фотографії в анімований варіант їх оригінального формату.
afrazier
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.