您的位置:首页 > 其它

(5)彩色图像去饱和

2015-07-02 14:21 696 查看
去饱和是指在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的饱和度图如下:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: