码迷,mamicode.com
首页 > 其他好文 > 详细

图像jpeg压缩

时间:2018-12-05 20:38:12      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:技术分享   linu   orm   blog   ash   转换   流程   code   就是   

图像分割

8X8

颜色空间转换RGB->YCbCr

3个8X8的矩阵

离散余弦变换:(Discrete cosine transform),简称DCT。

DCT转换后的数组中第一个是一个直线数据,因此又被称为“直流数据”,简称DC,后面的数据被称为“交流数据”,简称AC

经过颜色空间的转换,每一个8X8的图像块,在数据上表现为3个8X8的矩阵,紧接着我们对这三个矩阵做一个二维的DCT转换,结果矩阵仍为8X8。但,经过DCT转换,矩阵的“能量”被全部集中在左上角上的直流分量F(0,0)上,其他位置都变成了0。

此变换后,数据仍处于可逆状态。

数据量化

有损流程

Q称作量化系数矩阵(Quantization matrices),JPEG算法提供了两张标准的量化系数矩阵,分别用于处理亮度数据Y和色差数据Cr以及Cb。

技术分享图片

有损压缩就是把数据中重要的数据和不重要的数据分开,然后分别处理。

DCT系数矩阵中的不同位置的值代表了图像数据中不同频率的分量,这两张表中的数据时人们根据人眼对不不同频率的敏感程度的差别所积累下的经验制定的,一般来说人眼对于低频的分量必高频分量更加敏感,所以两张量化系数矩阵左上角的数值明显小于右下角区域。

在实际的压缩过程中,还可以根据需要在这些系数的基础上再乘以一个系数,以使更多或更少的数据变成0,我们平时使用的图像处理软件在生成jpg文件时,在控制压缩质量的时候,就是控制的这个系数。

哈弗曼编码

特定顺序化一维,尽可能把0放在一起

技术分享图片

哈弗曼编码(Huffman coding):根据数据中元素的使用频率,调整元素的编码长度,以得到更高的压缩比。

一般都是使用二叉树来生成,这样得到的编码符合前缀规则,较短的编码不能够是较长编码的前缀。

 

技术分享图片

 

【转载自】

JPEG图像压缩 - 南极山 - 博客园 https://www.cnblogs.com/benwu/articles/8064109.html

【相关网址】

压缩 – TheCodeWay:我的博客 https://thecodeway.com/blog/?tag=%e5%8e%8b%e7%bc%a9

JPEG 原理详细实例分析及其在嵌入式 Linux 中的应用 https://www.ibm.com/developerworks/cn/linux/l-cn-jpeg/

图像jpeg压缩

标签:技术分享   linu   orm   blog   ash   转换   流程   code   就是   

原文地址:https://www.cnblogs.com/wxl845235800/p/10072600.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!