首页 > 编程 > C# > 正文

C#图像处理之图像均值方差计算的方法

2020-01-24 01:56:14
字体:
来源:转载
供稿:网友

本文实例讲述了C#图像处理之图像均值方差计算的方法。分享给大家供大家参考。具体如下:

//本函数均是基于RGB颜色空间计算//定义图像均值函数(RGB空间)public double AnBitmap(Bitmap a){  double V = 0;  Rectangle rect = new Rectangle(0, 0, a.Width, a.Height);  System.Drawing.Imaging.BitmapData bmpData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);  unsafe  {   byte* pIn = (byte*)bmpData.Scan0.ToPointer();   byte* P;   int R, G, B;   double meanvalue = 0, sum = 0;    int stride = bmpData.Stride;   for (int y = 0; y < a.Height; y++)   {     for (int x = 0; x < a.Width; x++)     {     P = pIn;     B = P[0];     G = P[1];     R = P[2];     sum += B * 0.114 + G * 0.587 + R * 0.299;     pIn += 3;     }     pIn += stride - a.Width * 3;   }   meanvalue = sum / (a.Width * a.Height);   V = meanvalue;  }  a.UnlockBits(bmpData);  return V;  //返回图像均值V}//定义图像统计方差函数(RGB空间)public double AnCONBitmap(Bitmap a,double meanvalue){  double V = 0;  Rectangle rect = new Rectangle(0, 0, a.Width, a.Height);  System.Drawing.Imaging.BitmapData bmpData = a.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);  unsafe  {   byte* pIn = (byte*)bmpData.Scan0.ToPointer();   byte* P;   int R, G, B;   double conv = 0, sum = 0;   int stride = bmpData.Stride;   for (int y = 0; y < a.Height; y++)   {     for (int x = 0; x < a.Width; x++)     {     P = pIn;     B = P[0];     G = P[1];     R = P[2];     sum += (B * 0.114 + G * 0.587 + R * 0.299 - meanvalue) * (B * 0.114 + G * 0.587 + R * 0.299 - meanvalue);     pIn += 3;     }     pIn += stride - a.Width * 3;    }    conv = sum / (a.Width * a.Height-1);   V = conv;  }  a.UnlockBits(bmpData);  return V;  //返回图像方差V}

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表