1616from .parameters import ControlPar , MultimediaPar , OrientPar , VolumePar
1717from .ray_tracing import ray_tracing
1818from .sortgrid import sortgrid
19- from .tracking_frame_buf import Target , TargetArray
19+ from .tracking_frame_buf import Target
2020from .trafo import correct_brown_affine , pixel_to_metric
2121from .vec_utils import unit_vector , vec_norm , vec_set
2222
@@ -301,14 +301,14 @@ def orient(
301301 cal .int_par .cc ,
302302 cal .int_par .xh ,
303303 cal .int_par .yh ,
304- cal .added_par . k1 ,
305- cal .added_par . k2 ,
306- cal .added_par . k3 ,
307- cal .added_par . p1 ,
308- cal .added_par . p2 ,
309- cal .added_par . scx ,
310- cal .added_par . she ,
311- ]
304+ cal .added_par [ 0 ] ,
305+ cal .added_par [ 1 ] ,
306+ cal .added_par [ 2 ] ,
307+ cal .added_par [ 3 ] ,
308+ cal .added_par [ 4 ] ,
309+ cal .added_par [ 5 ] ,
310+ cal .added_par [ 6 ]
311+ ]
312312
313313 # backup for changing back and forth
314314 safety_x = cal .glass_par [0 ]
@@ -343,40 +343,40 @@ def orient(
343343 # derivatives of distortion parameters
344344 r = np .sqrt (xp * xp + yp * yp )
345345
346- X [n ][7 ] = cal .added_par . scx
347- X [n + 1 ][7 ] = np .sin (cal .added_par . she )
346+ X [n ][7 ] = cal .added_par [ 5 ] # cal.added_par[5]
347+ X [n + 1 ][7 ] = np .sin (cal .added_par [ 6 ]) #np.sin(cal.added_par[6] )
348348
349349 X [n ][8 ] = 0
350350 X [n + 1 ][8 ] = 1
351351
352- X [n ][9 ] = cal .added_par . scx * xp * r * r
352+ X [n ][9 ] = cal .added_par [ 5 ] * xp * r * r
353353 X [n + 1 ][9 ] = yp * r * r
354354
355- X [n ][10 ] = cal .added_par . scx * xp * pow (r , 4 )
355+ X [n ][10 ] = cal .added_par [ 5 ] * xp * pow (r , 4 )
356356 X [n + 1 ][10 ] = yp * pow (r , 4 )
357357
358- X [n ][11 ] = cal .added_par . scx * xp * pow (r , 6 )
358+ X [n ][11 ] = cal .added_par [ 5 ] * xp * pow (r , 6 )
359359 X [n + 1 ][11 ] = yp * pow (r , 6 )
360360
361- X [n ][12 ] = cal .added_par . scx * (2 * xp * xp + r * r )
361+ X [n ][12 ] = cal .added_par [ 5 ] * (2 * xp * xp + r * r )
362362 X [n + 1 ][12 ] = 2 * xp * yp
363363
364- X [n ][13 ] = 2 * cal .added_par . scx * xp * yp
364+ X [n ][13 ] = 2 * cal .added_par [ 5 ] * xp * yp
365365 X [n + 1 ][13 ] = 2 * yp * yp + r * r
366366
367- qq = cal .added_par . k1 * r * r
368- qq += cal .added_par . k2 * pow (r , 4 )
369- qq += cal .added_par . k3 * pow (r , 6 )
367+ qq = cal .added_par [ 0 ] * r * r
368+ qq += cal .added_par [ 1 ] * pow (r , 4 )
369+ qq += cal .added_par [ 2 ] * pow (r , 6 )
370370 qq += 1
371371 X [n ][14 ] = (
372372 xp * qq
373- + cal .added_par . p1 * (r * r + 2 * xp * xp )
374- + 2 * cal .added_par . p2 * xp * yp
373+ + cal .added_par [ 3 ] * (r * r + 2 * xp * xp )
374+ + 2 * cal .added_par [ 4 ] * xp * yp
375375 )
376376 X [n + 1 ][14 ] = 0
377377
378- X [n ][15 ] = - np .cos (cal .added_par . she ) * yp
379- X [n + 1 ][15 ] = - np .sin (cal .added_par . she ) * yp
378+ X [n ][15 ] = - np .cos (cal .added_par [ 6 ] ) * yp
379+ X [n + 1 ][15 ] = - np .sin (cal .added_par [ 6 ] ) * yp
380380
381381 # numeric derivatives of projection coordinates over external parameters,
382382 # 3D position and the angles
@@ -449,13 +449,13 @@ def orient(
449449 y [n_obs + 0 ] = ident [0 ] - cal .int_par .cc
450450 y [n_obs + 1 ] = ident [1 ] - cal .int_par .xh
451451 y [n_obs + 2 ] = ident [2 ] - cal .int_par .yh
452- y [n_obs + 3 ] = ident [3 ] - cal .added_par . k1
453- y [n_obs + 4 ] = ident [4 ] - cal .added_par . k2
454- y [n_obs + 5 ] = ident [5 ] - cal .added_par . k3
455- y [n_obs + 6 ] = ident [6 ] - cal .added_par . p1
456- y [n_obs + 7 ] = ident [7 ] - cal .added_par . p2
457- y [n_obs + 8 ] = ident [8 ] - cal .added_par . scx
458- y [n_obs + 9 ] = ident [9 ] - cal .added_par . she
452+ y [n_obs + 3 ] = ident [3 ] - cal .added_par [ 0 ]
453+ y [n_obs + 4 ] = ident [4 ] - cal .added_par [ 1 ]
454+ y [n_obs + 5 ] = ident [5 ] - cal .added_par [ 2 ]
455+ y [n_obs + 6 ] = ident [6 ] - cal .added_par [ 3 ]
456+ y [n_obs + 7 ] = ident [7 ] - cal .added_par [ 4 ]
457+ y [n_obs + 8 ] = ident [8 ] - cal .added_par [ 5 ]
458+ y [n_obs + 9 ] = ident [9 ] - cal .added_par [ 6 ]
459459
460460 # weights
461461 for i in range (n_obs ):
@@ -540,13 +540,13 @@ def orient(
540540 cal .int_par .cc += beta [6 ]
541541 cal .int_par .xh += beta [7 ]
542542 cal .int_par .yh += beta [8 ]
543- cal .added_par . k1 += beta [9 ]
544- cal .added_par . k2 += beta [10 ]
545- cal .added_par . k3 += beta [11 ]
546- cal .added_par . p1 += beta [12 ]
547- cal .added_par . p2 += beta [13 ]
548- cal .added_par . scx += beta [14 ]
549- cal .added_par . she += beta [15 ]
543+ cal .added_par [ 0 ] += beta [9 ]
544+ cal .added_par [ 1 ] += beta [10 ]
545+ cal .added_par [ 2 ] += beta [11 ]
546+ cal .added_par [ 3 ] += beta [12 ]
547+ cal .added_par [ 4 ] += beta [13 ]
548+ cal .added_par [ 5 ] += beta [14 ]
549+ cal .added_par [ 6 ] += beta [15 ]
550550
551551 if flags .interfflag :
552552 cal .glass_par [0 ] += e1 [0 ] * nGl * beta [16 ]
@@ -606,14 +606,14 @@ def raw_orient(
606606 beta = np .zeros (6 )
607607 pos = np .zeros (3 )
608608
609- cal .added_par . k1 = 0
610- cal .added_par . k2 = 0
611- cal .added_par . k3 = 0
612- cal .added_par . p1 = 0
613- cal .added_par . p2 = 0
614- cal .added_par . scx = 1
615- cal .added_par . she = 0
616-
609+ # cal.added_par[0] = 0
610+ # cal.added_par[1] = 0
611+ # cal.added_par[2] = 0
612+ # cal.added_par[3] = 0
613+ # cal.added_par[4] = 0
614+ # cal.added_par[5] = 1
615+ # cal.added_par[6] = 0
616+ cal . added_par = np . array ([ 0 , 0 , 0 , 0 , 0 , 1 , 0 ], dtype = np . float64 )
617617 itnum = 0
618618 stopflag = False
619619
@@ -787,7 +787,7 @@ def external_calibration(
787787def full_calibration (
788788 cal : Calibration ,
789789 ref_pts : np .ndarray ,
790- img_pts : TargetArray ,
790+ img_pts : np . ndarray ,
791791 cparam : ControlPar ,
792792 orient_par : OrientPar ,
793793 dm : float = 1e-6 ,
@@ -832,7 +832,16 @@ def full_calibration(
832832 ValueError if iteration did not converge.
833833 """
834834 err_est = np .empty ((NPAR + 1 ), dtype = np .float64 )
835- residuals = orient (cal , cparam , len (ref_pts ), ref_pts , img_pts , orient_par , err_est , dm = dm , drad = drad )
835+
836+ # convert numpy array to list of Target objects
837+ targs = [Target () for _ in img_pts ]
838+
839+ for ptx , pt in enumerate (img_pts ):
840+ targs [ptx ].x = pt [0 ]
841+ targs [ptx ].y = pt [1 ]
842+ targs [ptx ].pnr = ptx
843+
844+ residuals = orient (cal , cparam , len (ref_pts ), ref_pts , targs , orient_par , err_est , dm = dm , drad = drad )
836845
837846 # free(orip)
838847
@@ -844,7 +853,7 @@ def full_calibration(
844853 ret = np .empty ((len (img_pts ), 2 ))
845854 used = np .empty (len (img_pts ), dtype = np .int_ )
846855
847- for ix , img_pt in enumerate (img_pts ):
856+ for ix , img_pt in enumerate (targs ):
848857 ret [ix ] = (residuals [2 * ix ], residuals [2 * ix + 1 ])
849858 used [ix ] = img_pt .pnr
850859
@@ -855,7 +864,7 @@ def full_calibration(
855864def match_detection_to_ref (
856865 cal : Calibration ,
857866 ref_pts : np .ndarray ,
858- img_pts : TargetArray ,
867+ img_pts : List [ Target ] ,
859868 cparam : ControlPar ,
860869 eps : int = 25 ,
861870) -> List [Target ]:
0 commit comments