1.JPEG编码过程

1.1流程

RGB转YCbCr:因为人眼对亮度比较敏感,而对于色度不那么敏感,所以,我们就先将RGB的数据转换到YCbCr色彩空间,便于下面的处理。

降采样:转到YCbCr色彩空间后,就可以将 Cb 和 Cr 这两个通道进行降采样,这里一般是将 2*2 个像素变为 1*1 个像素,虽然分辨率下降到了四分之一,但对于人眼来说差别是不大的。(这一步是有损的)

分块:顾名思义,将图像分为若干个 8*8 的小块,方便下面的处理。

DCT:这一步的目的和RGB转YCbCr有一些相似之处,都是将人眼较为敏感和不敏感的部分进行分离,然后就可以对减少人眼不敏感的部分的信息量。在这一步中,DCT可以将图像的低频(人眼敏感)和高频(人眼不敏感)部分进行分离。这样得到的结果是每个 8*8 小块得到 8*8 的系数矩阵。

量化:将DCT后得到的每个系数都除以量化矩阵中对应的值,然后进行取整。通常来说频率较高的部分对应的量化参数比较大,这样一来就能够在较好地保留图像的低频部分并去除一些高频部分。这一步下来得到的矩阵中高频部分几乎全部变为0,这也为进一步的操作提供了便利。值得注意的是,JPEG中压缩率的调整是在这一步中,量化参数越大,压缩后的大小就会越小,但信息的损失也就越多,图片的失真也会更严重。(这一步是有损的)

Huffman编码:准确地说是Huffman编码和RLE,将上一步得到的矩阵进行进一步地压缩(这一步是无损的)。量化后得到的矩阵左上角的那个数比其他数来得大得多,所以我们将它单独拿出来进行编码,称之为直流分量(DC),将剩下的称之为交流系数(AC)。这一步会将矩阵按照 zigzag 的顺序摊成一维,这样做的好处是矩阵的高频部分(右下角)会被安排在后面,因为它们基本上全是0,所以在编码中有一个特殊的标记表示这之后的系数全是0,从而减少压缩后的大小。

2.JPEG解码过程

2.1流程

解码过程是编码过程的逆过程。

3.效果图

压缩后图像出现失真现象,失真的主要出现在压缩算法的降采样和量化步骤。

原图

压缩后,解码效果图

4.PSNR计算结果

一般来说,PSNR高于40dB说明图像质量极好(即非常接近原始图像),在30—40dB通常表示图像质量是好的(即失真可以察觉但可以接受),在20—30dB说明图像质量差。

图像压缩后,psnr计算结果29.634010562060844。

5.压缩效果

压缩前文件大小为769KB,压缩后文件大小为96KB。

附件1:

标准亮度分量量化表:

16, 11, 10, 16, 24, 40, 51, 61,

12, 12, 14, 19, 26, 58, 60, 55,

14, 13, 16, 24, 40, 57, 69, 56,

14, 17, 22, 29, 51, 87, 80, 62,

18, 22, 37, 56, 68, 109, 103, 77,

24, 35, 55, 64, 81, 104, 113, 92,

49, 64, 78, 87, 103, 121, 120, 101,

72, 92, 95, 98, 112, 100, 103, 99

标准色度分量量化表:

17, 18, 24, 47, 99, 99, 99, 99,

18, 21, 26, 66, 99, 99, 99, 99,

24, 26, 56, 99, 99, 99, 99, 99,

47, 66, 99, 99, 99, 99, 99, 99,

99, 99, 99, 99, 99, 99, 99, 99,

99, 99, 99, 99, 99, 99, 99, 99,

99, 99, 99, 99, 99, 99, 99, 99,

99, 99, 99, 99, 99, 99, 99, 99

Zig编码表:

0, 1, 8, 16, 9, 2, 3, 10,

17, 24, 32, 25, 18, 11, 4, 5,

12, 19, 26, 33, 40, 48, 41, 34,

27, 20, 13, 6, 7, 14, 21, 28,

35, 42, 49, 56, 57, 50, 43, 36,

29, 22, 15, 23, 30, 37, 44, 51,

58, 59, 52, 45, 38, 31, 39, 46,

53, 60, 61, 54, 47, 55, 62, 63

Zag编码表:

0, 1, 5, 6, 14, 15, 27, 28,

2, 4, 7, 13, 16, 26, 29, 42,

3, 8, 12, 17, 25, 30, 41, 43,

9, 11, 18, 24, 31, 40, 44, 53,

10, 19, 23, 32, 39, 45, 52, 54,

20, 22, 33, 38, 46, 41, 55, 60,

21, 34, 37, 47, 50, 56, 59, 61,

35, 36, 48, 49, 57, 58, 62, 63

python实现jpeg压缩(rgb到YCbCr)相关推荐

  1. 数字图像处理100问—40 JPEG 压缩——第四步:YCbCr+离散余弦变换+量化

    提示:内容整理自:https://github.com/gzr2017/ImageProcessing100Wen CV小白从0开始学数字图像处理 40 JPEG 压缩--第四步:YCbCr+离散余弦 ...

  2. JPEG压缩的Python实现过程 -- 1图像压缩概念

    现如今互联网上绝大部分图片都使用了JPEG压缩技术,也就是大家使用的jpg文件,通常JPEG文件相对于原始图像,能够得到1/8的压缩比,如此高的压缩率是如何做到的呢?图像压缩是指什么呢?JPEG图像时 ...

  3. JPEG压缩matlab实现

    请注意:本文代码参考用MATLAB实现JPEG压缩过程 原作者为新浪博客:dzh_漫漫修行路 文章目录 JPEG原理流程 源代码 JPEG原理流程 1.色彩空间转换及相应预处理 在进行JPEG 压缩之 ...

  4. 【转】JPEG压缩原理

     第一章 图像压缩编码的综述 1.1 图象压缩的目的和方法 图象的数字化表示使得图象信号可以高质量地传输,并便于图像的检索.分析.处理和存储.但是数字图像的表示需要大量的数据,必须进行数据的压缩. ...

  5. JPEG压缩如何工作?

    转译自:https://www.impulseadventure.com/photo/jpeg-compression.html 当试图重新保存数码照片时,人们经常会面临使用"质量设置&qu ...

  6. 转载的JPeg压缩文档(很好,易懂)

    作者:云风 时间: 2006-07-20 文档类型:原创 来自:云风工作室 写在前面 1. 为什么写这个文档? 云风想对 JPEG/MPEG 有一个系统的研究, 但是苦于找到好的资料. 而英文水平又不 ...

  7. JPEG压缩基本原理

    JPEG算法的第一步是将图像分割成8X8的小块. 在计算机中,彩色图像最常见的表示方法是RGB格式,通过R(Red).G(Green)A和(Blue)组合出各种颜色. 除此以外,还有一种表示彩色图像的 ...

  8. JPEG压缩学习笔记

    JPEG压缩学习及其C语言实现笔记 JPEG压缩流程 1.颜色转换(RGB->YUV) 2.DCT变换 (分块8*8进行DCT变换) 3.量化(-996, 19, 0, 2,0, 0, 0, 0 ...

  9. RGB转YCbCr算法 之Matlab FPGA实现介绍

    1.引言 虽然现在RGB是计算机视觉最基本的三原色组成结构,但是YCbCr也有非常重要的角色,甚至却之不可,理由如下: 1)很多机器视觉,图像处理/检测识别算法,不关注色彩,只需要在灰度域处理即可: ...

最新文章

  1. javadrawstring设置字符大小_LaTex学术写作——编辑文档格式 设置论文标题与摘要...
  2. 用html5做一个简单的作品,html5 canvas 简单画板实现代码
  3. 三次握手和四次挥手图解_图解TCP三次握手和四次挥手
  4. Python 内嵌函数运用(探究模块)
  5. Linux-重装系统之静态ip配置
  6. 信息安全系统设计基础第八周学习总结
  7. hdu 3836 Equivalent Sets
  8. RedEngine11
  9. C# TCP服务器和客户端
  10. react-native环境配置——Android工程搭建
  11. 我读《DOOM启世录》——成为一个真正厉害的人
  12. 交通大数据干货总结(1)
  13. misc 小小小试牛刀
  14. android调用系统录制视频教程,Android开发之使用MediaRecorder录制视频,android视频录制...
  15. 钉钉审批流API接口
  16. Fugiat inventore earum unde officia nihil ratione.Аллея развитый юный сынок угроза голубчик.
  17. 软件系统等保方案,市政项目,投标项目必须
  18. HTTP/HTTPS账号密码获取
  19. 红米4android7.0,红米4能刷android7,0系统吗
  20. thinkphp5使用容联发送短信验证码

热门文章

  1. HTML学习笔记(十一)内联框架
  2. win10 下cuda 9.0 卸载
  3. Git远程仓库(2)
  4. 家用洗碗机哪个品牌好,松下洗碗机80度高温洁净无残留
  5. Promethus的Grafana图形显示MySQL监控数据
  6. 产业大数据平台亮相 华夏幸福发力智慧招商
  7. 家庭生活费夫妻如何分摊?
  8. 1.用于记录Lightroom的快捷键
  9. Word处理控件Aspose.Words功能演示:使用 Java 将 RTF 转换为 PDF
  10. 初识dubbo_晏无心_新浪博客