只需 4 步,手把手教你如何实现滤镜功能

源地址:http://zihua.li/2014/06/implement-instagram-like-filters/

滤镜对于照片而言,起到的是雪中送炭和锦上添花的作用。优秀的滤镜,能让随手之作显得别有风味,又能为已经绝色的照片画龙点睛。现在几乎凡是和照片相关的应用程序都有滤镜功能,而相较而言介绍滤镜原理和实现的文章又少之又少,为此我专门写了这篇文章来系统地讲解滤镜是如何实现的。

什么是滤镜

滤镜最初是指安装在相机镜头前过滤自然光的附加镜头,用来实现调色和添加效果。一些数字图像处理软件(最著名的如 Adobe Photoshop)提供了一些特定的预设工具用来实现相机滤镜的效果,这些工具也就自然而然地被称作“滤镜”。软件实现的滤镜可以模拟大部分的镜头滤镜,如色温变换滤镜(LB)和强调滤镜等,但由于无法再现拍摄环境,软件滤镜无法复原照片中未包含的信息,进而也难以实现偏光镜和紫外线滤色镜(UV)的效果。

实现滤镜的步骤

就模拟镜头滤镜而言,实现软件滤镜无外乎是对照片中的色彩进行映射的过程。然而软件滤镜并不止于此,复杂的软件滤镜还需要为照片增加光线变化(如 LOMO 的暗角效果)、材质和相框等,最近美图秀秀针对国内环境问题推出的“去雾霾”滤镜正是复杂的软件滤镜的一种体现。不过再复杂的软件滤镜,实现起来也不外乎如下几个步骤。

1. 颜色映射

昏黄的颜色让人联想到古老与质朴,淡绿的颜色让人感到柔和与舒适:颜色是一张照片的灵魂,而实现滤镜最重要的一步就是颜色映射。颜色映射是指将原来照片中的每一种颜色,通过某种映射方法转换成另一种颜色。最常见也最简单的映射方法是查表法。

查表法的原理是在一张表中为每种颜色记录一个对应的映射目标颜色,当用查表法对一张照片做颜色映射时,只需要遍历照片的每个像素点,然后在表中找到该像素颜色对应的目标颜色,最后将该像素设置为目标颜色即可。查表法实现的前提是颜色的映射与周围的颜色无关,即一种颜色无论周围的颜色为何、无论其位于照片的哪个位置,其目标颜色都应该是相同的。

RGB 可以表示的颜色数量为 256*256*256 = 16,777,216,如果要记录每种颜色的映射结果,那么颜色表需要 一千六百多万条记录,这显然无法应用到实际的工程中。为了简化起见,一般每相近的 4 种颜色采用一条记录存储,这样颜色表只需要 64 * 64 * 64 = 262,144 条记录。

这里以 Lev Zelensky 首先发表的一个基准颜色表为例:

上表将 262,144 种颜色分为 8 个块,每块 64 * 64 格,每一格的颜色都不同。进行颜色映射时,首先使用数字图像处理软件对该基准颜色表应用要模拟的滤镜来生成映射表(如下图),然后对要处理的照片的每个像素,从基准颜色表中找到该像素颜色的位置,然后在映射表的相应位置就可以得到目的颜色。

Lev Zelensky 为 iOS/OS X 上著名的图像处理库 GPUImage 加入了 GPUImageLookupFilter) 方法来实现上述过程。

2. 叠加材质

只进行颜色映射就可以实现大部分简单的滤镜,然而复杂的滤镜需要更多的步骤来完成。其中最为典型的就是 LOMO 效果了。要实现 LOMO 效果,除了通过颜色映射让颜色更加鲜艳外,还需要为照片增加四周的暗角。首先需要一张暗角素材:

然后将该素材叠在照片上,并应用 Overlay 混合算法。

要注意的是根据材质不同,可以选择不同的混合算法。只是对暗角这一材质而言,Overlay 可以带来最好的效果。另外一点就是先进行颜色映射还是先叠加材质并没有固定的规则,需要根据实际效果进行选择。就 LOMO 暗角而言,先叠加材质的效果更好。

3. 应用相框

严格来说相框并不属于滤镜的一部分,但是考虑到好的相框可以为照片提色不少,这里也顺便提一句。根据相框的不同,应用的照片上的方法也不同,有的相框可以直接盖在照片上,有的则需要按照某种混合算法和照片进行混合,但无论哪种方式,应用相框都算是整个滤镜最简单的部分了。与相框类似的就是照片装饰物,比如一颗桃心或用户可以自定义的文字,实现照片装饰物并没有任何技术难度,唯一要记住的点就是不要胡乱的为你的滤镜加入装饰物,否则会让滤镜落入俗套。

4. 反复

最终的滤镜效果可能需要反复应用上面的步骤才能实现,比如 Instagram 的滤镜很多都是应用了多种材质才得以完成。这一过程需要设计者的保留充分的耐心,一点一点地琢磨,一款优秀的滤镜才能得以诞生。

只需 4 步,手把手教你如何实现滤镜功能

时间: 2024-08-05 02:09:14

只需 4 步,手把手教你如何实现滤镜功能的相关文章

在Unity 5.2中,只需几步即可轻松使用Unity服务!

孙广东  2015.9.14 转载自官方: 上周我们发布了Unity 5.2,通向Unity服务的大门已为您敞开!在编辑器内轻松使用Unity Ads, Unity Analytics,Unity Cloud Build 和 Unity Multipalyer, 从此告别SDK!就是这么简单,只需几步! 1 打开服务窗口 在窗口菜单点击Unity Service,或者点击右上角的"Cloud"图标. 2 创建项目ID 下面就开始创建您的项目Project ID了,请注意:Project

Android实战——轻松集成百度自动更新SDK,只需3步

轻松集成百度自动更新SDK,只需3步 集成百度自动更新SDK前提: 1.需要上线作品进行测试,本人用自己上线的作品进行了测试. 2.需要上线的作品defaultConfig中的versionCode大于手机端的versionCode,本人上线的作品versionCode为2,测试机为1. 本人作品:一款免下载,免安装,即点即用的应用收纳集,应用袋:http://shouji.baidu.com/software/9529251.html 步骤一:在百度开发者平台选择下载百度自动更新SDK,htt

如何将CAD图纸转换成彩色,只需几步即可轻松搞定!

如何将CAD图纸转换成彩色,只需几步即可轻松搞定!在日常的工作中,建筑设计师们在编辑器完图纸后,基本图纸都是黑白的,这样不利用我们更好的进行查看,那就需要将CAD图纸的颜色进行转换,如何将CAD图纸转换成彩色,具体要怎么操作了?本篇教程就教教大家在迅捷CAD转换器中如何将CAD图纸转换成彩色只需几步的具体操作方法,想要了解的朋友就感觉来看看吧! 第一步:打开常用电脑,在电脑桌面中任意的打开一个浏览器,在浏览器的搜索框中搜索迅捷CAD转换器,然后鼠标点击进入官网,点击 下载安装最新版本的CAD转换

vuex其实超简单,只需3步

前言 之前几个项目中,都多多少少碰到一些组件之间需要通信的地方,而因为种种原因,event bus 的成本反而比vuex还高, 所以技术选型上选用了 vuex, 但是不知道为什么,团队里的一些新人一听到vuex,就开始退缩了, 因为vuex 很难? 真的很难吗?今天我们用简单的3步来证明一下,vuex有多简单. 纯属个人经验,难免有不正确的地方,如有发现,欢迎指正! 这是一个针对新手的入门级教程.入门级教程.入门级教程 第零步 新建一个vue项目,安装vuex,这里不做过多介绍,能点进来的,默认

只需两步快速获取微信小程序源码

只需两步快速获取微信小程序源码 第一次在掘金这样高大上的社区写文章,忐忑地敲下我获取小程序源码过程中的经验分享. 最近在学习微信小程序开发,半个月学习下来,很想实战一下踩踩坑,于是就仿写了某个小程序的前端实现,过程一言难尽,差不多两周时间过去了,发现小程序的坑远比想象的要多的多!!在实际练手中,完全是黑盒的,纯靠推测,部分效果在各种尝试后能能做出大致的实现,但是有些细节,实在不知道如何去实现.这种时候,真的很想一窥源码,查看究竟,看看大厂的前端大神们是如何规避了小程序的一些比较奇葩的坑. 于是就

只需一步教你解决Win10下Android Studio terminal无法使用的问题

Android Studio集成和添加了一些实用的工具,其中一个便是terminal.在Windows平台下Android Studio中的terminal在原理上实际使用的是window中的cmd控制台也就是位于C:\Windows\System32\目录下的cmd.exe.升级了win10的用户会发现,win10下的cmd比以前平台下的cmd改进了不少,但这些改进也导致了Android studio在调用cmd上出现了问题. 解决办法: 打开cmd控制台窗口,在选项中进行如下操作,如图: 然

Win8安装教程!笔记本用U盘安装Win8只需三步

1Win8安装教程(一)制作WinPE启动U盘回顶部 Win8客户预览版怎么安装?Win8安装教程跟Win7安装教程几乎一样,因此安装Win8的方法多达10多种也不足为其!笔者在此介绍成功率最高的那一种方法——用U盘进入WinPE来安装Win8(用U盘装Win8)! 笔者介绍的Win8安装教程可能不是最简单的,但绝对是最通用的,可以应用在任何可以安装Win8的电脑上,包括新买的笔记本,包括已经安装好其他系统的电脑!反正,只要你的电脑支持U盘启动,就能用这种方法来安装Win8!在笔者看来,这三步走

卓越培训:只需五步,让你轻松学好Java!

俗话说磨刀不误砍柴工,无论学习什么语言,都还是要讲究一些技巧,那么如何学Java呢?中软卓越Java培训老师为大家总结快速学习Java的5个步骤,帮你4个月学会Java. 1.确定学习java的决心.万事开头难,其实对于编程来说,开头并不是那么难,因为开始学习编程的小伙伴基本上都有兴趣点,有一腔热血挺过入门问题不大,学习编程只靠一腔热血还是不够的,贵在坚持,很多人都是倒在坚持的路上,半途而废,学习编程其实也没啥好的捷径就是先搞懂理论,然后开始不停的练习实践,反反复复,其实这个过程都知道要经历多少

Android Studio 主题及字体修改,只需五步

在我们刚学习Android Studio时,最初可能就是Android Studio主题及字体的修改.其实很简单,只需要简单的五步. 1.打开设置功能窗口.两种方式: a. [File]菜单-->打开[Settings]选项: b. 工具栏中选中[Settings]图标打开. 2.找到[Appearance &Behavior]-->Appearance选项,IDE默认[theme]为Intellij主题.如图: 3.如上图,点击[Theme]下拉选项,选中[Darcula]主题,点击