Sobel算子 Scharr算子 Laplacian算子
图像梯度处理
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算子的更多相关文章
- OpenCV——边缘检测(sobel算子、Laplacian算子、scharr滤波器)
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...
- 【OpenCV新手教程之十二】OpenCV边缘检測:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨) ...
- 机器学习进阶-图像梯度计算-scharr算子与laplacian算子(拉普拉斯) 1.cv2.Scharr(使用scharr算子进行计算) 2.cv2.laplician(使用拉普拉斯算子进行计算)
1. cv2.Scharr(src,ddepth, dx, dy), 使用Scharr算子进行计算 参数说明:src表示输入的图片,ddepth表示图片的深度,通常使用-1, 这里使用cv2.CV_6 ...
- [OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑
http://blog.csdn.net/poem_qianmo/article/details/25560901 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog ...
- Python 图像处理 OpenCV (12): Roberts 算子、 Prewitt 算子、 Sobel 算子和 Laplacian 算子边缘检测技术
前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...
- Laplacian算子
多元函数的二阶导数又称为Laplacian算子: \[ \triangledown f(x, y) = \frac {\partial^2 f}{\partial x^2} + \frac {\par ...
- 实现Sobel算子滤波、Robers算子滤波、Laplace算子滤波
前几天,老师布置了这样一个任务,读取图片并显示,反色后进行显示:进行Sobel算子滤波,然后反色,进行显示:进行Robers算子滤波,然后反色,进行显示.我最后加上了Laplace算子滤波,进行了比较 ...
- Spark常用算子-KeyValue数据类型的算子
package com.test; import java.util.ArrayList; import java.util.List; import java.util.Map; import or ...
- Spark常用算子-value数据类型的算子
package com.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; im ...
随机推荐
- JVM性能调优与实战基础理论篇-中
JVM内存模型 概述 我们所说的JVM内存模型是指运行时数据区,用New出来的对象放在堆中,如每个线程中局部变量放在栈或叫虚拟机栈中,下图左边区域部分为栈内存的结构.如main线程包含程序炯酸器.线程 ...
- js reduce累加器
reduce 是es6 新增的数组操作方法 意为累加器 使用方法如下 [1,1,1,1].reduce((total,currentValue,index)=>{ },initialValu ...
- redis(二)-----redis基本数据类型之字符串
Redis的全称是REmote Dictionary Server,它主要提供了5种数据结构:字符串.哈希.列表.集合.有序集合,同时在字符串的基础之上演变 出了位图(Bitmaps)和HyperLo ...
- C#颠倒字符串
本函数实现了反转字符串的功能,例如字符串"张赐荣",反转后得到"荣赐张". public static string ReverseText(this stri ...
- nginx负载均衡中利用redis解决session一致性问题
关于session一致性的现象及原因不是本小作文的重点,可以另行找杜丽娘O(∩_∩)O哈哈~重点是利用redis集中存储共享session的实际操作. 一.业务场景:nginx/tomcat/redi ...
- Spring Boot自动配置SpringMVC(二)
Spring Boot自动配置SpringMVC(一) - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)讲述了关于DispatcherServlet注册到诸如tomcat容器中的自动配置过 ...
- Android SugarORM(2)
Android Sugar ORM (2) Android Sugar ORM 实体 1. 创建一个实体类 Sugar ORM在创建一个实体的时候, 仅需要使这个实体类继承于SugarRecord即可 ...
- BGFX多线程渲染
BGFX多线程渲染 1. 多线程基础 1. 并发概念 1. 并发任务简介 在多年以前,在手机.pc端.游戏机等,都是一个单核的CPU.这样,在硬件层面上,处理多个任务的时候,也是把一些任务切分成一些小 ...
- BI工具有多重要?凭什么得到各类企业的热烈追捧?
近年来,应用BI工具的企业越来越多,企业对BI工具的重视说明企业了解.认识到了数据的价值.数据分析工具已经渐渐成为企业日常经营管理活动中不可或缺的一项重要工作内容.但是你知道企业应该如何挑选BI工具吗 ...
- DBCHM -最简单、最实用的数据库文档生成工具
项目介绍 DBCHM 是一款数据库文档生成工具! 该工具从最初支持chm文档格式开始,通过开源,集思广益,不断改进,又陆续支持word.excel.pdf.html.xml.markdown等文档格式 ...