图像滤镜艺术---Glow Filter发光滤镜

Glow Filter发光滤镜

Glow Filter发光滤镜是一种让图像产生发光效果的滤镜,它的实现算法如下:

1,对原图P进行高斯模糊得到图像A;

2,将P和A进行“叠加”图层混合处理,公式如下:

Result(x,y) = ((basePixel(x,y) <= 128) ? (mixPixel(x,y) * basePixel(x,y) /
128):(255 - (255 - mixPixel(x,y)) * (255 - basePixel(x,y))
/ 128));

注意:Result(x,y)属于[0-255];

以上就是发光滤镜的原理。

核心代码如下:

private Bitmap GlowFilterProcess(Bitmap src)

{

Bitmap gaussBitmap = gf.Apply(src, 15);

Bitmap dst = new Bitmap(src);

int w = dst.Width;

int h = dst.Height;

BitmapData dstData = dst.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);

BitmapData gaussData = gaussBitmap.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);

byte* pGauss = (byte*)gaussData.Scan0;

byte* pDst = (byte*)dstData.Scan0;

int offset = dstData.Stride - w * 4;

int gray;

for (int j = 0; j < h; j++)

{

for (int i = 0; i < w; i++)

{

gray = ((pDst[0] <= 128) ? (pGauss[0] * pDst[0] / 128) : (255 - (255 - pGauss[0]) * (255 - pDst[0]) / 128));

gray = Math.Min(255, Math.Max(0, gray));

pDst[0] = (byte)gray;

gray = ((pDst[1] <= 128) ? (pGauss[1] * pDst[1] / 128) : (255 - (255 - pGauss[1]) * (255 - pDst[1]) / 128));

gray = Math.Min(255, Math.Max(0, gray));

pDst[1] = (byte)gray;

gray = ((pDst[2] <= 128) ? (pGauss[2] * pDst[2] / 128) : (255 - (255 - pGauss[2]) * (255 - pDst[2]) / 128));

gray = Math.Min(255, Math.Max(0, gray));

pDst[2] = (byte)gray;

pDst[3] = (byte)255;

pGauss += 4;

pDst += 4;

}

pGauss += offset;

pDst += offset;

}

dst.UnlockBits(dstData);

gaussBitmap.UnlockBits(gaussData);

return dst;

}

效果图如下:

原图

Glow Filter效果图

最后放上一个完整的 C# 程序Demo下载地址:http://www.zealpixel.com/thread-65-1-1.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-28 11:08:37

图像滤镜艺术---Glow Filter发光滤镜的相关文章

图像滤镜艺术---(Sketch Filter)素描滤镜

(Sketch Filter)素描滤镜 素描滤镜的实现方法比较简单,这里我们直接写出算法过程如下: 1,对原图S进行去色命令得到灰度图A: 2,对A进行反色得到图像B: 3,对B进行高斯模糊得到图C: 4,将C与B进行颜色减淡的图层混合算法: P(x,y) = Pb(x,y) + (Pb(x,y)* Pc(x,y)) / (256 - Pc(x,y)); 在步骤3中,可以添加变量edgeIntensity(edgeIntensity>=0),来控制素描的边缘强度: 以上就是素描的算法实现. 核心

Atitit (Sketch Filter)素描滤镜的实现 &#160;图像处理 &#160;attilax总结

Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结 Sch lg java d sketch filter aigo se ,ma sinsho ..byedu 3page ma ... 素描滤镜的实现方法比较简单,这里我们直接写出算法过程如下: 1,对原图S进行去色命令得到灰度图A: 2,对A进行反色得到图像B: 3,对B进行高斯模糊得到图C: 4,将C与B进行颜色减淡的图层混合算法: P(x,y) = Pb(x,y) + (Pb(x,y)* Pc(x

图像滤镜艺术---霓虹、浮雕、木刻滤镜

图像特效往往可以将普通的照片呈现出一种令人耳目一新的效果,特效的种类繁多,比如各种流行的 滤镜特效等等,今天,我们介绍几种最简单的滤镜:霓虹效果,浮雕效果和木刻效果. 1,霓虹滤镜 霓虹是用来描绘图像的轮廓,勾画出颜色变化的边缘,加强其过度效果,使图像产生轮廓发光的效果.主要原理是根据当前像素与其右方和下方像素的梯度运算,然后将结果值作为当前像素值,即将原图当前下像素的RGB分量与其右方和下方像素做梯度 运算(差的平方和平方根),然后将梯度值作为处理后的像素的RGB三个分量. 算法过程如下公式所

图像滤镜艺术---Swirl滤镜

Swirl Filter Swirl 滤镜是实现图像围绕中心点(cenX,cenY)扭曲旋转的效果,效果图如下: 原图 效果图 代码如下: // /// /// Swirl Filter /// /// Source image. /// The X position of Swirl. /// The Y position of Swirl. /// The degree of swirl,0-360. /// The result image. private Bitmap SwirlFil

图像滤镜艺术---Wave滤镜

Wave Filter水波滤镜 水波滤镜是通过坐标变换来模拟水波效果,使图像呈现出水波的特效.这个滤镜有一个可调参数:水波的扭曲程度. 代码如下; // /// /// Wave Filter /// /// Source image. /// The degree of wave,0-100. /// The result image. private Bitmap WaveFilterProcess(Bitmap srcBitmap, int degree) { Bitmap a = new

图像滤镜艺术---(Instagram)1977滤镜

图像特效---(Instagram)1977滤镜 本文介绍1977这个滤镜的具体实现,这个滤镜最早是Instagram中使用的 ,由于Instagram滤镜备受欢迎,因此,美图秀秀中也使用了这个滤镜,只是名字不是1977,而是1970. 原理不多说了,直接给出代码最实在,这个代码是经过优化过的,复杂的算法都已经写成了一个映射表,这样做可以大大提高效率,代码如下: private Bitmap FilterProcess(Bitmap a) { Bitmap srcBitmap = new Bit

图像滤镜艺术--方法论

最近,对我所知道的滤镜开发方法做个总结,分享给大家,知识多数来自网络,我在这里做个小结. 所谓滤镜,最初是指安装在相机镜头前过滤自然光的附加镜头,用来实现调色和添加效果.我们做的滤镜算法又叫做软件滤镜,是对大部分镜头滤镜进行的模拟,当然,误差也就再所难免,我们的宗旨只是无限逼近.也是这个原因,我们无法再现真实的拍摄场景,无法复原照片中未包含的信息,进而也难以实现某些特殊滤镜效果,诸如偏光镜和紫外线滤色镜(UV)的效果等等. 目前一款软件滤镜效果的实现,我们可以归结为以下几个部分: 1,基本变换

图像滤镜艺术--Toaster滤镜

根据Instagram CEO的说法,Toaster滤镜是Instagram所有滤镜中最复杂的滤镜,这个滤镜给人一种新奇的红色烘烤感,很能让人联想起这个Toaster单词的本意呵呵,今天我将用C#实现这个滤镜,当然我也只是探索,如何逼近它的效果,差异的存在在所难免,大家勿怪哦. 按照之前的说法,还是先使用Photoshop进行模拟,然后根据模拟步骤,进行C#代码编写. 首先,看下效果图: (a)PS效果图 (b)Instagram效果图 (c)C#代码效果图 效果怎么样我说了不算呵呵,下面介绍P

filter(HTML)滤镜用法

CCS滤镜参考语法:STYLE="filter:filtername(fparameter1, fparameter2...)" (Filtername为滤镜的名称,fparameter1.fparameter2等是滤镜的参数)script 语法:HTMLElement.filters.filterName.fParameter=value; 滤镜说明: Alpha:设置透明层次 blur:创建高速度移动效果,即模糊效果 Chroma:制作专用颜色透明 DropShadow:创建对象的