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

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


Shift不变


水平地,图像将是周期性的。 (即,向右推动,在左侧出现,反之亦然)。
(幸运的是)从垂直方向看,它不是周期性的。 (即,按到顶部或底部,它将停止)。


比例尺不变(如您所见,ping的“厚度”可能会有所不同。)

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



也可以从这个家族中看到不同的“规模”:



最后,这是一些“现实”的情况我可能会收到的实际信息是,在有噪声的地方,当您移到底部时,行可能会“褪色”,当然,图像中会有很多虚假的线条,伪影等。

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



因此,我想再次询问有关什么我应该在这里使用puter-machine-vision视觉技术,以最好地检测我的图案的出现,如您所见,在这里我需要进行平移和缩放不变,并且还能够在现实情况下获得不错的结果。 (好消息是,我不需要它是旋转不变的)。到目前为止,我唯一能想到的想法就是二维关联。

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

谢谢!

P.S.对于其价值,我可能会使用开放式CV。

编辑#1:

基于注释,我在此处添加了您要求的详细信息:

对于定义数据的特征,我们可以假设以下内容:每个ping的水平长度可以变化,但是我知道它的上限和下限。在此范围内的任何事物为是,在外部事物为否。 (例如,我知道ping的长度可以在1到3秒之间。)
所有ping都必须“可见”(是),但是,最后一行可能会丢失,并且仍然希望说“是”。否则,不可以。
每个ping的垂直长度(“厚度”)可以变化,但是同样,也要知道上下边界。 (类似于您在这些图像中看到的内容)。在该范围内的任何事情都是。外面没有东西。
如果是,则每次ping之间的高度应始终相同。如果不是,则为否。 (例如,您可以看到所有ping相对于彼此的高度如何,在垂直轴上约为110)。所以110 +/- 5可以为是,其他任何事情都必须为否。

我认为就是这样-但请告诉我我还能添加什么...(此外,所有显示的内容这里应该注册为是,顺便说一句。)

评论

您说检测到此处显示的这种模式是什么意思?您是否只是想隔离红/黄线,或者您实际上想要表达可计算此类线之间关系的表达式?仅查找线仅需要一些阈值或分段。你到底想要什么?

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

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

@DipanMehta是的,基本上,能够检测到上面显示的模式是否存在,足够强大以应对尺度不变性以及足够强大以应对移位不变性。那有意义吗?谢谢,

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

#1 楼

广义上讲,有两种主要方法可以解决此问题:

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

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

步骤1:确定ping斑点

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

块的改进

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

步骤2:标记/注册块

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

步骤3:参数建模现在,一旦我们最有可能获得4个对应ping的前4个候选者,就可以确定边界框-本质上是左上角和右下角(或左上和右下)大多数像素,以及Blob的顶部和底部)。找到边界框,可以对每个ping框的质心进行罚款。

因此,您可以有四个质心$ C_i \ text {其中} i \ in \ {1,2,3,4 \} $
根据描述,$的绝对位置C_1 $可以是任意的。但是,在$ C_1 $之后,其他质心应该在一定范围内,因此现在可以计算质心间距离:

$$

C_ {1i} [x,y] = \ {C_1 [x]-C_i [x],C_1 [y]-C_i [y] \}

$$

另一个关键参数是ping的长度-即$ L_i \ text {其中} i \ in \ {1,2,3,4 \} $

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

$$
1。 \ {C_1 [x],C_1 [y] \} \\
2..4 C_ {1i} [x,y] \\
5..8 L_i \\
$$

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

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

您有两个假设


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


现在,我只在这里放置1个参数$ C_ {1,i} [x] $大小写,但是您可以扩展它。

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

为简单起见,您发现在存在ping的情况下,参数$ C_ {1,i} [x] $的密度函数为高斯,其中$ \ mu = 20,\ sigma = .1 $此处的sigma小可能意味着与原始版本不能有太大的差异。

如果$ H0 $为真,这实际上是$ C_ {1,i} $的条件概率。因此,您具有值$ P [C_ {1,i} [x] |现在,根据测试数据

$ P [H0 | H0 | $

C_ {1,i} [x] = x_1] $是=鉴于$ C_1 [x] $的读数是$ x_1 $,那么$ H0 $的概率是多少?

因此,您可以计算

$$

P [H0 \ space | C_ {1,i} [x]] = {P [C_ {1,i} [x] | H0] * P [H0] \ over {P [C_ {1,i} [x]]}}

$$

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

请自己计算,这会很长,但仍应非常直观。

如果$ P [H0 | \ text {所有参数}]> 1/2 $,则存在ping模式。

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

评论


$ \ begingroup $
非常感谢!我将不得不消化这个问题,然后再回覆您。
$ \ endgroup $
–太空
2012年3月25日15:56

#2 楼

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

评论


$ \ begingroup $
谢谢,是的,我很高兴听到您对此的看法。同时,我将检查您的链接。
$ \ endgroup $
–太空
2012年3月25日15:57

$ \ begingroup $
彼得,您有空考虑到您提到的这个吗?我很想听听您对此事的想法。
$ \ endgroup $
–太空
2012年5月7日14:54

$ \ begingroup $
刚开始修补(4月是注销)。我可能会误会:克拉克森的论文提出问题的方式是不同的……让我多讲一点。
$ \ endgroup $
– Peter K.♦
2012年5月9日12:36