精华内容
下载资源
问答
  • 图像压缩的目的就是把原来较大的图像用尽量少的字节表示和传输,并且要求复原图像有较好的质量。基于DCT的图像压缩编码
  • 基于DCT压缩编码

    2010-03-22 21:00:58
    该程序主要用于基于离散余弦变换的图像压缩以及编码
  • 课程设计任务书 学生姓名 王晓飞 专业班级 通信1001班 指导教师 魏洪涛 工作单位 信息工程学院 题 目: 通信工程应用技术综合训练与实习 初始条件MATLAB软件平台 设计任务与要求: 图像通信之前需要进行数据量压缩编程...
  • 本文首先介绍了正交变换的性质和变换编码的原理,然后将图像序列作为平稳马尔柯夫序列,对1×8DCT图像压缩编码作了理论分析和计算机模拟。模拟结果与分析是一致的。
  • MATLAB的DCT图像编码

    2017-12-13 10:54:55
    资源是关于MATLAB图像处理中的图像压缩编码,编码的方法主要用了DCT压缩编码
  • 基于DCT的图像压缩编码算法的MATLAB实现
  • 摘要 摘要 随着科学技术的发展,图像压缩技术越来越引起人们的关注为此从众 多的图像压缩编码标准中选取了基于 DCT 变换的 JPEG 图像压缩编码算法 进行研究并通过对比分析各种软件特性选取了 MATLAB 进行实验仿真 ...
  • DCT原理及其在视频压缩编码中的实现,孙娟,,本文以视频压缩编码为背景,从DCT的基本原理入手,介绍了DCT压缩编码实现过程中的快速算法:LLM算法、提升格式的快速DCT算法。详细
  • 压缩后的图像码流在实际信道中传输时,不可避免地会发生...列举了有噪信道和拥塞网络对DCT编码压缩图像的各种不同影响,并回顾了相应的各种解决方案,包括重同步策略、差错复原、后处理差错掩盖、前处理差错控制等技术。
  • 实验三 基于DCT编码的JPEG压缩

    千次阅读 2017-04-12 15:27:32
    基于DCT编码的JPEG压缩

    一. 实验目的与要求
    1. 进一步熟悉DCT的概念和原理;
    2. 利用DCT变换编码方法进行图像压缩,提高信息传输的有效性及通信质量。
    3. 掌握对灰度和彩色图像作离散余弦变换和反变换的方法;
    4. 能选择适当的量化间隔、阈值和区域进行编码;
    二、实验环境
    Windows+matlab
    三、实验原理
    变换编码是通过变换来解除或减弱信源符号间的相关性,再将变换后的样值进行量化,或采用对于独立信源符号的编码方法,以达到压缩码率的目的。离散余弦变换(DCT for Discrete Cosine Transform)是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换(DFT for Discrete Fourier Transform),但是只使用实数基于DCT(离散余弦变换)压缩编码算法是有失真的压缩编码,如图1-1为DCT变换编码原理图。
    这里写图片描述
    在编码过程中,首先将输入图像分解为8×8大小的数据块,然后用正向二维DCT把每个块转变成64个DCT系数值,其中左上角第一个数值是直流(DC)系数,即8×8空域图像子块的平均值,其余的63个是交流(AC)系数,接下来对DCT系数进行量化,最后将变换得到的量化的DCT系数进行编码和传送,这样就完成了图像的压缩过程。
    四、实验内容和步骤
    1. 随机选取一整幅图像进行DCT变换,编写程序显示灰度图像、反余弦变换恢复图、DCT变换图、余弦变换系数图、变换谱三维彩色图。该方法出发点是对整幅图像进行DCT变换,主要应用MATLAB的图像处理工具箱中的基于FFT的有大量输入的快速算法进行处理的dct2函数。

    clc
    clear
    A=imread('D:\x.jpg');
    I=rgb2gray(A);
    DCT=dct2(I);         %余弦变化
    DCT(abs(DCT)<10)=0;  %把变换矩阵中小于10的值置换为0,然后用idct2重构
    IDCT=idct2(DCT);
    subplot(2,2,1),imshow(I);title('灰度图像')
    subplot(2,2,2),imshow(IDCT,[0 255]);
    title('反余弦变换恢复图')
    subplot(2,2,3),imshow(DCT);title('DCT变换')
    subplot(2,2,4),imshow(log(abs(DCT)),[]);
    title('余弦变换系数');
    figure,mesh(DCT);title('变换谱三维彩色图')
    1. 随机选取一幅图像先将图像分解为8*8或16*16个数据块,然后分别对分解后的每个数据小方块进行DCT变换。编写程序,对图像进行压缩,参考程序如下所示。该方法的出发点是先将图像分解为8*8或16*16个数据块,然后分别对分解后的每个数据小方块进行DCT变换,主要应用MATLAB的图像处理工具箱中dctmtx函数返回DCT变换矩阵,而后进行相关处理。
    clc
    clear
    A=imread('D:\x.jpg');
    I=rgb2gray(A);
    I=im2double(I);%将图像转换为双精度格式
    T=dctmtx(8);%返回一个8*8的DCT变换矩阵
    B=blkproc(I,[8 8],'P1*x*P2',T,T');%对原图像进行DCT变换
    mask=[0 0 0 0 1 1 1 1
          0 0 0 1 1 1 1 1
          0 0 1 1 1 1 1 1
          0 1 1 1 1 1 1 1
          1 1 1 1 1 1 1 1
          1 1 1 1 1 1 1 1
          1 1 1 1 1 1 1 1
          1 1 1 1 1 1 1 1];%保留了10个DCT系数重构图像
    B2=blkproc(B,[8 8],'P1.*x',mask);
    %数据压缩,丢弃右下角高频数据
    I2=blkproc(B2,[8 8],'P1*x*P2',T',T);
    %进行DCT反变换,得到压缩后的图像
    subplot(1,2,1),imshow(I)
    title('原始图像')
    subplot(1,2,2),imshow(I2)
    title('压缩图像1')
    disp('压缩后图像I2的大小');whos('I2');
    disp('压缩前图像A的大小');whos('A');
    disp('压缩后图像I的大小');whos('I');

    五、实验结果与分析
    1.分析“反余弦变换恢复图”与原始图像的区别,分析DCT系数的分布规律,列出实验结果。
    2. 分别列出保留左上角3、10、32、54个DCT系数的压缩图像,分析其压缩效果。列出左上角3、10个DCT系数为0其他数据为1的压缩图像,分析其实验结果。

    展开全文
  • 本博客主要是自己看的,看了下面这些...基于DCT的JPEG图像压缩的研究_马媛媛.pdf基于MATLAB的DCT变换在JPEG图像压缩中的应用_李秀敏.pdf基于DCT的JPEG图像压缩编码算法的MATLAB实现_钱裕禄.pdf基于Matlab的JPEG图像压

    本博客主要是自己看的,看了下面这些文章后就会很容易理解JPEG压缩编码的过程。

    书籍:

    1. 多媒体技术基础(第二版)林福宗————5.6  JPEG压缩编码

    论文:

    1. 基于DCT的JPEG图像压缩的研究_马媛媛.pdf
    2. 基于MATLAB的DCT变换在JPEG图像压缩中的应用_李秀敏.pdf
    3. 基于DCT的JPEG图像压缩编码算法的MATLAB实现_钱裕禄.pdf
    4. 基于Matlab的JPEG图像压缩方法研究_吴亚榕.pdf
    5. 基于DCT的JPEG图像压缩及实现_吴术路.pdf
    6. 基于DCT变换的JPEG图像压缩及其MATLAB实现_余秋菊.pdf
    展开全文
  • 基于DCT的JPEG图像压缩编码算法的MATLAB实现
  • 文件包里包括两中压缩编码算法MATLAB仿真,分别是小波变换压缩和DCT变换压缩,下载后无需改动可直接使用,文件里附有代码和原图像还有仿真图,代码通俗易懂,并有注释。
  • 利用离散余弦变换和游程编码技术相结合进行地震数据体的压缩研究,指出该技术是一种有损压缩技术。对于不同的松散度、信噪比等的数据其压缩比是不同的。在压缩过程中对层问信息和高频成分有一定的损失,损失的程度与...
  • PAGE II ? ? ? 南京师范大学泰州学院 ? 毕 业 论 文 ? 题 目 基于DCT图像压缩编码算法的研究 ?...要 随着科学技术的发展图像压缩技术越来越引起人们的关注为此从众多的图像压缩编码标准中选取了基于DCT变换的图像压
  • 图像压缩算法JPEG基于DCT图像压缩算法JPEG基于DCT图像压缩算法JPEG基于DCT图像压缩算法JPEG基于DCT
  • TransformCoding:包含执行DCT流程各个阶段的方法。 EntropyCoding:包含JPEG的熵编码/解码方法(霍夫曼编码)。 JPEG:包含JPEG编码器和解码器主体。 视频:运动补偿视频编码器,使用JPEG进行帧内编码。 ...
  • 图像变换是图像处理的基础, 是图像压缩的第一步b在图像压缩中, D CT 变换因其变换效果好而被广泛采用,成为目前最常用的图像压缩变换方法, 而W alsh 变换还未被广泛采用b通过对这两种变换的算法分析以及M at lab 仿真...
  • 本节介绍图像压缩编码的基本原理,图像数据压缩和解压缩电路的基本结构。它们是看影碟机电路图的基础知识。  一、图像压缩的基本途径  图像的数据量极大,必须对其数据总量大大压缩,才能够存储在直径12cm的光盘...

    转自:http://blog.csdn.net/wishfly/article/details/52066859

    本节介绍图像压缩编码的基本原理,图像数据压缩和解压缩电路的基本结构。它们是看影碟机电路图的基础知识。

      一、图像压缩的基本途径

      图像的数据量极大,必须对其数据总量大大压缩,才能够存储在直径12cm的光盘上。在实用技术上,可通过以下途径来压缩图像数据的总量。

      1、采用亮度(Y)、色度(C)取样方式

      实用彩色电视技术没有传输、处理红、蓝、绿三基色信号,而传输、处理亮度信号Y和色度信号C。这种处理方法有利于实现彩色电视和黑白电视的兼容,也利于限制彩色电视信号的频带宽度。在数字图像处理技术中,仍然采用传输、处理亮度信号Y和色度信号C的方法。由于人眼晴对亮度信息敏感,对彩色信息不够敏感,因而对Y信号以较高清晰度传送,对C信号以较低清晰度传送。实际作法是这样的:对每个亮度Y像素都进行传送;而将色度C分解为U、V两个色差信号(或写为Cb、Cr、B-Y、R-Y),分别进行传送;对亮度Y实行逐点取样,而对色度C则取样较少。即对应于4个亮度取样点,仅对色度信号取样1个点,即对U、V像素的取样较低,各取1个取样点,这种取样格式称为YUV411格式。

      采用YUV411取样格式后,它的数据总量将比三基色取样量格式时减少一半。若采用三种基色取样方式时,各基色应与亮度信号取样方式一样,即对每个红、绿、蓝色采取逐点取样的方法。采用Y、C传输方式时,取样次数减少一半,传输数码也减少一半。人眼睛对色度的敏感程度较低,利用人眼睛这一生理视觉特性,人们在主观感觉上并没有感到图像清晰度下降。显然,这是压缩图像数据码率的一个得力措施。

      2、将整幅图像分割为小区域进行分割处理

      对图像进行数据处理时,对每帧图像进行分割处理。首先图像横向切成若干条,每一条称为一片,将每一片再纵向切成若干块,称宏块,宏块是图像压缩的基本单位。每个宏块的彩色图像可用1个亮度信号Y和两个色差信号Cb、Cr(即U、V)来表示,或者说,每个宏块分为三层,一层亮度Y,两层色度(各为Cb、Cr),统称为一个宏块。

      由于人眼睛对亮度、色度的主观敏感程度不同,通常把亮度宏块再平均分成4块,每一小块称为像块或区块,详见示意图2.2.1。每个区块可以进一步分割,称为像素或像点,像素是构成图像的最小单位。对于数字图像来说,每一个像素作为一个取样点,有一个对应的取样数值。可以看出,图像分割越细,像素数越多,取样点越多,图像清晰度越高;反之,像素数越少,图像清晰度越低。实际上,对图像压缩处理,就是对图像区块的数据、像素的数据进行压缩处理。

      彩电制式不同,分割图像的具体数据将有所变化。例如PAL制,大多数为625行扫描标准,那么每帧图像被切为18片,每片再切成22个宏块,即每帧图像分成396个宏块;而525行的NTSC制,每帧图像被切为15片,每片再切成22个宏块,即每帧图像分成330个宏块。对亮度信号来说,每个宏块又分为4个区块,每个区块含有8×8=64个像素,则每个宏块含有256个像素。但对两个色差信号来说,宏块像素数等于区块像素数,即像素数是8×8=64个,是亮度像素的1/4。尽管两色差信号的像素较少,清晰度低,但不影响人眼睛的主观感觉。在进行数字图像处理时,按照图中各个8×8方块( 共64块) 编成次序,再按照编号顺序依次处理。也就是说,以8×8像素的方块作基本操作单元,依次处理每个像素(即取样点)的取样数值。

      3、采用帧间和帧内数据压缩技术。

      实用电视每秒钟传送25-30帧画面,使画面变化具有连续感,电视活动图像是由各帧画面差别很小的一系列画面组成的。各帧画面的微小变化主要表现于画面主体部分,画面的背景差别很小。图像是由亮度、色度信息来描述的,在各相邻帧图像内,若分别比较同一相对位置的亮度、色度信号,通常其差别较小。经大量统计发现,在各个像素当中仅有10%以下的像素点的亮度差值变化超过去时2%,而色度差值变化在0.1%以下。在各帧图像中具有大量重复内容,这些重复内容的数据属于多余(冗余)信息,于是,可以通过减少时域冗余信息的方法,即运作帧间数据压缩技术,来减少图像传输的数码率。

      经分析发现,在同一帧画面内也存在相当多的冗余信息。对图像主体部分和眼睛最敏感的部分,应当准确、详细地处理,需要对每个像素点进行精细传输;但对于图像非主体部分和眼睛不敏感的部分,则可以进行粗略地处理,即进行信息数据的压缩处理。于是,可以根据一帧图像内容的具体分布情况,对不同位置可采用不同的数据量来传送,减少传送图像的数据量,使图像数据得到压缩。这种压缩数据的方法,是在同一帧图像的不同空间部位进行数据压缩,称为空间域冗余压缩。例如,有一幅人像画面,其面部和头部的线条清晰度可以不相同,尤其是眼睛、嘴唇部位表情丰富,线条比较精细复杂,是观众最注意的部位,应当用高清晰度传送;而头顶部位和面颊侧面,轮廓变化较少,灰度层次变化较小,观众不太注意这些部位。显然,图像的主要部位,灰度层次变化较大的部位,人眼睛敏感的部位,应当以较大数据量进行精细传送;而那些图像的次要部位,灰度层次变化较小的部位,人眼睛不注意的部位,则可用较少数据量进行粗略传送,甚至于仅仅传送它们的平均亮度信息。

      以下具体讨论数字图像的数据压缩原理。先讨论静止图像的数据压缩技术,即帧内数据压缩技术;然后讨论活动图像的数据压缩技术,即帧间数据压缩技术。

      二、帧内数据压缩技术

      首先对整幅图像进行分割处理,经分割取得最小操作单元。下面按8×8=64个像素组成的区块来计论。每一个像素值都可以按一定规律取样,例如可对亮度各个像素的亮度值取样,若每个像素按8bit量化,则每个区块的总数据量为8bit×64(像素点),即512bit。可见,对全画面各像素量化处理后数据量十分庞大,需要进行数据压缩。通常,经过离散余弦变换,Z字型扫描,可变长度编码等处理过程,可将数据总量进行大量压缩。

      1、离散余弦变换(DCT)编码

      (1) 功能简述

      离散余弦变换简称为DCT(是英Discrete Cosine Transform的缩写词),是一种数字处理方法,经常用于数据处理。DCT是多种数字变换方法的一种,它是把空间域图像变换到频率域进行分析的方法。由于DCT的变换核构成的基向量与图像内容无关,而且变换核是可以分离的,既二维DCT可以用两次一维DCT来完成,使得数学运算难度大大简化,再配以已经发现的其它快速算法,使得DCT编码得到了广泛的应用。将DCT应用于图像数据压缩,可以减少代表图像亮度(或色度)层次数码信息,达到数据压缩的目的。利用DCT不仅可将图像编码,还可以在编码变换过程发现图像细节的位置,以便删去或略去对视觉不敏感的部分,而更加突出视觉的敏感部分,通过选择主要数据来传输、重视图像。

      利用DCT压缩图像数据,主要是根据图像信号在频率域的统计特性。在空间域看来,图像内容千差万别;但在频率域上,经过对大量图像的统计分析发现,图像经过DCT变换后,其频率系数的主要成分集中于比较小的范围,且主要位于低频部分。利用DCT变换揭示出这种规律后,可以再采取一些措施把频谱中能量较小的部分舍弃,尽量保留传输频谱中主要的频率分量,就能够达到图像数据压缩目的。

      (2)规律和特点

      ①时间域信号的频谱

      对于一个随时间变化的波形来说,它是随时间变化的周期信号,它是以一定幅度值为波形的直流平均值,其波形可看成是基波与无数次谐波叠加而成。其基波振幅最大,然后各次谐波振幅逐渐减小。各次谐波叠加次数越高,则合成波形越接近于理想矩形波。此分析方法就是应用日益广泛的频谱分析方法。其中各次正弦波谐波的振幅值经常称为频谱系数,将频谱系数排列起来,可以组成一个系数列。上述事实说明,周期性矩形波可以由时间域 (反映幅度-时间关系)来描述,也可以由频率域(幅度-频率关系)来描述。两者有互相对应的关系。实际上,各种时间域信号都可以由频率域的规律来描述,两种描述方法存在内在的联系,可以互相转换。

      ②空间域信号的频谱系数

      对于各种空间域分布的信号,也可以进行类似的频率变换,即将空间域信号转变为频率域信号。DCT就是其中一种频率分析方法。可参阅图2.2.2来说明DCT变换过程。

      由图像内取出一个区块,分成8×8个像素的64格阵列,即由图(a)转变为图(b)。经过对逐个像素的亮度(或讨论色度)数值取样,并将像素的亮度数值列成矩阵形表格,见图(C)。然后利用离散余弦变换(DCT)可将各空间取样值转变为频率域的数值,这里称为DCT系数。

      对于上述64点阵列来说,可得到64个DCT系数,转换为图(d)矩形阵列表格。它已经将64个点的图像采样值组成的阵列,变为一个直流平均值和63个不同频率余弦波幅值组成的64个点阵列,并称为DCT系数阵列。经过上述变换后,已将空间坐标的数据转换为频率坐标的数据,即DCT频率系数。原有8×8区块的各个像素的数值取样量化后,转变为频率域图像信号的频谱系数,即可用64个频率系数来表述,称它们为64个“正交基信号”,每个基信号对应于64个独立二维空间频率中的一个。这些空间频率是由输入信号的“频谱”组成。所得64个变换系数当中,第一项代表直流分量,即64个空间图像采样值的平均值,其余63个系数代表各基信号的幅度。

      观察图2.3.2(d)数据可发现规律,矩阵左上角的数值较大,而右下角的数值较小,且趋近于零值。于是,可以按照Z字形扫描顺序,将各基信号的DCT系数列成一个表格。Z字形扫描的具体轨迹,如图2.3.2(e)所示。按照此规律将DCT系数排列成数据系列,成为DCT系数编码顺序。经过上述处理后,已将二维数据量转换为一维数据量,该数列第一项是该区块的平均亮度值,后面各项系数的分布和大小可以反映亮度起伏变化的剧烈程度。若系数较大,说明亮度起伏较大,该区域图像轮廓较细致;若数值较小,则说明该区内亮度变化较平缓;若数值为零,表示数列中高频分量数值为零,亮度电平无变化。在实际数据处理过程中,排在后面的系数值基本上都有是零值,或者趋于零值。由63个系数集合及变化情况,可反映出该区块内图像细节情况,即图像清晰度状况。

      图(d)矩阵数值非常具有实用价值。左上角数值较大,它们代表了图像信息的直流成分和低频分量,它是图像信息的主体部分,也是区块内信息的主要部分;而右下角数值较小,它们代表了图像信息的高频分量,其幅值原本就比较小,它主要反映图像的细节部分。人眼睛对图像的亮度信息有较高的相对灵敏度,对图像的彩色信息不够敏感;还有,人眼睛对图像信息的低频分量具有较高的视觉灵敏度。经Z字形字扫描后所形成的数据系列,恰好与人眼睛对图像信息的敏感程度形成良好的对应关系。根据视觉生理的上述规律,可对图像数据进行压缩。

      2、DCT系数的再量化处理

      经过上述DCT处理的频率数据可以进行再处理,进一步压缩数据量。人眼睛对各种频率的敏感程度不同,并可取得统计性灵敏度数值。由此可对每种频率分量设定不同的折算值,将前述经转换得到的DCT系数再次进行折算,以便进一步突出视觉效果影响大的成分,而消弱或忽略视觉效果影响小的成分。这种处理方法称为量化处理,简称Q处理。对于64点阵列的64个系数来说,对应了64种不同频率,可使用64个不同的折算值。通常称这64个折算值为量化表,每个折算值称为量化步长,或称量化值。在64点阵列中,左上角的数据量化值较小,右下角的数据量化值较大。对DCT系数的再量化处理,可利用量化器电路来实现。该电路可将区块的64个系数分别除以量化表中对应位置量化步长,再进行四舍五入取整后,即可得到经过再量化处理的64个数据值。

      经过量化处理后,量化值大的系数值所得商值较小,也就是数据压缩比较大,原图像相应部分的忽略内容较多;量化值小的系数所得商数值较大,也就是数据压缩比较小,原图像相应部分不予忽略或极小忽略。于是,经过量化处理后的DCT系数矩阵,可出现许多零值。一般左上角位置的数据的商数是非0,在右下角位置的数据的商数很小,经四舍五入取整值后可简写为0。在系数矩阵上出现了许多0值,则大大减少了数据量。一方面保留了图像信息的主体部分,另一方面大大压缩了像数据。

      3.可变长度编码(VLC)

      经量化处理的系数矩阵出现了许多0值,若进行Z字形扫描时,后面的系数将也出现连续0的状况。此时,数据传输总量已经明显减少,但码位并未减少,仍为64个系数位。为了进一步压缩数据总量,可采用可变长度编码,并简称VLC(Variable Length Coding)。

      通常,采用两种方法进行可变长度编码。第一种,是根据数据出现的频率,分配以不同长度的码字来代替,对于频繁出现的数据,分配以较短的码字,那些不经常出现的数据,则赋予较长的码字,这样处理后可减少传输的总码率。第二种方法,虽然Z字形扫描使系数列尾部出现多个0个值,但不需要逐位地传输0值,仅需传送表0的“个数”码,待重放时再按规定恢复为0位,以便填满矩阵的64位。例如00000,则可表示为50,在解码时恢复为00000。

      总之,对于静止画面来说,采用离散余弦变换,Z字形扫描、量化处理和可变长度编码等方法,可使图像数据量大大压缩。在数据解码时,先经过可变长度解码,恢复为数据的固定长度;再对系数进行反量化,恢复为原来的DCT频率系数;再经过反向离散余弦变换,恢复为图像的空间坐标数值,即原来图像的数据。

      三、帧间数据压缩技术

      对于活动图像来说,相邻帧的图像具有强烈的相关性。在保存和记录动态图像时,不需要将每一帧图像的全部信息都记录和保存下来,可以将前面第一帧图像全部数据都记录下来,把它看成是静态图像,可用静态图像数据压缩方法来处理。而后面诸帧图像,可以仅记录与前面帧图像有差异的信息。于是,在重放时,利用前面帧图像的数据和后面帧的差异数据,即可恢复出后面帧的图像。这种处理方法省去许多数据。

      1、三种画面

      按照MPEG-1标准,传送的活动画面可分为3种类型。第1种,是场景更换后的第1帧画面,它是一种独立的画面,这种画面采用较高清晰度的逐点取样法进行传送,此画面称为I画面(内码帧,或称帧内编码帧)。该画面信息是由自身画面决定,不必参考其它画面。该画面的数据代表了活动图像的主体内容和背景内容,它是电视画面的基础。第2种,是与I画面相隔一定时间、活动图像主体位置在同一背景上已发生明显变化的画面,此画面称P画面(预测帧,或称前向预测编码帧)。该画面用前面的I画面作为参考画面,该画面不传送背景等重复性信息,仅传送主体变化的差值,这就省略了一部分细节信息,而在重放时依靠帧存储器将I画面的主要部分和P画面的差值进行运算,即可得出新画面的完整内容,它是既有背景又有现时运动主体状态的实际画面。第3种,其情况与P画面相似,用来传送在I、P画面之间的画面,称B画面(双向预测帧,或称双向预测内插编码帧)。该画面仅反映在I、P画面之间的运动主体变化情况,并用位移矢量(或称运动矢量等)表示画面主体移动情况。其信息量更小些。因为在重放它时,既可参考I画面内容,也要参考P画面内容,所以称为双向预测帧。

      将一串连续相关的画面分为I、P、B型后,传输信息量明显减少。在P、B画面当中,几乎不传送反映实物的象素,仅传送其主体移动的差值,其具体的处理方法是采用了区块对比的方法,在两个变化的画面当中,将区块或宏块作为处理单元,将一个画面的宏、区块与参与 画面中邻近范围内的宏、区块进行数值运算对比,寻找与该块最相近、误差最小的区块,找到近似的该区块后,记录该区块在两个画面中的位移值,即为位移矢量以及反映两画面的差值量。若位移矢量坐标变化为0,说明该块没有移动,例如相同的背景景物;若位移矢量值有变化,而区块差值为0,则说明景物有移动,而形状没有变化,例如飞行中的球类和奔驰的车辆等。可见,位移矢量和区块差值可在重放时依靠参考画面得出新画面的完整场景,而传送时却省略了背景和主体内容,只传送代表位移矢量和差值的少量数据,使图像得到大量压缩。

      2、三种画面的连接

      通常,更换场景后的第一帧就是I帧,I帧应当全帧传送。从压缩的程度来看,I画面的压缩量最少;P画面次之,它是以I画面为基础;B画面压缩最多。为了加大压缩比,通常在I帧后面相隔2帧(最多3帧)设置1个P帧,在I、P帧之间都是B帧,在两个P帧之间也是设置2~3帧B帧。B帧传送它与I帧或P帧之间的差值信息,或者P帧与后面P帧或I帧之间的差值信息,或者它与前后I、P帧或P、P帧平均值之间的差值信息。当主体内容变化愈大时,两个I画面之间的帧数值越小;当主体内容变化小时,I面画的间隔可以适当大一些。或者说,B帧、P帧所占比例越大,图像压缩比越高。一般两个I画面相隔13~15帧,相隔帧数不宜再多。

      下面以15帧为例,说明VCD图像帧的排列顺序。I、P、B三种画面的典型设置方式,对NTSC制共约需半秒时间。节目输入顺序是按实际出现顺序排列的,即I、B、B、P、B、B、P、B、B……I、B、B、P……;但为了解码时便于从I、P画面插补得到B画面,在编码录制节目时,将顺序改变了,即按照I、P、B、B……顺序,即改为按原来0、3、1、2、*、5、9、7、8…的画面顺序。解码时先解出0帧、3帧,再由其插补预测计算得出1帧、2帧等等。为此,须在解码器内设置动态存储器,将I、P帧先解码并存储,再计算出各个B帧。不过最后输出时,还是应当按照实际播放顺序重组读出,按正确顺序输出。

      VCD采用的帧间压缩技术标准,对图像编码顺序和各帧间隔是有具体规定的。采用帧压缩技术后,各帧之间的信息冗余量大大减少,图像码率进一步压缩,压缩比可达3-20余倍。

      四、图像压缩编码过程和解压缩过程

      1、编码过程

      这里谈谈VCD所采用MPEG-1标准的编码过程。因为相邻帧画面相同或基本相同,将这种画面群的第1幅画面作为I画面,将它送入编码器。编码器首先将它割裂为许多片、宏块、区块等,将各区块分割为8×8=64点阵列,再进行Z字形描述和DCT变换,将64个亮度(或色度)取样数值变换为64个DCT系数,再对64个系数值分别进行相应的量化,经量化处理后再进行VLC处理,即得到了代表一个区块数据的最短的数码,至此,完成了该画面群第1帧的第1列图像中第1宏块的编码。依次类推,可得到第1帧画面的全部压缩数据编码。原为二维空间的一帧图像信息已经转变为一维空间的串行数据,这些数据被全部存储起来,成为继续进行数据处理的基础。至此,I画面数据处理完毕。

      完成第1帧图像压缩编码后,接着输入第2帧图像。编码器按照相同的方法步骤对第2帧进行压缩编码,得到第2帧数据。此时,编码器不再将第2帧数据进行完整的存储和传送,而是将它与第1帧数据进行比较运算。若运算中发现,两帧间数据差别很小时,说明两帧图像差别不大,仅将其差值存入存储器,而舍掉其大部分重复数据。按照此方法再进行第3、第4帧编码,并进行比较运算,直到找到某一帧,差别较大且超过规定值时,再将此帧数据中与第1帧的差别(包括位移矢量和差值)部分存储起来,并将此帧数据排在第1帧(I帧)后面传送出去,该帧就是P画面。当传送I、P画面后,再传送3、4帧的差别数据,这些画面都是B画面。它们之间的差别不大,是处于I、P之间的画面。按照此程序和方法,可再选出许多组P和B画面。通常,每隔13~15帧后,再设置一个I画面,作为后续画面的参考基准。如遇到较新的场景,将出现一幅不相同的新画面,这幅新出现的画面也作为I画面。

      图2.2.3是MPEG-1图像压缩编码器方框图。代表亮度Y和色度分量CB、CR的二进制数码化信号,首先进入帧改组器(或称帧重排电路),将画面分割为片、宏块、区块。区块经过比较

      运算电路再进入DCT电路、量化器、VLC电路,取得已压缩数据。再将数据送到多路混合器和传输缓冲器。传输缓冲器用于暂存压缩数据,并按照控制指令的先后按时序输出数据。该缓冲器通过调整器(又称为量化自适应器)与量化器相连接。调整器可用来检测缓冲器的缓冲区的数据暂存程度,并根据暂存数据量自动调整量化步长。在编码器内设置有反馈通路,它主要包括反量化器(Q-1)、离散余弦逆变换(IDCT)、相加器以及IPB画面帧存储器等。反馈回路用于预测图像产生,进行画面分类处理(计算、区分并处理IPB画面),主要用于帧间数据压缩编码处理。还有,运动预测和补偿电路可用于运动补偿。

      2、图像解压缩电路方框图

      图像解压缩电路简称为解压电路、解码电路。VCD视盘机内,经过数字信号解调电路(CD-DSP)处理后,输出压缩编码视频数据流,需要经过视频解压缩电路进行数据解压缩,恢复为未压缩的视频信号。解码过程是编码的逆过程,图2.2.4是MPEG-1视频解压缩电路方框图,其电路结构比编码器稍简单一些。

    图2.2.4 MPEG-1视频解压缩电路方框图

      来自CD-DSP电路的压缩编码信号送到输入缓冲器,然后进入去混合电路,将图像的编码模式标志,运动向量(位移矢量)和图像数据分离开,分别送往帧存储器和解压缩主通道电路。

      主通道要处理I、P、B帧数据,这些数据已经按照图像编码系列的规定,以数据封包头标指出,这些数据分别暂存在缓冲存储器的存储区内,根据数据量大小暂存在容量不同的存储器区中。在微处理器控制下,先将I画面数据按序取出,送到VLC(可变长度码解调器),按照ROM存放的可变长度码对照表,逐一将编码时压缩的码位恢复为压缩前的DCT量化值,再将各区块分为64个数据的量化值逐位乘以反量化参数,这些参数位于ROM中存放的64位视觉心理模式量化表的相对位置,重新恢复为DCT频率系数,完成反量化过程。

      经过反量化的数据,再送入IDCT(离散余弦逆变换)电路。这是另一次逆变换,也是通过查表法,将反量化值所代表的各频率余弦分量的幅值进行逆变换,重新恢复为DCT变换前的图像(Y、CB、CR)取样数据,从而取得代表图像压缩前的区块信息。4个区块的信息组成一个宏区块,若干个宏区块组成片,再由若干片组成完整画面的总数据,这就是I帧画面。这些繁重的相加工作都需要在加法器中进行。

      恢复出来的I帧画面数据存入帧存储器。I画面与后续输入的P画面数据相加,可恢复出P画面,P画面也存入帧存储器。然后根据运动矢量和运动后图像差值(即B画面数据),与I、P画面存储数据在加法器中相加,并受编码模式信号的控制,以便决定I、P图像的成分多少,从而恢复出不同前后的B帧画面。经以上处理所得I、P、B各种画面数据都需要存入缓冲存储器,还要根据编码模式的指示及输出制式的帧频要求,按照I、B、B、P、B、B、P、B、B…B、I、B、B、P、B…的正常顺序进行重新编排,按照一定的速度从帧重排电路输出。输出的解压缩数据送到D/A转换器,转变为R、G、B三基色模拟信号。

      通常,在解压缩电路还要辅设视频编码器和调制器。视频编码器可将三基色信号编码为NTSC/PAL制彩色电视信号,并加入同步、消隐、色同步和彩色副载波信号等,以视频模拟全电视信号形式输出。这种输出形式的信号需要输送到电视接收机的AV输入端口。但是,有些老式电视机没有设置AV输入端口,为了适应这种现象,输出的视频全电视信号需要再一次进行高频调制,利用调制器以某个特定频道的RF调幅形式输出电视信号。此时,VCD机需要设置RF输出端口,其输出信号可直接送到电视机的天线输入端口。

    展开全文
  • 基于DCT编码新进展

    2013-05-06 18:22:34
    式零树小波编码以及Said 等人提出的集合分裂等级树编码的成功应用, 使图像及视频信号的压缩编码提高到了新 阶段, 这虽然对传统的DCT 编码提出了挑战, 然而, Xiong 等人利用嵌入式DCT 块变换之间直流系数(DC) 的高度 ...
  • 针对视频编码的研究,我们实验室提出于4DM-DCT理论,将其应用视频压缩的研究,并取得了很好的实验效果。基于此,我又将研究范围拓展为多视角视频的压缩...关键词:多视角彩色视频立体视频五维矩阵理论SDM-DCT压缩编码
  • 图像压缩编码

    2016-07-24 19:36:24
    常用图像压缩编码码matlab实现。包括:DM编码、变换编码(FFT和DCT)、算术编码、行程编码、Huffman编码、线性预测编码和一个近似的JPEG编码过程。非常适合入门用户实践。
  • 在定点DSP上实现DCT压缩

    千次阅读 2008-03-02 13:23:00
    变换编码法 该编码方法的主要目的在于把统计相依的采样值变换成“某种程度上的统计独立”的系数。变换本身并不是压缩,只是将信号映射到另一域内,而在映射域内较容易实现压缩。把变换后的采样值通过比特分配的量化...
    2006-12-6 17:18:00

    1.变换编码法

    该编码方法的主要目的在于把统计相依的采样值变换成“某种程度上的统计独立”的系数。变换本身并不是压缩,只是将信号映射到另一域内,而在映射域内较容易实现压缩。把变换后的采样值通过比特分配的量化过程进行压缩,存储或传输变换后的压缩系数,从而达到压缩的目的。

    常用的变换方法有离散傅里叶变换(DFT)、主分量变换(K-L)、离散余弦变换(DCT)以及近几年发展起来的小波变换。DFTK-LDCT等都是正交变换在生物医学数据压缩中的应用。这些正交变换在均方误差意义上性能较好,但从该意义上来比较上述的各种变换编码方法可以得出:主分量变换是最佳的,但无快速算法可循;离散余弦变换的性能几乎与主分量变换相同,且可借助于一些快速算法来实现,如利用循环卷积实现的快速算法;离散傅里叶变换的性能随着变换分量的增加而渐近地接近主分量变换,运算速度也快。特别是DCT运算速度快、质量高,且Ahmed等证明:与离散傅里叶变换、以及其他一些变换如哈尔(Haar)变换等来比较,DCT无论从均方误差还是速率失真等方面来看均是领先的,非常接近于K-L变换,但运算速度却大大高于K-L变换。因此不少学者均推崇利用离散余弦变换进行数据压缩,并且DCT已形成了专用软件。应用小波变换来进行数据压缩,公认有极好效果,但无论从理解和实现上都不太容易,并且在资源有限的微处理器上实现更是不太容易。

    2.离散余弦变换

    正交变换编码的基本思想是将数据信号变换到变换域进行描写,然后再根据变换域中系数的特点进行适当量化编码。采用正交变换编码进行数据压缩的进本思想,如图1所示:

    1正交变换编码压缩流程

    正交变换具有能量守恒、能量集中、去相关性和熵保持的特性,无论在是在医疗数据处理中还是在图像处理中正交变换都得到广泛的应用。

    DCT也是基于正交变换的一种编码方法,是N.Ahmed等人于1974年提出的。因为它变换矩阵的基向量很近似于Toeplitz矩阵的特征向量,而Toeplitz矩阵又体现了人类语音及图像信号的相关特性,因此DCT常常被认为是对语音和图形信号的准最佳变换,性能接近于K-L变换。

    3.DCT变换原理

    {x(n)|n=0,1,2,,N-1}代表一帧离散时间ECG数据序列,那么x(n)DCT变换定义为

     

    k1,2,…,N-1 

     

    式中C(k)称为kDCT分量。对应的正变换核为:

    n=0,1,2,…N-1;k=1,2,…N-1 

     

    取反变换核=正变换核,则对应逆变换为:

     


    代入对应的变换核, 则变换公式又可写为:

    k=0,1,2,…,N-1

    n=0,1,2…N-1 

     

    对应N=8的序列x(n)的变换示意图如图2所示,对应的变换核向量如图3所示。可见序列x(n)可以由N变换核向量g(n,k)DCT系数C(k)的线性加权和构成,其中变量k代表了序列x(n)n方向上的广义变化频率。可以证明,这八个基波中任何两个不同频率的变换核向量乘后的代数和都为零,只有相同频率的变换核向量相乘后代数和不为零,这正是正交变换的特性。

    2 DCT变换示意图

    3 DCT变换核向量

    在计算过程可以借助该变换核向量来计算序列x(n)DCT变换和反变换,例如计算C(0),只要把x(n)与对应的k=0变换核向量进行点点相乘再相加求和即可得到C(0);计算C(1),只要把x(n)与对应的k=1变换核向量进行点点相乘再相加求和即可得到C(1);其他的DCT分量可以依次求得。

    4.压缩原理

    定义时域数据序列{x(n)|n=0,1,2,,N-1}DCT域中的归一化信号能量分布为:

    m=0,1,2,,N-1

    DCT变换示意图可以看出信号能量在变换域中的分布具有低频高幅和高频低幅的特点,当频率越高时DCT分量的值逐渐趋于零,所以信号能量主要集中地分布在前MM<N)个分量。当M足够大时,总能保证前M个分量的能量达到一定值,即:

    E (M-1)×100≥Eth

    式中Eth为根据实际要求预选设定的门限值。

    在压缩过程只存储或传输这前M个分量,其余的N-M个分量被忽略,从而达到压缩的目的。在解压缩过程进行反变换时,首先将被被忽略掉的N-M个分量用零补充(由变换示意图高频分量的幅值趋近于零),让对调整或的N个变换系数进行IDCT,便可具有很好保真度地恢复重现原数据序列。

    5.编码实现

    Blackfin处理器是16位定点DSP,对于DCT变换压缩算法必须使用特定的浮点处理方法。常见的方法有Q0,Q15法表示浮点数。本程序使用Q0法表示,即16位全部表示整数,不含小数。

    针对DSP的算法优化主要体现在浮点运算和查表运算上。

    比如cos值为01之间的小数,用Q0法表示需要对cos值按照预定精度增大一定的比例。

    本程序需要使用三个表,一是COS表:

    cos值预先乘上128,并将0~PI/2的范围分成512份,生成COS表。

    cos(x), 0<x<PI/2

    x>PI/2时,根据cos的周期性将它调整至0~2PI内,再根据cos的对称性调整x和结果的符号。

    二是SQR平方根表;

    三是除法表:

    由于Blackfin处理器进行除法运算很耗时间,在这里采用预乘一个参数再左移m位的办法代替除法运算。这个参数就构成了除法表。

    N / I = n * k [I] << m;

    其中表项K[I] = 1 / I * 2^m

     
    展开全文
  • 二、8 * 8 DCT变换(这一步r)如果加上一个掩模可以去除图片中人眼不敏感的高频分量,从而进一步压缩图片 三、量化处理(采用JPEG亮度量化表,将DCT举证除以量化码表),由于量化后有取整操作,因此是有损压缩图片 四...
  • 很好用,用c++编码实现。里面也包含了实现原理,和各种实验重点及要求。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 548
精华内容 219
关键字:

dct压缩编码