所谓滤镜,最初是指安装在相机镜头前过滤自然光的附加镜头,用来实现调色和添加效果。我们做的滤镜算法又叫做软件滤镜,是对大部分镜头滤镜进行的模拟,当然,误差也就再所难免,我们的宗旨只是无限逼近。也是这个原因,我们无法再现真实的拍摄场景,无法复原照片中未包含的信息,进而也难以实现某些特殊滤镜效果,诸如偏光镜和紫外线滤色镜(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做成一个模板,在这一步中叠加到图像上面,这样也就实现了更为逼真的效果。这里放上一个Instagram滤镜的风格模板图像如下所示:

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的效果;

这1-3步,示意图如下所示:

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

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

本人邮箱dongtingyueh@163.com, QQ: 1358009172

最后,分享一个专业的图像处理网站(微像素),里面有很多源代码下载:
http://www.zealpixel.com/portal.php

图像滤镜实现万能方法研究相关推荐

  1. 图像滤镜艺术---图像滤镜晕影调节算法研究

    原文:图像滤镜艺术---图像滤镜晕影调节算法研究 本文对滤镜中常见的晕影,晕角效果的实现做了研究,具体如下: 1 晕影调整算法 所谓晕影就是给图像四个角添加暗影效果,这暗影向图像中心逐渐淡化.我们使用 ...

  2. 论文精读-基于双目图像的视差估计方法研究以及实现

    基于双目图像的视差估计方法研究及实现 第一章 绪论 1.1 课题的研究背景与意义 1.2 双目视差估计的研究现状 1.2.1 传统立体匹配方法研究现状 1.2.2 统计学习方法研究现状 1.2.3 深 ...

  3. 论文笔记 | 深度学习图像数据增广方法研究

    1 背景 在许多领域,受限于数据获取难度大,标注成本高等原因,往往难以获得充足的训练数据,这样训练得到的深度学习模型往往存在过拟合的问题,进而导致模型泛化能力差,测试精度不高等. 数据扩充的作用:扩大 ...

  4. matlab遥感影像相对配准,基于IHS 变换的遥感影像融合方法研究

    摘 要:为了解决遥感影像空间分辨率与光谱信息不能兼顾的问题,即全色影像具有较高的空间分辨率但缺乏光谱信息,多光谱影像光谱分辨率高,光谱信息丰富,但其空间分辨率低的问题,本文采用MATLAB 实验工具, ...

  5. 无参考图像的清晰度评价方法 (图像清晰度的评价指标)

    无参考图像的清晰度评价方法 from: http://nkwavelet.blog.163.com/blog/static/227756038201461532247117 在无参考图像的质量评价中, ...

  6. 【图像超分辨率】遥感数据的高斯金字塔尺度上推方法研究

    0 引言: 本文提出了一种利用高斯金字塔的图像模糊特性进行遥感数据尺度上推的方法,在对金字塔每一层的数据高斯模糊的基础上,通过多次连续的降采样,得到一系列不同尺度的数据,从而满足实际应用的空间分辨率要 ...

  7. 【图像融合】图像融合质量评价方法的研究

    图像融合质量评价方法   建立通用的图像融合质量评价标准是图像融合技术急需解决的一个问题.   问题出现的原因: 同一融合算法对不同类型的图像,其融合效果不同: 同一融合算法,对同一图像观察者感兴趣的 ...

  8. 多通道LMMSE图像超分辨复原方法研究-附Matlab代码

    ⭕⭕ 目 录 ⭕⭕ ✳️ 一.引言 ✳️ 二.多通道LMMSE复原算法 ✳️ 三.实验验证 ✳️ 四.参考文献 ✳️ 五.Matlab程序获取与验证 ✳️ 一.引言 数字图像处理又称为计算机图像处理, ...

  9. 基于文本和图像的网络舆情分析方法研究

    基于文本和图像的网络舆情分析方法研究 一.舆情分析技术 (1)舆情数据采集与提取技术: (2)自动文摘技术: (3)事件发现与追踪技术: (4)舆情情感分析技术. 二.舆情情感分析模型 (1)基于知识 ...

  10. 红外目标图像中阈值切割方法的比較与研究

    红外目标图像中阈值切割方法的比較与研究   摘要:本文主要以红外图像目标检測技术为背景,在图像阈值切割中以最大熵准则及遗传算法为基础.研究了一维最大熵值法(KSW法)及基于遗传算法的KSW熵法单阈值. ...

最新文章

  1. pkg mysql 在macOS 上的管理
  2. ssh免密登录linux服务器
  3. 腹式肠道操 缩胃瘦身有奇效 - 健康程序员,至尚生活!
  4. 神经网络训练集最少可以是多少个?
  5. Windows和Linux双系统时间不对的问题。
  6. 2020年末总结,脚踏实地,一步一个脚印——致敬自己一年的心酸历程
  7. java session 永不过期_Java Web Application使Session永不失效(利用cookie隐藏登录)
  8. idea java gitignore,关于idea的gitignore文件编写及解决ignore文件不生效问题
  9. macosx安装之旅(1)-硬盘安装
  10. 微信打飞机项目小结-屏幕适配
  11. matlab如何选局部最大值,如何在MATLAB中的图像中找到局部最大值?
  12. 从.weights中提取权重数据
  13. vim中,c/cpp文件如何在头文件和.c/.cpp文件中快速的进行跳转
  14. tkinter 设置不可编辑_jquery 设置页面元素不可点击、不可编辑、只读(备忘)
  15. 怎么制作公司网页教程【网站制作】
  16. Java_常瑞鹏 java_网络编程实现一个 聊天程序
  17. Python pandas在读取csv文件时(linux与windows之间传输),数据行数不一致的问题
  18. Ubu开启ftp服务 启用root用户登录
  19. 关于wrf格式的课件的视频转换问题
  20. HTML中的XMP标签

热门文章

  1. 微软lumia固件服务器,IT之家学院:微软Lumia 950 XL刷Win10 ARM64教程增补进阶版
  2. 怎么在mac下运行映像dmg_如何将Apple Mac OS X系统DMG镜像文件转换成ISO镜像文件呢?...
  3. synchronized偏向锁
  4. sas 服务器版安装文件,安装SAS怎样配置服务器
  5. 数据建模-经典教程笔记
  6. 【转】一篇易懂的CAN通讯协议指南1
  7. 34个有用的 JavaScript 库,现在就可以用起来
  8. STM8S103之独立看门狗和窗口看门狗
  9. windows 超简单实现多用户远程桌面,RDP WRAPPER
  10. 小米笔记本电脑启动失败