博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图像滤镜艺术---连环画滤镜
阅读量:6441 次
发布时间:2019-06-23

本文共 1526 字,大约阅读时间需要 5 分钟。

原文:

小时候我们都喜欢看连环画,虽然是黑白色的,但是也能让我们看的津津有味。
今天,我在这里介绍一种连环画特效的实现方法,带你回到那个记忆的年代。
那个时代彩色的书籍是很少的,连环画几乎都是黑白色的,而且有些发黄的年代感,这个也就是它的主要特点;还有一个特点就是,画面对比鲜明;针对这两点,我们可以实现了。
具体步骤如下:
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源码下载连接:

转载地址:http://mtdwo.baihongyu.com/

你可能感兴趣的文章
mongodb的投影
查看>>
react 调用项目中的 .html 文件
查看>>
class类
查看>>
tcp读取数据的方法
查看>>
Android-5 理解context
查看>>
spring事务配置
查看>>
Oracle自动统计信息的收集原理及实验
查看>>
Codeforces 204A Little Elephant and Interval
查看>>
JavaScript的DOM操作.
查看>>
[leetcode] Clone Graph
查看>>
最小生成树
查看>>
python入门基础
查看>>
spring配置非单例的bean
查看>>
Cell_核选框
查看>>
小朋友和二叉树
查看>>
织梦解析模板之灵活应用视图类
查看>>
常用正则表达式
查看>>
求前缀表达式的值
查看>>
Dockers 部署 MongoDB + mongo-express
查看>>
php学习 5 无限级分类
查看>>