如何检测这张照片中的相似物体?

时间:2018-06-27 16:44:16

标签: algorithm image-processing fft object-detection dct

我想在图像中找到图案。说“寻找模式”,我的意思是“检测相似的物体”,因此这些模式不应该是一些高频信息,例如噪声。 例如,在此图像上,我想获得带有每个对象的ROI /椭圆的图案“窗口”: enter image description here

我已阅读有关针对此问题使用自相关,FFT,DCT的建议。据我了解,自相关和FFT是可替代的,而不是互补的。

首先,我不知道是否有可能在频域中获得这种高级信息?

由于已实现FFT,因此我尝试使用它。这是频谱图: enter image description here

  1. 您能否建议如何进一步分析此频谱图以检测物体“窗口”及其空间位置?
  2. 是否需要在频谱图上找到最亮的点/线?
  3. 是否应该对图像块而不是整个图像进行FFT?
  4. 如果使用这种方法无法找到此类对象,您会提出什么建议?

先谢谢了。 附言抱歉,图片太大。

1 个答案:

答案 0 :(得分:2)

当心这不是我的杯茶,因此请以极端的偏见阅读。 IIRC 通常用于 SIFT / SURF + RANSAC 方法。

  1. 确定图像SIFT / SURF的关键兴趣点

    这将为您提供图像中具有特定功能的2D位置列表(您可以将其作为整数哈希码处理)。我认为SIFT (Scale Invariant Feature transform)是理想的选择。它们的工作方式类似于我们的人类视觉工作(识别某些功能的特定变化并“忽略”图像的其余部分)。因此,我们没有匹配图像的所有像素,而是仅匹配其中的几个像素。

  2. 按出现次数排序

    每个找到的 SIFT 点都有一些功能列表。如果我们对此特征进行直方图(计算有多少个相似或相同的特征点),则可以将出现相同的点分组。这个想法是,如果我们在图像中放置了n个对象放置,则其每个关键点应在最终图像中重复n倍。

    因此,如果我们有很多点发生了n次,则暗示我们在图像中有n个相似的物体。从中,我们仅选择这些关键点用于下一步。

  3. 查找对象放置位置

    每个对象可以具有不同的比例,位置和方向。假设它们具有相同的纵横比。因此,每个对象中对应的关键点在对象之间应具有相同的相对属性(例如关键点之间的相对角度,归一化距离等)。

    所以任务是将关键点重新组合到每个对象中,以便所有对象都具有相同的关键点和相同的相对属性。

    这可以通过蛮力(测试所有组合并检查属性)或通过 RANSAC 或任何其他方法来完成。

    通常,我们选择一个第一个关键点(无论是哪个点),然后找到另外两个具有相同角度和相对距离比的(在所有对象中)

    img

    因此角度相同,|p1-p0| / |p2-p0|也相同或接近。分组时意识到对象内的关键点更可能彼此靠近...因此,我们可以根据与第一个选定关键点的距离来扩大搜索范围 ....以确定关键点到哪个对象点可能属于(如果首先尝试,我们很有可能会很快发现我们的组合)。所有其他点pi都可以类似地一个个地添加(使用p0,p1,pi

    因此,我将从最接近的2个关键点开始...(有时可能会由于重叠或触摸镜像图像而受到污染),因为来自相邻对象的关键点有时可能离与自己的关键点更近...

    进行此类重新组合后,只需检查所有找到的对象是否具有相同的属性(长宽比)...以使其可视化,您可以找到关键点的OBB (Oriented Bounding Box)(也可以用于检查)