相机和镜头选型需要注意哪些问题

背景:

最近需要优于项目需求需要对工业相机和镜头进行选型,于是我就开启的学习相机之旅,虽然我一直在做机器视觉方向,但是我对相机的了解还是很少,我想正好趁这次机会好好学习一下。如果有错误的观点请指正。

一、相机相关的一些指标

1. 靶面尺寸

     相机的靶面尺寸就是用于接收光信号的传感器的尺寸,业界规定在描述靶面尺寸时1英寸=16毫米(当然实际情况下1英寸=25.4mm)。相机的靶面尺寸是用靶面对角线的长度与16mm的比值表示的,如对角线为4mm的靶面尺寸为1/4”,然后根据4:3的长边短边比,利用勾股定理就可以计算出靶面的边长。在其他条件一致的情况下,相机的靶面尺寸越大则可获得的视野范围越大。

 

 

图1. 相机靶面尺寸

2. 像元尺寸

      像元就是传感器上的感光单元,这些感光单元可以把光信号转换为电信号。如像元尺寸为4.8um*4.8um。像元有方形的也有长方形的。

3. 相机分辨率

      分辨率就是相机的传感器上即感光靶面上横向和竖向各有多少个感光单元(像元)。当然“靶面尺寸”,“像元尺寸”和“分辨率”三者之间是有联系的,比如我们已经知道了“像元尺寸”和“分辨率”那么我们就可以直接计算出相机靶面的长和宽出来,如“分辨率”为2592*2048,“像元尺寸”为4.8um,那么靶面长=2596*0.0048=12.44mm,靶面宽=2048*0.0048= 9.83mm,这与在图1中靶面尺寸为1”的长边和宽边的长度有些出入,这主要是近似的缘故。

4. 镜头分辨率

  •  什么是传递函数(又叫MTF),什么是极限空间分辨率

        简单来说MTF是空间分辨率的一种表达方式,单位:线对/mm。每个光学或者光电成像器件都有各自的MTF,镜头有MTF,相机也有MTF。光学器件或者光电成像器件的MTF越好,或者MTF对应的空间截止频率越高,证明器件自身的空间分辨率越好,越能看清楚更小的细节。MTF对应的空间截止频率又叫极限空间分辨率。

  • 镜头中的百万像素,二百万像素,五百万像素是指什么?

       其实,镜头中的百万像素,二百万像素,五百万像素同样是指镜头的空间分辨率,因为镜头必须配合相机使用,为了方便记忆镜头和相机的匹配关系,人们常采用对应的相机的分辨率来命名镜头,这种命名方式其实是不科学的,同时给新接触视觉系统的人带来很多误解,经常或机械的套用百万像素分辨率相机对应百万像素分辨率镜头,二百万像素分辨率相机对应二百万像素分辨率镜头,五百万像素分辨率相机对应五百万像素分辨率镜头。其实镜头与相机对应的不是相机本身的像素分辨率(像素数),而是各自的极限空间分辨率。按照目前公开的性能指标来说,百万像素镜头对应的极限空间分辨率为90线对/mm,二百万像素镜头对应的极限空间分辨率为110线对/mm,五百万像素镜头对应的极限空间分辨率为160线对/mm,因此百万像素镜头配合相机的极限空间分辨率必须低于90线对/mm, 二百万像素镜头配合相机的极限空间分辨率必须低于110线对/mm,五百万像素镜头配合相机的极限空间分辨率必须低于160线对/mm。而决定相机极限空间分辨率的并不是相机自身的像素分辨率,而是相机的单个像元尺寸大小。

  • 相机的极限空间分辨率

       相机的极限空间分辨率代表了相机能够分辨的空间最小细节,其计算公式可以理解为:1/(单个像元尺寸*2),单位:线对/mm。为啥需要在像元尺寸上乘以2呢,这是因为,两个像元才对应一对黑白条,如下图所示。

图2. 两个像元对应一对黑白条

 

  • 相机和镜头的配套原则

       镜头的极限空间分辨率必须高于相机的极限空间分辨率,这样才能让相机实现最佳成像性能。

二、项目中如何根据实际需要选择合适的相机和镜头呢?

1. 相机输出接口选择USB3.0还是GIGE千兆网

      同等像素条件下,各种接口的总线其相机帧率是不一样的,一般来说Camera Link>USB3>GIGE>1394B>USB2,1394A。现在最快的是Camera Link总线,USB3的理论速度达到了5Gbps即640MB,实际表现来看,应该有80%的有效带宽,即有512M左右的总带宽可供实际传输,这样如果一个500万像素的相机,每幅图像5M,那么也可能达到100帧每秒,速度也非常快了。而对于GIGE千兆网相机,500万像素的相机,较快的可以做到23FPS。1394B的500万像素相机可以做到13FPS,USB2,1394A一般为5~6帧的样子。除了考虑两者的传输速率,还要考虑两者的工作距离,通常情况下USB3.0的工作距离为5米以内,GIGE千兆网接口的工作距离为100米以内。根据下表对比USB3.0和GIGE接口的特点选择适合自己的接口形式。

表1. USB3.0和GIGE对比

 

带宽

理论下载速度

实际下载速度

500万图像传输帧率

优点

缺点

USB3.0接口

5Gbps

640MB

约512MB

约100fps

1. 帧率高
2. 不需要单独供电

1. 工作距离近,通常在5m内。
2. 占用CPU内存。
3.电脑端无卡扣容易被扯掉

GIGE接口

1KMbps

128MB

约100MB

约20fps

1. 传输距离远,通常在100m以内。
2. 不占用CPU内存。
3. 两头有卡扣,确保连接稳定。

1. 帧率没有USB3.0高。
2. 需要单独供电。

 

2. 选择图像分辨率和帧率

        第一步中的选择,其实是确定了总的带宽,然后根据我们对帧率的需求来确定分辨率,倘若我们要求帧率为20帧,如果选用GIGE接口,那么一帧图像的大小不超过5M,也就是一帧图像分辨率为500万左右,如果选择USB3.0接口,相同的帧率,那么一帧图像的大小可以放宽到25M,也就是不超过2500万像素。如果你想要得到更高的帧率,那就不得不降低分辨率。如果你想帧率和分辨率都很高,那么就选择传输速率较高的USB3.0接口形式,但是要考虑5米以内的工作距离是否满足需求。

3. 确定分辨率

        根据第二步我们可以确定,我们可选的分辨率大小,当然我们希望分辨率越大越好,所以在允许的范围内,我们要选择分辨率最大的。如果已经确定接口是GIGE接口,帧率为20帧,分辨率为500万像素,然后就是选择实际的分辨率,假设实际测试场地为5000*4000长宽比为1.25,所以我们在选择的时候,也尽量选择分辨率的长宽比接近1.25的相机,如之前选择的2592*2048,为530万像素的相机,长宽比为1.266与1.25较为接近。那么这时达到的精度差不多为2mm/pixel。如果要提高精度,要不然就提高分辨率,那样帧率势必要降低,要不然就换成USB3.0输出接口。

4. 选择相机靶面尺寸

       在候选的相机中,我们要选择靶面尺寸更大的相机,如有2/3"和1“的可供选择,那么我们就选择后者,靶面尺寸大,相对应的得到的视场范围也就越大。

5. 选择相机颜色

       在没有彩色图像分析需求时,我们要选择黑白相机,因为黑白相机使用单色光源成像质量要比彩色相机使用复合白光的质量要好。

6. 选择相机的曝光时间

       目标的运动速度对相机的最小曝光时间提出了要求,如果目标运动速度为300mm/s, 我们的测量精度为1mm/pixel,那么我们必须考虑,物体的运动引起的拖影必须要小于我们的精度1mm,目标移动1mm,需要3.3ms,这就要求我们的相机的曝光时间必须小于3.3ms, 其实我们工业相机最快曝光时间可达几十到一百多微秒的样子,所以完全可以满足我的精度需求。

7. 选择传感器类型

        如果拍摄的目标是静止不动的,为了节约成本,可以考虑使用CMOS相机,而如果目标是运动的,则优先考虑CCD相机,如果需要高速采集,这里的高速是指很高的采集速度,而不是目标物体的运动速度,可以考虑CMOS相机,因为CMOS相机的采集速度要优于CCD相机,如果需要高质量的图像,如进行尺寸测量,可以考虑CCD相机,在小尺寸的传感器中,CCD的成像质量优于CMOS。

8. 计算镜头焦距

  • 经过上面的指标基本上可以确定相机,然后就要选择镜头,首先我们要根据相机的靶面尺寸,实际测试中的工作距离和视野范围来计算焦距。焦距f = 工作距离(WD)*靶面尺寸(H or V)/视野范围(H or V)。
  • 在选择镜头时要考虑镜头的相面大小与相机的感光面大小是否兼容,遵循“大的服从小的”原则,即镜头的相面大小不得小于相机感光面大小,否则边缘视场的像质不保。
  • 选择的镜头的接口要与相机接口一致。
  • 一般来说相机的成像质量要和镜头的成像质量相对应,差异不能太大。镜头再好,机身传感器的分辨率上不去,其优质的取景能力也表现不出来;机身画幅和分辨率再高,镜头画质不给力,也捕获不到优秀的画质。倘若选择的相机的像元尺寸为4.8um*4.8um,先计算相机的极限空间分辨率为:1/(0.0048*2) = 104线对/mm,那么我们选择镜头时,要挑选那些空间分辨率不低于104线对/mm的镜头,也就是选择二百万像素的镜头,空间分辨率为110线对/mm,就可以了。倘若选择的相机的像元尺寸为3.45um*3.45um,那相机对应的空间分辨率为:1/(0.00345*2)= 145线对/mm,那么此时我们就应该选择500万像素分辨率的镜头了,对应的空间分辨率为160线对/mm,当然还要考虑相机和镜头靶面尺寸的匹配。

三、实例分析

表2. 数据罗列

 

指标

数据/mm

实际场景

 

 

视野范围H

5000

视野范围V

4000

工作距离

3200

相机参数

 

 

 

 

 

 

靶面尺寸

1"

像元尺寸

4.8um*4.8um

分辨率

2592*2048

最大帧率

22

颜色

黑白

输出接口

GIGE

镜头接口

C-Mount

镜头参数

 

 

 

 

 

焦距

6mm

最大像面

1"

镜头分辨率

1200万

视场角H(度)

95.4

视场角V(度)

78.4

镜头接口

C-Mount

下面是之前选的海康的工业相机,千兆网接口,1", 500万分辨率,帧率不高于22帧,为了达到更大的视野,所以优先选择大靶面的。

图3. 选择的海康工业相机

确定相机后根据相机的靶面尺寸,工作距离,视野范围来计算所需镜头的焦距。

焦距f = 工作距离WD*靶面尺寸(H or V)/视野范围(H or V) = 3200*12.8/5000 = 8.19,所以安全起见,我们需要选择焦距小于8的镜头,所以我决定选6mm焦距的镜头。

关于镜头的选择,首先,焦距要选符合我们项目需求的,如上面计算的6mm, 其次就是要尽可能保证,镜头对应的靶面尺寸与相机的靶面尺寸兼容,如下面第一幅图中,该6mm焦距的镜头就兼容1”和2/3"的靶面尺寸。我们在选选择镜头时,单从靶面尺寸这个指标来看,所选镜头的靶面尺寸要大于或者等于相机的靶面尺寸,但是绝不能小于,否则,相机的视野就被镜头给限制了。除了要看镜头的焦距,靶面尺寸,还要看镜头的分辨率,关于镜头的分辨率这快我还有不少困惑,但是选择的思路是,在保证镜头的焦距和靶面尺寸满足需求的前提下,一定要确保,镜头的分辨率要高于相机的分辨率,这样可以把相机和镜头的潜力都发挥出来,但是如果镜头的分辨率太低,那再好的相机,高质量的成像效果也得不到了,但是也不需要无限的高,否则镜头的分辨率又被浪费了。

我问了镜头1的客服,他这款镜头的分辨率也是1200万的,但是为啥不在表格中标识出来呢?

表3. 选取的镜头1的指标

在镜头4的指标表格中标识了镜头的分辨率为1200万,这里并没有使用镜头的空间分辨率lp/mm来表示,大概是表示成与相机分辨率一致的形式,便于买家理解吧。

标4. 选取的镜头2的指标

参考文献

1. http://www.skcircle.com/?id=1217

2. https://mp.weixin.qq.com/s/K1TtIH8EJcZxHVRrsIN4qQ

3. https://blog.csdn.net/qq_27923041/article/details/106858708

4. http://www.skcircle.com/?id=1193

相机镜头购买链接

1. https://item.taobao.com/item.htm?spm=a1z0d.6639537.1997196601.86.119e7484FcxYWy&id=613134277199

2. https://detail.tmall.com/item.htm?spm=a1z0d.6639537.1997196601.13.119e7484FcxYWy&id=610617969641

3. https://item.taobao.com/item.htm?spm=a1z0d.6639537.1997196601.24.119e7484FcxYWy&id=563772167933

 

 

 

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

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

相关文章

正則表達式,终极使用!3个工具,搞定一切

文章前提,本人。不会正则的不论什么语法,仅仅懂一点正则的概念。本人从未自己写过正则,都是网上收罗进行改动的。相同。没有时间去研究正则。 可是为了方便,入手了几个工具。 如今就为大家一一展示。 第一个,regexBuil…

VS2017 C++工程 执行python脚本

我解决了哪怕很小的一个问题,我也想记录下来来见证我的经历。 背景: 一、使用libhuru库生成pdf报告 最近参与一些测试工作,希望测试结束后能够根据测试得到的数据和图像自动生成测试报告,最开始调研到了生成报告的库有libharu和…

运行imgui例程

背景:目前在做一个视觉测试系统,需要做一个界面,将相机获取的图像,以及测试过程中的数据呈现在界面上,在我印象里,做界面就用qt吧,直到这个月真要开始做界面了,我的领导给我建议用im…

性能测试总结(三)--工具选型篇

性能测试总结(三)--工具选型篇 本篇文章主要简单总结下性能测试工具的原理以及如何选型。性能测试和功能测试不同,性能测试的执行是基本功能的重复和并发,需要模拟多用户,在性能测试执行时需要监控指标参数,同时性能测试的结果不是…

创建一个最简单的imgui测试用例

在上一篇文章中,我们初步认识了一下imgui,并且成功运行了他提供的demo。这只是开始学习imgui的第一步,在实际使用时,我们需要将imgui应用到自己的工程中去,所以你需要具备将imgui加到你工程中去的能力,简单起见&#x…

idea中maven的setting.xml的配置

2019独角兽企业重金招聘Python工程师标准>>> <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&qu…

[精华][推荐]SSO CAS单点登录框架学习 搭建详细步骤及源码

1.了解单点登录 SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) &#xff0c;并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用(多个) 3) SSO 认证中心(一个) 2.SSO 实现包含以下三个原则 1) 所有的登录都在 SSO 认证中心进行。 2) SS…

电脑下载的M4A格式文件怎么转换为MP3格式

M4A文件格式并不是一个家喻户晓的名字&#xff0c;与&#xff2d;&#xff30;&#xff13;格式相比&#xff0c;知名度远远落后。但是&#xff0c;这并不意味着它无关紧要&#xff0c;有时候我们下载的音乐可能就是M4A格式的&#xff0c;如果换一个设备播放可能就会出现格式不…

python-for循环

一、功能 for 循环提供了python中最强大的循环结构&#xff08;for循环是一种迭代循环机制&#xff0c;而while循环是条件循环&#xff0c;迭代即重复相同的逻辑操作&#xff0c;每次操作都是基于上一次的结果&#xff0c;而进行的&#xff09; Python for循环可以遍历任何序列…

KindEditor

1、进入官网 2、下载 官网下载&#xff1a;http://kindeditor.net/down.php 3、文件夹说明 ├── asp asp示例 ├── asp.net asp.net示例 ├── attached 空文件夹&#xff0c;放置关联文件attached ├── …

使用realsense t265测试svo2.0视觉里程计

毕业三年了&#xff0c;现在是第二份工作&#xff0c;第一份工作已经结束一年半了&#xff0c;这意味着&#xff0c;我有一年半的时间没有搞视觉SLAM相关的东西了&#xff0c;虽然在第二份工作也是做视觉相关的&#xff0c;但是只是用到一些目标识别和跟踪的知识&#xff0c;并…

面试必问之JVM原理

1&#xff1a;什么是JVM JVM是Java Virtual Machine&#xff08;Java虚拟机&#xff09;的缩写&#xff0c;JVM是一种用于计算设备的规范&#xff0c;它是一个虚构出来的计算机&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令…

InfluxDB学习之InfluxDB的基本操作

InfluxDB提供类SQL语法&#xff0c;如果熟悉SQL的话会非常容易上手。本文就为大家介绍一下InfluxDB的基本操作。 InfluxDB提供类SQL语法&#xff0c;如果熟悉SQL的话会非常容易上手。 一、InfluxDB操作方式 InfluxDB提供三种操作方式&#xff1a; 1&#xff09;客户端命令行方式…

DOS Network一月项目月报

欢迎大家阅读DOS Network第一期项目月报&#xff01;DOS为了跟大家更好的沟通和交流&#xff0c;将在每个月为大家跟进DOS Network项目进展月报。月报主要分为项目研发和社区及营销两个部分。 如果你是刚认识DOS Network预言机网络的新朋友&#xff0c;欢迎查阅往期文章&#x…

lsof详解

from:https://www.cnblogs.com/the-study-of-linux/p/5501593.html lsof (list open files)是一个列出当前系统打开文件的工具。在linux系统环境下&#xff0c;任何事物都可以以文件形式存在&#xff0c;通过文件不仅可以访问常规的数据&#xff0c;还可以访问网络连接和硬件。…

ros rviz显示rosbag中的图像和imu数据

一、rosbag相关的指令 1. rostopic list //列举出系统中正在发布的ros 话题 2. rosbag record -a //录制系统中所有正在发布的ros 话题 3. rosbag record topic1 topic2 .... -o bagname.bag 4. rosbag play bagname.bag //播放bag文件 5. rosbag info bagname.bag //查看…

day1||python

测试题&#xff1a; 0. Python 是什么类型的语言&#xff1f; Python是一种面向对象、解释型、动态类型计算机程序设计语言解释型&#xff1a;程序无需编译成二进制代码&#xff0c;而是在执行时对语句一条一条编译动态类型&#xff1a;在程序执行过程中&#xff0c;可以改变变…

2.7万字还原行业面貌,《2019 AI金融风控行业研究报告》正式上线!...

在金融科技领域&#xff0c;风险控制的重要性&#xff0c;从其关联的金融业务和结合的技术维度可见一斑&#xff1a;风控涉及信用借贷、保险、支付、供应链金融等场景&#xff0c;并运用了包括生物特征识别、机器学习、自然语言处理、大数据、云计算等多项技术。 区别于美国有…

cs堡垒机使用说明

一、堡垒机介绍 为了保证机房的网络安全&#xff0c;IDC内所有服务器不被允许从办公网直接ssh登录&#xff0c;必须通过跳板机进行间接登录。用户通过跳板机执行的所有命令&#xff08;包括通过跳板机登录的其他机器后的命令&#xff09;都会被保存并审计。 cs是我们登录IDC服…

koa中间件机制详解

转自&#xff1a;https://cnodejs.org/topic/58fd8ec7523b9d0956dad945 koa是由express原班人马打造的一个更小、更富有表现力、更健壮的web框架。 在我眼中&#xff0c;koa的确是比express轻量的多&#xff0c;koa给我的感觉更像是一个中间件框架&#xff0c;koa只是一个基础的…