def test1(objectPoints_square): # ------------------------------Z fixed, study X Y----------------------------------------- cams_Zfixed = [] for x in np.linspace(-0.5, 0.5, 10): for y in np.linspace(-0.5, 0.5, 10): cam1 = Camera() cam1.set_K(fx=800, fy=800, cx=640 / 2., cy=480 / 2.) cam1.set_width_heigth(640, 480) ## DEFINE A SET OF CAMERA POSES IN DIFFERENT POSITIONS BUT ALWAYS LOOKING # TO THE CENTER OF THE PLANE MODEL # TODO LOOK AT cam1.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(180.0)) # TODO cv2.SOLVEPNP_DLS, cv2.SOLVEPNP_EPNP, cv2.SOLVEPNP_ITERATIVE # cam1.set_t(x, -0.01, 1.31660688, frame='world') cam1.set_t(x, y, 1.3, frame='world') # 0.28075725, -0.23558331, 1.31660688 cams_Zfixed.append(cam1) new_objectPoints = np.copy(objectPoints_square) xInputs = [] yInputs = [] volumes = [] for cam in cams_Zfixed: t = cam.get_world_position() xInputs.append(t[0]) yInputs.append(t[1]) cov_mat = covariance_alpha_belt_r(cam, new_objectPoints) a, b, c = ellipsoid.get_semi_axes_abc(cov_mat, 0.95) v = ellipsoid.ellipsoid_Volume(a, b, c) volumes.append(v) dvm.displayCovVolume_Zfixed3D(xInputs, yInputs, volumes)
def test_f(): """ Test f(input, K, obj_point) :return: """ alpha = 0 belt = 0 r = 1 input = [0.0, 0.0, 0.0] input[0] = alpha input[1] = belt input[2] = r cam = Camera() cam.set_K(fx=800, fy=800, cx=640 / 2., cy=480 / 2.) cam.set_width_heigth(640, 480) cam.set_R_mat( Rt_matrix_from_euler_t.R_matrix_from_euler_t(0, np.deg2rad(0), 0)) cam.set_t(0., 0., 0.5, 'world') pl = CircularPlane(origin=np.array([0., 0., 0.]), normal=np.array([0, 0, 1]), radius=0.15, n=4) x1 = round(pl.radius * np.cos(np.deg2rad(45)), 3) y1 = round(pl.radius * np.sin(np.deg2rad(45)), 3) objectPoints_square = np.array([[x1, -x1, -x1, x1], [y1, y1, -y1, -y1], [0., 0., 0., 0.], [1., 1., 1., 1.]]) new_objectPoints = np.copy(objectPoints_square) cms.f(input, cam.K, new_objectPoints)
def create_cam_distribution(cam=None, plane_size=(0.3, 0.3), theta_params=(0, 360, 10), phi_params=(0, 70, 5), r_params=(0.25, 1.0, 4), plot=False): if cam == None: # Create an initial camera on the center of the world cam = Camera() f = 800 cam.set_K(fx=f, fy=f, cx=320, cy=240) #Camera Matrix cam.img_width = 320 * 2 cam.img_height = 240 * 2 # we create a default plane with 4 points with a side lenght of w (meters) plane = Plane(origin=np.array([0, 0, 0]), normal=np.array([0, 0, 1]), size=plane_size, n=(2, 2)) #We extend the size of this plane to account for the deviation from a uniform pattern #plane.size = (plane.size[0] + deviation, plane.size[1] + deviation) d_space = np.linspace(r_params[0], r_params[1], r_params[2]) t_list = [] for d in d_space: xx, yy, zz = uniform_sphere(theta_params, phi_params, d, False) sphere_points = np.array( [xx.ravel(), yy.ravel(), zz.ravel()], dtype=np.float32) t_list.append(sphere_points) t_space = np.hstack(t_list) cams = [] for t in t_space.T: cam = cam.clone() cam.set_t(-t[0], -t[1], -t[2]) cam.set_R_mat(R_matrix_from_euler_t(0.0, 0, 0)) cam.look_at([0, 0, 0]) plane.set_origin(np.array([0, 0, 0])) plane.uniform() objectPoints = plane.get_points() imagePoints = cam.project(objectPoints) #if plot: # cam.plot_image(imagePoints) if ((imagePoints[0, :] < cam.img_width) & (imagePoints[0, :] > 0)).all(): if ((imagePoints[1, :] < cam.img_height) & (imagePoints[1, :] > 0)).all(): cams.append(cam) if plot: planes = [] plane.uniform() planes.append(plane) plot3D(cams, planes) return cams
def test2_covariance_alpha_belt_r(): """ Test covariance_alpha_belt_r(cam, new_objectPoints) X Y fixed, Z changed :return: """ pl = CircularPlane(origin=np.array([0., 0., 0.]), normal=np.array([0, 0, 1]), radius=0.15, n=4) x1 = round(pl.radius * np.cos(np.deg2rad(45)), 3) y1 = round(pl.radius * np.sin(np.deg2rad(45)), 3) objectPoints_square = np.array([[x1, -x1, -x1, x1], [y1, y1, -y1, -y1], [0., 0., 0., 0.], [1., 1., 1., 1.]]) new_objectPoints = np.copy(objectPoints_square) # -----------------------------X Y fixed, Z changed----------------------------- cams_XYfixed = [] for i in np.linspace(0.5, 2, 5): cam1 = Camera() cam1.set_K(fx=800, fy=800, cx=640 / 2., cy=480 / 2.) cam1.set_width_heigth(640, 480) cam1.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(180.0)) cam1.set_t(0, 0, i, frame='world') # 0.28075725, -0.23558331, 1.31660688 cams_XYfixed.append(cam1) zInputs = [] volumes = [] ellipsoid_paras = np.array([[0], [0], [0], [0], [0], [0]]) # a,b,c,x,y,z for cam in cams_XYfixed: cam_tem = cam.clone() valid = cms.validCam(cam_tem, new_objectPoints) if valid: t = cam.get_world_position() zInputs.append(t[2]) print "Height", t[2] cov_mat = cms.covariance_alpha_belt_r(cam, new_objectPoints) a, b, c = ellipsoid.get_semi_axes_abc(cov_mat, 0.95) display_array = np.array( [[0.0], [0.0], [0.0], [0.0], [0.0], [0.0]], dtype=float) display_array[0:3, 0] = a, b, c display_array[3:6, 0] = np.copy(t[0:3]) ellipsoid_paras = np.hstack((ellipsoid_paras, display_array)) v = ellipsoid.ellipsoid_Volume(a, b, c) print "volumn", v volumes.append(v) dvm.displayCovVolume_XYfixed3D(zInputs, volumes)
def Z_fixed_study_square(): cams_HeightFixed = [] cam_1 = Camera() cam_1.set_K(fx=800, fy=800, cx=640 / 2., cy=480 / 2.) cam_1.set_width_heigth(640, 480) cam_1.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(180.0)) cam_1.set_t(0.1, 0.1, 1, frame='world') cams_HeightFixed.append(cam_1) cam_2 = Camera() cam_2.set_K(fx=800, fy=800, cx=640 / 2., cy=480 / 2.) cam_2.set_width_heigth(640, 480) cam_2.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(180.0)) cam_2.set_t(-0.1, 0.1, 1, frame='world') # 0.28075725, -0.23558331, 1.31660688 cams_HeightFixed.append(cam_2) cam_3 = Camera() cam_3.set_K(fx=800, fy=800, cx=640 / 2., cy=480 / 2.) cam_3.set_width_heigth(640, 480) cam_3.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(180.0)) cam_3.set_t(-0.1, -0.1, 1, frame='world') # 0.28075725, -0.23558331, 1.31660688 cams_HeightFixed.append(cam_3) cam_4 = Camera() cam_4.set_K(fx=800, fy=800, cx=640 / 2., cy=480 / 2.) cam_4.set_width_heigth(640, 480) cam_4.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(180.0)) cam_4.set_t(0.1, -0.1, 1, frame='world') # 0.28075725, -0.23558331, 1.31660688 cams_HeightFixed.append(cam_4) inputX, inputY, inputZ, input_ippe1_t, input_ippe1_R, input_ippe2_t, input_ippe2_R, input_pnp_t, input_pnp_R, input_transfer_error, display_mat = bf.heightGetCondNum(cams_HeightFixed)
def test3_covariance_alpha_belt_r(): """ Y fixed, study X Z like a half circle above the marker :return: """ pl = CircularPlane(origin=np.array([0., 0., 0.]), normal=np.array([0, 0, 1]), radius=0.15, n=4) x1 = round(pl.radius * np.cos(np.deg2rad(45)), 3) y1 = round(pl.radius * np.sin(np.deg2rad(45)), 3) objectPoints_square = np.array([[x1, -x1, -x1, x1], [y1, y1, -y1, -y1], [0., 0., 0., 0.], [1., 1., 1., 1.]]) new_objectPoints = np.copy(objectPoints_square) # ------------------------------Y fixed, study X Z like a half circle ----------------------------------------- cams_Yfixed = [] for angle in np.linspace(np.deg2rad(0), np.deg2rad(180), 20): x = np.cos(angle) z = np.sin(angle) cam1 = Camera() cam1.set_K(fx=800, fy=800, cx=640 / 2., cy=480 / 2.) cam1.set_width_heigth(640, 480) # TODO WE have not set R yet # print 'cam1.R',cam1.R cam1.set_t(x, 0, z, frame='world') cams_Yfixed.append(cam1) xInputs = [] zInputs = [] volumes = [] for cam in cams_Yfixed: cam_tem = cam.clone() valid = cms.validCam(cam_tem, new_objectPoints) if valid: t = cam.get_world_position() xInputs.append(t[0]) zInputs.append(t[2]) print "x = ", t[0] print "z = ", t[2] cov_mat = cms.covariance_alpha_belt_r(cam, new_objectPoints) a, b, c = ellipsoid.get_semi_axes_abc(cov_mat, 0.95) v = ellipsoid.ellipsoid_Volume(a, b, c) print "v", v volumes.append(v) dvm.displayCovVolume_Zfixed3D(xInputs, zInputs, volumes)
def getCondNum_camPoseInRealWord(x_w, y_w, grid_reso, width, height): """ Compute the condition number of camera position in real world coordinate :param x_w: camera potion in real world coordinate :param y_w: camera potion in real world coordinate :param width: gird 60 :param height: grid 30 :return: """ # width = int(grid_width/ grid_reso) # height = int(grid_height/ grid_reso) T_WM = getMarkerTransformationMatrix(width, height, grid_reso) pos_world_homo = np.array([x_w, y_w, 0, 1]) pos_marker = np.dot(T_WM, pos_world_homo) ## CREATE A SIMULATED CAMERA cam = Camera() cam.set_K(fx=800, fy=800, cx=640 / 2., cy=480 / 2.) cam.set_width_heigth(640, 480) cam.set_t(pos_marker[0], pos_marker[1], pos_marker[2], 'world') cam.set_R_mat(Rt_matrix_from_euler_t.R_matrix_from_euler_t(0.0, 0, 0)) cam.look_at([0, 0, 0]) radius = np.sqrt(pos_marker[0]**2 + pos_marker[1]**2 + pos_marker[2]**2) angle = np.rad2deg(np.arccos(pos_marker[1] / radius)) cam.set_radius(radius) cam.set_angle(angle) objectPoints = np.copy(new_objectPoints) imagePoints = np.array(cam.project(objectPoints, False)) condNum = np.inf # undetected region set as 0 if ((imagePoints[0, :] < cam.img_width) & (imagePoints[0, :] > 0) & (imagePoints[1, :] < cam.img_height) & (imagePoints[1, :] > 0)).all(): input_list = gd.extract_objectpoints_vars(objectPoints) input_list.append(np.array(cam.K)) input_list.append(np.array(cam.R)) input_list.append(cam.t[0, 3]) input_list.append(cam.t[1, 3]) input_list.append(cam.t[2, 3]) input_list.append(cam.radius) # TODO normalize points!!! set normalize as default True condNum = gd.matrix_condition_number_autograd(*input_list, normalize=True) return condNum
def test_covariance_alpha_belt_r(): """ Test covariance_alpha_belt_r(cam, new_objectPoints) Z fixed, study X Y- :return: """ pl = CircularPlane(origin=np.array([0., 0., 0.]), normal=np.array([0, 0, 1]), radius=0.15, n=4) x1 = round(pl.radius * np.cos(np.deg2rad(45)), 3) y1 = round(pl.radius * np.sin(np.deg2rad(45)), 3) objectPoints_square = np.array([[x1, -x1, -x1, x1], [y1, y1, -y1, -y1], [0., 0., 0., 0.], [1., 1., 1., 1.]]) new_objectPoints = np.copy(objectPoints_square) # ------------------------------Z fixed, study X Y----------------------------------------- cams_Zfixed = [] for x in np.linspace(-0.5, 0.5, 5): for y in np.linspace(-0.5, 0.5, 5): cam1 = Camera() cam1.set_K(fx=800, fy=800, cx=640 / 2., cy=480 / 2.) cam1.set_width_heigth(640, 480) # TODO WE have not set R yet # print 'cam1.R',cam1.R cam1.set_t(x, y, 1.3, frame='world') cams_Zfixed.append(cam1) xInputs = [] yInputs = [] volumes = [] for cam in cams_Zfixed: cam_tem = cam.clone() valid = cms.validCam(cam_tem, new_objectPoints) if valid: t = cam.get_world_position() xInputs.append(t[0]) yInputs.append(t[1]) cov_mat = cms.covariance_alpha_belt_r(cam, new_objectPoints) a, b, c = ellipsoid.get_semi_axes_abc(cov_mat, 0.95) v = ellipsoid.ellipsoid_Volume(a, b, c) volumes.append(v) dvm.displayCovVolume_Zfixed3D(xInputs, yInputs, volumes)
def getT_MC_and_Rt_errors(T_WM, pos_world, Rmat_error_loop, tvec_error_loop): pos_world_homo = np.array([pos_world[0], pos_world[1], 0, 1]) pos_marker = np.dot(T_WM, pos_world_homo) # print "pos_marker\n", pos_marker # Create an initial camera on the center of the world cam = Camera() f = 800 cam.set_K(fx=f, fy=f, cx=320, cy=240) # Camera Matrix cam.img_width = 320 * 2 cam.img_height = 240 * 2 cam = cam.clone() cam.set_t(pos_marker[0], pos_marker[1], pos_marker[2], 'world') cam.set_R_mat(Rt_matrix_from_euler_t.R_matrix_from_euler_t(0.0, 0, 0)) # print "cam.R\n",cam.R cam.look_at([0, 0, 0]) # print "cam.Rt after look at\n",cam.R objectPoints = np.copy(new_objectPoints) imagePoints = np.array(cam.project(objectPoints, False)) new_imagePoints = np.copy(imagePoints) # ----------------------------------------------------------------- new_imagePoints_noisy = cam.addnoise_imagePoints(new_imagePoints, mean=0, sd=4) # print "new_imagePoints_noisy\n",new_imagePoints_noisy debug = False # TODO cv2.SOLVEPNP_DLS, cv2.SOLVEPNP_EPNP, cv2.SOLVEPNP_ITERATIVE pnp_tvec, pnp_rmat = pose_pnp(new_objectPoints, new_imagePoints_noisy, cam.K, debug, cv2.SOLVEPNP_ITERATIVE, False) # Calculate errors Cam_clone_cv2 = cam.clone_withPose(pnp_tvec, pnp_rmat) tvec_error, Rmat_error = ef.calc_estimated_pose_error( cam.get_tvec(), cam.R, Cam_clone_cv2.get_tvec(), pnp_rmat) Rmat_error_loop.append(Rmat_error) tvec_error_loop.append(tvec_error) # print "cam.get_world_position()\n",cam.get_world_position() t = np.eye(4) t[:3, 3] = pnp_tvec[:3] T_MC = np.dot(t, pnp_rmat) return T_MC
s1 = Screen() s1.set_origin(np.array([0.0, 0, 0])) s1.set_dimensions(0.50, 0.30) s1.set_pixel_pitch(0.02) red = (1, 0, 0) s1.set_color(red) s1.curvature_radius = 1.800 s1.update() s1.rotate_x(np.deg2rad(-190.)) #s1.rotate_y(deg2rad(-15.)) #%% Project screen points in image # cam.set_world_position(-0.05, -0.05, -0.45) cam.set_t(-0.05, -0.05, -0.45, 'world') cam.rotate_x(np.deg2rad(+10.)) cam.rotate_y(np.deg2rad(-5.)) cam.rotate_z(np.deg2rad(-5.)) cam.set_P() cam_points1 = np.array(cam.project(s1.get_points())) #%% plot # plot projection plt.figure() plt.plot(cam_points1[0], cam_points1[1], '.', color='r') plt.xlim(0, 1280) plt.ylim(0, 960) plt.gca().invert_yaxis() plt.show()
class OptimalPointsSim(object): """ Class that defines and optimization to obtain optimal control points configurations for homography and plannar pose estimation. """ def __init__(self): """ Definition of a simulated camera """ self.cam = Camera() self.cam.set_K(fx=100, fy=100, cx=640, cy=480) self.cam.set_width_heigth(1280, 960) """ Initial camera pose looking stratight down into the plane model """ self.cam.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(180)) self.cam.set_t(0.0, 0.0, 1.5, frame='world') """ Plane for the control points """ self.sph = Sphere(radius=0.5) self.sph.random_points(p=6, r=0.5, min_dist=0.001) def run(self): self.objectPoints = self.sph.get_sphere_points() self.init_params = flatten_points(self.objectPoints, type='object') self.objective1 = lambda params: matrix_condition_number_autograd( params, self.cam.P, normalize=False) self.objective2 = lambda params, iter: matrix_condition_number_autograd( params, self.cam.P, normalize=True) print("Optimizing condition number...") objective_grad = grad(self.objective2) self.optimized_params = adam(objective_grad, self.init_params, step_size=0.001, num_iters=200, callback=self.plot_points) def plot_points(self, params, iter, gradient): phisim = np.linspace((-math.pi) / 2., (math.pi / 2.)) thetasim = np.linspace(0, 2 * np.pi) print params pointscoord = np.full((3, 6), 0.0) for i in range(6): pointscoord[0, i] = params[i] pointscoord[1, i] = params[i + 1] pointscoord[2, i] = params[i + 2] x = np.outer(np.sin(thetasim), np.cos(phisim)) y = np.outer(np.sin(thetasim), np.sin(phisim)) z = np.outer(np.cos(thetasim), np.ones_like(phisim)) fig, ax = plt.subplots(subplot_kw={'projection': '3d'}) ax.plot_wireframe(sph.radius * x, sph.radius * y, sph.radius * z, color='g') ax.scatter(pointscoord[:3, 0], pointscoord[:3, 1], pointscoord[:3, 2], c='r') ax.scatter(pointscoord[:3, 3], pointscoord[:3, 4], pointscoord[:3, 5], c='r') plt.show()
#s1.rotate_y(deg2rad(-15.)) #%% configure the different views cam_positions = [] cam_orientations = [] cam_positions.append(-np.array([0., 0., 0.4, 1]).T) cam_positions.append(-np.array([0., -0.1, 0.7, 1]).T) cam_positions.append(-np.array([0., 0.1, 0.7, 1]).T) #%% Project screen points in image # cam.set_world_position(-0.05, -0.05, -0.45) cam.set_t(-0.05, -0.05, -0.45, 'world') cam.rotate_x(np.deg2rad(+10.)) cam.rotate_y(np.deg2rad(-5.)) cam.rotate_z(np.deg2rad(-5.)) cam.set_P() cam_points1 = np.array(cam.project(s1.get_points())) #%% # cam.set_world_position(-0.2, -0.05, -0.4) cam.set_t(-0.2, -0.05, -0.4, 'world') cam.rotate_y(np.deg2rad(-20.)) cam.set_P() cam_points2 = np.array(cam.project(s1.get_points())) #%% # cam.set_world_position(0.2, -0.05, -0.5)
List of objects of the type Plane Returns ------- None """ # mlab.figure(figure=None, bgcolor=(0.1,0.5,0.5), fgcolor=None, # engine=None, size=(400, 350)) axis_scale = 0.05 for cam in cams: plot3D_cam(cam, axis_scale) for fiducial_space in planes: # Plot plane points in 3D plotPoints3D(fiducial_space) display_figure() cam = Camera() cam.set_K(fx=100, fy=100, cx=640, cy=480) cam.set_width_heigth(1280, 960) """ Initial camera pose looking straight down into the plane model """ cam.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(180)) cam.set_t(0.0, 0.0, 1.5, frame='world') """ Plane for the control points """ sph = Sphere(2) sph.set_color((1, 1, 0)) sph.random_points(3000, 0.3, 0.0001) """ Plot camera axis and plane """ cams = [cam] planes = [sph] plot3D(cams, planes)
import gdescent.hpoints_gradient as gd elif number_of_points == 5: import gdescent.hpoints_gradient5 as gd elif number_of_points == 6: import gdescent.hpoints_gradient6 as gd ## CREATE A SIMULATED CAMERA cam = Camera() cam.set_K(fx = 800,fy = 800,cx = 640,cy = 480) cam.set_width_heigth(960,960) ## DEFINE CAMERA POSE LOOKING STRAIGTH DOWN INTO THE PLANE MODEL cam.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(180.0)) cam.set_t(0.0,-0.0,0.3, frame='world') #cam.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(140.0)) #cam.set_t(0.0,-1,1.0, frame='world') # r = 0.5 angle = 10 x = r*np.cos(np.deg2rad(angle)) z = r*np.sin(np.deg2rad(angle)) cam.set_t(0, x,z) cam.set_R_mat(R_matrix_from_euler_t(0.0,0,0)) cam.look_at([0,0,0]) cam.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(110.0)) cam.set_t(0.0,-0.3,0.1, frame='world')
from matplotlib import pyplot as plt #%% # load points points = np.loadtxt('house.p3d').T points = np.vstack((points, np.ones(points.shape[1]))) #%% # setup camera #P = hstack((eye(3),array([[0],[0],[-10]]))) cam = Camera() ## Test matrix functions cam.set_K(1460, 1460, 608, 480) cam.set_width_heigth(1280, 960) #TODO Yue # cam.set_R(0.0, 0.0, 1.0, 0.0) cam.set_t(0.0, 0.0, -8.0) cam.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(140.0)) #TODO Yue cam.set_P() print(cam.factor()) #%% x = np.array(cam.project(points)) #%% # plot projection plt.figure() plt.plot(x[0], x[1], 'k.') plt.xlim(0, 1280) plt.ylim(0, 960) plt.show()
#Define a set of angles and a distance r = 0.8 angles = np.arange(90, 91, 20) #START OF THE MAIN LOOP #List with the results for each camera pose DataSim = [] for angle in angles: #Move the camera to the next pose x = r * np.cos(np.deg2rad(angle)) y = 0 z = r * np.sin(np.deg2rad(angle)) cam.set_t(x, y, z) cam.set_R_mat(R_matrix_from_euler_t(0.0, 0, 0)) cam.look_at([0, 0, 0]) #Dictionary with all the important information for one pose DataSinglePose = {} DataSinglePose['Angle'] = angle DataSinglePose['Camera'] = cam.clone() DataSinglePose['Iters'] = [] DataSinglePose['ObjectPoints'] = [] DataSinglePose['ImagePoints'] = [] DataSinglePose['CondNumber'] = [] objectPoints_iter = np.copy(objectPoints_start) imagePoints_iter = np.array(cam.project(objectPoints_iter, False))
import gdescent.hpoints_gradient5 as gd elif number_of_points == 6: import gdescent.hpoints_gradient6 as gd ## Define a Display plane with random initial points pl = CircularPlane() pl.random(n=number_of_points, r=0.01, min_sep=0.01) ## CREATE A SIMULATED CAMERA cam = Camera() cam.set_K(fx=800, fy=800, cx=640 / 2., cy=480 / 2.) cam.set_width_heigth(640, 480) ## DEFINE CAMERA POSE LOOKING STRAIGTH DOWN INTO THE PLANE MODEL cam.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(180.0)) cam.set_t(0.0, -0.0, 0.5, frame='world') #cam.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(140.0)) #cam.set_t(0.0,-1,1.0, frame='world') # r = 0.8 angle = 30 x = r * np.cos(np.deg2rad(angle)) z = r * np.sin(np.deg2rad(angle)) cam.set_t(0, x, z) cam.set_R_mat(R_matrix_from_euler_t(0.0, 0, 0)) cam.look_at([0, 0, 0]) #cam.set_R_axisAngle(1.0, 0.0, 0.0, np.deg2rad(110.0)) #cam.set_t(0.0,-0.3,0.1, frame='world')
#=============================Code End========================================= #=============================Test============================================= #-----------------------------covariance_f------------------------------------- # var_cov = np.array([[4,0],[0,5]]) # A = np.array([[1,2],[3,4]]) # print covariance_f(var_cov,A) # theta,vec= np.linalg.eig(covariance_f(var_cov,A)) # eigenvalues of covariance matrix # print theta #-----------------------------nonlinear_covariance_f_obj_to_image------------------------------------------------ cam = Camera() cam.set_K(fx=800, fy=800, cx=640 / 2., cy=480 / 2.) cam.set_width_heigth(640, 480) cam.set_R_mat( Rt_matrix_from_euler_t.R_matrix_from_euler_t(0, np.deg2rad(180), 0)) cam.set_t(0., 0., 1., 'world') print "P", cam.P covariance_alpha_belt_r = np.array([[1, 0, 0], [0, 2, 0], [0, 0, 3]]) # theta,vec= np.linalg.eig(covariance_alpha_belt_r) # eigenvalues of covariance matrix # print "theta",theta print nonlinear_covariance_f_obj_to_image(cam, covariance_alpha_belt_r) A = np.array([[322732.6464, 245645.0048], [245645.0048, 187829.2736]]) # [[1,0,0],[0,2,0],[0,0,3]] A = np.array([[544215.8592, 415352.9344], [415352.9344, 318705.7408]]) # [[3,0,0],[0,4,0],[0,0,5]] theta, vec = np.linalg.eig(A) # eigenvalues of covariance matrix print theta # We can find that, bigger eigenvalue of covariance_alpha_belt_r -> bigger eigenvalue of nonlinear_covariance_f_obj_to_image