在python中调整颜色曲线,类似于GIMP

问题描述 投票:0回答:1

我正在尝试实现一些python代码,以从图像数据集中分离出某些特定的颜色。我已经将Cr层与YCbCr颜色空间(1-dim np阵列)分开,现在我试图在GIMP中应用类似于此的曲线过滤器:GIMP curve I want to apply

我对该主题进行了一些研究,发现这里使用了Bezier曲线。我试图探索曲线的输出设置,但我听不懂。我希望通过此曲线应用相同的效果,以便在以后的阶段应用阈值化。有一个简单的方法可以做到吗? (我是该领域的初学者)

python image-processing computer-vision bezier
1个回答
0
投票

您想要类似的东西:

pdb.gimp_drawable_curves_spline(layer,HISTOGRAM_VALUE,8,[0, 0, 0.37477797513321481, 0.12890625, 0.62344582593250431, 0.8828125, 1, 1])

Trick

您可以让Gimp确定值:

使用GUI并将曲线工具应用于示例:

enter image description here

在上图中,请注意顶部的“预设”选择器。每次应用过滤器时,Gimp都会保存曲线,您可以使用选择器进行检索。默认情况下,该曲线是匿名的(仅带有时间戳),但您也可以为其命名(单击+按钮)。

这些值保存在Gimp配置文件中的文件中。在Gimp 2.10中,此文件为${Gimp profile}/filters/GimpCurvesConfig.settings。如果您对其进行编辑(您的编辑器可能需要支持长行),您将看到:

# settings

(GimpCurvesConfig "2019-11-08 21:57:15"
    (time 1573246635)
    (linear no)
    (channel value)
    (curve
        (curve-type smooth)
        (points 8 0 0 0.37477797513321481 0.12890625 0.62344582593250431 0.8828125 1 1)
        (point-types 4 smooth smooth smooth smooth)

    [...snip...]

感兴趣的行是以(points ...开头的行)。您只需要进行转换:

(points 8 0 0 0.37477797513321481 0.12890625 0.62344582593250431 0.8828125 1 1)

进入:

... 8,[0, 0, 0.37477797513321481, 0.12890625, 0.62344582593250431, 0.8828125, 1, 1]

几乎很难。

注意:

“贝塞尔曲线”一词在这里很偶然。这只是软件使曲线平滑的一种方法,但是您只能设置锚点。重要的是,您要在其自身上定义通道的功能:newChannelValue=f(oldChannelvalue),而不是通过数学公式而是通过绘制函数图来定义f()

© www.soinside.com 2019 - 2024. All rights reserved.