OpenCV:高通滤波之索贝尔、沙尔和拉普拉斯

目录

简述

什么是高通滤波?

高通滤波的概念

应用场景

索贝尔算子

 算子公式

实现代码

特点

沙尔算子

算子公式

实现代码

特点

拉普拉斯算子

算子公式

实现代码

特点

高通滤波器的对比与应用场景


相关阅读

OpenCV:图像滤波、卷积与卷积核-CSDN博客

OpenCV:图像处理中的低通滤波-CSDN博客


简述

高通滤波是一种增强图像高频分量的处理方法,常用于边缘检测和特征提取。在图像处理中,高通滤波可以突出图像中的边缘、轮廓和细节信息,而抑制平滑区域(低频分量)。

本文将重点介绍三种常见的高通滤波器:索贝尔(Sobel)、沙尔(Scharr) 和 拉普拉斯(Laplacian),并结合代码和应用场景进行讲解。


什么是高通滤波?

高通滤波的概念

高通滤波是对图像进行卷积操作,以保留图像中的快速变化部分(如边缘和细节),同时抑制低频分量(如大面积平坦区域)。

应用场景

  • 边缘检测:提取物体轮廓和边界。
  • 特征提取:用于后续计算机视觉任务(如目标检测)。
  • 图像锐化:增强图像清晰度。

索贝尔算子

索贝尔算子是一种经典的边缘检测算子,通过计算像素梯度,检测图像的水平和垂直边缘。

 算子公式

水平边缘检测

Kernel_{x} = \begin{bmatrix} -1 & 0 & 1\\ -2 & 0 & 2\\ -1 & 0 & 1 \end{bmatrix}

垂直边缘检测

Kernel_{y} = \begin{bmatrix} -1 & -2 & -1\\ 0 & 0 & 0\\ 1 & 2 & 1 \end{bmatrix}

实现代码

import cv2
import numpy as np# 读取图像
image = cv2.imread("D:\\resource\\filter\\shudu.jpg")
image = cv2.resize(image, (400,400))# 检测单方向效果好, 同时双方向效果差# y方向 图像边缘
result1 = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=5)# x方向 图像边缘
result2 = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=5)# 合并
result = cv2.add(result1, result2)cv2.imshow("image", image)
cv2.imshow("result1", result1)
cv2.imshow("result2", result2)
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

特点

  • 能检测水平和垂直边缘。
  • 可调整核大小(ksize)以控制平滑程度。

运行结果: y方向和x方向

运行结果: 原图和合成后的图


沙尔算子

沙尔算子是对索贝尔算子的优化版本,它在小窗口(如 3×3)中提供更高的精度。

算子公式

水平边缘检测

Kernel_{x} = \begin{bmatrix} 3 & 0 & -3\\ 10 & 0 & -10\\ 3 & 0 & -3 \end{bmatrix}

垂直边缘检测

Kernel_{y} = \begin{bmatrix} 3 & 10 & 3\\ 0 & 0 & 0\\ -3 & -10 & -3 \end{bmatrix}

实现代码

import cv2
import numpy as np# 读取图像
image = cv2.imread("D:\\resource\\filter\\shudu.jpg")
image = cv2.resize(image, (400,400))# 与Sobel类似, 只能求x或y方向的边缘# y方向 图像边缘
result1 = cv2.Scharr(image, cv2.CV_64F, 1, 0)# x方向 图像边缘
result2 = cv2.Scharr(image, cv2.CV_64F, 0, 1)# 合并
result = cv2.add(result1, result2)cv2.imshow("image", image)
cv2.imshow("result1", result1)
cv2.imshow("result2", result2)
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

特点

  • 在处理高频变化的边缘时,精度高于索贝尔算子。
  • 适用于对边缘检测精度要求较高的场景。

拉普拉斯算子

拉普拉斯算子是一种二阶导数算子,结合水平和垂直方向的梯度信息,用于检测图像的边缘。

算子公式

拉普拉斯算子的卷积核常见形式为:

Kernel = \begin{bmatrix} 0 & -1 & 0\\ -1 & 4 & -1\\ 0 & -1 & 0 \end{bmatrix}

实现代码

import cv2
import numpy as np# 读取图像
image = cv2.imread("D:\\resource\\filter\\shudu.jpg")
image = cv2.resize(image, (400,400))# 可以同时求2个方向的边缘,但是对噪音敏感,需要先降噪
result = cv2.Laplacian(image, cv2.CV_64F, ksize=5)cv2.imshow("image", image)
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

特点

  • 同时检测水平、垂直和对角线方向的边缘。
  • 对噪声敏感,适合平滑处理后的图像。

运行结果 


高通滤波器的对比与应用场景

算子特点适用场景
索贝尔结合一阶导数,能检测水平和垂直边缘边缘检测、特征提取
沙尔索贝尔的改进版,适合处理高频变化区域,精度更高精细边缘检测
拉普拉斯二阶导数算子,检测方向无关的边缘,灵敏度高图像锐化、边缘增强

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

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

相关文章

error Parsing error: invalid-first-character-of-tag-name vue/no-parsing-error

标签的第一个字符不符合 HTML 或 Vue 的语法要求 [0] Module Warning (from ./node_modules/eslint-loader/index.js): [0] [0] /Users/dgq/Downloads/cursor/spid-admin/src/views/tools/fake-strategy/components/identify-list.vue [0] 87:78 error Parsing error: in…

在Unity中使用大模型进行离线语音识别

文章目录 1、Vosk下载下载vosk-untiy-asr下载模型在项目中使用语音转文字音频转文字2、whisper下载下载unity项目下载模型在unity中使用1、Vosk 下载 下载vosk-untiy-asr Github链接:https://github.com/alphacep/vosk-unity-asr 进不去Github的可以用网盘 夸克网盘链接:h…

【c语言日寄】Vs调试——新手向

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…

双指针+前缀和习题(一步步讲解)

前言:如果解决下面这几道题有些问题,或者即使看了我画的过程图也不理解的可以去看看我的上一篇文章,有可能会对你有帮助。 一、《数值元素的目标和》---来自AcWing 数组元素的目标和 给定两个升序排序的有序数组 A和 B,以及一个…

单调栈详解

文章目录 单调栈详解一、引言二、单调栈的基本原理1、单调栈的定义2、单调栈的维护 三、单调栈的应用场景四、使用示例1、求解下一个更大元素2、计算柱状图中的最大矩形面积 五、总结 单调栈详解 一、引言 单调栈是一种特殊的栈结构,它在栈的基础上增加了单调性约束…

分布式光纤应变监测是一种高精度、分布式的监测技术

一、土木工程领域 桥梁结构健康监测 主跨应变监测:在大跨度桥梁的主跨部分,如悬索桥的主缆、斜拉桥的斜拉索和主梁,分布式光纤应变传感器可以沿着这些关键结构部件进行铺设。通过实时监测应变情况,能够精确捕捉到车辆荷载、风荷…

《安富莱嵌入式周报》第349期:VSCode正式支持Matlab调试,DIY录音室级麦克风,开源流体吊坠,物联网在军工领域的应用,Unicode字符压缩解压

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: 《安富莱嵌入式周报》第349期:VSCode正式支持Matlab调试,DIY录音室级麦克风…

Pyside6(PyQT5)中的QTableView与QSqlQueryModel、QSqlTableModel的联合使用

QTableView 是QT的一个强大的表视图部件,可以与模型结合使用以显示和编辑数据。QSqlQueryModel、QSqlTableModel 都是用于与 SQL 数据库交互的模型,将二者与QTableView结合使用可以轻松地展示和编辑数据库的数据。 QSqlQueryModel的简单应用 import sys from PySid…

uniapp+Vue3(<script setup lang=“ts“>)模拟12306城市左右切换动画效果

效果图&#xff1a; 代码&#xff1a; <template><view class"container"><view class"left" :class"{ sliding: isSliding }" animationend"resetSliding">{{ placeA }}</view><view class"center…

VUE elTree 无子级 隐藏展开图标

这4个并没有下级节点&#xff0c;即它并不是叶子节点&#xff0c;就不需求展示前面的三角展开图标! 查阅官方文档如下描述&#xff0c;支持bool和函数回调处理&#xff0c;这里咱们选择更灵活的函数回调实现。 给el-tree结构配置一下props&#xff0c;注意&#xff01; :pr…

Ansys Motor-CAD:IPM 电机实验室 - 扭矩速度曲线

各位电动机迷们&#xff0c;大家好&#xff1a; 在本博客中&#xff0c;我讨论了如何使用 Ansys Motor-CAD 通过 LAB 模块获取扭矩速度曲线。使用每安培最大扭矩电机控制策略&#xff0c;并涵盖恒定扭矩区域和恒定功率、磁通减弱区域。分析了高转子速度如何影响功率输出。 模型…

网络(三) 协议

目录 1. IP协议; 2. 以太网协议; 3. DNS协议, ICMP协议, NAT技术. 1. IP协议: 1.1 介绍: 网际互连协议, 网络层是进行数据真正传输的一层, 进行数据从一个主机传输到另一个主机. 网络层可以将数据主机进行传送, 那么传输层保证数据可靠性, 一起就是TCP/IP协议. 路径选择: 确…

docker ubuntu:20.04构建c++ grpc环境

由c grpc必须源码编译&#xff0c;ubuntu版本不同可能出现的问题也不同&#xff0c;这里分享下我的构建过程。 我是vscode结合docker去安装c虚拟环境&#xff0c;我不想污染本机环境。 vscode的插件Dev Containers Dockerfile如下(如果单纯是ubuntu环境构建&#xff0c;可忽略该…

数据结构:二叉树—面试题(一)

目录 1、相同的树 2、另一棵树的子树 3、翻转二叉树 4、平衡二叉树 5、对称二叉树 6、二叉树遍历 7、二叉树的分层遍历 1、相同的树 习题链接https://leetcode.cn/problems/same-tree/description/https://leetcode.cn/problems/same-tree/description/ 描述&#xff1a…

MySQL训练营-慢查询诊断问题

慢查询相关参数和建议配置 slow_query_log long_query_time 日志开关&#xff0c;是否记慢查询日志以及超过多长时间判定为慢查询。 查看参数设置&#xff1a; SHOW VARIABLES LIKE ‘slow_query_log’;SHOW VARIABLES LIKE ‘long_query_time’; 实践建议&#xff1a; …

用edge浏览器追剧音量太小?安装音量增强器可解忧

0 源起 春节佳节将至&#xff0c;可以利用这个难得的假期追一追想看而没空看的剧了。 但是在用Edge浏览器播放网页中的视频时&#xff0c;有时音量太小&#xff0c;根本没法听清楚&#xff0c; 遇到这种情况时&#xff0c;尽管Edge浏览器本身没有提供音量控制功能&#xff0…

Linux-arm(1)ATF启动流程

Linux-arm(1)ATF启动流量 Author&#xff1a;Once Day Date&#xff1a;2025年1月22日 漫漫长路有人对你微笑过嘛… 全系列文章可查看专栏: Linux实践记录_Once_day的博客-CSDN博客 参考文档&#xff1a; ARM Trusted Firmware分析——启动、PSCI、OP-TEE接口 Arnold Lu 博…

解决docker: ‘buildx‘ is not a docker command.

简介 buildx 是 Docker 官方提供的一个构建工具&#xff0c;它可以帮助用户快速、高效地构建 Docker 镜像&#xff0c;并支持多种平台的构建。使用 buildx&#xff0c;用户可以在单个命令中构建多种架构的镜像&#xff0c;例如 x86 和 ARM 架构&#xff0c;而无需手动操作多个…

提示词工程(Prompt Engineering)

1. Prompt 是什么&#xff1f; Prompt&#xff1a;提示词&#xff0c;是描述 AI 需要执行的任务的自然语言文本。 如上图所示&#xff0c;Prompt就是用户的提问。其实我们大家都用过Prompt&#xff0c;比如我们使用的ChatGPT、文心一言、豆包等AI产品时的提问就是Prompt&…

【Linux】文件操作、系统IO相关操作、inode和输入输出重定向

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 1、理解文件1.1 狭义理解1.2 广义理解1.3 文件操作1.4 系统角度 2、系统文件IO2.1 文件相关操作2.2 文件描述符2.3 重定向 3、动静…