
2.6 “美图秀秀”中的阿宝色滤镜算法与实现
本节属于本章内容的实战,也是本书第一场实战练习。在早期的“美图秀秀”软件中,有一款阿宝色滤镜,效果很受大家喜爱,如图2.24所示。

图2.24 阿宝色滤镜的效果
本节就针对这一款滤镜,使用我们前面所学内容进行实战演练。
· 效果分析
首先,我们分析这款滤镜的效果特点:
(1)绿色转换为了蓝色。
(2)淡红色或者浅红色转换为了玫瑰红色。
(3)画面没有发生几何形变或者像素位置的偏移。
然后,我们对上述三个特点进行分析,得到如下结论:
(1)该滤镜做了颜色变换,也就是使用了颜色滤镜。
(2)该滤镜没有使用任何几何滤镜叠加。
最后,我们总结可知,这个效果仅仅属于一款颜色滤镜。
· 算法实现
有了上面的分析与总结,我们首先使用PS来进行滤镜效果的模拟,具体操作步骤如下:
(1)在 PS中打开测试图,复制图层,选择“图像”→“模式”→“Lab颜色”命令,进入Lab颜色模式,如图2.25(a)所示。
(2)选中a通道,进行曲线调节,如图2.25(b)所示。

图2.25 阿宝色效果制作步骤1和步骤2

图2.25 阿宝色效果制作步骤1和步骤2(续)
(3)复制a通道,粘贴到b通道,然后转换为RGB颜色模式,如图2.26所示。

图2.26 阿宝色效果制作步骤3
(4)调节曲线,得到最终效果图,如图2.27所示。

图2.27 阿宝色效果制作步骤4
经过上述几步操作,我们最后得到的阿宝色效果如图 2.27 下方图所示。这种滤镜对于风景或者人像远景照片,都有着较好的效果,因此深受摄影爱好者的欢迎。有了上述实现步骤,我们就可以进行图像算法的开发了。
在算法开发环节,由于上述阿宝色效果是单纯的颜色滤镜,而且使用了曲线调节等操作,如果我们没有PS的曲线调节代码,那么可以直接选择LUT颜色滤镜来实现,步骤如下:
(1)将经典LUT导入PS。
(2)按照在PS中制作阿宝色效果的步骤对LUT进行调节,得到如图2.28所示的阿宝色LUT。

图2.28 阿宝色LUT(左图为原表,右图为阿宝色LUT)
(3)使用LUT滤镜代码实现阿宝色滤镜效果,如图2.29所示。

图2.29 阿宝色效果图
· 代码编程
我们使用C#上层调用C算法API的模式来实现,C代码如下:

上层C#工程代码如下:





这就是整个阿宝色滤镜的开发过程,如果想把算法移植到手机端,那么只需把 C 代码编译成 iOS或者 Android对应的库即可。阿宝色滤镜无论是以前还是现在,都比较受大家的欢迎,因为它总能给人一种红蓝相间的独特风格,让我们看到一个不一样的世界。
本节所有代码工程及DEMO见代码包中2.6文件夹中的文件。