首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >FFmpeg颜色校正算法

FFmpeg颜色校正算法
EN

Stack Overflow用户
提问于 2021-11-27 23:02:55
回答 1查看 628关注 0票数 0

我正在尝试同步CSS和FFmpeg颜色校正。目标是创建工具,将CSS bri-sat-con过滤器值转换为相应的ffmpeg值,反之亦然。

例如:

-vf "eq=brightness=0.3:saturation=1.3:contrast=1.1“

Filter=亮度(30%)饱和(130%)对比度(110%)

虽然CSS属性的算法在W3C中可用,但我未能找到适用于FFmpeg的算法。我试过挖掘GitHub。从这里开始,我已经展开了函数调用,但它看起来“有点”难以在20年内导航,104 k提交了旧项目。:)

如果有人能帮我找出亮度、饱和度、对比度和伽玛的精确公式,我将非常感激。任何暗示。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-29 04:41:32

这是核心职能:

代码语言:javascript
运行
复制
static void create_lut(EQParameters *param)
{
    int i;
    double   g  = 1.0 / param->gamma;
    double   lw = 1.0 - param->gamma_weight;

    for (i = 0; i < 256; i++) {
        double v = i / 255.0;
        v = param->contrast * (v - 0.5) + 0.5 + param->brightness;

        if (v <= 0.0) {
            param->lut[i] = 0;
        } else {
            v = v * lw + pow(v, g) * param->gamma_weight;

            if (v >= 1.0)
                param->lut[i] = 255;
            else
                param->lut[i] = 256.0 * v;
        }
    }

    param->lut_clean = 1;
}

该滤波器仅在8位YUV输入上工作.此函数创建一个查找表,将所有8位输入值0-255映射到输出值.然后将此表应用于输入像素。

名为set_parameter的函数(如set_gamma )将用户提供的参数转换为上述函数中使用的最终值。contrast只应用于卢马平面,饱和度应用于色度平面。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70139425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档