基于SDI接口的实时图像增强显示系统
SDI接口(Serial Digital Interface)是直接通过采用数字化的方法对视频信号进行控制、处理和传输,将数字视频或者音频信号按有效行场方式通过单芯同轴电缆传输,而后将数字信号直接接入后续的处理系统,避免传统的模拟信号因A/D和D/A转换带来的图像细节和质量损失,也使得设备间的交互变得更加简单方便。SDI接口传输速率高、适应性强、即插即用、对环境要求不高以及应用范围广等特点,目前SDI已经作为国内很多战略靶场军工图像设备的一种协议标准。
目前在民用方面,SDI接口作为一种标准视频传输接口已被世界上多数视频设备厂商接受并采纳,涉足数字摄像领域、电视电影及专业的演播室等领域。世界知名的索尼、松下等公司生产的视频设备均支持SDI接口协议。
1 系统硬件结构
系统结构如图1所示,主要由Camera Link接口、千兆网接口、大容量SRAM存储器、FPGA芯片、SDI接口芯片以及SDI接口监视器等构成。这里FPGA是整个系统的核心逻辑,采用XILINX公司的V2系列XC2V4000FFG1152芯片,该芯片有1152个IO引脚,4 MB的系统门单元,120个乘法器,12个数字时钟管理器,824个用户可定义IO,120x18 b的块RAM。丰富的硬件资源给输入图像的显示和增强处理提供了可靠保证。该系统的基本工作过程首先接收Camera Link接口或千兆网接口的图像数据,经过专用接口转换芯片将数据转换成TTL或者CMOS格式,传送给FPGA,在FPGA内部经过实时图像处理、协议转换,输出符合SDI接口芯片的数据,经过接口芯片的并串转换,实时输出SDI标清图像数据。
这里FPGA的主要工作原理如图2所示。在该模块中,系统上电后首先完成对SDI接口芯片工作寄存器的配置,从而完成对其工作模式的选择;然后需要完成输入图像数据接口到接口芯片的行场时钟协议转换以及数据到YCbCr格式转换,这里采用FPGA对双缓存的控制完成格式转换,本文应用画幅缩放、灰度拉伸和伪彩色处理实现图像增强处理,这在下一节做具体描述。
2 图像增强算法
2.1 灰度拉伸算法
现在很多相机都基于CameraLink接口和千兆网接口,它们的输出数据位存在8 b,10 b和14 b等多种情况,本文在系统设计时做了智能处理,通过上位机RS232串口向该系统转换模块发送一个命令信号,告知系统输入端的灰度数据位数和系统输出端的数据位数,从而使算法实现不同的灰度拉伸。由于一般的监视器只能显示8 b灰度的图像数据,SDI信号有8 b和10 b两个差别。对灰度图像做一个线性拉伸,不论前端输入图像数据是多少位,可以利用该算法将图像数据映射到8 b和10 b空间,即下面介绍的拉伸处理。这里以输入图像数据14 b为例,假设输入为10 b图像数据,其宏观概念是。将14 b数据空间线性映射到10 b空间。假设做灰度拉伸前的灰度值为Yi,则它的灰度取值范围是[0,16 383];灰度拉伸之后的灰度值为Yi’,它的取值范围为[0,1 023],则Yi和Yi’直接直接的映射关系为:
式中:Ymax为某帧图像的灰度最大值;Ymin为某帧图像的灰度最小值。
如果输出为8 b图像数据,则根据需要将14 b灰度转换到8 b灰度空间,线性映射关系为:
式中:Ymax为某帧图像的灰度最大值;Ymin为某帧图像的灰度最小值。
根据上面的公式可看出,在进行拉伸变换时,需要用到基本的乘除法运算,这在Xilinx公司FPGA内部实现起来较困难,最为常用的做法是调用FPGA内部的乘除法IP核,这样可以极大提高FPGA的工作效率。根据上面的公式,若想实现算法,还需要知道当前帧图像数据的灰度最小值和最大值。FPGA工作是以时钟为基础的,具有实时性,如果想获得当前帧的灰度最值,需要对图像数据进行缓存处理,然后二次提取最值。在程序实现上,为了简便起见,在此利用前一帧数据的灰度最大值和最小值来代替当前帧的最大值最小值。这样对当前帧遍历求取最值,然后应用到下一帧图像中去,这里认为前后帧相关性比较大,不会对算法造成很大影响。 2.2 伪彩处理
经黑白相机输入的图像数据经过协议转换处理后得到的是SDI接口视频YCbCr格式中亮度Y分量,这时将CbCr在程序里填充80h,就构成YebCr信号,而后用于输出显示,为了增强显示效果,颜色更加能丰富人眼的视觉效果,下面给出一个算法将灰度转换为伪彩色。
实现伪彩处理,通常是把当前像素灰度值作为存储地址查找RGB伪彩码表,将码表中对应的RGB三色值用RGB转换到YebCr彩色区间,而后输出伪彩图像。在FPGA里实现的基本方法是最大限度地利用FPGA的IP核,将RGB码表写到FPGA的内嵌RAM核里,在程序中依次遍历查找表和计算下面的公式计算出相应的CbCr值并且输出。
R=1.164(Y-16)+1.596(Cr-128)
G=1.164(Y-16)-0.813(Cr-128)-0.391(Cb-128)
B=1.164(Y-16)+2.018(Cb-128)
2.3 画幅缩放
图像的画幅缩放也被称为图像重采样,它是视频处理中的一项重要技术。在SDI显示输出模块中,由于标清SDI显示画幅分辨率是720× 576,前端输入CameraLink或者其他接口的图像分辨率随机,所以必然会用到图像画幅缩放,否则,如果图像分辨率超出SDI的这个范围,就会导致显示不全,如果分辨率小于这个范围,就会导致有黑框,直接影响后续的显示效果。
目前画幅缩放的算法种类繁多,但基本方法都是插值运算方面的算法,例如最近邻插值、双线性插值以及立方卷积插值算法等,但最近邻插值算法在亮度变化比较快的图像边缘比较粗糙;立方卷积插值算法非常复杂而且运算量大,不满足实时处理条件。同前面2种插值算法比较,双线性插值算法运算量少、实时性高,适合于在FPGA内部实现。
- 基于STM32 SDIO接口驱动SD卡的设计(下)(03-07)
- SDIO接口(12-15)
- Linux SDIO总线驱动(12-15)
- 基于ARM含SD控制器的SD卡的SDIO模式驱动解析(12-08)
- SDIO_FATFS_MDK 调试记录(12-03)
- STM32+SDIO+FATFS文件系统 直读SD卡(12-03)