C#程序实现Canny边缘检测算法


Canny边缘检测是被公认的检测效果最好的边缘检测方法,是由John F. Canny于1986年提出,算法目标是找出一个最优的边缘检测的方法,所谓最优即:1.好的检测:算法能够尽可能的标识出图像的边缘;2.好的定位:标识出的边缘要尽可能的与实际边缘相接近;3.最小响应:图像中的边缘只能标识一次,并且不能把噪声标识成边缘。同时我们也要满足3个准则:信噪比准则、定位精度准则、单边缘响应准则
资源截图
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing.Imaging;
using System.Windows.Forms;
using System.Drawing;
using System.IO;


namespace CannyEdgeDetectionCSharp
{
        
    class Canny 
    {
        public int Width Height;
        public Bitmap Obj;
        public int[] GreyImage;    
        //Gaussian Kernel Data
        int [] GaussianKernel;
        int KernelWeight ;
        int KernelSize =5;
        float Sigma = 1;   // for N=2 Sigma =0.85  N=5 Sigma =1 N=9 Sigma = 2    2*Sigma = (int)N/2
        //Canny Edge Detection Parameters
        float MaxHysteresisThresh MinHysteresisThresh;
        public float[] DerivativeX;
        public float[] DerivativeY;
        public int[] FilteredImage;
        public float[] Gradient;
        public float[] NonMax;
        public int[] PostHysteresis;
        int[] EdgePoints;
        public float[] GNH;
        public float[] GNL;
        public int[] EdgeMap;
        public int[] VisitedMap;

        public Canny(Bitmap Input)
        {
            // Gaussian and Canny Parameters
            MaxHysteresisThresh = 20F;
            MinHysteresisThresh = 10F;
            Obj = Input;
            Width = Obj.Width;
            Height = Obj.Height;
            EdgeMap = new int[Width Height];
            VisitedMap = new int[Width Height];

            ReadImage();
            DetectCannyEdges();
            return;     
        }

        public Canny(Bitmap Input float Th float Tl)
        {

            // Gaussian and Canny Parameters

            MaxHysteresisThresh = Th;
            MinHysteresisThresh = Tl;

            Obj = Input;
            Width = Obj.Width;
            Height = Obj.Height;

            EdgeMap = new int[Width Height];
            VisitedMap = new int[Width Height];

            ReadImage();
            DetectCannyEdges();
            return;
        }

        public Canny(Bitmap Input float Th float Tl int GaussianMaskSize float SigmaforGaussianKernel)
        {

            // Gaussian and Canny Parameters

            MaxHysteresisThresh = Th;
            MinHysteresisThresh = Tl;
            KernelSize = GaussianMaskSize;
            Sigma = SigmaforGaussianKernel;
            Obj = Input;
            Width = Obj.Width;
            Height = Obj.Height;

            EdgeMap = new int[Width Height];
            VisitedMap = new int[Width Height];

            ReadImage();
            DetectCannyEdges();
            return;
        }

        public Bitmap DisplayImage()
        {
            int i j;
            Bitmap image = new Bitmap(Obj.Width Obj.Height);
            BitmapData bitmapData1 = image.LockBits(new Rectangle(0 0 Obj.Width Obj.Height)
                                     ImageLockMode.ReadOnly PixelFormat.Format32bppArgb);
            unsafe
            {
                byte* i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2010-07-10 20:31  Canny Edge Detection C#
     文件     1540314  2010-07-10 21:11  Canny Edge Detection C#Canny.bmp
     文件         941  2010-07-10 20:02  Canny Edge Detection C#Canny.sln
     文件       20992  2010-07-10 21:10  Canny Edge Detection C#Canny.suo
     文件      746550  2010-07-10 20:26  Canny Edge Detection C#Shrikrishna.bmp
     目录           0  2010-07-10 20:31  Canny Edge Detection C#Iris Recognition
     文件       21357  2010-07-10 20:28  Canny Edge Detection C#Iris RecognitionCanny.cs
     文件        4584  2010-07-10 20:29  Canny Edge Detection C#Iris RecognitionCannyEdgeDetection.csproj
     文件        3328  2010-07-10 21:09  Canny Edge Detection C#Iris RecognitionMainform.cs
     文件       20547  2010-07-10 21:09  Canny Edge Detection C#Iris RecognitionMainform.Designer.cs
     文件        6586  2010-07-10 21:09  Canny Edge Detection C#Iris RecognitionMainform.resx
     文件         494  2010-07-10 20:28  Canny Edge Detection C#Iris RecognitionProgram.cs
     目录           0  2010-07-10 20:31  Canny Edge Detection C#Iris RecognitionProperties
     文件        1294  2009-07-07 18:28  Canny Edge Detection C#Iris RecognitionPropertiesAssemblyInfo.cs
     文件        2873  2010-07-10 20:28  Canny Edge Detection C#Iris RecognitionPropertiesResources.Designer.cs
     文件        5612  2009-07-07 18:28  Canny Edge Detection C#Iris RecognitionPropertiesResources.resx
     文件        1103  2010-07-10 20:28  Canny Edge Detection C#Iris RecognitionPropertiesSettings.Designer.cs
     文件         249  2009-07-07 18:28  Canny Edge Detection C#Iris RecognitionPropertiesSettings.settings
     目录           0  2010-07-10 20:31  Canny Edge Detection C#Iris Recognitionobj
     文件         545  2010-07-10 21:10  Canny Edge Detection C#Iris RecognitionobjCannyEdgeDetection.csproj.FileList.txt
     文件         585  2010-07-10 20:01  Canny Edge Detection C#Iris RecognitionobjIris Recognition.csproj.FileList.txt
     文件        1515  2010-07-08 15:50  Canny Edge Detection C#Iris RecognitionobjIris Recognition.csproj.FileListAbsolute.txt
     目录           0  2010-07-10 20:31  Canny Edge Detection C#Iris RecognitionobjDebug
     文件       53248  2009-07-07 18:31  Canny Edge Detection C#Iris RecognitionobjDebugAxInterop.Project1.dll
     文件         845  2010-07-10 21:09  Canny Edge Detection C#Iris RecognitionobjDebugCannyEdgeDetection.csproj.GenerateResource.Cache
     文件         734  2010-07-10 20:29  Canny Edge Detection C#Iris RecognitionobjDebugCannyEdgeDetection.csproj.ResolveComReference.cache
     文件       36864  2010-07-10 21:09  Canny Edge Detection C#Iris RecognitionobjDebugCannyEdgeDetection.exe
     文件       44544  2010-07-10 21:09  Canny Edge Detection C#Iris RecognitionobjDebugCannyEdgeDetection.pdb
     文件         180  2010-07-10 21:09  Canny Edge Detection C#Iris RecognitionobjDebugCannyEdgeDetectionCSharp.Mainform.resources
     文件         180  2010-07-10 20:29  Canny Edge Detection C#Iris RecognitionobjDebugCannyEdgeDetectionCSharp.Properties.Resources.resources
     文件       53248  2010-07-10 20:29  Canny Edge Detection C#Iris RecognitionobjDebugInterop.Project1.dll
............此处省略17个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)