(5)彩色图像去饱和

去饱和是指在RGB图像中以连续的方式统一消减颜色量。通过将每一个RGB像素替换为一个去饱和的颜色(Rd, Gd, Bd)来实现,其中(Rd, Gd, Bd)是在RGB空间通过在像素的原始颜色和相应的灰度点(Y, Y, Y)之间进行线性插值求得。即:

  (Rd, Gd, Bd) = (Y, Y, Y)+ (R - Y, G - Y, B - Y)* s 

系数s的取值区间为[0, 1],s取0时,为灰度图像,s取1时,为原图。

代码实现如下:

	public int getNewColor(int color){
        int r = (color >> 16) & 0xFF;
        int g = (color >> 8) & 0xFF;
        int b = color & 0xFF;
        int gray = (int)((r*0.3)+(b*0.59)+(g*0.11));
        int newR = saturation(r, gray);
        int newG = saturation(g, gray);
        int newB = saturation(b, gray);
        return (255 << 24) + (newR << 16) + (newG << 8) + newB;
	}
	
	private int saturation(int rgb, int gray){
		return gray + (rgb - gray) * (mParameter) / 100;
	}

 参数mParameter取100和50的饱和度图如下:

posted on 2015-07-02 14:21  Matrixin  阅读(1504)  评论(0编辑  收藏  举报

导航