我正在对尺寸为 5000x3000x3 的图像进行伽马校正。
公式是
值 ^ (1 / 伽马)
对于 0.0 到 1.0 的 RGB 值
我的输入 gamma 值范围从 0.0 到 10.0,而 gamma = 0.0 始终输出 0.0。
问题是所涉及的pow计算太慢了。
在 float[, ,] 上执行此操作大约需要 1300 毫秒:
for (int y = 0; y < 3000; y++)
{
for (int x = 0; x < 5000; x++)
{
for (int z = 0; z < 3; z++)
{
arr[x, y, z] = (float)Math.Pow(arr[x, y, z], 0.3);
}
}
}
在 FloatMatrix 上使用NMathFunctions.Pow大约需要 1100 毫秒:
a = NMathFunctions.Pow(a, 0.3f);
知道如何加快速度吗?