scikit-image

Форк
0
/
_moments_cy.pyx 
36 строк · 987.0 Байт
1
#cython: cdivision=True
2
#cython: nonecheck=False
3
#cython: wraparound=False
4
import numpy as np
5
cimport numpy as cnp
6

7
from .._shared.fused_numerics cimport np_floats
8
cnp.import_array()
9

10

11
def moments_hu(np_floats[:, :] nu):
12
    if np_floats is cnp.float32_t:
13
        dtype = np.float32
14
    else:
15
        dtype = np.float64
16

17
    cdef np_floats[::1] hu = np.zeros((7,), dtype=dtype)
18
    cdef np_floats t0 = nu[3, 0] + nu[1, 2]
19
    cdef np_floats t1 = nu[2, 1] + nu[0, 3]
20
    cdef np_floats q0 = t0 * t0
21
    cdef np_floats q1 = t1 * t1
22
    cdef np_floats n4 = 4 * nu[1, 1]
23
    cdef np_floats s = nu[2, 0] + nu[0, 2]
24
    cdef np_floats d = nu[2, 0] - nu[0, 2]
25
    hu[0] = s
26
    hu[1] = d * d + n4 * nu[1, 1]
27
    hu[3] = q0 + q1
28
    hu[5] = d * (q0 - q1) + n4 * t0 * t1
29
    t0 *= q0 - 3 * q1
30
    t1 *= 3 * q0 - q1
31
    q0 = nu[3, 0]- 3 * nu[1, 2]
32
    q1 = 3 * nu[2, 1] - nu[0, 3]
33
    hu[2] = q0 * q0 + q1 * q1
34
    hu[4] = q0 * t0 + q1 * t1
35
    hu[6] = q1 * t0 - q0 * t1
36
    return np.asarray(hu)
37

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.