From e418cac3db6ed1b6c52b5c7c54bbb0870e8c9e71 Mon Sep 17 00:00:00 2001 From: bbean Date: Fri, 15 Mar 2024 17:14:10 -0600 Subject: [PATCH] incorporate Braden's suggested improvement to photogrammetry.py --- opencsp/common/lib/photogrammetry/photogrammetry.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/opencsp/common/lib/photogrammetry/photogrammetry.py b/opencsp/common/lib/photogrammetry/photogrammetry.py index 752e0a724..cb2d5ddfa 100644 --- a/opencsp/common/lib/photogrammetry/photogrammetry.py +++ b/opencsp/common/lib/photogrammetry/photogrammetry.py @@ -282,7 +282,10 @@ def align_merit_fcn(vec: ndarray): return np.sqrt(np.mean(e**2)) # Optimize points - vec = np.array([0, 0, 0, 0, 0, 0, 1], dtype=float) + if scale: + vec = np.array([0, 0, 0, 0, 0, 0, 1], dtype=float) + else: + vec = np.array([0, 0, 0, 0, 0, 0], dtype=float) x = minimize(align_merit_fcn, vec, method='Powell') # Calculate final alignment error @@ -291,7 +294,8 @@ def align_merit_fcn(vec: ndarray): # Return transform and scale rot_out = Rotation.from_rotvec(x.x[:3]) trans_out = Vxyz(x.x[3:6]) - return TransformXYZ.from_R_V(rot_out, trans_out), x.x[6], e_final + scale_out = 1.0 if not scale else x.x[6] + return TransformXYZ.from_R_V(rot_out, trans_out), scale_out, e_final def _ref_coord_error(pts_obj: Vxyz, pts_exp: Vxyz) -> np.ndarray: