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

标签 python python-2.7 image-processing computer-vision hough-transform

我不是专业的程序员,并且在这方面采取了一些措施。我已经定义了一个高斯内核,它在 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]]

这是高斯图:

enter image description here

如果 c_i 是高斯窗口的中心单元格,权重应该如下所示: enter image description here

其中 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)) )

didjdk 的所有值都在 [-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/

相关文章:

Python在列表二维矩阵列表中设置一列

python - 如何明智地连接多个列表元素

python - "TypeError: ' null 第一次执行代码时为' is not an object"

numpy - numpy 数组中标记组件之间的最小边到边欧氏距离

c# - 在 WPF 中显示图像的最佳方式

python - 当我在柴油中使用产量时,telnet 连接关闭

python - turtle 随机运动,从墙上弹起

python - ETE2 : adding image to nodes

iphone - 可以同时使用AVCaptureVideoDataOutput和AVCaptureMovieFileOutput吗?

python - Pandas :从具有混合字符串浮点值的列中去除空格