一些颜色特效也在滤镜中比较常见,而且如果在视频拍摄的时候使用则一般会比较有趣,这些滤镜一般不改变像素的位置,而只是在像素的颜色上做文章,这里参考了几个颜色滤镜如: 碧绿(Aqua)、棕褐色(Sepia)、冰冻(Ice)、熔铸(Molten)、暗调(Darkness)、对调(Subtense)、怪调(Whim)等。
这些都比较简单,对RGB的一些简单操作就能够实现,无非可以理解为RGB的映射,可以用matlab很容易的看出映射曲线。
原图:
l 碧绿效果
实现原理:
newR = (G - B) * (G - B) / 128
newG = (R - B) * (R - B) / 128
newB = (R - G) * (R - G) / 128
l 棕褐色效果
也称为老照片效果,可以在上面加一些高斯噪声也可,实现原理:
R = 0.393 * r + 0.769 * g + 0.189 * b
G = 0.349 * r + 0.686 * g + 0.168 * b
B = 0.272 * r + 0.534 * g + 0.131 * b
l 冰冻效果
实现原理:
R = |r - g - b| * 3 / 2
G = |g - b - r| * 3 / 2
B = |b - r - g| * 3 / 2
l 熔铸效果
实现原理:
newR = R * 128 / (G + B + 1)
newG = G * 128 / (G + B + 1)
newB = B * 128 / (G + B + 1)
l 暗调效果
实现原理:
newR = (R * R / 255)
newG = (G * G / 255)
newB = (B * B / 255)
l 对调效果
实现原理:
R= (byte)(G * B / 255)
G = (byte)(B * R / 255)
B = (byte)(R * G / 255)
l 怪调效果
实现原理:
R = Sin(atan2(G, B)) * 255
G = Sin(atan2(B, R)) * 255
B = Sin(atan2(R, G)) * 255