【问题标题】:ImageMagick - How to change saturation of a targeted color?ImageMagick - 如何更改目标颜色的饱和度?
【发布时间】:2015-10-23 11:47:32
【问题描述】:

使用 ImageMagick convert,如何调整特定色调的饱和度? (度数)

例如我增加了红色的饱和度(0 度色调)。偏蓝的颜色不会受到影响,但橙色也会稍微饱和,因为它在红色旁边。

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

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

PS:在emcconville的回答之后澄清一下:

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

【问题讨论】:

    标签: image colors imagemagick imagemagick-convert


    【解决方案1】:

    Color Modification 指南提供了一些示例

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

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

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

    注意:红色是 0°,所以我们需要一个逻辑 OR (||),但是如果我们尝试匹配另一种颜色,不重叠零,使用逻辑 AND (@ 987654342@).

    蓝色示例

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

    补充答案

    同样的-fx 方法可以通过计算线性 比例来使用——比如this answerhere。下面是一个类似(但不准确)的方程,并展示了如何隔离 saturation 通道。

    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

    【讨论】:

    • 很抱歉,我刚刚编辑了我的问题以澄清,因为虽然这种情况很有趣并且教会了我一些很棒的东西,但它实际上并不是我想要的。
    • @FlorianB:如果答案教会了你一些很棒的东西,你仍然可以“投票”。另外“接受”它(或另一个),一旦它被修改/修改以完全解决您的问题。
    • 哦,第二次编辑太棒了!取决于色调的饱和度,就是这样!:)谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2020-10-29
    • 2010-11-11
    • 2021-02-28
    相关资源
    最近更新 更多