我正在尝试实现一些python代码,以从图像数据集中分离出某些特定的颜色。我已经将Cr层与YCbCr颜色空间(1-dim np数组)分开,现在我试图在GIMP中应用类似于此的曲线过滤器:
我对该主题进行了一些研究,发现这里使用了贝塞尔曲线。我试图探索曲线的输出设置,但我听不懂。我希望通过此曲线应用相同的效果,以便在以后的阶段应用阈值化。有一个简单的方法可以做到吗? (我是该领域的初学者)
您想要类似的东西
pdb.gimp_drawable_curves_spline(layer,HISTOGRAM_VALUE,8,[0,0.37477797513321481,0.12890625,0.62344582593250431,0.8828125,1,1])
您可以让Gimp确定值:
使用GUI并将“曲线”工具应用于示例:
在上图中,请注意顶部的“预设”选择器。每次应用过滤器时,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,1]
再难不过了。
注意:
“贝塞尔曲线”一词在这里很偶然。这只是软件使曲线平滑的一种方法,但是您只能设置锚点。重要的是,您要在其自身上定义通道的功能:newChannelValue=f(oldChannelvalue)
,而不是通过数学公式而是通过绘制函数图来定义f()
。