作者andy8050802 (阿卢)
看板C_Sharp
标题[问题] 高斯白杂讯与高斯杂讯的差别
时间Sat Sep 24 11:56:36 2016
初次学习影像处理,在网上看到对影像加入高斯噪音(杂讯),想要变成加入高斯"白"杂讯
的话,应该修改什麽呢?因为不知两者有何差别希望各位大大指导谢谢!
以下为看见的程式码~
/// <summary>
/// 对一幅图形进行高斯噪音处理。
/// </summary>
/// <param name="img"></param>
/// <param name="u">数学期望</param>
/// <param name="a">方差</param>
/// <returns></returns>
static public Bitmap goss_noise(Image img, double u, double a)
{
int width = img.Width;
int height = img.Height;
Bitmap bitmap2 = new Bitmap(img);
Rectangle rectangle1 = new Rectangle(0, 0, width, height);
PixelFormat format = bitmap2.PixelFormat;
BitmapData data = bitmap2.LockBits(rectangle1, ImageLockMode.ReadWrite, format
);
IntPtr ptr = data.Scan0;
int numBytes = width * height * 4;
byte[] rgbValues = new byte[numBytes];
Marshal.Copy(ptr, rgbValues, 0, numBytes);
Random random1 = new Random();
for (int i = 0; i < numBytes; i += 4)
{
for (int j = 0; j < 3; j++)
{
double z;
z = random1.NextDouble() - 0.5 + u;
double pz = gossp(z, u, a);
double r = random1.NextDouble();
// Debug.WriteLineIf(pz < 0.1, string.Format("z={0}\tpz={1}\tr={2}", z,pz,r));
if (r <= pz)
{
double p = rgbValues[i + j];
p = p + z * 128;
if (p > 255)
p = 255;
if (p < 0)
p = 0;
rgbValues[i + j] = (byte)p;
}
}
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 49.217.167.158
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1474689398.A.9DD.html