做了那么多滤镜,今天写一篇关于滤镜的博客。可能是现在滤镜太多了,现在所有的图像相关app,基本都有滤镜功能,同时还有很多开源滤镜程序。美食滤镜、风景滤镜、人像滤镜,每家滤镜都各有特色,可以说没有最好,只有更有特色的滤镜,不过身边很多人还是比较推崇VSCO的滤镜。
那么滤镜程序都是如何实现的呢?我以前的工作流程是,滤镜效果由设计师使用ps设计,设计滤镜常用的ps功能是:调节饱和度及色相、调节曲线、叠加纹理等等,通过调节饱和度和色相,可以有针对性的调节某一个色系,使之变浓、变淡或者改变色调,而其他色系不变。同样,对rgb某一个通道进行曲线调节,可以非线性的拉伸或压缩某一颜色通道对整幅图像的影响,实现精细化的色调调节。叠加纹理要简单一些,将设计好的纹理,通过某种混合操作,叠加在原图上,实现各种特效,比如lomo滤镜,暗角除了可以通过算法生成外,也可以通过叠加纹理实现。而程序员拿到设计师的滤镜设计稿后,要做的就是编写程序高度还原设计效果。这一点多多少少还是有些挑战,因为ps经过多年发展后,不同版本有些功能效果还不一样,比如最为常见的亮度、对比度调节,算法很简单,但是要做到和ps效果一样,还是要花时间摸索、调试。我当时在实现过程中,比较难还原的是分色系:红、黄、绿、青、蓝、洋红进行饱和度及色相调节,比如整幅图像,只对红色部分进行调节,但是如果程序处理不佳,在红与黄、洋红颜色过渡带,会出现非常明显的色块、锯齿等各种非常差的效果,而ps就不会。这时就要反复推测ps的实现方式,努力做到自己的程序和ps效果一样。所以,滤镜其实也没什么复杂原理及公式推导,就是通过编写程序模拟ps各种操作,以还原设计师的设计效果。这里要提一下,对于图像处理算法工程师,如果ps不熟,那不及格的,哈哈。
下面是一些滤镜效果图,主要包括黑白滤镜、美食滤镜、风景滤镜等。