JPEG(下)| 学习笔记

简介: 快速学习 JPEG(下),介绍了 JPEG(下)系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【高校精品课-华中科技大学 -智能媒体计算JPEG(下)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/811/detail/15689


JPEG(下)


实例应用讲解

我们结合一个应用解释 JPEG 如何进行压缩,image.png
image.png

比如一个8×8的图像块,知道色度的分量,因为有不同的取值。原始图像按照 JPEG 来讲,第一步进行正向的DCT变换也就是 FDCT 变换,DCT 变换之后产生了64个系数。

左上角的叫做 DC 系数也就是直流系数,之后的63个是交流系数。直流系数的值独树一帜,比其他的系数要大很多,而后面的交流系数距离直流系数越近,频率越低,值相对较大。

越往右下角走,频率越高,值也就越小。也就是说,高频部分,频率越高,对图像的贡献相对要小。

image.png

第二步是量化,这个量化表是心理视觉模型做实验做出来的,那么特定的频率应该取怎样的步长?FDCT 系数与量化表作除法就是量化之后的系数。

image.png

量化系数中有许多0,因为除以一个很大的数再四舍五入就是量化的系数,而这个系数中四舍五入有很多0,四舍五入之后的系数叫做规格化的系数。

规格化的系数要还原就要乘以量化步长,在 JPEG 中,就是以规格化的系数开始进行编码。

比如直流分量用 DPCM 编码,其他的交流分量使用 zigzag 编排也就是 z 字型编码,z 字型编码为了产生0的个数增多,从第一行第二列开始一个0,旁边有-1,发现只有一个0,后面五个0,再到第二行左边的时候变为2了,这样还是不连续。

而15、0、2,然后-1、-1、-1,这是 z 字型编排,然后是0、0、-1、0,再往下后面就是若干个0连续在一起,就形成长度编码,在最后再使用哈弗曼编码。

假定已经通过熵编码,最后组成了数据流,现在编程解码,解码依然从熵编码相应解码,解码之后因为是无损的可以完完全全还原成规格化的量化系数,量化系数继续解码乘以量化表,这两个相乘得到逆量化产生的系数。

因为规格化系数很多0,0乘任何数都是0,所以逆量化之后也有很多0,小的值就没有了。再对逆量化的系数实施逆向的 DCT 变换就得到了重构的8×8的图像。

image.png

对比压缩之前和还原之后的值相比对应的像素位置其实不完全相同,但是差别不大。

也就是说压缩之后还原产生的图像与原始图像很接近,但是通过一系列的编码大幅压缩了数据。大家做这个实验可以下载 matlab,可以将以上过程通过 matlab 进行重复,还可以输入不同的图像进行变换,加深对理论知识的理解。

课后思考一个问题,在计算机精度足够高的情况下,请问 JPEG 的每个步骤的计算中,哪些是有损的,哪些是无损的。

相关文章
|
弹性计算 Kubernetes Cloud Native
K8s 网关选型初判:Nginx 还是 Envoy?
本文将从性能和成本、可靠性、安全性 3 方面,对两大开源实现进行比对,希望对正在做 K8s 网关选型的企业有所借鉴。
K8s 网关选型初判:Nginx 还是 Envoy?
|
数据采集 数据可视化 关系型数据库
【python案例】基于Python 爬虫的房地产数据可视化分析设计与实现
本文设计并实现了一个基于Python爬虫的房地产数据可视化分析系统,通过BeautifulSoup框架采集房源信息,使用pandas进行数据处理,MySQL存储数据,并利用pyecharts进行数据可视化,以帮助用户更直观地了解房源信息并辅助选房购房。
1802 4
|
前端开发 JavaScript Java
【Layui】选项卡Tab:完美实现网页内容分类与导航
Layui选项卡是一种基于Layui框架的前端组件,用于创建多个选项卡并在其之间进行切换。Layui是一个轻量级、易用、灵活的前端UI框架,旨在简化前端开发过程。使用Layui选项卡,你可以在页面中创建多个选项卡标签,每个标签对应一个内容区域。用户可以点击选项卡标签来切换显示相应的内容区域。这种方式常用于页面的分组显示或切换不同的功能模块。Layui选项卡提供了丰富的配置选项,包括标签样式、选项卡切换的触发事件、内容区域的布局方式等。它还支持动态添加和删除选项卡,以及自定义选项卡的样式和功能。
|
XML 网络协议 机器人
ROS1 Noetic主从机通信使用详解
这篇文章详细介绍了在ROS1 Noetic环境下配置主从机通信的步骤,包括获取IP和主机名、设置`/etc/hosts`文件、配置ROS环境变量以及测试通信是否成功。同时,文章还提供了一些ROS环境变量的相关知识和参考资料链接。
984 0
|
供应链 监控 算法
ERP系统中的库存优化与成本控制解析
【7月更文挑战第25天】 ERP系统中的库存优化与成本控制解析
1336 2
|
Java 应用服务中间件 Apache
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
本文介绍了在IntelliJ IDEA中修改Web项目访问路径的步骤,包括修改项目、模块、Artifacts的配置,编辑Tomcat服务器设置,以及解决Apache Tomcat控制台中文乱码问题的方法。
1167 0
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
|
SQL 存储 数据管理
深入理解SQL中的触发器
【8月更文挑战第31天】
576 0
DFA与NFA的区别,由正规表达式构造DFA,以及DFA的相关化简
DFA与NFA的区别,由正规表达式构造DFA,以及DFA的相关化简
2064 1
DFA与NFA的区别,由正规表达式构造DFA,以及DFA的相关化简
|
NoSQL 安全 MongoDB
【MongoDB 专栏】MongoDB 的安全性考虑与实践
【5月更文挑战第11天】在数字化时代,MongoDB的数据安全至关重要。面临网络攻击、内部威胁、数据泄露和未授权访问等风险,我们需要重视MongoDB的安全性。关键措施包括身份验证和授权、数据加密、网络安全、备份和恢复、安全审计及正确配置。实践中应启用身份验证,配置访问控制,加密敏感数据,加强网络安全,并定期备份和审计。保持软件更新,结合业务需求制定安全策略,以确保数据的保密性、完整性和可用性。
577 0
【MongoDB 专栏】MongoDB 的安全性考虑与实践
|
Web App开发 存储 API
折腾Chrome插件,让内容脚本与文本交互~
折腾Chrome插件,让内容脚本与文本交互~
470 0