System Generator 实施GNR 功能
强度值(即噪声)的随机变化通常会损坏图像质量。这种变化表现为高斯或正态分布,在不同传感器(即 CMOS 摄像头)中较为常见。线性平滑滤波器是消除高斯噪声的最佳方法,在许多情况下,它还可消除其它类型的噪声。为实现该功能,我们可通过使用连续窗口中的像素加权和来实施线性有限脉冲响应 (FIR) 滤波器。
在开始实施 GNR System Generator 模块之前,我们已在 MATLAB 中实现了其行为模型。而这只仅需两行代码即可实现。首先,我们需要计算内核,具体描述掩模尺寸(本例设为 5×5)和高斯的 ∑ 值。然后,我们可以通过卷积过滤输入图像:
n_mask = fspecial(gaussian, 5, 0.8);
out_img = conv2(in_img, n_mask, same);
此外,我们还可使用这种行为模型,并通过实际视频数据测试滤波器,进而调节掩模系数。我们还可以通过验证 System Generator for DSP 子系统的输出是否与 MATLAB 函数的输出相等(在规定的误差范围内,这是因为 MATLAB 是以浮点方式工作,而 System Generator 则以固点算法方式工作)来验证硬件。
2-D GNR 模块以流线方式(即逐行方式)对输入图像进行处理。图 3 显示了整个预处理链的 System Generator 顶级方框图以及高斯噪声抑制功能的顶级方框图。
图 3 中的 data_in 和 data_out 端口分别用于接收输入像素流和返回滤波后的像素流,而其余的端口则用于邻接模块间的定时同步与处理控制。
如图中黄色和蓝色模块所示,我们将 GNR 块的内部架构建立在两个主要子系统上。我们将对上述各模块进行深入探讨,详细了解 System Generator 设计。
我们需要第一个主要子系统,即线路缓冲器(如黄色所示),来缓冲四条输入图像流线路,以输出 5 x 5排列的像素。对每个输入像素 I (u,v),线路缓冲器将返回由当前像素及同一行的前四个像素组成的 5x1 矢量,即 [I(u,v-4);I(u,v-3);I(u,v-2);I(u,v-1);I(u,v)]。如图 4 所示,我们可通过串联两个双线缓冲器来实施线路缓冲(line buffer)块,每个缓冲器使用一个双端口块 RAM(寄存于 FPGA 器件上的内存资源)、一个内存寻址计数器、一些简单二进制逻辑以及寄存器来实现适当的延迟。
图 3——顶级预处理与高斯噪声抑制方框图
图 4——System Generator 四线缓冲器的实施
图 5——System Generator FIR(卷积)滤波器的实施
蓝色阴影和赛灵思徽标表示 System Generator 原始块,分别对应精心优化的可同步 HDL 代码。通过这种图形界面,System Generator 使算法开发人员能够轻松地在硬件中实施 DSP 算法,且无需掌握任何 HDL 编码技术。
我们用第二个主要子系统(即 5x5 FIR 内核,如图 3 蓝色部分所示)来实施卷积运算。该子系统可从线路缓冲块接收一个像素为 25 的块输入,然后将它们乘以高斯掩模系数 25,最后将结果累加至寄存器。实施细节如图 5 所示。
为了符合目标器件的性能要求并实现每秒 900 万 (9 MSPS) 的采样率,我们选择同时使用三个乘法累加器(通过使用 FPGA 的 DSP48 可编程乘法累加器功能组件实施)。通过采用时分多路复用技术,每个累加器最多可实现 9 次乘法运算(请参阅图 5 顶级方框图中较大的 System Generator 块)。我们将一组系数为 25 的掩模分组并储存于三个 ROM 中,以便将这三个 ROM 作为分布式 RAM(FPGA 提供的另一内存资源)实施。
在实施过程中,我们选择在编辑时期输入掩模系数。但是,我们本可以轻松地将设计进行升级,以将上述值接受为实时输入。采用这种方式,我们可以根据环境条件灵活地改变过滤的运行时间。
(实施说明:由于高斯分布具有各向同性的特点,内核可在两个分离的掩模中分解,过滤可作为 1x5 和 5x1 两个连续的沿水平和垂直方向的卷积来实现。虽然这种方法可减少所需的 FPGE 资源,但我们一般不用它,以避免失去设计的一般性与可读性。)
System Generator 的另一强大功能是能够在编程前运用预加载的 MATLAB 函数来定制设计。通过设置 System Generator 模块参数(比如,图像分辨率、FIR 内核值以及计算精度位数等)以及初始化我们在运行时间仿真过程中使用的工作空间信号,我们可以快捷地以不同处理方法和输入数据组进行实验。
而且,当我们完成仿真后,可调用 Stop MATLAB 函数,计算某些有用信息并将固点结果与浮点参照值进行比较,便可显示结果。这种方法使算法开发人员能够详细分析硬件实施的任何部分并将其与原软件模型相比较,以验证统一性。
|