(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的饱和度图如下: