Правильный способ получить углы без знака между 0 и 180 для гистограммы градиентов

В настоящее время у меня есть код, который вычисляет величину и ориентацию производных Собеля.

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.


person GrandFleet    schedule 28.01.2019    source источник


Ответы (1)


Вместо ang = ang.clip(min=0, max=179.99999) используйте

ang = ang % 180

% — это операция по модулю в Python. Это преобразует, например, -135 в 45, что, как я подозреваю, вам нужно. То есть оба этих угла соответствуют линии с наклоном 1.

person Warren Weckesser    schedule 28.01.2019
comment
Для радианов будет ли работать ` ang = ang % pi/2 `? - person mLstudent33; 24.11.2019