二维卷积滤波
二维卷积是常用的图像处理算法,即图像滑窗内的并行数据按滑窗内的坐标与卷积核函数对应坐标的参数相乘后,将所有乘法积值相加得到卷积滤波结果。
但是由于卷积核函数大多数情况下都包含小数部分,在 FPGA 内执行浮点数乘法将占用大量资源。比较常用的处理方法是将核函数内各元素数值都乘以 2 的指数,将小数部分放大至整数部分,并且根据核函数的生成原理选择足够大的指数值以保证各元素间的差异。最终在 FPGA 实现时可以将小数乘法转化为整数乘法,在所有元素的乘法积值相加后通过截去低位的方式实现除以前述的 2 的指数的计算。
以 2 × 2 2\times 2 2×2 的二维卷积为例,原始核函数包含小数部分:
( k e r n e l 00 k e r n e l 01 k e r n e l 10 k e r n e l 11 ) \left(\begin{array} {} kernel00 & kernel01\\ kernel10 & kernel11 \end{array}\right) (kernel00kernel10kernel01