新闻  |   论坛  |   博客  |   在线研讨会
基于SPIHT的立体视频编码及其TMS320DM642实现——AET/2008 34(1)
canso | 2009-02-26 09:35:05    阅读:1029   发布文章

    摘 要: 根据立体视频的特点,提出基于SPIHT的双通道立体视频编码方案,并在TI公司的多媒体器件TMS320DM642上进行了实验。实验表明,该设计方案具有实时可行性,并较有效地减少了运算复杂性。
    关键词: 立体视频;  TMS320DM642;  视频编码

 

    随着三维技术的不断发展,视频显示技术逐渐由平面显示向立体显示转变。与普通的单通道视频相比,立体视频增加了景物的深度信息,增强了视觉的现实感和逼真感。立体视频技术可被广泛应用于数字电视、三维视频会议系统、虚拟现实系统等诸多方面。但是立体视频真正应用到实际中还存在很多问题。其中一个重要的问题就是立体视频数据量巨大,几乎是单通道视频的两倍。另外,目前的压缩算法计算复杂度高,不利于硬件实现。为此,本文提出一种新的基于SPIHT的立体视频编码,减少了计算复杂度和块效应,并在TMS320DM642芯片上进行了实验,具有较好的实时性。
1 基于SPIHT的双通道立体视频编码
    SPIHT为第二代嵌入式图像编码。嵌入式编码的基本原理是编码器将待编码的比特流按重要性的不同进行排序,根据目标码率和失真度的要求,通过监视编码的一些参数,随时可以截断比特流,结束编码;同样,对于给定码流解码器也能够随时结束解码,并可以得到相应重建图像。与传统的基于DCT的图像编码相比,有效地克服了块效应,在低比特率时也能够恢复较好的图像,所以嵌入式编码在网络、无线传输有广泛的应用前景。本文采用的是易于硬件实现的无链表SPIHT算法NLS[1]
    立体视频摄取系统通常是从两个视角对同一景物进行拍摄,对于立体视频编码而言,除了考虑图像自身的冗余度外,还要考虑左右通道图像之间的空间冗余度。对于前者,采用NLS嵌入式编码去除冗余,而对于后者可以利用视差估计补偿的方法来去除冗余。将两个通道视频流分为主视频序列和副视频序列。副视频图像以主视频图像为参考进行视差估计,具体步骤为:将副视频图像分成16×16的块,在相应的主视频搜索最佳匹配块,得到视差图,最后再对视差图进行NLS编码。本文采用的搜索区域为56×32。其算法流程图如图1所示。

 


2 基于TMS320DM642硬件实现
    TMS320DM642是TI公司推出的针对多媒体应用的C6000系列的一款DSP芯片,该芯片时钟频率为600MHz,8个并行运算单元,处理能力达4 800MIPS,集成了一系列的外设以适应视频和影像技术的发展[2]。其中包括三个能够进行无延滞视频输入、视频输出或传输流输入的可配置视频端口,这三个端口可以被独立配置,能与各种视频A/D、D/A芯片进行无缝连接,使硬件电路的设计更方便。并且这些端口支持BT.656、RAWVIDEO等多种数字视频格式。增加了一个10/100Mb/s Ethernet MAC,并通过寄存器配置,提供一定的网络保证。另外,具有面向音频应用的McASP。
    本文采用TDS642 EVM开发平台[3]进行开发设计。该板拥有丰富的外围接口,主要接口有:1片TI公司的TMS320DM642 DSP;标准PCI计算机插槽;2片视频解码芯片,1片视频编码芯片,用于视频信号的A/D、D/A转换;32MB SDRAM;基于FPGA的OSD;4MB非易失性Flash存储器;TLV320AIC23立体声多媒体编解码芯片;以太网接口;可配置的boot load操作JTAG仿真口;8个用户可编程LED;子板扩展插槽。
    开发板具有两个视频输入端口,非常适合立体视频编码。视频输出口连接显示器,用于显示主视频流、测试实时性,立体视频合成码流通过Ethernet MAC传输,用户端解码播放立体视频图像。硬件设计结构如图2所示。

 

3 基于DSP的程序设计与优化
3.1 程序设计

    程序设计主要采用TI公司推荐使用的TMS320DM642 Video Port Mini-Driver即视频端口微型驱动函数,与DSP/BIOS的IOM设备驱动函数是一致的。视频设备硬件驱动一般分为上下两层,下层为IOM驱动,上层为FVID模式。FVID为视频图像的输入和输出提供了标准的应用程序接口(APIs),是DSP/BIOS GIO驱动的简单封装。使用FVID提供的函数可以有效地减少编写代码的工作量,并且只需要少量修改便可以很方便地将写好的程序移植到不同的DSP芯片上,提高了程序的灵活性。
    程序在DSP/BIOS基础上实现,DSP/BIOS是DSP开发过程中的重要工具。DSP/BIOS是TI公司推出的一个可裁减的实时操作系统,用户在DSP/BIOS上编写多任务应用程序很方便;DSP/BIOS提供了类似于先占式的多线程运行方式、线程管理、实时分析和配置工具;DSP/BIOS本身占用很少的CPU资源,并且提供底层的应用函数接口。
    DSP/BIOS中把任务称之为线程,一个线程就是一个单独的控制点,可能包含一个子程序、一个宏或者是一个函数调用。DSP/BIOS提供了以下几种线程类型,优先级从高到低分别为:硬件中断HWI(含CLK模块)、软件中断SWI(含PRD模块)、任务TSK、后台线程IDL。
    本文采用任务线程TSK,设置了tskVideoCapture任务函数,用于获取视频图像。同时在Device Drivers中的User defined Devices定义了三个设备:VP0CAPTURE、VP1CAPTURE和VP2DISPLAY,分别对应两个视频输入解码芯片SAA7115和一个视频输出编码芯片SAA7105。
3.2 程序优化
    由于视频处理的数据量大,数据处理相关性高,因此,如何针对视频处理的特点对DSP 进行优化编程,充分发挥其性能就成为提高整个系统性能的关键。程序优化从如下几个方面进行考虑[4]
    (1)选用TI公司CCS软件的C 编译器的各种优化选项自动优化:TI公司的编译开发工具CCS为程序开发人员提供了多种优化选项,通过这些优化选项的使用,能够对C代码进行极大的优化。
    (2)存储空间:DSP的程序数据存储空间非常有限,但DSP存储空间的配置十分重要。因此,对于视频编解码这种需要处理大量数据的程序而言,必须合理地安排数据和程序的存储方式,实现对存储器的优化配置,以便提高程序执行的效率。DSP对不同的存储单元的访问速度是有区别的,对片内寄存器的访问速度最快。因此,合理地配置和使用存储空间,对系统整体效率影响很大,应该尽可能地把访问比较频繁的常数表和代码段装入片内RAM。如果过大,则把其中一部分装入片外存储器。
    在NLS算法中需要四个表,分别为val表、gmax表、dmax表和mark表。所有这些表的大小都是事先知道的,所以完全可以放入片内事先分配好内存空间。
    另外,在视差估计过程中,可以通过芯片的EDMA功能以乒乓方式轮流放入L2 SDRAM中的当前视差估计块缓冲区A或B中,以加快DSP读取速度。同时,以该块的一个预测位置为中心的一个56×32的搜索窗口从对应的参考帧中取出放入当前搜索窗口缓冲区中,以方便程序在该窗口内进行视差匹配搜索。只有在该块视差估计完成后才把该块的视差数据写入外部SDRAM中缓冲区的对应位置。
    (3)C语言优化处理:在DSP的寄存器中,有符号数据存取要进行符号位扩展,int类型数据本身已经是32位,存储在32位寄存器中可以避免不必要的符号位扩展。在使用循环变量时,应尽量使其为int型或unsigned int型数据,用register关键字声明。register关键字可以用来告诉编译器一个变量将会被多次使用,可以把它放入寄存器中,以节省大部分的循环时间。
    本文NLS算法中涉及的小波变换采用TI公司提供的IMG_wave_horz和IMG_wave_vert小波变换库函数实现,极大地提高了运算速度。
    (4)汇编级的优化:对于程序中特别影响速度的地方,如视差估计部分可以改为线性汇编程序。线性汇编是C6000系列DSP所特有的类汇编工具,只需按照C代码的自然顺序,写出线性汇编语句,不必考虑功能单元的分配以及指令的并行性。因此,它比编写纯汇编语句耗时要少,又具有较高的执行效率。使用线性汇编可以开发出高度并行的代码,代码效率达到人工编写汇编代码效率的90%以上,同时还可以降低编程工作量,缩短开发周期。
4 试验结果与讨论
    本算法对立体图像的测试结果如图3所示,图像格式为QCIF。

 


    在DSP上通过显示器测试主视频序列运行情况时,每秒可处理20帧左右的图像,画面良好,基本达到了实时性。在试验室内部,通过局域网络传输,可在用户接收端播放立体视频图像。
    本文提出的算法在同一视频流相邻帧之间没有采用传统的运动估计和补偿算法,可以减少算法的复杂度并有利于硬件实现。并且可在低比特率传输的情况下有效地除去传统算法的块效应,这也是本算法的特点之一。其缺点是在于视频流有较多的冗余信息。今后研究的方向将侧重于怎样在NLS编码的基础上再除去相邻帧冗余并且减少块效应。
参考文献
[1] WEN Kuo Lin,BURGESS N.Listless zerotree coding for color image.Conference Record of Thirty-Second Asilomar  Conference on Signals,Systems and Computers,1998,1:231-235.
[2] 闻亭科技发展有限责任公司.Introduction to DM642:the digital media processor.2004.
[3] 闻亭科技发展有限责任公司.TDS642EVM多路实时图像处理平台用户使用手册V1.1,2005.
[4] 郭卓锋,丁艳.基于DSP的实时图像处理系统的设计.光学技术,2004,(1).

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客