From 43a9408da25cf32774b30a384436f0fc6590d141 Mon Sep 17 00:00:00 2001 From: ros Date: Mon, 19 May 2025 13:56:54 +0200 Subject: [PATCH] Configured basic calibration of the camera. --- bin/MonoCameraCalibration | Bin 0 -> 193616 bytes data/camera_calibration_params.xml | 17 ++ include/ReadWriteFunctions.h | 28 +++ lib/MonoCameraCalibration.o | Bin 0 -> 341384 bytes lib/ReadWriteFunctions.o | Bin 0 -> 223184 bytes makefile | 13 ++ src/MonoCameraCalibration.cpp | 278 +++++++++++++++++++++++++++++ src/ReadWriteFunctions.cpp | 244 +++++++++++++++++++++++++ 8 files changed, 580 insertions(+) create mode 100755 bin/MonoCameraCalibration create mode 100644 data/camera_calibration_params.xml create mode 100644 include/ReadWriteFunctions.h create mode 100644 lib/MonoCameraCalibration.o create mode 100644 lib/ReadWriteFunctions.o create mode 100644 makefile create mode 100644 src/MonoCameraCalibration.cpp create mode 100644 src/ReadWriteFunctions.cpp diff --git a/bin/MonoCameraCalibration b/bin/MonoCameraCalibration new file mode 100755 index 0000000000000000000000000000000000000000..3f17af749003b85606eb50f412f4850dec8af626 GIT binary patch literal 193616 zcmeFa3w)H-(LcT*(Wqbo6&tOW#i|7_m;iwQrUqegBezJ1q868sY)CXDG1)+{qM;$m zx~|0wm0oP4R!hB9v_&Ic2p8GtYc=34-lO&M#CS3dj(y`X6I+Ul*>Cz$|KukE~3lX zB=B>dbbc;@{dxIck4LAQFX{BpX%gT3q%r6(|D90rzKoYA z>ALfTUi#;8Lj`~H(;V+?(2-sG`X|llnJdS0n+LBs5Ast;`7lWaG2*<5@N6? zDS744DFcc;165L{D+kRI{8xqls_|bf{#%OwF2#SB;lIoA-%9+q3jbY+|5oF_moAxq z^fdH&$vR(-mo{_OT?=-(N9dI^0Vx^D2)pS(3^ z`(+>Gw@;ZjdF9b(EqJS}<;d1)!w-3-=gr&8ljbImgb1#GL!hA|DYj>@ehSVB;vo=MX$Loz19W)*TWO@ImKn%!(I4);Nn+X2Pfvg z+{F&Rbg}0lF7m&Jq>{*P>s;_Vp_do`>3@q|Dcs?lSKsF8sS)>~^b*ef%!|yvhZ?+J%3> zMV|Xy@^B9S1N(Q0unmS) z{{Bb8J-eLnAHoP!6c_(mAlFNp%Yi=>eAe$2_y|M(`xoM3geT48-7esmCjNU7eolPO zUnAPB68>Y@li zHJY3wP#==rQsw^CwA)C?L*wf9e-iv@+$uTl(Sp5aAm*L;v}p3*gmI6RIO<2T#P8Pd zUxOdg{MJi9NtN>wmh*V*b%M(b$!xlm->b<#TG}T^$~i*fmrDF}4Zi{LLi)b?kU*R& z$9+)R^Ir`De!YYbl=J10{^phZSGeGNun(=Q3RV;?4V0EGE?rz(Mtjh4*o6kppFO5% zX;w*LO=x;`FzCx$YJ!TEhNf1QS62Jx&X}Da$jAufR#er7rc_rKE|;J&fjPAy3szPp zDKmrB)gUV)y3m9`ps21cBO_zXqQaW8qCickx~yVxZc%=$=rgTE z^wY*z%?Zn(%#7f2pJ|JXjEce~!QykvDvB$Y@d*95h{bD6b+87iemiC+xAA35YD)K6 zrUX8rm}**vWs!^t#X-z@af_ z;i#+*C6YRkps=d=Kh3i}hPyM&HW!f0B3ha_Ie~EBr+-XFadqJ`H?t?0-UP;X1ll4c z9h5CuTvc6Jt7%gSnkfr`rh7)plW1T6mZf^{Zk0tv~`{a^8**Z923vWgHV zg0f`lr<(d;PCLP+9R#z?y zlm{yohe`vyVG+Iipz72N6lP0FU0!Zwc=tc;O+c+zTo@|!<&mH4gCN+Wp;|1gDl94s zE%#9-n3ubV|1IHvMVWIEuJc3X*mAk;!RDf4tk|wq!UKYZOLE!!s3hA{LeC!;fLF4Q zVvOQ)nT_%*QDl-Fv-ygvalRs{1dNLWhLLo$c`Im6Z~qO6c&73;KQt~_QJgT?eC{fa z=TPYXpySIbYJ#XXmLS28+eaP{e9k@-k1wpkCaGAanSF2{jE)$v)~EbXR#|0D0Dcf0 zmx~J6nh%=JyyvZEi9)IX7t}aSym7e)5Udlfhz1nDzP3Tumele_f2qA)n<;PqZSz@`yyW^ zpW}$E+<)yLhdJ^4GPso{Y3gOFkS8$xmjy;JW#OC{pAr+LilTV|A2OY3&3?NO7Q%dN z>#LRr=m-qaR0M8fL9bZG6`US?=4AC>!-=#eAcxa-c?o#4k5&gcjP}istVFOcdd~{r zNJg%^yhQCoqC&2~N?BG@RVfc?km-vmYeV}OZR6-rjhvZHgB1F0vIC}eR)7u(%f(tw zP70?&X(cO;%EdSZ{dNThPK9uqR#}9zTpW;6+P1Q`mI^b*2Li#0TAWSTi4>uJ@OwGoE zSJjn;JU9@mtO|LS)>Lq3i3hF1>ct)uV9=CW)QvN$68fjiQzFp>6Pz_5v0WMjPa0kx z-csr32?VJiLdPO327IUsP(`ul%&AiYV@IcZ&YYQh#?-)=(PKtuTG!(|Q|Hg0az<_- zWAxb36P1R*m_HwsPuqi0cg?HKzt@Mg!%Z^YW8MkNaVI3%(*_v*4Zt{~WPdu^ zwMUfU4*LF{b_qMQtPFQ5_Vc`L;SchBf_q=)eV*kz?*+dDJReE?XYaijN+fx{lv2nKkZ1oN3YtrLZh~S1J;TtZKl6D=^S)PyeBRWM&q`0Em$ronehxL1QGza!)yslok!7VvZp zzEr|Mp;7?0zDdH@YjDpKVqQ0B@OhGdvj#7f@D>gJdkJsV;M*mf7F%q7m!DmXiUxSxOc%BBoRKn+L@HG;?P=h}upGPRw;9p31 zod&Ox_Nmw4TP6S18a%C2=(|RP*Gu?14gP_IH)-(n_XVHz8vHB?-=M*ZCA?XK*GYJb z2LD+^@Nd=NpUQQrO@kkMkHGKH;7!s#h6cY@j@zxlUy$$~4SrCU;O~*omn6&P84{kX z!OJB)RfAtC;b|JYNy5Dv{BIIIQiG3-2m#VHc*~svo~6M*l5oEUZeH5&ZWtA(8FH27tA33!tR zzf;1q#;fwZq{Q>8ho|n)2_kIx}`&dn{`X_ovHU zSJ!Ls)sjz#1~>DMp~21klNxi%-z@p~HMkk4c^ce|(>e`qNIn}hxarT$8r<~f4h`;+ z&zJe-yqW&lF-^#wr@>9XU8upmK7n7V!A<^k8hoL|uh-zFKd;f?O%i{d1~>Vy*Weuz ze}e`${k%nkd#4NeTQ#`Jzg>ebl=vMQ+>q^V4c;X2do;MoKUvPFWq*mEs=>{;@M>`H znL_@N8r@)+K2g+}uBSHMn2a-y=1+xnE7!;B|8U znWe$a`YA_)n{|U(-y&1)k>upYH-+=mIZwf!Djh*So+s zxWJoT;4LojRu_1i3*2ylr#>$HQMYHB3*74hAL#;5cY$ZQ!1G+-buRFF7x-!y_!<}Z zIv0483%uC{-r)i_T;Sa<@E#YqXGh}sN_K&JUEqEfc%BPH6 z0&jMKx46JtUEpml@OBq?w+lQimUv#gF7S~q@N^e=mJ2+`1wP*eUhe{5?E+up0$=9> zZ*qaJcY(LKzzr98w+p<-1@4jcn4aH~UErxM@H7{=*9AV(1)ih8FU0C)-v5~I0Esd9Q`ouk9kT;Mq_@cAzADi^p}KkDN)x!^auz}sBlW__pg zPgn3KDD!33cZ9FP&F}N*aPxaj1Ye}^@yfbRhp&HzAmZH}@|GF5Hz@EQGerE;tiVrI z;4KRLbOqk3z|U0RZ3=v*0&iE~^$NU0fuF0u=gazyv^YV5x5)F8B*3mv;2jElnF8-t z;42llN7ggMC#=A|3cON*o8RLi{9h<=^LuCn|G5G;zeh*#kODWq??>XFWn6Co> z6IY_MMS%}g@LLu5ehR!zfe%vP?FyX6Hvc*l`2HpkpN0Y_nasa#1#a#csINzXA7~=e z=ihC;4pQLB3jAONo~pnHEATW0jvK+&pI3q7t9aJmNCl3sR$G7R3f#<{)S0Eghg#Sk zPmTgtzd!0%;P|Sa^_Qo>@fBF>Z@vQmp#}AL7Ao*G1zxJa4_Dw-3Y^|eVgA)A@E@5# zeAX*)^W8<%y;^}ErQoko;O2KCse7FQKSsfCQs7<%zFvWkP~aOB_^}GSS%Dv?z*`jf z@d~_Ef&WB-w<++E3cOu`k5b?r3j9O`ZYc1R6nM7+KUsnIDDYDhxaVox|3@qEWCc#o zJD7i|3S2%+!d+lFAj z1>U5UB>XDRS@1wLDWcPQ{V3fxfO zc?!H+fuF6wdldLw1@4jSJFOx43OreX&r{&33cNsprz!Ar6u4J`&sX3h75I4yJY9jG zufVeu_yr0)M}f;ndAQfFz!xa^c?vwBz~?LQg$jJ30xwkHr3$=AfmbQ;Vg+8Oz=I0B zUV)b=@YM=@u>xPCz)KbQIt5;)z?&5KMGAahFF#2+`U`)<2g&|O(k)jE@c0{BLIZo- z{0-Zaw=v7!%wJqKz_Yve_y&BW9OEH;mUDOKo4vigYq(7*cX#Jbt4)Q|?#?Y%n+m4g zo%dO7DwKA2-eR?>K-%4Toz{@1bar=+u-a7M?CuQ{e*r ztu`HeLVv4G1q}4J+Elnef2&O!2N5;zn9x@TI~_s-f6X|(189{`^VhA&uUY_0sXBu z6&ldrYM;REl~$Vy4(M;SM{>K+YEyv${jD|?7SP{nQ$Yd!tu_@B(BEoP0RjE3HWd!g z-)f)A?SFn{>Q4m(=HF^l;eh$K+Eg$=f2&P}0_NXpQ-J{etu_?~(BEoPL4f(U+7q~a ziPfgU0P}CPsUU#D0D%5hn-+fPZ?$Q`hyGTZ7JBG!wNK~vKfg5f&*Ao) zR+|=j=x?=YfrtK9dn&i@v)Z(vLw~DH3pw<++O&W}f2(~aw=c2Uer^|9ZCb#gztyIN z8~R&qTCkzN)t<@i5muWPZs>2dX~Bm6R+|=T`2QEC{#=O{El{Xsk7avwO45ETCKfAYX`OV0DW z6s>){);>yW57*j5w04r#{<_v_pU<@Rhg$m`t^JzTeqL+;U28wCwI9{m8@2X5TKjgb zeY4hHtF@zAyHRVe(Au?Hdx_Q#YV8GDyFhEt(%L?)ovpPqwe~4m`*^K=l-3@uwTEc! zB(42*NSlAH{h`)=M{B>PwV&78f7jZNYwbt1_C~FJkJi3jYu~K3*J|yk)^60=E3|g4 z)?T8ugIarm)-KT6v$VEPYiDciOs##2);?ZqAEmX2YwaOgJ4tJQjrU8c`SLTZ{h`)= zM{B>PwV&78f7jZNYwbt1_C~FJkJi3jZD)L#8{T=LKm3-z;qC6cc{8I)FFfz@_@hGt z{E@u{%R}$*t3mSV8hKlK!+rQv2W95`VO@3T2c(95Z%9On-DOH=~VB1dV2He2Yem8N<10;huxi zJJxtNn0T>w@<*a1Vx*DfjSjz^iJk`8Xpn^)A3 z=*ddC>JwNk+~SWO+6bv=`YwJ4D1!$2*ZHHv1Gx4NX!~hzhd(m>Qkn`WVE6?RuC%AO zxAQ?VdnD;+)C<_5D2{ihoDV|@19jdc`cISn+aXPujn=tB^w7i+<(=F^M(ivSJ;}1C z1=^TA$)KH6MZZxkD9H%nMly2eDADt@>^X;f$mpFZqUUe2=QQpiOLl$+#Un|7MMpzV zWvD2Uw4N_ZLh~a@H}hptXjUZYdcLd(oe@d8iZ5$I6Cz2M@#V76$&sW>__8!KB9c_X zmt~>DB1sqUX(3=}kE5u z;zhH=RS25rV3A0aoLai*rdH5|pQagF4HmmoPGtX+y^qnBo%&AuS9~9B@2Ss=KE>g0 zL9?NIz^ayzA10Vw30cECkPi-|@uy)7h}75t(rEU-&}mS;>JM)PZi>VWzi1q3sYBl^ z1I1E7v7IPVEQ;4E1b0xp|2cEc7kIxTy!T++-0*f&7gOFG2sktRp3y2~nL-p$;~^)u zsrfL8{Tsq&F-z@1YkAPdJPKp5*q<%2mYY#uJ;Z+Z4Z-|m9?Mt%mf znZ+ef%#O+QzRyT8mFabo>5G!brVdQ}WAzAr;+7$YqU%N{=YMf7YV2nF#f+n{VU9I! zK#Qb`@YQ6_VJj|+HU7`k(lq8&0OgkE{rK=r{zoZW^?vR$g%u7rg zbI8Ln#uCwNlFbW6(}Q$My>mo!p={=eW-3C2dY6r2R_U_Y%FVURN+{wN>2UcmsvcD= z2S=!HiKR)iYe$P`j`to1B*H>|k2@jAg$P{xcPlUc$) zhi3hwgyTtBMK9sS+>z_?+@-8qM6neaUh)Qw#bTBCQ!2J@g36x9%)BxV=WFQghEkj0 z#l4TwKV+z1BhJv#MjZze1^q)E_1uxb3^$9IiPyFoW6X>Q!$clUW2K`sA{mW8)afH3 zV>HmL-E2=&`BEWi9-B92Ty?z1GcDzT+l7e|h%+7HXmd$pin)AP1Pptj=^X5gO+1QB zTpNXu>{ZjkZ<0{SPN4=s3RuY$YCBFZccaw$f@7x93tJ+iyh2%}1jz@VEyN_ke!*-v z(fQkB^bd8+6k*N7qIq#Q+ek>ksrj0h1>$uq##$-A7@pNqcpNVGUQU0V=bF7 zT3atAy~uM>@|1_*9iH5951D%lH%NeA{}Xf#+fx;tjy{e!ilqNO3&h?+*cW_?oa*qo zTqJcuj;y7kNksj{C_url1(__emXf3Z&l6ylG#aH|RChaG08&4_l{2wu% zm|=F2k?jx-Jr!&OdkGd+Z~uVsg=voDG1v`>ASzrtPX<^|8f_cSkKTwGBLj|qg?#(M zExS`rZUOea@RZe!*Q2xkQTq2swOLp!4y3`O*}F=xSR6&Z6sEwim@nX>fc^{_a zGvyKdF^WztpV?A;FA5tm2HNs1+yL;tPbqVienATq4ZY4Z-0?sg#6-eP-f(9d^&-wA7excl;F{4LtAw;|3UxYqSLO za{$a{Pn?)0j?8kDxc+FA%_~yQOzdKXI}hWzvSwlhqgq+z18yc5>u`Z520^{cb1OZO zec{L#gjp5|b;Z~;`7F^>@00ez7gE`dmINz>KuiF$et>#*GZo!NGgKGzRh!cI70(w} zJ1MI^rp899c?K|3xmb&#hH$*-D}N0qDfaa&vwAd%AI)A>jJbb? zRN!g68Cx;wO?N_LBMCiXHn_4fvoWjq`EcT}mMbtvo_}3*$jDA*pJ$3QxpX%R4Nkp6 zg}a$T&Yv0XOemJmS>X=yz^l60r37KjxSy$HQ4ljmFn7z$H;P`<%#CPvjfCQ-JehByfrS1;=z5#G`nMRhKyMIk1MDbA+?-(Ch=O{X>TB5??c|C2Ixy zkmZyw9cl({O-kcL)e%k>fqN|t6wQu7Xk!?A*IF?@G~YbfvBK1HazrlYjsxW!kP>3y zkQC>$c;rT6F)%xMD_9rBqf3o9h>$jyf-Iqgxll~uh!Gx_iEFH0L?Ei&*+^A6g~G_bTKTqe)l{VeP9B|44iWH@%jLnSV1;1R%kn08+>tzDQ*1evwFm~I=<9b(bFy3m@( z&Q3Zjp+#{rpVg#Xb2KQOYwBR;1(_WY^)TB=kEjuxeT04mz@Wsvgq_K?82LslJmfLX zVq~+IgtuJx_4jBt)~52LkTjX8WEHs5AU0A0XUykafLV-u$POWWu`k8QU>HYRC9hL5 z#sYQ*OTMSwLgJI5tcMvAhY3BnNsb@Q{8yXM<1`vi*|Z8Tz2hB%3X{Iiv{p!5AYwgF z2HOq{B(mi7!s|>YY#7E8m`)fH%_?48V#W;U6l-jO571wP_p%MffG~q%jdVH%$MQ5p z=_*-#420Ns?_0seIzl>1RH>{ct9Y+gJ2~d z=$S%C4{KR8MQGVI&zC6<0i4-VH3 zK|$!Dim+j8jtu>K#3Gn37Um5$)e9%^IH{szjoq;l9W$f6(U>VVGLa}*8N9_18<|VA zk!X518tCfXNLHFM4;3^`>bdwNKcUZ5{)D$*`8LV5Jsq~Zyu}}GY-N_rgo0rU9>9PS z%o@%6MYD~?iWxgOKCJ?Jt7sB$qTP>8X1Uj=f|ewq-gmf}x$_wsAiHt_rhOC5a2O>P zOF^>>iC#2rdsl*!F8P_|4VS}@#nD89^?3=qq@GQl<@gn@e*iEjn;gSl$91YGrJY+F zu}^0eoY~|O-dI`Dy5=7c(UDDlNP0od2RPmmWRoP;|52`xBSZc`K^yHyHhE0Uo4U1` zs;mYn)NML2>Tg(<)J^AMT-DtocI4zF&Yi58k0EuZ@G!3G?h=#8>i!Bj$=bNy!1bNQ?*2D* zb?g2v)NL2@zL2+jvY6m>@e`yUTiq>Wo&L;j2N~F@ZjehMp>77--;(cEHy?}PlmlKs z3X(6r-@$rtQ>+zFJ}LA_6?)_mqFp{+`i9wz8IQ3IELNxTkXHHh8w|7=38&X65sp_S zGsIQG#O7MDhP{9{&m_=FG^ad*0*j=~lO%t{vE7u0uLjhnbbgK%$ruNY57UxCnn;}A zh=ZqREGCXbu)l&g5u*%`;`4YJMb|yp=+4OgMg(wBUNS zptyyE-an%mZuduK8O8pwgZU;_$|?hAb)B!{AG+`54{w9mCi%a~%pd^ig|MfEAZGOf zaO*n20$Rr12CB{rRE7foBp3V}2>&D%-(ppD5M;X&r*hUPf>jTm%j>LA;nqxVK2Xe# zw7_WMFfAeGS|{cp!W@_o^I|9F)s(Ko?OlVURGm+u_Ov9lBqpDF;F z?ro|7obkb}oCx2-;en;8U^ve?ilzP|A_7h3KS3Scd7DaZVTuyln)II&=5iHN4Ak|S zQ_XZa#re*G9ypO4c|1*3vgFOyD5}R9#zS$((D9u0ds@&=O2n@n{19}*{m7)iD;Tq zl?r5Y(DOtyPnz^BG&_f>g9;sYkt2P9Ol;|5nIgtXRiNGQN@7!dNe)k$Jf3{DLO#!h z{1J+aE8=NqDzs@XwDm+g)uI)0cD?MB)3ioDkd-N*8?cJEG*(FqixU*<&~~HnYBN{d zfu>58C#iOzMpohJ65h(in>@S2J!vj(F<&q@SF~KwG*`4qqG_&ZCy6HSNRVfa zL{lBnT-rXsk%tPelC!`4C8t@MB>WM;<>GYPTU%$otiam5qVg2)5f zsWa(nKvN#@tZJz}4z0`3+TlU9Km18S^gsNOU5{jMJj22yEp$-KwJ6pJidzK5Of2fg z&4OaQgJPsbQ6eao35r)og5qL9G1x)z&Do|@;{?SlK~XXa6cYu-TfnjPc+R32C@6j` zD7uN_07230pt#ebXq&_4`Zs@MUwR@ao_~RDb*+P<-lF)upm;`548pA%<2FH2?4UTu zq9_*>w+o7EiQ*DLG08!3vPCgTQ2bm_q~RHF<8)B0dBSpw$H)QreX+(a+#pu`CA^}? zAFl28M||D!&@~FE;RCNfyut|AzO6nm)RWNyQX^9E_LOiNo}1e67;ctg-wAKZykIta zQ!`o~;}a@{BfcIKYT{|5P?GV*b1)sKZ8iDo?aGk-Sg?EkJ*d zngoWlM=>dd(Jbm4nYw@s*#qJM1Bkd#5L>~C5gihnyhsY5Ur6CM`Nm+i-ZMytSPs&*Fla0X>y~+mLRVb+ zV>#p}Y;s&9EnC-Kq*5P4)YvJJ;41tS=K2G_unKo!2>~kZ;gA#xi3$ILr6ZEAqlus82L;fL z?84jgwl=sXHrQzwI5LdGKVL8>K9b{?6P)Lt*v6{$Kup3#=yP<-D^mCJ9%YvooH7xU=uUe z5)V1VC<+^~&-~XeEY(AyF84KT&vI()WfvsF$cY<4<8T8Lw+VcDyHmELHheLl_JC%x zaaR)OQ#@M6Zb&14@+@;V5JhHG(6t#|bZtfvI9vYb6(d>xnHKYXC49c4d{Ay4-sYfC;K{T52R5#(@?+ja1i$!qz_#Gw+38< zy^R8ny^W%h=7YWM@Mol@qj`BkojgB(Mn#H1)aS5jZh`hHRbWcgu)SdudKH8}k}%Nz ztdWot(5zo)k#zBxm{}o9m_IwvCb(hB zs6`TDS>=GaAe+iYGgoXBlbbFQhAw$@_^H`cs8hK>MzL*Xvf{3ou|uxgkI~9Y-g3;- zy}iyV#>=$;4IM5pz!Lv?BAzf#|9#yeNq0Tv$gN1Nd#8D@Pc$UaQNZMz4L(S~i^60? zmy%EPdS%?_&TiXHF!$CJPTX3vKdI2gm7@FV@&SA!VO=LJ*tD1a?Xd8k=<$OSd*uJO z1NPj%H~zoc3;(nB(!V$UC*#;?Elu@;9DWg_&D2se! z7I0~uZ)Bzj?`B#9{kZ#y=zNH-xwiLz{!jnKRP%53uYAkXP2>N=Kk8Y3_+|gZ=R(6E zDZT5;-*C-wJvg=TbaeuAjU2Ua>~1)F}<3wtxhUBhmEZAzu0jH>Pt-Jd6-oOE&RGHnK7iW`xHc zh1p_LdfUQ{hYI2!Ffr=#R=VHIz@j!-frj=+Ps7dKwTu$k$dE{*n1P-CFpkG@wt>?) zh+uMgp5ijXwzSKgkzFIKa>v5FizB$5c%(jwD(9paQ!@9+0yTGO+39{DI($nBWqh@S z6CA!>L7&}d=Wr+kkTb}U^Asu(|D4FXMe*K)RVoe}u`LohIGZ~ZAel}|8By#$sbAZ8 z?gO4#jlx8=ZAi1NV2e-OcOgr08Nd~3H8lqSi;}RwIF຦zm0b!)0BxISR4qWYf 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%0DB!ii^?j*?sl}>UM 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 + + + 3 + 3 +
d
+ + 8.1538658490193018e+02 0. 4.0344686660476424e+02 0. + 8.1538658490193018e+02 2.5935115109955393e+02 0. 0. 1.
+ + 1 + 5 +
d
+ + -3.4454237775633917e-01 7.7306959051926261e-01 0. 0. + -3.5139312654968990e+00
+
diff --git a/include/ReadWriteFunctions.h b/include/ReadWriteFunctions.h new file mode 100644 index 0000000..446cbfe --- /dev/null +++ b/include/ReadWriteFunctions.h @@ -0,0 +1,28 @@ +#ifndef _READWRITE_FUNCTIONS_ +#define _READWRITE_FUNCTIONS_ + + +#include + +bool readMonoCameraCalibParameters(std::string filename, cv::Mat &camMatrix, cv::Mat & distCoeffs); + +bool readStereoCameraParameters(std::string filename, cv::Mat &camLMatrix, cv::Mat & distLCoeffs, cv::Mat &camRMatrix, cv::Mat & distRCoeffs, cv::Mat &stereoMapL_x, cv::Mat &stereoMapL_y, cv::Mat &stereoMapR_x, cv::Mat &stereoMapR_y, cv::Mat &Q); + +bool readDisparityParameters(std::string filename, int &numDisparities, int &blockSize , int &preFilterType, int &preFilterSize, int &preFilterCap, int &minDisparity , int &textureThreshold, int &uniquenessRatio, int &speckleRange, int &speckleWindowSize, int &disp12MaxDiff); + +bool readColorParameters(std::string filename, int& iLowH, int& iHighH, int& iLowS, int& iHighS, int& iLowV, int& iHighV); + +bool readCameraChessboardCalibrationParameters(std::string filename, std::vector& objPoints, std::vector& imagePoints, cv::Mat& cameraChessboardTransform); + +bool writeMonoCameraParameters(std::string filename, cv::Mat camMatrix, cv::Mat distCoeffs); + +bool writeColorParameters(std::string filename, int iLowH, int iHighH, int iLowS, int iHighS, int iLowV, int iHighV); + +bool writeStereoCameraParameters(std::string filename, cv::Mat camLMatrix, cv::Mat distLCoeffs, cv::Mat camRMatrix, cv::Mat distRCoeffs, cv::Mat stereoMapL_x, cv::Mat stereoMapL_y, cv::Mat stereoMapR_x, cv::Mat stereoMapR_y, cv::Mat Q); + +bool writeDisparityParameters(std::string filename, int numDisparities, int blockSize , int preFilterType, int preFilterSize, int preFilterCap, int minDisparity , int textureThreshold, int uniquenessRatio, int speckleRange, int speckleWindowSize, int disp12MaxDiff); + +bool writeCamRobotCalibrationParameters(std::string filename, cv::Mat robotCamTransform); + +bool writeCameraChessboardCalibrationParameters(std::string filename, std::vector objPoints, std::vector imagePoints, cv::Mat cameraChessboardTransform); +#endif \ No newline at end of file diff --git a/lib/MonoCameraCalibration.o b/lib/MonoCameraCalibration.o new file mode 100644 index 0000000000000000000000000000000000000000..9aabd68569b795ab825deadda150cb0f33083b04 GIT binary patch literal 341384 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

t8dsPX_zKl1j8E1x;H`i*C&5T`lLI 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 kyHRi6_TezU??D*Q!-58W}k+(w08sPG#U{*c07 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 literal 0 HcmV?d00001 diff --git a/makefile b/makefile new file mode 100644 index 0000000..858950b --- /dev/null +++ b/makefile @@ -0,0 +1,13 @@ +all: ReadWrite MonoCamCalib + g++ lib/MonoCameraCalibration.o lib/ReadWriteFunctions.o -o bin/MonoCameraCalibration -L/usr/lib/x86_64-linux-gnu `pkg-config --libs opencv4` + +MonoCamCalib: src/MonoCameraCalibration.cpp + g++ -c src/MonoCameraCalibration.cpp -o lib/MonoCameraCalibration.o -I./include -I/usr/include/opencv4 + +ReadWrite: src/ReadWriteFunctions.cpp + g++ -c src/ReadWriteFunctions.cpp -o lib/ReadWriteFunctions.o -I./include -I/usr/include/opencv4 + + +clean: + rm lib/*.o + rm bin/* \ No newline at end of file diff --git a/src/MonoCameraCalibration.cpp b/src/MonoCameraCalibration.cpp new file mode 100644 index 0000000..2c35539 --- /dev/null +++ b/src/MonoCameraCalibration.cpp @@ -0,0 +1,278 @@ +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "ReadWriteFunctions.h" + +#define MONO_CALIB_PARAMS_FILENAME "./data/camera_calibration_params.xml" +#define FPS 20 +#define CAM_INDEX 0 +#define NB_FRAMES 25 +#define SQUARE_SIZE 23.4 +#define CHECKERBOARD_WIDTH 6 +#define CHECKERBOARD_HEIGHT 9 +#define RESOLUTION_MAX 800 + + +int main( int argc, char** argv ) +{ + // initializes main parameters + float fFPS = FPS; + int iCamIndex = CAM_INDEX; + int iNbFrames = NB_FRAMES; + float fSquareSize = SQUARE_SIZE; // in mm + int iCheckerBoardWidth = CHECKERBOARD_WIDTH; + int iCheckerBoardHeight = CHECKERBOARD_HEIGHT; + std::string sMonoCalibParamFilename = MONO_CALIB_PARAMS_FILENAME; + int iMaxVideoResolution = RESOLUTION_MAX; + + + // updates main parameters from arguments + int opt; + while ((opt = getopt (argc, argv, ":o:f:c:n:s:w:h:i:j:r:")) != -1) + { + switch (opt) + { + case 'o': + sMonoCalibParamFilename = optarg; + break; + case 'f': + fFPS = atof(optarg); + break; + case 'c': + iCamIndex = atoi(optarg); + break; + case 'n': + iNbFrames = atoi(optarg); + break; + case 's': + fSquareSize = atof(optarg); + break; + case 'w': + iCheckerBoardWidth = atoi(optarg); + break; + case 'h': + iCheckerBoardHeight = atoi(optarg); + break; + case 'r': + iMaxVideoResolution = atoi(optarg); + break; + case '?': + if (optopt == 'o' || optopt == 'f' || optopt == 'c' || optopt == 'n' || optopt == 's' || optopt == 'w' || optopt == 'h'|| optopt == 'i'|| optopt == 'j'|| optopt == 'r') + 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 (); + } + } + + // creates camera grabbers for the left and right cameras + std::cout << "[INFO] Opening camera videostreams..."; + cv::VideoCapture cam(iCamIndex, cv::CAP_V4L2); + + // changes image resolution to maximum (e.g. 1920x1080 if possible) + cam.set(cv::CAP_PROP_FRAME_HEIGHT, iMaxVideoResolution); cam.set(cv::CAP_PROP_FRAME_WIDTH, iMaxVideoResolution); + + // checks if the camera was successfully opened + if (!cam.isOpened()) // if not success, exit program + { + std::cout << std::endl; + std::cout << "[ERROR] Could not open the camera!" << std::endl; + return 1; + } + std::cout << "OK!" << std::endl; + + // gets image resolution for info + std::cout << "[INFO] Left camera resolution: " << cam.get(cv::CAP_PROP_FRAME_WIDTH) << "x" << cam.get(cv::CAP_PROP_FRAME_HEIGHT) << std::endl; + + // inits display + cv::namedWindow("Frames", cv::WINDOW_NORMAL); + cv::resizeWindow("Frames", 640, 480); + + // defines the world coordinates for 3D points (in mm) + std::vector objp; + for(int i{0}; i > objpoints; // vector to store vectors of 3D points for each checkerboard image + std::vector > imgpoints; // vector to store vectors of 2D points for each checkerboard image + + while (true) + { + // reads a new frame from left & right cameras + bool bCamSuccess = cam.read(frame); + + // checks if a new frame was grabbed + if (!bCamSuccess) //if not success, break loop + { + std::cout << "[WARNING] Could not read a frame from video stream" << std::endl; + break; + } + + // gets a copy for display + view = frame.clone(); + + // converts frames to grayscale + cv::cvtColor(frame, gray, cv::COLOR_BGR2GRAY); + + // looks for chessboard in the frames + std::vector corners; + cv::Size board = cv::Size(iCheckerBoardWidth, iCheckerBoardHeight); + bool found= cv::findChessboardCorners(gray, board, corners, cv::CALIB_CB_ADAPTIVE_THRESH | cv::CALIB_CB_FILTER_QUADS); + + // checks if chessboard was found + if (found && !bIsCalibrated) + { + cv::TermCriteria criteria(cv::TermCriteria::EPS | cv::TermCriteria::MAX_ITER, 30, 0.001); + + // refines pixel coordinates for given 2d points + cv::cornerSubPix(gray, corners, cv::Size(11,11), cv::Size(-1,-1), criteria); + + // displays the detected corner points on the checkerboard + cv::drawChessboardCorners(view, cv::Size(iCheckerBoardWidth, iCheckerBoardHeight), corners, found); + + cv::putText(view, "Press g to grab the frame", cv::Point(50, 50), 2, 1, cv::Scalar(0, 200, 0), 2); + } + + if (!bIsCalibrated) + { + // adds frame number and displays it + std::string sCounter = std::to_string(iCount) + "/" + std::to_string(iNbFrames); + cv::putText(view, sCounter, cv::Point(50, 100), 2, 1, cv::Scalar(0, 0, 200), 2); + } + + // displays the current frame + cv::imshow("Frames", view); + + // 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 -> Shutting down!" << std::endl; + return 3; + } + + // checks if 'g' was pressed to save the current frame + if (key == 'g' && found) // if 'g' key is pressed, save the frame + { + std::cout << "[INFO] Checkerboard information is saved: " << iCount << "/" << iNbFrames << std::endl; + + // stores 3D and corresponding 2D points + objpoints.push_back(objp); + imgpoints.push_back(corners); + + // increments the counter + iCount++; + + // creates a blink effect + bitwise_not(view, view); + cv::imshow("Frames", view); + cv::waitKey(200); + } + + // checks if 'u' was pressed to undistort the frame when calibration is done + if (key == 'u' && bIsCalibrated) + { + bIsUndistort = !bIsUndistort; + view = frame.clone(); + + if (bIsUndistort) + { + std::cout << "[INFO] Undistort frame" << std::endl; + undistort(frame, view, camMatrix, distCoeffs); + } + else + std::cout << "[INFO] Original frame" << std::endl; + + cv::imshow("Frames", view); + } + + // checks if 's' was pressed to save the matrix intrinsic and distortion information to a yaml file + if (key == 's' && bIsCalibrated) + { + // saves the calibration params in a yaml file + std::cout << "[INFO] Save the result in a yaml file... "; + bool isMonoCalibParamsSaved = writeMonoCameraParameters(sMonoCalibParamFilename, camMatrix, distCoeffs); + + // checks if the stereo camera parameters were successfully read + if (!isMonoCalibParamsSaved) + { + std::cout << std::endl; + std::cout << "\t[ERROR] Mono camera parameters could not be saved!" << std::endl; + return 4; + } + std::cout << "OK!" << std::endl; + } + + // performes calibration if number of frames is sufficient + if (iCount >= iNbFrames && !bIsCalibrated) + { + view = frame.clone(); + cv::putText(view, "Calibration in progress...", cv::Point(50, 50), 2, 1, cv::Scalar(0, 200, 0), 2); + cv::imshow("Frames", view); + cv::waitKey(200); + + /* + * Performing camera calibration by passing the value of known 3D points (objpoints) + * and corresponding pixel coordinates of the detected corners (imgpoints) + */ + cv::Mat R, T; + std::vector newObjPoints; + int iFixedPoint = -1; + iFixedPoint = iCheckerBoardHeight - 1; + int flag = 0; + flag |= cv::CALIB_ZERO_TANGENT_DIST; + flag |= cv::CALIB_FIX_ASPECT_RATIO; + + // calibrates camera + std::cout << "[INFO] Calibrate the camera" << std::endl; + double rms = cv::calibrateCameraRO(objpoints, imgpoints, gray.size(), iFixedPoint, camMatrix, distCoeffs, R, T, newObjPoints, flag | cv::CALIB_USE_LU); + std::cout << "--> RMS reprojection error = " << rms << std::endl; + + bIsCalibrated = true; + + view = frame.clone(); + cv::putText(view, "Calibration done", cv::Point(50, 50), 2, 1, cv::Scalar(0, 200, 0), 2); + cv::putText(view, "Press u to visualize undistort frame", cv::Point(50, 100), 2, 1, cv::Scalar(0, 200, 0), 2); + cv::putText(view, "Press s to save the intrinsic/distortion params", cv::Point(50, 150), 2, 1, cv::Scalar(0, 200, 0), 2); + cv::imshow("Frames", view); + cv::waitKey(-1); + } + } + + // releases video stream + cam.release(); + + // destroys all windows + cv::destroyAllWindows(); + + return 0; +} + + + + + + + \ No newline at end of file diff --git a/src/ReadWriteFunctions.cpp b/src/ReadWriteFunctions.cpp new file mode 100644 index 0000000..2057414 --- /dev/null +++ b/src/ReadWriteFunctions.cpp @@ -0,0 +1,244 @@ +#include "ReadWriteFunctions.h" + + + +bool readMonoCameraCalibParameters(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 (READ) the mono camera calibration parameter file storage: " << filename << " !"<< std::endl; + return false; + } + + fs["camera_matrix"] >> camMatrix; + fs["distortion_coefficients"] >> distCoeffs; + + // releases the reader + fs.release(); + + return true; +} + +bool readStereoCameraParameters(std::string filename, cv::Mat &camLMatrix, cv::Mat & distLCoeffs, cv::Mat &camRMatrix, cv::Mat & distRCoeffs, cv::Mat &stereoMapL_x, cv::Mat &stereoMapL_y, cv::Mat &stereoMapR_x, cv::Mat &stereoMapR_y, cv::Mat &Q) +{ + cv::FileStorage fs(filename, cv::FileStorage::READ); + if (!fs.isOpened()) + { + std::cout << "[ERROR] Could not open (READ) the stereo camera parameter file storage: " << filename << " !"<< std::endl; + return false; + } + + fs["Left_Camera_Matrix"] >> camLMatrix; + fs["Left_Camera_Distortion"] >> distLCoeffs; + fs["Right_Camera_Matrix"] >> camRMatrix; + fs["Right_Camera_Distortion"] >> distRCoeffs; + fs["Left_Stereo_Map_x"] >> stereoMapL_x; + fs["Left_Stereo_Map_y"] >> stereoMapL_y; + fs["Right_Stereo_Map_x"] >> stereoMapR_x; + fs["Right_Stereo_Map_y"] >> stereoMapR_y; + fs["Q"] >> Q; + + // releases the reader + fs.release(); + + return true; +} + +bool readDisparityParameters(std::string filename, int &numDisparities, int &blockSize , int &preFilterType, int &preFilterSize, int &preFilterCap, int &minDisparity , int &textureThreshold, int &uniquenessRatio, int &speckleRange, int &speckleWindowSize, int &disp12MaxDiff) +{ + cv::FileStorage fs(filename, cv::FileStorage::READ); + if (!fs.isOpened()) + { + std::cout << "[ERROR] Could not open (READ) the disparity parameter file storage: " << filename << " !"<< std::endl; + return false; + } + + fs["numDisparities"] >> numDisparities; + fs["blockSize"] >> blockSize; + fs["preFilterType"] >> preFilterType; + fs["preFilterSize"] >> preFilterSize; + fs["preFilterCap"] >> preFilterCap; + fs["minDisparity"] >> minDisparity; + fs["textureThreshold"] >> textureThreshold; + fs["uniquenessRatio"] >> uniquenessRatio; + fs["speckleRange"] >> speckleRange; + fs["speckleWindowSize"] >> speckleWindowSize; + fs["disp12MaxDiff"] >> disp12MaxDiff; + + // releases the reader + fs.release(); + + return true; +} + +bool readColorParameters(std::string filename, int& iLowH, int& iHighH, int& iLowS, int& iHighS, int& iLowV, int& iHighV) +{ + cv::FileStorage fs(filename, cv::FileStorage::READ); + if (!fs.isOpened()) + { + std::cout << "[ERROR] Could not open (READ) the color parameter file storage: " << filename << " !"<< std::endl; + return false; + } + + fs["lowH"] >> iLowH; + fs["highH"] >> iHighH; + fs["lowS"] >> iLowS; + fs["highS"] >> iHighS; + fs["lowV"] >> iLowV; + fs["highV"] >> iHighV; + + // releases the reader + fs.release(); + + return true; +} + +bool readCameraChessboardCalibrationParameters(std::string filename, std::vector& objPoints, std::vector& imagePoints, cv::Mat& cameraChessboardTransform) +{ + cv::FileStorage fs(filename, cv::FileStorage::READ); + if (!fs.isOpened()) + { + std::cout << "[ERROR] Could not open (READ) the camera/chessboard calibration parameter file storage: " << filename << " !"<< std::endl; + return false; + } + + fs["objPoints"] >> objPoints; + fs["imagePoints"] >> imagePoints; + fs["cameraChessboardTransform"] >> cameraChessboardTransform; + + // releases the reader + fs.release(); + + return true; +} + +bool writeMonoCameraParameters(std::string filename, cv::Mat camMatrix, cv::Mat distCoeffs) +{ + cv::FileStorage fs(filename, cv::FileStorage::WRITE); + if (!fs.isOpened()) + { + std::cout << "[ERROR] Could not open (WRITE) the mono camera parameter file storage: " << filename << " !"<< std::endl; + return false; + } + + fs << "camera_matrix" << camMatrix; + fs << "distortion_coefficients" << distCoeffs; + + // releases the writer + fs.release(); + + return true; +} + +bool writeColorParameters(std::string filename, int iLowH, int iHighH, int iLowS, int iHighS, int iLowV, int iHighV) +{ + cv::FileStorage fs(filename, cv::FileStorage::WRITE); + if (!fs.isOpened()) + { + std::cout << "[ERROR] Could not open (WRITE) the color parameter file storage: " << filename << " !"<< std::endl; + return false; + } + + fs << "lowH" << iLowH; + fs << "highH" << iHighH; + fs << "lowS" << iLowS; + fs << "highS" << iHighS; + fs << "lowV" << iLowV; + fs << "highV" << iHighV; + + // releases the writer + fs.release(); + + return true; +} + +bool writeStereoCameraParameters(std::string filename, cv::Mat camLMatrix, cv::Mat distLCoeffs, cv::Mat camRMatrix, cv::Mat distRCoeffs, cv::Mat stereoMapL_x, cv::Mat stereoMapL_y, cv::Mat stereoMapR_x, cv::Mat stereoMapR_y, cv::Mat Q) +{ + cv::FileStorage fs(filename, cv::FileStorage::WRITE); + if (!fs.isOpened()) + { + std::cout << "[ERROR] Could not open (WRITE) the stereo camera parameter file storage: " << filename << " !"<< std::endl; + return false; + } + + fs << "Left_Camera_Matrix" << camLMatrix; + fs << "Left_Camera_Distortion" << distLCoeffs; + fs << "Right_Camera_Matrix" << camRMatrix; + fs << "Right_Camera_Distortion" << distRCoeffs; + fs << "Left_Stereo_Map_x" << stereoMapL_x; + fs << "Left_Stereo_Map_y" << stereoMapL_y; + fs << "Right_Stereo_Map_x" << stereoMapR_x; + fs << "Right_Stereo_Map_y" << stereoMapR_y; + fs << "Q" << Q; + + // releases the writer + fs.release(); + + return true; +} + +bool writeDisparityParameters(std::string filename, int numDisparities, int blockSize , int preFilterType, int preFilterSize, int preFilterCap, int textureThreshold, int uniquenessRatio, int speckleRange, int speckleWindowSize, int disp12MaxDiff, int minDisparity ) +{ + cv::FileStorage fs(filename, cv::FileStorage::WRITE); + if (!fs.isOpened()) + { + std::cout << "[ERROR] Could not open (WRITE) the disparity parameter file storage: " << filename << " !"<< std::endl; + return false; + } + + fs << "numDisparities" << numDisparities; + fs << "blockSize" << blockSize; + fs << "preFilterType" << preFilterType; + fs << "preFilterSize" << preFilterSize; + fs << "preFilterCap" << preFilterCap; + fs << "minDisparity" << minDisparity; + fs << "textureThreshold" << textureThreshold; + fs << "uniquenessRatio" << uniquenessRatio; + fs << "speckleRange" << speckleRange; + fs << "speckleWindowSize" << speckleWindowSize; + fs << "disp12MaxDiff" << disp12MaxDiff; + + // releases the writer + fs.release(); + + return true; +} + + +bool writeCamRobotCalibrationParameters(std::string filename, cv::Mat robotCamTransform) +{ + cv::FileStorage fs(filename, cv::FileStorage::WRITE); + if (!fs.isOpened()) + { + std::cout << "[ERROR] Could not open (WRITE) the camera/robot calibration parameter file storage: " << filename << " !"<< std::endl; + return false; + } + + fs << "robotCamTransform" << robotCamTransform; + + // releases the writer + fs.release(); + + return true; +} + + +bool writeCameraChessboardCalibrationParameters(std::string filename, std::vector objPoints, std::vector imagePoints, cv::Mat cameraChessboardTransform) +{ + cv::FileStorage fs(filename, cv::FileStorage::WRITE); + if (!fs.isOpened()) + { + std::cout << "[ERROR] Could not open (WRITE) the camera/chessboard calibration parameter file storage: " << filename << " !"<< std::endl; + return false; + } + + fs << "objPoints" << objPoints; + fs << "imagePoints" << imagePoints; + fs << "cameraChessboardTransform" << cameraChessboardTransform; + + // releases the writer + fs.release(); + + return true; +} \ No newline at end of file