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 ...
随机推荐
- Spring mvc 多文件上传
http://blog.csdn.net/swingpyzf/article/details/20230865
- 【BZOJ1426】收集邮票 概率DP 论文题 推公式题
链接: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网 ...
- 基于 Android NDK 的学习之旅----- C调用Java
许多成熟的C引擎要移植到Android 平台上使用 , 一般都会 提供 一些接口, 让Android sdk 和 jdk 实现. 下文将会介绍 C 如何 通过 JNI 层调用 Java 的静态和非静态 ...
- C 语言 —— ! 和 ~(感叹号和波浪号)
~ 表示按位取反,是位运算符,运算对象是 2 进制. !表示逻辑非,是逻辑运算符,运算对象是真或假.最终的结果也是 0/1 !!:则表示取过一次非之后,再取一次: !!5 ⇒ 1
- 【dotnet跨平台】Asp.net 正在经历的变革
[dotnet跨平台]Asp.net 正在经历的变革 Asp.net 正在经历一场变革.从官网:https://get.asp.net/ 我们能够看到多个版本号的字眼例如以下: ASP.NET ...
- xCode中怎样保存自己的代码块
在开发iOS的过程中.xCode肯定是用得最多的工具.没有之中的一个.由于苹果官方提供的就这一个平台,尽管没有竞争对手,但秉承苹果一贯的注重细节的原则,xCode还是一款相当不错的IDE. 作为一名i ...
- simple java mail
<dependency> <groupId>org.simplejavamail</groupId> <artifactId>simple-java-m ...
- 学maven
跟着刚哥深入学maven 前言:目前所有的项目都在使用maven,可是一直没有时间去整理学习,这两天正好有时间,好好的整理一下. 一.为什么使用Maven这样的构建工具[why] ① 一个项目就是 ...
- ios tableView那些事
iOS开发很重要的一个功能就是tableView,可以说熟练使用tableView是iOS开发必修的课程,网上很多相关介绍,推荐一个博客参考一下: http://blog.csdn.net/lengs ...
- Shell脚本实现超简洁的在Linux服务器上安装nginx、resin、java、tomcat、redis等程序
说明: 用平常的方式在Linux服务器上安装程序,需要下载安装包.进入安装包位置.给安装包文件赋予可执行权限.执行安装.设置环境变量--等等一系列复杂的操作.并且如果有关联也需要一个一个的挨着安装.耗 ...