图像特效---连环画滤镜
来源:互联网 发布:张家港网络ankin 编辑:程序博客网 时间:2024/04/30 14:50
小时候我们都喜欢看连环画,虽然是黑白色的,但是也能让我们看的津津有味。
今天,我在这里介绍一种连环画特效的实现方法,带你回到那个记忆的年代。
那个时代彩色的书籍是很少的,连环画几乎都是黑白色的,而且有些发黄的年代感,这个也就是它的主要特点;还有一个特点就是,画面对比鲜明;针对这两点,我们可以实现了。
具体步骤如下:
1,假设图像像素P(i,j)的RGB值为r,g,b;
按照如下公式计算新的RGB:
R = (|2*g-b+r|*r)>>8;
G = (|2*b-g+r|*r)>>8;
B = (|2*b-g+r|*r)>>8;
注意:这一步是达到对比度增强的效果。
2,计算灰度值:
Gray = (R+G+B) / 3;
注意:这里直接使用了明度计算公式替代灰度化公式。
3,计算结果RGB:
Red = Gray + 10;
Green = Gray + 10;
Blue = Gray;
注意:此处Red,Green需要约束到[0,255]。
具体C#代码如下:
private Bitmap FilterProcess(Bitmap a)
{
Bitmap srcBitmap = new Bitmap(a);
int w = srcBitmap.Width;
int h = srcBitmap.Height;
System.Drawing.Imaging.BitmapData srcData = srcBitmap.LockBits(new Rectangle(0, 0, w, h), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
byte* pSrc = (byte*)srcData.Scan0;
int offset = srcData.Stride - w * 4;
int red = 0, green = 0, blue = 0, gray = 0;
for (int j = 0; j < h; j++)
{
for (int i = 0; i < w; i++)
{
blue = (Math.Abs(pSrc[0] - pSrc[1] + pSrc[0] + pSrc[2]) * pSrc[1]) >> 8;
green = (Math.Abs(pSrc[0] - pSrc[1] + pSrc[0] + pSrc[2]) * pSrc[2]) >> 8;
red = (Math.Abs(pSrc[1] - pSrc[0] + pSrc[1] + pSrc[2]) * pSrc[2]) >> 8;
blue = Math.Max(0, Math.Min(blue, 255));
green = Math.Max(0, Math.Min(green, 255));
red = Math.Max(0, Math.Min(red, 255));
gray = (blue + green + red) / 3;
red = Math.Min(255, gray + 10);
pSrc[0] = (byte)gray;
pSrc[1] = (byte)red;
pSrc[2] = (byte)red;
pSrc += 4;
}
pSrc += offset;
}
srcBitmap.UnlockBits(srcData);
return srcBitmap;
}
效果图如下:
原图
demo 链接: 点击打开链接
0 0
- 图像特效---连环画滤镜
- 图像滤镜特效(曝光、霓虹、连环画、熔铸)(二)
- 图像滤镜艺术---连环画滤镜
- 图像特效之连环画
- 图像特效---漫画滤镜
- 图像特效---马赛克滤镜
- 图像特效---Wave滤镜
- 图像特效---Swirl滤镜
- 图像特效---水彩画滤镜
- 图像特效---旋转模糊滤镜
- 图像特效---(Instagram)1977滤镜
- 图像特效---怀旧风格滤镜
- 图像特效---暗调滤镜
- 图像特效---Oilpaint油画滤镜
- 图像特效---哈哈镜效果滤镜
- 图像特效---挤压(Pinch)滤镜
- 图像特效---球面(Spherize)滤镜
- openCV学习记录:滤镜:连环画
- Fedora 16 系统安装
- 图像特效---暗调滤镜
- Android虚拟机怎么启动不起来,一直停在启动界面
- 重新学javaweb---文件下载
- Fedora 17 系统安装
- 图像特效---连环画滤镜
- 异星人
- AYITACM2016省赛第四周 j-最短路(Dijkstra算法)
- R语言文本分析(2)
- hibernate中关系操作(inverse)和级联操作(cascade)详解
- Jquery换肤
- Fedora 18 系统安装
- String的split()函数的用法总结
- 第九周第三项目——数组类