7 图像处理基础之图像滤波与边缘检测
在计算机视觉的广阔领域中,图像处理是一个至关重要的基础部分。继上一篇的《图像处理基础之颜色空间转换与直方图均衡》后,本篇将着重探讨图像滤波与边缘检测这两个核心概念。滤波与边缘检测不仅在图像预处理阶段发挥重要作用,还广泛应用于目标检测、图像分割等高级任务。
图像滤波
1. 滤波的概述
图像滤波用于减少图像中的噪声或增强特定的特征。它通过对图像进行卷积操作来实现。
在进行卷积时,我们使用一个小矩阵,称为“卷积核”或“滤波器”。该滤波器在图像每一个像素上滑动,计算其周围像素的加权和。
2. 常见的滤波器
均值滤波器:通过取邻域像素的平均值来平滑图像。
卷积核示例:
$$
\begin{bmatrix}
1 & 1 & 1 \
1 & 1 & 1 \
1 & 1 & 1
\end{bmatrix} \div 9
$$高斯滤波器:采用高斯函数加权邻域像素,更加平滑图像,同时保留边缘。
卷积核示例:
$$
\begin{bmatrix}
1/16 & 1/8 & 1/16 \
1/8 & 1/4 & 1/8 \
1/16 & 1/8 & 1/16
\end{bmatrix}
$$中值滤波器:通过取邻域像素的中值来去噪,对椒盐噪声有良好效果。
3. 示例代码
下面是使用Python和OpenCV库实现均值滤波和高斯滤波的简单示例。
1 | import cv2 |
边缘检测
边缘检测旨在识别图像中的重要特征和变化区域。通过突出显示图像中颜色或强度变化大的区域,边缘检测可以帮助我们理解图像的结构与内容。
1. 边缘检测算法
Sobel算子:通过计算图像强度的梯度来检测边缘。通常使用两个卷积核,分别检测水平和垂直方向。
Sobel算子卷积核示例:
$$
G_x = \begin{bmatrix}
-1 & 0 & 1 \
-2 & 0 & 2 \
-1 & 0 & 1
\end{bmatrix}, \quad
G_y = \begin{bmatrix}
1 & 2 & 1 \
0 & 0 & 0 \
-1 & -2 & -1
\end{bmatrix}
$$Canny边缘检测:是更为复杂的边缘检测算法,包含多个阶段,包括噪声去除、梯度计算、非极大值抑制和双阈值检测。
2. 示例代码
下面是使用Python和OpenCV来实现Sobel边缘检测和Canny边缘检测的代码。
1 | # 读取图像并转换为灰度图 |
总结
通过本篇,我们学习了图像滤波和边缘检测这两个基本概念。滤波有助于去除图像噪声,改善图像质量,而边缘检测则允许我们提取图像的重要特征,这在后续的特征提取与描述中非常重要。下一篇将深入探讨“特征提取与描述之特征的定义与重要性”。
7 图像处理基础之图像滤波与边缘检测