При этом желательно, чтобы
градиент остался, и
контрастность тоже не изменилась. То есть всё то же самое, только однотонные цвета и градиент (там, где он есть), а на границах обычный (не резкий) переход в 1 пиксель. На данной картинке это белый, черный, коричневый, и градиент из синего в оранжевый, плюс полутона в 1 пиксель на границах между цветами.
Может быть, уже есть готовые решения, - фильтры, которые такое умеют? Если нет, то какой
алгоритм лучше применить для создания своего собственного фильтра? Или комбинацию алгоритмов?