opencv学习笔记(二十一) Sobel算子边缘检测

本文介绍了OpenCV中的Sobel算子用于边缘检测的原理和应用。Sobel算子是一种高通滤波器,用于保留图像的高频分量,即边缘信息。通过cvSobel()函数进行操作,参数包括输入图像、输出图像、x和y方向的差分阶数以及滤波器大小。在使用Sobel算子时,需要注意图像深度的选择以防止溢出。此外,文章还提及了Scharr滤波器作为Sobel算子的改进,提供更精确的结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

边缘检测

注意,边缘检测对噪声比较敏感,需要先用高斯滤波器对图像进行平滑。
Sobel变换和拉普拉斯变换都是高通滤波器。什么是高通滤波器呢?就是保留图像的高频分量(变化剧烈的部分),抑制图像的低频分量(变化缓慢的部分)。而图像变化剧烈的部分,往往反应的就是图像的边沿信息了。

Sobel算子

一个最重要并且最基本的卷积是导数的计算(或者是其近似值),有许多方法可以做到,但是只有少数方法适合于给定情况。
Sobel算子用于边缘检测
在讨论边缘算子之前,首先给出一些术语的定义:
(1)边缘:灰度或结构等信息的突变处,边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。
(2)边缘点:图像中具有坐标[x,y],且处在强度显著变化的位置上的点。
(3)边缘段:对应于边缘点坐标[x,y]及其方位 ,边缘的方位可能是梯度角。

cvSobel()

定义:
void cvSobel(
const CvArr* src,
CvArr* dst,
int xorder,
int yorder,
int aperture_size = 3
);
参数:
src 输入图像

dst 输出图像

xorder
x 方向上的差分阶数

yorder
y 方向上的差分阶数

aperture_size
Sobel 核的大小,必须是 1, 3, 5 或 7。

这里,src和dst分别是输入图像和输出图像,xorder和yorder是求导的阶数。通常只可能用到0,1,最多2。值为0表明在这个方向上没有求导①(①无论是xorder还是yorder,都必须非0),
aperture_size参数是方形滤波器的宽(或高)并且应该是奇数。目前,
aperture_size支持1, 3, 5, 7。如果源图像src是8位的,为避免溢出,目标图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值