滤镜艺术---新海诚(你的名字)滤镜特效的实现解密

简介: 原文:滤镜艺术---新海诚(你的名字)滤镜特效的实现解密 最近新海诚滤镜特效很火,Camera360为此还专门开发了相应的app,天天P图等等也是争先恐后,今天,本人来给大家解密一下。
原文: 滤镜艺术---新海诚(你的名字)滤镜特效的实现解密

最近新海诚滤镜特效很火,Camera360为此还专门开发了相应的app,天天P图等等也是争先恐后,今天,本人来给大家解密一下。

先给大家看下本人程序实现的效果图:


原图


效果图

下面本人来详细说明一下如何程序实现这个滤镜特效:

1,天空检测与分割

这个滤镜中最主要的就是天空区域的分割与替换,关于天空分割,本人给出一篇参考文献:

Sky detection by effective context inference. Neurocomputing.2016

该文章是基于训练学习来实现天空分割的,大概流程如下:

 

2,天空MASK

通过1得到天空的精确分割区域后,我们需要对这个区域进行二值化,黑色为非天空区域,白色为天空区域,然后对这个二值图进行一个适当半径的高斯滤波,使得天空与非天空之间的边界线有足够的过度,也就是PS中的羽化。这里以下图为例:

 

3,天空融合

使用2中的Mask,将原图和天空图进行融合,这一步使用PS中的正常模式进行融合即可,白色区域显示天空图,黑色区域显示原图;这里使用的天空图像如下图所示:

 

(c)天空图像

效果图如下:

 

4,调色

调色这一步很关键,你需要什么样风格的漫画,就需要针对调出什么样风格的颜色色调。本人在这里参考的是如下的风格(点击打开链接)

 

5,光晕

调色之后,我们需要给图片上添加一定的光晕,这一步,我们直接使用光晕模版,与原图做滤色的图层混合,即可。

本人使用的光晕模版如下:

 

4-5两步骤的结果图如下:

 

关于滤色图层混合的计算,代码如下:

        int ModeFilterColor(int basePixel, int mixPixel)
        {
            int res = 0;
            res = 255 - (255 - mixPixel) * (255 - basePixel) / 255;
            return Math.Min(255, Math.Max(0, res));
        }

6,饱和度和亮度调节

最后,对图像进行一个饱和度和亮度的简单调节,调出一种明亮清新的感觉,调节步骤如下:

 

效果图如下:

 

(g)新海诚滤镜效果图

如果需要边界的加强感觉,可以在1之前,对图像进行一个照亮边缘的操作,得到照亮边缘图A,然后讲A和原图进行叠加处理,效果会更好一点。

叠加处理的代码如下:

int ModeOverlay(int basePixel,int mixPixel)
{
    int res = 0;
    res = ((basePixel <= 128) ? (mixPixel * basePixel / 128):(255 - (255 - mixPixel) * (255 - basePixel) / 128));
    return CheckRange(res);
}

最后附上调用的逻辑代码:

        

private void specialFilterToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (pictureBox1.Image != null)
            {
                //获取由1天空分割得到的天空图像
                Bitmap sky = new Bitmap(Application.StartupPath + "\\sky.png");
                //获取由2得到的天空Mask图像
                Bitmap mask = new Bitmap(Application.StartupPath + "\\mask_6.jpg");
                //天空融合
                curBitmap = SpecialFilter(srcBitmap, sky, mask);
                //调色与光晕
                Bitmap map = new Bitmap(Application.StartupPath + "\\map.png");
                Bitmap light = new Bitmap(Application.StartupPath + "\\light.png");
                curBitmap = MapFilter(curBitmap, light, map);
               //亮度与饱和度调节
                Bitmap anMap = new Bitmap(Application.StartupPath + "\\anmap.png");
                curBitmap = AnMapFilter(curBitmap, anMap);
                pictureBox1.Image = curBitmap;
            }
        }

以上就是新海诚滤镜的程序实现方案,至于详细代码,这里设计公司机密,不便透露,原理已经写清楚了,大家可以尝试一下!如果有疑问,可以交流:QQ1358009172

 



目录
相关文章
|
算法 C#
图像滤镜艺术---霓虹、浮雕、木刻滤镜
原文:图像滤镜艺术---霓虹、浮雕、木刻滤镜  图像特效往往可以将普通的照片呈现出一种令人耳目一新的效果,特效的种类繁多,比如各种流行的 滤镜特效等等,今天,我们介绍几种最简单的滤镜:霓虹效果,浮雕效果和木刻效果。
1733 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,这个油漆桶是用来盛放不同类别的像素。
1187 0
|
C#
图像滤镜艺术---暗调滤镜
原文:图像滤镜艺术---暗调滤镜本文介绍暗调滤镜的实现过程,这个滤镜主要是呈现一种暗调,对比度明显的效果,原理很简单,公式如下: newR = R*R/255; newG = G*G/255; newB = B*B/255; 实现代码如下:  private Bitmap Filte...
920 0
|
C#
图像滤镜艺术---连环画滤镜
原文:图像滤镜艺术---连环画滤镜 小时候我们都喜欢看连环画,虽然是黑白色的,但是也能让我们看的津津有味。 今天,我在这里介绍一种连环画特效的实现方法,带你回到那个记忆的年代。
964 0
|
C# 计算机视觉
图像滤镜艺术---Swirl滤镜
原文:图像滤镜艺术---Swirl滤镜Swirl Filter Swirl 滤镜是实现图像围绕中心点(cenX,cenY)扭曲旋转的效果,效果图如下: 原图 效果图 代码如下:         //         ///     ...
924 0
|
C#
图像滤镜艺术---怀旧风格滤镜
原文:图像滤镜艺术---怀旧风格滤镜怀旧风格滤镜 本文介绍一款怀旧风格滤镜特效的代码实现,这个滤镜效果跟前面我们介绍的老照片滤镜效果相比,听起来感觉没太大差,实际上老照片不仅 有怀旧的风格,更多了一些怀旧的痕迹,比如照片的褶皱,裂纹等等,而怀旧风格,只是一种发黄的颜色风格而已。
1139 0
|
算法 vr&ar
图像滤镜艺术---漫画滤镜
原文:图像滤镜艺术---漫画滤镜 漫画滤镜 所谓漫画滤镜就是通过复杂的算法来模拟漫画的特点,从而使真实照片呈现出漫画的风格。要实现漫画的效果,首先要了解漫画的特点,漫画具有几个比较明显的特点如下: 1,颜色泛用 漫画中,使用的颜色比较单一,一般不会超过7种颜色,不像真实照片那样,具有丰富的...
1400 0
|
C# 计算机视觉
图像滤镜艺术--大雾效果滤镜
原文:图像滤镜艺术--大雾效果滤镜 今天给大家介绍一款大雾效果的滤镜,先看下效果图:                                                               ...
1119 0
|
C# 计算机视觉
图像滤镜艺术--Toaster滤镜
原文:图像滤镜艺术--Toaster滤镜     根据Instagram CEO的说法,Toaster滤镜是Instagram所有滤镜中最复杂的滤镜,这个滤镜给人一种新奇的红色烘烤感,很能让人联想起这个Toaster单词的本意呵呵,今天我将用C#实现这个滤镜,当然我也只是探索,如何逼近它的效果,差异的存在在所难免,大家勿怪哦。
1140 0
|
C#
图像滤镜艺术--大雪滤镜
原文:图像滤镜艺术--大雪滤镜   今天给大家介绍一款大雪滤镜,可以使你夏天的照片瞬间幻化为大雪纷飞的场景哦!先看下效果图:   上面三张图像分别是(a)原始图像,(b)PS效果图,(c)C#代码效果图 这个大雪滤镜也比较简单,按照之前的步骤,我们依次介绍PS实现过程以及代码实现过程。
1240 0