相机、镜头参数详解以及相关计算公式
一、工业相机参数
1、分辨率
相机每次采集图像的像素点数,也是指这个相机总共有多少个感光晶片。在采集图像时,相机的分辨率对检测精度有很大的影响,在对同样打的视场成像时,分辨率越高,对细节的展示越明显。
相机像素 = 水平分辨率 * 垂直分辨率
芯片尺寸 = 水平像素尺寸 * 水平分辨率
感光芯片尺寸=分辨率∗像元尺寸
分辨率( Pixel ) = 相机视野( mm ) / 像素精度( mm / Pixel )
2、精度
精度指一个像素表示实际物体的大小,用(um*um)/pixel表示。注意,像元尺寸并不等于精度,像元尺寸是相机机械构造时固定的,而精度与相机视野有关,是变化的。精度值越小,精度越高。
单个像素对应的大小 = 视野宽 / 宽度分辨率 = 视野高 / 高度分辨率
镜头倍率 = 芯片尺寸 / 实际所需视野
像素精度 = 像素尺寸 / 镜头倍率
像素精度 = 相机视野 / 相机分辨率
3、帧率/行频
帧率:fps帧率,对应面阵相机,表示每秒能够拍摄的图片张数。
行频:16kHz行频,对应线阵相机,表示每秒能够扫描的行数。最大图像分辨率为分辨率*行频(例2048x16k);
帧率和行频体现相机的最大工作效率,与曝光共同决定成像图片的明暗,帧率和行频很高且曝光低,则图片很暗;帧率和行频很低且曝光高,则图片很亮。
4、像元尺寸
像元尺寸指芯片像元阵列上每个像元的实际物理尺寸,例如3.75umx3.75um 等。像元尺寸从某种程度上反映了芯片的对光的响应能力,像元尺寸越大,能够接收到的光子数量越多,在同样的光照条件和曝光时间内产生的电荷数量越多。对于弱光成像而言,像元尺寸是芯片灵敏度的一种表征。像元尺寸和像元数(分辨率)共同决定了相机靶面的大小,通常工业相机像元尺寸为2μm~14μm。
像元尺寸(宽) = 传感器尺寸(宽) / 分辨率(宽)
像元尺寸(高) = 传感器尺寸(高) / 分辨率(高)
5、曝光时间
曝光时间时为了将光投射到照相感光材料的感光面上,快门所要打开的时间。曝光时间和实际的帧率成反比,也就是曝光时间越长,实际的采集帧率会越低,一般为3um-10ms。
曝光时间 = 像元尺寸 / 像的运动速度 = 像素精度 / 物体的运动速度
放大倍率 = CCD感光尺寸 / 视场FOV = 焦距 / 工作距离
相机的飞拍曝光数值计算
案例1:物体的运动速度是150mm/s,沿着芯片的水平方向运动,相机是1/2芯片(6.4mm*4.8mm),视场水平方向长度是20mm,像元尺寸是4.65um,计算成像时不产生拖影的曝光时间。
首先计算出像的运动速度
放大倍数 = CCD感光尺寸 / 视场FOV = 6.4mm / 20mm = 0.32,
像的运动速度 = 放大倍率 * 物体的运动速度 = 0.32 * 150mm/s = 48mm/s,
曝光时间 = 像元尺寸 / 像的运动速度 = 4.65um / 48mm/s = 0.000097s = 97us,
最后曝光时间设置为100us即可。
案例2:玻璃转盘设备,使用的相机是GMAX3265(6500万相机,相机的像元尺寸是3.2μm*3.2μm),0.52倍率的圆心镜头,转盘3600脉冲转一圈,软件设定的运行速度180脉冲/s,玻璃转盘的盘子直径500mm
计算公式1:
转盘转一圈的时间 = 一圈的脉冲 / 运行速度 = 3600 / 180 = 20秒;
物体的运动速度 = 转盘的盘子直径 * 3.14 / 转盘转一圈的时间 = 500 * 3.14 / 20 = 78.5mm/s
像的运动速度 = 放大倍率 * 物体的运动速度 = 78.5 * 0.52 = 40.82mm/s
曝光时间 = 像元尺寸 / 像的运动速度 = 3.2 / 40.82 = 78.39us
最后曝光时间设置为80us
计算公式2:
转盘转一圈的时间 = 一圈的脉冲 / 运行速度 = 3600 / 180 = 20秒;
物体的运动速度 = 转盘的盘子直径 * 3.14 / 转盘转一圈的时间 = 500 * 3.14 / 20 = 78.5mm/s
像素精度 = 像元尺寸 / 镜头的倍率 = 3.2 / 0.52 = 6.153846um
曝光时间 = 像素精度 / 物体的运动速度 = 6.153846 / 78.5 = 78.39us
6、靶面尺寸(传感器尺寸)
图像传感器的感光部分的大小,通常指的是图像传感器的对角线长度,在同样镜头情况下,靶面越大,视场越大,靶面越小,视场越小。传感器(CCD/CMOS)尺寸的表示方法大惑不解,因为像1/1.8英寸、2/3英寸之类的尺寸,既不是任何一条边的尺寸,也不是其对角线尺寸,看着这样的尺寸,往往难以形成具体尺寸大小的概念。
传感器类型 | 宽度(mm) | 高度(mm) | 对角线(mm) |
1/3'' | 4.800 | 3.600 | 6.000 |
1/2.5'' | 5.760 | 4.290 | 7.182 |
1' | 12.700 | 9.600 | 16.000 |
2/3'' | 8.800 | 6.600 | 11.000 |
1/2'' | 6.400 | 4.800 | 8.000 |
4/3'' | 18.800 | 13.500 | 22.500 |
CCD尺寸一般用英寸来表示,靶面尺寸就是CCD尺寸
靶面尺寸 = 对角线尺寸
靶面面积 = 传感器宽度 * 传感器高度
二、镜头参数
1、焦距
与光轴平行的光线射入凸透镜时,理想的镜头应该是所有的光线聚集在一点后,再以锥状扩散开来,这个聚集所有光线的点叫做焦点。对于单个透镜来说,焦距是指从光心到焦点的距离,如图一;对于多个透镜组成的镜头组来说,焦距是指像方主平面到焦点的距离,如图二。
焦距 = (工作距离 * 相机传感器短边尺寸)/ 物体宽度
或 焦距 = 工作距离 * 放大倍率
焦距、像距、物距之间的关系:
(1 / 物距)+ (1 / 像距)= (1 / 焦距)
2、光圈
光圈是一个用来控制光线透过镜头进入机身内感光面光量的装置,在拍摄高速运动物体时,由于曝光时间短,需要使用大光圈。
光圈大小一般用F表示,以镜头焦距f和通光孔径直径D的比值来衡量,当光圈物理孔径不变时,镜头中心与感光器件距离越远,F值越大,光圈越小;反之,F值越小,光圈越大。
一般通过调整通光孔径大小来调节光圈,完整的光圈数值系列如下:F1,F1.4,F2,F2.8,F4,F5.6,F8,F11,F16,F22,F32,F44,F64。
光圈系数F = 焦距f / 通光孔径D
3、分辨率
图像系统可以测到的受检验物体上的最小可分辨特征尺寸,多数情况下,视野越小,分辨率越好
4、工作距离
工作距离指的是镜头的最下端到景物之间的距离。一般的镜头是可以看到无限远的,也就是说是没有上限的。镜头上有两个刻度的调节圈分别是调节光圈和调焦圈,在调节圈上标有的刻度表示此时镜头的工作距离。
5、视场(FOV)
视场也叫视野范围,视野指的是镜头能看到的最大范围,也就是镜头所能覆盖的有效工作区域。
6、景深(DOF)
在最小工作距离到最大工作距离之间的范围称为景深(纵向的范围),景深内的物体都可以清晰成像。景深一般可以通过光圈调节,光圈越小,景深越大。
能清晰成像的最近物平面称为近景平面,它与对准平面的距离称为前景深L1。
能清晰成像的最远物平面称为远景平面,它与对准平面的距离称为后景深L2。
景深=前景深+后景深:
其中: :容许弥散圆直径,f:镜头焦距,F:镜头的拍摄光圈值,L:对焦距离
光圈,镜头焦距、拍摄距离对景深的影响:
1)、镜头光圈:光圈越大,景深越小;光圈越小,景深越大;
2)、镜头焦距:镜头焦距越长,景深越小;距离越短,景深越大;
3)、拍摄距离:距离越远,景深越大;距离越近,景深越小
7、视角
视角即视线的角度,也就是镜头能看多"宽"。焦距越小,视角越大,最小工作距离越短,视野越大。
镜头选型实例:
已知客户观察范围为30mm*30mm,工作距离为100mm,CCD尺寸为1/3',那么需要多少焦距的镜头
计算方法:
1/3'=3.6mm(垂直) 芯片垂直方向的大小
f=(100*3.6)/30
参考:工业相机与镜头选型方法(含实例)_工业相机选型-CSDN博客
相关文章:
相机、镜头参数详解以及相关计算公式
一、工业相机参数 1、分辨率 相机每次采集图像的像素点数,也是指这个相机总共有多少个感光晶片。在采集图像时,相机的分辨率对检测精度有很大的影响,在对同样打的视场成像时,分辨率越高,对细节的展示越明显。 相机像素…...

【微服务】组件、基础工程构建(day2)
组件 服务注册和发现 微服务模块中,一般是以集群的方式进行部署的,如果我们调用的时候以硬编码的方式,那么当服务出现问题、服务扩缩容等就需要对代码进行修改,这是非常不好的。所以微服务模块中就出现了服务注册和发现组件&…...

ESP32微信小程序SmartConfig配网
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ESP32&微信小程序SmartConfig配网 前言一、SmartConfig是什么?二、使用乐鑫官方的smart_config例子1.运行照片 三、微信小程序总结 前言 本人是酷爱ESP32S3这…...
【PostgreSQL】提高篇——深入了解不同类型的 JOIN(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN)应用操作
1. JOIN 的基础概念 在 SQL 中,JOIN 是用于从两个或多个表中组合行的操作。JOIN 允许我们根据某些条件将表中的数据关联在一起。常见的 JOIN 类型包括: INNER JOIN:仅返回两个表中满足连接条件的行。LEFT JOIN(或 LEFT OUTER JO…...

师生健康信息管理:SpringBoot技术突破
第4章 系统设计 4.1 系统体系结构 师生健康信息管理系统的结构图4-1所示: 图4-1 系统结构 登录系统结构图,如图4-2所示: 图4-2 登录结构图 师生健康信息管理系统结构图,如图4-3所示。 图4-3 师生健康信息管理系统结构图 4.2…...

【完-网络安全】Windows注册表
文章目录 注册表启动项及常见作用五个根节点常见入侵方式 注册表 注册表在windows系统的配置和控制方面扮演了一个非常关键的角色,它既是系统全局设置的存储仓库,也是每个用户的设置信息的存储仓库。 启动项及常见作用 快捷键 WinR打开运行窗口&#x…...

车辆重识别(2021NIPS在图像合成方面,扩散模型打败了gans网络)论文阅读2024/10/01
本文在架构方面的创新: ①增加注意头数量: 使用32⇥32、16⇥16和8⇥8分辨率的注意力,而不是只使用16⇥16 ②使用BigGAN残差块 使用Big GAN残差块对激活进行上采样和下采样 ③自适应组归一化层 将经过组归一化操作后的时间步和类嵌入到每…...

掌控物体运动艺术:图扑 Easing 函数实践应用
现如今,前端开发除了构建功能性的网站和应用程序外,还需要创建具有吸引力且尤为流畅交互的用户界面,其中动画技术在其中发挥着至关重要的作用。在数字孪生领域,动画的应用显得尤为重要。数字孪生技术通过精确模拟现实世界中的对象…...

Python从入门到高手4.2节-掌握循环控制语句
目录 4.2.1 理解循环控制 4.2.2 for循环结构 4.2.3 循环结构的else语句 4.2.4 while循环结构 4.2.5 循环结构可以嵌套 4.2.6 国庆节吃好玩好 4.2.1 理解循环控制 我们先来搞清楚循环的含义。以下内容引自汉语词典: 循环意指往复回旋,指事物周而复始地运动或变…...
CSS 中的overscroll-behavior属性
overscroll-behavior 是 CSS 中的一个属性,它用于控制元素在发生滚动时,当滚动范围超出其边界时的行为。这个属性对于改善用户体验特别有用,尤其是在移动端设备上,当用户尝试滚动一个已经达到滚动极限的元素时,可以通过…...
GPT对话知识库——在STM32的平台下,通过SPI读取和写入Flash的步骤。
目录 1,问: 1,答: 步骤概述 步骤 1:SPI 初始化 步骤 2:Flash 初始化(可选) 步骤 3:发送读取命令 示例:发送读取数据命令 步骤 4:读取数据…...
Pytorch基本知识
model.state_dict()、model.parameters()和model.named_parameters()的区别 parameters()只包含模块的参数,即weight和bias(包括BN的)。 named_parameters()返回包含模块名和模块的参数的列表,列表的每个元素均是包含layer name和layer param的元组。layer param就是param…...

vue3使用Teleport 控制台报警告:Invalid Teleport target on mount: null (object)
Failed to locate Teleport target with selector “.demon”. Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree main.…...

使用产品前的环境搭建
对于想学习编程的朋友们,使用本产品解决日常功能需求的同时会对自己编程能力具有较大帮助和提升。 目录 环境搭建 前言: 安装python 安装vscode 下载安装Anaconda 通过conda配置python环境 创建虚拟环境 查看环境是否创建成功 激活环境 安装pyt…...
JAVA基础语法 day07
一、final关键字 1.1final的基础知识 用来修饰类,方法,变量 final修饰类,该类被称为终极类,不能被继承了 final修饰方法,该方法称为终极方法,不能被重写了 final修饰变量,该变量仅能被赋值…...
ZLMediaKit编译运行
ZLMediaKit-github官网 快速开始 代码依赖与版权声明 MediaServer支持的HTTP MediaServer支持的HTTP HOOK API cd ZLMediaKit mkdir build cd build cmake … && make -j20 cd ZLMediaKit/release/linux/Debug ./MediaServer //./MediaServer -h 查看 //./MediaSe…...

AlmaLinux 9 安装mysql8.0.38
文件下载 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.39-linux-glibc2.12-x86_64.tar 选择合适系统版本 下载后解压 tar -xvf mysql-8.0.39-linux-glibc2.12-x86_64.tar解压后里面有三个文件夹 使用mysql-8.0.39-linux-glibc2.12-x86_64.tar.xz即可,…...
NLP任务之文本分类(情感分析)
目录 1 加载预训练模型对应的分词器 2 加载数据集 3 数据预处理 4 构建数据加载器DataLoader 5 定义下游任务模型 6 测试代码 7 训练代码 #做(中文与英文的)分类任务,Bert模型比较合适,用cls向下游任务传输数…...
MIMO 2T4R BBU RHUB AAU
MIMO(Multiple-Input Multiple-Output,多输入多输出)是一种无线通信技术,它通过在发射端和接收端使用多个天线来提高数据传输速率和信号质量。"2T4R"是MIMO技术中的一种配置,其中"2T"代表有两个发…...

图说数集相等定义表明“R各元x的对应x+0.0001的全体=R“是几百年重大错误
黄小宁 设集A{x}表A各元均由x代表,{x}中变量x的变域是A。其余类推。因各数x可是数轴上点的坐标故x∈R变为实数yx1的几何意义可是:一维空间“管道”g内R轴上的质点x∈R(x是点的坐标)沿“管道”g平移变为点y…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...