Как можно применить цвета к изображению?

Как можно изменить цвет объекта на изображении в соответствии с запросом клиента, не сохраняя все возможные варианты цветов? Например, если у меня есть изображение желтого автобуса, и я хочу изменить его цвет на зеленый. Процесс должен быть пригодным для любых объектов, от автомобилей до напитков, и не должен требовать хранения нейтрального исходного файла, готового для перекрашивания. При этом, использование доминантного цвета не эффективно, так как, например, opencv перекрашивает только часть объекта, поскольку обычно присутствует множество оттенков одного цвета. Мне приходила в голову идея конвертировать все изображения в векторную графику, чтобы упростить процесс перекрашивания, но опять же, проблема с доминантными цветами все еще остается, поскольку может присутствовать множество оттенков. Все изображения имеют белый или очень светлый фон.
  • 30 ноября 2023 г. 18:45
Ответы на вопрос 2
Глубокое обучение, вероятно, лучший выбор для такого рода задач. Попытки использования простого замещения цветов с большой вероятностью не сработают, поскольку они игнорируют контекстуальную информацию. Используя методы глубокого обучения, можно обучить модель "понимать" структуру и контекст на изображении, с тем чтобы более точно определить, какие области требуют перекраски.

Одной из возможных моделей машинного обучения для этой задачи является генеративно-состязательная сеть (GAN), которую можно обучить на основе отдельных примеров каждого цвета (например, зеленый автобус, желтый автобус и т.д.), и затем использовать обучееную модель для перекрашивания изображения с заданным цветом.

Конкретные шаги могут быть следующими:
1. Сначала вам нужно обучить сеть на парах изображений, где есть исходное изображение и его перекрашенная версия (это может быть сложной задачей, если у вас нет пар изображений, но возможно есть некоторые обходные пути, но они могут требовать дополнительной работы);
2. Затем передайте изображение, которое нужно перекрасить, в ваши обученные GAN. Как результат, GAN перекрашивают изображение в требуемый цвет;
3. Внутри вашего GAN, вы скорее всего захотите использовать какую-то форму условного генерирования, чтобы убедиться, что вы перекрашиваете только в правильные области и в правильный цвет.

Приемлемость результатов в значительной степени зависит от качества обучающих данных и самих моделей. Это определенно более сложный подход, но он подходит для сложных задач, таких как перекраска изображений.
Когда я раньше написал программу и решил добавить функцию "смены скинов, как в Windows Media Player", чтобы была возможность изменять цвет с помощью слайдера, а не сохранять все скины как изображения, я использовал эту статью на Википедии. Вот простой алгоритм: 1) Сначала переводим цвет в формат HSV. 2) Затем смещаем H (оттенок) для получения нужного цвета. 3) После этого переводим цвет обратно в формат RGB.
Похожие вопросы