原文:Win8 Metro(C#)数字图像处理--3.4图像信息熵计算
[函数代码]
/// <summary>
/// Entropy of one image.
/// </summary>
/// <param name="src">The source image.</param>
/// <returns></returns>
public static double GetEntropy(WriteableBitmap src)
{
double entropy = 0;
if (src != null)
{
int w = src.PixelWidth;
int h = src.PixelHeight;
byte[] temp = src.PixelBuffer.ToArray();
int[] countTemp=new int[256];
int gray = 0;
for (int i = 0; i < temp.Length; i += 4)
{
gray = (int)(temp[i] * 0.114 + temp[i + 1] * 0.587 + temp[i + 2] * 0.299);
countTemp[gray]++;
}
for (int i = 0; i < 256;i++)
{
if (countTemp[i] != 0)
{
entropy += (double)(-((countTemp[i] / (w * h)) * Math.Log10(countTemp[i] / (w * h))));
}
else
continue;
}
return entropy;
}
else
{
return 0;
}
}
最后,分享一个专业的图像处理网站(微像素),里面有很多源代码下载: