Всем привет!
Встала задача автоматически "улучшать" изображения, а именно увеличивать насыщенность.
Взял фотошоп и начал экспериментировать.
Исходное изображение![93fa1c3e37114651bc9a2e43aa1f6ca0.jpg](http://habrastorage.org/files/93f/a1c/3e3/93fa1c3e37114651bc9a2e43aa1f6ca0.jpg)
Есть в фотошопе 2 фильтра для увеличения насыщенности изображения:
Hue/Saturation и
Vibrance.
Вот результат работы
первого фильтра:
![25bd80bf286741fd8f0b8d1d7b30fab9.jpg](http://habrastorage.org/files/25b/d80/bf2/25bd80bf286741fd8f0b8d1d7b30fab9.jpg)
(
вместе с настройками)
Вот
второго:
![6a1d8a102dd043c1a5d0c04bc9efc745.jpg](http://habrastorage.org/files/6a1/d8a/102/6a1d8a102dd043c1a5d0c04bc9efc745.jpg)
(
вместе с настройками)
Невооружённым взглядом видно, что разница есть и довольно значительная (просто посравнивайте оба варианта в соседних вкладках). Во втором случае цвета насыщеннее, более мягкие, меньше артефактов и "кислотности". Лазурное небо, голубое море, зелёная травка, нежно-жёлтый песочек.. Словно в рай попал!
На более крупных значениях в первом варианте кислотности становится только больше, цвета искажаются, артефакты заполоняют всю плоскость изображения.
А вот во-втором - даже при значении "100" артефактов практически нет.
Хотя казалось бы - одинаковое название, одинаковый диапазон значений - но всё же результат разный.
И запал мне в душу этот Saturation из фильтра Vibrance. Да на столько, что обычный hs(+40)l теперь вообще не радует.
Взял я ImageMagick и попытался повторить результат.
И сколько бы я не бился, сколько бы не гуглил - ничего подобного даже близко не получилось.
И
так пробовал:
convert tmp.jpg -colorspace HSL \
-channel B -evaluate multiply 1 \
-channel G -evaluate multiply 1.40 \
+channel -colorspace sRGB result.jpg
и
сяк:
convert tmp.jpg -set option:modulate:colorspace hsl -modulate 100,140 result.jpg
и даже
эдак:
convert i.jpg -sigmoidal-contrast 1x10% -alpha off i_contrast.jpg
convert -set option:modulate:colorspace HSB \( i_contrast.jpg -modulate 100,140,100 \) \
\( -clone 0 \( -clone 0 -modulate 100,100,100 \) -compose difference -composite -auto-level -negate \) \
-compose CopyOpacity -composite i_saturation_mask.jpg
composite i_saturation_mask.jpg i_contrast.jpg result.jpg
И всё это не то, всё это как-то.. никак.
Наиболее близким оказался вот
такой вариант:
convert tmp.jpg -color-matrix "1.329212 -0.32496 -0.004252 -0.070788 1.07504 -0.004252 -0.070788 -0.32496 1.395748" result.jpg
И вот вроде всё хорошо, но "лазурности" неба и воды повторить не получилось. А это для меня самое главное.
Как же быть? Неужели даже всемогущий ImageMagick не способен повторить такое чудо? Ведь чувствую же, что способен, только вот нащупать никак не могу..
Господа и дамы, кто сталкивался? Кто знает? Кто подскажет? Очень уж хочется такого эффекта. Именно из-за "лазурности", ибо она как влитая ложится на тематику фотографий.
Кажется мне, что надо с color-matrix экспериментировать, но подбирать вручную - это неделю можно сидеть..
Очень надеюсь на вашу помощь!