【Python】图像数据的存储

图像数据在计算机中是以 像素矩阵 的形式存储的。为了输入到机器学习模型中,图像数据需要被 扁平化 为一维特征向量。

图像的数据表示

(1) 图像的像素矩阵

图像是由像素(Pixel)组成的,每个像素代表图像中的一个点。对于灰度图像,每个像素的值通常是一个 0 到 255 的整数,表示该点的亮度(0 表示黑色,255 表示白色)。

例如,一个 8x8 的灰度图像可以表示为一个 8 行 8 列的矩阵,每个元素是一个像素值:

[
  [  0,  10,  20,  30,  40,  50,  60,  70],
  [ 80,  90, 100, 110, 120, 130, 140, 150],
  [160, 170, 180, 190, 200, 210, 220, 230],
  [240, 250, 255, 245, 235, 225, 215, 205],
  [195, 185, 175, 165, 155, 145, 135, 125],
  [115, 105,  95,  85,  75,  65,  55,  45],
  [ 35,  25,  15,   5,   0,  10,  20,  30],
  [ 40,  50,  60,  70,  80,  90, 100, 110]
]

(2) 图像的扁平化

为了将图像数据输入到机器学习模型中,通常需要将 二维的像素矩阵 转换为 一维的特征向量。这个过程称为 扁平化(Flattening)

例如,上面的 8x8 图像扁平化后,会变成一个长度为 64 的一维向量:

[  0,  10,  20,  30,  40,  50,  60,  70,  80,  90, 100, 110, 120, 130, 140, 150,
 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 255, 245, 235, 225, 215, 205,
 195, 185, 175, 165, 155, 145, 135, 125, 115, 105,  95,  85,  75,  65,  55,  45,
  35,  25,  15,   5,   0,  10,  20,  30,  40,  50,  60,  70,  80,  90, 100, 110]

这样,每个图像就变成了一个特征向量,可以像表格数据一样输入到机器学习模型中。

手写数字数据集中的图像表示

(1) 手写数字数据集的结构

在手写数字数据集中,每个图像是一个 8x8 的灰度图像,共有 1797 个样本。数据集的结构如下:

  • digits.images:形状为 (1797, 8, 8),表示 1797 个 8x8 的图像。

  • digits.data:形状为 (1797, 64),表示 1797 个样本,每个样本是 64 维的特征向量(8x8 图像扁平化后的结果)。

  • digits.target:形状为 (1797,),表示每个样本的真实标签(0 到 9)。

(2) 图像数据的扁平化

手写数字数据集已经将图像扁平化为特征向量,存储在 digits.data 中。例如:
第一个图像的像素矩阵:

第一个图像扁平化后的特征向量:
在这里插入图片描述

图像数据的可视化

(1) 显示原始图像

我们可以使用 matplotlib 显示原始图像:
输入:

import matplotlib.pyplot as plt

plt.imshow(digits.images[0], cmap='gray')
plt.title(f"Label: {digits.target[0]}")
plt.axis('off')
plt.show()
  • digits.images[0] 是第一个图像的像素矩阵。

  • cmap=‘gray’ 表示使用灰度图。

  • plt.axis(‘off’) 关闭坐标轴显示。
    在这里插入图片描述

(2) 显示扁平化后的特征向量

扁平化后的特征向量可以通过 digits.data[0] 查看,但它是一个一维向量,无法直接显示为图像。如果需要重新显示为图像,可以将其重新调整为 8x8 的矩阵:

# 将扁平化后的特征向量重新调整为 8x8 矩阵
image = digits.data[0].reshape(8, 8)

# 显示图像
plt.imshow(image, cmap='gray')
plt.title(f"Label: {digits.target[0]}")
plt.axis('off')
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

釉色清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值