OpenCV图像处理笔记[06]
31. canny边缘检测原理
-
Canny边缘检测的一般步骤
-
去噪
- 边缘检测容易受到噪声的影响。因此,在进行边缘检测前,通常需
要先进行去噪。 - 通常采用高斯滤波器去除噪声。
- 让临近的像素具有更高的重要度。对周围像素计算加权平均值,较近的像素具有较大的权重值。
- 边缘检测容易受到噪声的影响。因此,在进行边缘检测前,通常需
-
梯度
- 对平滑后的图像采用sobel算子计算梯度和方向。
- 梯度的方向一般总是与边界垂直
- 梯度方向被归为四类:垂直, 水平,和两个对角线
-
非极大值抑制
- 在获得了梯度和方向后,遍历图像,去除所有不是边界的点。
- 实现方法:逐个遍历像素点,判断当前像素点是否是周围像素点中具有相同
方向梯度的最大值
-
滞后阈值
-
33. 理论基础
-
图像金字塔: 同一图像的不同分辨率的子图集合
-
向下取样:从高分辨率到低分辨率图像,缩小图像
-
从第 i 层获取第 i + 1层, Gi -> Gi+1
1. 对图像 G<sub>i</sub> 进行高斯核卷积。
- 删除所有的偶数行和列
-
原始图像 M * N兮处理结果 M/2 * N/2
每次处理后,结果图像是原来的1/4.
上述操作被称为:Octave -
重复执行该过程,构造图像金字塔
-
-
注意:向下会丢失信息
-
-
向上取样:在每个方向上扩大为原来的2倍,新增的行和列以0填充。放大图像
-
使用与“向下采用”同样的卷积核乘以4,获取“新增像素”的新值。
-
注意:放大后的图像比原始图像要模糊。
-
向上取样、向下取样不是互逆操作,经过两种操作后,无法恢复原有图像。
-
34. pyrDown函数及使用
向下取样 : 将图像的尺度变小,变成原来的四分之一
- **dst = cv2.pyrDown( src ) **
- dst , 向下取样结果
- src , 原始图像
35. pyrUp函数及使用
向上取样 : 将图像的尺度变大,变成原来的四倍
- **dst = cv2.pyrUp( src ) **
- dst , 向下取样结果
- src , 原始图像
36. 取样可逆性研究
原始图像 向下取样 dst = cv2.pyrDown( src ) dst ,向下取样结果 src, 原始图像
M * N ---> M/2 * N/2
原始图像 向上取样 dst = cv2.pyrUp( src ) dst ,向上取样结果 src, 原始图像
M * N ---> M2 * N2
图像先向上取样再向下取样(或者先向下取样再向上取样)的过程都是不可逆的
37. 拉普拉斯金字塔
-
向下取样 : 图像尺度不断变小
-
向上取样 : 图像尺度不断变大
-
拉普拉斯金字塔
**Lii = Gi - PyrUp( PyrDown ( Gi )) **
Gi, 原始图像
Li, 拉普拉斯金字塔图像