Miscellaneous fixes and improvements

This commit is contained in:
Johannes Schönberger
2013-11-29 20:48:36 +01:00
parent 1fac309125
commit 3ec1d35065
3 changed files with 296 additions and 543 deletions
+25 -19
View File
@@ -103,30 +103,34 @@ def keypoints_orb(image, n_keypoints=200, fast_n=9, fast_threshold=0.20,
keypoints_list = []
orientations_list = []
scales_list = []
harris_measure_list = []
harris_response_list = []
for i in range(n_scales):
harris_response = corner_harris(pyramid[i], method='k', k=harris_k)
corners = corner_peaks(corner_fast(pyramid[i], fast_n, fast_threshold),
min_distance=1)
keypoints_list.append(corners)
orientations_list.append(corner_orientations(pyramid[i], corners,
ofast_mask))
scales_list.append(i * np.ones(corners.shape[0], dtype=np.intp))
harris_measure_list.append(harris_response[corners[:, 0],
corners[:, 1]])
for scale in range(n_scales):
keypoints = np.vstack(keypoints_list)
corners = corner_peaks(corner_fast(pyramid[scale], fast_n,
fast_threshold), min_distance=1)
keypoints_list.append(corners * downscale ** scale)
orientations_list.append(corner_orientations(pyramid[scale], corners,
OFAST_MASK))
scales_list.append(scale * np.ones(corners.shape[0], dtype=np.intp))
harris_response = corner_harris(pyramid[scale], method='k', k=harris_k)
harris_response_list.append(harris_response[corners[:, 0],
corners[:, 1]])
keypoints = np.round(np.vstack(keypoints_list)).astype(np.intp)
orientations = np.hstack(orientations_list)
scales = np.hstack(scales_list)
harris_measure = np.hstack(harris_measure_list)
harris_measure = np.hstack(harris_response_list)
if keypoints.shape[0] < n_keypoints:
return keypoints, orientations, scales
else:
best_indices = harris_measure.argsort()[::-1][:n_keypoints]
return (keypoints[best_indices], orientations[best_indices],
scales[best_indices])
scales[best_indices])
def descriptor_orb(image, keypoints, orientations, scales,
@@ -193,11 +197,12 @@ def descriptor_orb(image, keypoints, orientations, scales,
filtered_keypoints_list = []
descriptors = np.empty((0, 256), dtype=np.bool)
for k in range(n_scales):
curr_image = np.ascontiguousarray(pyramid[k])
for scale in range(n_scales):
curr_image = np.ascontiguousarray(pyramid[scale])
curr_scale_mask = scales == k
curr_scale_kpts = keypoints[curr_scale_mask]
curr_scale_mask = scales == scale
curr_scale_kpts = keypoints[curr_scale_mask] / (downscale ** scale)
curr_scale_kpts = np.round(curr_scale_kpts).astype(np.intp)
curr_scale_orientation = orientations[curr_scale_mask]
border_mask = _mask_border_keypoints(curr_image, curr_scale_kpts,
@@ -211,8 +216,9 @@ def descriptor_orb(image, keypoints, orientations, scales,
curr_scale_orientation)
descriptors_list.append(curr_scale_descriptors)
filtered_keypoints_list.append(curr_scale_kpts)
filtered_keypoints_list.append(curr_scale_kpts * downscale ** scale)
descriptors = np.vstack(descriptors_list).view(np.bool)
filtered_keypoints = np.vstack(filtered_keypoints_list)
filtered_keypoints = np.round(filtered_keypoints).astype(np.intp)
return descriptors, filtered_keypoints
+15 -524
View File
@@ -9,17 +9,24 @@ import numpy as np
from libc.math cimport sin, cos, M_PI, round
pos = np.loadtxt('orb_descriptor_positions.txt', dtype=np.int8)
pos0 = np.ascontiguousarray(pos[:, :2])
pos1 = np.ascontiguousarray(pos[:, 2:])
def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints,
double[:] orientations):
cdef Py_ssize_t i, d, kr, kc, pr0, pr1, pc0, pc1, spr0, spc0, spr1, spc1
cdef int[:, ::1] steered_pos0, steered_pos1
cdef double angle
cdef char[:, ::1] descriptors = np.zeros((keypoints.shape[0], 256),
dtype=np.uint8)
cdef char[:, ::1] descriptors = np.zeros((keypoints.shape[0],
pos.shape[0]), dtype=np.uint8)
cdef char[:, ::1] cpos0 = pos0
cdef char[:, ::1] cpos1 = pos1
for i in range(keypoints.shape[0]):
for i in range(descriptors.shape[0]):
angle = orientations[i]
sin_a = sin(angle * M_PI / 180.)
cos_a = cos(angle * M_PI / 180.)
@@ -27,11 +34,11 @@ def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints,
kr = keypoints[i, 0]
kc = keypoints[i, 1]
for j in range(256):
pr0 = pos0[j, 0]
pc0 = pos0[j, 1]
pr1 = pos1[j, 0]
pc1 = pos1[j, 1]
for j in range(descriptors.shape[1]):
pr0 = cpos0[j, 0]
pc0 = cpos0[j, 1]
pr1 = cpos1[j, 0]
pc1 = cpos1[j, 1]
spr0 = <Py_ssize_t>round(sin_a * pr0 + cos_a * pc0)
spc0 = <Py_ssize_t>round(cos_a * pr0 - sin_a * pc0)
@@ -42,519 +49,3 @@ def _orb_loop(double[:, ::1] image, Py_ssize_t[:, ::1] keypoints,
descriptors[i, j] = True
return np.asarray(descriptors)
cdef char[:, ::1] pos0 = np.array([[ 8, -3],
[ 4, 2],
[-11, 9],
[ 7, -12],
[ 2, -13],
[ 1, -7],
[ -2, -10],
[-13, -13],
[-13, -3],
[ 10, 4],
[-13, -8],
[-11, 7],
[ 7, 7],
[ -4, -5],
[-13, 2],
[ -9, 0],
[ 12, -6],
[ -3, 6],
[ -6, -13],
[ 11, -13],
[ 4, 7],
[ 5, -3],
[ 3, -7],
[ -8, -7],
[ -2, 11],
[-13, 12],
[ -7, 3],
[ -4, 2],
[-10, -12],
[ 5, -12],
[ 5, -6],
[ 1, 0],
[ 9, 11],
[ 4, 7],
[ 2, -1],
[ -4, -12],
[ -8, -5],
[ 4, 11],
[ 0, -8],
[-13, -2],
[ -3, -2],
[ -6, 9],
[ 8, 12],
[ 0, 9],
[ 7, -5],
[-13, -6],
[ 10, 7],
[ -6, -3],
[ 10, -9],
[-13, 8],
[-13, 0],
[ 3, 3],
[ 5, 7],
[ -1, 7],
[ 3, -10],
[ 2, -4],
[-13, 0],
[-13, -7],
[-13, 3],
[ -7, 12],
[ 6, -10],
[ -9, -1],
[ -2, -5],
[-12, 5],
[ 3, -10],
[ -7, -7],
[ -3, -2],
[ 2, 9],
[-11, -13],
[ -1, 6],
[ 5, -3],
[ -4, -13],
[ -9, -6],
[-12, -10],
[ 10, 2],
[ 7, 12],
[ -7, -13],
[ -4, 9],
[ 7, -1],
[ -7, 6],
[-13, 11],
[ -3, 7],
[ 7, -8],
[-13, -7],
[ 1, -3],
[ 2, -6],
[ -4, 3],
[ -1, -13],
[ 7, 1],
[ 1, -1],
[ 9, 1],
[ -1, -9],
[-13, -13],
[ 7, 7],
[ 12, -5],
[ 6, 3],
[ 5, -13],
[ 2, -12],
[ 3, 8],
[ 2, 6],
[ 9, -12],
[ -8, 4],
[-11, 12],
[ 1, 12],
[ 6, -9],
[ 2, 3],
[ 6, 3],
[ 3, -3],
[ 7, 8],
[-11, -5],
[-10, 11],
[ -5, -8],
[-10, 5],
[ 8, -1],
[ 4, -6],
[-10, 12],
[ 4, -2],
[ -2, 0],
[ -5, -8],
[ 7, -6],
[ -9, -13],
[ -5, -13],
[ 8, -8],
[ -9, -11],
[ 1, -8],
[ 7, -4],
[ -2, 1],
[ 11, -6],
[-12, -9],
[ 3, 7],
[ 5, 5],
[ 0, -4],
[ -9, 12],
[ 0, 7],
[ -1, 2],
[ 5, 11],
[ 3, 5],
[-13, -4],
[ -5, 9],
[ -4, -7],
[ 6, 5],
[ -7, 6],
[-13, 6],
[ 1, -10],
[ 4, 1],
[ -2, -2],
[ 2, -12],
[ -2, -13],
[ 4, 1],
[ -6, -10],
[ -3, -13],
[ 7, 5],
[ 4, -2],
[-13, 9],
[ 7, 1],
[ 7, -8],
[ -7, -4],
[ -8, 11],
[-13, 6],
[ 2, 4],
[ 10, -5],
[ -6, -5],
[ 8, -3],
[ 2, -12],
[-11, -2],
[-12, -13],
[-11, 0],
[ 5, -3],
[ -2, -13],
[ -1, -8],
[-13, -11],
[-10, -2],
[ -3, 9],
[ 2, -3],
[ -9, -13],
[ -4, 6],
[ -4, 12],
[ -6, -11],
[ 6, -3],
[-13, 11],
[ 11, 11],
[ 7, -5],
[ -1, 12],
[ -4, -8],
[ -7, 1],
[-13, -12],
[ -7, -2],
[ -8, 5],
[ -5, -1],
[-13, 7],
[ 1, 5],
[ 1, 0],
[ 9, 12],
[ 5, -8],
[ -1, 11],
[ -9, -3],
[ -1, -10],
[-13, 1],
[ 8, -11],
[ 2, -13],
[ 7, -13],
[-10, -10],
[-10, -8],
[ 4, -6],
[ 3, 12],
[ -4, 2],
[ 5, -13],
[ 4, -13],
[ -9, 9],
[ 0, 3],
[-12, 1],
[ 3, 2],
[-10, -10],
[ 8, -13],
[ -8, -12],
[ 2, 2],
[ 10, 6],
[ 6, 8],
[ -7, 10],
[ -3, -9],
[ -1, -13],
[ -3, -7],
[ -8, -2],
[ 4, 2],
[ 2, -5],
[ 6, -9],
[ 3, -1],
[ 11, -1],
[ -3, 0],
[ 4, -11],
[ 2, -4],
[-10, -6],
[-13, 7],
[-13, 12],
[ 6, 0],
[ 0, -1],
[-13, 3],
[ -9, 8],
[-13, -6],
[ 5, -9],
[ 2, 7],
[ -1, -6],
[ 9, 5],
[ 11, -3],
[ 3, 0],
[ -1, 4],
[ 3, -6],
[-13, 0],
[ 5, 8],
[ 8, 9],
[ 7, -4],
[-10, 4],
[ 7, 3],
[ 9, -7],
[ 7, 0],
[ -1, -6]], dtype=np.int8)
cdef char[:, ::1] pos1 = np.array([[ 9, 5],
[ 7, -12],
[ -8, 2],
[ 12, -13],
[ 2, 12],
[ 1, 6],
[ -2, -4],
[-11, -8],
[-12, -9],
[ 11, 9],
[ -8, -9],
[ -9, 12],
[ 12, 6],
[ -3, 0],
[-12, -3],
[ -7, 5],
[ 12, -1],
[ -2, 12],
[ -4, -8],
[ 12, -8],
[ 5, 1],
[ 10, -3],
[ 6, 12],
[ -6, -2],
[ -1, -10],
[ -8, 10],
[ -5, -3],
[ -3, 7],
[ -6, 11],
[ 6, -7],
[ 7, -1],
[ 4, -5],
[ 11, -13],
[ 4, 12],
[ 4, 4],
[ -2, 7],
[ -7, -10],
[ 9, 12],
[ 1, -13],
[ -8, 2],
[ -2, 3],
[ -4, -9],
[ 10, 7],
[ 1, 3],
[ 11, -10],
[-11, 0],
[ 12, 1],
[ -6, 12],
[ 12, -4],
[ -8, -12],
[ -8, -4],
[ 7, 8],
[ 10, -7],
[ 1, -12],
[ 5, 6],
[ 3, -10],
[-13, 5],
[-12, 12],
[-11, 8],
[ -4, 7],
[ 12, 8],
[ -7, -6],
[ 0, 12],
[ -7, 5],
[ 8, -13],
[ -4, 5],
[ -1, -7],
[ 5, -11],
[ -5, -13],
[ 0, -1],
[ 5, 2],
[ -4, 12],
[ -9, 6],
[ -8, -4],
[ 12, -3],
[ 12, 12],
[ -6, 5],
[ -3, 4],
[ 12, 2],
[ -5, 1],
[-12, 5],
[ -2, -6],
[ 12, -7],
[-11, -12],
[ 12, 12],
[ 3, 0],
[ -2, -13],
[ 1, 9],
[ 8, -6],
[ 3, 12],
[ 12, 6],
[ -1, 3],
[-10, 5],
[ 10, 12],
[ 12, 9],
[ 7, 11],
[ 6, 10],
[ 2, 3],
[ 4, -6],
[ 12, -13],
[ 10, 3],
[ -7, 9],
[ -4, -6],
[ 2, -8],
[ 7, -4],
[ 3, -2],
[ 11, 0],
[ 8, -8],
[ 9, 3],
[ -6, -4],
[ -5, 10],
[ -3, 12],
[ -9, 0],
[ 12, -6],
[ 6, -11],
[ -8, 7],
[ 6, 7],
[ -2, 12],
[ -5, 2],
[ 10, 12],
[ -8, -8],
[ -5, -2],
[ 9, -13],
[ -9, 0],
[ 1, -2],
[ 9, 1],
[ -1, -4],
[ 12, -11],
[ -6, 4],
[ 7, 12],
[ 10, 8],
[ 2, 8],
[ -5, -13],
[ 2, 12],
[ 1, 7],
[ 7, -9],
[ 6, -8],
[ -8, 9],
[ -3, -3],
[ -3, -12],
[ 8, 0],
[ -6, 12],
[ -5, -2],
[ 3, 10],
[ 8, -4],
[ 2, -13],
[ 12, 12],
[ 0, -6],
[ 9, 3],
[ -3, -5],
[ -1, 1],
[ 12, -11],
[ 5, -7],
[ -9, -5],
[ 8, 6],
[ 7, 6],
[ -7, 1],
[ -7, -8],
[-12, -8],
[ 3, 9],
[ 12, 3],
[ -6, 7],
[ 9, -8],
[ 2, 8],
[-10, 3],
[ -7, -9],
[-10, -5],
[ 11, 8],
[ -1, 12],
[ 0, 9],
[-12, -5],
[-10, 11],
[ -2, -13],
[ 3, 2],
[ -4, 0],
[ -3, -10],
[ -2, -7],
[ -4, 9],
[ 6, 11],
[ -5, 5],
[ 12, 6],
[ 12, -2],
[ 0, 7],
[ -3, -2],
[ -6, 7],
[ -8, -13],
[ -6, -8],
[ -6, -9],
[ -4, 5],
[ -8, 10],
[ 5, -13],
[ 10, -13],
[ 10, -1],
[ 10, -9],
[ 1, -13],
[ -6, 2],
[ 1, 12],
[ -8, -10],
[ 10, -6],
[ 3, -6],
[ 12, -9],
[ -5, -7],
[ -8, -13],
[ 8, 5],
[ 8, -13],
[ -3, -3],
[ 10, -12],
[ 5, -1],
[ -4, 3],
[ 3, -9],
[ -6, 1],
[ 4, -8],
[-10, 9],
[ 12, 12],
[ -6, -5],
[ 3, 7],
[ 11, -8],
[ 8, -12],
[ -6, 5],
[ -3, 9],
[ -1, 5],
[ -3, 4],
[ -8, 3],
[ 12, 12],
[ 3, 11],
[ 11, -13],
[ 7, 12],
[ 12, 4],
[ -3, 6],
[ 4, 12],
[ 2, 1],
[ -8, 1],
[-11, 1],
[-11, -13],
[ 11, -13],
[ 1, 4],
[ -9, -2],
[ -6, -3],
[ -8, -2],
[ 8, 10],
[ 3, -9],
[ -1, -1],
[ 11, -2],
[ 12, -8],
[ 3, 5],
[ 0, 10],
[ 4, 5],
[-10, 5],
[ 12, 11],
[ 9, -6],
[ 8, -12],
[-10, 9],
[ 12, 4],
[ 10, -2],
[ 12, -2],
[ 0, -11]], dtype=np.int8)
@@ -0,0 +1,256 @@
8.000000000000000000e+00 -3.000000000000000000e+00 9.000000000000000000e+00 5.000000000000000000e+00
4.000000000000000000e+00 2.000000000000000000e+00 7.000000000000000000e+00 -1.200000000000000000e+01
-1.100000000000000000e+01 9.000000000000000000e+00 -8.000000000000000000e+00 2.000000000000000000e+00
7.000000000000000000e+00 -1.200000000000000000e+01 1.200000000000000000e+01 -1.300000000000000000e+01
2.000000000000000000e+00 -1.300000000000000000e+01 2.000000000000000000e+00 1.200000000000000000e+01
1.000000000000000000e+00 -7.000000000000000000e+00 1.000000000000000000e+00 6.000000000000000000e+00
-2.000000000000000000e+00 -1.000000000000000000e+01 -2.000000000000000000e+00 -4.000000000000000000e+00
-1.300000000000000000e+01 -1.300000000000000000e+01 -1.100000000000000000e+01 -8.000000000000000000e+00
-1.300000000000000000e+01 -3.000000000000000000e+00 -1.200000000000000000e+01 -9.000000000000000000e+00
1.000000000000000000e+01 4.000000000000000000e+00 1.100000000000000000e+01 9.000000000000000000e+00
-1.300000000000000000e+01 -8.000000000000000000e+00 -8.000000000000000000e+00 -9.000000000000000000e+00
-1.100000000000000000e+01 7.000000000000000000e+00 -9.000000000000000000e+00 1.200000000000000000e+01
7.000000000000000000e+00 7.000000000000000000e+00 1.200000000000000000e+01 6.000000000000000000e+00
-4.000000000000000000e+00 -5.000000000000000000e+00 -3.000000000000000000e+00 0.000000000000000000e+00
-1.300000000000000000e+01 2.000000000000000000e+00 -1.200000000000000000e+01 -3.000000000000000000e+00
-9.000000000000000000e+00 0.000000000000000000e+00 -7.000000000000000000e+00 5.000000000000000000e+00
1.200000000000000000e+01 -6.000000000000000000e+00 1.200000000000000000e+01 -1.000000000000000000e+00
-3.000000000000000000e+00 6.000000000000000000e+00 -2.000000000000000000e+00 1.200000000000000000e+01
-6.000000000000000000e+00 -1.300000000000000000e+01 -4.000000000000000000e+00 -8.000000000000000000e+00
1.100000000000000000e+01 -1.300000000000000000e+01 1.200000000000000000e+01 -8.000000000000000000e+00
4.000000000000000000e+00 7.000000000000000000e+00 5.000000000000000000e+00 1.000000000000000000e+00
5.000000000000000000e+00 -3.000000000000000000e+00 1.000000000000000000e+01 -3.000000000000000000e+00
3.000000000000000000e+00 -7.000000000000000000e+00 6.000000000000000000e+00 1.200000000000000000e+01
-8.000000000000000000e+00 -7.000000000000000000e+00 -6.000000000000000000e+00 -2.000000000000000000e+00
-2.000000000000000000e+00 1.100000000000000000e+01 -1.000000000000000000e+00 -1.000000000000000000e+01
-1.300000000000000000e+01 1.200000000000000000e+01 -8.000000000000000000e+00 1.000000000000000000e+01
-7.000000000000000000e+00 3.000000000000000000e+00 -5.000000000000000000e+00 -3.000000000000000000e+00
-4.000000000000000000e+00 2.000000000000000000e+00 -3.000000000000000000e+00 7.000000000000000000e+00
-1.000000000000000000e+01 -1.200000000000000000e+01 -6.000000000000000000e+00 1.100000000000000000e+01
5.000000000000000000e+00 -1.200000000000000000e+01 6.000000000000000000e+00 -7.000000000000000000e+00
5.000000000000000000e+00 -6.000000000000000000e+00 7.000000000000000000e+00 -1.000000000000000000e+00
1.000000000000000000e+00 0.000000000000000000e+00 4.000000000000000000e+00 -5.000000000000000000e+00
9.000000000000000000e+00 1.100000000000000000e+01 1.100000000000000000e+01 -1.300000000000000000e+01
4.000000000000000000e+00 7.000000000000000000e+00 4.000000000000000000e+00 1.200000000000000000e+01
2.000000000000000000e+00 -1.000000000000000000e+00 4.000000000000000000e+00 4.000000000000000000e+00
-4.000000000000000000e+00 -1.200000000000000000e+01 -2.000000000000000000e+00 7.000000000000000000e+00
-8.000000000000000000e+00 -5.000000000000000000e+00 -7.000000000000000000e+00 -1.000000000000000000e+01
4.000000000000000000e+00 1.100000000000000000e+01 9.000000000000000000e+00 1.200000000000000000e+01
0.000000000000000000e+00 -8.000000000000000000e+00 1.000000000000000000e+00 -1.300000000000000000e+01
-1.300000000000000000e+01 -2.000000000000000000e+00 -8.000000000000000000e+00 2.000000000000000000e+00
-3.000000000000000000e+00 -2.000000000000000000e+00 -2.000000000000000000e+00 3.000000000000000000e+00
-6.000000000000000000e+00 9.000000000000000000e+00 -4.000000000000000000e+00 -9.000000000000000000e+00
8.000000000000000000e+00 1.200000000000000000e+01 1.000000000000000000e+01 7.000000000000000000e+00
0.000000000000000000e+00 9.000000000000000000e+00 1.000000000000000000e+00 3.000000000000000000e+00
7.000000000000000000e+00 -5.000000000000000000e+00 1.100000000000000000e+01 -1.000000000000000000e+01
-1.300000000000000000e+01 -6.000000000000000000e+00 -1.100000000000000000e+01 0.000000000000000000e+00
1.000000000000000000e+01 7.000000000000000000e+00 1.200000000000000000e+01 1.000000000000000000e+00
-6.000000000000000000e+00 -3.000000000000000000e+00 -6.000000000000000000e+00 1.200000000000000000e+01
1.000000000000000000e+01 -9.000000000000000000e+00 1.200000000000000000e+01 -4.000000000000000000e+00
-1.300000000000000000e+01 8.000000000000000000e+00 -8.000000000000000000e+00 -1.200000000000000000e+01
-1.300000000000000000e+01 0.000000000000000000e+00 -8.000000000000000000e+00 -4.000000000000000000e+00
3.000000000000000000e+00 3.000000000000000000e+00 7.000000000000000000e+00 8.000000000000000000e+00
5.000000000000000000e+00 7.000000000000000000e+00 1.000000000000000000e+01 -7.000000000000000000e+00
-1.000000000000000000e+00 7.000000000000000000e+00 1.000000000000000000e+00 -1.200000000000000000e+01
3.000000000000000000e+00 -1.000000000000000000e+01 5.000000000000000000e+00 6.000000000000000000e+00
2.000000000000000000e+00 -4.000000000000000000e+00 3.000000000000000000e+00 -1.000000000000000000e+01
-1.300000000000000000e+01 0.000000000000000000e+00 -1.300000000000000000e+01 5.000000000000000000e+00
-1.300000000000000000e+01 -7.000000000000000000e+00 -1.200000000000000000e+01 1.200000000000000000e+01
-1.300000000000000000e+01 3.000000000000000000e+00 -1.100000000000000000e+01 8.000000000000000000e+00
-7.000000000000000000e+00 1.200000000000000000e+01 -4.000000000000000000e+00 7.000000000000000000e+00
6.000000000000000000e+00 -1.000000000000000000e+01 1.200000000000000000e+01 8.000000000000000000e+00
-9.000000000000000000e+00 -1.000000000000000000e+00 -7.000000000000000000e+00 -6.000000000000000000e+00
-2.000000000000000000e+00 -5.000000000000000000e+00 0.000000000000000000e+00 1.200000000000000000e+01
-1.200000000000000000e+01 5.000000000000000000e+00 -7.000000000000000000e+00 5.000000000000000000e+00
3.000000000000000000e+00 -1.000000000000000000e+01 8.000000000000000000e+00 -1.300000000000000000e+01
-7.000000000000000000e+00 -7.000000000000000000e+00 -4.000000000000000000e+00 5.000000000000000000e+00
-3.000000000000000000e+00 -2.000000000000000000e+00 -1.000000000000000000e+00 -7.000000000000000000e+00
2.000000000000000000e+00 9.000000000000000000e+00 5.000000000000000000e+00 -1.100000000000000000e+01
-1.100000000000000000e+01 -1.300000000000000000e+01 -5.000000000000000000e+00 -1.300000000000000000e+01
-1.000000000000000000e+00 6.000000000000000000e+00 0.000000000000000000e+00 -1.000000000000000000e+00
5.000000000000000000e+00 -3.000000000000000000e+00 5.000000000000000000e+00 2.000000000000000000e+00
-4.000000000000000000e+00 -1.300000000000000000e+01 -4.000000000000000000e+00 1.200000000000000000e+01
-9.000000000000000000e+00 -6.000000000000000000e+00 -9.000000000000000000e+00 6.000000000000000000e+00
-1.200000000000000000e+01 -1.000000000000000000e+01 -8.000000000000000000e+00 -4.000000000000000000e+00
1.000000000000000000e+01 2.000000000000000000e+00 1.200000000000000000e+01 -3.000000000000000000e+00
7.000000000000000000e+00 1.200000000000000000e+01 1.200000000000000000e+01 1.200000000000000000e+01
-7.000000000000000000e+00 -1.300000000000000000e+01 -6.000000000000000000e+00 5.000000000000000000e+00
-4.000000000000000000e+00 9.000000000000000000e+00 -3.000000000000000000e+00 4.000000000000000000e+00
7.000000000000000000e+00 -1.000000000000000000e+00 1.200000000000000000e+01 2.000000000000000000e+00
-7.000000000000000000e+00 6.000000000000000000e+00 -5.000000000000000000e+00 1.000000000000000000e+00
-1.300000000000000000e+01 1.100000000000000000e+01 -1.200000000000000000e+01 5.000000000000000000e+00
-3.000000000000000000e+00 7.000000000000000000e+00 -2.000000000000000000e+00 -6.000000000000000000e+00
7.000000000000000000e+00 -8.000000000000000000e+00 1.200000000000000000e+01 -7.000000000000000000e+00
-1.300000000000000000e+01 -7.000000000000000000e+00 -1.100000000000000000e+01 -1.200000000000000000e+01
1.000000000000000000e+00 -3.000000000000000000e+00 1.200000000000000000e+01 1.200000000000000000e+01
2.000000000000000000e+00 -6.000000000000000000e+00 3.000000000000000000e+00 0.000000000000000000e+00
-4.000000000000000000e+00 3.000000000000000000e+00 -2.000000000000000000e+00 -1.300000000000000000e+01
-1.000000000000000000e+00 -1.300000000000000000e+01 1.000000000000000000e+00 9.000000000000000000e+00
7.000000000000000000e+00 1.000000000000000000e+00 8.000000000000000000e+00 -6.000000000000000000e+00
1.000000000000000000e+00 -1.000000000000000000e+00 3.000000000000000000e+00 1.200000000000000000e+01
9.000000000000000000e+00 1.000000000000000000e+00 1.200000000000000000e+01 6.000000000000000000e+00
-1.000000000000000000e+00 -9.000000000000000000e+00 -1.000000000000000000e+00 3.000000000000000000e+00
-1.300000000000000000e+01 -1.300000000000000000e+01 -1.000000000000000000e+01 5.000000000000000000e+00
7.000000000000000000e+00 7.000000000000000000e+00 1.000000000000000000e+01 1.200000000000000000e+01
1.200000000000000000e+01 -5.000000000000000000e+00 1.200000000000000000e+01 9.000000000000000000e+00
6.000000000000000000e+00 3.000000000000000000e+00 7.000000000000000000e+00 1.100000000000000000e+01
5.000000000000000000e+00 -1.300000000000000000e+01 6.000000000000000000e+00 1.000000000000000000e+01
2.000000000000000000e+00 -1.200000000000000000e+01 2.000000000000000000e+00 3.000000000000000000e+00
3.000000000000000000e+00 8.000000000000000000e+00 4.000000000000000000e+00 -6.000000000000000000e+00
2.000000000000000000e+00 6.000000000000000000e+00 1.200000000000000000e+01 -1.300000000000000000e+01
9.000000000000000000e+00 -1.200000000000000000e+01 1.000000000000000000e+01 3.000000000000000000e+00
-8.000000000000000000e+00 4.000000000000000000e+00 -7.000000000000000000e+00 9.000000000000000000e+00
-1.100000000000000000e+01 1.200000000000000000e+01 -4.000000000000000000e+00 -6.000000000000000000e+00
1.000000000000000000e+00 1.200000000000000000e+01 2.000000000000000000e+00 -8.000000000000000000e+00
6.000000000000000000e+00 -9.000000000000000000e+00 7.000000000000000000e+00 -4.000000000000000000e+00
2.000000000000000000e+00 3.000000000000000000e+00 3.000000000000000000e+00 -2.000000000000000000e+00
6.000000000000000000e+00 3.000000000000000000e+00 1.100000000000000000e+01 0.000000000000000000e+00
3.000000000000000000e+00 -3.000000000000000000e+00 8.000000000000000000e+00 -8.000000000000000000e+00
7.000000000000000000e+00 8.000000000000000000e+00 9.000000000000000000e+00 3.000000000000000000e+00
-1.100000000000000000e+01 -5.000000000000000000e+00 -6.000000000000000000e+00 -4.000000000000000000e+00
-1.000000000000000000e+01 1.100000000000000000e+01 -5.000000000000000000e+00 1.000000000000000000e+01
-5.000000000000000000e+00 -8.000000000000000000e+00 -3.000000000000000000e+00 1.200000000000000000e+01
-1.000000000000000000e+01 5.000000000000000000e+00 -9.000000000000000000e+00 0.000000000000000000e+00
8.000000000000000000e+00 -1.000000000000000000e+00 1.200000000000000000e+01 -6.000000000000000000e+00
4.000000000000000000e+00 -6.000000000000000000e+00 6.000000000000000000e+00 -1.100000000000000000e+01
-1.000000000000000000e+01 1.200000000000000000e+01 -8.000000000000000000e+00 7.000000000000000000e+00
4.000000000000000000e+00 -2.000000000000000000e+00 6.000000000000000000e+00 7.000000000000000000e+00
-2.000000000000000000e+00 0.000000000000000000e+00 -2.000000000000000000e+00 1.200000000000000000e+01
-5.000000000000000000e+00 -8.000000000000000000e+00 -5.000000000000000000e+00 2.000000000000000000e+00
7.000000000000000000e+00 -6.000000000000000000e+00 1.000000000000000000e+01 1.200000000000000000e+01
-9.000000000000000000e+00 -1.300000000000000000e+01 -8.000000000000000000e+00 -8.000000000000000000e+00
-5.000000000000000000e+00 -1.300000000000000000e+01 -5.000000000000000000e+00 -2.000000000000000000e+00
8.000000000000000000e+00 -8.000000000000000000e+00 9.000000000000000000e+00 -1.300000000000000000e+01
-9.000000000000000000e+00 -1.100000000000000000e+01 -9.000000000000000000e+00 0.000000000000000000e+00
1.000000000000000000e+00 -8.000000000000000000e+00 1.000000000000000000e+00 -2.000000000000000000e+00
7.000000000000000000e+00 -4.000000000000000000e+00 9.000000000000000000e+00 1.000000000000000000e+00
-2.000000000000000000e+00 1.000000000000000000e+00 -1.000000000000000000e+00 -4.000000000000000000e+00
1.100000000000000000e+01 -6.000000000000000000e+00 1.200000000000000000e+01 -1.100000000000000000e+01
-1.200000000000000000e+01 -9.000000000000000000e+00 -6.000000000000000000e+00 4.000000000000000000e+00
3.000000000000000000e+00 7.000000000000000000e+00 7.000000000000000000e+00 1.200000000000000000e+01
5.000000000000000000e+00 5.000000000000000000e+00 1.000000000000000000e+01 8.000000000000000000e+00
0.000000000000000000e+00 -4.000000000000000000e+00 2.000000000000000000e+00 8.000000000000000000e+00
-9.000000000000000000e+00 1.200000000000000000e+01 -5.000000000000000000e+00 -1.300000000000000000e+01
0.000000000000000000e+00 7.000000000000000000e+00 2.000000000000000000e+00 1.200000000000000000e+01
-1.000000000000000000e+00 2.000000000000000000e+00 1.000000000000000000e+00 7.000000000000000000e+00
5.000000000000000000e+00 1.100000000000000000e+01 7.000000000000000000e+00 -9.000000000000000000e+00
3.000000000000000000e+00 5.000000000000000000e+00 6.000000000000000000e+00 -8.000000000000000000e+00
-1.300000000000000000e+01 -4.000000000000000000e+00 -8.000000000000000000e+00 9.000000000000000000e+00
-5.000000000000000000e+00 9.000000000000000000e+00 -3.000000000000000000e+00 -3.000000000000000000e+00
-4.000000000000000000e+00 -7.000000000000000000e+00 -3.000000000000000000e+00 -1.200000000000000000e+01
6.000000000000000000e+00 5.000000000000000000e+00 8.000000000000000000e+00 0.000000000000000000e+00
-7.000000000000000000e+00 6.000000000000000000e+00 -6.000000000000000000e+00 1.200000000000000000e+01
-1.300000000000000000e+01 6.000000000000000000e+00 -5.000000000000000000e+00 -2.000000000000000000e+00
1.000000000000000000e+00 -1.000000000000000000e+01 3.000000000000000000e+00 1.000000000000000000e+01
4.000000000000000000e+00 1.000000000000000000e+00 8.000000000000000000e+00 -4.000000000000000000e+00
-2.000000000000000000e+00 -2.000000000000000000e+00 2.000000000000000000e+00 -1.300000000000000000e+01
2.000000000000000000e+00 -1.200000000000000000e+01 1.200000000000000000e+01 1.200000000000000000e+01
-2.000000000000000000e+00 -1.300000000000000000e+01 0.000000000000000000e+00 -6.000000000000000000e+00
4.000000000000000000e+00 1.000000000000000000e+00 9.000000000000000000e+00 3.000000000000000000e+00
-6.000000000000000000e+00 -1.000000000000000000e+01 -3.000000000000000000e+00 -5.000000000000000000e+00
-3.000000000000000000e+00 -1.300000000000000000e+01 -1.000000000000000000e+00 1.000000000000000000e+00
7.000000000000000000e+00 5.000000000000000000e+00 1.200000000000000000e+01 -1.100000000000000000e+01
4.000000000000000000e+00 -2.000000000000000000e+00 5.000000000000000000e+00 -7.000000000000000000e+00
-1.300000000000000000e+01 9.000000000000000000e+00 -9.000000000000000000e+00 -5.000000000000000000e+00
7.000000000000000000e+00 1.000000000000000000e+00 8.000000000000000000e+00 6.000000000000000000e+00
7.000000000000000000e+00 -8.000000000000000000e+00 7.000000000000000000e+00 6.000000000000000000e+00
-7.000000000000000000e+00 -4.000000000000000000e+00 -7.000000000000000000e+00 1.000000000000000000e+00
-8.000000000000000000e+00 1.100000000000000000e+01 -7.000000000000000000e+00 -8.000000000000000000e+00
-1.300000000000000000e+01 6.000000000000000000e+00 -1.200000000000000000e+01 -8.000000000000000000e+00
2.000000000000000000e+00 4.000000000000000000e+00 3.000000000000000000e+00 9.000000000000000000e+00
1.000000000000000000e+01 -5.000000000000000000e+00 1.200000000000000000e+01 3.000000000000000000e+00
-6.000000000000000000e+00 -5.000000000000000000e+00 -6.000000000000000000e+00 7.000000000000000000e+00
8.000000000000000000e+00 -3.000000000000000000e+00 9.000000000000000000e+00 -8.000000000000000000e+00
2.000000000000000000e+00 -1.200000000000000000e+01 2.000000000000000000e+00 8.000000000000000000e+00
-1.100000000000000000e+01 -2.000000000000000000e+00 -1.000000000000000000e+01 3.000000000000000000e+00
-1.200000000000000000e+01 -1.300000000000000000e+01 -7.000000000000000000e+00 -9.000000000000000000e+00
-1.100000000000000000e+01 0.000000000000000000e+00 -1.000000000000000000e+01 -5.000000000000000000e+00
5.000000000000000000e+00 -3.000000000000000000e+00 1.100000000000000000e+01 8.000000000000000000e+00
-2.000000000000000000e+00 -1.300000000000000000e+01 -1.000000000000000000e+00 1.200000000000000000e+01
-1.000000000000000000e+00 -8.000000000000000000e+00 0.000000000000000000e+00 9.000000000000000000e+00
-1.300000000000000000e+01 -1.100000000000000000e+01 -1.200000000000000000e+01 -5.000000000000000000e+00
-1.000000000000000000e+01 -2.000000000000000000e+00 -1.000000000000000000e+01 1.100000000000000000e+01
-3.000000000000000000e+00 9.000000000000000000e+00 -2.000000000000000000e+00 -1.300000000000000000e+01
2.000000000000000000e+00 -3.000000000000000000e+00 3.000000000000000000e+00 2.000000000000000000e+00
-9.000000000000000000e+00 -1.300000000000000000e+01 -4.000000000000000000e+00 0.000000000000000000e+00
-4.000000000000000000e+00 6.000000000000000000e+00 -3.000000000000000000e+00 -1.000000000000000000e+01
-4.000000000000000000e+00 1.200000000000000000e+01 -2.000000000000000000e+00 -7.000000000000000000e+00
-6.000000000000000000e+00 -1.100000000000000000e+01 -4.000000000000000000e+00 9.000000000000000000e+00
6.000000000000000000e+00 -3.000000000000000000e+00 6.000000000000000000e+00 1.100000000000000000e+01
-1.300000000000000000e+01 1.100000000000000000e+01 -5.000000000000000000e+00 5.000000000000000000e+00
1.100000000000000000e+01 1.100000000000000000e+01 1.200000000000000000e+01 6.000000000000000000e+00
7.000000000000000000e+00 -5.000000000000000000e+00 1.200000000000000000e+01 -2.000000000000000000e+00
-1.000000000000000000e+00 1.200000000000000000e+01 0.000000000000000000e+00 7.000000000000000000e+00
-4.000000000000000000e+00 -8.000000000000000000e+00 -3.000000000000000000e+00 -2.000000000000000000e+00
-7.000000000000000000e+00 1.000000000000000000e+00 -6.000000000000000000e+00 7.000000000000000000e+00
-1.300000000000000000e+01 -1.200000000000000000e+01 -8.000000000000000000e+00 -1.300000000000000000e+01
-7.000000000000000000e+00 -2.000000000000000000e+00 -6.000000000000000000e+00 -8.000000000000000000e+00
-8.000000000000000000e+00 5.000000000000000000e+00 -6.000000000000000000e+00 -9.000000000000000000e+00
-5.000000000000000000e+00 -1.000000000000000000e+00 -4.000000000000000000e+00 5.000000000000000000e+00
-1.300000000000000000e+01 7.000000000000000000e+00 -8.000000000000000000e+00 1.000000000000000000e+01
1.000000000000000000e+00 5.000000000000000000e+00 5.000000000000000000e+00 -1.300000000000000000e+01
1.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+01 -1.300000000000000000e+01
9.000000000000000000e+00 1.200000000000000000e+01 1.000000000000000000e+01 -1.000000000000000000e+00
5.000000000000000000e+00 -8.000000000000000000e+00 1.000000000000000000e+01 -9.000000000000000000e+00
-1.000000000000000000e+00 1.100000000000000000e+01 1.000000000000000000e+00 -1.300000000000000000e+01
-9.000000000000000000e+00 -3.000000000000000000e+00 -6.000000000000000000e+00 2.000000000000000000e+00
-1.000000000000000000e+00 -1.000000000000000000e+01 1.000000000000000000e+00 1.200000000000000000e+01
-1.300000000000000000e+01 1.000000000000000000e+00 -8.000000000000000000e+00 -1.000000000000000000e+01
8.000000000000000000e+00 -1.100000000000000000e+01 1.000000000000000000e+01 -6.000000000000000000e+00
2.000000000000000000e+00 -1.300000000000000000e+01 3.000000000000000000e+00 -6.000000000000000000e+00
7.000000000000000000e+00 -1.300000000000000000e+01 1.200000000000000000e+01 -9.000000000000000000e+00
-1.000000000000000000e+01 -1.000000000000000000e+01 -5.000000000000000000e+00 -7.000000000000000000e+00
-1.000000000000000000e+01 -8.000000000000000000e+00 -8.000000000000000000e+00 -1.300000000000000000e+01
4.000000000000000000e+00 -6.000000000000000000e+00 8.000000000000000000e+00 5.000000000000000000e+00
3.000000000000000000e+00 1.200000000000000000e+01 8.000000000000000000e+00 -1.300000000000000000e+01
-4.000000000000000000e+00 2.000000000000000000e+00 -3.000000000000000000e+00 -3.000000000000000000e+00
5.000000000000000000e+00 -1.300000000000000000e+01 1.000000000000000000e+01 -1.200000000000000000e+01
4.000000000000000000e+00 -1.300000000000000000e+01 5.000000000000000000e+00 -1.000000000000000000e+00
-9.000000000000000000e+00 9.000000000000000000e+00 -4.000000000000000000e+00 3.000000000000000000e+00
0.000000000000000000e+00 3.000000000000000000e+00 3.000000000000000000e+00 -9.000000000000000000e+00
-1.200000000000000000e+01 1.000000000000000000e+00 -6.000000000000000000e+00 1.000000000000000000e+00
3.000000000000000000e+00 2.000000000000000000e+00 4.000000000000000000e+00 -8.000000000000000000e+00
-1.000000000000000000e+01 -1.000000000000000000e+01 -1.000000000000000000e+01 9.000000000000000000e+00
8.000000000000000000e+00 -1.300000000000000000e+01 1.200000000000000000e+01 1.200000000000000000e+01
-8.000000000000000000e+00 -1.200000000000000000e+01 -6.000000000000000000e+00 -5.000000000000000000e+00
2.000000000000000000e+00 2.000000000000000000e+00 3.000000000000000000e+00 7.000000000000000000e+00
1.000000000000000000e+01 6.000000000000000000e+00 1.100000000000000000e+01 -8.000000000000000000e+00
6.000000000000000000e+00 8.000000000000000000e+00 8.000000000000000000e+00 -1.200000000000000000e+01
-7.000000000000000000e+00 1.000000000000000000e+01 -6.000000000000000000e+00 5.000000000000000000e+00
-3.000000000000000000e+00 -9.000000000000000000e+00 -3.000000000000000000e+00 9.000000000000000000e+00
-1.000000000000000000e+00 -1.300000000000000000e+01 -1.000000000000000000e+00 5.000000000000000000e+00
-3.000000000000000000e+00 -7.000000000000000000e+00 -3.000000000000000000e+00 4.000000000000000000e+00
-8.000000000000000000e+00 -2.000000000000000000e+00 -8.000000000000000000e+00 3.000000000000000000e+00
4.000000000000000000e+00 2.000000000000000000e+00 1.200000000000000000e+01 1.200000000000000000e+01
2.000000000000000000e+00 -5.000000000000000000e+00 3.000000000000000000e+00 1.100000000000000000e+01
6.000000000000000000e+00 -9.000000000000000000e+00 1.100000000000000000e+01 -1.300000000000000000e+01
3.000000000000000000e+00 -1.000000000000000000e+00 7.000000000000000000e+00 1.200000000000000000e+01
1.100000000000000000e+01 -1.000000000000000000e+00 1.200000000000000000e+01 4.000000000000000000e+00
-3.000000000000000000e+00 0.000000000000000000e+00 -3.000000000000000000e+00 6.000000000000000000e+00
4.000000000000000000e+00 -1.100000000000000000e+01 4.000000000000000000e+00 1.200000000000000000e+01
2.000000000000000000e+00 -4.000000000000000000e+00 2.000000000000000000e+00 1.000000000000000000e+00
-1.000000000000000000e+01 -6.000000000000000000e+00 -8.000000000000000000e+00 1.000000000000000000e+00
-1.300000000000000000e+01 7.000000000000000000e+00 -1.100000000000000000e+01 1.000000000000000000e+00
-1.300000000000000000e+01 1.200000000000000000e+01 -1.100000000000000000e+01 -1.300000000000000000e+01
6.000000000000000000e+00 0.000000000000000000e+00 1.100000000000000000e+01 -1.300000000000000000e+01
0.000000000000000000e+00 -1.000000000000000000e+00 1.000000000000000000e+00 4.000000000000000000e+00
-1.300000000000000000e+01 3.000000000000000000e+00 -9.000000000000000000e+00 -2.000000000000000000e+00
-9.000000000000000000e+00 8.000000000000000000e+00 -6.000000000000000000e+00 -3.000000000000000000e+00
-1.300000000000000000e+01 -6.000000000000000000e+00 -8.000000000000000000e+00 -2.000000000000000000e+00
5.000000000000000000e+00 -9.000000000000000000e+00 8.000000000000000000e+00 1.000000000000000000e+01
2.000000000000000000e+00 7.000000000000000000e+00 3.000000000000000000e+00 -9.000000000000000000e+00
-1.000000000000000000e+00 -6.000000000000000000e+00 -1.000000000000000000e+00 -1.000000000000000000e+00
9.000000000000000000e+00 5.000000000000000000e+00 1.100000000000000000e+01 -2.000000000000000000e+00
1.100000000000000000e+01 -3.000000000000000000e+00 1.200000000000000000e+01 -8.000000000000000000e+00
3.000000000000000000e+00 0.000000000000000000e+00 3.000000000000000000e+00 5.000000000000000000e+00
-1.000000000000000000e+00 4.000000000000000000e+00 0.000000000000000000e+00 1.000000000000000000e+01
3.000000000000000000e+00 -6.000000000000000000e+00 4.000000000000000000e+00 5.000000000000000000e+00
-1.300000000000000000e+01 0.000000000000000000e+00 -1.000000000000000000e+01 5.000000000000000000e+00
5.000000000000000000e+00 8.000000000000000000e+00 1.200000000000000000e+01 1.100000000000000000e+01
8.000000000000000000e+00 9.000000000000000000e+00 9.000000000000000000e+00 -6.000000000000000000e+00
7.000000000000000000e+00 -4.000000000000000000e+00 8.000000000000000000e+00 -1.200000000000000000e+01
-1.000000000000000000e+01 4.000000000000000000e+00 -1.000000000000000000e+01 9.000000000000000000e+00
7.000000000000000000e+00 3.000000000000000000e+00 1.200000000000000000e+01 4.000000000000000000e+00
9.000000000000000000e+00 -7.000000000000000000e+00 1.000000000000000000e+01 -2.000000000000000000e+00
7.000000000000000000e+00 0.000000000000000000e+00 1.200000000000000000e+01 -2.000000000000000000e+00
-1.000000000000000000e+00 -6.000000000000000000e+00 0.000000000000000000e+00 -1.100000000000000000e+01