网站备案通过什么可以备案,建设工程合同是什么,网络建设工程师,手机如何制作游戏图像柔光效果在很多商业软件中都有实现#xff0c;比如美图秀秀#xff0c;光影魔术手等。其能针对原始图像产生一副新的比较平滑感觉光线比较柔和的效果#xff0c;给人一种朦胧美#xff0c;如下面几幅图所示#xff1a; 目前#xff0c;关于该算法的可控参数#xff… 图像柔光效果在很多商业软件中都有实现比如美图秀秀光影魔术手等。其能针对原始图像产生一副新的比较平滑感觉光线比较柔和的效果给人一种朦胧美如下面几幅图所示 目前关于该算法的可控参数美图秀秀只提供了一个程度0-100%控制量其算法调节的效果和幅度都较小光影魔术手有柔化程度和高光柔化两个参数其中柔化程度控制柔化的朦胧效果高光柔化调节图像的亮度。 还有一些开源的软件如Imagestone、paint.net、gimp也有softglow算法他们都提供了3个控制量半径、亮度、对比度锐度其中Imagestone其实是翻译的gimp的算法而GIMP和paint.net的算法在基本原理上是一样的细节上有所区别而已。 我们以paint.net的实现过程为例进行说明在paint.net的源代码中GlowEffect.cs为实现该效果的文件我抽取其部分源代码简要说明下这个算法的过程。 public GlowEffect() : base(StaticName, StaticImage, null, EffectDirectives.None, true){this.blurEffect new BlurEffect();this.bcAdjustment new BrightnessAndContrastAdjustment();this.screenBlendOp new UserBlendOps.ScreenBlendOp();}以及代码片段 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 srcThreeAmountsConfigToken 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);}}}由以上代码初步得出结论他们是以高斯模糊以及亮度对比度调节两个滤镜为基础稍作混合即可。 第一步备份原始图像 第二步对原始图像按指定的半径进行高斯模糊 第三步对模糊后的图像继续进行亮度和对比度的调整 第四步用原始图像的备份数据通原始图像经过上述二及三处理后的图像按照Photoshop的滤色Screen)方式进行混合。 关于滤色方式的混合算法这里简单的提一下 Blend X Y - X * Y / 255 ; 其中X和Y分别表示基色和混合色Blend表示结果色。 算法的源码可以参考我在上面说的几个开源的软件当然这可能需要你有一定的编程基础毕竟那些软件的框架都比较复杂。 关于算法的执行速度可以说只取决于第二步因为亮度对比度的调节实际上是个查表的过程PS的亮度对比度指令其实要比大家想象的复杂点的这个有机会再谈也可以参考阿发伯的博文http://blog.csdn.net/maozefa/article/details/4778934而第四步其实也是可以用查表的方式来加速的不过一定要用一位的方式)。高斯模糊这个老生长谈的问题在我所搜索过的网页中是没有谁给出过一个完整的、完美的、执行速度和指定半径无关的、可运行的VB或VC或JAVA程序源代码一般都是给出参考文章介绍。我自己有这个方面的代码不过我也不愿意共享。真正有兴趣的我推荐你去找GIMP的算法代码在GIMP的整个源码系统至少给出了三种高斯模糊优化的代码分别位于blur-gauss.c(给出了2种RLE及IIR优化代码以及contrast-retinex.c中代码特别简洁当然那些代码如果提取出来还应该进行代码层面的整理和优化。Paint.net也提供了高斯模糊函数不过期实质并不是高斯模糊而是一种用线性分布的权重函数代替恒值权重不过那个算法里面没有浮点运算并且还存在比Paint.net里的代码快很多即执行时间于半径无关的优化算法而且该优化算法比任何真正的高斯模糊优化算法要快1倍多而效果上区别不大可作为实时性特别强的场合的备用算法。 同样提供个编译好的文件给有兴趣研究该算法的朋友看看效果 http://files.cnblogs.com/Imageshop/SoftGlow.rar ***************************作者 laviewpbt 时间 2013.6.20 联系QQ: 33184777 转载请保留本行信息************************* 转载于:https://www.cnblogs.com/Imageshop/p/3145216.html