C#圖象處置之圖象均值方差盤算的辦法。本站提示廣大學習愛好者:(C#圖象處置之圖象均值方差盤算的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#圖象處置之圖象均值方差盤算的辦法正文
本文實例講述了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#法式設計有所贊助。