如何用Python实现Canny边缘检测算法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1956个文字,预计阅读时间需要8分钟。
Canny边缘检测原理+Canny边缘检测的五个部分组成,下面分别介绍。1. 高斯模模糊(平滑)2. 计算梯度幅度和方向。可选模板:Sobel算子、Prewitt算子、Roberts模板等;一般采用Sobel算子。
canny边缘检测原理
canny边缘检测共有5部分组成,下边我会分别来介绍。
1 高斯模糊(略)
2 计算梯度幅值和方向。
可选用的模板:soble算子、Prewitt算子、Roberts模板等等;
一般采用soble算子,OpenCV也是如此,利用soble水平和垂直算子与输入图像卷积计算dx、dy:
进一步可以得到图像梯度的幅值:
为了简化计算,幅值也可以作如下近似:
角度为:
如下图表示了中心点的梯度向量、方位角以及边缘方向(任一点的边缘与梯度向量正交) :
θ = θm = arctan(dy/dx)(边缘方向)
α = θ + 90= arctan(dy/dx) + 90(梯度方向)
3、根据角度对幅值进行非极大值抑制
划重点:是沿着梯度方向对幅值进行非极大值抑制,而非边缘方向,这里初学者容易弄混。
例如:3*3区域内,边缘可以划分为垂直、水平、45°、135°4个方向,同样,梯度反向也为四个方向(与边缘方向正交)。
本文共计1956个文字,预计阅读时间需要8分钟。
Canny边缘检测原理+Canny边缘检测的五个部分组成,下面分别介绍。1. 高斯模模糊(平滑)2. 计算梯度幅度和方向。可选模板:Sobel算子、Prewitt算子、Roberts模板等;一般采用Sobel算子。
canny边缘检测原理
canny边缘检测共有5部分组成,下边我会分别来介绍。
1 高斯模糊(略)
2 计算梯度幅值和方向。
可选用的模板:soble算子、Prewitt算子、Roberts模板等等;
一般采用soble算子,OpenCV也是如此,利用soble水平和垂直算子与输入图像卷积计算dx、dy:
进一步可以得到图像梯度的幅值:
为了简化计算,幅值也可以作如下近似:
角度为:
如下图表示了中心点的梯度向量、方位角以及边缘方向(任一点的边缘与梯度向量正交) :
θ = θm = arctan(dy/dx)(边缘方向)
α = θ + 90= arctan(dy/dx) + 90(梯度方向)
3、根据角度对幅值进行非极大值抑制
划重点:是沿着梯度方向对幅值进行非极大值抑制,而非边缘方向,这里初学者容易弄混。
例如:3*3区域内,边缘可以划分为垂直、水平、45°、135°4个方向,同样,梯度反向也为四个方向(与边缘方向正交)。

