图像滤镜艺术---连环画滤镜

简介: 原文:图像滤镜艺术---连环画滤镜 小时候我们都喜欢看连环画,虽然是黑白色的,但是也能让我们看的津津有味。 今天,我在这里介绍一种连环画特效的实现方法,带你回到那个记忆的年代。
原文: 图像滤镜艺术---连环画滤镜

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

目录
相关文章
|
C# 计算机视觉
图像滤镜艺术---Swirl滤镜
原文:图像滤镜艺术---Swirl滤镜Swirl Filter Swirl 滤镜是实现图像围绕中心点(cenX,cenY)扭曲旋转的效果,效果图如下: 原图 效果图 代码如下:         //         ///     ...
920 0
|
算法 C#
图像滤镜艺术---霓虹、浮雕、木刻滤镜
原文:图像滤镜艺术---霓虹、浮雕、木刻滤镜  图像特效往往可以将普通的照片呈现出一种令人耳目一新的效果,特效的种类繁多,比如各种流行的 滤镜特效等等,今天,我们介绍几种最简单的滤镜:霓虹效果,浮雕效果和木刻效果。
1730 0
|
C#
图像滤镜艺术---暗调滤镜
原文:图像滤镜艺术---暗调滤镜本文介绍暗调滤镜的实现过程,这个滤镜主要是呈现一种暗调,对比度明显的效果,原理很简单,公式如下: newR = R*R/255; newG = G*G/255; newB = B*B/255; 实现代码如下:  private Bitmap Filte...
918 0
|
算法
图像滤镜艺术---水彩画滤镜
原文:图像滤镜艺术---水彩画滤镜水彩画滤镜 水彩画滤镜算法如下: 1,假设原始图像为F(x,y),灰度化得到G(x,y); 2,构建一个半径为Radius的正方形模板M,边长为2*Radius+1; 3,将M在F上依次遍历每个像素,对于当前像素P(x,y): 设置一个油漆桶数N,由于图像灰度值范围为0-255,因此我们油漆桶的数量N要小于255,这个油漆桶是用来盛放不同类别的像素。
1182 0
|
算法 vr&ar
图像滤镜艺术---漫画滤镜
原文:图像滤镜艺术---漫画滤镜 漫画滤镜 所谓漫画滤镜就是通过复杂的算法来模拟漫画的特点,从而使真实照片呈现出漫画的风格。要实现漫画的效果,首先要了解漫画的特点,漫画具有几个比较明显的特点如下: 1,颜色泛用 漫画中,使用的颜色比较单一,一般不会超过7种颜色,不像真实照片那样,具有丰富的...
1391 0
|
C#
图像滤镜艺术---怀旧风格滤镜
原文:图像滤镜艺术---怀旧风格滤镜怀旧风格滤镜 本文介绍一款怀旧风格滤镜特效的代码实现,这个滤镜效果跟前面我们介绍的老照片滤镜效果相比,听起来感觉没太大差,实际上老照片不仅 有怀旧的风格,更多了一些怀旧的痕迹,比如照片的褶皱,裂纹等等,而怀旧风格,只是一种发黄的颜色风格而已。
1134 0
|
C# 计算机视觉
图像滤镜艺术--大雾效果滤镜
原文:图像滤镜艺术--大雾效果滤镜 今天给大家介绍一款大雾效果的滤镜,先看下效果图:                                                               ...
1114 0
|
C# 计算机视觉
图像滤镜艺术--Toaster滤镜
原文:图像滤镜艺术--Toaster滤镜     根据Instagram CEO的说法,Toaster滤镜是Instagram所有滤镜中最复杂的滤镜,这个滤镜给人一种新奇的红色烘烤感,很能让人联想起这个Toaster单词的本意呵呵,今天我将用C#实现这个滤镜,当然我也只是探索,如何逼近它的效果,差异的存在在所难免,大家勿怪哦。
1135 0
|
C#
图像滤镜艺术--大雪滤镜
原文:图像滤镜艺术--大雪滤镜   今天给大家介绍一款大雪滤镜,可以使你夏天的照片瞬间幻化为大雪纷飞的场景哦!先看下效果图:   上面三张图像分别是(a)原始图像,(b)PS效果图,(c)C#代码效果图 这个大雪滤镜也比较简单,按照之前的步骤,我们依次介绍PS实现过程以及代码实现过程。
1232 0
|
C# 计算机视觉
图像滤镜艺术--暴雨滤镜
原文:图像滤镜艺术--暴雨滤镜     今天给大家介绍的是一款暴雨滤镜,可以将一些风和日丽的风景照片变换为暴雨效果的照片,废话不多说,先给大家看下效果:                             ...
1104 0