IOS 中openGL使用(使用基准图快速制作滤镜)
2017-03-02 21:20
295 查看
Color Lookup Table
在影像处理领域中,当我们想要调整一个影像的色彩时,经常会用到Color Lookup Table的技术。
举个简单的例子,如果我们想要让影像中的每个像素的R值变为原本的0.3倍,最基本的做法就是把每一个像素的R值乘以0.3,假设像素的大小为1000X1000,那么总共要1000000次浮点运算。
如果我们一开始先创建一张表,把所有颜色值经过处理(R值变为0.3倍)之后的结果记录起来,然后把每个像素的色彩拿去查表,得到处理之后的色彩值,那么我们只要做1000000次查表操作,会比浮点运算快很多。实际上大部分色彩调整的算法都比这个例子复杂许多,因此更能凸显出查表法的高效率。
所以什么是
Color Lookup Table呢,顾名思义,就是一张颜色映射表,也就是
基准图,用于查询一个像素需要映射的颜色值。不过如果要把所有色彩的处理结果都存起来,那这张表势必会相当大。以 RGB 24 bits 为例,每个像素占3 bytes,而总共会有16777216(256X256X256)种色彩,总共占48MB(256X256X256X3 bytes),看来并不小。因此实际上我们并不会记下所有的色彩,而是只记下部分的色彩,其他不在表内的色彩则用内插值取得处理后的结果。
当然了,由于基准图的特性,这种方式只能进行颜色上的调整(曲线,色彩平衡等),其他效果调整也只限于利用图层间混合模式的更改,例如可做暗角、漏光等效果。
接下来,我们一步步来看怎么制作一个自己的滤镜。
我们主要讲iOS的制作流程,android也是类似的。一、在GPUImage框架中找到
lookup.png这张图,图的大小是512X512,也就是64X64X64。
二、打开Photoshop,选取一张原始图。
三、为这张图创建一个组,调一下颜色。
四、现在我们效果调好了,我们需要把效果应用到步骤一中的基准图,我们会得到一张新的基准图。
五、接下来就借用GPUImage框架中的GPUImageLookupFilter来实现我们的效果吧。
总结:从Demo最终的效果来看,与我们之前在Photoshop处理出来的效果几乎是一样的。
最后我们一起简单分析一下GPUImageLookupFilter中的脚本。
相关文章推荐
- ps实例二:使用高斯滤镜制作图片阴影效果?
- 使用NSIS (NullSoft Scriptable Install System)制作安装程序快速指南
- iOS中使用c函数快速获取一个目录所占的空间大小
- ios 开发中 制作和使用静态库
- 使用VBA快速制作工资条
- [转]OpenGL快速渲染函数glDrawElements使用说明
- iOS开发之使用lipo命令制作模拟器与真机通用静态库
- 【iOS-Cocos2d游戏开发】使用cocosBuiler制作cocos2d场景
- 【iOS-Cocos2d游戏开发】使用cocosBuiler制作cocos2d场景
- iOS开发之使用lipo命令制作模拟器与真机通用静态库
- VC++2010 Ribbon 透明图标快速制作使用方法
- 使用HTML 5/CSS3五步快速制作便签贴特效
- 使用HTML5/CSS3五步快速制作便签贴特效
- ios制作和使用静态库
- 【iOS-Cocos2d游戏开发】使用plist文件制作简单精灵
- 使用NSIS (NullSoft Scriptable Install System)制作安装程序快速指南 ---- 转
- 【iOS-Cocos2d游戏开发之十七】灵活使用精灵可视区域(TextureRect)与锚点(anchorPoint),并结合可视区域与锚点制作进度条!
- 【iOS-Cocos2d游戏开发之十七】灵活使用精灵可视区域(TextureRect)与锚点(anchorPoint),并结合可视区域与锚点制作进度条!
- iOS中使用c函数快速获取一个目录所占的空间大小
- iOS开发:如何使用ShareSDK让APP快速拥有分享功能