Gray Edge假设及其一般性计算框架

Gray Edge假设及其一般性计算框架

  有关MaxRGB,GrayWorld算法的回顾,可以参考白平衡算法之Gray World、White Patch、SoG。

Gray Edge假设

  MaxRGB,GrayWorld等算法都是基于原始图像的特征提出的。之后,Weijer等人通过观察对立颜色空间的图像颜色导数分布,发现图像的颜色导数在对立颜色空间呈一定规则。这里说到的对立颜色空间是根据颜色对抗学说建立的一个颜色空间,对立颜色空间的获得是从RGB空间做一个变换得到,具体有关对立颜色空间和颜色对抗学说的内容可移步维基百科

  根据图像颜色在这个空间上的一些特性,Weijer提出了一种新的Gray Edge假说:场景中所有物理表面的平均反射的差分是无色差的。同时,为了兼容几大基本算法,闵可夫斯基范式也被引入,得到了一个更为通用的颜色恒常性计算的算法框架,其最终的数学形式为:

( ∫ ∣ ∂ n f σ ( X ) ∂ X n ∣ p d X ) 1 / p = k e n , p , σ (1) (\int |\frac{\partial^nf^\sigma(X)}{\partial X^n}|^p dX)^{1/p}=ke^{n,p,\sigma}\tag1 (Xnnfσ(X)pdX)1/p=ken,p,σ(1)

其中 f n = f ⊗ G σ f^n=f\otimes G^\sigma fn=fGσ,表示图像 f f f与高斯滤波器 G σ G^\sigma Gσ的卷积; ∂ n / ∂ X n \partial^n/\partial X^n n/Xn表示 n n n阶导数过程。选择不同的 n , p , σ n,p,\sigma n,p,σ参数,分别包含了几大基础算法,如下表所示。

Gray Edge框架下的颜色恒常性算法
算法 参数 公式
Gray World e 0 , 1 , 0 e^{0,1,0} e0,1,0 ( ∫ f ( X ) d X ) = k e (\int f(X)dX)=ke (f(X)dX)=ke
MaxRGB e 0 , ∞ , 0 e^{0,\infty,0} e0,,0 ( ∫ ∥ f ( X ) ∥ ∞ d X ) 1 ∞ = k e (\int \|f(X)\|^\infty dX)^\frac{1}{\infty}=ke (f(X)dX)1=ke
Shades of Gray e 0 , p , 0 e^{0,p,0} e0,p,0 ( ∫ ∥ f ( X ) ∥ p d X ) 1 p = k e (\int \|f(X)\|^p dX)^\frac{1}{p}=ke (f(X)pdX)p1=ke
Gauss Gray World e 0 , p , σ e^{0,p,\sigma} e0,p,σ ( ∫ ∥ f σ ( X ) ∥ p d X ) 1 p = k e (\int \|f^\sigma(X)\|^pdX)^\frac{1}{p}=ke (fσ(X)pdX)p1=ke
1st Order Gray Edge e 1 , p , σ e^{1,p,\sigma} e1,p,σ ( ∫ ∥ f X σ ( X ) ∥ p d X ) 1 p = k e (\int \|f^\sigma_X(X)\|^pdX)^\frac{1}{p}=ke (fXσ(X)pdX)p1=ke
max Edge e 1 , ∞ , σ e^{1,\infty,\sigma} e1,,σ ( ∫ ∥ f X σ ( X ) ∥ ∞ d X ) 1 ∞ = k e (\int \|f^\sigma_X(X)\|^\infty dX)^\frac{1}{\infty}=ke (fXσ(X)dX)1=ke
2nd Order Gray Edge e 2 , p , σ e^{2,p,\sigma} e2,p,σ ( ∫ ∥ f X X σ ( X ) ∥ p d X ) 1 p = k e (\int\|f^\sigma_{XX}(X)\|^pdX)^\frac{1}{p}=ke (fXXσ(X)pdX)p1=ke

  当然,即使Gray World假设来源于对立颜色空间,但是所有处理依旧是在RGB颜色空间进行的。Gray Edge的重要意义在于把原来在0阶图像上进行的颜色恒常性计算推广到了高阶上。

Matlab代码

以下是自己写的一个简易版的代码,固定了只求1阶导数。

function out = GrayEdge(im,p,sigma)
% Image should be normalized to 0-1
% n    图像阶数         固定1,这里图像导数的来源有待考证
% p    Minkowski范数    默认6
% alpha 高斯滤波尺度    默认2
%

out = im;

if ~exist('p','var')
    p=6;
end
if ~exist('alpha','var')
    sigma=2;
end


k = fspecial('gaussian',floor(sigma*3+0.5),sigma);%创建高斯模板
im_G = imfilter(im,k,'replicate');%高斯滤波
im_edge = gradient(im_G);%求一阶图像
im_edge = abs(im_edge).^p;%闵可夫斯基p范式

r = im_edge(:,:,1);
g = im_edge(:,:,2);
b = im_edge(:,:,3);

Avg = mean(im_edge(:)).^(1/p);%计算出来的光照颜色

R_avg = mean2(r).^(1/p);%各通道
G_avg = mean2(g).^(1/p);
B_avg = mean2(b).^(1/p);

k = [R_avg G_avg B_avg]./Avg;%增益k

for i=1:3
out(:,:,i) = im(:,:,i)/k(i);
out(:,:,i) = min(out(:,:,i),1);
end

end

结果比较

Gray Edge假设及其一般性计算框架_第1张图片

一般化计算框架

  针对以上几种方法,在Color Constancy网站上给出了一般化框架代码,写的稍微有点复杂,就也没看很仔细,点击源代码下载。

参考文献

[1]王金华, 李兵, 须德. 图像理解:颜色认知计算[M]. 清华大学出版社, 2013.

[2] Color Constancy

你可能感兴趣的:(颜色科学,#,白平衡)