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

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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设备,新的算法也可以同时参与进来,这样应用的场景更加丰富,也可以更多的参与到工业生产当中去。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机服务器中了360后缀勒索病毒怎么办?360后缀勒索病毒处理流程

网络技术的不断应用与发展,为企业的生产运营提供了有利保障,越来越多的企业走向数字化办公模式,并且企业的发展离不开数据支撑,重视数据安全成为了众多企业关心的主要话题。春节前后,云天数据恢复中心接到很多企业的求…

用163邮箱或者outlook接收国科大邮箱的邮件

使用如图下路径,创建一个新的密码,用于在163大师邮箱或者outlook登录即可 如果不行,则需要手动配置邮箱服务器 参考网址:中国科学院邮件系统帮助中心

cool Node后端 中实现中间件的书写

1.需求 在node后端中,想实现一个专门鉴权的文件配置,可以这样来解释 就是 有些接口需要token调用接口,有些接口不需要使用token 调用 这期来详细说明一下 什么是中间件中间件顾名思义是指在请求和响应中间,进行请求数据的拦截处理&#xf…

【sql】sqlite3数据库

一、介绍 SQLite是一个轻量级的、开源的嵌入式数据库,由D. Richard Hipp使用C语言编写。由于其资源占用少、性能良好和零管理成本的特点,SQLite在嵌入式系统中得到了广泛应用,如Android和iPhone等操作系统中都有内置的SQLite数据库供开发人员…

尚硅谷最新Node.js 学习笔记(二)

目录 五、HTTP协议 5.1、概念 5.2、请求报文的组成 5.3、HTTP 的请求行 5.4、HTTP 的请求头 5.5、HTTP 的请求体 5.6、响应报文的组成 5.7、创建HTTP服务 操作步骤 测试 注意事项 5.8、浏览器查看 HTTP 报文 查看请求行和请求头 查看请求体 查看URL查询字符串 …

如何在Django中使用分布式定时任务并结合消息队列

如何在Django中使用分布式定时任务并结合消息队列 如何在Django中使用分布式定时任务并结合消息队列项目背景与意义实现步骤1. 安装Celery和Django-celery-beat2. 配置Celery3. 配置Django-celery-beat4. 定义定时任务5. 启动Celery worker 和 beat6. Celery 指令7. 对接消息队…

ClickHouse--08--SQL DDL 操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 SQL DDL 操作1 创建库2 查看数据库3 删除库4 创建表5 查看表6 查看表的定义7 查看表的字段8 删除表9 修改表9.1 添加列9.2 删除列9.3 清空列9.4 给列修改注释9.5 修…

基于LightGBM的回归任务案例

在本文中,我们将学习先进的机器学习模型之一:Lightgbm。在对XGB模型进行了越来越多的改进以获得更好的性能之后,XGBoost是一种极限梯度提升机器,但通过lightgbm,我们可以在没有太多计算的情况下实现类似或更好的结果&a…

对(一维)数组与指针的深入理解(1)

目录 1.数组名的理解2.使用指针访问&#xff08;一维&#xff09;数组3.&#xff08;一维&#xff09;数组传参的本质 1.数组名的理解 以前我们在使用指针访问数组内容时&#xff0c;有这样的代码&#xff1a; #include <stdio.h>int main() {int arr[10] { 1,2,3,4,5…

CTF-web 之 burp suite 使用

burp suite 使用 一般其是作为一个辅助工具&#xff0c;直接使用来解题的部分是少数&#xff0c;我们可以使用它来观察请 求和响应&#xff0c;并且可以反复的提交&#xff0c;关键的是他还带有很多其他的功能&#xff0c;在我们做题的过程中&#xff0c; 使用的关键点包括&…

C++LNK1207中的 PDB 格式不兼容;请删除并重新生成

在打开别人发的C文件时&#xff0c;可能出现该报错 解决办法 打开资源管理器&#xff0c;找到原来的路径 进入Debug&#xff0c; 找到对应的PDB文件删除即可。

OpenAI ChatGPT 记忆功能怎么实现?

你的聊天助手现在能“记住”你的对话了&#xff01; 2月14日凌晨&#xff0c;OpenAI宣布正在测试ChatGPT的新功能——记住用户提问内容&#xff0c;并自由控制内存。这意味着&#xff0c;ChatGPT能帮你记住那些重要的聊天内容&#xff0c;让你的对话更流畅、更自然。 想象一下…

政安晨:【示例演绎】【用TensorFlow编写线性分类器】—— 同时了解一点TensorFlow与Keras的基本概念

环境准备 如果小伙伴们第一次接触TensorFlow与Keras&#xff0c;可以先看一下我的这篇文章做些环境准备&#xff08;可以先忽略这篇文章里面代码实现部分&#xff0c;仅查看这里的环境准备部分即可&#xff09;。 文章如下&#xff1a; 政安晨&#xff1a;【详细解析】【用T…

Ps:焦点堆栈

焦点堆栈 Focus Stacking是一种摄影和图像处理技术&#xff0c;通过合并多张在不同焦距拍摄的照片来创建一张具有更大景深的图像&#xff0c;特别适用于微距摄影、风景摄影和任何需要在整个场景中保持尖锐对焦的情况。 ◆ ◆ ◆ 拍摄注意事项 1、使用三脚架 为了确保图像之间…

Spring 事务原理总结四

作为一名认知有限的中国人&#xff0c;我对年的喜爱&#xff0c;胜过其他一切&#xff0c;因为它给了我拒绝一切的合理理由。每到这个时候&#xff0c;我都会用各种理由来为自己的不作为开脱&#xff0c;今年亦是如此。看着频频发出警报的假期余额&#xff0c;我内心的焦躁变得…

VSCode无法连接远程服务器的两种解决方法

文章目录 VSCode Terminal 报错解决方式1解决方式2you are connected to an OS version that is unsupported by Visual Studio Code解决方法 VSCode Terminal 报错 直接在terminal或cmd中使用ssh命令可以连接服务器&#xff0c;但是在vscode中存在报错&#xff0c;最后一行为…

第12讲创建图文投票实现

创建图文投票实现 图文投票和文字投票基本一样&#xff0c;就是在投票选项里面&#xff0c;多了一个选项图片&#xff1b; <view class"option_item" v-for"(item,index) in options" :key"item.id"><view class"option_input&qu…

第13章 网络 Page724 asio定时器

程序代码&#xff1a; 11行&#xff0c;声明一个ios对象 13行&#xff0c;使用ios对象作为参数声明一个定时器&#xff0c;此时&#xff0c;定时器和ios完成了关联&#xff0c;后面定时器如果有任务的话&#xff0c;就可以将任务交给ios 16行&#xff0c;为定时器设置一个定…

Vue3+Vite+TS+Pinia+ElementPlus+Router+Axios创建项目

目录 初始项目组成1. 创建项目1.1 下载项目依赖1.2 项目自动启动1.3 src 别名设置vite.config.ts配置文件tsconfig.json配置若新创项目ts提示1.4 运行测试2. 清除默认样式2.1 样式清除代码下载2.2 src下创建公共样式文件夹`style`2.3 main.js中引入样式2.4 安装`sass`解析插件2…

Unity(单元测试)在STM32上的移植与应用

概述 Unity Test是一个为C构建的单元测试框架。本文基于STM32F407为基础&#xff0c;完全使用STM32CubeIDE进行开发&#xff0c;移植和简单使用Unity。 单片机型号&#xff1a;STM32F407VET6 软件&#xff1a;STM32CubeIDE Version: 1.14.1 Unity Version&#xff1a;2.…