Анализ цветовой палитры изображения на основе HSB-модели и алгоритма кластеризации K-Means.
| Технология | Назначение |
|---|---|
| Krita Python API | Доступ к документу, слоям и пиксельным данным активного слоя |
| PyQt5 | Построение пользовательского интерфейса (виджеты, сигналы, отрисовка) |
| Python 3 (стандартная библиотека) | hashlib, struct, random — вспомогательные вычисления без внешних зависимостей |
- K-Means кластеризация — группировка пикселей в
kцветовых кластеров для извлечения доминантных цветов палитры. - K-Means++ инициализация — выбор начальных центроидов с вероятностью, пропорциональной квадрату расстояния до ближайшего уже выбранного центра. Обеспечивает более быструю сходимость и стабильный результат по сравнению со случайной инициализацией.
- Конвертация RGB ↔ HSB — перевод цветов между моделями для отображения на квадрате Saturation × Brightness.
- Кэширование по SHA-256 — повторный анализ того же слоя с тем же числом цветов возвращает результат мгновенно.
- Debounce-опрос (polling + single-shot timer) — плагин каждые 800 мс проверяет, сменился ли активный слой, и запускает анализ с задержкой 300 мс, чтобы избежать лишних пересчётов при быстром переключении слоёв.
-
Откройте папку ресурсов Krita. Путь по умолчанию:
- Windows:
%APPDATA%\krita\pykrita\ - Linux:
~/.local/share/krita/pykrita/ - macOS:
~/Library/Application Support/krita/pykrita/
- Windows:
-
Скопируйте в неё 2 элемента:
krita_palette_analyzer ← это основная папка со скриптом krita_palette_analyzer.desktop ← файл регистрации -
Запустите Krita → Настройка → Настройка Krita → Управление модулямии Python.
-
Найдите Palette Analyzer в списке и активируйте его (поставьте галочку).
-
Перезапустите Krita.
-
Откройте плагин: Сервис → Palette Analyzer.
Основная вкладка для просмотра извлечённой цветовой палитры.
-
HSB-квадрат — градиентное поле Saturation (ось X, слева направо) × Brightness (ось Y, снизу вверх). Оттенок (Hue) соответствует выбранному цвету. На квадрате отмечена точка, показывающая положение текущего цвета в пространстве S–B.
-
Полоса свотчей (цветовых образцов) — ряд цветных прямоугольников, каждый из которых представляет один кластер палитры. Под каждым свотчем указан процент пикселей, принадлежащих данному кластеру. Свотчи автоматически переносятся на новую строку, если не помещаются по ширине.
- Клик по свотчу — выделяет его белой рамкой и перестраивает HSB-квадрат под оттенок (Hue) выбранного цвета, перемещая точку в соответствующую позицию S–B.
- Tooltip при наведении на свотч — всплывающая подсказка с точными значениями RGB и HSB.
Вкладка для оценки того, как цвета палитры распределяются по зонам психологического восприятия.
-
HSB-квадрат со всеми цветами палитры одновременно — на одном поле нанесены точки всех извлечённых цветов. Hue берётся от первого (доминантного) цвета палитры.
-
Оверлей зон восприятия (включается в настройках) — полупрозрачные цветные области поверх градиента, каждая из которых соответствует определённой психологической характеристике цвета:
Зона Диапазон S Диапазон B Описание Мёртвая зона 0–100 % 0–15 % Почти чёрный — глаз едва различает Насыщенный тёмный 50–100 % 15–55 % Тёмные насыщенные цвета Грязные цвета 10–50 % 25–65 % Воспринимаются тяжело Пастель 0–45 % 70–100 % Лёгкие и нежные цвета Золотая область 40–75 % 55–92 % Яркие, приятные — не утомляют Vibrant 75–100 % 70–100 % Максимальная яркость — привлекают, но утомляют -
Подписи зон — названия отображаются прямо на квадрате в центре каждой области.
- Tooltip при наведении — при движении курсора по квадрату всплывает подсказка с названием и описанием зоны, в которой находится указатель.
Управление параметрами анализа и отображения.
- Спинбокс + слайдер — синхронизированные элементы для выбора числа кластеров K-Means в диапазоне от 2 до 32 (по умолчанию 8). Изменение значения сбрасывает кэш и запускает повторный анализ активного слоя.
-
Чекбокс «Области психологии цвета» — включает/выключает отображение зон восприятия на HSB-квадрате во вкладке «Восприятие». По умолчанию включён.
-
Легенда зон — список всех шести зон с цветным индикатором, названием и кратким описанием для быстрой справки без переключения вкладок.