Создай программу для преобразования обычного изображения в «раскраску по номерам».
Основные требования и логика работы:
Загрузка изображения:
Пользователь должен иметь возможность загрузить изображение с компьютера (поддерживаемые форматы: PNG, JPG, JPEG, возможны другие).
После загрузки изображение должно отображаться в окне программы (превью).
Параметры (должны регулироваться слайдерами/полями ввода):
Количество цветов (N): Количество кластеров (доминирующих цветов) для квантования изображения. Задается от 2 до 64.
Максимальный размер сегмента (Max Segment Size): Критически важный параметр. Большие области одного цвета после кластеризации должны принудительно разбиваться на более мелкие геометрические сегменты (ячейки), если площадь непрерывной области превышает заданный порог (в пикселях).
Детализация границ (Blur/Edge): Слайдер для предварительной обработки (размытие/усиление контуров), чтобы влиять на то, насколько подробной будет сегментация.
Алгоритм обработки (этапы):
Предобработка: Размытие для уменьшения шума.
Квантование цветов: Использовать алгоритм для сокращения изображения до заданного количества цветов (N).
Сегментация областей: Найти связанные компоненты (connected components) на квантованном изображении. Это зоны, где пиксели одного цвета граничат друг с другом.
Разделение больших сегментов (ключевой момент):
Проверить каждый сегмент (связанную область) по площади.
Если площадь сегмента превышает Max Segment Size, необходимо разбить эту область на более мелкие части.
Метод разбиения: Использовать алгоритм с последующим слиянием мелких кусочков, но с условием, что все новые сегменты в пределах исходной области сохраняют одинаковый цвет (исходный цвет кластера). Проще говоря: одну большую заливку одного цвета разбить на несколько геометрически отдельных островков того же цвета.
Нумерация: Каждому уникальному сегменту (после разбиения больших областей) присвоить уникальный номер в соответствии с цветом. Номера должны быть расставлены примерно по центру масс каждого сегмента.
Результат (вывод):
Программа должна генерировать два изображения и отображать их рядом или в отдельных вкладках, а так же в итоге сохранять на компьютер
«Раскраска» (Line Art): Изображение с четкими черными границами между сегментами. Внутри каждого сегмента (области) должен быть написан его номер (белым или черным цветом, в зависимости от фона). Фон должен быть белым (или прозрачным).
«Референс / Ответ» (Colored Reference): Изображение, показывающее, как должен выглядеть итоговый результат, если раскрасить по номерам (т.е. сегментированное изображение с заливкой цветами, но без подписей номеров, либо с номерами, но полупрозрачными).
Интерактивность:
Все параметры (количество цветов, максимальный размер сегмента, размытие) должны быть связаны с кнопками или слайдерами.
При изменении любого параметра и нажатии кнопки «Обновить / Сгенерировать» картинки должны пересчитываться и обновляться в интерфейсе.
Опубликован 30.03.2026 в 09:46