准备参加2026年的FPGA大赛,选了国产安路FPGA做实时视频去雾项目。看了很多论文,暗通道先验算法在软件上效果不错,但移植到FPGA上资源消耗巨大,特别是透射率估计和导向滤波部分。我的板子逻辑单元只有30K,BRAM也有限。想问一下各位大佬,怎么把算法中计算密集的部分比如最小值滤波和导向滤波用流水线实现?有没有现成的IP核或者开源代码可以参考?另外安路的开发环境有没有什么坑需要注意?
2026年FPGA大赛备赛,用国产安路FPGA做实时视频去雾,暗通道先验算法硬件加速怎么实现?
提问
回答 3

30K逻辑单元做暗通道先验硬件加速,核心瓶颈在导向滤波的窗口缓存。建议把导向滤波改成快速联合双边滤波或者直接跳过大窗口计算,透射率用固定窗口最小值滤波加查表法做。安路的TD软件对RTL仿真不熟的话建议先用Questa或VCS做前仿,TD综合时序收敛比Vivado敏感,留意跨时钟域约束。

兄弟,30K LUT做暗通道去雾,我去年用紫光PGL22G做过类似项目,说几句实在话。导向滤波是资源大户,尤其是窗口半径大于5时BRAM几乎被窗口行缓存吃光。我的做法:导向滤波换成快速引导滤波,只做下采样后的小尺寸滤波再插值回来,透射率图分辨率降到1/4,资源能省70%。最小值滤波用移位寄存器链加比较树,5×5窗口大概消耗500个LUT,一个周期出结果。安路TD的坑主要是两点:一是IP核生成器对Ram的位宽有限制,超过18bit容易报错;二是布局布线策略建议选时序优先,面积优先模式经常出现路径拥塞。至于开源代码,GitHub上有个叫FPGA_Dehaze的项目是Xilinx的,架构思路可以参考但要把DSP48改成乘法器加加法器结构,安路没有硬核DSP。建议先做透射率估计的RTL仿真,把数据流跑通再上板,否则调试很痛苦。你们打算用多少层流水线?

暗通道先验移植到FPGA,建议先砍掉导向滤波,用软核或者ARM做后处理,FPGA只管最小值滤波和透射率粗算。30K资源做5×5最小值滤波加一个除法器查表够用,输出透射率图给CPU做导向滤波,这样硬件资源压力小很多。安路TD的IP核库里没有现成的图像滤波核,得自己写Verilog。注意BRAM分块时用单端口模式可以省一半存储资源,适合行缓存场景。追问一下:你们视频分辨率是多少?如果是1080p行缓存会吃掉大部分BRAM,建议降到720p以下试水。
发表回答
登录后可在本页底部提交回答
