算法:
double[] a = new double[3] { 0, 0, 0 };
Bitmap curBitmap = (Bitmap)Image.FromFile(fileName);
int wide = curBitmap.Width;
int height = curBitmap.Height;
Color srcColor;
double RR = 0;
double GG = 0;
double BB = 0;
for (int y3 = 0; y3 < height; y3++)
{
for (int x3 = 0; x3 < wide; x3++)
{
srcColor = curBitmap.GetPixel(x3, y3);
RR = RR + srcColor.R;
GG = GG + srcColor.G;
BB = BB + srcColor.B;
}
}
a[0] = Math.Round(RR / (X * Y), 2);
a[1] = Math.Round(GG / (X * Y), 2);
a[2] = Math.Round(BB / (X * Y), 2);
return a;
//另外AWB算法的公式:
Cb = (-0.16874 * RR_Aver) - (0.33126 * GG_Aver) + (0.5 * BB_Aver) + 128;
Cr = (0.5 * RR_Aver) - (0.41869 * GG_Aver) - (0.08131 * BB_Aver) + 128;