用于图像处理的 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;行