【图像处理】图像的锐化操作 | 边缘检测sobel算子,拉普拉斯算子,Canny算子| opencv

news2024/11/17 21:51:46

文章目录

  • 前言
  • 一、一阶导数算子:sobel算子
  • 二、二阶导数算子:拉普拉斯算子
  • 三.Canny算子


前言

参考视频:opencv教程(跟着视频敲了一遍代码)
参考教材:《数字图像处理基础》 作者:朱虹

一、一阶导数算子:sobel算子

在python里调用sobel算子的指令如下例子所示:

sobelx=cv2.Sobel(X1,cv2.CV_64F,1,0,ksize=3)

其中X1是导入的图像(一般为灰度图),ksize是sobel算子的大小.
1,0表示算的是水平的梯度;0,1则表示算的是垂直的梯度

完整例子:

import cv2
import numpy as np
X1=cv2.imread('dog.jpg',0)
sobelx=cv2.Sobel(X1,cv2.CV_64F,1,0,ksize=3)
sobely=cv2.Sobel(X1,cv2.CV_64F,0,1,ksize=3)
res=np.hstack((sobelx,sobely))
cv2.imshow('dog',res)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果:
在这里插入图片描述
视频里还讲到一种水平操作和垂直操作互相叠加的用法:

import cv2

X1=cv2.imread('dog.jpg',0)
sobelx=cv2.Sobel(X1,cv2.CV_64F,1,0,ksize=3)
sobelx=cv2.convertScaleAbs(sobelx)
sobely=cv2.Sobel(X1,cv2.CV_64F,0,1,ksize=3)
sobely=cv2.convertScaleAbs(sobely)
sobelxy=cv2.addWeighted(sobelx,0.5,sobely,0.5,0)

cv2.imshow('dog',sobelxy)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
如果直接把sobel=cv2.Sobel(X1,cv2.CV_64F,1,0,ksize=3)里面的dx,dy直接设为1,1呢:

import cv2

X1=cv2.imread('dog.jpg',0)
sobelxy=cv2.Sobel(X1,cv2.CV_64F,1,1,ksize=3)
sobelxy=cv2.convertScaleAbs(sobelxy)
cv2.imshow('dog',sobelxy)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
效果可能不太好。
当然一阶算子还不止这一个

二、二阶导数算子:拉普拉斯算子

import cv2

X1=cv2.imread('dog.jpg',0)
laplacian=cv2.Laplacian(X1,cv2.CV_64F)
y=cv2.convertScaleAbs(laplacian)
cv2.imshow('dog',y)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

当然二阶算子也还不止这一个

三.Canny算子

v1=cv2.Canny(X1,80,150)

其中X1为输入的图像(一般是灰度图像),后面两个参数是可以设定的双阈值(minval和maxval)。
前面那个参数(这里是80),如果图像中的梯度值小于80,就会被舍弃。后面那个参数(这里是150),如果图像中的梯度值大于150,就会保留,处理为边界。
minval和maxval设置的小,保留边界的条件越低,图像中边界越多

以下为一个实验的例子:

import cv2
import numpy as np
X1=cv2.imread('dog.jpg',0)
v1=cv2.Canny(X1,100,170)
v2=cv2.Canny(X1,80,150)
v3=cv2.Canny(X1,50,100)

res=np.hstack((v1,v2,v3))

cv2.imshow('1',res)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
可以看到从V1到V3,边界保留的条件越来越轻松,图像中的细节也越来越多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/130027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【unity笔记】图解 Vector3.SignedAngle()方法的返回值

这个方法可以理解为:“两个向量之间的夹角(有符号的)”。 我会将它想象成:将两个向量都放在坐标原点,一个向量要向哪个方向旋转多少度 才能与另一个向量重合。 于是我在坐标原点放置了两个向量:OB和OA。 …

Java Object 类

Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法。 Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类,那…

Python采集股票数据信息

前言 今天打算来整整股票,简简单单的采集一些股票数据 对这个有兴趣的就一起来瞧瞧吧 准备 开发环境 & 第三方模块 解释器版本: python 3.8代码编辑器: pycharm 2021.2requests: pip install requests 爬虫pyecharts: pip install pyecharts 数据分析pandas…

图像属性操作

数字图像处理本质是对多维矩阵的操作。按照处理对象不同,可分为黑白图像处理,灰度图像处理,彩色图像处理。按照处理方法分为空间域处理和频域处理。按照策略分为全局处理和局部处理。 #一般步骤输入图像 多维数组 数组运算 图像…

排序算法:堆排序,快速排序,归并排序。内附完整代码和算法思路详解。

目录 一:堆排序 1.1:堆的数据结构 1.2:大小根堆 1.3:向下调整算法构建小根堆 1.4:堆排序思想 二:快速排序 2.1:快排单趟思想 三:归并排序 3.1:分组过程 3.2&am…

JSP ssh学习管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh学习管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式 开发。开发环境为TOMCAT7.0,Mye…

MMDetection框架入门教程之环境部署

创建虚拟环境 打开Anaconda Prompt,创建一个新的虚拟环境mmlab。注意我这里选择了python3.6,因为在python3.7下出现了mmdet3d.apis中的类无法无法import的情况(但mmdet3d可以import),暂时不清楚原因。 conda create …

SQLSERVER,求平均数,最大,最小,中位数,众数

SQLSERVER,求平均数,最大,最小,中位数,众数 SQLSERVER,求平均数,最大,最小,中位数,众数 SELECT -- *, t1.remark, t1.my_count, t1.my_sum, …

ArcGIS Python ​影像批量裁剪

该工具在:“14综合\工具箱.tbx\影像裁剪\按记录批量裁剪影像”,影像数据按矢量面要素批量裁剪,界面如图14-5所示。 图14-5 影像批量裁剪 按一个矢量面数据,按字段值相同的融合在一起裁剪影像,字段值是裁剪后的影像名字…

【再学Tensorflow2】TensorFlow2的高层封装

TensorFlow2的高层封装使用Tensorflow2构建模型的3种方法使用Sequential按层顺序构建模型使用函数式API创建任意结构的模型使用Model子类化创建自定义模型训练模型的3种方法内置fit方法内置train_on_batch方法自定义训练循环使用GPU训练模型使用单GPU训练模型使用多GPU训练模型…

ti3090安装cuda113+cudnn+anaconda+yolopose过程

wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.run sudo sh cuda_11.3.1_465.19.01_linux.run 如果有了nvidia driver,可以不用install driver选项。 配置环境变量: export PATH“/…

十一、kubernetes核心技术Label详解、实例

1、概述 Label是kubernetes系统中的一个重要概念。它的作用就是在资源上添加标识,用来对它们进行区分和选择。 Label的特点: 一个Label会以key/value键值对的形式附加到各种对象上,如Node、Pod、Service等等 一个资源对象可以定义任意数量的…

【技术博客】文本挖掘之LDA主题模型

文本挖掘之LDA主题模型 作者:郑培 引言 主题模型是文本挖掘的重要工具,近年来在工业界和学术界都获得了非常多的关注。在文本挖掘领域,大量的数据都是非结构化的,很难从信息中直接获取相关和期望的信息,一种文本挖掘…

ArcGIS基础实验操作100例--实验23提取栅格有效边界值

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 基础编辑篇--实验23 提取栅格有效边界值 目录 一、实验背景 二、实验数据 三、实验步骤 (…

sqlserver 求平均数,中位数,众数

sqlserver 求平均数,中位数,众数 sqlserver 聚合函数结合 窗口函数的巧妙使用。 SELECT -- *, t1.remark, t1.my_count, t1.my_sum, t1.my_avg, t1.my_min, t1.my_max, /*my_median : 中位数*/ t2.my_median, /*my_mos…

保姆教程系列二、Redis高可用(主从同步+哨兵模式)

系列文章目录 !!!是的没错,胖友们,保姆教程系列又更新了!!! 保姆教程系列一、Redis部署 so easy 保姆教程系列二、Redis高可用(主从同步哨兵模式) 保姆教程系…

2008-2020年上市公司环境治理费用

2008-2020年上市公司环境治理费用 1、时间区间为:2008-2020年 2、指标包括:统计截止日期、证券代码、证券简称、本期金额、上期金额、上市公司排污费、环保费、绿化费、环保支出等有关环境治理费用 3、指标说明: EndDate [统计截止日期] …

ArcGIS基础实验操作100例--实验22NoData数据处理

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 基础编辑篇--实验22 NoData数据处理 目录 一、实验背景 二、实验数据 三、实验步骤 方法一&#xff1…

Linux网络协议之以太网协议(数据链路层)

Linux网络协议之以太网协议(数据链路层) 文章目录Linux网络协议之以太网协议(数据链路层)1.数据链路层解决的问题2.以太网协议2.1 认识以太网2.2 以太网帧格式2.3 认识MAC地址2.4 MAC地址与IP地址的区别3.ARP协议3.1 ARP协议的作用3.2 ARP数据报格式3.3 ARP协议工作流程3.4 ARP…

数据结构——基本术语

数据 数据能输入且被被计算机处理的符号集合。数据包括数值型数据和非数值型数据。非数值类型包括图,文字等 数据项和数据元素 数据元素时数据的基本单位,在计算机中通常被当作一个整体处理 也简称为元素,或者记录 数据元素又可以被若干个…