OpenCV学习之图像梯度算子详解

目录
  • 1.Sobel算子
  • 2.Scharr算子
  • 3.laplacian算子

本文是OpenCV图像视觉入门之路的第12篇文章,本文详细的介绍了图像梯度算子的各种操作,例如:Sobel算子Scharr算子laplacian算子等操作。

1.Sobel算子

Sobel算子是一种图像边缘检测算子,它是一种空间滤波器,可以检测图像中的边缘,而梯度运算是一种求导数的方法,可以用来检测图像中的局部变化。

import cv2
import numpy as np
from numpy import unicode

if __name__ == '__main__':
    # 不同算子的差异
    img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
    sobel_x = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3)
    sobel_y = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3)
    sobel_x = cv2.convertScaleAbs(sobel_x)
    sobel_y = cv2.convertScaleAbs(sobel_y)
    sobel_xy = cv2.addWeighted(sobel_x, 0.5, sobel_y, 0.5, 0)

    cv2.imshow("sobel_xy", sobel_xy)

    img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
    cv2.imshow("img", img)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

2.Scharr算子

Sobel算子是一种图像边缘检测算法,它可以检测图像中的水平边缘和垂直边缘。它使用卷积核来检测图像中的边缘,并且可以检测出图像中的细微变化。OpenCV是一个计算机视觉库,它提供了一系列的函数,可以用来处理图像,包括Sobel算子。OpenCV提供了一系列的函数,可以用来处理图像,包括Sobel算子,但它也提供了其他的图像处理算法,如Canny边缘检测算法,Hough变换算法等。

import cv2
import numpy as np
from numpy import unicode

if __name__ == '__main__':
    img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
    scharrx = cv2.Scharr(img, cv2.CV_64F, 1, 0)
    scharry = cv2.Scharr(img, cv2.CV_64F, 0, 1)
    scharrx = cv2.convertScaleAbs(scharrx)
    scharry = cv2.convertScaleAbs(scharry)
    scharrxy = cv2.addWeighted(scharrx, 0.5, scharry, 0.5, 0)

    cv2.imshow("scharrxy", scharrxy)

    img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
    cv2.imshow("img", img)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

3.laplacian算子

Laplacian算子是一种图像处理技术,它可以用来检测图像中的边缘和轮廓。它是一种二阶微分算子,可以用来检测图像中的边缘,并且可以用来检测图像中的噪声。它的基本原理是,它会计算图像中每个像素点的梯度,并且根据梯度的大小来检测图像中的边缘。

import cv2
import numpy as np
from numpy import unicode

if __name__ == '__main__':
    img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
    laplacian = cv2.Laplacian(img, cv2.CV_64F)
    laplacian = cv2.convertScaleAbs(laplacian)

    cv2.imshow("laplacian", laplacian)

    img = cv2.imread('D:/Jupyter_Notebooks/0.jpg', cv2.IMREAD_GRAYSCALE)
    cv2.imshow("img", img)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

到此这篇关于OpenCV学习之图像梯度算子详解的文章就介绍到这了,更多相关OpenCV图像梯度算子内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Pytorch 实现sobel算子的卷积操作详解

    卷积在pytorch中有两种实现,一种是torch.nn.Conv2d(),一种是torch.nn.functional.conv2d(),这两种方式本质都是执行卷积操作,对输入的要求也是一样的,首先需要输入的是一个torch.autograd.Variable()的类型,大小是(batch,channel, H,W),其中batch表示输入的一批数据的数目,channel表示输入的通道数. 一般一张彩色的图片是3,灰度图片是1,而卷积网络过程中的通道数比较大,会出现几十到几百的通道数.H和W表

  • Java OpenCV图像处理之自定义图像滤波算子

    目录 示例代码 效果图 示例代码 package com.xu.image; import java.io.File; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.Point; import org.opencv.highgui.HighGui; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Img

  • Python图像锐化与边缘检测之Sobel与Laplacian算子详解

    目录 一.Sobel算子 二.Laplacian算子 三.总结 一.Sobel算子 Sobel算子是一种用于边缘检测的离散微分算子,它结合了高斯平滑和微分求导.该算子用于计算图像明暗程度近似值,根据图像边缘旁边明暗程度把该区域内超过某个数的特定点记为边缘.Sobel算子在Prewitt算子的基础上增加了权重的概念,认为相邻点的距离远近对当前像素点的影响是不同的,距离越近的像素点对应当前像素的影响越大,从而实现图像锐化并突出边缘轮廓[1-4]. Sobel算子的边缘定位更准确,常用于噪声较多.灰度

  • Python图像锐化与边缘检测之Scharr,Canny,LOG算子详解

    目录 一.Scharr算子 二.Cann算子 三.LOG算子 四.总结 一.Scharr算子 由于Sobel算子在计算相对较小的核的时候,其近似计算导数的精度比较低,比如一个3×3的Sobel算子,当梯度角度接近水平或垂直方向时,其不精确性就越发明显.Scharr算子同Sobel算子的速度一样快,但是准确率更高,尤其是计算较小核的情景,所以利用3×3滤波器实现图像边缘提取更推荐使用Scharr算子. Scharr算子又称为Scharr滤波器,也是计算x或y方向上的图像差分,在OpenCV中主要是

  • python通过robert、sobel、Laplace算子实现图像边缘提取详解

    实现思路: 1,将传进来的图片矩阵用算子进行卷积求和(卷积和取绝对值) 2,用新的矩阵(与原图一样大小)去接收每次的卷积和的值 3,卷积图片所有的像素点后,把新的矩阵数据类型转化为uint8 注意: 必须对求得的卷积和的值求绝对值:矩阵数据类型进行转化. 完整代码: import cv2 import numpy as np # robert 算子[[-1,-1],[1,1]] def robert_suanzi(img): r, c = img.shape r_sunnzi = [[-1,-1

  • OpenCV学习之图像梯度算子详解

    目录 1.Sobel算子 2.Scharr算子 3.laplacian算子 本文是OpenCV图像视觉入门之路的第12篇文章,本文详细的介绍了图像梯度算子的各种操作,例如:Sobel算子Scharr算子laplacian算子等操作. 1.Sobel算子 Sobel算子是一种图像边缘检测算子,它是一种空间滤波器,可以检测图像中的边缘,而梯度运算是一种求导数的方法,可以用来检测图像中的局部变化. import cv2 import numpy as np from numpy import unic

  • OpenCV学习之图像形态学处理详解

    目录 1.腐蚀操作 2.膨胀操作 3.开闭运算 4.梯度运算 5.Top Hat Black Hat运算 本文是OpenCV图像视觉入门之路的第11篇文章,本文详细的在图像形态学进行了图像处理,例如:腐蚀操作.膨胀操作.开闭运算.梯度运算.Top Hat Black Hat运算等操作. 1.腐蚀操作 从下面代码中可以看到有三幅腐蚀程度不同的图,腐蚀越严重像素就越模糊 import cv2 import numpy as np from numpy import unicode if __name

  • opencv python图像梯度实例详解

    这篇文章主要介绍了opencv python图像梯度实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一阶导数与Soble算子 二阶导数与拉普拉斯算子 图像边缘: Soble算子: 二阶导数: 拉普拉斯算子: import cv2 as cv import numpy as np # 图像梯度(由x,y方向上的偏导数和偏移构成),有一阶导数(sobel算子)和二阶导数(Laplace算子) # 用于求解图像边缘,一阶的极大值,二阶的零点

  • Python OpenCV图像处理之图像滤波特效详解

    目录 1分类 2邻域滤波 2.1线性滤波 2.2非线性滤波 3频域滤波 3.1低通滤波 3.2高通滤波 1 分类 图像滤波按图像域可分为两种类型: 邻域滤波(Spatial Domain Filter),其本质是数字窗口上的数学运算.一般用于图像平滑.图像锐化.特征提取(如纹理测量.边缘检测)等,邻域滤波使用邻域算子——利用给定像素周围像素值以决定此像素最终输出的一种算子 频域滤波(Frequency Domain Filter),其本质是对像素频率的修改.一般用于降噪.重采样.图像压缩等. 按

  • Java OpenCV学习之Mat的基本操作详解

    目录 使用OpenCV时你需要补充的知识 Mat对象 Mat划线 Mat在己有图片上加圆圈 ImageShowAddCircle.java ImageViewer.java Mat与Image互转 OpenCVUtil.java Mat使用blur图片 环境好了,我们就可以进入正文了. 在之前入门一.二中分别已经有画图的两个例子了.但没有细节展开我们的代码和OpenCV到底在干什么. 使用OpenCV时你需要补充的知识 你需要熟练使用Java Swing,或者是其它任何一门语言中关于GUI方面的

  • C++ OpenCV生成蒙太奇图像的示例详解

    目录 前言 一.输入模板图像 二.读取素材图像 三.生成蒙太奇模板 四.生成蒙太奇图像 五.源码 总结 前言 本文将使用OpenCV C++ 生成蒙太奇图像. 一.输入模板图像 原图如图所示.我们将对此图生成蒙太奇图像. Mat src = imread("Taylor.jpg"); if (src.empty()) { cout << "No image!" << endl; system("pause"); retur

  • Python OpenCV学习之图像滤波详解

    目录 背景 一.卷积相关概念 二.卷积实战 三.均值滤波 四.高斯滤波 五.中值滤波 六.双边滤波 七.Sobel算子 八.Scharr算子 九.拉普拉斯算子 十.Canny算法 背景 图像滤波的作用简单来说就是将一副图像通过滤波器得到另一幅图像:明确一个概念,滤波器又被称为卷积核,滤波的过程又被称为卷积:实际上深度学习就是训练许多适应任务的滤波器,本质上就是得到最佳的参数:当然在深度学习之前,也有一些常见的滤波器,本篇主要介绍这些常见的滤波器: 一.卷积相关概念 卷积核大小一般为奇数的原因:

  • OpenCV学习之图像的分割与修复详解

    目录 背景 一.分水岭法 二.GrabCut法 三.MeanShift法 四.MOG前景背景分离法 五.拓展方法 六.图像修复 总结 背景 图像分割本质就是将前景目标从背景中分离出来.在当前的实际项目中,应用传统分割的并不多,大多是采用深度学习的方法以达到更好的效果:当然,了解传统的方法对于分割的整体认知具有很大帮助,本篇将介绍些传统分割的一些算法: 一.分水岭法 原理图如下: 利用二值图像的梯度关系,设置一定边界,给定不同颜色实现分割: 实现步骤: 标记背景 —— 标记前景 —— 标记未知区域

  • C++ OpenCV学习之图像金字塔与图像融合详解

    目录 1金字塔 2什么是图像金字塔? 3图像金字塔有什么用? 4OpenCV实战图像金字塔 1 金字塔 平时你听到.见到的金字塔是什么样的? 这样? 还是这样? 实际上除了这些,还有图像金字塔   图像金字塔有什么用?为什么要称作图像金字塔?本文带你研究这些问题. 2 什么是图像金字塔? 正如生物视觉系统会处理分层次的尺寸一样,计算机视觉系统实现多分辨率图像处理的基础是图像金字塔. 考虑这样一个场景:输入系统一幅图像来检测人脸.由于事先并不知道人脸在这张图片中可能的尺寸,所以需要根据输入生成一个

  • OpenCV学习之图像加噪与滤波的实现详解

    目录 一.实验内容 二.实验环境和配置 三.实验原理及操作 1. 添加噪声 2.噪声二值化 3. 滤波处理 四.实验结果 2.椒盐噪声二值图与白噪声二值图 3.椒盐噪声处理图经处理后图像 4.白噪声处理图经处理后图像 五.结果分析 六.实验源码 一.实验内容 编写一Python程序,要求实现以下功能: 读入一幅图像. 使用两种以上的方法分别向图像中添加噪声. 输出一幅二值图像,图像中未加入噪声的区域为黑色,加入噪声的区域为白色. 使用三种滤波方法对上述添加了噪声的图像进行滤波处理. 输出滤波处理

随机推荐