计算机 压缩

游程编码 (Run-Length Encoding) : 消除冗余

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为了让计算机分辨哪些字节是"长度"哪些字节是"颜色" 格式要一致, 所有的颜色数据前面都需要添加 颜色点的个数,
有时候, 文件反而会变大.

在这里插入图片描述

字典编码: 更紧凑的表示方法

使用一个字典 存储 “代码” 和 " 数据" 之间的对应关系.
可以把两个像素定成一个小块
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接下来 需要将这个树变成字典
使用 0 和 1 标注每个分支.
在这里插入图片描述
树的路径是唯一的, 所以他们不会冲突
在这里插入图片描述
开始压缩

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

消除冗余 和 更紧凑的压缩 通常会结合使用, 它们都是无损压缩

有损压缩

丢掉一些 人们区分不出来的细节数据
例如, 我们无法听到超声波, 所有录音时 可以 扔掉 超声波;
对人声使用高精度编码, 因为我们对人声比较敏感;
对低音, 使用另外一种精度的编码方式, 人们对低音并不是很敏感, 只是感到震动.
这个也是电话里面和现实声音不一样的原因
如果网速变慢了, 网络会删除更多的数据! 进一步降低通话质量.
这种删除人们无法感知的数据的方法, 叫做 感知编码

图片压缩

这个是各种 有所压缩图像格式 的基础, 最著名的 JPEG
利用人们看不出颜色的细微变化这一点, 把图像分解成 8x8像素块
然后删除大量高频率空间数据
在这里插入图片描述
在这里插入图片描述
小细节太多了,但是人们看不出这些细节, 因此可以删除很多
在这里插入图片描述
在这里插入图片描述
我们依然可以认出来, 只是粗糙了一些.
图片压缩 同样也适用于视频
但是视频可以适用一下小技巧, 因为帧与帧之间很多像素都一样, 这个叫 时间冗余
视频里不用每一帧都存这些像素, 可以只存变了的部分.

更高级的视频压缩格式会更进一步:
找出帧和帧之间的相似的补丁, 然后用简单效果实现,比如移动和旋转, 变亮 和 变暗
举例:
在视频中摆手, 视频压缩器会识别到相似性, 然后用一个或多个补丁代表手, 然后帧之间直接移动这些补丁.
当压缩太严重时, 会出错, 没有足够的空间更新补丁内的像素
补丁错误会导致视频出现很多奇怪的画面:
在这里插入图片描述

发布了48 篇原创文章 · 获赞 0 · 访问量 539

猜你喜欢

转载自blog.csdn.net/weixin_44286839/article/details/104907191