其他分享
首页 > 其他分享> > OpenCV2:边缘提取

OpenCV2:边缘提取

作者:互联网

一.简介

从一张图像中,把轮廓提取出来

 

二.边缘提取

1.Canny

Canny边缘检测的基本思想是:首先对图像选择一定的Gauss滤波器进行平滑滤波,然后采用非极值抑制技术进行处理得到边缘图像

 

Canny算法分为4个步骤:

(1)滤波平滑噪声

任何边缘检测算法都不可能在未经处理的原始数据上工作,第一步是对原始数据与高斯mask作卷积,得到的图像与原始图像有些轻微模糊,用高斯滤波器来处理高斯平滑的图像

(2)利用已有的一阶偏导算子计算梯度

Canny算法的基本思想是寻找一副图像中灰度强度变化最强的位置,变化最强即梯度位置,平滑后的图像中每个像素点可以由Sobel算子(一种卷积运算)来获得

(3)非极大值抑制

这一步是将模糊(blurred)的边界变得清晰(sharp),保留了每个像素点上的梯度强度大的极大值,而删掉其他值

(4)双阈值法抑制假边缘,连接真边缘

强边界用白色表示,弱边界用灰色表示,通过这样来去除噪声点

 

CV_EXPORTS_W void Canny(InputArray image,

                                                  OutputArray edges,

                                                   double threshold1, double threshold2,

                                                   int apertureSize=3,

                                                   bool L2gradient=false)

 

    输入和输出图像

    底阈值和高阈值,值越大,找到的边缘越少

    表示应用Sobel算子的孔径大小,默认值为3

    表示一个计算图像梯度幅值的表示,默认值为false

 

cv::Mat im;
cv::Mat result
cv::Canny(im, result, 50, 150);

 

2.Sobel

 

3.Laplace

 

4.Roberts

 

标签:提取,Sobel,梯度,OpenCV2,边缘,图像,Canny,cv
来源: https://www.cnblogs.com/k5bg/p/11088115.html