OpenCV:高通滤波之索贝尔、沙尔和拉普拉斯

目录

简述

什么是高通滤波?

高通滤波的概念

应用场景

索贝尔算子

算子公式

实现代码

特点

沙尔算子

算子公式

实现代码

特点

拉普拉斯算子

算子公式

实现代码

特点

高通滤波器的对比与应用场景


相关阅读

OpenCV:图像滤波、卷积与卷积核-CSDN博客

OpenCV:图像处理中的低通滤波-CSDN博客


简述

高通滤波是一种增强图像高频分量的处理方法,常用于边缘检测和特征提取。在图像处理中,高通滤波可以突出图像中的边缘、轮廓和细节信息,而抑制平滑区域(低频分量)。

本文将重点介绍三种常见的高通滤波器:索贝尔(Sobel)、沙尔(Scharr) 和 拉普拉斯(Laplacian),并结合代码和应用场景进行讲解。


什么是高通滤波?

高通滤波的概念

高通滤波是对图像进行卷积操作,以保留图像中的快速变化部分(如边缘和细节),同时抑制低频分量(如大面积平坦区域)。

应用场景

  • 边缘检测:提取物体轮廓和边界。
  • 特征提取:用于后续计算机视觉任务(如目标检测)。
  • 图像锐化:增强图像清晰度。

索贝尔算子

索贝尔算子是一种经典的边缘检测算子,通过计算像素梯度,检测图像的水平和垂直边缘。

算子公式

水平边缘检测

垂直边缘检测

实现代码

python 复制代码
import cv2
import numpy as np

# 读取图像
image = cv2.imread("D:\\resource\\filter\\shudu.jpg")
image = cv2.resize(image, (400,400))

# 检测单方向效果好, 同时双方向效果差

# y方向 图像边缘
result1 = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=5)

# x方向 图像边缘
result2 = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=5)

# 合并
result = cv2.add(result1, result2)

cv2.imshow("image", image)
cv2.imshow("result1", result1)
cv2.imshow("result2", result2)
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

特点

  • 能检测水平和垂直边缘。
  • 可调整核大小(ksize)以控制平滑程度。

运行结果: y方向和x方向

运行结果: 原图和合成后的图


沙尔算子

沙尔算子是对索贝尔算子的优化版本,它在小窗口(如 3×3)中提供更高的精度。

算子公式

水平边缘检测

垂直边缘检测

实现代码

python 复制代码
import cv2
import numpy as np

# 读取图像
image = cv2.imread("D:\\resource\\filter\\shudu.jpg")
image = cv2.resize(image, (400,400))

# 与Sobel类似, 只能求x或y方向的边缘

# y方向 图像边缘
result1 = cv2.Scharr(image, cv2.CV_64F, 1, 0)

# x方向 图像边缘
result2 = cv2.Scharr(image, cv2.CV_64F, 0, 1)

# 合并
result = cv2.add(result1, result2)

cv2.imshow("image", image)
cv2.imshow("result1", result1)
cv2.imshow("result2", result2)
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

特点

  • 在处理高频变化的边缘时,精度高于索贝尔算子。
  • 适用于对边缘检测精度要求较高的场景。

拉普拉斯算子

拉普拉斯算子是一种二阶导数算子,结合水平和垂直方向的梯度信息,用于检测图像的边缘。

算子公式

拉普拉斯算子的卷积核常见形式为:

实现代码

python 复制代码
import cv2
import numpy as np

# 读取图像
image = cv2.imread("D:\\resource\\filter\\shudu.jpg")
image = cv2.resize(image, (400,400))

# 可以同时求2个方向的边缘,但是对噪音敏感,需要先降噪
result = cv2.Laplacian(image, cv2.CV_64F, ksize=5)

cv2.imshow("image", image)
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

特点

  • 同时检测水平、垂直和对角线方向的边缘。
  • 对噪声敏感,适合平滑处理后的图像。

运行结果


高通滤波器的对比与应用场景

算子 特点 适用场景
索贝尔 结合一阶导数,能检测水平和垂直边缘 边缘检测、特征提取
沙尔 索贝尔的改进版,适合处理高频变化区域,精度更高 精细边缘检测
拉普拉斯 二阶导数算子,检测方向无关的边缘,灵敏度高 图像锐化、边缘增强
相关推荐
强盛小灵通专卖员5 分钟前
边缘计算设备NPU的加速原理
人工智能·深度学习·边缘计算·sci·中文核心·小论文
moz与京7 分钟前
【面试向】边缘计算基础介绍
人工智能·边缘计算
ShiMetaPi8 分钟前
【ShiMetaPi】基于BM1684X的智能工业视觉边缘计算盒子解决方案
人工智能·边缘计算·bm1684x
强盛小灵通专卖员9 分钟前
RK3576边缘计算设备部署YOLOv11
人工智能·深度学习·yolo·边缘计算·sci·rk3576·小论文
Ms_Big37 分钟前
ppliteseg改rknn,部署在嵌入式板,加速模型
人工智能·python·深度学习
说私域39 分钟前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的移动互联网人气氛围营造机制研究
人工智能·小程序·开源
TMT星球1 小时前
从IFA再出发:中国制造与海信三筒洗衣机的“答案”
人工智能·制造
edisao1 小时前
[特殊字符] 从助手到引擎:基于 GPT 的战略协作系统演示
大数据·人工智能·gpt
三之又三1 小时前
卷积神经网络CNN-part5-NiN
人工智能·神经网络·cnn
百锦再2 小时前
在 CentOS 系统上实现定时执行 Python 邮件发送任务
java·linux·开发语言·人工智能·python·centos·pygame