using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Bitmap b;
Bitmap b1;
double sumr;
double sumb;
double sumg;
Color c1 = new Color();
Color[,] c = new Color[7, 7];
double[,] gaosi = new double[7, 7];
double sum = 0;
double r;
double bb;
double g;
public Form1()
{
InitializeComponent();
b = new Bitmap(pictureBox1.Image);
b1 = new Bitmap(b);
}
private void Form1_Load(object sender, EventArgs e)
{
}
private Color gaosi_1(int x,int y)
{
sumr = 0;
sumb = 0;
sumg = 0;
sum = 0;
for (int i = -3; i <= 3; i++)
{
for (int j = -3; j <= 3; j++)
{
//gaosi[i + 3, j + 3] = 1 / (2 * 3.1415926 * 1) * Math.Exp(-(i * i + j * j) / 1);
gaosi[i + 3, j + 3] = (Math.Exp(-(i * i) / 8)/ (Math.Sqrt(2 * Math.PI) * 2) ) * (Math.Exp(-(j * j) / 8) / (Math.Sqrt(2 * Math.PI) * 2) );
sum = sum + gaosi[i + 3, j + 3];
c[i+3, j+3] = new Color();
c[i+3, j+3] = b.GetPixel(i + x, j + y);
}
}
for (int i = - 3;i< 3; i++)
{
for (int j = -3; j <= 3; j++)
{
r = bb = g = 0;
gaosi[i + 3, j + 3] = gaosi[i + 3, j + 3] / sum;
r =(c[i+3,j+3].R*gaosi[i + 3, j + 3]);
sumr = ((r + sumr) > 255 ? 255 : r + sumr);
bb = (c[i + 3, j + 3].B * gaosi[i + 3, j + 3]);
sumb = ((bb + sumb) > 255 ? 255 : bb + sumb);
g = (c[i + 3, j + 3].G * gaosi[i + 3, j + 3]);
sumg = ((g + sumg) > 255 ? 255 : g + sumg);
}
}
c[4,4] = Color.FromArgb((byte)sumr, (byte)sumg,(byte) sumb);
c1 = c[4, 4];
return c1;
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < b.Width; i++)
{
for (int j = 0; j < b.Height; j++)
{
if ((i > 3 && i < b.Width - 3) && (j > 3 && j < b.Height - 3))
{
b1.SetPixel(i, j, gaosi_1(i, j));
}
}
}
pictureBox1.Image = b1;
}
}
}
贴个完整代码