jpeg - 为什么JPEG图像可以包含多个量化表?
问题描述
我从关于它的 wiki 页面检查并大致了解了 JPEG 编码算法。
- 转换为 YCbCr,下采样
- 分成 8x8 块
- 对块应用 DCT
- 将结果矩阵除以量化表条目
- 熵编码
我知道文件中的量化表取决于创建图像的内容,例如相机制造商可能有自己的专有 QT 算法,Photoshop 等有自己的 QT,有公共的等等。现在,如果打开“真实” JPEG 文件可能包含多个量化表。怎么会这样?我假设解码算法如下所示:
- 解码熵编码,接收块
- 将块乘以量化表条目
- 还原其他操作
第二个/第三个/... QT 做什么/什么时候使用?JPEG文件中QT的数量有上限吗?什么时候会在 JPEG 文件中添加第二个 QT?
解决方案
量化表用于不同的颜色分量。
就像您已经知道的那样,第一步将图像转换为 YCbCr 颜色空间。在这个色彩空间中,您拥有三种颜色:亮度 (Y)、色度蓝 (Cb) 和色度红 (Cr)。由于人眼对颜色不太敏感,但对亮度非常敏感,因此对不同的分量使用多个量化表。
用于亮度的量化表由“较低”值组成,因此除法和舍入不会丢失有关该组件的太多信息。另一方面,蓝色和红色具有“更高”的价值,因为不需要那么多信息。
推荐阅读
- listview - Xamarin Forms:HorizontalOptions 属性的对齐问题
- javascript - 如何在一个 Vue 组件中处理多个 Firebase 集合?
- r - purrr:将列名作为参数列表移交给 pmap()
- java - java.lang.NoClassDefFoundError: org/apache/commons/text/StringEscapeUtils
- node.js - 护照未显示在会话 socket.io 中
- angular - .NET Core 5 角 SSR
- python - Python 参数值
- java - 带有包含的 Querydsl web
- python - 从python中的静态初始化块调用类或静态方法
- android - Nodejs - 无法在环境中设置 Gradle?