十六、计算机视觉-Scharr算子 和 Laplacian算子

文章目录

  • 一、Scharr算子
  • 二、Laplacian算子


一、Scharr算子

Scharr算子和Sobel算子原理都一样,它是由Scharr在2002年提出的一种改进的Sobel算子。Scharr算子的优点在于它相对于Sobel算子有更好的旋转不变性和更小的边缘响应误差。
我们看下Scharr算子的水平卷积核:
在这里插入图片描述
可以看到其卷积核中的值比Sobel算子的对应值大,这使得Scharr算子在捕捉图像边缘细节时更加敏感。因为上节讲过原理了 这里就不在重复了,我们看下具体他是怎么实现的。

import cv2
img = cv2.imread('./img/image.jpg',cv2.IMREAD_GRAYSCALE)
# 计算Scharr算子的水平和垂直梯度
scharrx = cv2.Scharr(img, cv2.CV_64F, 1, 0)  # x方向梯度
scharrx = cv2.convertScaleAbs(scharrx)scharry = cv2.Scharr(img, cv2.CV_64F, 0, 1)  # y方向梯度
scharry = cv2.convertScaleAbs(scharry)# 结合水平和垂直梯度
scharrxy = cv2.addWeighted(scharrx, 0.5, scharry, 0.5, 0)  # xy方向梯度# 显示结果
cv2.imshow('Scharr Gradient', scharrxy)
cv2.waitKey(0)
cv2.destroyAllWindows()

参数就不讲了 可以参考sobel算子的参数
看下结果:
在这里插入图片描述

二、Laplacian算子

Laplacian 算子和之前讲的sobel和Scharr有些不同,我们看下Laplacian算子的卷积核

  0   1   01  -4   10   1   0

我们看下它的操作流程:
首先,将3x3的卷积核以上面-4的位置为中心点依次对图像中的每个像素点进行卷积操作,这个和前面一样,将卷积结果作为图像的每个像素点的新像素值。
对于卷积结果,若像素值较大,则表示该像素点周围的灰度值变化较大,可能是图像中的边缘或轮廓。
那他的计算公式是什么?比如我们卷积核覆盖的图像的9个像素点如下
在这里插入图片描述

那p5的新值=(p2 + p4 + p6 + p8) - 4 * p5
●p2 p4 p6 p8 分别代表了卷积核中的四个相邻像素点的值。
●p5 是卷积核覆盖的中心像素点的值。

算式中的 4×p5 表示了中心像素点的值被乘以4,这是因为在Laplacian算子的卷积核中,中心像素点的系数是-4,因此需要将其乘以4进行加权。
最终的 p5 表示了中心像素点的新值,它等于周围相邻像素点的值之和减去中心像素点的值的四倍。这一过程会使图像中的边缘或轮廓区域得到突出,因为这些区域的像素值变化较大,而Laplacian算子会将这种变化放大。
我们进一步分析:
当p2 p4 p6 p8较大时也就是他的亮度(灰度)远大于中心点,也就是周围和中心点差距较大时,两边一减那我们新的p5的值是不是就是变小了。
而当当p2 p4 p6 p8较小时,同样和中心点比较差距较大,那一减 得到的事负数 然后绝对值 是不是比原来的值大了。
所以,它本身中心为最高峰,向两边依次减小。当周围和高于中心时,减弱中心像素;当周围和低于中心时,增强中心像素,一般用于图像的锐化。由于Laplacian算子突出了图像中的边缘和轮廓特征,因此常用于图像的锐化处理。通过对图像应用Laplacian算子,可以增强图像中的边缘和轮廓,使它们更加清晰和突出。

我们看下具体的实现代码:

import cv2
img = cv2.imread('./img/image.jpg',cv2.IMREAD_GRAYSCALE)
Laplacian = cv2.Laplacian(img,cv2.CV_64F)
Laplacian = cv2.convertScaleAbs(Laplacian)
cv2.imshow("original",img)
cv2.imshow("Laplacian",Laplacian)
cv2.waitKey()
cv2.destroyAllWindows()

看下结果:

在这里插入图片描述

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

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

相关文章

MySQL:主键,事件,索引的基础用法(10)

主键 指定某个字段作为主键,这个字段内容无法为空,而且他的内容不能重复作为唯一的标识 主键还有自增和非自增,比如你创建了一个表,你设置了自增,他就会按编号依次自动加一 我创建了一个名为tarro的数据库&#xff…

element-ui使用记录

element-ui的组件名就是类名 样式穿透(用来修改没有类名的子组件样式) 例如修改头部具名插槽的样式(但是无法定位该元素) 查看最后生成的html结构中对应的结构(这里的头部有类名,可以直接对该类名进行样…

C语言—每日选择题—Day69

第一题 1、以下程序的输出结果是( ) int main() {char arr[2][4];strcpy (arr[0],"you");strcpy (arr[1],"me");arr[0][3]&;printf("%s \n",arr);return 0; } A: you&me B: you C: me D: err 答案及解析 A 这里重…

FFmpeg: 简易ijkplayer播放器实现--03UI界面设计

文章目录 UI设计流程图UI设计界面点击播放功能实现 UI设计流程图 UI设计界面 主界面 控制条 播放列表 画面显示 标题栏 设置界面 提示框 点击播放功能实现 槽函数实现: connect(ui->ctrlBarWind, &CtrlBar::SigPlayOrPause, this, &Main…

zookeeper解析

目录 zookeeper定义 zookeeper定义 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目 Zookeeper工作机制 zookeeper从设计模式角度来理解: 是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心…

DS18B20与单片机的通信、DS18B20采集温度、MODBUS协议、练习框架

我要成为嵌入式高手之4月9日51单片机第四天!! ———————————————————————————— DS18B20温度传感器 单总线数字温度计 异步的半双工的串行通信 测量范围从-55℃ ~ 125℃,增量值为0.5℃ 要用DS18B20采集温度&am…

Ingress配置优化和追踪

介绍 在传统的业务系统中,应用微服务化后,需要一个统一的入口来将各个服务进行整合,这个入口可以是Nginx、Apache、HAproxy等等。而在K8s中,同样需要一个工具来将应用的各个service整合到统一的入口,这个工具就叫Ingr…

ArcGIS Pro中的3D建模

在本文中,我讲述了我最近一直在探索的在 ArcGIS Pro 中设计 3D 模型的过程。 我的目标是尽可能避免与其他软件交互(即使是专门用于 3D 建模的软件),并利用 Pro 可以提供的可能性。 这个短暂的旅程分为三个不同的阶段:准备、组装和照明。 我们必须使用一些布局可能性以及一…

flask后端+网页前端:基于 socket.io 的双向通信和服务器部署

我想实现的效果是,我的服务器提供两个路由网址,网页A用于拍照、然后录音,把照片和录音传给服务器,服务器发射信号,通知另一个路由的网页B更新,把刚刚传来的照片和录音显示在网页上。 然后网页B用户根据这个…

前端开发中地图定位与距离计算的应用实践

前端开发中地图定位与距离计算的应用实践 在前端开发中,地图功能的应用日益广泛,无论是用户位置的定位、目标距离的计算,还是地址的解析与展示,地图都发挥着不可替代的作用。本文将重点介绍前端开发中实现地图定位、距离计算以及…

MySQL前缀索引(3/16)

前缀索引 前缀索引:MySQL支持前缀索引,允许定义字符串的一部分作为索引。如果不指定前缀长度,索引将包含整个字符串。前缀索引可以节省空间,但可能会增加查询时的记录扫描次数(因为会查询到多个前缀相同的数据&#x…

Python(9):一文学懂进程,线程和协程

文章目录 一、进程1.创建多进程2.查看进程id3.进程池4.进程间的互相通信 二、线程1.threading线程模块2.创建多线程3.互斥锁4.死锁5.线程间的互相通信 三、协程1.认识协程2.gevent模块在爬虫中的应用 四、多线程、多进程、协程的区别 分类定义程序一个应用可以当做一个程序&…

局域网共享文件夹怎么加密?局域网共享文件夹加密方法介绍

在企业局域网中,共享文件夹扮演着重要的角色。为了保护数据安全,我们需要加密保护局域网共享文件夹。那么,局域网共享文件夹怎么加密?下面我们来了解一下吧。 局域网共享文件夹加密方法 局域网共享文件夹加密推荐使用共享文件夹加…

【计算机考研】择校!北邮VS北航,哪所毕业以后就业好?

北邮计算机专业的就业优势相较于北航可能源于多方面的因素。 北邮在计算机和通信领域的实力备受肯定,被誉为"信息黄埔",这一声誉在一定程度上增强了北邮计算机专业毕业生的竞争力。 北邮的整体学校氛围和教育体系更加注重信息技术的发展和应…

vue表格操作列,按钮太多显示... 点击后悬浮显示全部按钮

效果: 分析原理: 一共就三步,仔细看看很简单,位置要加对,代码结构下边有demo 代码结构demo: <el-table-columnlabel"操作"align"center"fixed"right"show-overflow-tooltip><template slot-scope"scope"><el-buttonsi…

STM32电机控制固件架构

目录 一、应用程序剖析 二、面向现场的控制实现体系结构 1、参考计算循环 2、电流调节环路 3、安全回路 一、应用程序剖析 上图显示了由ST MC SDK构建的电机控制应用程序。首先&#xff0c;这样的应用程序是由电机控制工作台生成的软件项目&#xff0c;这要归功于STM32Cube…

01 SQL基础 -- 初识数据库与安装

一、初识数据库 数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。该数据集合称为数据库(Database, DB)。用来管理数据库的计算机系统称为数据库管理系统(Database Management System, DBMS) 1.1 DBMS 的种类 DBMS 主要通过数据的保存格式…

【MySQL】数据库开篇

SueWakeup 个人主页&#xff1a;SueWakeup 系列专栏&#xff1a;学习技术栈 个性签名&#xff1a;保留赤子之心也许是种幸运吧 本文封面由 凯楠&#x1f4f8;友情提供 目录 本系列传送门 1. 什么是数据库&#xff1f; 2. 为什么使用数据库 3. 数据库的分类 4. NoSQL 与关系…

android android.permission.MANAGE_EXTERNAL_STORAGE使用

android11 及以上版本&#xff0c;如果release版本要读取外部存储公共目录&#xff0c;即sdcard公共目录&#xff0c;需要在androidManifest.xml下申明 <uses-permission android:name"android.permission.MANAGE_EXTERNAL_STORAGE" /> 如果要发版到海外&…

【UE Niagara】光束发射模块学习

效果 步骤 1. 新建一个Niagara发射器&#xff0c;使用Empty模板&#xff0c;这里命名为“NE_Beam” 打开“NE_Beam”&#xff0c;添加条带渲染器 添加“Spawn Burst Instantaneous”模块&#xff0c;设置生成数量为100 添加一个“Beam Emitter Setup”模块 再添加一个“Spawn …