图像特效滤镜算法研究与实现

2018-12-22 10:55王昕瑞林忠
电脑知识与技术 2018年33期

王昕瑞 林忠

摘要:随着自媒体以及移动设备拍摄成为社会主流媒体,对照片进行编辑以得到特殊效果的需求应运而生。研究了目前常见的几款图像特效滤镜的算法原理,详细描述了算法流程,并用C++语言及MFC编程框架实现了水彩画滤镜、漫画滤镜、交叉冲印滤镜、怀旧风格滤镜、光照效果滤镜、漏光滤镜等6个特效滤镜。为开发图像编辑软件中的滤镜组件提供了良好的参考和借鉴。

关键词:图像滤镜;水彩画滤镜;漫画滤镜; 交叉冲印滤镜; 光照效果滤镜

中图分类号:TN911 文献标识码:A 文章编号:1009-3044(2018)33-0200-03

Abstract:As the self-Media and mobile devices became the mainstream media in the society, the need to edit photos to get special effects came into being. This paper studies the algorithm principles of several common image effects filters, describes the algorithm flow in detail, and realizes six special effects filters, such as watercolor filter, comic filter, cross-print filter, nostalgic style filter, light effect filter and leak filter, with C++ language and MFC programming framework. It provides a good reference and reference for developing filter components in image editing software.

Key words:Image filters; comic filters; sketch filters; lighting effects filters; watercolor filters

1引言

隨着计算机硬件性能发展和图像处理算法的不断进步,数字图像处理技术的应用越来越广泛[1]。在移动互联网时代,手机和摄像设备的完美结合实现了对图像的强力支持。在此背景下,诞生了众多的优秀的移动端图像编辑软件和图像社交软件。图像编辑软件比较著名的有美图秀秀和Snapseed,图像社交软件有大名鼎鼎的Instagram。图像特效滤镜是这些软件的核心功能之一,Instagram相机更是以精美丰富多彩的滤镜著称,而Snapseed和美图秀秀具有复杂优秀的修图功能,其中也包括丰富的滤镜功能。Instagram的设计者开发了数十种,用来适应不同场景和不同风格的滤镜,简化了步骤,极大地方便了用户的操作,使得用户只要通过点击手机屏幕就能够获得摄像师修图之后的图片效果,广大用户对它赞不绝口。而Snapseed相机软件则是另外一种实现图像处理类的移动终端手机app,它不仅有滤镜特效处理图片的功能,而且在此基础上还添加了一些别的自定义修改图片的功能[2]。这些软件提供的滤镜虽然各有差异,但是有一些常用的滤镜基本上各个软件都会支持,比如,水彩画滤镜、漫画滤镜、交叉冲印滤镜、怀旧风格滤镜、光照效果滤镜、漏光滤镜。研究这些滤镜的算法原理及其实现,对于理解滤镜效果,设置合适的滤镜参数,编程实现滤镜组件等具有极大的意义[3]。

2图像滤镜算法设计

针对某一类功能的图像滤镜,各个软件实现的功能略有差异,这说明滤镜算法是一个比较开放的算法:只要能实现某个特定目的,具体所采用的算法流程可以多种多样。设计了水水彩画滤镜、漫画滤镜、交叉冲印滤镜、怀旧风格滤镜、光照效果滤镜、漏光滤镜等6种常见滤镜的算法流程如下。

2.1水彩画滤镜

4.统计邻域直方图Hist最大的值所对应的C值,将该值赋给邻域中心点像素。

该算法存在两个参数:邻域半径和平滑度Strength。邻域半径越大,则图像越模糊,边缘细节越少。平滑度越大则图像色彩越丰富,反则,则图像色彩越单调。

2.2漫画滤镜

漫画滤镜可以使图像以漫画风格的形式重现。它的特点如下:

1.颜色单一。漫画中,使用的颜色比较单一,一般不会有很多种颜色,不像拍摄的照片那样,具有丰富的颜色信息[5]。

2.边缘较强。漫画中,前景物体的边缘部分一般有比较明显的边缘痕迹,而且以黑色为主,给人一种边缘突出的感觉。

3.形象夸张,内容概括,漫画中,作者在描述人物表情时,效果等等都十分夸张。这里由于表情的处理已经涉及人脸识别算法,就不做深入研究。

由此漫画滤镜算法的流程设计如下:

步骤一:使用水彩画滤镜算法去除原图像内部过多的颜色信息。这里设置水彩画算法强度值为10。

步骤二:将原始输入图像进行灰度化,并使用Sobel算子进行边缘检测,求得边缘强度。

步骤三:设置边缘强度控制变量m_value,调节边缘强度。假设Pedge(x,y)是由Sobel算子得到的图像(x,y)位置的图像边缘强度值。则边缘强度值的调整公式如式(4)所示。

2.5光照效果滤镜

光照效果滤镜是模拟原图像中点光源照射的图像效果。在图像后期处理中,处理人员通常会对在拍摄环境较暗的照片或者是没有阳光的日景照片使用这种方法,这会使得图片局部亮度得到很好的调整。调整参数主要有光照半径,光源位置和光照强度系数,通过对这三个参数的调整,达到预期的光照的效果[8]。

光照效果滤镜的实际原理为:光照强度按照像素点与光源的距离长度增加而逐渐衰减,当距离超过光照半径后光照强度为0,整幅图像的像素值修改为光照强度值加上原始值。根据该原理,设计该滤镜算法以式12和式13的方式进行滤波,式中X和Y表示光源的坐标,x和y表示待处理像素的坐标值,K表示光照强度系数,R表示光照半径,I表示像素值。

4结论

滤镜是图像编辑软件或者图像社交软件中的必备元素。滤镜的丰富效果可以模拟多种拍摄风格及绘画风格,给摄影的后期处理提供了丰富的选择。滤镜的实现可以采用多种不同的算法,实现滤镜的关键步骤是研究该滤镜模拟的拍摄风格或者绘画风格的特点,抽象出其中的数学模型,从而将其和传统的图像处理技术相联系,设计出相关效果的濾镜。本文分析了水彩画滤镜、漫画滤镜、交叉冲印滤镜、怀旧风格滤镜、光照效果滤镜和漏光滤镜等6中滤镜的特点,设计了实现这这些滤镜的算法步骤,并基于C++语言编写了相关程序。通过测试,验证了这6个滤镜算法的效果是比较理想的,和其模拟的拍摄模式或者绘画风格是想近的。为图像编辑软件或者图像社交软件中滤镜组件的研发提供了可靠的算法参考和借鉴。

参考文献:

[1]刘美芳,石春菊.浅谈计算机图像处理技术的发展[J].电脑知识与技术,2016,12(32):241-242+250.

[2] 李海航.基于安卓相机的照片分享平台的设计与实现[D].天津:天津大学,2015.

[3] 祁鹏. 基于Android系统的相机特效软件的设计与实现[D].中国科学院大学(中国科学院工程管理与信息技术学院),2017.

[4]付庆军.利用Photoshop实现摄影作品的水彩画效果[J].照相机,2009(02):68-71.

[5]李贝贝.基于Vulkan的Android手机滤镜的实现[D].东南大学,2017.

[6]张宁,何潞申.第九章为影像加入风格[J].数码影像时代,2016(08):94-101.

[7]季冬怡. 基于iOS平台的智能手机图像处理算法研究[D].湖南大学,2017.

[8]詹依宁. 图像滤镜与风格化技术研究[D].北京理工大学,2016

【通联编辑:唐一东】