图像梯度

图像梯度
图像梯度计算的是图像变化的速度 对于图像的边缘部分,其灰度值变化较大,梯度值也较大
相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小。
图像梯度计算需要求导数,但是图像梯度一般通过计算像素值的差来得到梯度的近似值(近似导数值)。(差分,离散)

Sobel算子

 1 #Sobel算法
 2 #dst =  cv2.sobel(src,depth,dx,dy,ksize)
 3 #depth:深度
 4 #dx和dy分别表示水平和竖直方向
 5 #ksize:sobel的算子大小
 6 #cv2.CV_64F,因为在计算梯度的时候会涉及到负值,如果单纯设置为-1,则会把负值改为0,显然是不符合梯度要求的,
 7 #所以一般设置为cv2.cv_64f返回结果就可以是64位的一个数值,就是[-255, 255],
 8 #这样如果出现负梯度,我们就把负梯度也保留了
 9 
10 sobelX = cv2.Sobel(img,cv2.CV_64F,1,0,3)
11 #白->黑是正数 相反是负数,会被截断为0  ,此时我们再用cv2.convertScaleAbs()函数把负梯度变正,就是我们的边缘信息了
12 sobelX = cv2.convertScaleAbs(sobelX)
13 Cv_Show('SobelX Picture',sobelX)
14 
15 #sobelY同理
16 sobelY = cv2.Sobel(img,cv2.CV_64F,0,1,3)
17 sobelY = cv2.convertScaleAbs(sobelY)
18 Cv_Show('SobelY Picture',sobelY)
19 
20 #将sobelX 和 sobelY通过cv2.addweighted()综合
21 sobelXY = cv2.addWeighted(sobelX, 0.5, sobelY, 0.5, 0)
22 Cv_Show('SobelXY Picture',sobelXY)
23 
24 #如果直接求和 效果将会变差 出现重影等现象 故不建议
25 dirXY = cv2.Sobel(img,cv2.CV_64F,1,1,3)
26 dirXY = cv2.convertScaleAbs(dirXY)
27 Cv_Show('DirXY Picture',dirXY)

Scharr算子

1 #思想与sobel相同但是数值更大,相比于sobel对边缘更加敏感
2 scharrX = cv2.Scharr(img,cv2.CV_64F,1,0)
3 scharrY = cv2.Scharr(img,cv2.CV_64F,0,1)
4 scharrX = cv2.convertScaleAbs(scharrX)
5 scharrY = cv2.convertScaleAbs(scharrY)
6 scharrXY = cv2.addWeighted(scharrX,0.5,scharrY,0.5 ,0)
7 Cv_Show('Scharr Picture',scharrXY)

Laplacian算子

#Laplacian算子
##Sobel算子和Scharr算子相当于一阶导,而Laplacian算子则涉及了二阶导,但受噪音影响比较大,不建议直接使用 需要和其他工具配合
laplacian = cv2.Laplacian(img,Cv_Show)
laplacian = cv2.convertScaleAbs(laplacian)
Cv_Show('laplacian Picture',laplacian)

比较

1 res = np.hstack((sobelXY,scharrXY,laplacian))
2 Cv_Show('Sobel Scharr Laplacian Picture',res)

 

原文链接:https://www.cnblogs.com/mingrufeng/p/17343157.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:图像梯度 - Python技术站

(0)
上一篇 2023年4月22日
下一篇 2023年4月22日

相关文章

  • 基于Python实现自动化生成数据报表

    基于Python实现自动化生成数据报表的完整实例教程如下: 1. 准备工作 在开始编写代码前需要进行准备工作:1. 安装Python;2. 安装所需的Python库,包括pandas、openpyxl、numpy等;3. 准备好需要处理的数据源,比如CSV文件。 2. 加载数据 将需要处理的数据加载到Python中,可以使用pandas库中的read_csv…

    python 2023年5月14日
    00
  • Python基于正则表达式实现检查文件内容的方法【文件检索】

    以下是“Python基于正则表达式实现检查文件内容的方法【文件检索】”的完整攻略: 一、问题描述 在Python中,我们可以使用正则表达式来检查文件内容。本文将详细讲解Python基于正则表达式实现检查文件内容的方法,以及如何在实际开发中应用。 二、解决方案 2.1 检查文件内容的方法 在Python中,检查文件内容的方法可以使用正则表达式来实现。我们可以使…

    python 2023年5月14日
    00
  • Python高级特性——详解多维数组切片(Slice)

    Python高级特性:详解多维数组切片(Slice) 1. 多维数组切片基本用法 切片是 Python 中常用的一种操作,可以用来切分列表、字符串、元组等序列型数据,多维数组也不例外。对于二维数组,切片只需在索引号中加入” : “符号,即可切分整行或整列。而对于多维数组,我们可以在切片表达式中使用多个” : “符号,来对各个维度进行切片。 下面是一个基本的多…

    python 2023年6月5日
    00
  • Python SSL证书验证问题解决方案

    Python SSL证书验证问题解决方案 在使用Python发送网络请求时,SSL证书验证是一个非常重要的安全机制,它可以帮助我们确认服务器的身份,避免了中间人攻击等问题。但是SSL证书验证时也可能会遇到一些问题,如何解决这些问题呢?接下来我们将详细介绍Python SSL证书验证问题的常见解决方案。 Requests库默认SSL证书验证 Python的re…

    python 2023年6月3日
    00
  • linux下安装python3和对应的pip环境教程详解

    安装Python3 在Linux中安装Python3可以使用系统自带的包管理器进行安装,也可以从Python官网上下载源码安装。 使用包管理器安装Python3的命令如下: Ubuntu/Debian系统:sudo apt-get install python3 CentOS/RHEL系统:sudo yum install python3 如果系统没有自带P…

    python 2023年5月14日
    00
  • 为什么选择Python入门

    这个星球的编程语言有数百上千种,能够称为热门的也只有那十几种而已,比如C、C++、Java、C#、PHP等,这些编程语言也都十分火爆。 但对于新人来讲,尤其是现阶段对编程语言的优劣还没有什么概念的时候,选择哪门编程语言进行入门,是需要特别慎重的。作为站长本人,我为什么建议你选择Python作为入门语言,本章将带你一起探讨。 在此之前,我觉得有必要讲一下本教程…

    2022年10月25日
    00
  • 解决Python中pandas读取*.csv文件出现编码问题

    当我们在使用Python中pandas读取*.csv文件时,有时候会遇到编码问题,这种问题会导致我们无法正确地读取csv文件中的内容。本文将为大家讲解如何解决这一问题。 问题描述 在读取*.csv文件时,我们会使用pandas的read_csv方法来读取csv文件,如下所示: import pandas as pd df = pd.read_csv(&quo…

    python 2023年5月31日
    00
  • python搜索算法原理及实例讲解

    Python搜索算法原理及实例讲解 搜索算法是计算机科学中的基本问题之一,它的目的是在一个数据集合中查找特定的元素。在Python中,可以使用多种搜索算法来查找数据。本文将介绍Python的搜索算法原理及实例讲解。 搜索算法原理 1. 线性搜索 线性搜索是一种简单的搜索算法,它的基本思想是从数据集合的第一个元素开始,逐个比较每个元素,直到找到目标元素或遍历完…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部