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

  1. /// <summary>
  2. /// Image merge process.
  3. /// </summary>
  4. /// <param name="bacImage">The background image.</param>
  5. /// <param name="dstImage">The source image.</param>
  6. /// <param name="k">One parameter, from 0 to 1.</param>
  7. /// <returns></returns>
  8. public static WriteableBitmap ImageMerge(WriteableBitmap bacImage, WriteableBitmap dstImage, double k)
  9. {
  10. if (bacImage != null && dstImage != null)
  11. {
  12. int w = dstImage.PixelWidth;
  13. int h = dstImage.PixelHeight;
  14. int sw = bacImage.PixelWidth;
  15. int sh = bacImage.PixelHeight;
  16. WriteableBitmap srcImage = new WriteableBitmap(w, h);
  17. byte[] dstValue = dstImage.PixelBuffer.ToArray();
  18. byte[] bacValue = bacImage.PixelBuffer.ToArray();
  19. byte[] tempValue = new byte[dstValue.Length];
  20. int r = 0, g = 0, b = 0, R = 0, G = 0, B = 0;
  21. for (int y = 0; y < h; y++)
  22. {
  23. for (int x = 0; x < w; x++)
  24. {
  25. int tx = x % sw;
  26. int ty = y % sh;
  27. b = bacValue[tx * 4 + ty * w * 4];
  28. g = bacValue[tx * 4 + 1 + ty * w * 4];
  29. r = bacValue[tx * 4 + 2 + ty * w * 4];
  30. B = dstValue[x * 4 + y * w * 4];
  31. G = dstValue[x * 4 + 1 + y * w * 4];
  32. R = dstValue[x * 4 + 2 + y * w * 4];
  33. double xr = 0.0, xb = 0.0, xg = 0.0;
  34. xr = ((double)r - ((double)R - (double)k * 255.0)) / (2.0 * 255.0 * k);
  35. xg = ((double)g - ((double)G - (double)k * 255.0)) / (2.0 * 255.0 * k);
  36. xb = ((double)b - ((double)B - (double)k * 255.0)) / (2.0 * 255.0 * k);
  37. tempValue[x * 4 + y * w * 4] = (byte)(255.0 * (1.0 - 3.0 * xb * xb + 2.0 * xb * xb * xb));
  38. tempValue[x * 4 + 1 + y * w * 4] = (byte)(255.0 * (1.0 - 3.0 * xg * xg + 2.0 * xg * xg * xg));
  39. tempValue[x * 4 + 2 + y * w * 4] = (byte)(255.0 * (1.0 - 3.0 * xr * xr + 2.0 * xr * xr * xr));
  40. }
  41. }
  42. Stream sTemp = srcImage.PixelBuffer.AsStream();
  43. sTemp.Seek(0, SeekOrigin.Begin);
  44. sTemp.Write(tempValue, 0, w * 4 * h);
  45. return srcImage;
  46. }
  47. else
  48. {
  49. return null;
  50. }
  51. }

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

Win8 Metro(C#)数字图像处理--2.73一种背景图像融合特效的更多相关文章

  1. Win8 Metro(C#)数字图像处理--2.59 P分位法图像二值化

    原文:Win8 Metro(C#)数字图像处理--2.59 P分位法图像二值化  [函数名称]   P分位法图像二值化 [算法说明]   所谓P分位法图像分割,就是在知道图像中目标所占的比率Rat ...

  2. Win8 Metro(C#)数字图像处理--2.57一维最大熵法图像二值化

    原文:Win8 Metro(C#)数字图像处理--2.57一维最大熵法图像二值化  [函数名称] 一维最大熵法图像二值化WriteableBitmap EntropymaxThSegment(Wr ...

  3. Win8 Metro(C#)数字图像处理--2.75灰度图像的形态学算法

    原文:Win8 Metro(C#)数字图像处理--2.75灰度图像的形态学算法 前面章节中介绍了二值图像的形态学算法,这里讲一下灰度图的形态学算法,主要是公式,代码略. 1,膨胀算法 2,腐蚀算法 3 ...

  4. Win8 Metro(C#)数字图像处理--4图像颜色空间描述

    原文:Win8 Metro(C#)数字图像处理--4图像颜色空间描述  图像颜色空间是图像颜色集合的数学表示,本小节将针对几种常见颜色空间做个简单介绍. /// <summary> / ...

  5. Win8 Metro(C#)数字图像处理--3.2图像方差计算

    原文:Win8 Metro(C#)数字图像处理--3.2图像方差计算 /// <summary> /// /// </summary>Variance computing. / ...

  6. Win8 Metro(C#)数字图像处理--3.3图像直方图计算

    原文:Win8 Metro(C#)数字图像处理--3.3图像直方图计算 /// <summary> /// Get the array of histrgram. /// </sum ...

  7. Win8 Metro(C#)数字图像处理--3.4图像信息熵计算

    原文:Win8 Metro(C#)数字图像处理--3.4图像信息熵计算 [函数代码] /// <summary> /// Entropy of one image. /// </su ...

  8. Win8 Metro(C#)数字图像处理--3.5图像形心计算

    原文:Win8 Metro(C#)数字图像处理--3.5图像形心计算 /// <summary> /// Get the center of the object in an image. ...

  9. Win8 Metro(C#)数字图像处理--3.1图像均值计算

    原文:Win8 Metro(C#)数字图像处理--3.1图像均值计算 /// <summary> /// Mean value computing. /// </summary> ...

随机推荐

  1. (转自aierong原创技术随笔)sqlserver字符串拆分(split)方法汇总

    sqlserver字符串拆分(split)方法汇总   --方法0:动态SQL法declare @s varchar(100),@sql varchar(1000)set @s='1,2,3,4,5, ...

  2. 项目中使用了个quartz包,启动时提示Quartz version update check failed

    <span style="font-family: Arial, Helvetica, sans-serif;">2015-09-13 00:12:02 Abstrac ...

  3. js中的style与jQuery中的css

    使用jQuery选择器时,可以直接使用css函数(注意不能使用$("p")[1].css()) $("p").css("background-colo ...

  4. [Django] Start a new django project

    Assume we already have a env created call 'demo-env': cd demo-env . bin/activate pip install django ...

  5. 小强的HTML5移动开发之路(34)——jQuery中的选择器

    一.jQuery是什么? jQuery是由美国人John Resig创建,至今吸引了来自世界各地的众多javascript高手加入其中. jQuery的创始人和技术领袖,目前在Mozilla担任Jav ...

  6. App各种Icon及Launch image的尺寸和用途

    App各种Icon及Launch image的尺寸和用途 IOS7,8 Asset iPhone 6 Plus (@3x) iPhone 6 and iPhone 5 (@2x) iPhone 4s ...

  7. 几种tab切换尝试 原生js

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. 关于生命周期里执行setState

    React里生命周期的哪些方法里可以执行setState,这对于很多使用React很长时间的开发都是个迷惑的问题. 先看一下完整的生命周期. 再看两篇文章 React componentDidUpda ...

  9. 【32.89%】【codeforces 574D】Bear and Blocks

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  10. iOS 多线程的使用

    iOS 多线程 先看一篇阮一峰写关于进程和线程的文章,快速了解线程的相关概念. 随着现在计算机硬件的发展,多核心.高频率的cpu越来越普及,为了充分发挥cpu的性能,在不通的环境下实现cpu的利用最大 ...