视觉应用工程师(面试)
视觉应用工程师(面试)
1.自我介绍、会的技能、项目
2.相机和机械手调试过程
- 检查硬件,看软件驱动是否链接,
- 调节相机和镜头保证能够识别这个物料,
- 看接口和通讯是否正常,如:波特率,数据位,停止位等,
- 测试引导功能,如机械手自动抓取
3.九点标定的意义
建立相机像素坐标系与机械手物理坐标系之间的精确映射关系
简单说: 转换像素坐标为机械手坐标
4.九点标定和旋转中心过程
- 选择标定板,选择一个3*3的九点标定板(圆形)
- 相机拍照: 使用相机拍照标定板,找到这九个圆点的中心点
- 计算转换矩阵: 用采集到的坐标或机械坐标,通过最小二乘法计算出一个3*3的转换矩阵,也就是让Z轴走九个点
- 应用转换矩阵: 得到转换矩阵,可以用它将新的图像坐标转换成机械坐标
大白话: 选择合适标定板,机械手抓取物料拍照, 依次走九个点,计算像素值,转换成物理值, 旋转中心就是机械手抓取物料放到相机范围下,旋转机械手五个角度(5-7度), 将这个五个角度像素坐标转换成物理坐标, 使用拟合算法,也就是把这个五个像素值,填到拟合圆工具里面,来得到拟合圆的中心坐标, 最后通过Dx,Dy,Da计算的出偏差
选择一个特征点,在相机下依次旋转5个角度,获取5个位置的特征点像素坐标,记录每个位置的机械手坐标
使用拟合算法,将五个点拟合为一个圆,求出圆心坐标和旋转半径,将圆心坐标转换为机械手坐标中的坐标,计算偏差
- 在相机视野内选择一个点
- 固定好物料在相机视野范围下
- 旋转机械手五个角度(5-7度)获取五个位置
- 将这个五个角度的像素坐标转换成物理坐标,使用拟合算法,拟合出圆心坐标和旋转半径
- 通过拟合得到圆心坐标,计算出旋转中心的物理坐标
- 通过Dx,Dy,Da计算出偏差
5.九点标定和十二点标定的区别
- 九点标定使用的是3*3棋盘或标定板,通常以Z轴或均匀分布的方式采集
- 十二点标定使用3*4的棋盘或标定分布更密集
主要增加了三个点, 能够计算物料的旋转中心
6.除了九点和十二点还有什么坐标
- 超大视野坐标
通过多个相机视野拼成一个大的视野,实现对大范围场景的精确标定
-
旋转中心坐标
旋转中心标定就是在相机视野内,内旋转,通过拟合圆,拟合出旋转中心的坐标
-
三点标定
- 三点标定是一种简单的标定方式,主要用于二维平面,计算量小,操作也简单,通过三个非共线的点确定相机和机械手之间的坐标
7.RMS 是什么?怎么计算
RMS是像素转物距的一个均方根差值
- 比如: 真实值:2.0,3.5,4.0,5.5
- 预测值:2.1,3.6,3.9,5.7
- 平方差:(2.1-2.0)*(2.1-2.0)=0.01
- 总值除以数在进行开平方 (平方根)
8.九点标定的意义和原理
意义:就是把像素值转换成机械手的实际距离(物理距离)
原理:基于二维仿射变换,相机图像坐标系和机械手坐标系的位置,求出两者之间的几何变换
9.相机在哪里安装
肯定在机台检测的下方安装,这样定位的的时候好检测
10.机械手抓起来的物料之后的目的(放料)
抓取物料之后,移动到相机位置拍照,计算偏差,把偏差坐标发给plc ,plc引到机械手贴合泡棉到笔记本上
11.放料的精度是多少
放料的精度是0.02mm左右, 最终贴合到±0.15mm左右
12.图像预处理工具,用了哪些算法
-
图像增强
- 加减常量
- 对比度拉伸(调整)
- 直方图均衡化
-
图像降噪(滤波处理)
- 均值滤波:取邻域像素平均值 平滑图像减少噪音 如:椒盐噪音
- 高斯滤波 : 能够有效抑制高斯噪音,平滑图像 如:使用高斯核对图像进行卷积,能够有效去除图像中的高斯噪音
- 中值滤波: 通过取邻域像素的中值来代替像素值,使用(高斯和椒盐噪声)
- 双边滤波: 再去除噪音的同时,能够保留图像的边缘信息,适用于对图像进行平滑处理
-
图像分割
-
阈值分割: 根据图像的灰度值和颜色特征,将图像分为前景色和背景色。常见的阈值分割方法包括固定阈值分割、最优阈值分割和自适应阈值分割
使用自动阈值可以适当滤除一定的边缘干扰
-
边缘检测: 利用边缘检测算子,如Sobel算子、Prewitt算子、Canny算子、提取图像中的边缘信息。
-
区域生长:从图像中的一个或多个种子点开始,根据一定的生长规则,将相邻的像素点合并到一个区域中,从而实现图像分割
-
-
图像变换
- 傅里叶变换: 将图像从空间域转换到频域,便于进行频域滤波等操作
- 几何变换: 包括图像缩放、旋转、翻转等,用于调整图像的大小和方向
- 色度变换:调整图像的色调、饱和度、亮度等属性
13.Blob斑点工具,参数有哪些,如何筛选
主要用于检测和分析图像中的斑点特征:
- SegmentationParams.Mode: 设置图像分割模式,包括固定阈值(HardFixedThreshold)、动态阈值(HardDynamicThreshold)、相对阈值(HardRelativeThreshold)等。
- SegmentationParams.Polarity: 设置斑点的极性,包括白底黑点(DarkBlobs)和黑底白底(LightBlobs)
- ConnectivityMode:设置连通性,包括已标记(Labeled)、灰度(GreyScale)等。
- ConnectivityCleanup:设置连通性清理模式,包括修剪(Prune)、填充(Fill)等
- ConnectivityMinPixels:设置最小面积,用于过滤掉过小的斑点
- Region:设置检测区域的形状,包括圆形(CogCircle)、椭圆(CogEllipse)、多边形(CogPolygon)等。
- RunTimeMeasures:设置测量属性,包括面积(Area)、质心坐标(CenterMassX、CenterMassY)等
- 阈值模式:选择合适的阈值模式(固定阈值、动态阈值、相对阈值)来分割图像中的斑点和背景。
- 极性设置:根据斑点的灰度特性,选择白底黑点或黑底白点的极性。
- 连通性处理:通过设置连通性模式和清理模式,处理斑点的连通性问题
- 区域设置:指定检测区域,以限制斑点检测的范围。
- 面积过滤:通过设置最小面积和最大面积,过滤掉不符合要求的斑点
- 形状筛选:通过设置形状参数,如非环形值,筛选出特定形状的斑点
14.模板匹配效果不好的时候,怎么去优化
参数设置,如果图像有噪音或光照均匀不足,匹配都可能受到影响
- 优化算法
- 分块匹配算法:将图像划分为较小的块,并分别对每个块进行模板匹配,可以减少计算量,但可能会导致匹配精度下降。需要合理设置块的大小和重叠量。
- 快速傅里叶变换(FFT)加速:利用FFT将图像转换到频域,利用卷积定理实现高效的二维卷积,从而在频域中进行模板匹配,可以极大地减少计算量,使得大尺寸图像的匹配成为可能
- 限定搜索ROI的区域,减少搜索范围,提高匹配速度
- 调整匹配窗口大小,相似度阈值
- 降噪处理
- 增强目标区域特征 如:直方图均衡化,对比度增强,锐化
15.如果现在模板匹配非常大,像素特别高,怎么去解决?
- 调整曝光时间,可以增加帧率,保证图像质量
- 降低分辨率,减少数据量,提高帧率
- 减少处理区域,只处理图像中关键区域
16.卡尺计分方式
- 对比度:对比度卡尺计分基于灰度差来评估。卡尺搜索灰度值大于设置的第一条边
- 对比阈值:设定灰度的起始点,只有大于该值的边缘才会被检测到
- X0: 设定搜索的起始点,从卡尺中心沿搜索方向反方向距离为X0的点开始搜索
- 实例:当X0设置为160时,会搜索灰度差大于160的第一条边
- 位置
- 位置卡尺计分基于卡尺中心到特征的距离来评估。卡尺会从距离卡尺中心为X0的点开始,沿搜索方向搜索第一个符合对比度阈值的特征边
- PositionNeg
- PositionNeg卡尺计分基于卡尺框内抓取第一根符合条件的线来评估。卡尺会沿搜索方向在卡尺框内抓取第一根符合条件的线。
总结: 对比度适用于灰度差较大的情况,位置需要用于精确控制搜索起始点的情况, 适用于卡尺框抓取第一根符合条件的线
17.靶面效果不好的时候怎么办
这可能就会是图像处理、模板匹配或者靶材料等方面问题了,
- 优化图像处理技术
- 图像去噪
- 对比度增强
- 边缘检测
- 调整模板参数
- 调整模板尺寸
- 设置合适匹配窗口大小
- 调整相似度阈值
- 限定搜索区域
- 搜索ROI的区域,可以减少搜索范围,提高匹配速度
- 优化算法
18.卡尺工具忽略点
是由于噪声或检测误差导致的,一般选取总点数的5%作为忽略点数,忽略点数一般不能超过卡尺数量的1/3
- 边缘模式: 可以设置查找单个边缘或边缘对
- 边缘极性: 设置灰度值变换确实,可以从暗到明、从明到暗或任意极致
- 对比度阈值: 设置边缘检测的对比度阈值,只有对比度大于该值的边缘才会被检测到。
19.用几个相机
检测类或者比较简单的项目,可以说是两个相机,一个相机CT不够
CT可以说是一个小时4000 单个下昂及不够
如果过是引导项目 一般是两个或者三个 ,如果是缺陷检测可以说是2到4个 不同的缺陷类型用不同的光源或者检测的位置略微不同
相关文章:
视觉应用工程师(面试)
视觉应用工程师(面试) 1.自我介绍、会的技能、项目 2.相机和机械手调试过程 检查硬件,看软件驱动是否链接,调节相机和镜头保证能够识别这个物料,看接口和通讯是否正常,如:波特率,数…...
redis restore 命令的用法
Redis 的 RESTORE 命令用于将序列化后的数据(通常由 DUMP 命令生成)恢复为 Redis 的键值。它在数据迁移、备份恢复和跨实例同步等场景中非常有用。以下是详细说明: 作用 数据恢复 将 DUMP 命令生成的序列化数据重新加载到 Redis 中ÿ…...
当AI重构认知:技术狂潮下的教育沉思录
备注:文章未Deepseek R1模型辅助生成,如有不妥请谅解。 以下使原文: 我有三个娃,各间隔4到5岁,经历过搜索引擎,短视频,短剧,本身曾经也是教育专业出生,任何事务都有两面性…...
《Effective Objective-C》阅读笔记(下)
目录 内存管理 理解引用计数 引用计数工作原理 自动释放池 保留环 以ARC简化引用计数 使用ARC时必须遵循的方法命名规则 变量的内存管理语义 ARC如何清理实例变量 在dealloc方法中只释放引用并解除监听 编写“异常安全代码”时留意内存管理问题 以弱引用避免保留环 …...
穷举vs暴搜vs深搜vs回溯vs剪枝(典型算法思想)—— OJ例题算法解析思路
回溯算法的模版 void backtrack(vector<int>& path, vector<int>& choice, ...) {// 满⾜结束条件if (/* 满⾜结束条件 */) {// 将路径添加到结果集中res.push_back(path);return;}// 遍历所有选择for (int i 0; i < choices.size(); i) {// 做出选择…...
【Java项目】基于Spring Boot的校园博客系统
【Java项目】基于Spring Boot的校园博客系统 技术简介:采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介:校园博客系统是一个典型的管理系统,主要功能包括管理员:首页、个人中心、博主管理、文章分类管理、文章信息…...
计算机毕业设计SpringBoot+Vue.js图书进销存管理系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
算法-数据结构(图)-迪杰斯特拉最短逻辑算法( Dijkstra)
迪杰斯特拉算法(Dijkstras Algorithm) 是一种用于计算单源最短路径的经典算法,由荷兰计算机科学家 艾兹赫尔迪杰斯特拉(Edsger W. Dijkstra) 于1956年提出。它的主要目标是找到从图中的某个源节点到所有其他节点的最短…...
C语言【进阶篇】之指针——涵盖基础、数组与高级概念
目录 🚀前言🤔指针是什么🌟指针基础💯内存与地址💯指针变量💯 指针类型💯const 修饰指针💯指针运算💯野指针和 assert 断言 💻数组与指针💯数组名…...
关于命令行下的 git( git add、git commit、git push)
文章目录 关于 gitgit 的概念git 操作(git add、git commit、git push 三板斧)安装 git新建仓库及配置git clone.gitignoregit addgit commitgit push其他 git 指令git pull(把远端的东西拉到本地进行同步)其他指令 关于 git git…...
DaoCloud 亮相 2025 GDC丨开源赋能 AI 更多可能
2025 年 2 月 21 日至 23 日,上海徐汇西岸,2025 全球开发者先锋大会以 “模塑全球,无限可能” 的主题,围绕云计算、机器人、元宇宙等多元领域,探讨前沿技术创新、应用场景拓展和产业生态赋能,各类专业论坛、…...
极速探索 HarmonyOS NEXT:开启国产操作系统开发的新篇章
极速探索 HarmonyOS NEXT:开启国产操作系统开发的新篇章 一、引言二、HarmonyOS NEXT 是什么?背景核心特性 三、HarmonyOS NEXT 的发展历程从 LiteOS 到 HarmonyOS 的逐步演进HarmonyOS NEXT 5.0 的发布 四、HarmonyOS NEXT 对科技的影响技术突破开发者生…...
火狐浏览器多开指南:独立窗口独立IP教程
无论是跨境电商从业者需要管理多个店铺账号,还是海外社交媒体营销人员要运营多个社交平台账号,亦或是从事多账号广告投放的人员,都面临着一个共同的挑战 —— 如何高效管理多个账号,并确保每个账号的独立性。 在这种情况下&#…...
内容中台是什么?内容管理平台解析
内容中台的核心价值 现代企业数字化转型进程中,内容中台作为中枢系统,通过构建统一化的内容管理平台实现数据资产的高效整合与智能调度。其核心价值体现在打破传统信息孤岛,将分散于CRM、ERP等系统的文档、知识库、产品资料进行标准化归集&a…...
1.2 Kaggle大白话:Eedi竞赛Transformer框架解决方案02-GPT_4o生成训练集缺失数据
目录 0. 本栏目竞赛汇总表1. 本文主旨2. AI工程架构3. 数据预处理模块3.1 配置数据路径和处理参数3.2 配置API参数3.3 配置输出路径 4. AI并行处理模块4.1 定义LLM客户端类4.2 定义数据处理函数4.3 定义JSON保存函数4.4 定义数据分片函数4.5 定义分片处理函数4.5 定义文件名排序…...
iOS指纹归因详解
iOS 指纹归因(Fingerprint Attribution)详解 1. 指纹归因的概念 指纹归因(Fingerprint Attribution)是一种无 ID 归因(ID-less Attribution)技术,主要用于广告跟踪、用户识别或流量分析。它基…...
sql server笔记
创建数据库 use master gocreate database stuuuuu//删除数据库if db_id ($$$) is not nullDrop database [$$$] go//新建表USE [studyTest] GOSET ANSI_NULLS ON GOSET QUOTED_IDENTIFIER ON GOCREATE TABLE [dbo].[Table_1]([id] [int] NULL,[name] [varchar](10) NULL ) ON…...
uni小程序wx.switchTab有时候跳转错误tab问题,解决办法
在一个子页面里面使用uni.switchTab或者wx.switchTab跳转到tab菜单的时候,先发送了一个请求,然后执行跳转到tab菜单,但是这个时候,出错了........也是非常的奇怪,不加请求就没问题......但是业务逻辑就是要先执行某个请…...
【第十节】C++设计模式(结构型模式)-Flyweight( 享元)模式
目录 一、问题背景 二、模式选择 三、代码实现 四、总结讨论 一、问题背景 享元模式(Flyweight Pattern)在对象存储优化中的应用 在面向对象系统的设计与实现中,创建对象是最常见的操作之一。然而,如果一个应用程序使用了过多…...
AORO M6北斗短报文终端:将“太空黑科技”转化为安全保障
在卫星导航领域,北斗系统作为我国自主研发的全球卫星导航系统,正以其独特的短报文通信功能引发全球范围内的广泛关注。这一突破性技术不仅使北斗系统在全球四大导航系统中独树一帜,具备了双向通信能力,更通过遨游通讯推出的AORO M…...
深度生成模型(二)——基本概念与数学建模
上一篇笔记中提到了端到端模型底层核心采用了深度生成模型,先简单梳理一下 生成式人工智能(Artificial Intelligence Generated Content,AIGC)经历了从早期基于概率模型和规则系统的方法到现代深度生成模型的跨越式发展 深度神经…...
Mac本地部署Deep Seek R1
Mac本地部署Deep Seek R1 1.安装本地部署大型语言模型的工具 ollama 官网:https://ollama.com/ 2.下载Deepseek R1模型 网址:https://ollama.com/library/deepseek-r1 根据电脑配置,选择模型。 我的电脑:Mac M3 24G内存。 这…...
项目——仿RabbitMQ实现消息队列
1.项目介绍 曾经在学习Linux的过程中,我们学习过阻塞队列 (BlockingQueue) 。 当时我们说阻塞队列最大的用途, 就是用来实现生产者消费者模型。 生产者消费者模型是后端开发的常用编程方式, 它存在诸多好处: 解耦合支持并发支持忙闲不均削峰…...
【react】快速上手基础教程
目录 一、React 简介 1.什么是 React 2.React 核心特性 二、环境搭建 1. 创建 React 项目 2.关键配置 三、核心概念 1. JSX 语法 表达式嵌入 样式处理 2. 组件 (Component) 3. 状态 (State) 与属性 (Props) 4. 事件处理 合成事件(SyntheticEvent) 5. …...
流媒体网络协议全解析:从实时传输到自适应流,如何选择最优方案?
一、历史发展与协议提出者 流媒体协议的发展与互联网技术迭代紧密相关,主要分为三个阶段: 早期专有协议(1990s-2000s) RTSP/RTP 提出者:RealNetworks(RTSP初始推动者),后由IETF标准化(RFC 2326)。背景:1996年推出,用于视频监控和点播系统,基于UDP传输媒体流,支持…...
React + TypeScript 数据血缘分析实战
React TypeScript 数据血缘分析实战 目录 技术选型与架构设计核心概念解析基础场景实现 场景一:visx库基础血缘图实现场景二:React-Lineage-DAG企业级方案场景三:动态数据源与复杂交互 TypeScript类型系统深度优化性能优化与工程化实践开源…...
【nextjs官方demo】Chapter 6连接数据库报错
问题:跟着demo创建完成postgres数据库,并修改了env文件,需要访问/seed去初始化数据的时候: 报错信息如下,看信息就是bcrypt模块有问题: 排除了你的环境问题后,就看下面这句话: 它的…...
Nginx的反向代理(超详细)
正向代理与反向代理概念 1.概念: 反向代理服务器位于用户与目标服务器之间,但对用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务…...
Plantsimulation中机器人怎么通过阻塞角度设置旋转135°
创建一个这样的简单模型。 检查PickAndPlace的角度表。源位于180的角位置,而物料终结位于90的角位置。“返回默认位置”选项未被勾选。源每分钟生成一个零件。启动模拟时,Plant Simulation会选择两个位置之间的最短路径。示例中的机器人无法绕135的角位…...
Docker数据卷容器实战
数据卷容器 数据共享 上面讲述的是主机和容器之间共享数据,那么如何实现容器和容器之间的共享数据呢?那就是创建 创建数据卷容器。 命名的容器挂载数据卷,其他容器通过挂载这个(父容器)实现数据共享,挂载…...
