我正在努力实施Jason Hipp等人的algorithm。还有一个presentation,它更短,更全面。
他们的方法的简要说明:
他们使用矢量量化作为区分任何给定图像中的前景和背景的工具。但是,它们不使用方形区域作为特征向量来生成代码字,而是使用圆形。这应该会降低计算复杂度。使用圆作为谓词向量,匹配问题被简化为线性模式匹配任务,并允许空间不变的匹配。因此,该方法称为空间不变矢量量化。
基本上,交互式选择谓词向量,然后对该谓词向量与当前位置的相关性进行详尽查询。
我的问题是:
整个算法在哪里生成码本?如何?
我看不出如何选择要生成的Codebook的参数。如果他们首先在图像中的所有可能位置对所有可能的圆进行采样,那么这在计算上非常重。他们如何确定要生成的集群/代码字的数量?
为什么我会互相摆动子环?
现在我的实现基本上包括一个半径作为谓词向量的圆。它在本机图像空间中行进,并在所有可能的旋转中将谓词向量与当前像素周围的圆相关联。这是一个非常缓慢的过程,我无法从他们的算法中看到好处。 我没有实现任何接近矢量量化的东西,因为我看不出它是如何工作的。
任何提示或想法都表示赞赏。不幸的是,该方法的作者没有回答我的问题。
答案 0 :(得分:2)
您的前两个问题不是特定于此算法,而是任何矢量量化算法。这是一个网页,以相对容易理解的术语描述如何进行矢量量化,包括生成码本:http://www.data-compression.com/vq.html。
关于摆动:在这个算法中,关键的观察是通过矢量化作为环,表面不会被镶嵌(完全覆盖)。例如,如果使用正方形,它们会对表面进行细分(完全覆盖它)。重叠的环不一定完全覆盖图像。由于这个原因,“环”之间的像素可能会错过并导致匹配失败。为了弥补这一点,作者来回“摆动”环,以便最终覆盖所有像素。