机器视觉-相机镜头光源介绍及选型-11.采集卡

2024-03-20 09:08

本文主要是介绍机器视觉-相机镜头光源介绍及选型-11.采集卡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

采集卡
=============================================================================================
1.1.定义:
    将视频信号经AD转换成电脑可用数字格式,经PCI总线实时传到内存和显存。
    采集卡传送数据采用PCI Master Burst方式,图像传送速度高达40MB/S,实现图像到内存可靠实时传送,
    几乎不占用CPU时间,留给CPU更多的时间去做图像的运算与处理。

1.2.采集卡基本原理
    PCI总线数据带宽度32/64位,允许系统设备直接或间接连接其上,设备间通过局部总线完成数据快速传送
    由于PCI总线高速度,使A/D转换数字视频信号--缓存器--内存--显示卡显示;
    数据锁存器代替帧存储器,这个缓存起到图像卡向PCI总线传送视频数据时的速度匹配作用。
    另外还有PC104 plus、Compact PCI等总线形式
   
=============================================================================================
2.相关技术名词
DMA(Direct Memory Access)
    是一种总线控制方式,可取代CPU对总线控制,在数据传输时根据数据源和目的逻辑地址和物理地址映射关系,
    完成对数据的存取,减轻数据传输时CPU负担。

LUT(Look - Up Table)
    是一张像素灰度值映射表,将采样到像素灰度值经过变换(阈值、反转、二值化、对比度调整、线性变换)
    变成与之对应的灰度值可起到突出图像信息,增强图像光对比度的作用。
    很多PC系列卡具有8/10/12/16/32位LUT,具体在LUT里进行什么样的变换是由软件来定义

Planar Converter平面转换器
    从4位彩色象素值中将R、G、B分量提取出来,然后在PCI传输时分别送到内存中三个独立Buffer中,方便后续处理
    有些采集卡(如PC2Vision)可在三个黑白相机同步采集时将各自象素值存于主机中三个独立Buffer中

Decimation
    是对原图像进行子采样,如每隔2、4、8、16行(列)取一行(列)组成新图像。
    可减小原图数据量,同时也降低分辨率,类似相机的Binning

PWG(Programmable Window Generator)
    指在获取相机原始图像上开一个感兴趣窗口,每次只存储和显示该窗口内容,减少数据量,不降低分辨率
    采集卡有专门寄存器存放有关窗口大小、起始点和终点坐标,这些数据都可通过软件设置。

Resequencing
    可认为是一种对多通道或不同数据扫描方式的相机所输出数据的重组能力,
    即将来自CCD靶面不同区域或象素点的数据重新组合成一幅完整图像。

Non - destructive overlay非破坏性覆盖
    overlay是指在视频数据显示窗口上覆盖的图形(如弹出式菜单,对话框等)或字符等非视频数据。
    破坏性覆盖:指显示窗口中的视频信息和覆盖信息被存放于显存同一段存储空间内,
        显存中覆盖信息靠CPU刷新占CPU时间,在实时显示时由于不同步而闪烁
    非破坏性覆盖:视频与覆盖信息分别存放于两段不同存储空间,显示信息是两段数据的迭加。
        如果采用“非破坏性覆盖”则可消除这些不利因素。

PLL、XTAL和VScan此为模拟采集卡的三种不同工作模式
    (1)PLL(Phase Lock Loop)模式:
       相机向采集卡提供A/D转换时钟信号,此时钟信号来自相机输出的Video信号,
       HS和VS同步信号可以有三种来源:composite video,composite sync,separate sync;
    (2)XTAL模式:
       采集卡给相机提供时钟信号及HD/VD信号,并用提供的时钟信号作为A/D转换的时钟,
       但同步信号仍可用相机输出的HS/VS;
    (3)VScan模式:
       由相机向分别卡提供Pixel Clock信号、HS和VS信号。

=============================================================================================
3.主要参数

接口制式:
    1)数字(Camera Link、LVDS / RS422、1394、USB)、数字位数
    2)模拟(PAL、NTSC、CCIR、RS170 / EIA、非标准模拟制式)一定与所选用相机一致

模拟采集卡要考虑数字化精度
    1)像素抖动Pixel Jitter
      由采集卡A/D转换器采样时钟误差产生的像元位置上微小错误,导致对距离测量错误

    2)灰度噪音Grey - Scale Noise
      图像采集卡数字化转换过程包括对模拟视频信号放大和对其亮度(灰度值)进行测量
      在此过程中会有一定的噪声和动态波动由图像采集卡的电路产生。
      灰度噪声将导致对距离测量的错误。典型的灰度噪声为0.7个灰度单元,表示为0.7LSB

采集卡的数据率(点频)
    计算数字采集卡的数据率必须满足的要求可按下列公式计算:
    采集卡数据率/点频Data Rate(Grabber)≥1.2×Data Rate(Camera)
    相机数据率/像素时钟Data Rate(Camera)=相机分辨率R×相机帧频f×d / 8 # d为相机数字深度(灰度级)

Memory大小,PCI总线的传输速率
    PCI总线支持BUS Master设备以132Mbps突发速率传输数据。平均持续数据传输率50~90Mbps

    相机数据以固定速率传输,如PCI总线可维持大于视频数据率的平均持续数据传输率,就没有问题
    实际上PCI总线设备只能以突发方式向总线传输数据。图像采集卡必须将每一突发间连续图像数据保存起来
    解决方法采用On-board Memory

    有些厂家出于经济考虑去除Memory而采用数据缓存队列(FIFO),FIFO大小一般以足以保存一行图像数据为限
    然而,当图像数据速率大于PCI持续数据传输率时FIFO就不起作用了

相机控制信号及外触发信号
    (1)外触发:由外部事件启动采集过程。
    (2)同步触发:不改变相机与板卡之间同步关系,采集从下一个场有效信号开始。
    (3)异步触发:改变相机与板卡同步关系,采集从相机复位后第一个场有效信号开始。相机必具备异步触发功能

硬件系统可靠性--平均无故障时间等可靠性指标
    # 经验性的技巧用以评估不同板卡的可靠性,板上的器件的数量和功耗

    (1)选低功耗的采集卡。
        好的设计会采用更多ASIC和可编程器件以减少电子器件的数量,而达到更高的功能。
    (2)选择具有更少的无用功能的卡以减少不必要的麻烦。
        过压保护是可靠性的一个重要指标。接近高压会在视频电缆产生很强的电涌,
        在视频输入端和I / O口加过压保护电路可保护采集卡不会被工业环境电磁干扰会产生的高压击穿。

支持软件功能

总之,采集卡的选择必须以视频源的特点为依据,视频源决定了采集卡。

=============================================================================================

这篇关于机器视觉-相机镜头光源介绍及选型-11.采集卡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/828960

相关文章

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

java如何分布式锁实现和选型

《java如何分布式锁实现和选型》文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zo... 目录引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求