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

1.7.2 Алгоритм палитризации

Алгоритм палитризации — это преобразование полноцветного изображения в изображение с ограниченным числом цветов (палитрой) так, чтобы воспроизведение цвета было максимально близким к исходному. Задача оптимальной палитры формулируется так: дано изображение I и заданное число цветов K, найти палитру P из K цветов и отображение I → I', минимизирующее среднюю ошибку воспроизведения. Одним из популярных методов является медианный срез, который Pillow реализует как palette=Image.ADAPTIVE.

Ключевые этапы медианного среза: сначала весь цветовой куб RGB считается одним блоком. Затем блоки рекурсивно разбиваются: для каждого блока вычисляется диапазон по каждому каналу R, G и B (максимум минус минимум). Выбирается канал с наибольшим диапазоном, блок сортируется по этому каналу, находится медиана и блок делится на два подблока. Процесс повторяется до получения K блоков. Затем строится палитра: для каждого блока цвет задаётся как средний цвет всех пикселей в этом блоке. Формально, для блока i средний цвет Cᵢ равен арифметическому среднему всех пикселей в блоке.

Проблема палетризации состоит в том, что при уменьшении количества цветов с 16,7 миллионов до, например, 128 возникают резкие цветовые переходы, создающие эффект видимых полос и потери плавных градиентов.

Наиболее известный метод диффузии ошибок — алгоритм Флойда–Штайнберга, который реализуют в проектах через параметр dither=Image.FLOYDSTEINBERG. Математическая модель такова: для каждого пикселя с исходным цветом C_original выбирается ближайший цвет в палитре, затем вычисляется ошибка и распределяется между соседними пикселями по заданной матрице.

Физическая интерпретация базируется на том, что глаз человека усредняет цвет по небольшой области, поэтому расслоение цвета можно «скрыть» распределением квантованной ошибки на соседние пиксели, создавая иллюзию промежуточных цветов, которых в палитре нет.

1.7.3 Алгоритм классификации изображений

Классификация изображений на "фотографии" и "графику" выполняется в проекте через комбинацию статистических и текстурных признаков.

Статистический анализ цветового распределения — первый этап классификации основан на подсчете уникальных цветов в уменьшенной копии изображения (256×256 пикселей). Эвристическое правило, используемое в системе, определяет, что если изображение содержит менее 20 000 уникальных цветов, то оно с высокой вероятностью является графическим. Это предположение основано на наблюдении, что искусственно созданные изображения (скриншоты, схемы, интерфейсы) обычно используют ограниченную палитру, в то время как фотографии природных сцен содержат практически непрерывный спектр цветов.

Текстурный анализ через оператор Лапласиана — второй ключевой признак — средняя интенсивность градиентов, вычисляемая с помощью дискретного аналога оператора Лапласиана.

Математические основы оператора Лапласиана: в непрерывном случае оператор Лапласиана ∇²f представляет собой сумму вторых частных производных функции:

∇²f = ∂²f/∂x² + ∂²f/∂y²

В дискретной реализации для изображения I с координатами (x,y) используется аппроксимация:

L(x,y) = I(x+1,y) + I(x-1,y) + I(x,y+1) + I(x,y-1) - 4·I(x,y)

Физическая интерпретация: оператор Лапласиана является мерой "расхождения" интенсивности в точке. Высокие абсолютные значения L(x,y) указывают на наличие резких переходов яркости — краев и границ объектов. Для фотографий, содержащих сложные текстуры (листва, вода, облака), распределение градиентов оказывается более равномерным, что приводит к большему среднему значению |L(x,y)|.

Реализация в проекте: в библиотеке PIL фильтр FIND_EDGES реализует именно этот оператор. После его применения к уменьшенной копии изображения вычисляется среднее значение полученной карты градиентов. Эмпирически установленный порог в 40 единиц (при 8-битном представлении яркости от 0 до 255) позволяет эффективно разделять фотографии и графику.

Комбинированное решение: Окончательная классификация происходит по правилу:

IF (уникальные_цвета < 20000) AND (средняя_яркость_градиентов < 40)

THEN "графика"

ELSE "фото"

Такое комбинирование признаков повышает надежность классификации, компенсируя недостатки каждого метода в отдельности.