Profile - CN345


CN345

基于FPGA的数字视频图像旋转系统

江苏大学
计算机科学与通信工程学院


Finals


[print]


Project

Name of Project:基于FPGA的数字视频图像旋转系统

Contact Information

Name:徐飞
E-Mail:xufei1001@126.com
Telephone:0511-82606684
Mobile Phone:051182606684
Mailing Address:江苏省镇江市江苏大学计算机学院519工作室

Contest Advisor

Name:肖铁军 赵蕙
E-Mail:tjxiao@ujs.edu.cn
Telephone:13861357928

Members

No.NameE-MailEnglish Name
1徐飞xufei1001@126.comxufei
2华纯small_small_cat8@163.comhuachun
3秦立红qinlihong111@126.comqinlihong

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

1. 设计概述 (Preliminary Paper)

 

          (1)系统研究背景以及所选用本款FPGA的原因
  当今的图像处理以及图像识别领域中已设计出很多图像处理的算法,而且已达到了很好的效果,但是这些算法主要是用软件实现的,在对图像处理实时性要求较高的场合下,有些图像处理的速度难以满足实时性的要求,为此人们进行了大量的改进算法的研究而且取得了很多成果。但在实际应用中常常要求处理的图像数据量大且实时性要求比较高,这就对数字图像处理技术提出了更高的要求。因此,选择合适的硬件设备来实现数字图像处理的算法成为一种趋势。
 作为一种重要的数字图像处理内容,数字图像旋转系统是进行后续图像处理的重要步骤。如目前研究较多的车牌图像的旋转,文本图像的旋转等等。
 本设计所采用的FPGA芯片是具有高效率、低成本的Cyclone II 系列芯片中的Cyclone EP2C35。它的功能十分强大。它由33216个LE组成,片上有105个M4K  RAM块。端口宽度可以根据需求配置,可以实现真正意义上的双口操作并且速度很快。支持各种I/O 接口标准和PCI标准。并集成了NIOS II软核应用系统,结合高集成度的SOPC技术,大大方便了外围电路的定制与裁剪。本系统采用软硬件协同设计的思想,设计灵活,提高处理速度和控制可靠性,同时降低了设计成本,易于系统的升级和可扩充性。
  (2)设计意图
      以利用本系统对采集到的视频进行旋转,并通过LCD显示屏显示。设计初衷是用在生产线产品检测上,可以对摆放倾斜的物体的视频图像进行旋转后进行图像检测,克服肉眼检测的低效率。
(Revision: 3 / 2009-09-13 13:31:40)

2. 功能描述 (Final Project Paper)

 

           1.视频采集
使用CCD摄像头+FPGA模式进行视频采集,摄像头原始输出视频数据格式为YUV格式,通过SDRAM Controller帧缓存写控制器将视频数据写进容量较大的SDRAM,以便下一步对图像进行处理。
                 2.      图像处理
本系统首先运用CORDIC(Coordinate Ratation Digital Computer)算法计算出图像旋转矩阵中用到的Sine和Cosine的值,进而计算出旋转后的像素坐标。 再使用双线性插值算法对图像进行插值运算,使图像的旋转效果达到最佳
        3. 视频显示
设计了LCD Controller控制器来控制LCD显示屏,对采集到的视频进行实时显示,并能够通过按键控制对图像旋转后的图像进行显示。
(Draft / 2009-06-14 17:53:06)

3. 性能参数 (Final Project Paper)

(1)系统设计使用资源情况:

  

(2)SOPC系统所使用的时钟频率:

(3)对图像旋转矩阵中的正余弦函数的计算采用了自定义指令的方式计算,大大地提高了系统的性能。

     用sin()cos()函数计算所消耗的平均时间:2.060ms

    用自定义指令计算CORDIC算法得到sinecosine的值消耗的平均时间:0.0810ms

  系统性能提升:2.0600/0.0810=25.43倍。 

 系统节省时间:(2.060-0.081)*160*200ms = 63328ms = 6.3328s.

 

(Draft / 2009-09-13 13:48:48)

4. 设计结构 (Preliminary Paper)

(1)设计总框图

  

(2)总体流程图

   

(3)

  

 CORDIC模块计算Sine和Cosine值,经过仿真,需要14.5个周期对输入的角度值计算出Sine和Cosine的值。
        CORDIC 核心结构:
     

   

(Revision: 2 / 2009-06-14 18:25:23)

5. 设计方法 (Final Project Paper)

(1)SOPC系统:

 

 模块中sdram_0用来存储采集的图像,sram_16bit_512k_0用来存储软件所需的代码和程序运行所需的堆栈等等。time_CI用来测试系统性能时所添加的时间戳。

(2)   实现步骤及实现方法:

1)视频采集与存储

 

      视频采集的过程如图所示:首先通过I2C视频配置来配置ADV7181芯片的工作寄存器,这时芯片就可以正常工作了;通过稳定信号检测模块来保证采集到的信号是有效信号;然后通过ITU656解码模块把ITU-R BT.656标准信号转化为YUV4:2:2信号,同时输出Dval信号,用来控制视频数据是否用于后期的LCD显示;最后把YUV4:2:2信号转化为RGB信号。

              

               2)帧缓存写控制器SDRAM Controller

                为了将采集到的视频根据需要有序的存入SDRAM中,设计了一个帧缓存写控制器。Altera提供了一个SDRAM控制器的IP核,可以通过Avalon总线的主端口写对SDRAM写入数据,所以帧缓存可以通过Avalon主端口写来完成。

      为解决存储时有关奇偶场像素的问题,本系统设计了状态机来控制写地址address,状态机同时控制FIFO溢出问题 

                          

                                                 3) LCD Controller

                                     

           

LCD控制器的工作流程如下:刷新周期开始时,帧缓存地址生成逻辑根据帧线长寄存器和帧缓存地址寄存器为帧缓存读控制逻辑提供地址,帧缓存读控制逻辑根据该地址完成帧缓存中数据的读取操作,并将该数据输送到输出缓冲模块,用来最终的显示。与此同时,时序信号生成模块依据LCD的时序规范生成行,场同步信号以及与像素数据同步的相关显示点的横、纵坐标。最后,像素输出控制逻辑根据控制寄存器内的信息向LCD屏幕输送RGB颜色数据,完成最终的图像显示。

        4)图像旋转模块

              图像旋转模块由图像坐标的旋转和像素的插值来完成。该模块是基于Nios的软核实现的,但其中图像旋转坐标计算中用到的sinecosine值的计算,由于软件算法的处理速度相对较慢,我们采用的是CORDIC算法来计算的,该算法完全采用加减和移位的方法来实现,并且将其封装成自定义指令模块加到Nios软核中的ALU上,让其计算性能大大提高。插值算法采用的是线性插值算法,该算法采用的是四个临近的像素值和权重的乘积相加。

系统中的计算正余弦的自定义指令如下:

sin  =  ALT_CI_SC(1,angle) ;

cos =   ALT_CI_SC(0,angle);

线性插值:

图中,P点是经过旋转计算过后的像素值的点,它是一个小数,它被原有图像中的ABCD所包围,因此它需要进行插值运算,才能获得比较好的图像旋转效果。

 其中f为各点在原图像中像素点的像素值。

  设计中我们运用了SOPC的设计理念,基本上实现了预先设计的功能。很好地利用了SOPC设计的可重构性,设计的模块化思想来灵活定制系统。

 

 

(Draft / 2009-09-13 14:20:43)

6. 设计特点 (Preliminary Paper)

 

六、设计特点
     1.  SOPC技术的有力支持
 灵活运用Nios II所提供的SOPC 技术,为自定义组件提供了极大的支持。如本系统中自定义的组件有SDRAM Conrtoller、LCD Controller、CORDIC Controller等等。
   2.  使用IP核
    系统充分利用了Altera和第三方提供的IP核进行设计,大大减少了设计的复杂度。例如本系统中的图像数据异步缓冲FIFO、显示帧缓冲FIFO等,都是用自带的RAM-BASED IP核实现的。
   

   3.  利用自定义指令技术实现硬件加速

    Nios II 提供的自定义指令技术能够将系统中旋转模块的部分C语言程序替换为ALU的运算逻辑,集成到基于FPGANios II软核中。这样,分担了NiosII 处理器的计算和存储器访问功能。采用这一技术,Nios软核能更快的处理数据,以满足视频图像处理的实时性要求。

  4.利用FPGA的多个全局时钟域
    视频采集和显示以及图像处理用的时钟频率都各不相同,因此可以充分利用FPGA提供的多个全局时钟域对系统进行设计。
(Revision: 2 / 2009-09-13 14:26:00)

7. 总结 (Final Project Paper)

 本次大赛的设计作品“基于FPGA的视频图像旋转系统”按照预订计划完成了,在一些细节上也做了改进。大赛中我们利用Nios II 处理器的支持,结合SOPC的灵活框架,尝试了图像旋转在Nios II嵌入式处理器实现的方式,体现了Nios II 处理器的强大处理功能和高可靠性。实践中我们积累了许多经验,包括硬件模块的设计,软件的实现等等。调试的工程中也为我们积累了宝贵的经验和团队协作的精神。

 大赛中我们体会到FPGA器件的实用性和方便性,可以实现系统的软硬件协同设计。Nios II 软核系统是可以根据需要来进行裁剪的,定制自己的系统,自定义指令的出现更是使SOPC系统锦上添花。SOPC的设计理念就是创新的设计理念,有利于激发学生们的创造性和创新性。

 最后,感谢Altera公司为我们提供了如此宝贵的机会。也感谢跟我们一起合作的所有人员。

 

(Draft / 2009-09-13 14:24:48)