基于FPGA的HDMI视频显示系统设计

2021-08-16 07:27张振利韩凌锋
现代电子技术 2021年16期
关键词:白平衡分量运算

张振利,韩凌锋

(江西理工大学 电气工程与自动化学院,江西 赣州 341000)

0 引 言

随着互联网的普及以及日常生产生活中的需求,人们对实时视频图像质量的要求越来越高。而高清实时性视频的数据量质量越好,所需要的数据量也越大,处理难度也越来越大。传统的图像视频处理都倾向于用DSP作为主控模块配合外部电路来完成工作需要,这方面的资料方案也很多,但是针对高清快速视频图像采集与显示的需求,使用DSP作为主控模块成本较高,代码繁琐,不容易进行维护。FPGA与DSP相比有很大的优势:DSP的硬件设计一旦确定,不能进行修改,而FPGA可以实现所有的数字电路以及可以根据客户需求来定制自己所需的数字处理模块,所以,FPGA更加灵活。另外,现在高端FPGA芯片上都集成了DSP处理器,这样在FPGA上能够实现灵活设计,同时也节约了开发设计的周期和成本。

本文系统采用HDMI显示视频数据,FPGA具有高速并行处理能力,可以处理1 080p高清视频数据。二者结合可以很好地实现系统设计[1]。

1 系统总体框架

该文系统是通过图像传感器采集高清视频数据,经过Bayer转RGB模块,将Bayer图像解码成24位RGB数据送到FPGA主控模块,视频数据经过图像防止撕裂以及白平衡的算法模块之后,通过AXI总线协议将处理后的视频数据从缓存中取出,最后将取出的RGB图像数据转换成TMDS信号输出到显示器。整个硬件系统分成几大模块:图像采集模块、图像处理模块、图像撕裂处理模块、图像色彩处理模块、视频数据读/写模块、HDMI发送器设计模块。系统总体结构图如图1所示。

图1 系统总体框架图

2 各个模块设计

2.1 图像传感器模块

图像传感器模块采用索尼公司的IMX222图像传感器作为视频采集工具,IMX222是一种对角线为6.4 mm(1/2.8型)CMOS有源像素型图像传感器,具有方形像素阵列和大约200万有效像素。该芯片使用模拟2.7 V,数字A11.2 V和接口1.8 V三倍电源。采用R,G,B三种原色颜料镶嵌滤光片,获得高灵敏度、低暗电流、无污迹的效果。这个芯片用可变积分时间来模拟电子快门,通过SPI接口对IMX222的各个寄存器进行初始化配置,已达到所想要的状态[2]。

2.2 图像处理模块

通过IMX222图像传感器拍摄的图像是Bayer格式,需要对它进行格式转化,以易于在显示器上显示。通过彩色插值算法将它转化为RGB格式。Bayer图像的色彩滤波格式如图2所示。

图2 Bayer图像色彩滤波格式

彩色插值算法介绍如下,Bayer模式下的每一个像素只取RGB颜色空间中一种颜色分量,奇数行包含G,B分量,偶数行包含R,G分量,奇数列包含G,R分量,偶数列包含B,G分量。具体操作就是先用寄存器存储两行像素值,再从DDR3内存中读出第三行像素值,并用下列公式进行运算,可得RGB图像。计算公式如下所示。

由式(1)再结合Bayer图像色彩滤波格式可以得到部分Verilog程序如下所示:

由上述内容可以编写出Bayertorgb模块以及根据算法得到测试图像,如图3所示。

由图3可以看出,同样是800×800像素的图片,经过图像处理模块之后的颜色明显比原图看上去要直观一点,经过算法转化的图片比原图要大一些,多出来的就是R,G,B三种颜色的分量。所以,从图片效果上看,图片处理模块可以很好实现对视频的处理[3]。

图3 测试图像

2.3 FPGA主控模块

FPGA主控模块选择的是XILINK公司的ZYNQ-7000 SoC的芯片,它主要是用来进行数据的存储与发送、数据处理,算法运算等。在本文系统中,为保证视频的实时性,对于较复杂的计算过程采用流水线设计方法来提升运算速度。这种方法可以运用于各种设计,特别是大型的、对速度要求较高的系统设计。虽然采用流水线会增大资源的使用,但是其可降低寄存器间的传播延时,保证系统维持高的系统时钟速度[4]。

2.4 视频撕裂处理模块

视频撕裂处理模块是由于视频数据两边的帧数不统一所造成,本例中的图像传感器是30帧,显示器是60帧,当显示器在进行显示数据的时候,其速度很快,有时,显示器会出现一条白线,上半部分显示旧图像,下部分显示新图像,给人造成的感觉就是视频被撕裂了一样,导致观察效果不佳。家用的液晶电视有时候也会出现这种情况,所以必须要进行处理,使其达到能够正常观看的效果。首先,需要建立一个大的数据缓冲区,把从图像传感器那边采集来的视频数据先存入缓冲区,再从缓冲区输出视频数据去显示设备,使其采集的数据与显示的数据错开,这样可以有效地避免视频撕裂的现象。

2.5 图像白平衡处理模块

图像白平衡是指“不管在任何光源下,都能将白色物体还原为白色”,当特定光源下拍摄时出现的偏色现象时,可通过加强对应的补色来进行补偿,校准色温的偏差,调整白平衡来达到想要的画面效果。在此介绍一种灰度图像算法来进行白平衡的校正,使图像显示为正常图像颜色[5]。

灰度图像算法介绍如下,先求出一帧图像RGB像素的平均值Ravg,Bavg,Gavg,然后再求出RGB像素平均值的平均值,这个值称为灰度平均值Kavg。再利用公式:

得到一个新的R分量的像素,对G和B做同样运算。如果红色分量Rnew的平均值大于255的话就会使得红色分量Rnew等于255,如果不大于255,就保持原来的值,G和B同样如此。这样使得RGB分量趋近于灰度平均值,从而校正白平衡,使图像还原成真实的颜色。

白平衡模块具体实施方案:由上面公式可以看出要得到新的RGB分量必须做乘法和除法运算,在FPGA里面不能直接把数值进行乘法、除法运算,因为FPGA代码的最底层由许多的门电路组成,运算起来比较复杂,尤其是除法运算,对于运算误差比较大的数值不能直接来运算,必须调用内部的乘法器、除法器来进行数值运算。首先,以Rnew为例,根据上面公式调用Zynq-7000内部乘法器和除法器,然后再与255进行比较,得到Rnew数值,因为RGB都是8位,所以最大值为255,部分代码如下:

2.6 HDMI显示模块

高清晰度多媒体接口(High Definition Multimedia Interface,HDMI)[6]是一种数字化视频/音频接口技术,其可同时传送音频和影像信号,最高数据传输速度为2.25 GB/s。HDMI使用的是由Silicon Image公司发明的最小化传输差分信号(Time Minimized Differential Signal,TMDS)传输技术。TMDS是一种微分信号机制,采用的是差分传动方式。TMDS差分传动技术是一种利用2个引脚间电压差来传送信号的技术。传输数据的数值由2个引脚间电压正负极性和大小决定。每一个标准的HDMI连接,都包含了3个用于传输数据的TMDS数据传输通道HDMI_D_N和HDMI_D_P,还有1个独立的TMDS时钟通道HDMI_CLK_N和HDMI_CLK_P,以保证传输时所需的统一时序。在一个时钟周期内,每个TMDS通道都能传送10 bit的数据流。HDMI的数据传输有TMDS0,TMDS1,TMDS2三个通道,每个通道的传输流程都是一样的。

HDMI显示模块的设计如下:经过Bayer转RGB算法模块之后,图像转变为RGB三种颜色,每种颜色位宽为8 bit,从DDR3内存读出之后,首先,由8/10 bit模块将8 bit数据转为10 bit数据,再由并转串模块将10 bit数据转化成串行的差分信号,并且输出到引脚上。其中,8/10 bit模块是用于保持直流平衡,使得发送的“0”,“1”数量保持基本一致,连续的“1”或“0”不超过5 bit,即每5个连续的“1”或“0”后必须插入一位“0”或“1”,从而保证信号直流平衡。在直流平衡的情况下,传输的平均功耗为一常数。实现直流平衡,将使得接收器的阈值设置变得简单,常应用于数据通信方面,增强电路的抗干扰能力。并转串模块以及将串行信号转化成差分信号是利用XILINK官方提供的源语电路OSERDESE2和OBUFDS来共同实现的。具体步骤如图4所示。

图4 HDMI传输流程

由图4步骤编写如下部分代码,以R分量为例,首先,对其进行8/10 bit,把10 bit信号进行串行化,完成传输信号转换,再通过源语OSERDESE2和OBUFDS电路转化成差分信号进行输出,部分代码如下所示:

3 实验结果

实验中使用视频格式为1 920×1 080的图像,如图5所示,图5a)为未进行白平衡校正前;图5b)为进行白平衡以及防止视频撕裂操作后的正常图像。

图5 视频处理后的截图

由图5可以看出,两张图片的颜色明显不一样,原图比较偏绿,这是因为人眼对绿色比较敏感,经过白平衡的调节之后,图片就显示为正常图像。所以无论视频的显示还是图片的显示,白平衡的调节是必不可少的。

4 结 语

该文系统具有体积小,实时处理速度快,稳定,功能强大,代码易于维护与调试等特点,它与传统的DSP电路相比,可以进行二次改装编写,以适应相应的工作要求,代码清晰易懂,硬件上可以节约相应的成本等。本文系统还可以用于工业产品的检测,也可以经过改良用于公路实时情况观察等场合。

猜你喜欢
白平衡分量运算
重视运算与推理,解决数列求和题
帽子的分量
有趣的运算
论《哈姆雷特》中良心的分量
技术橱窗
分量
“整式的乘法与因式分解”知识归纳
你的白平衡准确吗?
基于瞬时对称分量法的三相四线制D-STATCOM控制研究
准确的白平衡管理