【问题标题】:Starting point for image recognition?图像识别的起点?
【发布时间】:2016-03-28 19:12:32
【问题描述】:

我有一组 274 张彩色图像(每张都是 200x150 像素)。每个图像在视觉上都是不同的。我想构建一个应用程序,它接受一个基本图像集的放大/缩小版本并确定最接近的匹配。

我是一名高级软件工程师,但对图像识别完全陌生。我真的很感激任何关于从哪里开始的建议。

【问题讨论】:

  • 使用opencv。另见此处:stackoverflow.com/questions/4196453/…(可能重复)
  • 如果你想自己做,你可以把大的缩小到小的分辨率,然后对颜色差异的平方求和?
  • 您希望查询图像与参考图像有多相似?如果非常相似,这相当简单,提取所有图像的描述符并计算查询和参考之间的距离。如果它们不太相似(例如显着的旋转/平移/缩放/透视机会),这是一个更难的问题:查看特征描述符匹配(非商业产品的 SIFT/SURF,商业产品的 ORB)
  • @y300 查询图像应该与参考图像之一非常相似。您能否稍微扩展一下“提取描述符”步骤?我对图像识别完全陌生。谢谢!

标签: algorithm image-processing computer-vision image-recognition


【解决方案1】:

如果您要比较极其相似的图像,理论上计算两张图像之间的欧几里得距离就足够了。图像必须具有相同的大小才能这样做,因此通常需要重新缩放图像才能这样做(通常将较大的图像按比例缩小)。请注意aliasing 问题可能发生在这里,因此请注意您的downsampling algorithm。如果您的图片没有相同的宽高比,也会出现问题。

然而,这在实践中几乎从未做过,因为它非常慢。对于 N 个尺寸为 WxH 和 3 个颜色通道的图像,它需要 N x W x H x 3 比较,这很快就会变得不可行(考虑到许多用户可以拥有超过 1000 个尺寸 >1000x1000 的图像)。

通常,我们会尝试将图像缩减为一个更小的数组,以便更简单地捕获图像信息,称为visual descriptor。例如,获取 1024x1024x3 的图像并将其缩减为 128 长度的向量。这只需为参考图像计算一次,然后存储在适当的数据结构中。然后我们可以将查询图像的描述符与参考图像的描述符进行比较。

为长度为 L 的描述符计算我们的 N 个图像数据集的距离的成本是 N x L 而不是原来的 N x W x H x 3

所以问题是找到有效的描述符,这些描述符 (a) 计算成本低, (b) 准确地捕获图像。这仍然是一个活跃的研究领域,但我可以提出一些建议:

  • 直方图可能是执行此操作的最简单方法,尽管它们在任何照明变化时效果都非常差,并且仅包含颜色信息,没有空间信息。确保在进行任何比较之前对直方图进行标准化
  • 感知散列适用于非常相似的图像或略微裁剪的图像。见here
  • GIST 描述符功能强大,但更复杂,请参阅here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 2016-08-10
    • 2013-10-28
    • 2019-07-06
    • 2017-04-18
    • 1970-01-01
    相关资源
    最近更新 更多