From d160dece2f53d205c36391f751911ccf4547f000 Mon Sep 17 00:00:00 2001 From: ros Date: Mon, 19 May 2025 15:36:49 +0200 Subject: [PATCH 1/2] Added ball tracking. --- color_params_RGB.xml => data/color_params_RGB.xml | 0 src/RedBallTracking.cpp | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename color_params_RGB.xml => data/color_params_RGB.xml (100%) diff --git a/color_params_RGB.xml b/data/color_params_RGB.xml similarity index 100% rename from color_params_RGB.xml rename to data/color_params_RGB.xml diff --git a/src/RedBallTracking.cpp b/src/RedBallTracking.cpp index 7ab68ab..10683b0 100644 --- a/src/RedBallTracking.cpp +++ b/src/RedBallTracking.cpp @@ -232,4 +232,4 @@ bool readColorParameters(std::string filename, int& iLowH, int& iHighH, int& iLo } return 0; -} \ No newline at end of file +} From 65ffde285d000b36b02ac7a7916977351f731c90 Mon Sep 17 00:00:00 2001 From: ros Date: Mon, 19 May 2025 16:14:33 +0200 Subject: [PATCH 2/2] Added chessboard calibration. --- bin/CameraOrientationTracking | Bin 0 -> 157864 bytes data/camera_chessboard_calibration_params.xml | 52 ++++ lib/CameraOrientationTracking.o | Bin 0 -> 246424 bytes makefile | 6 +- src/CameraOrientationTracking.cpp | 232 ++++++++++++++++++ src/RedBallDetection.cpp | 6 +- 6 files changed, 292 insertions(+), 4 deletions(-) create mode 100755 bin/CameraOrientationTracking create mode 100644 data/camera_chessboard_calibration_params.xml create mode 100644 lib/CameraOrientationTracking.o create mode 100644 src/CameraOrientationTracking.cpp diff --git a/bin/CameraOrientationTracking b/bin/CameraOrientationTracking new file mode 100755 index 0000000000000000000000000000000000000000..d29f1419167461df2367274dda2b922ec1d1c331 GIT binary patch literal 157864 zcmeFa3w%`75kGzd1XD#55o}b{MMZ-mCO{w{Xb@Hx1&lm2Dwu?1A&YsLY#>6HbtswtLFEeIp^Mc?%BOOZ2SNH{-2Ml zWcJLNnKNf*&YZ`6>^1(GXZK4;=x@kRf8z`z0pGhW7Km(#FV62LzZpihk!2i=zrzim zF%Z}R_?Infb=WD{ESMzes6paOl`ZRVn545H=|mrb#OL){J6+UR&`1$w;!C8jIijq? z`o{&{f+`=kmm)RLpm~wtv!KdHwyCWUe6_W1*p)2!Y7Z6A;v;hrU)Pm_zUu}zwA^4p z%buho{mYW})S(Y`^zrdu!_fJ1C7%wZISmU^8}ym`Nx10yw3j3KnvNCy(&6qwLcRs9 z_AUS)*=1ip((T3^*`AjlYAruVD6}$+(@H{%#*aI#r0CR=P+4`&sWn;SPaQvQbXEE2 zF{}dVMQu<_oilsB0l&2pPMVQ@F+`TB{<6PZv8ws~im?|QIACGkZMXdD_<6&(Su&_i zqM;A*%OS&M3J)5JL`y#N4VpK#-=V7~O)}C~_e(L3GZF%|gNy-5t5OmYjx+kHtju=_ zcoyIveJ;bl0{mNqe@pPM82>`}SAu_K_*a2{SK!~7}?rI#i^2prtE?ZIlS~l>VHy(S;?Z-~Lf8sI_23B)9sK6j z+6y|TqwclfE2RX7t{pV(s-1H?r_MWl)v@O;{Al{nL*DKE@V=77IZ0_~F7D@97-evr z8qzx+{sI^$9{xxVIiDUJpMC`_7*EbA2gJvxA#UQ)`#j_?{ZV}Sza#GB$@#;9@$usk zDDmhY^RUmG2-JA=gFW;)!@~~ec=Wf|L;r_8*K>h~Jxe|42YcA(RF8Hq z#Q=+EpO8np4|&8}xre{5^sw6(9`wsS`ZW&m>_Z>)&q*HoEJxCe*RO*-`qk`Vw=|FV zsqnDd8V|oW91>rjJP-Pxdf08TN4#C{Vb2dd=r8cFbG1ji%OS^_vQ;0P=|P|Dfgj*u zw}Ul84_5J?Q6o=rheDu10vo!<`;_eg~uYRKv*c3q1UOv4@^(J@BJF{QJ3w z9TuWr@#4SU1Al^to@E~KKik6&6Fuzwl85{&J@CKt&~u|l99DR=yU0WSHsIsMbAyN9 zXL#8EB@g?*=rOL>dCaHlJo3_09`jVAN1QwWJER!HjQl1TQ2A_>c;gl~{zT--@`ONtDCDgBsi3EI7=7M^9fljJM(b*Ux7M47qrW7l;Tl0VT>#@AZuh7deHKai z%~C$h$e+6)HlCbArJh-<1l=o={#~h0t)|cWlKv&B&%=`b7IcK<&r19*&=1Fm z$v#5#D^ubxm3lU5dai>Uvcr10PqFMUU&=|5a*mO5K9qXqYkFP_`Nv5b6?`V?n>6~( z9Jj-aTIpYFTlTWlr&ZJE38_z4s_55n*~s4{eTPPWmbBYfD+QqyE{{lknx#HIDQ7eC z1KCrjH?WT=uLzbEF3T$pEh%179ilzNIP41a9P&kf~xS@mBFAtXPJd6To#^I zUQ%A^pL5>qxp^5Gc{9o?s>4$&D+^Xg)R?^UtHU-f6q20duvZC6k_m!KrGv2XIpv|U zaNdlN-#>R;9?PFFx3Hk3pfYbpk>4M(MP&vnE1^M%NWv5H@(OEeGBPs8EGno973Nii zD??>VW)#j1XJix>gEw4R5DHh#DD=-Qz#qRq=e)wX6Z4?fjCr&2ih`BFC84TtuyWq4 zX(i=l!FdIXN`g}5v9k)oS%u{lE9Qo-B-Q7p=NWlAyep*3AxVkc!6{aV!!2DDj*DaIC1=C z&M7E^@#bb?IC0()V@6tn?J#e~>&@LS>F%F(mpQk&v?Bn+ulR#kb)vS3bGPCOUP9g`>i7bD7@1JScZmPy8BEDn_wO)Cyo zRV^wns4SYszC|#_rc-#!@m@T+mQ1$j7-3PV?8G_cMU|l?)xo%u;|X({e?n!jBv?=- z^AL@@3FO0?ips)e(2E^v4{_C_P-bA1HsG&|a6zDe(KmVrXubW$8V3h#H`TuXcuq+WyZ_p}A*qlQAB^e1zqc?VK3L zPpk}<79c~HEwPh@OCQVVB-jqR%tcs|m4N}Hp(5XRG}pCMYC8y=IMmlrOs zEMJ~i5-eL1F3#g6p{SiVV-eFX=D(CA=gnA(zjMPSSO$8n3+JF>tXM*pV+|QBD4j7c zZ(e$yf9?bx$X-^%QWdFlUPhju=Afby8LV^5u|gm{X7e|m{P-JbC2*X+8Asa9=H;nn zkp0h5a5t?@=7z@w%Zf_k_0#X&#qsRk@6{-5ZV&#s;jB=3RUWJu95(~=vfUdpM$XxD z=9bUR%zms0d<4UtCU9a0n`dmlqWj`Z&+c zPO(rGiX#CH6y$L*Mldi;|4-d3nLIYODmE7(;?tQV1(k ze#tQM=9ewU+AMEQu&TN=NZE(yWh5Tj?iF61S6F;`-r|B#iBYf!%N8S4Re`Oh)ijpv zHKDM9{YZI5*ucMn$|VNU7ZMYd2#Kk1G5rY{izAd1we++0%PH1dK) z1>pizEW+sEO(#%gMaDVPrsa(too<{nbH-WI^2UrFGdk1$KF*kyn>+Qa8F?9_$Bv$; z6a+B$#@Dl`XoS?V`P0g%GF1PaKbmxcwXX$gy_mkf8$k~et^-8vlr`p zX~k=gK;8ky+mimzk6aG*6OB)0IXvCQ{YoHd`d*nrE2(Z zqh;hQCGPvo-uWi4SP_XC*#I!@n-^xf=@Q?h;fp1Ht%koz;+r-6;}XA4!@nr;>ot6r#J6bp z-4frb;SX#P`nPNN-9H!j4h?^tv`?3YuaNdJHT+~LzemI8NPMq`UoG**weGlmK;n}$ ze22uRX!uVhK2^hiBk?{BpYnu^XAOU%#HVZcENP!C4Zm380~)?r+9yZDUnu40YWSrR zpReJYCB9h0ZVEo5?`y~v!#6+G<=h6w@JfyO8i<4 zKS*APYu517C4QZTFO&H78ooi|TQvOL65p!fH%ffFhQD3fr$fV+{8HGbQ^Ws4;!O=- zA??$n;a`&N_GNEQr$NJ8`DeX`&y{ja4R4Lp9u04e(^MHRR-80Q zIXN2MisxJnZ^d)1hHtj?(eSm0348Tucq?uVX;(|1R!N_v;Vt>88r~QpA! zK3mdfX?RP1K*QHc`Wy|PE6e#BzE#o}Yj{h3jfOXd3jJ#}e1j}EY4~hOzgELr^4Dqj zT1mfN!?(zCtA=lt^z9nnlHaM}dnCQ7;eCfoziaqjSvF+6Sboo!^hp}tYByEKOM0J% zx5ihxhBtmJ^vTljmi&N*&zJN$8r~Xr`5L}i(iiJ^S+3FWhPL>Qa+8M7mh@{i zyrus-9WUuyG`w{mOS^`*?zidG@Yel2N%DRf%U@PGMZ;U`;8YEtBiENc4R7tc(lora zUrpEWsdC?yrQxmhQ?`b;)(rs-Z=I*)Xn3DoPjtz7mZIh`o>|2o(*xh*f$#Oe8*(1h z;43`v4IcRQ9{3gye5(h(-2>m@f$#Ld_juq_<-D)^ z#pi)f^T4Nj;IlmN*&g^@4}7f$zQF_EVa?fz;}4yJ3a7S9{64lyicz8 zbbqCJ;L|~IzG(!3Pw4u3V>)wj&gLzFc3?HOQq3zE;5(DtPOD zaH20!@XZQ+rGjr&@Cy~Zb^kcYDOK>+eeQ%`qTsFj^a-D@;H~Ea2){tV=SGEJ4ggMk z6P5W2-nlA^XEGH$9>K6b6$+lN=31W`1y5~TpIQYkt^tdh1_e(#S)V2aZ|x1JZmojH z1zP*ltl)83*8Z$h@VG#0f7UB_Ji20kS`<7k_}ZUV1&>?(?N7UcmzQ$6u0z3FIg%i!4I{NfV~R-#|qxK$?mnF>Bd!DlP@R0Tg(!TS{aSqeT)!B120=?Z?jg3nU$eg&Vc;Lld@0R?}K zg3nR#GZcKTfi(%+rUR>8 z-K*>}Z6bGdUtyQ&fNEEFfnBD9sa@R{*kwA9+SNVPF4IBOuI>!GOb1ZAx`*3kI(XXE zeW+cg1E*cx33izdns#;n{X46_bijoE+hsafLjUbD9Vnsyc9||bqyKi94wle=yG#d4 z=)Ya216=gqF4Msh`fr!%KneY~%XE;0{@Z0bKtliRG94VD|8|)UjL?6(Ob12izg?yS zBJ|%b)4>q>|E<-3AD2J0%XAQg{@Z0bXh#3-G93t^|8|)Ug3y1vJc7$VwaauMg#O!Q zItW7l?J^wzq5pQ74t~&oyG#c@=)Ya2gC6wXE|22!aJx(gKIp$)rh^{z-!9Vu5BmR& z)qgtJf&c9?9q6F{c6kh!H`!%6*g^m8G9Bok|8|)Ua^QcvOb0mVzg?z-8}#2U(}4~8 zZ3{|Ox65>}g8o}&WViPwQFen~l+RF}lI1REYUNY4@(8Vbv{oLfl@Hd+iCX#F z3GVj)p_RYT%AaWE_q6hxTKQ$I{DM|~Mk{a7%D>af_i5!jwelLR9M#J8T6v{buGY$> zS~;kd7i#7CT6vaM_G{%SS~*iIpQ@EdXyv1|@=&dOuvSjg%HNLH{I8Y2(8`}^<@dDm zn_Bs0t^9&kenu;A(8|Bl%J*sIJGJr}tsK?L^;&tQR<72{rCK?tl^1H|`C56FR`zS< zDOx#GE1#;BM`-1vwenD{e6Utd)XLvxYW~;CUufk|wDNmuIpd2Nk=HH@L_P}CZSTpM zH#3^J>;c0FL=Wz}pTLw-tk?R6ZU)QlCKP8tmq0Y}ECLgI!$Yw&+=x0_8vdxSEBV-3 zWKTS&DIn;NVEW9#1V(-ri1Y+D{q@Yirr!R6gsp+sz6%e5fKn+Ssjq7>=UI!N@@?&u z;Rt`D`jq*Bx+!x&X#^slga-v0rz}Rny!c;zeP$6BV_Osdi8c}zg4b@J_`8>*lD^Cb z-`v2eoh?u>5P2pS=s;vc4udrTfTBR-fDyEM2t@p5Mr$DIuMI@n%&Afw%qHDMqt?yvZWd7y%!lb8>P7ZAk`^si5aIy9X z)-95CHy3T%4PgB;IVExUMp_aaTAu~pw)z16{s>)YtDlK)v`cBL&%rm^U$oWF!#7%~ zx7AO^Hy<`VfyOBHrm>#879Dy$H}(ol_5zxV)aRnI?iu>qm%OHRb!+l!x@%QnDw9_~ z0%2C+<~+NmJp2=ZEl<9AhK&t{&k@*A^37vy?3oa0OIe&;PjBPHaJ(H90QuW!fv#>9V& zNid-I;gF4V1fK0cfagsD(ac`XEs!+E zx0&yw{p5{|6^SGbop}3EYH`X(=}06~h(3Zul6V-3GD)<93qoiNJlPKGJWD1b<$i^V zUCAf2(IvsNwAZG(s(-}RAw;?EBGjSbUy6o9)bJJ!Q&XqTIL+?Vmux?K0EWRTOfm+V9V0Y*73Aj0Hn-t$ZvgjG z7)E{Ff5ql}YyBA5EdeITXZy98e>;K3Wj0D=t498II*;O&KWVFfJ zAK`)hW%9}GjZEkuTG2o)oUl0gZ?BUTzQaBhAwVd*X->?iV#=vw=7b%;tmDQLc+w&P zQp4XtLlh}8=v|e@lVn8OdoS!}nH>~`2r?(^8iw0!q{6D>xtLCw55*gB5&(KG3SDKi zeuyIjM^(H$bWwa?H%K;dh2Quf-?Q|OV7ab`Zk@q;Nx4lA~{?7^L>+ygn# z^2z3cbG4|Dea?0&z7Q2`ylB18shGnR(OUM~8Wt7Zz>I=yhM34c{F03#7~9NT=Bj5p zn7U0AnH$APqFBqVw3(-fqBZUh!3m7w`;iEow)zDy36C>`5Wd>>=MYK4cs% zM(Hnz3=j!3-pgYtj`4TkfC>hbeH4muA5)>*OymiO2sAzuAP|jGtDq*i?rxHzZKTC- z-90?S-NSMmw?VHS7+7Qi3>c?trNT8iSUtw6Jzp4|Y9XSQR1l-0hb^*(grXwfsrZYi z5c8IdX71Z$Q6UEycS?vlUR1~!g9Ga|iYtHvIPsoRnQt%XF)nnTz?%mRv6MUe%e*eZ(I+{HHYQBlm7 zMIS3~N7JEP%sl!*k~pP&By!n{!MAiwB2T749#1V;Y9E;qE zNx;&wL=#!0h)fqEpSoYLy+*|dCGp>$WGC?jf1`!)$vg+bB$U8ty2HOelJ*B-$Y|Ap zy4FEN0%Km^+q_?<~@&b4AtwK5H?PSZ;c`o^AK!)VudX%)FZ z4hs=IJS;|Fp@`8fhlPkTt{5aLM>jRIuJwbhD`6qw#$oFLe24 zE*a1nG`H_S&)kFNer}Aj9hv7BqA1kFC=*4|oi_6-QOuWvrc@MbWpNvd6!AU^96Ki7 z#XxZR@@BDeCfnKr=vA7jBAdY_WOH}l=jn@ALN?)VY(k+E6K-HaYf2I7aK%zqFe;{Y zZ3bsDm}sdn^@${mkf|++a-8@+x2+^(wV7XHr9)lwW6R>|8il+Q(2tAxo4aNWDr%cLZxf(5Hj9M?PjcJF{$il*ZkcvT}!1UU*pire@pVLfefdK!OW8=1;*Rr z5P`eaPa5h7TjP8udec~Ax7T`T__7U@uJsWzUe_MSvT*;qw$zO2+7z+6TF)mcZRTx| zYgW+^pftXQ(XPS$F)r|-B6cziaD`k6$`E}gAXW#Psa-2>+suoZ)Xp#MqR4J)Jou2` za0Apb85VN_hv~886`{$Kl-cZPABZcEQntI|i$PqGLJR&zp;x07-yL#GdM3|sVpD*9 ztFt#aQOtD$(`No$jAB+1j=oSVB)Hgk@PhkTW6EBt#-*auG(5zHgcCBj=Ly9q9^4wA zz7HBl597wTX_v-fFmz-?H5cO~mI+QbNy;&wkprazgkI6ip1aW-R6feKvbKN1%=xQ6~D+Jz`C;D|u8a8o3G~)KEVjm9@{%-=nH&f4q!T zh)#LLhxN;W6l4*a#=GzvYx2lo4cZiYF*;!qtku=iYB$J@a^?~tp_C-FQ%543vE!p! zaWFYg;2`w|N9vi7Dr8k9*N=c;*oLFh>MVEvW)AK+%j!#xVUBz>B7w)t@SDw3&n4yR!mHjh4w0D6h3Ca~;ZqK`9Sg>(gcMC7`*w zeZ%Me^E#Vy$yXVKHoa&}rPn1_+B6XUxWd7JqSwrbL(z#=R zr0hQ3#nmMP;KKvBYliIF>!RqB#pgvaTNWP|MXSZ*-7O9w-R{G%b#$whj3FfAZhF+v zsj?KvcPns#TYrO3$LAH}UYpQ_s8R*j>ohg?-w z-|xrq0z$%)pNgh;lsfHNi6Ts=8;TdeVui;D2;VU&mSw6p%Py=$)JU_Yu0z10;#;M2 zJH`ChEQ>+RlPZ}tnZ1heR`J%X_6H4bO>e)VfrBN9VrQ#U3qC~ZQpSR1uE#&-glUsRtD0uj+@4OF4xWAUteH((fDbVPr3w7eU zW_ZMoV{9)8qPsyPwfh@*%^Ti>fK^*a8|6|QHjycjmET0Fd+SzylaO5Bi?P3IC63y0 z@>{R)?ULo1h#EXDU-e|0Dtv&&z87OVV z@03P|{!B2fWiW+S;pQEJ<5U;Nu{K9gaFhv-Hq3VBQo+&R#qp0+tBtXOW4hp&?*m7c z;CLG}j#huNIT8fNk%Hp`;ut769&vH}+U9umaPE8$gDIim;CN#j_q^W4vE1gkQ*dk* z9A6U0-Gbv%7so7{<8r}qhu~Ow95^ZjM}~{zc$;IQ;HVTF2OJNMGX%#0E{=bqqrx8t z2#$c@_$hG=0!Pyy?JKm;QUE*$_Z#Nx-}d!6mu>@*l{lWO?m_hRh!Dp$ME^^;W=ek! z^>1tRZ(E#P)|x!h-<6z(eca!mvQueMWc}IsywityrAGS~mA!<`(_KMld0PL>35UwRbL!Em@=m z$S(uAOM`xd9kw?OKy!lRL|=QTb!PndJD2mxM|PjVvv?om&e7!dCxsfl<*#7QQzNabQ)0OX8_V>EhY;+rr*qkIc966ZY zNC$W}0BfKCtuF>r849q5&xy*&tevbhX#el4|5KVUboGA$WaF%z@NZ-FZmvb2uE&~E z>C;?vDixhVxL0?9rmK-gnaN|Vt1)K)7Z{*~d&E)2043a>LnQ*>%wawZ8iG_#rD~K3 zQrRcV1gV@R%LJ*MF3SX|oF&Tw3XhqJ$L_-7n@LoU{nkP@W@pjuNh?>U#TKQ_Kyi+z%2rPK-!#75@ZFJuD!s!c~+IDMV^C77Kr!&9dVdl4r;EeDsa% z!W-k(H!<9BOq;6B!|Is34I;tP8)(c9$e_&$OzhyU2_)25{+4Upl2@}Jq#a&u)z=t} zexR|({f08f{B|rQI;1);^Tp-)9cZpqqVDRXS&b;LXG3)pY40pHGIpHoEH;>E6UmTG zjHFZ`mPO0{f`!MS=q}gQZOL-?IGsW;QoTJgzbi6po2qedM(e8Jwmv#2M9b23Q^fbA ziT>@?8RGk(iT_&`^lz)ioo7HaW~Wdv9MD4E*^$_SzqB+tvC+Rh;_pF3 zMEtuOXKllZtB2^H#SmfVPDST;Bv6-ooh~Pu=e|J`m7SqQRzNG<5{KPzyMVBJ5?1Kz zN#2xF_pgL%O$WNiO=#?gf%tn{ww0$$CEw9^E3cs`d-V83OZMnWZS#La-6J%NHPQdg zN=upS#`)g_3SSRw`lw$Zp@Y&cP96N;B<%RJk`JsL$1^)ki;-DfxB(6SXo}?7p68u` z!j-*>9cVoOOEnrJ$XnVh%knsiVdF@OHh2P$jElPeobg~q`F{9m^@b!KBf9)++4Em-K#Whx$*fwszwPvb8Q zA>E0Nb*RxyYy3t(&~0W9me%+VR_Y{xyM<0zyF+QgS=CGamw3m*qK-g7LX;`@xjap#`{OgL)_&7rU^xU+OfqW#%MGmIIHych?KbSbyp^fiN|<6Bln4iG?P;W*pa^-Ay(fls_S%}O-L%q%1 zc7RZl_D)2@_HZ^*L`EfI!UQWzom5JNnUwia^jb>&7q5&&3l}0&?8&0Vd#V>pP9A?F zHwPjexZxaon9YHf2OkihK=LENQ*HrKlIRtmpbUptQEW4RCYM) z`q^H6ux342@dR9I5ut(o@4-g@YboSE#tk7*)%K#*g2Gp+@zoLEgL~nV=LJ4q9P=u( z_t~LF|5e0WzHhwSd6tm8(3g3~YP^U#=gb7lL}8T1>;MKpqknf`Eyl#AK*DCq4r>FO zy7V=YyT3i8-erg_J!@m;8bEb)*00oYAorj$i7H2El}USwfdjP&wstUB-#`m&mUaaq zv?;-UB{D1Sl8V+)Vl=$M2mM5ixfOExCIC@Ch$KY!Dr~ z>F+Vp_j^_J9)duXPRkZ+_LU-kG(b{2aYf9HTRNuAKt?V(vKW3qgv?-p21jWmW zM{rQ-vV?5gwIA@=yD!>Z)9#k-#K%F+LV%Skm=d)Pzn(oHKpe{P5y!;M;mMHJMI+}L zh!S%uXn0OFrIyR7hIdifNr9+1#ltaO(vEbCcN+7GV=#!S<05AwCua`8odkP3xf+1O z+IaT(|H2nP!x2QhwjEo>?krutXb=KyUs$I+;+Pahh4oH>t?4Pp2;!@5Wv>w)!-j>; z>S-$wp>>gEet3n0WF^%w8Yh7;JCwBBh>aIuv{)1))t+UbvzYYyYx-Jo->9C%IPpUo zK+l(1PutbI=^i$yjm30AD~?aFLcm!Oogt_vl*-&(-N92bf{aLZVYxoKd#BNLfc$S5QC+%#wawguMWLJ(`ZnQf%n49B8o|8lJP9lM zfcD^hG)ZTDQLGR}v(yGOL86*P$Ds0g&_r|EbM8!Ax6@lL21~5qyFCPd{;X?btLI-j zk+c#o=T071%OEUX-WLfHbAaRJ{@=%`=Luz92f(cFM^Z5Thh8ld{fY5v=`;VKR}b_MJcI??xo+RQ`aVM5ZCz6yaN{P0{?{Bq))&Xx zbo)Dw9tL#qk@kmivu1SYNnda*_bTg`6x=54nklr^P|W(}Cmf#k>e604MTh>}jFGzAWFrT5<%BYht39NjP7pNsKs3a>JvL#scFk-p!$7kEnl;PV*iYrFST_x_&JFZeV@ z`hM$v-_v^BTb8*s*6!PIFYJEV{Txr}iT{O|>3+&f_cLR4_wBFljh@mU{V&AKsh-lO z#agBaHewe59&?hm{_dDJlZ9qu%vSqE(^dI zZ{czSQo5__DVi)3j~Re-K27#R#Op5-&3P^^zLcz7t)N-H7^!p}mWRz)yRB74imQI> zaR1viRe0vZx<}xBK25;6Orw9DSbEU{7GHU_)WP4eock?xBjR6=Wf}hYA)Qx)+XR{x ziC~%ED$yh8PLK%QK|vcqe+%GRS`?OjN4DJxN-QVUg>{5>DY(8nh}Pav9|vu`pgNxz z+WdU6+fpI|wsbm#Q@ibf$lHXyS!mc2sPnhbb#4f6Ge4l? zQ+g^#aBg8vGBz}&-2`*amz+DwEw*)TwrJc2Bk>w6b92s(+u-?<)BN;X>k0Sctfo(8 z0kG06atS)e<{3#?VS1Q0xf zZ3Fd_f(8n5Kc_l6BT%vQ7U=h}8Z|$}kPwYOZ@z%xLSb?9DGYDccR$d&BG` zX9X`$3e0#rzo^(p|A`JxDT~nv5aV+zqug7jl*iP}W9)JWa9sUEE9(oie2ycWRoCa-bnMsITxzG@A%7HV*ME#b;Z1 z-xEB*H(qd<+=d3_T{A9UxV;yDTXr3IT})mMg#XBbuDcJcm3XWVgAluKfiaZNTX3&m zq@U;(4Lg*q%|DGigr7R{#8Cs$q^NCBY_KM@6_!$5H?oKgFoy~4-naVk0uoBMG-`N; zR5EOP8VTjUY82-yI4o8lsa+DC7T|Cw))^tL0M2RriR4$4^nE9=$i)^i6T z9aErNoe#UaC0(bS@>*lh_7-&RBvyKnkvK!gK;HTs&OQzEN4Q5M5P6@fU&lzJ6D8L@ zHC~Znk1=X3fLzy(0BS{Sw8X9sP}OE0M@HtWKwO-G>=YRJJe|7I1)7PQlW)O0qWGS% z79vkTH&Mg1M-#2XdI%TMr6^VgQR*5G-gShJxmKGmD0#xGwlDk;gd!M=ZoWBcm9Jy9%I( z9b;Aj6x{n_gR{Y`+TeH8J16dMe&^|?&Ab~Y8?2$`moapaK{u#|4iRMy_9-ggTs~!**xQ3OtZ)wb)?(e{((J~#s zNck6;iU%{l#_|Kg)cHFHi5Px~D4iHiyPq{sWB6X|Gt4F^V8w8lv=lKsk;vUKOv6xBw5Vs<9QNL@rh^{}6cPoNly@ti(naqgEP+SCssZuBww0svA11^V5SB2X? zgxaRBx5%k1X!7JuQypqT2xO__8gKL|y-{ zT7Zr@6boR3ZJ4dNO+#AX1KdEaTY%mLDpwBdRyi??u)-`4iQ?7?HgUPyK%1G*Ma-Ra z9dgr5yz3V8=0ZZ&ZSmnjOvhnXF6S=u>i>Hz<5xhkI`(L^+B2KhR@@lUXxQm|KP*Dn zPxlTI?7`ht*6o4fK0(H?x8mI^=(GFA8)|ZCn@K+)>>B^Sffp!i(fwbjUy8C5Sk}nU z^xI1x$Z=U>@VLAQuh#VF>1&8h>1G=W*Pd-Qb zdhI?ZeQm&ZnZB+ha-q0;^tE6oMxSKG*0DLfhYV)EN8;#k1}Tfyz`U1y5Urxf6le1d zYm|dg%gch-|KVQWS<@wl8kSi+;+gV#^c3%P)Z>{5_8~v+JsbWV*Lsv(z?-Va>24&E z4OimX7d;om&2M<=lJr{_83h*yIl0}ohwQGL(OP3eTle@Zyf}m+^KE?&yB)(klvG55 zXdH|uR18wvb|aE78QZSKQdxC^A_|`H)5G z-5eP)y1Mj_BZDl1p<|d|KQAnkym4>?nI=Zk{}tPiYO%I?_hmOWPQUO_c=E;$8cA|N z{p;^AY!>!G`tC=m{QvFfS@F_dEhM4`H>P4c+GeKR^&i^j4|HG3|1URsq)iDmKo@61fqnlINKUJ#Ji666P_? zHh55zZtJkVA8cPP>krd%MH`gi0}dzaXf2B*bqg`joGEg%nx*2>FY>0h@-Z^LD@R&* zp|5I-J=W+~4|xWPCQjXZ7I)k8#CCVI>62!cH0W^H0N+ys_3z@>9B{|ol3(JLj6PVA z3J;*b1k$i_t7Ka@&a(VD;x#kwAOq7X4%0E;$=A1*MPZGXy5m^d$zi>2w{sTSnHk}k zo7#_AmwUGJN1~SPAVNe_x9zE^zx={(>KlBuo3i^P_Zhudu3GarcB7EpW}Zh3?9dbd zf#vAE7Tt|I*X^(O$#{CKL=&gQ%u^}$%ETED?y*6W4e9*Z&!x`$FgAFCTE?9eOB-Iw zM*69_Mjs!{bC%>mYN8d9!{%7kih7I_w+VR(rT3W^qCC>~xyEDt^L0#?-gnzQC<3X+ zda!s;d4laQiH*H~wi_sU{vWj6gPg_1JBsRd<|5|SVN^7$Ctu>#M9)#A9eq0@Ejs@> z>_nPzR@o|dA{&3kXxj3Dn}{v$vBba{FpMWVNqeL^WB|32DSu}~6$o-tz{$hR(8h#1jj+Ftt z!VVim`4cebGZ*jtJ|z|6{RGTM;!TDM*GUf7dchT7kwUWY)kDnX=N?@Som@W$^9yuc z_m%5eom%S35Oz23?j!i>c#?%)Naho#d6%Qs9C$0rF+T@Gelt0x#rf%;KqQ(C#b-w9 zvlv9vsT+-cjP&|6@ii4+ed4PRUsJ``G<;3L*Vu?=#T!ZS=zK57Uv&#r`M?UM8sSf!?noa3J5OplbdUL z4A*prYp~#Ax5~bYwhoEm@;O}F$gquTI09T;ormi-{ANCxnr-+S!NtMi;<`JA>urat zLU3_hxwuMVxHdXmlLQxqpxYYbnaj`N^bZiZM%@WN6{Bt;-Saa{Ty2aUb$5YEj;q5E zsM@IOYO-tp0YbCsW|UWLp&_Pa%ijOls0%du(=h;(sP~QjEPOTa)nhF7QFpw@V$V%f zEym)#)Hit-nTdWmWAUtcP&l-i?^ra6>)Q##7chbl zFUDdaouW%`i=W~;ks1(jbQ$r+8;f5L(YgBO+FWUZD|ReyisAaR!?lZg+_)xoEH=h) zJ?L;fEx2OG;`|t{I*02z!Id5pv&Y78UE*-%2(H+%*nOC8jSPqDNWm357JnbZHOS%G zPEKrG6FU}H#&CVgj^=Uyu;5CG>DM_iT+cXMHG+#{*fs7Cjp6#a!*!P6qHwq3N9412 z2a`4YJnp{*k!#$Kitfv}{|%_*xIYSmLL2wyjdty~AT-xDqP%Jg4RUSVcYfb-?=gVS z;1TLMnVv?9$N~H@DJiXR623bFICKHoXUaz}U;s}cfe~#0r!i~hIChJC8TwM1~m4qzjO%gnLc$`D+!1NcQe zDd}$O4-VJAsk4o1Vh8YTFTrUW&*a3W54A+GY*Uf?}b^xa_m!CuSTy(<~vMX-b zmyrDuR5E0X5e8bwW;(U!qSpMR0o1FuP<(13+p?FC^@z-SIrKaua}Bj8BXb7nA|o>z zQ6qB#MO<`B;CV#mJtR<%%$q=tspamOe%mX1_MCR|QE3OzjjYFDK zRe$1*7nyDJgq4e{zr*!1>E6h{b!pLvr1M1#*W0s6C2s3yf-5#MZ^bnh%M^220+)6aFUXoweV~MQbZZY|u!lDR#L< zhu&<2ZZ6+^g6{2o)0Rit3*WqfubOXuO(qhx8&PXsP>=GeE#wGoOe(&KYzRZe$QtTU zBwB*M(Rmawd)n8g|hs_df@34IqKK zxBf;wh-UVmA-vVa-6wBt#7jS=SuclpF+6)IR46Q>nLj>HaJ>0fAvIc0y_6h>T8@Zj z?v@VwolU1WwtJ8*?{!I6Z_|;bq`XZI-6N82p-ra*z|S4JsHDrZ>B!bn-W3krQb~6( z(M7AVcgB1Ft!jKPgGF3%bSDhI_c;17*;Pc!jrgj?(Z%FEQCo&u^G9_k$BiSbzu^Y; z4cT&xWAmSn4q@}3%OILV-4mPtfcQ$Ae@~7+K@C>_au0<;{ z?8b@^lGzQ)KG_`nKzy-f+%FsB%b*+VR+Q<28{?i zy0t`xU5DhjY$pV8Fe~A-{6{w3Q<84HO{av(`3~I!lI{?jj;ty*ILV>AUDAEJ!)lkz zF6sJ`>~^n{bkEv!>=)6azc_Ril8%3tiu=J%6LgO_beBlFGFu*dRM1`T(D^0Z*)|=! zThQe>bm@}r7@Lk_LH1*UMTfXw2Isos{=QZF68Fbae2B=t4PUjmFMteLy9~AFp|vQl z+S2~N$e%B8q zXdMyBB>TlcTlaHhb;Oo|)WtIBXRu`l$4H_go5&}L?s15YltgFRL`Zim>1v1Q07-PD zO@#9pCc4-nf-9@ZYrHm+k#XXk5$Ck3OY@VRr>yz|;(QzTK#TJ>QZ$2o^)US+wx?%` znM>_S(;vY0gHd3O^PrcLVun&QMyCvf9nAs~$aZ2^3bW2+4`$|{DQr2#qDee#17XBC z0gXs85sDjO{oPXq$CytnsfzV)9bnVFCFu^d>5BV^gC*ZYPv8i7PfEIvwp;S@9lC#G zs94^d1QlK048an6_vXiBFX69T^hfjN2&Z-uYRxxSfZ859;%eQho%=j&u5AW851Tl@ zDDuxMsZtD@>U(gJ8w)GvNz*vLD3SvrsrsGJ)65dekv7;E@UJqs?(B%YnfW(h!v$wa znuCjuEx72oUX46@R)j7v(xbs*3;QAI*~m{pw@Oq3{6*^0BRTRla*5{s2&es(T^}p^ zNAYCOvSriF7P($mOZh2Z+4qowL+h8KAv>G;knl`o>eyGHx!QP@7Q=Dcc$4w5ZG2s6 zwLw|6*vhK7i+HWt8F3#9azCEjXWz|g6=|*-q3Um$5ovz{XBnIfK9No&+7;}p`D@u< zVk$XZ%-@(<+RO(aN}KXrYcFmulVk|vdw zAVtG`jyO4QZw4x6-u^olZ2KE&&m9ya`$eE)WYc-1ax*QKCwu#`vv(iD5_L4$AUgDe z2gtIS?LgtM@Chox#vejvAey)oSm$TO7N8`4T;d_-_$yEw+!95sSt zmEd^i0dTAo9EZC&l5CE%1;<5#qxkpWI8Siwd{EWueUyY&Lj=dEf@2qP93eP1yEq=V zIX=3dJKtY$T=h6OJ}c**uXS^u`~CbjaX*VYv$y$ zS=M*{*#a6myqLA_faGUqa2vPlw@$1#HP;})H6V-D1|n;a)?J5_o%}w@26;2;D>UXJ zc!f`!zZn}yqs@QYVoWcM{@XV7V%?Z@bpQkYRtm<|W#p3ix1zirp}KT}h|#0jxBm50 zTQ1=Z=)ps%B0BUEuHX9HNLn{`mf}aB+x%}LM*M%Vgtuli_}@fB4gR-~IM<3Ns=ubU z8+Fi4+IGVSxf>oN8@`vFK@Beu4gYdHH~b+1JV(L}=b>RuIIRlB+3D&2b<5~yHP-Do zz(PetO(RoW#E)ZtQU`Y@0*{-O zcMP10BUw^ZSamch$X1>8CRVtPgPm1p#|zDO^DL z2v5SxJxcQGd(cMr&+*5}xy<(p+Eb@~7BG^0DAM$3$kkYW8IR>Fvc6#XH|jN(;&?32 zJ1p&}Hw&pdbz5rWk68Y%B77%VN=7&$n_cf%*khBxELQ8X+g{E4yLa329H!dIeU_+A}8-z&mbiAAM|a2^FS zqoZDcy(sQEvb#YMFR~Y6;)xU4^GLDS$o@hGu`9BZLZYV>*`ovj2WAsYzps(K8|}qJ z_W9&H5vKDXR}0fk@mPjAEW=}2Zi>g!O^y<+{1x?P1P4CxBHMLlA)cMx`dg6N&(5C! zTlbO?9w9V6Iy@4me1zgG)QB9i<1CA&(PHJ7ww%If`WX_M6ym;ah-G|+6|yoTVUd-N z$s*<@8uB^XYt~WE=oWhMT0FG9_wM(A<=qbNCtyC$eD8~We+j@%296~NG;I$hxR)SFdjxyH3c*L z|9xzXd1F6p+yNUaNt6wHuZLm(g%K3Tu*qz!7{jh(duxWh6<3tV+GMBCgpt`i=fMkm zHS9((#2EHa@}Ds5;b_r(w9sW(YsRK6bpXa~fpOR4o zD4i!9p)~(01S>DhcoB)=?$En9&qWvz92^*lmr%VJ|J9Z-G!x-fPS$HfU%11T0*jE4 z4hUV3-yDi-YknUkdckkNgy+N$K7UlZrJ0ej8?y-4HxK3ypCw_|d)@z)+KG z33C(;J26Q94i=03K4Pz1*=~gC$3)qV(@Ayq5quw`NV|-ScBii+oW80mZ2l!wcmZS4 zQsI6YmqLXyG)u2Ki1)TM3{Qxm!!eA4QxMPb-meA6>pwPeBia)K2(0W?7?O>#nrc`g zjSAO~P3Vt`a`>M86w#-G1>|k!1TK2KVgXA4b(X``nz*mcJvvXFM&*OAWEksQETCnk zBWbrNJu;fETJ0$_(Qj{bTGagNC|4q)Un<=9MATv15pnNIL}Av6u0tUat#BuzF==Q+ zn48|<1ck_nkYFdGwIV;6X6tvHi1ICk^XvvY5M0(`-V7wrSVjzT^6BN~M1+oJ2CtF6 z6U}$u6DRq6{R=BV_Rvm~Xa^KS6ir--<`I_T)%;dAl2EkXZV`si6U~)W>6vIY{R>Ww z%`5->xy^)7Rq~3au$V_UpTH5WzF1W$-MIK{=aD-uvjxL(b{>hKJ=4GyUuzI=M5tm%U}`pkrmSX5oo2_NDLr?@ z9mW|g)TLDD!^8MEE_w`O*P08{87;fi+~;2RyQmGO)_>tl9t-#KN{*ichDc|R)QdHm z`w80=UiUFYoB25BV7yV9$*erF7nzd~x{6F|y#rJ4@ok%Q@+KZD2W6YNi3Zn5yg}0A zZJW1VLRO_W8nu~gcp%b~?_9i&i^xRow{7O%NF4gxHZLY(*V{J#_MN~uZ`*tinD}qo zeEDL~#>^k-u%XHG$G*SJG6Ni;dVYa93`Lw^)6-yjG*REGBPgaJs2NaG_w}i54-oje3Ln? z(%f6%Rk>vTJ7sXLm(}144cfVE8 zrGVv87z^*LWTU}&bt^lJuupiP&HQ#fA`G@9)dO{<9SPzUes5E~^9sKp#UZVFSqN{< zKl~MP*UK0sR_=O~MvPeZEE8etdTp+Ch#-glhnOZ^ZntAZXvXWFE}aN(+^*UO{pFm3M%v6;7EYFtD+pdW{gGrU z{qgSm4mTwQx!M74<6Uk;zQd-?e2I#9Vd!nGo?1I2-qo^jReBS}koz~zaf=iGTJ8{c z9j+TXy|5CqFfL8vaz?uflbkRx@{=_1ied!{)=Ro{Asz5dy=-dU^NXD( zX*fI&J|1b1Nt9In;q!w9ez3p~7WlyeKUm-g3;bY#A1v^L1%9x=|K0)#22M}q$NqL{ zu(Tq)BCnuq#X_qNF8~oAp8%Ko=gc{O&O+a`^6HWzUs-wBS6&e;^M#9pzQTgiU}b@? zqM#CA!of=4;!sJ@R~0U=ELakpR~fvbI#d~~@)eZ%3M!XWmqMA*2O9IsE-x!zUWR@$Wj;tx0$P5w z+QMS=zK}Yfzo2GBjYD|pMN{X@o-z9zSWcKJR0bQARfP&2gH`zoZL2N{`bx?Rih@PM zjTxn|AGE6~FR3OKCi&8gQ9ffNYp_>;3>S(j?b~fs1`CRO1-`Q2a^GU|8UB`+`j&-? zg5_`V4(OE^vi;Uh_y+R@@D0sV%hCt$RNN-Ih-##fa>FB*J#73C$N z!WA=?`u)rn?@tW>n2hj>ieORRqJpa6J_w27kJJ95|3>>BLiVNo#s7`=J%sE_`=S3v z`yN8}rTv`q3OzN5;rH^t6cR%}(a!a8gDi$VW89+95;d@9&rQ!$glL+^@O$a!Atr`D zPW#~rd3l93H5nNhV-WSB!aO7`q?;LqbHf=Kl!^0@NZ~3Fo-usJn3zndv@Ct7W zmsOWSN2Uq|tBgfhZCpMV%LW5$q_aaMP!JX^w8qP zqMQ5B&%*MO@=EVMmXt3K7{zc^z`)nJ{Bl;>u~D^3(SdoiHUXdmS4;{e-d zdHWE+-s3>+pKx4d`6604?~Biv6gfcg%0Bd8_;kMmMA&0?xi44}q^+E7(+Ev&dq*Vq>3ou_|_cOv*ST@o(Wr{D|Ph+ z3N%_|BplWM^xcCDgMOyGDZQ^R4KJ6g$n5LO0jvcq2F#h%*Ovk~@$|mFT)a&7lgWL3 z*@qd%pK;atjUk}NmF&PM!?+$dU`)pIcFlmbpx+4C47eSz70|e}udfR*4bZ^*A&UTg zfK7nefG+~(0}fmOe!#;4n*nD6wgRpO>;k+O&`36nZGb+&TNZ*Ja53&!%LnYu>+8E0 za5C`Nz*fMefL(w$02;9K1Asoj7XfbrH1Jr%jwz|I4`4cA3t$eQ30MJmIG$o{0z4aV zJzx!B2VetW58!6Nlp_q|4Zw83et3L72XF{r1>j?Vw*kHm_&DGIJdXYb)dTJZoDDeS zNW-A#*~bCi1UL_H7hnzGfH2|!a0p-v;2D6Ofb#%*0e=CQdX!=0R>R(aO@Ipky8y2O z+y!_C)#JkZ7Qpp@+X0hsr^A3@kOz1IU=VOR;6}hAz;?jZfTL?*Z@}vSUjlp|a3|o9 z6|ncwup{6oz#71rfa?HD0N(<<5pdv@;0GKB_!3|d;7-6>00$id`vHyu>;aq!==%xy z0cQi=2zWK%Lx2wfz67`pa3|n_SAqXnj0?a~fW?3_0oMYS0B!}m5%4R(hX7Al34XwN zfI9)N1svpqe*i}Tb^*==Ot~8TfM)>S2v`dE5a6!>UjqCi;7-7I0SDn+D)k!h0~Q0$ z1iTBd1n^-O$&!4KOK!aSpf;&^H3{0+!6fj+X1%%nt<;BCS@Qm`~v)d;{gMJ z3jm7&D*+n-8vxe<-T~MS_!yuGxE(NQ494p(!4J3qFaStTz7zxA3)leoEZ{o8PQZ4+ zoq#4_zdOJ`7Woq}4e$oQnSi?h!+@9FiFg6L8}MnsrvbMCz6JOV;OBtD#$i0%g?IxD z04@N$3h*kx#{usEd>`;>z+S*@fP;Spe!vp}hh@UwfRh1N11U0v`Mb z#x>ym>oKkX|NdBCUo&9$2G|Gi^A?O}z>A*5c+4`45l=%t;AX%Ez%KyT0nT^^^nmvP znt<)kV*F1;{c{+!_yB(fxDN2&fbD=C&!Zi{`?f&eNrsW|0`dvqLcqyq zA+NT<9)LFiW<&l)z*N+~0hk52_C@41z>R>b0V`jIJivjkK#$Xr*8tN2?*PmJJn>cJ zF~FMun*bjITo1Ub19k;Wc@1_2Jok0jX)^5aCinpJ-azR1H>`ldcX?6R{)y;`*)$gfTsa= z0A32%16T@}l5H3t1C9f{<3s2T_!{613nG-SHNw6leU8&a5msD__+eG7O)Gj9gsdl1TYe=oMR-^ zq$C_Q=zyfA1c4uhx~x_bw|O+ILOQmt|3 zk&{jyd%|(RvfKrLscGmtA>@bJ3*%o3@Eyc2Kh)NZ_?J4XukUce`436CuHUqS2hM^* zC{q1H_;(2Eky>%jq^u7)^)CTE4E0B;^%pwzJAo(pmFc~1Qx^xKDegs4+r>C}%x z{bbZ*N^P(N9%uX5^dME%vMPgd*CcIqEOeHrSJnjHBh zPW?-$UyXVUWv9N}so#nEJ5YbDTCdn=P(M-c#Xk!5kAr`s%HQvI+yMD!ChE_fjWO%0 z{}b2yfGa`$cc{Mwdf5K;*Y)qeI>DAftO-}<%;ac1;FlQ%hH;b?lRnf@{LRe4_yrtr z3ML6FPJSZ#N%aBzD*?^JM01crgSPrL3p&#G8|bqObkE|uEvMfGTbE(|u|~b1ukRIC z{R?*eWYnKAr>_qw(c!34!&5BhkUzR0I<0=*k_n5KUI=lk?mKwp@L{vqg>fgZQhU&86B9Z3(Y1^o{EUAhGZ zfwncZhgr@#!s~4+s4ao8IWtmx6u-=tj?I9<4roE$CIClitae z;X7VmRpYK#wZlM9`Ol9@UQ9AZNdYzN7J5`ZXA4 zTE{7n{nftgUk^T4<|)VhebArpgZ_3O^g#pi=RYzJy&he&8S-@3F}=NiJqY#uZ?u-y zbLtHx*Oy)uD>-1#@*%|+m3t*m7UPer%e~@nmJeAR2xfzN?Vf($u0fvVXp<ajp+0D#`pH#g}+NLKrT9OLiUPR`0X?hlkAh=6E(Mu0DTMS zVPm8Wyf+~qqBl`K#a7=JpKCIqINK3ta3j_b6z4U};wm4P`{h`He5w#h{Kp&omz6jGo&wCe>2=V*0{VV7eX8G2rGq*BB%6+YScoWP zz=ngq80iCcGWFAXpT`u$89FmspS6KL5_GZ?vg5dTvSC1NupIRBK@V$Z(kCQ~XMo;{ zzf1ptk!l`~&>sOks-C+*e+%@e zdJY?c3Z5TLuK}I*C6Bk;!Ls>hfIb}b6KuL=(=PPx@7$Kb9x`M$n(llYSfM+w!E}1^SLW z>1luVUwP8gzU_bu^7KFGLqU)1f6#~LNxus8syyj8f<8V^`fZ@s=SjZ{^jUe*58D^M zmOSZeK))FtGk+)qE(PrnfKV?l=+^66rm zkiH*;f*l0yh$-|_00O(QeR0jGH zphwlC7W5j>qkNWhexMxmFg;v`@+|?q74)m|cXqy_xpjfxR&?gzX~e;nfgh*Cr_))4 zKY%{krdxhNI-~F|=ux_w&Mp);MYq9l&gsz(dxAA?Rjvpg&xu;80fW5dM*EO(CJO$sPaz) zePW*Sw}3td^r-SL1^qbC!^&TVGOY!@0rc5+`6gdqa#d;ZIn)avdr#w^+Yu+KuXljH z67(op8h8loEzr^Bejo9&(C{AtI-MsB(`}Uh6wrx(6uk}fWuQ;C`CER?<)A+ZdSDHH zsV`&eK;N2&|I?s9m506q^o7GXLy0I;~Ei<4m1N}TZuj1(@BWlZ)p#KE)kv6^AZ;K6}zW{oaJZ=U3SD;79+q(JLC;tI zM$oDJQSF}r{dv%%=Gc{>zXEzx`)mMx3+SUgd{hQ4dv`17Z-5@vKJS7~^^2kpg(3KN z(4*R?8uT4`=#8Mi3VKxeGoa^_&y}FlndDJ+{pMKm4|=}#*$O(fPmP_PgcsjQ{@w+h z${$((BXEW!51r0@(pl-K_Mx+&B%e`qIwQIr^r-e(3Hnyh_p{4y&379>e-`vgn=X2a z>bDj2eC_it=+r(@<7+6Eo3Dc&)jrjr=No^Gpwsw^tUu@^pHcLcpyw<92GFVeQSGx8 z^rt|N8ei{%PUADG{f9!aQu~gv+t*r8RfA6b7u7zEpywNZ8PN0TmzAKCeu-+I4WMt! zQ~s@>lYWV6pLaq3Dd^xH8}{rfKHRQ{;;8481*^j}!}l%Yt~pqGOGS$6rz zR*ksks-=(2ueCTl?uxgMK#Xk@W|?J`a5$7@rDyWc@+^GU#FTFGHE8fIeY( zc>YvmlJ)J7!M(uaXZXAH5AZ6@pSCad76-dI0hyno`=U5tDw z-b5$fn|{10hYf1 zM;wpF=+xtI4(+D!vqq->!RJR;i9g{t*yz*#ch2Ih1fQyrfx=OfQ7 z4_*ozUAPtWMGEA5O4j}nCB_pR43l&{dgM@?}25) z?<6Ol#cw;}t^2CP8yOyt+HoZoe&1Ry{${OzF(1?=`UcS7jG$Bfroef4+%>(uFX8Xf zR|ffQMC0r^f1Gt8-ZqW*^YD0--|*w%TeuiLsLSmuaV z7kG_a5zVUICD?wwamrW znFgY=9$b!f0O)N2y5A2cfj;KeXutjWpicz-+Ccg%vivUr{Xx*9_}>Zozd*-w-7lY< zkEM367zz6U^f<}q($D&FwB1MfW0UUV48ARz*CpUJ2=o()*Xbd=M)>khca09Z9d|lN zzl^ow()hWB^=TQ(w*~QT`Fd~fJp5fc*@{=pi&bjlB`^~IggCYMJKG1~qrSH_pqJbc zZHsRP{Xo$7veR4pXpQLOfuN74vi^L}KprL4TvjT_zzXbh-4$Jq5ulF;9qfD_)_(sK z(Ca~`@t3WK<>PDvy)jSv<)Al#jw#YlZ~2nff!-F8z6?p827Ny0JMHu|-e2SKPIY`6 zamL>rzJEbH2EpLH81xw~4{Lv-0&yNfoTzrF2YnOhX`6?2ZmtXT*f*lnuK=CyFGa1r z)`LC*^r-><6S8A!3+RoYkGARJ8=<~wfxM(azaD>={$rru*3?#(y*3ORroTYEu(3yN zSp)iWpx4>?6xW(^lmVLo`n#adw&{+~_7cRYSreVdouH2aJ*+NNhE1TK20DhBUyo+L zzh43UoILaoL2m|qA3MG5ftLY0cogmcfj-}+Q#)Bc(G8HP?;_3*5vTMwd-&y`c$QDJ z4ZLc;8C{pe1RYbQ-$qHlua<-Uf}0-stIu^E=>MB1|EEEJ z74)cau>->_8n-1WXz{gDaK|m@>HLsy!wTuI(6H zbIRa~QwEP1Ke%lC;9=tj4;eprpf?0bw^CjxYmE5F2iCBM|37nPEaQE>2o!u7IHTkO zZ$8Ju*C8`we=PR8pDXGu_C6>+(nR@Q@j0>YALrdt6oXOuNXg4Z503U;jK#h>+WSW= z_RewM_XdojzX$xO=$&fsozKL6Q|&#xXY9w--m`ngt{v&!@!8n7M|xX6d(NtA@4JIy zS0C^F;B&FfBfUok$ADb7S8UDk-d#gt&mQkRw0G?8a<6yq*t^GjkM9$EwaWYLKC!2& zy!(d6?k)H3-0#-n2dlh44U4Tf!CQ9V;a{!twjUI`?*#A9pFanGFFPc5bA`A05c>O% zhsN%&@Kzs2e{U*_{k+2aQ(5etN^isAvDYfR_YSAOe{n=?ZKe0d5wUA3z3&}KNbixc z-&A_5hQ~HldM_OnyLpuN*P~+ZS9y;ey|D--T{a@Nq}uz&h!}>^#u2eCqr6u}#5Rud z9y?|tsQ+`^O_*4zbx)6VdDlqm5@7%TnV#5U?^YoWjicFHV=oqY8;W9oEArkh;`WZh zO?RCbJH?wRU6=iP^-)C!eQ_p)r{v_Nv7%ii|MQI(dQ<{&MR6RyWG3krvJ$THKC6pj_YLsAU$nLKnE~FD0|b4zDE7b} z-ZMp;W6$m3J+%j;doPadD1|gWQnD=OT@hn&NHX?7iMMD)@pC2KQ^FJ({Sp~HUi40} z_m;@=-tDoEO1z~-FBPvY^=>cqbAKR)+<#s2T+Dk)SR(49F+{zwbZgA}AI+yBc2BW) z;jKlRi@nE%C-S}udB0Kg%@XfU$vYqgLr24qzbN*8k%xwVy~umGsMWND;QwdvH;Pbz z03H=T2jAdm?24H8OzDNDh>~cXNp!18^s-6xlq7n(Bz9xW`+Z65{Zj8Il4$QIieg_Y z_FgQCU0Lj{C)OASdw;(uc73t;bW!ZRBJbM-dcCVh7meIpGy#@daqQQzqD>`d+%}-- z!P3)UHpKS)IOeS&@!dY)@GJK4ZruZaim;kNMQI->!V_)7Nuhy-jV`koyN{?jsqQk{|W!o0{>}&|Fpn= zTHrq|@Shg=PYe8i-2$7jWT4Lhi#aTPlfxx~^EX&v%h~XHZ383!lJM9c@b`KN=Sz6K zg!f4JsD#f;`1+lkZlAj}2M&i^!})wD@rFFg_#_G2CA>w#brL=y;jbjzA>sNvIQ^>< zYHqcX&%yu2NQH!L65c4`1__^)aJz)>O1S4nPXF%LIXuG2r%UoVN#fN@xKzS>CEOz6 z8xnpf;Sh2t;d8WvHIh%OgiOVmJjv&5i8n{WH4;80;oA}xKgKDCNjOr%@e(dv!SwG) zsQGM{d@>SmlZ0{6z$xr@UWB;;>6&no$>koemq9P|Xom?&X~gv%woN5V%Xyj}8X zU(M<6kWlmKl6;<*_(OlplqnJ}k?>v#pOo-b3I8r(ljJi(#?RRjYCive33rLU=x=#k zebHC?5h9O$#dGPdzHsU8_ZhpHkE<_SzV7$syP1!xFI>Lv_l>)mkE<_SzV7#3yP1!x zFI>Lv_YpF_T)eOEuD<9i{*2ws$JG~o<+FS@^Ktb>U-_)r&3yXe>(ZC(%lh2a3!4Sc zDaTNb?~dv1b4^j=7{*-e$3w;Z?%Hw@E6=2H=85k?-X3yp=^JtzcU_Y3GU{% zM(`ZDK7jeS@n;F{%IBJh_}(z7ztjJ>jq4ZJw zedqh4J%aRGobU7=2z@ktk=gk6zaJ{!2XQoPO7kC|lkW>lIpu-!eaRC3{(1R6Ou~aC zTqX2_O=Q0T^B&?ONUcy-tc1gHI!W9y(k#N0)nOQ3Cs=|H!ll|U=igyJRMj8MGP zyCf8kW%a1V-YbC?Rs9*n_sHtmAU@Dj{S(ALX;(L0kAA|U3J=LQ@9J7j!e~VCp zM}*2k@xeGiVnvicOT4|jA))vXZ~M7n@%Q$0-m&9W zj|{{2^SYYC@cliVA8l48m~C`k4C2GQH6o8e{6H^EUzd0XW#_kGe9Xr5_@whG!Rgi| zq4*(AOtuF~y}$Lk1hNZ?aY|yy%pe6lW$;=DKU{FvFE$o<5z2G_&0J0`?IeTew$EJQ zqkcDhHJ?TJx5&$F=T*SN%1`dCBJ}$}>37Zdmj*xBd%!8rc8Nbo;)^-r?SX{EXNbe+ zV8Qox@MC~eyG>dQhWOw(rTL5zJR`W;QH{c9ABRt?;QKoGBEg3`_;rGh5M1q(djzj= z@W+5tIhz-7`RYrEnq-uxBC%uPS1U=s#qR+$PKi)#+$(`3; zFnn_L^XmrB)#rZ!j+c0H=7o<1cjuA4%>pHNo*EAP2(-_kZ*seh;J_OP9J5`{=Vpno z{+xX!#z(*p_l9}vWt}iY@FO7DhZ84RAI}ne8E|MrZ=Q4%ywr^viaz4+=G-s- zd`j>Q%NQTQf%mfD9p7g_*H`;t!4+2iSrPc-z$xDog}*GTyw?RE_%QPyE%{brff>gC zG~m<@>W|a%TpJO8TLk_ta4OG;w>U#xFOJ7Tmhg}7W1Qwi`dljb(0lni&9C&KHz_Ip zYsEZpzr?UN1R_Yd?k`mfex~3DJ;H$2@ixK#c{}53e!UJ{;|L2ARKWp2{L7^u#|ZHj z!GA{+E?*U-|zIILYT-FECDbs_0V#e*^XJwksHDW7ul}PWkG7OQqo775on2 zuX6PU@UV6(#=s#yC#_}%CkUTY1z&zS0}};5SMc$7F`)H&LhzwW89zkgzbW{g9|Yr{ zus4rW^)IQsoe7-EGf3oTKjCw!;4gfe0qx%(0}rd$X8{tQZ69;|*}|s`^Axr7Gcy^W zH@oTcKJ?fSx?N=+uV;+@trI@F@43H_t`NLJ>>|al5qzeMYaPG$XnB6b3{?K#6a0nS z8UKRt9}Y!Fyc|2I7aZvfK za5|Shsy8+WUVCK_e@$@RpT$@6IT;2C<@@OS{JoX~?@r*vf4lf4l>Z+Dul;I}{{+mp z#Anrq%pfg%E*AVTnMcY6-w6Dh7?114jvXlYKPCPN|6*W_;KyTOLj22aW1wE}O9h{P z2Lr0F9uoYoUuArb#D7}wpFYgMB*9Ce8fd;J7z$xFy9DUm)c+C~eK-9XoK=3M& z!>PjmCc!gOuko;J>GKS5l`%&6-~FIqDc_XDSN+fqJS;xFFGTToUBl^hUifdpuiVMF z>fu57gW?aklJOHc@J0y!##Ibxdo}6cPXT5%_xsAL1?E#ti6A zFMZBKMW~#AS;ybc<-og3a6O-*v3aXaxQ%;8d^YFJ}f1a^SrY5&wOOzoUp7X1K&3et3Ak z?ZByC10DTvS48~(0#4&`qca|N0H<=EA#ycY@&#z{^&c^y?RlQyJ61AYBk}KB;CW>j zU#?&18i}vxHB|4>8!&qpf8JC7s%HB~iLd7_H2w)ka(U9yU)mR)g6laP)$`vG{KW4v zXH?UC-V#Rqrs^i#^1v6AZF%M2VC;^e{r5Qbv6AR-g6sK` zYQgJ{qJG@R)BR8#kBfm*d2SbZR{d~`;ER_qgC~T~I>9&G$$*yUcY;rn`91m zn-7P85ufL;VO;H~Cg2)}Df}<}{v*ZLb5SaXZwh|X#~iOt64ins$*1n`t9)K$@L}E- z**90a?iS$0fBv_bfyRGZ@R3DDhM@YScw~4v4~W29ffIi{ccuMKZw?SXQ^w0lQvR0& zUnBD)-5;k9y%|9LsOJWZ7Y)_P`qsPLZvJdFPgiN8ebE3MbH z_=DO<&n;;C{4#=1yn^$6G5;%X z;Ofwxug%cVRzPUBD%WfI2@8iDU)1M>G}z)22w z-ogOH)qEZjeAjCJuJZPQ;ENw-d@={#P!xdVaD`*P9SxlLyMB!81lRM-%KxW=>p9$g zg}*n3`45qEk!^yX3Y_$Ly`#_X1y1>1_#sEc@Hd|~fQPjM{oW|W|FhUp*Gv2>1uqkM zQ~P8q@Gw6Al=zKTGXw3fff#7Se~yg1DZ;-Jco?7CB>q|%UriGKsfhT4FmQ&T9o+G< zFL3IYt}9rfYP+2boXT^y^rM#HX2Dn9${Fq@`93N5jnXjR7yPp)GM}BIH*~zu5M0kI z?-q?{^O`+bS=ZkdlnjJ&f1U$Kl! zqwSmqPUTtXjEkEk{wo)Ae29(tJRS?p_yM&wHbI<}>xnTprgyd7j|^dY|KI zdoB~))q9%+cjf9G!K*efAC;4XPv(5}T>t(|_8J6#LF`)$XY;vTaMuo82i)va$T`Ll z5`Qc3u>Sq4#MkqH+79Kl+|GLba+vT*04M$b=5HCGx2@hvf$gKUfN$LO=NrEX~!P85IFJqSn8#6 zb(`RazQc?U75;w^yjbF|6nrogFY$Rn^q9)kDZr^6wmAD)iv`zvAlhH+fQQM+Q^Nn2 zwVa{aA#VtunyZTpLHp%^Nn9RxpQ2uHz3-vzcB|lej{?(*`TRj}y)UEfGYEw1>bcy^VNR2L+}lcF#bah@GuGU(fdP32|iZvqI(%o{u$sj?)2QQ>iPR6 z{;MKyTIP2I|JS9=N4E!xvB077|9S=ERg&){!8@*JK;^tiaMwP(0yvdN&jp_=d|s9K z<8NSKxZr!7%K7SjB-NAEf}gl7nC}IGPrZ(D)f=k?*ZUIMK3jon-6cyC{2e%zbBUaP zK30fjr*V1o9*xS$g@U)-%n{XoyG!uWuQIN3@_XQ6`98FOaR1zt*7qO6XW^C12kOFn z22ADhO!=(8TfnJ3_5O>>=aFYJuJ@?4ox25h{rT4k?%Eso3$FL@R1g1AaM!LLHJ$Sva5a}x z$MuoV(enQdIJM`%D}s9XkOt=8dIP7&SMxbpaCf|1F8JWp9PfCE z|8v1z`)ybw^LPD4GX-z?h#5fa&F3M(AN?zTZxj6Y!1s~A?cg1Wf0?tdanf1v)7lZ` z?+)P9zekJxpzXg&@I!Cqh%FNTJ;B$mVqmo3`<%_~srMR&2!0}P;y>UT26SAs2=2~P zHw!-fW{$6Qd`WPi&PuXCtg{&~eABDY5izQVB|P6ST+Q}1D5x-_4qz^R*tCJL_iEl-g6mjWkw)B85V1b%GEyS za=t(A<%lCCey!loioV?`_#(j%6M4|~d|Yt7XNqavd`f0Ae|H^ss^I&6$nj7-^SK*1 z%?nF^%HQdYT>9*L9`n(Azcmbdje_g_SFP7og1;9Q)rFh0nMxjM7`Z^f~$~TrYRO^2@-DJj=O39ghnne(Cj`KFxu* z0=U*iAQP;U_^!SBbVU5a5?r2VS2Gvw$2o!zyOwdNar3!DaJ|>9?fgH2>-}TZZ>P*+ z{;nUmNpN=`d8Oc+)|%`*)mOh3T<=LA$Yk%JB=diM0|Q!~Qw1OV0OKleYXsje@}~Od z`+~dsxi1LruE$>!{7kV2v|m2o#O2ZZ*k?&Omka*EO$;0+_}zl*y?rguuLVE%ZjPvZ zePA>5Uv)dQDK?CtS_&-flQP<{0^!LN9T@p9q+qTsGy z?hU~=%6_HV+sCwW`&2mXb2jj>@+M{`J7A z9Ui-ZGt~Wv%LJc#72|hEdF~MWTcXDf75q2Ce~sgR7}y@ZFK`5K8rN&YZ(k;S#sH`C z?7xZu9bZj?>%Dxf?`pwEiXD5c@OcI}&5!FuK1&7vy~H0TcHlU{51Y&Ru8?{u|5<{& z=R!LL*Y_!o7e2ob-1Teq3hvsg$8>PMEpIXddV`!kiv)MiLq0C}>$h^eNgQ}@3+}EL zsymtgEsotg4>+~IzT2Ym@J--h^7e@Earfii6nywYTo9e_#&mJM`mTny&jR3kQx0NK zYriZ5PUYF`?BlEwK41O@^QYgFrOzH0F@Jr>rIKOq%YwJ8WkB=&y5KV(U|i>^e*z~x zw$0IFCw4RcV^?zgCxriM#ecxSQG&k+oaVJ5j@};J!+d^sHAmEWwnlK*&YTJyt&{WV zmiVRLV$%K+V=eHqoYn6)|9imcT#dV5QiZ|K>2Ong-mILpCgc`AbB8m2Pr8`-uf2u2 zj1y*;3hw%mRtv80MC~u}Uld&5t5ST=OPK%Se{w{KtNBb4JXypYexBf875t_R417uO zO@iyYOA`biekt>J^>Ye%So_={@!fOF&kF9I|9n|+cO7^1Wt^|R`*fg`=O)45k^0sO z{ujY-zlH%FUq@Wdd|Wwi1Wxjx?~|zfTn#*|UUv&0eV?gX@_pOz!F=TG*9>05`3_yr z5tV0+;QC&f>bI2O=YN;u@8rPyhTtFdG5|GVK7Uxk{J$mo;aI_ASA>`URNy4%?);Jg zPUE*$&R^;HT_f>NxSJU(|DP+L8yQzS@Lj=AdWZ3N5r-46d)uA)eW%3N z_uaJoBbSDk|4iUip0%r(zsg~|;O@DUWrFKFcRH@05d8H!nUBin{|bKl*Ms;W&^wf` zdk^A#!M`YSsPo!Qg1h&jegd5AoE>gE0N1wSocZ4ptoJDXW+#3Xa4OG}*Kxd)B~hK= z`X1Y4!M_eXjQC=@eD;9dK>51ozK#S=a<114-XgO4T7&)$G};Fe-y!I zF!bHt62}fE05|Qhkj)dG$f9boF+F#Rvlb!j&&$yhsN;v#6aH{VVr~LmAT;Chh{yOn`j{nwu zoL=!R!QFH0%LQM1E5|>U1Mf$I?<01jw$%>75Be5IoFVZ~yn*v|&tp#)d{YrC&XE#- znc%Ly{jA{nE~EC>VCZFPhxs2cgQJDd$%4Cj<08S`dVNQ5eUI@%;j`CG;qp)oJWLK# zz-gY<_p%PrdPVTL8#tAJ?adrfrXO#+;I4n^Um73dgFa0hcwc}V5TAn|XW#(A=LoLv zeX72_2e|f~L^Z+Fz^VND9@gPP{EP7Uipu| zopZa|Q<+ptc}>Nb%J4{u)^tZYk?ihHE=r_2GTn>3*6!roRH9|x+_{U8#QK&%%uFEa z1jOu4PU}u1WipfQ>}c#xHeZlxz`iP;_V63q)2POYj$byBU#dF`1*duQ{7iLTD}bn~LPFdUU^2bx4J zQI^>Zj!Dn%=u6~uu2s$Rr&f;YNoMACCo?EOvL{oQj>j7lM5WSI zAS1LSWg|!>+8~kXw4sV*OJ^6Cg_t6T*7jsa$JCm0rcIyNP&YG9Mf2ftSC%xg;2B@#2MD!Nn27VeMwB=sN!r00x=%-96AX=P<) zRa3GD%)tl!Q`g*(sjO^nOG1dclj%%PU30u4iGSkp>C|YZs10Ki-gIz1r#qcVO`6xy zOg-EqT}!drdl0)JQCUfKX+Vc0XQ$%zr!`Y+aIMkS;nfv7Qje{N3}i+n>ROR`ZtRB4 znE9z@@UCl2poAzBw|2Hw$C&iHk-XjRl-znWj7m&D&2$Y{mEL4LBisB8`iRpf^xtYi0ZRXu$Gk|Y`m!E(*d zZC4s2yCJ)$x%G(q^{}$HT9iaCM~45sxff7*w;EP=^s5@-d~%e>I8q*`cXo8L0+|5i z)AVU-kwjwB^ixhpUz{;90c9uoPn$HU0jjw1l<`yJKqsDi#wn-QO~9NJm}gpo0CZ$G zCXB@7GtNrHrwHFE6Q_&L@q2bcWqiJZ>A5{^oeSc-+pR`E5_KJ2^D?KW-`W0M_= z(wJwfDl?0^QY{In*%Wm4BAK-y?fsYIc+KooCef2#oHBK2tjkU=RTXCHNi<`|g@Wg% z%20tC8?ur9Ek%lZbCc-~WYmzU8l6bY>!4mT(-bPL({)E(J!wn77vgi#!%#4d6*S2a zZFB>wm4G%y2hmJ6^NiE{xxaE$M`}SLJHgjE%;Gh3lMDTJA!>Ddx&w14O{tY*xsRsJ z%Vc{BuoedTn=~E89NW;GY{%SJ*Ahn=Od-IkGDkIzrExJmxx126KYuRO&mV+Nbx506 zK|zVAVoI(FHfwWd*P=SWqvm$bPbHu`jl$+O4rmcnERH5dQ;$tFjM1j1S-ggLP?MvL z8cZix($u%0R3yfw=5}Qkkwjza;_CF*ra=9Wd3B<;cJkD^@e^juNQ}Z8mQ}DwjYL#d zotfo+iL?nt&*R-c_}CTk?sUEkfga1qTS+Ox16rlu=R zJJypN4ak`3NDo#C!9)O5y^TUeFq-J+^FRH6QjXE^Y z5$Np7(bM$fw4XZKZ(;5?)6f>1$x>H8- zy2(gRbu_2y8b&AL)uiZ5lUf6}I>BwG_9R-<v z?wkXvvFc!7nt@$uD_;zm?0-zIO4vglMKsdW=di1+Mp>|K>Q0&U1R96q!x5`bc+;K30U>7u%-KnaKv z%4oK`VaG&eQaRc&ld>XGg~=s231)4JL^4N9&V?9d4UFk%+s4WSb){ttg$*fc&JgYD z+Ai@Hw!gxA)l!(@oyybRD5I|XZv-YAXek{sWf~F7Dy@)4A>AdG1=|E;j7me(go#n; z#4(QSPn|K0WOpo>%Mu=#D!7Ufj0;swd1fi@=f&AYyl6A=`*xdf33K9 zT1*dOm}_cJs50&mqk9XKGn!OvNizc0(q2D5AoXUjT9yXN4PPIOovcNcYY_XAAcMhp zUaCpya35LxLY5qM565d{IRaY{))PvD1yDsI!7|jI>X@BrOQgEHJGDpQt zyr+z>OH`JRqN?oX451TtaQMlLT!=2SDi0o^t~;`(`Y#q#sRD#_PFze7)?ZjW!tZMA z@Eo;kR*c-xRqkwH3|iQhRtJU&glp1T0s*TJ+7SyTeCiSUYp02ch6ynJva?7b)oRL> z;C?KyuyUd1Gegv}aVJzd%NsZiEhU8ZK@DJuo5X(AA~fXa=Jr&wo8{i(5*6FmWFf{= zv~>_P`OG9-knKfEz{K{Q9N9HZ?hMj@@#IGG#f8>dd8C8qPIlB{31*C`T!jO#RRx;A zf&5l8Lz*eXa!f?HZn*NfO%>hJyW0kR3JO-f4T-FW1rn#WOXZlXOU7B>1vI6lDro^l zOXtbC70X%m1SMyTwc6>s#8|B*=E32XUBellpWoY9Df3RQIts2I=LA-Y1O$v9ceu*Pi9d;)jpY3%Qm(m}4ow@T#=I{9kSJ<}i(sTLAFY)~c> z@To0KXZ$5^RrzR?aa6S_6SgI$cQ$oq%*F(KpxB4}l)MC{%lck6kYdcLn4p`8IJk`- zr61;q@63!hH&N(944c=yDcpilnSqNcy9k4y!SZ^^Aa1N{b?i;3fr`Wg-FSCp^Hf?t z$LH5KCMI@G6Cb@}BG{Ue%nnL0ibk{cTo;_SiTUa7%)BIA7C~b-x93M;Wf^C;zsL#9 z6P#hl>Y$odY|>BaPNA-*nNWc+_qVMnyShy3hD_c3M^2hNu9@|WO)X4nGrR(BNk`s1{d`;rWx7YEicBtkDx<8`}d%?d*`Hc8K7H>m##xF0{K~XGN{wf_wGGI2((KVOOs!y^yE6 z!gJY;wVgHW-F!k!3hYM7PLLZps>}Tp5VOJrb*%2Q(%wd*C7DTDz0US30JHHPGTDBz z9(0zMt%2D!zl7Nng{n)8@=#}Iu7k!`=0X3A+s+}K(i#^dh-XK$?9NVMt?|Amttz83 z3+|t6FH-+lT~pIMKQp1T9a@D~IDviFutg7_oye(Sp(a7@1Pb3OCeEl0pvtm&qCQ28b~Tax0V#@ZX+I4O%0E8S-6+dmPD z6%9@L>~INM30D8iZRd_5#Ths51lVq9uYR5I9BmGP#)D3FIgR1=WRy+ss+(6mE-wX@C19p4G}` z#bmGe154%pY#-ztW64>jhG?QWx$f*7KSAWCZmx}t1+QiGvvl`E#=`b)17>dc+Av@# zK#wVJJZwR^Fr&JKp0Hi?oLxb}G7?1z*=)I)1PmPbPd=Z_;#VMi}l>7;P9fYCy4 zbb>a);{glbK5P|m8-#2$_(LK%kNIAqYVBDKVe)@#^Bbk=KrFGZ{t zjIxzgq~CRY9k8Se5!wCDdJG&n!B|-Dz*0Ir!RsM32HyuD29@T3v9T;Zncr@D8scsL zXIeW3#fqb6sm@3s!)xWza8x?vq>N>G~MAehq0e%We{K3)y*m(^t`9NmI`ws ztP5@3Jcfj>Q_zA|%d%LTO^C+2Ij+C4@N9Qyik6KMH)wUo73b?-GkU;*AmBA-kKm?0suOJEMZo3y1hS zalAQ=Bi8dPTyZAR7lol-C!cGC-q(mUPgON{c4Mv4Ft4c|vt49!<{suT`$~FHKaNA? zWXe=Ern=`&pesDx>7)^*&{;ds24X~8g{tZ4Y@eU1@2C$ePqr($tWH0VPBdZXAVvNJ zbalv(2pNgu#Ix@hL@L!l$+HUsyZ5X^H2s(h(C4z1(br;wrhWKM{i_wYnux(*yrZg& z3lc4%~Yx__-@UIB_No!4D#MAa59G+3Ii0OarvaV zs?Du3oY%7!5U8_%9f@c6u=aBgEBoygSWESB05WR6Zq=1#&R7g_gzkpfl52^e+GLZe zQZ8WsPu5D|%e1g|M=$y7G^^kH8dykYR3*w3y6tP{l|7zaz)(wv_%#Ziz5KxJj0Ou#z>R(*YD%UiZDNtphhS zZ3nlkB>HLt9NI89J&Z$&riWZBnFhO^W!$=z0mZQ!Zh6whA?K2FO*wx10M-UPz@hU=?PwR-Nxb?0Fj17{xJoeZ&M`Vuc0%>ML|can)b&_W}brhHxJn6Xo+ zn-?~}T=VviABb6rxj08jAdfs}rqpR4X4vI6#_rC2LE*FJI$i&%#?2XXVG^#M(>}SX zwM~Yo?Pi-$MaLTgT8g|@*%1=l7;?)Lt+E0~Wz4Z(bJ>J$)Hk;|&abcr&#i1$@4AK9 ztqIxawH#-+-43)E|0LdSM;Wu|(UrHkcJ<50k-*bzhA}_~i6Emi@8v%oA=hK=;zr$% zCEmdvHyeR=()?GB3O(N!*iSO2`_O`B3eV}V@XodOkJ-VItCgYzu3y3tJlBTW*;o<@jfNqXj?KQCL1Zb`Sw z^AHL1G6ZH1`Y%&8rW>bw@$^Kpxfv_U>~+mVCP~k>g*y{MbYC8QUO;=25ZHalMt7K1 zm#fZ$qm|~iFs&5o9vtB8@L8!-DeE*8oP9X}kcThAbtzTwax8k4 zS3rg|eFyvnMz`T`baUrCy)MWPig|dW6%WF?uDXyJJCA0Hnjdss>x#YGq~u_R2(Wq6 z9~X1Tka7kNT~$->an>zRKr+8XInCXd#nb;IkD`#R;S(}^ZM#PfL=@}=%D$$Bn!7fx zHL^~H-Ve-9eJdo)={US*whGNIAtVpo2&bXGljinEo>$VaAIwub2|~Y{J!0d!?}1ER z9p)G%<*dgCpzm>4D7f>Hqxf@QS`xiRb3boj*pCXq(uaA8g=#lF<412oe==Wu;0pkAEwTAre&zRQvnom+G(OXqx&93IBCzqrF zjFm4-Twdr}|9U+cJW$ykoP)4GMbE?qL3*;A_gv||%_kc!yl+KA0_F3SAOuIAYrq`1 zdz&A`&=P2@E|}w49ShQUmVA1uXWrZtDmGyPp7gAs5=3}d)s0FF`N6-C$F%9tSN}bz zW^B095+$=(d_+z0y1QV8x$A84Th%|3BZg3+S;Mj84;MF4$Xd1kEsq%}XTd`QMVz(p)f<_V zp{FgSQU64wocoFe4T zq)kCH-q^^Fab>r7zBg!X>k4khsD}~k1AUQGlAWh-U^P@bC+Pv$hw1I-6Re&`bAO%c2w3LB7yT-HK5U%yyk9}z}n2-Y>plI%yXO7*` z#L$O*;LJ36Js)hQ6so61M*Cy;+HH~7@FgF1q!-N|_||Jq`ZSiQF;oU!2eCA2VeIJZo{mOBIikeeous~*VCHK;zJCe!1LcZiX(Rd*o}G6-vEWdT)GU5{1bba`@?Slipn)pQg$p61syb8UdIxg&C^ z6Bar5#H*!zLi`chowzFy_Xif8>86^H^6I-4#VMD&IT_+a<1?2bx1Xoyf8U;NKU;H@ z|71+~q!ZROs%Y%{5FssME5N{yF5vkQxYs5c70WfA^%WYJlD_$gWklU?FIQQC$Zb2rvRI8+-gX5#`I%iH5Xax8c)Yi z3K z#3ytbvfEBeTR93oy1)%pIZcp%fZMDhMmSo>95{+t)O|YZGu2}GOKbH~cEJ#AW4k`u zG})1jngkDJI$Fg}Yz}4SS1X}?V-->J56+=5x>Ux^0o@lYbvb^+G|$2Q3=>wz5Q{ziSqMK8U^fB%*d$V93(aeVMNiqcXhv##qb90(yvc=x|nN zHtmM$k2+yGF)j`|?N&plc`9TdB)coD=XeU3{O5!${&S70;7Y}PYOH^Cl2xB+aPrHL zBOULll4Az_f}zFlw>KqQ_${^Ig*CGI3Or+;eHxMGX8*@Io!QwI^uFvZ)}3T{B)~;~ zG%a_64w;ksaBljma{ARzR1&}H;I0@7v&Z;aE!Na{F53A;7jv!?{OK1g$u~?t`Q%%Q zL1_$|NBVecHD`J|$J|KH{wS0^ocYc{#51}OgRr05vU{q(8rbz3*)Ag%yu4l)%mU=* z3v675ScoC!v8*U^+NQ6mpN0g@qT#=ol{2t&XOG=kob&QJkK)WdeQ2KCMceS!qpK%r zkOxg3M+2dyv@LHjfh*R2C&fC~Y971ei$kPC%%U7~rsG0z8#c<+#v_s9i}1~Y z?BhGOp!=gr+*P!Ajni+485^mO2kecBmvDcP!RF7uv4a|gtibxChK!};Y{lF8s4?mM z&Y#;}AtQkNj`{X_`@gY7{*OS<@h#>M{TS7K?hHn???>|8So7}2aEvHazk3y9Fz7#0 z(am|$4ErPKEgBwyaa&^sZG-uNXgpYr_rNpC!U(AA#|x92;36b%a%(uN)J3i?scyN4 z?38^0(iyydEC);rNY@%Tx~vak_vN|3MWyiLWN1eyl5k(1-5!yyJZz=QPZip&-|ycl z{8Z)<`)0tn@WnxHKH=uF_9Tfac>%`IRp7=>-XIN1wXXF74o$u0Q zX%x6}5Uoz4&AWfA+ahGs)t`^Dzo%kL#3!4N;41G+#K(2b>uJN!2Q^=a6AApPTA|H| zNj1`08`bo_eMRCCnEcIJ-_5%}+B0XhYR$1>8+Z^IjAQ&{ z^fzuC7?-GHeDy6{vh!i}gFY1=(t5fQa$ZQY+s?0nBiU9hbq;d9&Ux)xJCm#{&oZwp zV=zn>qNJT{so-gRnyITQv8ZdY9)~b*ONIVE3XIO|@rF<(%FA#vWz7QJ{MhTLL>+Cw z^!ImfgH8h~`WVakfpS}ogvQk$uu)a-pUJTfBfxA9CXDAhj$r>JZb2@asErA`;5iy4 z*U^PXmBP!MV}_C zs$_to2tU5op50@&K_J?2))AV3?ganew>*I`7N^Cjb~jWhp6i)1;;BZ z^m~{CDBSyCyB=uxkasZGy>IE7>^Z^cpKT~uisrcLxB%@yn$R^ZOmB6kjO#Pkk>9ts zS|5$`t-rbHTovw5u-5!T&-lRjj`BoQ=G-F1up2LLzo@sbkCwE z-RGsA0vZj!>B7H8WIe=B@|xSzmWI%&TUQYU zVVwCt2N_b@P`S)j%Dif2cDo~N#@uz(Za5n3RRphOQO}@x)2F)FH)cX~iA-7(voa<`f|ViklT z8)29M4%<(+gg;J)1*|k%_63?J=xKLVGqc6p}jfQDdX#o zr^kd$^tNPAn^)elr~_GWnCWK9d_1y`AJ__fNq~lpup}jrzq;BpUO63r^2+gN`Rq>l zqbJqumD6^lS8k5Yly`TUC+N#lZHd-yTz5{iwSb#`LpIIL33)*Sb;Rjh!!?oY?oOgI z#6$lkK2!{_G(}F%O(QSnj$f4V%9}gq&P{b>yie!zd9W$M|HZ;?SPB23;lYAyKymHQ zk@&I){@3(1l3v3yJ2L(r=zJf8?{@kbl3v5%PW)2md!3X15=pONnG@ele-7yX>h0~+ z@~@Hf8g7^L10;0Ip9KC{{IBVkNCp~i-;)zk9jWa!{V;~TG(yT!)6d$A2^tO>A`vBU z+y5fqy;k|#595d$?vQj^e$7Y2%Rv9wN4#`K3Agl-{|}w?+t1~kG`#Iz&6z{Z zSJ5Bi54-*gOX-{EY4|zw&Hu+Kj`uT=D24XFH-yt`xI*MvIh5%i68-|Aoqok(oL<9s z2L%(j`M>O>Up|u4Yq(={Fulr;qJMVMcQtW(4Hw2VCWmhR?*Sf+|3z(hOO|l@C0!h< zoGTa2U&9haqbAbyt0es@Nw4vu((i@zl#`}kBk9*j`dZOHn!Zf`knmt6rm>^xw_i)# zJa7AA4rfWn$}r51Kb52V5ZBJX_6AN@dntz-vw~sRX47lEjzTm$y|;qXc~XyAoGkmV zrc>ZJL?=wkzeLi{lJpX2bgwr17ynTq`Byl&ra#WXrF5puM56Cb6-|m2lJS + + + 0. 0. 0. 23. 0. 0. 46. 0. 0. 69. 0. 0. 92. 0. 0. 115. 0. 0. 138. 0. 0. + 161. 0. 0. 184. 0. 0. 0. 23. 0. 23. 23. 0. 46. 23. 0. 69. 23. 0. 92. + 23. 0. 115. 23. 0. 138. 23. 0. 161. 23. 0. 184. 23. 0. 0. 46. 0. 23. + 46. 0. 46. 46. 0. 69. 46. 0. 92. 46. 0. 115. 46. 0. 138. 46. 0. 161. + 46. 0. 184. 46. 0. 0. 69. 0. 23. 69. 0. 46. 69. 0. 69. 69. 0. 92. 69. + 0. 115. 69. 0. 138. 69. 0. 161. 69. 0. 184. 69. 0. 0. 92. 0. 23. 92. + 0. 46. 92. 0. 69. 92. 0. 92. 92. 0. 115. 92. 0. 138. 92. 0. 161. 92. + 0. 184. 92. 0. 0. 115. 0. 23. 115. 0. 46. 115. 0. 69. 115. 0. 92. 115. + 0. 115. 115. 0. 138. 115. 0. 161. 115. 0. 184. 115. 0. + + 5.88612000e+02 2.15689667e+02 5.54606873e+02 2.15611755e+02 + 5.20468445e+02 2.15258972e+02 4.85772522e+02 2.15278687e+02 + 4.51321503e+02 2.15120773e+02 4.16495636e+02 2.14783768e+02 + 3.81401917e+02 2.14718674e+02 3.46348175e+02 2.14802200e+02 + 3.10953491e+02 2.15044067e+02 5.88692505e+02 1.81895676e+02 + 5.54564270e+02 1.81450623e+02 5.20432983e+02 1.80957260e+02 + 4.85783722e+02 1.80860062e+02 4.51179932e+02 1.80639709e+02 + 4.16396912e+02 1.80453308e+02 3.81144226e+02 1.80382690e+02 + 3.45956238e+02 1.80322159e+02 3.10507690e+02 1.80347870e+02 + 5.88607361e+02 1.48160278e+02 5.54770813e+02 1.47601761e+02 + 5.20398499e+02 1.47191406e+02 4.85810608e+02 1.46545593e+02 + 4.50779694e+02 1.46543564e+02 4.15969879e+02 1.46196732e+02 + 3.80619965e+02 1.45882202e+02 3.45383270e+02 1.45875610e+02 + 3.09773987e+02 1.46258408e+02 5.89240051e+02 1.14398933e+02 + 5.54773438e+02 1.13560555e+02 5.20508728e+02 1.13239220e+02 + 4.85565887e+02 1.12632996e+02 4.50695831e+02 1.12478821e+02 + 4.15567413e+02 1.12141571e+02 3.80236389e+02 1.11906654e+02 + 3.44660980e+02 1.11700226e+02 3.09211731e+02 1.11827919e+02 + 5.89326904e+02 8.11330795e+01 5.55244568e+02 8.04520645e+01 + 5.20487244e+02 7.96654358e+01 4.85463074e+02 7.93521194e+01 + 4.50391876e+02 7.91115799e+01 4.15237152e+02 7.86507416e+01 + 3.79536346e+02 7.84776230e+01 3.43838593e+02 7.84099808e+01 + 3.08281067e+02 7.82369461e+01 5.89964478e+02 4.79190063e+01 + 5.55360474e+02 4.72442245e+01 5.20573486e+02 4.66231613e+01 + 4.85435333e+02 4.63138351e+01 4.50215057e+02 4.57072220e+01 + 4.14667877e+02 4.53788414e+01 3.78956207e+02 4.50921440e+01 + 3.43222778e+02 4.47188683e+01 3.07135529e+02 4.45427628e+01 + + 4 + 4 +
d
+ + -9.9999815881189502e-01 1.2697535215647785e-03 + 1.4387837969518850e-03 1.2288328754052873e+02 + -1.2718960354282296e-03 -9.9999808231089615e-01 + -1.4891793059053041e-03 -2.7774165634818203e+01 + 1.4368901471439603e-03 -1.4910065474532613e-03 + 9.9999785612079128e-01 5.2883271790406673e+02 0. 0. 0. 1.
+
diff --git a/lib/CameraOrientationTracking.o b/lib/CameraOrientationTracking.o new file mode 100644 index 0000000000000000000000000000000000000000..69556e81f69cc83b1d6d4e7cc3f5727186457ed5 GIT binary patch literal 246424 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�RiAR0Ha%FE-7*eV>@X}K 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 +#include +#include +#include +#include + +#include "opencv2/highgui/highgui.hpp" +#include "opencv2/imgproc/imgproc.hpp" +#include + +#include "ReadWriteFunctions.h" + +#define CAM_PARAMS_FILENAME "./data/camera_calibration_params.xml" +#define CAM_CHESSBOARD_CALIB_PARAMS_FILENAME "./data/camera_chessboard_calibration_params.xml" +#define FPS 5.0 +#define BOARDSIZE_WIDTH 9 +#define BOARDSIZE_HEIGHT 6 +#define WIN_SIZE 11 +#define BOARD_SQUARE_SIZE 23.4 +#define RESOLUTION_MAX 800 + +bool readCameraParameters(std::string filename, cv::Mat &camMatrix, cv::Mat & distCoeffs) +{ + cv::FileStorage fs(filename, cv::FileStorage::READ); + if (!fs.isOpened()) + { + std::cout << "[ERROR] Could not open the camera parameter file storage: " << filename << " !"<< std::endl; + return false; + } + + fs["camera_matrix"] >> camMatrix; + fs["distortion_coefficients"] >> distCoeffs; + + return true; +} + +int main( int argc, char** argv ) +{ + // initializes main parameters + std::string sCameraParamFilename = CAM_PARAMS_FILENAME; + std::string sCameraChessboardCalibrationParamFilename = CAM_CHESSBOARD_CALIB_PARAMS_FILENAME; + float fFPS = FPS; + int iBoardSizeWidth = BOARDSIZE_WIDTH; + int iBoardSizeHeight = BOARDSIZE_HEIGHT; + int iWinSize = WIN_SIZE; + int iSquareSize = BOARD_SQUARE_SIZE; + int iMaxVideoResolution = RESOLUTION_MAX; + + // updates main parameters from arguments + int opt; + while ((opt = getopt (argc, argv, ":f:i:o:r:")) != -1) + { + switch (opt) + { + case 'f': + fFPS = atof(optarg); + break; + case 'i': + sCameraParamFilename = optarg; + break; + case 'o': + sCameraChessboardCalibrationParamFilename = optarg; + break; + case 'r': + iMaxVideoResolution = atoi(optarg); + break; + case '?': + if (optopt == 'f' || optopt == 'i' || optopt == 'o') + fprintf (stderr, "Option -%c requires an argument.\n", optopt); + else if (isprint (optopt)) + fprintf (stderr, "Unknown option `-%c'.\n", optopt); + else + fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt); + return 1; + default: + abort (); + } + } + + // reads camera intrinsic parameters + cv::Mat cameraMatrix, distCoeffs; + bool isCamParamsSet = readCameraParameters(sCameraParamFilename, cameraMatrix, distCoeffs); + + // checks if the camera parameters were successfully read + if (!isCamParamsSet) + { + std::cout << "[WARNING] Camera intrinsic parameters could not be loaded!" << std::endl; + } + + // creates a camera grabber + cv::VideoCapture cap(0, cv::CAP_V4L2); //capture the video from webcam + + // changes image resolution to maximum (e.g. 1920x1080 if possible) + cap.set(cv::CAP_PROP_FRAME_HEIGHT, iMaxVideoResolution); cap.set(cv::CAP_PROP_FRAME_WIDTH, iMaxVideoResolution); + + // image resolution + std::cout << "Image resolution: (" << cap.get(cv::CAP_PROP_FRAME_WIDTH) << ", " << cap.get(cv::CAP_PROP_FRAME_HEIGHT) << ")" << std::endl; + + // checks if the camera was successfully opened + if ( !cap.isOpened() ) // if not success, exit program + { + std::cout << "[ERROR] Could not open the camera!" << std::endl; + return -1; + } + + // distorted/undistorted image + bool bIsImageUndistorted = true; + + // generates the chessboard 3D points + std::vector objectPoints; + for( int i = 0; i < iBoardSizeHeight; ++i ) + for( int j = 0; j < iBoardSizeWidth; ++j ) + objectPoints.push_back(cv::Point3f(j*iSquareSize, i*iSquareSize, 0)); + //std::cout << "objectPoints = " << objectPoints << std::endl; + + // creates a vector to store the determined image points + std::vector imagePoints; + + // creates a matrix to store the transformation matrix between the chessboard and the camera + cv::Mat cameraChessboardTransform = cv::Mat::eye(4, 4, cv::DataType::type); + + // main loop launched every FPS + while (true) + { + // reads a new frame from video + cv::Mat imgOriginal; + bool bSuccess = cap.read(imgOriginal); + + // checks if a new frame was grabbed + if (!bSuccess) //if not success, break loop + { + std::cout << "[WARNING] Could not read a new frame from video stream" << std::endl; + break; + } + + if (bIsImageUndistorted && isCamParamsSet) + { + cv::Mat temp = imgOriginal.clone(); + cv::undistort(temp, imgOriginal, cameraMatrix, distCoeffs); + } + + // finds chessboard in the grabbed frame + imagePoints.clear(); + int chessBoardFlags = cv::CALIB_CB_ADAPTIVE_THRESH | cv::CALIB_CB_NORMALIZE_IMAGE; + bool isChessboardFound = findChessboardCorners( imgOriginal, cv::Size(iBoardSizeWidth, iBoardSizeHeight), imagePoints, chessBoardFlags); + //std::cout << "imagePoints = " << imagePoints << std::endl; + + if (isChessboardFound) + { + // improve the found corners' coordinate accuracy for chessboard + cv::Mat imgGray; + cvtColor(imgOriginal, imgGray, cv::COLOR_BGR2GRAY); + cornerSubPix( imgGray, imagePoints, cv::Size(iWinSize,iWinSize), cv::Size(-1,-1), cv::TermCriteria( cv::TermCriteria::EPS+cv::TermCriteria::COUNT, 30, 0.0001 )); + + // draws the corners. + //cv::drawChessboardCorners( imgOriginal, cv::Size(iBoardSizeWidth, iBoardSizeHeight), cv::Mat(imagePoints), isChessboardFound ); + + // estimates the transform matrix: translation + rotation + cv::Mat rvec(3,1,cv::DataType::type); + cv::Mat tvec(3,1,cv::DataType::type); + cv::solvePnP(objectPoints, imagePoints, cameraMatrix, distCoeffs, rvec, tvec); + + std::cout << "(Rx, Ry, Rz)= (" << rvec.at(0,0)/M_PI*180.0 << ", " << rvec.at(1,0)/M_PI*180.0 << ", " << rvec.at(2,0)/M_PI*180.0 << ")" << std::endl; + //std::cout << "(Tx, Ty, Tz)= (" << tvec.at(0,0) << ", " << tvec.at(1,0) << ", " << tvec.at(2,0) << ")"<< std::endl; + + // generates the axes 3D points + std::vector axesPoints = {cv::Point3f(iSquareSize, 0.0, 0.0), cv::Point3f(0.0, iSquareSize, 0.0), cv::Point3f(0.0, 0.0, -iSquareSize)}; + + // projects them on the image plane + std::vector projectedAxesPoints; + cv::projectPoints(axesPoints, rvec, tvec, cameraMatrix, distCoeffs, projectedAxesPoints); + + // draws the axes on the image plane + cv::line(imgOriginal, imagePoints[0], projectedAxesPoints[0], cv::Scalar(0, 0, 255), 5); + cv::line(imgOriginal, imagePoints[0], projectedAxesPoints[1], cv::Scalar(0, 255, 0), 5); + cv::line(imgOriginal, imagePoints[0], projectedAxesPoints[2], cv::Scalar(255, 0, 0), 5); + //cv::drawFrameAxes(imgOriginal, cameraMatrix, distCoeffs, rvec, tvec, 1); + + // converts the rvec, tvec to a transform matrix + cv::Mat R; + cv::Rodrigues(rvec, R); // R is 3x3 + + cameraChessboardTransform(cv::Range(0,3), cv::Range(0,3)) = R*1; + cameraChessboardTransform(cv::Range(0,3), cv::Range(3,4)) = tvec*1; + + //std::cout << "R= " << R << std::endl; + //std::cout << "tvec= " << tvec << std::endl; + //std::cout << "Rt= " << Rt << std::endl; + + //~ /// FROM 3D world to 2D uv + //~ std::cout << "FROM 3D world to 2D uv" << std::endl; + //~ // creates a 4x1 matrix (homogeneous coordinates) to store the 3D points + //~ double data3D[4] = { -1*iSquareSize , -1*iSquareSize, 0, 1 }; + //~ cv::Mat pts3D = cv::Mat(4, 1, R.type(), data3D); + //~ std::cout << "(Xw, Yw, Zw) = (" << pts3D.at(0,0) << ", " << pts3D.at(1,0) << ", " << pts3D.at(2,0) << ") " << std::endl; + //~ // applies the transform matrix + //~ //cv::Mat pos2DPx = Rt * pts3D; + //~ cv::Mat pts2D = Rt * pts3D; + //~ std::cout << "(Xc, Yc, Zc) = (" << pts2D.at(0,0) << ", " << pts2D.at(1,0) << ", " << pts2D.at(2,0) << ") " << std::endl; + + + } + + // shows the original image with the tracking (red) lines + imshow("Original", imgOriginal); + + // waits for awhile depending on the FPS value + char key = (char)cv::waitKey(1000.0/fFPS); + // checks if ESC was pressed to exit + if (key == 27) // if 'esc' key is pressed, break loop + { + std::cout << "[INFO] esc key is pressed by user -> Shuting down!" << std::endl; + break; + } + if (key == 'u') + { + bIsImageUndistorted = !bIsImageUndistorted; + std::cout << "[INFO] Image undistorted: " << bIsImageUndistorted<< std::endl; + } + if (key == 's') + { + bool bIsCalibrationSaved = writeCameraChessboardCalibrationParameters(sCameraChessboardCalibrationParamFilename, objectPoints, imagePoints, cameraChessboardTransform); + if (bIsCalibrationSaved) + std::cout << "[INFO] The transformation matrix has been saved" << std::endl; + else + std::cout << "[ERROR] The transformation matrix was not saved" << std::endl; + } + + } + + return 0; +} \ No newline at end of file diff --git a/src/RedBallDetection.cpp b/src/RedBallDetection.cpp index c898940..4b92ed6 100644 --- a/src/RedBallDetection.cpp +++ b/src/RedBallDetection.cpp @@ -10,7 +10,8 @@ #include #define CAM_PARAMS_FILENAME "./data/camera_calibration_params.xml" -#define COLOR_PARAMS_FILENAME "./data/color_params.xml" +//#define COLOR_PARAMS_FILENAME "./data/color_params.xml" +#define COLOR_PARAMS_FILENAME "./data/color_params_RGB.xml" #define FPS 30.0 #define STRUCTURAL_ELEMENTS_SIZE 5 #define RESOLUTION_MAX 800 @@ -72,8 +73,7 @@ int main(int argc, char** argv) { // initializes main parameters std::string sCameraParamFilename = CAM_PARAMS_FILENAME; - //std::string sColorParamFilename = COLOR_PARAMS_FILENAME; - std::string sColorParamFilename = "color_params_RGB.xml"; + std::string sColorParamFilename = COLOR_PARAMS_FILENAME; int iStructuralElementSize = STRUCTURAL_ELEMENTS_SIZE; float fFPS = FPS; int iMaxVideoResolution = RESOLUTION_MAX;