线扫相机——机器视觉中无限制物体的检测(重要转载)

news/2024/7/21 4:16:13 标签: 图像处理

在机器视觉中,在检测连续物体或者滚动物体时,线扫相机是最佳的解决方案。通常,它们能提供很高的分辨率,因为它们要求很高的速度和数据率。

一、多条窄带拼成一副图像

线扫相机只抓取一行作为图像发送到电脑,主机电脑将所有的行进行组织拼接。如果不停止抓取,几乎可以创建一个无限大的图像。在印刷行业、纺织、旋转或者移动物体的检测应用时,线扫相机是最佳的解决方案。

详解线扫相机

1.线扫相机的历史

可以检测黑白单线CCD芯片随着传真机第一次进入市场。事实上,目前大部分文件扫描仪依然基于这个原理。这种情况下,条状传感器是位于物体下方的。随着传感器的微型化和分辨率的提高,传感器已经进一步远离物体。今天,线扫相机被集成到传统相机上,可以搭配标准的镜头进行操作。

2.线扫相机的光学设计

(1)相机—物体关系

人眼或者标准的照相机在一个时刻获取一幅图像,对于静止物体和运动物体是没有区别的。同一时刻,所有的图像数据都会被收集。

线扫相机需要物体或者相机运动,最后的图像大小一方面取决于相机的分辨率,另一方面取决于主机拼接的线数。有两种搭建线扫相机的方式:

相机静止,物体运动

相机运动,物体静止

相机和物体同时移动,在大多数场合下没有意义。

线扫相机一次只取图像的一行,随着被检测物体运动,一行接一行地采集,因此用线扫相机采集的一个2D图像的每一行都是在不同时间点采集的。这与面阵相机来或者人眼采集图像在机器视觉软件理解的意义上来说,是不一样的。

(2)线扫镜头

从上到下文件扫描仪对比,线扫相机需要镜头,这与面阵相机是完全相同的。但是作为线扫相机,提供很高的分辨率(最高16K/线),相机需要拥有高质量镜头与合适的MTF。

(3)线扫光源

与面阵相机最大的不同就是光源的搭建,为了获取相同的行(物体运动很快),你必须要照亮一条线,但由于速度很快(一般在us级别),因此线扫相机经常需要很高亮度的光照(高达1000000lux)。

3.读取和抓取

因为芯片只抓取一行,相比大的面阵相机,读取这些数据就很简单了。不管是用CCD还是CMOS技术都没有什么区别,当分辨率高且运动速度很快时,数据频率也是很高的,你需要一个抓帧器(通常称为采集卡)来读取相机的数据到电脑。

(1)线扫需要脉冲

使用线扫相机的一个决定性的特点就是可以构建很大(无限)的图像。在高频下,一些非常细窄的线被拼接到一条线上,为了解决这个问题,与运动物体经过的速度保持同步来抓取这些线很重要。大多数场合下,与传送带集成在一起的脉冲发生器(也就是我们说的编码器)产生脉冲信号传递到相机。这样,相机的线频率就与物体的速度一致了。

4.多行线扫相机

除了上面谈到的单线的线扫相机外,也有其他线数的相机:

(1)多行线扫相机

双线或者更多线的相机有更高的同步要求,增加了物体可能的最大速度,在HDR模式下提高了图像的动态范围。

TDICCD线通过芯片显著地拓宽了线扫相机的动态范围。

(2)彩色线扫相机

像大面阵相机一样,线扫相机可以搭配单色(Monochrome)或者彩色(Color)的芯片。RGB的过滤片作为Bayer 模板覆盖在像素上,或者分布在线上。这些线分配了特定的颜色,通常在过滤片的下面。生成的原始图像作为单色信息传输,然后在采集卡上转换为彩色图像。

另一种选择,2条或3条线,每条线指定了颜色,被用于彩色线扫相机。这种配置的问题是作为同一个像素的颜色不得不考虑对象相关的时间差异。好处是,一种颜色的分辨率是芯片的全分辨率。

NEopt允许将双线相机配置为只有两个颜色,这种情况下,红色和蓝色两种颜色构成不如说是两个相机。

NeOpt NCAM2-BRLD-08K07CL光谱灵敏度

5.线扫相机速率和分辨率

就像大面阵相机一样,线扫相机的速率由接口决定,通常的接口如GigE 和CameraLink。速率可以通过线的水平分辨率(线的总像素个数)和每秒的线数计算出来,表达为行频kHz/行/s。

例子:NCAM2-BLS,Camera Link接口:8K,70kHz

每秒采集70,000行,如果用在100km/h的传输带和一米宽的物体上,可以推算出垂直方向的分辨率0.125mm/s,水平方向的分辨率0.514mm/s


http://www.niftyadmin.cn/n/5019789.html

相关文章

Java笔记:Volatile

一、简介 volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级…

JAVA怎么进行内存管理? - 易智编译EaseEditing

Java使用自动内存管理系统,主要通过垃圾回收器(Garbage Collector)来进行内存管理。这意味着开发人员不需要手动分配或释放内存,而是让垃圾回收器来处理不再使用的对象的内存释放。以下是关于Java内存管理的一些重要概念和建议&am…

SAP MM学习笔记30 - 未割当供给元的购买依赖

前面学习了 购买依赖,购买依赖的供给元决定等内容。 SAP MM学习笔记27- 购买依赖(采购申请)_东京老树根的博客-CSDN博客 SAP MM学习笔记28- 供给元(供货源)决定_东京老树根的博客-CSDN博客 这些都是说 SAP 能决定得了…

运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar

朋友 我当你一秒朋友 朋友 我当你一世朋友 奇怪 过去再不堪回首 怀缅 时时其实还有 运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar 基本可以断定,是jar不完整导致的。不完整!!!记住关键字 检查1: …

C++算法 —— 动态规划(5) 子序列

文章目录 1、动规思路简介2、最长递增子序列3、摆动序列4、最长递增子序列的个数5、最长数对链6、最长定差子序列7、最长斐波那契子序列的长度8、最长等差数列9、等差数列划分 II 每一种算法都最好看完第一篇再去找要看的博客,因为这样会帮你梳理好思路,…

第四章 Linux常用命令

第四章 Linux常用命令 1.Linux命令 ​ 要使用命令,必须先启动Shell程序。用户可以通过桌面右键打开终端,或使用CtrlAltT组合启动Shell,当然也可以从左侧dock面板上找到终端图标打开,打开后如下图: ​ Shell命令由命令…

leetcode做题笔记134. 加油站

在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas 和 cost &…

软件设计师(八)算法设计与分析

算法被公认为是计算机科学的基石,算法理论研究的是算法的设计技术和分析技术。 一、算法设计和分析的基本概念 1、算法 (Algorithm) 算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条…