好的颜色混合插值方法?

2024-04-25 19:07:30 发布

您现在位置:Python中文网/ 问答频道 /正文

这一问题特别涉及在颜料、颜料等的颜色混合背景下的曲线拟合问题

我试着猜测两种颜料所需的比例,比如说“棕色”(B)和“白色”(W),以获得给定的亮度值L

我做了一个“校准曲线”,和在化学中应用比尔-朗伯定律一样。但是,曲线不是线性的,所以我不能用Beer-Lambert定律。在

以下是我所做的:

(一)

  • 我测量了油漆样品的光谱,这些比例的混合物,标记为a,b,c,d。。。等等

    a>;>>W=1,B=0(纯白)

    b>;>>W=63/64,b=1/64

    c>;>>W=31/32,B=1/32

    d>;>>W=15/16,B=1/16

    e>;>>W=7/8,B=1/8

    f>;>>W=3/4,B=1/4

    g>;>>W=1/2,B=1/2

    h>;>>W=0,B=1(纯棕色)

这些是我得到的光谱反射曲线:

reflectance curves

如果我在给定波长(例如500 nm)处选取一个反射率值,我会得到一条很好的曲线,其中x轴表示白色涂料在混合物中的比例,y轴表示500 nm处的反射光: amount of white VS reflectance at 500 nm

我想通过插值来猜测达到一定数量的反射光需要多少白色。在

(二)

我试图用scipy.optimize.curve_fit拟合指数曲线,但拟合效果很差:

exponential fit of data

什么样的函数可以很好地拟合数据?在


Tags: gt光谱曲线比例校准背景亮度nm
1条回答
网友
1楼 · 发布于 2024-04-25 19:07:30

我将扩大我的评论,因为没有人回答。在

从我在图中看到的,有一个模式。最好的方法是拟合一条曲线,使其与整个模式相适应。您可以不用使用Eureqa(免费试用就足够了):http://www.nutonian.com/products/eureqa/

如果希望保留python并适应指数分布,可以执行以下操作: How to do exponential and logarithmic curve fitting in Python? I found only polynomial fitting

因此,假设波长为500nm时,有以下值:

y = [10,20,30,30,50,60,70,80,90,100]
x = [0.,0.3,0.5,0.6,0.72,0.77,0.84,0.9,0.95,1]

那么拟合指数曲线的代码是:

^{pr2}$

在这种情况下,我们得到a、b和c是:

^{3}$

因此,要获得某个x处反射光的值(例如0.2),可以执行以下操作:

func(0.2, 7.1907744 , -2.62804994,  2.45029842)

是14.61

但是你说它不适合你,如果你不需要一个模型,你可以做以下事情:如果你不在乎有一个模型,你可以使用这个:https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp1d.html#scipy.interpolate.interp1d

from scipy import interpolate
f = interpolate.interp1d(x, y, kind="quadratic") #you can try different kinds of interpolation

然后找到一个值(例如x=0.2):

ynew = f(0.2)

是6.549

或者有许多值,以便绘制它们: Y新=f(np.linspace公司(0,11000)

相关问题 更多 >