open cvSobel算子与Scharr算子

本文介绍了Sobel算子作为离散微分算子,用于图像边缘检测,它结合了高斯平滑和微分求导。Sobel算子在3x3核时可能不准确,OpenCV推荐使用Scharr算子,它提供了更精确的导数近似值。文章详细阐述了Sobel和Scharr算子的API用法,并给出了示例代码。
摘要由CSDN通过智能技术生成

Sobel算子的特性

卷积应用-图像边缘提取

●边缘是什么- 是像素值发生跃迁的地方,是图像的显著特
征之一,在图像特征提取、对象检测、模式识别等方面都
有重要的作用。

●如何捕捉/提取边缘 -对图像求它的 一阶导数
delta= f(x)-f(x-1), delta越大,说明像素在x方向变化越大,
边缘信号越强,

●忘记了,不要担心,用Sobel算子就好! 卷积操作 !


什么是 Sobel算子
●是离散微分算子 ( discrete differentiation operator),
用来计算图像灰度的近似梯度

●Soble算子功能集合高斯平滑和微分求导

●又被称为一阶微分算子, 求导算子,在水平和垂直两
个方向上求导,得到图像x方法与y方向梯度图像


最终梯度 G=水平梯度|Gx|+垂直梯度|Gy|


Sobel算子
●求取导数的近似值 , kernel=3时不是很准确(跨度太小易 受到干扰),OpenCV
使用改进版本Scharr函数,算子如下 :

	-3    0 	+3 
Gx= -10   0 	+10
	-3    0 	+3
	
	 -3   -10   -3
Gy=   0     0	 0
	 +3    +10  +3

API说明c::Sobel
cv::Sobel(
InputArray Src //输入图像
OutputArray dst//输出图像,大小与输入图像-致
int depth //输出图像深度(一定要大于或等于输入深度)
int dx, //x方向,几阶导数
int dy //dy方向,几阶导数.
int ksize SOBEL算子kernel大小,必须是1、3、 5、7 等奇数
double scale =1
double delta=0
int borderType = BORDER _DEFAULT
)


API-Sobel的改进版本-Scharr(除了名字不一样 别的都一样)

API说明c::Scharr
cv::Sobel(
InputArray Src //输入图像
OutputArray dst//输出图像,大小与输入图像-致
int depth //输出图像深度(一定要大于或等于输入深度)
int dx, //x方向,几阶导数
int dy //y方向,几阶导数.
int ksize SOBEL算子kernel大小,必须是1、3、 5、7 等奇数
double scale =1
double delta=0
int borderType = BORDER _DEFAULT
)

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
#include <math.h>

using namespace cv;
using namespace std;

Mat src, dst,mix;





int xxa = 1; //导数方向为1 0 时梯度为X方向
int yya = 0;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值