OpenCV 图像边缘提取(四)—— Canny API提取边缘(C#)

Canny边缘检测算法可以分为以下5个步骤:

  1. 应用高斯滤波来平滑图像,目的是去除噪声
  2. 找寻图像的强度梯度(intensity gradients)
  3. 应用非最大抑制(non-maximum suppression)技术来消除边误检(本来不是但检测出来是)
  4. 应用双阈值的方法来决定可能的(潜在的)边界

高低阈值说明:
经过非极大抑制后图像中仍然有很多噪声点。Canny算法中应用了一种叫双阈值的技术。即设定一个阈值上界和阈值下界(opencv中通常由人为指定的),图像中的像素点如果大于阈值上界则认为必然是边界(称为强边界,strong edge),小于阈值下界则认为必然不是边界,两者之间的则认为是候选项(称为弱边界,weak edge),需进行进一步处理。经过双阈值处理的图像如下图所示

上图中强边界用白色表示,弱边界用灰色表示
上图中强边界用白色表示,弱边界用灰色表示
5. 利用滞后技术来跟踪边界

API

public static void Canny(InputArray src, OutputArray edges, double threshold1, double threshold2, int apertureSize = 3, bool L2gradient = false);

Parameters
在这里插入图片描述

if (fileDialog.ShowDialog() == DialogResult.OK)
{
    
    
    picFile = fileDialog.FileName;
    inputMat = Cv2.ImRead(picFile, ImreadModes.Grayscale);                
    outMat = new Mat(new Size(inputMat.Cols, inputMat.Rows), inputMat.Type());

    Cv2.Canny(inputMat, outMat, 30, 90);
    picBox_Display.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(inputMat);
    picBox_After.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(outMat);
}

在这里插入图片描述

补充说明:
本案例在.NET使用的OpenCV库为OpenCvSharp4

.NET 环境的OpenCv库

猜你喜欢

转载自blog.csdn.net/weixin_40671962/article/details/127146541