c# + Emgu.CV学习(三):边缘检测、霍夫圆、霍夫线检测、矩形三角形检测


一、边缘检测

提取边缘:根据灰度的差值来获取边缘

1、Canny算子

            // 提取边缘
            // 使用canny算子,阈值1和阈值2中的最小值用于边缘。
            // 参数:输入图片,输出图片,阈值1,阈值2
            //大于高阈值,强边缘点;小于高阈值高于低阈值,弱边缘点;小于低阈值,过滤。
            //滞后边界跟踪:强边缘点被认为是真边缘点,弱边缘可能是真边缘也可能是噪声引起的假边缘点。只有当假边缘点连接到真边缘点时,保留假边缘点,否则去除。
            CvInvoke.Canny(grayImage, cannyImg, 20, 40);

2、Soble算子

            //提取边缘
            //Sobel算子,参数:输入图片,输出图片,图像深度,x 方向上的几阶导数,y 方向上的几阶导数
            CvInvoke.Sobel(grayImage, sobelImage, grayImage.Depth, 1, 0);

3、Laplacian算子

            //提取边缘
            //Laplacian算子 参数:输入图片,输出图片,图像深度,二阶导数滤波器的孔径大小,拉普拉斯值的可选比例因子,结果存储到之前添加到结果中的可选增量值
            CvInvoke.Laplacian(grayImage, LaplacianImage, grayImage.Depth, 3, 1, 0);

4、三种算子的优缺点

        //1、Canny 不容易受噪声干扰,使用两种不同的阈值能够检测到真正的弱边缘      容易把噪点误判为边界     常用
        //2、Sobel 对灰度渐变和噪声较多的图像处理效果较好                        精度不高                精度要求不高时常用
        //3、Laplacian 无方向性,对任何走向的界线和线条进行锐化                  对噪声特别敏感          一般图像用的较少

二、霍夫检测

1、霍夫圆检测

 private void 霍夫圆检测ToolStripMenuItem_Click(object sender, EventArgs e)
        {
   
   
            Mat readImage = new Mat();
            //为了简便、封装的获取图片方法
            ClassStatic.readImage("7", ClassStatic.Jpg, ref readImage);
            Mat grayImage = new Mat();
            //转化为灰度
            CvInvoke.CvtColor(readImage, grayImage, ColorConversion.Rgb2Gray);
            Mat blurImage = new Mat();
            //高斯滤波
            CvInvoke.GaussianBlur(grayImage, blurImage, new Size(5, 5), 3);

            //霍夫圆检测  
            //参数:输入图像,实现方法,dp,最小距离,参数1,参数2,最小圆半径,最大圆半径
            //dp:累加器分辨率与图像分辨率的反比。例如,如果dp=1,累加器的分辨率与输入图像相同。如果dp=2,则蓄能器的宽度和高度为原来的一半。
            //最小距离:检测到的圆的中心之间的最小距离。太小会多检,太大会漏检
            //参数1:在CV_HOUGH_GRADIENT梯度的情况下,它是传递给Canny()边缘检测器的两个阈值中的较高阈值(较低的阈值是较小的两倍)。
            //参数2:在CV_HOUGH_GRADIENT梯度的情况下,它是检测阶段圆心的累加器阈值。越小,可得到越多的圆。与较大累加器值相对应的圆将首先返回。
            CircleF[] circles = CvInvoke.HoughCircles(blurImage, HoughModes.Gradient, 2, 20, 100, 180, 5)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值