面向H.264 编解码系统的图像预处理技术
2015-03-06李晓峰张立军胡永春
李晓峰,张立军,胡永春
(1.山东建筑大学 计算机科学与技术学院,山东 济南 250101; 2.合肥工业大学 微电子设计研究所,安徽 合肥 230000)
近年来,随着多媒体技术的不断发展,视频图像的传输应用越来越广泛,在视频图像的采集和传输过程中,由于温度、光照、电信号等因素的影响,很容易在视频图像采集的过程中引入噪声,这对图像的显示和欣赏效果造成了一定影响。因此,在视频图像的采集和传输过程中,对图像进行一定的降噪处理是有必要的。为了降低图像噪声,可对编解码系统中采集到的图像进行预处理,将滤波预处理之后的图像再存入编解码系统中。由于图像的实时性,对图像预处理的处理速度提出了较高的要求,普通软件处理速度达不到要求,而FPGA具有较快的处理速度,成为实时图像处理的首选[1]。
本文基于面向H.264 视频编解码系统,在充分考虑系统实时性的基础上,以FPGA 为核心的处理部件,设计了具有较高处理能力的中值滤波器对视频图像进行预处理,有效消除了图像中的噪声,避免了噪声的逐级传递,达到了较高视频图像质量和较好视觉效果的目的。
1 图像预处理算法
1.1 BT656 和YUV420 格式转换
本文设计的视频图像预处理系统,主要是基于面向H.264 视频编解码系统上的。如图1 所示,是编解码系统的部分架构,包括了视频图像采集、A/D 转换和预处理,SAA7113 芯片将摄像头采集到的模拟信号转化为BT656 格式的数字信号。
图1 编解码系统部分架构
BT656 格式,即YCrCb422(YUV422)格式,YUV422 格式在每行像素中,亮度信号Y 数据和色度信号U、V 数据的比例都是2 ∶1[2-6],为了节省数据量,本文中采用YUV420 的格式,因此需要将BT656 格式和YUV420 格式进行格式转换。YUV420 格式的每行和每列,Y 数据和U、V 数据的比例都是2∶1,即4 个Y 值共用一个U 和V,这样就在垂直方向数据量比YUV422 格式数据量减少了1/2。
本文采用的转换方法是丢弃偶数行像素点的色度信号Cr和色度信号Cb,从而使得每两行的4 个像素点公用一个色度信号Cr和一个色度信号Cb,使得存储的视频图像数据能进一步减少[6],而不影响图像的质量。假设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 亮度信号Y 的中值滤波示意图
2 中值滤波器设计
在实际去噪的过程中,滤波窗口的大小对滤波效果的影响比较大,若窗口选取较小,虽可有效地保护图像的细节信息,但去噪的效果会相对较弱;若窗口选取较大,去噪效果会加强,但会使滤波后的图像更加模糊,丢失了细节信息,且滤波窗口越大会相应的消耗更多的资源[7-8]。因此,从资源和效率方面综合考虑,本设计中,中值滤波的窗口采用3×3 的方形滤波窗口。根据上述中值滤波原理及窗口选取,本系统中YCrCb420 视频图像的中值滤波的设计如图3 所示。
图3 中值滤波的设计
如图3 所示,首先要从DDR II 存储器中读取YCrCb420 数据,对Y、Cr、Cb数据分别进行中值滤波来去除像素值中的噪点。将读取的数据送入3×3 的窗口生成模块,然后将窗口中的9 个数据送入中值比较模块得出中值。由于边缘数据无法位于3×3 窗口的中心,即无法用求中值的方式来更新边缘数据。因此,要通过边缘检测模块将边缘的数据单独进行处理。最终,将得到的中值和边缘数据重组,得出所需数据并送入DDR II 存储器中[9-11]。
(1)视频图像数据读取模块。系统采用Altera 公司的QYSY 平台,总线协议为Avalon 协议,设计中从DDR II 存储器中读数据要满足Avalon 总线的协议要求。为了提高数据的读取速度,图像数据的读取过程采用Avalon master read(主端口读)的模式。此外,为了加快数据的读取速度,实际的设计中还采用了带突发传输属性的模型进行数据读取[12-13]。
(2)3×3 的窗口生成模块。3×3 窗口通过使用3个FIFO 来实现,每一个FIFO 存储一行的数据,待准备好后,每个FIFO 连续出3 个数据,形成一个3×3 数据的窗口,具体实现如图4 所示。
图4 3×3 窗口的实现
由于采用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 所示。
图6 边缘数据检测
设计采用不对边缘数据进行处理的方式,仅将边缘数据保留原值。边缘数据通过line_2 的FIFO 的输出来检测,设置行和列计数器。必须保证第一个处理完的中值必须在第二行的第一个数据之后和第二行的最后一个数据之前到来。这种方式有利于数据的恢复。最后将经过中值滤波的数据和边缘数据进行重组后写回到DDR II 存储器中,然后送入到H.264 视频编码器中用于视频编码。
3 仿真验证
实验中,通过FIFO2 来控制每行数据的边缘检测,保证利用最短的周期重组数据,当遇到边缘数据时,经过5 个寄存器进行暂存;当遇到中值数据时,直接使用。然后将边缘数据和中值数据重组并经过异步FIFO 后,生成一个32 位数据,图7 中data 即为最终重组数据。
图7 数据重组的仿真
对于图像预处理的滤波效果,本文将带有椒盐噪声的图像数据输入到图像预处理系统中,对滤波效果进行比较,如图8 所示,经过图像预处理后直观滤波效果良好,有效降低了噪声。
图8 图像预处理滤波效果比较
4 结束语
本文主要描述了在将视频图像数据存储于DDR II 中之前,对视频图像进行预处理,去除相应的噪声过程,从而保证了送入H.264 视频编码的视频图像的质量,避免了噪声的传递。通过仿真验证和图像直观比较,实验效果良好,具有较高的实用价值,为以硬件为基础的实时图像预处理提供了技术支持。虽然效果良好,却仍有可改进的空间,例如滤波窗口可改为自适应大小的窗口,滤波类型也可以是自适应的,这就需要更深入地研究和实验,从而保证更好的视频图像效果。
[1] 黄艳军.基于FPGA 的数字图像预处理算法研究[D].南京:南京理工大学,2009.
[2] 冈萨雷斯.数字图像处理[M].2 版.北京:电子工业出版社,2005.
[3] Rafael C Gonzalez,Richard E Woods.数字图像处理:英文版[M].2 版.北京:电子工业出版社,2007.
[4] 张长江.数字图像处理及其应用[M].北京:清华大学出版社,2012.
[5] Keith Jack.视频技术手册[M].5 版.杨征,译.北京:人民邮电出版社,2009.
[6] 朱虹.数字图像技术与应用[M].北京:机械工业出版社,2011.
[7] 颜开汉.视频编解码中去块滤波模块的原理及设计[D].上海:上海交通大学,2009.
[8] Johnstone L M,Silverman B W.Wavelet threshold estimators for data with correlated noise[J].Journal of the Royal Statistical Society Series B,1997,59(2):319-351.
[9] 孙艳霞.图像和视频去噪技术研究[D].北京:华北电力大学,2010.
[10]马向前.基于FPGA 的实时图像采集和去噪系统的研究与设计[D].长春:吉林大学,2006.
[11]朱奕丹,方怡冰.基于FPGA 的图像采集与VGA 显示系统[J].计算机应用,2011,31(5):1258-1261.
[12]Pardo A,Sapiro G.Visualization of high dynamic range images[J].IEEE Transactions on Image Processing,2003,12(6):639-647.
[13]毕厚杰.新一代视频压缩编码标准-H.264/AVC[M].北京:人民邮电出版社,2005.