当前位置: 首页 > news >正文

机器视觉--索贝尔滤波

引言

在图像处理领域,边缘检测是一项至关重要的任务,它能够帮助我们识别图像中不同区域的边界,为后续的目标识别、图像分割等操作奠定基础。索贝尔滤波(Sobel Filter)作为一种经典的边缘检测算法,因其简单高效的特点被广泛应用。在功能强大的机器视觉软件 Halcon 中,也提供了对索贝尔滤波的支持。本文将详细介绍 Halcon 中索贝尔滤波的原理、应用场景,并通过具体的程序示例展示其在实际中的使用方法。

索贝尔滤波原理

基本概念

索贝尔滤波是一种基于卷积运算的边缘检测方法,它通过计算图像在水平和垂直方向上的一阶导数来检测边缘。在图像中,边缘通常对应着像素值的急剧变化,而导数可以很好地描述这种变化。索贝尔滤波器使用两个3x3的卷积核,分别用于计算水平向(Gx)和垂直方向(Gy)的梯度。

卷积核

梯度计算

对于图像中的每个像素点,将其周围3X3邻域内的像素值别与Sx和Sy进行卷积运算,得到该像素点在水平和垂直方向上的梯度分量Gx和Gy。然后,可以通过以下公式计算该像素点的梯度幅值G和梯度方向θ:

在实际应用中,为了简化计算,也可以使用近似公式G≈|Gx|+|Gy|算梯度幅值。

索贝尔滤波的应用场景

目标检测

在目标检测任务中,边缘信息可以帮助我们快速定位目标的轮廓,从而提高检测的准确性和效率。索贝尔滤波可以有效地提取图像中的边缘,为后续的目标识别算法提供重要的特征信息。

图像分割

图像分割是将图像划分为不同区域的过程,边缘信息在分割过程中起着关键作用。通过索贝尔滤波检测到的边缘可以作为分割的边界,帮助我们将图像分割成不同的对象或区域。

纹理分析

纹理是图像的重要特征之一,索贝尔滤波可以突出图像中的纹理细节,从而有助于纹理分析和分类。例如,在织物纹理检测、地质纹理分析等领域,索贝尔滤波都有广泛的应用。

Halcon 中索贝尔滤波的实现

主要函数

在 Halcon 中,使用sobel_amp函数可以实现索贝尔滤波,该函数的原型如下:

sobel_amp(Image : EdgeAmplitude : FilterType, Size : )

参数说明:

  • Image:输入的原始图像。
  • EdgeAmplitude:输出的边缘幅值图像,即经过索贝尔滤波后得到的图像。
  • FilterType:滤波器类型,常见的值有'sum_abs'(使用近似公式G≈|Gx|+|Gy|计算梯度幅值)和'sqrt'(使用精确公式计算梯度幅值)。
  • Size:滤波器的尺寸,通常设置为3,表示使用3x3的索贝尔卷积核。

程序示例

下面是一个完整的 Halcon 程序示例,展示了如何使用sobel_amp函数进行索贝尔滤波:

* 读取图像
read_image(Image, 'fabrik')* 进行索贝尔滤波
sobel_amp(Image, EdgeAmplitude, 'sum_abs', 3)* 显示原始图像和边缘幅值图像
dev_open_window(0, 0, 512, 512, 'black', WindowHandle1)
dev_display(Image)
dev_set_window_attr('title', 'Original Image')dev_open_window(522, 0, 512, 512, 'black', WindowHandle2)
dev_display(EdgeAmplitude)
dev_set_window_attr('title', 'Edge Amplitude Image after Sobel Filtering')
代码解释
  1. 读取图像:使用read_image函数读取一张名为fabrik的图像。
  2. 进行索贝尔滤波:调用sobel_amp函数对读取的图像进行索贝尔滤波,设置滤波器类型为'sum_abs',滤波器尺寸为3,并将滤波结果存储在EdgeAmplitude中。
  3. 显示图像:使用dev_open_window函数打开两个窗口,分别显示原始图像和经过索贝尔滤波后的边缘幅值图像,并使用dev_set_window_attr函数设置窗口标题。

结果分析与优化

结果分析

运行上述程序后,我们可以看到原始图像和经过索贝尔滤波后的边缘幅值图像。在边缘幅值图像中,边缘区域的像素值较高,呈现出较亮的颜色,而非边缘区域的像素值较低,呈现出较暗的颜色。通过观察边缘幅值图像,我们可以清晰地看到图像中的边缘信息。

优化建议 

  • 阈值处理:在实际应用中,为了突出明显的边缘,可以对边缘幅值图像进行阈值处理,将低于某个阈值的像素值设置为0,高于阈值的像素值保持不变。
  • 噪声抑制:   由于索贝尔滤波对噪声较为敏感,在进行滤波之前,通常需要对图像进行降噪处理。常见的降噪方法包括高斯滤波、中值滤波等。通过在索贝尔滤波之前应用降噪滤波器,可以有效地减少噪声对边缘检测结果的影响,提高边缘检测的准确性。

  • 多尺度分析:可以使用不同尺寸的索贝尔滤波器对图像进行处理,然后将不同尺度下的边缘信息进行融合,以获得更丰富的边缘特征。

总结

索贝尔滤波作为一种经典的边缘检测算法,在图像处理领域有着广泛的应用。Halcon 中提供的sobel_amp函数使得索贝尔滤波的实现变得简单高效。通过本文的介绍,我们了解了索贝尔滤波的原理、应用场景,并通过具体的程序示例展示了如何在 Halcon 中使用索贝尔滤波。在实际应用中,我们可以根据具体需求对滤波结果进行优化,以获得更好的边缘检测效果。希望本文能够帮助读者更好地理解和应用 Halcon 中的索贝尔滤波技术。

相关文章:

机器视觉--索贝尔滤波

引言 在图像处理领域,边缘检测是一项至关重要的任务,它能够帮助我们识别图像中不同区域的边界,为后续的目标识别、图像分割等操作奠定基础。索贝尔滤波(Sobel Filter)作为一种经典的边缘检测算法,因其简单…...

网络分析仪E5071C的回波损耗测量

回波损耗(Return Loss)是评估射频/微波元件(如滤波器、天线、电缆等)信号反射特性的关键参数,反映端口阻抗匹配性能。E5071C矢量网络分析仪(VNA)通过以下步骤实现高精度回波损耗测量&#xff1a…...

力扣-二叉树-98 验证二叉搜索树

思路 第一个特性,二叉搜索树的中序遍历是有序的,第二个特性,利用两个指针判断大小关系 代码 class Solution { public:TreeNode* pre NULL;bool isValidBST(TreeNode* root) {if(root NULL) return true;bool left isValidBST(root->…...

【动态规划】详解 0-1背包问题

文章目录 1. 问题引入2. 从 dfs 到动态规划3. 动态规划过程分析4. 二维 dp 的遍历顺序5. 从二维数组到一维数组6. 一维数组的遍历次序7. 背包的遍历顺序8. 代码总结9. 总结 1. 问题引入 0-1 背包是比较经典的动态规划问题,这里以代码随想录里面的例子来介绍下。总的…...

【Java线程池与线程状态】线程池分类与最佳实践

解析Java线程池与线程状态变化,结合运行机制与业务场景对照,帮助形成系统性知识。 一、线程池核心要素(五维模型) 采用「参数配置→处理流程→工作模式」三层递进结构 核心参数(线程池DNA) corePoolSiz…...

【小白学AI系列】NLP 核心知识点(八)多头自注意力机制

文章目录 **多头自注意力机制(Multi-Head Self-Attention)****核心概念** **1. 自注意力机制(Self-Attention)****2. 多头机制(Multi-Head Attention)****3. 为什么要用多头注意力机制?****4. 公…...

学习笔记——word中图目录、表目录 标题引用

目标1: 建立——图1-1 引用——图1-1 1在word文档中的引用——>插入题注 新建标签,然后命名为“图1-“。 点击确认,即可插入如图所示 图1- 1 春天 需要把图1-和后面那个1中间的空格删除,即 图1-1 春天 2怎么去引用这个“…...

3.3 Hugging Face Transformers核心功能模块深度解析

Hugging Face Transformers核心功能模块深度解析 一、模块化架构总览 #mermaid-svg-wxTV5vrEo7Y57IlW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-wxTV5vrEo7Y57IlW .error-icon{fill:#552222;}#mermaid-svg-wxT…...

linux中设置脚本定时执行ntp命令同步时间

目录 一、背景二、过程1.到系统目录2.安装ntp3.创建文件夹4.创建脚本文件5.提升脚本文件权限6.设置执行时间:7.检查是否设置了执行器(执行后输出的内容为执行器中的定时执行内容)8.执行脚本文件9.查看日志文件,是否执行成功 三、总…...

map的使用(c++)

在了解map之前,我们先看看两个场景,通过这两个场景的对比,让我们知道为什么要存在存储双关键字的容器 场景一:判断一堆字符串中,某一个字符串是否出现过 在没学set容器之前,我们只能想到把这一堆字符串存到…...

毕业设计—基于Spring Boot的社区居民健康管理平台的设计与实现

🎓 毕业设计大揭秘!想要源码和文章?快来私信我吧! Hey小伙伴们~ 👋 毕业季又来啦!是不是都在为毕业设计忙得团团转呢?🤔 别担心,我这里有个小小的福利要分享给你们哦&…...

Python:蟒蛇绘制(一笔画)

一、题目要求 使用turtle库,绘制一个蟒蛇形状的图形。‬ 二、代码展示 # 请在下方开始编写你的代码 import turtle turtle.setup(650,350,200,200) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pensize(25) turtle.pencolor("purple") turt…...

mysql查询判断函数,类似decode

mysql中没有decode函数,如果使用的话,会报如下错误:Error Code: 1305. FUNCTION stockdb.decode does not exist 如果要实现像 Oracle 数据库那样原生的 DECODE 函数,可以通过以下几种方式来实现类似 DECODE 函数的功能。 -- 创建…...

异常处理、事务管理

异常处理 程序开发过程中不可避免的会遇到异常现象 如何处理 方案一:在Controller的方法中进行try...catch处理(代码臃肿,不推荐) 方案二:全局异常处理器 全局异常处理器 RestControllerAdvice :定义全…...

UART(一)——UART基础

一、定义 UART(Universal Asynchronous Receiver/Transmitter)是一种广泛使用的串行通信协议,用于在设备间通过异步方式传输数据。它无需共享时钟信号,而是依赖双方预先约定的参数(如波特率)完成通信。 功能和特点 基本的 UART 系统只需三个信号即可提供稳健的中速全双工…...

MySQL 中各种日志简介

MySQL 日志 慢查询日志(Slow query log) 慢查询⽇志由执⾏时间超过系统变量 long_query_time 指定的秒数的SQL语句组成,并且检 查的⾏数⼤于系统变量 min_examined_row_limit 指定值。被记录的慢查询需要进⾏优化, 可以使⽤mysqldumpslow客⼾端程序对慢…...

【每日论文】Text-guided Sparse Voxel Pruning for Efficient 3D Visual Grounding

下载PDF或者阅读论文,请点击查看:LlamaFactory - huggingface daily paper - 每日论文解读 | LlamaFactory | LlamaFactory 摘要 中文 在这篇论文中,我们提出了一种高效的多级卷积架构,用于3D视觉定位。传统的由于采用两阶段或基…...

Kylin server v10部署docker

这里不用写什么标题 1. docker环境1.1 docker-ce1.1.1 yum安装1.1.2 离线安装 1.2 docker-compose 2. 镜像载入3. 服务启停4. 其他 1. docker环境 1.1 docker-ce docker-ce是社区版docker服务,可以通过yum方式直接安装或者离线安装,在国产化环境中&…...

计算机之就业主流岗(Mainstream Computer Employment Positions)

计算机之就业主流岗 计算机行业一直以来都是就业市场中的热门领域,技术岗位种类繁多,但每个岗位都有自己的核心技能和职责方向。以下是计算机行业中主流的技术岗位及其特点介绍,帮助你更清晰地了解这些职业的内容和发展前景。 1. 后端开发 …...

DeepSeek 助力 Vue 开发:打造丝滑的日期选择器(Date Picker),未使用第三方插件

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法&#xff1a;数据与控制信息的结构或格式&#xff0c;如同语言中的语法规则语义&#xff1a;控制信息的具体含义和响应方式&#xff0c;规定通信双方"说什么"同步&#xff1a;事件执行的顺序与时序…...

未授权访问事件频发,我们应当如何应对?

在当下&#xff0c;数据已成为企业和组织的核心资产&#xff0c;是推动业务发展、决策制定以及创新的关键驱动力。然而&#xff0c;未授权访问这一隐匿的安全威胁&#xff0c;正如同高悬的达摩克利斯之剑&#xff0c;时刻威胁着数据的安全&#xff0c;一旦触发&#xff0c;便可…...

Easy Excel

Easy Excel 一、依赖引入二、基本使用1. 定义实体类&#xff08;导入/导出共用&#xff09;2. 写 Excel3. 读 Excel 三、常用注解说明&#xff08;完整列表&#xff09;四、进阶&#xff1a;自定义转换器&#xff08;Converter&#xff09; 其它自定义转换器没生效 Easy Excel在…...