JPEG 简易文档 V2.11(转贴)

2016-01-29 18:25 3 1 收藏

JPEG 简易文档 V2.11(转贴),JPEG 简易文档 V2.11(转贴)

【 tulaoshi.com - Linux 】

JPEG 简易文档 V2.11------------------------------        最后修订 2000.11.22        作者: 云风        Email: cloudwu@263.net        Homepage: http://member.netease.com/~cloudwu
写在前面--------1. 为什么写这个文档?    云风想对 JPEG/MPEG 有一个系统的研究, 但是苦于找到好的资料. 而英文水平又    不怎样, 所以在学习的过程,    将已经了解了的东西记录下来. 方便自己在编写    代码的时候查阅. 而且正式的 JPEG 文档非常复杂, 打印出来也有厚厚一本, 就    是英文底子比较好的朋友, 看起来也会头痛的. 这里写一份精简版本, 仅仅对 JPEG    Baseline 编码的解码算法做些介绍. 这样对想了解下 JPEG 的朋友会有好处的.    当然需要深入研究 JPEG 的朋友请自己再去找书和资料. 希望 inet 上中文资料越来    越丰富. 2. 通过阅读这份文档期望达到的目的.    能够对 JPEG 图形压缩有一定感性的认识, 但其数学原理不需要搞清. 能够通过这,     开始写自己的编码/解码程序. 或者看懂以有的代码. 对有损图形压缩有进一步了解.     自己能够改良 JPEG, 比如增加透明色的支持, 加快 JPEG 的解码速度. 3. 为什么用文本格式写, 而不用 HTML?    个人喜好. 不喜欢有格式编排的电子文档. 纯文本能够更广泛的使用, 而不需要    HTML 浏览器. 4. 读者需要为这个文档付出什么吗?    您可以自由使用它. 但是由于您是无偿使用, 所以作者不对可能出现的错误和问    题担负任何责任. 关于相关问题,可以来 email 探讨, 但由于精力有限, 不保证    回信. 如果你对这有不满意的地方, 云风不接受任何无理批评. 5. 能够转载这篇文档吗?    欢迎您随意转载, 但不得用它赢利. 而且转载请保留其内容完整. 如果您为它    制作了诸如 HTML 等别的格式的版本, 也必须同时保留一份纯文本版在一起. JPEG 压缩简介------------- 1. 色彩模型     JPEG 的图片使用的是 YCrCb 颜色模型, 而不是计算机上最常用的 RGB. 关于色彩模型, 这里不多阐述. 只是说明, YCrCb 模型更适合图形压缩. 因为人眼对图片上的亮度 Y 的变化远比色度 C 的变化敏感. 我们完全可以每个点保存一个 8bit 的亮度值, 每 2x2 个点保存一个 Cr Cb 值, 而图象在肉眼中的感觉不会起太大的变化. 所以, 原来用 RGB 模型, 4 个点需要 4x3=12 字节. 而现在仅需要 4+2=6 字节; 平均每个点占 12bit. 当然 JPEG 格式里允许每个点的 C 值都记录下来; 不过 MPEG 里都是按 12bit 一个点来存放的, 我们简写为 YUV12. [R G B] -> [Y Cb Cr] 转换------------------------- (R,G,B 都是 8bit unsigned)         | Y  |     |  0.299       0.587       0.114 |   | R |     | 0 |        | Cb |  =  |- 0.1687    - 0.3313      0.5   | * | G |   + |128|        | Cr |     |  0.5       - 0.4187    - 0.0813|   | B |     |128| Y = 0.299*R + 0.587*G + 0.114*B  (亮度)Cb =  - 0.1687*R - 0.3313*G + 0.5   *B + 128Cr =    0.5   *R - 0.4187*G - 0.0813*B + 128 [Y,Cb,Cr] -> [R,G,B] 转换------------------------- R = Y                    + 1.402  *(Cr-128)G = Y - 0.34414*(Cb-128) - 0.71414*(Cr-128)B = Y + 1.772  *(Cb-128)     一般, C 值 (包括 Cb Cr) 应该是一个有符号的数字, 但这里被处理过了, 方法是加上了 128. JPEG 里的数据都是无符号 8bit 的. 2. DCT (离散余弦变换)     JPEG 里, 要对数据压缩, 先要做一次 DCT 变换. DCT 变换的原理, 涉及到数学知识, 这里我们不必深究. 反正和傅立叶变换(学过高数的都知道) 是差不多了. 经过这个变换, 就把图片里点和点间的规律呈现出来了, 更方便压缩.JPEG 里是对每 8x8 个点为一个单位处理的. 所以如果原始图片的长宽不是 8

来源:https://www.tulaoshi.com/n/20160129/1505752.html

延伸阅读
如下所示: 代码如下: private void readImage(String filename)  throws FileNotFoundException, IOException {         FileInputStream fIn = new FileInputStream(filename); //需要替换这边的两句:         JPEGImageDecoder jpeg_decode = JPEGCodec.c...
标签: PHP
XML轻松学习总节篇(转贴搜集) XML轻松学习手册(1)XML快速入门(本内容转贴搜集) 前言 XML越来越热,关于XML的基础络上也随处可见。可是一大堆的概念和术语往往让人望而生畏,很多朋友问我:XML到底有什么用,我们是否需要学习它?我想就我个人学习过程的心得和经验,写一篇比较全面的介绍文章。首先有两点是需要肯定的: ...
标签: Web开发
//GenerateImage.java      /* 动态产生JPEG图像的例子   */ import java.awt.*; import java.awt.image.*; import com.sun.image.codec.jpeg.*;  //编码类 java.util.*; javax.servlet.*; javax.servlet.http.*; java.io.*; class GenerateImage ext...
标签: 电脑入门
一、JPEG 是压缩了的照片 最基本的分别,就是 RAW 档会全面保留照片上每个像素的讯息和资料,但 JPEG 却是相机根据设定而作出妥协式的压缩,所以两者档案大小有明显分别,RAW 档可以是 JPEG 档的两、三倍之大,也因此不难想像,RAW 档的影像质素及层次感,会比起直出的 JPEG 高得多。 二、RAW 档需要再处理 有别于 JPEG,拍摄了 RAW ...
标签: Delphi
  Delphi中的TImage控件直接支持Bitmap格式(.bmp)、 Icon格式(.ico)和Metafile格式(.emf or .wmf)的图像文件。在Delphi的设计窗口中可以把这三种格式的文件赋给TImage控件的Picture属性。TImage控件还能显示其他格式的图像,如JPEG格式的图像。但不能直接把文件名赋值给Picture属性,而需要把图像对象赋值给属性Picture的Graphic属性...

经验教程

982

收藏

74
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部