图像梯度处理

  • Sobel算子

  

  水平方向:

  • 对于线条A和线条B,右侧像素值与左侧像素值的差值不为零,因此是边界

   上下像素值差值为0,左右素值的差值不为零,分布为正负,

   离的近的为2,离的远的为1

  

          P5=(P3-P1)+2(P6-P4)+(P9-P7)  

  竖直方向:

  • 对于线条A和线条B,上侧像素值与下侧像素值的差值不为零,因此是边界

   左右像素值差值为0,上下素值的差值不为零,分布为正负,

   离的近的为2,离的远的为1

          P5=(P7-P1)+2(P8-P2)+(P9-P3)

  在使用时,P5可能是负数,所以要取绝对值!

  cv2.Sobel( src, depth, dx, dy[, ksize[, scale[, delta[, borderType]]]] )

  • src表示输入图像

  • depth表示输出图像的深度

  • dx表示x轴方向的求导阶数

  • dy表示y轴方向的求导阶数

    • 注意要分别算x,y轴,不能同时算。同时算不准确
  • ksize表示Sobel核的大小

  • scale表示计算导数值所采用的缩放因子,默认值是1

  • delta表示加在输出图像的值,默认值是0

  • borderType表示边界样式

img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
#x轴方向的求导阶数
soblex = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3)
#取绝对值
soblex = cv2.convertScaleAbs(soblex)
#x轴方向的求导阶数
sobley = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=3)
sobley = cv2.convertScaleAbs(sobley)
#x,y轴综合
soblexy = cv2.addWeighted(soblex,0.5,sobley,0.5,0) #对比,xy同时算
soblexy2 = cv2.Sobel(img,cv2.CV_64F,1,1,ksize=3)
soblexy2 = cv2.convertScaleAbs(soblexy2) res = np.hstack((img,soblexy,soblexy2))
cv_show('img',res)

  • Scharr算子

  Scharr算子和Sobel算子具有同样速度且精度更高。当Sobel核结构不大时,精度不高,Scharr算子具有更高的精度,Scharr算子是Sobel算子的改进。

img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
scharrx = cv2.Scharr(img,cv2.CV_64F,1,0)
scharrx = cv2.convertScaleAbs(scharrx)
scharry = cv2.Scharr(img,cv2.CV_64F,0,1)
scharry = cv2.convertScaleAbs(scharry)
scharrxy = cv2.addWeighted(scharrx,0.5,scharry,0.5,0) res = np.hstack((img,scharrxy))
cv_show('img',res)

  • Laplacian算子

  Laplacian(拉普拉斯)算子是二阶导数算子,具有旋转不变性,没有边缘的方向信息,双倍加强噪声对图像的影响。通常情况下,Laplacian算子的系数之和为零。

  Laplacian算子对噪音点敏感!

   

  

                

    

     •非边界(梯度小,边缘不明显)

    P5=(94+80+92+85)-4x88=-1

    •边界(梯度大,边缘明显)

    P5=(200+204+175+158)-4x88=385

    P5=(20+24+17+15)-4x88=-276

img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
laplacian = cv2.Laplacian(img,cv2.CV_64F)
laplacian = cv2.convertScaleAbs(laplacian) res = np.hstack((img,laplacian))
cv_show('res',res)

 

  • Sobel算子 Scharr算子 Laplacian算子对比

  

Sobel算子 Scharr算子 Laplacian算子的更多相关文章

  1. OpenCV——边缘检测(sobel算子、Laplacian算子、scharr滤波器)

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  2. 【OpenCV新手教程之十二】OpenCV边缘检測:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...

  3. 机器学习进阶-图像梯度计算-scharr算子与laplacian算子(拉普拉斯) 1.cv2.Scharr(使用scharr算子进行计算) 2.cv2.laplician(使用拉普拉斯算子进行计算)

    1. cv2.Scharr(src,ddepth, dx, dy), 使用Scharr算子进行计算 参数说明:src表示输入的图片,ddepth表示图片的深度,通常使用-1, 这里使用cv2.CV_6 ...

  4. [OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

    http://blog.csdn.net/poem_qianmo/article/details/25560901 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...

  5. Python 图像处理 OpenCV (12): Roberts 算子、 Prewitt 算子、 Sobel 算子和 Laplacian 算子边缘检测技术

    前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...

  6. Laplacian算子

    多元函数的二阶导数又称为Laplacian算子: \[ \triangledown f(x, y) = \frac {\partial^2 f}{\partial x^2} + \frac {\par ...

  7. 实现Sobel算子滤波、Robers算子滤波、Laplace算子滤波

    前几天,老师布置了这样一个任务,读取图片并显示,反色后进行显示:进行Sobel算子滤波,然后反色,进行显示:进行Robers算子滤波,然后反色,进行显示.我最后加上了Laplace算子滤波,进行了比较 ...

  8. Spark常用算子-KeyValue数据类型的算子

    package com.test; import java.util.ArrayList; import java.util.List; import java.util.Map; import or ...

  9. Spark常用算子-value数据类型的算子

    package com.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; im ...

随机推荐

  1. netty系列之:真正的平等–UDT中的Rendezvous

    目录 简介 建立支持Rendezvous的服务器 处理不同的消息 节点之间的交互 总结 简介 在我们之前提到的所有netty知识中,netty好像都被分为客户端和服务器端两部分.服务器端监听连接,并对 ...

  2. 对已有的docker容器增加新的端口映射

    一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如 docker run -it -d --name [contain ...

  3. linux_4

    自建yum仓库,分别为网络源和本地源 编译安装http2.4 linux命令练习 列出ubuntu软件管理工具apt的一些用法(自由总结)

  4. 微服务从代码到k8s部署应有尽有系列(二、网关)

    我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...

  5. 37、python并发编程之协程

    目录: 一 引子 二 协程介绍 三 Greenlet 四 Gevent介绍 五 Gevent之同步与异步 六 Gevent之应用举例一 七 Gevent之应用举例二 一 引子 本节的主题是基于单线程来 ...

  6. Solution -「LOCAL」人口迁徙

    \(\mathcal{Description}\)   \(n\) 个点,第 \(i\) 个点能走向第 \(d_i\) 个点,但从一个点出发至多走 \(k\) 步.对于每个点,求有多少点能够走到它. ...

  7. CentOS 7.6 部署 GlusterFS 分布式存储系统

    文章目录 GlusterFS简介 环境介绍 开始GlusterFS部署 配置hosts解析 配置GlusterFS 创建文件系统 安装GlusterFS 启动GlusterFS 将节点加入到主机池 创 ...

  8. VS2019如何设置程序以管理员权限启动

    最重要的一点.本文解释的是C#项目如何以管理员权限启动. 一个很大的误导项 该图片是C++程序的项目配置属性.C#项目中并找不到.然而网上的很多教程没有说清楚.导致我找了这个菜单找了很久. C#项目的 ...

  9. 北大博士生提出CAE,下游任务泛化能力优于何恺明MAE

    大家好,我是对白. 何恺明时隔两年发一作论文,提出了一种视觉自监督学习新范式-- 用掩蔽自编码器MAE,为视觉大模型开路. 这一次,北大博士生提出一个新方法CAE,在其下游任务中展现的泛化能力超过了M ...

  10. Selenium自动化测试面试题合集

    1.什么是自动化测试.自动化测试的优势是什么? 通过工具或脚本代替手工测试执行过程的测试都叫自动化测试. 自动化测试的优势: 1.减少回归测试成本 2.减少兼容性测试成本 3.提高测试反馈速度 4.提 ...