为梯度直方图获取 0 到 180 之间无符号角度的正确方法
Proper way to get unsigned angles between 0 and 180 for histogram of gradients
目前我有代码可以根据 Sobel 导数计算大小和方向。
mag, ang = cv2.cartToPolar(gx, gy, angleInDegrees=True)
ang = ang.clip(min=0, max=179.99999)
长话短说,我如何强制角度无符号且介于 [0, 180) 度之间而不进行剪裁,这似乎会破坏直方图分布。
是否有一个 numpy 函数可以将大于 180 的角度(例如 200)拆分为 160,或者我是否必须自己编写类似的代码。
是否可以让 numpy 数组只包含从 -180 到 180 的值,然后我可以只取 abs 值。
而不是ang = ang.clip(min=0, max=179.99999)
,使用
ang = ang % 180
%
是 Python 中的 modulo operation。
例如,这会将 -135 转换为 45,我怀疑这就是您想要的。也就是说,这两个角度都对应于斜率为 1 的直线。
目前我有代码可以根据 Sobel 导数计算大小和方向。
mag, ang = cv2.cartToPolar(gx, gy, angleInDegrees=True)
ang = ang.clip(min=0, max=179.99999)
长话短说,我如何强制角度无符号且介于 [0, 180) 度之间而不进行剪裁,这似乎会破坏直方图分布。
是否有一个 numpy 函数可以将大于 180 的角度(例如 200)拆分为 160,或者我是否必须自己编写类似的代码。
是否可以让 numpy 数组只包含从 -180 到 180 的值,然后我可以只取 abs 值。
而不是ang = ang.clip(min=0, max=179.99999)
,使用
ang = ang % 180
%
是 Python 中的 modulo operation。
例如,这会将 -135 转换为 45,我怀疑这就是您想要的。也就是说,这两个角度都对应于斜率为 1 的直线。