云计算百科
云计算领域专业知识百科平台

基于普朗克轨迹投影的光源估计 — 论文详细总结

Illuminant Estimation from Projections on the Planckian Locus

基于普朗克轨迹投影的光源估计 —— 论文详细总结(重点:投影与插值原理)

论文信息:Baptiste Mazin, Julie Delon, Yann Gousseau(LTCI, Télécom-ParisTech, CNRS) ECCV 2012 Workshops (LNCS 7584), pp. 370–379

一句话概括:一种免学习(learning-free)的光源自动估计方法——筛选出图像中"最可能是灰色"的像素,把它们投影到 CIE 1960 uv 色度图上的普朗克轨迹,用投影得到的色温构建加权直方图投票,选出最可信色温

T

0

T_0

T0​,最后用投票像素的加权重心得到完整光源色度。


目录

  • 问题定义与动机
  • 理论基础:成像模型与普朗克假设
  • 已有方法回顾(论文的对比基线)
  • 核心方法:普朗克轨迹投影 + 投票(重点)
  • 投影的几何原理详解(重点)
  • MIRED 色温尺度与直方图插值(重点)
  • Algorithm 1 完整流程逐行解读
  • 算法流程图
  • 实验评估
  • 总结与启示

  • 1. 问题定义与动机

    1.1 问题:欠约束(underconstrained)

    人眼在不同光谱光源下能稳定感知物体颜色(色彩恒常性),相机则不能。光源估计的目标是从一张照片中分离出:

    观测颜色

    =

    f

    (

    物体固有颜色

    ,

     光源颜色

    )

    \\text{观测颜色} = f(\\text{物体固有颜色},\\ \\text{光源颜色})

    观测颜色=f(物体固有颜色, 光源颜色)

    中的光源成分

    L

    =

    (

    L

    R

    ,

    L

    G

    ,

    L

    B

    )

    \\mathbf{L} = (L_R, L_G, L_B)

    L=(LR​,LG​,LB​)。

    根本困难:同样的像素值可以由"不同物体颜色 × 不同光源"组合产生——这是一个欠约束问题,必须引入额外假设。

    1.2 已有假设的局限

    假设类型代表算法失效场景
    场景构成假设 White-Patch / Max-RGB、Grey-World 场景中无白物体 / 平均反射率非灰
    物理模型约束 Gamut Mapping(Forsyth) 依赖训练图像的色域统计
    二色反射模型 镜面分量方法 高光不足的场景
    多方法组合 + 学习 ML 类方法 需要训练数据

    没有任何一个假设对所有"场景-光源"组合都成立,且不同方法的失效场景互不相同。

    1.3 本文的出发点

    引入两条互补的先验:

  • 物理先验:绝大多数光源(日光、白炽灯等)靠近普朗克轨迹(黑体辐射轨迹);
  • 像素级先验:图像中存在一部分"疑似灰色"的像素(灰色表面在任意光源下成像为光源颜色本身)。
  • 方法完全免学习,计算代价合理,性能达到免学习方法中的最优水平。


    2. 理论基础:成像模型与普朗克假设

    2.1 色彩成像模型(Lambertian 简化的二色模型)

    像素值由光源光谱

    L

    (

    λ

    )

    L(\\lambda)

    L(λ)、表面反射率

    S

    (

    λ

    ,

    x

    )

    S(\\lambda, x)

    S(λ,x)、相机光谱灵敏度

    ρ

    c

    (

    λ

    )

    \\rho_c(\\lambda)

    ρc​(λ) 决定:

    p

    c

    (

    x

    )

    =

    ∫

    ω

    L

    (

    λ

    )
     

    S

    (

    λ

    ,

    x

    )
     

    ρ

    c

    (

    λ

    )
     

    d

    λ

    ,

    c

    ∈

    {

    R

    ,

    G

    ,

    B

    }

    p_c(x) = \\int_\\omega L(\\lambda)\\, S(\\lambda, x)\\, \\rho_c(\\lambda)\\, d\\lambda, \\qquad c \\in \\{R, G, B\\}

    pc​(x)=∫ω​L(λ)S(λ,x)ρc​(λ)dλ,c∈{R,G,B}

    若把相机灵敏度近似为波长

    λ

    R

    ,

    λ

    G

    ,

    λ

    B

    \\lambda_R, \\lambda_G, \\lambda_B

    λR​,λG​,λB​ 处的 Dirac δ 函数,则退化为乘性模型:

    p

    c

    (

    x

    )

    =

    L

    (

    λ

    c

    )
     

    S

    (

    λ

    c

    ,

    x

    )

    p_c(x) = L(\\lambda_c)\\, S(\\lambda_c, x)

    pc​(x)=L(λc​)S(λc​,x)

    光源估计即求

    L

    =

    (

    L

    (

    λ

    R

    )

    ,

    L

    (

    λ

    G

    )

    ,

    L

    (

    λ

    B

    )

    )

    \\mathbf{L} = (L(\\lambda_R), L(\\lambda_G), L(\\lambda_B))

    L=(L(λR​),L(λG​),L(λB​));求得后可用 Von Kries 模型(对角阵白平衡)或更复杂模型把场景校正到标准光源

    L

    u

    L_u

    Lu​ 下。

    2.2 普朗克黑体辐射假设

    理想黑体在温度

    T

    T

    T(开尔文)下的辐射光谱由普朗克公式给出:

    L

    (

    T

    ,

    λ

    )

    =

    c

    1

    λ

    −

    5

    [

    exp

    ⁡
     ⁣

    (

    c

    2

    λ

    T

    )

    −

    1

    ]

    −

    1

    L(T, \\lambda) = c_1 \\lambda^{-5} \\left[\\exp\\!\\left(\\frac{c_2}{\\lambda T}\\right) – 1\\right]^{-1}

    L(T,λ)=c1​λ−5[exp(λTc2​​)−1]−1

    其中

    c

    1

    =

    3.74183

    ×

    10

    16

     

    W

    m

    2

    c_1 = 3.74183 \\times 10^{16}\\ \\mathrm{Wm^2}

    c1​=3.74183×1016 Wm2,

    c

    2

    =

    1.4388

    ×

    10

    −

    2

     

    m

    K

    c_2 = 1.4388 \\times 10^{-2}\\ \\mathrm{mK}

    c2​=1.4388×10−2 mK。

    关键推论:普朗克公式能准确近似大多数真实光源(尤其是日光 [11])的光谱。因此在黑体假设下,灰色像素可能呈现的颜色被限制在色度图上一条曲线附近——普朗克轨迹(Planckian locus)。这就是"可行光源色度约束"。

    2.3 色度图

    色度图是 3D 颜色信息丢弃强度分量后的 2D 投影:

    • RGB →(设备相关矩阵)→ XYZ → 归一化

      x

      +

      y

      +

      z

      =

      1

      x + y + z = 1

      x+y+z=1 → CIE 1931 xy 色度图;

    • 本文实际使用 CIE 1960 uv 色度图(原因见第 5 节)。

    3. 已有方法(对比基线)

    3.1 全像素统计类

    Shades of Grey 框架(Finlayson [13])——统一了 Grey-World 与 Max-RGB:

    L

    c

    =

    (

    ∫

    p

    c

    (

    x

    )

    n

     

    d

    x

    ∫

    d

    x

    )

    1

    /

    n

    L_c = \\left( \\frac{\\int p_c(x)^n\\, dx}{\\int dx} \\right)^{1/n}

    Lc​=(∫dx∫pc​(x)ndx​)1/n

    • n

      =

      1

      n = 1

      n=1:Grey-World(场景平均反射率无色);

    • n

      =

      ∞

      n = \\infty

      n=∞:Max-RGB(White-Patch,最亮点为完美反射面);

    • general Grey-World [14]:先做高斯卷积再统计。

    Grey-Edge(van de Weijer [15])——扩展到梯度域:

    L

    c

    =

    (

    ∫

    ∥

    ∂

    k

    p

    c

    (

    x

    )

    ∂

    x

    k

    ∥

    n

    d

    x

    )

    1

    /

    n

    L_c = \\left( \\int \\left\\| \\frac{\\partial^k p_c(x)}{\\partial x^k} \\right\\|^n dx \\right)^{1/n}

    Lc​=(∫

    ​∂xk∂kpc​(x)​

    ​ndx)1/n

    (假设反射率差分的平均是无色的。)

    3.2 灰像素检测类

    先检测"可能是灰色表面"的像素,再从这些像素估计光源 [16][17]:

    • Li 等 [16]:迭代估计使灰像素数目最大的白点——但初始估计(来自式(5))可能不准,作者自己也承认这一步非常棘手;
    • Kwon 等 [17]:在色度空间中选取靠近普朗克轨迹的点再取平均——可避免"紫色光源"这类荒谬估计,但当场景中存在两个灰色表面时会失败(平均结果落在两表面之间的中间点,两个都不是真实光源)。

    3.3 投票类方法

    • Sapiro [18]:每个像素对反射率参数集投票,Hough 变换选最优;
    • Riess 等 [19]:选很多 patch,各自在逆色度空间估计光源,成功的 patch 投票;
    • Vazquez-Corral 等 [20]:用"通用颜色类别"的感知约束加权投票,同样免学习。

    本文方法属于"灰像素检测 + 投票"的融合,但用直方图投票替代简单平均,从而克服 [17] 的"多灰表面取中间点"缺陷。


    4. 核心方法:普朗克轨迹投影 + 投票(重点)

    4.1 方法思想(四步)

    ① 筛选灰像素:在色度空间中找靠近普朗克轨迹的像素
    ↓ (这些像素 = "最可能是灰色"的像素)
    ② 投影求色温:把每个灰像素投影到普朗克轨迹,得到其色温 T(p)
    ↓
    ③ 直方图投票:以 MIRED 尺度构建加权色温直方图,取峰值 T₀
    ↓ (投票解决"多个灰色表面"的歧义——取主导温度而非平均)
    ④ 加权重心:对投票给 T₀ 邻域的所有像素,按亮度加权求色度重心
    ↓
    输出光源色度 (u₀, v₀)

    4.2 与简单平均方法([17])的本质区别

    简单平均 [17]本文投票法
    多灰表面场景 输出两表面色度的中间点(错误,两边都不对) 直方图出现两个峰,取主导峰

    T

    0

    T_0

    T0​(正确对齐其中一个表面)

    离群像素 直接拉偏平均值 被直方图峰值选择自然抑制
    可解释性 无中间信息 直方图给出图像中所有"候选光源"的分布(论文指出可用于多光源估计)

    4.3 三个关键设计选择

  • 色度空间选 CIE 1960 uv:CIE 推荐的空间,其中等温线(isotherms)定义为普朗克轨迹的垂线——因此一个像素的 CCT 就等于轨迹上离它最近的黑体的温度(最近点投影 = 色温读取,见第 5 节);
  • 色温尺度选 MIRED(

    T

    M

    i

    r

    e

    d

    =

    10

    6

    /

    T

    T_{Mired} = 10^6 / T

    TMired​=106/T):开尔文尺度对普朗克轨迹的采样不均匀,MIRED 尺度(Priest [22])符合人眼感知,采样均匀(见第 6 节);

  • 亮度加权投票:每个像素的投票权重为

    luminance

    (

    p

    )

    n

    \\text{luminance}(p)^n

    luminance(p)n——暗像素噪声大、不可靠,给小权重;亮像素更接近 White-Patch 的可信观测。这是 Grey-World 与 White-Patch 两种假设之间的折中(

    n

    n

    n 控制偏向:

    n

    n

    n 越大越接近 White-Patch)。


  • 5. 投影的几何原理详解(重点)

    5.1 为什么"投影 = 读出色温"

    在 CIE 1960 uv 平面上:

    v
    │ ● 黑体 6500K
    │ ●
    │ ● ← 普朗克轨迹(黑体随温度移动的曲线)
    │ ●
    │● 黑体 2500K
    │ P(某像素色度)
    │ ↓ 沿等温线(轨迹垂线)投影
    │ ● p_Planck(垂足)
    └──────────────────── u

    • 等温线:过普朗克轨迹上每一点、垂直于轨迹的直线族。同一等温线上的所有色度点具有相同的相关色温(CCT);
    • CCT 的定义(在 uv 空间):像素的 CCT = 其最近黑体辐射体的温度;
    • 因此"把像素

      p

      u

      v

      p_{uv}

      puv​ 投影到轨迹上最近点

      p

      P

      l

      a

      n

      c

      k

      p_{Planck}

      pPlanck​"这一操作,同时完成两件事:

    • 距离判断:

      d

      =

      ∥

      p

      u

      v

      −

      p

      P

      l

      a

      n

      c

      k

      ∥

      d = \\|p_{uv} – p_{Planck}\\|

      d=∥puv​−pPlanck​∥——衡量该像素"有多像灰色"。

      d

      <

      δ

      d < \\delta

      d<δ(如 0.01)的像素才被认为是灰像素候选;

    • 色温读取:垂足

      p

      P

      l

      a

      n

      c

      k

      p_{Planck}

      pPlanck​ 对应的黑体温度

      T

      (

      p

      )

      T(p)

      T(p) 就是该像素的 CCT。

    5.2 投影的双重筛选作用

    投影把二维色度信息降维为一维色温标量,同时完成质量筛选:

    p

    u

    v

    →

    最近点投影

    (

    p

    P

    l

    a

    n

    c

    k

    ,

     

    T

    (

    p

    )

    ,

     

    d

    )

    p_{uv} \\xrightarrow{\\text{最近点投影}} (p_{Planck},\\ T(p),\\ d)

    puv​最近点投影

    ​(pPlanck​, T(p), d)

    • d

      d

      d 大 → 像素明显带色(不是灰表面,或不是黑体类光源)→ 丢弃;

    • T

      (

      p

      )

      ∉

      [

      2000

      K

      ,

      20000

      K

      ]

      T(p) \\notin [2000K, 20000K]

      T(p)∈/[2000K,20000K] → 超出常见光源范围(可能是噪声/饱和色)→ 丢弃;

    • 通过筛选的像素 → 只保留色温标量

      T

      (

      p

      )

      T(p)

      T(p) 参与投票。

    这正是"投影"的核心价值:灰色表面在未知光源下的色度未知,但若光源在普朗克轨迹上,则灰像素色度必然落在轨迹附近;投影把"估计二维光源色度"分解为"筛选(距离)+ 一维投票(色温)",大幅缩小搜索空间且对离群点鲁棒。

    5.3 为什么能克服"多灰表面"问题

    设场景中有两个灰色表面,分别在光源

    T

    a

    T_a

    Ta​、

    T

    b

    T_b

    Tb​ 下成像(例如室内阴影 + 窗外日光):

    • 平均法 [17]:输出色度 ≈ 轨迹上

      T

      a

      T_a

      Ta​、

      T

      b

      T_b

      Tb​ 对应点的连线中点——通常偏离轨迹,既不是

      T

      a

      T_a

      Ta​ 也不是

      T

      b

      T_b

      Tb​,校正后两边都偏色;

    • 投票法:直方图在

      T

      a

      M

      i

      r

      e

      d

      T_a^{Mired}

      TaMired​ 和

      T

      b

      M

      i

      r

      e

      d

      T_b^{Mired}

      TbMired​ 处形成两个峰,argmax 选出像素数多/亮度高的主导光源

      T

      0

      T_0

      T0​,重心计算又限制在

      [

      T

      0

      −

      σ

      ,

      T

      0

      +

      σ

      ]

      [T_0-\\sigma, T_0+\\sigma]

      [T0​−σ,T0​+σ] 邻域内——只对主导光源负责,不被次要表面污染。


    6. MIRED 色温尺度与直方图插值(重点)

    6.1 为什么不用开尔文尺度做直方图

    普朗克轨迹上等间距的开尔文采样点,在色度图上的空间分布极不均匀:

    • 低温端(2500K→4000K):轨迹移动很快,色度变化大;
    • 高温端(10000K→20000K):轨迹几乎不动,色度挤在一起。

    若按开尔文分 bin,低温端一个 bin 覆盖的色度范围过大,投票分辨率不足;高温端又大量空 bin。

    MIRED 尺度(Micro-Reciprocal Degree,Priest 1933 [22]):

    T

    M

    i

    r

    e

    d

    =

    10

    6

    T

    T_{Mired} = \\frac{10^6}{T}

    TMired​=T106​

    • 色品随

      1

      /

      T

      1/T

      1/T 近似线性变化;

    • MIRED 均匀采样 ≈ 普朗克轨迹的近似等弧长采样,符合人眼对色温差异的感知;
    • 例:2500K → 400 Mired,4000K → 250,6500K → 154,10000K → 100,20000K → 50。

    6.2 直方图的构建与平滑(插值环节)

    直方图

    H

    H

    H 共

    N

    =

    1000

    N = 1000

    N=1000 个 bin,覆盖 50~400 Mired(即 2500K~20000K):

  • 投票累积:每个通过筛选的像素

    p

    p

    p,把权重

    w

    (

    p

    )

    =

    luminance

    (

    p

    )

    n

    w(p) = \\text{luminance}(p)^n

    w(p)=luminance(p)n 加到 bin

    ⌊

    T

    M

    i

    r

    e

    d

    (

    p

    )

    ⌋

    \\lfloor T_{Mired}(p) \\rfloor

    ⌊TMired​(p)⌋ 上;

  • 高斯平滑:用标准差

    σ

    =

    2

    \\sigma = 2

    σ=2(Mired 单位)的归一化高斯核滤波直方图:

  • H

    s

    m

    o

    o

    t

    h

    (

    T

    )

    =

    ∑

    T

    ′

    H

    (

    T

    ′

    )
     

    G

    σ

    (

    T

    −

    T

    ′

    )

    H_{smooth}(T) = \\sum_{T'} H(T')\\, \\mathcal{G}_\\sigma(T – T')

    Hsmooth​(T)=T′∑​H(T′)Gσ​(T−T′)

    这一步本质上是核密度估计(KDE)式的连续化插值:离散 bin 上的投票被高斯核扩散成连续的温度分布,作用有三:

    • 把相邻 bin 的孤立票"桥接"起来,消除量化噪声;
    • 使峰值附近形成平滑的单峰,argmax 稳定;
    • σ

      \\sigma

      σ 同时定义了后续"投票给

      T

      0

      T_0

      T0​"的邻域

      [

      T

      0

      −

      σ

      ,

      T

      0

      +

      σ

      ]

      [T_0 – \\sigma, T_0 + \\sigma]

      [T0​−σ,T0​+σ](Mired 域 ±2,对应 6500K 处约 ±470K 的容差)。

  • 取峰:

    T

    0

    =

    arg

    ⁡

    max

    ⁡

    T

    H

    s

    m

    o

    o

    t

    h

    (

    T

    )

    T_0 = \\arg\\max_T H_{smooth}(T)

    T0​=argmaxT​Hsmooth​(T);

  • 最终光源:对

    T

    M

    i

    r

    e

    d

    (

    p

    )

    ∈

    [

    T

    0

    −

    σ

    ,

    T

    0

    +

    σ

    ]

    T_{Mired}(p) \\in [T_0-\\sigma, T_0+\\sigma]

    TMired​(p)∈[T0​−σ,T0​+σ] 的所有像素,按

    w

    (

    p

    )

    w(p)

    w(p) 加权求 uv 色度重心:

  • (

    u

    0

    ,

    v

    0

    )

    =

    ∑

    p

    ∈

    L

    w

    (

    p

    )
     

    p

    u

    v

    ∑

    p

    ∈

    L

    w

    (

    p

    )

    (u_0, v_0) = \\frac{\\sum_{p \\in L} w(p)\\, p_{uv}}{\\sum_{p \\in L} w(p)}

    (u0​,v0​)=∑p∈L​w(p)∑p∈L​w(p)puv​​

    注意:最终光源色度不是直接取轨迹上的点,而是投票像素原始色度的重心——保留了轨迹法向的真实偏移信息,比投影点更准确。

    6.3 空直方图回退

    若没有任何像素通过筛选(

    H

    =

    ∅

    H = \\emptyset

    H=∅,如极端场景),返回标准光源

    (

    u

    r

    e

    f

    ,

    v

    r

    e

    f

    )

    (u_{ref}, v_{ref})

    (uref​,vref​)(canonical illuminant),保证算法总有输出。


    7. Algorithm 1 完整流程逐行解读

    输入:sRGB 图像

    p

    p

    p,距离阈值

    δ

    \\delta

    δ,bin 数

    N

    N

    N,高斯标准差

    σ

    \\sigma

    σ,亮度幂次

    n

    n

    n,标准光源

    (

    u

    r

    e

    f

    ,

    v

    r

    e

    f

    )

    (u_{ref}, v_{ref})

    (uref​,vref​) 输出:CIE uv 光源色度

    (

    u

    0

    ,

    v

    0

    )

    (u_0, v_0)

    (u0​,v0​) 实验参数:

    δ

    =

    0.01

    \\delta = 0.01

    δ=0.01,

    N

    =

    1000

    N = 1000

    N=1000,

    σ

    =

    2

    \\sigma = 2

    σ=2,

    n

    =

    3

    n = 3

    n=3

    初始化直方图 H = 0(N 个 bin)

    foreach 像素 p do
    ① p_uv ← Convert_sRGB→uv(p) # 转到 CIE 1960 uv 色度
    ② [p_Planck, T(p)] ← Proj_Planck(p_uv) # 投影到普朗克轨迹最近点
    # T(p) = 垂足的黑体温度(K)
    ③ d ← distance(p_uv, p_Planck) # 到轨迹的距离 = "灰度可信度"
    if d < δ and 2000K ≤ T(p) ≤ 20000K then # 双重筛选:够近 + 色温合理
    ④ T_MIRED(p) ← 10⁶ / T(p) # 开尔文 → MIRED 尺度
    ⑤ weight(p) ← luminance(p)ⁿ # 亮度加权(GW/WP 折中)
    ⑥ H[T_MIRED(p)] += weight(p) # 投票累积
    end
    end

    if H == ∅ then
    return (u₀, v₀) = (u_ref, v_ref) # 回退:标准光源
    end

    ⑦ 用标准差 σ 的归一化高斯核平滑 H # 连续化/插值
    ⑧ T₀ ← argmax(H) # 主导色温(投票胜出者)
    ⑨ L ← { p : T_MIRED(p) ∈ [T₀−σ, T₀+σ] } # 胜出温度邻域内的像素集合
    ⑩ (u₀, v₀) ← Barycenter(L, weight(L)) # 加权重心 = 最终光源

    return (u₀, v₀)

    要点总结

    步骤机制作用
    ①② sRGB→uv + 轨迹最近点投影 2D 色度降为 1D 色温 + 灰度可信度
    ③

    d

    <

    δ

    d < \\delta

    d<δ 且

    T

    ∈

    [

    2000

    K

    ,

    20000

    K

    ]

    T \\in [2000K, 20000K]

    T∈[2000K,20000K]

    只保留"像灰像素且色温物理合理"的候选
    ④ MIRED 尺度 均匀采样普朗克轨迹,符合感知
    ⑤ 亮度

    n

    n

    n 次幂加权

    抑制暗像素噪声,GW/WP 折中
    ⑦ 高斯核平滑 离散投票连续化,峰值稳定
    ⑧⑨⑩ 峰值选择 + 邻域重心 克服多灰表面歧义;重心保留法向信息

    8. 算法流程图

    #mermaid-svg-kXo1jEzbcKByzzr6{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-kXo1jEzbcKByzzr6 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-kXo1jEzbcKByzzr6 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-kXo1jEzbcKByzzr6 .error-icon{fill:#552222;}#mermaid-svg-kXo1jEzbcKByzzr6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kXo1jEzbcKByzzr6 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-kXo1jEzbcKByzzr6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kXo1jEzbcKByzzr6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kXo1jEzbcKByzzr6 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-kXo1jEzbcKByzzr6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kXo1jEzbcKByzzr6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kXo1jEzbcKByzzr6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kXo1jEzbcKByzzr6 .marker.cross{stroke:#333333;}#mermaid-svg-kXo1jEzbcKByzzr6 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kXo1jEzbcKByzzr6 p{margin:0;}#mermaid-svg-kXo1jEzbcKByzzr6 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-kXo1jEzbcKByzzr6 .cluster-label text{fill:#333;}#mermaid-svg-kXo1jEzbcKByzzr6 .cluster-label span{color:#333;}#mermaid-svg-kXo1jEzbcKByzzr6 .cluster-label span p{background-color:transparent;}#mermaid-svg-kXo1jEzbcKByzzr6 .label text,#mermaid-svg-kXo1jEzbcKByzzr6 span{fill:#333;color:#333;}#mermaid-svg-kXo1jEzbcKByzzr6 .node rect,#mermaid-svg-kXo1jEzbcKByzzr6 .node circle,#mermaid-svg-kXo1jEzbcKByzzr6 .node ellipse,#mermaid-svg-kXo1jEzbcKByzzr6 .node polygon,#mermaid-svg-kXo1jEzbcKByzzr6 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kXo1jEzbcKByzzr6 .rough-node .label text,#mermaid-svg-kXo1jEzbcKByzzr6 .node .label text,#mermaid-svg-kXo1jEzbcKByzzr6 .image-shape .label,#mermaid-svg-kXo1jEzbcKByzzr6 .icon-shape .label{text-anchor:middle;}#mermaid-svg-kXo1jEzbcKByzzr6 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-kXo1jEzbcKByzzr6 .rough-node .label,#mermaid-svg-kXo1jEzbcKByzzr6 .node .label,#mermaid-svg-kXo1jEzbcKByzzr6 .image-shape .label,#mermaid-svg-kXo1jEzbcKByzzr6 .icon-shape .label{text-align:center;}#mermaid-svg-kXo1jEzbcKByzzr6 .node.clickable{cursor:pointer;}#mermaid-svg-kXo1jEzbcKByzzr6 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-kXo1jEzbcKByzzr6 .arrowheadPath{fill:#333333;}#mermaid-svg-kXo1jEzbcKByzzr6 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kXo1jEzbcKByzzr6 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kXo1jEzbcKByzzr6 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kXo1jEzbcKByzzr6 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-kXo1jEzbcKByzzr6 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kXo1jEzbcKByzzr6 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-kXo1jEzbcKByzzr6 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kXo1jEzbcKByzzr6 .cluster text{fill:#333;}#mermaid-svg-kXo1jEzbcKByzzr6 .cluster span{color:#333;}#mermaid-svg-kXo1jEzbcKByzzr6 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kXo1jEzbcKByzzr6 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-kXo1jEzbcKByzzr6 rect.text{fill:none;stroke-width:0;}#mermaid-svg-kXo1jEzbcKByzzr6 .icon-shape,#mermaid-svg-kXo1jEzbcKByzzr6 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kXo1jEzbcKByzzr6 .icon-shape p,#mermaid-svg-kXo1jEzbcKByzzr6 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-kXo1jEzbcKByzzr6 .icon-shape .label rect,#mermaid-svg-kXo1jEzbcKByzzr6 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kXo1jEzbcKByzzr6 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-kXo1jEzbcKByzzr6 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-kXo1jEzbcKByzzr6 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    否

    是

    是

    否

    输入: sRGB 图像 pδ=0.01, N=1000, σ=2, n=3

    遍历每个像素

    ① sRGB → CIE 1960 uv

    ② 投影到普朗克轨迹最近点得垂足 p_Planck 与色温 T(p)

    ③ d = ‖p_uv − p_Planck‖

    d < 0.01 且2000K ≤ T ≤ 20000K ?

    ④ T_MIRED = 10⁶/T⑤ w = luminanceⁿ⑥ H[T_MIRED] += w

    直方图 H 为空?

    返回标准光源 (u_ref, v_ref)

    ⑦ 高斯核(σ=2)平滑 H

    ⑧ T₀ = argmax H(主导色温胜出)

    ⑨ 收集 T_MIRED ∈ [T₀−σ, T₀+σ] 的像素集 L

    ⑩ (u₀,v₀) = L 的亮度加权重心

    输出光源 (u₀, v₀)


    9. 实验评估

    9.1 数据库与协议

    数据库规模处理
    Gehler / ColorChecker [12][24] 568 张 仅用 RAW 版本(避免相机自动 ISP 的非线性破坏);分别在相机色彩空间和 sRGB 空间评估
    SFU grey-ball [23] 11,346 张 线性化处理后评估

    误差度量:估计光源

    I

    e

    I_e

    Ie​ 与真值

    I

    g

    I_g

    Ig​ 各定义一条"灰色轴",用两轴夹角衡量:

    E

    a

    (

    I

    e

    ,

    I

    g

    )

    =

    cos

    ⁡

    −

    1

     ⁣

    (

    I

    e

    ⋅

    I

    g

    ∥

    I

    e

    ∥
     

    ∥

    I

    g

    ∥

    )

    E_a(I_e, I_g) = \\cos^{-1}\\!\\left( \\frac{I_e \\cdot I_g}{\\|I_e\\| \\, \\|I_g\\|} \\right)

    Ea​(Ie​,Ig​)=cos−1(∥Ie​∥∥Ig​∥Ie​⋅Ig​​)

    论文主张在 sRGB 空间评估更合理:(1) 相机 RGB 三通道动态范围差异大使误差有偏;(2) Gehler 库用了两台不同相机,在各自相机空间平均误差不一致。

    9.2 主要结果(角度误差,度)

    Gehler 数据库,sRGB 空间(Table 1):

    方法MeanMedianTrimeanBest-25%Worst-25%
    White-Patch 9.6 7.7 8.6 2.2 20.3
    Grey-World 9.1 8.6 8.8 2.9 16.2
    general Grey-World 6.7 4.9 5.4 1.4 14.9
    1st-order Grey-Edge 7.0 6.3 6.4 2.8 12.5
    Pixel-based Gamut Mapping 5.8 3.4 4.1 0.7 14.4
    Edge-based Gamut Mapping 10.1 7.4 8.2 2.8 21.7
    ML (category-wise prior) 4.3 3.6 3.7 1.4 8.4
    本文方法 4.1 2.9 3.4 0.7 12.8

    Gehler 数据库,相机 RGB 空间(Table 2):本文 4.1/3.1/3.3,仍优于全部免学习方法,接近 ML 方法(3.1/2.3)。

    SFU grey-ball,sRGB 空间(Table 3):本文 10.9/8.5/9.1,median/trimean 优于所有对比方法(含 ML 的 8.9/9.2)。

    9.3 结论

    • 优于所有免学习方法(sRGB 与相机空间、mean 与 median 均如此);
    • 同一组参数(δ=0.01, N=1000, σ=2, n=3)在两个数据库上都表现良好——方法稳定、无需调参;
    • 性能接近复杂的学习类方法,而计算代价很低;
    • sRGB 空间误差整体高于相机空间,源于相机色彩空间动态范围更窄。

    10. 总结与启示

    10.1 方法本质

    把"二维光源估计"分解为"一维色温投票": 普朗克假设把可行光源约束到轨迹上 → 每个灰像素经最近点投影读出一个色温 → MIRED 尺度上构建亮度加权直方图 → 高斯平滑后取峰 → 胜出邻域内像素的加权重心即光源。

    10.2 局限与展望

    • 依赖普朗克假设:对远离普朗克轨迹的 LED/荧光灯光源,轨迹距离筛选会失效或给出误导性 CCT;
    • 单一光源假设:算法输出单一光源;论文指出直方图本身包含多峰信息,细化的直方图分析可实现场景多光源估计——这是作者给出的未来方向。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 基于普朗克轨迹投影的光源估计 — 论文详细总结
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!