JPEG文件编码介绍.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JPEG 文件编码简介色彩模型JPEG的图片使用的是 YCrCb 颜色模型,而不是计算机上最常用的RGB.关于色彩模型,这里不多阐述.只是说明,YCrCb 模型更适合图形压缩.因为人眼对图片上的亮度Y的变化远比色度C的变化敏感.我们完全可以每个点保存一个bit的亮度值,每2x2个点保存一个CrCb值,而图像在肉眼中的感觉不会起太大的变化. 所以,原来用RGB模型,4个点需要4x3=12字节.而现在仅需要4+2=6字节;平均每个点占2bit.当然 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 + 128 Cr =??? 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 的倍数, 都需要先补成 8 的倍数, 好一块块的处理. 另外, 记得刚才我说的CrCb都是2x2记录一次吗? 所以大多数情况,是要补成 16x16 的整数块.按从左到右,从上到下的次序排列 (和我们写字的次序一样). JPEG 里是对YCrCb分别做DCT变换的.这里进行DCT 变换的Y,Cr,Cb 值的范围都是 -128~127(Y 被减去 128) ??? JPEG编码时使用的是Forward DCT(FDCT)解码时使用的Inverse DCT(IDCT) 下面给出公式: FDCT: ???????????????????????????? 7?? 7???????????????? 2*x+1??????????????? 2*y+1 F(u,v) = alpha(u)*alpha(v)* sum sum f(x,y) * cos (------- *u*PI)* cos (------ *v*PI) ??????????????????????????? x=0 y=0???????????????? 16?????????????????? 16 u,v = 0,1,...,7 ?????????? { 1/sqrt(8)? (u==0) alpha(u) = { ?????????? { 1/2??????? (u!=0) IDCT: ????????? 7?? 7???????????????????????????????? 2*x+1??????????????? 2*y+1 f(x,y) = sum sum alpha(u)*alpha(v)*F(u,v)*cos (------- *u*PI)* cos (------ *v*PI) ???????? u=0 v=0???????????????????????????????? 16?????????????????? 16 x,y=0,1...7 ??? 这个步骤很花时间, 另外有种 AAN 优化算法, 大家可以去网上自己找一下. 在 Intel 主页上可以找到 AAN IDCT 的 MMX 优化代码. ( Intel 主页上

文档评论(0)

187****5045 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档