Home

Multi-View Stereo Documentation Release 1 Jean

image

Contents

1. 24 456 e s 24 4 9 lt mMyOpuon 25225252 RP 26 4 10 Tunis 655400 BAN Re BOR det RR Se a 27 5 Triangulation 29 Introduction 2 46 Ro m Roe cae o RUE Rom E ee ee RO e RM 29 3 2 dela nay so dp 29 Do 30 s tools e ve RA a Baie eed deos Bene 32 9 9 e be Rp UE Pee ee a 33 26 JPropr ammunp Documentation s iai 624 5 2 ees ed 3 6 Indices and tables 35 Module Index 37 Index 39 USER GUIDE 1 1 Overview Our goal is given a set of photographs of a scene taken at different viewpoints make a 3D representation of the scene The method is based on PMVS2 Patch Based Multi View Stereopsis http www di ens fr pmvs Furukawa gt Ponce 52 itself needs some pre processing so software includes the source of PMVS2 and of a certain number of other external programs The main steps to achieve 3D recontruction are compute features in the images for example Sift keys Several programs proposed vlfeat sift VisionLab Features Library http www vlfeat org
2. S 2 2 2 x gt Pe oe E 42 ROO OS Pos XOU 4 eG E 13 2 0 lt 224 224 4554 4 4225 pe oe 14 2 10 X Se Reds 14 Pell dh s hd Be ve xmi S EE e E a 14 2 12 2 ox od med 15 2 15 0666 Rok a OEE SEEDS d de E Ro EES 4 15 IT RIP 15 2 15 projections a ore e Sue 15 2 16 3netls2cIUSLel qus aes ases Bh SD 0266 16 3 Dealing with large image sets 17 Sl Smiple xopt iniSallofis xc A Ux oe ee ee A ee 17 32 Manualclustetihg 22 xa EVE EIE Rue Aem 17 3 9 Automatic clustering uox Re UR RUE SOR E e ORC e ON REOR RE E di 18 4 Internals 21 4212 CONME Eom eui eg d m ee eng pede eu fes 21 MENU saisie 22 3 a nao Gee 22 PVS Ae ad 23 45 JprteprOGeSS secs BS GU dy Be 8 23 0 UT TT 24 SCAND topo Ee ares
3. 26 doCmvs cmvs Cmvs method 22 doPmvs pmvs Pmvs method 23 drawcameras module 15 E ExecAbortException 21 execBundler bundler Bundler method 22 execCmvs cmvs Cmvs method 22 execGenOptions cmvs Cmvs method 23 execInDir in module fileutils 24 execMaybe in module fileutils 24 execPmvs pmvs Pmvs method 23 extractFeatures bundler Bundler method 22 extractFocal myimage MyImage method 24 extractSiftKeys myimage MyImage method 24 INDEX F fileutils module 24 G get distorsion in module preprocess 23 get focal in module preprocess 23 getFilteredFileList in module fileutils 25 getImagelist in module fileutils 25 getInfo myimage MyImage method 24 getStatus in module config 21 initConf in module config 21 isFocalPredef in module config 21 M makeOptions bundler Bundler method 22 matchKeys bundler Bundler method 22 metis2cluster module 16 MissingInputFile 21 mkdirsMaybe in module fileutils 25 mvs module 3 MylImage class in myimage 24 myimage module 24 myoptions module 26 P parse args in module myoptions 26 Pmvs class in pmvs 23 pmvs module 23 prepare doc in module myoptions 26 preprocess module 23 prepSteps in module config 21 progPath in module fileutils 25 projection module 15 H readBackup in module fileutils 25 readFileMaybe in modu
4. siftfeat a program by Rob Hess based on opencv http blogs oregonstate edu hess code sift personnal program using feature extractors of OpenCV library version 2 4 e find matching points between images program KeyMatchFull from _ bundler v0 4 http phototour cs washington edu bundler with modifications to add parallelism use stereo information to compute camera 3D parameters program bundler from bundler v0 4 by Noah Snavely http phototour cs washington edu bundler with in some circumstances parallel extension http grail cs washington edu projects mcba divide the image set in clusters with CMVS from Yasutaka Furukawa to speed up next step http www di ens fr cmvs produce a representation of the scene as a dense set of surface patches with PMVS2 from Yasutaka Fu rukawa and Jean Ponce http ww w di ens fr pmvs Note source code for CMVS and PMVS2 is a version modified by Pierre Moulon mainly for portability reasons TheFrenchLeaf CMVS PMVS b4185d1 https github com TheFrenchLeaf CMVS PMVS We also propose a program based on module Delaunay 3d of CGAL 4 1 Computational Geometry Algorithms Li brary http www cgal org to make a facet representation of the surface The python script mvs will control the whole process from input images to dense points The script add allows one to add images but only at the very first steps of the process The surface construction involves two separate
5. to make use of software PMVS easier PMVS was developped by Jean Ponce and Yasutaka Furukawa See http www di ens fr pmvs page and following papers e 1 Furukawa and J Ponce Accurate Dense and Robust Multi View Stereop sis IEEE Transactions Pattern Analysis Machine Intelligence 32 8 2010 http www di ens fr willow pdfscurrent journee2010_sdp pdf e 1 Furukawa and J Ponce Accurate Camera Calibration from Multi View Stereo and Bundle Adjustment International Journal of Computer Vision 84 3 september 2009 http www di ens fr willow pdfs ijcv08a pdf e 1 Furukawa and J Ponce Accurate camera calibration from multi view stereo and bun dle adjustment In IEEE Conference on Computer Vision and Pattern Recognition 2008 http www di ens fr willow pdfs cvpr08a pdf Yves Ubelmann used this software in particular for archeological sites His feedback and data samples were of great help Recently Jean Ponce suggested to convert the dense patch model of PMVS to a trianglularized surface with the Delaunay triangulation of CGAL Many aspects of the programs follow his suggestions And the invaluable advices of Monique Teillaud Senior researcher in team GEOMETRICA INRIA Sophia Antipolis about CGAL programming saved me a lot of time and effort 1 11 Acknowledgments and history 9 Multi View Stereo Documentation Release 1 10 Chapter 1 User guide TOOLS 2
6. 3 2 1 EOF bindir tool merge ply d test o all test ply cl This will create ntest 01 ply ntest 02 ply ntest 03 plyandall test ply 3 3 Automatic clustering This is an attempt to automatically clusterize a large set of images It is very experimental and is given without any guarantee NB the program gpmetis from ParMETIS http glaros dtc umn edu gkhome metis parmetis overview is required 3 3 1 Algorithm 1 Extract key points from all images Sbinddir mvs i datadir w workdir s 1 2 Usematches init txt to build a connected graph of images relations 2 images are connected if they have matching points This is the critical part As we want to avoid O N operations we suppose that most of time consecutive images have matching points First run the key matching program with a limited neighbourhood 4 to 8 We should obtain a small number of independant clusters Try to find a few images tipically 4 that reconnect the clusters We hope that the number of tests will not be too large This operation is done by n KeyMatchFull n KeyMatchFull 57 features txt out matchfile min match max overlap old match file list features txt file created in workdir at step 1 out matchfile match file similar to matches init txt 18 Chapter 3 Dealing with large image sets Multi View Stereo Documentation Release 1 min match minimum number of matched points between 2
7. mirror facets of its facets adjacent to a non removed finite tetrahedron This is a bit faster because the number of removed tetrahedrons is less than the number of valid ones e e for each kept tetrahedron find facets that are adjacent to an infinite or to a removed tetrahedron 5 3 triangclean 31 Multi View Stereo Documentation Release 1 1 Ignore some of the selected facets considered as artefacts accordingg to following optional criterions too long facet an edge is longer than some threshold proportionnal to the average edge length lg coef too wide facet its surface is greater than a threshold proportional to the square of the average edge length s coef too badly oriented facet the angle of its delaunay normal with one of the PMVS normals at the vertices or with the average vertices normal is too great a angle Unfortunately there is no rule to choose optimal parameters 5 4 Utility tools Here are some graphical tools that will bring some little help to analyze results of PMVS2 and triangulation Valid cameras are drawn in green and bad ones with no visible points in red These programs will be slow on large data sets 5 4 1 camtest camtest file cgal facets ply b x1 y1 x2 y2 View the results of PMVS and triangulation in an OpenGL window e b Only draw rays to points in the XY box To see which points are visible by a camera hit keyboard key S This will toggle drawi
8. sm lambda nb iter Extract from the result of program delauny the facets of the surface of the scene and write the result to a ply file in binary format The program first eliminates empty tretrahedrons and then determines facets belonging to the surface input cgal data generated by program delaunay out ply ply output file 30 Chapter 5 Triangulation Multi View Stereo Documentation Release 1 5 3 The e extraction mode 0 use removed tretrahedrons 1 use kept tretrahedrons 2 extract all facets of removed tretrahedrons for test purpose 3 extract all facets of kept tetrahedrons for test purpose e i remove tetrahedrons with at least min intersect rays going through them e iw use a number of intersections larger than intersect for large tetrahedrons mxf use maxflow algorithm with a threshold of nb intersections to remove tetras a remove facets that do not satisfy a constraint on normal angles if normals angle 0 rm facets where the angle between the facet normal and a vertex normal is greater than angle if normals angle 0 rm facets where the angle between the facet normal and the sum of vertex normals is greater than langlel Angle value from 0 to 180 default value 180 means angle constraint e ct remove tetrahedrons that have 3 facets on the surface rough patches sm try to smooth the surface Replace each point p
9. 1 merge ply merge ply v n f wp d basename global ply 61 s st num nb nb sets Converts points of image clusters to the coordinate system of one set Working directories are named where xx is the cluster number on 2 digits They must contain orig list txt list of paths to original imges pmvs bundle rd out and pmvs models option 000 ply Image lists must have common images Points of each set are saved in a separate file n basename xx ply in current directory If o is given all files are concatenated in global ply e y verbose n dry run just print the commands d basename of working directories names basename nn e s number of Ist cluster gt 1 default 1 nb number of clusters default 2 cl order of clusters is given in file clusters basename ignore s and nb f force to overwrite results e wp make also ply files of points used to compute transformation matrices With option cl order of clusters is given by clusters basename This file has 1 line of the form n0 n1 n2 per cluster nO is the cluster number starting at 1 The line with nO alone defines the reference cluster the reference coordinate system There must be images common to cluster nO and n1 and images common to n1 and n2 and so on Points of n0 will be converted to the coord system of n1 and then to the one of n2 and so on Without option cl the cluster order i
10. Pmvs Process programs of the pmvs2 package doPmvs Optionally execute pmvs2 execPmvs Call pmvs2 program input in pmvs option vis dat visualize jpg txt txt output in pmvs models ply patch pset 4 5 preprocess get distorsion Compute average focal and distorsion coefficients from a bundle file workdir bundle bundle out Ignore focals that differ from 1st focal by more than 10 outliers Returns focal k1 k2 as strings get focal Retrieve the focal of the first camera from workdir list txt Returns the focal value as a float Raise an exception if not available save 1 5 501 None sk2 None Store focal and distorsion coefficients in file workdir pre processed txt Input 5 the focal value as a string skl sk2 optionals distorsion coefs as strings undistort src sfocal skl sk2 Undistort images and copy them to workdir Input 4 4 pmvs 23 Multi View Stereo Documentation Release 1 src the original images as given by option 1 sfocal sk1 sk2 focal and distorsion coeffs strings Output in files named by images number on 8 digits in workdir 00000000 jpg 4 6 myimage class MyImage fileDef Interface for image list operations extractFocal Open the image file and extract focal extractSiftKeys Extract feature keys from the image The jpeg file is converted to BW pnm image eventually with a s
11. Retrive files of a given directory that match a regular expression Input dir the directory to list rexp compiled regular expression Returns Sorted list of files Each list element is a dictionnary dir dir name filename getImagelist src firstnum 0 Return the list of image files Input e src original images directory of list of paths as given to option 1 firstnum number of first image to return Returns images as a list of dictionnary with items e dir directory component basemname of original e newname name 90084 that the file will have when copied to working directory mkdirsMaybe paths Create a list of directories if they don t exist progPath progName Return the absolute path of a given program name supposed to be in the bin directory of the software readBackup file Return as a list the content of the backup file associated to file 2 with extension save readFileMaybe file Read a file if possible Returns the list of lines empty list if the file cannot be read restoreBackupFiles dirs Silently restores all backup file in each dir of the list rmBackupFiles dirs Silently remove all backup file in each dir of the list rmNoerr paths Silently remove a list of files stripReadFileMaybe file Read a file if possible and strip lines leading and trailing spaces Returns the list of stripped lines empty list if the file cann
12. by lambda p 1 lambda neighbours mean repeat nb iter times if lambda lt 0 use default value of 0 8 if nb iter lt 0 do a weighted mean based normal angles e lg remove tetrahedrons with too long edges greater than g mean edge length Default value of 0 14 if lg coef 0 e s remove tetrahedrons with too large facets surface greater than surf coef mean edge length mean edge length Default value of 0 01 if surf coef 0 2 Description algorithm is as follows 1 Find tetrahedrons to remove according to their number of intersecting rays computed by delaunay 2 possibilities 1 Remove tetrahedrons having a number of intersections greater or equal to the value given by option 1 1 by default This number can be weighted by the tetrahedron size option iw Minimize an energy function with min cut max flow algorithm option mxf E x 0 ee Od B u v Ly v being the set of cells we want to remove n the number of rays crossing node v and no the number of inersections threshold the cost is defined n The smoothness coefficient 8 represents the similarity between adjacent tetrahedrons u and v Optionally ct add to this list tetrahedrons having 3 faces adjacent to infinite tetrahedrons rough patches 2 Find facets canditate for the surface Two possibilities option e e 0 default for each removed tetrahedron find
13. option file opt ion 000n ssh hosts file use hosts given in hosts file to dispatch execution of pmvs for all availeble option files The localhost may be specified as localhost or by its hostname Only the first definition of localhost will be used 1 7 Script add Allows to add images Does an incremental update on steps 1 and 2 Other steps must be re run with all images 6 Chapter 1 User guide Multi View Stereo Documentation Release 1 1 7 1 Arguments add v n cpus nb cpus 1 input w workdir s steps range undo valid maxsize n shrink n cv sififeat options vl vlsift options ocv opencv keytype ccdwidth ccdwidth match Add images to an already pocessed sequence The programm can only execute the first 2 steps of the whole process Steps 3 to 8 must be executed by the normal command mvs verbose mode n fake execution cpus nb cpus Nb of CPUs to use default all i input image dir or file of image paths w workdir working dir 5 steps range steps n or nl n2 where step number range from 1 to 2 1 extractFeatures 2 matchKeys undo back to the original state preceding add Needs only w valid Make the last additions definitive maxsize n max image size for sift shrink n max input image size resize before processing cy siftfeat options Options for siftfeat as std of def default or string of options st
14. projection b numcam use camera lt numcam gt from bundle rd out default b 0 2 12 convbundler 15 Multi View Stereo Documentation Release 1 p proj matrix use projection matrix stored in given file pts points file ply file containing 3d points e col zoom draw squares of size 2n 1 with original color of points 2 16 metis2cluster metis2cluster l img list 0 out name g metis graph c metis nb clusters n ply dot bundle file ax Build cluster data lists of images clusters dependencies for Multi View Stereo programs limg list list of paths of original images 0 out name basename for results Ist lt name gt 01 lst lt name gt 02 clusters lt name gt g metis graph file basename of the metis files i e without the metis extension metis nb clusters nb of clusters made by gpmetis file lt metis graph gt metis part lt nb gt n simulation do not write files ply print cluster cam positions in ply files dot print cluster data in dot files b bundle file bundle file used for camera positions when writing dot files ax alternate conection algorithm choose images directly connected to a cluster rather than a connected subgraph Results are clusters out base Ist lt out_base gt 01 cluster 1 images list xlst lt out_base gt 01 short list for mvs pre process Example If metis data is test metis and test metis part 2 bindir tool meti
15. Multi View Stereo Documentation Release 1 Jean Paul Chieze August 23 2013 5 1 User guide 1 DVerVIBW Y ee ee ES NOE deeds 1 1 2 eS 5 v RS 2 159 akon deo uox ae ee dne bee 2 14 Quickstart Roe om 45 244 X XR cro 5 2 1 5 JH ntsaboutimages 22522 644 ee ER AS ee 3 100 3 ld fst a ccs Bowe a 6 000 8 1 97 Examples Gos Sb ede AN AL Suede ee Ghee amp 0 0 EHE 8 1 10 Troubleshooting ss rest nee 2 6624 EURO ALES UE OR UR 8 1 41 Acknowledsments and ue v be RAE ee he vade 9 2 Tools 11 m 11 2 2 Catply 99 e ok 12 2 3 anerpe bundler s sosi sonin Boe ws AG ACER BES bok 12 2A checksbundle L o wo Y de SUR X Ro 12 2 3 xchecksmatcelies obo Sis ete rU EAE Ui My dr el por US A 13 2100 uui Lom XR x boo de ade e e ep s 13 2 1 SIC 13 2 8
16. a database extensions else add the given ccdwith to the camera database extension file e camera name camera identifier Camera make gt lt Camera 4 gt as given by exif image metadata iref image image from which to extract the camera identifier Only one of c i is allowed w ccdwith camera ccd width in mm Example Sbin ccdwidths c Canon Canon EOS 50D w 22 71 1 9 Examples Simple example Sbindir mvs i images w workdir Result in workdir pmvs models option 0000 ply add some new images and recompute Sbindir add i newimages w workdir bin add valid w workdir bindir mvs w Sworkdir s 3 8 pre undistort images to use parallel version of bundler bindir mvs i images w workdir pre process sample list pba on an ordered image set bindir mvs i 5108068 w Sworkdir match 10 1 10 Troubleshooting 1 10 1 Execution errors If an error occurs during execution try to run the underlying command by hand Option v or n will show what is exactly executed The directory corresponding to intall 1lib should be added to LD_LIBRARY_PATH to DYLD LIBRARY PATH on Mac OS 8 Chapter 1 User guide Multi View Stereo Documentation Release 1 1 10 2 Bad results Sometimes the resulting ply shows a poor or bad reconstruction The most frequent symptom is that bundler step 4 eliminates too many of the input images This can be verified with check bundle see
17. a set of images Input images are processed to produce a 3D representation of the scene as a cloud of points in PLY format y verbose mode n fake execution cpus nb cpus Nb of CPUs to use default all 1 5 Hints about images 3 Multi View Stereo Documentation Release 1 i input image dir or file of image paths only used by step 1 w workdir working dir 5 steps range steps or nl n2 where step number range from 1 to 8 1 extractFeatures 2 matchKeys 3 makeOptions 4 execBundler 5 bundle2PMVS 6 execCmvs 7 execGenOptions 8 execPmvs Option s 0 with pre process means do only pre processing pre process samples list use a few images to estimate distorsion and apply correction to images maxsize n max image size for feature extraction use a shrinked copy if necessary shrink n max input image size do all processing on resized images ccdwidth def_ccdwidth ccdwidth for images without camera model info e cy siftfeat options Options for siftfeat as std of def or string of options std def d s 1 6 c 0 r 3 e yl visift options Options for vlSift as std or def default or string of options std 7 def _first octave 0 peak thresh 0 edge thresh 3 5 ocv opencv keytype Use points detector extractor from opencv surf sift hsurf ssift osift ssurf hsift orb
18. against nb of images 2 6 get clusters get clusters o nb overlap rec minp min match nb v grp Gl Gm fie ext 0 im1 matches init txt Extract clusters from matches init txt e y print image pairs Gm write connectivity matrix needed by clustering e grp print image groups G write dot graph minp eliminate pairs with too few matches ext only consider images in range im0 im1 0 simulate partial matching with max nb of images to check for tests rec associated with o try to reconnect clusters tests 2 7 adj2metis Usage adj2metis wmlwn i gt adj matrix gt metis graph file Convert an adjacency matrix to a metis graph e wm weight edges with nb of matched points e wn weight edges with degrees of their vertices i invert weights 2 8 visu sift visu sift d srcdir f jpegfile r For each jpeg image in srcdir or for jpegfile write a BW version of the file in x filename pgm and draw sift points from source file in green or red e d make keypoint images for all images in workdir e f make keypoint image of the file uses the associated key gz r draw red points instead of green 2 5 check matches 13 Multi View Stereo Documentation Release 1 2 9 visu matches visu matches m match file imgnum1 imgnum2 0 prefix vl draw Write in prefix numl pgm and prefix num2 pgm matched key points according to matchfile defa
19. ages must be in photos and a working directory named result will be created in the input directory 4 Chapter 1 User guide Multi View Stereo Documentation Release 1 if argument of i is a directory without photos it must contain the images and option w is mandatory A file named history will be created in the working directory to record the different steps of the program It is overwritten at execution of step 1 It contains arguments start and end times of each run and elapsed time of each step 1 6 2 Detailed description The different steps of the process can be executed separately with option s The argument can be a step number 1 8 or a range n1 n2 Of course a step cannot be executed before the previous one Pre process This special step is used to speed up bundler but it should only be applied to images taken with the same camera and the same focal It is invoked by the pre process option The argument is a file containing paths to a few images The program will estimate distortion coefficients and apply the same distortion correction to all images so that the parallel version of bundler can be used on the result To check the validity of this method you can first run steps 1 4 on the sample list and use check bundler see doc to verify that estimated coefficients of cameras are close enough y mvs i sample list w Sworkdir s 1 4 y tool check bundl coefs S workdir bundle bundle out Step 1 Do featu
20. ata for CMVS and PMVS2 program Bundle2PMVS from bundler package Images without key point match will be ignored e make a copy without ignored images of bundle bundle init out to pmvs bundle rd out e write projection matrices of valid cameras to t xt files in pmvs txt e write the list of valid images to pmvs list rd txt use coefficients in bundle bundle out to undistort valid images and copy them to pmvs visualize e write image neighborhood information to pmvs vis dat for use by CMVS Step 6 Run to find cluster of images Each cluster will be processed independantly by PMVS2 e nocmvs don t run cmvs maxnbim 7 define maximum number of images allowed in a cluster default 100 Step 7 Create option files for PMVS2 Files are named option nnnn where nnnn is the CMVS cluster number on 4 digits starting at 0 If nocmvs is specified option nocmvs will be created instead e nocmvs The option file will be opt ion nocmvs e csize n set option csize of pmvs2 default 2 e minvisz set option minImageNum of pmvs2 default 3 It is the minimum number of images a patch must be visible in Step 8 Run pmvs2 From option files and data in pmvs txt and pmvs visualize build dense 3D patches and store the result in directory pmvs models files option nnnn with extensions ply patch pset Program pmvs2 uses pthreads library Option files opt ion nnnn are processed sequentially e pmvs n execute pmvs2 only for
21. d def 7 6 s 1 6 c 0 r 3 vl visift options Options for vlSift as std or def default or string of options std 7 def first octave 0 peak thresh 0 edge thresh 3 5 ocv opencv keytype Use points detector extractor from opencv surf sift hsurf ssift osift ssurf hsift orb ofreak osurf ccdwidth def_ccdwidth ccdwidth for images without camera model info match nbim max preceding images to check against current in KeyMatchFull all images by de fault NB The modifications can be removed with undo as long as you don t execute the commande mvs The program first makes a backup copy of files list txt list features txt matches init txt See description of steps 1 and 2 in documentation of mvs Images and key files are added in the working directory new values are added to matches init txt But the additions are temporary and overwritten by each execution of the script until option valid is given On the contrary option undo will revert to the original state If one of these 2 options is given no step is executed Example Sbin mvs i src w work bin add i add dir w work bin add w work valid Sbin mvs s 3 8 1 7 Script add 7 Multi View Stereo Documentation Release 1 1 8 Script ccdwiths ccdwidths c camera name 1 ref image w ccdwith Without arguments list contents of camer
22. de a set of overlapping jpeg images You can give the directory contain ing the images or a file containing the paths to images Important note the jpeg files must contain EXIF info specially with fields focalLength Make and Model If bin is the directory corresponding to Linux install bin just run Sbin mvs i image dir w work dir You will get ply files in work dir pmvs models They can be viewed for example with meshlab If you are satisfied of the result be happy otherwise read more of this documentation and experiment with the software to increase your expertise level If you geta message WARNING Cameras missing in ccdwidth database you need to add the sensor width in mm of your camera to the database by running the command given in the message for example 2 Chapter 1 User guide Multi View Stereo Documentation Release 1 Sbin ccdwidths c Canon Canon EOS 50D w 22 71 A good place to find the sensor width is http www dpreview com You can download examples tgz for a first try of the software 1 5 Hints about images The result is very dependant on how the photographs are taken Remember that the program has to find corresponding points between images that means detect remarkable points in each image and find enough similar ones between images Use the same camera with the same focal for all photographs of the scene Move the camera around the scene with rota
23. e ply points between zmin and zmin 40 2 deltaz draw writes in xb00 pgm matched points of the corresponding image p print 2d and 3d points for camera cam num and image dimension dimx dimy set the 2d origin at top left corner pcoefs print cameras params focal k2 coefs print average coefs of cameras focal k1 k2 m print matrix of relations between images with nb of matched points wm write adjacency matrix of the graph with nb of matched points in each slot This script is supposed to help you analyze the result of bundler when results are not satisfactory It mainly gives information on the dependencies between images These dependencies are much more accurate than those obtained in matches init txt The script prints the upper triangle of the dependency matrix line k starts with the image number and the total number of matched points followed by matching images with the number of matches in the pair Option grp will show the unreferenced images first line and the independant graphs good set of images should be represented by only one graph 12 Chapter 2 Tools Multi View Stereo Documentation Release 1 2 5 check matches check matches nb images v grp matches inittxt Display information about image match ing from matches init txt e y print image pairs e grp print list of images in matching graphs 1st line list of isolated images e n check image indices
24. g with large image sets FOUR INTERNALS 4 1 config This module contains parameters of the application exception BadParamException Bad parameter or file The execution cannot continue class Config Parameters of the application progs names of external progs called by the application params configuration parameters bundlerOptions default options for bundler execList tasks to execute in given order exception ExecAbortException Programm terminated with error exception MissingInputFile Missing input file getStatus Retrieve state of last add operation from file workdir add status initConf args isFocalPredef Get focal computed by pre process from file workdir pre processed txt Returns None if no file or null focal in file value of focal otherwise prepSteps l firststep log maxstep None Set exec flags in steps list Input e Jisalor2 elements list 1st and last step 1 to 8 firststep minimum value required for 1st step number maxstep max possible step if 8 Returns stat istart stat True if correct istart index in step table 0 7 21 Multi View Stereo Documentation Release 1 setStatus level Writes the status of an add operation to file workdir add status 4 2 bundler Execute tasks corresponding to the 4 first steps up to bundler class Bundler lst binpathzNone add 0 Process programs of the bundler package bu
25. hould be cgal It will contain all the information delaunay triangulation PMVS2 points with normals and colors cameras number of ray intersections with tetrahedrons This file can be quite big messages The program will print some statistics execution times and information about the data The number of valid cameras is less than number of cameras when some cameras have no visible points Delaunay triangulation will remove duplicate points Points from PMVS2 are normally dense but may be sparse some regions Most tetrahedrons are small but they are larger in sparse regions And there are generally artificial large tetrahedrons on the boundary of the scene You may want to try to fill sparse region but not obviously empty regions To do so we propose to add barycenters of medium size tetrahedrons to the set of points Affected tetrahedrons are those having their longest edge bounded by a minimum and maximum value These value are equal to the average edge length multiplied by the 2 coefficients of option a this is done of course before insertion of camera points But be careful this operation may give bad results 5 3 triangclean This program will make a surface reconstruction of a scene from the result of program delaunay described above 5 3 1 Arguments triangclean input cgal out ply extract mode 1 intersect mxf nb intersections iw a normals angle ct lg coef s surf coef
26. images default 16 max overlap number of consecutive image to check for matches default 8 old match file don t calculate initial matches and directlly the cluster reconnection step cd S workdir n KeyMatchFull list features txt matches init txt 3 Split this graph in N subgraphs make the matching graph adjacency matrix see get clusters bindir tool get clusters matches init txt Gm mybase Convert adjacency matrix to metis graph see adj2metis bindir tool adj2metis mybase mat mybase metis Split the graph into parts with gpmetis http glaros dtc umn edu gkhome metis parmetis overview For example with N 5 gpmetis ptype kway contig ncuts 2 objtype cut mybase metis 5 The resulting file will be base metis part 5 line k give the cluster number of image 4 Use the initial graph to extend each subgraph with a few images that can interconnect it with another subgraph see metis2cluster bindir tool metis2cluster 1 orig list txt o mybase g mybase 5 We will obtain clusters mybase lstmybase 01 xlstmybase 01 lstmybase 05 xlstmybase 05 1 Run mvs on each cluster For example mkdir mybase 01 bindir mvs i lstmybase 01 w mybase 01 pre process xlstmybase 01 pba 2 Merge results see merge ply bindir tool merge ply d mybase cl o mybase all ply 3 3 Automatic clustering 19 Multi View Stereo Documentation Release 1 20 Chapter 3 Dealin
27. images without matched points 9 or by comparing the number of good images in file pmvs list rd txt made at step 5 with the number of input images in file orig list txt The result of bundler depends on the contents of natches init txt Run check matches to analyze this file option grp will show if key matching defines a connected graph e Visualize the matched points between pairs of images with visu matches calls bindir cvdraw which needs OpenCV z 2 4 You can also vizualise keypoints with visu sift To get better results If matches init txt is bad you can try to change the feature extractor program or its options or modify maxsize Tell bundler which initial pair of images to use option bdlpair Use for example BEST pair given by check matches It may also happen that pmvs2 gives bad results because of bad distorsion correction on some images Undistorted images used by pmvs2 are stored in pmvs visualize In my experience the result may be very sensitive to the feature extractor used or even to the conditions of its compilation Of course the quality of images is fundamental A good rule of thumb is that each reference point i e point detected by the feature extrcator should be visible in at least 3 images 1 11 Acknowledgments and history This work was initiated by Jean Ponce scientific leader of the INRIA ENS research team WILLOW http www inria fr equipes willow http ww w di ens fr willow
28. ises an exception if some required files are missing 4 10 runutils 27 Multi View Stereo Documentation Release 1 28 Chapter 4 Internals TRIANGULATION 5 1 Introduction Given a dense set of 3D patches produced by PMVS2 http www di ens fr pmvs we want to build a triangle facets representation of the surface of the scene The programs use the Delaunay 3d module of CGAL library version 4 1 Computational Geometry Algorithms Library http www cgal org The surface generation needs two programs 1 delaunay make delaunay 3D triangulation of PMVS camera poinrs as PMVS returns the list of points visible from each camera we can draw path from a camera to the points it sees and find which tetrahedrons are crossed 2 triangclean use criterion based on the number of rays crossing a tetrahedron to eliminate useless tetrahedrons find facets of remaining tetrahedrons that belong to the surface 5 2 delaunay This program builds a Delaunay triangulation and compute information about tetrahedrons visibility It is based on the CGAL library http www cgal org We first build a delaunay triangulation on the points given by PMVS2 plus the positions of cameras Then we compute the number of intersections of each tetrahedron with rays between each camera and the corresponding PMVS2 visible points The loop on camera is parallelized with OPENMP delaunayl is the
29. le fileutils 25 restoreBackupFiles in module fileutils 25 rmBackupFiles in module fileutils 25 39 Multi View Stereo Documentation Release 1 rmNoerr in module fileutils 25 runutils module 27 5 save focal in module preprocess 23 save history in module runutils 27 setStatus in module config 21 sphinxdoc of options in module myoptions 26 stripReadFileMaybe in module fileutils 25 U undistort in module preprocess 23 usage in module myoptions 26 V validAdd in module fileutils 25 validName in module fileutils 25 verifSteps in module runutils 27 40 Index
30. maller size Keys data is written to a compressed text file in directory workdir with same name as image and extension key gz getInfo Return parameters associated to an image as a dictionnary of param name value pairs 4 7 camdb class CcdWidths Database of some cameras ccd widths as a dictionary keys are of the form Make Model where Make and Model are respectively the camera maker and the model as they appear in the exif header of photos values are the width in mm of the CCD sensor To add a new entry you must know the ccd width in mm of the sensor But this is rarely present in the specifications of the camera The best place to find the width in mm is http www dpreview com select the maker in the cameras menu 4 8 fileutils backupFilesMaybe paths Make a backup copy of each file of the list if the backup does not yet exist execInDir workdir args kwargs Execute a command in directory workdir Log the command in verbose mode Don t execute it in simulation mode execMaybe name func args Execute a step of the MVS suite if validated by the user at script start Input name the execution step name 24 Chapter 4 Internals Multi View Stereo Documentation Release 1 func the boolean function to call if the step is marked executable in Config validExec args arguments for func Returns True if step is skipped the return value of func otherwise getFilteredFileList dir rexp
31. n name None Returns a string mde of options documentation with optional strings prepended and appended The resulting string is stored in a global variable for use by usage sphinxdoc of options options Build a doc string in sphinx format from options list Input options list of option definitions see parse args below Returns tuple made of usage line and concatenation of detailed options help strings usage msg None Prints the optional msg string followed by the cur doc string that must have been built with prepare doc 26 Chapter 4 Internals Multi View Stereo Documentation Release 1 4 10 runutils save history argy start elapsedtime cputime add mode False Write information to the history file work dir history Input start True if the command is starting False if at end of command argv the arg list of the command to be written if start is True elapsedtime cputime written if start is False The file is overwritten if step 1 is executed otherwise the data is appended to the file verifSteps steps firststep usage maxstep None Verifies validity of the steps argument string Check that files needed by 1st step exist in workdir Input e steps the steps string d or 41 42 firststep minimum first step allowed usage usage function to call in case of error maxstep maximum step allowed None 8 Returns call usage if string is incorrect ra
32. ndle2PMVS Prepare data for pmvs input list txt bundle bundle out e output in pmvs bundle rd out list rd txt pmvs options txt vis dat txt txt visualize jpg prep pmvs sh doBundler Sequence of programs to execute from the bundler package execBundler Execute bundler program input list txt options txt matches init txt output out bundle out bundle ply constraints txt pairwise scores txt matches nmatches extractFeatures Extract camera focal length from input images and calculate key points Start features extraction program in parallel on al cpu s copy rename images to workdir emake list txt list_features txt key gz sift keys makeOptions Builds the option file options txt for bundler matchKeys keylistfile Call the key matching program input list_features txt output matches init txt 4 3 cmvs Call cmvs class Cmvs Process programs of the cmvs package doCmvs Optionally run the 2 steps of CMVS cmvs genOptions execCmvs 22 Chapter 4 Internals Multi View Stereo Documentation Release 1 Execute cmvs input in pmvs bundle rd out list rd txt pmvs options txt txt txt visualize jpg e output pmvs centers ply pmvs ske dat pmvs vis dat overwrite vis dat from bundle2PMV 5S execGenOptions Make option files for pmvs input pmvs ske dat output pmvs pmvs sh pmvs option 4 4 pmvs Call pmvs2 class
33. ne ply scene2 ply 5 6 Programming Documentation The internal programs documentation made with Doxygen is available here in html and as triangulation refman pdf in pdf 5 5 Examples 33 Multi View Stereo Documentation Release 1 34 Chapter 5 Triangulation INDICES AND TABLES Index Module Index Search Page 35 Multi View Stereo Documentation Release 1 36 Chapter 6 Indices and tables add 7 bundler 22 calcamera 15 calctransform 14 24 ccdwidths 8 cmvs 22 config 21 convbundler 15 convply 14 D drawcameras 15 F fileutils 24 M metis2cluster 16 mvs 3 myimage 24 myoptions 26 pmvs 23 preprocess 23 projection 15 R runutils 27 MODULE INDEX 37 Multi View Stereo Documentation Release 1 38 Module Index add module 7 B backupFilesMaybe in module fileutils 24 BadParamException 21 bundle2PMVS bundler Bundler method 22 Bundler class in bundler 22 bundler module 22 calcamera module 15 calctransform module 14 camdb module 24 CcdWidths class in camdb 24 ccdwidths module 8 Cmvs class in cmvs 22 cmvs module 22 Config class in config 21 config module 21 convbundler module 15 convply module 14 D doBundler bundler Bundler method 22 doc of options in module myoptions
34. ng red rays from current camera to its visible points For more readability you can restrict target points to an XY box Use the Select function shift LeftMouse to print the xy ccordinates of a point of the scene 5 4 2 camtestO camtest0 cameras ply model basename b x y1 x2 y2 Display PMVS points and cameras and draw rays to visible points model basename is the basename of files ply and patch built by 52 b Only draw rays to points in the XY box 5 4 3 cmpcgal cmpcgal points1 ply points2 ply datal cgal data2 cgal b x1 1 2 y2 Alternatively display 2 datasets for comparison either facets ply or delaunay cgal files e b display points inside xy box 5 4 4 hist hist input cgal Repartition of number of intersections Each line gives the nb of tetrahedrons more intersections than given after gt 32 Chapter 5 Triangulation Multi View Stereo Documentation Release 1 5 5 Examples Notations bindir intallation bin directory workdir working directory for multi view stereo programs cd Sworkdir pmvs Sbindir tool drawcameras i bundle rd out o cameras ply Visualize how cameras see points bindir camtestO0 cameras ply models option 000 Triangulation bindir delaunay cameras ply models option 000 bindir triangclean output cgal scene ply Extraction variant bindir triangclean output cgal scene2 ply i 5 Compare results bindir cmpcgal sce
35. o out ply ply output file default result ply Example 14 Chapter 2 Tools Multi View Stereo Documentation Release 1 Sbindir tool convply m M j 0302 M j 0201 i j 03 pmvs models option 0000 ply o nj 03 ply 2 12 convbundler convbundler m matrixl matrixn d work dir e m matrixl matrixn transformation matrices to apply successively to move from coord system n to 1 d work dir directory containing files to convert pmvs bundle rd out pmvs txt 2 13 drawcameras drawcameras o output ply i bundler file Make a ply file of cameras positions output ply ply file for cameras positions i bundler file bundler file bundle bundle out or pmvs bundle rd out Example Sbindir tool drawcameras i pmvs bundle rd out pmvs cameras ply 2 14 calcamera calcamera s dimx dimy m projection matrix v points file Compute the projection matrix for 2d 3d point pairs given by the user 5 dimx dimy image x y dimensions m projection matrix file to store the projection matrix verbose mode points file lines of 24 34 corespondent point coordinates as X Y Z Prints K intrinsics R rotation and t translation for the camera K is of the form skew angle 0 1008 0 xfocal 0 0 0 1 2 15 projection projection d srcdir i image b p proj matrix pts points file col zoom e d srcdir directory containing bundle and pmvs i image image for
36. octave 0 peak thresh 0 edge thresh 3 5 std no options use built in values keytype use program cvkeys which provides various combination of feature detectors extractors from the OpenCV lib version 2 4 The recommended value for keytype is sift If no feature extractor is specified cv 514 is used Note feature extraction is done in parallel and may use a lot of memory You may specify a number of cpu s lower than the maximum option cpus 1 6 Script mvs 5 Multi View Stereo Documentation Release 1 Step 2 For each pair of images find matching keypoints The program is parallelized with OPENMP but the execution time is in N N e match nbim only try to match each image with the nbim previous ones This will considerably speed up the program but it supposes that images are almost correctly ordered The matching information is written to matches init txt Step 3 Just build options txt the options file for bundler ff set option preventing bundler from calculating distortion and estimating real focal length bdlpair force bundler tu use the given pair as initial one Step 4 Run bundler Uses natches init txt keypoints files to produce bundle bundle out pba use parallel version of bundler The distortion coefficient are only partially estimated Should be used with undistorted images see abaove pre process or the final result of PMVS2 will be bad Step 5 Prepare d
37. ofreak match nbim max preceding images to check against current in KeyMatchFull all images by de fault ff fixed focal length and no distorsion estimation pba Use parallel version of bundler warning you should first apply a distorsion correction to images with pre process for example bdlpair init_bundler_pair Force bundler tu use this image pair for initialization nocmvs Don t clusterize images with cmvs maxnbim nbim max nb of images per cluster for cmvs pmvs pmvs num option file number for pmvs 0 for option 0000 ssh hosts file hostnames for execution of PMVS on cmvs clusters csize n csize option for pmvs2 2 or 1 minvis nb visible imgs pmvs2 each 3D point must be visible in at least nb visible imgs images to be reconstructed default 3 Notes 1 If run without option s the program will skip steps already done by a previous add command 2 Addition of images made by a previous command add will become definitive except if you force start from step 1 3 image list is saved in lt workdir gt orig list txt 4 Default behaviour is equivalent to cv std s 1 8 csize 2 minvis 3 Input data and working directory can be specified in different ways if argument of i is a file it must contain paths to the images and option w is mandatory to specify the working directory if argument of 1 15 a directory with subdirectory named photos option w if not allowed im
38. ot be read validAdd Make addition operation definitive remove all files created by add backups and status file 4 8 fileutils 25 Multi View Stereo Documentation Release 1 validName rexp x Check a name against a regular expression Input rexp compiled regular expression result of re compile e x the string to check Returns True if x matchex rexp 4 9 myoptions doc of options options Build a doc string from options list removes some rst tags Input options list of option definitions see parse args below Returns tuple made of usage line and concatenation of detailed options help strings parse args options argv function usage at 0x2a8e576 Retrieve options from command line arguments argv according to a list of tuples options Input options a list of 5 elements tuples describing each option 15 element the option string for ex i If None option is only used for making the doc string 2nd element number of arguments of the option 3rd element True if option is mandatory 4th element argument name s 5th element description string argv the list of command line arguments Arguments starting with arte considered options and checked against options usage the usage function to call myoptions usage by default Returns list of option strings arg value list of non options arguments prepare doc options before
39. programs see below Multi View Stereo Documentation Release 1 1 2 Licenses the components of this software that we developped are under the GPL licence This software also includes third parties programs They are all under GPL or at least open source Refer to the license information for each of them The GPL v3 http www gnu org copyleft gpl html is an Open Source license that gives you the right to use copy and modify the code freely If you distribute your software based on our software you are obliged to distribute the modifications you made and you are furthermore obliged to distribute the source code of your own software under the GPL As a modified version of do intersect from include CGAL Triangle 3 Segment 3 do intersect his included in the triangulation part the CGAL licenses are included in the distribution see CGAL LICENSES 1 3 Installation On a linux system extract the source from the tar file tar zxf inria mvs v1 3 svnjj mm yyyy src tgz enter inria mvs if BLAS LAPACK or are not in standard locations or if you have installed CGAL 4 1 create a file local config cmake use local config cmake example as example create a build directory for example Linux enter this directory and run cmake make make install e everything should be installed in Linux install bin 1lib doc tools 1 4 Quick start You must create a working directory and provi
40. re extraction on images Options i is mandatory If pre process is given the images will first be undistorted A file orig list txt containing the absolute images paths is created the working directory so that option i will be ignored in other steps Images are copied eventually modified options pre process or shrink to the working directory with names of the form num jpg where num is a number written on 8 digits startint at zero Features are written to files with same basename and extension key gz maxsize s feature extraction will be done on reduced images max dimension shrinked to 5 1000 to 1500 should be a good value for s On large images feature extraction will produce too many points and take a too long time shrink s shrink images before starting the process will be applied to these modified images Will probably not give results as good as maxsize but may be useful for quick tests ccdwidth w supply a default ccdwidth for images without camera info cv options use program cv sift siftfeat for feature extraction options is either std or def or a space separated list of siftfeat arguments see bin cv sift siftfeat h def d s 1 6 c 0 r 3 std no options use built in values e yl options use program vlfeat sift options is either std or def or a space separated list of arguments see bin vlfeat sift h def first
41. s given by the cluster numbers So s 1 n 3is equivalent to the cluster file WN rR 1 21 The script first calls calctransform_ to compute all the needed transformation matrices and then calls convply to apply them The script skips computation of existing result files matrices and ply Use f to force overwriting of files 11 Multi View Stereo Documentation Release 1 2 2 cat ply cat ply patch o result ply file Concatenate ply files and write to result ply 2 3 patch also cat patch files to result patch merge bundler merge bundler v n d basename f o result dir s 151 nb nb sets Converts bundler results of different clusters to the coordinate system of one set and merges all data in a result directory Directories must contain pmvs newbundle rd out pmvs txt pmvs visualize pmvs list rd txt They are named basename xx where is a 2 digits number that determines their order 2 4 v verbose n dry run just print the commands d basename of working directories names will be basename nn s num of Ist set gt 1 default 1 nb number of sets default 2 0 merge results in result dir cl order of clusters is given in file clusters basename ignore s and nb f force to overwrite files check bundle check bundle zmin file draw ml wm file coefs pcoefs p dimx dimy bundler file zmin writes in fil
42. s2cluster 1 orig list txt o test g test c 2 16 Chapter 2 Tools DEALING WITH LARGE IMAGE SETS Execution time can increase rapidly as the number of images grows In particular step 2 feature matching is in O N3 For example on a host with 48Gb of memory and 24 cpus at 2 6Mhz the main elapsed times for a set of 90 1200x900 images about 2000 keypoints image are tep tep tep extractFeatures took 11 719s matchKeys took 49 144s makeOptions took 0 001s tep tep tep xecBundler took 425 344s bundle2PMVS took 2 065s execCmvs took 1 058s wn xecGenOptions took 0 0085 execPmvs took 104 782s 3 1 Simple optimisations keep the number of key points reasonable use option maxsize About 3000 key points seems to be enough if you have gt 2 4 try ocv sift it seems to make features extraction and key matching faster try pre process pba to speedup if images are mostly ordered use match to speedup step 2 for example match 8 Use check matches see doc to check the result Sbindir tool check matches grp Sworkdir matches init txt This will display list of images in each matching graph The first line lists images without match Normally there should be only 2 lines the first one empty and the second one containing all images But more than 2 lines wi
43. sequential version of delaunay There is also a program delaunayb which gets it s data from the bundler result 2nd argument should be pmvs bundle rd out 5 2 1 Arguments delaunay cam points points basename D debug level outfile a min coef max Make a delaunay triangulation with PMVS points and camera positions 29 Multi View Stereo Documentation Release 1 and compute intersections of tetrahedrons with rays issued from camera points points ply file of camera positions with color attribute generated by tool drawcameras py points basename basename for ply and patch files D debug level level 10 for display level 10 for interactivity 0 result file default output cgal add a point barycenter to large tretrahedrons i e with an edge gt coef min average edge length and coef max average edge length option D is only for debug purpose and small points sets 5 2 2 Detailed description input data input data comes from 3 files the ply file of the camera positions and normals This file is made by drawcameras the ply file of PMVS2 points with normals and colors for example pmvs models option 0000 ply the patch file made by PMVS2 and giving visible points for each camera for example pmvs models option 0000 patch output data it is a binary file defined by option o which defaults to output cgal Conventionally its extension s
44. th one containing almost all images could be acceptable The quality of matches init txt has also an influence on bundler Another important solution is clustering input data 3 2 Manual clustering This method supposes that you can easily build groups of overlapping images Each group must have a few about 10 images of an other one to be able to compute the transformation matrices necessary to merge the resulting sets of 17 Multi View Stereo Documentation Release 1 3D points You must follow some naming conventions if you want to use the provided scripts Given a basename base and images lists named 1st 508 56 01 to 1st base nn you must create ditectories 5base 01 base nn and a file clusters base The cluster file has N lines of cluster numbers that describe the dependences between the clusters The reference cluster the reference coordinate system must be alone on a line For example suppose cluster 1 is the reference theline 3 2 1 means that there are common images between clusters 3 and 2 and between 2 and 1 To convert points of cluster 3 to the reference coordinate system we will apply the transformation from 3 to 2 and then from 2 to 1 Once all the clusters have been processed by mvs you can merge the results with merge ply Example bindir mvs i lst test 01 w test 01 bindir mvs i lst test 02 w test 02 bindir mvs i lst test 03 w test 03 cat lt lt EOF gt clusters test 1 21
45. tion or translation steps ensuring that matched points be visible in at leat 3 images Parts of uniform color or texture will not give enough good points Moving elements may mess up the reconstruction Avoid heterogeneous viewpoints several pictures should be taken at a similar distance Variable lighting conditions could make the matching harder If you have hight resolution pictures gt 2Mpixels you should do points detection on a reduced size see option maxsize below 1 6 Script mvs This script does all the job in 8 steps that can be executed separately 1 extract image features Various algorithms can be used for feature extraction such as Sift SURF Harris but Sift seems to give the best results 2 feature matching program p KeyMat chFu11 find feature points common to each pair of images 1 make option file for bundler run bundler compute cameras position and orientation prepare data for CMVS exec CMVS generate options for PMVS2 ON ta A W N run PMVS2 program 1 6 1 Arguments mys v n cpus nb cpus i input w workdir s steps range pre process samples list maxsize shrink ccdwidth def ccdwidth cv siftfeat options vl vlsift options opencv keytype match nbim ff pba bdlpair init bundler pair nocmvs maxnbim pmvs ssh hosts file csize minvis nb visible imgs 3D scene reconstruction from
46. ult matches init txt The script must be executed in the workdir 2 with match file and images e n image nums of a pair 0 prefix for resulting images def xm v print key pairs on stdout draw print matching points to match points txt put the 2 images side by side in xmatch png and join matching points do the same in ximatch png after removing outliers 2 10 calctransform calctransform d target dir src dir l imglistl imglist2 nc max nb wm output matrix wp output points v Uses files pmvs bundle rd out to compute the matrix to convert a PMVS model in src dir into the coordi nate system of target dir model d target dir src dir directories containing bundle bundle out for target and src models l imglist1 imglist2 files containing original lists of images They must have common images nc max nb use max nb common images def all common ones wm output matrix file for saving transform matrix wp output points write ply file of points used to compute transform verbose Example Sbindir tool calctransform d j 01 3 02 1 j 01 orig list txt j 02 orig list txt wm M j 0201 2 11 convply convply m matrixl matrixn i input ply out ply Successively apply the given transform matrices to convert a 3D PMVS2 model e m matrix1 matrixn transformation matrices to apply successively to move from coord system n to 1 e i input ply ply file to convert e

Download Pdf Manuals

image

Related Search

Related Contents

Manual B-Speech RX2(multilingual)  VILLA 85 M READY 85 M  Philips USB Flash Drive FM16FD75B  User manual  Fisher & Paykel OR120 User's Manual  取扱説明書はこちら  Craftsman 315.2121 Saw User Manual  

Copyright © All rights reserved.
Failed to retrieve file