使用Python对信号图像进行分类

时间:2014-04-14 06:30:28

标签: python image image-processing

我有以下信号图像,我想根据形状进行分类。哪种算法适合这样做?我附上了每班2-2张图片。 enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

您可能想要使用sklearn。假设您要基于 images 而不是从中生成图像的 data 对这些模式进行分类,您可以使用简单的k-nearest-neighbor(KNN)分类器。

KNN classification是一种可以对许多不同类型的数据进行分类的方法。首先,使用标记数据训练算法(在您的情况下,图像看起来是在不同频率的类中)。然后,该算法分析未标记的数据,您要分类的数据。 “最近邻居”部分表示算法看到的每个新数据都是根据您训练算法的k最近的数据进行分类的。这个想法是某个类别的新数据在数字上与另一个类别相似。以下是该算法工作原理的高级工作流程:

train_set = [(img1, 'low freq'), (img2, 'hi freq'), (img3, 'low freq'), (img4, 'med freq'), (img5, 'med freq')]

img_classifier = algorithm(train_set)

然后,您将训练有素的算法调用新数据以识别未标记的图像。

test = [img6, img7]

for i in test:
    img_classifier(test)

但是,你想要使用超过五张训练图像。您选择的k的值也很重要。假设你为每个班级训练相同数量的图像(比方说n),对于共有3n个训练过的图像,使用的kk=n/2为{{1}} }。因为考虑到太多的培训数据太低而且您可能考虑的太少,您的错误分类风险太大而且存在错误分类的风险。

如果您决定使用sklearn,那么您应该查看一个优秀的tutorial here

您的图片似乎是非常离散的类。如果您不想使用sklearn,则可能能够根据曲线所覆盖的图像区域对图像进行分类。如果这些是这三个类中的唯一类,您可以尝试其中一些来查看它们是否为您提供了良好的图像分类阈值:

  • 计算图像中蓝色(亮+暗)的面积 - 不同的频率可能被不同的区域覆盖。
  • 检查浅蓝色与深蓝色的比例,可能会有所不同。
  • 计算从图像中心(x轴)开始的深蓝色的最大y位移。这样可以轻松地将高频与中低频图像分开,然后您可以使用第一种方法中的面积计算来区分低频和中频,因为它们明确覆盖不同的区域。 / LI>

如果您决定使用第二种方法,请务必查看Python Imaging Library。如果我没弄错的话,它实际上是用于sklearn。