首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python对信号图像进行分类

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

Stack Overflow用户
提问于 2014-04-14 14:30:28
回答 1查看 281关注 0票数 0

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

EN

回答 1

Stack Overflow用户

发布于 2014-05-01 00:46:18

您可能会想要使用sklearn。假设您希望基于图像而不是生成图像的数据对这些模式进行分类,则可以使用简单的k最近邻(KNN)分类器。

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

代码语言:javascript
运行
复制
train_set = [(img1, 'low freq'), (img2, 'hi freq'), (img3, 'low freq'), (img4, 'med freq'), (img5, 'med freq')]

img_classifier = algorithm(train_set)

然后,在新数据上调用经过训练的算法来识别未标记的图像。

代码语言:javascript
运行
复制
test = [img6, img7]

for i in test:
    img_classifier(test)

不过,您需要使用的不只是五个训练图像。您选择的k的值也很重要。假设您为每个类训练了相同数量的图像(假设是n),对于训练的3n图像总数,一个好的kk=n/2。太高,你可能会有错误分类的风险,因为你考虑了太多的训练数据,太低,你可能会考虑太少。

如果你决定使用tutorial here,有一个很棒的sklearn你一定要看看。

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

  • 计算图像中蓝色的面积(light+dark) --不同的频率可能被不同的区域覆盖。
  • 检查浅蓝色和深蓝色的比例,它可能是从图像中心(x轴)开始的深蓝色的最大y位移。这将很容易将高频图像从中低频图像中分离出来,然后您可以使用第一种方法中的面积计算来区分低频和中频,因为它们清楚地覆盖了不同的区域。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23053365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档