亮度调整是色彩中常用的,很多多时候我们调整亮度的时候往往希望色彩不要偏移到其他色彩即色相不变。
以下是我用C#写亮度调整实测方案,实测像素色相调整后不变,但亮度和色彩浓度会有所增加。
bitmapOp = new Bitmap(objImage.getPeekImage());//获得将要操作的图像
new 亮度调整().AdjustColor(bitmapOp, trackBarBlack.Value); //trackBarBlack.Value范围【0~255】
//亮度调整类
class 亮度调整 : ClassColorFilterByRGB
{
private int numberN;
protected override void Prepare(int[] pValues) //重写父类中的Prepare方法
{
numberN = pValues[0];
}
protected override void Adjust(rgbClassRef rgb) //重写父类中的Adjust方法,对传入的每一个像素分量进行运算
{
// 其中 R,G,B等比例增加,色相保持不变,同时亮度增加了。(255 - rgb.D)确保色彩增加量后最大不超过255上限值。 rgb.X += (byte)((255 - rgb.D) * numberN * rgb.X / 255 / 255);
rgb.Z += (byte)((255 - rgb.D) * numberN * rgb.Z / 255 / 255);
rgb.D += (byte)((255 - rgb.D) * numberN * rgb.D / 255 / 255);
}
}