Войти
АртФорумОбщее

Утилиты для смены палитры изображения

#0
(Правка: 21:27) 21:19, 2 мая 2021

Всем привет.
Подскажите пожалуйста, есть ли какие-то утилиты для "перерисовки" исходной картинки в нужной палитре цветов? (Ну или может в каком-то софте как одна из функций есть такое)
Проблема:
Есть исходная картинка в стиле пиксель арт. Есть отдельная картинка с палитрой цветов. Кол-во используемых цветов в исходной картинке и в палитре может различаться. Необходимо перекрасить исходную картинку, используя только цвета палитры.
Дополнительно:
Изначально для этих целей на коленке сделал утилиту:
- Каждый пиксель исходной картинки сравнивается с цветами палитры, выбирается самый "близкий" цвет из палитры, он и попадает в результирующую картинку
- "Близость" цветов определяется просто как сумма разниц каналов r, g и b
В целом результат удовлетворительный, но сразу всплывает такая проблема:
Если, к примеру, в исходной картинке есть два оттенка зеленого, и в палитре есть два оттенка зеленого, но оба цвета палитры ярче исходных, то при работе утилиты в качестве "самого близкого" для обоих исходных зеленых выбирается один и тот же палитровый зеленый. Это логично, учитывая примитивный алгоритм, но хотелось бы, чтобы цвета выбирались "адекватно". Но прежде чем пытаться писать свой велосипед, хотел узнать, может уже есть софт для подобных действий?


#1
10:13, 3 мая 2021

Вместо суммы разниц надо бы sqrt((r1-r2)^2+(g1-g2)^2+(b1-b2)^2) - расстояние в цветовом пространстве

#2
(Правка: 10:30) 10:20, 3 мая 2021

Да, спасибо, это можно поменять.
Но основную проблему это не решает, попробую на примере показать:
Допустим в исходной картинке есть два зеленых: rgb 0,100,0 и 0,130,0
А в палитре другие два зеленых 0,140,0 и 0,200,0
Хотелось бы перерисовать более темный зеленый с исходной картинки первым цветом из палитры, а более светлый - вторым.
Но по формуле оба исходных цвета ближе к одному цвету палитры.

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

#3
10:36, 3 мая 2021

Так, я думаю, не получится. Раз выбирается один и тот же цвет, значит исходные цвета по логике достаточно близки. Были бы дальше - выбрались бы разные цвета. Все дело в правильно подобранной палитре

#4
(Правка: 14:30) 14:26, 3 мая 2021

скрипта мультипреобразоBания B xnview  может быть хBатит. попробуй - там дофига настроек.    а замена цBета есть даже  дреBнем paint shop pro 8  - думаю скриптом там тоже можно Bообще Bсю палитру сменить

(на ноуте клаBа сломалась, искать юсбишку потом буду)

#5
10:53, 4 мая 2021

https://www.colorpilot.com/pilot.html
https://www.downloadpirate.com/pixatool-v1-56-full-version/
https://compuart.ru/article/8769

АртФорумОбщее