图像滤镜艺术---(Sketch 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),来控制素描的边缘强度;
以上就是素描的算法实现。
核心代码如下:
private Bitmap SketchFilterProcess(Bitmap src, int edgeIntensity)
{
Bitmap gaussBitmap = gf.Apply(src, edgeIntensity);
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 edgeData = gaussBitmap.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
byte* pGauss = (byte*)edgeData.Scan0;
byte* pDst = (byte*)dstData.Scan0;
int offset = dstData.Stride - w * 4;
int gray, graySrc, grayGauss;
for (int j = 0; j < h; j++)
{
for (int i = 0; i < w; i++)
{
graySrc = (pDst[0] + pDst[1] + pDst[2]) / 3;
grayGauss = 255 - (pGauss[0] + pGauss[1] + pGauss[2]) / 3;
gray = graySrc + (graySrc * grayGauss) / (256 - grayGauss);
gray = Math.Min(255, Math.Max(0, gray));
pDst[0] = (byte)gray;
pDst[1] = (byte)gray;
pDst[2] = (byte)gray;
pDst[3] = (byte)255;
pGauss += 4;
pDst += 4;
}
pGauss += offset;
pDst += offset;
}
dst.UnlockBits(dstData);
gaussBitmap.UnlockBits(edgeData);
return dst;
}
效果图如下所示:
原图
素描滤镜效果图
最后放上完整C#/C程序DEMO下载连接:http://www.zealpixel.com/thread-64-1-1.html
图像滤镜艺术---(Sketch Filter)素描滤镜的更多相关文章
- Atitit (Sketch Filter)素描滤镜的实现 图像处理 attilax总结
Atitit (Sketch Filter)素描滤镜的实现 图像处理 attilax总结 1.1. 素描滤镜的实现方法比较简单,这里我们直接写出算法过程如下:1 1.2. 颜色减淡COLOR_DO ...
- 图像滤镜艺术---Glow Filter发光滤镜
原文:图像滤镜艺术---Glow Filter发光滤镜 Glow Filter发光滤镜 Glow Filter发光滤镜是一种让图像产生发光效果的滤镜,它的实现算法如下: 1,对原图P进行高斯模糊得到图 ...
- 图像滤镜艺术---(Nostalgla Filter)老照片滤镜
原文:图像滤镜艺术---(Nostalgla Filter)老照片滤镜 (Nostalgla Filter)老照片滤镜 Nostalgla Filter主要是通过算法来模拟一种复古,陈旧的照片风格,以 ...
- 图像滤镜艺术---(Lightleaks Filter)漏光滤镜
原文:图像滤镜艺术---(Lightleaks Filter)漏光滤镜 (Lightleaks Filter)漏光滤镜 漏光拍摄其实就是一种摄影手法,最初是因为强烈光照导致相片交卷的过分曝光,最终在成 ...
- 图像滤镜艺术---LOMO Filter
原文:图像滤镜艺术---LOMO Filter LOMO Filter LOMO是一种概念,即强调感受.机缘,弱化摄影技巧,不确定性和随意性是LOMO最大特点.LOMO源于Lomography,LOM ...
- 图像滤镜艺术---(Punch Filter)交叉冲印滤镜
原文:图像滤镜艺术---(Punch Filter)交叉冲印滤镜 (Punch Filter)交叉冲印滤镜 本文介绍一种交叉冲印效果的代码实现,至于原理,不在累赘,直接看代码: int f_TPun ...
- 图像滤镜艺术---ZPhotoEngine超级算法库
原文:图像滤镜艺术---ZPhotoEngine超级算法库 一直以来,都有个想法,想要做一个属于自己的图像算法库,这个想法,在经过了几个月的努力之后,终于诞生了,这就是ZPhotoEngine算法库. ...
- 图像滤镜艺术---Wave滤镜
原文:图像滤镜艺术---Wave滤镜 Wave Filter水波滤镜 水波滤镜是通过坐标变换来模拟水波效果,使图像呈现出水波的特效.这个滤镜有一个可调参数:水波的扭曲程度. 代码如下; // ...
- 图像滤镜艺术---球面(Spherize)滤镜
原文:图像滤镜艺术---球面(Spherize)滤镜 球面(Spherize)滤镜 球面滤镜是通过极坐标变换实现图像的球面特效. 代码如下: // /// ...
随机推荐
- 【p081】ISBN号码
Time Limit: 1 second Memory Limit: 50 MB [问题描述] 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符,其规定 ...
- 关于如何在Sublime下安装插件
安装插件的两种方式 通过Package Control安装 不能安装 手工安装 安装插件的两种方式 在sublime下安装插件有两种方式,一种是通过package control来进行安装,另一种呢就 ...
- Go语言版黑白棋
1.游戏说明 2.无边框窗口实现 3.背景图.最小化.关闭窗口 4.界面其它设计 5.黑白子提示闪烁效果 6.落子 7.初始化棋子.改变角色 8.倒计时 9.吃子 10.棋子个数统计.胜负判断 11. ...
- RecyclerView的2种监听方式
NO.1:在自己定义适配器的ViewHolder里面写监听事件 //RecyclerView适配器 public class RecyclerViewAdapter extends RecyclerV ...
- jquery-3 jquery选择器
jquery-3 jquery选择器 一.总结 一句话总结:选择器使用的时候可以结合参考手册,里面都已经详细归类好了.(多用才能熟啊) 1.$(:input).css({'color':'#98765 ...
- [Django] Start a new django project
Assume we already have a env created call 'demo-env': cd demo-env . bin/activate pip install django ...
- node服务器如何部署https证书
var http = require('http'); var https = require('https'); var path = require('path'); var fs = requi ...
- matlab 图像的保存
gcf:获取当前显示图像的句柄: 默认 plot 的 position 是 [232 246 560 420] 0. save >> A = randn(3, 4); >> B ...
- WPF 好看的矢量图标
原文:WPF 好看的矢量图标 本文告诉大家一个好用的网站,里面提供很多好看的图标. 本文介绍的网站是 Xamalot 里面有很多好看的图标. 例如我找到了一个好看的图标 我只需要点击下面的下载就可以了 ...
- HTML:描述语义
一.HTML HTML:Hypertext Markup Launguage,超文本标记语言,是网页的就文件格式,用于描述网页语义. 二.HTML骨架 DTD手册:http://www.w3schoo ...