From efb86ac6fd69422be8a550c425c930869f9df563 Mon Sep 17 00:00:00 2001 From: Razvan Mihalyi Date: Mon, 15 Oct 2012 12:08:21 +0200 Subject: [PATCH] update svn to revision 719 --- .svn/wc.db | Bin 622592 -> 624640 bytes include/scanserver/sharedScan.h | 5 +++ include/slam6d/fbr/fbr_global.h | 4 +++ include/slam6d/fbr/scan_cv.h | 4 ++- src/scanserver/CMakeLists.txt | 6 ++-- src/scanserver/sharedScan.cc | 7 ++++ src/slam6d/fbr/CMakeLists.txt | 9 +++-- src/slam6d/fbr/feature_based_registration.cc | 15 +++++--- src/slam6d/fbr/feature_matcher.cc | 36 +++++++++++++++++-- src/slam6d/fbr/panorama.cc | 2 +- src/slam6d/fbr/scan_cv.cc | 8 ++--- src/slam6d/managedScan.cc | 7 ++-- 12 files changed, 83 insertions(+), 20 deletions(-) diff --git a/.svn/wc.db b/.svn/wc.db index 1cb2af31fc2ada1005f7b177b6a7882863072f10..ec0bfded7b3522b68f456d21461d19148280328e 100644 GIT binary patch delta 19151 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 Llg3ftCh7kJk;*f$ delta 17215 zcmZ`g31Ce}*LUXbv4y-y2q8r_YqXJ|mQ-s=$bwpuNJ8v8ErOznB`=KlJt2L+1zSO%;V_EvVTF z8uhQ%+159=0{gh=dWB$@mBG#^_|a3g_9sOZU#-N7&edrc8St+9E=&E-e?1jnJyLWl zc?(;RY;%_G38@#uSuOa}oc##TXtoWWO+=&5tx(n#nvpC5o^`f&y;sJXo~|g2=Z)K* z6%)yhh?FALuP9-r#=Pz9Sx2!QGRbmz+Rym|no(n!pQqE@VjM9JMrY0Y6h}mDFMAO`9@|B6 zg>A7bWjAwq-rVprG+|L_ZamJ8c-SMCXWFJm&^hWQ-6d{}*6WK^J6JVwIh9rNTwYzi zsQ8_gfU_sA&`&fu$ih5l-+TWFhuIe z`F(c91*UG7v$&Q~@^^00itjUhVKg$pbNkOQPweeq;WcDGC`8jc6-r^J-+d3;s1QZL z_kE!4NjdLV^!x*CIy9s{To3Ic_NX>?5l5RoE>E9Lbe~GgS7Gjw3-=Wj&kuA_!D1nGB10;mLkw*!wi>yy}t-Dl+6b;w0Nv zqBhAwX85sPI0X?Gjr`d|gayo(ttvCy3rnO2unpxaDzg>kGv#j<&eGX@;R<9gdK!Th z&W~kfqzGg)y|Nb3AqYoCJ;SOXh>%3XUuM-}WL2OdF0nM2g^C_^*g0Gc)Ihckb#S7k zGs4(@TH2%fiP#8+7KoZ9+eb1~Orj#QF8c!cg~}yk8!%!dibbY2WD&$km?A`!GaW${ zHfGmg23hLSTsug7R*415;%8YSTn)8Iw25Y@?qsMhH(?K;jWC61$-?B!7`B|u82D4z zG|pi)050tG0=0o&KXGy}50maTY?R6p#HyE=zwlkpG|_CTU6yMdL`XaKnWYp~)9t1f z6RZ!bEQ{N*I*0(!?vhPA04R7Nc_hX&a!QDNmn6WzoxnavBL&SCSv?szFKUWJ7B1$b z0@obW<$yF+mskKQBG&g}_h2B}{q_uEIjWRgoyk_i7y{6(54(?~f=`rvv)Q*~Ye-rA zU@tZe$atcv8ZP;0I;)Rx=u1*Q+lMdc z?qz6!qr1e!{B3TAo2z+>wWNYp%`HW%rE znvZBck9{E~O;(@No>d2N(R#JfK>WRxy`?o)2Qjf}0Ba!cZey$2&iSkw;uqCZ^A|STug8jJHveym%1N%r>4Dm8wY<-)JfQfM}VZa#`XiQztCNogE?|Gn@ zKb=*0qKTryR67>Nl5Ph^^Dq}bsAz}%-tv!JGki?H?18WL8*MibBRlX~VtySAB9W?( zIJ@&{7%#KgXar>{?1?V90H9bNrQs9uizF~mJ5y5W2QdPcyp`DJgAE1L+I_?W#%CK+QWpBqR z=#cK?Y&NM1`s(nr%pknbX*7Y=#h`Pf3C_aY8L*w87kDwN)y2_1nuXwO(K?&yJ`uSI?u0-)%8C#vKR~qUbeP*BBF}DAGSeESpV&B93MBTCxNwsVgEr;>BJ*dqTFVR04HNG%pyjt{+i)!9yB7h$Z7=d@ z7>U7FSX0naK2@|Yp8a~#3u#_UG2ReCzcR3t8AdfVrcso*lFceV1)}(8_LYOCyz~nT zMyXRct9Xmm#20d4-F{<#a5h)A|C2o=FFOu++2c0*8wOBD*ZU5`%!mf3-(}z6Ak-Dv z>H#@ia^#s0*-^VSPvvv@t9*laeydRrVzf)FTBjOf@;}T2LFwo}%wL8*Vo{7Mh2nBs z7AQtPX3?yJ-0+ySMX(eK*FFoj8o@Ybr{q=Za*l2pElq%>wUTeBd}0~aQSA0Wl>28f zv*oiD_-v$z6fbs#7A7C~a!fqX8~TY;HW*pcN}Li44BTQI_Du5QqljdT0fE>PQJK4F zsjJ}1GVM^26ToMe)s&u!(vubNb!rx*`yIs5s$d)d8zJ=!;)NP`q;&L1A>wc+US72R zh->1PDjYS85NK4DuM+nId0XiCAIe&`>Yx!3xz*emfp(Bp&JN>M6vfZCI_zDH>SFUk zV8PQrvxj-qk=>ud3EF&#`zv~ z`IiQ31&(9346Vm&v9kF-y6tE2S4L-R1@h(kd?gwVW`kB^P8$spaq_bq!nG}ZqxoB= z7Y8j~4--E<&)0f8R_rVtTi<<3ta{vKO+$Bb~OI7dSaAr_ZEMQJLZ0^nJ!KLK_28naYlF6#m=JAcTs@zkQdpwkj-nF$9Pt8|na@JaG zzrd!#QZ%f?MfSFq`=UEpbo>EQIEa^JMW%;`!gsIps^>&WZ{V&Ze!U2L3YhN!4#yg> z?#xSUg3uOmOi4*xe=XwA0G_1t5lb9il2FqG?~mCJIi!=T9JfF()z>)u$33g;xt8DX z(kVXp3YM7kHs1^L$ms_lwvCqWnh3r=bT6+63glSJH@6 zZ-DE6?H!)&?U8@IOSn4niFnUJ7PgZhlP!EII!sV2v3NT`t-6EXMnFKgthJMeAPhpF zhvfMhOBR`|0Gp0ZnC2c3+e zErC4z84m=tA`ct54d@L1qSRB%dix!hL8)ch0bX4#K|sttM5CUB0Z44Bi{#ZjNERRF zi*c`oToxO?CBB2Uti?YaXjvr`(NTqkWi#roIK0JMTaXiGTBdkMSOObHxQp)VTvkrSIuIb}Czh92KY%uEN(WX@zk@*(5PMWo z?*cP{)#Sa%$f*D?Dy9Xne3ZxvP}f!VRrV_IpLetR z1#MP)i}LO54bH|XCCLt#e+R1bQ034qiVro|{_U!!Vv!MzR&1)SLXi;BjT4Zw%!c-{ zW3buJs-gZwjvT8pz3LEdXf>i&s0sp*P>uS-D=yJ3LWNQck!A&HVPa0C`XvA&lN(f5 zJwaP1%#(Z6RKrA0vr^{0}Na!4z6 zS?S_c;#ACp$c2Tzppp`iNdz`kLuF1I^*B=Rgq(J&K;WcfKAlwbFcQ=XOnAlT=Hrd*MH;gb*kV=z?_JL{YY8*&9 zR=t<%PqQ$_^+*Or49ifjl)w~gCj#*Wnd(~5F!I2y2dk6~6Ry36sG+Dl7@EW|6;~8{ zz5;n}8LrYc6vQWwj8HR>01{K{F=}ar=(LHhcdQD#1PQhfX>#64Jetd%gHWR=!>Dd? zYXWOv4}jOcRMkj6r#9fMrwo~*)>26-{0KTC2j;8S(dl5K z+Gno%C-f7~2hIZw9hyYX1uFPbhoR{URd84m_|yg|!{l_sVz1iAiKB;RrHcnTj{2gY6q%~82+h>g@zOf$#l~R5DN=-p}?T@p{A2jK($Pq-T^H9X|K8g zK7bq8hP)+lciT^fMd}~818wtwx)an>#(k?kDXL~4SC1gCi9yC8zO~wyt9SkpK;>Lfp}I{3_qvMu;yB#?*VIF> zri{AbAVMfEx(*X2+*D5>1oR#QCqdRw@Uz+n-48`~-`gq`=C@Tb>&TbxsD^hnnRyo$ zLWuWO+M1CZ#{B>gCp|z1DWRjh%KFKy$LdY5KM@&R!(asXxQ(h8^_Kd#`rv>43%ixcB1_i}suQ8u5o&0yrp(Fh2UN_; z?GDe^avQ+2Pi_=EC+9}PGdH&-Jg4Nsv7Yi}UVC^>&us(G8M!aP)1BL1U8Ot^JL4}E z1D;3dd4itj=y@5R@X!BxE)yFJtuUnQQ-coWb%M7edCBlRmX`|8qj_D#U{ia(tj_Bx z1K3dLVoQX}(n7+%1)g4H-?N+Sci`whoU^ZZRbCTvY8Q{?E%}Q)nV095NX{{X)V=%@ zF+9hNK@LWh|2L0-Gx=hRsijl`=*3e*VF@-BHkQmawS!2twWd=drg3-;o0ETqc!8fb(MMHID#}TAng0YdAF%UG_n<(#xfLS*IKcyiZ#T^p)dIBV zP~8KxE#g;yttYgjx>^1ry|T7Ub-9O#ZAW3R``a8%7w4wiFXGT5)o-!T|63J#vY{9DPTSQ8P{q}@UR}JnS*;|d{K_m*E}yFSM2x8-|92?b=d%ud z*J`G>7En7x%uCd2i%h6!h@<-q1U9@j8FpyKv z?1pX+c`EyN2PUE4ghLMG5Ghq^D$0$*zv!2yt+IKP!lTr9HNL3gt8T_t0G-Q3RA=4~ zMiDnQbuQiEIA!7^?V$8rS|+YEaKyL>r*QkBqI}3crvl46sHDUHLrJq8CC%2hXi(A^ z`J|+Ax3|^-7KEee9coqgs3#w~KF|Wi%;)VWM4D<>8}zVh|5+Iio zug^T~5STF;XzMpL?}@HRUZ%lGv9piMT&}&1Mnq|J;2I6j@EyGww;2p|!dflA0(ebL z>89{w3Tz#fZcqho8=31{P(Bcfo8{~pPZw(;d{tJU-bqEmhR}ctA`wOv#7iM|H4!+` zF2^E7l?nDJ?@}u!*f*i=9hhzB)h#F!XeU|q#p)ffFZ%5kxV`=Nv}$5r4jCW0s`EMa z`kfmz$|-11T4$rls>kHC+3A%|JTk;US4ronK@?=J@m_;Wx3k#W_c((OhK4dF{Mv z7Sz`5c9?&!*Q#^PEg{ceg&IXUALIjJqS+O4@nnR}u4-7`BpGE~)0TQiN}nGztg(|8 z$6VK_UV*}p89!)tlP0fAFdh|l-r7OTa@1l$5YQ}`pVMJA|TF=km0(%86>sE8A7!xdKqE@ zdb;LS^(Q-uUO{?3ej#(eS52pSDMi<)V4aRNfX#60poU%ny#fWf7=PHWZ>*z#0v%+c z6GC;|6FTdL>6g6DM|7(RBXc5k*rL$BLLUo(cxGLFc147R`-aFCI%f6g1x4eQ`W~r~xIu>-`xNZkR#u(GAt^O|! zmwnsmpL)HVI2{CuT6&`H&D=av=R5rBJSyj+I@?sJ1C-u_n{ZE=B9M(R-QA@&rE(j`oY8?AfbkM}m( zYHS}cp|tsmK8Nr?jc7eacY-Jwj2JprN8by#=3H{fIDIh?CSkW<4@Xl*V&ReGz{&a# z&_QM#vzLdoBBO^BpoRvvRV{<`U zQfKOrIMTrMS$a0EN|!Ls_*tRi!E7Cqol<>}k#luCA|hBl=jm^kFb%5FOY~6D^bP&C z155n11Yi$ZhDea&$*kp$22h$g&W2)Ak2RzL==5dATKzSIMV{=|yLvS*^)mQ9$41Ee zbl;*c$1gO@*yaqQmnPeFa#9r0dll&`@PLC}D(ulI3m_w_w^yeWgcK`vpF=M(_4GcF z`n}I}NNDI*#l0^a75CC^$u0*#!2v4Gt#(kSL>w6D5`iBA@u`PMV@MvUhxPt2R6=G9 zm!xQlO9md%(PcU|9S9tdlfTj1VGmJo_NYTBy;S;EcMi#MGvDL5z7&`vL2c2SI=&

gCKT&AsM|!2p&P^sQh;WL;avQ~!ghvf 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 DB!~zE diff --git a/include/scanserver/sharedScan.h b/include/scanserver/sharedScan.h index 9b24d38..ad98d40 100644 --- a/include/scanserver/sharedScan.h +++ b/include/scanserver/sharedScan.h @@ -112,7 +112,12 @@ public: //! Create a new set of reduced points DataXYZ createXYZReduced(unsigned int size); + + + //! Create a new set of reflectance + DataReflectance createReflectance(unsigned int size); + //! Reduced untransformed points DataXYZ getXYZReducedOriginal(); diff --git a/include/slam6d/fbr/fbr_global.h b/include/slam6d/fbr/fbr_global.h index b9193ac..8aebb0a 100644 --- a/include/slam6d/fbr/fbr_global.h +++ b/include/slam6d/fbr/fbr_global.h @@ -12,6 +12,10 @@ #include #include #include +//for opencv 2.4 +#if (CV_MAJOR_VERSION >= 2) && (CV_MINOR_VERSION >= 4) +#include +#endif #include #include #include "slam6d/io_types.h" diff --git a/include/slam6d/fbr/scan_cv.h b/include/slam6d/fbr/scan_cv.h index 1cdc3d6..bb9b88f 100644 --- a/include/slam6d/fbr/scan_cv.h +++ b/include/slam6d/fbr/scan_cv.h @@ -34,6 +34,7 @@ namespace fbr{ double zMax; double zMin; IOType sFormat; + bool scanserver; public: /** @@ -41,8 +42,9 @@ namespace fbr{ * @param dir directory of the input scan file * @param number input scan number * @param format input scan file format + * @param scanServer */ - scan_cv (string dir, unsigned int number, IOType format); + scan_cv (string dir, unsigned int number, IOType format, bool scanServer); /** * @brief read scan file and convert it to open cv Mat */ diff --git a/src/scanserver/CMakeLists.txt b/src/scanserver/CMakeLists.txt index 3dfa927..fc59256 100644 --- a/src/scanserver/CMakeLists.txt +++ b/src/scanserver/CMakeLists.txt @@ -18,7 +18,7 @@ set(CLIENT_LIBS ${Boost_LIBRARIES} pointfilter) if(UNIX AND NOT APPLE) # boost::interprocess uses pthread, requiring librt - #set(CLIENT_LIBS ${CLIENT_LIBS} rt) + set(CLIENT_LIBS ${CLIENT_LIBS} rt) endif(UNIX AND NOT APPLE) target_link_libraries(scanclient ${CLIENT_LIBS}) @@ -40,10 +40,10 @@ add_executable(scanserver ${SERVER_SRCS}) # scanio for ScanHandler input set(SERVER_LIBS ${Boost_LIBRARIES} scanclient scanio) -if(UNIX) +if(UNIX AND NOT APPLE) # boost::interprocess uses pthread, requiring librt set(SERVER_LIBS ${SERVER_LIBS} rt) -endif(UNIX) +endif(UNIX AND NOT APPLE) if(WIN32) # 3rd party getopt library diff --git a/src/scanserver/sharedScan.cc b/src/scanserver/sharedScan.cc index 93ede82..49bed21 100644 --- a/src/scanserver/sharedScan.cc +++ b/src/scanserver/sharedScan.cc @@ -238,6 +238,13 @@ DataXYZ SharedScan::createXYZReduced(unsigned int size) { return m_xyz_reduced->createCacheData(size*3*sizeof(double)); } + +DataReflectance SharedScan::createReflectance(unsigned int size) { + // size is in units of double[1], scale to bytes + return m_reflectance->createCacheData(size*1*sizeof(double)); +} + + DataXYZ SharedScan::getXYZReducedOriginal() { return m_xyz_reduced_original->getCacheData(); } diff --git a/src/slam6d/fbr/CMakeLists.txt b/src/slam6d/fbr/CMakeLists.txt index e6f5206..1353805 100644 --- a/src/slam6d/fbr/CMakeLists.txt +++ b/src/slam6d/fbr/CMakeLists.txt @@ -4,7 +4,9 @@ SET(FBR_IO_SRC scan_cv.cc) add_library(fbr_cv_io STATIC ${FBR_IO_SRC}) SET(FBR_PANORAMA_SRC panorama.cc) -add_library(fbr_panorama STATIC ${FBR_PANORAMA_SRC} fbr_global.cc) +add_library(fbr_panorama STATIC ${FBR_PANORAMA_SRC}) +#add_library(fbr_panorama STATIC ${FBR_PANORAMA_SRC} fbr_global.cc) + SET(FBR_FEATURE_SRC feature.cc) add_library(fbr_feature STATIC ${FBR_FEATURE_SRC}) @@ -15,9 +17,12 @@ add_library(fbr_feature_matcher STATIC ${FBR_FEATURE_MATCHER_SRC}) SET(FBR_REGISTRATION_SRC registration.cc) add_library(fbr_registration STATIC ${FBR_REGISTRATION_SRC}) +add_library(fbr STATIC ${FBR_IO_SRC} ${FBR_PANORAMA_SRC} ${FBR_FEATURE_SRC} ${FBR_FEATURE_MATCHER_SRC} ${FBR_REGISTRATION_SRC} fbr_global.cc) + IF(WITH_FBR) SET(FBR_LIBS scan ANN ${OpenCV_LIBS}) add_executable(featurebasedregistration feature_based_registration.cc fbr_global.cc) -target_link_libraries(featurebasedregistration fbr_cv_io fbr_panorama fbr_feature fbr_feature_matcher fbr_registration ${FBR_LIBS}) +#target_link_libraries(featurebasedregistration fbr_cv_io fbr_panorama fbr_feature fbr_feature_matcher fbr_registration ${FBR_LIBS}) +target_link_libraries(featurebasedregistration fbr ${FBR_LIBS}) ENDIF(WITH_FBR) diff --git a/src/slam6d/fbr/feature_based_registration.cc b/src/slam6d/fbr/feature_based_registration.cc index 9bb4638..b3c0966 100644 --- a/src/slam6d/fbr/feature_based_registration.cc +++ b/src/slam6d/fbr/feature_based_registration.cc @@ -30,6 +30,7 @@ struct information{ feature_descriptor_method dMethod; matcher_method mMethod; registration_method rMethod; + bool scanServer; int fSPoints, sSPoints, fFNum, sFNum, mNum, filteredMNum; double fSTime, sSTime, fPTime, sPTime, fFTime, sFTime, fDTime, sDTime, mTime, rTime; @@ -60,6 +61,7 @@ void usage(int argc, char** argv){ printf("\t\t-r registration \t registration method [ALL|ransac]\n"); printf("\t\t-V verbose \t\t level of verboseness\n"); printf("\t\t-O outDir \t\t output directory if not stated same as input\n"); + printf("\t\t-S scanServer \t\t Scan Server\n"); printf("\n"); printf("\tExamples:\n"); printf("\tUsing Bremen City dataset:\n"); @@ -101,11 +103,12 @@ void parssArgs(int argc, char** argv, information& info){ info.mMethod = RATIO; info.rMethod = RANSAC; info.outDir = ""; + info.scanServer = false; int c; opterr = 0; //reade the command line and get the options - while ((c = getopt (argc, argv, "F:W:H:p:N:P:f:d:m:D:E:I:M:r:V:O:s:e:")) != -1) + while ((c = getopt (argc, argv, "F:W:H:p:N:P:f:d:m:D:E:I:M:r:V:O:s:e:S")) != -1) switch (c) { case 's': @@ -162,6 +165,9 @@ void parssArgs(int argc, char** argv, information& info){ case 'O': info.outDir = optarg; break; + case 'S': + info.scanServer = true; + break; case '?': cout<<"Unknown option character "<= 1) informationDescription(info); - scan_cv fScan (info.dir, info.fScanNumber, info.sFormat); + scan_cv fScan (info.dir, info.fScanNumber, info.sFormat, info.scanServer); if(info.verbose >= 4) info.fSTime = (double)cv::getTickCount(); fScan.convertScanToMat(); if(info.verbose >= 4) info.fSTime = ((double)cv::getTickCount() - info.fSTime)/cv::getTickFrequency(); @@ -328,7 +335,7 @@ int main(int argc, char** argv){ if(info.verbose >= 4) info.fDTime = ((double)cv::getTickCount() - info.fDTime)/cv::getTickFrequency(); if(info.verbose >= 2) fFeature.getDescription(); - scan_cv sScan (info.dir, info.sScanNumber, info.sFormat); + scan_cv sScan (info.dir, info.sScanNumber, info.sFormat, info.scanServer); if(info.verbose >= 4) info.sSTime = (double)cv::getTickCount(); sScan.convertScanToMat(); if(info.verbose >= 4) info.sSTime = ((double)cv::getTickCount() - info.sSTime)/cv::getTickFrequency(); @@ -358,7 +365,7 @@ int main(int argc, char** argv){ sFeature.featureDescription(sPanorama.getReflectanceImage(), info.dMethod); if(info.verbose >= 4) info.sDTime = ((double)cv::getTickCount() - info.sDTime)/cv::getTickFrequency(); if(info.verbose >= 2) sFeature.getDescription(); - + feature_matcher matcher (info.mMethod, info.mParam); if(info.verbose >= 4) info.mTime = (double)cv::getTickCount(); matcher.match(fFeature, sFeature); diff --git a/src/slam6d/fbr/feature_matcher.cc b/src/slam6d/fbr/feature_matcher.cc index cd0b3fa..188bc1d 100644 --- a/src/slam6d/fbr/feature_matcher.cc +++ b/src/slam6d/fbr/feature_matcher.cc @@ -46,6 +46,11 @@ namespace fbr{ void feature_matcher::match(feature qFeature, feature tFeature){ vector< cv::DMatch > qtInitialMatches, tqInitialMatches, gMatches; vector > qtInitialMatchesVector, tqInitialMatchesVector; + if(qFeature.getFeatures().size() == 0 || tFeature.getFeatures().size() == 0){ + cout<<"No features has found in one or both scans!!"<= 2) && (CV_MINOR_VERSION >= 4) + cv::BFMatcher matcher (cv::NORM_L2); +#else //older version of opencv than 2.4 cv::BruteForceMatcher< cv::L2 > matcher; +#endif matcher.match(qFeature.getDescriptors(), tFeature.getDescriptors(), qtInitialMatches); matcher.match(tFeature.getDescriptors(), qFeature.getDescriptors(), tqInitialMatches); - } + } if(mMethod == FLANN){ cv::FlannBasedMatcher matcher; matcher.match(qFeature.getDescriptors(), tFeature.getDescriptors(), qtInitialMatches); @@ -123,12 +133,22 @@ namespace fbr{ //Matching descriptors using BruteFore with Hamming distance for ORB descriptor else if(qFeature.getDescriptorMethod() == ORB_DES){ if(mMethod == KNN){ + //opencv 2.4 +#if (CV_MAJOR_VERSION >= 2) && (CV_MINOR_VERSION >= 4) + cv::BFMatcher matcher (cv::NORM_HAMMING); +#else //older version of opencv than 2.4 cv::BruteForceMatcher< cv::Hamming > matcher; +#endif matcher.knnMatch(qFeature.getDescriptors(), tFeature.getDescriptors(), qtInitialMatchesVector, knn); matcher.knnMatch(tFeature.getDescriptors(), qFeature.getDescriptors(), tqInitialMatchesVector, knn); } if(mMethod == RADIUS){ + //opencv 2.4 +#if (CV_MAJOR_VERSION >= 2) && (CV_MINOR_VERSION >= 4) + cv::BFMatcher matcher (cv::NORM_HAMMING); +#else //older version of opencv than 2.4 cv::BruteForceMatcher< cv::Hamming > matcher; +#endif matcher.radiusMatch(qFeature.getDescriptors(), tFeature.getDescriptors(), qtInitialMatchesVector, radius); matcher.radiusMatch(tFeature.getDescriptors(), qFeature.getDescriptors(), tqInitialMatchesVector, radius); } @@ -146,7 +166,12 @@ namespace fbr{ } } if(mMethod == RATIO){ + //opencv 2.4 +#if (CV_MAJOR_VERSION >= 2) && (CV_MINOR_VERSION >= 4) + cv::BFMatcher matcher (cv::NORM_HAMMING); +#else //older version of opencv than 2.4 cv::BruteForceMatcher< cv::Hamming > matcher; +#endif matcher.knnMatch(qFeature.getDescriptors(), tFeature.getDescriptors(), qtInitialMatchesVector, 2); for(unsigned int i = 0; i < qtInitialMatchesVector.size(); i++){ float ratio = qtInitialMatchesVector[i][0].distance/qtInitialMatchesVector[i][1].distance; @@ -167,7 +192,12 @@ namespace fbr{ } } if(mMethod == BRUTEFORCE){ + //opencv 2.4 +#if (CV_MAJOR_VERSION >= 2) && (CV_MINOR_VERSION >= 4) + cv::BFMatcher matcher (cv::NORM_HAMMING); +#else //older version of opencv than 2.4 cv::BruteForceMatcher< cv::Hamming > matcher; +#endif matcher.match(qFeature.getDescriptors(), tFeature.getDescriptors(), qtInitialMatches); matcher.match(tFeature.getDescriptors(), qFeature.getDescriptors(), tqInitialMatches); for(unsigned int i = 0; i < qtInitialMatches.size(); i++){ @@ -206,7 +236,7 @@ namespace fbr{ vector feature_matcher::getMatches(){ return matches; } - + matcher_method feature_matcher::getMatcherMethod(){ return mMethod; } diff --git a/src/slam6d/fbr/panorama.cc b/src/slam6d/fbr/panorama.cc index 6dbf896..e488f0b 100644 --- a/src/slam6d/fbr/panorama.cc +++ b/src/slam6d/fbr/panorama.cc @@ -678,7 +678,7 @@ namespace fbr{ float x = col * 1. / xFactor - fabs(xmin); float y = (heightMax - row) * 1. / yFactor - fabs(ymin); float theta = asin((C - (x*x + (Rho0 - y) * (Rho0 - y)) * n * n) / (2 * n)); - float phi = Long0 + (1./n) * atan2(x, Rho0 - y); + float phi = Long0 + (1./n) * ::atan2(x, Rho0 - y); phi *= 180.0 / M_PI; phi = 360.0 - phi; diff --git a/src/slam6d/fbr/scan_cv.cc b/src/slam6d/fbr/scan_cv.cc index 112eed9..35c5f8f 100644 --- a/src/slam6d/fbr/scan_cv.cc +++ b/src/slam6d/fbr/scan_cv.cc @@ -13,17 +13,17 @@ using namespace std; namespace fbr{ - scan_cv::scan_cv(string dir, unsigned int number, IOType format){ + scan_cv::scan_cv(string dir, unsigned int number, IOType format, bool scanServer){ sDir = dir; sNumber = number; sFormat = format; zMax = numeric_limits::min(); zMin = numeric_limits::max(); nPoints = 0; - } - + scanserver = scanServer; + } + void scan_cv::convertScanToMat(){ - bool scanserver = false; Scan::openDirectory(scanserver, sDir, sFormat, sNumber, sNumber); if(Scan::allScans.size() == 0){ cerr << "No scans found. Did you use the correct format?" <createXYZReducedOriginal(size / (3*sizeof(double))); } else - { - throw runtime_error(string("Identifier '") + identifier + "' not compatible with ManagedScan::create. Upgrade SharedScan for this data field."); + if(identifier == "reflectance") { + return m_shared_scan->createReflectance(size / (1*sizeof(double))); + } else + { + throw runtime_error(string("Identifier '") + identifier + "' not compatible with ManagedScan::create. Upgrade SharedScan for this data field."); } }