?? form1.cs
字號(hào):
?using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 課程設(shè)計(jì)
{
public partial class 數(shù)字圖像處理課程設(shè)計(jì) : Form
{
public 數(shù)字圖像處理課程設(shè)計(jì)()
{
InitializeComponent();
}
Graphics gf;
Bitmap box;
int[] CountR = new int[256];
int pX;
int pY;
int dx;
int dy;
private void 打開ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog op = new OpenFileDialog();
op.Filter = "Bmp File(*.bmp)|*.bmp";
if (op.ShowDialog() == DialogResult.OK)
{
this.box = new Bitmap(op.FileName);
this.pictureBox1.Image = box;
this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage ;
}
}
private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
{
string str;
this.box = new Bitmap(this.pictureBox2.Image);
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Bmp File(*.bmp)|*.bmp";
sfd.ShowDialog();
str = sfd.FileName;
box.Save(str);
}
private void 繪制直方圖ToolStripMenuItem_Click(object sender, EventArgs e)
{
pictureBox1.Visible = true;
this.progressBar1.Visible = true;
this.pictureBox2.Refresh();
int R = 0;
this.box = new Bitmap(pictureBox1.Image);
for (int i = 0; i < 256; i++)
{
CountR[i] = 0;
}
for (int i = 0; i < box.Width; i++)
{
for (int j = 0; j < box.Height; j++)
{
R = box.GetPixel(i, j).R;
CountR[R]++;
}
}
int M = 0;
for (int i = 0; i < 256; i++)
{
M += CountR[i];
}
Pen mypen = new Pen(Color.Blue, 1);
Point pS1 = new Point(0, (this.Height - 20));
for (int k = 0; k < 256; k++)
{
int q = CountR[k]/5 ;
Point p1 = new Point((pS1.X + k), (this.Height - 20 - q));
Point p2 = new Point((pS1.X + k), (this.Height - 20));
gf.DrawLine(mypen, p1, p2);
progressBar1.Maximum = 255;
this.progressBar1.Value = k;
}
this.progressBar1.Hide();
}
private void 數(shù)字圖像處理課程設(shè)計(jì)_Load(object sender, EventArgs e)
{
gf = pictureBox2.CreateGraphics();
}
private void 灰度圖像ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.progressBar1.Visible = true;
Color c = new Color();
this.box = new Bitmap(this.pictureBox1.Image);
int rr, gg, bb, cc;
for (int i = 0; i < box.Width; i++)
{
for (int j = 0; j < box.Height; j++)
{
c = box.GetPixel(i, j);
rr = c.B;
gg = c.G;
bb = c.B;
cc = (int)((rr + gg + bb) / 3);
if (cc < 0) cc = 0;
if (cc > 255) cc = 255;
Color c1 = Color.FromArgb(cc, cc, cc);
box.SetPixel(i, j, c1);
}
this.progressBar1.Maximum = box.Width;
this.progressBar1.Value = i;
pictureBox2.Refresh();
pictureBox2.Image = box;
}
progressBar1.Hide();
}
private void 二值化ToolStripMenuItem_Click(object sender, EventArgs e)
{
progressBar1.Visible = true;
this.box = new Bitmap(pictureBox1.Image);
double n;
int i, j, k;
int[,] h = new int[10000, 10000];
int r;
int[] hd = new int[300];
double[] p = new double[300];
double[] tt = new double[300];
double u = 0;
double[] uu = new double[300];
double[] w = new double[300];
double[] b = new double[300];
double max;
double maxb = 0;
int t;
Color cc1 = Color.FromArgb(255, 255, 255);
Color cc2 = Color.FromArgb(0, 0, 0);
Color c = new Color();
for (i = 1; i < box.Width; i++)
{
for (j = 1; j < box.Height; j++)
{
c = box.GetPixel(i, j);
r = c.R;
h[i, j] = r;
}
}
for (i = 1; i < box.Width; i++)
{
for (j = 1; j < box.Height; j++)
{
for (r = 0; r < 255; r++)
{
if (h[i, j] == r)
{
tt[r]++;
}
}
}
for (t = 1; t < 256; t++)
{
p[t] = tt[t] / (box.Width * box.Height);
}
for (t = 1; t < 256; t++)
{
u = u + (t - 1) * p[t];
}
for (k = 1; k < 256; k++)
{
uu[k] = uu[k - 1] + (k - 1) * p[t];
w[k] = w[k - 1] + p[k];
if (w[k] * (1 - w[k]) != 0)
b[k] = ((u * w[k] - uu[k]) * (u * w[k] - uu[k])) / (w[k] * (1 - w[k]));
}
max = b[0];
for (k = 0; k < 255; k++)
{
if (b[k] >= max)
max = b[k];
}
for (k = 0; k < 255; k++)
{
if (b[k] >= max)
maxb = k;
}
n = maxb - 1;
for (i = 1; i < box.Width; i++)
{
for (j = 1; j < box.Height; j++)
{
c = box.GetPixel(i, j);
r = c.R;
if (r > (maxb - 1))
box.SetPixel(i, j, cc2);
else box.SetPixel(i, j, cc1);
}
this.progressBar1.Maximum = box.Width;
this.progressBar1.Value = i;
pictureBox2.Refresh();
pictureBox2.Image = box;
}
progressBar1.Hide();
}
}
private void 浮雕ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.progressBar1.Visible = true;
Color c = new Color();
Color cc = new Color();
this.box = new Bitmap(pictureBox1.Image);
int rr, gg, bb, r1, g1, b1, r2, g2, b2;
for (int i = 0; i < pictureBox1.Image.Width - 1; i++)
{
for (int j = 0; j < pictureBox1.Image.Height - 1; j++)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -