上位机图像处理和嵌入式模块部署(上位机主要功能)

news2025/1/11 3:58:31

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        目前关于机器视觉方面,相关的软件很多。比如说商业化的halcon、vision pro、vision master,当然也可以用opencv、pytorch自己写软件,这都是可以的。不过因为机器视觉项目部署的时间都比较短,而且对产品的稳定性和性能要求较高,所以如果自己写的话,简简单单使用第三方提供的api,一般是没有办法满足要求的。通常情况下,都需要自己对代码进行优化处理一下,这样才能够达到客户的要求。

        那说了这么多,机器视觉软件一般有哪些功能呢?

1、图像预处理

        图像预处理其实比较好理解,就是拿到图像之后做一些简单的处理。这部分处理之后的结果还是图像,但是输出的结果已经为最终我们的算法处理,做了一个很好的铺垫。比如说滤波、反转、旋转、边缘检测、二值化、膨胀、腐蚀等等,这些都是图像预处理的部分。我们读书的时候,以及市面上看到的大部分图像处理的书,上面讲解的内容其实也主要是这么一部分。

2、摄像头标定

        很多摄像头,如果没有标定的话,获取的图像其实是带有畸变信息的。比如现在很多汽车上面都带有360功能,上面的图像就是根据4个camera图像计算出来的。camera本身为了获得更大的视场角,镜头都是鱼眼镜头,但是这种图像都是发生严重畸变的。所以,一般拿到摄像头之后,我们有必要通过棋盘格对它们进行畸变矫正的处理,这样才能送给后续的算法做进一步处理。

3、光源处理

        好的图像,除了sensor和镜头之外,另外一个很重要的因素就是光源。在市场上可以买到的光源设备,一般就是光源本身和光源控制器。但是如何通过图像质量本身,借助于反馈控制的方法去实时地控制光源,这是很大的一门学问。有了好的图像,算法的编写上面都会轻松不少。

4、条形码、二维码识别

        目前很多物料、设别、仓库的管理都是通过各种图形码来识别的。这里面又是以条形码和二维码最为普遍,所以上位机软件支持条形码和二维码也就不足为奇了。

5、定位功能

        有了前面的图像预处理,一般来说我们就可以通过轮廓查找的方法找到一些潜在的候选项。然后再借助于长宽比、面积、圆度、周长、先验知识等信息,很容易提取出我们想要检查的区域模块。这个时候,如果图像上还有明显的标记点,这个时候就比较容易计算出相关物体的位置信息,也为下一步机械手的参与打下基础。

        当然,上面的方法对于现场的fae来说稍显复杂,模板匹配对于他们来说,或许更加容易接受一点。

6、测量

        测量是图像处理的另外一个重要功能。这里的测量,不仅仅是测量特定物体的大小,还有可能是找到一个物体之后,测量它和某个点的距离、和某条直线的距离、和某个圆的距离等等。当然具体需要哪个功能,还要根据具体情况而定。

        当然要做好测量,一般还要搭配着寻找直线、寻找正方形、寻找圆的功能。

7、质量检测

        质量检测也是机器视觉很重要的一个应用场景。现实的工厂中,大部分的质检都是由人工完成的,但是这种检测效率不高,而且检测的效果完全取决于工人每个人的能力。但是对于机器视觉来说,则不存在这样的问题。

8、分类和识别

        分类和识别是由于计算机深度学习的发展,而引入的新功能。传统的机器视觉,大部分都是基于图像本身进行处理。对于更复杂的场景,特别是需要同时进行定位和分类的场景,深度学习具有天然的优势,这个时候yolov5这一类的算法就显得非常实用了。

9、第三方设备的支持

        图像处理的结果,最重要是要和其他设备进行通信处理的。这里面的设备通信方式有232、485、can、tcp等等,类型则有io设备、plc、机械手、电脑等等。所以对于上位机来说,拿到图像算法的计算结果之后,一般都是要通过结果送出去继续处理的,特别是给机械设备来处理。

10、脚本的应用

        上位机软件的使用者大部分都是fae,或者称之为现场部署工程师。他们不仅仅要处理图像,更多的情况下是软件的部署和应用。所以像halcon这一类的软件,还提供了大量的范例、以及脚本编辑的功能。他们对算法的理解或许不是那么充分,但是他们对于不同算法应该应用到什么场景,这方面积累了大量的经验,具有较明显的优势。

11、最新的发展趋势

        传统的图像处理还是以camera为主。不过随着最新的传感器采集设备引入,比如说3d camera、lidar、多线lidar设备,新的算法也可以同时参与进来,这样应用的场景更加丰富,也可以更多的参与到工业生产当中去。

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

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

相关文章

第18讲 投票帖子管理实现

后端&#xff1a; /*** 删除指定id的投票信息* param id* return*/ GetMapping("/delete/{id}") Transactional public R delete(PathVariable(value "id")Integer id){voteDetailService.remove(new QueryWrapper<VoteDetail>().eq("vote_id…

clang前端

Clang可以处理C、C和Objective-C源代码 Clang简介 Clang可能指三种不同的实体&#xff1a; 前端&#xff08;在Clang库中实现&#xff09;编译驱动程序&#xff08;在clang命令和Clang驱动程序库中实现&#xff09;实际的编译器&#xff08;在clang-ccl命令中实现&#xff0…

Codeforces Round 925 (Div. 3) E. Anna and the Valentine‘s Day Gift (Java)

Codeforces Round 925 (Div. 3) E. Anna and the Valentine’s Day Gift (Java) 比赛链接&#xff1a;Codeforces Round 925 (Div. 3) E题传送门&#xff1a;E. Anna and the Valentine’s Day Gift 题目&#xff1a;E. Anna and the Valentine’s Day Gift 样例 #1 样例输…

DS:二叉树的顺序结构及堆的实现

创作不易&#xff0c;兄弟们给个三连&#xff01;&#xff01; 一、二叉树的顺序存储 顺序结构指的是利用数组来存储&#xff0c;一般只适用于表示完全二叉树&#xff0c;原因如上图&#xff0c;存储不完全二叉树会造成空间上的浪费&#xff0c;有的人又会问&#xff0c;为什么…

JVM(1)基础篇

1 初始JVM 1.1 什么是JVM JVM 全称是 Java Virtual Machine&#xff0c;中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件。 Java源代码执行流程如下&#xff1a; 分为三个步骤&#xff1a; 编写Java源代码文件。 使用…

SpringBoot+Vue3 完成小红书项目

简介 该项目采用微服务架构&#xff0c;实现了前后端分离的系统设计。在前端&#xff0c;我们选择了 Vue3 配合 TypeScript 和 ElementUi 框架&#xff0c;以提升开发效率和用户体验。而在后端&#xff0c;则是运用 SpringBoot 和 Mybatis-plus 进行开发&#xff0c;保证了系统…

CFS三层靶机

参考博客&#xff1a; CFS三层内网靶场渗透记录【详细指南】 - FreeBuf网络安全行业门户 CFS三层靶机搭建及其内网渗透【附靶场环境】 | TeamsSix CFS三层网络环境靶场实战 - PANDA墨森 - 博客园 (cnblogs.com) CFS三层靶机实战--内网横向渗透 - 知乎 (zhihu.com) CFS靶机…

C++类和对象-C++对象模型和this指针->成员变量和成员函数分开存储、this指针概念、空指针访问成员函数、const修饰成员函数

#include<iostream> using namespace std; //成员变量 和 成员函数 分开储存的 class Person { public: Person() { mA 0; } //非静态成员变量占对象空间 int mA; //静态成员变量不占对象空间 static int mB; //函数也不占对象空间…

安卓价值1-如何在电脑上运行ADB

ADB&#xff08;Android Debug Bridge&#xff09;是Android平台的调试工具&#xff0c;它是一个命令行工具&#xff0c;用于与连接到计算机的Android设备进行通信和控制。ADB提供了一系列命令&#xff0c;允许开发人员执行各种操作&#xff0c;包括但不限于&#xff1a; 1. 安…

儿时游戏“红色警戒”之“AI警戒”

一、红色警戒里“警戒”命令背后的算法原理是什么 在《红色警戒》系列即时战略游戏中&#xff0c;“警戒”命令背后的算法原理相对简单但又实用&#xff0c;其核心目标是让单位能够自动检测并反击一定范围内的敌方单位。虽然具体的实现细节未公开&#xff0c;但可以推测其基本…

ICLR 2023#Learning to Compose Soft Prompts for Compositional Zero-Shot Learning

组合零样本学习&#xff08;CZSL&#xff09;中Soft Prompt相关工作汇总&#xff08;一&#xff09; 文章目录 组合零样本学习&#xff08;CZSL&#xff09;中Soft Prompt相关工作汇总&#xff08;一&#xff09;ICLR 2023#Learning to Compose Soft Prompts for Compositional…

变形金刚:第 2 部分:变形金刚的架构

目录 一、说明 二、实现Transformer的过程 第 1 步&#xff1a;代币化&#xff08;Tokenization&#xff09; 第 2 步&#xff1a;对每个单词进行标记嵌入 第 3 步&#xff1a;对每个单词进行位置嵌入 第 4 步&#xff1a;输入嵌入 第 5 步&#xff1a;编码器层 2.5.1 多头自注…

Linux makefile 大型多文件的处理

最简单的例子是 main.cpp test.cpp test.h 首先将这三个写好 然后的话 test.cpp 上面输出 helloworld 首先我们在同一个目录下创建一个makefile 文件 然后用vim 编辑它 如下图&#xff08;使用的c&#xff09; mybin 是我们的可执行程序 gcc是编译的命令 gcc 前面必…

[HCIE]vxlan --静态隧道

实验目的:1.pc2与pc3互通&#xff08;二层互通&#xff09;&#xff1b;2.pc1与pc3互通&#xff08;三层互通&#xff09; 实验说明&#xff1a;sw1划分vlan10 vlan20 ;sw2划分vlan30&#xff1b;上行接口均配置为Trunk 实验步骤&#xff1a; 1.配置CE1/CE2/CE3环回口互通&a…

深度学习之反向传播算法

反向传播算法 数学公式算法代码结果 算法中一些函数的区别 数学公式 算法代码 这里用反向传播算法&#xff0c;计算 y w * x模型 import numpy as np import matplotlib.pyplot as ply#反向传播算法&#xff0c;需要使用pytorch框架&#xff0c; #这里导入pytorch框架&#xf…

力扣_面试题:配对交换

配对交换 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题目意思就是交换相邻两个二进制位 &#xff0c;用&分别取出even&#xff08;偶位和&#xff09;odd&#xff08;奇位和&#xff09; 偶位和用0xAAAAAAAA&#xff0c;奇…

[数学建模] 计算差分方程的收敛点

[数学建模] 计算差分方程的收敛点 差分方程&#xff1a;差分方程描述的是在离散时间下系统状态之间的关系。与微分方程不同&#xff0c;差分方程处理的是在不同时间点上系统状态的变化。通常用来模拟动态系统&#xff0c;如在离散时间点上更新状态并预测未来状态。 收敛点&…

4核16g云服务器多少钱?

4核16G服务器租用优惠价格26元1个月&#xff0c;腾讯云轻量4核16G12M服务器32元1个月、96元3个月、156元6个月、312元一年&#xff0c;阿腾云atengyun.com分享4核16服务器租用费用价格表&#xff0c;阿里云和腾讯云详细配置报价和性能参数表&#xff1a; 腾讯云4核16G服务器价…

2024年2月份实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】

首先&#xff0c;来看下效果图 在线体验地址&#xff1a;https://geojson.hxkj.vip&#xff0c;并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…

C#使用迭代器显示公交车站点

目录 一、涉及到的知识点 1.迭代器 2.IList接口及实现IList接口的Add方法 二、实例 1.源码 2.生成效果 一、涉及到的知识点 1.迭代器 迭代器是.NET 4.5开始的一个新特性&#xff0c;它是可以返回相同类型的值的有序序列的一段代码。迭代器可用作方法、运算符或get访问器…