谈谈FPGA工程师如何做ISP

ISP的功能可以简单概括为使后端能正确识别"真实的"世界。凸出真实和有用,这个有用主要是后端需要的信息;真实即使其更加接近现实中人眼所看到的图像。上面特指的可见光,目前红外的应用也越来越多,商业化也会很快来到我们身边,所以红外图像的处理也是我们这篇文章讨论的一部分。

分类

这里我将ISP分为两大种类:

可见和红外,两个种类完全不同的ISP,目前可见光市场基本被ASIC所占据,红外市场则相反,但是这仅仅是目前的状态,据内部消息,目前ASIC市场马上要进军红外sensor,意味着红外的商用和大面积推广也逐渐来到我们身边。

前景怎么样

那么是否FPGA在可见光或者红外领域是否意味着被淘汰?

答案当然是否定的,FPGA在可见光领域还有很多应用:比如特殊分辨率;低延时;医疗;复杂环境等。当然目前相对较火的还是红外领域,或者说,未来可将光和红外的融合也是一大方向。

可见光ISP相关知识分类

光学

ISP和光学息息相关,主要涉及以下几个方面:

sensor的选型一般由光学工程师进行选定(也由总体选定),选择sensor的分辨率,快门的选择一般和应用背景有关;但是视场角、焦距、滤光片等光学特性是由光学工程师进行分析设计,后期的光轴一致性、补光灯类型和位置基本都由光学决定。

当然还有很多东西是由光学决定的,这里就不赘述了,我们这篇文章的核心不是光学。

ISP

本章说明的是以FPGA为核心搭建ISP,这里面其实涉及两部分工作:FPGA算法及ISP工程师标定调参:

sensor配置及数据接入

这部分工作比较"通用",和配置ADC或者DAC工作类似,目前接入FPGA的数据通道常见的就是LVDS(SubLVDS),当然目前MIPI也比较常见,两者接入后的数据流比较相似(物理层不同)。

这里单独说明一下全局快门和卷帘快门输出的数据结构不太相同,对于大靶面的sensor可能还需要拼接后进行后续的ISP的处理。

架构

ISP的架构是核心,常规的1080P60以下用何种架构其实没什么太大区别,但是考虑后续的继承性,兼容更大分辨率(8KP60)还是需要考虑的。

这里主要考虑的一个点是ISP调参接口,FPGA搭建的ISP有个局限性就是修改参数(包括CCM、Gamma等参数)极其浪费时间,所以有必要在搭建架构的时候这部分一定要考虑清楚。传统的方案是通过外挂单片机通过SPI或者其他并行总线进行参数修改标定,目前FPGA内软核或者硬核已经非常成熟了,直接使用内部的资源就可以完成这一操作。

再说一下传统数据流架构的弊端:

前一级处理好的数据通过标准的VESA信号驱动后级数据流流动,属于前级推动后级进行数据流流动,这种架构的优点就是简单,有很多传统的算法都是使用这种方式搭建的,并且后级如果通过VGA或者HDMI接口进行数据输出,那么比较方便。

但是上面的结构有几个我认为比较大的缺点:1、前端sensor的一般通过lvds或者mipi接入,都通过内同步方式进行数据传输,已经没有VS或者HS的概念了,需要经过缓存后才能构建后端所需的信号;2、逻辑级数过大,一级一级的推动容易造成逻辑级数过大;3、带宽利用不够,传统的架构要考虑显示器端的显示,所以会有行场消隐区存在,而ISP中算法对消隐区的时间利用不大,造成带宽利用率不高,这种影响对高分辨率情况尤为明显。

上面就是我认为目前传统架构遇到的问题,而解决方式,可以选择自定义总线(前面有文章介绍过一种类AXI-STREAM总线)或者选用官方总线(AXI)。

算法

架构定义完毕后,接下来就是算法了,ISP中需要哪些算法,之前的文章中也有介绍,这里再说一下几个重要的算法,我这里将ISP中算法简单进行了分类:核心算法、功能算法及3A算法。

核心算法

核心算法当然是后端能够显示或者使用的几类算法,包括:去马赛克、GAMMA、CCM以及降噪。他们几个是保证能出图的关键,尤其对于去马赛克是关键,后续我们会单独出文章讨论这几个核心算法,这里就不赘述了,这几个算法都是需要根据实际情况进行调参,所以在设计算法时候需要将调参接口预留出来。

功能算法

这里主要将黑电平矫正、坏点矫正、RAW域降噪、阴影矫正、紫边矫正、锐化、饱和度、对比度等算法归于功能算法,这些算法是适用于不同环境进行参数调整,使图像更加符合预期。

3A算法

3A算法是动态调整图像的亮度、白平衡以及焦距,使摄像头能够在不同环境下自动切换相关参数。

这里说一下和架构相关的知识,就是3A算法怎么实现?传统的架构是适用外挂单片机,让单片机去实现3A算法,这样的好处就是把工作分出去了,无需浪费时间去实现算法。但是这种架构对于高帧率情况无法及时进行处理(单片机和FPGA之间的总线有限制),所以目前可选软核或者硬核实现3A算法。

标定和调参

上面的工作是FPGA工程师需要做的事情,剩下的其实才是ISP工程师需要做的事情,对图像进行标定和调参,目前有很多专业软件进行辅助工作(人眼还是不靠谱~),大部分公司有专业的ISP工程师,把上面所有的算法暴漏出来的参数进行调节,可以把图像调节的"更讨喜"。

数据输出

这个就没什么可以说的了,输出有很多种形式,包括但不局限于VGA、HDMI、光口等。

伺服

伺服的工作我就简单说一下:

主要包括两方面,一个进行聚焦时候调节焦距的电机,要"稳准快";还有一个可能不太涉及到的方面就是大型光电中的稳像。上面需要的信息也是需要通过ISP将相关统计信息传给伺服进行设计的。

总结

洋洋洒洒写了个流水,核心就几个,FPGA工程师只实现ISP架构和算法,剩下的工作还进行几方面的分类,如果要做,你要清楚自己需要做哪几方面内容。当然还是去卷红外吧,卷完红外卷红外和可见融合,玩的就是多方面发展~

优秀的 Verilog/FPGA开源项目介绍(二十六)- ISP (图像信号处理)

ISP算法及架构分析介绍

相关推荐
FPGA_无线通信1 小时前
FPGA 组合逻辑和时序逻辑
fpga开发
Js_cold2 小时前
Xilinx FPGA温度等级及选型建议
fpga开发·fpga·vivado·xilinx
从此不归路3 小时前
FPGA 结构与 CAD 设计(第5章)上
fpga开发
洋洋Young4 小时前
【Xilinx FPGA】7 Series Clocking 设计
fpga开发·xilinx fpga
156082072194 小时前
FPGA下AD采集时钟相位的调整
fpga开发
从此不归路4 小时前
FPGA 结构与 CAD 设计(第5章)下
fpga开发
Js_cold7 小时前
Xilinx FPGA Flash启动时钟频率
单片机·嵌入式硬件·fpga开发·vivado·xilinx·flash·cclk
博览鸿蒙1 天前
FPGA的学习路径和入行指南
fpga开发
ShiMetaPi1 天前
GM-3568JHF丨ARM+FPGA异构开发板应用开发教程:01 UART读写案例
arm开发·单片机·嵌入式硬件·fpga开发·fpga·rk3568
楠了个难1 天前
AXI4接口简介——ZYNQ学习笔记24
笔记·学习·fpga开发