第一章 ZYNQ视频图像处理系统
1.1视频图像系统
在我们的日常生活中,视频图像系统随处可见,比如家用的网络摄像头、汽车上的行车记录仪、十字路口的道路监控、口腔医院的内窥镜、户外拍摄用到的大疆无人机、GoPro运动相机等。
除了上面那些常见的场景之外,视频图像系统也广泛应用在一些我们接触比较少的领域,例如国防、环保等领域。像枪瞄、红外导引头、电子吊舱、高分卫星这些都离不开视频图像系统。
图 1.1.1 视频图像系统的部分应用场景
从上图可以看出,视频图像系统在我们生活的方方面面都发挥着重要作用,可谓是——远看边防,近看老王;家有娇娘,不得不防。下面给大家介绍一款防老王神器:
图 1.1.2 小米网络摄像机拆解
上图是小米网络摄像机(IP Camera)及其拆解后的主板,它的主控芯片SSC323是星宸科技的一款IP Camera SoC。图中红色箭头指示出芯片私印上的ARM标志,说明它是以ARM为核心的SoC。
磊哥没有找到更多关于SSC323芯片的资料,但是找到了一个基于SSC335的网络摄像头解决方案,如下图所示(人形侦测算法跟踪,星宸科技SSC335摄像头解决方案!_哔哩哔哩_bilibili):
图 1.1.3 芯智云城的SSC335 网络摄像头解决方案
该方案的系统框图如下所示:
图 1.1.4 芯智云城IP摄像头方案的系统框图
在该系统中,光信号通过镜头输入,由CMOS图像传感器采集后输出数字图像给SoC,在SoC中完成图像处理及压缩编码,然后按照网络协议通过WIFI模组上传到互联网。
该方案中的SOC主控芯片是星宸科技的SSC335,它同样是一款IP Camera SoC。其应用处理器基于ARM Cortex-A7,集成了图像信号处理器(ISP),H.264/H.265视频编码器,内置10/100M以太网MAC和PHY,以及64MB DDR2存储器。
除了星宸科技之外,海思、瑞芯微、联咏、君正等厂商也都有针对视频图像应用的SoC芯片,而AMD的ZYNQ系列同样是以ARM为核心的SoC。本文主要讨论基于ZYNQ的视频图像处理,那么第一个问题就是,什么时候需要用到ZYNQ做图像处理?
换句话说,我们为什么要选择ZYNQ SoC做图像处理?
1.2 ZYNQ视频图像处理系统
2016年11月16日凌晨,大疆在洛杉矶发布了一款名为“悟”Inspire 2的专业影视航拍无人机,如下图所示:
图 1.2.1 大疆“悟”Inspire 2 无人机及其拆解图
“悟”Inspire 2无人机的设计突破在于机身集成了名为CineCore 2.0的影像处理系统,它具有强大的影像处理能力。将其拆解后,可以看到图像处理板上使用的是ZYNQ 7000系列的SoC——XC7Z045。
图 1.2.2 大疆“悟”Inspire 2 无人机图像处理板
除了用于无人机上的影像处理系统,ZYNQ SoC在红外图像处理中也有着广泛应用,如下图所示:
在图 1.2.3左侧的短波红外摄像头模组中,同样使用了ZYNQ 7000系列的SoC芯片(XC7Z020)作为主控制器。接下来我们就以红外摄像头为例,介绍ZYNQ用于视频图像处理的优势。
由于受到制造工艺水平和材料生产技术的限制,红外探测器的可靠性、性能稳定性与可见光系统存在极大差距。首先,红外探测器对噪声极为敏感,同时受环境温度影响较大,并且其响应普遍存在较为严重的非均匀性。这些因素导致红外成像系统的开发具有较高的技术门槛,而不同厂商(如高德红外、艾睿光电等)针对各自的红外探测器开发了不同的红外图像处理算法。
图 1.2.4 红外热像仪用于工业测温
由于红外图像处理算法与可见光系统常用的ISP(图像信号处理器)有着较大差异,且很少有专门针对红外探测器的SoC芯片,因此通常将其部署在FPGA中。FPGA能够为红外探测器提供严格的时序控制,同时其并行性可以实现实时的图像处理。除此之外,FPGA的灵活性也方便厂商去快速更新模组中的图像处理算法(相较于ASIC),获得更好的红外成像质量,从而保持产品在市场上的竞争力。
但是,中国有句老话:Every coin has two sides。FPGA很难实现复杂的软件应用,例如精美的UI界面、文件系统、视频的压缩编码,或者通过网络/USB进行视频传输等。因此出现了FPGA+ARM的成像系统架构,由ARM的硬件编码器和操作系统来处理通信等问题。
ZYNQ系列SoC就是在单个芯片中集成了以ARM为核心的处理系统(Processing System,PS),以及等价于一片FPGA的可编程逻辑(Programmable Logic,PL);PL和PS之间采用了工业标准的高级可扩展接口(Advanced eXtensible Interface,AXI)连接,其架构如下图所示:
图 1.2.5 ZYNQ 7000 SoC芯片架构示意图
ZYNQ的PL部分可用于实时数据处理,PS可用于实现复杂软件应用,这种架构非常适合用于视频和图像处理应用。比如磊哥接触过的一款医用内窥镜,主控芯片为ZYNQ MPSoC,PL部分用来实现4K高清视频的实时图像处理;PS部分运行操作系统,实现UI界面、视频存储,以及网络传输等功能。此外还有某型号无人机上的电子吊舱,同样是基于ZYNQ MPSoC,进行超大分辨率(10亿像素)的视频采集与图像处理。
本文主要讨论基于ZYNQ 7000系列SoC的视频图像处理,整个系统的架构如下图所示:
图 1.2.6 ZYNQ视频图像处理系统架构
图 1.2.6中使用的摄像头有两款,一款是大家比较常见的可见光摄像头OV5640;另外一款是红外探隐工作室推出的红外摄像头TN256,分辨率为256×192,光谱响应波段为 8~14um,如下图所示:
图 1.2.7 TN256红外摄像头
在下一章我们会详细介绍《ZYNQ视频图像处理》的系统架构,以及如何借助Vivado的Block Design快速搭建该系统。本教程配套的视频后续也会在B站更新,感兴趣的同学可以关注UP主:大磊FPGA,交流学习加QQ:2687871036