当前位置: 首页 > news >正文

工业相机飞拍模式介绍及相机曝光值计算

1.检测原理

 (一)原理

  飞拍就是使用硬件比较输出或精准输出端口在极短时间内触发相机拍照,而被测物品在拍照过程中仍处于运动状态,与此同时被测物品通过图像处理软件计算出其位置的偏移量,执行机构获取视觉输出的偏移量后再做出相应的动作指令。

  视觉飞拍功能不仅需要有硬件比较输出或精准输出功能做高速精准触发控制,而且要求相机的拍照响应时间快、曝光时间短、帧率高,软件处理时间要短。

  (二)机器视觉飞拍与停拍对比

  1.视觉停拍:传统的视觉定位采取停拍的方式,即工件按照既定的轨迹运动,当运行到拍照点时,运动轴速度减为0停下来进行拍照、图像采集、运算处理、纠偏,待视觉系统处理完成后,继续完成接下来的轨迹运动,v-t图如下。

  2. 视觉飞拍:针对传统的视觉停拍,而造成生产效率不够高的问题。在某些生产效率高的应用场合,使用到视觉飞拍功能的很多。即机构按照既定的轨迹运动,当运行到拍照位时,运动轴不停止运动,瞬间完成高速抓拍的功能。

  整个过程中移动机构不停止,从而节省机构运行时间,满足效率,并且能保证运行精度。

  a.在精度保证的同时,可以不减速,v-t图如下。

  b.在精度不足的情况下,可以略微降速,分段运行,但速度不降为0,v-t图如下。

2.问题原因:

只要物体存在运动,拍摄就一定会存在拖影,那么如何判断飞拍项目能否使用?拖影是否会对飞拍造成影响呢?这就要看具体的检测精度要求了,例如对于尺寸测量的项目,拖影对测量精度会有严重影响,在这种情况下,就会要求拖影长度尽可能短,要求不超过1/3像素,或者不超过一个像素等;而对于识别、计数等相关的项目则对拖影的要求会相对宽些,这些要求一般情况下如此,并非绝对,集体需要看实际情况需求。下面详细计算拖影和精度要求之间的关系。

3.解决办法:

我们要记住下面的公式:

拖影对飞拍不造成影响的条件为:曝光时间*物体运动速度 ≤ 运动方向精度需求

例如:相机现在的曝光时间是2000us,传送带运动的速度是100mm/s,使用的相机分辨率为2448*2048,视野范围是300mm*250mm,物体运动的方向是水平方向,精度要求拖影不超过1/2像素。此时的场景能满足飞拍要求吗?

曝光时间*物体运动速度=2000*100/1000000=0.2mm

水平方向像素精度要求为=300/2448*1/2=0.061mm

由于0.2mm>0.061mm,所以无法满足此飞拍运动场景的精度要求。

根据上面的公式我们就有了两种解决办法:

(a)降低相机的曝光时间

根据上面例子继续计算,0.061m/100mm/s=0.00061s=610us

所以曝光降低到610us以下时,拖影就不会超过1/2像素,精度就能够达到要求。但是注意,降低曝光后需要加强光源亮度或调大光圈来让图片达到同一亮度。

(b)降低传送带的运动速度

同理根据上面的例子继续计算,0.061mm/2000us=0.0000305mm/us=30.5mm/s

所以传送带速度降低到30.5mm/s时,拖影就不会超过1/2像素,精度就能够达到要求。

飞拍的拖影与被拍摄物体的运动速度、曝光时间强相关。除此之外,还可能与图像传感器(Sensor)有关系,一般来说,Sensor在进行电荷读出过程中,同时也还是在接收外部光信号的输入,形成寄生光电荷,通常用寄生光灵敏度(Parasitic Light Sensitivity,缩写为PLS)来表征。一旦PLS足够大,当前帧读出阶段所产生的寄生光,可能会在下一帧图像中形成影响,如边缘阴影或者过渡带。

PLS的问题无法根除,一般有两种方式减弱

(1)通过与机械快门的同步配合,通过减少读出阶段的进光量来减弱

(2)选择PLS小的全局快门Sensor

相关文章:

  • spring cloud 使用oauth2 问题收集
  • vscode-pretter 插件支持 styled-components 格式化问题
  • 搭建微服务项目框架环境
  • 与MySQL的纠缠(卸载与安装)
  • nodejs+vue+elementui影城选座管理系统python518
  • 机器学习笔记之支持向量机(一)模型构建思路
  • python-(4-3)数据类型的应用(元组、集合)
  • Hbase基本概念
  • cmake是什么,为什么现在都用cmake,cmake编译原理和跨平台示例
  • IDEA中使用JIRA
  • 物联网-物联前端安全加密技术简介
  • 怎样在LaTeX中方便输入带圆圈的数字
  • 如何在 SAP ABAP ALV 报表里以交通灯的方式显示某一列的值
  • 【C++实现】浅聊定时器的实现,最小堆配合map实现定时器
  • Spring五大类注解读取存储Bean对象
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Javascript基础之Array数组API
  • jQuery(一)
  • learning koa2.x
  • Puppeteer:浏览器控制器
  • springMvc学习笔记(2)
  • vue 个人积累(使用工具,组件)
  • 理解在java “”i=i++;”所发生的事情
  • 力扣(LeetCode)357
  • 前端自动化解决方案
  • 巧用 TypeScript (一)
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 通过npm或yarn自动生成vue组件
  • 学习ES6 变量的解构赋值
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 阿里云移动端播放器高级功能介绍
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Git) gitignore基础使用
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (四)模仿学习-完成后台管理页面查询
  • (一)插入排序
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .Net CF下精确的计时器
  • .NET DevOps 接入指南 | 1. GitLab 安装