博主呓语:

图像为什么非压缩不可?

Posted by 破冰 on 2014-4-23 10:23 Wednesday

  图像和视频的压缩技术应用广泛,每天刷微博的图片,盗版回来的小电影,无一不用压缩技术。

  压缩的必要性

图像为什么非压缩不可?

  某天陈老师要录动作大片,经过长期艰苦奋斗,他制成了这样一段视频:画面大小 1000×1000pixel,24 位真彩色,每秒 30 帧,时长 2 小时。

  如果不进行任何压缩,存储这段视频需要 1000*1000*24*30*60*120=5.184 ×1012 bit ≈ 648GB 的空间。(2014 年 4 月 5 日,500GB 硬盘最低价格是 299 元~)

  用 4M 宽带下载这部大片,最少需要 360 小时 = 15 天。

  可见,要保障人民群众的切身利益,压缩技术非常有必要。

  压缩的可能性

图像为什么非压缩不可?

  就单幅图像而言,压缩的可能性是显而易见的。

  如上面三幅小图,图a每个形状里面都填充着相同的颜色,图b每一行的颜色是相同的,更过分的图c整幅图只填充了一种颜色。

  压缩前:第 1 个点灰色,第 2 个点灰色,第 3 个点灰色,第 4 个点灰色,第 5 个点灰色,第 6 个点灰色......第 89 个点灰色,第 90 个点黑色......

  最简单的压缩后:第 1 到 89 个点灰色,第 90 个点黑色。

  常见的压缩标准

图像为什么非压缩不可?

  JPEG 是广泛使用的照片存储格式,它适应人的视觉,用更多的数据来存储人眼敏感的图像低频部分,用很少的数据存储人眼不关心的高频部分。维基百科有很详尽的讲解http://zh.wikipedia.org/wiki/JPEG

  JPEG 2000 是基于小波变换的图像压缩标准,可以获得比 JPEG 更大的压缩比,通常它被认为是未来取代 JPEG 的标准。

  图像压缩的基本套路

图像为什么非压缩不可?

  图像压缩基本按照以下流程进行:

  原图像 -> 映射 -> 量化 -> 符号编码 -> 存储/传输 -> 符号解码 -> 反映射 -> 图像

  映射(Mapper):对原图像进行变换,使之更容易被压缩。(比如傅里叶变换)

  量化(Quantizer):量化是压缩的主要图像,主要也是它引入误差的。比如有一个以 2 为单位的量化器,看到原图像值是 17,将它除 2 向下取整,量化得到8;图像还原的时候,用8×2=16 得到还原值,与真实值相差了1。

  符号编码(Symbol encoder):图像已经变换量化完了,该为存储和传输作准备了。符号编码可以进一步地压缩文件大小:

  将重复出现次数多的数据,用简短的符号进行编码;出现次数少的数据,用较长的符号进行编码;后面的哈夫曼(Huffman)编码会详细讲到~

  JPEG 的压缩套路

http://img1.mydrivers.com/img/20140422/s_feffda79e5df40ae8cc1ed968ae6097d.png

  鉴于图像压缩的每个步骤都能有不同的方法,所以有必要制定统一的标准,使得图像在每台电脑每部手机中都能正常使用。

  JPEG 是其中一个标准,它的压缩套路如下:

  原图像 -> 分解成一个个小图像 -> 变换 -> 量化 -> 符号编码 -> 压缩后的图像

  分解图像:JPEG 会将一幅大图像分解成8×8 的小图像。至于为什么是8×8 呢,嗯,欢迎各位同学剧透;

  变换:JPEG 使用 DCT 变换(离散余弦变换),类似傅里叶变换,不过它是取实部。(不由感慨,学好“信号与系统”也是很有必要的...)

  量化:JPEG 通过各种除法来进行量化,不过对于不同重要程度的信息,它所除的数的大小会有所不同;

  符号编码:JPEG 使用常见的哈夫曼(Huffman)编码。

  图像还原,就是反过来进行这些步骤。

  JPEG 的实现方法比较简单,小朋友们在家也能模仿。也因为简单高效,所以 JPEG 的应用范围相当广泛。

发表评论: