返回

随笔杂谈 | 媒体因何无损

前言

还是这样的文章写起来最顺手,比写科普专栏有意思多了。

本文谈谈媒体的有损与无损的本质,并尝试从信息论的角度定义无损,以及记录一些了我的思考。

从媒体格式说起

其实文件的本质就是一坨数据,而媒体文件的数据主要分成两个部分:一部分是媒体的元数据,一部分是媒体本身的数据,除此之外就是一些结构编码和文件本身的元数据了。

众所周知,无论是什么数据,在计算机系统中都是01编码的,媒体元数据和媒体本身数据自然是如此,所以媒体怎样变成文件,基本完全取决于“信息的编码方式”,这就是所谓的媒体格式

通常,媒体格式会通过文件扩展名的形式显式告诉用户文件的类型,让用户明白不同格式的文件是有区别的,要区别对待,比如应该使用不同的软件打开。

题外话:实际上,文件拓展名不能完全代表媒体的格式,涉及媒体时其中通常还有编码器、色彩位数、采样率之类的多种细分。详细格式会存储在文件元数据区,严谨的软件是通过这一部分数据来判断文件格式的,这就是为什么改扩展名并不影响很多东西。例如你可以把 png 改成 jpg 后正常打开,因为看图软件会正常认出这是 png 格式然后正常读取;例如你可以把一个 txt 改成 exe 后强制用记事本打开,里面的文字仍然显示正常,因为记事本会认出这是 txt 文件,然后正常读取;例如很多系统或配置文件甚至没有扩展名,因为这类文件不面向用户,也就没有告诉用户文件格式的必要。

总之,媒体文件是有很多种规则去编码他的数据的,因此有不同格式。不同格式之间其实都是存储的同一个媒体,只是不同编码方式,所以只要把媒体读取解码出来再以另一种方式编码存储,就完成了所谓“转格式”。比如 ffmpeg 可以随意转换,从 mkv 到 mov,从 mp4 到 flv,从 jpg 到 bmp,只要是同一类媒体基本就可以互相转换,内部存储的信息没有改变。甚至你把一段文字从记事本复制到 word,何尝不是完成了一次格式转换?

那为什么格式有无损和有损之别呢?比如熟知的 mp4 和 jpg 是压缩格式,png 和 mov 是无损格式。其实区别在于,有损格式是特意为了高效存储“损失了信息的数据”而设计的格式,而无损格式是为高效存储“较少或无损的数据”而设计的格式

因为我们不常需要完全无损,选择性地丢弃一些信息可以在对影响不大的情况下让文件小很多。这里需要一个知识前提:颜色在计算机系统中通常以三个0-255的数字来表示,也就是 rgb 格式,原因与显示器的显示原理有关。

例如 png 格式如何存储图像,比较粗略的解释就是这样的:他首先存储了图像的调色盘,也就是找到了图像中的所有颜色,这样后面就可以用颜色在调色盘中的序号来代替 rgb,这样每个像素块从用三个数字表示变成一个数字表示。而此时我们说的压缩图像,通常就是合并相似颜色来缩小这个调色盘,这样编号范围就小了,就可以用更少的二进制位表示颜色。

比如一个 100*100 的图像,原始图像有 1000 种不同的颜色,但假如把相近的颜色合并之后只剩下 256 种颜色,那么原先需要用 10 个 bit 才能表示这个颜色编号,现在只要 8 个 bit,这样每个像素块省了 2 bit,在存图像的部分一共省了 2w bit=2.5 kb,同时存颜色盘的部分少了 744 种颜色,即少了 744*24 个 bit,我就不算了。

以上就是常见的图像压缩过程。这就是变成有损的过程中,我们损失了什么:一些你肉眼分辨不出区别,甚至显示器都显示不出区别的颜色。实际上,文件压缩包也是相似的原理。

这里就可以直接理解:为什么存在无损格式?因为我只要设计一个格式,找个比较优的方法老老实实去存所有数据就好了。为什么 png 也可以无损?因为我可以硬要让 png 存下所有颜色,不做压缩,相似颜色我全部留着不动。其他媒体文件也是同理。

真无损吗?

看到这里也许你会疑惑:为什么假定原始图像就是无损的?这个原始图像,真的够“原始”吗?他们本身就“无损”吗?

确实。前面的“无损”,我们只定义为与原始图像完全一致,但我们的需求并不只有传输和转移数据。单论“保存”这件事,如果我们要保存的信息本身就不完整,那什么格式都无济于事。

假如是电子数据,产生时本来就是以数据的形式,例如电子制图、编曲,亦或是 3D 渲染的内容、AIGC 内容。那么毫无疑问,我们追求这些数据的无损是合理的。事实上,你看到的这个 html 网页,你记事本写的 txt,何尝不是“无损”的?我在这里打的每一个字都完整、毫无更改、未被丢弃的保留下来,如果十年后再来看,错字仍然是错字。

假如是现实数据要保存成数据,那么将其采样编码时,信息损失往往是不可避免的。举个最简单的例子:照片的颜色、音频的频率,他们的实际数值可能小数点后有成千上万位,采样时可能只能保留小数点后三位,再往后可能既没有能力处理这么高精度也没有能力存下这么大数据。这时候便不存在真正的无损,只能用一个相对高的门槛来设定一个近似的无损。

这也是摄影偏爱 RAW 格式的原因之一:RAW 格式保存了最原始的传感器数据和详细的拍摄参数,尚未经过那些不够智能的自动处理和压缩,他保留了更多的信息,有更少的损失率,因而有更大的后期调整空间。

广义的无损

不过,我们还是可以严格定义广义上的无损。从信息论的角度来讲:

  1. 当一个信息可以被有限的参数完全确定时,就是就是理论上可无损的。这里的“有限”有双重含义,一是参数个数有限,二是参数本身是有限数字。

  2. 当这样的信息可以被完整采集时,就是实际上可无损的。

大量的信息因第一点而丢失,例如我们留不下来的小数精度。也有大量的信息因第二点而丢失,例如手机拍不到原子核的结构。但是并非所有乱七八糟的信息都是我们想要的信息。只要我们要保存的所有信息都是可无损的,那这次保存就是可无损的。

例如截图时,我们需要保存的信息就是当前显示的一切,而电子屏幕本身就是按 rgb 值来显示像素块颜色的,因此只要存下所有像素的 rgb 就是无损的,无论是什么编码格式;相对比,拍照时我们想要保存的信息应该是“摄像头这个视角能看到的一切”,摄像头当然做不到,因此无论什么编码格式都是有损的。

当然,如果你要说你拍照是为了存下“摄像头没坏”这个信息,那也可以说照片是无损的;同理如果你截屏是为了记录摔碎的屏幕,显然屏幕没有这个采集能力,这是一次全损的尝试。

有损无损的定义很灵活,这正体现了保存意义的多样。无论出何原因而存下那份数据,在有损的领域追求无损,也许都是为了保存更多的意义。

有关这些事情的思考本身也有意义,保存于此。

附录

参考文献

免责声明

本文并非专业科普,仅作分享,作者不负责由此产生的任何后果。欢迎交流,如有错误也欢迎指正。

版权信息

本文原载于 reincarnatey.net,遵循 CC BY-NC-SA 4.0 协议,复制请保留原文出处。

CC BY-NC-SA 4.0
本博客所有内容无特殊标注均为失迹原创内容,复制请保留原文出处。


© Licensed Under CC BY-NC-SA 4.0