Python Bundle Adjustment Routines
Project description
Python Bundle Adjustment
- Load the data.
from pyba.CameraNetwork import CameraNetwork
import pickle
import glob
import numpy as np
image_path = './data/test/camera_{cam_id}_img_00000{img_id}.jpg'
pr_path = './data/test/df3d_2/pose_result*.pkl'
d = pickle.load(open(glob.glob(pr_path)[0], 'rb'))
camNet = CameraNetwork(points2d=d['points2d'], calib=d, image_path=image_path)
points2d is a numpy array with shape T x J x 2. All units are in pixels. calib is a nested dictionary where keys are camera id's, indexed starting from 0 up to n_cameras-1. values are another sets of dictionaries with keys "R", "tvec", "intr", "distort"
calib = {0: {'R': array([[ 0.90885957, 0.006461 , -0.41705219],
[ 0.01010426, 0.99924554, 0.03750006],
[ 0.41697983, -0.0382963 , 0.90810859]]),
'tvec': array([1.65191596e+00, 2.22582670e-02, 1.18353733e+02]),
'intr': array([[1.60410e+04, 0.00000e+00, 2.40000e+02],
[0.00000e+00, 1.59717e+04, 4.80000e+02],
[0.00000e+00, 0.00000e+00, 1.00000e+00]]),
'distort': array([0., 0., 0., 0., 0.])},
1: {'R': array([[ 0.59137248, 0.02689833, -0.80594979],
[-0.00894927, 0.9996009 , 0.02679478],
[ 0.80634887, -0.00863303, 0.59137718]]),
'tvec': array([ 1.02706542e+00, -9.25820468e-02, 1.18251732e+02]),
'intr': array([[1.60410e+04, 0.00000e+00, 2.40000e+02],
[0.00000e+00, 1.59717e+04, 4.80000e+02],
[0.00000e+00, 0.00000e+00, 1.00000e+00]]),
'distort': array([0., 0., 0., 0., 0.])},
}
- Visualize the 2d pose.
import matplotlib.pyplot as plt
img = camNet.plot_2d(0, points='points2d')
plt.figure(figsize=(20,20))
plt.imshow(img, cmap='gray')
plt.axis('off')
- Do the bundle adjustment.
from pyba.pyba import bundle_adjust
bundle_adjust(camNet)
Iteration Total nfev Cost Cost reduction Step norm Optimality
0 1 7.1659e+05 7.27e+05
1 2 2.9376e+05 4.23e+05 1.08e+01 3.12e+05
2 4 2.6084e+05 3.29e+04 2.39e+00 1.85e+05
3 5 2.4676e+05 1.41e+04 3.04e+00 2.20e+04
4 7 2.4604e+05 7.20e+02 1.32e+00 1.75e+04
5 8 2.4579e+05 2.53e+02 2.67e+00 2.86e+04
6 9 2.4487e+05 9.20e+02 2.53e+00 2.18e+04
7 10 2.4472e+05 1.43e+02 2.48e+00 2.02e+04
8 11 2.4441e+05 3.18e+02 6.71e-01 1.77e+03
9 12 2.4440e+05 9.43e+00 6.78e-01 2.13e+03
`ftol` termination condition is satisfied.
Function evaluations 12, initial cost 7.1659e+05, final cost 2.4440e+05, first-order optimality 2.13e+03.
- Visualize the resulting camera rig.
fig = plt.figure(figsize=(10,10))
ax3d = fig.add_subplot(111, projection='3d')
camNet.draw(ax3d, size=20)
camNet.plot_3d(ax3d, img_id=0, size=10)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
nely-pyba-0.11.tar.gz
(8.0 kB
view details)
Built Distribution
nely_pyba-0.11-py3-none-any.whl
(10.1 kB
view details)
File details
Details for the file nely-pyba-0.11.tar.gz
.
File metadata
- Download URL: nely-pyba-0.11.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.6.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3668cd761d30a060877d4b13e16376ffea73a53c8f6d9444346878d66028ae63 |
|
MD5 | 45cdfef9aad45d340266bf4cd1394631 |
|
BLAKE2b-256 | fb5190cf0dc69d840f25f74caf5bfb49a582a6186f1ebe2a0b52143dd2147985 |
File details
Details for the file nely_pyba-0.11-py3-none-any.whl
.
File metadata
- Download URL: nely_pyba-0.11-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.6.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 639050f3f9079c3185479a3c01e2a5d6882f4fdb9604c7d13949ef328d53bde7 |
|
MD5 | d4117a6e35545cd05de8b6fcbd9d3699 |
|
BLAKE2b-256 | 3eeebbcc70089ebb1e0eecaf3e7f56d67848c944f6f0c368f7877dc14cd74e40 |