JPEG压缩原理与PyTorch实现
背景介绍
JPEG (Joint Photographic Experts Group) 是JPEG标准的产物,该标准由国际标准化组织(ISO)制订,是面向连续色调静止图像的一种压缩标准。JPEG格式是最常用的图像文件格式,后缀名为.jpg或.jpeg。
压缩原理
JPEG压缩主要分成以下几步
YUV采样
YUV是一种颜色编码方法。常使用在各个视频处理组件中。 YUV在对照片或视频编码时,考虑到人类的感知能力,允许降低色度的带宽。“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。
将RGB图像转换为YUV的计算方法为:
Y=+0.2990R+0.5870G+0.1140BU=−0.1684R−0.3316G+0.5000B+128V=+0.5000R−0.4187G−0.0813B+128\begin{matrix} Y&=&+0.2990R&+0.5870G&+0.1140B& \\ U&=&−0.1684R&−0.3316G&+0.5000B&+128 \\ V &= &+0.5000R& - 0.4187G& - 0.0813B&+128 \end{matrix} YUV===+0.2990R−0.1684R+0.5000R+0.5870G−0.3316G−0.4187G+0.1140B+0.5000B−0.0813B+128+128
在JPEG中使用YUV420采样,即每四个像素中,采样4个Y,1个U和1个V。
块划分
因为JPEG的变换采用8×88\times88×8的DTC,因此需要将整张图片划分为多个8×88\times88×8的格子,每个格子处理是独立的。
DCT
离散余弦变换(DCT)是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换,但是只使用实数。对于8×88\times88×8的离散余弦变换,可以理解为是一系列频率的组合。
可以看到左上角的直流分量最为平坦,右下角的交流分量最为复杂。对于任意的8×88\times88×8图像块,均可以表示为64个频率的线性组合。
量化
量化是JPEG压缩失真的主要来源,其原理是人眼对高频信息不敏感。对于JPEG内置了一套量化矩阵,与DCT系数进行整除,即得到了最后的量化系数。量化系数是稀疏的,且大部分位于左上角的低频区域,因此实现了数据压缩。
PyTorch实现
详见PyTorch实现
基于DiffJPEG做了一些细节上的改进
JPEG压缩原理与PyTorch实现相关推荐
- fdct算法 java_ImageSharp源码详解之JPEG压缩原理(3)DCT变换
DCT变换可谓是JPEG编码原理里面数学难度最高的一环,我也是因为DCT变换的算法才对JPEG编码感兴趣(真是不自量力).这一章我就把我对DCT的研究心得体会分享出来,希望各位大神也不吝赐教. 1.离 ...
- JPEG压缩原理(DCT)
本文介绍JPEG压缩技术的原理,对于DCT变换.Zig-Zag扫描和Huffman编码,给出一个较为清晰的框架. 1. JPEG压缩的编解码互逆过程: 编码 解码 2. 具体过程:(这里仅以编码为例, ...
- JPEG压缩原理与DCT离散余弦变换 量化
原文网址:http://blog.csdn.net/newchenxf/article/details/51719597 1 前言 JPEG是joint Photographic Experts Gr ...
- 【转】JPEG压缩原理
第一章 图像压缩编码的综述 1.1 图象压缩的目的和方法 图象的数字化表示使得图象信号可以高质量地传输,并便于图像的检索.分析.处理和存储.但是数字图像的表示需要大量的数据,必须进行数据的压缩. ...
- JPEG压缩原理与DCT离散余弦变换
原文网址:http://blog.csdn.net/newchenxf/article/details/51719597 转载请注明出处喔 1 前言 JPEG是joint Photographic E ...
- 音视频入门(四)-JPEG压缩算法原理
一.JPEG的引入 JPEG属于一种图片压缩格式,之前我们通过对YUV420图像格式的学习,了解了怎么计算一帧YUV图像的大小.假设这里一帧图片的分辨率为1080p,像素格式为YUV420,那么它的大 ...
- JPEG压缩基本原理
JPEG算法的第一步是将图像分割成8X8的小块. 在计算机中,彩色图像最常见的表示方法是RGB格式,通过R(Red).G(Green)A和(Blue)组合出各种颜色. 除此以外,还有一种表示彩色图像的 ...
- 令人拍案叫绝的JPEG图像压缩原理
作者 | Jack Sigmoid 编辑 | 3D视觉开发者社区 前言 从事各行各业的大佬们,我相信,你们对图像格式是不陌生的,有很多种图像格式,比如,png,jpeg等等,但是你发现,同一张图片, ...
- stm32 h743的jpeg压缩硬件压缩的测试实例及问题
stm32 h743的jpeg压缩硬件压缩的测试实例及问题 代码就不上了,主要是抄袭实例代码 encode_dma.c jpeg_utils.c jpeg_utils.h jpeg_utils_co ...
最新文章
- 手把手教你从零到一搭建深度学习项目(附PDF下载)
- elementui表格复制_Element-UI中关于table表格的那些骚操作
- python编程需要安装什么软件_[零基础学pythyon]安装python编程环境
- Hibernate框架--学习笔记(中):一对多配置、多对多配置
- SAP Analytics Cloud学习笔记(一):从CSV文件导入数据到Analytics Cloud里创建模型和Story
- Eclipse中将java类打成jar包形式运行
- 主成分分析(PCA)实现代码
- Python开发Http代理服务器 - socketref,再见!高德 - C++博客
- 虚拟应用DemoApp功能演示详解
- 什么是 npm ?npm 下载安装使用
- Mac翻译系列软件推荐三:Mate Translate for Mac多国语言翻译工具
- 从事汽车电子软件开发需要什么技能?
- 计算机自带仿真软件,crt软件(电脑终端仿真工具)V8.5.4 最新版
- 在Power BI中如何计算同比增长?
- mysql拼音码自动生成_根据中文名,自动生成首字母的拼音码或拼音码(两种方法)...
- 网站使用微信网页授权,qq登录
- 艾米丽Java游戏_艾米丽玩闹鬼 Emily Wants To Play中文游戏介绍_游戏库_巴士单机游戏...
- 如何使scrapy爬取信息不打印在命令窗口中
- 2012年信息系统项目管理师下半年上午考试习题与答案解析
- 01 APP被苹果APPStore拒绝的各种原因