Win8 Metro(C#)数字图像处理--2.72图像噪声
原文:Win8 Metro(C#)数字图像处理--2.72图像噪声
[函数名称]
噪声函数WriteableBitmap NoiseProcess(WriteableBitmap src, byte flagNoise, double meanValue, double varianceValue)
/// <summary>
/// Noise process.
/// </summary>
/// <param name="src">The source image.</param>
/// <param name="flagNoise">One parameter to choose noise mode,0--Gauss noise,1--Rayleigh noise,2--Noise index,3--alt and pepper noise.</param>
/// <param name="meanValue">Mean value or alt value.</param>
/// <param name="varianceValue">Variance value or pepper value.</param>
/// <returns></returns>
public static WriteableBitmap NoiseProcess(WriteableBitmap src, byte flagNoise, double meanValue, double varianceValue)////噪声
{
if (src != null)
{
int w = src.PixelWidth;
int h = src.PixelHeight;
WriteableBitmap srcImage = new WriteableBitmap(w, h);
byte[] temp = src.PixelBuffer.ToArray();
double tempValue = 0;
Random r1, r2;
double v1 = 0, v2 = 0;
r1 = new Random(unchecked((int)DateTime.Now.Ticks));
r2 = new Random(~unchecked((int)DateTime.Now.Ticks));
for (int i = 0; i < temp.Length; i++)
{
switch (flagNoise)
{
case 0:
//Gauss noise 0 20
do
{
v1 = r1.NextDouble();
}
while (v1 <= 0.00000000001);
v2 = r2.NextDouble();
tempValue = Math.Sqrt(-2 * Math.Log(v1)) * Math.Cos(2 * Math.PI * v2) * varianceValue + meanValue;
break;
case 1:
do
//Rayleigh noise 0 200
{
v1 = r1.NextDouble();
}
while (v1 >= 0.9999999999);
tempValue = meanValue + Math.Sqrt(-1 * varianceValue * Math.Log(1 - v1));
break;
case 2:
//Noise index 0.1
do
{
v1 = r1.NextDouble();
}
while (v1 >= 0.9999999999);
tempValue = -1 * Math.Log(1 - v1) / meanValue;
break;
case 3:
//Salt and pepper noise 0.02 0.02
v1 = r1.NextDouble();
if (v1 <= meanValue)
tempValue = -500;
else if (v1 >= (1 - varianceValue))
tempValue = 500;
else
tempValue = 0;
break;
default:
break;
}
tempValue = tempValue + temp[i]; if (tempValue > 255)
{
temp[i] = 255;
}
else if (tempValue < 0)
{
temp[i] = 0;
}
else
temp[i] = Convert.ToByte(tempValue);
}
Stream sTemp = srcImage.PixelBuffer.AsStream();
sTemp.Seek(0, SeekOrigin.Begin);
sTemp.Write(temp, 0, w * 4 * h);
return srcImage;
}
else
{
return null;
}
}
Win8 Metro(C#)数字图像处理--2.72图像噪声的更多相关文章
- 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> ...
- Win8 Metro(C#)数字图像处理--2.74图像凸包计算
原文:Win8 Metro(C#)数字图像处理--2.74图像凸包计算 /// <summary> /// Convex Hull compute. /// </summary> ...
- Win8 Metro(C#)数字图像处理--2.68图像最小值滤波器
原文:Win8 Metro(C#)数字图像处理--2.68图像最小值滤波器 /// <summary> /// Min value filter. /// </summary> ...
- Win8 Metro(C#)数字图像处理--2.52图像K均值聚类
原文:Win8 Metro(C#)数字图像处理--2.52图像K均值聚类 [函数名称] 图像KMeans聚类 KMeansCluster(WriteableBitmap src,i ...
- Win8 Metro(C#)数字图像处理--2.45图像雾化效果算法
原文:Win8 Metro(C#)数字图像处理--2.45图像雾化效果算法 [函数名称] 图像雾化 AtomizationProcess(WriteableBitmap src,i ...
随机推荐
- jquery-2 jQuery原理和核心方法(多看学习视频)
jquery-2 jQuery原理和核心方法(多看学习视频) 一.总结 一句话总结:jQuery就是普通的js对象,只不过方法比较多而已,属性就length一个. 1.jquery的链式操作的底层原 ...
- js进阶 10-4 jquery中基础选择器有哪些
js进阶 10-4 jquery中基础选择器有哪些 一.总结 一句话总结: 1.群组选择器用的符号是什么? 群组选择器,中间是逗号 2.jquery中基础选择器有哪些? 5种,类,id,tag,群组, ...
- 【BZOJ 1007】 [HNOI2008]水平可见直线
[题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1007 [题意] [题解] 这个人讲得很好 http://blog.csdn.net/o ...
- 解析字典包含关键字比如ID,description等,MJExtension 框架 不能直接设置变量与其同名。
@property (nonatomic,strong) NSString *descrip; //设置变量名 _DataReceived=(NSMutableArray *)[HZnewsmess ...
- ajax——XMLHttpRequest
XMLHttpRequest对象.能够让ajax程序在不又一次载入的页面的情况下更新页面数据,页面载入完毕后从server接受发生数据.这样既减轻了server负担又回顾了响应速度,缩短了用户的等待时 ...
- cordova之File Transfer (Permission denied) 权限导致下载失败 - 简书
原文:cordova之File Transfer (Permission denied) 权限导致下载失败 - 简书 在文件上传时,由于权限问题,会报错(Permission denied),安卓6. ...
- Vue Router的官方示例改造
基于Vue Router 2018年8月的官方文档示例,改造一下,通过一个最简单的例子,解决很多初学者的一个困惑. 首先是官方文档示例代码 <!DOCTYPE html> <html ...
- 多线程编程 CreateThread(解释了TContext)
function CreateThread( lpThreadAttributes: Pointer; {安全设置} dwStackSize: DWORD; ...
- make 的参数
1. -j -j(表示 job 的数目)参数可以对项目在进行并行编译,比如在一台双核的机器上,完全可以用 make -j4,让make 最多允许 4 个编译命令同时执行,这样可以更有效的利用 CPU ...
- ubuntu 下 caffe 的安装
官方下载说明:Caffe | Installation: Ubuntu 在 ubuntu 的一些较新版本中(14.04 以上),caffe 的所有依赖包都可以使用 apt-get 大法搞定. 1. 依 ...