3、离散余弦变换 DCT
  将图像从色彩域转换到频率域,常用的变换方法有:

DCT变换的公式为:

f(i,j) 经 DCT 变换之后,F(0,0) 是直流系数,其他为交流系数。
  还是举例来说明一下。
  8x8的原始图像:

推移128后,使其范围变为 -128~127:

使用离散余弦变换,并四舍五入取最接近的整数:

上图就是将取样块由时间域转换为频率域的 DCT 系数块。
DCT 将原始图像信息块转换成代表不同频率分量的系数集,这有两个优点:其一,信号常将其能量的大部分集中于频率域的一个小范围内,这样一来,描述不重要的分量 只需要很少的比特数;其二,频率域分解映射了人类视觉系统的处理过程,并允许后继的量化过程满足其灵敏度的要求。
  当u,v = 0 时,离散余弦正变换(DCT)后的系数若为F(0,0)=1,则离散余弦反变换(IDCT)后的重现函数 f(x,y)=1/8,是个常 数值,所以将 F(0,0) 称为直流(DC)系数;当 u,v≠0 时,正变换后的系数为 F(u,v)=0,则反变换后的重现函数 f(x,y) 不是常数,此时 正变换后的系数 F(u,v) 为交流(AC)系数。
  DCT 后的64个 DCT 频率系数与 DCT 前的64个像素块相对应,DCT 过程的前后都是64个点,说明这个过程只是一个没有压缩作用的无损变换过程。
  单独一个图像的全部 DCT 系数块的频谱几乎都集中在最左上角的系数块中。
  DCT 输出的频率系数矩阵最左上角的直流 (DC)系数幅度最大,图中为-415;以 DC 系数为出发点向下、向右的其它 DCT 系数,离 DC 分量越远,频率越高,幅度值越小,图中最右下角为2,即图像信息的大部分集中于直流系数及其附近的低频频谱上,离 DC 系数越来越远的高频频谱几乎不含图像信息,甚至于只含杂波。
  DCT 本身虽然没有压缩作用,却为以后压缩时的"取"、"舍" 奠定了必不可少的基础。
4、量化
  量化过程实际上就是对 DCT 系数的一个优化过程。它是利用了人眼对高频部分不敏感的特性来实现数据的大幅简化。
  量化过程实际上是简单地把频率领域上每个成份,除以一个对于该成份的常数,且接着四舍五入取最接近的整数。
  这是整个过程中的主要有损运算。
以这个结果来说,经常会把很多高频率的成份四舍五入而接近0,且剩下很多会变成小的正或负数。
  整个量化的目的是减小非“0”系数的幅度以及增加“0”值系数的数目。
  量化是图像质量下降的最主要原因。
  因为人眼对亮度信号比对色差信号更敏感,因此使用了两种量化表:亮度量化值和色差量化值。

使用这个量化矩阵与前面所得到的 DCT 系数矩阵:

如,使用?415(DC系数)且四舍五入得到最接近的整数

总体上来说,DCT 变换实际是空间域的低通滤波器。对 Y 分量采用细量化,对 UV 采用粗量化。
  量化表是控制 JPEG 压缩比的关键,这个步骤除掉了一些高频量;另一个重要原因是所有图片的点与点之间会有一个色彩过渡的过程,大量的图像信息被包含在低频率中,经过量化处理后,在高频率段,将出现大量连续的零。
  5、“Z”字形编排
  量化后的数据,有一个很大的特点,就是直流分量相对于交流分量来说要大,而且交流分量中含有大量的0。这样,对这个量化后的数据如何来进行简化,从而再更大程度地进行压缩呢。
这就出现了“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 顶部
  这样做的特点就是会连续出现多个0,这样很有利于使用简单而直观的行程编码(RLE:Run Length Coding)对它们进行编码。
  8×8图像块经过 DCT 变换之后得到的 DC 直流系数有两个特点,一是系数的数值比较大,二是相邻8×8图像块的 DC 系数值变化不大。根据这个特点,JPEG 算法使用了差分脉冲调制编码(DPCM)技术,对相邻图像块之间量化 DC 系数的差值(Delta)进行编码。即充分利用相邻两图像块的特性,来再次简化数据。
  即上面的 DC 分量-26,需要单独处理。
  而对于其他63个元素采用zig-zag(“Z”字形)行程编码,以增加行程中连续0的个数。

转载于:https://www.cnblogs.com/wengzilin/archive/2013/05/26/3100027.html

【转】DCT变换的透彻解析相关推荐

  1. 基于DCT变换的JPEG图像压缩原理

    1.为什么要进行图像压缩 众所周知,当今人类社会具有三大支柱,即物质.能量.信息.当下已由物质过渡到信息,从农业现代化到工业现代化,再到当今的信息化时代.信息具有通用性.抽象性.无限性.其通用性表现在 ...

  2. fdct算法 java_ImageSharp源码详解之JPEG压缩原理(3)DCT变换

    DCT变换可谓是JPEG编码原理里面数学难度最高的一环,我也是因为DCT变换的算法才对JPEG编码感兴趣(真是不自量力).这一章我就把我对DCT的研究心得体会分享出来,希望各位大神也不吝赐教. 1.离 ...

  3. water水印(DCT变换过程)

    DCT变换: 低频和高频来源是声音的频率,这里根据纹理形象化了; 高频/低频是指图像从纹理角度看,纹理细密/细小/稠密的为高频信息,例如均匀一致的路面,水面等,低频就是指那些较粗的纹理,如边缘信息等, ...

  4. 基于MATLAB的数字图像K-L变换,基于DCT变换的图像编码方法研究

    分类号 密级 UDC注l 学 位 论 文 基于DCT变换的图像编码方法研究 (题名和副题名) 朱剑英 (作者姓名 指导教师姓名 副教授 中诱学位级别硕士 沦_义提交日期2004.1 专.业名称 通信与 ...

  5. 图像去噪 使用dct变换进行去噪

    因为噪声往往是高频部分,可以将图像转换到频域,进行高频处理: 把高频部分虑掉. <span style="font-size:18px;"><strong> ...

  6. 二叉树前序、中序、后序遍历非递归写法的透彻解析

    前言 在前两篇文章二叉树和二叉搜索树中已经涉及到了二叉树的三种遍历.递归写法,只要理解思想,几行代码.可是非递归写法却很不容易.这里特地总结下,透彻解析它们的非递归写法.其中,中序遍历的非递归写法最简 ...

  7. H264中DCT变换,量化,反量化,反DCT变换

    H.264中采用的是整数DCT变换,在实现的时候,该变换和量化又杂糅在一起,那么这些错综复杂的关系究竟是怎样纠缠的呢?在参考H.264乐园论坛会员cs1860wd的帖子和H.264 and MPEG- ...

  8. SSE图像算法优化系列二十一:基于DCT变换图像去噪算法的进一步优化(100W像素30ms)。...

    在优化IPOL网站中基于DCT(离散余弦变换)的图像去噪算法(附源代码) 一文中,我们曾经优化过基于DCT变换的图像去噪算法,在那文所提供的Demo中,处理一副1000*1000左右的灰度噪音图像耗时 ...

  9. 图像处理——DCT变换的学习笔记

    1 DCT变换的学习笔记 DCT变换是一种可逆的变化,也就是说:DCT变换是一种一一映射:

最新文章

  1. 后台运行定位,音频,网络电话
  2. SpringMVC Controller单例和多例
  3. 编号003099--ORACLE DBA-SH/WH
  4. Android 设备的CPU类型(通常称为”ABIs”)
  5. [Windows核心编程]堆
  6. web前端到底怎么学?干货资料!
  7. 新时代ITer们的思考及购书有奖活动
  8. Qt控件总结:QToolButton
  9. oracle 负载均衡连接方式常用SQL语句备忘录
  10. php开发技术规范怎么写,PHP开发技术规范!(2)
  11. win7如何彻底清理c盘?有什么好方法推荐?
  12. Java 11中文版 API参考文档(收藏)
  13. 为什么linux中权限r对应4、w对应2、x对应1
  14. Open Explorer Plugin for Eclipse (eclipse 插件 在ecli
  15. 【合新通信】SFP GPON ONU Stick With MAC
  16. “助农”成为电商平台最热关键词,拼多多为什么重视农业农村?
  17. HTML作业之粉粉滴个人博客来袭—篇章一
  18. 终于好了,自动生成支付宝自定义收款码
  19. matlab如何将三维转为二维_matlab三维矩阵怎么转为二维矩阵?
  20. 谷歌正常,IE浏览器get请求方式 报错400 解决办法

热门文章

  1. 1000万贷款三年,到期一次性偿还1500万,这个利息算不算高?
  2. 央行允许银行倒闭破产,那么储户的存款怎么办?
  3. 九十年代以来的文学事变与60后70后80后作家的写作之一
  4. 在Amilal听杭盖乐队演唱
  5. 鹤峰:美丽的茶乡—— 舞狮篇
  6. HTML一个form表单中有两个(多个)submit,后台如何区分(纯HTML实现,无需javascript)
  7. 没有建立对验证码签名的目录的发布者信任
  8. java mqtt客户端_基于 t-io 实现一个 mqtt5 协议之 mica-mqtt
  9. js封装函数_JavaScript基础-如何封装函数来改变元素的位置
  10. 中等职业计算机等级考试,中等职业学校计算机等级考试题库(含答案):EXCEL