图像处理的基本原理
亮度调节
亮度调节有非线性、线性两种实现方式。非线性亮度调节的实现非常简单,伪代码如下:
byte* image = loadImage();
byte* r, g, b = interlaceImage(image);
int brightness = 3;
r += brightness;
g += brightness;
b += brightness;
线性亮度调节基于 HSL 色彩模式,HSL 分别代表色相(Hue)、饱和度(Saturation)、明度(Lightness),每个通道都可以使用 0~255 的数值来表示,线性亮度调节就是通过调节 L 的值实现的:
L = (max(r, max(g, b)) + min(r, min(g, b))) / 2;
if (L > 128) {
rHS = (r * 128 - (L - 128) * 256) / (256 - L);
gHS = (g * 128 - (L - 128) * 256) / (256 - L);
bHS = (b * 128 - (L - 128) * 256) / (256 - L);
} else {
rHS = r * 128 / L;
gHS = g * 128 / L;
bHS = b * 128 / L;
}
int delta = 20; // [0 - 255]
newL = L + delta - 128;
if (newL > 0