新闻中心

EEPW首页>消费电子>设计应用> 基于FPGA的视频格式转换系统设计

基于FPGA的视频格式转换系统设计

作者: 时间:2011-03-14 来源:网络 收藏

  2. 3. 3 帧率和隔行逐行模块

  隔行转逐行的方法可以分为空域和时域两个方面。空域算法简单,易于硬件实现,常见有直接重复行和在垂直方向上进行插值得到缺失的行。时域方法涉及到相邻场之间的运算,常见方法有场混合、运动自适应去隔行算法以及复杂度最高的运动补偿去隔行算法。本文折衷考虑使用场混合方法,即将场数据相邻场两两合成为逐行的帧数据,如图8所示。

场混合法实现隔行逐行变换

图8 场混合法实现隔行逐行变换

  PAL和SECAM 制式的场频为50 Hz,而NTSC 为60H z,当需要进行不同场频信号的叠加就需要进行场频。大多设备使用的帧频为60 H z,因此本文只涉及50~ 60 H z的帧率转换。常用方法有场重复、场插值、运动补偿法,其中场插值算法如图9所示。

9.jpg
图9 50 Hz转60 Hz的场插值方法

  对于PAL制式从上面两图可知,只要能同时读取3行场数据即可以实现隔行逐行变换和帧率转换一次完成。如输出的第1帧由输入的第1,2 场数据决定,而输出的第2 帧由输入的第1,2,3场数据决定,而输出的第3帧由输入的第2,3,4 场数据决定,依次类推。

使用位宽为48的DDR2存储器作为场存储器,而在内部DDR2控制器端数据宽度为96。如产生第2 帧输出的处理过程为,在第1场存入时,把高64bit屏蔽掉不写入,而低32 b it写入场数据(实际只利用30 b it)。在第2场存入时,把高32 位和低32 b it屏蔽掉不写入,而中间32 bit写入场数据。在第3 场存入时,把低64 b it屏蔽掉不写入,而高32 bit写入场数据。这样在数据读取的时候可以顺序同时读出3场数据,然后进行上述的组合插值运算,即可得到输出。场存储器数据内如图10所示。

10.jpg

图10 可以实现同时去隔行和帧率转换的场存储器

  注意新的输入场数据不能覆盖掉相邻的数据,因此在数据存入时屏蔽位是在不断跳动的,并以5 场为一个周期。虽然这样降低了写入的效率,但由于所有数据读写都是顺序操作,因此从整体上来说仍然提高了DDR2 的存取效率,并且使操作变得简单。对于NTSC 制式,由于帧率转换部分可不用考虑,可以将只使用低64位部分进行两场存储。

  2. 3. 4 缩放模块

缩放包括放大( up scaling ) 和缩小( downsca ling )两个方面,而进行缩放的基本方法为空间插值。下式为对图像进行插值的一般数学表达式,其中g ( i,j)为缩放图像中待插值点的像素值,f ( k,l)为原始图像中坐标( k,l)处的像素值,h( i- k,j - l)为插值基函数。



  插值基函数的选择可以有很多种,通常有二维的矩形函数、线性函数、三次函数及S inc 函数等,它们分别对应于最近邻插值、线性插值、三次插值以及理想插值(实际中利用S inc函数截断后插值) ,其插值效果为从差到好排列,但实现难度也依次提高。在实际处理中是利用滤波器来实现插值基函数,而且由于这些插值的对称性,可以将其分解为横向和纵向插值两部分分开进行,如二维线性插值函数对应双线性插值( Bilinear Interpo lation),三次函数对应双三次插值( B icub ic Interpo lation) ,对于Sinc 插值函数实际中为多相位插值( Po lyphase Interpo lation)。本文使用多相位插值法实现图像缩放,实际上在4 ? 4领域大小内进行多相位插值和三次插值几乎是一样的,只是对应插值函数值略微不同。多相位插值法是通过对输出点对应原图中的领域进行Lanczos2 函数移相插值来产生输出点的。如图11所示。

11.jpg


图11 Lanczos2 函数



评论


相关推荐

技术专区

关闭