从 numpy 中的二维图像中提取特征向量
Extract feature vector from 2d image in numpy
我有一系列两种类型的二维图像,星形或五边形。我的目标是分别对所有这些图像进行分类。我有 30 张星星图片和 30 张五边形图片。每个图像的示例在此处并排显示:
在应用KNN分类算法之前,我需要从所有图像中提取一个特征向量。特征向量的大小必须相同,但二维图像的大小各不相同。我已经提取了图像中的读取内容,并返回了一个包含零和一的二维数组。
image = pl.imread('imagepath.png')
我的问题是如何处理 image
以生成有意义的特征向量,其中包含足够的信息以允许我进行分类。它必须是我将用于训练和测试的每个图像的单个向量。
如果你想使用opencv那么:
将图像调整为标准尺寸:
import cv2
import numpy as np
src = cv2.imread("/path.jpg")
target_size = (64,64)
dst = cv2.resize(src, target_size)
转换为一维向量:
dst = dst.reshape(target_size.shape[0] * target_size.shape[1])
在开始编码之前,您必须确定哪些功能对这项任务有用:
最简单的方法是尝试@Jordan 的回答中的方法并将整个图像转换为特征。这可能有效,因为 类 是简单的模式,如果您使用 KNN,这会很有趣。如果效果不佳,以下步骤将说明您应该如何解决该问题。
- 黑色像素的数量可能没有帮助,因为
星星和五边形可能会有所不同。
- 尖角的数量很有可能有用。
- 直线段的数量可能有用,但这可能
不可靠,因为形状是 hand-drawn.
假设您想尝试使用角点数作为特征,可以参考this page了解如何提取角点。
我有一系列两种类型的二维图像,星形或五边形。我的目标是分别对所有这些图像进行分类。我有 30 张星星图片和 30 张五边形图片。每个图像的示例在此处并排显示:
在应用KNN分类算法之前,我需要从所有图像中提取一个特征向量。特征向量的大小必须相同,但二维图像的大小各不相同。我已经提取了图像中的读取内容,并返回了一个包含零和一的二维数组。
image = pl.imread('imagepath.png')
我的问题是如何处理 image
以生成有意义的特征向量,其中包含足够的信息以允许我进行分类。它必须是我将用于训练和测试的每个图像的单个向量。
如果你想使用opencv那么:
将图像调整为标准尺寸:
import cv2
import numpy as np
src = cv2.imread("/path.jpg")
target_size = (64,64)
dst = cv2.resize(src, target_size)
转换为一维向量:
dst = dst.reshape(target_size.shape[0] * target_size.shape[1])
在开始编码之前,您必须确定哪些功能对这项任务有用:
最简单的方法是尝试@Jordan 的回答中的方法并将整个图像转换为特征。这可能有效,因为 类 是简单的模式,如果您使用 KNN,这会很有趣。如果效果不佳,以下步骤将说明您应该如何解决该问题。
- 黑色像素的数量可能没有帮助,因为 星星和五边形可能会有所不同。
- 尖角的数量很有可能有用。
- 直线段的数量可能有用,但这可能 不可靠,因为形状是 hand-drawn.
假设您想尝试使用角点数作为特征,可以参考this page了解如何提取角点。