面向H.264编解码系统的图像预处理技术
扫描二维码
随时随地手机看文章
摘要 在图像采集过程中,难免会引入噪声,这对视频图像的质量产生了一定影响。为了避免噪声图像传入编解码系统中,对采集到的视频图像进行预处理,以FPGA为核心处理器件,采用中值滤波技术,并用Modelsim仿真工具进行验证。对仿真结果进行分析表明,通过对图像的预处理,滤波效果良好,达到了对视频图像降噪的目的,避免了噪声逐级传递,从而保证了视频图像的显示效果。
近年来,随着多媒体技术的不断发展,视频图像的传输应用越来越广泛,在视频图像的采集和传输过程中,由于温度、光照、电信号等因素的影响,很容易在视频图像采集的过程中引入噪声,这对图像的显示和欣赏效果造成了一定影响。因此,在视频图像的采集和传输过程中,对图像进行一定的降噪处理是有必要的。为了降低图像噪声,可对编解码系统中采集到的图像进行预处理,将滤波预处理之后的图像再存入编解码系统中。由于图像的实时性,对图像预处理的处理速度提出了较高的要求,普通软件处理速度达不到要求,而FPGA具有较快的处理速度,成为实时图像处理的首选。
本文基于面向H.264视频编解码系统,在充分考虑系统实时性的基础上,以FPGA为核心的处理部件,设计了具有较高处理能力的中值滤波器对视频图像进行预处理,有效消除了图像中的噪声,避免了噪声的逐级传递,达到了较高视频图像质量和较好视觉效果的目的。
1 图像预处理算法
1.1 BT656和YUV420格式转换
本文设计的视频图像预处理系统,主要是基于面向H.264视频编解码系统上的。如图1所示,是编解码系统的部分架构,包括了视频图像采集、A/D转换和预处理,SAA7113芯片将摄像头采集到的模拟信号转化为BT656格式的数字信号。
BT656格式,即YCrCb422(YUV422)格式,YUV422格式在每行像素中,亮度信号Y数据和色度信号U、V数据的比例都是2:1,为了节省数据量,本文中采用YUV420的格式,因此需要将BT656格式和YUV420格式进行格式转换。YUV420格式的每行和每列,Y数据和U、V数据的比例都是2:1,即4个Y值共用一个U和V,这样就在垂直方向数据量比YUV422格式数据量减少了1/2。
本文采用的转换方法是丢弃偶数行像素点的色度信号Cr和色度信号Cb,从而使得每两行的4个像素点公用一个色度信号Cr和一个色度信号Cb,使得存储的视频图像数据能进一步减少,而不影响图像的质量。假设Yxy表示亮度信号在(x,y)位置处的值;Crxy、Cbxy表示了色度信号在(x,y)位置处的值,则BT656格式和YUV420有如下的对应关系
1.2 中值滤波原理
中值滤波器就是用该像素相邻像素的像素值的中值来代替原中心像素点的值
中值滤波器的应用较广,对于由随机信号引起的噪声如脉冲噪声等等,中值滤波不仅具有良好的去噪能力,且在相同尺寸下相比线性平滑滤波器能够更好地保护图像的细节部分。由于中值滤波器的这些特性,使其在图像滤波领域应用广泛。
针对YCrCb420格式的特点,需采用合适的中值滤波设计对视频图像的噪点进行处理。由于YCrCb420数据的存储是按照Y、Cr、Cb的顺序。因此,可通过流水的方式依次对存储在DDR II存储器中的Y、Cr、Cb数据进行处理。以亮度信号Y为例,本设计中,中值滤波的计算步骤如下:(1)将窗口的中心与图像中的某个像素点的位置重合,然后让滤波窗口在图像中滚动,每次只移动一个像素点。(2)读取窗口内包含像素点的亮度值。(3)将这些亮度值按照从小到大的顺序排列,确定排序位于中间值。(4)用中间值来代替滤波窗口中心的亮度值。(5)由于滤波窗口的中心不可能位于图像边缘,需要对图像的边界进行单独处理。
对于分辨率为640×480的视频图像而言,YCrCb420数据亮度信号的大小为640×480×8,而色度信号Cr和Cb分别为320×240×8。以亮度信号为例,中值滤波原理如图2所示。
2 中值滤波器设计
在实际去噪的过程中,滤波窗口的大小对滤波效果的影响比较大,若窗口选取较小,虽可有效地保护图像的细节信息,但去噪的效果会相对较弱;若窗口选取较大,去噪效果会加强,但会使滤波后的图像更加模糊,丢失了细节信息,且滤波窗口越大会相应的消耗更多的资源。因此,从资源和效率方面综合考虑,本设计中,中值滤波的窗口采用3×3的方形滤波窗口。根据上述中值滤波原理及窗口选取,本系统中YCrCb420视频图像的中值滤波的设计如图3所示。
如图3所示,首先要从DDR II存储器中读取YCrCb420数据,对Y、Cr、Cb数据分别进行中值滤波来去除像素值中的噪点。将读取的数据送入3×3的窗口生成模块,然后将窗口中的9个数据送入中值比较模块得出中值。由于边缘数据无法位于3×3窗口的中心,即无法用求中值的方式来更新边缘数据。因此,要通过边缘检测模块将边缘的数据单独进行处理。最终,将得到的中值和边缘数据重组,得出所需数据并送入DDR II存储器中。
(1)视频图像数据读取模块。系统采用Altera公司的QYSY平台,总线协议为Avalon协议,设计中从DDR II存储器中读数据要满足Avalon总线的协议要求。为了提高数据的读取速度,图像数据的读取过程采用Avalon master read(主端口读)的模式。此外,为了加快数据的读取速度,实际的设计中还采用了带突发传输属性的模型进行数据读取。
(2)3×3的窗口生成模块。3×3窗口通过使用3个FIFO来实现,每一个FIFO存储一行的数据,待准备好后,每个FIFO连续出3个数据,形成一个3×3数据的窗口,具体实现如图4所示。
由于采用3×3的窗口模式,所以要保证每次进入窗口中的数据是来自3个不同的像素行。因此在开始将数据送到3×3的窗口之前,要对两行像素数据进行存储,等到第三行数据到来时,才将数据一起送入3×3的滤波窗。设计采用同步FIFO进行数据存储,同时通过FIFO的usedw信号进行数据的填充记录。这里两个同步FIFO用于进行前两行数据的存储,第三行数据则是通过前面的异步FIFO的输出来提取。在两行数据都在FIFO中准备好时(其中第一行数据存入line_3中,第二行数据存入line_2中),一旦line_3的FIFO读信号开始有效时,便将3行数据送入3×3中(第3行数据由line_1的输出实时的送入)
(3)中值生成模块。对于3×3窗口中的9个待处理数据,中值滤波的基本思想是通过比较得出这9个数的中值。中值滤波的输出值由领域数据的中间值决定。具体的比较过程如图5所示。
为加快处理速度,设计采用流水线技术。由于前一个步骤的输出是下一个步骤的输入,可考虑采用流水线技术,以提高系统的工作频率。由于前后操作使用相同的比较操作,前后级处理的时间相等,均是一个时钟周期,可直接将前级的结果送入下一级。
通过7次比较,便能得出一个处理过的中值来代替原本窗口中间的值。由仿真波形可知,从数据准备好开始,到得出一个中值,只需4个周期的时间。数据连续输入,中值也可连续的输出,除了上述提到的在每3行的结尾处需要等待两个周期。这里比较器的作用是通过比较找出3个数据中最大值、最小值和中值。
(4)边缘数据检测及处理。如图3所示,在窗口移动过程中,只能处理窗口中间的数据,由于边缘的数据不可能作为窗口中间值,对于边缘的数据必须要进行单独处理。由于数据按行读出的,边缘数据包括第一列和最后一列的数据以及每一行的第一个数据和最后一个数据。边缘检测的实现如图6所示。
设计采用不对边缘数据进行处理的方式,仅将边缘数据保留原值。边缘数据通过line_2的FIFO的输出来检测,设置行和列计数器。必须保证第一个处理完的中值必须在第二行的第一个数据之后和第二行的最后一个数据之前到来。这种方式有利于数据的恢复。最后将经过中值滤波的数据和边缘数据进行重组后写回到DDR II存储器中,然后送入到H.264视频编码器中用于视频编码。
3 仿真验证
实验中,通过FIFO2来控制每行数据的边缘检测,保证利用最短的周期重组数据,当遇到边缘数据时,经过5个寄存器进行暂存;当遇到中值数据时,直接使用。然后将边缘数据和中值数据重组并经过异步FIFO后,生成一个32位数据,图7中data即为最终重组数据。
对于图像预处理的滤波效果,本文将带有椒盐噪声的图像数据输入到图像预处理系统中,对滤波效果进行比较,如图8所示,经过图像预处理后直观滤波效果良好,有效降低了噪声。
4 结束语
本文主要描述了在将视频图像数据存储于DDRII中之前,对视频图像进行预处理,去除相应的噪声过程,从而保证了送入H.264视频编码的视频图像的质量,避免了噪声的传递。通过仿真验证和图像直观比较,实验效果良好,具有较高的实用价值,为以硬件为基础的实时图像预处理提供了技术支持。虽然效果良好,却仍有可改进的空间,例如滤波窗口可改为自适应大小的窗口,滤波类型也可以是自适应的,这就需要更深入地研究和实验,从而保证更好的视频图像效果。