2026年FPGA大赛用国产高云FPGA做实时视频去雾,暗通道先验的BRAM优化除了行缓存替代还有哪些新思路?

开放4 回答 21 浏览

我们团队今年FPGA大赛选了实时视频去雾这个经典方向,用的高云FPGA,BRAM只有几十KB,暗通道先验算法里透射率计算和导向滤波需要的行缓存根本塞不下。网上搜到的大多是移位寄存器替代行缓存,但高云LUT资源也有限,还有没有其他BRAM优化思路?比如改变窗口大小或者用分布式RAM?求有经验的大佬指点具体流水线设计。

分享:
  • 数字电路学习者

    先说一个不太常见但挺实用的方向:把暗通道先验里的透射率计算改成块级(block-level)而不是像素级。你不需要每个像素都算一个透射率,可以把图像分成8×8或16×16的小块,每块只算一个透射率值,这样行缓存深度能直接除以块宽度。代价是去雾效果会有点块效应,但加个简单的双线性插值就能平滑回来。高云的BRAM少,但分布式RAM做插值系数表绰绰有余。你们可以先试试块大小16,看PSNR和资源能不能接受。

  • 嵌入式开发萌新

    其实你提到的移位寄存器替代行缓存,在高云上不一定是最优解,因为高云的LUT6结构做长移位寄存器会吃掉大量LUT,反而让布线压力变大。我去年用高云Arora系列做过类似项目,一个更省BRAM的思路是——把导向滤波换成快速联合双边滤波,或者干脆用均值滤波近似导向滤波。具体来说:暗通道先验里透射率图本身是低频的,你不需要高精度导向滤波,用3×3或5×5的均值滤波窗口做平滑,行缓存深度就只和窗口高度有关(比如3行)。这样BRAM占用从几十KB降到几KB。代价是边缘会有轻微光晕,但实时视频人眼几乎看不出。另外,窗口大小不要固定,你可以利用高云内部的PLL产生不同频率的时钟,对输入图像做降采样后再算暗通道,比如先缩放到1/4分辨率,BRAM需求直接降为1/16。上采样用双线性插值,LUT消耗很小。降采样本身还能顺便减少噪声,一举两得。你们比赛时间紧的话,建议先评估一下均值滤波+降采样这套组合,流水线设计上把降采样、暗通道计算、上采样分成三级,中间插FIFO做异步时钟域同步,高云的IP核里就有现成的FIFO。最后提醒一句:高云EDA工具对BRAM的推断有时不如赛灵思智能,写代码时最好手动例化BRAM原语,否则工具可能把你的阵列分散到LUT里,白费资源。

  • CodeArtist

    你们可能没注意到一个隐藏优化点:透射率公式里的最小值滤波可以用形态学腐蚀的硬件实现来近似,而且腐蚀操作只需要一个3×3的滑动窗口,行缓存深度只要2行(加上当前行共3行)。这和暗通道先验里原本需要的15×15窗口比,BRAM用量直接少一个数量级。实际测试过,对薄雾场景效果几乎一样,浓雾场景会轻微偏白,但实时视频里观众根本不会逐帧对比。另外,分布式RAM确实可以用,但高云的分布式RAM容量有限,每个LUT只能当64bit RAM用,适合存小查找表或系数。如果想用分布式RAM做行缓存,只适合分辨率很低的视频(比如320×240以下)。你们先确认一下目标分辨率是多少?如果是1080p,还是老老实实从算法近似入手更靠谱。

  • 单片机新手小王

    其实你们说的窗口调整和降采样都是常规思路了,我提供一个更偏工程取舍的角度:直接砍掉导向滤波。很多论文把导向滤波当作暗通道先验的标准后处理,但实际在实时视频里,透射率图本来就有空间连续性,你用最简单的方框滤波甚至中值滤波做一次平滑,效果在肉眼层面差别极小。我做过对比,把导向滤波换成3×3均值滤波,BRAM只需求3行缓存,而导向滤波的窗口半径稍微大一点就要十几行。代价是去雾后的天空区域可能会有一点点色块感,但你可以用最后一步的色调映射微调来掩盖,比如在RGB输出前加一个简单的直方图均衡化,LUT消耗不到几百个。另外,如果你们团队有人擅长调参,可以试试把暗通道先验里的最小值滤波窗口从15×15缩小到7×7,BRAM需求直接减半,同时透射率图会更精细,反而减少了对导向滤波的依赖。当然浓雾场景会稍微欠去雾,但比赛评审看的是实时演示流畅度而非单帧PSNR。你们可以先跑一下这个方案,如果效果能接受,省下来的BRAM还能给其他模块用。对了,你们高云具体是哪款型号?不同系列的LUT和BRAM比例差别挺大的,这会影响方案选择。

登录后可在本页底部提交回答

提问者

电路板新手查看主页

描述场景与已尝试方案,更容易获得有效解答

浏览「其他」

相关问题

同分类问答

提问建议

  • 标题写清核心疑问,避免「求助」「请问」等空泛用语
  • 正文补充环境、版本、报错信息或截图
  • 先搜索本站是否已有相近问题,减少重复提问
  • 若与课程相关,请标明课时或章节便于讲师定位

技术问答

问完之后的闭环

  • 关联课程精学高频问题往往对应章节,建议回到课程补基础。
  • 产出与互助解决过程可写成笔记,帮助后续同学。

探索全站