Алгоритм наложения цветов - PullRequest
0 голосов
/ 17 сентября 2011

Я ищу алгоритм для наложения цвета поверх существующего изображения.Что-то похожее на следующее приложение (рисовальщик): http://itunes.apple.com/us/app/wall-painter/id396799182?mt=8

Мне нужна аналогичная функциональность, чтобы я мог рисовать стены на существующем рисунке и менять их на другой цвет.

Я могуработать в режиме yuv или rgb.

Ответы [ 3 ]

1 голос
/ 17 сентября 2011

Цветовые модели RGB и YUV не очень подходят для изменения цвета таким образом.Я думаю, что лучшая цветовая модель для этого - HLS.

Ссылка: Преобразование RGB в HLS и HLS в RGB

  • H (оттенок) изменитсябазовый цвет
  • L (яркость) изменит яркость
  • S (насыщенность) изменит количество цвета

Вы можете оценить влияние этих трехкомпоненты в приложении для редактирования фотографий, такие как Photoshop The GIMP.

1 голос
/ 17 сентября 2011

Чтобы успешно покрасить стены на картине, вам нужно сделать два шага:

  1. Найдите границу стены внутри изображения (выберите часть изображения, которая будет окрашена)

  2. Применить желаемый цвет к выбранной области

Первый шаг - сложная часть. Это похоже на то, что сделал бы инструмент волшебной палочки в Фотошопе. И действительно, поиск алгоритма волшебной палочки обнаруживает несколько хороших статей, таких как эта статья с кодом Objective-C.

Второй шаг намного проще и может быть достигнут с помощью CGContextSetBlendMode и CGContextDrawImage.

1 голос
/ 17 сентября 2011

Вы можете попробовать рисовать в графическом контексте с помощью kCGBlendModeColor. Из документации:

Использует значения яркости фона со значениями оттенка и насыщенности исходного изображения. Этот режим сохраняет уровни серого на изображении. Вы можете использовать этот режим для цветных монохромных изображений или для тонирования цветных изображений.

Экспериментирование с другими режимами наложения также может помочь. Подробности смотрите в документации (поиск "kCGBlendMode").

...