【OpenCV 4开发详解】Sobel算子

本文首发于 “小白学视觉”微信公众号,欢迎关注公众号
本文作者为小白,版权归 人民邮电出版社发行所有,禁止转载,侵权必究!

经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《OpenCV 4开发详解》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。

Sobel算子是通过离散微分方法求取图像边缘的边缘检测算子,其求取边缘的思想原理与我们前文介绍的思想一致,除此之外Sobel算子还结合了高斯平滑滤波的思想,将边缘检测滤波器尺寸由ksize * 1改进为ksize * ksize,提高了对平缓区域边缘的响应,相比前文的算法边缘检测效果更加明显。使用Sobel边缘检测算子提取图像边缘的过程大致可以分为以下三个步骤:

  • Step1:提取X方向的边缘, X 方向一阶Sobel边缘检测算子如(5.16)所示。
    [ − 1 0 1 − 2 0 2 − 1 0 1 ] (5.16) {\begin{bmatrix} { {\rm{ - 1}}}&{\rm{0}}&{\rm{1}}\\ { {\rm{ - 2}}}&{\rm{0}}&{\rm{2}}\\ { {\rm{ - 1}}}&{\rm{0}}&{\rm{1}} \end{bmatrix}} \tag{5.16} 121000121(5.16)

  • Step2:提取Y方向的边缘, Y 方向一阶Sobel边缘检测算子如(5.17)所示。
    [ − 1 − 2

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Tenengrad函数是一种边缘检测算法,可以使用Sobel算子来实现。下面是使用OpenCV C++实现Tenengrad函数的代码: ```c++ #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { // 读取图像 Mat src = imread("lena.jpg", IMREAD_GRAYSCALE); if (src.empty()) { cout << "Could not open or find the image!" << endl; return -1; } // 计算Sobel算子 Mat grad_x, grad_y; Sobel(src, grad_x, CV_16S, 1, 0, 3); // x方向梯度 Sobel(src, grad_y, CV_16S, 0, 1, 3); // y方向梯度 // 计算Tenengrad函数 Mat tenengrad; pow(grad_x, 2, grad_x); // x方向梯度平方 pow(grad_y, 2, grad_y); // y方向梯度平方 add(grad_x, grad_y, tenengrad); // 平方和 sqrt(tenengrad, tenengrad); // 开方 // 显示图像 namedWindow("Source", WINDOW_NORMAL); imshow("Source", src); namedWindow("Tenengrad", WINDOW_NORMAL); imshow("Tenengrad", tenengrad); waitKey(0); return 0; } ``` 在这个程序中,我们首先读取了一张灰度图像,然后使用Sobel算子计算了x方向和y方向的梯度。接下来,我们将这两个梯度平方并相加得到了Tenengrad函数,并对其进行了开方操作。最后,我们显示了原始图像和Tenengrad函数图像。 需要注意的是,这个程序中使用了OpenCVSobel函数来计算梯度,它的第三个参数是输出图像的数据类型。在这里,我们使用了CV_16S作为输出图像的数据类型,因为梯度值可能为负数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白学视觉

您的赞赏是我们坚持下去的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值