图像灰化

原图

image

灰化后

image

红化后

image

绿化后

image

蓝化后

image

方法有三种

1.最大值法——三个值中最大的

2.平均法-——三额值相加除三

3.加权值法——就是求亮度的公式

如果要其中一色只要把另外两色都变为0,灰的话都是一种颜色就好了

代码:

public static Bitmap TurnToGray(Bitmap b, PixelColor pixelColor)
{
    ColorDelegate colorDelegate = (ref int red, ref int green, ref int blue) =>
    {
        //Max(Max(red,green),blue) 最大值法
        //(red+green+blue)/3 平均值法
       
        int gray = (int)(red * 0.299 + green * 0.587 + blue * 0.114); //加权平均值法

        red = pixelColor == PixelColor.Red || pixelColor == PixelColor.Light ? gray : 0;
        green = pixelColor == PixelColor.Green || pixelColor == PixelColor.Light ? gray : 0;
        blue = pixelColor == PixelColor.Blue || pixelColor == PixelColor.Light ? gray : 0;
    };

    return LoopPixel(b, colorDelegate);
}

posted on 2010-01-22 13:13  六道众生  阅读(561)  评论(0编辑  收藏  举报

导航