Win8 Metro(C#)数字图像处理--2.73一种背景图像融合特效

简介: 原文:Win8 Metro(C#)数字图像处理--2.73一种背景图像融合特效 /// /// Image merge process.
原文: Win8 Metro(C#)数字图像处理--2.73一种背景图像融合特效

        /// <summary>
        /// Image merge process.
        /// </summary>
        /// <param name="bacImage">The background image.</param>
        /// <param name="dstImage">The source image.</param>
        /// <param name="k">One parameter, from 0 to 1.</param>
        /// <returns></returns>
        public static WriteableBitmap ImageMerge(WriteableBitmap bacImage, WriteableBitmap dstImage, double k)
        {
            if (bacImage != null && dstImage != null)
            {
                int w = dstImage.PixelWidth;
                int h = dstImage.PixelHeight;
                int sw = bacImage.PixelWidth;
                int sh = bacImage.PixelHeight;
                WriteableBitmap srcImage = new WriteableBitmap(w, h);
                byte[] dstValue = dstImage.PixelBuffer.ToArray();
                byte[] bacValue = bacImage.PixelBuffer.ToArray();
                byte[] tempValue = new byte[dstValue.Length];
                int r = 0, g = 0, b = 0, R = 0, G = 0, B = 0;
                for (int y = 0; y < h; y++)
                {
                    for (int x = 0; x < w; x++)
                    {
                        int tx = x % sw;
                        int ty = y % sh;
                        b = bacValue[tx * 4 + ty * w * 4];
                        g = bacValue[tx * 4 + 1 + ty * w * 4];
                        r = bacValue[tx * 4 + 2 + ty * w * 4];
                        B = dstValue[x * 4 + y * w * 4];
                        G = dstValue[x * 4 + 1 + y * w * 4];
                        R = dstValue[x * 4 + 2 + y * w * 4];
                        double xr = 0.0, xb = 0.0, xg = 0.0;
                        xr = ((double)r - ((double)R - (double)k * 255.0)) / (2.0 * 255.0 * k);
                        xg = ((double)g - ((double)G - (double)k * 255.0)) / (2.0 * 255.0 * k);
                        xb = ((double)b - ((double)B - (double)k * 255.0)) / (2.0 * 255.0 * k);
                        tempValue[x * 4 + y * w * 4] = (byte)(255.0 * (1.0 - 3.0 * xb * xb + 2.0 * xb * xb * xb));
                        tempValue[x * 4 + 1 + y * w * 4] = (byte)(255.0 * (1.0 - 3.0 * xg * xg + 2.0 * xg * xg * xg));
                        tempValue[x * 4 + 2 + y * w * 4] = (byte)(255.0 * (1.0 - 3.0 * xr * xr + 2.0 * xr * xr * xr));
                    }
                }
                Stream sTemp = srcImage.PixelBuffer.AsStream();
                sTemp.Seek(0, SeekOrigin.Begin);
                sTemp.Write(tempValue, 0, w * 4 * h);
                return srcImage;
            }
            else
            {
                return null;
            }
        }

最后,分享一个专业的图像处理网站(微像素),里面有很多源代码下载:

目录
相关文章
|
C# 计算机视觉
Win8 Metro(C#) 数字图像处理--1 图像打开,保存
原文:Win8 Metro(C#) 数字图像处理--1 图像打开,保存 作为本专栏的第一篇,必不可少的需要介绍一下图像的打开与保存,一便大家后面DEMO的制作。
1126 0
|
算法 C# 计算机视觉
C#数字图像处理算法详解大全
原文:C#数字图像处理算法详解大全 C#数字图像处理算法详解大全 网址http://dongtingyueh.blog.
1485 0
|
算法 C# 计算机视觉
Win8Metro(C#)数字图像处理--2.3图像反色
原文:Win8Metro(C#)数字图像处理--2.3图像反色 [函数名称] 图像反色函数ContraryProcess(WriteableBitmap src) [算法说明]     反色公式如下:       P'(x,y) = 255 - P(x,y);     P'(x,y)为反色后的像素值,P(x,y)是原始像素值。
1086 0
|
算法 数据挖掘 C#
Win8Metro(C#)数字图像处理--2.4图像颜色聚类
原文:Win8Metro(C#)数字图像处理--2.4图像颜色聚类  [函数名称] 图像颜色聚类函数ClusterProcess(WriteableBitmap src,int value) [算法说明]   图像颜色聚类的方法有很多,但是对于视频监控而言,现有方法很难满足实时性的要求,这里介绍一种位屏蔽压缩的方法实现颜色聚类,可以满足实时性的要求。
1012 0
|
C# 计算机视觉
Win8Metro(C#)数字图像处理--2.8图像线性变换
原文:Win8Metro(C#)数字图像处理--2.8图像线性变换  2.8图像线性变换 [函数名称] 图像线性变换函数LinearTransformProcess(WriteableBitmap sr...
908 0
|
算法 C# 计算机视觉
Win8Metro(C#)数字图像处理--2.7图像伪彩色
原文:Win8Metro(C#)数字图像处理--2.7图像伪彩色  2.7图像伪彩色函数 [函数名称] 图像伪彩色函数PseudoColorProcess(WriteableBitmap src) [算法说明]   伪彩色是为改善视觉效果,利用计算机图像增强技术对图像的灰度赋予的不同假色彩,即,将一张灰度图转化为彩色图。
1074 0
|
C# 计算机视觉
Win8Metro(C#)数字图像处理--2.6图像对比度调整
原文:Win8Metro(C#)数字图像处理--2.6图像对比度调整  2.6图像对比度调整函数 [函数名称] 图像对比度调整函数ContrastAdjustProcess(WriteableBitma...
1065 0
|
C# 计算机视觉
Win8Metro(C#)数字图像处理--2.5图像亮度调整
原文:Win8Metro(C#)数字图像处理--2.5图像亮度调整  2.5图像亮度调整函数 [函数名称]   图像亮度调整函数BrightnessAdjustProcess(Wr...
1141 0
|
C# 计算机视觉
Win8Metro(C#)数字图像处理--2.10图像中值滤波
原文:Win8Metro(C#)数字图像处理--2.10图像中值滤波  [函数名称] 图像中值滤波函数MedianFilterProcess(WriteableBitmap src) [函数代码]        ///        /// Median filter process.
1229 0
|
C# 计算机视觉
Win8Metro(C#)数字图像处理--2.9图像均值滤波
原文:Win8Metro(C#)数字图像处理--2.9图像均值滤波  [函数名称] 图像均值滤波函数MeanFilterProcess(WriteableBitmap src) [函数代码]        ///        /// Mean filter process.
1250 0