![v2-23d2cc09bc2fe904b33f434c4d6e1309_1440w.jpg?source=172ae18b](http://img-01.proxy.5ce.com/view/image?&type=2&guid=d677eb6b-362e-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-23d2cc09bc2fe904b33f434c4d6e1309_1440w.jpg?source=172ae18b)
前言
目前已经开始了第一周的学习。首先感谢进群的朋友,谢谢你们的支持!
说实在,边工作边开展有目的的学习是有点挑战的,毕竟工作时间已经占据了大部分的时间。
第一周的内容回顾
第一周的内容并不多,本来打算只介绍PNM系列图像的,不过还是跑题多介绍了新的内容。
- PNM系列图像格式理解
- BMP图像格式理解
- 基础的压缩编码算法RLE和LZ77
PNM系列图像格式资料
首先是官方一手资料,netpbm的官网。
官网里给出了四个主要的图像格式规范
- pbm格式
- pgm格式
- ppm格式
- pam格式
当然,也要补充我自己编写的一个介绍文章
渔哥:刻意练习FFmpeg系列:从最简单PNM系列格式之PBM格式,并手写解析器zhuanlan.zhihu.com![v2-23d2cc09bc2fe904b33f434c4d6e1309_180x120.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=d677eb6b-362e-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-23d2cc09bc2fe904b33f434c4d6e1309_180x120.jpg)
另外,推荐另外一篇博文,也写得不错。
- 图像格式PPM/PGM/PBM剖析及代码实现 -- 视频和图像编程基础之一
维基百科
- Netpbm
- PBM图像格式
FFmpeg 的实现
- ffmpeg/libavformat/img2dec.c
- ffmpeg/libavcodec/pnm_parser.c
- ffmpeg/libavcodec/pnmenc.c
- ffmpeg/libavcodec/pnmdec.c
- ffmpeg/libavcodec/pnm.c
另外的版本实现 Go版本的实现 C语言版本
BMP图像格式资料
BMP是Windows的图像处理很重要的格式,所以规范主要看微软的稳定。
- 官方规范PDF
还有Word版本的规范,可以到下面的官方页面下载。
- Word版本的规范
两篇不错的博文
- BMP文件格式详解
- BMP格式详解
英文资料
- THE BMP FILE FORMAT
- 维基百科 BMP文件格式
基础的压缩编码算法RLE和LZ77
RLE算法「Run Length Encoding」
BMP里还用到了非常基础的压缩编码算法RLE「Run Length Encoding」,其实就是将重复的符号变为计数表示,例如下图,第一行5重复出现了15次,表示为[15, 5]
,不用表示为[5,5,5,5,5, 5,5,5,5,5, 5,5,5,5,5]
,可以节省空间。
![v2-cef0117f9bb12ca66a322906ddc5d629_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=d677eb6b-362e-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-cef0117f9bb12ca66a322906ddc5d629_b.jpg)
LZ77算法
LZ算法家族是非常庞大的算法家族。初始的想法也很简单。就是用分两个区域,用前面区域的子串的偏移量和长度来表示后面区域的相同子串。
![v2-462d015b5e1f884d206ba6c850ae5b06_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=d677eb6b-362e-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-462d015b5e1f884d206ba6c850ae5b06_b.jpg)
![v2-2172c727dcb999ce96828d28d6d94d99_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=d677eb6b-362e-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-2172c727dcb999ce96828d28d6d94d99_b.jpg)
然后我找到了一个非常好的书籍,也推荐给大家。
推荐微信阅读的图书
数据压缩入门-柯尔特·麦克安利斯 亚历克斯·海奇-微信读书weread.qq.com![v2-47fc6d84b7342a68fe12546414b3621a_120x160.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=d677eb6b-362e-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-47fc6d84b7342a68fe12546414b3621a_120x160.jpg)
几篇博文
- 压缩算法之字典编码(上)
- LZ77压缩算法解析
- How data compression works: exploring LZ77
下周的计划
按照之前的规划,下周主要是GIF格式了,这个格式内容更丰富一些,是很好的入门音视频领域且非常流行的格式,我们会认真阅读规范,动手写格式解析器。
下面就是GIF规范了,可以提前阅读。
https://www.w3.org/Graphics/GIF/spec-gif89a.txtwww.w3.org