├── .gitignore ├── AUTHORS ├── ChangeLog ├── LICENSE ├── Makefile ├── README ├── codereview.settings ├── contrib ├── blender │ ├── README │ ├── blender_libmv.diff │ └── create_patches.sh └── opencv │ └── undistort.cpp ├── cpplint ├── doc ├── Doxyfile ├── libmv.dox └── notes_on_klt.tex ├── extras └── calibration │ ├── calibration.pdf │ └── calibration.svg └── src ├── CMake ├── ConfigureBuild.cmake ├── Documentation.cmake ├── Doxyfile.cmake ├── Installation.cmake ├── LibmvVersion.cmake ├── Packaging.cmake ├── Testing.cmake ├── cmake_uninstall.cmake.in ├── modules │ ├── FindJPEG.cmake │ └── FindLibmv.cmake └── revision.h.in ├── CMakeLists.txt ├── libmv ├── CMakeLists.txt ├── base │ ├── CMakeLists.txt │ ├── id_generator.h │ ├── scoped_ptr.h │ ├── scoped_ptr_test.cc │ ├── vector.h │ ├── vector_test.cc │ └── vector_utils.h ├── camera │ ├── CMakeLists.txt │ ├── camera.cc │ ├── camera.h │ ├── lens_distortion.cc │ ├── lens_distortion.h │ ├── lens_distortion_test.cc │ ├── pinhole_camera.cc │ ├── pinhole_camera.h │ └── pinhole_camera_test.cc ├── correspondence │ ├── ArrayMatcher.h │ ├── ArrayMatcher_BruteForce.h │ ├── ArrayMatcher_Kdtree.h │ ├── ArrayMatcher_Kdtree_Flann.h │ ├── Array_Matcher_test.cc │ ├── CMakeLists.txt │ ├── bipartite_graph.h │ ├── bipartite_graph_new.h │ ├── bipartite_graph_new_test.cc │ ├── bipartite_graph_test.cc │ ├── export_matches_txt.cc │ ├── export_matches_txt.h │ ├── feature.cc │ ├── feature.h │ ├── feature_matching.cc │ ├── feature_matching.h │ ├── feature_matching_FLANN.cc │ ├── feature_matching_FLANN.h │ ├── feature_set.h │ ├── feature_set_test.cc │ ├── import_matches_txt.cc │ ├── import_matches_txt.h │ ├── kdtree.h │ ├── kdtree_test.cc │ ├── klt.cc │ ├── klt.h │ ├── klt_test.cc │ ├── klt_test │ │ └── Lenna.pgm │ ├── matches.cc │ ├── matches.h │ ├── matches_test.cc │ ├── nRobustViewMatching.cc │ ├── nRobustViewMatching.h │ ├── nViewMatchingInterface.h │ ├── planar_tracker.cc │ ├── planar_tracker.h │ ├── robust_tracker.cc │ ├── robust_tracker.h │ ├── tracker.cc │ └── tracker.h ├── descriptor │ ├── CMakeLists.txt │ ├── daisy_descriptor.cc │ ├── daisy_descriptor.h │ ├── daisy_descriptor_test.cc │ ├── descriptor.h │ ├── descriptor_factory.cc │ ├── descriptor_factory.h │ ├── dipole_descriptor.cc │ ├── dipole_descriptor.h │ ├── simpliest_descriptor.cc │ ├── simpliest_descriptor.h │ ├── surf_descriptor.cc │ ├── surf_descriptor.h │ └── vector_descriptor.h ├── detector │ ├── CMakeLists.txt │ ├── detector.h │ ├── detector_factory.cc │ ├── detector_factory.h │ ├── fast_detector.cc │ ├── fast_detector.h │ ├── fast_detector_limited.cc │ ├── fast_detector_test.cc │ ├── mser_detector.cc │ ├── mser_detector.h │ ├── orientation_detector.h │ ├── orientation_detector_test.cc │ ├── star_detector.cc │ ├── star_detector.h │ ├── surf_detector.cc │ └── surf_detector.h ├── image │ ├── CMakeLists.txt │ ├── array_nd.cc │ ├── array_nd.h │ ├── array_nd_test.cc │ ├── blob_response.h │ ├── blob_response_test.cc │ ├── cache.h │ ├── cached_image_sequence.h │ ├── convolve.cc │ ├── convolve.h │ ├── convolve_test.cc │ ├── derivative.h │ ├── derivative_test.cc │ ├── filtered_sequence.cc │ ├── filtered_sequence.h │ ├── filtered_sequence_test.cc │ ├── image.cc │ ├── image.h │ ├── image_converter.h │ ├── image_converter_test.cc │ ├── image_drawing.h │ ├── image_drawing_test.cc │ ├── image_io.cc │ ├── image_io.h │ ├── image_io_test.cc │ ├── image_pyramid.cc │ ├── image_pyramid.h │ ├── image_pyramid_test.cc │ ├── image_sequence.cc │ ├── image_sequence.h │ ├── image_sequence_filters.cc │ ├── image_sequence_filters.h │ ├── image_sequence_filters_test.cc │ ├── image_sequence_io.cc │ ├── image_sequence_io.h │ ├── image_sequence_io_test.cc │ ├── image_test.cc │ ├── image_test │ │ ├── two_pixels.jpg │ │ ├── two_pixels.pgm │ │ ├── two_pixels.png │ │ ├── two_pixels.ppm │ │ └── two_pixels_gray.pgm │ ├── image_transform_linear.cc │ ├── image_transform_linear.h │ ├── image_transform_linear_test.cc │ ├── integral_image.h │ ├── integral_image_test.cc │ ├── lru_cache.h │ ├── lru_cache_test.cc │ ├── mock_image_sequence.h │ ├── non_maximal_suppression.h │ ├── non_maximal_suppression_test.cc │ ├── pyramid_sequence.cc │ ├── pyramid_sequence.h │ ├── pyramid_sequence_test.cc │ ├── sample.h │ ├── sample_test.cc │ ├── surf.h │ ├── surf_descriptor.h │ ├── surf_test.cc │ ├── tuple.h │ └── tuple_test.cc ├── logging │ └── logging.h ├── multiview │ ├── CMakeLists.txt │ ├── affine.cc │ ├── affine.h │ ├── affine_kernel.cc │ ├── affine_kernel.h │ ├── affine_kernel_test.cc │ ├── affine_parameterization.h │ ├── affine_parameterization_test.cc │ ├── affine_test.cc │ ├── autocalibration.cc │ ├── autocalibration.h │ ├── autocalibration_test.cc │ ├── bundle.cc │ ├── bundle.h │ ├── bundle_test.cc │ ├── conditioning.cc │ ├── conditioning.h │ ├── essential_kernel.cc │ ├── essential_kernel.h │ ├── essential_kernel_test.cc │ ├── euclidean.cc │ ├── euclidean.h │ ├── euclidean_kernel.cc │ ├── euclidean_kernel.h │ ├── euclidean_kernel_test.cc │ ├── euclidean_parameterization.h │ ├── euclidean_parameterization_test.cc │ ├── euclidean_resection.cc │ ├── euclidean_resection.h │ ├── euclidean_resection_kernel.h │ ├── euclidean_resection_kernel_test.cc │ ├── euclidean_resection_test.cc │ ├── euclidean_test.cc │ ├── five_point.cc │ ├── five_point.h │ ├── five_point_internal.h │ ├── five_point_kernel.h │ ├── five_point_kernel_test.cc │ ├── five_point_test.cc │ ├── focal_from_fundamental.cc │ ├── focal_from_fundamental.h │ ├── focal_from_fundamental_test.cc │ ├── fundamental.cc │ ├── fundamental.h │ ├── fundamental_7point_coeffs.py │ ├── fundamental_kernel.cc │ ├── fundamental_kernel.h │ ├── fundamental_kernel_test.cc │ ├── fundamental_parameterization.h │ ├── fundamental_parameterization_test.cc │ ├── fundamental_test.cc │ ├── fundamental_test_utils.h │ ├── homography.cc │ ├── homography.h │ ├── homography_error.h │ ├── homography_error_test.cc │ ├── homography_kernel.cc │ ├── homography_kernel.h │ ├── homography_kernel_test.cc │ ├── homography_parameterization.h │ ├── homography_parameterization_test.cc │ ├── homography_test.cc │ ├── nviewtriangulation.h │ ├── nviewtriangulation_test.cc │ ├── panography.h │ ├── panography_coeffs.py │ ├── panography_kernel.cc │ ├── panography_kernel.h │ ├── panography_test.cc │ ├── projection.cc │ ├── projection.h │ ├── projection_test.cc │ ├── random_sample.h │ ├── resection.h │ ├── resection_kernel.h │ ├── resection_kernel_test.cc │ ├── resection_test.cc │ ├── robust_affine.cc │ ├── robust_affine.h │ ├── robust_affine_test.cc │ ├── robust_estimation.cc │ ├── robust_estimation.h │ ├── robust_estimation_test.cc │ ├── robust_euclidean.cc │ ├── robust_euclidean.h │ ├── robust_euclidean_resection.cc │ ├── robust_euclidean_resection.h │ ├── robust_euclidean_resection_test.cc │ ├── robust_euclidean_test.cc │ ├── robust_fundamental.cc │ ├── robust_fundamental.h │ ├── robust_fundamental_test.cc │ ├── robust_homography.cc │ ├── robust_homography.h │ ├── robust_homography_test.cc │ ├── robust_resection.cc │ ├── robust_resection.h │ ├── robust_resection_test.cc │ ├── robust_similarity.cc │ ├── robust_similarity.h │ ├── robust_similarity_test.cc │ ├── rotation_parameterization.h │ ├── rotation_parameterization_test.cc │ ├── similarity.cc │ ├── similarity.h │ ├── similarity_kernel.cc │ ├── similarity_kernel.h │ ├── similarity_kernel_test.cc │ ├── similarity_parameterization.h │ ├── similarity_parameterization_test.cc │ ├── similarity_test.cc │ ├── sixpointnview.cc │ ├── sixpointnview.h │ ├── sixpointnview_test.cc │ ├── structure.cc │ ├── structure.h │ ├── test_data_sets.cc │ ├── test_data_sets.h │ ├── triangulation.cc │ ├── triangulation.h │ ├── triangulation_test.cc │ ├── two_view_kernel.h │ ├── twoviewtriangulation.cc │ ├── twoviewtriangulation.h │ └── twoviewtriangulation_test.cc ├── numeric │ ├── CMakeLists.txt │ ├── dogleg.h │ ├── dogleg_test.cc │ ├── function_derivative.h │ ├── function_derivative_test.cc │ ├── levenberg_marquardt.h │ ├── levenberg_marquardt_test.cc │ ├── numeric.cc │ ├── numeric.h │ ├── numeric_test.cc │ ├── poly.cc │ ├── poly.h │ ├── poly_test.cc │ ├── tinyvector.cc │ └── tinyvector_test.cc ├── optimize │ ├── CMakeLists.txt │ ├── jet.h │ └── jet_test.cc ├── reconstruction │ ├── CMakeLists.txt │ ├── euclidean_reconstruction.cc │ ├── euclidean_reconstruction.h │ ├── euclidean_reconstruction_test.cc │ ├── export_blender.cc │ ├── export_blender.h │ ├── export_ply.cc │ ├── export_ply.h │ ├── image_selection.cc │ ├── image_selection.h │ ├── keyframe_selection.cc │ ├── keyframe_selection.h │ ├── mapping.cc │ ├── mapping.h │ ├── optimization.cc │ ├── optimization.h │ ├── projective_reconstruction.cc │ ├── projective_reconstruction.h │ ├── reconstruction.cc │ ├── reconstruction.h │ ├── reconstruction_test.cc │ ├── tools.cc │ └── tools.h ├── scene_graph │ ├── CMakeLists.txt │ ├── scene_graph.cc │ ├── scene_graph.h │ ├── scene_graph_simple.h │ ├── scene_graph_simple_test.cc │ └── scene_graph_test.cc ├── simple_pipeline │ ├── CMakeLists.txt │ ├── autocalibrate.cc │ ├── autocalibrate.h │ ├── bundle.cc │ ├── bundle.h │ ├── camera_intrinsics.cc │ ├── camera_intrinsics.h │ ├── camera_intrinsics_test.cc │ ├── initialize_reconstruction.cc │ ├── initialize_reconstruction.h │ ├── intersect.cc │ ├── intersect.h │ ├── pipeline.cc │ ├── pipeline.h │ ├── reconstruction.cc │ ├── reconstruction.h │ ├── resect.cc │ ├── resect.h │ ├── tracks.cc │ ├── tracks.h │ ├── uncalibrated_reconstructor.cc │ └── uncalibrated_reconstructor.h ├── tools │ ├── CMakeLists.txt │ ├── ExifReader.cc │ ├── ExifReader.h │ └── tool.h └── tracking │ ├── CMakeLists.txt │ ├── klt_region_tracker.cc │ ├── klt_region_tracker.h │ ├── klt_region_tracker_test.cc │ ├── pyramid_region_tracker.cc │ ├── pyramid_region_tracker.h │ ├── pyramid_region_tracker_test.cc │ ├── region_tracker.h │ ├── retrack_region_tracker.cc │ ├── retrack_region_tracker.h │ ├── trklt_region_tracker.cc │ └── trklt_region_tracker.h ├── testing ├── CMakeLists.txt ├── testing.h └── testing_main.cc ├── third_party ├── CMakeLists.txt ├── MserDetector │ ├── README.libmv │ ├── cvMserDetector.h │ └── licence.txt ├── OpenExif │ ├── CMakeLists.txt │ ├── README.libmv │ ├── license.txt │ └── src │ │ ├── CMakeLists.txt │ │ ├── ExifApp0Seg.cpp │ │ ├── ExifApp0Seg.h │ │ ├── ExifAppSegManager.cpp │ │ ├── ExifAppSegManager.h │ │ ├── ExifAppSegment.cpp │ │ ├── ExifAppSegment.h │ │ ├── ExifComMarker.h │ │ ├── ExifComp.h │ │ ├── ExifComp.h.in │ │ ├── ExifConf.h │ │ ├── ExifDefs.h │ │ ├── ExifErrorCodes.h │ │ ├── ExifFileIO.cpp │ │ ├── ExifFileIO.h │ │ ├── ExifHuffmanTable.cpp │ │ ├── ExifHuffmanTable.h │ │ ├── ExifIFD.cpp │ │ ├── ExifIFD.h │ │ ├── ExifIJGWrapper.cpp │ │ ├── ExifIJGWrapper.h │ │ ├── ExifIJGWriteFrame.cpp │ │ ├── ExifIJGWriteFrame.h │ │ ├── ExifIO.cpp │ │ ├── ExifIO.h │ │ ├── ExifImageDescUtils.cpp │ │ ├── ExifImageDescUtils.h │ │ ├── ExifImageFile.cpp │ │ ├── ExifImageFile.h │ │ ├── ExifImageFileIO.h │ │ ├── ExifImageFileRead.cpp │ │ ├── ExifImageFileWrite.cpp │ │ ├── ExifInternetIO.cpp │ │ ├── ExifInternetIO.h │ │ ├── ExifJpegDataDst.cpp │ │ ├── ExifJpegDataSrc.cpp │ │ ├── ExifJpegExtn.h │ │ ├── ExifJpegImage.cpp │ │ ├── ExifJpegImage.h │ │ ├── ExifJpegTables.h │ │ ├── ExifMemoryIO.cpp │ │ ├── ExifMemoryIO.h │ │ ├── ExifMisc.cpp │ │ ├── ExifMisc.h │ │ ├── ExifOpenFile.cpp │ │ ├── ExifOpenFile.h │ │ ├── ExifRawAppSeg.cpp │ │ ├── ExifRawAppSeg.h │ │ ├── ExifStripImage.cpp │ │ ├── ExifStripImage.h │ │ ├── ExifTagEntry.h │ │ ├── ExifTags.h │ │ ├── ExifTiffAppSeg.cpp │ │ ├── ExifTiffAppSeg.h │ │ ├── ExifTypeDefs.h │ │ └── OpenExifJpeg │ │ ├── OpenExifJpegLib.h │ │ ├── OpenExif_jcapimin.cpp │ │ ├── OpenExif_jcapistd.cpp │ │ ├── OpenExif_jccoefct.cpp │ │ ├── OpenExif_jccolor.cpp │ │ ├── OpenExif_jcdctmgr.cpp │ │ ├── OpenExif_jchuff.cpp │ │ ├── OpenExif_jchuff.h │ │ ├── OpenExif_jcinit.cpp │ │ ├── OpenExif_jcmainct.cpp │ │ ├── OpenExif_jcmarker.cpp │ │ ├── OpenExif_jcmaster.cpp │ │ ├── OpenExif_jcomapi.cpp │ │ ├── OpenExif_jconfig.h │ │ ├── OpenExif_jcparam.cpp │ │ ├── OpenExif_jcphuff.cpp │ │ ├── OpenExif_jcprepct.cpp │ │ ├── OpenExif_jcsample.cpp │ │ ├── OpenExif_jdapimin.cpp │ │ ├── OpenExif_jdapistd.cpp │ │ ├── OpenExif_jdatadst.cpp │ │ ├── OpenExif_jdatasrc.cpp │ │ ├── OpenExif_jdcoefct.cpp │ │ ├── OpenExif_jdcolor.cpp │ │ ├── OpenExif_jdct.h │ │ ├── OpenExif_jddctmgr.cpp │ │ ├── OpenExif_jdhuff.cpp │ │ ├── OpenExif_jdhuff.h │ │ ├── OpenExif_jdinput.cpp │ │ ├── OpenExif_jdmainct.cpp │ │ ├── OpenExif_jdmarker.cpp │ │ ├── OpenExif_jdmaster.cpp │ │ ├── OpenExif_jdmerge.cpp │ │ ├── OpenExif_jdphuff.cpp │ │ ├── OpenExif_jdpostct.cpp │ │ ├── OpenExif_jdsample.cpp │ │ ├── OpenExif_jerror.cpp │ │ ├── OpenExif_jerror.h │ │ ├── OpenExif_jfdctflt.cpp │ │ ├── OpenExif_jfdctfst.cpp │ │ ├── OpenExif_jfdctint.cpp │ │ ├── OpenExif_jidctflt.cpp │ │ ├── OpenExif_jidctfst.cpp │ │ ├── OpenExif_jidctint.cpp │ │ ├── OpenExif_jidctred.cpp │ │ ├── OpenExif_jinclude.h │ │ ├── OpenExif_jmemansi.cpp │ │ ├── OpenExif_jmemmgr.cpp │ │ ├── OpenExif_jmemsys.h │ │ ├── OpenExif_jmorecfg.h │ │ ├── OpenExif_jpegint.h │ │ ├── OpenExif_jquant1.cpp │ │ ├── OpenExif_jquant2.cpp │ │ ├── OpenExif_jutils.cpp │ │ ├── OpenExif_jversion.h │ │ └── README ├── StarDetector │ ├── README.libmv │ ├── cvStarDetector.h │ └── licence.txt ├── colamd │ ├── CMakeLists.txt │ ├── Doc │ │ ├── ChangeLog │ │ └── lesser.txt │ ├── Include │ │ └── colamd.h │ ├── README.libmv │ ├── README.txt │ └── Source │ │ ├── colamd.c │ │ └── colamd_global.c ├── daisy │ ├── CMakeLists.txt │ ├── README.libmv │ ├── include │ │ ├── daisy │ │ │ └── daisy.h │ │ └── kutility │ │ │ ├── convolution.h │ │ │ ├── convolution_default.h │ │ │ ├── convolution_opencv.h │ │ │ ├── corecv.h │ │ │ ├── fileio.h │ │ │ ├── fileio.tcc │ │ │ ├── general.h │ │ │ ├── image.h │ │ │ ├── image_io.h │ │ │ ├── image_io_bmp.h │ │ │ ├── image_io_jpeg.h │ │ │ ├── image_io_png.h │ │ │ ├── image_io_pnm.h │ │ │ ├── image_manipulation.h │ │ │ ├── interaction.h │ │ │ ├── kutility.def │ │ │ ├── math.h │ │ │ └── progress_bar.h │ ├── licence.txt │ ├── src │ │ ├── corecv.cpp │ │ ├── daisy.cpp │ │ ├── general.cpp │ │ ├── image_io_bmp.cpp │ │ ├── image_io_jpeg.cpp │ │ ├── image_io_png.cpp │ │ ├── image_io_pnm.cpp │ │ ├── image_manipulation.cpp │ │ ├── interaction.cpp │ │ ├── main.cpp │ │ └── progress_bar.cpp │ └── usage ├── eigen │ ├── COPYING.GPL │ ├── COPYING.LGPL │ ├── Eigen │ │ ├── Array │ │ ├── CMakeLists.txt │ │ ├── Cholesky │ │ ├── Core │ │ ├── Dense │ │ ├── Eigen │ │ ├── Eigen2Support │ │ ├── Eigenvalues │ │ ├── Geometry │ │ ├── Householder │ │ ├── Jacobi │ │ ├── LU │ │ ├── LeastSquares │ │ ├── QR │ │ ├── QtAlignedMalloc │ │ ├── SVD │ │ ├── Sparse │ │ ├── StdDeque │ │ ├── StdList │ │ ├── StdVector │ │ └── src │ │ │ ├── CMakeLists.txt │ │ │ ├── Cholesky │ │ │ ├── CMakeLists.txt │ │ │ ├── LDLT.h │ │ │ └── LLT.h │ │ │ ├── Core │ │ │ ├── Array.h │ │ │ ├── ArrayBase.h │ │ │ ├── ArrayWrapper.h │ │ │ ├── Assign.h │ │ │ ├── BandMatrix.h │ │ │ ├── Block.h │ │ │ ├── BooleanRedux.h │ │ │ ├── CMakeLists.txt │ │ │ ├── CommaInitializer.h │ │ │ ├── CwiseBinaryOp.h │ │ │ ├── CwiseNullaryOp.h │ │ │ ├── CwiseUnaryOp.h │ │ │ ├── CwiseUnaryView.h │ │ │ ├── DenseBase.h │ │ │ ├── DenseCoeffsBase.h │ │ │ ├── DenseStorage.h │ │ │ ├── Diagonal.h │ │ │ ├── DiagonalMatrix.h │ │ │ ├── DiagonalProduct.h │ │ │ ├── Dot.h │ │ │ ├── EigenBase.h │ │ │ ├── Flagged.h │ │ │ ├── ForceAlignedAccess.h │ │ │ ├── Functors.h │ │ │ ├── Fuzzy.h │ │ │ ├── GenericPacketMath.h │ │ │ ├── GlobalFunctions.h │ │ │ ├── IO.h │ │ │ ├── Map.h │ │ │ ├── MapBase.h │ │ │ ├── MathFunctions.h │ │ │ ├── Matrix.h │ │ │ ├── MatrixBase.h │ │ │ ├── NestByValue.h │ │ │ ├── NoAlias.h │ │ │ ├── NumTraits.h │ │ │ ├── PermutationMatrix.h │ │ │ ├── PlainObjectBase.h │ │ │ ├── Product.h │ │ │ ├── ProductBase.h │ │ │ ├── Random.h │ │ │ ├── Redux.h │ │ │ ├── Replicate.h │ │ │ ├── ReturnByValue.h │ │ │ ├── Reverse.h │ │ │ ├── Select.h │ │ │ ├── SelfAdjointView.h │ │ │ ├── SelfCwiseBinaryOp.h │ │ │ ├── SolveTriangular.h │ │ │ ├── StableNorm.h │ │ │ ├── Stride.h │ │ │ ├── Swap.h │ │ │ ├── Transpose.h │ │ │ ├── Transpositions.h │ │ │ ├── TriangularMatrix.h │ │ │ ├── VectorBlock.h │ │ │ ├── VectorwiseOp.h │ │ │ ├── Visitor.h │ │ │ ├── arch │ │ │ │ ├── AltiVec │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Complex.h │ │ │ │ │ └── PacketMath.h │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Default │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ └── Settings.h │ │ │ │ ├── NEON │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Complex.h │ │ │ │ │ └── PacketMath.h │ │ │ │ └── SSE │ │ │ │ │ ├── CMakeLists.txt │ │ │ │ │ ├── Complex.h │ │ │ │ │ ├── MathFunctions.h │ │ │ │ │ └── PacketMath.h │ │ │ ├── products │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── CoeffBasedProduct.h │ │ │ │ ├── GeneralBlockPanelKernel.h │ │ │ │ ├── GeneralMatrixMatrix.h │ │ │ │ ├── GeneralMatrixMatrixTriangular.h │ │ │ │ ├── GeneralMatrixVector.h │ │ │ │ ├── Parallelizer.h │ │ │ │ ├── SelfadjointMatrixMatrix.h │ │ │ │ ├── SelfadjointMatrixVector.h │ │ │ │ ├── SelfadjointProduct.h │ │ │ │ ├── SelfadjointRank2Update.h │ │ │ │ ├── TriangularMatrixMatrix.h │ │ │ │ ├── TriangularMatrixVector.h │ │ │ │ ├── TriangularSolverMatrix.h │ │ │ │ └── TriangularSolverVector.h │ │ │ └── util │ │ │ │ ├── BlasUtil.h │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Constants.h │ │ │ │ ├── DisableStupidWarnings.h │ │ │ │ ├── ForwardDeclarations.h │ │ │ │ ├── Macros.h │ │ │ │ ├── Memory.h │ │ │ │ ├── Meta.h │ │ │ │ ├── ReenableStupidWarnings.h │ │ │ │ ├── StaticAssert.h │ │ │ │ └── XprHelper.h │ │ │ ├── Eigen2Support │ │ │ ├── Block.h │ │ │ ├── CMakeLists.txt │ │ │ ├── Cwise.h │ │ │ ├── CwiseOperators.h │ │ │ ├── Geometry │ │ │ │ ├── AlignedBox.h │ │ │ │ ├── All.h │ │ │ │ ├── AngleAxis.h │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── Hyperplane.h │ │ │ │ ├── ParametrizedLine.h │ │ │ │ ├── Quaternion.h │ │ │ │ ├── Rotation2D.h │ │ │ │ ├── RotationBase.h │ │ │ │ ├── Scaling.h │ │ │ │ ├── Transform.h │ │ │ │ └── Translation.h │ │ │ ├── LU.h │ │ │ ├── Lazy.h │ │ │ ├── LeastSquares.h │ │ │ ├── Macros.h │ │ │ ├── MathFunctions.h │ │ │ ├── Memory.h │ │ │ ├── Meta.h │ │ │ ├── Minor.h │ │ │ ├── QR.h │ │ │ ├── SVD.h │ │ │ ├── TriangularSolver.h │ │ │ └── VectorBlock.h │ │ │ ├── Eigenvalues │ │ │ ├── CMakeLists.txt │ │ │ ├── ComplexEigenSolver.h │ │ │ ├── ComplexSchur.h │ │ │ ├── EigenSolver.h │ │ │ ├── EigenvaluesCommon.h │ │ │ ├── GeneralizedSelfAdjointEigenSolver.h │ │ │ ├── HessenbergDecomposition.h │ │ │ ├── MatrixBaseEigenvalues.h │ │ │ ├── RealSchur.h │ │ │ ├── SelfAdjointEigenSolver.h │ │ │ └── Tridiagonalization.h │ │ │ ├── Geometry │ │ │ ├── AlignedBox.h │ │ │ ├── AngleAxis.h │ │ │ ├── CMakeLists.txt │ │ │ ├── EulerAngles.h │ │ │ ├── Homogeneous.h │ │ │ ├── Hyperplane.h │ │ │ ├── OrthoMethods.h │ │ │ ├── ParametrizedLine.h │ │ │ ├── Quaternion.h │ │ │ ├── Rotation2D.h │ │ │ ├── RotationBase.h │ │ │ ├── Scaling.h │ │ │ ├── Transform.h │ │ │ ├── Translation.h │ │ │ ├── Umeyama.h │ │ │ └── arch │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── Geometry_SSE.h │ │ │ ├── Householder │ │ │ ├── BlockHouseholder.h │ │ │ ├── CMakeLists.txt │ │ │ ├── Householder.h │ │ │ └── HouseholderSequence.h │ │ │ ├── Jacobi │ │ │ ├── CMakeLists.txt │ │ │ └── Jacobi.h │ │ │ ├── LU │ │ │ ├── CMakeLists.txt │ │ │ ├── Determinant.h │ │ │ ├── FullPivLU.h │ │ │ ├── Inverse.h │ │ │ ├── PartialPivLU.h │ │ │ └── arch │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── Inverse_SSE.h │ │ │ ├── QR │ │ │ ├── CMakeLists.txt │ │ │ ├── ColPivHouseholderQR.h │ │ │ ├── FullPivHouseholderQR.h │ │ │ └── HouseholderQR.h │ │ │ ├── SVD │ │ │ ├── CMakeLists.txt │ │ │ ├── JacobiSVD.h │ │ │ └── UpperBidiagonalization.h │ │ │ ├── Sparse │ │ │ ├── AmbiVector.h │ │ │ ├── CMakeLists.txt │ │ │ ├── CompressedStorage.h │ │ │ ├── CoreIterators.h │ │ │ ├── DynamicSparseMatrix.h │ │ │ ├── MappedSparseMatrix.h │ │ │ ├── SparseAssign.h │ │ │ ├── SparseBlock.h │ │ │ ├── SparseCwiseBinaryOp.h │ │ │ ├── SparseCwiseUnaryOp.h │ │ │ ├── SparseDenseProduct.h │ │ │ ├── SparseDiagonalProduct.h │ │ │ ├── SparseDot.h │ │ │ ├── SparseFuzzy.h │ │ │ ├── SparseMatrix.h │ │ │ ├── SparseMatrixBase.h │ │ │ ├── SparseProduct.h │ │ │ ├── SparseRedux.h │ │ │ ├── SparseSelfAdjointView.h │ │ │ ├── SparseSparseProduct.h │ │ │ ├── SparseTranspose.h │ │ │ ├── SparseTriangularView.h │ │ │ ├── SparseUtil.h │ │ │ ├── SparseVector.h │ │ │ ├── SparseView.h │ │ │ └── TriangularSolver.h │ │ │ ├── StlSupport │ │ │ ├── CMakeLists.txt │ │ │ ├── StdDeque.h │ │ │ ├── StdList.h │ │ │ ├── StdVector.h │ │ │ └── details.h │ │ │ ├── misc │ │ │ ├── CMakeLists.txt │ │ │ ├── Image.h │ │ │ ├── Kernel.h │ │ │ └── Solve.h │ │ │ └── plugins │ │ │ ├── ArrayCwiseBinaryOps.h │ │ │ ├── ArrayCwiseUnaryOps.h │ │ │ ├── BlockMethods.h │ │ │ ├── CMakeLists.txt │ │ │ ├── CommonCwiseBinaryOps.h │ │ │ ├── CommonCwiseUnaryOps.h │ │ │ ├── MatrixCwiseBinaryOps.h │ │ │ └── MatrixCwiseUnaryOps.h │ ├── README.libmv │ └── unsupported │ │ ├── Eigen │ │ ├── AdolcForward │ │ ├── AlignedVector3 │ │ ├── AutoDiff │ │ ├── BVH │ │ ├── CholmodSupport │ │ ├── FFT │ │ ├── IterativeSolvers │ │ ├── MPRealSupport │ │ ├── MatrixFunctions │ │ ├── MoreVectorization │ │ ├── NonLinearOptimization │ │ ├── NumericalDiff │ │ ├── OpenGLSupport │ │ ├── Polynomials │ │ ├── Skyline │ │ ├── SparseExtra │ │ ├── SuperLUSupport │ │ ├── UmfPackSupport │ │ └── src │ │ │ ├── AutoDiff │ │ │ ├── AutoDiffJacobian.h │ │ │ ├── AutoDiffScalar.h │ │ │ └── AutoDiffVector.h │ │ │ ├── BVH │ │ │ ├── BVAlgorithms.h │ │ │ └── KdBVH.h │ │ │ ├── FFT │ │ │ ├── ei_fftw_impl.h │ │ │ └── ei_kissfft_impl.h │ │ │ ├── IterativeSolvers │ │ │ ├── ConstrainedConjGrad.h │ │ │ └── IterationController.h │ │ │ ├── MatrixFunctions │ │ │ ├── MatrixExponential.h │ │ │ ├── MatrixFunction.h │ │ │ ├── MatrixFunctionAtomic.h │ │ │ └── StemFunction.h │ │ │ ├── MoreVectorization │ │ │ └── MathFunctions.h │ │ │ ├── NonLinearOptimization │ │ │ ├── HybridNonLinearSolver.h │ │ │ ├── LevenbergMarquardt.h │ │ │ ├── chkder.h │ │ │ ├── covar.h │ │ │ ├── dogleg.h │ │ │ ├── fdjac1.h │ │ │ ├── lmpar.h │ │ │ ├── qrsolv.h │ │ │ ├── r1mpyq.h │ │ │ ├── r1updt.h │ │ │ └── rwupdt.h │ │ │ ├── NumericalDiff │ │ │ └── NumericalDiff.h │ │ │ ├── Polynomials │ │ │ ├── Companion.h │ │ │ ├── PolynomialSolver.h │ │ │ └── PolynomialUtils.h │ │ │ ├── Skyline │ │ │ ├── SkylineInplaceLU.h │ │ │ ├── SkylineMatrix.h │ │ │ ├── SkylineMatrixBase.h │ │ │ ├── SkylineProduct.h │ │ │ ├── SkylineStorage.h │ │ │ └── SkylineUtil.h │ │ │ └── SparseExtra │ │ │ ├── Amd.h │ │ │ ├── CholmodSupport.h │ │ │ ├── CholmodSupportLegacy.h │ │ │ ├── RandomSetter.h │ │ │ ├── SimplicialCholesky.h │ │ │ ├── Solve.h │ │ │ ├── SparseLDLTLegacy.h │ │ │ ├── SparseLLT.h │ │ │ ├── SparseLU.h │ │ │ ├── SuperLUSupport.h │ │ │ └── UmfPackSupport.h │ │ └── README.txt ├── fast │ ├── CMakeLists.txt │ ├── LICENSE │ ├── README │ ├── README.libmv │ ├── fast.c │ ├── fast.h │ ├── fast_10.c │ ├── fast_11.c │ ├── fast_12.c │ ├── fast_9.c │ └── nonmax.c ├── flann │ ├── CMakeLists.txt │ ├── README │ ├── README.libmv │ ├── license.txt │ └── src │ │ ├── CMakeLists.txt │ │ └── cpp │ │ ├── CMakeLists.txt │ │ ├── algorithms │ │ ├── CompositeTree.h │ │ ├── KDTree.h │ │ ├── KMeansTree.h │ │ ├── LinearSearch.h │ │ ├── NNIndex.cpp │ │ ├── NNIndex.h │ │ ├── dist.cpp │ │ └── dist.h │ │ ├── constants.h │ │ ├── flann.cpp │ │ ├── flann.h │ │ ├── nn │ │ ├── Autotune.h │ │ ├── Testing.cpp │ │ ├── Testing.h │ │ ├── ground_truth.h │ │ └── simplex_downhill.h │ │ └── util │ │ ├── Allocator.h │ │ ├── Dataset.h │ │ ├── Heap.h │ │ ├── Logger.cpp │ │ ├── Logger.h │ │ ├── Random.cpp │ │ ├── Random.h │ │ ├── ResultSet.h │ │ ├── Timer.h │ │ ├── Variant.h │ │ └── common.h ├── gflags │ ├── CMakeLists.txt │ ├── README.libmv │ ├── config.h │ ├── gflags.cc │ ├── gflags.h │ ├── gflags_completions.cc │ ├── gflags_completions.h │ ├── gflags_reporting.cc │ └── mutex.h ├── glog │ ├── AUTHORS │ ├── CMakeLists.txt │ ├── COPYING │ ├── ChangeLog │ ├── NEWS │ ├── README │ ├── README.libmv │ └── src │ │ ├── CMakeLists.txt │ │ ├── base │ │ ├── commandlineflags.h │ │ ├── googleinit.h │ │ └── mutex.h │ │ ├── config.h │ │ ├── config.h.in │ │ ├── config_for_unittests.h │ │ ├── config_linux.h │ │ ├── config_mac.h │ │ ├── demangle.cc │ │ ├── demangle.h │ │ ├── demangle_unittest.cc │ │ ├── demangle_unittest.sh │ │ ├── demangle_unittest.txt │ │ ├── glog │ │ ├── log_severity.h │ │ ├── logging.h │ │ ├── logging.h.in │ │ ├── raw_logging.h │ │ ├── raw_logging.h.in │ │ ├── stl_logging.h │ │ ├── stl_logging.h.in │ │ ├── vlog_is_on.h │ │ └── vlog_is_on.h.in │ │ ├── logging.cc │ │ ├── logging_striplog_test.sh │ │ ├── logging_striptest10.cc │ │ ├── logging_striptest2.cc │ │ ├── logging_striptest_main.cc │ │ ├── logging_unittest.cc │ │ ├── logging_unittest.err │ │ ├── mock-log.h │ │ ├── mock-log_test.cc │ │ ├── raw_logging.cc │ │ ├── signalhandler.cc │ │ ├── signalhandler_unittest.cc │ │ ├── signalhandler_unittest.sh │ │ ├── stacktrace.h │ │ ├── stacktrace_generic-inl.h │ │ ├── stacktrace_libunwind-inl.h │ │ ├── stacktrace_powerpc-inl.h │ │ ├── stacktrace_unittest.cc │ │ ├── stacktrace_x86-inl.h │ │ ├── stacktrace_x86_64-inl.h │ │ ├── stl_logging_unittest.cc │ │ ├── symbolize.cc │ │ ├── symbolize.h │ │ ├── symbolize_unittest.cc │ │ ├── utilities.cc │ │ ├── utilities.h │ │ ├── utilities_unittest.cc │ │ ├── vlog_is_on.cc │ │ └── windows │ │ ├── config.h │ │ ├── glog │ │ ├── log_severity.h │ │ ├── logging.h │ │ ├── raw_logging.h │ │ ├── stl_logging.h │ │ └── vlog_is_on.h │ │ ├── port.cc │ │ ├── port.h │ │ └── preprocess.sh ├── gtest │ ├── CMakeLists.txt │ ├── LICENSE │ ├── README.libmv │ ├── include │ │ └── gtest │ │ │ ├── gtest-death-test.h │ │ │ ├── gtest-message.h │ │ │ ├── gtest-param-test.h │ │ │ ├── gtest-param-test.h.pump │ │ │ ├── gtest-printers.h │ │ │ ├── gtest-spi.h │ │ │ ├── gtest-test-part.h │ │ │ ├── gtest-typed-test.h │ │ │ ├── gtest.h │ │ │ ├── gtest_pred_impl.h │ │ │ ├── gtest_prod.h │ │ │ └── internal │ │ │ ├── gtest-death-test-internal.h │ │ │ ├── gtest-filepath.h │ │ │ ├── gtest-internal.h │ │ │ ├── gtest-linked_ptr.h │ │ │ ├── gtest-param-util-generated.h │ │ │ ├── gtest-param-util-generated.h.pump │ │ │ ├── gtest-param-util.h │ │ │ ├── gtest-port.h │ │ │ ├── gtest-string.h │ │ │ ├── gtest-tuple.h │ │ │ ├── gtest-tuple.h.pump │ │ │ ├── gtest-type-util.h │ │ │ └── gtest-type-util.h.pump │ └── src │ │ ├── gtest-all.cc │ │ ├── gtest-death-test.cc │ │ ├── gtest-filepath.cc │ │ ├── gtest-internal-inl.h │ │ ├── gtest-port.cc │ │ ├── gtest-printers.cc │ │ ├── gtest-test-part.cc │ │ ├── gtest-typed-test.cc │ │ ├── gtest.cc │ │ └── gtest_main.cc ├── jpeg-7 │ ├── CMakeLists.txt │ ├── README │ ├── README.libmv │ ├── ansi2knr.c │ ├── cderror.h │ ├── cdjpeg.c │ ├── cdjpeg.h │ ├── cjpeg.c │ ├── ckconfig.c │ ├── djpeg.c │ ├── example.c │ ├── jaricom.c │ ├── jcapimin.c │ ├── jcapistd.c │ ├── jcarith.c │ ├── jccoefct.c │ ├── jccolor.c │ ├── jcdctmgr.c │ ├── jchuff.c │ ├── jcinit.c │ ├── jcmainct.c │ ├── jcmarker.c │ ├── jcmaster.c │ ├── jcomapi.c │ ├── jconfig.h │ ├── jconfig_mac.h │ ├── jconfig_windows.h │ ├── jcparam.c │ ├── jcprepct.c │ ├── jcsample.c │ ├── jctrans.c │ ├── jdapimin.c │ ├── jdapistd.c │ ├── jdarith.c │ ├── jdatadst.c │ ├── jdatasrc.c │ ├── jdcoefct.c │ ├── jdcolor.c │ ├── jdct.h │ ├── jddctmgr.c │ ├── jdhuff.c │ ├── jdinput.c │ ├── jdmainct.c │ ├── jdmarker.c │ ├── jdmaster.c │ ├── jdmerge.c │ ├── jdpostct.c │ ├── jdsample.c │ ├── jdtrans.c │ ├── jerror.c │ ├── jerror.h │ ├── jfdctflt.c │ ├── jfdctfst.c │ ├── jfdctint.c │ ├── jidctflt.c │ ├── jidctfst.c │ ├── jidctint.c │ ├── jinclude.h │ ├── jmemansi.c │ ├── jmemdos.c │ ├── jmemmac.c │ ├── jmemmgr.c │ ├── jmemname.c │ ├── jmemnobs.c │ ├── jmemsys.h │ ├── jmorecfg.h │ ├── jpegint.h │ ├── jpeglib.h │ ├── jpegtran.c │ ├── jquant1.c │ ├── jquant2.c │ ├── jutils.c │ ├── jversion.h │ ├── rdbmp.c │ ├── rdcolmap.c │ ├── rdgif.c │ ├── rdjpgcom.c │ ├── rdppm.c │ ├── rdrle.c │ ├── rdswitch.c │ ├── rdtarga.c │ ├── transupp.c │ ├── transupp.h │ ├── wrbmp.c │ ├── wrgif.c │ ├── wrjpgcom.c │ ├── wrppm.c │ ├── wrrle.c │ └── wrtarga.c ├── ldl │ ├── CMakeLists.txt │ ├── Doc │ │ ├── ChangeLog │ │ └── lesser.txt │ ├── Include │ │ └── ldl.h │ ├── README.libmv │ ├── README.txt │ └── Source │ │ └── ldl.c ├── msinttypes │ ├── README.libmv │ ├── inttypes.h │ └── stdint.h ├── png │ ├── CMakeLists.txt │ ├── LICENSE │ ├── README │ ├── README.libmv │ ├── example.c │ ├── png.c │ ├── png.h │ ├── pngconf.h │ ├── pngerror.c │ ├── pnggccrd.c │ ├── pngget.c │ ├── pngmem.c │ ├── pngpread.c │ ├── pngread.c │ ├── pngrio.c │ ├── pngrtran.c │ ├── pngrutil.c │ ├── pngset.c │ ├── pngtest.c │ ├── pngtrans.c │ ├── pngvcrd.c │ ├── pngwio.c │ ├── pngwrite.c │ ├── pngwtran.c │ └── pngwutil.c ├── pthreads-w32 │ ├── CMakeLists.txt │ ├── COPYING │ ├── COPYING.LIB │ ├── README.libmv │ ├── include │ │ ├── implement.h │ │ ├── pthread.h │ │ ├── sched.h │ │ └── semaphore.h │ ├── lib │ │ ├── pthreadVSE2.dll │ │ └── pthreadVSE2.lib │ └── src │ │ ├── attr.c │ │ ├── barrier.c │ │ ├── cancel.c │ │ ├── cleanup.c │ │ ├── condvar.c │ │ ├── create.c │ │ ├── dll.c │ │ ├── errno.c │ │ ├── exit.c │ │ ├── fork.c │ │ ├── global.c │ │ ├── misc.c │ │ ├── mutex.c │ │ ├── nonportable.c │ │ ├── private.c │ │ ├── pthread.c │ │ ├── pthread_attr_destroy.c │ │ ├── pthread_attr_getdetachstate.c │ │ ├── pthread_attr_getinheritsched.c │ │ ├── pthread_attr_getschedparam.c │ │ ├── pthread_attr_getschedpolicy.c │ │ ├── pthread_attr_getscope.c │ │ ├── pthread_attr_getstackaddr.c │ │ ├── pthread_attr_getstacksize.c │ │ ├── pthread_attr_init.c │ │ ├── pthread_attr_setdetachstate.c │ │ ├── pthread_attr_setinheritsched.c │ │ ├── pthread_attr_setschedparam.c │ │ ├── pthread_attr_setschedpolicy.c │ │ ├── pthread_attr_setscope.c │ │ ├── pthread_attr_setstackaddr.c │ │ ├── pthread_attr_setstacksize.c │ │ ├── pthread_barrier_destroy.c │ │ ├── pthread_barrier_init.c │ │ ├── pthread_barrier_wait.c │ │ ├── pthread_barrierattr_destroy.c │ │ ├── pthread_barrierattr_getpshared.c │ │ ├── pthread_barrierattr_init.c │ │ ├── pthread_barrierattr_setpshared.c │ │ ├── pthread_cancel.c │ │ ├── pthread_cond_destroy.c │ │ ├── pthread_cond_init.c │ │ ├── pthread_cond_signal.c │ │ ├── pthread_cond_wait.c │ │ ├── pthread_condattr_destroy.c │ │ ├── pthread_condattr_getpshared.c │ │ ├── pthread_condattr_init.c │ │ ├── pthread_condattr_setpshared.c │ │ ├── pthread_delay_np.c │ │ ├── pthread_detach.c │ │ ├── pthread_equal.c │ │ ├── pthread_exit.c │ │ ├── pthread_getconcurrency.c │ │ ├── pthread_getschedparam.c │ │ ├── pthread_getspecific.c │ │ ├── pthread_getw32threadhandle_np.c │ │ ├── pthread_join.c │ │ ├── pthread_key_create.c │ │ ├── pthread_key_delete.c │ │ ├── pthread_kill.c │ │ ├── pthread_mutex_destroy.c │ │ ├── pthread_mutex_init.c │ │ ├── pthread_mutex_lock.c │ │ ├── pthread_mutex_timedlock.c │ │ ├── pthread_mutex_trylock.c │ │ ├── pthread_mutex_unlock.c │ │ ├── pthread_mutexattr_destroy.c │ │ ├── pthread_mutexattr_getkind_np.c │ │ ├── pthread_mutexattr_getpshared.c │ │ ├── pthread_mutexattr_gettype.c │ │ ├── pthread_mutexattr_init.c │ │ ├── pthread_mutexattr_setkind_np.c │ │ ├── pthread_mutexattr_setpshared.c │ │ ├── pthread_mutexattr_settype.c │ │ ├── pthread_num_processors_np.c │ │ ├── pthread_once.c │ │ ├── pthread_rwlock_destroy.c │ │ ├── pthread_rwlock_init.c │ │ ├── pthread_rwlock_rdlock.c │ │ ├── pthread_rwlock_timedrdlock.c │ │ ├── pthread_rwlock_timedwrlock.c │ │ ├── pthread_rwlock_tryrdlock.c │ │ ├── pthread_rwlock_trywrlock.c │ │ ├── pthread_rwlock_unlock.c │ │ ├── pthread_rwlock_wrlock.c │ │ ├── pthread_rwlockattr_destroy.c │ │ ├── pthread_rwlockattr_getpshared.c │ │ ├── pthread_rwlockattr_init.c │ │ ├── pthread_rwlockattr_setpshared.c │ │ ├── pthread_self.c │ │ ├── pthread_setcancelstate.c │ │ ├── pthread_setcanceltype.c │ │ ├── pthread_setconcurrency.c │ │ ├── pthread_setschedparam.c │ │ ├── pthread_setspecific.c │ │ ├── pthread_spin_destroy.c │ │ ├── pthread_spin_init.c │ │ ├── pthread_spin_lock.c │ │ ├── pthread_spin_trylock.c │ │ ├── pthread_spin_unlock.c │ │ ├── pthread_testcancel.c │ │ ├── pthread_timechange_handler_np.c │ │ ├── pthread_win32_attach_detach_np.c │ │ ├── ptw32_InterlockedCompareExchange.c │ │ ├── ptw32_MCS_lock.c │ │ ├── ptw32_callUserDestroyRoutines.c │ │ ├── ptw32_calloc.c │ │ ├── ptw32_cond_check_need_init.c │ │ ├── ptw32_getprocessors.c │ │ ├── ptw32_is_attr.c │ │ ├── ptw32_mutex_check_need_init.c │ │ ├── ptw32_new.c │ │ ├── ptw32_processInitialize.c │ │ ├── ptw32_processTerminate.c │ │ ├── ptw32_relmillisecs.c │ │ ├── ptw32_reuse.c │ │ ├── ptw32_rwlock_cancelwrwait.c │ │ ├── ptw32_rwlock_check_need_init.c │ │ ├── ptw32_semwait.c │ │ ├── ptw32_spinlock_check_need_init.c │ │ ├── ptw32_threadDestroy.c │ │ ├── ptw32_threadStart.c │ │ ├── ptw32_throw.c │ │ ├── ptw32_timespec.c │ │ ├── ptw32_tkAssocCreate.c │ │ ├── ptw32_tkAssocDestroy.c │ │ ├── rwlock.c │ │ ├── sched.c │ │ ├── sched_get_priority_max.c │ │ ├── sched_get_priority_min.c │ │ ├── sched_getscheduler.c │ │ ├── sched_setscheduler.c │ │ ├── sched_yield.c │ │ ├── sem_close.c │ │ ├── sem_destroy.c │ │ ├── sem_getvalue.c │ │ ├── sem_init.c │ │ ├── sem_open.c │ │ ├── sem_post.c │ │ ├── sem_post_multiple.c │ │ ├── sem_timedwait.c │ │ ├── sem_trywait.c │ │ ├── sem_unlink.c │ │ ├── sem_wait.c │ │ ├── semaphore.c │ │ ├── signal.c │ │ ├── spin.c │ │ ├── sync.c │ │ ├── tsd.c │ │ └── w32_CancelableWait.c ├── ssba │ ├── Apps │ │ ├── CMakeLists.txt │ │ ├── bundle_common.cpp │ │ └── bundle_varying.cpp │ ├── CMakeLists.txt │ ├── COPYING.TXT │ ├── Geometry │ │ ├── v3d_cameramatrix.h │ │ ├── v3d_distortion.h │ │ ├── v3d_metricbundle.cpp │ │ └── v3d_metricbundle.h │ ├── Math │ │ ├── v3d_linear.h │ │ ├── v3d_linear_utils.h │ │ ├── v3d_mathutilities.h │ │ ├── v3d_optimization.cpp │ │ └── v3d_optimization.h │ ├── README.TXT │ └── README.libmv ├── ufconfig │ ├── README.libmv │ ├── README.txt │ └── UFconfig.h └── zlib │ ├── CMakeLists.txt │ ├── README │ ├── README.libmv │ ├── adler32.c │ ├── compress.c │ ├── crc32.c │ ├── crc32.h │ ├── deflate.c │ ├── deflate.h │ ├── example.c │ ├── gzio.c │ ├── infback.c │ ├── inffast.c │ ├── inffast.h │ ├── inffixed.h │ ├── inflate.c │ ├── inflate.h │ ├── inftrees.c │ ├── inftrees.h │ ├── minigzip.c │ ├── trees.c │ ├── trees.h │ ├── uncompr.c │ ├── zconf.h │ ├── zconf.in.h │ ├── zlib.h │ ├── zutil.c │ └── zutil.h ├── tools ├── CMakeLists.txt ├── detector_repeatability.cc ├── experimental.cc ├── extractExifData.cc ├── homography_warping.cc ├── interest_points.cc ├── mosaicing_video.cc ├── nViewMatching.cc ├── points_detector.cc ├── reconstruct_video.cc ├── stabilize.cc ├── track.cc ├── tracker.cc └── undistort.cc └── ui ├── CMakeLists.txt ├── README ├── imageviewer.cc ├── imageviewer.h ├── main.cc ├── nvr ├── CMakeLists.txt ├── glwidget.cc ├── glwidget.h ├── nview.cpp └── nview.h ├── scrubber.cc ├── scrubber.h ├── tracker ├── CMakeLists.txt ├── gl.cc ├── gl.h ├── icons │ ├── LICENSE │ ├── bookmarks.png │ ├── document-open.png │ ├── document-preview.png │ ├── edit-delete.png │ ├── edit-table-delete-row.png │ ├── insert-link.png │ ├── list-add.png │ ├── media-playback-start-backward.png │ ├── media-playback-start.png │ ├── media-record.png │ ├── media-seek-backward.png │ ├── media-seek-forward.png │ ├── media-skip-backward.png │ ├── media-skip-forward.png │ ├── system-run.png │ ├── view-preview.png │ └── view-scene.png ├── main.cc ├── main.h ├── scene.cc ├── scene.h ├── shader.glsl ├── tracker.cc ├── tracker.h ├── tracker.pro └── tracker.qrc └── tvr ├── 3D_viewer.cc ├── 3D_viewer.h ├── CMakeLists.txt ├── features.cc ├── features.h ├── gl_texture.h ├── main.cc ├── main_window.cc ├── main_window.h ├── match_viewer.cc ├── match_viewer.h ├── on_screen_image.h └── tvr_document.h /.gitignore: -------------------------------------------------------------------------------- 1 | .*.swp 2 | bin-dbg 3 | bin-opt 4 | src/libmv/tools/revision.h 5 | doc/html/ 6 | Makefile 7 | build/ 8 | *.pro.user 9 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Andrew Chant 2 | Daniel Waterworth 3 | Darius Blaszyk 4 | David Roberts 5 | Jose Gonzalez 6 | Julien Michot 7 | Keir Mierle 8 | Marco Molteni 9 | Matthias Fauconneau 10 | Nathan Wiegand 11 | Pau Gargallo 12 | Pierre Moulon 13 | Rehno Lindeque 14 | Slava Vishnyakov 15 | Vess Perfanov 16 | W. James MacLean 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2007-2011 libmv authors. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to 5 | deal in the Software without restriction, including without limitation the 6 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | sell copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | IN THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | all : release 2 | 3 | debug : 4 | mkdir -p bin-dbg 5 | cd bin-dbg && cmake -DCMAKE_BUILD_TYPE=Debug ../src && make 6 | 7 | release : 8 | mkdir -p bin-opt 9 | cd bin-opt && cmake -DCMAKE_BUILD_TYPE=Release ../src && make 10 | 11 | clean : 12 | rm -rf bin-opt 13 | rm -rf bin-dbg 14 | 15 | test : debug 16 | cd bin-dbg && ctest 17 | 18 | test-release : release 19 | cd bin-opt && ctest 20 | 21 | install : debug 22 | cd bin-dbg && make install 23 | 24 | install-release : release 25 | cd bin-opt && make install 26 | 27 | uninstall : debug 28 | cd bin-dbg && make uninstall 29 | 30 | uninstall-release : release 31 | cd bin-opt && make uninstall 32 | 33 | documentation : 34 | cd doc && doxygen Doxyfile 35 | 36 | kdevelop : 37 | mkdir -p kdevelop-pro 38 | cd kdevelop-pro && cmake -G KDevelop3 -DCMAKE_BUILD_TYPE=Debug ../src/ 39 | 40 | #TODO(pau) Add a constructor of CodeBlocks project using the wiki instructions. 41 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Libmv multiview reconstruction and tracking library 2 | =================================================== 3 | 4 | Libmv is a simple multiview reconstruction library. 5 | 6 | It is not ready yet. If you're interested in contributing, see: 7 | 8 | http://code.google.com/p/libmv 9 | 10 | The short story: 11 | 12 | $ git pull git://github.com/Matthias-Fauconneau/libmv.git 13 | $ make 14 | $ bin-opt/bin/qt-tracker 15 | 16 | Try loading an image sequence and start tracking. This UI may crash on you. 17 | There's a reason we claim libmv is not finished ! 18 | 19 | Building 20 | -------- 21 | 22 | Before building, make sure you have the following: 23 | 24 | * CMake 2.4 or newer. 25 | * Qt4. 26 | 27 | Then run 28 | 29 | $ make 30 | 31 | Problems 32 | -------- 33 | 34 | If you encounter problems, please mail the branch author or ask for help on irc://irc.freenode.net/libmv 35 | -------------------------------------------------------------------------------- /codereview.settings: -------------------------------------------------------------------------------- 1 | # This file is used by git-cl in order to connect to the remote code review tool 2 | # at http://codereview.appspot.com 3 | CODE_REVIEW_SERVER: codereview.appspot.com 4 | -------------------------------------------------------------------------------- /contrib/blender/README: -------------------------------------------------------------------------------- 1 | Introduction 2 | ============ 3 | This directory will contain all relevant files and patches 4 | to get libmv working under blender. 5 | 6 | 7 | Installation 8 | ============ 9 | It is assumed that libmv/trunk is placed in 10 | 11 | trunk/blender/extern/libmv/ 12 | 13 | All patches and scripts are relative to that. 14 | -------------------------------------------------------------------------------- /contrib/blender/create_patches.sh: -------------------------------------------------------------------------------- 1 | #create the blender-libmv patch 2 | svn diff ../../../../source/blender/src/buttons_editing.c \ 3 | ../../../../source/blender/include/butspace.h \ 4 | ../../../../source/blender/makesdna/DNA_libmv_types.h \ 5 | ../../../../source/blender/makesdna/DNA_userdef_types.h \ 6 | ../../../../source/blender/makesdna/intern/makesdna.c \ 7 | > blender_libmv.diff 8 | -------------------------------------------------------------------------------- /extras/calibration/calibration.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/extras/calibration/calibration.pdf -------------------------------------------------------------------------------- /src/CMake/cmake_uninstall.cmake.in: -------------------------------------------------------------------------------- 1 | 2 | SET(LIBMV_MANIFEST_DIR "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") 3 | file(READ ${LIBMV_MANIFEST_DIR} files) 4 | string(REGEX REPLACE "\n" ";" files "${files}") 5 | foreach (file ${files}) 6 | message(STATUS "Uninstalling \"$ENV{DESTDIR}${file}\"") 7 | if (EXISTS "$ENV{DESTDIR}${file}") 8 | execute_process( 9 | COMMAND @CMAKE_COMMAND@ -E remove "$ENV{DESTDIR}${file}" 10 | OUTPUT_VARIABLE rm_out 11 | RESULT_VARIABLE rm_retval 12 | ) 13 | if(NOT ${rm_retval} EQUAL 0) 14 | message(FATAL_ERROR "Problem when removing \"$ENV{DESTDIR}${file}\"") 15 | endif (NOT ${rm_retval} EQUAL 0) 16 | else (EXISTS "$ENV{DESTDIR}${file}") 17 | message(STATUS "File \"$ENV{DESTDIR}${file}\" does not exist.") 18 | endif (EXISTS "$ENV{DESTDIR}${file}") 19 | endforeach(file) 20 | -------------------------------------------------------------------------------- /src/CMake/modules/FindJPEG.cmake: -------------------------------------------------------------------------------- 1 | # - Find JPEG 2 | # Find the native JPEG includes and library 3 | # This module defines 4 | # JPEG_INCLUDE_DIR, where to find jpeglib.h, etc. 5 | # JPEG_LIBRARIES, the libraries needed to use JPEG. 6 | # JPEG_FOUND, If false, do not try to use JPEG. 7 | # also defined, but not for general use are 8 | # JPEG_LIBRARY, where to find the JPEG library. 9 | 10 | FIND_PATH(JPEG_INCLUDE_DIR jpeglib.h) 11 | 12 | SET(JPEG_NAMES_RELEASE ${JPEG_NAMES_RELEASE} ${JPEG_NAMES} jpeg libjpeg) 13 | FIND_LIBRARY(JPEG_LIBRARY_RELEASE NAMES ${JPEG_NAMES_RELEASE} ) 14 | 15 | SET(JPEG_NAMES_DEBUG ${JPEG_NAMES_DEBUG} jpegd libjpegd jpeg_d libjpeg_d) 16 | FIND_LIBRARY(JPEG_LIBRARY_DEBUG NAMES ${JPEG_NAMES_DEBUG} ) 17 | 18 | IF(JPEG_FOUND) 19 | SET(JPEG_LIBRARIES ${JPEG_LIBRARY}) 20 | ENDIF(JPEG_FOUND) 21 | 22 | -------------------------------------------------------------------------------- /src/CMake/revision.h.in: -------------------------------------------------------------------------------- 1 | #ifndef LIBMV_REVISION_H_ 2 | #define LIBMV_REVISION_H_ 3 | 4 | #define LIBMV_VERSION_MAJOR ${LIBMV_VERSION_MAJOR} 5 | #define LIBMV_VERSION_MINOR ${LIBMV_VERSION_MINOR} 6 | #define LIBMV_VERSION_PATCH ${LIBMV_VERSION_PATCH} 7 | #define LIBMV_VERSION "${LIBMV_VERSION}" 8 | 9 | #endif //LIBMV_REVISION_H_ -------------------------------------------------------------------------------- /src/libmv/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY(base) 2 | #ADD_SUBDIRECTORY(camera) 3 | #ADD_SUBDIRECTORY(correspondence) 4 | #ADD_SUBDIRECTORY(descriptor) 5 | #ADD_SUBDIRECTORY(detector) 6 | ADD_SUBDIRECTORY(image) 7 | ADD_SUBDIRECTORY(multiview) 8 | ADD_SUBDIRECTORY(numeric) 9 | ADD_SUBDIRECTORY(optimize) 10 | #ADD_SUBDIRECTORY(reconstruction) 11 | ADD_SUBDIRECTORY(scene_graph) 12 | ADD_SUBDIRECTORY(simple_pipeline) 13 | #ADD_SUBDIRECTORY(tools) 14 | ADD_SUBDIRECTORY(tracking) 15 | 16 | LIBMV_INSTALL_ALL_HEADERS() 17 | -------------------------------------------------------------------------------- /src/libmv/base/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | LIBMV_TEST(vector numeric) 2 | LIBMV_TEST(scoped_ptr "") 3 | -------------------------------------------------------------------------------- /src/libmv/base/id_generator.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_ID_GENERATOR_H 22 | #define LIBMV_ID_GENERATOR_H 23 | 24 | namespace libmv { 25 | 26 | template 27 | class IdGenerator { 28 | public: 29 | IdGenerator() : next_(0) {} 30 | ID Generate() { return next_++; } 31 | private: 32 | ID next_; 33 | }; 34 | 35 | } // namespace libmv 36 | 37 | #endif // LIBMV_ID_GENERATOR_H 38 | -------------------------------------------------------------------------------- /src/libmv/base/vector_utils.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | 22 | #ifndef LIBMV_BASE_VECTOR_UTILS_H_ 23 | #define LIBMV_BASE_VECTOR_UTILS_H_ 24 | 25 | /// Delete the contents of a container. 26 | template 27 | void DeleteElements(Array *array) { 28 | for (int i = 0; i < array->size(); ++i) { 29 | delete (*array)[i]; 30 | } 31 | array->clear(); 32 | } 33 | 34 | #endif // LIBMV_BASE_VECTOR_UTILS_H_ 35 | -------------------------------------------------------------------------------- /src/libmv/camera/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # define the source files 2 | SET(CAMERA_SRC camera.cc 3 | pinhole_camera.cc 4 | lens_distortion.cc) 5 | 6 | # define the header files (make the headers appear in IDEs.) 7 | FILE(GLOB CAMERA_HDRS *.h) 8 | 9 | ADD_LIBRARY(camera ${CAMERA_SRC} ${CAMERA_HDRS}) 10 | 11 | TARGET_LINK_LIBRARIES(camera multiview numeric V3D colamd ldl) 12 | 13 | # make the name of debug libraries end in _d. 14 | SET_TARGET_PROPERTIES(camera PROPERTIES DEBUG_POSTFIX "_d") 15 | 16 | # installation rules for the library 17 | LIBMV_INSTALL_LIB(camera) 18 | 19 | MACRO (CAMERA_TEST NAME) 20 | LIBMV_TEST(${NAME} "multiview_test_data;correspondence;camera;multiview;numeric") 21 | ENDMACRO (CAMERA_TEST) 22 | 23 | CAMERA_TEST(pinhole_camera) 24 | CAMERA_TEST(lens_distortion) 25 | 26 | -------------------------------------------------------------------------------- /src/libmv/camera/camera.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include "libmv/camera/camera.h" 22 | 23 | namespace libmv { 24 | 25 | } // namespace libmv 26 | -------------------------------------------------------------------------------- /src/libmv/camera/camera.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_MULTIVIEW_CAMERA_H_ 22 | #define LIBMV_MULTIVIEW_CAMERA_H_ 23 | 24 | #include "libmv/camera/lens_distortion.h" 25 | #include "libmv/correspondence/feature.h" 26 | #include "libmv/logging/logging.h" 27 | #include "libmv/numeric/numeric.h" 28 | #include "libmv/multiview/projection.h" 29 | 30 | namespace libmv { 31 | 32 | class PointStructure; 33 | 34 | // 35 | // This class is an abstract base class for camera models 36 | // 37 | class Camera { 38 | public: 39 | virtual ~Camera() {} 40 | 41 | // Return the ray direction of a pixel 42 | virtual Vec3 Ray(const Vec2f &pixel) = 0; 43 | }; 44 | 45 | } // namespace libmv 46 | 47 | #endif // LIBMV_MULTIVIEW_CAMERA_H_ 48 | -------------------------------------------------------------------------------- /src/libmv/correspondence/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # define the source files 2 | SET(CORRESPONDENCE_SRC klt.cc 3 | feature.cc 4 | matches.cc 5 | feature_matching.cc 6 | # feature_matching_FLANN.cc 7 | tracker.cc 8 | robust_tracker.cc 9 | planar_tracker.cc 10 | nRobustViewMatching.cc 11 | export_matches_txt.cc 12 | import_matches_txt.cc) 13 | 14 | # define the header files (make the headers appear in IDEs.) 15 | FILE(GLOB CORRESPONDENCE_HDRS *.h) 16 | 17 | ADD_LIBRARY(correspondence ${CORRESPONDENCE_SRC} ${CORRESPONDENCE_HDRS}) 18 | TARGET_LINK_LIBRARIES(correspondence multiview image flann) 19 | 20 | # make the name of debug libraries end in _d. 21 | SET_TARGET_PROPERTIES(correspondence PROPERTIES DEBUG_POSTFIX "_d") 22 | 23 | # installation rules for the library 24 | LIBMV_INSTALL_LIB(correspondence) 25 | 26 | LIBMV_TEST(klt "correspondence;image;numeric") 27 | LIBMV_TEST(bipartite_graph "") 28 | LIBMV_TEST(kdtree "") 29 | LIBMV_TEST(feature_set "correspondence;image;numeric") 30 | LIBMV_TEST(matches "correspondence;image;numeric") 31 | LIBMV_TEST(Array_Matcher "correspondence;numeric;flann") 32 | # LIBMV_TEST(tracker "correspondence;reconstruction;numeric;flann") 33 | -------------------------------------------------------------------------------- /src/libmv/correspondence/export_matches_txt.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_CORRESPONDENCE_EXPORT_MATCHES_TXT_H_ 22 | #define LIBMV_CORRESPONDENCE_EXPORT_MATCHES_TXT_H_ 23 | 24 | #include "libmv/correspondence/matches.h" 25 | 26 | namespace libmv { 27 | // Exports the matches in a TXT format file 28 | // Each line corresponds to a correspondence. 29 | // The output format of point features is: 30 | // 31 | void ExportMatchesToTxt(const Matches &matches, std::string out_file_name); 32 | } // namespace libmv 33 | 34 | #endif // LIBMV_CORRESPONDENCE_EXPORT_MATCHES_TXT_H_ 35 | -------------------------------------------------------------------------------- /src/libmv/correspondence/feature.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include "libmv/correspondence/feature.h" 22 | 23 | namespace libmv { 24 | 25 | Feature::~Feature() {} 26 | PointFeature::~PointFeature() {} 27 | LineFeature::~LineFeature() {} 28 | 29 | } // namespace libmv 30 | -------------------------------------------------------------------------------- /src/libmv/correspondence/import_matches_txt.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_CORRESPONDENCE_IMPORT_MATCHES_TXT_H_ 22 | #define LIBMV_CORRESPONDENCE_IMPORT_MATCHES_TXT_H_ 23 | 24 | #include "libmv/correspondence/feature_matching.h" 25 | #include "libmv/correspondence/matches.h" 26 | 27 | namespace libmv { 28 | // Imports the matches from a TXT format file 29 | // Each line corresponds to a correspondence. 30 | // The output format of point features is: 31 | // 32 | void ImportMatchesFromTxt(const std::string &input_file, 33 | Matches *matches, 34 | FeatureSet *feature_set); 35 | } // namespace libmv 36 | 37 | #endif // LIBMV_CORRESPONDENCE_IMPORT_MATCHES_TXT_H_ 38 | -------------------------------------------------------------------------------- /src/libmv/correspondence/klt_test/Lenna.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/libmv/correspondence/klt_test/Lenna.pgm -------------------------------------------------------------------------------- /src/libmv/correspondence/matches.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include "libmv/correspondence/matches.h" 22 | #include "libmv/correspondence/feature.h" 23 | 24 | namespace libmv { 25 | 26 | Matches::~Matches() {} 27 | 28 | void DeleteMatchFeatures(Matches *matches) { 29 | (void) matches; 30 | // XXX 31 | /* 32 | for (Correspondences::FeatureIterator it = correspondences->ScanAllFeatures(); 33 | !it.Done(); it.Next()) { 34 | delete const_cast(it.feature()); 35 | } 36 | */ 37 | } 38 | 39 | } // namespace libmv 40 | -------------------------------------------------------------------------------- /src/libmv/descriptor/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # define the source files 2 | SET(DESCRIPTOR_SRC daisy_descriptor.cc 3 | simpliest_descriptor.cc 4 | surf_descriptor.cc 5 | dipole_descriptor.cc 6 | descriptor_factory.cc) 7 | 8 | # define the header files (make the headers appear in IDEs.) 9 | FILE(GLOB DESCRIPTOR_HDRS *.h) 10 | 11 | ADD_LIBRARY(descriptor ${DESCRIPTOR_SRC} ${DESCRIPTOR_HDRS}) 12 | 13 | TARGET_LINK_LIBRARIES(descriptor detector image glog daisy) 14 | 15 | # make the name of debug libraries end in _d. 16 | SET_TARGET_PROPERTIES(descriptor PROPERTIES DEBUG_POSTFIX "_d") 17 | 18 | LIBMV_INSTALL_LIB(descriptor) 19 | LIBMV_TEST(daisy_descriptor "descriptor;image;daisy") 20 | -------------------------------------------------------------------------------- /src/libmv/descriptor/daisy_descriptor.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_DESCRIPTOR_DAISY_DESCRIPTOR_H 22 | #define LIBMV_DESCRIPTOR_DAISY_DESCRIPTOR_H 23 | 24 | namespace libmv { 25 | namespace descriptor { 26 | 27 | class Describer; 28 | 29 | /** 30 | * Creates a DAISY describer. 31 | * 32 | * TODO(keir): DAISY supports extensive configuration. Add support for tweaking 33 | * parameters once the JSON configuration framework is added. 34 | */ 35 | Describer *CreateDaisyDescriber(); 36 | 37 | } // namespace descriptor 38 | } // namespace libmv 39 | 40 | #endif // LIBMV_DESCRIPTOR_DAISY_DESCRIPTOR_H 41 | -------------------------------------------------------------------------------- /src/libmv/descriptor/daisy_descriptor_test.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include "libmv/descriptor/daisy_descriptor.h" 22 | #include "libmv/image/image.h" 23 | #include "testing/testing.h" 24 | 25 | namespace libmv { 26 | namespace { 27 | 28 | TEST(DaisyDescriptor, DescribesStuff) { 29 | // Does it blend? Stay tuned to find out! 30 | } 31 | 32 | } // namespace 33 | } // namespace libmv 34 | -------------------------------------------------------------------------------- /src/libmv/descriptor/dipole_descriptor.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2010 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_DESCRIPTOR_DIPOLE_DESCRIPTOR_H 22 | #define LIBMV_DESCRIPTOR_DIPOLE_DESCRIPTOR_H 23 | 24 | namespace libmv { 25 | namespace descriptor { 26 | 27 | class Describer; 28 | 29 | /** 30 | * Creates a DIPOLE describer. 31 | * Implementation of : 32 | * [1] A. Joly. New local descriptor based on dissociated dipoles. 33 | * In CIVR, pages 573-580, 2007. 34 | * Naive implementation : Use native image instead of gaussian smoothed image. 35 | */ 36 | Describer *CreateDipoleDescriber(); 37 | 38 | } // namespace descriptor 39 | } // namespace libmv 40 | 41 | #endif // LIBMV_DESCRIPTOR_DIPOLE_DESCRIPTOR_H 42 | -------------------------------------------------------------------------------- /src/libmv/descriptor/simpliest_descriptor.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_DESCRIPTOR_SIMPLIEST_DESCRIPTOR_H 22 | #define LIBMV_DESCRIPTOR_SIMPLIEST_DESCRIPTOR_H 23 | 24 | namespace libmv { 25 | namespace descriptor { 26 | 27 | class Describer; 28 | 29 | /** 30 | * Creates a SIMPLIEST describer. 31 | * The descriptor is just the local region around keypoint. 32 | * Support rotation. 33 | * It's a 8*8 array (bilinear interpolated). 34 | */ 35 | Describer *CreateSimpliestDescriber(); 36 | 37 | } // namespace descriptor 38 | } // namespace libmv 39 | 40 | #endif // LIBMV_DESCRIPTOR_SIMPLIEST_DESCRIPTOR_H 41 | -------------------------------------------------------------------------------- /src/libmv/descriptor/surf_descriptor.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_DESCRIPTOR_SURF_DESCRIPTOR_H 22 | #define LIBMV_DESCRIPTOR_SURF_DESCRIPTOR_H 23 | 24 | namespace libmv { 25 | namespace descriptor { 26 | 27 | class Describer; 28 | 29 | /** 30 | * Creates a SURF describer. 31 | */ 32 | Describer *CreateSurfDescriber(); 33 | 34 | } // namespace descriptor 35 | } // namespace libmv 36 | 37 | #endif // LIBMV_DESCRIPTOR_SURF_DESCRIPTOR_H 38 | -------------------------------------------------------------------------------- /src/libmv/descriptor/vector_descriptor.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_DESCRIPTOR_VECTOR_DESCRIPTOR_H 22 | #define LIBMV_DESCRIPTOR_VECTOR_DESCRIPTOR_H 23 | 24 | #include "libmv/numeric/numeric.h" 25 | 26 | namespace libmv { 27 | namespace descriptor { 28 | 29 | struct VecfDescriptor : public Descriptor { 30 | virtual ~VecfDescriptor() {} 31 | VecfDescriptor(const Vecf & coords) : coords(coords) {} 32 | VecfDescriptor(int n) : coords(n) {} 33 | VecfDescriptor() {}; 34 | 35 | Vecf coords; 36 | }; 37 | 38 | } // namespace descriptor 39 | } // namespace libmv 40 | 41 | #endif // LIBMV_DESCRIPTOR_VECTOR_DESCRIPTOR_H 42 | -------------------------------------------------------------------------------- /src/libmv/detector/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # define the source files 2 | SET(DETECTOR_SRC fast_detector.cc 3 | surf_detector.cc 4 | star_detector.cc 5 | fast_detector_limited.cc 6 | mser_detector.cc 7 | detector_factory.cc) 8 | 9 | # define the header files (make the headers appear in IDEs.) 10 | FILE(GLOB DETECTOR_HDRS *.h) 11 | 12 | ADD_LIBRARY(detector ${DETECTOR_SRC} ${DETECTOR_HDRS}) 13 | 14 | TARGET_LINK_LIBRARIES(detector image correspondence fast) 15 | 16 | # make the name of debug libraries end in _d. 17 | SET_TARGET_PROPERTIES(detector PROPERTIES DEBUG_POSTFIX "_d") 18 | 19 | LIBMV_INSTALL_LIB(detector) 20 | LIBMV_TEST(fast_detector "detector;image;correspondence;fast") 21 | LIBMV_TEST(orientation_detector "detector;image;correspondence") 22 | -------------------------------------------------------------------------------- /src/libmv/detector/detector_factory.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2010 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_DETECTOR_DETECTOR_FACTORY_H 22 | #define LIBMV_DETECTOR_DETECTOR_FACTORY_H 23 | 24 | namespace libmv { 25 | namespace detector { 26 | 27 | class Detector; 28 | 29 | enum eDetector 30 | { 31 | FAST_DETECTOR, 32 | FAST_LIMITED_DETECTOR, 33 | SURF_DETECTOR, 34 | STAR_DETECTOR, 35 | MSER_DETECTOR 36 | }; 37 | /** 38 | * Creates the corresponding detector. 39 | * Always allocate the detector. You must handle memory cleaning. 40 | * \param edetector The wanted detector. 41 | */ 42 | Detector *detectorFactory(eDetector edetector = FAST_LIMITED_DETECTOR); 43 | 44 | } // namespace detector 45 | } // namespace libmv 46 | 47 | #endif //LIBMV_DETECTOR_DETECTOR_FACTORY_H 48 | -------------------------------------------------------------------------------- /src/libmv/detector/mser_detector.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2010 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_DETECTOR_MSER_DETECTOR_H 22 | #define LIBMV_DETECTOR_MSER_DETECTOR_H 23 | 24 | namespace libmv { 25 | namespace detector { 26 | 27 | class Detector; 28 | 29 | /** 30 | * Creates a detector that uses the MSER detection algorithm. 31 | * Implementation of . 32 | * TODO(pmoulon) Add biblio... 33 | * \param bRotationInvariant Tell if orientation of detected features must 34 | * be estimated. 35 | */ 36 | Detector *CreateMserDetector(bool bRotationInvariant = true); 37 | 38 | } // namespace detector 39 | } // namespace libmv 40 | 41 | #endif //LIBMV_DETECTOR_STAR_DETECTOR_H 42 | -------------------------------------------------------------------------------- /src/libmv/detector/star_detector.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2010 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_DETECTOR_STAR_DETECTOR_H 22 | #define LIBMV_DETECTOR_STAR_DETECTOR_H 23 | 24 | namespace libmv { 25 | namespace detector { 26 | 27 | class Detector; 28 | 29 | /** 30 | * Creates a detector that uses the STAR detection algorithm. 31 | * A SURF like blob detector. 32 | * \param bRotationInvariant Tell if orientation of detected features must 33 | * be estimated. 34 | */ 35 | Detector *CreateStarDetector(bool bRotationInvariant = false); 36 | 37 | } // namespace detector 38 | } // namespace libmv 39 | 40 | #endif //LIBMV_DETECTOR_STAR_DETECTOR_H 41 | -------------------------------------------------------------------------------- /src/libmv/detector/surf_detector.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_DETECTOR_SURF_DETECTOR_H 22 | #define LIBMV_DETECTOR_SURF_DETECTOR_H 23 | 24 | namespace libmv { 25 | namespace detector { 26 | 27 | class Detector; 28 | 29 | /** 30 | * Creates a detector that uses the SURF detection algorithm. 31 | * 32 | * \param num_octaves The number of octave to consider. 33 | * \param num_intervals The number of intervals. 34 | */ 35 | Detector *CreateSURFDetector(int num_octaves = 4, int num_intervals = 4); 36 | 37 | } // namespace detector 38 | } // namespace libmv 39 | 40 | #endif -------------------------------------------------------------------------------- /src/libmv/image/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # TODO(julien) remove this line, what's that for? 2 | ADD_DEFINITIONS(-DTHIS_SOURCE_DIR="\\"${CMAKE_CURRENT_SOURCE_DIR}\\"") 3 | 4 | IF(WIN32) 5 | INCLUDE_DIRECTORIES( 6 | ${JPEG_SOURCE_DIR} 7 | ${PNG_SOURCE_DIR} 8 | ${ZLIB_SOURCE_DIR} 9 | ) 10 | ENDIF(WIN32) 11 | 12 | # define the source files 13 | SET(IMAGE_SRC image.cc convolve.cc array_nd.cc) 14 | 15 | # define the header files (make the headers appear in IDEs.) 16 | FILE(GLOB IMAGE_HDRS *.h) 17 | 18 | ADD_LIBRARY(image ${IMAGE_SRC} ${IMAGE_HDRS}) 19 | 20 | ADD_LIBRARY(image_io image_io.cc image_io.h) 21 | TARGET_LINK_LIBRARIES(image_io image png jpeg glog) 22 | 23 | # make the name of debug libraries end in _d. 24 | SET_TARGET_PROPERTIES(image PROPERTIES DEBUG_POSTFIX "_d") 25 | 26 | # installation rules for the library 27 | LIBMV_INSTALL_LIB(image) 28 | 29 | MACRO (IMAGE_TEST NAME) 30 | LIBMV_TEST(${NAME} image) 31 | ENDMACRO (IMAGE_TEST) 32 | 33 | IMAGE_TEST(array_nd) 34 | IMAGE_TEST(blob_response) 35 | IMAGE_TEST(convolve) 36 | IMAGE_TEST(derivative) 37 | IMAGE_TEST(filtered_sequence) 38 | IMAGE_TEST(image) 39 | IMAGE_TEST(image_io) 40 | IMAGE_TEST(image_pyramid) 41 | IMAGE_TEST(image_sequence_filters) 42 | IMAGE_TEST(image_sequence_io) 43 | IMAGE_TEST(image_drawing) 44 | IMAGE_TEST(image_converter) 45 | IMAGE_TEST(image_transform_linear) 46 | IMAGE_TEST(integral_image) 47 | IMAGE_TEST(lru_cache) 48 | IMAGE_TEST(non_maximal_suppression) 49 | IMAGE_TEST(pyramid_sequence) 50 | IMAGE_TEST(sample) 51 | IMAGE_TEST(surf) 52 | IMAGE_TEST(tuple) 53 | -------------------------------------------------------------------------------- /src/libmv/image/image.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include 22 | 23 | #include "libmv/image/image.h" 24 | 25 | namespace libmv { 26 | 27 | // TODO(keir): put something useful here! 28 | 29 | } // namespace libmv 30 | -------------------------------------------------------------------------------- /src/libmv/image/image_pyramid.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_IMAGE_IMAGE_PYRAMID_H 22 | #define LIBMV_IMAGE_IMAGE_PYRAMID_H 23 | 24 | #include "libmv/image/image.h" 25 | 26 | namespace libmv { 27 | 28 | class ImagePyramid { 29 | public: 30 | virtual ~ImagePyramid() {} 31 | virtual const FloatImage &Level(int i) = 0; 32 | virtual int NumLevels() const = 0; 33 | virtual int MemorySizeInBytes() const = 0; 34 | }; 35 | 36 | ImagePyramid *MakeImagePyramid(const FloatImage &image, 37 | int num_levels, 38 | double sigma); 39 | } // namespace libmv 40 | 41 | #endif // LIBMV_IMAGE_IMAGE_PYRAMID_H 42 | -------------------------------------------------------------------------------- /src/libmv/image/image_pyramid_test.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include "libmv/image/image.h" 22 | #include "libmv/image/image_pyramid.h" 23 | #include "testing/testing.h" 24 | 25 | using libmv::Array3Df; 26 | using libmv::ImagePyramid; 27 | using libmv::MakeImagePyramid; 28 | 29 | namespace { 30 | 31 | TEST(ImagePyramid, Init) { 32 | Array3Df image(32,32); 33 | image.Fill(1); 34 | ImagePyramid *ip = MakeImagePyramid(image, 2, 0.9); 35 | 36 | EXPECT_EQ(ip->NumLevels(), 2); 37 | EXPECT_NEAR(ip->Level(0)(16,16), 1, 1e-7); 38 | EXPECT_NEAR(ip->Level(1)(8,8), 1, 1e-7); 39 | delete ip; 40 | } 41 | 42 | } // namespace 43 | -------------------------------------------------------------------------------- /src/libmv/image/image_sequence.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include 22 | #include 23 | #include 24 | 25 | #include "libmv/image/image.h" 26 | #include "libmv/image/image_sequence.h" 27 | 28 | namespace libmv { 29 | 30 | ImageSequence::~ImageSequence() {} 31 | Array3Df *ImageSequence::GetFloatImage(int i) { 32 | Image *image = GetImage(i); 33 | assert(image); 34 | return image->AsArray3Df(); 35 | } 36 | ImageCache *ImageSequence::Cache() { 37 | return NULL; 38 | } 39 | 40 | } // namespace libmv 41 | -------------------------------------------------------------------------------- /src/libmv/image/image_sequence_io.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_IMAGE_IMAGE_SEQUENCE_IO_H_ 22 | #define LIBMV_IMAGE_IMAGE_SEQUENCE_IO_H_ 23 | 24 | #include 25 | #include 26 | 27 | namespace libmv { 28 | 29 | class ImageSequence; 30 | class ImageCache; 31 | 32 | // An image sequence loaded from disk. Images in the sequerce are float images. 33 | ImageSequence *ImageSequenceFromFiles(const std::vector &filenames, 34 | ImageCache *cache); 35 | 36 | // TODO(keir): Add a from AVI or from MOV here. 37 | 38 | } // namespace libmv 39 | 40 | #endif // LIBMV_IMAGE_IMAGE_SEQUENCE_IO_H_ 41 | -------------------------------------------------------------------------------- /src/libmv/image/image_test.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include 22 | 23 | #include "libmv/image/image.h" 24 | #include "testing/testing.h" 25 | 26 | using libmv::Image; 27 | using libmv::Array3Df; 28 | 29 | namespace { 30 | 31 | TEST(Image, SimpleImageAccessors) { 32 | Array3Df *array = new Array3Df(2,3); 33 | Image image(array); 34 | EXPECT_EQ(array, image.AsArray3Df()); 35 | EXPECT_TRUE(NULL == image.AsArray3Du()); 36 | } 37 | 38 | TEST(Image, MemorySizeInBytes) { 39 | Array3Df *array = new Array3Df(2,3); 40 | Image image(array); 41 | int size = sizeof(image) + array->MemorySizeInBytes(); 42 | EXPECT_EQ(size, image.MemorySizeInBytes()); 43 | } 44 | 45 | } // namespace 46 | -------------------------------------------------------------------------------- /src/libmv/image/image_test/two_pixels.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/libmv/image/image_test/two_pixels.jpg -------------------------------------------------------------------------------- /src/libmv/image/image_test/two_pixels.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/libmv/image/image_test/two_pixels.pgm -------------------------------------------------------------------------------- /src/libmv/image/image_test/two_pixels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/libmv/image/image_test/two_pixels.png -------------------------------------------------------------------------------- /src/libmv/image/image_test/two_pixels.ppm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/libmv/image/image_test/two_pixels.ppm -------------------------------------------------------------------------------- /src/libmv/image/image_test/two_pixels_gray.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/libmv/image/image_test/two_pixels_gray.pgm -------------------------------------------------------------------------------- /src/libmv/logging/logging.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008, 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_LOGGING_LOGGING_H 22 | #define LIBMV_LOGGING_LOGGING_H 23 | 24 | #include "third_party/glog/src/glog/logging.h" 25 | 26 | #define LG LOG(INFO) 27 | #define V0 LOG(INFO) 28 | #define V1 LOG(INFO) 29 | #define V2 LOG(INFO) 30 | 31 | #endif // LIBMV_LOGGING_LOGGING_H 32 | -------------------------------------------------------------------------------- /src/libmv/multiview/affine_kernel.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2010 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include "libmv/multiview/affine_kernel.h" 22 | #include "libmv/multiview/affine.h" 23 | 24 | namespace libmv { 25 | namespace affine { 26 | namespace affine2D { 27 | namespace kernel { 28 | 29 | void ThreePointSolver::Solve(const Mat &x1, const Mat &x2, vector *Hs) { 30 | Mat3 M; 31 | if (Affine2DFromCorrespondencesLinear(x1, x2, &M)) { 32 | Hs->push_back(M); 33 | } 34 | } 35 | 36 | } // namespace kernel 37 | } // namespace affine2D 38 | } // namespace affine 39 | } // namespace libmv 40 | -------------------------------------------------------------------------------- /src/libmv/multiview/euclidean_kernel.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include "libmv/multiview/euclidean_kernel.h" 22 | #include "libmv/multiview/euclidean.h" 23 | 24 | namespace libmv { 25 | namespace euclidean { 26 | namespace euclidean2D { 27 | namespace kernel { 28 | 29 | void TwoPointSolver::Solve(const Mat &x1, const Mat &x2, vector *Hs) { 30 | Mat3 M; 31 | if (Euclidean2DFromCorrespondencesLinear(x1,x2, &M)) { 32 | Hs->push_back(M); 33 | } 34 | } 35 | 36 | } // namespace kernel 37 | } // namespace euclidean2D 38 | } // namespace euclidean 39 | } // namespace libmv 40 | -------------------------------------------------------------------------------- /src/libmv/multiview/fundamental_7point_coeffs.py: -------------------------------------------------------------------------------- 1 | import sympy 2 | 3 | F1 = sympy.Matrix([sympy.symbols('abcdefghi')]).reshape(3,3) 4 | F2 = sympy.Matrix([sympy.symbols('jklmnopqr')]).reshape(3,3) 5 | z = sympy.Symbol('z') 6 | 7 | equation = (F1 + z*F2).det() # == 0 8 | d = equation.as_poly(z).as_dict() 9 | 10 | print ' // Coefficients in ascending powers of alpha, i.e. P[N]*x^N.' 11 | print ' double P[4] = {' 12 | for i in range(4): 13 | print ' %s,' % d[(i,)] 14 | print ' }' 15 | -------------------------------------------------------------------------------- /src/libmv/multiview/homography_kernel.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2008, 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include "libmv/multiview/homography_kernel.h" 22 | 23 | #include "libmv/logging/logging.h" 24 | #include "libmv/multiview/homography.h" 25 | 26 | namespace libmv { 27 | namespace homography { 28 | namespace homography2D { 29 | namespace kernel { 30 | 31 | void FourPointSolver::Solve(const Mat &x, const Mat &y, vector *Hs) { 32 | Mat3 M; 33 | if (Homography2DFromCorrespondencesLinear(x,y, &M)) { 34 | Hs->push_back(M); 35 | } 36 | } 37 | 38 | } // namespace kernel 39 | } // namespace homography2D 40 | } // namespace homography 41 | } // namespace libmv 42 | -------------------------------------------------------------------------------- /src/libmv/multiview/panography_coeffs.py: -------------------------------------------------------------------------------- 1 | # Minimal Solutions for Panoramic Stitching. M. Brown, R. Hartley and D. Nister. 2 | # International Conference on Computer Vision and Pattern Recognition 3 | # (CVPR2007). Minneapolis, June 2007. 4 | 5 | import sympy 6 | 7 | f2, a12, a1, a2, b12, b1, b2 = sympy.symbols('f2 a12 a1 a2 b12 b1 b2') 8 | 9 | # Equation 12 from the brown paper; see panography.h 10 | equation_12 = ((a12 + f2)**2 * (b1 + f2) * (b2 + f2) - 11 | (b12 + f2)**2 * (a1 + f2) * (a2 + f2)) 12 | 13 | d = equation_12.as_poly(f2).as_dict() 14 | 15 | print ' // Coefficients in ascending powers of alpha, i.e. P[N]*x^N.' 16 | print ' double P[4] = {' 17 | for i in range(4): 18 | print ' ', sympy.printing.ccode(d[(i,)]) 19 | print ' }' 20 | 21 | # As long as Python code do not return the correct value 22 | # I prefer use "Xcas Computer Algebra System" 23 | # http://www-fourier.ujf-grenoble.fr/~parisse/giac.html 24 | 25 | # Solution for the focal length of a pair of images from a rotating camera. 26 | # comment(" Define the base equation that share the Focal length 'f' ") 27 | # FocalSolver:=(a12+f)^2 / (( a1+f)*(a2+f)) - (b12+f)^2 / ((b1+f)*(b2+f)); 28 | # comment(" Solve equation=0 with the unknow 'f' ") 29 | # solve(FocalSolver=0,f); 30 | -------------------------------------------------------------------------------- /src/libmv/multiview/robust_estimation.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | #include "libmv/multiview/robust_estimation.h" 27 | #include "libmv/numeric/numeric.h" 28 | 29 | namespace libmv { 30 | 31 | } // namespace libmv 32 | -------------------------------------------------------------------------------- /src/libmv/multiview/similarity_kernel.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include "libmv/multiview/similarity_kernel.h" 22 | #include "libmv/multiview/similarity.h" 23 | 24 | namespace libmv { 25 | namespace similarity { 26 | namespace similarity2D { 27 | namespace kernel { 28 | 29 | void TwoPointSolver::Solve(const Mat &x1, const Mat &x2, vector *Hs) { 30 | Mat3 M; 31 | if (Similarity2DFromCorrespondencesLinear(x1,x2, &M)) { 32 | Hs->push_back(M); 33 | } 34 | } 35 | 36 | } // namespace kernel 37 | } // namespace similarity2D 38 | } // namespace similarity 39 | } // namespace libmv 40 | -------------------------------------------------------------------------------- /src/libmv/multiview/structure.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2010 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include "libmv/multiview/structure.h" 22 | 23 | namespace libmv { 24 | 25 | Structure::Structure() { 26 | } 27 | 28 | Structure::~Structure() { 29 | } 30 | 31 | PointStructure::PointStructure() { 32 | } 33 | 34 | PointStructure::PointStructure(const Vec3 &coords) { 35 | set_coords_affine(coords); 36 | } 37 | 38 | PointStructure::PointStructure(const Vec4 &coords) : coords_(coords) { 39 | } 40 | 41 | PointStructure::~PointStructure() { 42 | } 43 | 44 | } // namespace libmv 45 | 46 | -------------------------------------------------------------------------------- /src/libmv/multiview/triangulation.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_MULTIVIEW_TRIANGULATION_H_ 22 | #define LIBMV_MULTIVIEW_TRIANGULATION_H_ 23 | 24 | #include "libmv/numeric/numeric.h" 25 | 26 | namespace libmv { 27 | 28 | void TriangulateDLT(const Mat34 &P1, const Vec2 &x1, 29 | const Mat34 &P2, const Vec2 &x2, 30 | Vec4 *X_homogeneous); 31 | 32 | void TriangulateDLT(const Mat34 &P1, const Vec2 &x1, 33 | const Mat34 &P2, const Vec2 &x2, 34 | Vec3 *X_euclidean); 35 | 36 | } // namespace libmv 37 | 38 | #endif // LIBMV_MULTIVIEW_TRIANGULATION_H_ 39 | -------------------------------------------------------------------------------- /src/libmv/numeric/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # define the source files 2 | SET(NUMERIC_SRC numeric.cc 3 | poly.cc) 4 | 5 | # define the header files (make the headers appear in IDEs.) 6 | FILE(GLOB NUMERIC_HDRS *.h) 7 | 8 | ADD_LIBRARY(numeric ${NUMERIC_SRC} ${NUMERIC_HDRS}) 9 | 10 | TARGET_LINK_LIBRARIES(numeric) 11 | 12 | # make the name of debug libraries end in _d. 13 | SET_TARGET_PROPERTIES(numeric PROPERTIES DEBUG_POSTFIX "_d") 14 | 15 | # installation rules for the library 16 | LIBMV_INSTALL_LIB(numeric) 17 | 18 | LIBMV_TEST(numeric numeric) 19 | LIBMV_TEST(tinyvector numeric) 20 | LIBMV_TEST(poly numeric) 21 | LIBMV_TEST(function_derivative numeric) 22 | LIBMV_TEST(levenberg_marquardt numeric) 23 | LIBMV_TEST(dogleg numeric) 24 | -------------------------------------------------------------------------------- /src/libmv/numeric/poly.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | // 21 | // Routines for solving polynomials. 22 | 23 | // TODO(keir): Add a solver for degree > 3 polynomials. 24 | -------------------------------------------------------------------------------- /src/libmv/numeric/tinyvector.cc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/libmv/numeric/tinyvector.cc -------------------------------------------------------------------------------- /src/libmv/optimize/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | LIBMV_TEST(jet numeric) 2 | -------------------------------------------------------------------------------- /src/libmv/reconstruction/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # define the source files 2 | SET(RECONSTRUCTION_SRC euclidean_reconstruction.cc 3 | export_blender.cc 4 | export_ply.cc 5 | image_selection.cc 6 | keyframe_selection.cc 7 | mapping.cc 8 | optimization.cc 9 | projective_reconstruction.cc 10 | reconstruction.cc 11 | tools.cc) 12 | 13 | # define the header files (make the headers appear in IDEs.) 14 | FILE(GLOB RECONSTRUCTION_HDRS *.h) 15 | 16 | ADD_LIBRARY(reconstruction ${RECONSTRUCTION_SRC} ${RECONSTRUCTION_HDRS}) 17 | 18 | TARGET_LINK_LIBRARIES(reconstruction camera correspondence multiview numeric V3D colamd ldl glog) 19 | 20 | # make the name of debug libraries end in _d. 21 | SET_TARGET_PROPERTIES(reconstruction PROPERTIES DEBUG_POSTFIX "_d") 22 | 23 | # installation rules for the library 24 | LIBMV_INSTALL_LIB(reconstruction) 25 | 26 | MACRO (RECONSTRUCTION_TEST NAME) 27 | LIBMV_TEST(${NAME} "reconstruction;multiview_test_data;camera;correspondence;multiview;numeric;glog") 28 | ENDMACRO (RECONSTRUCTION_TEST) 29 | 30 | RECONSTRUCTION_TEST(euclidean_reconstruction) 31 | -------------------------------------------------------------------------------- /src/libmv/reconstruction/export_blender.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2010 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_RECONSTRUCTION_EXPORT_BLENDER_H_ 22 | #define LIBMV_RECONSTRUCTION_EXPORT_BLENDER_H_ 23 | 24 | #include "libmv/reconstruction/reconstruction.h" 25 | 26 | namespace libmv { 27 | // Exports the reconstruction in a Blender script format file 28 | void ExportToBlenderScript(const Reconstruction &reconstruct, 29 | std::string out_file_name); 30 | } // namespace libmv 31 | 32 | #endif // LIBMV_RECONSTRUCTION_EXPORT_BLENDER_H_ 33 | -------------------------------------------------------------------------------- /src/libmv/reconstruction/export_ply.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2010 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef LIBMV_RECONSTRUCTION_EXPORT_PLY_H_ 22 | #define LIBMV_RECONSTRUCTION_EXPORT_PLY_H_ 23 | 24 | #include "libmv/reconstruction/reconstruction.h" 25 | 26 | namespace libmv { 27 | // Exports the reconstruction in a PLY format file 28 | void ExportToPLY(const Reconstruction &reconstruct, std::string out_file_name); 29 | } // namespace libmv 30 | 31 | #endif // LIBMV_RECONSTRUCTION_EXPORT_PLY_H_ 32 | -------------------------------------------------------------------------------- /src/libmv/reconstruction/reconstruction.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2010 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include "libmv/reconstruction/reconstruction.h" 22 | 23 | namespace libmv { 24 | 25 | } // namespace libmv 26 | -------------------------------------------------------------------------------- /src/libmv/reconstruction/reconstruction_test.cc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/libmv/reconstruction/reconstruction_test.cc -------------------------------------------------------------------------------- /src/libmv/scene_graph/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | LIBMV_TEST(scene_graph "") 2 | LIBMV_TEST(scene_graph_simple "") 3 | -------------------------------------------------------------------------------- /src/libmv/scene_graph/scene_graph.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include 22 | 23 | #include "libmv/scene_graph/scene_graph.h" 24 | 25 | using std::list; 26 | 27 | namespace libmv { 28 | 29 | 30 | 31 | } // namespace libmv 32 | -------------------------------------------------------------------------------- /src/libmv/simple_pipeline/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET(SIMPLE_PIPELINE_SRC 2 | resect.cc 3 | intersect.cc 4 | bundle.cc 5 | initialize_reconstruction.cc 6 | pipeline.cc 7 | reconstruction.cc 8 | camera_intrinsics.cc 9 | tracks.cc 10 | uncalibrated_reconstructor.cc 11 | autocalibrate.cc) 12 | 13 | # Define the header files so that they appear in IDEs. 14 | FILE(GLOB SIMPLE_PIPELINE_HDRS *.h) 15 | 16 | ADD_LIBRARY(simple_pipeline ${SIMPLE_PIPELINE_SRC} ${SIMPLE_PIPELINE_HDRS}) 17 | 18 | TARGET_LINK_LIBRARIES(simple_pipeline V3D multiview) 19 | 20 | # Make the name of debug libraries end in _d. 21 | SET_TARGET_PROPERTIES(simple_pipeline PROPERTIES DEBUG_POSTFIX "_d") 22 | 23 | LIBMV_INSTALL_LIB(simple_pipeline) 24 | 25 | MACRO (SIMPLE_PIPELINE_TEST NAME) 26 | LIBMV_TEST(${NAME} "simple_pipeline") 27 | ENDMACRO (SIMPLE_PIPELINE_TEST) 28 | 29 | SIMPLE_PIPELINE_TEST(camera_intrinsics) 30 | -------------------------------------------------------------------------------- /src/libmv/tools/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # define the source files 2 | SET(TOOLS_SRC ExifReader.cc) 3 | 4 | # define the header files (make the headers appear in IDEs.) 5 | FILE(GLOB TOOLS_HDRS *.h) 6 | 7 | ADD_LIBRARY(tools ${TOOLS_SRC} ${TOOLS_HDRS}) 8 | 9 | TARGET_LINK_LIBRARIES(tools OpenExif) 10 | 11 | # make the name of debug libraries end in _d. 12 | SET_TARGET_PROPERTIES(tools PROPERTIES DEBUG_POSTFIX "_d") 13 | 14 | # installation rules for the library 15 | LIBMV_INSTALL_LIB(tools) 16 | -------------------------------------------------------------------------------- /src/libmv/tools/tool.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | // 21 | // Libmv specific init for tools. In particular, get logging and flags set up. 22 | 23 | 24 | #ifndef LIBMV_TOOLS_TOOL_H_ 25 | #define LIBMV_TOOLS_TOOL_H_ 26 | 27 | #include 28 | #include 29 | 30 | #include "third_party/gflags/gflags.h" 31 | #include "third_party/glog/src/glog/logging.h" 32 | 33 | namespace libmv { 34 | 35 | inline void Init(const char *usage, int *argc, char ***argv) { 36 | google::InitGoogleLogging((*argv)[0]); 37 | google::SetUsageMessage(std::string(usage)); 38 | google::ParseCommandLineFlags(argc, argv, true); 39 | } 40 | 41 | } // namespace libmv 42 | 43 | #endif // ifndef LIBMV_TOOLS_TOOL_H_ 44 | -------------------------------------------------------------------------------- /src/libmv/tracking/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | SET(TRACKING_SRC 2 | klt_region_tracker.cc 3 | pyramid_region_tracker.cc 4 | retrack_region_tracker.cc 5 | trklt_region_tracker.cc) 6 | 7 | # Define the header files so that they appear in IDEs. 8 | FILE(GLOB TRACKING_HDRS *.h) 9 | 10 | ADD_LIBRARY(tracking ${TRACKING_SRC} ${TRACKING_HDRS}) 11 | 12 | TARGET_LINK_LIBRARIES(tracking image glog) 13 | 14 | # Make the name of debug libraries end in _d. 15 | SET_TARGET_PROPERTIES(tracking PROPERTIES DEBUG_POSTFIX "_d") 16 | 17 | LIBMV_INSTALL_LIB(tracking) 18 | 19 | LIBMV_TEST(klt_region_tracker "tracking;image;numeric") 20 | LIBMV_TEST(pyramid_region_tracker "tracking;image;numeric") 21 | -------------------------------------------------------------------------------- /src/testing/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_LIBRARY(libmv_test_main testing_main.cc) 2 | TARGET_LINK_LIBRARIES(libmv_test_main gtest gflags glog ) 3 | 4 | # make the name of debug libraries end in _d. 5 | SET_TARGET_PROPERTIES(libmv_test_main PROPERTIES DEBUG_POSTFIX "_d") 6 | -------------------------------------------------------------------------------- /src/third_party/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY(colamd) 2 | #ADD_SUBDIRECTORY(daisy) 3 | #ADD_SUBDIRECTORY(fast) 4 | #ADD_SUBDIRECTORY(flann) 5 | ADD_SUBDIRECTORY(glog) 6 | ADD_SUBDIRECTORY(gtest) 7 | ADD_SUBDIRECTORY(gflags) 8 | ADD_SUBDIRECTORY(ldl) 9 | ADD_SUBDIRECTORY(ssba) 10 | 11 | IF(WIN32 OR APPLE) 12 | ADD_SUBDIRECTORY(jpeg-7) 13 | ENDIF(WIN32 OR APPLE) 14 | 15 | IF (WIN32) 16 | ADD_SUBDIRECTORY(pthreads-w32) 17 | ENDIF (WIN32) 18 | 19 | IF(APPLE) 20 | ADD_SUBDIRECTORY(png) 21 | ADD_SUBDIRECTORY(zlib) 22 | ADD_SUBDIRECTORY(OpenExif) 23 | ENDIF(APPLE) 24 | 25 | #Installation macro for all third parties headers 26 | LIBMV_INSTALL_ALL_HEADERS() 27 | -------------------------------------------------------------------------------- /src/third_party/MserDetector/README.libmv: -------------------------------------------------------------------------------- 1 | Project: MserDetector 2 | URL: https://code.ros.org/svn/opencv/trunk/opencv/modules/features2d/ 3 | License: BSD 4 | Upstream version: Revision 3399, Trunk 25 July 2010 5 | 6 | Local modifications: 7 | * change name from mser.cpp to cvMserDetector.h 8 | 9 | * Code changes : 10 | * Remove dependancies over Opencv 11 | * Change to fit the libmv bases classes 12 | * Make function template and use default parameter 13 | * Code factoring of icvMSERMergeComp 14 | * Add function to draw mser pixels and fitted ellipses 15 | * Remove code to extract color mser 16 | * Simplify the code : 17 | * - While merging the component stack we could not create a new component. 18 | -------------------------------------------------------------------------------- /src/third_party/MserDetector/licence.txt: -------------------------------------------------------------------------------- 1 | /* Redistribution and use in source and binary forms, with or 2 | * without modification, are permitted provided that the following 3 | * conditions are met: 4 | * Redistributions of source code must retain the above 5 | * copyright notice, this list of conditions and the following 6 | * disclaimer. 7 | * Redistributions in binary form must reproduce the above 8 | * copyright notice, this list of conditions and the following 9 | * disclaimer in the documentation and/or other materials 10 | * provided with the distribution. 11 | * The name of Contributor may not be used to endorse or 12 | * promote products derived from this software without 13 | * specific prior written permission. 14 | * 15 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 16 | * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 17 | * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 23 | * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 25 | * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 26 | * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | * OF SUCH DAMAGE. 28 | * Copyright© 2009, Liu Liu All rights reserved. 29 | * 30 | * OpenCV functions for MSER extraction 31 | */ -------------------------------------------------------------------------------- /src/third_party/OpenExif/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | project(OpenExif) 2 | ADD_SUBDIRECTORY(src) 3 | -------------------------------------------------------------------------------- /src/third_party/OpenExif/README.libmv: -------------------------------------------------------------------------------- 1 | Project: OpenExif 2 | URL: http://sourceforge.net/projects/openexif/ 3 | License: BSD 4 | Upstream version: 2.1.4 released the 2010-01-26 5 | 6 | Local modifications: 7 | * Remove makefiles build system. 8 | 9 | * Code changes : 10 | * Add CMake Build system 11 | * Fix warnings and errors at compilation time 12 | 13 | -------------------------------------------------------------------------------- /src/third_party/OpenExif/license.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2000-2009, Eastman Kodak Company 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification,are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, 8 | this list of conditions and the following disclaimer. 9 | * Redistributions in binary form must reproduce the above copyright notice, 10 | this list of conditions and the following disclaimer in the documentation 11 | and/or other materials provided with the distribution. 12 | * Neither the name of the Eastman Kodak Company nor the names of its 13 | contributors may be used to endorse or promote products derived from this 14 | software without specific prior written permission. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 20 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 22 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 23 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | 27 | -------------------------------------------------------------------------------- /src/third_party/OpenExif/src/OpenExifJpeg/OpenExif_jchuff.h: -------------------------------------------------------------------------------- 1 | /* 2 | * jchuff.h 3 | * 4 | * Copyright (C) 1991-1997, Thomas G. Lane. 5 | * This file is part of the Independent OE_JPEG Group's software. 6 | * For conditions of distribution and use, see the accompanying README file. 7 | * 8 | * This file contains declarations for Huffman entropy encoding routines 9 | * that are shared between the sequential encoder (jchuff.c) and the 10 | * progressive encoder (jcphuff.c). No other modules need to see these. 11 | */ 12 | 13 | /* The legal range of a DCT coefficient is 14 | * -1024 .. +1023 for 8-bit data; 15 | * -16384 .. +16383 for 12-bit data. 16 | * Hence the magnitude should always fit in 10 or 14 bits respectively. 17 | */ 18 | 19 | #if BITS_IN_JSAMPLE == 8 20 | #define MAX_COEF_BITS 10 21 | #else 22 | #define MAX_COEF_BITS 14 23 | #endif 24 | 25 | /* Derived data constructed for each Huffman table */ 26 | 27 | typedef struct { 28 | unsigned int ehufco[256]; /* code for each symbol */ 29 | char ehufsi[256]; /* length of code for each symbol */ 30 | /* If no code has been allocated for a symbol S, ehufsi[S] contains 0 */ 31 | } c_derived_tbl; 32 | 33 | /* Short forms of external names for systems with brain-damaged linkers. */ 34 | 35 | #ifdef NEED_SHORT_EXTERNAL_NAMES 36 | #define openexif_jpeg_make_c_derived_tbl oe_jMkCDerived 37 | #define openexif_jpeg_gen_optimal_table oe_jGenOptTbl 38 | #endif /* NEED_SHORT_EXTERNAL_NAMES */ 39 | 40 | /* Expand a Huffman table definition into the derived format */ 41 | EXTERN(void) openexif_jpeg_make_c_derived_tbl 42 | OE_JPP((oe_j_compress_ptr cinfo, boolean isDC, int tblno, 43 | c_derived_tbl ** pdtbl)); 44 | 45 | /* Generate an optimal table definition given the specified counts */ 46 | EXTERN(void) openexif_jpeg_gen_optimal_table 47 | OE_JPP((oe_j_compress_ptr cinfo, OE_JHUFF_TBL * htbl, long freq[])); 48 | -------------------------------------------------------------------------------- /src/third_party/OpenExif/src/OpenExifJpeg/OpenExif_jconfig.h: -------------------------------------------------------------------------------- 1 | #ifndef OPENEXIF_JCONFIG_H 2 | #define OPENEXIF_JCONFIG_H 3 | 4 | /* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 95 or NT. */ 5 | /* see jconfig.doc for explanations */ 6 | 7 | #define HAVE_PROTOTYPES 8 | #define HAVE_UNSIGNED_CHAR 9 | #define HAVE_UNSIGNED_SHORT 10 | /* #define void char */ 11 | /* #define const */ 12 | #undef CHAR_IS_UNSIGNED 13 | #define HAVE_STDDEF_H 14 | #define HAVE_STDLIB_H 15 | #undef NEED_BSD_STRINGS 16 | #undef NEED_SYS_TYPES_H 17 | #undef NEED_SHORT_EXTERNAL_NAMES 18 | #undef INCOMPLETE_TYPES_BROKEN 19 | 20 | /* Define "boolean" as unsigned char, not int, per Windows custom */ 21 | #ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ 22 | typedef unsigned char boolean; 23 | #endif 24 | #define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */ 25 | 26 | 27 | #ifdef OE_JPEG_INTERNALS 28 | 29 | #undef RIGHT_SHIFT_IS_UNSIGNED 30 | 31 | #endif /* OE_JPEG_INTERNALS */ 32 | 33 | #ifdef OE_JPEG_CJPEG_DJPEG 34 | 35 | #define BMP_SUPPORTED /* BMP image file format */ 36 | #define GIF_SUPPORTED /* GIF image file format */ 37 | #define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */ 38 | #undef RLE_SUPPORTED /* Utah RLE image file format */ 39 | #define TARGA_SUPPORTED /* Targa image file format */ 40 | 41 | #define TWO_FILE_COMMANDLINE /* optional */ 42 | #define USE_SETMODE /* Microsoft has setmode() */ 43 | #undef NEED_SIGNAL_CATCHER 44 | #undef DONT_USE_B_MODE 45 | #undef PROGRESS_REPORT /* optional */ 46 | 47 | #endif /* OE_JPEG_CJPEG_DJPEG */ 48 | 49 | #endif 50 | 51 | -------------------------------------------------------------------------------- /src/third_party/OpenExif/src/OpenExifJpeg/OpenExif_jversion.h: -------------------------------------------------------------------------------- 1 | /* 2 | * jversion.h 3 | * 4 | * Copyright (C) 1991-1998, Thomas G. Lane. 5 | * This file is part of the Independent OE_JPEG Group's software. 6 | * For conditions of distribution and use, see the accompanying README file. 7 | * 8 | * This file contains software version identification. 9 | */ 10 | 11 | 12 | #define OE_JVERSION "6b 27-Mar-1998" 13 | 14 | #define OE_JCOPYRIGHT "Copyright (C) 1998, Thomas G. Lane" 15 | -------------------------------------------------------------------------------- /src/third_party/StarDetector/README.libmv: -------------------------------------------------------------------------------- 1 | Project: StarDetector 2 | URL: http://sourceforge.net/projects/opencvlibrary/ 3 | License: BSD 4 | Upstream version: 2.0, released 2009-10-01 5 | 6 | Local modifications: 7 | * change name from cvstardetector.cpp to cvStarDetector.h 8 | 9 | * Code changes : 10 | * Remove dependancies over Opencv 11 | * Change to fit the libmv bases classes 12 | * Make function template and use default parameter 13 | * Minor memory optimization 14 | * Fix crash issue with very small image 15 | 16 | -------------------------------------------------------------------------------- /src/third_party/colamd/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include_directories(../ufconfig) 2 | include_directories(Include) 3 | add_library(colamd Source/colamd.c Source/colamd_global.c) 4 | 5 | LIBMV_INSTALL_THIRD_PARTY_LIB(colamd) -------------------------------------------------------------------------------- /src/third_party/colamd/README.libmv: -------------------------------------------------------------------------------- 1 | Project: COLAMD 2 | URL: http://www.cise.ufl.edu/research/sparse/colamd/ 3 | License: LGPL2.1 4 | Upstream version: 2.7.1 (despite the ChangeLog saying 2.7.0) 5 | 6 | Local modifications: 7 | 8 | * Deleted everything except core library files, license, README, ChangeLog. 9 | -------------------------------------------------------------------------------- /src/third_party/colamd/Source/colamd_global.c: -------------------------------------------------------------------------------- 1 | /* ========================================================================== */ 2 | /* === colamd_global.c ====================================================== */ 3 | /* ========================================================================== */ 4 | 5 | /* ---------------------------------------------------------------------------- 6 | * COLAMD, Copyright (C) 2007, Timothy A. Davis. 7 | * See License.txt for the Version 2.1 of the GNU Lesser General Public License 8 | * http://www.cise.ufl.edu/research/sparse 9 | * -------------------------------------------------------------------------- */ 10 | 11 | /* Global variables for COLAMD */ 12 | 13 | #ifndef NPRINT 14 | #ifdef MATLAB_MEX_FILE 15 | #include "mex.h" 16 | int (*colamd_printf) (const char *, ...) = mexPrintf ; 17 | #else 18 | #include 19 | int (*colamd_printf) (const char *, ...) = printf ; 20 | #endif 21 | #else 22 | int (*colamd_printf) (const char *, ...) = ((void *) 0) ; 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /src/third_party/daisy/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | project(daisy) 2 | 3 | check_symbol_exists(mmap64 "sys/mman.h" HAVE_MMAP64) 4 | if(${HAVE_MMAP64}) 5 | message("System has large file support.") 6 | add_definitions(-DHAVE_LARGE_FILE_SUPPORT) 7 | else() 8 | message("System hasn't large file support.") 9 | endif() 10 | 11 | include_directories(include) 12 | 13 | # Make the headers appear in IDEs. 14 | file(GLOB daisy_hdrs include/kutility/*.h include/daisy/*.h) 15 | 16 | set(daisy_srcs 17 | src/daisy.cpp 18 | src/corecv.cpp 19 | src/image_io_bmp.cpp 20 | src/image_io_pnm.cpp 21 | src/image_io_png.cpp 22 | src/image_io_jpeg.cpp 23 | src/image_manipulation.cpp 24 | src/progress_bar.cpp 25 | src/general.cpp 26 | src/interaction.cpp 27 | ) 28 | 29 | add_library(daisy ${daisy_srcs} ${daisy_hdrs}) 30 | 31 | LIBMV_INSTALL_THIRD_PARTY_LIB(daisy) 32 | -------------------------------------------------------------------------------- /src/third_party/daisy/README.libmv: -------------------------------------------------------------------------------- 1 | Project: Daisy 2 | URL: http://cvlab.epfl.ch/~tola/daisy.html 3 | License: BSD 4 | Upstream version: 1.8.0, released 18-August-2009 5 | 6 | Local modifications: 7 | * Remove native makefile original build system. 8 | * Remove Doxyfile file. 9 | * Remove change.log => http://cvlab.epfl.ch/~tola/research/08/daisy/change.log 10 | 11 | * Code changes : 12 | * include/kutility/math.h => unused fonction parameter fix. 13 | * src/daisy.cpp => error compilation fix display function usage with a 2D array. 14 | * src/image_manipulation.cpp => Add preprocessor to avoid omp compilation directive to be in all compilation mode. 15 | * kutility/kutility.def => fix isnan() on windows platform and OPENMP 'omp' include. 16 | * Change to add use of unused parameter. 17 | * make convolution code better : convolution.h use template inline void convolve_sym 18 | * fix layer issue un daisy.cpp (memory error in valgrind) 19 | * Make it compile on platforms without large file support (mmap64, open64 and friends). 20 | 21 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/Array: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_ARRAY_MODULE_H 2 | #define EIGEN_ARRAY_MODULE_H 3 | 4 | // include Core first to handle Eigen2 support macros 5 | #include "Core" 6 | 7 | #ifndef EIGEN2_SUPPORT 8 | #error The Eigen/Array header does no longer exist in Eigen3. All that functionality has moved to Eigen/Core. 9 | #endif 10 | 11 | #endif // EIGEN_ARRAY_MODULE_H 12 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include(RegexUtils) 2 | test_escape_string_as_regex() 3 | 4 | file(GLOB Eigen_directory_files "*") 5 | 6 | escape_string_as_regex(ESCAPED_CMAKE_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") 7 | 8 | foreach(f ${Eigen_directory_files}) 9 | if(NOT f MATCHES "\\.txt" AND NOT f MATCHES "${ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/[.].+" AND NOT f MATCHES "${ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/src") 10 | list(APPEND Eigen_directory_files_to_install ${f}) 11 | endif() 12 | endforeach(f ${Eigen_directory_files}) 13 | 14 | install(FILES 15 | ${Eigen_directory_files_to_install} 16 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen COMPONENT Devel 17 | ) 18 | 19 | add_subdirectory(src) 20 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/Cholesky: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_CHOLESKY_MODULE_H 2 | #define EIGEN_CHOLESKY_MODULE_H 3 | 4 | #include "Core" 5 | 6 | #include "src/Core/util/DisableStupidWarnings.h" 7 | 8 | namespace Eigen { 9 | 10 | /** \defgroup Cholesky_Module Cholesky module 11 | * 12 | * 13 | * 14 | * This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices. 15 | * Those decompositions are accessible via the following MatrixBase methods: 16 | * - MatrixBase::llt(), 17 | * - MatrixBase::ldlt() 18 | * 19 | * \code 20 | * #include 21 | * \endcode 22 | */ 23 | 24 | #include "src/misc/Solve.h" 25 | #include "src/Cholesky/LLT.h" 26 | #include "src/Cholesky/LDLT.h" 27 | 28 | } // namespace Eigen 29 | 30 | #include "src/Core/util/ReenableStupidWarnings.h" 31 | 32 | #endif // EIGEN_CHOLESKY_MODULE_H 33 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 34 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/Dense: -------------------------------------------------------------------------------- 1 | #include "Core" 2 | #include "LU" 3 | #include "Cholesky" 4 | #include "QR" 5 | #include "SVD" 6 | #include "Geometry" 7 | #include "Eigenvalues" 8 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/Eigen: -------------------------------------------------------------------------------- 1 | #include "Dense" 2 | //#include "Sparse" 3 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/Eigenvalues: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_EIGENVALUES_MODULE_H 2 | #define EIGEN_EIGENVALUES_MODULE_H 3 | 4 | #include "Core" 5 | 6 | #include "src/Core/util/DisableStupidWarnings.h" 7 | 8 | #include "Cholesky" 9 | #include "Jacobi" 10 | #include "Householder" 11 | #include "LU" 12 | 13 | namespace Eigen { 14 | 15 | /** \defgroup Eigenvalues_Module Eigenvalues module 16 | * 17 | * 18 | * 19 | * This module mainly provides various eigenvalue solvers. 20 | * This module also provides some MatrixBase methods, including: 21 | * - MatrixBase::eigenvalues(), 22 | * - MatrixBase::operatorNorm() 23 | * 24 | * \code 25 | * #include 26 | * \endcode 27 | */ 28 | 29 | #include "src/Eigenvalues/Tridiagonalization.h" 30 | #include "src/Eigenvalues/RealSchur.h" 31 | #include "src/Eigenvalues/EigenSolver.h" 32 | #include "src/Eigenvalues/SelfAdjointEigenSolver.h" 33 | #include "src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h" 34 | #include "src/Eigenvalues/HessenbergDecomposition.h" 35 | #include "src/Eigenvalues/ComplexSchur.h" 36 | #include "src/Eigenvalues/ComplexEigenSolver.h" 37 | #include "src/Eigenvalues/MatrixBaseEigenvalues.h" 38 | 39 | } // namespace Eigen 40 | 41 | #include "src/Core/util/ReenableStupidWarnings.h" 42 | 43 | #endif // EIGEN_EIGENVALUES_MODULE_H 44 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 45 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/Householder: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_HOUSEHOLDER_MODULE_H 2 | #define EIGEN_HOUSEHOLDER_MODULE_H 3 | 4 | #include "Core" 5 | 6 | #include "src/Core/util/DisableStupidWarnings.h" 7 | 8 | namespace Eigen { 9 | 10 | /** \defgroup Householder_Module Householder module 11 | * This module provides Householder transformations. 12 | * 13 | * \code 14 | * #include 15 | * \endcode 16 | */ 17 | 18 | #include "src/Householder/Householder.h" 19 | #include "src/Householder/HouseholderSequence.h" 20 | #include "src/Householder/BlockHouseholder.h" 21 | 22 | } // namespace Eigen 23 | 24 | #include "src/Core/util/ReenableStupidWarnings.h" 25 | 26 | #endif // EIGEN_HOUSEHOLDER_MODULE_H 27 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 28 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/Jacobi: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_JACOBI_MODULE_H 2 | #define EIGEN_JACOBI_MODULE_H 3 | 4 | #include "Core" 5 | 6 | #include "src/Core/util/DisableStupidWarnings.h" 7 | 8 | namespace Eigen { 9 | 10 | /** \defgroup Jacobi_Module Jacobi module 11 | * This module provides Jacobi and Givens rotations. 12 | * 13 | * \code 14 | * #include 15 | * \endcode 16 | * 17 | * In addition to listed classes, it defines the two following MatrixBase methods to apply a Jacobi or Givens rotation: 18 | * - MatrixBase::applyOnTheLeft() 19 | * - MatrixBase::applyOnTheRight(). 20 | */ 21 | 22 | #include "src/Jacobi/Jacobi.h" 23 | 24 | } // namespace Eigen 25 | 26 | #include "src/Core/util/ReenableStupidWarnings.h" 27 | 28 | #endif // EIGEN_JACOBI_MODULE_H 29 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 30 | 31 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/LU: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_LU_MODULE_H 2 | #define EIGEN_LU_MODULE_H 3 | 4 | #include "Core" 5 | 6 | #include "src/Core/util/DisableStupidWarnings.h" 7 | 8 | namespace Eigen { 9 | 10 | /** \defgroup LU_Module LU module 11 | * This module includes %LU decomposition and related notions such as matrix inversion and determinant. 12 | * This module defines the following MatrixBase methods: 13 | * - MatrixBase::inverse() 14 | * - MatrixBase::determinant() 15 | * 16 | * \code 17 | * #include 18 | * \endcode 19 | */ 20 | 21 | #include "src/misc/Solve.h" 22 | #include "src/misc/Kernel.h" 23 | #include "src/misc/Image.h" 24 | #include "src/LU/FullPivLU.h" 25 | #include "src/LU/PartialPivLU.h" 26 | #include "src/LU/Determinant.h" 27 | #include "src/LU/Inverse.h" 28 | 29 | #if defined EIGEN_VECTORIZE_SSE 30 | #include "src/LU/arch/Inverse_SSE.h" 31 | #endif 32 | 33 | #ifdef EIGEN2_SUPPORT 34 | #include "src/Eigen2Support/LU.h" 35 | #endif 36 | 37 | } // namespace Eigen 38 | 39 | #include "src/Core/util/ReenableStupidWarnings.h" 40 | 41 | #endif // EIGEN_LU_MODULE_H 42 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 43 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/LeastSquares: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_REGRESSION_MODULE_H 2 | #define EIGEN_REGRESSION_MODULE_H 3 | 4 | #ifndef EIGEN2_SUPPORT 5 | #error LeastSquares is only available in Eigen2 support mode (define EIGEN2_SUPPORT) 6 | #endif 7 | 8 | // exclude from normal eigen3-only documentation 9 | #ifdef EIGEN2_SUPPORT 10 | 11 | #include "Core" 12 | 13 | #include "src/Core/util/DisableStupidWarnings.h" 14 | 15 | #include "Eigenvalues" 16 | #include "Geometry" 17 | 18 | namespace Eigen { 19 | 20 | /** \defgroup LeastSquares_Module LeastSquares module 21 | * This module provides linear regression and related features. 22 | * 23 | * \code 24 | * #include 25 | * \endcode 26 | */ 27 | 28 | #include "src/Eigen2Support/LeastSquares.h" 29 | 30 | } // namespace Eigen 31 | 32 | #include "src/Core/util/ReenableStupidWarnings.h" 33 | 34 | #endif // EIGEN2_SUPPORT 35 | 36 | #endif // EIGEN_REGRESSION_MODULE_H 37 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/QR: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_QR_MODULE_H 2 | #define EIGEN_QR_MODULE_H 3 | 4 | #include "Core" 5 | 6 | #include "src/Core/util/DisableStupidWarnings.h" 7 | 8 | #include "Cholesky" 9 | #include "Jacobi" 10 | #include "Householder" 11 | 12 | namespace Eigen { 13 | 14 | /** \defgroup QR_Module QR module 15 | * 16 | * 17 | * 18 | * This module provides various QR decompositions 19 | * This module also provides some MatrixBase methods, including: 20 | * - MatrixBase::qr(), 21 | * 22 | * \code 23 | * #include 24 | * \endcode 25 | */ 26 | 27 | #include "src/misc/Solve.h" 28 | #include "src/QR/HouseholderQR.h" 29 | #include "src/QR/FullPivHouseholderQR.h" 30 | #include "src/QR/ColPivHouseholderQR.h" 31 | 32 | #ifdef EIGEN2_SUPPORT 33 | #include "src/Eigen2Support/QR.h" 34 | #endif 35 | 36 | } // namespace Eigen 37 | 38 | #include "src/Core/util/ReenableStupidWarnings.h" 39 | 40 | #ifdef EIGEN2_SUPPORT 41 | #include "Eigenvalues" 42 | #endif 43 | 44 | #endif // EIGEN_QR_MODULE_H 45 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 46 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/QtAlignedMalloc: -------------------------------------------------------------------------------- 1 | 2 | #ifndef EIGEN_QTMALLOC_MODULE_H 3 | #define EIGEN_QTMALLOC_MODULE_H 4 | 5 | #include "Core" 6 | 7 | #if (!EIGEN_MALLOC_ALREADY_ALIGNED) 8 | 9 | #include "src/Core/util/DisableStupidWarnings.h" 10 | 11 | void *qMalloc(size_t size) 12 | { 13 | return Eigen::internal::aligned_malloc(size); 14 | } 15 | 16 | void qFree(void *ptr) 17 | { 18 | Eigen::internal::aligned_free(ptr); 19 | } 20 | 21 | void *qRealloc(void *ptr, size_t size) 22 | { 23 | void* newPtr = Eigen::internal::aligned_malloc(size); 24 | memcpy(newPtr, ptr, size); 25 | Eigen::internal::aligned_free(ptr); 26 | return newPtr; 27 | } 28 | 29 | #include "src/Core/util/ReenableStupidWarnings.h" 30 | 31 | #endif 32 | 33 | #endif // EIGEN_QTMALLOC_MODULE_H 34 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 35 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/SVD: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_SVD_MODULE_H 2 | #define EIGEN_SVD_MODULE_H 3 | 4 | #include "QR" 5 | #include "Householder" 6 | #include "Jacobi" 7 | 8 | #include "src/Core/util/DisableStupidWarnings.h" 9 | 10 | namespace Eigen { 11 | 12 | /** \defgroup SVD_Module SVD module 13 | * 14 | * 15 | * 16 | * This module provides SVD decomposition for (currently) real matrices. 17 | * This decomposition is accessible via the following MatrixBase method: 18 | * - MatrixBase::svd() 19 | * 20 | * \code 21 | * #include 22 | * \endcode 23 | */ 24 | 25 | #include "src/misc/Solve.h" 26 | #include "src/SVD/JacobiSVD.h" 27 | #include "src/SVD/UpperBidiagonalization.h" 28 | 29 | #ifdef EIGEN2_SUPPORT 30 | #include "src/Eigen2Support/SVD.h" 31 | #endif 32 | 33 | } // namespace Eigen 34 | 35 | #include "src/Core/util/ReenableStupidWarnings.h" 36 | 37 | #endif // EIGEN_SVD_MODULE_H 38 | /* vim: set filetype=cpp et sw=2 ts=2 ai: */ 39 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/StdDeque: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Gael Guennebaud 5 | // Copyright (C) 2009 Hauke Heibel 6 | // 7 | // Eigen is free software; you can redistribute it and/or 8 | // modify it under the terms of the GNU Lesser General Public 9 | // License as published by the Free Software Foundation; either 10 | // version 3 of the License, or (at your option) any later version. 11 | // 12 | // Alternatively, you can redistribute it and/or 13 | // modify it under the terms of the GNU General Public License as 14 | // published by the Free Software Foundation; either version 2 of 15 | // the License, or (at your option) any later version. 16 | // 17 | // Eigen is distributed in the hope that it will be useful, but WITHOUT ANY 18 | // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 19 | // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the 20 | // GNU General Public License for more details. 21 | // 22 | // You should have received a copy of the GNU Lesser General Public 23 | // License and a copy of the GNU General Public License along with 24 | // Eigen. If not, see . 25 | 26 | #ifndef EIGEN_STDDEQUE_MODULE_H 27 | #define EIGEN_STDDEQUE_MODULE_H 28 | 29 | #include "Core" 30 | #include 31 | 32 | #if (defined(_MSC_VER) && defined(_WIN64)) /* MSVC auto aligns in 64 bit builds */ 33 | 34 | #define EIGEN_DEFINE_STL_DEQUE_SPECIALIZATION(...) 35 | 36 | #else 37 | 38 | #include "src/StlSupport/StdDeque.h" 39 | 40 | #endif 41 | 42 | #endif // EIGEN_STDDEQUE_MODULE_H 43 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/StdList: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Hauke Heibel 5 | // 6 | // Eigen is free software; you can redistribute it and/or 7 | // modify it under the terms of the GNU Lesser General Public 8 | // License as published by the Free Software Foundation; either 9 | // version 3 of the License, or (at your option) any later version. 10 | // 11 | // Alternatively, you can redistribute it and/or 12 | // modify it under the terms of the GNU General Public License as 13 | // published by the Free Software Foundation; either version 2 of 14 | // the License, or (at your option) any later version. 15 | // 16 | // Eigen is distributed in the hope that it will be useful, but WITHOUT ANY 17 | // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 18 | // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the 19 | // GNU General Public License for more details. 20 | // 21 | // You should have received a copy of the GNU Lesser General Public 22 | // License and a copy of the GNU General Public License along with 23 | // Eigen. If not, see . 24 | 25 | #ifndef EIGEN_STDLIST_MODULE_H 26 | #define EIGEN_STDLIST_MODULE_H 27 | 28 | #include "Core" 29 | #include 30 | 31 | #if (defined(_MSC_VER) && defined(_WIN64)) /* MSVC auto aligns in 64 bit builds */ 32 | 33 | #define EIGEN_DEFINE_STL_LIST_SPECIALIZATION(...) 34 | 35 | #else 36 | 37 | #include "src/StlSupport/StdList.h" 38 | 39 | #endif 40 | 41 | #endif // EIGEN_STDLIST_MODULE_H 42 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/StdVector: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2009 Gael Guennebaud 5 | // Copyright (C) 2009 Hauke Heibel 6 | // 7 | // Eigen is free software; you can redistribute it and/or 8 | // modify it under the terms of the GNU Lesser General Public 9 | // License as published by the Free Software Foundation; either 10 | // version 3 of the License, or (at your option) any later version. 11 | // 12 | // Alternatively, you can redistribute it and/or 13 | // modify it under the terms of the GNU General Public License as 14 | // published by the Free Software Foundation; either version 2 of 15 | // the License, or (at your option) any later version. 16 | // 17 | // Eigen is distributed in the hope that it will be useful, but WITHOUT ANY 18 | // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 19 | // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the 20 | // GNU General Public License for more details. 21 | // 22 | // You should have received a copy of the GNU Lesser General Public 23 | // License and a copy of the GNU General Public License along with 24 | // Eigen. If not, see . 25 | 26 | #ifndef EIGEN_STDVECTOR_MODULE_H 27 | #define EIGEN_STDVECTOR_MODULE_H 28 | 29 | #include "Core" 30 | #include 31 | 32 | #if (defined(_MSC_VER) && defined(_WIN64)) /* MSVC auto aligns in 64 bit builds */ 33 | 34 | #define EIGEN_DEFINE_STL_VECTOR_SPECIALIZATION(...) 35 | 36 | #else 37 | 38 | #include "src/StlSupport/StdVector.h" 39 | 40 | #endif 41 | 42 | #endif // EIGEN_STDVECTOR_MODULE_H 43 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | file(GLOB Eigen_src_subdirectories "*") 2 | escape_string_as_regex(ESCAPED_CMAKE_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") 3 | foreach(f ${Eigen_src_subdirectories}) 4 | if(NOT f MATCHES "\\.txt" AND NOT f MATCHES "${ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/[.].+" ) 5 | add_subdirectory(${f}) 6 | endif() 7 | endforeach() 8 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Cholesky/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Cholesky_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Cholesky_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Cholesky COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Core/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Core_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Core_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Core COMPONENT Devel 6 | ) 7 | 8 | ADD_SUBDIRECTORY(products) 9 | ADD_SUBDIRECTORY(util) 10 | ADD_SUBDIRECTORY(arch) 11 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Core/arch/AltiVec/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Core_arch_AltiVec_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Core_arch_AltiVec_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Core/arch/AltiVec COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Core/arch/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY(SSE) 2 | ADD_SUBDIRECTORY(AltiVec) 3 | ADD_SUBDIRECTORY(NEON) 4 | ADD_SUBDIRECTORY(Default) 5 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Core/arch/Default/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Core_arch_Default_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Core_arch_Default_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Core/arch/Default COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Core/arch/NEON/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Core_arch_NEON_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Core_arch_NEON_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Core/arch/NEON COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Core/arch/SSE/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Core_arch_SSE_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Core_arch_SSE_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Core/arch/SSE COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Core/products/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Core_Product_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Core_Product_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Core/products COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Core/util/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Core_util_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Core_util_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Core/util COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h: -------------------------------------------------------------------------------- 1 | #ifdef EIGEN_WARNINGS_DISABLED 2 | #undef EIGEN_WARNINGS_DISABLED 3 | 4 | #ifndef EIGEN_PERMANENTLY_DISABLE_STUPID_WARNINGS 5 | #ifdef _MSC_VER 6 | #pragma warning( pop ) 7 | #elif defined __INTEL_COMPILER 8 | #pragma warning pop 9 | #elif defined __clang__ 10 | #pragma clang diagnostic pop 11 | #endif 12 | #endif 13 | 14 | #endif // EIGEN_WARNINGS_DISABLED 15 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Eigen2Support/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Eigen2Support_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Eigen2Support_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Eigen2Support COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Eigen2Support/Geometry/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Geometry_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Geometry_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Eigen2Support/Geometry 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Eigen2Support/Macros.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2011 Benoit Jacob 5 | // 6 | // Eigen is free software; you can redistribute it and/or 7 | // modify it under the terms of the GNU Lesser General Public 8 | // License as published by the Free Software Foundation; either 9 | // version 3 of the License, or (at your option) any later version. 10 | // 11 | // Alternatively, you can redistribute it and/or 12 | // modify it under the terms of the GNU General Public License as 13 | // published by the Free Software Foundation; either version 2 of 14 | // the License, or (at your option) any later version. 15 | // 16 | // Eigen is distributed in the hope that it will be useful, but WITHOUT ANY 17 | // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 18 | // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the 19 | // GNU General Public License for more details. 20 | // 21 | // You should have received a copy of the GNU Lesser General Public 22 | // License and a copy of the GNU General Public License along with 23 | // Eigen. If not, see . 24 | 25 | #ifndef EIGEN2_MACROS_H 26 | #define EIGEN2_MACROS_H 27 | 28 | #define ei_assert eigen_assert 29 | #define ei_internal_assert eigen_internal_assert 30 | 31 | #define EIGEN_ALIGN_128 EIGEN_ALIGN16 32 | 33 | #define EIGEN_ARCH_WANTS_ALIGNMENT EIGEN_ALIGN_STATICALLY 34 | 35 | #endif // EIGEN2_MACROS_H 36 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Eigenvalues/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_EIGENVALUES_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_EIGENVALUES_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Eigenvalues COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Eigenvalues/EigenvaluesCommon.h: -------------------------------------------------------------------------------- 1 | // This file is part of Eigen, a lightweight C++ template library 2 | // for linear algebra. 3 | // 4 | // Copyright (C) 2010 Jitse Niesen 5 | // 6 | // Eigen is free software; you can redistribute it and/or 7 | // modify it under the terms of the GNU Lesser General Public 8 | // License as published by the Free Software Foundation; either 9 | // version 3 of the License, or (at your option) any later version. 10 | // 11 | // Alternatively, you can redistribute it and/or 12 | // modify it under the terms of the GNU General Public License as 13 | // published by the Free Software Foundation; either version 2 of 14 | // the License, or (at your option) any later version. 15 | // 16 | // Eigen is distributed in the hope that it will be useful, but WITHOUT ANY 17 | // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 18 | // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the 19 | // GNU General Public License for more details. 20 | // 21 | // You should have received a copy of the GNU Lesser General Public 22 | // License and a copy of the GNU General Public License along with 23 | // Eigen. If not, see . 24 | 25 | #ifndef EIGEN_EIGENVALUES_COMMON_H 26 | #define EIGEN_EIGENVALUES_COMMON_H 27 | 28 | 29 | 30 | #endif // EIGEN_EIGENVALUES_COMMON_H 31 | 32 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Geometry/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Geometry_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Geometry_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Geometry COMPONENT Devel 6 | ) 7 | 8 | ADD_SUBDIRECTORY(arch) 9 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Geometry/arch/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Geometry_arch_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Geometry_arch_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Geometry/arch COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Householder/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Householder_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Householder_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Householder COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Jacobi/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Jacobi_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Jacobi_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Jacobi COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/LU/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_LU_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_LU_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/LU COMPONENT Devel 6 | ) 7 | 8 | ADD_SUBDIRECTORY(arch) 9 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/LU/arch/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_LU_arch_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_LU_arch_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/LU/arch COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/QR/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_QR_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_QR_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/QR COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/SVD/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_SVD_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_SVD_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/SVD COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Sparse/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_Sparse_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_Sparse_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/Sparse COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/Sparse/SparseAssign.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/third_party/eigen/Eigen/src/Sparse/SparseAssign.h -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/StlSupport/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_StlSupport_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_StlSupport_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/StlSupport COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/misc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_misc_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_misc_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/misc COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/Eigen/src/plugins/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FILE(GLOB Eigen_plugins_SRCS "*.h") 2 | 3 | INSTALL(FILES 4 | ${Eigen_plugins_SRCS} 5 | DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen/src/plugins COMPONENT Devel 6 | ) 7 | -------------------------------------------------------------------------------- /src/third_party/eigen/README.libmv: -------------------------------------------------------------------------------- 1 | Project: Eigen 2 | URL: http://eigen.tuxfamily.org/ 3 | License: LGPL3 or GPL2 4 | Upstream version: 3.0, released March 19, 2011 5 | 6 | Local modifications: 7 | 8 | * Keep only the following folders: Eigen/* and unsupported/Eigen/* 9 | * The CMake build system for Eigen is not included because we only 10 | need the headers. 11 | * TODO(julien) add unit tests? 12 | -------------------------------------------------------------------------------- /src/third_party/eigen/unsupported/Eigen/CholmodSupport: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_CHOLMODSUPPORT_MODULE_H 2 | #define EIGEN_CHOLMODSUPPORT_MODULE_H 3 | 4 | #include "SparseExtra" 5 | 6 | #include "../../Eigen/src/Core/util/DisableStupidWarnings.h" 7 | 8 | extern "C" { 9 | #include 10 | } 11 | 12 | namespace Eigen { 13 | 14 | /** \ingroup Unsupported_modules 15 | * \defgroup CholmodSupport_Module Cholmod Support module 16 | * 17 | * 18 | * \code 19 | * #include 20 | * \endcode 21 | */ 22 | 23 | struct Cholmod {}; 24 | #include "src/SparseExtra/CholmodSupportLegacy.h" 25 | #include "src/SparseExtra/CholmodSupport.h" 26 | 27 | 28 | } // namespace Eigen 29 | 30 | #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h" 31 | 32 | #endif // EIGEN_CHOLMODSUPPORT_MODULE_H 33 | 34 | -------------------------------------------------------------------------------- /src/third_party/eigen/unsupported/Eigen/MoreVectorization: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_MOREVECTORIZATION_MODULE_H 2 | #define EIGEN_MOREVECTORIZATION_MODULE_H 3 | 4 | #include 5 | 6 | namespace Eigen { 7 | 8 | /** \ingroup Unsupported_modules 9 | * \defgroup MoreVectorization More vectorization module 10 | */ 11 | 12 | #include "src/MoreVectorization/MathFunctions.h" 13 | 14 | } 15 | 16 | #endif // EIGEN_MOREVECTORIZATION_MODULE_H 17 | -------------------------------------------------------------------------------- /src/third_party/eigen/unsupported/Eigen/Skyline: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_SKYLINE_MODULE_H 2 | #define EIGEN_SKYLINE_MODULE_H 3 | 4 | 5 | #include "Eigen/Core" 6 | 7 | #include "Eigen/src/Core/util/DisableStupidWarnings.h" 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | namespace Eigen { 15 | 16 | /** \ingroup Unsupported_modules 17 | * \defgroup Skyline_Module Skyline module 18 | * 19 | * 20 | * 21 | * 22 | */ 23 | 24 | #include "src/Skyline/SkylineUtil.h" 25 | #include "src/Skyline/SkylineMatrixBase.h" 26 | #include "src/Skyline/SkylineStorage.h" 27 | #include "src/Skyline/SkylineMatrix.h" 28 | #include "src/Skyline/SkylineInplaceLU.h" 29 | #include "src/Skyline/SkylineProduct.h" 30 | 31 | } // namespace Eigen 32 | 33 | #include "Eigen/src/Core/util/ReenableStupidWarnings.h" 34 | 35 | #endif // EIGEN_SKYLINE_MODULE_H 36 | -------------------------------------------------------------------------------- /src/third_party/eigen/unsupported/Eigen/SuperLUSupport: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_SUPERLUSUPPORT_MODULE_H 2 | #define EIGEN_SUPERLUSUPPORT_MODULE_H 3 | 4 | #include "SparseExtra" 5 | 6 | #include "../../Eigen/src/Core/util/DisableStupidWarnings.h" 7 | 8 | typedef int int_t; 9 | #include 10 | #include 11 | #include 12 | 13 | namespace Eigen { struct SluMatrix; } 14 | 15 | namespace Eigen { 16 | 17 | /** \ingroup Unsupported_modules 18 | * \defgroup SuperLUSupport_Module Super LU support 19 | * 20 | * 21 | * 22 | * \code 23 | * #include 24 | * \endcode 25 | */ 26 | 27 | struct SuperLU {}; 28 | 29 | #include "src/SparseExtra/SuperLUSupport.h" 30 | 31 | } // namespace Eigen 32 | 33 | #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h" 34 | 35 | #endif // EIGEN_SUPERLUSUPPORT_MODULE_H 36 | -------------------------------------------------------------------------------- /src/third_party/eigen/unsupported/Eigen/UmfPackSupport: -------------------------------------------------------------------------------- 1 | #ifndef EIGEN_UMFPACKSUPPORT_MODULE_H 2 | #define EIGEN_UMFPACKSUPPORT_MODULE_H 3 | 4 | #include "SparseExtra" 5 | 6 | #include "../../Eigen/src/Core/util/DisableStupidWarnings.h" 7 | 8 | extern "C" { 9 | #include 10 | } 11 | 12 | namespace Eigen { 13 | 14 | /** \ingroup Unsupported_modules 15 | * \defgroup UmfPackSupport_Module UmfPack support module 16 | * 17 | * 18 | * 19 | * 20 | * \code 21 | * #include 22 | * \endcode 23 | */ 24 | 25 | struct UmfPack {}; 26 | 27 | #include "src/SparseExtra/UmfPackSupport.h" 28 | 29 | } // namespace Eigen 30 | 31 | #include "../../Eigen/src/Core/util/ReenableStupidWarnings.h" 32 | 33 | #endif // EIGEN_UMFPACKSUPPORT_MODULE_H 34 | -------------------------------------------------------------------------------- /src/third_party/eigen/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h: -------------------------------------------------------------------------------- 1 | namespace internal { 2 | 3 | // TODO : move this to GivensQR once there's such a thing in Eigen 4 | 5 | template 6 | void r1mpyq(DenseIndex m, DenseIndex n, Scalar *a, const std::vector > &v_givens, const std::vector > &w_givens) 7 | { 8 | typedef DenseIndex Index; 9 | 10 | /* apply the first set of givens rotations to a. */ 11 | for (Index j = n-2; j>=0; --j) 12 | for (Index i = 0; i 4 | void rwupdt( 5 | Matrix< Scalar, Dynamic, Dynamic > &r, 6 | const Matrix< Scalar, Dynamic, 1> &w, 7 | Matrix< Scalar, Dynamic, 1> &b, 8 | Scalar alpha) 9 | { 10 | typedef DenseIndex Index; 11 | 12 | const Index n = r.cols(); 13 | assert(r.rows()>=n); 14 | std::vector > givens(n); 15 | 16 | /* Local variables */ 17 | Scalar temp, rowj; 18 | 19 | /* Function Body */ 20 | for (Index j = 0; j < n; ++j) { 21 | rowj = w[j]; 22 | 23 | /* apply the previous transformations to */ 24 | /* r(i,j), i=0,1,...,j-1, and to w(j). */ 25 | for (Index i = 0; i < j; ++i) { 26 | temp = givens[i].c() * r(i,j) + givens[i].s() * rowj; 27 | rowj = -givens[i].s() * r(i,j) + givens[i].c() * rowj; 28 | r(i,j) = temp; 29 | } 30 | 31 | /* determine a givens rotation which eliminates w(j). */ 32 | givens[j].makeGivens(-r(j,j), rowj); 33 | 34 | if (rowj == 0.) 35 | continue; // givens[j] is identity 36 | 37 | /* apply the current transformation to r(j,j), b(j), and alpha. */ 38 | r(j,j) = givens[j].c() * r(j,j) + givens[j].s() * rowj; 39 | temp = givens[j].c() * b[j] + givens[j].s() * alpha; 40 | alpha = -givens[j].s() * b[j] + givens[j].c() * alpha; 41 | b[j] = temp; 42 | } 43 | } 44 | 45 | } // end namespace internal 46 | 47 | -------------------------------------------------------------------------------- /src/third_party/fast/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | PROJECT(fast) 2 | file(GLOB_RECURSE C_FILES ${CMAKE_CURRENT_SOURCE_DIR} *.c) 3 | set_source_files_properties(${C_FILES} PROPERTIES LANGUAGE CXX) 4 | ADD_LIBRARY(fast ${C_FILES}) 5 | 6 | LIBMV_INSTALL_THIRD_PARTY_LIB(fast) -------------------------------------------------------------------------------- /src/third_party/fast/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2006, 2008 Edward Rosten 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | 9 | *Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | 12 | *Redistributions in binary form must reproduce the above copyright 13 | notice, this list of conditions and the following disclaimer in the 14 | documentation and/or other materials provided with the distribution. 15 | 16 | *Neither the name of the University of Cambridge nor the names of 17 | its contributors may be used to endorse or promote products derived 18 | from this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | -------------------------------------------------------------------------------- /src/third_party/fast/README: -------------------------------------------------------------------------------- 1 | FAST feature detectors in C Version 2.0 2 | --------------------------------------- 3 | 4 | The files are valid C and C++ code, and have no special requirements for 5 | compiling, and they do not depend on any libraries. Just compile them along with 6 | the rest of your project. 7 | 8 | To use the functions, #include "fast.h" 9 | 10 | The corner detectors have the following prototype (where X is 9, 10, 11 or 12): 11 | 12 | xy* fastX_detect_nonmax(const unsigned char * data, int xsize, int ysize, int stride, int threshold, int* numcorners) 13 | 14 | Where xy is the following simple struct typedef: 15 | 16 | typedef struct 17 | { 18 | int x, y; 19 | } xy; 20 | 21 | The image is passed in as a block of data and dimensions, and the list of 22 | corners is returned as an array of xy structs, and an integer (numcorners) 23 | with the number of corners returned. The data can be deallocated with free(). 24 | Nonmaximal suppression is performed on the corners. Note that the stride 25 | is the number of bytes between rows. If your image has no padding, then this 26 | is the same as xsize. 27 | 28 | The detection, scoring and nonmaximal suppression are available as individual 29 | functions. To see how to use the individual functions, see fast.c 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/third_party/fast/README.libmv: -------------------------------------------------------------------------------- 1 | Project: FAST (FAST Corner Detection) 2 | URL: http://mi.eng.cam.ac.uk/~er258/work/fast-C-src/ 3 | License: BSD 4 | Upstream version: 2.1, released 12-Jan-2009 5 | 6 | Local modifications: 7 | - Created CMakeLists.txt for CMake build. 8 | - Update CMakeLists to be sure that the library is a compatible with C++ linkage. 9 | - Update CMakeLists to not include fast.h to compile fast library with VS2005. 10 | -------------------------------------------------------------------------------- /src/third_party/fast/fast.h: -------------------------------------------------------------------------------- 1 | #ifndef FAST_H 2 | #define FAST_H 3 | 4 | typedef struct { int x, y; } xy; 5 | typedef unsigned char byte; 6 | 7 | int fast9_corner_score(const byte* p, const int pixel[], int bstart); 8 | int fast10_corner_score(const byte* p, const int pixel[], int bstart); 9 | int fast11_corner_score(const byte* p, const int pixel[], int bstart); 10 | int fast12_corner_score(const byte* p, const int pixel[], int bstart); 11 | 12 | xy* fast9_detect(const byte* im, int xsize, int ysize, int stride, int b, int* ret_num_corners); 13 | xy* fast10_detect(const byte* im, int xsize, int ysize, int stride, int b, int* ret_num_corners); 14 | xy* fast11_detect(const byte* im, int xsize, int ysize, int stride, int b, int* ret_num_corners); 15 | xy* fast12_detect(const byte* im, int xsize, int ysize, int stride, int b, int* ret_num_corners); 16 | 17 | int* fast9_score(const byte* i, int stride, xy* corners, int num_corners, int b); 18 | int* fast10_score(const byte* i, int stride, xy* corners, int num_corners, int b); 19 | int* fast11_score(const byte* i, int stride, xy* corners, int num_corners, int b); 20 | int* fast12_score(const byte* i, int stride, xy* corners, int num_corners, int b); 21 | 22 | 23 | xy* fast9_detect_nonmax(const byte* im, int xsize, int ysize, int stride, int b, int* ret_num_corners); 24 | xy* fast10_detect_nonmax(const byte* im, int xsize, int ysize, int stride, int b, int* ret_num_corners); 25 | xy* fast11_detect_nonmax(const byte* im, int xsize, int ysize, int stride, int b, int* ret_num_corners); 26 | xy* fast12_detect_nonmax(const byte* im, int xsize, int ysize, int stride, int b, int* ret_num_corners); 27 | 28 | xy* nonmax_suppression(const xy* corners, const int* scores, int num_corners, int* ret_num_nonmax); 29 | 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/third_party/flann/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY(src) 2 | -------------------------------------------------------------------------------- /src/third_party/flann/README: -------------------------------------------------------------------------------- 1 | FLANN - Fast Library for Approximate Nearest neighbors 2 | ====================================================== 3 | 4 | This is a library for fast approximate nearest neighbor matching. 5 | See the doc/manual.pdf file for information on how to use the library. 6 | 7 | doc : http://people.cs.ubc.ca/~mariusm/uploads/FLANN/manual.pdf 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/third_party/flann/README.libmv: -------------------------------------------------------------------------------- 1 | Project: FLANN 2 | URL: http://people.cs.ubc.ca/~mariusm/index.php/FLANN/FLANN 3 | License: BSD 4 | Upstream version: 1.2 released February 2009 5 | Doc : http://people.cs.ubc.ca/~mariusm/uploads/FLANN/manual.pdf 6 | 7 | Local modifications: 8 | * Remove matlab and python from CMAKE native build system. 9 | 10 | * Code changes : 11 | * Add CMake Build system 12 | * Fix warnings and errors at compilation time 13 | * Change FLANNParameters::char* log_destination to FLANNParameters::const char* log_destination 14 | * Remove the macro to export function as DLL. We use flann as a static library. 15 | -------------------------------------------------------------------------------- /src/third_party/flann/license.txt: -------------------------------------------------------------------------------- 1 | Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. 2 | Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. 3 | 4 | THE BSD LICENSE 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions 8 | are met: 9 | 10 | 1. Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | 2. Redistributions in binary form must reproduce the above copyright 13 | notice, this list of conditions and the following disclaimer in the 14 | documentation and/or other materials provided with the distribution. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | 27 | -------------------------------------------------------------------------------- /src/third_party/flann/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | CMAKE_MINIMUM_REQUIRED(VERSION 2.4) 2 | 3 | PROJECT(flann) 4 | 5 | set(CMAKE_INSTALL_PREFIX ${PROJECT_SOURCE_DIR}/../build) 6 | 7 | ADD_SUBDIRECTORY( cpp ) 8 | 9 | -------------------------------------------------------------------------------- /src/third_party/flann/src/cpp/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | INCLUDE_DIRECTORIES(algorithms util nn .) 3 | 4 | SET(SOURCES flann.cpp util/Random.cpp nn/Testing.cpp algorithms/NNIndex.cpp algorithms/dist.cpp util/Logger.cpp) 5 | 6 | ADD_LIBRARY(flann STATIC ${SOURCES}) 7 | 8 | LIBMV_INSTALL_THIRD_PARTY_LIB(flann) -------------------------------------------------------------------------------- /src/third_party/flann/src/cpp/algorithms/dist.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. 3 | Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. 4 | 5 | THE BSD LICENSE 6 | 7 | Redistribution and use in source and binary forms, with or without 8 | modification, are permitted provided that the following conditions 9 | are met: 10 | 11 | 1. Redistributions of source code must retain the above copyright 12 | notice, this list of conditions and the following disclaimer. 13 | 2. Redistributions in binary form must reproduce the above copyright 14 | notice, this list of conditions and the following disclaimer in the 15 | documentation and/or other materials provided with the distribution. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | */ 28 | 29 | #include "dist.h" 30 | 31 | /** Global variable indicating the distance metric 32 | * to be used. 33 | */ 34 | flann_distance_t flann_distance_type = EUCLIDEAN; 35 | 36 | /** 37 | * Zero iterator that emulates a zero feature. 38 | */ 39 | ZeroIterator zero; 40 | 41 | /** 42 | * Order of Minkowski distance to use. 43 | */ 44 | int flann_minkowski_order; 45 | -------------------------------------------------------------------------------- /src/third_party/flann/src/cpp/util/Random.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. 3 | Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. 4 | 5 | THE BSD LICENSE 6 | 7 | Redistribution and use in source and binary forms, with or without 8 | modification, are permitted provided that the following conditions 9 | are met: 10 | 11 | 1. Redistributions of source code must retain the above copyright 12 | notice, this list of conditions and the following disclaimer. 13 | 2. Redistributions in binary form must reproduce the above copyright 14 | notice, this list of conditions and the following disclaimer in the 15 | documentation and/or other materials provided with the distribution. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 | */ 28 | 29 | #include "Random.h" 30 | 31 | 32 | void seed_random(unsigned int seed) 33 | { 34 | srand(seed); 35 | } 36 | 37 | double rand_double(double high, double low) 38 | { 39 | return low + ((high-low) * (std::rand() / (RAND_MAX + 1.0))); 40 | } 41 | 42 | 43 | int rand_int(int high, int low) 44 | { 45 | return low + (int) ( double(high-low) * (std::rand() / (RAND_MAX + 1.0))); 46 | } 47 | -------------------------------------------------------------------------------- /src/third_party/gflags/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | IF(WIN32) 2 | INCLUDE_DIRECTORIES( 3 | ../msinttypes 4 | ../pthreads-w32/include 5 | ) 6 | ENDIF(WIN32) 7 | 8 | ADD_LIBRARY(gflags gflags.cc gflags_reporting.cc gflags_completions.cc) 9 | TARGET_LINK_LIBRARIES(gflags pthread) 10 | 11 | LIBMV_INSTALL_THIRD_PARTY_LIB(gflags) 12 | -------------------------------------------------------------------------------- /src/third_party/gflags/README.libmv: -------------------------------------------------------------------------------- 1 | Project: Google Flags 2 | URL: http://code.google.com/p/google-gflags/ 3 | License: New BSD 4 | Upstream version: 1.5 5 | Local modifications: 6 | 7 | - Flattened the tree and only included files needed for libmv. This involved 8 | changing some of the includes to point to the current directory instead of a 9 | nested gflags directory. 10 | 11 | - Added a poor-man's version of upstream's port.cc/h to make gflags compile on 12 | windows. This isn't sufficient but is a stopgap for now. 13 | 14 | TODO(keir): Import and use gflags for Windows from upstream. 15 | -------------------------------------------------------------------------------- /src/third_party/glog/AUTHORS: -------------------------------------------------------------------------------- 1 | opensource@google.com 2 | 3 | -------------------------------------------------------------------------------- /src/third_party/glog/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY(src) 2 | -------------------------------------------------------------------------------- /src/third_party/glog/NEWS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/third_party/glog/NEWS -------------------------------------------------------------------------------- /src/third_party/glog/README: -------------------------------------------------------------------------------- 1 | This repository contains a C++ implementation of the Google logging 2 | module. Documentation for the implementation is in doc/. 3 | 4 | See INSTALL for (generic) installation instructions for C++: basically 5 | ./configure && make && make install 6 | -------------------------------------------------------------------------------- /src/third_party/glog/README.libmv: -------------------------------------------------------------------------------- 1 | Project: Google Logging 2 | URL: http://code.google.com/p/google-glog/ 3 | License: New BSD 4 | Upstream version: 0.3.1 5 | Local modifications: 6 | 7 | Upgrading Notes 8 | * Had to change #include to #include "gflags/gflags.h" 9 | * Make sure to copy over a config_YOUR_PLATFORM.h and put it in config.h 10 | 11 | Old changes which got obsoleted (maybe?) by 0.3.1 merge: 12 | * The config_linux.h is generated by configure on Keir's Ubuntu 9.04 desktop. 13 | * Commented out some struct ::tm weirdness causing compile failures on 14 | ubuntu 8.10 and 9.04. 15 | * Switched several initializers to memset instead of = {}. 16 | * Changed some includes pointing to gflags. Not sure why the regular inclusion 17 | didn't work. 18 | * Added some compile flags to silence various warnings, allowing us to keep the 19 | differences between upstream small. 20 | * Don't redefine _XOPEN_SOURCE. 21 | * Added "google::" to GetReferenceableValue in CHECK_OP_LOG. 22 | * Add virtual destructor to Thread in googletest.h. 23 | * Update windows/glog/log_severity to build with QT library that include WinGDI 24 | (It cause a double definition of ERROR variable). 25 | 26 | Old changes which got obsoleted (maybe?) by 0.2.1 merge: 27 | * Added #ifndef / def REG_EIP; not sure what that is. 28 | * Added (void) arg stuff to prevent unused variable warnings. 29 | * Added google:: namespace prefix to GetReferencableValue 30 | * Added assignments for several functions marked with no_ignore_return, where 31 | the return value was ignored. 32 | * Commented out the unused function DumpPCAndSymbol() in utilities.cc to silent 33 | gcc on the mac 34 | 35 | TODO(keir): Remove any obsoleted changes above if they are not necessary after 36 | testing on more platforms. 37 | 38 | WARNING: Mac port not updated for 0.2.1 39 | -------------------------------------------------------------------------------- /src/third_party/glog/src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | IF (WIN32) 2 | INCLUDE_DIRECTORIES( 3 | windows 4 | ../../msinttypes 5 | ) 6 | ELSE (WIN32) 7 | INCLUDE_DIRECTORIES( 8 | . 9 | ) 10 | ENDIF (WIN32) 11 | 12 | IF(CMAKE_COMPILER_IS_GNUCXX) 13 | SET(CMAKE_CXX_FLAGS "") 14 | # SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused -Wno-type-limits -Wno-empty-body") 15 | ENDIF(CMAKE_COMPILER_IS_GNUCXX) 16 | 17 | IF (WIN32) 18 | ADD_LIBRARY(glog 19 | logging.cc 20 | windows/port.cc 21 | raw_logging.cc 22 | utilities.cc 23 | vlog_is_on.cc) 24 | ELSE (WIN32) 25 | ADD_LIBRARY(glog 26 | demangle.cc 27 | logging.cc 28 | raw_logging.cc 29 | signalhandler.cc 30 | symbolize.cc 31 | utilities.cc 32 | vlog_is_on.cc) 33 | TARGET_LINK_LIBRARIES(glog gflags) 34 | ENDIF (WIN32) 35 | 36 | MACRO (GLOG_TEST NAME) 37 | ADD_EXECUTABLE(${NAME} ${NAME}.cc) 38 | TARGET_LINK_LIBRARIES(${NAME} glog gflags pthread googletest) 39 | SET_TARGET_PROPERTIES(${NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${LIBMV_TESTS_OUTPUT_DIR}) 40 | ADD_TEST(${NAME} ${LIBMV_TESTS_OUTPUT_DIR}/${NAME}) 41 | ENDMACRO (GLOG_TEST) 42 | 43 | IF (NOT WIN32) 44 | #GLOG_TEST(demangle_unittest) 45 | # These require extra magic... 46 | #GLOG_TEST(logging_striptest10) 47 | #GLOG_TEST(logging_striptest2) 48 | # I don't think logging_unittest can really be called a unittest, because it 49 | # benchmarks the logging. Commented out to keep tests fast. 50 | #GLOG_TEST(logging_unittest) 51 | #GLOG_TEST(signalhandler_unittest) 52 | #GLOG_TEST(stacktrace_unittest) 53 | #GLOG_TEST(stl_logging_unittest) 54 | #GLOG_TEST(symbolize_unittest) 55 | #GLOG_TEST(utilities_unittest) 56 | 57 | ENDIF (NOT WIN32) 58 | 59 | LIBMV_INSTALL_THIRD_PARTY_LIB(glog) 60 | -------------------------------------------------------------------------------- /src/third_party/glog/src/config.h: -------------------------------------------------------------------------------- 1 | /* src/config.h. Generated from config.h.in by configure. */ 2 | /* src/config.h.in. Generated from configure.ac by autoheader. */ 3 | 4 | /* Namespace for Google classes */ 5 | #ifdef __APPLE__ 6 | #include "config_mac.h" 7 | #elif __GNUC__ 8 | #include "config_linux.h" 9 | #elif _MSC_VER 10 | #include "windows/config.h" 11 | #endif 12 | -------------------------------------------------------------------------------- /src/third_party/glog/src/logging_striptest10.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, Google Inc. 2 | // All rights reserved. 3 | // 4 | // Redistribution and use in source and binary forms, with or without 5 | // modification, are permitted provided that the following conditions are 6 | // met: 7 | // 8 | // * Redistributions of source code must retain the above copyright 9 | // notice, this list of conditions and the following disclaimer. 10 | // * Redistributions in binary form must reproduce the above 11 | // copyright notice, this list of conditions and the following disclaimer 12 | // in the documentation and/or other materials provided with the 13 | // distribution. 14 | // * Neither the name of Google Inc. nor the names of its 15 | // contributors may be used to endorse or promote products derived from 16 | // this software without specific prior written permission. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | // 30 | // Author: Sergey Ioffe 31 | 32 | #define GOOGLE_STRIP_LOG 10 33 | 34 | // Include the actual test. 35 | #include "logging_striptest_main.cc" 36 | -------------------------------------------------------------------------------- /src/third_party/glog/src/logging_striptest2.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, Google Inc. 2 | // All rights reserved. 3 | // 4 | // Redistribution and use in source and binary forms, with or without 5 | // modification, are permitted provided that the following conditions are 6 | // met: 7 | // 8 | // * Redistributions of source code must retain the above copyright 9 | // notice, this list of conditions and the following disclaimer. 10 | // * Redistributions in binary form must reproduce the above 11 | // copyright notice, this list of conditions and the following disclaimer 12 | // in the documentation and/or other materials provided with the 13 | // distribution. 14 | // * Neither the name of Google Inc. nor the names of its 15 | // contributors may be used to endorse or promote products derived from 16 | // this software without specific prior written permission. 17 | // 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | // 30 | // Author: Sergey Ioffe 31 | 32 | #define GOOGLE_STRIP_LOG 2 33 | 34 | // Include the actual test. 35 | #include "logging_striptest_main.cc" 36 | -------------------------------------------------------------------------------- /src/third_party/gtest/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_LIBRARY(gtest 2 | src/gtest.cc 3 | src/gtest-death-test.cc 4 | src/gtest-filepath.cc 5 | src/gtest-port.cc 6 | src/gtest-printers.cc 7 | src/gtest-test-part.cc 8 | src/gtest-typed-test.cc 9 | ) 10 | 11 | LIBMV_INSTALL_THIRD_PARTY_LIB(gtest) 12 | -------------------------------------------------------------------------------- /src/third_party/gtest/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2008, Google Inc. 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are 6 | met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above 11 | copyright notice, this list of conditions and the following disclaimer 12 | in the documentation and/or other materials provided with the 13 | distribution. 14 | * Neither the name of Google Inc. nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /src/third_party/gtest/README.libmv: -------------------------------------------------------------------------------- 1 | Project: Google C++ Testing Framework 2 | URL: http://code.google.com/p/googletest 3 | License: New BSD 4 | Upstream version: 1.6.0 5 | Local modifications: 6 | 7 | None. 8 | -------------------------------------------------------------------------------- /src/third_party/jpeg-7/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | PROJECT(jpeg) 2 | 3 | SET(LIBJPEG_SYSDEP jmemnobs.c) 4 | 5 | SET(LIBJPEG_COMMON jaricom.c jcomapi.c jutils.c jerror.c jmemmgr.c) 6 | 7 | SET(LIBJPEG_CLIB 8 | jcapimin.c jcapistd.c jcarith.c jctrans.c jcparam.c 9 | jdatadst.c jcinit.c jcmaster.c jcmarker.c jcmainct.c 10 | jcprepct.c jccoefct.c jccolor.c jcsample.c jchuff.c 11 | jcdctmgr.c jfdctfst.c jfdctflt.c jfdctint.c 12 | ) 13 | 14 | SET(LIBJPEG_DLIB 15 | jdapimin.c jdapistd.c jdarith.c jdtrans.c jdatasrc.c 16 | jdmaster.c jdinput.c jdmarker.c jdhuff.c jdmainct.c 17 | jdcoefct.c jdpostct.c jddctmgr.c jidctfst.c jidctflt.c 18 | jidctint.c jdsample.c jdcolor.c jquant1.c jquant2.c 19 | jdmerge.c 20 | ) 21 | 22 | IF(WIN32) 23 | ADD_DEFINITIONS( -DJPEGSTATIC -D_CRT_SECURE_NO_WARNINGS) 24 | # TODO(keir): CMake ignores this, but it should disable the following: 25 | # C:\...\basetsd.h(78): warning C4142: benign redefinition of type 26 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4142") 27 | ENDIF(WIN32) 28 | 29 | FILE(GLOB LIBJPEG_H *.h ) 30 | 31 | ADD_LIBRARY(jpeg ${LIBJPEG_SYSDEP} ${LIBJPEG_COMMON} ${LIBJPEG_CLIB} ${LIBJPEG_DLIB} ${LIBJPEG_H} ) 32 | 33 | LIBMV_INSTALL_THIRD_PARTY_LIB(jpeg) 34 | -------------------------------------------------------------------------------- /src/third_party/jpeg-7/README.libmv: -------------------------------------------------------------------------------- 1 | Project: JPEG 2 | URL: http://www.ijg.org/ 3 | License: No general name, project specific, see README ("LEGAL ISSUES") 4 | Upstream version: release 7 of 27-Jun-2009 5 | Local modifications: 6 | 7 | * Removed all files, except for *.c, *.h and license-relevant. 8 | * Created CMakeLists.txt for CMake build 9 | * Undefined the USE_MAC_MEMMGR flag in jconfig.mac 10 | * Moved jconfig.vc and jconfig.mac to jconfig_mac.h and jconfig_windows.h; made 11 | jconfig.h which redirects to the appropriate place on each platform. 12 | -------------------------------------------------------------------------------- /src/third_party/jpeg-7/jconfig.h: -------------------------------------------------------------------------------- 1 | // Added for libmv. 2 | 3 | #if defined(_MSC_VER) 4 | # include "jconfig_windows.h" 5 | #elif defined(__APPLE__) 6 | # include "jconfig_mac.h" 7 | #endif 8 | -------------------------------------------------------------------------------- /src/third_party/jpeg-7/jconfig_mac.h: -------------------------------------------------------------------------------- 1 | /* jconfig.mac --- jconfig.h for CodeWarrior on Apple Macintosh */ 2 | /* see jconfig.txt for explanations */ 3 | 4 | #define HAVE_PROTOTYPES 5 | #define HAVE_UNSIGNED_CHAR 6 | #define HAVE_UNSIGNED_SHORT 7 | /* #define void char */ 8 | /* #define const */ 9 | #undef CHAR_IS_UNSIGNED 10 | #define HAVE_STDDEF_H 11 | #define HAVE_STDLIB_H 12 | #undef NEED_BSD_STRINGS 13 | #undef NEED_SYS_TYPES_H 14 | #undef NEED_FAR_POINTERS 15 | #undef NEED_SHORT_EXTERNAL_NAMES 16 | #undef INCOMPLETE_TYPES_BROKEN 17 | 18 | #ifdef JPEG_INTERNALS 19 | 20 | #undef RIGHT_SHIFT_IS_UNSIGNED 21 | 22 | #undef USE_MAC_MEMMGR /* Define this if you use jmemmac.c */ 23 | 24 | #define ALIGN_TYPE long /* Needed for 680x0 Macs */ 25 | 26 | #endif /* JPEG_INTERNALS */ 27 | 28 | #ifdef JPEG_CJPEG_DJPEG 29 | 30 | #define BMP_SUPPORTED /* BMP image file format */ 31 | #define GIF_SUPPORTED /* GIF image file format */ 32 | #define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */ 33 | #undef RLE_SUPPORTED /* Utah RLE image file format */ 34 | #define TARGA_SUPPORTED /* Targa image file format */ 35 | 36 | #define USE_CCOMMAND /* Command line reader for Macintosh */ 37 | #define TWO_FILE_COMMANDLINE /* Binary I/O thru stdin/stdout doesn't work */ 38 | 39 | #undef NEED_SIGNAL_CATCHER 40 | #undef DONT_USE_B_MODE 41 | #undef PROGRESS_REPORT /* optional */ 42 | 43 | #endif /* JPEG_CJPEG_DJPEG */ 44 | -------------------------------------------------------------------------------- /src/third_party/jpeg-7/jconfig_windows.h: -------------------------------------------------------------------------------- 1 | /* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 95 or NT. */ 2 | /* see jconfig.txt for explanations */ 3 | 4 | #define HAVE_PROTOTYPES 5 | #define HAVE_UNSIGNED_CHAR 6 | #define HAVE_UNSIGNED_SHORT 7 | /* #define void char */ 8 | /* #define const */ 9 | #undef CHAR_IS_UNSIGNED 10 | #define HAVE_STDDEF_H 11 | #define HAVE_STDLIB_H 12 | #undef NEED_BSD_STRINGS 13 | #undef NEED_SYS_TYPES_H 14 | #undef NEED_FAR_POINTERS /* we presume a 32-bit flat memory model */ 15 | #undef NEED_SHORT_EXTERNAL_NAMES 16 | #undef INCOMPLETE_TYPES_BROKEN 17 | 18 | /* Define "boolean" as unsigned char, not int, per Windows custom */ 19 | #ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ 20 | typedef unsigned char boolean; 21 | #endif 22 | #define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */ 23 | 24 | 25 | #ifdef JPEG_INTERNALS 26 | 27 | #undef RIGHT_SHIFT_IS_UNSIGNED 28 | 29 | #endif /* JPEG_INTERNALS */ 30 | 31 | #ifdef JPEG_CJPEG_DJPEG 32 | 33 | #define BMP_SUPPORTED /* BMP image file format */ 34 | #define GIF_SUPPORTED /* GIF image file format */ 35 | #define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */ 36 | #undef RLE_SUPPORTED /* Utah RLE image file format */ 37 | #define TARGA_SUPPORTED /* Targa image file format */ 38 | 39 | #define TWO_FILE_COMMANDLINE /* optional */ 40 | #define USE_SETMODE /* Microsoft has setmode() */ 41 | #undef NEED_SIGNAL_CATCHER 42 | #undef DONT_USE_B_MODE 43 | #undef PROGRESS_REPORT /* optional */ 44 | 45 | #endif /* JPEG_CJPEG_DJPEG */ 46 | -------------------------------------------------------------------------------- /src/third_party/jpeg-7/jversion.h: -------------------------------------------------------------------------------- 1 | /* 2 | * jversion.h 3 | * 4 | * Copyright (C) 1991-2009, Thomas G. Lane, Guido Vollbeding. 5 | * This file is part of the Independent JPEG Group's software. 6 | * For conditions of distribution and use, see the accompanying README file. 7 | * 8 | * This file contains software version identification. 9 | */ 10 | 11 | 12 | #define JVERSION "7 27-Jun-2009" 13 | 14 | #define JCOPYRIGHT "Copyright (C) 2009, Thomas G. Lane, Guido Vollbeding" 15 | -------------------------------------------------------------------------------- /src/third_party/jpeg-7/rdgif.c: -------------------------------------------------------------------------------- 1 | /* 2 | * rdgif.c 3 | * 4 | * Copyright (C) 1991-1997, Thomas G. Lane. 5 | * This file is part of the Independent JPEG Group's software. 6 | * For conditions of distribution and use, see the accompanying README file. 7 | * 8 | * This file contains routines to read input images in GIF format. 9 | * 10 | ***************************************************************************** 11 | * NOTE: to avoid entanglements with Unisys' patent on LZW compression, * 12 | * the ability to read GIF files has been removed from the IJG distribution. * 13 | * Sorry about that. * 14 | ***************************************************************************** 15 | * 16 | * We are required to state that 17 | * "The Graphics Interchange Format(c) is the Copyright property of 18 | * CompuServe Incorporated. GIF(sm) is a Service Mark property of 19 | * CompuServe Incorporated." 20 | */ 21 | 22 | #include "cdjpeg.h" /* Common decls for cjpeg/djpeg applications */ 23 | 24 | #ifdef GIF_SUPPORTED 25 | 26 | /* 27 | * The module selection routine for GIF format input. 28 | */ 29 | 30 | GLOBAL(cjpeg_source_ptr) 31 | jinit_read_gif (j_compress_ptr cinfo) 32 | { 33 | fprintf(stderr, "GIF input is unsupported for legal reasons. Sorry.\n"); 34 | exit(EXIT_FAILURE); 35 | return NULL; /* keep compiler happy */ 36 | } 37 | 38 | #endif /* GIF_SUPPORTED */ 39 | -------------------------------------------------------------------------------- /src/third_party/ldl/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include_directories(../ufconfig) 2 | include_directories(Include) 3 | add_library(ldl Source/ldl.c) 4 | 5 | LIBMV_INSTALL_THIRD_PARTY_LIB(ldl) 6 | -------------------------------------------------------------------------------- /src/third_party/ldl/Doc/ChangeLog: -------------------------------------------------------------------------------- 1 | May 31, 2007: version 2.0.0 2 | 3 | * C-callable 64-bit version added 4 | 5 | * ported to 64-bit MATLAB 6 | 7 | * subdirectories added (Source/, Include/, Lib/, Demo/, Doc/, MATLAB/) 8 | 9 | Dec 12, 2006: version 1.3.4 10 | 11 | * minor MATLAB cleanup 12 | 13 | Sept 11, 2006: version 1.3.1 14 | 15 | * The ldl m-file renamed to ldlsparse, to avoid name conflict with the 16 | new MATLAB ldl function (in MATLAB 7.3). 17 | 18 | Apr 30, 2006: version 1.3 19 | 20 | * requires AMD v2.0. ldlmain.c demo program modified, since AMD can now 21 | handle jumbled matrices. Minor change to Makefile. 22 | 23 | Aug 30, 2005: 24 | 25 | * Makefile changed to use ../UFconfig/UFconfig.mk. License changed to 26 | GNU LGPL. 27 | 28 | July 4, 2005: 29 | 30 | * user guide added. Since no changes to the code were made, 31 | the version number (1.1) and code release date (Apr 22, 2005) 32 | were left unchanged. 33 | 34 | Apr. 22, 2005: LDL v1.1 released. 35 | 36 | * No real changes were made. The code was revised so 37 | that each routine fits on a single page in the documentation. 38 | 39 | Dec 31, 2003: LDL v1.0 released. 40 | -------------------------------------------------------------------------------- /src/third_party/ldl/README.libmv: -------------------------------------------------------------------------------- 1 | Project: LDL 2 | URL: http://www.cise.ufl.edu/research/sparse/ldl/ 3 | License: LGPL2.1 4 | Upstream version: 2.0.1 (despite the ChangeLog saying 2.0.0) 5 | 6 | Local modifications: 7 | 8 | * Deleted everything except ldl.c, ldl.h, the license, the ChangeLog, and the 9 | README. 10 | 11 | -------------------------------------------------------------------------------- /src/third_party/msinttypes/README.libmv: -------------------------------------------------------------------------------- 1 | Project: msinttypes 2 | URL: http://code.google.com/p/msinttypes/ 3 | License: New BSD License 4 | Upstream version: r24 5 | Local modifications: None. 6 | -------------------------------------------------------------------------------- /src/third_party/png/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | PROJECT(png) 2 | 3 | SET(PNG_SRCS 4 | pngget.c pngrio.c pngwrite.c png.c pngmem.c pngrtran.c pngtrans.c 5 | pngwtran.c pngerror.c pngpread.c pngrutil.c pngvcrd.c pngwutil.c pnggccrd.c 6 | pngread.c pngset.c pngwio.c pngconf.h png.h 7 | ) 8 | 9 | IF (WIN32) 10 | ADD_DEFINITIONS(-DPNG_STATIC) 11 | # TODO(keir): I don't know why, but CMake *refuses* to add this to the 12 | # command line flags. After much frustration, I am giving up and leaving the 13 | # compile errors. Please, someone who knows CMake, try to fix this. 14 | SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4996") 15 | ENDIF (WIN32) 16 | 17 | INCLUDE_DIRECTORIES(../zlib) 18 | ADD_LIBRARY(png ${PNG_SRCS} ) 19 | TARGET_LINK_LIBRARIES(png zlib) 20 | 21 | LIBMV_INSTALL_THIRD_PARTY_LIB(png) -------------------------------------------------------------------------------- /src/third_party/png/README.libmv: -------------------------------------------------------------------------------- 1 | Project: libpng 2 | URL: http://www.libpng.org/pub/png/ 3 | License: Specific, see LICENSE. 4 | Upstream version: 1.2.37 - June 4, 2009 (shared library 12.0) 5 | Local modifications: 6 | 7 | * Removed all files, except for *.c, *.h and license-relevant. 8 | 9 | * Created CMakeLists.txt for CMake build 10 | -------------------------------------------------------------------------------- /src/third_party/png/pngvcrd.c: -------------------------------------------------------------------------------- 1 | /* pnggvrd.c was removed from libpng-1.2.20. */ 2 | -------------------------------------------------------------------------------- /src/third_party/pthreads-w32/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | PROJECT(pthread) 2 | 3 | INCLUDE_DIRECTORIES(include) 4 | 5 | # TODO(keir): This doesn't work for some reason. 6 | SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4996") 7 | 8 | # This will build pthread.dll, which you probably want to put in 9 | # $ENV{SystemRoot}\system. Unfortunately, statically linking doesn't work well 10 | # because then you have to manually initialize the pthreads library (which 11 | # normally happens via DLL import hooks). 12 | ADD_LIBRARY(pthread SHARED src/pthread.c) 13 | TARGET_LINK_LIBRARIES(pthread ws2_32) 14 | 15 | LIBMV_INSTALL_THIRD_PARTY_LIB(pthread) -------------------------------------------------------------------------------- /src/third_party/pthreads-w32/README.libmv: -------------------------------------------------------------------------------- 1 | Project: pthreads-w32 2 | URL: http://sourceware.org/pthreads-win32/ 3 | License: GNU Lesser General Public License (LGPL) 4 | Upstream version: 2.8.0 from ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-8-0-release.exe 5 | Local modifications: 6 | 7 | * Added #include to implement.h. I have no idea why it wasn't there 8 | already. 9 | * The files are split across include/ and src/, which is not the case in the 10 | upstream source distribution 11 | 12 | Note that I didn't check in the pristine version by accident; however it should be easy to make a diff for implement.h. 13 | -------------------------------------------------------------------------------- /src/third_party/pthreads-w32/lib/pthreadVSE2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/third_party/pthreads-w32/lib/pthreadVSE2.dll -------------------------------------------------------------------------------- /src/third_party/pthreads-w32/lib/pthreadVSE2.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/third_party/pthreads-w32/lib/pthreadVSE2.lib -------------------------------------------------------------------------------- /src/third_party/pthreads-w32/src/cancel.c: -------------------------------------------------------------------------------- 1 | /* 2 | * cancel.c 3 | * 4 | * Description: 5 | * POSIX thread functions related to thread cancellation. 6 | * 7 | * -------------------------------------------------------------------------- 8 | * 9 | * Pthreads-win32 - POSIX Threads Library for Win32 10 | * Copyright(C) 1998 John E. Bossom 11 | * Copyright(C) 1999,2005 Pthreads-win32 contributors 12 | * 13 | * Contact Email: rpj@callisto.canberra.edu.au 14 | * 15 | * The current list of contributors is contained 16 | * in the file CONTRIBUTORS included with the source 17 | * code distribution. The list can also be seen at the 18 | * following World Wide Web location: 19 | * http://sources.redhat.com/pthreads-win32/contributors.html 20 | * 21 | * This library is free software; you can redistribute it and/or 22 | * modify it under the terms of the GNU Lesser General Public 23 | * License as published by the Free Software Foundation; either 24 | * version 2 of the License, or (at your option) any later version. 25 | * 26 | * This library is distributed in the hope that it will be useful, 27 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 28 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 29 | * Lesser General Public License for more details. 30 | * 31 | * You should have received a copy of the GNU Lesser General Public 32 | * License along with this library in the file COPYING.LIB; 33 | * if not, write to the Free Software Foundation, Inc., 34 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA 35 | */ 36 | 37 | #include "pthread.h" 38 | #include "implement.h" 39 | 40 | 41 | #include "pthread_setcancelstate.c" 42 | #include "pthread_setcanceltype.c" 43 | #include "pthread_testcancel.c" 44 | #include "pthread_cancel.c" 45 | -------------------------------------------------------------------------------- /src/third_party/pthreads-w32/src/exit.c: -------------------------------------------------------------------------------- 1 | /* 2 | * exit.c 3 | * 4 | * Description: 5 | * This translation unit implements routines associated with exiting from 6 | * a thread. 7 | * 8 | * -------------------------------------------------------------------------- 9 | * 10 | * Pthreads-win32 - POSIX Threads Library for Win32 11 | * Copyright(C) 1998 John E. Bossom 12 | * Copyright(C) 1999,2005 Pthreads-win32 contributors 13 | * 14 | * Contact Email: rpj@callisto.canberra.edu.au 15 | * 16 | * The current list of contributors is contained 17 | * in the file CONTRIBUTORS included with the source 18 | * code distribution. The list can also be seen at the 19 | * following World Wide Web location: 20 | * http://sources.redhat.com/pthreads-win32/contributors.html 21 | * 22 | * This library is free software; you can redistribute it and/or 23 | * modify it under the terms of the GNU Lesser General Public 24 | * License as published by the Free Software Foundation; either 25 | * version 2 of the License, or (at your option) any later version. 26 | * 27 | * This library is distributed in the hope that it will be useful, 28 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 29 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 30 | * Lesser General Public License for more details. 31 | * 32 | * You should have received a copy of the GNU Lesser General Public 33 | * License along with this library in the file COPYING.LIB; 34 | * if not, write to the Free Software Foundation, Inc., 35 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA 36 | */ 37 | 38 | #include "pthread.h" 39 | #include "implement.h" 40 | #ifndef _UWIN 41 | # include 42 | #endif 43 | 44 | #include "pthread_exit.c" 45 | -------------------------------------------------------------------------------- /src/third_party/pthreads-w32/src/fork.c: -------------------------------------------------------------------------------- 1 | /* 2 | * fork.c 3 | * 4 | * Description: 5 | * Implementation of fork() for POSIX threads. 6 | * 7 | * -------------------------------------------------------------------------- 8 | * 9 | * Pthreads-win32 - POSIX Threads Library for Win32 10 | * Copyright(C) 1998 John E. Bossom 11 | * Copyright(C) 1999,2005 Pthreads-win32 contributors 12 | * 13 | * Contact Email: rpj@callisto.canberra.edu.au 14 | * 15 | * The current list of contributors is contained 16 | * in the file CONTRIBUTORS included with the source 17 | * code distribution. The list can also be seen at the 18 | * following World Wide Web location: 19 | * http://sources.redhat.com/pthreads-win32/contributors.html 20 | * 21 | * This library is free software; you can redistribute it and/or 22 | * modify it under the terms of the GNU Lesser General Public 23 | * License as published by the Free Software Foundation; either 24 | * version 2 of the License, or (at your option) any later version. 25 | * 26 | * This library is distributed in the hope that it will be useful, 27 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 28 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 29 | * Lesser General Public License for more details. 30 | * 31 | * You should have received a copy of the GNU Lesser General Public 32 | * License along with this library in the file COPYING.LIB; 33 | * if not, write to the Free Software Foundation, Inc., 34 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA 35 | */ 36 | 37 | 38 | #include "pthread.h" 39 | #include "implement.h" 40 | -------------------------------------------------------------------------------- /src/third_party/pthreads-w32/src/pthread_getconcurrency.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pthread_getconcurrency.c 3 | * 4 | * Description: 5 | * This translation unit implements miscellaneous thread functions. 6 | * 7 | * -------------------------------------------------------------------------- 8 | * 9 | * Pthreads-win32 - POSIX Threads Library for Win32 10 | * Copyright(C) 1998 John E. Bossom 11 | * Copyright(C) 1999,2005 Pthreads-win32 contributors 12 | * 13 | * Contact Email: rpj@callisto.canberra.edu.au 14 | * 15 | * The current list of contributors is contained 16 | * in the file CONTRIBUTORS included with the source 17 | * code distribution. The list can also be seen at the 18 | * following World Wide Web location: 19 | * http://sources.redhat.com/pthreads-win32/contributors.html 20 | * 21 | * This library is free software; you can redistribute it and/or 22 | * modify it under the terms of the GNU Lesser General Public 23 | * License as published by the Free Software Foundation; either 24 | * version 2 of the License, or (at your option) any later version. 25 | * 26 | * This library is distributed in the hope that it will be useful, 27 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 28 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 29 | * Lesser General Public License for more details. 30 | * 31 | * You should have received a copy of the GNU Lesser General Public 32 | * License along with this library in the file COPYING.LIB; 33 | * if not, write to the Free Software Foundation, Inc., 34 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA 35 | */ 36 | 37 | #include "pthread.h" 38 | #include "implement.h" 39 | 40 | 41 | int 42 | pthread_getconcurrency (void) 43 | { 44 | return ptw32_concurrency; 45 | } 46 | -------------------------------------------------------------------------------- /src/third_party/pthreads-w32/src/sync.c: -------------------------------------------------------------------------------- 1 | /* 2 | * sync.c 3 | * 4 | * Description: 5 | * This translation unit implements functions related to thread 6 | * synchronisation. 7 | * 8 | * -------------------------------------------------------------------------- 9 | * 10 | * Pthreads-win32 - POSIX Threads Library for Win32 11 | * Copyright(C) 1998 John E. Bossom 12 | * Copyright(C) 1999,2005 Pthreads-win32 contributors 13 | * 14 | * Contact Email: rpj@callisto.canberra.edu.au 15 | * 16 | * The current list of contributors is contained 17 | * in the file CONTRIBUTORS included with the source 18 | * code distribution. The list can also be seen at the 19 | * following World Wide Web location: 20 | * http://sources.redhat.com/pthreads-win32/contributors.html 21 | * 22 | * This library is free software; you can redistribute it and/or 23 | * modify it under the terms of the GNU Lesser General Public 24 | * License as published by the Free Software Foundation; either 25 | * version 2 of the License, or (at your option) any later version. 26 | * 27 | * This library is distributed in the hope that it will be useful, 28 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 29 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 30 | * Lesser General Public License for more details. 31 | * 32 | * You should have received a copy of the GNU Lesser General Public 33 | * License along with this library in the file COPYING.LIB; 34 | * if not, write to the Free Software Foundation, Inc., 35 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA 36 | */ 37 | 38 | #include "pthread.h" 39 | #include "implement.h" 40 | 41 | 42 | #include "pthread_detach.c" 43 | #include "pthread_join.c" 44 | -------------------------------------------------------------------------------- /src/third_party/pthreads-w32/src/tsd.c: -------------------------------------------------------------------------------- 1 | /* 2 | * tsd.c 3 | * 4 | * Description: 5 | * POSIX thread functions which implement thread-specific data (TSD). 6 | * 7 | * -------------------------------------------------------------------------- 8 | * 9 | * Pthreads-win32 - POSIX Threads Library for Win32 10 | * Copyright(C) 1998 John E. Bossom 11 | * Copyright(C) 1999,2005 Pthreads-win32 contributors 12 | * 13 | * Contact Email: rpj@callisto.canberra.edu.au 14 | * 15 | * The current list of contributors is contained 16 | * in the file CONTRIBUTORS included with the source 17 | * code distribution. The list can also be seen at the 18 | * following World Wide Web location: 19 | * http://sources.redhat.com/pthreads-win32/contributors.html 20 | * 21 | * This library is free software; you can redistribute it and/or 22 | * modify it under the terms of the GNU Lesser General Public 23 | * License as published by the Free Software Foundation; either 24 | * version 2 of the License, or (at your option) any later version. 25 | * 26 | * This library is distributed in the hope that it will be useful, 27 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 28 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 29 | * Lesser General Public License for more details. 30 | * 31 | * You should have received a copy of the GNU Lesser General Public 32 | * License along with this library in the file COPYING.LIB; 33 | * if not, write to the Free Software Foundation, Inc., 34 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA 35 | */ 36 | 37 | #include "pthread.h" 38 | #include "implement.h" 39 | 40 | 41 | #include "pthread_key_create.c" 42 | #include "pthread_key_delete.c" 43 | #include "pthread_setspecific.c" 44 | #include "pthread_getspecific.c" 45 | -------------------------------------------------------------------------------- /src/third_party/ssba/Apps/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | include_directories(../Math ../Geometry) 2 | 3 | add_executable(bundle_common bundle_common.cpp) 4 | add_executable(bundle_varying bundle_varying.cpp) 5 | target_link_libraries(bundle_common V3D ldl colamd) 6 | target_link_libraries(bundle_varying V3D ldl colamd) 7 | -------------------------------------------------------------------------------- /src/third_party/ssba/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.4) 2 | 3 | project(V3D) 4 | 5 | set (V3D_DIR ${CMAKE_CURRENT_SOURCE_DIR}) 6 | set (V3D_INCLUDE_DIRS ${V3D_DIR}/.) 7 | 8 | # TODO(keir): This may not work on Windows. 9 | add_definitions(-DV3DLIB_ENABLE_SUITESPARSE) 10 | 11 | include_directories(${V3D_INCLUDE_DIRS} ${EXTRA_INC_DIRS}) 12 | include_directories(../ldl/Include) 13 | include_directories(../colamd/Include) 14 | include_directories(../ufconfig) 15 | 16 | IF(CMAKE_COMPILER_IS_GNUCXX) 17 | SET(CMAKE_CXX_FLAGS "") 18 | ENDIF(CMAKE_COMPILER_IS_GNUCXX) 19 | 20 | add_library(V3D 21 | Math/v3d_linear.h 22 | Math/v3d_mathutilities.h 23 | Math/v3d_optimization.h 24 | Math/v3d_optimization.cpp 25 | Geometry/v3d_cameramatrix.h 26 | Geometry/v3d_metricbundle.h 27 | Geometry/v3d_metricbundle.cpp) 28 | target_link_libraries(V3D ldl colamd) 29 | 30 | add_subdirectory(Apps) 31 | 32 | LIBMV_INSTALL_THIRD_PARTY_LIB(V3D) 33 | -------------------------------------------------------------------------------- /src/third_party/ssba/README.libmv: -------------------------------------------------------------------------------- 1 | Project: SSBA 2 | URL: http://www.cs.unc.edu/~cmzach/opensource.html 3 | License: LGPL3 4 | Upstream version: 1.0 5 | 6 | Local modifications: 7 | 8 | * Added 9 | SET(CMAKE_CXX_FLAGS "") 10 | to CMakeLists.txt to prevent warnings from being treated as errors. 11 | * Fixed "unused variable" in the header files. Warnings in the cpps files 12 | are still there. 13 | * Fixed a bug in CameraMatrix::opticalAxis() in file 14 | Geometry/v3d_cameramatrix.h 15 | * Deleted the Dataset directory. 16 | * Added '#include ' to ssba/Apps/bundle_common.cpp and 17 | ssba/Apps/bundle_varying.cpp to stop undefined references to strcmp 18 | * Removed unnecessary elements from the CMakeLists.txt file, including the 19 | obsoleted local_config.cmake and friends. 20 | * Added a virtual destructor to V3D::LevenbergOptimizerCommon in 21 | Math/v3d_optimization.h 22 | * Added /EHsc WIN32-specific flag to CMakeLists.txt 23 | * Remove unused variable Vector3d np in bundle_common.cpp and bundle_varying (in main() function). 24 | -------------------------------------------------------------------------------- /src/third_party/ufconfig/README.libmv: -------------------------------------------------------------------------------- 1 | Project: UFconfig 2 | URL: http://www.cise.ufl.edu/research/sparse/UFconfig/ 3 | License: LGPL2.1 4 | Upstream version: 3.4.0 5 | 6 | Local modifications: 7 | 8 | * Deleted everything except the include file and README.txt. 9 | -------------------------------------------------------------------------------- /src/third_party/ufconfig/README.txt: -------------------------------------------------------------------------------- 1 | UFconfig contains configuration settings for all many of the software packages 2 | that I develop or co-author. Note that older versions of some of these packages 3 | do not require UFconfig. 4 | 5 | Package Description 6 | ------- ----------- 7 | AMD approximate minimum degree ordering 8 | CAMD constrained AMD 9 | COLAMD column approximate minimum degree ordering 10 | CCOLAMD constrained approximate minimum degree ordering 11 | UMFPACK sparse LU factorization, with the BLAS 12 | CXSparse int/long/real/complex version of CSparse 13 | CHOLMOD sparse Cholesky factorization, update/downdate 14 | KLU sparse LU factorization, BLAS-free 15 | BTF permutation to block triangular form 16 | LDL concise sparse LDL' 17 | LPDASA LP Dual Active Set Algorithm 18 | SuiteSparseQR sparse QR factorization 19 | 20 | UFconfig is not required by: 21 | 22 | CSparse a Concise Sparse matrix package 23 | RBio read/write files in Rutherford/Boeing format 24 | UFcollection tools for managing the UF Sparse Matrix Collection 25 | LINFACTOR simple m-file to show how to use LU and CHOL to solve Ax=b 26 | MESHND 2D and 3D mesh generation and nested dissection ordering 27 | MATLAB_Tools misc collection of m-files 28 | SSMULT sparse matrix times sparse matrix, for use in MATLAB 29 | 30 | In addition, the xerbla/ directory contains Fortan and C versions of the 31 | BLAS/LAPACK xerbla routine, which is called when an invalid input is passed to 32 | the BLAS or LAPACK. The xerbla provided here does not print any message, so 33 | the entire Fortran I/O library does not need to be linked into a C application. 34 | Most versions of the BLAS contain xerbla, but those from K. Goto do not. Use 35 | this if you need too. 36 | -------------------------------------------------------------------------------- /src/third_party/zlib/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | PROJECT(zlib) 2 | 3 | ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) 4 | 5 | ADD_LIBRARY(zlib STATIC 6 | adler32.c compress.c crc32.c deflate.c gzio.c infback.c 7 | inffast.c inflate.c inftrees.c minigzip.c trees.c uncompr.c 8 | zutil.c crc32.h deflate.h inffast.h inffixed.h inflate.h 9 | inftrees.h trees.h zconf.h zconf.in.h zlib.h zutil.h 10 | ) 11 | 12 | LIBMV_INSTALL_THIRD_PARTY_LIB(zlib) 13 | -------------------------------------------------------------------------------- /src/third_party/zlib/README.libmv: -------------------------------------------------------------------------------- 1 | Project: zlib 2 | URL: http://www.zlib.net/ 3 | License: zlib license 4 | Upstream version: 1.2.3 5 | Local modifications: 6 | 7 | * Removed all files, except for *.c, *.h and license-relevant. 8 | 9 | * Created CMakeLists.txt for CMake build. 10 | -------------------------------------------------------------------------------- /src/third_party/zlib/inffast.h: -------------------------------------------------------------------------------- 1 | /* inffast.h -- header to use inffast.c 2 | * Copyright (C) 1995-2003 Mark Adler 3 | * For conditions of distribution and use, see copyright notice in zlib.h 4 | */ 5 | 6 | /* WARNING: this file should *not* be used by applications. It is 7 | part of the implementation of the compression library and is 8 | subject to change. Applications should only use zlib.h. 9 | */ 10 | 11 | void inflate_fast OF((z_streamp strm, unsigned start)); 12 | -------------------------------------------------------------------------------- /src/tools/experimental.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | // 21 | // Random stuff for experimentation. 22 | 23 | #include "libmv/multiview/test_data_sets.h" 24 | #include "libmv/tools/tool.h" 25 | 26 | DEFINE_int32(views, 3, "Number of views to generate."); 27 | 28 | using namespace libmv; 29 | 30 | int main(int argc, char **argv) { 31 | libmv::Init("", &argc, &argv); 32 | 33 | int nviews = FLAGS_views; 34 | int npoints = 8; 35 | NViewDataSet d = NRealisticCamerasFull(nviews, npoints); 36 | 37 | LOG(INFO) << "Points:" << "\n" << d.X; 38 | for (int i = 0; i < nviews; ++i) { 39 | LOG(INFO) << "Camera #" << i << ", center=" 40 | << d.C[i].transpose() << "\n" << d.x[i]; 41 | } 42 | return 0; 43 | } 44 | -------------------------------------------------------------------------------- /src/ui/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ADD_SUBDIRECTORY(tracker) 2 | -------------------------------------------------------------------------------- /src/ui/README: -------------------------------------------------------------------------------- 1 | Eventually this will become a simple UI for experimenting with libmv. 2 | -------------------------------------------------------------------------------- /src/ui/main.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #include "imageviewer.h" 3 | #include "scrubber.h" 4 | 5 | int main(int argc, char *argv[]) 6 | { 7 | QApplication app(argc, argv); 8 | ImageViewer imageViewer; 9 | imageViewer.show(); 10 | return app.exec(); 11 | } 12 | -------------------------------------------------------------------------------- /src/ui/nvr/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Qt 2 | FIND_PACKAGE(Qt4 REQUIRED) 3 | FIND_PACKAGE(OpenGL REQUIRED) 4 | SET(QT_USE_QTOPENGL ON) 5 | INCLUDE(${QT_USE_FILE}) 6 | 7 | SET(HEADERS nview.h) 8 | SET(SOURCES nview.cpp 9 | glwidget.cc) 10 | 11 | QT4_WRAP_CPP(SOURCES ${HEADERS}) 12 | ADD_EXECUTABLE(nview ${SOURCES}) 13 | TARGET_LINK_LIBRARIES(nview 14 | ${QT_QTCORE_LIBRARY} 15 | ${QT_QTGUI_LIBRARY} 16 | ${QT_QTOPENGL_LIBRARY} 17 | ${OPENGL_gl_LIBRARY} 18 | ${OPENGL_glu_LIBRARY} 19 | correspondence 20 | image 21 | gflags 22 | glog 23 | detector 24 | fast 25 | flann 26 | descriptor 27 | multiview 28 | daisy 29 | reconstruction) 30 | 31 | LIBMV_INSTALL_EXE(nview) -------------------------------------------------------------------------------- /src/ui/scrubber.h: -------------------------------------------------------------------------------- 1 | #ifndef SRC_UI_SCRUBBER_H 2 | #define SRC_UI_SCRUBBER_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | class Scrubber : public QWidget 9 | { 10 | Q_OBJECT 11 | 12 | public: 13 | Scrubber(QWidget *parent = 0); 14 | void setNumItems(int newsize); 15 | void setItem(int index, QPixmap &pix); 16 | void setCurrentItem(int index); 17 | void setCurrentItem(QPixmap pix); 18 | void clearItems(); 19 | QPixmap GetItem(int index); 20 | QPixmap GetCurrentItem(); 21 | 22 | void setCallback(void (*func)(void *), void *d) { 23 | frame_change = func; 24 | frame_change_data_ = d; 25 | } 26 | 27 | protected: 28 | void paintEvent(QPaintEvent *event); 29 | void mousePressEvent (QMouseEvent *e); 30 | 31 | signals: 32 | void selectionChanged(int newValue); 33 | 34 | private: 35 | int num_items_; 36 | std::vector items_; 37 | int current_item_; 38 | 39 | void (*frame_change)(void *); 40 | void *frame_change_data_; 41 | }; 42 | 43 | #endif // SRC_UI_SCRUBBER_H 44 | -------------------------------------------------------------------------------- /src/ui/tracker/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | FIND_PACKAGE(Qt4 REQUIRED) 2 | SET(QT_USE_QTOPENGL ON) 3 | INCLUDE(${QT_USE_FILE}) 4 | find_package(OpenGL) 5 | INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) 6 | SET(SOURCES main.cc tracker.cc scene.cc gl.cc) 7 | QT4_ADD_RESOURCES(SOURCES tracker.qrc) 8 | QT4_WRAP_CPP(SOURCES main.h tracker.h scene.h) 9 | ADD_EXECUTABLE(qt-tracker ${SOURCES}) 10 | TARGET_LINK_LIBRARIES(qt-tracker 11 | ${QT_LIBRARIES} 12 | ${OPENGL_LIBRARIES} 13 | simple_pipeline 14 | tracking 15 | multiview 16 | image) 17 | LIBMV_INSTALL_EXE(qt-tracker) 18 | -------------------------------------------------------------------------------- /src/ui/tracker/icons/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2011 Oxygen authors, http://www.oxygen-icons.org/ 2 | 3 | This library is free software; you can redistribute it and/or 4 | modify it under the terms of the GNU Lesser General Public 5 | License as published by the Free Software Foundation; either 6 | version 2.1 of the License, or (at your option) version 3, or any 7 | later version accepted by the membership of KDE e.V. (or its 8 | successor approved by the membership of KDE e.V.), which shall 9 | act as a proxy defined in Section 6 of version 3 of the license. 10 | 11 | This library is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | Lesser General Public License for more details. 15 | 16 | You should have received a copy of the GNU Lesser General Public 17 | License along with this library. If not, see . 18 | -------------------------------------------------------------------------------- /src/ui/tracker/icons/bookmarks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/bookmarks.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/document-open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/document-open.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/document-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/document-preview.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/edit-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/edit-delete.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/edit-table-delete-row.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/edit-table-delete-row.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/insert-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/insert-link.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/list-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/list-add.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/media-playback-start-backward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/media-playback-start-backward.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/media-playback-start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/media-playback-start.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/media-record.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/media-record.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/media-seek-backward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/media-seek-backward.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/media-seek-forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/media-seek-forward.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/media-skip-backward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/media-skip-backward.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/media-skip-forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/media-skip-forward.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/system-run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/system-run.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/view-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/view-preview.png -------------------------------------------------------------------------------- /src/ui/tracker/icons/view-scene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keir/libmv/b9aac30a9ca6bc8362c09a0e191040964f7c6de2/src/ui/tracker/icons/view-scene.png -------------------------------------------------------------------------------- /src/ui/tracker/shader.glsl: -------------------------------------------------------------------------------- 1 | vertex { 2 | attribute vec4 position; 3 | image { 4 | gl_Position = vec4(position.xy, 0, 1); 5 | varying vec2 texCoord; 6 | texCoord = position.zw; 7 | } 8 | transform { 9 | uniform mat4 transform; 10 | gl_Position = transform * position; 11 | } 12 | distort { 13 | // TODO(MatthiasF): not sure if this is correct 14 | // low order distortion should be enough for preview 15 | // u = d + (d − center)(K1*r2) 16 | vec2 u = gl_Position.xy; 17 | uniform vec2 center; 18 | uniform float K1; 19 | float r2 = length(u-center); 20 | gl_Position.xy = (K1*r2*center + u) / (K1*r2+1); 21 | } 22 | bundle { 23 | gl_PointSize = 5; 24 | } 25 | } 26 | 27 | fragment { 28 | image { 29 | varying vec2 texCoord; 30 | uniform sampler2D image; 31 | gl_FragColor = texture2D(image, texCoord); 32 | } 33 | marker { 34 | gl_FragColor = vec4(0, 0.25, 0, 1); 35 | } 36 | bundle { 37 | gl_FragColor = vec4(0, 0.25, 0, 1) 38 | * (1-step(1, length(2*gl_PointCoord.xy-vec2(1, 1)))); 39 | } 40 | camera { 41 | gl_FragColor = vec4(0.25, 0, 0, 1); 42 | } 43 | object { 44 | gl_FragColor = vec4(0, 0, 0.25, 1); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/ui/tracker/tracker.pro: -------------------------------------------------------------------------------- 1 | QT += opengl 2 | HEADERS += scene.h gl.h tracker.h main.h 3 | SOURCES += scene.cc gl.cc tracker.cc main.cc 4 | OTHER_FILES += shader.glsl 5 | RESOURCES = tracker.qrc 6 | INCLUDEPATH += ../.. 7 | INCLUDEPATH += /usr/include/eigen3/ 8 | #LIBS += -L../../../bin-dbg/lib/ -lsimple_pipeline_d -limage_d -ltracking_d -lmultiview_d -lglog 9 | LIBS += -L../../../bin-opt/lib/ -lsimple_pipeline -limage -ltracking -lmultiview 10 | 11 | win32:CONFIG+=glew 12 | exists(/usr/include/GL/glew.h):CONFIG+=glew 13 | glew { 14 | DEFINES += GLEW 15 | win32 { 16 | HEADERS += GL/glew.h GL/wglew.h 17 | SOURCES += glew.c 18 | DEFINES += GLEW_STATIC 19 | } 20 | unix { 21 | LIBS += -lGLEW 22 | } 23 | } 24 | 25 | profiler { 26 | LIBS += -lprofiler 27 | DEFINES += PPROF 28 | } 29 | 30 | OBJECTS_DIR=build 31 | MOC_DIR=build 32 | RCC_DIR=build 33 | DESTDIR=build 34 | 35 | OTHER_FILES += CMakeLists.txt ../../libmv/simple_pipeline/CMakeLists.txt 36 | OTHER_FILES += ../../libmv/image/image_pyramid.cc ../../libmv/image/image_pyramid.h 37 | OTHER_FILES += ../../libmv/image/convolve.cc ../../libmv/image/convolve.h 38 | OTHER_FILES += ../../libmv/simple_pipeline/*.h ../../libmv/simple_pipeline/*.cc 39 | OTHER_FILES += ../../libmv/tracking/*.h ../../libmv/tracking/*.cc 40 | OTHER_FILES += ../../libmv/multiview/fundamental.cc ../../libmv/multiview/projection.cc 41 | -------------------------------------------------------------------------------- /src/ui/tracker/tracker.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | shader.glsl 4 | icons/document-open.png 5 | icons/view-preview.png 6 | icons/document-preview.png 7 | icons/view-scene.png 8 | icons/media-record.png 9 | icons/edit-delete.png 10 | icons/edit-table-delete-row.png 11 | icons/bookmarks.png 12 | icons/system-run.png 13 | icons/insert-link.png 14 | icons/list-add.png 15 | icons/media-seek-backward.png 16 | icons/media-seek-forward.png 17 | icons/media-skip-backward.png 18 | icons/media-skip-forward.png 19 | icons/media-playback-start-backward.png 20 | icons/media-playback-start.png 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/ui/tvr/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | SET(MOC_HEADERS main_window.h match_viewer.h 3D_viewer.h) 3 | SET(SOURCES main.cc main_window.cc match_viewer.cc 3D_viewer.cc features.cc) 4 | QT4_WRAP_CPP(SOURCES ${MOC_HEADERS}) 5 | 6 | ADD_EXECUTABLE(tvr ${SOURCES}) 7 | TARGET_LINK_LIBRARIES(tvr 8 | image 9 | correspondence 10 | numeric 11 | multiview 12 | flann 13 | glog 14 | gflags 15 | detector 16 | descriptor 17 | fast 18 | daisy 19 | ${QT_QTCORE_LIBRARY} 20 | ${QT_QTGUI_LIBRARY} 21 | ${QT_QTOPENGL_LIBRARY} 22 | ${OPENGL_gl_LIBRARY} 23 | ${OPENGL_glu_LIBRARY}) 24 | 25 | LIBMV_INSTALL_EXE(tvr) 26 | -------------------------------------------------------------------------------- /src/ui/tvr/features.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | 22 | #ifndef UI_TVR_FEATURES_H_ 23 | #define UI_TVR_FEATURES_H_ 24 | 25 | #include "libmv/numeric/numeric.h" 26 | #include "libmv/correspondence/matches.h" 27 | 28 | using namespace libmv; 29 | 30 | // Computes the fundamental matrix given a set of candidate correspondences. 31 | // Outputs the fundamental matrix and the set of inlier correspondences. 32 | void ComputeFundamental(Matches &candidate, 33 | Mat3 *F, 34 | Matches *robust); 35 | 36 | #endif //UI_TVR_FEATURES_H_ 37 | -------------------------------------------------------------------------------- /src/ui/tvr/gl_texture.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2009 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | 22 | #ifndef UI_TVR_GL_TEXTURE_H_ 23 | #define UI_TVR_GL_TEXTURE_H_ 24 | 25 | struct GLTexture { 26 | GLuint textureID; 27 | int width; 28 | int height; 29 | GLTexture() : textureID(0) {} 30 | }; 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /src/ui/tvr/main.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #include 22 | 23 | #include "main_window.h" 24 | #include "libmv/tools/tool.h" 25 | 26 | int main(int argc, char *argv[]) { 27 | libmv::Init("", &argc, &argv); 28 | QApplication app(argc, argv); 29 | TvrMainWindow window; 30 | window.show(); 31 | return app.exec(); 32 | } 33 | -------------------------------------------------------------------------------- /src/ui/tvr/on_screen_image.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2007, 2008 libmv authors. 2 | // 3 | // Permission is hereby granted, free of charge, to any person obtaining a copy 4 | // of this software and associated documentation files (the "Software"), to 5 | // deal in the Software without restriction, including without limitation the 6 | // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 7 | // sell copies of the Software, and to permit persons to whom the Software is 8 | // furnished to do so, subject to the following conditions: 9 | // 10 | // The above copyright notice and this permission notice shall be included in 11 | // all copies or substantial portions of the Software. 12 | // 13 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 18 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 19 | // IN THE SOFTWARE. 20 | 21 | #ifndef UI_TVR_ON_SCREEN_IMAGE_H_ 22 | #define UI_TVR_ON_SCREEN_IMAGE_H_ 23 | 24 | struct OnScreenImage { 25 | GLuint textureID; 26 | int width, height; 27 | float posx, posy; 28 | float scale; 29 | 30 | bool Contains(float x, float y) { 31 | return posx < x && x < posx + width 32 | && posy < y && y < posy + height; 33 | } 34 | OnScreenImage() : textureID(0) {} 35 | }; 36 | 37 | #endif 38 | --------------------------------------------------------------------------------