概述
目前实时图像处理的硬件主要是 FPGA、GPU 和 DSP 三类。从笔者的开发经验来看,FPGA 以其实时性和灵活性占据主流;GPU 虽然不及DSP应用广泛,但是随着开发技术逐步升级和性能逐步提升,以及 DSP 技术自身的没落(个人观点,不讨论),GPU 在某些特定场景下可能是更优于 FPGA 的首选。
本系列文章主要说明基于 Xilinx FPGA 的实时图像处理。虽然 FPGA 开发用的 HDL 语言与 Intel FPGA(前身 Altera)通用,但是比较开发工具软件差异的话,还是 Xilinx 开发效率更高。
相关程序的开发软件环境为:
- Vivado 2018.2.1 System Edition
- Matlab 2017b
算法中的计算部分主要使用 Vivado 中的 System Generator 工具软件(下文简称sysgen),其具体使用方法见Xilinx官方文档:UG897 和 UG958。
sysgen 的开发基于 Matlab 的 Simulink 环境,使用 Xilinx 提供的功能模块在图形化界面进行 FPGA 开发,从原理上来说是使用图像化的功能模块来模拟 HDL 语言的功能。
Xilinx 的原文说的是 Model Based DSP Design,虽然主要应用于 DSP(数字信号处理),不是ISP(Image Signal Processing),但是数字图像也是数字信号的一种,计算方法和原理差异不大。
使用 sysgen 的好处在于直观的图形开发环境以及与 Matlab 环境的完美融合,在仿真激励的生成和仿真结果分析时可以直接使用 Matlab 强大的数学计算库。相比较传统的基于 HDL 的仿真使用数据文件进行数据导入导出后才能进行仿真处理,sysgen 可以将这部分过程直接融入仿真流程,大幅减少了仿真的工作量。但是 sysgen 相比较灵活的 HDL 语言,也有一个比较大的劣势在于很难实现复杂的 FPGA 逻辑(比如状态机)。
除了 sysge