图像滤镜艺术--方法论

最近,对我所知道的滤镜开发方法做个总结,分享给大家,知识多数来自网络,我在这里做个小结。

所谓滤镜,最初是指安装在相机镜头前过滤自然光的附加镜头,用来实现调色和添加效果。我们做的滤镜算法又叫做软件滤镜,是对大部分镜头滤镜进行的模拟,当然,误差也就再所难免,我们的宗旨只是无限逼近。也是这个原因,我们无法再现真实的拍摄场景,无法复原照片中未包含的信息,进而也难以实现某些特殊滤镜效果,诸如偏光镜和紫外线滤色镜(UV)的效果等等。

目前一款软件滤镜效果的实现,我们可以归结为以下几个部分:

1,基本变换

这是滤镜效果的第一步,我们可以根据喜好,设计各种图像效果,这里所有的图像效果可以统一使用如下公式表示:

F(r,g,b,a)=f(r,g,b,a);

这个公式包含四个变换,即RGB颜色空间中RGB三个分量的变换以及透明度Alhpa的变换,这里我们简写为A的变换。

举个灰度变换的例子,它对应的F——f变换如下:

F(r) = b * 0.114 + g * 0.587 + r * 0.299;

F(g) = b * 0.114 + g * 0.587 + r * 0.299;

F(b) = b * 0.114 + g * 0.587 + r * 0.299;

F(a) = a;

这个灰度化也就是一个基本变换。有了这个基本变换,图像也就达到了一定的效果,但是,一些复杂的滤镜,并非简单的基本变换,而是一些复杂的效果叠加,因而也就有了 下面几个步骤。

2,晕影材质模板叠加

打开Instagram应用,我们会发现好多效果都有一些晕影,主要表现为图像四个角偏暗,中间正常或者偏亮,这个其实就是叠加了一定的材质的原因,这里我们介绍Instagram中经典的晕角材质模板,如下图所示:

像这样的材质我们如何叠加呢?这里就会使用一些叠加的算法,其中最常用的还是Photoshop中的混合图层算法,这些混合算法我在前面开始的博客中已经介绍,大家可以仔细研究,这一步主要是使用这些混合图层算法将材质模板和我们第一步基本变换得到的效果图进行混合,从而得出各种晕角效果。当然,这些混合算法并非唯一 ,你完全可自己尝试设计自己喜欢的混合图层算法。

这里给出Photoshop混合图层算法的链接http://blog.csdn.net/trent1985/article/details/40891661

3,风格模板叠加

这里的风格叠加与2中的材质叠加算法差不多,这里是说主要是个步骤问题,举个例子,为了实现老照片这个效果,我们第一步通过颜色基本变换,可以达到老照片的泛黄效果,但是还不逼真,因为老照片往往还有一些图像噪声,以及裂纹裂痕,这些效果如果你的算法无法实现,那么,你可以把这些通过PS做成一个模板,在这一步中叠加到图像上面,这样也就实现了更为逼真的效果。

4,相框模板叠加

有了1-3的步骤,一款滤镜效果就已经基本完成了,但有时候,你还会想要更加美观,那么你可以使用PS制作一些 精美的相框模板,叠加到滤镜效果上面,岂不是更加美观呢?

上面4个步骤也就是一款滤镜开发的步骤,当然这几个步骤不一定是一款滤镜必须的,可以是其中一个步骤,或者多个步骤,但是,归根结底,任何一款软件 滤镜的实现,应该都逃不出这几个步骤了吧。 只要我们掌握了这 几个步骤 ,那么多次尝试之后 ,总会开发出你 所 喜欢的滤镜效果的。

5,针对第一个步骤,介绍个快速实现方法:

对于任何一款滤镜,如果有基本变换这个步骤,那么我们都可以通过颜色映射构建一个映射表,然后通过查表来快速实现该变换效果,这样可以大大提高滤镜的速度,提升用户的体验。

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

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

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

使用这种方法,你的滤镜速度可以大大提升。

以上5个步骤就是我结合网络资源和个人总结的部分,喜欢滤镜开发的朋友们可以试试。

最后,介绍一个万能滤镜破解方法:

对于一款滤镜,我们构建一个模板,这个模板大小自定,可以看到滤镜效果即可,比如Instagram,它指定的图像大小是530*530,那么我们构建一个530*530大小的空白模板图像,假如我们要破解Hudson效果,那么,经过 我们分析,这个效果不仅包括基本变换,而且还有 晕影 ,甚至有 与位置相关的梯度模板,这个是破解的 难点,如何 破解,我们可以使用如下步骤:

1,构建256个530*530大小的模板,分别填充0-255种颜色,即灰度颜色;

2,将每个模板 进行Hudson效果处理,得到相应的映射模板库,这个库也就记录了所有的Hudson效果设置,包括基本变换,晕影,梯度等;

3,对于任何一张530*530大小的原始图像,我们只要从2中的模板库中找到对应颜色,对应位置的像素值,那么 这个值就是Hudson的效果;

大家仔细想一下是不是这个道理,有得必有失,这话一点不错,这个方法可以破解 任何 一款滤镜,但是,牺牲的的 确实滤镜的效率,想一下,是不是呢?

好了 ,今天的介绍就到此结束了,大家有什么疑问可以联系我 :

本人邮箱[email protected], QQ:
1358009172

时间: 2024-12-18 13:53:38

图像滤镜艺术--方法论的相关文章

图像滤镜艺术--编码基础(Photoshop基础变换的代码实现)

自从上一篇博客写完之后,到现在已经有段时间了,这段时间不是不想接着写,只是想做的更好了在写出来给大家看呵呵. 今天,我将给大家介绍制作图像滤镜的基础,也就是PS中的基本命令如何用代码实现,这里包括各种混合图层,去色命令,亮度对比度调整,饱和度调整以及曲线调整等,这些命令都是最基础的,如果我们掌握了这些知识,那么,一些复杂的滤镜也就有稳定的根基了. 1,混合图层 PS中,混合图层是制作滤镜的必需品,他包括了正常模式,溶解模式,变暗模式,正片叠底,颜色加深,线性加深,深色模式,变亮模式,滤色模式,颜

图像滤镜艺术---流行艺术风滤镜特效PS实现

今天,本人给大家介绍一款新滤镜:流行艺术风效果,先看下效果吧! 原图 流行艺术风效果图 上面的这款滤镜效果是不是很赞,呵呵,按照别人以往的逻辑,我会先介绍PS实现过程,然后,在下一篇博客中将介绍完整的C#代码实现,并附上程序DEMO给大家分享! 现在开始PS过程: 1,打开图像,复制两份图层A,B: 2,将B图层隐藏,对图层A执行: 反相操作-"明度"图层混合-透明度"50%" 如图所示: 3,可见B图层,对B执行: 阈值(128)-"正片叠底"

图像滤镜艺术---ZPhotoEngine超级算法库

一直以来,都有个想法,想要做一个属于自己的图像算法库,这个想法,在经过了几个月的努力之后,终于诞生了,这就是ZPhotoEngine算法库. 这个算法库目前包含两个模块:基础图像算法模块+滤镜模块,使用C语言实现,现在免费分享给大家,可以适用于PC/Android/Ios三大平台. 1,基础图像算法模块 这个模块,本人以Photoshop基础算法为原形,模拟出了PS大部分的基础算法. 为什么选择Photoshop算法?这个也是我的算法库一个优势,目前开源算法库多如牦牛,但是,能和PS媲美的,少之

图像滤镜艺术---乐高像素拼图特效

本文介绍乐高像素拼图特效滤镜的实现,这里仅仅介绍PS实现过程,关于程序的实现,大家可以使用ZPhotoEngine来实现,这个引擎可以在www.zealpixel.com上下载,是免费的. 现在介绍PS的实现过程: 1,打开一张美丽的图像: 原图 复制图层,命名为"马赛克",然后对该图层执行"滤镜-像素化-马赛克-20": 2,复制"马赛克"图层,命名为"马赛克副本": 3,对马赛克副本图层执行"调整-色调分离-4&

图像滤镜艺术---图像光照效果滤镜

图像光照滤镜 图像光照提滤镜主要是模拟阳光照射下的图像效果,通常使用在暗光环境下拍摄的照片中,或者是没有太阳的日景照片中.可调参数主要包括光源位置,光照半径和光照强度,通过调整这些参数,来达到我们想要的阳光明媚的效果.算法过程如下: 图像光照效果就是在图像中添加上一个太阳光源,以此模仿光照条件.主要算法包括:1光源选择:2光照像素值求取. 1,光源选择.我们假设光源位置坐标为S(X,Y),其中光源坐标一定要保证在图像大小范围内.有了光源位置,我们就可以来构建一个圆形区域模拟光照了.我们设定光源半

图像滤镜艺术---Oilpaint油画滤镜

Oilpaint油画滤镜 图像油画效果实际上是将图像边缘产生一种朦胧,雾化的效果,同时,将一定的边缘模糊化,这样图像整体上看去像素与像素之间就像雾一样随机呈现. 算法过程如下: 假设当前像素为P(x,y),他的随机位置为Pd(dx,dy),那么算法公式如下: 其中,K(v)为最大值不大于v的随机数正数,v为雾化阈值,v值越大,雾化程度越明显,反之,雾化程度越小,v=0时,图像无变化效果. 核心代码如下: /// <summary> /// Mosaic filter. /// </sum

图像滤镜艺术---(Sketch Filter)素描滤镜

(Sketch Filter)素描滤镜 素描滤镜的实现方法比较简单,这里我们直接写出算法过程如下: 1,对原图S进行去色命令得到灰度图A: 2,对A进行反色得到图像B: 3,对B进行高斯模糊得到图C: 4,将C与B进行颜色减淡的图层混合算法: P(x,y) = Pb(x,y) + (Pb(x,y)* Pc(x,y)) / (256 - Pc(x,y)); 在步骤3中,可以添加变量edgeIntensity(edgeIntensity>=0),来控制素描的边缘强度: 以上就是素描的算法实现. 核心

图像滤镜艺术---水彩画滤镜

水彩画滤镜 水彩画滤镜算法如下: 1,假设原始图像为F(x,y),灰度化得到G(x,y): 2,构建一个半径为Radius的正方形模板M,边长为2*Radius+1: 3,将M在F上依次遍历每个像素,对于当前像素P(x,y): 设置一个油漆桶数N,由于图像灰度值范围为0-255,因此我们油漆桶的数量N要小于255,这个油漆桶是用来盛放不同类别的像素. 3.1首先按照油漆桶数N将0-255的范围划分为等距的N个油漆桶,对于模板中对应的像素,我们按照其灰度值,依次将其放入相应的油漆桶中: 3.2统计

图像滤镜艺术--暴雨滤镜

    今天给大家介绍的是一款暴雨滤镜,可以将一些风和日丽的风景照片变换为暴雨效果的照片,废话不多说,先给大家看下效果: (a)原图 (b)PS效果图 (c)代码实现效果图 这个暴雨滤镜也比较简单,按照之前的步骤,我们依次介绍PS实现过程以及代码实现过程. PS实现过程如下: 1,暴雨模板图像生成: 这个过程我简单介绍一下我的实现,不过大家不需要自己制作模板了,我已经把模板放在了资源里,大家直接使用即可.模板制作步骤如下: 1.1 新建一个空白图像,大小按照自己的需要确定,我这里取的是1000*