You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

3DLUT中四面体插值实现问题求助:效果不及三线性插值

3DLUT风格迁移中四面体插值色彩噪点问题排查

我在图像处理实践中,用3DLUT进行图像风格迁移,分别尝试了三线性插值与四面体插值。根据相关论文结论,使用171717规格的LUT表时,四面体插值的图像质量应更优,但实际生成的图像存在色彩噪点,效果反而不如三线性插值。我推测自己对四面体插值的理解或实现存在错误,现将实现步骤与代码整理如下,恳请图像处理专家帮忙检查问题所在。

我的四面体插值实现步骤

  • 与三线性插值一致,计算floor_R、floor_G、floor_B以及delta_R(fracR)、delta_G(fracG)、delta_B(fracB);
  • 将子立方体划分为6个四面体,通过delta_R、delta_G、delta_B的大小排序判断目标点所属的四面体;
  • 获取对应四面体的4个顶点RGB值;
  • 根据目标点到四面体4个顶点的欧氏距离计算权重;
  • 结合权重与顶点RGB值计算目标点的RGB值。

实现代码

//  get the R B G Floor and Fraction.
Pixel* p = &pixels[i];

float r = p->r / 255.0f * (LUTSize - 1);
float g = p->g / 255.0f * (LUTSize - 1);
float b = p->b / 255.0f * (LUTSize - 1);

int rFloor = (int)floor(r);
int gFloor = (int)floor(g);
int bFloor = (int)floor(b);

float fracR = r - rFloor;
float fracG = g - gFloor;
float fracB = b - bFloor;

//define a tetrahedral to get the 4 points RGB coordination 
int tetrahedral[4][3];  
tetrahedral[0][0] = 0;
tetrahedral[0][1] = 0;
tetrahedral[0][2] = 0;
tetrahedral[3][0] = 1;
tetrahedral[3][1] = 1;
tetrahedral[3][2] = 1;
// choose a tetrahedral  from six tetrahedrals in the cube
if ((fracB > fracR) && (fracR > fracG))  // t1
{
    tetrahedral[1][0] = 0;
    tetrahedral[1][1] = 0;
    tetrahedral[1][2] = 1;

    tetrahedral[2][0] = 1;
    tetrahedral[2][1] = 0;
    tetrahedral[2][2] = 1;
}
else if ((fracB > fracG) && (fracG > fracR))  //t2 
{
    .....  //similar code as above condition
}
else  ...                                       // until t6  G>R>B 

for (int i = 0; i < 4; i++)
{
    distance[i] = calOuDistance(fracR, fracG, fracB, tetrahedral[i]);
}
for (int i = 0; i < 4; i++)
{
    wight[i] = distance[i] / (distance[0] + distance[1] + distance[2] + distance[3]);
}
for (int i = 0; i < 4; i++)
{
    newindexB = bFloor + tetrahedral[i][2];
    newindexG = ...;
    newindexR = ...;

    newR += (float)lut_data[newindexB][newindexG][newindexR][0] * wight[i];
    newG += ...;
    newB += ...;
}
// get new R G B
newR = newR * 255.0f;
newG = ..
newB = ..

生成效果对比

  • 原图:色彩正常的原始图像
  • 四面体插值生成图:存在明显色彩噪点
  • 三线性插值生成图:无明显色彩问题

内容的提问来源于stack exchange,提问作者charlie-xue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 16:37:18