对于这种特定的移位/比例不变模板匹配,哪种图像处理技术是理想的?


17

我最初在这里讨论的问题已经演变,并且在我研究更多并获得新信息后可能会变得更简单。

最重要的是,我希望能够使用计算机视觉/图像处理技术来检测此处显示的这种模式。如您所见,理想的模式由四个“ ping”组成。对象识别应该是:

  • 移位不变
    • 在水平方向上,图像将是周期性的。(即,向右推动,在左侧出现,反之亦然)。
    • (幸运的是)从纵向看,它不是周期性的。(即,推到顶部或底部,它将停止)。
  • 比例尺不变(如您所见,ping的“厚度”可能有所不同。)

我可以继续进行下去,但是我已经附上了涵盖我意思的图像,请参见以下内容:

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

当然,从这个家庭可以看出,它们也可以处于不同的“规模”:

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

最后,这是一些我可能实际收到的“现实”场景,可能会有噪音,当您移到底部时,行可能会“褪色”,当然,图像上会有很多虚假的线条,伪像等

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明

当然,作为最后的结局,这种“极端”场景很有可能出现:

在此处输入图片说明

因此,我想再次寻求一些指导,以指导我在这里应该使用哪些计算机机器视觉技术,以便获得最佳效果。 检测出图案的出现情况,如您所见,在这里我需要进行平移和缩放不变,并且在实际情况下也能获得不错的结果。(好消息是,我不需要它是旋转不变的)。到目前为止,我唯一能想到的想法就是二维关联。

我要补充一点,实际上,我没有彩色图像-我只会得到一个数字的数字,所以我想我们所说的是“灰度”。

提前致谢!

PS对于它的价值,我可能会使用开放式CV。

编辑#1:

根据评论,我在此处添加了您要求的详细信息:

对于定义数据的特征,我们可以假设以下内容:

  • 每个ping的水平长度可以变化,但是我知道它的上限和下限。在此范围内的任何事物为是,在外部事物为否。(例如,我知道ping的长度可以在1到3秒之间的任何位置)。

  • 所有ping必须为“可见”(是),但是,最后一行可能会丢失,并且仍然要说“是”。否则否。

  • 每个ping的垂直长度(“厚度”)可以变化,但同样,也要知道上下边界。(类似于您在这些图像中看到的内容)。在该范围内的任何事情都为是。外面没有东西。

  • 如果是,则每个ping之间的高度应始终相同。如果不是,则为否。(例如,您可以看到所有ping相对于彼此的高度如何,在垂直轴上约为110)。因此110 +/- 5可以为是,其他任何条件都必须为否。

我想就是这样-但是,请让我知道我还能添加什么...(此外,此处显示的所有内容都应注册为YES,顺便说一句)。


你说detect this pattern shown here什么意思?您是否只是想隔离红/黄线,或者您实际上想要表达计算此类线之间关系的表达式?仅查找线仅需要一些阈值或分段。你真正想要的是什么?
Dipan Mehta 2012年

@DipanMehta抱歉让您感到困惑。我想做的是:首先,不要注意颜色(只是说它们是绘制的),我将得到的只是数字矩阵,即灰度。第二件事,因为没有颜色,所以我只关心您在其中看到的“图案”,并重复看到4个ping。因此,检测器将看到该图像模板的变体,如上图所示,并说“是的,该模式存在”。抱歉造成混淆,请告知我是否还有其他疑问。谢谢!
Spacey 2012年

好的,如果我理解正确,鉴于第一行位于第一行,那么您想确定余额是否也位于同一位置。如果是这样,您将得出结论,该模式存在!对?
Dipan Mehta 2012年

@DipanMehta基本上可以,能够检测出上面显示的模式是否存在,足以应付刻度不变性,以及足以应付移位不变性。那有意义吗?谢谢,
Spacey 2012年

1
我得到的是您是否可以访问正在使用的实际系统中的源数据。如果这样做,那么可能会有更好的方法直接对原始数据进行操作,而不是您对零频的中间频谱图格式进行操作。
杰森R

Answers:


6

广义地说,有两种主要方法可解决此问题:

一种。模板匹配或
b。与参数化模型匹配。

就个人而言,鉴于模型的简单性,我更愿意使用第二种方法解决此问题。

步骤1:找出ping Blob

第一步,提取“框”-本质上是黄色/蓝色方块。这里最简单的方法可能只是对图像进行阈值处理。似乎背景变化不大,只是随着噪声的增加,它趋向于与ping非常相似。因此,该阈值可以在整个图像上通用-我认为您将能够获得一个可以在整个图像上使用的体面阈值。但是,该阈值应该很聪明,这样您就可以使用类似Otsu的方法。见更多的参考。

块的改进

您可以做的一件好事,就是删除看起来像ping前景的虚假点,因为ping中的某些像素也是蓝色的。您需要在这里进行称为“打开”的形态操作。这是HIPR的参考文献之一。这些类型的操作需要精巧的形状,以帮助保留相似的形状并移除其他形状。您可以选择水平线。到此为止,您将背景像素和前景像素整齐地分开了ping,而不会彼此碰触。

步骤2:标记/注册区块

现在你有了最干净的的Blob,现在可以将它们标记为1,2,3,4或A,B,C,D等。通常这可以通过所谓的一些简单算法来完成。遍历每个像素,如果它与任何标记的区域接触,并且也是前景,则将其分配给该段,否则创建一个新的段。如果您发现四个以上重要部分,则需要选择最相关的部分。在此应用启发式方法,而不是任何理论算法。

步骤3:参数建模

现在,一旦我们最有可能获得4个ping的前4个候选者,就可以确定边界框-本质上是左上角和右下角(或最左边和最右边的像素,以及斑点的上下行) 。找到边界框,可以对每个ping框的质心进行罚款。

C一世 哪里 一世{1个234}C1个C1个

因此,现在可以计算质心间距:

C1个一世[Xÿ]={C1个[X]-C一世[X]C1个[ÿ]-C一世[ÿ]}

大号一世 哪里 一世{1个234}

本质上,您有8个参数vecoter:

1。{C1个[X]C1个[ÿ]}2..4C1个一世[Xÿ]5..8大号一世

步骤4:分类
在最后一步中,我们现在需要对是否存在ping模式(是或否)进行分类。

对于这样的事情,您可以有一个不错的贝叶斯分类器框架。

你有两个假设

H0:ping模式存在。
H1:ping模式不存在

C1个一世[X]

首先,您要学习很多您知道的图像它们属于图像。现在,您可以绘制各种直方图或应用某种密度估计方法。阅读Duda Hart的模式分类。

C1个一世[X]μ=20σ=.1

C1个一世H0P[C1个一世[X]|H0]

现在,从测试数据

P[H0|C1个一世[X]=X1个]C1个[X]X1个H0

因此,您可以计算

P[H0 |C1个一世[X]]=P[C1个一世[X]|H0]P[H0]P[C1个一世[X]]

您需要将此表达式与矢量表达式结合起来,并且需要付出很多努力才能准确地完成参数估计。但我在这里为您提供基本方法。

请自己计算一下,这会很长,但是应该还是很直观的。

P[H0|所有参数]>1个/2

编辑
由于您已经定义了110 +/- 5像素的特定标准,所以最后一步可以更简单。如果您的分类标准是固定的,则可能不需要计算所有这些概率。


非常感谢你!我将不得不消化这个问题,然后再回覆您。
Spacey 2012年

3

在我看来,这个问题就像是脉冲重复间隔检测+估计问题。我需要随着时间的推移来发展这个答案,但是在问题上运行良好的算法是晶格上的最大可能性


谢谢,是的,我很高兴听到您对此的看法。在此期间,我将查看您的链接。
Spacey 2012年

彼得,您有空时间考虑到您提到的这个吗?我很想听听您对此事的想法。
Spacey 2012年

刚刚再次开始修补(4月是注销)。我可能会误会:克拉克森的论文提出问题的方式是不同的……让我多讲一点。
彼得·K
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.