原理: 彩色图像处理成黑白效果时常用的三种方法. 1.最大值法, 2.平均值法, 3.加权平均值法..
平均值法为例: 是取每一个像素点颜色值的 红,绿, 蓝. 相加除以 3 做为该像素点新的颜色值
即: ((R + G + B) / 3) .
注: 每种方法产生黑白效果的最终效果不一样, 加权平均值法产生的黑白效果最 "真实" .
try
{
int Height = this.pictureBox1.Image.Height;
int Width = this.pictureBox1.Image.Width;
Bitmap newBitmap = new Bitmap(Width, Height);
Bitmap oldBitmap = (Bitmap)this.pictureBox1.Image;
Color pixel;
for (int x = 0; x < Width; x++)
for (int y = 0; y < Height; y++)
{
pixel = oldBitmap.GetPixel(x, y);
int r, g, b, Result = 0;
r = pixel.R;
g = pixel.G;
b = pixel.B;
//实例程序以加权平均值法产生黑白图像
int iType = 2 ;
switch (iType)
{
case 0://平均值法
Result = ((r + g + b) / 3);
break;
case 1://最大值法
Result = r > g ? r : g;
Result = Result > b ? Result : b;
break;
case 2://加权平均值法
Result = ((int)(0.7 * r) + (int)(0.2 * g) + (int)(0.1 * b));
break;
}
newBitmap.SetPixel(x, y, Color.FromArgb(Result, Result, Result));
}
this.pictureBox1.Image = newBitmap;
}
个人使用该方法可用,但是速度很慢!