DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1390|回复: 0
打印 上一主题 下一主题

[待整理] JPEG实时编解码系统的设计方案,软硬件实现

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-27 16:20:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
设计概述
        本设计背景及意图:

        随着宽带Internet以及数字多媒体技术的飞速发展,以Internet为传输媒介的视频会议、可视电话、远程视频监控、远程医疗系统以及数字流媒体等新的视频应用层出不穷。这些应用都需要对大量的图像进行网络传输。而由于图像的信息量巨大,给存储器的存储容量、通信干线信道的带宽,以及计算机的处理速度增加极大的压力,单纯靠增加存储器容量,提高信道带宽以及计算机的处理速度等方法来解决这个问题都是不现实的,必须对图像进行压缩,去掉图像信息中的冗余,减少网络传输的信息量。

         

        JPEG是国际标准化组织(ISO)和CCITT联合制定的静态图像的压缩编码标准,它是目前静态图像中压缩比最高的,正是由于JPEG的高压缩比,使得它在数据量极大的多媒体以及带宽资源宝贵的网络程序中有着非常广泛的应用。

         

        当JPEG编解码的速度提高到一定程度,就能够对动态图像进行编码,这种JPEG压缩编码称为M-JPEG(Motion-JPEG)。M-JPEG一个很大的特点就是图像处理等待时间较少,适合于在例如视频移动侦测或物体追踪环境下进行图像处理。M-JPEG可提供所有实际使用的图像分辨率,从用于移动电话的QVGA分辨率,到4CIF的全视频显示尺寸,甚至是更高的百万像素分辨率。系统无论在移动或复杂环境情况下都能保证视频质量,并提供高图像质量(低压缩)和低图像质量(高压缩)的灵活选择,同时能真正保证图像处理的实时性。

         

        本设计适用范围及用户:

        首先,JPEG应用的领域包括互联网、彩色传真、打印、扫描、数字摄像、遥感、移动通信、医疗图像和电子商务等等,于此同时,JPEG在数码相机、PDA、手机等手持设备和嵌入式设备中的使用也正方兴未艾。

         

        其次,当能实现实时处理JPEG编解码时(M-JPEG),又可将其用于以Internet为传输媒介的视频会议、可视电话、远程视频监控、远程医疗系统以及数字流媒体等新的视频领域。

         

        最后,本设计实现的是JPEG实时编解码系统,因而可用于实时图像的传输和处理,诸如上面提到的远程监控、可视电话等,往大点说,可将此系统用于重要场所的监控系统中,公司部门之间的视频会议系统中等需要实时传输图像的一些系统中。

         

          功能概述
        本设计的功能:

        本设计主要有两大部分组成:第一部分为图像编码服务器端,第二部分为图像解码客户端。对于图像编码服务器端可分为:图像采集模块、JPEG编码模块、网络(Internet)传输数据模块(包括压缩码流和控制指令传输及接收);对于图像解码客户端可分为:JPEG解码模块、VGA显示模块。在软硬件结合控制下,实现服务器端进行图像的采集,通过Internet传输码流,客户端实时显示图像这一功能(当处理速度一定程度时,可以视为实时、同步)。整个组成部分或单元在Spartan?-6平台外加一定的外设上(例如摄像头,AD转换和DA转换,VGA显示或者说显示器等)实现了JPEG实时编解码系统这一设计理念。

           
          设计结构
          整体设计构思:
        如图1,系统主要分为两大部分组成:图像编码服务器端和图像解码客户端,并且服务器端可以规定连接的客户端数目。

       
       

        图1 总体硬件图示

         
          其中,图像编码服务器端又包括图像的实时采集、JPEG编码、网络传输数据(传送至图像解码客户端);图像解码客户端包括JPEG解码(当然,前提是接收数据后)、VGA显示图像;当然,客户端可以不只一个,可以再服务器端配置客户端的个数,本设计只用一个客户端进行说明。
           
          则具体硬件设计图可如图2:
       

        图2 详细硬件模块图

         

        工作原理

        1、图像编码服务器端:

        系统上电后,NiosII对它控制下的图像实时采集模块,JPEG编码模块以及网络传输模块进行配置,包括采集来的原始图像存储的首地址,图像处理缓存去首地址和压缩后图像存储首地址等等,然后网络模块检测有没有客户端的请求连接,若有,CPU产生线程,建立与客户端的连接,并通知图像采集模块,当图像采集模块采集完一帧后,向CPU发送中断,通知对原始图像进行编码,一帧图像编码完毕后,JPEG压缩模块向CPU发送中断,通知网络传传输码流模块传送码流至客户端。具体流程图如下:

                                 
                                                                   
           
       

        图3 图像编码服务器端工作流程

         

        2、图像解码客户端:

        客户端与服务器端成对称关系。当CPU完成一系列配置后,向服务器发送连接请求,如被接受,客户端接收服务器端的压缩码流,一帧数据接收完毕后,发送中断;解码模块接收到CPU发送的信号,开始解码,解码一帧完毕后,向CPU发送中断,显示模块接收到一帧恢复后的数据后开始显示,显示完一帧,检测解码模块是否有新的图像,如有,则显示下一帧图像,反之,继续显示当前图像(不进行更新)。具体流程如下:

         

       

        图3 图像解码客户端工作流程

         

        3、JPEG编码控制软件流程

                                 
                                                                   
         

       

        编码控制软件流程图

        4、JPEG解码控制软件流程

                   

                                    解码控制软件流程图
         
          设计方法
        一:图像采集模块

        利用摄像头和Analog Device公司的ADV7181模数转换芯片实现采集模块(当然,也可以从DVD等类似设备获得图像),经过AD转换实现RGB转YCbCr(此时要考虑采样率),完成模拟信号到数字信号转换。当然,此模块实现起来可能并非像说的那么简单。大致流程如下:

       

                                                                                                                                                                                                           
                                                                   
                                                                                                                                                                         
                                 
        图5 图像采集模块流程

         

        二:JPEG编码部分

        流程如下:

       

        图6 JPEG编码流程图

         

        1、将图像分成8*8数据块(其实是数字信号数组,即YCbCr(由RGB按照两者之间关系转换过来)组成的数组,其中YCbCr比例不同),DCT变换采用8*8变换公式;

         

        2、进行DCT变换(此步骤是设计中最耗硬件资源的,故而也最影响速度),DCT变换算法已经比较成熟,可以有很多文献供参考,若本人有幸可以参赛,本设计将打算采用两次的一维DCT变换来实现二维的DCT变换(要实现实时编码,此部分可能还需改进),具体如下:

         

                                   公式 1 DCT变换公式

        公式1也可以写成矩阵运算形式F = CfCT其中,C为带余弦基本函数的变换系数矩阵,CT为C 的转置,则DCT变换公式可以分解成串联的两次一维变换,如下:

                     公式2   

            公式3

        即写成矩阵形式为:F=CY,Y=fCT,这里,Y为中间乘积矩阵(Y的列等于f行的一维DCT 输出) 。因此,在做二维DCT变换时,可以应用一维DCT 变换来计算,即先沿f的行进行一维DCT 计算获得Y,再沿着Y的转置的行进行一维DCT运算。这其中就包含一个转置存储器。这样的算法结构如图

       

        图 7 2D-DCT算法结构

         

        3、进行量化,量化有对应的量化表(色度和亮度的量化表不同),将DCT变换的结果与对应量化表中的数相除(可以采用乘法代替除法的方式,这样节省硬件资源);

         

        4、之字形输出,即将量化后的数据按之字形输出即可(直流分量在最前,之后是交流分量),经过此步骤后,低频分量数据靠前排列,高频分量数据靠后排列;

         

        5、Huffman编码,此部分有对应的色度和亮度编码表。此部分也可以根据数值出现的可能性大小来提高编码速度。

         

        此部分采用Xilinx公司FPGA芯片实现,即开发板主芯片。

         

        三:JPEG解码部分

             即为JPEG编码的逆过程,有对应的逆DCT变换公式,若编码部分能够很好的实现,此部分将不是什么难题,在此就不做介绍。
            此部分采用Xilinx公司FPGA芯片实现,即开发板主芯片。

         
        四:VGA显示模块

        将JPEG解码后的数据进行DA转换,将转换后的数据传送至VGA显示,大致流程如下:

         

       

         

        图 8 VGA显示模块示意

         

        五:网络传输数据模块

          采用DAVICOM的DM9000进行网络通信,根据DM9000硬件结构,编写好驱动程序,并且转换成用户自定义模块。
           
          设计特点
          本设计的特点在于提出一种基于Spartan?-6平台实现JPEG实时编解码系统的方案,该方案利用FPGA并行处理的特点,同时结合JPEG编解码算法本身的特点,再加上Xilinx公司Spartan?-6平台和自备一些外设这些资源,最后在FPGA上应用Xilinx公司的开发板实现整个系统。本设计完成了图像采集、JPEG编码、网络数据传输、JPEG解码和VGA显示的功能,达到了实现JPEG实时编解码的功能。当然,条件和时间允许的话还可以对该系统做进一步的开发,做成嵌入式无线数据传输系统;也可以进一步研究JPEG编解码算法,此外,可以将Linux等嵌入式系统移植到本硬件平台上来,为更高级的应用提供有效的支持。因此,它具有灵活性、实用性和可扩展性等特点,具有一定的市场前景。
           
          总而言之,本设计比较充分的利用了Spartan?-6平台的资源,完成了JPEG实时编解码系统目的,可以应用在视频监控、可视电话、视频会议等一些需要传输图像的系统中。因为传输的是JPEG图像数据,较之其它格式的图像数据,在数据量上要少很多,因而可以通过网络的形式快速传输,达到实时的目的。
         
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-29 19:26 , 耗时 0.110236 秒, 22 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表