是否可以将3D图像转换为一个矢量?

时间:2018-06-01 22:14:21

标签: python python-3.x machine-learning scikit-learn python-imaging-library

在此代码中(由answer提供):

from PIL import Image
import numpy as np


def load_image(infilename):
    img = Image.open(infilename)
    img.load()
    data = np.asarray(img, dtype="int32")
    return data


def save_image(npdata, outfilename):
    img = Image.fromarray(np.asarray(np.clip(npdata, 0, 255), dtype="uint8"), "L")
    img.save(outfilename)

data = load_image('cat.0.jpg')
print(data.shape)

print(data.shape)的值是三个昏暗(374, 500, 3)的元组。因此,我有这些问题:

  1. 这个元组代表什么?
  2. 要用于机器学习分类目的,将这样的元组数据转换为一维向量是否有意义?如果是这样,怎么样?
  3. 非常感谢。

2 个答案:

答案 0 :(得分:1)

尺寸为:( row,col,channel) 是的,将1D阵列馈入神经网络通常是有意义的,例如,如果您使用完全连接的网络。 要重塑,您有多种选择:

  1. 使用重塑功能

    data.reshape(-1)

  2. 使用展平功能

    data.flatten()

答案 1 :(得分:0)

  1. 374行500列RGB(3)值(或像素),或这些维度的一些排列。

  2. 也许。虽然记住,任何这种1D编码都会丢弃不同像素之间的二维距离信息。如果您正在使用神经网络,请查看卷积神经网络,了解它们如何处理此问题。