ROS 图像预处理

为了使机械臂从复杂的场景中准确地识别出目标物体,首先要对机械臂相机采集的图像信息进行系列的预处理操作,图像预处理的目的就是为了方便提取采集图像的特征点信息。

1、图像灰度化

图像灰度化处理是一种将彩色图像转换为灰度图像的过程,目的是减少图像的颜色维度,使其从多通道(如RGB三通道)变为单通道。

在灰度图像中,每个像素仅由一个灰度值表示其亮度或强度,该值通常介于0到255之间,其中0代表最暗(纯黑),而255代表最亮(纯白)。这样处理后得到的图像不包含颜色信息,但保留了图像的亮度对比特性。

以下是一些常见的图像灰度化的处理方法:

    平均法:

   简单平均灰度化:计算每个像素点RGB三个分量的平均值作为其灰度值,

即 GRAY = (R + G + B) / 3。

   加权平均法:

   考虑人眼对不同颜色敏感程度的不同,可以赋予RGB不同的权重进行灰度化,

   RGB图像的三层通道设置不同的权重,并结合各个像素点的通道像素值进行加权求和的操作,生成了仅包含一层像素值的图象即为灰度图像。

转换公式:GRAY = 0.29*R + 0.587*G + 0.114*B

图像灰度化的作用:

减少数据量,降低存储和传输成本。

对于某些图像分析任务,灰度图像更容易提取特征、进行边缘检测、阈值分割等操作。

可以突出图像中的亮度对比,有助于视觉效果的简化和增强。

2、图像滤波处理

图像滤波处理是一种在数字图像分析和处理中不可或缺的技术手段,其目的是通过数学运算改善图像质量抑制噪声增强特定特征或者进行图像平滑等操作。

图像滤波是基于像素邻域内信息的操作过程,通过对图像数据应用某种数学算法(如卷积),改变或优化每个像素的值。

根据滤波器性质的不同,可以分为线性滤波非线性滤波

线性滤波

    均值滤波:最简单的线性滤波方法,对每个像素点取其邻域内所有像素灰度值的平均数作为新的像素值,适用于去除高斯噪声,但容易模糊图像边缘。

    中值滤波:选取邻域内的像素灰度值排序后的中位数替代原像素值,有效抵抗椒盐噪声和斑点噪声,同时保持边缘较好。

    高斯滤波:依据高斯函数分配权重来计算邻域像素的加权平均,对于消除高斯噪声非常有效,能较好地兼顾降噪与保边效果。

非线性滤波

    双边滤波:结合空间域和色彩域相似性的滤波方法,既能减少噪声又能保持边缘清晰。

    形态学滤波:利用结构元素对图像进行腐蚀、膨胀、开闭等操作,主要用于去除孤立噪声点或连接断开的边缘。

图像滤波是图像预处理操作中的关键环节,直接影响到图像识别的准确性和有效性,图像滤波处理主要是抑制或降低图像噪声,并最大地保证图像的细节特征不被破环。

其中心思想:首先设定一个阙值,任意比较图像中的像素点与此点周边像素点的值,若两点像素值的差异高于此阙值,则该像素点被调节成与周边像素点大小近似的像素值以达到图像滤波的目的

3、图像边缘检测

图像边缘检测的目的:在数字图像中自动识别并定位出亮度或颜色强度发生急剧变化的地方。这些变化通常对应于图像中不同区域的边界或者物体与背景的交界处。

通过检测图像的边缘,可以提取出图像的重要结构特征,这对于进一步的图像分析、物体识别、图像分割、三维重建等任务至关重要。

机械臂成功抓取物体不仅需要对目标物体的识别,还需要物体精准的定位信息,而物体图像清晰准确的边缘信息是对其精准定位的前提物体轮廓的检测通常采用计算微分以及梯度的方式,对图像中灰度数值的阶跃信息进行分析。

Canny 算子

Canny 算子是一种多级边缘检测算法,广泛应用于图像处理和计算机视觉领域。它是设计用于在图像中找到最优的、连续且单像素宽度的边缘,

Canny 算法的主要步骤包括:噪声抑制计算梯度、非极大值抑制、双阈值检测和边缘连接

步骤详细如下:

    高斯滤波:

        首先,对输入图像进行高斯平滑处理,以减少噪声影响。这通过使用一个大小可调的高斯核与图像卷积来实现。

    计算梯度强度和方向:

        对平滑后的图像分别计算水平和垂直方向上的梯度。

        梯度幅值表示边缘强度,梯度方向表示边缘的方向。

    非极大值抑制:

        在梯度方向上对每个像素点进行判断,如果该点的梯度幅值不是在其梯度方向上的局部极大值,则抑制它,从而确保输出边缘为单像素宽。

    双阈值检测:

        使用两个阈值(高阈值和低阈值),强边缘连接在一起形成连续的边界,而弱边缘只有当它们连接到强边缘时才被保留。

        高阈值用来确定明确的边缘像素,低阈值则用来跟踪可能的边缘连接路径。

    边缘连接:

        最后一步是通过跟踪弱边缘并将其附加到强边缘上来完成边缘连接,从而形成完整的边缘轮廓。

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

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

相关文章

shell中正则表达式讲解

1. 概念 在进行程序设计的过程中,用户会不可避免地遇到处理某些文本的情况。有的 时候,用户还需要查找符合某些比较复杂规则的字符串。对于这些情况,如果 单纯依靠程序设计语言本身,则往往会使得用户通过复杂的代码来实现。但 是&…

在linux上不依赖于Nignx等服务器部署ASP.NET Core 7.0 WebAPI

笔者近期需要部署一款基于B/S架构的后端程序在linux的Debian发行版上,本文章以本次部署遇到的问题为线索,总结如何在Debian上部署ASP.NET Core7.0WebAPI应用程序。 在linux上不依赖于Nignx等服务器部署ASP.NET Core 7.0 WebAPI 1.先决条件2.应用发布3.部…

大语言模型LLM微调技术深度解析:Fine-tuning、Adapter-Tuning与Prompt Tuning的作用机制、流程及实践应用(LLM系列08)

文章目录 大语言模型LLM微调技术深度解析:Fine-tuning、Adapter-Tuning与Prompt Tuning的作用机制、流程及实践应用(LLM系列08)Fine-tuningAdapter-TuningPrompt Tuning策略对比与应用场景 大语言模型LLM微调技术深度解析:Fine-tu…

【vue】computed 、 watch、method 的区别

三个关键字【惰性】【缓存】【异步】 计算属性 computed 计算属性返回的值不属于 data,但是基于data声明的值会根据它们所依赖的数据的变化而自动重新计算惰性计算 初始化不会执行,只有在第一次访问时才会被计算render 函数执行时,会触发计算…

Gemma

Gemma 1.使用2.RAG3.LoRA3.1LoRA分类任务3.2LoRA中文建模任务 1.使用 首先是去HF下载模型,但一直下载不了,所以去了HF镜像网站,下载gemma需要HF的Token,按照步骤就可以下载。代码主要是Kaggle论坛里面的分享内容。 huggingface-…

3D可视化项目,选择unity3D还是three.js,是时候挑明了。

2023-08-10 23:07贝格前端工场 Hi,我是贝格前端工场,在开发3D可视化项目中,是选择U3D还是three,js时,很多老铁非常的迷茫,本文给老铁们讲清楚该如何选择,欢迎点赞评论分享转发。 一、Unity3D和three.js简…

RTCA DO-178C 机载系统和设备认证中的软件注意事项-附录 B

ANNEX B 附录 B 缩略语和术语表 ACRONYMS AND GLOSSARY OF TERMS 缩写 Acronym 释义 Meaning 译文 Translate ARP Aerospace Recommended Practice 航空航天推荐做法 ATM Air Traffic Management 空中交通管理 CAST Certification Authorities Software Team 认证机…

小程序里.vue界面中传值的两种方式

1.跳转携带参数后通过生命周期取值 1.1跳转 function juMp(){let arr JSON.stringify(specs.specs_data)wx.navigateTo({url:/pages/specs/specs?sku arr})}1.2取值 import {onLoad} from dcloudio/uni-apponLoad((event)>{let Arr JSON.parse(event.sku)})2.通过监听器…

String类-equals和==的区别-遍历-SubString()-StringBuilder-StringJoiner-打乱字符串

概述 String 类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都被实现为此类的实例。也就是说,Java 程序中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包下,所以使用的时候…

jquery实现select2插件鼠标点击任意地方时默认选中该输入框内的值

jquery实现select2插件鼠标点击任意地方时默认选中该输入框内的值 最近发现一个问题,插件select2中的select2可输入可选择的下拉框,在你输入值后鼠标点击别的地方,输入框内的值会被清空,特此记录一下这里的优化,这里修…

[Mac软件]Adobe Substance 3D Stager 2.1.4 3D场景搭建工具

应用介绍 Adobe Substance 3D Stager,您设备齐全的虚拟工作室。在这个直观的舞台工具中构建和组装 3D 场景。设置资产、材质、灯光和相机。导出和共享媒体,从图像到 Web 和 AR 体验。 处理您的最终图像 Substance 3D Stager 可让您在上下文中做出创造性…

网络原理——HTTPS

HTTPS是 在HTTP的基础上,引入了一个加密层(SSL)。 1. 为什么需要HTTPS 在我们使用浏览器下载一些软件时,相信大家都遇到过这种情况:明明这个链接显示的是下载A软件,点击下载时就变成了B软件,这种情况是运…

计算机设计大赛 深度学习手势检测与识别算法 - opencv python

文章目录 0 前言1 实现效果2 技术原理2.1 手部检测2.1.1 基于肤色空间的手势检测方法2.1.2 基于运动的手势检测方法2.1.3 基于边缘的手势检测方法2.1.4 基于模板的手势检测方法2.1.5 基于机器学习的手势检测方法 3 手部识别3.1 SSD网络3.2 数据集3.3 最终改进的网络结构 4 最后…

深入理解Python中的JSON模块:基础大总结与实战代码解析【第102篇—JSON模块】

深入理解Python中的JSON模块:基础大总结与实战代码解析 在Python中,JSON(JavaScript Object Notation)模块是处理JSON数据的重要工具之一。JSON是一种轻量级的数据交换格式,广泛应用于Web开发、API通信等领域。本文将…

WinForms中的Timer探究:Form Timer与Thread Timer的差异

WinForms中的Timer探究:Form Timer与Thread Timer的差异 在Windows Forms(WinForms)应用程序开发中,定时器(Timer)是一个常用的组件,它允许我们执行定时任务,如界面更新、周期性数据…

Matlab 矩阵基础

Matlab 基础 MATLAB 是“矩阵实验室matrix laboratory”的缩写。其他编程语言大多一次处理一个数字,MATLAB 主要用于处理整个矩阵和数组。 所有 MATLAB 变量都是多维数组,无论数据类型如何。矩阵是常用于线性代数的二维数组。 若要创建一个包含单行中…

osi模型,tcp/ip模型(名字由来+各层介绍+中间设备介绍)

目录 网络协议如何分层 引入 osi模型 tcp/ip模型 引入 命名由来 介绍 物理层 数据链路层 网络层 传输层 应用层 中间设备 网络协议如何分层 引入 我们已经知道了网络协议是层状结构,接下来就来了解了解下网络协议如何分层 常见的网络协议分层模型是OSI模型 和 …

Flink CDC 3.0 Starrocks建表失败会导致任务卡主!

Flink CDC 3.0 Starrocks建表失败会导致任务卡主! 现象 StarRocks建表失败,然后任务自动重启,重启完毕后数据回放,jobMaster打印下面日志后,整个任务会卡主 There are already processing requests. Wait for proce…

windows 连接 Ubuntu 失败 -- samba服务

1. windows10连接ubuntu的时候,提示不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接,中断与此服务器或共享资源的所有连接,然后再试一次 2. 换一台同事的电脑却又可以连上,我之前一直能用的,隔一段时间…

PostgreSQL创建数据库、数据库管理员用户、该库的只读用户

1.创建用户: create user pgdbAdmin with password "Pgdb_15432";2.创建数据库: create database pgdb owner pgdbAdmin;3.创建SCHEMA; create schema pgdbAdmin;4.赋予数据库管理员用户权限: grant all privileges…