使用 3x3 过滤器并为每个 3x3 像素块计算颜色方差。例如,对于补丁中的每两个相邻像素(例如 pix(0,0) 和 pix(0,1)),获取每个颜色通道之间差异的绝对值,对其进行平方和求和。
所以像:
double pixelVariance( pix a, pix b )
{
double variance = 0;
variance += ( a.red - b.red ) * ( a.red - b.red );
variance += ( a.green - b.green ) * ( a.green - b.green );
variance += ( a.blue - b.blue ) * ( a.blue - b.blue );
return variance;
}
然后是 3x3 补丁的方差:
double patchVariance( Patch patch )
{
double variance = 0;
variance += pixelVariance( patch( 0, 0 ), patch( 0, 1 ));
variance += pixelVariance( patch( 0, 0 ), patch( 1, 0 ));
// etc.
return variance;
}
具有高方差的补丁不是平滑的渐变,几乎可以肯定是高云纹区域。