ImageMagick - 如何改变特定颜色的饱和度?

4
使用ImageMagick转换,如何调整特定色调的颜色饱和度?(以度数为单位)
例如:我增加了红色(0度色相)的饱和度。蓝色系的颜色不会受到影响,但由于橙色靠近红色,它也会略微饱和。
当然,我希望能够配置受影响颜色的宽度。
注意:请使用convert命令,不要重定向到脚本。
附注:为了澄清emcconville的答案之后:
饱和度将是渐进式的:我们越接近匹配的颜色,滤镜就越多地应用。基本上就像Photoshop中所做的那样。请参见屏幕截图-抱歉,它是法语,Teinte表示色调。您可以在底部栏中看到并调整匹配颜色范围(介于8和90之间(318至255),该过滤器是渐进式的)。

Photoshop Saturation Screenshot

1个回答

3

颜色修改 指南提供了一些示例

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

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

Change saturation of a targeted color

这是通过复制第一张图片(+clone),并改变复制图像的饱和度(-modulate)来实现的。对于-fx部分,u是第一张图片,v是第二张图片。如果第一张图片的hue与我们的颜色匹配,则返回第二张图片,否则返回第一张图片。

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方法通过计算线性比例尺来实现 -- 就像这个答案或者这里。以下是一个类似的(但并不准确)方程,并展示了如何分离饱和度通道。

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

More change saturation of a targeted color

"

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

还可以尝试使用 -color-matrix, -contrast-stretch, 和 -linear-stretch 进行实验。

"

很抱歉,我刚刚编辑了我的问题以澄清,因为虽然这个条件语句很有趣并且教会了我很棒的东西,但它实际上并不是我正在寻找的。 - FlorianB
如果这个答案对你有所帮助,你可以给它一个“赞”。一旦它被修改/修正完全解决了你的问题,你还可以选择“接受”它(或其他答案)。 - Kurt Pfeifle
哦,第二次编辑太棒了!饱和度取决于色调,就是这样!:)谢谢! - FlorianB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接