数字图像基本概念
位图:通过记录每一个像素的颜色值,来存储和表达图像。
-
灰度图像(Gray Image)
每个像素使用1字节表示,位深度为8,可以表示256种级别的灰度。
0表示黑色,255表示白色。 -
彩色图像(RGB)
每个像素都有红(R)、绿(g)、蓝(B)三个分量
1一个像素点使用3个字节,位深度为24位。
可以表示256256256=16777216种颜色。
24位真色彩
-
RGBA图像
RGB图像+8位透明度信息Alpha(Alpha=255完全不透明,Alpha=0完全透明)
32位真彩色:1个像素点使用4个字节,位深度为32位。 -
256色彩色图像
每个像素用8位二进制表示,是调色板中的索引值
对于不同的图像,所对应的256种
-
图像格式
BMP格式:占用存储空间大,不支持文件压缩,不适用于网页。 -
图像压缩
适当降低图像质量来减小它所占用的空间。
不同的图像压缩算法,对应不同的图像格式。 -
JPEG格式
有损压缩
压缩率高,所占空间小
适合色彩丰富、细节清晰细腻的大图像
不适合所含颜色较少,具有大块颜色相近的区域,或亮度差异十分明显的简单图片
每次编辑都会降低图像质量,不适合需要进行多次编辑的情况。 -
PNG格式(Portable Network Graphics,PNG)
无损压缩
适合于有规律渐变色彩的图像 -
GIF格式(Graphics Interchange Format)
支持静态格式和动态格式
动态图片由多幅图片保存为一个图片,循环显示,形成动画效果
只支持256色,适用于色彩简单、颜色较少的小图像。 -
TIFF格式(Tag Image File Format)
- 定义了4类不同类型的格式
二值图像(TIFF-B)
黑白灰度图像(TIFF-G)
带调色板的彩色图像(TIFF-P)
RGB真彩图像(TIFF-R)
支持RGB、JPEG等多种编码方法
具有非常好的扩展性、方便些、可改性、是印刷行业中最常用的格式
Web浏览器不支持TIFF格式
- 色彩模式
二值图像、灰度图像、RGB图像、RGBA图像
CMYK——印刷四分色。C:Cyan=青色;M:Magenta=洋红色;Y:Yellow=黄色;K:blank=黑色
YCbCr——Y:亮度;Cb:蓝色色度;Cr:红色色度;
HSI——H:色调;S:饱和度;I:亮度
图像类型
- 序列图像:时间上有一定顺序和间隔、内容上相关的一组图像。
其中的每幅图像,称为帧图像
帧图像之间的时间间隔是固定的。
视频就是一种特殊的序列图像。 - 深度图像(Depth Map):
是一种三维场景信息的表达方式
每个像素点的取值,代表这个点离摄像机的距离
采用灰度图表示,每个像素点由一个字节表示。
深度图像中,像素点的取值并不代表实际的距离,颜色的深浅只是代表相对距离的远近。
Python图像处理库
pillow图像处理库
-
打开图像Image.open()
使用pillow的image.open(‘路径’)来打开图像文件 -
保存图片save
图片对象.save(‘文件路径’)
改变文件名后缀就可以改变图片格式。
图像对象的主要属性
显示图像
转换图像的色彩模式
图像对象还可以用np.array(图像对象)转换为三维数组。
(512,512,3)前两维是像素维度,第三维是RGB通道。
对图像的缩放、旋转和镜像
- 图像缩放
返回缩放后的新对象。
直接对原图片进行缩放,返回值是None
- 旋转
裁剪图像
裁剪图像:在图像上指定的位置裁剪出一个矩形区域
返回裁剪的图片对象
需要下载数据集mnist.npz
import numpy as np
import matplotlib.pyplot as plt
mnist = np.load('mnist.npz')
train_x = mnist['x_train']
train_y = mnist['y_train']
for i in range(4):
num = np.random.randint(1,50000)
plt.subplot(2,2,i+1)
plt.axis('off') # 不显示坐标轴
plt.imshow(train_x[num],cmap='gray')
plt.title(train_y[num])
plt.show()
显示结果