Настройка пакета ухудшает параметры камеры - PullRequest
1 голос
/ 02 апреля 2019

Я пытаюсь применить настройку связки, как описано здесь , к моим собственным сгенерированным случайным данным.Однако, после запуска алгоритма оптимизации, параметр ухудшается по сравнению с основным параметром истинности, который я использовал для создания данных.Мой код выглядит следующим образом:

Генерация моих данных:

N = 10000
points_3d = np.random.uniform(-1, 1, size=(N, 3))


my_camera_params_gt = np.array(np.array([[ 1.57415159e-02, -1.27909362e-02, -4.40084981e-03,  4.96590616e+00,
           4.89248613e+00,  6.12022403e+00, 3.99751526e+02, -3.17706439e-07, 5.88204905e-13],
          [ 1.59773241e-02, -2.52244646e-02, -9.40014165e-03,  4.99143323e+00,
           4.87811951e+00,  5.71901331e+00,  4.02017534e+02, -3.78047656e-07, 9.30743117e-13]]))
my_camera_params_initial = my_camera_params_gt + my_camera_params_gt * np.random.normal(0,0.1, size = my_camera_params_gt.shape)

my_points_3d_gt = points_3d
my_points_3d_initial = my_points_3d_gt + my_points_3d_gt * np.random.normal(0,0.1, size = my_points_3d_gt.shape)

n_points = my_points_3d_gt.shape[0]
n_observations = n_points * 2
my_camera_indices = np.concatenate([np.zeros((n_points), dtype=np.int16), np.ones((n_points), dtype=np.int16)])
my_point_indices = np.concatenate([np.arange(n_points, dtype=np.int16), np.arange(n_points, dtype=np.int16)])


my_points_2d_gt = project(my_points_3d_gt[my_point_indices], my_camera_params_gt[my_camera_indices])
my_points_2d = my_points_2d_gt + my_points_2d_gt * np.random.normal(0,0.01, size = my_points_2d_gt.shape)

n_cameras = my_camera_params_gt.shape[0]
n_points = my_points_3d_gt.shape[0]

И тогда я называю процесс оптимизации следующим образом:

x0 = np.hstack((my_camera_params_initial.ravel(), my_points_3d_initial.ravel()))
A = bundle_adjustment_sparsity(n_cameras, n_points, my_camera_indices, my_point_indices)
res = least_squares(fun, x0, jac_sparsity=A, verbose=2, x_scale='jac', ftol=1e-5, method='trf',
                    args=(n_cameras, n_points, my_camera_indices, my_point_indices, my_points_2d))

Со всеми функциями какопределено в ссылке.

Однако, если я тогда сравниваю основную истину с результатами оптимизации:

print(my_camera_params_gt)
print('#####')
print(my_camera_params_initial)
print('#####')
print(res.x[:18].reshape(2,9))

результаты оптимизации хуже, чем первоначальные предположения.Как это может быть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...