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中的脚本。

 

IOS 中openGL使用(使用基准图快速制作滤镜)的更多相关文章

  1. IOS 中openGL使用教程2(openGL ES 入门篇 | 绘制一个多边形)

    在上一篇我们学习了如何搭建IOS下openGL的开发环境,接下来我们来学习如何绘制一个多边形. 在2.0之前,es的渲染采用的是固定管线,何为固定管线,就是一套固定的模板流程,局部坐标变换 -> ...

  2. gif动图快速制作方法(附工具)

    现在写博客或是wiki的过程中,会经常引用到图片,特别是客户端经常与页面相关所以截图不可避.但是越来越多的效果仅仅一张图片是无法清楚的描述.并且博客或是wiki也是支持gif图的.gif图的制作方法有 ...

  3. gif动图快速制作方法(附工具)(转)

    现在写博客或是wiki的过程中,会经常引用到图片,特别是客户端经常与页面相关所以截图不可避.但是越来越多的效果仅仅一张图片是无法清楚的描述.并且博客或是wiki也是支持gif图的.gif图的制作方法有 ...

  4. IOS 中openGL使用教程3(openGL ES 入门篇 | 纹理贴图(texture)使用)

    在这篇文章中,我们将学习如何在openGL中使用纹理贴图. penGL中纹理可以分为1D,2D和3D纹理,我们在绑定纹理对象的时候需要指定纹理的种类.由于本文将以一张图片为例,因此我们为我们的纹理对象 ...

  5. iOS 中OpenGL ES 优化 笔记 1

    1,避免同步和Flushing操作 OpenGL ES的命令执行通常是在command buffer中积累一定量的命令后,再做批处理执行,这样效率会更高:但是一些OpenGL ES命令必须flush ...

  6. IOS 中openGL使用教程1(openGL ES 入门篇 | 搭建openGL环境)

    OpenGL版本 iOS系统默认支持OpenGl ES1.0.ES2.0以及ES3.0 3个版本,三者之间并不是简单的版本升级,设计理念甚至完全不同,在开发OpenGL项目前,需要根据业务需求选择合适 ...

  7. IOS 中openGL使用教程4(openGL ES 入门篇 | 离屏渲染)

    通常情况下,我们使用openGL将渲染好的图片绘制到屏幕上,但有时候我们不想显示处理结果,这时候就需要使用离屏渲染了. 正常情况下,我们将屏幕,也就是一个CAEAGLLayer对象作为渲染目标,离屏渲 ...

  8. iOS 中使用.9图

    背景 .9图来源于Android.为了设计出一套图,兼容Android和iOS,使用.9图的方式来对图片进行拉伸以适应不同的屏幕.在iOS中没有.9图的概念,只能先了解Android的.9图再进行模拟 ...

  9. 解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移

    解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移 解决办法1:设置tabBarItem的imageInsets属性 代码示例: childContro ...

随机推荐

  1. TCP carries HTTP data in order, and without corruption

    wTCP/IP承载几乎所有的HTTP通信. HTTP The Definitive Guide

  2. iOS 之 设置横竖屏及ViewWillAppear及视图与导航控制器嵌套时的不同反应

    设置横竖屏不成功,可能跟所在导航控制器有关 视图没有导航控制器时,又有可能不调用ViewWillAppear,这是我遇到的问题.

  3. ipyparallel 中的 pi的求法

    1.PI的求法的数学依据 如图,可以看见在边长为1的正方形里面,有一个1/4圆,我们随机在正方形中取点,点在圆内的概率和点在正方形内的概率之比正好为两者的面积之比.这样就有在圆内的点的数目比所有点的数 ...

  4. Android组件生命周期(一)

    引言 应用程序组件有一个生命周期——一开始Android实例化他们响应意图,直到结束实例被销毁.在这期间,他们有时候处于激活状态,有时候处于非激活状态:对于活动,对用户有时候可见,有时候不可见.组件生 ...

  5. win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程——转载

    操作系统:Microsoft Windows 7 旗舰版(32位) 数据库版本:SQL Server 2005 简体中文开发板 数据库下载链接:http://pan.baidu.com/share/l ...

  6. 如何在windows下载和安装Apache

    进入apache服务器官网http://httpd.apache.org/,这里我们以下载稳定版的httpd 2.4.25为例,点击"Files for Microsoft Windows& ...

  7. 把记事本文件固定在Win8的开始屏幕

    1.创建该文件的桌面快捷方式: 2.将快捷方式拷贝至开始菜单目录,在开始屏幕的查看全部中可以看见该文件快捷: 3.在查看全部中右键点击该快捷,选择固定在开始屏幕:

  8. underscore 1.7.0 api

    它是这个问题的答案:“如果我在一个空白的HTML页面前坐下, 并希望立即开始工作, 我需要什么?“ http://www.css88.com/doc/underscore/#

  9. JSP和JSTL

    JSP页面由Web服务器上的JSP引擎执行,该引擎会把JSP转成Servlet代码源文件,并以一般的Servlet方式载入执行:JSP引擎介绍客户端对JSP页面的请求,生成JSP页面给客户端的响应,该 ...

  10. python 安装与pip安装

    在大二的时候接触过一段时间的Python,最近又开始玩起了这门语言.总的来说,个人很喜欢Python的语言风格,但是这门语言对于windows并不算很友好,因为如果是初学者在windows环境下安装, ...