郭震 AI公众号:郭震AI

7 图像处理基础之图像滤波与边缘检测

发布日期:

最近更新:

分类: 计算机视觉

预计阅读: 3 分钟

阅读次数: 0

预计阅读3 分钟
结构重点8 个
图文要点6 张
正文规模1.4k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 8 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

图像滤波与边缘检测流程图查看大图
图像滤波与边缘检测流程图

滤波和边缘检测是很多视觉任务的前置工具。先减少噪声,再找边缘,效果通常比直接在脏图上检测稳定。

图像滤波与边缘检测实操核对图查看大图
图像滤波与边缘检测实操核对图

我会分别看滤波结果和边缘图。边缘太碎说明噪声还多,边缘太少说明阈值或平滑过度。

在计算机视觉的广阔领域中,图像处理是一个至关重要的基础部分。继上一篇的《图像处理基础之颜色空间转换与直方图均衡》后,本篇将着重探讨图像滤波与边缘检测这两个核心概念。滤波与边缘检测不仅在图像预处理阶段发挥重要作用,还广泛应用于目标检测、图像分割等高级任务。

图像滤波

1. 滤波的概述

滤波边缘检测判断卡查看大图
滤波边缘检测判断卡

学习图像滤波和边缘检测时,先看任务是去噪、增强纹理还是找轮廓。目标不同,核函数和阈值选择也不同。

图像滤波用于减少图像中的噪声或增强特定的特征。它通过对图像进行卷积操作来实现。

在进行卷积时,我们使用一个小矩阵,称为“卷积核”或“滤波器”。该滤波器在图像每一个像素上滑动,计算其周围像素的加权和。

2. 常见的滤波器

  • 均值滤波器:通过取邻域像素的平均值来平滑图像。

    卷积核示例:

    [111111111]÷9\begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix} \div 9
  • 高斯滤波器:采用高斯函数加权邻域像素,更加平滑图像,同时保留边缘。

    卷积核示例:

    [1/161/81/161/81/41/81/161/81/16]\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库实现均值滤波和高斯滤波的简单示例。

import cv2
import numpy as np

# 读取图像
image = cv2.imread('image.jpg')

# 均值滤波
mean_blurred = cv2.blur(image, (5, 5))

# 高斯滤波
gaussian_blurred = cv2.GaussianBlur(image, (5, 5), 0)

# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Mean Blurred', mean_blurred)
cv2.imshow('Gaussian Blurred', gaussian_blurred)
cv2.waitKey(0)
cv2.destroyAllWindows()

边缘检测

边缘检测旨在识别图像中的重要特征和变化区域。通过突出显示图像中颜色或强度变化大的区域,边缘检测可以帮助我们理解图像的结构与内容。

计算机视觉阅读地图卡查看大图
计算机视觉阅读地图卡

读完《图像处理基础之图像滤波与边缘检测》不要只停在“看懂了”。回头挑一个步骤动手做一遍,再记录哪里卡住,后面的学习会更稳。

1. 边缘检测算法

  • Sobel算子:通过计算图像强度的梯度来检测边缘。通常使用两个卷积核,分别检测水平和垂直方向。

    Sobel算子卷积核示例:

    Gx=[101202101],Gy=[121000121]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边缘检测的代码。

# 读取图像并转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Sobel边缘检测
sobel_x = cv2.Sobel(gray_image, cv2.CV_64F, 1, 0, ksize=5)
sobel_y = cv2.Sobel(gray_image, cv2.CV_64F, 0, 1, ksize=5)
sobel_edges = cv2.magnitude(sobel_x, sobel_y)

# Canny边缘检测
canny_edges = cv2.Canny(gray_image, 100, 200)

# 显示结果
cv2.imshow('Sobel Edges', sobel_edges)
cv2.imshow('Canny Edges', canny_edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
图像处理基础之图像滤波与边缘检测应用复盘卡查看大图
图像处理基础之图像滤波与边缘检测应用复盘卡

如果《图像处理基础之图像滤波与边缘检测》还没完全消化,可以从这张卡片的四个动作重新走一遍。

图像处理基础之图像滤波与边缘检测应用检查卡查看大图
图像处理基础之图像滤波与边缘检测应用检查卡

回看《图像处理基础之图像滤波与边缘检测》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。

总结

通过本篇,我们学习了图像滤波和边缘检测这两个基本概念。滤波有助于去除图像噪声,改善图像质量,而边缘检测则允许我们提取图像的重要特征,这在后续的特征提取与描述中非常重要。下一篇将深入探讨“特征提取与描述之特征的定义与重要性”。

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

图像处理基础之图像滤波与边缘检测适合谁读?

这是 计算机视觉网络教程 系列第 7 / 31 篇,适合正在学习计算机视觉网络教程,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇计算机视觉网络教程要多久?

按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...