我不是专业的程序员,并且在这方面采取了一些措施。我已经定义了一个高斯内核,它在 python 中显示了窗口大小为 5 和 sigma=3
(即 3 个位移)的评分权重。
[[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]]
这是高斯图:
其中 delta_p
显示与 c_i
的位移,如何找到邻居然后将高斯权重添加到这些邻居,其中它们的索引范围为 -从左到右从上到下 2 到 2?
确实,我不明白如何将它包含在累加器增量中?
最佳答案
那里有方程式。如果 c_i = (i, j, k)
是 Hough 空间 S
的中心单元,通常你只需增加 S[i, j, k] += 1
,现在你可以:
S[i + di, j + dj, k + dk] += exp( -(di**2 + dj**2 + dk**2)/(2*(sigma**2)) )
di
、dj
和 dk
的所有值都在 [-2,2] 范围内。
当然,您会使用预先计算的速度值。我相信您可以通过某种方式使用切片:
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
为了避免在上面检查越界索引(这会使代码复杂化并减慢速度),我建议您将 Hough 空间在所有边上扩展两个单元格。如果您需要周期性边界条件(例如角度轴),那么您可以在计算霍夫空间后,在该维度的任一侧取 2 单元格边距并将其添加到另一侧:
S[:, :, 2:4] = S[:, :, 2:4] + S[:, :, -2:]
S[:, :, -4:-2] = S[:, :, -4:-2] + S[:, :, 0:2]
关于python - 如何在累加器坐标位移范围内定义广义霍夫变换的高斯投票?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49307866/