我的内部循环包含一个计算,分析显示有问题。
这个想法是采用灰度像素 x (0 <= x <= 1),并“增加其对比度”。我的要求相当宽松,只有以下几点:
所以图形必须是这样的:
.
我有两个实现(它们的结果不同,但都一致):
float cosContrastize(float i) {
return .5 - cos(x * pi) / 2;
}
float mulContrastize(float i) {
if (i < .5) return i * i * 2;
i = 1 - i;
return 1 - i * i * 2;
}
因此,我请求对这些实现之一进行微优化,或者您自己的原始、更快的公式。
也许你们中的一个人甚至可以摆弄这些位 ;)
最佳答案
考虑以下 sigmoid -形函数(正确转换为所需范围):
我使用MATLAB生成了上图。如果有兴趣这里是代码:
x = -3:.01:3;
plot( x, 2*(x>=0)-1, ...
x, erf(x), ...
x, tanh(x), ...
x, 2*normcdf(x)-1, ...
x, 2*(1 ./ (1 + exp(-x)))-1, ...
x, 2*((x-min(x))./range(x))-1 )
legend({'hard' 'erf' 'tanh' 'normcdf' 'logit' 'linear'})
关于optimization - "high contrast"曲线的快速公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1479980/