论文部分内容阅读
随着数字化技术的快速发展,从静态图像到动态视频图像的数据量都大幅度增加,因此,目前技术领域中关注的热点是,在保证质量的情况下,如何减少图像数据的冗余信息,能够更加有效的存储或实时传输数据信息。现在CPU上运行的多数的压缩算法由于数据量的增加以及计算复杂度的提高,而不能满足实时需求。到目前为止,NIVIDIA的GPU已经发展过了八代,GPU在高性能通用计算领域发展中逐渐占据了主流地位,并且该技术的应用和发展一直呈现稳定且强劲的增长趋势。GPU的特点是对大量密集型数据并行处理运算。因此,本文主要研究的内容就是利用GPU实现静态图像JPEG压缩编码和基于MPEG-2的视频图像压缩编码。本文首先阐述了CUDA的编程模型,从主机与设备的关系,内核函数的使用方法到CUDA的线程层次;分析了CUDA的存储模型。并以GeForce GT240为例,分析了GPU的硬件架构和硬件映射,以及warp的发射和执行。以此为基础,展开GPU在图像编码方面的研究和实现。本文采用的是CPU+GPU的架构模型,CPU负责处理逻辑性较强的串行工作,而GPU则负责计算工作量较大的并行处理工作。这两者各司其职,合力完成图像压缩的任务。本文主要研究了基于GPU的JPEG静态图像的压缩编码和基于GPU的MPEG-2视频图像压缩编码。本文实现了在GPU上进行并行JPEG图像压缩编码。在对原JPEG编码算法的研究分析基础上,提出了适合在CUDA平台上进行并行运算的JPEG编码算法,并给出了在GPU上的优化。其中,最为重要的是研究了适合在GPU上实现的可并行DCT变换方法,并且对于熵编码,也分析了Huffman编码方法。本文在实现了基于GPU的JPEG图像压缩编码,并从几个方面对该算法进行了分析,说明了基于GPU的并行压缩的可行性。本文还实现了基于GPU的MPEG-2视频图像压缩编码。分析了MPEG-2视频压缩编码的基本原理。并进一步分析了MPEG-2视频压缩编码在GPU上并行运算的可行性,并提出了CPU+GPU的并行运算和CUDA中的两级并行运算。接着详细的研究了MPEG-2关键模块,包括运动估计、运动补偿、比较计算、变换与反变换、量化与反量化、熵编码,按照原算法的特性以及在基于GPU的CUDA编程模型的特点,提出了适合在GPU上的运算并行方法,分析各个模块的并行算法流程和CUDA编程模型的并行资源分布与图像处理单元的对应情况。给出了实现GPU上的MPEG-2视频图像压缩的实验环境,并从压缩率、峰值信噪比、编码效率几方面对整体并行压缩算法性能进行了分析,得出了本文的方法具有相对较好的结果。并且还对几个模块的编码速度进行了详细的分析。