声明:以下都只是我在学习过程中的一些记录、思考与猜测,肯定会有很多不对的地方,欢迎大家批评指正!
一、图像处理基础知识篇
由于最早接触图像处理是在matlab上做毕业设计,所以入门书籍是《MATLAB图像处理实例详解》与冈萨雷斯的《数字图像处理(第二版)》。这两本书的pdf放在如下百度网盘链接里,需要可以自取:
链接:https://pan.baidu.com/s/1mQIgv9_62ABONo4zrdyVRA 密码:jd52
首先在第一篇里汇总一下数字图像处理中的一些基础知识,可能会分多p,希望自己能坚持下去。
编译环境:
本系列(如果能坚持下去)将都是由matlab来实现所有代码,原因是我个人觉得matlab更加具有数学可视化的特质,更容易阐述数学原理,当然也会用python-opencv来重复代码。前面一部分对实战无帮助,仅在此阐述概要。
1. 图像的表示方法
目前图像的传统表示方法分为五种,分别为二进制图像,索引图像,灰度图像,RGB图像,多帧图像。这些图像的表示方法网上很多详细解读,不在此赘述。
2. 图像文件格式
matlab中(很多其他语言也一样)有成熟的调用图片的子函数,这里只简要的提一下不同图像文件格式的区别:
BMP图像文件由四部分组成:1、BMP文件头数据(文件大小、图像类型、显示内容、从头到图像数据的偏移字符数、保留字);2、BMP信息头数据(图像宽度、高度、颜色位数、压缩方法、字节数、目标设备的分辨率、定义颜色、信息头数据长度等);3、colormap(RGB、灰度图不需要);4、位图数据。
BMP文件不采用任何压缩,占用空间大,不受web支持。
GIF图像文件由5部分组成:1、文件标识块:识别标识符和版本号;2、逻辑屏幕描述块(尺寸、显示区域大小、颜色深浅、是否有索引表、背景颜色信息);3、索引表;4、图像数据块;5、尾块(表示数据流的结束)。
GIF最多支持256种色彩,故通常用索引图,解码较快,文件较小。
JPEG格式较复杂,分为8块:1、SOI标记(数值0xD8,表示图像开始);2、APP0(数值0xE0,JFIF应用数据块,包含本块长度、标识符、版本号、XY的dpi值、XY像素数、缩略图位图等);3、APPn(