LUT避免uint32_t幂指数

我需要对图像中的所有像素执行幂指数运算。这是一个非常繁重的过程。 指数是常数(浮点),底数是uint32_t(乘以2 uint16_t的结果) 我正在尝试确定是否可以编写LUT,以便只需要查找为ech像素计算它们的值。

现在我正在这样做:powf((exposure * color),invGamma)

太慢了

我已经基于uint8_t解决了​​这个问题,但是具有2 ^ 32个元素的LUT太大了。

我使用uint8_t:

void colorCorrection::vidGammaLUT()
{
    for (uint16_t u16Count = 0; u16Count < 256; u16Count++)
    {
        m_au8GammaRgbLUT[u16Count] = u8clamp(static_cast<int32_t>(255.0f * pow(u16Count/255.0f,m_settings.GammaRgb)));
    }
}
benbenmail 回答:LUT避免uint32_t幂指数

由于乘幂是乘积在产品上的分布,因此您可以将gamma指数分别应用于曝光和颜色,并在查找后相乘。 2 ^ 16个元素更易于管理。

实际上,并非所有这些位都是有效的(现实很少会超过12位),您可以丢弃一些以进一步减少。

本文链接:https://www.f2er.com/3118177.html

大家都在问