Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные. Дагаев / Доклад к презентации.docx
Скачиваний:
1
Добавлен:
02.01.2026
Размер:
25.46 Кб
Скачать

Слайд 8

Реализация бота является ядром всей системы. Мы разработали адаптивный алгоритм сжатия, который начинается с классификации изображения на тип «фото» или «графика». Для фото применяется JPEG-сжатие с настраиваемым качеством и прогрессивной развёрткой, а для графики — палитровый PNG с дизерингом Флойда-Штайнберга. Также реализован контроль размера файла через бинарный поиск по параметру качества, что позволяет точно достигать заданного пользователем размера. Дополнительно бот поддерживает удаление метаданных (EXIF и ICC) для защиты приватности и сборку PDF из нескольких изображений.

Слайд 9

Классификация изображений — это важный этап, который определяет, какой алгоритм сжатия будет применён. Наш бот анализирует два ключевых признака: статистику цвета и текстурные характеристики. Сначала изображение уменьшается до размера 256x256 пикселей, и подсчитывается количество уникальных цветов. Если их меньше 20 000, это признак графики. Затем применяется фильтр обнаружения краёв на основе оператора Лапласиана, и вычисляется средняя яркость результата. Низкая резкость (менее 40) также указывает на графику. На основе этих данных бот выбирает оптимальный формат сжатия: JPEG для фото и PNG для графики.

Слайд 10

Алгоритм сжатия JPEG основан на особенностях человеческого зрения, которое менее чувствительно к цветовым изменениям и мелким деталям. Процесс сжатия включает несколько этапов: сначала изображение преобразуется из RGB в цветовое пространство YcbCr, где разделяется яркость (Y) и цветность (Cb, Cr). Затем применяется субдискретизация 4:2:0, которая уменьшает разрешение цветовых каналов вдвое, что значительно сокращает объём данных почти без видимой потери качества. Далее выполняется дискретное косинусное преобразование (ДКП), разбивающее изображение на блоки 8x8 и переводящее их в частотную область. На этапе квантования коэффициенты делятся на специальную таблицу, причём высокочастотные коэффициенты часто обнуляются, что и обеспечивает сжатие.

Слайд 11

В нашем проекте JPEG-сжатие реализовано с использованием библиотеки Pillow, которая инкапсулирует весь конвейер обработки в одном вызове метода img.save(). Ключевые параметры включают качество (от 1 до 95), прогрессивную загрузку для лучшего отображения в сети и субдискретизацию 4:2:0. Для точного контроля размера файла реализован алгоритм бинарного поиска: если пользователь задаёт целевой размер, бот итеративно подбирает параметр качества, чтобы результат не превышал указанное значение. Это обеспечивает гибкость и точность в управлении выходным файлом.

Слайд 12

Для графических изображений, таких как скриншоты, схемы или логотипы, мы используем сжатие без потерь в формате PNG. Однако полноцветный PNG может быть избыточным, если изображение содержит мало цветов. Поэтому мы применяем палитровый PNG (PNG-P), который использует палитру до 256 цветов, созданную с помощью алгоритма медианного среза. Каждый пиксель заменяется индексом в этой палитре, что значительно уменьшает объём данных. Для сохранения плавности переходов и избежания резких цветовых границ используется дизеринг Флойда-Штайнберга, который распределяет ошибку квантования между соседними пикселями, создавая иллюзию плавных градиентов.