您的位置  > 互联网

图像处理之Canny边缘检测算法经典的Canny图像输出结果

用于图像处理的 Canny 边缘检测

1:历史

Canny边缘检测算法是John F. Canny于1986年开发的一种基于图像梯度计算的边缘。

检测算法,而Canny本人也为计算图像边缘提取学科的发展做出了许多贡献。

尽管已经过去很多年,该算法仍然是图像边缘检测的经典算法之一。

2:Canny边缘检测算法

经典的Canny边缘检测算法通常以高斯模糊开始,以基于双阈值的边缘连接结束。

但在实际工程应用中,考虑到输入图像均为彩色图像,需要将边缘连接后的最终图像

显示的是二进制输出,因此实现完整的Canny边缘检测算法的步骤如下:

1. 将彩色图像转换为灰度图像

2. 对图像进行高斯模糊

3、计算图像梯度,并根据梯度计算图像边缘幅度和角度。

4.非极大值信号抑制处理(边缘细化)

5.双阈值边缘连接处理

6. 二值化图像输出结果

三:每一步详细解释及代码实现

1. 将彩色图像转换为灰度图像

根据彩色图像RGB转灰度的公式:灰度=R*0.299+G*0.587+B*0.114

将彩色图像中的每个RGB像素转换为灰度值的代码如下:

[java]查看

“字体大小:18px;”>=(int)(0.299*tr+0.587*tg+0.114*tb);

2. 对图像进行高斯模糊

当图像进行高斯模糊时,首先必须根据输入参数确定高斯方差和窗口大小。 这里我设置的是默认方法。

差异窗口大小为 16x16。 根据这两个参数生成高斯卷积核算子的代码如下:

[java]查看

“字体大小:18px;”>[][]=[][];

为(intx = 0;x

为(整数= 0;y

[x][y]=(x,y,);

得到高斯卷积算子后,我们就可以用高斯卷积对图像进行模糊处理。 有关高斯图像模糊的更多详细信息

详细的解释可以在这里找到:实现

图像高斯卷积模糊的代码如下:

[java]查看

"font-size:18px;">//高斯模糊-灰度图像

=(整数);

for(=0;行