【发布时间】:2018-05-04 15:14:51
【问题描述】:
我们知道 jpeg 、 PNG 、 gif 都是压缩文件格式,我的问题是我们为这些压缩算法提供的原始输入源是什么,以及图像数据在转换为其中一种之前以何种形式存储文件格式。
【问题讨论】:
标签: compression image-compression information-theory
我们知道 jpeg 、 PNG 、 gif 都是压缩文件格式,我的问题是我们为这些压缩算法提供的原始输入源是什么,以及图像数据在转换为其中一种之前以何种形式存储文件格式。
【问题讨论】:
标签: compression image-compression information-theory
这取决于。
PNG 通常是无损的,但它对比特/像素的数量有限制。 GIF 也被证明是无损的,但获得大量颜色更复杂。这些格式仍被压缩,但使用不会丢失数据的压缩。
JPEG 是有损的。如果您保存为 JPEG,您将无法恢复到另一种格式而不会失去一些清晰度。通过将数据表示为方程,它可能会变得非常小,但随着近似值变得更糟,它可能会开始看起来“模糊”。
还有其他图像格式,例如 TIFF、RAW 和 BMP,它们通常不进行任何压缩,虽然它们实际上更像容器并且在技术上可以包含压缩数据,但它们通常不会。
原始的、未压缩的数据取决于生成它的内容。 Photoshop 文件将另存为 PSD,但内部可能会在内存中以不同方式表示它。每个数码相机可能有不同的内部存储器布局方式,并且照片传感器倾向于将传感器从传感器一对一映射到一组比特数的内存位置。
然而,常见的模式是图像的每个像素都存储为 3 个(有时是 4 个)颜色值,每个颜色值在 8 到 16 位之间。这 3 个值可以表示红色、绿色和蓝色,或者表示色调、饱和度和值。对于设计,它可以是 CMYK(青色、品红色、黄色和黑色)。也可能有一个阿尔法值。每个颜色通道使用超过 16 位是不寻常的,最常见的是使用 8 位。大多数人认为使用 12 位是全彩色的,但在 32 位甚至 64 位机器上并不能很好地对齐。尽管如此,数字视频信号有时还是会使用 12 位,因为在串行广播时,颜色值不需要适合文字。
不同的格式会有不同的顺序。通常是行在前,但有些格式从底行开始,有些从顶部开始。
所以,真正的答案是它取决于特定的压缩机正在寻找什么。大多数保存为 JPEG 或 PNG 的软件将接受多种格式,最常见的可能是 32 位/像素,每个 8 字节用于 RGB(红色、绿色、蓝色)和一个未使用或 alpha。它将需要图像的宽度和高度,因此图像数据应为宽度*高度*4(以字节为单位)。您通常会传入一个已定义的常量,告诉它字节顺序:RBGA、ARGB、BGR、RGB 等。
【讨论】: