我想基于特定点为0到255的输入/输出曲线生成一个值表,并使该曲线平滑。
在使用RGB曲线编辑图片的亮度时,我们使用的基本相同。
e.g。我会定义点0,0; 128,104; 255,255我会得到0到255之间的所有值,在128,104附近有一些平滑(非线性)。我最终能够配置该曲线的平滑程度。
我可以对它进行编程,但它似乎有点痛苦,而且我非常确定这样的东西已经作为模块或脚本存在。
谢谢!
修改
Benjamin W。的答案使用以下代码生成以下结果:
Target
答案 0 :(得分:3)
可以通过spline interpolation平滑地连接点,您可以在其中计算分段多项式。对于Perl,有模块Math::Spline。
对于您的示例(略微修改以使"弯曲"更好地可见),它大致如下所示:
use strict;
use warnings;
use feature 'say';
use Math::Spline;
my @x = (0, 210, 255);
my @y = (0, 124, 255);
my $spline = Math::Spline->new(\@x, \@y);
my @x_interp = (0 .. 255);
my @y_interp;
for my $x_i (@x_interp) {
push @y_interp, $spline->evaluate($x_i);
}
say "$x_interp[$_]\t$y_interp[$_]" for (0 .. 255);