基本信息
源码名称:C#边缘检测(Roberts/Sobel/拉普拉斯/Prewitt/Robinson/右下/kirsch/)
源码大小:0.51M
文件格式:.rar
开发语言:C#
更新时间:2019-03-25
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559

本次赞助数额为: 2 元 
   源码介绍

 用多种方法对图像进行边缘检测,可作为车牌识别、图形处理的参考。


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace 边缘检测
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void 输入图像ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog opengl = new OpenFileDialog();
            opengl.Filter = "Bmp File(*.bmp)|*.bmp";
            if (opengl.ShowDialog() == DialogResult.OK)
            {
                Bitmap image = new Bitmap(opengl.FileName);
                pictureBox1.Image = image;

            }

        }

        private void robertsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Color c1 = new Color();
            Color c2 = new Color();
            Color c3 = new Color();
            Color c4 = new Color();

            int rr, gg, bb, r1, r2, r3, r4, fxr, fyr, i, j;
            int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
            Bitmap box1 = new Bitmap(pictureBox1.Image);
            Bitmap box2 = new Bitmap(pictureBox1.Image);
            for (i = 0; i < pictureBox1.Image.Width - 2; i  )
            {
                for (j = 0; j < pictureBox1.Image.Height - 2; j  )
                {
                    c1 = box1.GetPixel(i, j);
                    c2 = box1.GetPixel(i   1, j   1);
                    c3 = box1.GetPixel(i   1, j);
                    c4 = box1.GetPixel(i, j   1);
                    r1 = c1.R;
                    r2 = c2.R;
                    r3 = c3.R;
                    r4 = c4.R;
                    fxr = r1 - r2;
                    fyr = r3 - r4;
                    rr = Math.Abs(fxr)   Math.Abs(fyr)   128;
                    if (rr < 0) rr = 0;
                    if (rr > 255) rr = 255;
                    g1 = c1.G;
                    g2 = c2.G;
                    g3 = c3.G;
                    g4 = c4.G;
                    fxg = g1 - g2;
                    fyg = g3 - g4;
                    gg = Math.Abs(fxg)   Math.Abs(fyg)   128;
                    if (gg < 0) gg = 0;
                    if (gg > 255) gg = 255;
                    b1 = c1.B;
                    b2 = c2.B;
                    b3 = c3.B;
                    b4 = c4.B;
                    fxb = b1 - b2;
                    fyb = b3 - b4;
                    bb = Math.Abs(fxb)   Math.Abs(fyb)   128;
                    if (bb < 0) bb = 0;
                    if (bb > 255) bb = 255;
                    Color cc = Color.FromArgb(rr, gg, bb);
                    box2.SetPixel(i, j, cc);

                }
                pictureBox2.Refresh();
                pictureBox2.Image = box2;
            }
        }

        private void sobelToolStripMenuItem_Click(object sender, EventArgs e)
        {

            Color c1 = new Color();
            Color c2 = new Color();
            Color c3 = new Color();
            Color c4 = new Color();
            Color c5 = new Color();
            Color c6 = new Color();
            Color c7 = new Color();
            Color c8 = new Color();
            Color c9 = new Color();

            int rr, r1, r2, r3, r4,r5,r6,r7,r8,r9, fxr, fyr, i, j;
           // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
            Bitmap box1 = new Bitmap(pictureBox1.Image);
            Bitmap box2 = new Bitmap(pictureBox1.Image);
            for (i = 1; i < pictureBox1.Image.Width - 2; i  )
            {
                for (j =1; j < pictureBox1.Image.Height - 2; j  )
                {
                    c1 = box1.GetPixel(i, j - 1);
                    c2 = box1.GetPixel(i - 1, j);
                    c3 = box1.GetPixel(i, j);
                    c4 = box1.GetPixel(i   1, j);
                    c5 = box1.GetPixel(i, j   1);
                    c6 = box1.GetPixel(i - 1, j - 1);
                    c7 = box1.GetPixel(i - 1, j   1);
                    c8 = box1.GetPixel(i   1, j - 1);
                    c9 = box1.GetPixel(i   1, j   1);
                    r1 = c1.R;
                    r2 = c2.R;
                    r3 = c3.R;
                    r4 = c4.R;
                    r5 = c5.R;
                    r6 = c6.R;
                    r7 = c7.R;
                    r8 = c8.R;
                    r9 = c9.R;
                    fxr = r6   2 * r2   r7 - r8 - 2 * r4 - r9;
                    fyr = r6   2 * r1   r8 - r7 - 2 * r5 - r9;
                    rr = Math.Abs(fxr)   Math.Abs(fyr);
                    if (rr < 0) rr = 0;
                    if (rr > 255) rr = 255;
                    Color cc = Color.FromArgb(rr, rr, rr);
                    box2.SetPixel(i, j, cc);

                }
                pictureBox2.Refresh();
                pictureBox2.Image = box2;
            }
        }

        private void 拉普拉斯1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Color c1 = new Color();
            Color c2 = new Color();
            Color c3 = new Color();
            Color c4 = new Color();
            Color c5 = new Color();

            int rr, gg, bb, r1, r2, r3, r4, r5, fxr, i, j;
            int g1, g2, g3, g4, g5, fxg, b1, b2, b3, b4, b5, fxb;
            Bitmap box1 = new Bitmap(pictureBox1.Image);
            Bitmap box2 = new Bitmap(pictureBox1.Image);
            for (i = 1; i < pictureBox1.Image.Width - 2; i  )
            {
                for (j = 1; j < pictureBox1.Image.Height - 2; j  )
                {
                    c1 = box1.GetPixel(i, j - 1);
                    c2 = box1.GetPixel(i - 1, j);
                    c3 = box1.GetPixel(i, j);
                    c4 = box1.GetPixel(i   1, j);
                    c5 = box1.GetPixel(i, j   1);
                    r1 = c1.R;
                    r2 = c2.R;
                    r3 = c3.R;
                    r4 = c4.R;
                    r5 = c5.R;
                    fxr = 4 * r3 - r1 - r2 - r4 - r5;
                    rr = Math.Abs(fxr) * 5   128;
                    if (rr < 0) rr = 0;
                    if (rr > 255) rr = 255;
                    g1 = c1.G;
                    g2 = c2.G;
                    g3 = c3.G;
                    g4 = c4.G;
                    g5 = c5.G;
                    fxg = 4 * g3 - g1 - g2 - g4 - g5;
                    gg = Math.Abs(fxg) * 5   128;
                    if (gg < 0) gg = 0;
                    if (gg > 255) gg = 255;
                    b1 = c1.B;
                    b2 = c2.B;
                    b3 = c3.B;
                    b4 = c4.B;
                    b5 = c5.B;
                    fxb = 4 * b3 - b1 - b2 - b4 - b5;
                    bb = Math.Abs(fxb) * 5   128;
                    if (bb < 0) bb = 0;
                    if (bb > 255) bb = 255;
                    Color cc = Color.FromArgb(rr, gg, bb);
                    box2.SetPixel(i, j, cc);

                }
                pictureBox2.Refresh();
                pictureBox2.Image = box2;
            }

        }

        private void 拉普拉斯2ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Color c1 = new Color();
            Color c2 = new Color();
            Color c3 = new Color();
            Color c4 = new Color();
            Color c5 = new Color();
            Color c6 = new Color();
            Color c7 = new Color();
            Color c8 = new Color();
            Color c9 = new Color();

            int rr, r1, r2, r3, r4, r5,r6, r7, r8, r9, fxr, i, j;
            // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
            Bitmap box1 = new Bitmap(pictureBox1.Image);
            Bitmap box2 = new Bitmap(pictureBox1.Image);
            for (i = 1; i < pictureBox1.Image.Width - 2; i  )
            {
                for (j = 1; j < pictureBox1.Image.Height - 2; j  )
                {
                    c1 = box1.GetPixel(i, j - 1);
                    c2 = box1.GetPixel(i - 1, j);
                    c3 = box1.GetPixel(i, j);
                    c4 = box1.GetPixel(i   1, j);
                    c5 = box1.GetPixel(i, j   1);
                    c6 = box1.GetPixel(i - 1, j - 1);
                    c7 = box1.GetPixel(i - 1, j   1);
                    c8 = box1.GetPixel(i   1, j - 1);
                    c9 = box1.GetPixel(i   1, j   1);
                    r1 = c1.R;
                    r2 = c2.R;
                    r3 = c3.R;
                    r4 = c4.R;
                    r5 = c5.R;
                    r6 = c6.R;
                    r7 = c7.R;
                    r8 = c8.R;
                    r9 = c9.R;
                    fxr = 8 * r3 - r1 - r2 - r4 - r5 - r6 - r7 - r8 - r9;
                   // fyr = r6   2 * r1   r8 - r7 - 2 * r5 - r9;
                    rr = Math.Abs(fxr);
                    if (rr < 0) rr = 0;
                    if (rr > 255) rr = 255;
                    Color cc = Color.FromArgb(rr, rr, rr);
                    box2.SetPixel(i, j, cc);

                }
                pictureBox2.Refresh();
                pictureBox2.Image = box2;
            }
 
        }

        private void 右下ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Color c1 = new Color();
            Color c2 = new Color();
            Color c3 = new Color();
            Color c4 = new Color();
            Color c5 = new Color();
            Color c6 = new Color();
            Color c7 = new Color();
            Color c8 = new Color();
            Color c9 = new Color();

            int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, i, j;
            // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
            Bitmap box1 = new Bitmap(pictureBox1.Image);
            Bitmap box2 = new Bitmap(pictureBox1.Image);
            for (i = 1; i < pictureBox1.Image.Width - 2; i  )
            {
                for (j = 1; j < pictureBox1.Image.Height - 2; j  )
                {
                    c1 = box1.GetPixel(i, j - 1);
                    c2 = box1.GetPixel(i - 1, j);
                    c3 = box1.GetPixel(i, j);
                    c4 = box1.GetPixel(i   1, j);
                    c5 = box1.GetPixel(i, j   1);
                    c6 = box1.GetPixel(i - 1, j - 1);
                    c7 = box1.GetPixel(i - 1, j   1);
                    c8 = box1.GetPixel(i   1, j - 1);
                    c9 = box1.GetPixel(i   1, j   1);
                    r1 = c1.R;
                    r2 = c2.R;
                    r3 = c3.R;
                    r4 = c4.R;
                    r5 = c5.R;
                    r6 = c6.R;
                    r7 = c7.R;
                    r8 = c8.R;
                    r9 = c9.R;
                    fxr = 2 * r2 - 2 * r5   2 * r1   2 * r4;
                    // fyr = r6   2 * r1   r8 - r7 - 2 * r5 - r9;
                    rr = Math.Abs(fxr);
                    if (rr < 0) rr = 0;
                    if (rr > 255) rr = 255;
                    Color cc = Color.FromArgb(rr, rr, rr);
                    box2.SetPixel(i, j, cc);

                }
                pictureBox2.Refresh();
                pictureBox2.Image = box2;
            }

        }

        private void prewittToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Color c1 = new Color();
            Color c2 = new Color();
            Color c3 = new Color();
            Color c4 = new Color();
            Color c5 = new Color();
            Color c6 = new Color();
            Color c7 = new Color();
            Color c8 = new Color();
            Color c9 = new Color();

            int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, i, j;
            // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
            Bitmap box1 = new Bitmap(pictureBox1.Image);
            Bitmap box2 = new Bitmap(pictureBox1.Image);
            for (i = 1; i < pictureBox1.Image.Width - 2; i  )
            {
                for (j = 1; j < pictureBox1.Image.Height - 2; j  )
                {
                    c1 = box1.GetPixel(i, j - 1);
                    c2 = box1.GetPixel(i - 1, j);
                    c3 = box1.GetPixel(i, j);
                    c4 = box1.GetPixel(i   1, j);
                    c5 = box1.GetPixel(i, j   1);
                    c6 = box1.GetPixel(i - 1, j - 1);
                    c7 = box1.GetPixel(i - 1, j   1);
                    c8 = box1.GetPixel(i   1, j - 1);
                    c9 = box1.GetPixel(i   1, j   1);
                    r1 = c1.R;
                    r2 = c2.R;
                    r3 = c3.R;
                    r4 = c4.R;
                    r5 = c5.R;
                    r6 = c6.R;
                    r7 = c7.R;
                    r8 = c8.R;
                    r9 = c9.R;
                    fxr = 2 * r3   r6   r2 - r4 - r5   r1   r7   r8 - r9;
                    // fyr = r6   2 * r1   r8 - r7 - 2 * r5 - r9;
                    rr = Math.Abs(fxr);
                    if (rr < 0) rr = 0;
                    if (rr > 255) rr = 255;
                    Color cc = Color.FromArgb(rr, rr, rr);
                    box2.SetPixel(i, j, cc);

                }
                pictureBox2.Refresh();
                pictureBox2.Image = box2;
            }
        }

        private void robinsonToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Color c1 = new Color();
            Color c2 = new Color();
            Color c3 = new Color();
            Color c4 = new Color();
            Color c5 = new Color();
            Color c6 = new Color();
            Color c7 = new Color();
            Color c8 = new Color();
            Color c9 = new Color();

            int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, i, j;
            // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
            Bitmap box1 = new Bitmap(pictureBox1.Image);
            Bitmap box2 = new Bitmap(pictureBox1.Image);
            for (i = 1; i < pictureBox1.Image.Width - 2; i  )
            {
                for (j = 1; j < pictureBox1.Image.Height - 2; j  )
                {
                    c1 = box1.GetPixel(i, j - 1);
                    c2 = box1.GetPixel(i - 1, j);
                    c3 = box1.GetPixel(i, j);
                    c4 = box1.GetPixel(i   1, j);
                    c5 = box1.GetPixel(i, j   1);
                    c6 = box1.GetPixel(i - 1, j - 1);
                    c7 = box1.GetPixel(i - 1, j   1);
                    c8 = box1.GetPixel(i   1, j - 1);
                    c9 = box1.GetPixel(i   1, j   1);
                    r1 = c1.R;
                    r2 = c2.R;
                    r3 = c3.R;
                    r4 = c4.R;
                    r5 = c5.R;
                    r6 = c6.R;
                    r7 = c7.R;
                    r8 = c8.R;
                    r9 = c9.R;
                    fxr = 2 * r2 - 2 * r4   r6   r7 - r8 - r9;
                    // fyr = r6   2 * r1   r8 - r7 - 2 * r5 - r9;
                    rr = Math.Abs(fxr);
                    if (rr < 0) rr = 0;
                    if (rr > 255) rr = 255;
                    Color cc = Color.FromArgb(rr, rr, rr);
                    box2.SetPixel(i, j, cc);

                }
                pictureBox2.Refresh();
                pictureBox2.Image = box2;
            }
        }

        private void kirschToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Color c1 = new Color();
            Color c2 = new Color();
            Color c3 = new Color();
            Color c4 = new Color();
            Color c5 = new Color();
            Color c6 = new Color();
            Color c7 = new Color();
            Color c8 = new Color();
            Color c9 = new Color();

            int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, i, j;
            // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
            Bitmap box1 = new Bitmap(pictureBox1.Image);
            Bitmap box2 = new Bitmap(pictureBox1.Image);
            for (i = 1; i < pictureBox1.Image.Width - 2; i  )
            {
                for (j = 1; j < pictureBox1.Image.Height - 2; j  )
                {
                    c1 = box1.GetPixel(i, j - 1);
                    c2 = box1.GetPixel(i - 1, j);
                    c3 = box1.GetPixel(i, j);
                    c4 = box1.GetPixel(i   1, j);
                    c5 = box1.GetPixel(i, j   1);
                    c6 = box1.GetPixel(i - 1, j - 1);
                    c7 = box1.GetPixel(i - 1, j   1);
                    c8 = box1.GetPixel(i   1, j - 1);
                    c9 = box1.GetPixel(i   1, j   1);
                    r1 = c1.R;
                    r2 = c2.R;
                    r3 = c3.R;
                    r4 = c4.R;
                    r5 = c5.R;
                    r6 = c6.R;
                    r7 = c7.R;
                    r8 = c8.R;
                    r9 = c9.R;
                    fxr = 3 * r6   5 * r1 - 3 * r8   5 * r2 - 3 * r4   5 * r7 - 3 * r5 - 3 * r9;
                    // fyr = r6   2 * r1   r8 - r7 - 2 * r5 - r9;
                    rr = Math.Abs(fxr);
                    if (rr < 0) rr = 0;
                    if (rr > 255) rr = 255;
                    Color cc = Color.FromArgb(rr, rr, rr);
                    box2.SetPixel(i, j, cc);

                }
                pictureBox2.Refresh();
                pictureBox2.Image = box2;
            }
        }

        private void smoothedToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Color c1 = new Color();
            Color c2 = new Color();
            Color c3 = new Color();
            Color c4 = new Color();
            Color c5 = new Color();
            Color c6 = new Color();
            Color c7 = new Color();
            Color c8 = new Color();
            Color c9 = new Color();

            int rr, r1, r2, r3, r4, r5, r6, r7, r8, r9, fxr, fyr, i, j;
            // int g1, g2, g3, g4, fxg, fyg, b1, b2, b3, b4, fxb, fyb;
            Bitmap box1 = new Bitmap(pictureBox1.Image);
            Bitmap box2 = new Bitmap(pictureBox1.Image);
            for (i = 1; i < pictureBox1.Image.Width - 2; i  )
            {
                for (j = 1; j < pictureBox1.Image.Height - 2; j  )
                {
                    c1 = box1.GetPixel(i, j - 1);
                    c2 = box1.GetPixel(i - 1, j);
                    c3 = box1.GetPixel(i, j);
                    c4 = box1.GetPixel(i   1, j);
                    c5 = box1.GetPixel(i, j   1);
                    c6 = box1.GetPixel(i - 1, j - 1);
                    c7 = box1.GetPixel(i - 1, j   1);
                    c8 = box1.GetPixel(i   1, j - 1);
                    c9 = box1.GetPixel(i   1, j   1);
                    r1 = c1.R;
                    r2 = c2.R;
                    r3 = c3.R;
                    r4 = c4.R;
                    r5 = c5.R;
                    r6 = c6.R;
                    r7 = c7.R;
                    r8 = c8.R;
                    r9 = c9.R;
                    fxr = -r2   r4 - r6 - r7   r8   r9;
                    fyr = r6   r1   r8 - r7 - r5 - r9;
                    rr = Math.Abs(fxr)   Math.Abs(fyr);
                    if (rr < 0) rr = 0;
                    if (rr > 255) rr = 255;
                    Color cc = Color.FromArgb(rr, rr, rr);
                    box2.SetPixel(i, j, cc);

                }
                pictureBox2.Refresh();
                pictureBox2.Image = box2;
            }
        }
    }
}