Win8 Metro(C#)数字图像处理--2.73一种背景图像融合特效
原文: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;
}
}
Win8 Metro(C#)数字图像处理--2.73一种背景图像融合特效的更多相关文章
- Win8 Metro(C#)数字图像处理--2.59 P分位法图像二值化
原文:Win8 Metro(C#)数字图像处理--2.59 P分位法图像二值化 [函数名称] P分位法图像二值化 [算法说明] 所谓P分位法图像分割,就是在知道图像中目标所占的比率Rat ...
- Win8 Metro(C#)数字图像处理--2.57一维最大熵法图像二值化
原文:Win8 Metro(C#)数字图像处理--2.57一维最大熵法图像二值化 [函数名称] 一维最大熵法图像二值化WriteableBitmap EntropymaxThSegment(Wr ...
- Win8 Metro(C#)数字图像处理--2.75灰度图像的形态学算法
原文:Win8 Metro(C#)数字图像处理--2.75灰度图像的形态学算法 前面章节中介绍了二值图像的形态学算法,这里讲一下灰度图的形态学算法,主要是公式,代码略. 1,膨胀算法 2,腐蚀算法 3 ...
- Win8 Metro(C#)数字图像处理--4图像颜色空间描述
原文:Win8 Metro(C#)数字图像处理--4图像颜色空间描述 图像颜色空间是图像颜色集合的数学表示,本小节将针对几种常见颜色空间做个简单介绍. /// <summary> / ...
- Win8 Metro(C#)数字图像处理--3.2图像方差计算
原文:Win8 Metro(C#)数字图像处理--3.2图像方差计算 /// <summary> /// /// </summary>Variance computing. / ...
- Win8 Metro(C#)数字图像处理--3.3图像直方图计算
原文:Win8 Metro(C#)数字图像处理--3.3图像直方图计算 /// <summary> /// Get the array of histrgram. /// </sum ...
- Win8 Metro(C#)数字图像处理--3.4图像信息熵计算
原文:Win8 Metro(C#)数字图像处理--3.4图像信息熵计算 [函数代码] /// <summary> /// Entropy of one image. /// </su ...
- Win8 Metro(C#)数字图像处理--3.5图像形心计算
原文:Win8 Metro(C#)数字图像处理--3.5图像形心计算 /// <summary> /// Get the center of the object in an image. ...
- Win8 Metro(C#)数字图像处理--3.1图像均值计算
原文:Win8 Metro(C#)数字图像处理--3.1图像均值计算 /// <summary> /// Mean value computing. /// </summary> ...
随机推荐
- [Angular] Observable.catch error handling in Angular
import { Observable } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; import 'rxjs/add/opera ...
- js字符串转换为数字的三种方法。(转换函数)(强制类型转换)(利用js变量弱类型转换)
js字符串转换为数字的三种方法.(转换函数)(强制类型转换)(利用js变量弱类型转换) 一.总结 js字符串转换为数字的三种方法(parseInt("1234blue"))(Num ...
- MVC 设置项目默认起始页和多级目录的路由配置
我们新建一个MVC的项目 默认的路由是这样的,但是由于一些需求,我们需要对Controllers按照一些规则分类. 比如说我们在Controllers下面建了一个School的文件夹,然后建了一个St ...
- 一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对照
本文主要介绍String类.StringBuffer类.StringBuilder类的差别 : 一.概述 (一)String 字符串常量.可是它具有不可变性,就是一旦创建,对它进行的不论什么改动操作 ...
- 安全配置基线Linux系统
Linux系统安全配置基线 一:共享账号检查 配置名称:用户账号分配检查,避免共享账号存在 配置要求:1.系统需按照实际用户分配账号: 2.避免不同用户间共享账号,避免用户账号和服务器间通信使用的账号 ...
- python3 numpy API练习代码
# -*- coding: utf-8 -*- import numpy as np; a=np.array([1,2,3,4,5,6]); print("数组是:",a) #数组 ...
- AJAX代码格式
var request; //XMLHttpRequest的创建 function createRequest(url){ if(window.XMLHttpRequest){ request = n ...
- 回顾Oracle几个用到的基本语句
create table t_name(id number,name varchar2(10)); drop table t_name; select * from table_name where ...
- WINDOWS 同步(Interlocked,InterlockedExchangeAdd,Slim读/写锁,WaitForSingleObject,CreateWaitableTimer等等)
NOTE0 在以下两种基本情况下,线程之间需要相互通信: 需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性: 一个线程需要通知其它线程某项任务已经完成 1.原子访问:Interlocked ...
- Erlang与ActionScript3采用JSON格式进行Socket通讯
http://hideto.iteye.com/blog/235811 需要下载as3corelib来为ActionScript3处理JSON codec server.erl -module(ser ...