跳转到主要内容
瑞苏盈科专栏
我与瑞苏盈科板卡的开发故事

AMD开源 Mini-ISP:FPGA图像处理又多了一个开源选择

judy 提交于

文章来源:OpenFPGA

最近,AMD 在 GitHub 上公开了一个名为 Mini-ISP 的项目。这是一个采用 Verilog RTL(SV) 实现、完全运行在 FPGA 可编程逻辑(PL)中的轻量级 ISP(Image Signal Processor)。与很多商业 ISP IP 不同,Mini-ISP 最大的特点是开源,并采用 MIT License,同时项目还提供了测试代码、Python 框架以及 Vivado 集成所需的工程文件。

特点

  • 最小资源利用:始终使用绝对最少的资源。
  • 最大性能:在每秒像素数和延迟方面提供尽可能高的性能。
  • 结果正确:确保在任何情况下输出结果都正确。
  • 可接受的图像质量:图像质量必须能够满足大多数应用的需求,并且在人眼看来是令人愉悦的。
  • 开源:所有代码和测试用例均以宽松的许可协议公开提供。最小资源利用:始终使用绝对最少的资源。
  • 最大性能:在每秒像素数和延迟方面提供尽可能高的性能。
  • 结果正确:确保在任何情况下输出结果都正确。
  • 可接受的图像质量:图像质量必须能够满足大多数应用的需求,并且在人眼看来是令人愉悦的。
  • 开源:所有代码和测试用例均以宽松的许可协议公开提供。

https://amd.github.io/mini-isp

一个“Mini”的 ISP

Mini-ISP 的设计目标非常明确:尽可能少的 FPGA 资源,获得尽可能高的吞吐率和尽可能低的延迟,同时保证基本可接受的图像质量。 官方将其设计理念概括为 Minimal Resources、Maximal Performance、Correct Results、Acceptable Image Quality 和 Open Source。它并没有试图把商业 ISP 中所有复杂算法都塞进去,而是主动进行取舍,优先选择适合 FPGA 流式处理的算法。

目前 Mini-ISP 已经实现了 Decompanding、Black Level Correction、Digital Color Gain、Bayer Demosaic、Color Correction Matrix 和 Gamma LUT 等功能,而镜头阴影校正、自动曝光、自动白平衡、降噪、局部色调映射等功能并未实现。这样的取舍非常值得注意,因为许多需要较大图像上下文的算法,在 FPGA 上实现时往往需要消耗大量片上存储和计算资源,因此 Mini-ISP 更强调“足够好”的图像质量,而不是追求一个功能堆满的完整商业 ISP。

接口也考虑了实际集成

Mini-ISP 并不是一个孤立的 RTL Demo,而是按照可以集成到实际 FPGA 视频系统中的方式进行设计。它提供 AXI4-Lite Memory Mapped 寄存器接口用于配置,同时采用 AXI4-Stream Video 作为视频输入和输出接口,因此可以比较方便地与 Vivado 中的其他视频 IP 连接。项目还提供了完整的 Vivado IP 封装和 IP Integrator 集成支持。

Python + RTL:把算法验证也开源了

Mini-ISP 还提供了 Python Framework,用于算法原型开发、仿真以及 Testbench。这意味着开发者不仅可以直接阅读 RTL,还可以在软件环境中验证 ISP 算法,再与硬件 RTL 的结果进行对比。项目本身也提供了 Verilator Testbench、Python Test、Yosys 综合和 Lint 等流程,可以通过 Makefile 直接执行。

这其实是开源 ISP 项目非常重要的一部分。ISP 开发最麻烦的地方之一,就是算法模型、定点化实现和 RTL 结果之间需要不断进行验证。如果只有 RTL,没有算法参考模型,后续调试会比较困难;而 Mini-ISP 同时提供 Python 和 RTL 验证环境,使整个开发流程更加接近现代的软件工程方式。

License

参考文章

Notebookcheck:AMD quietly open-sources costly image processor for FPGAs

https://www.notebookcheck.net/AMD-quietly-open-sources-costly-image-processor-for-FPGAs.1386506.0.html

项目地址

AMD Mini-ISP GitHub

https://github.com/amd/mini-isp

总结

AMD Mini-ISP 的定位其实非常清晰:它不是一个功能全面的商业 ISP,而是一个轻量、流水化、低资源、低延迟、可修改的开源 FPGA ISP。通过 Verilog RTL、AXI4-Stream、AXI4-Lite、Python Framework、Verilator Testbench 以及 Vivado IP 集成,项目覆盖了从算法验证到 FPGA 实现的一整套基础开发流程。