如何在累加器坐标位移范围内定义广义霍夫变换的高斯投票?

How to define a Gaussian voting for generalized hough transform within a range of displacement of a coordinate in accumulator?

我不是专业的程序员,并且在这方面采取了一些措施。我定义了一个高斯核,它显示 window 大小为 5 和 sigma=3(即 3 个位移)的评分权重 python。

[[0.00364954 0.01483356 0.02344521 0.01483356 0.00364954]
 [0.01483356 0.06029105 0.09529314 0.06029105 0.01483356]
 [0.02344521 0.09529314 0.15061577 0.09529314 0.02344521]
 [0.01483356 0.06029105 0.09529314 0.06029105 0.01483356]
 [0.00364954 0.01483356 0.02344521 0.01483356 0.00364954]]

这是高斯图:

如果c_i是高斯window的中心单元格,权重应该是这样的:

其中 delta_p 显示从 c_i 的位移,我如何找到邻居然后将高斯权重添加到这些邻居,其中它们的索引范围从 -2 到 2从左到右,从上到下?

确实,我不明白如何将其包含在累加器增量中?

你已经找到了等式。如果 c_i = (i, j, k) 是 Hough space S 中的中心单元格,通常你只会增加 S[i, j, k] += 1,现在你可以:

S[i + di, j + dj, k + dk] += exp( -(di**2 + dj**2 + dk**2)/(2*(sigma**2)) )

didjdk 的所有值在 [-2,2].

范围内

当然,您可以使用 pre-computed 速度值。我确定您可以通过某种方式使用切片:

S[i-2:i+3, j-2:j+3, k-2:k+3] = S[i-2:i+3, j-2:j+3, k-2:k+3] + gauss_weights

为了避免在上面检查 out-of-bounds 索引(这会使代码复杂化并减慢速度),我建议您将 Hough space 扩展到所有边上的两个单元格。如果您需要周期性边界条件(例如角度轴),那么您可以在计算 Hough space 之后,在该维度的任一侧取 2 单元格边距并将其添加到另一侧:

S[:, :, 2:4] = S[:, :, 2:4] + S[:, :, -2:]
S[:, :, -4:-2] = S[:, :, -4:-2] + S[:, :, 0:2]