老哥学习网 - www.lg9.cn 2024年05月16日 18:34 星期四
当前位置 首页 >诗词歌赋 >

为了用isdn技术实现【基于FPGA的JPEG实现技术研究】

发布时间:2019-04-26 06:39:20 浏览数:

  摘要:JPEG是广泛使用的静态图像压缩标准。FPGA具有高可靠性、开发周期短、高速等优点。讨论了基于FPGE的JPEG算法实现。  关键词:JPEG;离散余弦变换;FPGA
  中图分类号:TP317.4文献标识码:A文章编号:1672-7800(2012)012-0168-02
  1概述
  由于FPGA高可靠性、开发周期短、高速、具有在线可重构性等优点,使得其在数字信号领域得到广泛应用。数字图像含有大量数据,利用FPGA进行数字图像处理与传统的DSP芯片相比,能够提高数量级的速度,且具有更高的可靠性,本文探讨基于FPGA的静态图像压缩标准的JPEG的实现技术。
  JPEG是广泛应用的静态图像压缩标准,JPEG的实现过程为:首先对图像进行离散预先变换,将图像的空间域表达转换为频率域的表达;其次,选择合适的加权函数对DCT系数进行量化,得到含有大量0变换系数,实现压缩;最后,对量化的系数进行编码,利用系数之间的相关性,进一步降低数据量,如图1所示。JPEG的解压缩过程与压缩过程的逆过程,如图2所示。
  2离散余弦变换(DCT)的实现
  离散余弦变换首先将灰度图像或彩色图像分为8×8的图像块,通过二维DCT变换,将图像中的低频分量集中在左上角,忽略高频分量,达到压缩的目的。DCT变换的公式为:Y(u,v)=
  41C(u)C(v)∑7i=0∑7i=0x(i,j)cos(2i+1)uπ16cos(2j+1)vπ16(1)其中,当u,v=0时,C(u),C(v)= 12;当u,v≠0时,C(u),C(v)=1;
  f(i,j)为数据图像矩阵内(i,j)位置上的像素值,利用Matlab软件提取图像的像素值,F(u,v)为变换系数。为了减少工作量,将二维的DCT转换为一维的DCT变换,首先对8×8的图像块进行8×1的行变换,再对其进行1×8的列变换,得到二维的DCT系数,如图3所示。图3二维DCT变换流程
  利用硬件实现DCT算法时,通常采用定点数的运算方式,由于公式(1)可以写成矩阵形式Y=CXCT,为了提高JPEG压缩的速率,在一维DCT的变换中采用分布式算法,其原理如图4所示。输入数据利用查找表得到的值,然后进行移位,再将B次查表的结果进行累加,最后得到输出Y,减少乘法器与加法器的个数,优化资源,然后通过乒乓存储技术实现DCT1D与DCT2D之间的数据传递,DCT2D仍利用分布式计算输出最后的二维变换的结果,将能量集中在图像的左上角。
  3量化
  实际上,DCT变换本身并不能实现码率的压缩,8×8的图像块经过变换后仍得到64个系数。量化是通过对变换后的系数按比例缩小,并取其最接近的整数值,同时,在保证图像质量的前提下,丢弃不重要的信息,达到压缩的目的。量化也是影响图像质量的主要因素。
  JPEG采用线性均匀量化器,量化步长由量化表决定。量化表为8×8矩阵,与DCT变换系数一一对应。量化公式如式(3)所示。Fquv=FuvQuv(3)其中,Fuv,Fquv分别为量化前与量化后的DCT系数;Quv为量化步长;
  由于人眼对亮度信号和色差信号敏感度不同,JPEG推荐了两种量化表。因为人眼对低频分量图像比对高频分量图像更为敏感,因此表中左上角的量化步长比右下角的量化步长小。
  量化的硬件实现过程如图5所示:将64DCT系数除以量化步长,并四舍五入取整。
  (1)将亮度或色度表的值设为Quv,DCT系数值为Fuv。若0.5 Quv  (2)不符合以上条件的,采用累加和移位相结合的方法进行除法计算。首先对除数进行循环移位,使其最高位移到第一个1,将此位记为Qs,并记录移位的次数;扩展被除数至15个比特位,其中最高位为借位标志位。然后开始计算此时最高位与原来除数最高位之间的差值,若为1或0,得到量化输出结果的最高位1,并将相减的结果存入标志位寄存器,反之,量化输出结果的最高位为0,并将被除数向左移一位,最高位移位至借位标志位,并对本次计算计数,然后进行下一次的计算,直到计算到计数次数大于移位次数加上3时,设此时余数为Rn,如果0.5Qs  4Z字型扫描
  从DCT的输出可以看出,随着水平方向与垂直方向频率值的增加,量化系数为零的机会越来越大。为了增加连续零的个数,及零的游程长度,JPEG采用“Z”字型扫描,如图5所示。其中1处的系数代表DC系数,其余的为AC系数,对DC系数组和AC系数组分别采用不同的编码方法以获取最佳的压缩效率。由于DCT变换后的DC系数比较大,且相邻的8×8图像块的DC系数变化不大,JPEG采用差分脉冲编码调制(DPCM)技术。而AC系数中含有大量的“0”系数,JPEG对其采用游程长度编码(RLE)。Z字型扫描的实现流程如图6所示。
  5熵编码
  为了对扫描后的数据进行进一步的压缩,JPEG采用Huffman编码,具体的实现分为两步:首先对于AC系数,用两个符号表示,符号1为行程和尺寸,符号2为非零AC系数的幅值;其次,对符号1和符号2分别进行编码,符号1采用给定的哈夫曼表编码,符号2进行变长整数编码。对于DC系数也有两个符号表示,符号1为DC系数的尺寸,符号2为其幅度值。编码的实现与AC类似。
  6综合设计
  根据以上的设计,我们将JPEG的设计分为以下几个模块:DCT模块、量化模块、Z扫描模块和时钟控制模块,硬件采用cyclone II 系列中的EP2C8Q208C8芯片,对设计结果使用一幅256×256的灰度图像进行检测,压缩比与其它一般的JPEG编码系统没有很大区别,压缩效果较好。
  参考文献:
  [1]薛以辉.基于FPGA的嵌入式系统的设计与实现[D].长沙:国防科学技术大学,2003.
  [2]穆荣,焦继业.基于JPEG图像解码的高速Huffman解码电路[J].现代电子技术,2007(20).
  [3]洪志良.JPEG静止图像压缩解压缩标准的硬件实现及其改进算法的研究[D].上海:复旦大学,2002.
  [4]求是科技.CPLD/FPGA应用开发技术与工程实践[M].北京:人民邮电出版社,2005.
  [5]张太怡.基于JPEG国际标准的图像压缩方法的研究[J].重庆大学学报,1994(9).
  [6]刘庆.基于FPGAD的高速二维DCT变换的研究与实现[J].计算机工程与科学,2012(3).(责任编辑:杜能钢)
  Implementation of JPEG Based on FPGA
  Abstract:JPEG is one of static picture compression standard which wild used, FPGA has some advantages,such as:high reliability, short development cycle, high speed etc.This article based on FPGA to implement the proposed JPEG arithmetic.
  Key Words: JPEG; Discrete Cosine Transfer; FPGA

推荐访问:技术研究 FPGA JPEG

相关文章:

Top