文章目录
图像的数字视角
引言
在机器视觉和目标识别领域,需要处理的对象都是图像,但这些领域的模型都是针对数值进行训练的,那么图像和数值之间是什么关系呢?答案是数字图像天生就是数值形式的。
直观感受
左边是手写数字3的图片形式,右边是手写数字3的像素点形式。
也就是说图像是由像素点组成的二维数组,二维数组的维数由图像的长和宽决定。其中每个像素点也是一个数组,若考虑单通道,数组就一个值,若RGB三通道,数组有三个值。换个说法,每个图像可以看成是三维数组的数值,三维分别是长度,宽度,通道数。下面使用图像常用的函数,去剖析图像的内在。
内在剖析
图像的内在其实就是一个三维数组。
图像常用函数
load_img():将目录下图片加载到程序中内存
img_to_array():将图片转成数字格式显示
# 路径下加载图片(图像形式)
img1 = load_img('../../dataset/att_faces/s2/1.pgm',color_mode='grayscale')
# 将图像转换成数值形式(数值形式)
img2 = img_to_array(img1)
# 对比显示
img1
img2
左边是图像形式,右边是对应的数值形式,可以看到有三层大括号,所以是三维数组。
图像三维层次
# 图像尺寸 (长,宽)
img1.size
(92,112)
# 三维数组外层尺寸
len(img2)
112
# 三维数组内层尺寸
len(img2[0])
92
# 像素点尺寸
len(img2[0][0])
3
可以看到,图像以三通道方式 加载,像素点尺寸为3,图像数值形式的最外层数组大小为图像的宽112,内层数组大小为图像的长92
经验总结
1 图像本质就是一个由长、宽、通道值组成的三维数组。