ImageMagick - 如何改变目标颜色的饱和度?

ImageMagick - How to change saturation of a targeted color?

使用ImageMagick转换,如何调整特定色相的饱和度? (以度为单位)

例如我增加了红色的饱和度(0 度色调)。偏蓝的颜色不会受到影响,但橙色也会有点饱和,因为它紧挨着红色。

当然,我希望能够配置受影响颜色的宽度。

注意:请使用转换命令,而不是重定向到脚本。

PS:在 emcconville 的回答后澄清:

饱和度是渐进的:我们越接近匹配的颜色,应用的滤镜就越多。基本上是在 Photoshop 中完成的方式。请参阅屏幕截图 - 抱歉,它是法语,Teinte 的意思是 Hue。您可以在底栏中以度数为单位查看和调整匹配颜色的范围,在 8 到 90(以及 318 到 255)之间,滤镜是渐进的。

Color Modification 指南提供了一些示例

这是一个例子,如果色调接近红色 (0°),饱和度将降低一半

convert rose: \( +clone -modulate 100,50 \) \
        -fx '(u.hue < 0.1 || u.hue > 0.9)? v : u' out.png

这是通过复制第一张图片(+clone), and alter the saturation (-modulate) of the copied image. For the -fx部分,u是第一张图片,v是第二张图片。如果第一张的hue图片匹配我们的颜色,return 第二张图片,否则 return 第一张。

Note: Red is 0°, so we need a logical OR (||), but if we're attempting to match another color, not overlapping zero, use the logical AND (&&).

example with blue

-fx '(u.hue < 0.69 && u.hue > 0.63) ? v : u'

补充回答

可以通过计算 线性 尺度来使用相同的 -fx 方法——如 this answer, or here。下面是一个类似(但不准确)的方程式,展示了如何隔离 饱和度 通道。

convert rose: -colorspace HSL \
  \( +clone -colorspace sRGB \
     -fx '(hue < 0.1)?saturation+((1-(hue+0.1)*10%1)/10):(hue > 0.9)?saturation+(((hue-0.1) * 10)%1):saturation-(abs(0.5-hue))' \
  \) \
  -compose CopyGreen -composite \
  -colorspace sRGB \
  out.png

-compose CopyGreen -composite 看起来很奇怪,但它真正做的是使用 -fx 生成的图像,并将其应用为第二个颜色通道(饱和度)。

也尝试 -color-matrix, -contrast-stretch, & -linear-stretch