這個問題是從超級用戶遷移過來的,因為可以在 Stack Overflow 上回答。 2 天前遷移 。
我正在嘗試同步 CSS 和 ffmpeg 顏色校正。目標是創建將 CSS bri-sat-con-gam 過濾器值轉換為相應的 ffmpeg vals 的工具,反之亦然。
例如
-vf "eq=brightness=0.3:saturation=1.3:contrast=1.1"
->
過濾器=“亮度(30%)飽和(130%)對比度(110%)”
雖然 W3C 提供了 CSS 屬性的演算法,但我找不到 ffmpeg 的演算法。我試過挖github。從這里開始,我已經展開了函式呼叫,但在 20 年和 104k 提交舊專案的情況下,它看起來“有點”難以導航。:)
如果有人能幫我找出亮度、飽和度、對比度和伽瑪的精確公式,我將不勝感激。任何提示。謝謝。
uj5u.com熱心網友回復:
這是核心功能:
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僅應用于亮度平面;色度平面的飽和度。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/369673.html
