← перейти на главную

Оптимизация графических файлов (JPEG) на основе PSNR

В одном из видео докладчик предложил идею, как автоматически сжимать jpeg файлы с возможностью программно оценивать результат. Для этого в качестве метрики предложил PSNR (Peak-Signal-to-Noise-Ratio).

В результате я написал небольшой bash скрипт. Он ищет в текущей директории все jpg файлы и начиная с самого низкого качества (например, 60) сохраняет их во временную папку, для полученных изображений вычисляем PSNR, который сравниваем с пороговым значением (взял 39, тогда у сжатой получается немного артефактов). Если вычисленное значение больше порогового, а размер файла меньше оригинального - копируем файл в текущую директорию (заменяем исходник).

Результаты работы

Взял картинки из результатов поиска и пропустил через скрипт

Quality: 85 Result: filesize 80871 => 58887

Quality: 69 Result: filesize 62633 => 28827

Quality: 86 Result: filesize 37174 => 34110

Теги