008-关于FPGA/ZYNQ直接处理图像传感器数据输出的若干笔记(裸板采集思路)

news2024/12/23 18:18:47

文章目录

  • 前言
  • 一、图像传感器厂商
  • 二、图像传感器的参数解析
  • 三、图像传感器中的全局曝光和卷帘曝光
  • 四、处理传感器图像数据流程
    • 1.研究当前图像传感器输出格式
    • 2.FPGA处理图像数据
  • 总结


前言

最近也是未来需要考虑做的一件事情是,如何通过FPGA/ZYNQ去做显微镜图像观测下的图像采集传输与后续的处理。目前显微镜观测领域通常是以PC端连接工业相机接口,这个接口可以是USB3.0,可以是网口,也可以是其它传输方式。常常通过工业相机输出的为视频流数据,厂商会提供对应的协议,只需要用他们的软件去进行控制即可,但这种方式,明显不自由,也会受一些限制。如果能够做一款自己的工业相机出来,是不是会把这种限制给解决。

当然,这个要解决的问题需要很多,我最近也在研究和调研这个方向的知识。目前国际上做图像传感器做的比较好的有很多厂商,外国的厂商是占据明显优势的,当然我们国内的厂商也不容小觑,豪威,格科微,思特威,长光辰芯,锐芯微蓬勃发展。就显微镜图像观测这个领域,国内也在不断的发力,相信在未来能取得更大的发展。未来我或许也会从事这个行业的工作,希望能为国产显微镜这个领域,贡献出自己的一份力量,虽说道阻且长,但是一辈一辈人的奋斗,总能够在未来取得成效。为了让更多人了解这个方向和市场,更多的发散自己的思维,今天决定写这篇文章简单的将一些知识做一些汇总,后续如果有一些成果我也会与大家分享一下(碍于是为平台做的设计,所以核心的东西没有办法分享,但是思路是共享的)


一、图像传感器厂商

从CIS供应商来看,索尼和三星一直都是属于图像传感器行业的龙头老大,据网上搜到的数据和信息,2020年索尼在销售额占比约为40%,三星22%,国内的龙头豪威占12%,ST占6%,国内格科微占4%,安森美占4%,SK海力士占2%,思特微占1%。前十里面有三家国产的CIS厂商,总共营收占比合计17%。国内还有一些做的比较好的图像传感器厂商,例如长光辰芯,瑞芯微等等。

我们不评价整体大的市场形式,但国产化肯定是未来中国市场的主流,无论是FPGA,ZYNQ还是各类芯片(包括图像传感器),经历了卡脖子事件,我相信无论是国家还是各个企业,都已经在筹备许多器件国产化的替代。这个过程虽然会比较漫长,但是未来肯定是我们主要投入心思进去的一个方向。

在做这个图像传感器数据采集的过程,既然sony这个品牌卖的最好,销量最高,就先要搞清楚人家的一个参数,对比外国产品和国内产品的一个差距,只能说,人家确实做的不错,产品面也做得很全。这方面网上有很多调研,今天写这篇文章的主要目的不是这个。

二、图像传感器的参数解析

1、分辨率:相机能够输出像素点的多少,比如分辨率为4096*4096,则代表感光区域为正方形,边长为4096个像素点。

2、光学尺寸:传感器的大小

3、像素尺寸:传感器中像素点的宽度和高度尺寸大小

4、感光面积:相机或传感器上光敏元件的面积大小,通常以平方毫米为单位

5、快门类型:卷帘快门或者全局快门

6、峰值量子效率:特定条件下,光电器件再单位时间内能转换为电信号的最高效率

7、满阱容量:是指填满一个像素所需要的电子数,因此更大的像素面积将容纳更多的电子数

8、输入时钟频率:同步电路中时钟的基础频率

9、读出噪声:相机测量它在一次信号采集中捕获到的每个像素的光子数量时,总是存在一定程度的误差,这种不准确性被称为读出噪声

10、暗电流:镜头无光线透过的条件下观测到的电流,是传感器成像过程中的一种非理想因素

11、动态范围:相机能够捕捉到的最大和最小亮度的比率

12、最高帧率:每秒能够采集并输出的最大帧率

13、输出接口:LVDS,MIPI接口等等,高速图像数据传输接口

14、最大数据率:Gbps/s这种格式,每秒能传输多大的像素数据量。

15、色彩:彩色数据或者黑白数据

16、功耗:传感器运行过程中消耗的功率

17、供电电压:传感器正常工作的电压大小

18、封装形式:具体的封装规格

三、图像传感器中的全局曝光和卷帘曝光

一般而言,CCD相机是全局曝光,而CMOS相机则存在卷帘曝光。

全局曝光就是光圈打开后,整个图像芯片同时曝光,因此曝光时间与机械的开关速度有关,那么就存在理论上的最小曝光时间。

卷帘曝光的方式与卷帘概念相关。这种方式是光圈打开后,还存在具有一定间隔的卷帘来控制传感器的曝光时间。卷帘的方式是从左到右的。因此,曝光时间长短完全取决于卷帘的开口大小与卷帘的运动速度,也就是说卷帘运动的越快,眷恋间距就越小,其传感器的曝光时间就越小,因此意味着卷帘曝光方式能够有更小的曝光时间。

全局曝光优点是所有像素点同时曝光。缺点是曝光时间存在局限,存在机械极限的最小曝光时间。

卷帘曝光的优点是具有更小的曝光时间。其缺点是由于逐行的是在不同时间进行曝光取向,如果图像是高速运动的,则存在明显的拖影。因此,卷帘曝光不适合拍摄高速运动的物体。

总结来说就是对于拍摄运动速度快的物体全局曝光有优势,静态物体卷帘曝光速度快,曝光时间短。无论何种方式,FPGA都能够进行处理,像素点的输出方式已经确定了,只需要采集数据即可

曝光时间的问题就是相机采集图像过程中的两个部分。第一部分是曝光,第二部分是曝光后,从传感器的寄存器中读出数据并传送出去。曝光时间越长,拍摄速度越慢,但是曝光时间越短,进光量就会变少,此时就需要调大光圈,增加光照,才能保证图像的亮度。
在这里插入图片描述
逐行曝光sensor 实现如上图逐行曝光模式所示。与全局曝光不同,逐行曝光从第一行开始曝光,一个行周期之后第二行才开始曝光。依次类推,经过N-1 行后第N 行开始曝光。第一行曝光结束后开始读出数据,读出一行需要一行周期时间(含行消隐时间)。至第一行完全读出后,第二行刚好开始读出,依次类推,当第N-1 行读完后,第N 行开始读出,直到整幅图像完全读出。逐行曝光的sensor 技术难度较全局曝光sensor 低,价格便宜,且分辨率较大,对于一些静态图像拍摄是不错的选择。

全局曝光Sensor的所有行同时开始曝光,并同时结束曝光,在曝光结束后,Sensor将所有电子从感光区转到存储区,之后逐行地读出像素数据。这样曝光的好处是获得图像每一行的曝光时间比较一致,并且在拍摄运动物体时图像不会出现偏移和歪斜。

不管是全局曝光还是卷帘曝光,我们都不用担心FPGA采集的问题。这两者的区别主要是在于针对的方向不同,全局曝光在动态物体运动拍摄上有优势,但是存在机械限制,卷帘曝光的帧率可以很高,但是拍摄速度快的物体就容易出现重影的问题。

四、处理传感器图像数据流程

1.研究当前图像传感器输出格式

一般的图像传感器输出方式都是LVDS信号输出,我们需要做一个图像传感器底板,让图像传感器芯片能够正常工作,并且将图像传感器能够输出的信号接口引出底板,以FPC排线的方式或者直接集成到我们的主控FPGA上。以我的板子为例,由于只有mipi2lane的接口,因此就需要将lvds转成2lane的mipi接口数据,在板子上进行解析。

一般的图像传感器都会说明数据传输的格式,以下图为例,图中的左下角就是数据流的输出接口,通过搜集手册也可知道其属于CSI的接口,我们就可以用MIPI接口进行数据的解析,这个过程需要我们进行数据的采集和解包,具体的拆解过程要对照图像传感器芯片手册的输出格式来。
在这里插入图片描述
再例如下图,这个芯片就采用lvds 8通道输出,我们就需要对照其输出格式做一个lvds的传输底板,再转换成我们能接收的数据解码。这个过程一定要对准好,完成了数据的解析基本上工作就已经完成了一大半了(前提是底板电路做好了,而且你高速接口板子也没什么问题)
在这里插入图片描述

2.FPGA处理图像数据

LVDS图像采集主要分为几个阶段:

1、图像数据源的行程

2、数据信息的处理和缓存

3、帧数据的转发。

图像传感器作为图像数据的来源,为系统提供高分辨率的可见光和红外图像,考虑系统的实时性和高可靠性因素,一般的图像传感器都是采用LVDS接口实现数据长距离高速传输,解决传输瓶颈的问题,图像数据进入FPGA之前通过数据格式转换接口,采用MAX9218实现,将串行的数据转换成并行数据接口(这个是网上的一种方案,真正可实现的方案有很多,选择最适合你的去做,我也在学习之中,后期有好的方案会分享)。

高速图像传感器➡LVDS接口板➡接口转换➡接受缓存➡乒乓存储➡图像缓存显示。
最难的就是图像数据及相关参数信息的采集、缓存、组帧和图像数据的转发。FPGA根据图像源中帧同步、行同步、图像选择信号接收解串图像,存储至缓存区,并将图像附带的参数信息写入缓存后部,经组帧状态机形成所需的图像数据帧。

数据帧被FPGA进行解码以后再通过一系列的图像处理方式。比如如果是8bit的bayer数据输出,就需要经过时钟域同步,反马赛克,bayer转rgb888,rgb888转ycbcr等等一系列的操作,这些操作主要是为了获得我们所需的图像数据。若你想存储至PL端,则通过MIG核实现数据存储至DDR中,若你想存储到PS端,则通过AXI_DMA将数据传输至PSDDR,后续想要做一些图像的传输就通过PS端以太网,或者USB接口传输数据。


总结

今天吃的是湖南大碗菜,不得不说,农家一碗香就是嘎嘎好吃

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

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

相关文章

VUE2/3:element ui table表格的显隐列(若依框架)

若依框架自带一个组件,封装了关于表格,展示和隐藏表格列的功能; 使用效果就是这样的,在表格上面,三个框,从左到右分别是隐藏上面搜索,刷新列表,和显隐列的功能; 一、下面…

基于 Spring Boot 支付宝沙箱支付(Java 版本)

基于 Spring Boot 支付宝沙箱支付(Java 版本) 步骤第一步:使用支付宝账户登录,打开控制台,进入沙箱环境第二步:配置内网穿透账号第三步:引入支付宝 SDK第四步: 配置 SpringBoot第五步…

【elastic search】JAVA操作elastic search

目录 1.环境准备 2.ES JAVA API 3.Spring Boot操作ES 1.环境准备 本文是作者ES系列的第三篇文章,关于ES的核心概念移步: https://bugman.blog.csdn.net/article/details/135342256?spm1001.2014.3001.5502 关于ES的下载安装教程以及基本使用&…

探秘人工智能大会:揭示未来技术发展趋势与学习之道

随着科技的飞速发展,人工智能(AI)已经逐渐渗透到我们生活的方方面面。 参加人工智能大会,不仅能够洞察到最前沿的技术动态,还能与业界专家、学者交流思想,共同探讨AI的未来发展。本文将带您探秘人工智能大…

SAP一次查看多张凭证明细SQ03

1、在SAP中通过FB03可以查看所有的凭证清单,但是如果想一次性查看多张凭证的行项目明细,通过SAP的查询功能SQ03来查询 首先,通过SQ03,给用户组,输入“/SAPQUERY/GL”,回车 2、通过SQ02,菜单栏的…

重建传播网络并识别隐藏来源

1.摘要 我们从数据中揭示复杂网络结构和动态的能力,对于理解和控制复杂系统中的集体动态至关重要。尽管在这一领域已有近期进展,但如何从有限的时间序列中重建具有随机动态过程的网络仍然是一个突出问题。在这里,我们开发了一个基于压缩感知的…

大语言模型面试问题

自己在看面经中遇到的一些面试题,结合自己和理解进行了一下整理。 transformer中求和与归一化中“求和”是什么意思? 求和的意思就是残差层求和,原本的等式为y H(x)转化为y x H(x),这样做的目的是防止网络层数的加深而造成的梯…

k8s动态PV

当发布PVC之后可以生成PV,还可以再共享服务器上直接绑定和使用PV 动态PV需要两个组件: 存储卷插件,k8s本身支持的动态PV创建不包括NFS,需要声明和安装一个外插件 Provisioner:存储分配器。动态创建PV,然后…

互联网加竞赛 基于大数据的社交平台数据爬虫舆情分析可视化系统

文章目录 0 前言1 课题背景2 实现效果**实现功能****可视化统计****web模块界面展示**3 LDA模型 4 情感分析方法**预处理**特征提取特征选择分类器选择实验 5 部分核心代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于大数据…

【笔记】Blender4.0建模入门-1、2

Blender入门 ——邵发 1.1 课程介绍 Blender,一款3D建模软件,小乔、免费、全流程 常见的3D建模软件: - 3DsMax/Maya/Blender/Cinema4D/ZBrush...游戏影视 - Proe/Solidworks/Inventor/UG...工业建模 - SketchUp/Rhino/Revit...建筑设计 …

OpenWRT部署web服务并结合内网穿透实现公网远程访问内网网站

文章目录 前言1. 检查uhttpd安装2. 部署web站点3. 安装cpolar内网穿透4. 配置远程访问地址5. 配置固定远程地址 前言 uhttpd 是 OpenWrt/LuCI 开发者从零开始编写的 Web 服务器,目的是成为优秀稳定的、适合嵌入式设备的轻量级任务的 HTTP 服务器,并且和…

《剑指 Offer》专项突破版 - 面试题 8 : 和大于或等于 k 的最短子数组(C++ 实现)- 详解同向双指针(滑动窗口算法)

目录 前言 一、暴力求解 二、同向双指针(滑动窗口算法) 前言 题目链接:. - 力扣(LeetCode) 题目: 输入一个正整数组成的数组和一个正整数 k,请问数组中和大于或等于 k 的连续子数组的最短…

HMM算法(Hidden Markov Models)揭秘

序列数据 机器学习的数据通常有两类,最常见的是独立同分布数据,其次就是序列数据。对于前者,一般出现在各种分类/回归问题中,其最大似然估计是所有数据点的概率分布乘积。对于后者,一般出现在各种时间序列问题中&…

【Vue2】展开收起功能

一. 效果图 默认收起 点击展开 二. 实现 <template><div :class"showAll ? search_content : search_content_active"><span v-for"(item, index) in defaultTagsList" :key"index">{{item.name}}</span><div c…

vue前端开发自学demo,父子组件之间传递数据demo2

vue前端开发自学demo,父子组件之间传递数据demo2!实际上&#xff0c;组件之间传递数据的&#xff0c;数据类型&#xff0c;是可以多种多样的&#xff0c;下面为大家展示几个常见的数据类型&#xff0c;比如数字类型&#xff0c;数组类型&#xff0c;对象类型。 代码如下所示&a…

网上流量卡的硬核知识(二),让我们一口气了解

越来越多的关注小编平台的小伙伴问我&#xff0c;流量卡容易注销吗&#xff1f;为什么第一次在网上办的卡需要专属首充&#xff1f;我今天一次性给大家详细的讲明白&#xff0c;让大家再无后顾之忧&#xff0c;好好的过个年。 工信部要求2019年1月1日起在全国正式提供手机卡异地…

el-select 单选时,选择后输入框的is-focus状态并没有取消

前两天在封装组件的时候&#xff0c;发现el-select 单选时&#xff0c;选择后输入框的is-focus状态并没有取消&#xff0c;需要手动点其它地方才会取消&#xff0c;于是想着找找为什么 一、通过调试源码发现&#xff0c;输入框在点击选项后触发blur&#xff0c;紧接着又触发了…

Android SDK环境搭建[图解]; 解决问题Done. Nothing was installed.

安装SDK Android SDK环境搭建 依赖java环境,需要自备Java环境 (100%实操成功) 目录 1. 解压&#xff1a;解压到非中文无特殊字符的目录 2. 双击&#xff1a;SDK Manager.exe&#xff0c;不要选全部!不要选全部!不要选全部!(会下很久) 3. 然后勾选组件​ 4. 设置环境变量 …

linux内核调试之魔术键sysrq

linux内核调试之魔术键sysrq 1 sysrq简介 sysrq是内核提供的一组魔数组合键&#xff0c;通过该组合键可以直接触发内核的特定功能&#xff0c;如重启系统&#xff0c;设置loglevel等。在内核发生故障时&#xff0c;只要键盘还有响应就可以使用它们触发相应操作。 除了通过键…

ubuntu20.04 扩大交换空间swap

检查当前swap情况 free -msudo swapon --show关闭现有的swap sudo swapoff -a创建一个新的swap文件 sudo fallocate -l 32G /swapfile设定正确的权限 sudo chmod 600 /swapfile下面这个指令会把我们的空间变成可用的swap空间 sudo mkswap /swapfile启用swap文件 sudo swa…