【问题标题】:Is it possible to convert 3D image to one vector?是否可以将 3D 图像转换为一个矢量?
【发布时间】:2018-11-12 01:51:11
【问题描述】:

在此代码中(感谢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. 为了用于机器学习分类目的,将这样的元组数据转换成一维向量有意义吗?如果有,怎么做?

非常感谢。

【问题讨论】:

  • 您看过网上众多图像分类示例中的任何一个吗?
  • @NilsWerner 如果你的意思是convolutional neural network,是的,我有。我只是想知道这种对一个向量的转换是否合乎逻辑并且不会破坏图像的含义

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


【解决方案1】:

维度是:(row,col,channel) 是的,将一维数组输入神经网络通常是有意义的,例如,如果您使用完全连接的网络。 要重塑你有多种选择:

  1. 使用整形功能

    data.reshape(-1)

  2. 使用展平功能

    data.flatten()

【讨论】:

  • 啊哈。非常感谢。我猜data.reshape(-1)后面不需要data.flatten(),不是吗?
  • Nonono 这是两个产生相同结果的选项
【解决方案2】:
  1. 374 行 500 列的 RGB (3) 值(或像素),或这些维度的某种排列。

  2. 也许吧。但请记住,任何一维编码都会丢弃不同像素之间的二维距离信息。如果您正在使用神经网络,请研究卷积神经网络以了解它们如何处理此问题。

【讨论】:

  • 感谢您的澄清。我想使用 NN 的全连接网络而不是卷积神经网络。这就是我在这里询问暗淡转换的方式
猜你喜欢
  • 2013-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-03
  • 2018-02-15
  • 2011-10-30
  • 1970-01-01
  • 2017-07-25
相关资源
最近更新 更多