27
JPEG 编码器的 实现分析

Jpeg realize analysis

  • Upload
    kingwu

  • View
    1.541

  • Download
    0

Embed Size (px)

Citation preview

JPEG 编码器的实现分析

HI, JPEG

主 要 内 容

第一部分:介绍了 jpeg 压缩的基本原理

第二部分: jpeg 编码器架构及实现分析

第三部分:综合验证

HI, JPEG

JPEG 文件解析

图像的宽、高、 Huffman 表、量化表等等。标记码有很多,但绝大多数的 JPEG 文件只包含几种。标记码的结构为:SOI ,DQT (量化表) ,DRI,SOF0,DHT (哈夫曼编码表) ,SOS

压缩数据 , 以 EOI标志结束。

HI, JPEG

数据压缩流程图

空间变换YCbCr

8*8图像块

DCT变换

量化

DPCM 编码

行程编码

JPEG压缩文件

RGB源图像数据

哈夫曼编码

未包括

HI, JPEG

1.1 、 空间变换

通常把 RGB 空间表示的彩色图像变换到其他色彩空间 (YUV) 。

每个点保存一个 8bit 的亮度值 , 每 2x2 个点保存一个 Cr Cb 值 , 而图象在肉眼中的感觉不会起太大的变化 . 所以 , 原来用 RGB 模型 , 4 个点需要 4x3=12 字节 . 而现在仅需要 4+2=6 字节 ; 平均每个点占 12bit.

HI, JPEG

1.2 、 DCT 变换

HI, JPEG

1.3 、 量化

量化过程实际上是简单地把频率领域上每个成份,除以一个对于该成份的常数,且接着四舍五入取最接近的整数。

DC 直流变量

AC 交流变量

HI, JPEG 1.4 、 “ Z” 字形编排

对于前面量化的系数所作的 “ Z” 字形编排结果就是:

底部 − 26 ,− 3 , 0 ,− 3 ,− 3 ,− 6 , 2 ,− 4 , 1 −4 , 1 , 1 , 5 , 1 , 2 ,− 1 , 1 ,− 1 , 2 , 0 , 0 , 0 , 0 ,0 ,− 1 ,− 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 顶部

HI, JPEG

1.5 、编 码

一、直流 DC 系数使用 DPCM (差分脉冲

调制编码 )编码;

二、交流 AC 系数使用 RLE (行程)编

码;

三、最后用 范式 Huffman 编码来处理。

HI, JPEG

2.1 空间变换

计算公式: Y = 0.299R + 0.587G + 0.114B Cr = 0.713(R - Y) Cb = 0.565(B - Y)

HI, JPEG

激励代码

HI, JPEG

Rgb2ycbcr 仿真结果

HI, JPEG 2.2 DCT 与 zigzag 部分

离散余弦变化内部包含 8 组 dct_block ,每组dct_block 包含 8 个 dct_unit, 如下图所示:

……

Dct_unit1

Dct_unit2

Dct_unit3

Dct_unit4

Dct_unit5

Dct_unit6

Dct_unit7

Dct_unit0

Dct_unit1

Dct_unit2

Dct_unit3

Dct_unit4

Dct_unit5

Dct_unit6

Dct_unit7

Dct_unit0

Dout

zigzag

din

HI, JPEG

模块说明

数据输出dout输出

数据输入din输入

使能端ena输入

时钟clk输入

描述端口类型

HI, JPEG

Dct_block 模块图

HI, JPEG

Dct_unit 单元

通过查 dct_cos_table 表( x , y , u , v )来确定离散余弦运算, dct_mac 计算输出值。

HI, JPEG

dct_cos_table 部分代码

HI, JPEG

dct_mac 部分代码

HI, JPEG

zigzag 部分

HI, JPEG

Zigzag 模块说明

HI, JPEG

2.3 量化取整

量化取整部分内部主要包括一个divider 模块及产生数据输出有效和循环结果到最近整数的电路, divider 模块主要实现除法。

HI, JPEG

Jpeg-qnr 部分代码

HI, JPEG 2.4 AC 及 DC 数据编码

amp

rle AC DC

数据输出

size

经过 Zigzag扫描后的数据

din

说明引脚

HI, JPEG

AC经过 RLE 编码后的数据格式为:

Amp (非零 AC 值)Size (非零 AC 有效长度)

Rlen ( 0 的个数)

DC经过 RLE 编码后的数据格式为:

Amp ( DC 差值)Size ( DC 差值有效长度)

HI, JPEG

编码器总架构

编码后输出值

amp ;

size ;

rlen ;

八位量化值输入qnt_val

八位 RGB 值输入din

说明引脚

HI, JPEG

三、综合验证

谢 谢!