主要内容

噪声去除和图像锐化

本例展示了如何实现图像处理设计的前端模块。前端模块去除噪声,锐化图像,为后续处理提供更好的初始条件。

物体失焦会导致图像模糊。相机或视频传感器上的死像素或卡像素,或硬件组件的热噪声,都会导致图像中的噪声。在本例中,前端模块使用Vision HDL Toolbox™中的两个像素流过滤器块实现。中值滤波器去除噪声,图像滤波器锐化图像。该示例将像素流结果与来自计算机视觉系统工具箱™的全帧块生成的结果进行比较。

此示例模型提供了一种硬件兼容的算法。您可以使用Xilinx™Zynq™参考设计在电路板上实现此算法。看到基于zynq硬件的图像锐化(基于Xilinx zynq硬件的Vis金宝appion HDL工具箱支持包)

实例结构

计算机视觉工具箱块一次操作整个帧。Vision HDL工具箱块操作像素数据流,每次一个像素。视觉HDL工具箱中的转换块,帧到像素和像素到帧,使您能够模拟流像素设计以及全帧设计。

NoiseRemovalAndImageSharpeningHDL.slx系统如下所示。

下图展示了全帧行为模型子系统的结构,它由基于帧的中值滤波器和二维FIR滤波器组成。如前所述,中值滤波器去除噪声和2-D FIR滤波器配置锐化图像。

像素流HDL模型子系统包含中值滤波器和2-D FIR滤波器的流实现,如下图所示。您可以从像素流HDL模型子系统生成HDL代码。

验证子系统将全帧处理结果与像素流处理结果进行比较。

下图从左到右分别为一帧模糊有噪声的源视频,经过中值滤波后的去噪版本,以及经过二维FIR滤波后的锐化输出。

图片来源

下图显示了Image Source子系统。

Image Source块导入灰度图像,然后使用名为Blur和Add Noise的MATLAB函数块来模糊图像并注入椒盐噪声。IMFILTER函数使用3 × 3平均核来模糊图像。椒盐噪声是通过调用IMNOISE(I,'salt & pepper',D)命令注入的,其中D是噪声密度,定义为椒盐像素的总和与图像中总像素的比率。这个密度值由噪声密度常数块指定,它必须在0到1之间。图像源子系统输出完整图像的二维矩阵。

帧到像素:生成像素流

“帧到像素”块将完整的图像帧转换为像素流。“Number of components”字段设置为1,用于灰度图像输入,“Video format”字段设置为240p,以匹配视频源的格式。视频源的采样时间由“帧到像素”块中的每行总像素和视频行总像素的乘积决定。有关更多信息,请参见帧到像素块引用页。

像素流HDL模型

中值滤波块用于去除盐和胡椒噪声。要了解更多信息,请参阅中值滤波器块引用页。

基于滤波器系数,图像过滤器块可用于模糊,锐化,或检测中值滤波后恢复图像的边缘。在本例中,将Image Filter配置为锐化图像。要了解更多信息,请参阅图像滤波块引用页。

像素到帧:将像素流转换回全帧

像素到帧块通过使用同步信号将像素流转换为完整的帧。“Pixels To Frame”的“Number of components”字段和“Video format”字段分别设置为1和240p,以匹配视频源的格式。

验证像素流处理设计

验证子系统,如下所示,根据全帧行为模型验证来自像素流HDL模型的结果。

计算参考图像和流处理图像之间的峰值信噪比(PSNR)。理想情况下,比值应该是无穷大,表明来自全帧行为模型的输出图像与来自像素流HDL模型的输出图像匹配。

生成HDL代码并验证其行为

要检查和生成本例中引用的HDL代码,您必须拥有HDL Coder™许可证。

要生成HDL代码,使用以下命令:

makehdl (' noiseremovalanimagesharpeninghdl /像素流HDL模型');

要生成测试平台,使用以下命令:

makehdltb (' noiseremovalanimagesharpeninghdl /像素流HDL模型');