当前位置:必发365电子游戏 > 编程 > 有模糊的坚决守护就能够,眼眶脓肿柔化调整图像的亮度
有模糊的坚决守护就能够,眼眶脓肿柔化调整图像的亮度
2019-12-19

  图像强光效果在不菲商业软件中都有落到实处,例如美图秀秀,光影魔术手等。其能针对原始图像产生生机勃勃副新的相比较平缓感到光线相比较平和的成效,给人风流倜傥种朦胧美,如上边几幅图所示:

最先拍片能够通过在镜头前套塑料袋、网纱、涂凡士林等,达成视网膜病变的成效。纵然你早先时期未有做这一个预备,其实前期假若两步就足以轻易消除。

          图片 1          图片 2         图片 3       图片 4

图片 5www.16xx8.com

      前段时间,关于该算法的可控参数,美图秀秀只提供了七个水准(0-100%)调整量,其算法调整的功用和宽窄都相当小,光影魔术手有柔化程度和高光柔化四个参数,当中柔化程度决定柔化的模糊效果,强光柔化调治图像的亮度。 还会有生龙活虎对开源的软件如Imagestone、paint.net、gimp也是有softglow算法,他们都提供了3个调整量:半径、亮度、比较度(锐度),在那之中Imagestone其实是翻译的gimp的算法,而GIMP和paint.net的算法在基本原理上是千篇大器晚成律的,细节上有所差距而已。

第风流倜傥,复制背景图层。

     大家以paint.net的兑现进程为例实行求证,在paint.net的源代码中,GlowEffect.cs为落到实处该意义的文件,小编抽出其某个源代码简要表明下那个算法的进度。

图片 6

        public GlowEffect()  : base(StaticName, StaticImage, null, EffectDirectives.None, true)
        {
            this.blurEffect = new BlurEffect();
            this.bcAdjustment = new BrightnessAndContrastAdjustment();
            this.screenBlendOp = new UserBlendOps.ScreenBlendOp();
        }

首先步:选取滤镜>模糊>高斯模糊,如图,数值不用太大,有模糊的机能就能够。

     以致代码片段:

图片 7

   public override unsafe void Render(
            EffectConfigToken parameters, 
            RenderArgs dstArgs, 
            RenderArgs srcArgs, 
            System.Drawing.Rectangle[] rois, 
            int startIndex, 
            int length)
        {
            // First we blur the source, and write the result to the destination surface
            // Then we apply Brightness/Contrast with the input as the dst, and the output as the dst
            // Third, we apply the Screen blend operation so that dst = dst OVER src

            ThreeAmountsConfigToken token = (ThreeAmountsConfigToken)parameters;

            AmountEffectConfigToken blurToken = new AmountEffectConfigToken(token.Amount1);
            this.blurEffect.Render(blurToken, dstArgs, srcArgs, rois, startIndex, length);

            BrightnessAndContrastAdjustmentConfigToken bcToken = new BrightnessAndContrastAdjustmentConfigToken(token.Amount2, token.Amount3);
            this.bcAdjustment.Render(bcToken, dstArgs, dstArgs, rois, startIndex, length);

            for (int i = startIndex; i < startIndex + length; ++i)
            {
                Rectangle roi = rois[i];

                for (int y = roi.Top; y < roi.Bottom; ++y)
                {
                    ColorBgra* dstPtr = dstArgs.Surface.GetPointAddressUnchecked(roi.Left, y);
                    ColorBgra* srcPtr = srcArgs.Surface.GetPointAddressUnchecked(roi.Left, y);

                    screenBlendOp.Apply(dstPtr, srcPtr, dstPtr, roi.Width);
                }
            }
        }

其次步:图层方式设置为变亮,缩小不光滑度,使其联网得更自然。增加图层蒙版,擦除脸部、五官部分。麦粒肿效果就落实了。

    由上述代码初叶得出结论:他们是以高斯模糊以致亮度比较度调整七个滤镜为底工,稍作混合就能够。

图片 8

      第一步:备份原始图像;

图片 9

      第二步:对本来图像按钦命的半径实行高斯模糊;

成图

      第三步:对模糊后的图像继续开展亮度和比较度的调动;

      第四步:用原始图像的备份数据通原始图像(经过上述二及三甩卖后的图像)遵照Photoshop的滤色(Screen卡塔尔国情势张开混合。

      关于滤色方式的搅拌算法这里大致的提一下:  Blend = X + Y - X * Y / 255 ;  此中X和Y分别表示基色和混合色,Blend表示结果色。

      算法的源码能够参见笔者在上边说的多少个开源的软件,当然那也许必要您有一定的编制程序基本功,终归那多少个软件的框架都比较复杂。 

      关于算法的试行进程能够说只在于第二步,因为亮度相比度的调整实际上是个查表的经过(PS的亮度比较度指令其实要比大家想像的复杂点的,这一个有机会再谈,也足以参照他事他说加以考察阿发伯的博文),而第四步其实也是足以用查表的方法来增速的(然则确定要用一位的法子卡塔尔(英语:State of Qatar)。高斯模糊这么些老生长谈的难题,在本身所寻觅过的网页中是从未何人给出过一个完整的、完美的、实施进程和钦赐半径非亲非故的、可运维的VB或VC或JAVA程序源代码(日常都以交由参照他事他说加以侦查小说介绍)。笔者本人有那些地点的代码,不过小编也不乐意大利共产党享。真正有意思味的小编引入您去找GIMP的算法代码,在GIMP的总体源码系统,起码给出了二种高斯模糊优化的代码,分别放在blur-gauss.c(给出了2种:奔驰G级LE及II奥迪Q5优化代码)以致contrast-retinex.c中(代码极其简洁),当然,那个代码假若提抽出来还相应张开代码层面的收拾和优化。Paint.net也提供了高斯模糊函数,可是期实质并不是高斯模糊,而是大器晚成种用线性布满的权重函数取代恒值权重,但是这么些算法里面未有浮点运算,并且还留存比Paint.net里的代码快超级多即推行时间于半径非亲非故的优化算法,何况该优化算法比其余真正的高斯模糊优化算法要快1倍多,而功效上分别十分的小,可视作实时性特别强的场子的备用算法。

    雷同,提供个编写翻译好的公文给风野趣商量该算法的仇人看看效果:

   有模糊的坚决守护就能够,眼眶脓肿柔化调整图像的亮度。 http://files.cnblogs.com/Imageshop/SoftGlow.rar

   图片 10 

 

 ***************************小编: laviewpbt   时间: 2012.6.20    联系QQ:  33184777  转发请保留本行消息*************************