JPEG图像压缩原理与DCT离散余弦变换
1 前言
那么,JPEG是如何压缩的呢?靠的就是传说中的DCT(离散余弦变换)。
下图是JPEG压缩/解压缩的流程图。我想你最大的疑问估计就是DCT了。
2 JPEG压缩流程
2.1 以8x8的图象块为基本单位进行编码
2.2 将RGB转换为亮度-色调-饱和度系统(YUV),并重新采样
YUV是什么?它也是一种很不错的图像数据表示方法,特别是在视频领域。
Y:指颜色的明视度、亮度、灰度值;
U:指色调;
V:指饱和度。
YUV与RGB可以互相转换。
Y=0.299R+0.587G+0.114B
U=0.148R-0.289G+0.473B
V=0.615R-0.515G-0.1B
2.3 FDCT与IDCT
一个是正变换,一个是逆变换。反正都可以称为离散余弦变换。
根据8*8的二维DCT定义
其中:0<= u, v < 8
a(v) = a(u)
是输入8x8像素的坐标。
是输出的8x8变换结果的坐标。
当然了,输入数据其实是有3个的,也就是YUV,因此对每个8x8的原始图像数据,需要做3次DCT。
2.4 量化与反量化
在术语里,左上方称为低频数据,右下方称为高频数据。
你要是不理解,可以这么想,既然G(0,0)都是直流分量了,那频率不就是0?不就是所谓的低频?^^
好了,别走偏了,还继续说量化。
JPEG系统分别规定了亮度分量和色度分量的量化表,色度分量相应的量化步长比亮度分量大。
3 应用举例
3.1 编码
由于一个字节是0~255,为了减小绝对值波动,先把数值移位一下,变成-128~127。
可见,新的数据,很小,很多是0。正如上文所说,这么多0,完全可以用游程编码,大大缩小数据量。
3.2 解码
4 其他
必须再强调的是,JPEG压缩是有损失的,从上面的例子就看出来,输出结果并不是完全等于输入。
此外,JPEG压缩比例是可以控制的,只不过图像质量会变差。比如
压缩率:10
参考:
https://en.wikipedia.org/wiki/JPEG#Discrete_cosine_transform
JPEG图像压缩原理与DCT离散余弦变换相关推荐
- JPEG压缩原理与DCT离散余弦变换
原文网址:http://blog.csdn.net/newchenxf/article/details/51719597 转载请注明出处喔 1 前言 JPEG是joint Photographic E ...
- JPEG压缩原理(DCT)
本文介绍JPEG压缩技术的原理,对于DCT变换.Zig-Zag扫描和Huffman编码,给出一个较为清晰的框架. 1. JPEG压缩的编解码互逆过程: 编码 解码 2. 具体过程:(这里仅以编码为例, ...
- 数字图像处理学习笔记(十八)实现图像的离散余弦变换
实验截图: 自带函数实现的离散余弦变换: 利用公式求出的DCT和IDCT 实验代码: 代码(1): img=imread('erciyuan.jpg'); img=rgb2gray(img); fig ...
- 基于DCT变换的JPEG图像压缩原理
1.为什么要进行图像压缩 众所周知,当今人类社会具有三大支柱,即物质.能量.信息.当下已由物质过渡到信息,从农业现代化到工业现代化,再到当今的信息化时代.信息具有通用性.抽象性.无限性.其通用性表现在 ...
- 基于DCT变换的JPEG图像压缩原理与JPEG2000编解码原理
目录 参考文章 基于DCT变换的JPEG图像压缩原理 图像数据压缩 图像处理 为什么可以进行图像压缩? 颜色空间转换 RGB CMY HSV/HSI/HSB/HSL YUV/YCbCr YCbCr与R ...
- 理解DCT与DST【二】:离散余弦变换
本文主要是将先前的博客 离散傅里叶变换DFT.离散余弦变换DCT.离散正弦变换DST,原理与公式推导 从图片修改为 Markdown 脚本,方便读者浏览,同时增加了部分内容.但由于文章字符过多,无法全 ...
- dct变换的主要优点有哪些_数字图像处理(三)—— 离散余弦变换
离散余弦变换(Discrete Cosine Transform)本质上也是离散傅里叶变换(Discrete Fourier Transform),但是只有实数部分.有这样一个性质:如果信号 在给定区 ...
- 图像处理 离散余弦变换
什么是DCT 一维DCT变换 一维DCT变换时二维DCT变换的基础,所以我们先来讨论下一维DCT变换.一维DCT变换共有8种形式,其中最常用的是第二种形式,由于其运算简单.适用范围广.我们在这里只讨论 ...
- 频域滤波—离散余弦变换
离散余弦变换DCT 傅里叶变换的参数是复数,在数据的描述上相当于实数的两倍,若仅用实函数对称延拓成一个实偶函数,则其傅里叶变换也为实偶函数且仅包含余弦项,连续函数和离散函数的余弦变换都是基于这个原理. ...
最新文章
- 【教程】【FLEX】#004 反射机制
- DiskFileUpload类常用方法
- 蓝桥杯2017初赛-外星日历-数论
- kvm vnc的使用,鼠标漂移等
- 前端学习(1731):前端系列javascript之发布窗口布局下
- C/S通信模型与B/S通信模型介绍
- Qt文档阅读笔记-RadioButton的基本使用
- 17.立体匹配——匹配问题,好区域匹配 测验,窗口大小的影响,遮蔽(Occlusion),顺序约束_2
- RubyCritic:一款不错的检测代码质量工具
- Latex 之 双栏 末页对齐 -- 导言区加入 \usepackage{flushend}
- Android 签名板
- Unity性能优化之物理引擎的优化(三)
- 微信公众号网页开发步骤
- 回首向来萧瑟处 也无风雨也无晴
- .ps格式的文件怎么打开?方法:通过GSview打开或将.ps转换成.pdf
- 声纹技术(三):声纹识别技术
- 树莓派外接can模块,can收发功能测试
- erp仓储管理 java,关于java:ERP仓库管理的操作与设计开源软件诞生20
- uni-app 99群公告推送功能(一)
- 教你用C++做一个简单的用户名以及密码注册系统