Как заменить цвет изображения? - PullRequest
7 голосов
/ 10 марта 2011

Я хочу заменить цвет изображения. Например, поверните все синие цвета на красный без каких-либо искажений формы. Когда я пытаюсь это сделать, я могу менять цвета, перебирая каждый пиксель, однако форма области перестановки превращается в плоскую форму.

пример1 ввода: http://www.tutorialwiz.com/tutorials/changing_color/images/original.jpg
пример example1: http://www.tutorialwiz.com/tutorials/changing_color/images/3.jpg

example2: входной вывод вместе: http://www.digital -photography-school.com / wp-content / uploads / 2009/07 / before-after.jpg

Ответы [ 3 ]

7 голосов
/ 10 марта 2011

Обычный способ сделать это - использовать RGBImageFilter . См. Документы для FilteredImageSource , чтобы узнать, как использовать такой фильтр.

1 голос
/ 04 ноября 2012

Проблема с вопросом, который вы задаете, состоит в том, что строгая замена цвета изменит форму изображения.Что вам нужно сделать, это получить немного информации о том, что форма.Т.е. найти границы и затенение вдоль границ.Я предлагаю вам следующее:

  1. Использовать обнаружение краев для выделения сгустков
  2. Найдите сгусток, который соответствует вашим требованиям: т. Е. Имеет допустимую вероятность для [color] ish.
  3. Определение примененных блобов и фильтров
  4. Перекрасьте блоб и измените его цвет.

ИМО: Это единственный способ получить искомый результат.

Некоторые примечания: для поиска большого двоичного объекта может потребоваться некоторое тестирование, чтобы определить, насколькоТерпимость у вас есть для BLOB-объектов и форм.[Связанные регионы].

Еще одна вещь: затенение и относительная окраска потребуют от вас умения придумывать нужный вам цвет.

0 голосов
/ 15 декабря 2011

Я не до конца понимаю вопрос.Но из приведенного примера я вижу, что процесс превращения синего в красный был неудачным.вместо того, чтобы стать красным, он становится серым.означает ли серый цвет то, что вы подразумеваете под плоским?

Если это так, то это похоже на ошибку цветового канала.чтобы изменить синий на красный, мы должны изменить (0,255,0) на (255,0,0).

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

...