0

我有一组“goob”和“bad”图像,以灰度数组的形式呈现。我想从这些图像中提取“好”和“坏”特征并填充字典。这是我处理此任务的高级算法:

  1. 加载图像并呈现它们 NP 矩阵img_mtx [ img_mtx.shape = (10, 255, 255)]
  2. 使用image.PatchExtractoroverimg_mtx获取每张图像的 1000 个补丁,总共 10000 个 7x7 像素patches [patches.shape = (10000, 49)]
  3. 下一步,我假设我的patches矩阵有点像一袋单词,我想为每个图像创建一个稀疏的补丁矩阵,并为每个图像设置“好”或“坏”类。
  4. 现在我应该有非常经典的分类任务,比如垃圾邮件检测,只是在训练集中添加更多图像我应该有一个很好的结果。

但是我这里有一些问题:

  • 如何实施第 3 步?我看过文本分类的例子,但不是图像分类的例子
  • 当我需要对新图像进行分类时,我再次将其拆分为补丁,但现在我需要将这些补丁从新图像映射到我的“补丁字典”中。如何以最好的方式做到这一点,记住我可能永远不会收到 100% 匹配的字典?我看起来需要计算与字典特征的最近距离,但这听起来很昂贵。

...或者我对这项任务采取了完全错误的方法?

4

1 回答 1

1

您应该首先考虑对您的任务有哪些好的功能。此外,您应该考虑您的图像是否始终具有相同的形状并对齐。如果您认为描述补丁是个好主意,您可能需要研究标准图像特征,如 SIFT 或 SURF 或 BRIEF - 可能研究 scikit-image、opencv 或 mahotas - 尽管只有原始补丁是可能的第一步. 如果您想使用补丁描述符并想要丢弃空间排列(这将是词袋方法),您需要对描述符进行聚类,然后在“单词”上构建直方图。然后您可以在直方图上进行训练并获得整个图像的单个预测。有大量关于这方面的文献,但不知道什么是一个好的起点。也许看看 Szeliski 关于计算机视觉的书。

于 2013-06-17T16:33:05.427 回答