【工控】线扫相机小结

2024-08-22 13:36
文章标签 小结 相机 工控 线扫

本文主要是介绍【工控】线扫相机小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景简介

我目前接触到的线扫相机有两种形式:

无采集卡,数据通过网线传输。
配备采集卡,使用PCIe接口。

第一种形式的数据通过网线传输,速度较慢,因此扫描和生成图像的速度都较慢,参数设置主要集中在相机本身。第二种形式的相机配备采集卡,通常速度更快,但由于相机和采集卡都需要配置,操作相对复杂。

在采集卡中,我遇到过两种连接方式:光口和Camera Link。这两种方式的速度更快,但由于需要配置卡和相机,容易出现配置混乱的情况。这次,我以海康的光口相机为例,介绍一些实际应用中的经验(实战为主,理解不一定正确,请各位斧正!)

基础描述

与面阵相机不同,线扫相机每次只能捕捉一行像素,因此需要移动多次扫描,才能构成完整的一帧图像。线扫相机通常配备编码器,实时反馈被观察物体或相机的移动情况。物体的移动会触发编码器发出脉冲,每个脉冲都会触发相机拍摄一行像素的图像。随着物体继续运动,编码器发出更多的脉冲,线扫相机会生成多行像素的图像,最终形成完整的一帧图像。

上面这对话设计到很多的概念,我们根据海康的一款光口相机,一个个的讲。

关于图像的畸变。

线扫相机经常会遇到,图片被拉长或者压瘪, 如何避免这种情况呢?
首先,一个脉冲的触发,意味着物体移动了相应的距离(物体移动触发编码器旋转产生脉冲)。
如果一个脉冲对应距离的大小和一个像素的高度相等,那么图片就会显示正常,会被被拉长或者压瘪

由于一个脉冲对应的距离通常不可能恰好等于一个像素的高度,线扫相机会提供一个分频器(Frequency Divider)。分频器通常设置编码器为信号源,对编码器的脉冲信号进行分配,以确保一个脉冲对应的移动距离与一个像素的高度相等,从而生成正常比例的图像。
在这里插入图片描述
这里我设置了100的分频,图像几乎就是正常的了。(ps: 这里我设置的是相机的参数,而非采集卡的参数,后面会详细介绍。)

帧扫描,行扫描,帧触发,行触发

首先要意识到,扫描和触发是不同的概念。网络上介绍触发的很多,但是没有谈及到扫描这个概念。
在海康的相机配置中这些 ‘概念’ 就有对应的配置,如果不能分清楚这些概念,就会在繁杂的配置中迷失。
采集卡的配置界面

这篇关于【工控】线扫相机小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SQL BETWEEN 的常见用法小结

《SQLBETWEEN的常见用法小结》BETWEEN操作符是SQL中非常有用的工具,它允许你快速选取某个范围内的值,本文给大家介绍SQLBETWEEN的常见用法,感兴趣的朋友一起看看吧... 在SQL中,BETWEEN是一个操作符,用于选取介于两个值之间的数据。它包含这两个边界值。BETWEEN操作符常用

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的

python uv包管理小结

《pythonuv包管理小结》uv是一个高性能的Python包管理工具,它不仅能够高效地处理包管理和依赖解析,还提供了对Python版本管理的支持,本文主要介绍了pythonuv包管理小结,具有一... 目录安装 uv使用 uv 管理 python 版本安装指定版本的 Python查看已安装的 Python

C#中DrawCurve的用法小结

《C#中DrawCurve的用法小结》本文主要介绍了C#中DrawCurve的用法小结,通常用于绘制一条平滑的曲线通过一系列给定的点,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 如何使用 DrawCurve 方法(不带弯曲程度)2. 如何使用 DrawCurve 方法(带弯曲程度)3.使用Dr

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

Spring Security方法级安全控制@PreAuthorize注解的灵活运用小结

《SpringSecurity方法级安全控制@PreAuthorize注解的灵活运用小结》本文将带着大家讲解@PreAuthorize注解的核心原理、SpEL表达式机制,并通过的示例代码演示如... 目录1. 前言2. @PreAuthorize 注解简介3. @PreAuthorize 核心原理解析拦截与

C++变换迭代器使用方法小结

《C++变换迭代器使用方法小结》本文主要介绍了C++变换迭代器使用方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、源码2、代码解析代码解析:transform_iterator1. transform_iterat

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法