Profile - CN400


CN400

基于全景成像的超视距全真场景驾驶仪

兰州大学
信息科学与工程学院电路与系统研究所


Finals


[print]


Project

Name of Project:基于全景成像的超视距全真场景驾驶仪

Contact Information

Name:喻洋
E-Mail:carlyy.yuyang@gmail.com
Telephone:0931-8912786
Mobile Phone:86-13919075020
Mailing Address:甘肃省兰州市城关区天水南路222号兰州大学信息科学与工程学院电路与系统研究所

Contest Advisor

Name:马义德
E-Mail:yidema@gmail.com
Telephone:0931-8912786

Members

No.NameE-MailEnglish Name
1喻洋carlyy.yuyang@gmail.comYu Yang
2梁栋donglcn@gmail.comLiang Dong
3冯晓文fengxw05@lzu.cnFeng Xiaowen

Project Paper - view as Preliminary(2009/06/15), Final(2009/09/14), Draft, Latest

1. 设计概述 (Preliminary Paper)

1.设计意图。

        本项目计划以Altera CycloneII FPGA为核心,用DE2-70作为开发平台,设计一款基于全景摄像机的真实场景还原系统,用于超视距远程驾驶。本选题是源自对现有的行走机器人的远程视频遥控方案进行改进的想法。我们知道,目前各种作业机器人的视频遥控方案,基本上是照搬安防视频监控的方案,使用的是带云台的CCD摄像机(如图1所示),摄像机的视野范围有限,要想观察到360度的全部场景,需要操控人员不断向摄像机云台传送指令,控制云台的步进电机转动,但是由于步进电机机械传动装置旋转速度的限制,这样的做法很难保证视角切换的实时性,而且这种机械装置在复杂作业环境中的可靠性也是个问题,经常会出现远程操控人员既要不断调整云台的旋转角度,又要遥控机器人的行驶, 忙得手忙脚乱。

            
                                                       图1 传统带云台的CCD摄像机和行走机器人

        为了改进上述问题, 我们想到了利用反射式全景摄像机(如图2所示)。这种摄像机的结构很简单,利用普通的CCD摄像机和曲面反射镜组成。曲面反射镜可以将360度的全部景象反射到摄像机镜头中,可以取代传统单摄像机附加的云台机械传动装置,使全景视频采集的实时性有了质的提高。

                                    
                                                    图2 反射式全景摄像机、反射图像及展开图像

在机器人世界杯足球锦标赛上,由于其对全景成像的实时性要求极高,反射式全景摄像机受到大多数参赛队的青睐(如图3所示)。
                              
                                         图3 RoboCup机器人上使用的反射式全景摄像机


        在图2中我们可以看到一幅全景摄像机的拍摄场景,它虽然做到了360的全景采集,但采集的图像是环状平面图,与我们期望的真实场景相差甚远。我们这个系统的核心,就是要将行走机器人上放置的反射式全景摄像机发回的图像进行实时处理,转换成人眼能够接受的真实场景(如图2所示)。同时,作为完整的驾驶仪系统,我们还将黑匣子、视角切换选择等功能整合进来(如图4)。整个系统实现以后,我们会看到类似于极品飞车游戏中的快速场景切换的效果。和极品飞车不同的是,我们的场景是完全真实的。下面我们将具体介绍如何充分利用ALTERA公司提供的软硬件资源实现整个系统。  

                                              
                                                                                图4 系统实物连接示意图

2.适用范围

        本设计可作为设计范本,应用于各种实时360度场景的再现。在抢险救灾、消防灭火等各种危险环境下,可应用于超视距遥控机器人作业;在消费电子领域,可应用到电动游戏和遥控电动车模,增强趣味性和真实感;同时也特别适合汽车驾驶培训机构对学员进行室内教学训练和考核,大大降低了培训成本并能避免伤害学员人身安全的交通事故的发生。与传统的室内模拟驾驶仪不同的是,本系统是将驾驶室搬到室内,学员视野中呈现的是真实的驾驶场景,从而遥控车辆在室外真实道路上行驶。

3.使用本款Altera器件的原因

        本设计的核心是将反射式全景成像CCD摄像机采集的模拟电视信号,经过多种快速视频算法处理,实时地转换成人眼能够接受的真实场景,并添加多种辅助功能以完成整个系统。ASIC和专用的DSP处理器都很难满足本设计的要求。我们使用本款Altera器件的原因是:

  1. Altera CycloneII 2C70 FPGA核心拥有数量高达70000个逻辑单元,可以非常灵活的构建本系统的所有硬件模块,多达250个的M4K可以满足高速视频缓存的需要。
  2. Altera提供的NiosⅡ软核及其外设接口可以根据我们的要求定制裁减,完成本设计中硬件难以完成的诸如液晶屏驱动和SD卡读写的软件实现。
  3. Altera的quartusⅡFPGA硬件开发环境和Nios II IDE软件开发环境功能完备,集成的多种工具方便易用,可以帮助我们在尽可能短的时间内构建整个系统。
  4. Nios II IDE直接将μcos RTOS集成其中,避免了移植操作系统的麻烦,帮助我们快速开发。
  5. DE2-70平台上拥有大容量的存储器和丰富的外设接口,为本设计的开发提供了多种可选方案。
    同时,Altera提供了丰富的教材和各种应用范例支持,有助于我们深入的理解和快速的掌握。

 

(Revision: 18 / 2009-09-15 11:20:58)

2. 功能描述 (Final Project Paper)

        如图所示为整个系统搭建完成的实物图

                          

        我们这个系统的功能是将机器人上放置的反射式全景摄像机发回的图像进行实时处理,转换成人眼能够接受的真实场景同时,同时还拥有“黑匣子”和视角切换选择等功能。本设计的硬件板块主要包括DE2-70开发板,状态监视LCD显示板与按键电路板,反射式全景摄像机,无线音视频收发模组和VGA显示器。系统的功能模块主要分成以下几个部分:模拟音视频采集处理模块,图像展开算法模块,Nios II处理器系统模块。

  1. 模拟音视频采集处理模块,主要完成NTSC视频信号的去交织和色彩空间转换功能,最终输出供VGA显示的RGB信号。
  2. 图像展开算法模块是本设计的核心所在。我们利用Altera 2C70系列FPGA芯片充足的逻辑资源和片上存储器实现由极坐标到直角坐标的查表变换,并且完成对图像的几何校正,使显示的图像符合人眼观察的需求,同时实现简单的DPCM压缩编码。
  3. 我们使用SOPC完成了Nios II处理器系统模块的构建,使用uCOSII操作系统完成对液晶显示屏的驱动和控制,并且在每30秒向SD卡中存储一帧画面数据。

 

(Revision: 2 / 2009-09-14 20:15:21)

3. 性能参数 (Final Project Paper)

FPGA资源使用情况如下所示

               

各项性能指标

摄像机制式:NTSC
显示刷新率:60Hz
显示分辨率:640X480
有效图像分辨率:640X380
图像缓存空间:105KB
无线音视频收发模组频段:2.4GHz
无线音视频收发模组传输距离:150-1000米
液晶显示屏刷新率:20Hz
液晶显示屏分辨率:240X320
视角转换时间:2.13ms
像素时钟:27MHz
Nios II系统时钟:100MHz

 实际显示效果

                         
                                                                                 展开前显示效果

                         
                                                                              前方展开后显示效果

                         
                                                                                      左方展开后显示效果

                         
                                                                               后方展开后显示效果

                          
                                                                                    右方展开后显示效果

 

(Revision: 3 / 2009-09-14 14:46:29)

4. 设计结构 (Preliminary Paper)

硬件:

下图所示为本系统硬件结构图


                                                                                       图1 硬件结构框图

        考虑到本系统中的视频处理功能是典型的视频流实时处理,所以前两个模块采用并行、高速的纯数字逻辑实现;同时,除了视频处理外,本系统还需要驱动液晶屏显示和SD卡存储,这些对实时性要求不高的工作,可由顶层niosII处理器系统很好的完成。通过SOPC builder搭建的niosII处理器系统,除了在Avalon总线上挂接niosII软核外,还在Avalon总线上挂接了ssam、sdam、flash、以及供液晶屏、SD卡以及视频流进行数据传输的PIO口。

软件:

        本设计利用μCOS-II操作系统,建立了两个任务,一是完成按键方向选择的液晶屏显示,二是完成从sdram中传输数据到SD卡存储。由于这两个复杂任务都由纯软件完成,使程序的协同变得困难,必须在niosII处理器中引入任务管理机制,μCOS-II的引入正是为了解决此问题。两个任务的软件流图分别如图2和图3所示。

                                         
                                                                                图2 任务一:LCD显示控制及键值读取

                                                                               
                                                                          图3 任务二:SDRAM和SD卡存储控制

(Revision: 18 / 2009-09-14 21:59:34)

5. 设计方法 (Final Project Paper)

        在整个设计和实现过程中,我们采用了QuartusII 8.0,SOPC Builder和Nios II IDE等多种工具,这些工具可以无缝集成在一起,方便易用。我们的模拟音视频采集处理模块,图像展开模块主要通过Verilog硬件语言编写而成,能够将视频实时的采集、展开,并通过VGA显示。图像区域监视控制器模块,黑匣子模块等是通过SOPC的方式开发。

一、模拟音视频采集处理

       

        我们使用无线音视频收发模组将反射式全景摄像机采集的视频信号传输到DE2-70的模拟视频接口。如下图所示

                                                      
                                                     图1 反射式全景摄像机和无线音视频发射模块

        我们参照Terasic公司提供的TV例程和Karaoke例程非常方便的完成了模拟音视频采集处理模块。视频采集处理模块由SDRAM控制器,YUV to RGB模块和音频模块组成。四端口的SDRAM控制器将视频信号存储到DE2-70的SDRAM存储器中,然后通过两个Read端口,分别读出奇数场和偶数场完成去交织处理。YUV to RGB模块把视频信号转换成RGB信号,供VGA的显示。


                                                                                    图2 模拟视频采集处理模块示意图

音频模块由I2C音频设置模块对DE2-70上的WM8731音频芯片进行设置,完成了音频的采集和输出。

                                                          
                                                                                    图3 模拟音频采集处理模块示意图

二、图像展开

        由正余弦查找表,图像区域选择模块,图像缓存存储器模块,图像校正模块和DPCM编码解码模块组成。图像展开就是把极坐标的图像转换成直角坐标系的图像,更符合人眼的观察视觉。最后,在VGA显示的同时将图像数据传入Nios II处理器系统供SD卡存储。

                                            
                                                                 图4 图像展开算法模块示意图

(1)图像查表展开

下图为正余弦查找表模块、图像缓冲存储器模块和区域选择模块连接示意图。

                                                
                                                                    图5 查表展开算法实现示意图

        首先,我们通过matlab程序生成一个正余弦查找表,用于产生图像缓存模块的读取地址,输入到正余弦表的信号是VGA控制器产生的行列扫描信号,指示当前VGA显示的具体位置及目标图像的坐标,通过正余弦变换就可以完成目标图像到原始图像的地址映射,实现图像展开。由于M4K存储介质相对SDRAM,SSRAM的读写存储更迅速,我们选择FPGA片上的M4K存储器作为图像缓冲存储器,并将其配制为真双口。考虑到通用性,选择VGA显示输出。我们用区域选择模块将原始全景图像分为4部分,这样就可以使所需的存储容量减少到原来的1/4,并且,此模块还产生图像缓冲存储器的存储地址将每一块区域的图像进行地址旋转,使得四个区域图像存储到图像缓冲存储器之后都将成为第一象限的形式,如图6所示。这样一来我们仅需90度的正余弦查找表就可以完成360度的全景图像展开,大大节省了硬件资源,同时使变换精度由原来的0.5度提升到0.14度。
        另外,变换后供VGA显示的图像尺寸为640*380(经实验此尺寸的还原效果长宽比例最符合实际,剩余640*100的屏幕下方部分显示文字信息),而由于图像缓存中的原四分之一图像只有320*240个像素,图像展开的过程中也被放大,而且图像极坐标展开是非线性变换,不同半径却须相同数量的采样点,这两个原因致使图像展开后锯齿现象严重。FPGA硬件不支持浮点运算,这使得查表过程中像素点定位的精度受到影响,我们据此采用间接回溯查表的方法,即从缓存READ口查表,增加足够整数数据位位宽,保证查表过程中作乘除运算不会出现有效位溢出而造成精度降低,只在最终确定缓存地址时将数据归一化为实际值。这样做最大限度的保持了查找表精度,是放大和非线性造成的锯齿现象得到显著改善。

 

       
                                                                        图6 全景图像分块旋转示意图

(2)图像校正算法

        由于全景摄像器的反射镜面是双曲面方程,图像展开后的扭曲变形较大,我们根据双曲面方程的特性,解算出了平面像素跟双曲面像素的对应关系,编写了图像校正模块。我们发现,图像畸变主要在垂直方向,我们用MATLAB依据校正算法生成查找表,当VGA Controller的列扫描信号进入该模块之后会查表产生一个新的列坐标从而完成对图像的校正。经实验证明,校正之后的图像完全能够满足人眼观察的需要。下图所示为图像校正算法之前与之后的图像对比图。

                
                 图7 MATLAB仿真图像校正之前与之后图像对比示意图,可见图像中办公桌的畸变得到很好修正

(3)DPCM编解码

        由于VGA输出需要RGB三通道的位宽都为10位,将占用大量的M4K资源,在图像存入图像缓存模块之前,进行了简单的DPCM编码,使得RGB三通道的位宽变为5位,节省了一半的存储空间,肉眼观察效果与没有压缩的图像没有差别。

        DPCM编码是差动脉冲调制编码的简称,编码方式是对相连的两个采样值之间的差值信号进行编码,编解码原理如下图所示:

                             
                                                                                     图8 DPCM编解码原理示意图

图中,S(n)——当前输入像素采样值;
Sp(n)——由预测编码得到的预测信号值;
E(n)——像素残差信号值(差值信号);
Eq(n)——量化后的预测误差信号值;
Sr(n)——重建像素信号值;
DPCM采用线性预测方式,预测信号由n时刻之前的M个量化后的差值信号线性组合得到:,其中ki为预测系数

本系统中我们所用的简单的DPCM编码过程如下:(ki=1)
 

  1. 初始化:Sp(0)=0;
  2. E(n)=S(n)-Sp(n)
  3. E(n)量化编码后得到Eq(n)
  4. 重复第2步。

解码过程如下:

  1. 初始化:Sp(0)=0;
  2. Sr(n)=Sp(n)+Eq(n)
  3. 重复第2步

我们利用MegaWizard Plug-In Manager中的LPM_FF设置了10bit和5bit的D触发器分别作为编码器和解码器的像素缓冲,其他部分用Verilog语言编写很容易便可以实现。编解码模块图如下:

                                                            
                                                          图9 DPCM编解码模块示意图

三、图像区域监视控制及黑匣子

实现这两个功能的系统框图如下图所示:


                                                                                        图10 Nios II系统框图

这两个功能通过SOPC实现(如图):

                     
                                                                                          图11 SOPC系统图示 

  1. 锁相环pll_0,输入时钟为50M,一个输出提供100MHz的 niosII系统时钟,另一个提供sdram的100MHz时钟,且设置65ns的相移。
  2. 软核处理器cpu 使用fast版的niosII,确保运算速度最快。
  3. 系统的存储介质中,2 M的ssram作为niosII的数据存储器,8M的flash作为niosII的程序存储器,32M的sdram作为图像缓存,通过PIO口从硬件处理模块读入单帧数据,供SD卡定时存储需要。
  4. 两个timer,系统定时器sys_clk_timer,  Microc/OS-II的timestamp_timer。
  5. TFT液晶屏的数据端口 data_0。
  6. TFT液晶屏的指令端口,rst_0,rs_0,cs_0,rd_0,wr_0。
  7. 切换展开图像区域的按键端口 front,back,right。
  8. SD卡的相关端口clk,cmd,dat,dat3。

(1)RTOS

        软件系统基于MicroC/OS-II操作系统设计,MicroC/OS-II是一种基于优先级的可抢占式硬实时内核,考虑到Altera公司已经将其移植到了Nios II操作系统平台上,省去了我们的移植工作,加快了我们的开发进程。
        MicroC/OS-II的工作可以分为两个任务,一个是图像区域监控的按键采集及区域方向显示,另一个是控制SD卡存储图像数据。由于这两个复杂任务都由纯软件完成,使程序的协同变得困难,必须在niosII处理器中引入任务管理机制,μCOS-II的引入正是为了解决此问题。

(2)图像区域监视控制

        此功能的硬件由使用液晶屏和按键组成(如图13)。LTM024D250TFT液晶屏是一块用于手机的彩色屏(如图12),分辨率是240*320,最大65K种颜色。通过Protel制作了它的驱动板,把数据指令引脚连接到DE2-70的外围扩展口上,由PIO口挂载到SOPC总线上。Protel电路图如下所示:

                                                              
                                                                          图12 LTM024D250TFT液晶屏驱动板电路图

   
                             图13 液晶屏实物图                                                              图14 图像区域监视控制器

        这块TFT液晶屏的rgb彩色宽度为16位,5位的red,6位的green,5位的blue。数据端口是8位,是一块支持8位数据总线的TFT液晶屏,下面是它的读写时序:

 
                                                                             图15 LCD液晶屏读写时序示意图

        我们把MCU上的液晶屏驱动程序成功移植到了niosII软核中。可以实现按键所选区域的显示,做为系统的区域选择监视。首先通过Img2Lcd29取模软件把指示展开区域四个方向的图案转换成16进制的数据,以front.h,back.h,rignt.h,left.h头文件的形式存储这些数据,这些数据通过PIO数据寄存器的写函数传到GPIO口引脚,再输入到TFT液晶屏的数据端口。再根据TFT液晶屏的数据指令读写时序,通过PIO数据寄存器的写函数把相应的数据指令读写电平通过GPIO口传到TFT液晶屏的指令端口,这样16位的RBG数据就可以写进TFT液晶屏的寄存器。选择用niosII的方式,相对直接用硬件语言来驱动方便迅速的多,节省时间,加快了我们的开发进程。

(3)“黑匣子”


        我们直接利用DE2-70上的SD卡模块完成本设计的黑匣子功能。SD卡是流行的小型存储器,体积小,容量大。9个引脚,CLK,CMD,DAT-DAT3,VDD,VSS1,VSS2,把串行的传输方式变成并行的传输方式大大提高了传输速度。
        通过4线方式,可以使图像数据的写入速度大大提高。SD卡也可以工作在简单的SPI模式下。在我们设计中,SD卡定时30秒存储一帧图像数据,涉及的数据量不大,所以直接利用SPI模式。我们移植了SD卡SPI模式的驱动程序,用PIO口模拟SPI底层通信协议,经测试1M数据的写入需要30s,能够满足SD卡对sdram中105KB图像数据的存储。我们采用FAT16文件系统,最大容量支持2G。
        SD卡初始化步骤:
1)延时75clock
2)发送CMD0 ,需要返回0x01 ,进入Idle状态
3)循环发送CMD55+ACMD41,直到返回0x00 ,进入Ready状态。
        写步骤:
1)发送CMD24(单块)写命令,返回0x00
2)发送数据开始令牌0xfe + 正式数据512Bytes + CRC 校验2Bytes

       

 

      

(Revision: 21 / 2009-09-17 15:11:27)

6. 设计特点 (Preliminary Paper)

  1. 利用反射式全景摄像机,取代传统单摄像机附加的云台,一次性获取整个场景的信息,解决了全景视频采集的实时性问题
  2. 全景图像展开算法中的所有处理单元采用纯硬件实现,视频流完全实时,使用者可迅速看到各个方向的场景,不会出现软件实现方法中丢帧和延迟的现象。
  3. 使用真双口的M4K作为图像缓存,实现视频流去交织和图像展开两个时钟域的信号传递。针对片上宝贵的M4K数量有限的情况,设计了合理的算法,将360度图像分为90度的四个方向,根据使用者需要每次只缓存一个方向的图像,并加入DPCM编解码,使bit流位宽压缩一半,使片上M4K足够图像缓存和SOPC系统使用。
  4. 利用MATLAB生成了精度达0.14度的图像展开查找表,并合理设计数据位宽确保运算过程中精度的保持。随后用DSP方法进行了镜面参数校正,解决了显示输出图像的锯齿现象和几何畸变。此外,对视频流四个方向采用不同的缓存写入地址顺序,只需一个象限的图像展开查找表即可完成展开,大大节省了逻辑资源。
  5. 在niosII上使用μcos RTOS,很方便地完成了区域选择监控器的液晶屏显示和SD卡定时存储图像数据两个任务的调度。由MCU程序移植的驱动程序,实现了niosII对液晶屏和SD卡的纯软件控制
  6. 在系统整体设计上,结合纯硬件对视频流处理的优势和SOPC搭建灵活简单、编程容易的优势,取得了性能指标和开发速度的双赢。

 

(Revision: 20 / 2009-09-18 16:21:35)

7. 总结 (Final Project Paper)

        在参加此次创新大赛之前,我们曾使用过Altera公司的多种CPLD和FPGA,对数字逻辑的设计比较熟悉,我们深切感受到了Altera的FPGA中低成本芯片的片内资源的不断提升和性能的日益强大,只要使用者有足够开发能力,2C70以及后续产品足以完成数字视频流的实时处理。通过此次大赛,我们接触了Altera的SOPC解决方案,从而颠覆了我们对FPGA的理解:FPGA不但适合做并行、高速的数字逻辑设计,而且可以内嵌强大的可编程片上系统。同时,niosII的C程序通用性好、便于移植,niosII软核本身以及所有外设、接口都可以随意定制, niosII还很好的支持了RTOS,这些都使我们深切体会到:Altera SOPC的推广,确实是一场挑战传统SOC和嵌入式系统的革命!
        我们的这个作品,在整体上可看作是集成了专用视频协处理能力的嵌入式系统。在比赛中,我们将FPGA的传统优势和SOPC的革命性理念充分结合,用较低的成本在较短的时间内开发出了功能较完备的系统,这得益于Altera公司可靠的产品性能和先进的技术理念。
        由于时间紧的原因,我们的系统还有不少值得改进的地方,如可考虑使用ADPCM,使压缩编码效率进一步提高;可移植μcGUI图形化操作界面,使方向选择监控器的功能更加完善。
        最后,我们参赛小组由衷感谢Altera公司提供的这次难得的参赛机会,使我们在实践中接触到业界前沿,积累了技术经验,提高了开发能力。

(Revision: 7 / 2009-09-17 18:34:43)