机器视觉--索贝尔滤波
引言
在图像处理领域,边缘检测是一项至关重要的任务,它能够帮助我们识别图像中不同区域的边界,为后续的目标识别、图像分割等操作奠定基础。索贝尔滤波(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')
代码解释
- 读取图像:使用
read_image
函数读取一张名为fabrik
的图像。 - 进行索贝尔滤波:调用
sobel_amp
函数对读取的图像进行索贝尔滤波,设置滤波器类型为'sum_abs'
,滤波器尺寸为3,并将滤波结果存储在EdgeAmplitude
中。 - 显示图像:使用
dev_open_window
函数打开两个窗口,分别显示原始图像和经过索贝尔滤波后的边缘幅值图像,并使用dev_set_window_attr
函数设置窗口标题。
结果分析与优化
结果分析
运行上述程序后,我们可以看到原始图像和经过索贝尔滤波后的边缘幅值图像。在边缘幅值图像中,边缘区域的像素值较高,呈现出较亮的颜色,而非边缘区域的像素值较低,呈现出较暗的颜色。通过观察边缘幅值图像,我们可以清晰地看到图像中的边缘信息。
优化建议
- 阈值处理:在实际应用中,为了突出明显的边缘,可以对边缘幅值图像进行阈值处理,将低于某个阈值的像素值设置为0,高于阈值的像素值保持不变。
-
噪声抑制: 由于索贝尔滤波对噪声较为敏感,在进行滤波之前,通常需要对图像进行降噪处理。常见的降噪方法包括高斯滤波、中值滤波等。通过在索贝尔滤波之前应用降噪滤波器,可以有效地减少噪声对边缘检测结果的影响,提高边缘检测的准确性。
- 多尺度分析:可以使用不同尺寸的索贝尔滤波器对图像进行处理,然后将不同尺度下的边缘信息进行融合,以获得更丰富的边缘特征。
总结
索贝尔滤波作为一种经典的边缘检测算法,在图像处理领域有着广泛的应用。Halcon 中提供的sobel_amp
函数使得索贝尔滤波的实现变得简单高效。通过本文的介绍,我们了解了索贝尔滤波的原理、应用场景,并通过具体的程序示例展示了如何在 Halcon 中使用索贝尔滤波。在实际应用中,我们可以根据具体需求对滤波结果进行优化,以获得更好的边缘检测效果。希望本文能够帮助读者更好地理解和应用 Halcon 中的索贝尔滤波技术。
相关文章:

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

网络分析仪E5071C的回波损耗测量
回波损耗(Return Loss)是评估射频/微波元件(如滤波器、天线、电缆等)信号反射特性的关键参数,反映端口阻抗匹配性能。E5071C矢量网络分析仪(VNA)通过以下步骤实现高精度回波损耗测量:…...
力扣-二叉树-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…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...