谈谈FPGA工程师如何做ISP

点击蓝字关注我们

关注、星标公众号,精彩内容每日送达
来源:网络素材

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

分类

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

a983b2c5b236c8e4a3f025d0a2489066.png

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

前景怎么样

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

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

可见光ISP相关知识分类


20307c15a5f967584b53dfa3ff150921.png

光学

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

4bae4ca7887b68b96bcf3f53e64ee3e6.png

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

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

ISP

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

c517eb9d2a980bcec0d148c34af11434.png

sensor配置及数据接入

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

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

5d606ab76db725599585b518877d8a76.png

架构

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

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

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

8e997e49a50dbfb0a6bcf0d3e23ad312.png

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

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

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

算法

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

d52a236fcdc96b3415a14a2a2c2c2a3b.png f75e75704598200ae4571b6c50a89958.png ed5d29f5bb2201a04839ec8f06f1a53d.png 06c5fa4440543f7d8e8c6d4068728a8e.png

核心算法

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

功能算法

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

3A算法

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

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

标定和调参

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

数据输出

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

伺服

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

473b98429a96ae6b40b3edabedf7166c.png

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

总结

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

d97596fe8be309ad59217a7ad166e17e.png

c13de4e7133a446eae3593e41ed92afe.jpeg

想要了解FPGA吗?这里有实例分享,ZYNQ设计,关注我们的公众号,探索

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值