空间不变的矢量量化

时间:2012-12-10 14:00:09

标签: algorithm matlab vector quantization background-foreground

我正在努力实施Jason Hipp等人的algorithm。还有一个presentation,它更短,更全面。

他们的方法的简要说明:

他们使用矢量量化作为区分任何给定图像中的前景和背景的工具。但是,它们不使用方形区域作为特征向量来生成代码字,而是使用圆形。这应该会降低计算复杂度。使用圆作为谓词向量,匹配问题被简化为线性模式匹配任务,并允许空间不变的匹配。因此,该方法称为空间不变矢量量化

基本上,交互式选择谓词向量,然后对该谓词向量与当前位置的相关性进行详尽查询。

我的问题是:

  • 整个算法在哪里生成码本?如何?

  • 我看不出如何选择要生成的Codebook的参数。如果他们首先在图像中的所有可能位置对所有可能的圆进行采样,那么这在计算上非常重。他们如何确定要生成的集群/代码字的数量?

  • 为什么我会互相摆动子环?

现在我的实现基本上包括一个半径作为谓词向量的圆。它在本机图像空间中行进,并在所有可能的旋转中将谓词向量与当前像素周围的圆相关联。这是一个非常缓慢的过程,我无法从他们的算法中看到好处。 我没有实现任何接近矢量量化的东西,因为我看不出它是如何工作的。

任何提示或想法都表示赞赏。不幸的是,该方法的作者没有回答我的问题。

1 个答案:

答案 0 :(得分:2)

您的前两个问题不是特定于此算法,而是任何矢量量化算法。这是一个网页,以相对容易理解的术语描述如何进行矢量量化,包括生成码本:http://www.data-compression.com/vq.html

关于摆动:在这个算法中,关键的观察是通过矢量化作为环,表面不会被镶嵌(完全覆盖)。例如,如果使用正方形,它们会对表面进行细分(完全覆盖它)。重叠的环不一定完全覆盖图像。由于这个原因,“环”之间的像素可能会错过并导致匹配失败。为了弥补这一点,作者来回“摆动”环,以便最终覆盖所有像素。