29 lines
864 B
Cython
29 lines
864 B
Cython
#cython: cdivision=True
|
|
#cython: boundscheck=False
|
|
#cython: nonecheck=False
|
|
#cython: wraparound=False
|
|
|
|
cimport numpy as cnp
|
|
cnp.import_array()
|
|
|
|
from .._shared.fused_numerics cimport np_floats
|
|
|
|
|
|
def _brief_loop(np_floats[:, ::1] image, unsigned char[:, ::1] descriptors,
|
|
Py_ssize_t[:, ::1] keypoints,
|
|
int[:, ::1] pos0, int[:, ::1] pos1):
|
|
|
|
cdef Py_ssize_t k, d, kr, kc, pr0, pr1, pc0, pc1
|
|
|
|
with nogil:
|
|
for p in range(pos0.shape[0]):
|
|
pr0 = pos0[p, 0]
|
|
pc0 = pos0[p, 1]
|
|
pr1 = pos1[p, 0]
|
|
pc1 = pos1[p, 1]
|
|
for k in range(keypoints.shape[0]):
|
|
kr = keypoints[k, 0]
|
|
kc = keypoints[k, 1]
|
|
if image[kr + pr0, kc + pc0] < image[kr + pr1, kc + pc1]:
|
|
descriptors[k, p] = True
|