v01
5
thirdparty/opengv/.gitignore
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
lib
|
||||
build
|
||||
*.mexa64
|
||||
*.pyc
|
||||
.vscode
|
||||
3
thirdparty/opengv/.gitmodules
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
[submodule "python/pybind11"]
|
||||
path = python/pybind11
|
||||
url = https://github.com/pybind/pybind11.git
|
||||
64
thirdparty/opengv/.travis.yml
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
dist: trusty
|
||||
sudo: false
|
||||
|
||||
language: cpp
|
||||
|
||||
compiler:
|
||||
- clang
|
||||
- gcc
|
||||
|
||||
cache:
|
||||
apt: true
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- build-essential
|
||||
- python-dev
|
||||
- libboost-python-dev
|
||||
- python-numpy-dev
|
||||
- libeigen3-dev
|
||||
|
||||
env:
|
||||
global:
|
||||
# CMAKE minimal required version 3.1.0
|
||||
- CMAKE_URL="https://cmake.org/files/v3.1/cmake-3.1.3-Linux-x86_64.tar.gz"
|
||||
- CMAKE_ROOT=${TRAVIS_BUILD_DIR}/cmake
|
||||
- CMAKE_SOURCE=${CMAKE_ROOT}/source
|
||||
- CMAKE_INSTALL=${CMAKE_ROOT}/install
|
||||
|
||||
before_install:
|
||||
# CMAKE most recent version
|
||||
- >
|
||||
if [ "$(ls -A ${CMAKE_INSTALL})" ]; then
|
||||
echo "CMake found in cache.";
|
||||
ls -A ${CMAKE_INSTALL}
|
||||
export PATH=${CMAKE_INSTALL}/bin:${PATH};
|
||||
cmake --version
|
||||
else
|
||||
mkdir --parent ${CMAKE_SOURCE}
|
||||
mkdir --parent ${CMAKE_INSTALL}
|
||||
ls -A ${CMAKE_INSTALL}
|
||||
travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C ${CMAKE_INSTALL}
|
||||
export PATH=${CMAKE_INSTALL}/bin:${PATH};
|
||||
cmake --version
|
||||
fi
|
||||
|
||||
|
||||
before_script:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- >
|
||||
if [ $CXX = "clang++" ]; then
|
||||
cmake .. -DBUILD_TESTS:BOOL=ON -DBUILD_PYTHON:BOOL=ON -DCMAKE_CXX_FLAGS="-Wno-deprecated-register"
|
||||
else
|
||||
cmake .. -DBUILD_TESTS:BOOL=ON -DBUILD_PYTHON:BOOL=ON
|
||||
fi
|
||||
|
||||
script:
|
||||
- make -j2 VERBOSE=1
|
||||
- make test
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $CMAKE_INSTALL
|
||||
394
thirdparty/opengv/CMakeLists.txt
vendored
Normal file
@@ -0,0 +1,394 @@
|
||||
cmake_minimum_required(VERSION 3.1.3)
|
||||
project(opengv VERSION 1.0 LANGUAGES CXX)
|
||||
|
||||
# Set the build type. Options are:
|
||||
#
|
||||
# None (CMAKE_C_FLAGS or CMAKE_CXX_FLAGS used)
|
||||
# Debug (CMAKE_C_FLAGS_DEBUG or CMAKE_CXX_FLAGS_DEBUG)
|
||||
# Release (CMAKE_C_FLAGS_RELEASE or CMAKE_CXX_FLAGS_RELEASE)
|
||||
# RelWithDebInfo (CMAKE_C_FLAGS_RELWITHDEBINFO or CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||
# MinSizeRel (CMAKE_C_FLAGS_MINSIZEREL or CMAKE_CXX_FLAGS_MINSIZEREL)
|
||||
|
||||
set(CMAKE_BUILD_TYPE Release)
|
||||
|
||||
#set the default path for built executables to the "bin" directory
|
||||
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
|
||||
#set the default path for built libraries to the "lib" directory
|
||||
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
|
||||
|
||||
OPTION(BUILD_TESTS "Build tests" ON)
|
||||
OPTION(BUILD_PYTHON "Build Python extension" OFF)
|
||||
|
||||
IF(MSVC)
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
ELSE()
|
||||
OPTION(BUILD_SHARED_LIBS "Build shared libraries" OFF)
|
||||
OPTION(BUILD_POSITION_INDEPENDENT_CODE "Build position independent code (-fPIC)" ON)
|
||||
ENDIF()
|
||||
|
||||
IF(MSVC)
|
||||
add_compile_options(/wd4514 /wd4267 /bigobj)
|
||||
add_definitions(-D_USE_MATH_DEFINES)
|
||||
ELSE()
|
||||
IF (CMAKE_SYSTEM_PROCESSOR MATCHES "(arm64)|(ARM64)|(aarch64)|(AARCH64)")
|
||||
add_definitions (-march=armv8-a)
|
||||
ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES
|
||||
"(arm)|(ARM)|(armhf)|(ARMHF)|(armel)|(ARMEL)")
|
||||
add_definitions (-march=armv7-a)
|
||||
ELSE ()
|
||||
add_definitions (-march=native) #TODO use correct c++11 def once everybody has moved to gcc 4.7 # for now I even removed std=gnu++0x
|
||||
ENDIF()
|
||||
add_definitions (
|
||||
-O3
|
||||
-Wall
|
||||
-Wextra
|
||||
#-Werror
|
||||
-Wwrite-strings
|
||||
-Wno-unused-parameter
|
||||
-fno-strict-aliasing
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
IF(BUILD_POSITION_INDEPENDENT_CODE)
|
||||
add_definitions( -fPIC )
|
||||
ENDIF()
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/modules/")
|
||||
find_package(Eigen REQUIRED)
|
||||
set(ADDITIONAL_INCLUDE_DIRS ${EIGEN_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIR}/unsupported)
|
||||
|
||||
set( OPENGV_SOURCE_FILES
|
||||
src/absolute_pose/modules/main.cpp
|
||||
src/absolute_pose/modules/gp3p/code.cpp
|
||||
src/absolute_pose/modules/gp3p/init.cpp
|
||||
src/absolute_pose/modules/gp3p/reductors.cpp
|
||||
src/absolute_pose/modules/gp3p/spolynomials.cpp
|
||||
src/absolute_pose/modules/Epnp.cpp
|
||||
src/absolute_pose/modules/gpnp1/code.cpp
|
||||
src/absolute_pose/modules/gpnp1/init.cpp
|
||||
src/absolute_pose/modules/gpnp1/reductors.cpp
|
||||
src/absolute_pose/modules/gpnp1/spolynomials.cpp
|
||||
src/absolute_pose/modules/gpnp2/code.cpp
|
||||
src/absolute_pose/modules/gpnp2/init.cpp
|
||||
src/absolute_pose/modules/gpnp2/reductors.cpp
|
||||
src/absolute_pose/modules/gpnp2/spolynomials.cpp
|
||||
src/absolute_pose/modules/gpnp3/code.cpp
|
||||
src/absolute_pose/modules/gpnp3/init.cpp
|
||||
src/absolute_pose/modules/gpnp3/reductors.cpp
|
||||
src/absolute_pose/modules/gpnp3/spolynomials.cpp
|
||||
src/absolute_pose/modules/gpnp4/code.cpp
|
||||
src/absolute_pose/modules/gpnp4/init.cpp
|
||||
src/absolute_pose/modules/gpnp4/reductors.cpp
|
||||
src/absolute_pose/modules/gpnp4/spolynomials.cpp
|
||||
src/absolute_pose/modules/gpnp5/code.cpp
|
||||
src/absolute_pose/modules/gpnp5/init.cpp
|
||||
src/absolute_pose/modules/gpnp5/reductors.cpp
|
||||
src/absolute_pose/modules/gpnp5/spolynomials.cpp
|
||||
src/absolute_pose/modules/upnp2.cpp
|
||||
src/absolute_pose/modules/upnp4.cpp
|
||||
src/relative_pose/modules/main.cpp
|
||||
src/relative_pose/modules/fivept_nister/modules.cpp
|
||||
src/relative_pose/modules/fivept_stewenius/modules.cpp
|
||||
src/relative_pose/modules/fivept_kneip/code.cpp
|
||||
src/relative_pose/modules/fivept_kneip/init.cpp
|
||||
src/relative_pose/modules/fivept_kneip/reductors.cpp
|
||||
src/relative_pose/modules/fivept_kneip/spolynomials.cpp
|
||||
src/relative_pose/modules/sixpt/modules2.cpp
|
||||
src/relative_pose/modules/eigensolver/modules.cpp
|
||||
src/relative_pose/modules/ge/modules.cpp
|
||||
src/math/cayley.cpp
|
||||
src/math/quaternion.cpp
|
||||
src/math/arun.cpp
|
||||
src/math/Sturm.cpp
|
||||
src/math/roots.cpp
|
||||
src/math/gauss_jordan.cpp
|
||||
src/absolute_pose/methods.cpp
|
||||
src/absolute_pose/CentralAbsoluteAdapter.cpp
|
||||
src/absolute_pose/NoncentralAbsoluteAdapter.cpp
|
||||
src/absolute_pose/NoncentralAbsoluteMultiAdapter.cpp
|
||||
src/relative_pose/methods.cpp
|
||||
src/relative_pose/CentralRelativeAdapter.cpp
|
||||
src/relative_pose/CentralRelativeWeightingAdapter.cpp
|
||||
src/relative_pose/NoncentralRelativeAdapter.cpp
|
||||
src/relative_pose/CentralRelativeMultiAdapter.cpp
|
||||
src/relative_pose/NoncentralRelativeMultiAdapter.cpp
|
||||
src/triangulation/methods.cpp
|
||||
src/point_cloud/methods.cpp
|
||||
src/point_cloud/PointCloudAdapter.cpp
|
||||
src/sac_problems/absolute_pose/AbsolutePoseSacProblem.cpp
|
||||
src/sac_problems/absolute_pose/MultiNoncentralAbsolutePoseSacProblem.cpp
|
||||
src/sac_problems/relative_pose/CentralRelativePoseSacProblem.cpp
|
||||
src/sac_problems/relative_pose/NoncentralRelativePoseSacProblem.cpp
|
||||
src/sac_problems/relative_pose/RotationOnlySacProblem.cpp
|
||||
src/sac_problems/relative_pose/TranslationOnlySacProblem.cpp
|
||||
src/sac_problems/relative_pose/EigensolverSacProblem.cpp
|
||||
src/sac_problems/relative_pose/MultiCentralRelativePoseSacProblem.cpp
|
||||
src/sac_problems/relative_pose/MultiNoncentralRelativePoseSacProblem.cpp
|
||||
src/sac_problems/point_cloud/PointCloudSacProblem.cpp
|
||||
src/absolute_pose/MACentralAbsolute.cpp
|
||||
src/absolute_pose/MANoncentralAbsolute.cpp
|
||||
src/relative_pose/MACentralRelative.cpp
|
||||
src/relative_pose/MANoncentralRelative.cpp
|
||||
src/relative_pose/MANoncentralRelativeMulti.cpp
|
||||
src/point_cloud/MAPointCloud.cpp )
|
||||
|
||||
set( OPENGV_HEADER_FILES
|
||||
include/opengv/types.hpp
|
||||
include/opengv/OptimizationFunctor.hpp
|
||||
include/opengv/absolute_pose/methods.hpp
|
||||
include/opengv/relative_pose/methods.hpp
|
||||
include/opengv/triangulation/methods.hpp
|
||||
include/opengv/point_cloud/methods.hpp
|
||||
include/opengv/math/cayley.hpp
|
||||
include/opengv/math/quaternion.hpp
|
||||
include/opengv/math/arun.hpp
|
||||
include/opengv/math/Sturm.hpp
|
||||
include/opengv/math/roots.hpp
|
||||
include/opengv/math/gauss_jordan.hpp
|
||||
include/opengv/absolute_pose/AbsoluteAdapterBase.hpp
|
||||
include/opengv/absolute_pose/CentralAbsoluteAdapter.hpp
|
||||
include/opengv/absolute_pose/NoncentralAbsoluteAdapter.hpp
|
||||
include/opengv/absolute_pose/NoncentralAbsoluteMultiAdapter.hpp
|
||||
include/opengv/absolute_pose/AbsoluteMultiAdapterBase.hpp
|
||||
include/opengv/relative_pose/RelativeAdapterBase.hpp
|
||||
include/opengv/relative_pose/RelativeMultiAdapterBase.hpp
|
||||
include/opengv/relative_pose/CentralRelativeAdapter.hpp
|
||||
include/opengv/relative_pose/CentralRelativeWeightingAdapter.hpp
|
||||
include/opengv/relative_pose/NoncentralRelativeAdapter.hpp
|
||||
include/opengv/relative_pose/CentralRelativeMultiAdapter.hpp
|
||||
include/opengv/relative_pose/NoncentralRelativeMultiAdapter.hpp
|
||||
include/opengv/point_cloud/PointCloudAdapterBase.hpp
|
||||
include/opengv/point_cloud/PointCloudAdapter.hpp
|
||||
include/opengv/sac_problems/absolute_pose/AbsolutePoseSacProblem.hpp
|
||||
include/opengv/sac_problems/absolute_pose/MultiNoncentralAbsolutePoseSacProblem.hpp
|
||||
include/opengv/sac_problems/relative_pose/CentralRelativePoseSacProblem.hpp
|
||||
include/opengv/sac_problems/relative_pose/NoncentralRelativePoseSacProblem.hpp
|
||||
include/opengv/sac_problems/relative_pose/MultiCentralRelativePoseSacProblem.hpp
|
||||
include/opengv/sac_problems/relative_pose/MultiNoncentralRelativePoseSacProblem.hpp
|
||||
include/opengv/sac_problems/relative_pose/EigensolverSacProblem.hpp
|
||||
include/opengv/sac_problems/relative_pose/RotationOnlySacProblem.hpp
|
||||
include/opengv/sac_problems/relative_pose/TranslationOnlySacProblem.hpp
|
||||
include/opengv/sac_problems/point_cloud/PointCloudSacProblem.hpp
|
||||
include/opengv/absolute_pose/MACentralAbsolute.hpp
|
||||
include/opengv/absolute_pose/MANoncentralAbsolute.hpp
|
||||
include/opengv/relative_pose/MACentralRelative.hpp
|
||||
include/opengv/relative_pose/MANoncentralRelative.hpp
|
||||
include/opengv/relative_pose/MANoncentralRelativeMulti.hpp
|
||||
include/opengv/point_cloud/MAPointCloud.hpp )
|
||||
|
||||
add_library( opengv ${OPENGV_SOURCE_FILES} ${OPENGV_HEADER_FILES} )
|
||||
add_library( random_generators test/random_generators.cpp test/random_generators.hpp test/experiment_helpers.cpp test/experiment_helpers.hpp test/time_measurement.cpp test/time_measurement.hpp )
|
||||
set_target_properties( opengv random_generators PROPERTIES
|
||||
SOVERSION ${PROJECT_VERSION}
|
||||
VERSION ${PROJECT_VERSION}
|
||||
CXX_STANDARD 11
|
||||
CXX_STANDARD_REQUIRED ON
|
||||
DEBUG_POSTFIX d )
|
||||
|
||||
target_include_directories( opengv PUBLIC
|
||||
# only when building from the source tree
|
||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
||||
# only when using the lib from the install path
|
||||
$<INSTALL_INTERFACE:include>
|
||||
${ADDITIONAL_INCLUDE_DIRS} )
|
||||
|
||||
target_include_directories( random_generators PRIVATE ${ADDITIONAL_INCLUDE_DIRS} )
|
||||
|
||||
target_link_libraries( random_generators opengv )
|
||||
|
||||
IF (BUILD_TESTS)
|
||||
enable_testing()
|
||||
include_directories( ${ADDITIONAL_INCLUDE_DIRS} )
|
||||
|
||||
add_executable( test_absolute_pose test/test_absolute_pose.cpp )
|
||||
target_link_libraries( test_absolute_pose opengv random_generators )
|
||||
add_test(NAME test_absolute_pose
|
||||
WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}
|
||||
COMMAND test_absolute_pose)
|
||||
|
||||
add_executable( test_absolute_pose_sac test/test_absolute_pose_sac.cpp )
|
||||
target_link_libraries( test_absolute_pose_sac opengv random_generators )
|
||||
add_test(NAME test_absolute_pose_sac
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_absolute_pose_sac)
|
||||
|
||||
add_executable( test_noncentral_absolute_pose test/test_noncentral_absolute_pose.cpp )
|
||||
target_link_libraries( test_noncentral_absolute_pose opengv random_generators )
|
||||
add_test(NAME test_noncentral_absolute_pose
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_noncentral_absolute_pose)
|
||||
|
||||
add_executable( test_noncentral_absolute_pose_sac test/test_noncentral_absolute_pose_sac.cpp )
|
||||
target_link_libraries( test_noncentral_absolute_pose_sac opengv random_generators )
|
||||
add_test(NAME test_noncentral_absolute_pose_sac
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_noncentral_absolute_pose_sac)
|
||||
|
||||
add_executable( test_multi_noncentral_absolute_pose_sac test/test_multi_noncentral_absolute_pose_sac.cpp )
|
||||
target_link_libraries( test_multi_noncentral_absolute_pose_sac opengv random_generators )
|
||||
add_test(NAME test_multi_noncentral_absolute_pose_sac
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_multi_noncentral_absolute_pose_sac)
|
||||
|
||||
add_executable( test_relative_pose test/test_relative_pose.cpp )
|
||||
target_link_libraries( test_relative_pose opengv random_generators )
|
||||
add_test(NAME test_relative_pose
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_relative_pose)
|
||||
|
||||
add_executable( test_relative_pose_rotationOnly test/test_relative_pose_rotationOnly.cpp )
|
||||
target_link_libraries( test_relative_pose_rotationOnly opengv random_generators )
|
||||
add_test(NAME test_relative_pose_rotationOnly
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_relative_pose_rotationOnly)
|
||||
|
||||
add_executable( test_relative_pose_rotationOnly_sac test/test_relative_pose_rotationOnly_sac.cpp )
|
||||
target_link_libraries( test_relative_pose_rotationOnly_sac opengv random_generators )
|
||||
add_test(NAME test_relative_pose_rotationOnly_sac
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_relative_pose_rotationOnly_sac)
|
||||
|
||||
add_executable( test_relative_pose_sac test/test_relative_pose_sac.cpp )
|
||||
target_link_libraries( test_relative_pose_sac opengv random_generators )
|
||||
add_test(NAME test_relative_pose_sac
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_relative_pose_sac)
|
||||
|
||||
add_executable( test_noncentral_relative_pose test/test_noncentral_relative_pose.cpp )
|
||||
target_link_libraries( test_noncentral_relative_pose opengv random_generators )
|
||||
add_test(NAME test_noncentral_relative_pose
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_noncentral_relative_pose)
|
||||
|
||||
add_executable( test_noncentral_relative_pose_sac test/test_noncentral_relative_pose_sac.cpp )
|
||||
target_link_libraries( test_noncentral_relative_pose_sac opengv random_generators )
|
||||
add_test(NAME test_noncentral_relative_pose_sac
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_noncentral_relative_pose_sac)
|
||||
|
||||
add_executable( test_multi_noncentral_relative_pose_sac test/test_multi_noncentral_relative_pose_sac.cpp )
|
||||
target_link_libraries( test_multi_noncentral_relative_pose_sac opengv random_generators )
|
||||
add_test(NAME test_multi_noncentral_relative_pose_sac
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_multi_noncentral_relative_pose_sac)
|
||||
|
||||
add_executable( test_eigensolver_sac test/test_eigensolver_sac.cpp )
|
||||
target_link_libraries( test_eigensolver_sac opengv random_generators )
|
||||
add_test(NAME test_eigensolver_sac
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_eigensolver_sac)
|
||||
|
||||
add_executable( test_triangulation test/test_triangulation.cpp )
|
||||
target_link_libraries( test_triangulation opengv random_generators )
|
||||
add_test(NAME test_triangulation
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_triangulation)
|
||||
|
||||
add_executable( test_eigensolver test/test_eigensolver.cpp )
|
||||
target_link_libraries( test_eigensolver opengv random_generators )
|
||||
add_test(NAME test_eigensolver
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_eigensolver)
|
||||
|
||||
add_executable( test_point_cloud test/test_point_cloud.cpp )
|
||||
target_link_libraries( test_point_cloud opengv random_generators )
|
||||
add_test(NAME test_point_cloud
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_point_cloud)
|
||||
|
||||
add_executable( test_point_cloud_sac test/test_point_cloud_sac.cpp )
|
||||
target_link_libraries( test_point_cloud_sac opengv random_generators )
|
||||
add_test(NAME test_point_cloud_sac
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_point_cloud_sac)
|
||||
|
||||
add_executable( test_Sturm test/test_Sturm.cpp )
|
||||
target_link_libraries( test_Sturm opengv random_generators )
|
||||
add_test(NAME test_Sturm
|
||||
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
COMMAND test_Sturm)
|
||||
|
||||
set_target_properties(
|
||||
test_absolute_pose
|
||||
test_absolute_pose_sac
|
||||
test_noncentral_absolute_pose
|
||||
test_noncentral_absolute_pose_sac
|
||||
test_multi_noncentral_absolute_pose_sac
|
||||
test_relative_pose
|
||||
test_relative_pose_rotationOnly
|
||||
test_relative_pose_rotationOnly_sac
|
||||
test_relative_pose_sac
|
||||
test_noncentral_relative_pose
|
||||
test_noncentral_relative_pose_sac
|
||||
test_multi_noncentral_relative_pose_sac
|
||||
test_eigensolver_sac
|
||||
test_triangulation
|
||||
test_eigensolver
|
||||
test_point_cloud
|
||||
test_point_cloud_sac
|
||||
test_Sturm
|
||||
|
||||
PROPERTIES
|
||||
CXX_STANDARD 11
|
||||
CXX_STANDARD_REQUIRED ON
|
||||
DEBUG_POSTFIX d )
|
||||
|
||||
|
||||
ENDIF()
|
||||
|
||||
# Configuration
|
||||
set(config_install_dir "lib/cmake/${PROJECT_NAME}-${PROJECT_VERSION}")
|
||||
set(include_install_dir "include")
|
||||
set(version_config "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake")
|
||||
set(project_config "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake")
|
||||
set(targets_export_name "${PROJECT_NAME}Targets")
|
||||
|
||||
# Include module with fuction 'write_basic_package_version_file'
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
# Configure '<PROJECT-NAME>ConfigVersion.cmake'
|
||||
# Note: PROJECT_VERSION is used as a VERSION
|
||||
write_basic_package_version_file(
|
||||
"${version_config}" COMPATIBILITY SameMajorVersion )
|
||||
|
||||
# Configure '<PROJECT-NAME>Config.cmake'
|
||||
# Use variables:
|
||||
# * targets_export_name
|
||||
# * PROJECT_NAME
|
||||
configure_package_config_file(
|
||||
"modules/Config.cmake.in"
|
||||
"${project_config}"
|
||||
INSTALL_DESTINATION "${config_install_dir}")
|
||||
|
||||
# Export '<PROJECT-NAME>Targets.cmake' to build dir (to find package in build dir without install)
|
||||
export(TARGETS opengv FILE "${CMAKE_CURRENT_BINARY_DIR}/${targets_export_name}.cmake")
|
||||
|
||||
# Targets:
|
||||
install(TARGETS opengv
|
||||
EXPORT "${targets_export_name}"
|
||||
LIBRARY DESTINATION "lib"
|
||||
ARCHIVE DESTINATION "lib"
|
||||
RUNTIME DESTINATION "bin"
|
||||
INCLUDES DESTINATION "${include_install_dir}")
|
||||
|
||||
# Config
|
||||
# * <prefix>/lib/cmake/opengv/opengvConfig.cmake
|
||||
# * <prefix>/lib/cmake/opengv/opengvConfigVersion.cmake
|
||||
install(FILES "${project_config}" "${version_config}"
|
||||
DESTINATION "${config_install_dir}")
|
||||
|
||||
# Config
|
||||
# * <prefix>/lib/cmake/opengv/opengvTargets.cmake
|
||||
install(EXPORT "${targets_export_name}"
|
||||
NAMESPACE "${namespace}"
|
||||
DESTINATION "${config_install_dir}")
|
||||
|
||||
# Headers
|
||||
install(DIRECTORY include/
|
||||
DESTINATION ${include_install_dir}
|
||||
FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp")
|
||||
|
||||
|
||||
if (BUILD_PYTHON)
|
||||
add_subdirectory( python )
|
||||
endif()
|
||||
1783
thirdparty/opengv/Doxyfile
vendored
Normal file
29
thirdparty/opengv/License.txt
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
1
thirdparty/opengv/Makefile.ros
vendored
Normal file
@@ -0,0 +1 @@
|
||||
include $(shell rospack find mk)/cmake.mk
|
||||
12
thirdparty/opengv/README.txt
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
library: OpenGV
|
||||
pages: http://laurentkneip.github.io/opengv
|
||||
brief: OpenGV is a collection of computer vision methods for solving
|
||||
geometric vision problems. It contains absolute-pose, relative-pose,
|
||||
triangulation, and point-cloud alignment methods for the calibrated
|
||||
case. All problems can be solved with central or non-central cameras,
|
||||
and embedded into a random sample consensus or nonlinear optimization
|
||||
context. Matlab and Python interfaces are implemented as well. The link
|
||||
to the above pages also shows links to precompiled Matlab mex-libraries.
|
||||
Please consult the documentation for more information.
|
||||
author: Laurent Kneip, ShanghaiTech, Mobile Perception Lab (http://mpl.sist.shanghaitech.edu.cn)
|
||||
contact: kneip.laurent@gmail.com
|
||||
238
thirdparty/opengv/doc/addons/01_installation.dox
vendored
Normal file
@@ -0,0 +1,238 @@
|
||||
/** \page page_installation Installation
|
||||
*
|
||||
* \section sec_installation_0_5 Before you start
|
||||
*
|
||||
* If you are only interested in using the library under Matlab, now there is a precompiled mex-library for 64-bit systems available. You can download it from:
|
||||
*
|
||||
\verbatim
|
||||
Windows: http://laurentkneip.github.io/publications/opengv.mexw64
|
||||
Mac OSX: http://laurentkneip.github.io/publications/opengv.mexmaci64
|
||||
\endverbatim
|
||||
*
|
||||
* These versions have been added around March 2016, so please be aware that later additions may not be included in this distribution. You can go immediately to \ref page_matlab "Use under Matlab" to receive further instructions on the Matlab interface.
|
||||
*
|
||||
* \section sec_installation_1 Downloading the source code
|
||||
*
|
||||
* OpenGV is freely available under
|
||||
*
|
||||
\verbatim
|
||||
https://github.com/laurentkneip/opengv
|
||||
\endverbatim
|
||||
*
|
||||
* You may first have to register on github.com. You can just download a zip-file with the code, but we strongly recommend that you make yourself familiar with git. Git is a distributed version-control and source code management system. By using git to clone the repository locally, you can easily get updates at a later stage, and also facilitate the integration of own improvements or extensions into the original repository on github. This is done using the pull-request mechanism.
|
||||
*
|
||||
* To clone the library under Mac OSX or Linux, simply type (assuming that git is installed):
|
||||
*
|
||||
\verbatim
|
||||
git clone https://github.com/laurentkneip/opengv
|
||||
\endverbatim
|
||||
*
|
||||
* Under Windows you probably have a similar option. More information about git can be found here:
|
||||
*
|
||||
\verbatim
|
||||
http://git-scm.com/
|
||||
\endverbatim
|
||||
*
|
||||
* Follow the "Try git" link for an amazing interactive tutorial.
|
||||
*
|
||||
* \section sec_installation_2 Installation under Linux
|
||||
*
|
||||
* <ul>
|
||||
* <li>Setup the required tools for compilation of standard libraries under Linux (gcc compiler etc). Type:
|
||||
*
|
||||
\verbatim
|
||||
sudo apt-get install build-essential
|
||||
\endverbatim
|
||||
*
|
||||
* <li>Install cmake. CMake is a cross-platform, open-source build system used for pretty much anything in the compilation process for the compilation/linking of the library. Type:
|
||||
*
|
||||
\verbatim
|
||||
sudo apt-get install cmake
|
||||
\endverbatim
|
||||
*
|
||||
*
|
||||
* <li>Install eigen3. Eigen3 is a powerful linear algebra library used for all computations in OpenGV. You can either use an installed version of a local install (unzipped version of Eigen3 downloaded from Eigen website).
|
||||
*
|
||||
\verbatim
|
||||
sudo apt-get install cmake libeigen3-dev
|
||||
\endverbatim
|
||||
*
|
||||
* <li>Go to the top-level directory of OpenGV. Type:
|
||||
*
|
||||
\verbatim
|
||||
mkdir build && cd build && cmake .. && make
|
||||
\endverbatim
|
||||
*
|
||||
* If a message like "Could NOT find Eigen (missing: EIGEN_INCLUDE_DIR EIGEN_VERSION_OK)" appears. It's certainly because that you does not have Eigen3 installed on your computer system path. You can specify to cmake the path where Eigen is located by adding:
|
||||
\verbatim
|
||||
mkdir build && cd build && cmake .. -DEIGEN_INCLUDE_DIR:STRING="EigenIncludePath" && make
|
||||
\endverbatim
|
||||
*
|
||||
* <li>Done. The default configuration does not build the tests or python-wrappers, please set the according variables in CMakeLists.txt to ON if you desire the tests or python-wrappers to be built as well.
|
||||
* </ul>
|
||||
*
|
||||
* \section sec_installation_3 Installation under Windows
|
||||
*
|
||||
* <ul>
|
||||
* <li>We need a suitable compiler for C++. We chose Visual Studio Express, which is free. Google for "Microsoft Visual Studio Express", it should be one of the first links. Make sure you download and install the "Windows Desktop version". If you are in a school setting without Administrator rights, just go to your local IT guy and ask him to install Microsoft Visual Studio on your machine.
|
||||
*
|
||||
* <li>We also need CMake under Windows. Go to:
|
||||
*
|
||||
\verbatim
|
||||
http://www.cmake.org/
|
||||
\endverbatim
|
||||
*
|
||||
* and download the latest version. In a school setting without administrator rights, chose to download the zip-file. Extract it somewhere.
|
||||
* <li>Open a new Developer Command Prompt for VS2012 and make sure all VS path variables are correctly set by checking the output of PATH. We also need to add the cmake-tools to the path. Add it by typing
|
||||
*
|
||||
\verbatim
|
||||
cd C:\<path to cmake>\bin
|
||||
PATH=%PATH%;%cd%;
|
||||
\endverbatim
|
||||
*
|
||||
* <li>Go to the opengv directory and add a build folder
|
||||
* <li>Now go to the
|
||||
*
|
||||
\verbatim
|
||||
opengv\build
|
||||
\endverbatim
|
||||
*
|
||||
* directory, and setup the build process by typing:
|
||||
*
|
||||
\verbatim
|
||||
cmake -G "Visual Studio 11" ..
|
||||
\endverbatim
|
||||
*
|
||||
* You need to add the correct generator for your Visual Studio version. I downloaded Visual Studio 2012, so it's 11 :)
|
||||
* <li>Now build the library by typing:
|
||||
*
|
||||
\verbatim
|
||||
msbuild opengv.sln /p:Configuration=Release
|
||||
\endverbatim
|
||||
*
|
||||
* inside the build directory. While there is not a single warning under Linux, there are thousands of warnings under Windows :) If anyone knows the reason, please let us know.
|
||||
*
|
||||
* <li>Note that we Eigen dependency is not longer included. It is better to get a fresh download of Eigen on your computer, and specify to cmake the Eigen include path with -DEIGEN_INCLUDE_DIR="path".
|
||||
* </ul>
|
||||
*
|
||||
* \section sec_installation_35 Installation under OSX
|
||||
*
|
||||
* Has been succesfully tested as well.
|
||||
*
|
||||
* <ul>
|
||||
* <li> Install homebrew: http://brew.sh/
|
||||
* <li> Type: "brew install cmake eigen"
|
||||
* <li> Compile using normal cmake procedure.
|
||||
* </ul>
|
||||
*
|
||||
* \section sec_installation_36 Installing OpenGV on the host OS
|
||||
*
|
||||
* Installation on the host OS (including the headers) can be activated by simply launching the install target.
|
||||
* By using "sudo make install" on Linux and OSX and by compiling the install target on the opengv Visual Studio solution in Windows. Sudo is required for system install.
|
||||
* You can choose to have a local installation path by setting the cmake variable CMAKE_INSTALL_PREFIX to the path of your choice by using -DCMAKE_INSTALL_PREFIX:STRING="YourInstallPath" in the cmake command line.
|
||||
\verbatim
|
||||
cmake ../opengv
|
||||
-DEIGEN_INCLUDE_DIR="EigenIncludePath"
|
||||
-DBUILD_TESTS=ON
|
||||
-DCMAKE_INSTALL_PREFIX="YourInstallPath"
|
||||
make
|
||||
make install #sudo not required since we use a local installation
|
||||
\endverbatim
|
||||
*
|
||||
* \section sec_installation_4 Installing the Matlab-wrapper (Windows-version)
|
||||
*
|
||||
* <ul>
|
||||
* <li>First setup the compiler from Matlab. Go to the matlab console and type
|
||||
*
|
||||
\verbatim
|
||||
mex -setup
|
||||
\endverbatim
|
||||
*
|
||||
* and chose the right compiler by following the instructions. You will have to chose the same compiler than the one you used for compiling the opengv library before-hand. Under Windows you might also
|
||||
* run into the following problem. Depending on the distribution (e.g. R2012b), Matlab does not yet "know" your compiler (e.g. Visual Studio 2012), so you will have to additionally follow the instructions under
|
||||
*
|
||||
\verbatim
|
||||
http://jimdavid.blogspot.com.au/2012/12/matlab-2012b-mex-setup-with-vs2012.html
|
||||
\endverbatim
|
||||
*
|
||||
* to get things running. Also note that the Express compilers are not supported by Matlab, we ran into some issues when trying to use them. Please report if you have a solution to that.
|
||||
* <li>Once this is done, you can compile the mex-file by going to the opengv/matlab folder and typing in the console
|
||||
*
|
||||
\verbatim
|
||||
mex -I../include -I../EigenIncludePath -L../build/lib/Release -lopengv opengv.cpp
|
||||
\endverbatim
|
||||
*
|
||||
* <li>An additional note on 64-bit Windows/Matlab systems: If you have a Matlab version that is 64-bit, you will have to also compile OpenGV in 64-bit. You will have to follow
|
||||
* two steps for this under Windows. The first one is to make sure that you open an x64 native tools command prompt to make the x64 Visual Studio compiler visible. The second one
|
||||
* is to-when running cmake-extend the generator name by " Win64". The final command to run cmake finally looks as follows:
|
||||
*
|
||||
\verbatim
|
||||
cmake -G "Visual Studio 11 Win64" ..
|
||||
\endverbatim
|
||||
*
|
||||
* The actual build command stays the same.
|
||||
* </ul>
|
||||
*
|
||||
* \section sec_installation_5 Installing the Matlab-wrapper (Linux-version)
|
||||
*
|
||||
* The following has been tested under Ubuntu 12.04 and a recent Matlab edition (>2013) (thanks to Oliver Dunkley for providing this information).
|
||||
*
|
||||
* <ul>
|
||||
* <li> Install Matlab with the provided installer, and then add the matlab-support package through the package-repositories. This basically takes care
|
||||
* of setting all the compiler stuff, adding a launcher, etc.
|
||||
* <li> In order to make Matlab know about the shared object opengv.so, the path to opengv.so has to be added to LD_LIBRARY_PATH. Open .bashrc and add the line
|
||||
*
|
||||
\verbatim
|
||||
export LD_LIBRARY_PATH=<path to OpenGV>/build/lib:$LD_LIBRARY_PATH
|
||||
\endverbatim
|
||||
*
|
||||
* and then start Matlab from the terminal, it'll know about opengv ...
|
||||
* <li>Go to the opengv/matlab-folder inside Matlab, and issue the command
|
||||
*
|
||||
\verbatim
|
||||
mex -I../include -I../EigenIncludePath -L../build/lib -lopengv opengv.cpp -cxx
|
||||
\endverbatim
|
||||
*
|
||||
* Note the lib directory does not contain a Release subfolder under linux, and that the -cxx option has to be added.
|
||||
* </ul>
|
||||
*
|
||||
* \section sec_installation_6 Installing the Matlab-wrapper (OSX-version)
|
||||
*
|
||||
* To compile the Matlab interface under OSX, use the same command as under Windows, with adapted library folder (-L../build/lib instead of -L../build/lib/Release). You of course need to make sure again that Matlab knows where to find the library, and that a suitable compiler is set up in Matlab as well.
|
||||
*
|
||||
* \section sec_installation_7 Installing the python wrappers
|
||||
*
|
||||
* The Python wrappers depend on the pybind11 library, which is included as a git submodule.
|
||||
* To get it, run
|
||||
\verbatim
|
||||
git submodule update --init --recursive
|
||||
\endverbatim
|
||||
* With that done, the compliation of the Python wrappers can be enabled by setting the option BUILD_PYTHON to ON.
|
||||
* The especific version of Python to target can be set using the option PYBIND11_PYTHON_VERSION.
|
||||
* For example,
|
||||
\verbatim
|
||||
cmake ../opengv
|
||||
-DBUILD_PYTHON=ON
|
||||
-DPYBIND11_PYTHON_VERSION=3.6
|
||||
\endverbatim
|
||||
* Note that the python wrappers currently only allow access to the central methods.
|
||||
*
|
||||
* \section sec_installation_8 Using the OpenGV inside your cmake c++ project
|
||||
*
|
||||
* Once your have a system or local install of opengv you can use it in your own project.
|
||||
* In your cmake file, add the search for the opengv library:
|
||||
\verbatim
|
||||
find_package(opengv REQUIRED)
|
||||
if (opengv_FOUND)
|
||||
add_executable(main_opengv_demo main.cpp)
|
||||
target_link_libraries(main_opengv_demo opengv)
|
||||
endif (opengv_FOUND)
|
||||
\endverbatim
|
||||
*
|
||||
* Then run cmake for your project (if you are using a local install of opengv, you can specify where the library is located by using -Dopengv_DIR:
|
||||
\verbatim
|
||||
cmake ../myproject
|
||||
-DCMAKE_BUILD_TYPE=RELEASE
|
||||
-Dopengv_DIR:STRING=/home/Foo/Documents/Dev/opengv_Build/install/CMake/
|
||||
\endverbatim
|
||||
*/
|
||||
498
thirdparty/opengv/doc/addons/02_how_to_use.dox
vendored
Normal file
@@ -0,0 +1,498 @@
|
||||
/** \page page_how_to_use How to use
|
||||
*
|
||||
* This page gives an introduction to the usage of OpenGV including a description of the interface and explicit examples. More information can be found in [17]. However, in order to have a smooth communication and full understanding of the functionality and documentation of the library, we first need to clearly define the meaning of a couple of words in the present context.
|
||||
*
|
||||
* \section sec_vocabulary Vocabulary
|
||||
*
|
||||
* <ul>
|
||||
* <li> <b>Bearing vector</b>: A bearing vector is defined to be a 3-vector with unit norm bearing at a spatial 3D point from a camera reference frame. It has 2 degrees of freedom, which are the azimuth and elevation in the camera reference frame. Because it has only two degrees of freedom, we frequently refer to it as a 2D information. It is normally expressed in a camera reference frame.
|
||||
* <li> <b>Landmark</b>: A landmark describes a 3D spatial point (usually expressed in a fixed frame called world reference frame).
|
||||
* <li> <b>Camera</b>: OpenGV assumes to be in the calibrated case, and landmark measurements are always given in form of bearing vectors in a camera frame. A camera therefore denotes a camera reference frame with a set of bearing vectors, all pointing from the origin to landmarks. The following figure shows a camera c with bearing vectors (in red). The bearing vectors are all lying on the unit-sphere centered around the camera.
|
||||
*
|
||||
* \image html central.png
|
||||
* \image latex central.pdf "" width=0.45\columnwidth
|
||||
*
|
||||
* <li> <b>Viewpoint</b>: You will notice that the documentation of the code very frequently talks about viewpoints instead of cameras. One of the advantages of OpenGV is that it can transparently handle both the central and the non-central case. The viewpoint is a generalization of a camera, and can contain an arbitrary number of cameras each one having it's own landmark-measurements (e.g. bearing vectors). A practical example of a viewpoint would be the set of images and related measurements captured by a fully-calibrated, rigid multi-camera rig with synchronized cameras, which therefore still represents a single (multi)-snapshot (i.e. viewpoint). Each camera has its own transformation to the viewpoint frame. In the central case the viewpoint simply contains a single camera with an identity transformation. The most general case-the generalized camera-can also be described by the viewpoint. Each bearing vector would then have it's own camera and related transformation. A generalized camera would hence be represented by an exhaustive multi-camera system. The following image shows a viewpoint vp (in blue) with three cameras c, c', and c'', each one containing its own bearing vector measurements.
|
||||
*
|
||||
* \image html noncentral.png
|
||||
* \image latex noncentral.pdf "" width=0.8\columnwidth
|
||||
*
|
||||
* <li> <b>Pose</b>: By a pose, we understand here the position and orientation of a viewpoint, either with respect to a fixed spatial reference frame called the "world" reference frame, or with respect to another viewpoint.
|
||||
* <li> <b>Absolute Pose</b>: By absolute pose, we understand the pose of a viewpoint in the world reference frame.
|
||||
* <li> <b>Relative Pose</b>: By relative pose, we understand the pose of a viewpoint with respect to another viewpoint.
|
||||
* <li> <b>Correspondence</b>: By a correspondence, we understand a pair of bearing-vectors pointing at the same landmark from different viewpoints (2D-2D correspondence), a bearing vector and a world-point it is pointing at (2D-3D correspondence), or a pair of expressions of the same landmark in different frames (3D-3D correspondence).
|
||||
* </ul>
|
||||
*
|
||||
* \section sec_organization Organization of the library
|
||||
*
|
||||
* The library-structure is best analyzed at the hand of the namespace or directory hierarchy (as a matter of fact, there is no difference between the two):
|
||||
* <ul>
|
||||
* <li> opengv: contains generic things such as the types used throughout the library.
|
||||
* <li> opengv/math: contains a bunch of math functions that are used in different algorithms, mainly for root-finding and rotation-related stuff.
|
||||
* <li> opengv/absolute_pose: contains the absolute-pose methods. methods.hpp is the main-header that contains the method-declarations. You can also find a bunch of adapters here for interfacing with the algorithms (explained in the next section). The sub-folder modules contains declarations of internal methods.
|
||||
* <li> opengv/relative_pose: contains the relative-pose methods. methods.hpp is the main-header that contains the method-declarations. You can also find a bunch of adapters here for interfacing with the algorithms (explained in the next section). The sub-folder modules contains declarations of internal methods.
|
||||
* <li> opengv/point_cloud: contains the point-cloud alignment methods. Again, methods.hpp contains the declarations, and the folder contains adapters for interfacing (explained below).
|
||||
* <li> opengv/triangulation: contains the triangulation methods.
|
||||
* <li> opengv/sac: contains base-classes for sample-consensus methods and problems. So far, only the Ransac algorithm is implemented.
|
||||
* <li> opengv/sac_problems: contains sample-consensus problems derived from the base-class. Implements sample-consensus problems for point-cloud alignment and central as well as non-central absolute and relative-pose estimation.
|
||||
* </ul>
|
||||
*
|
||||
* \section sec_interface Interface
|
||||
*
|
||||
* You will quickly notice that all methods in OpenGV use a variable called adapter as a function-call parameter. OpenGV is designed based on the adapter pattern. "Adapters" in OpenGV are used as "visitors" to all geometric vision methods. They contain the landmarks, bearing-vectors, poses, correspondences etc. used as an input to the different methods (or references to the alike), and allow to access those elements with a unified interface. Adapters are derived from a base-class that defines the unified interface and they have to implement the related functions for accessing bearing-vectors, world-points, camera-transformations, viewpoint-poses, etc. There are three adapter-base-classes:
|
||||
*
|
||||
* <ul>
|
||||
* <li> <b>AbsoluteAdapterBase</b>: Base-class for adapters holding 2D-3D correspondences for absolute-pose methods.
|
||||
* <li> <b>RelativeAdapterBase</b>: Base-class for adapters holding 2D-2D correspondences for relative-pose methods.
|
||||
* <li> <b>PointCloudAdapterBase</b>: Base-class for adapters holding 3D-3D correspondences for point-cloud alignment methods.
|
||||
* </ul>
|
||||
*
|
||||
* The derived adapters have the task of transforming the data from the user-format to OpenGV types. This gives the library great flexibility. Users have to implement only a couple of adapters for the specific data-format they are using, and can then access the full functionality of the library. OpenGV currently contains adapters that simply hold references to OpenGV types (no transformation needed) plus adapters for mexArrays used within the Matlab-interface. Further adapters are planned, such as for instance an adapter for OpenCV keypoint and match-types including a camera model. The user would then be able to chose whether normalization of keypoints is done "on-demand" or "once for all" at the beginning, which is more efficient in sample-consensus problems.
|
||||
*
|
||||
* Note that adapters containing the tag "Central" in their name are adapters for a single camera (i.e. view-points with only one camera having identity transformation). Adapters having the tag "Noncentral" in their name are meant for view-points with multiple cameras (e.g., multi-camera systems, generalized cameras).
|
||||
*
|
||||
* Please check out the doxygen documentation on the above base-classes, they contain important documentation on the functions that need to be overloaded for a proper implementation of an adapter.
|
||||
*
|
||||
* \section sec_conventions Conventions, problem types, and examples
|
||||
*
|
||||
* As already mentioned, the entire library is assuming calibrated cameras/viewpoints, and it operates with 3D unit bearing vectors expressed in the camera frame. Calibrated means that the configuration of the multi-camera system (i.e. the inter-camera transformations) is known. The following introduces the different problems that can be solved with the library, and outlines the conventions for transformations (translations and rotations) in their context. <b>Note that all problems have solutions for both the minimal and non-minimal cases, and may also be solved as sample-consensus or non-linear optimization problems</b>. The code samples are mostly taken from the test files, which you can compile along with the library by setting BUILD_TESTS in CMakeLists.txt to ON.
|
||||
*
|
||||
* <ul>
|
||||
*
|
||||
* <li> <b>Central absolute pose:</b> The central absolute pose problem consists of finding the pose of a camera (e.g. viewpoint with a single camera) given a number of 2D-3D correspondences between bearing vectors in the camera frame and points in the world frame. The seeked transformation is given by the position \f$ \mathbf{t}_{c} \f$ of the camera seen from the world frame and the rotation \f$ \mathbf{R}_{c} \f$ from the camera to the world frame. This is what the algorithms return (or part of it), and what the adapters can hold as known or prior information.
|
||||
*
|
||||
* \image html absolute_central.png
|
||||
* \image latex absolute_central.pdf "" width=0.8\columnwidth
|
||||
*
|
||||
* The minimal variants are p2p (a solution for position if rotation is known), p3p_kneip [1], p3p_gao [2], and UPnP [19]. The non-minimal variants are epnp [4], and UPnP [19]. The non-linear optimization variant is called optimize_nonlinear. Here's how to use them:
|
||||
*
|
||||
\code
|
||||
// create the central adapter
|
||||
absolute_pose::CentralAbsoluteAdapter adapter(
|
||||
bearingVectors, points );
|
||||
|
||||
// Kneip's P2P (uses rotation from adapter)
|
||||
adapter.setR( knownRotation );
|
||||
translation_t p2p_translation =
|
||||
absolute_pose::p2p( adapter, indices1 );
|
||||
|
||||
// Kneip's P3P
|
||||
transformations_t p3p_kneip_transformations =
|
||||
absolute_pose::p3p_kneip( adapter, indices2 );
|
||||
|
||||
// Gao's P3P
|
||||
transformations_t p3p_gao_transformations =
|
||||
absolute_pose::p3p_gao( adapter, indices2 );
|
||||
|
||||
// Lepetit's Epnp (using all correspondences)
|
||||
transformation_t epnp_transformation =
|
||||
absolute_pose::epnp(adapter);
|
||||
|
||||
// UPnP (using all correspondences)
|
||||
transformations_t upnp_transformations =
|
||||
absolute_pose::upnp(adapter);
|
||||
|
||||
// UPnP (using three correspondences)
|
||||
transformations_t upnp_transformations =
|
||||
absolute_pose::upnp( adapter, indices2 );
|
||||
|
||||
// non-linear optimization (using all correspondences)
|
||||
adapter.sett(initial_translation);
|
||||
adapter.setR(initial_rotation);
|
||||
transformation_t nonlinear_transformation =
|
||||
absolute_pose::optimize_nonlinear(adapter);
|
||||
|
||||
\endcode
|
||||
*
|
||||
* p3p_kneip, p3p_gao, and epnp can also be used within a sample consensus context. The following shows how to do it:
|
||||
*
|
||||
\code
|
||||
// create the central adapter
|
||||
absolute_pose::CentralAbsoluteAdapter adapter(
|
||||
bearingVectors, points );
|
||||
|
||||
// create a Ransac object
|
||||
sac::Ransac<sac_problems::absolute_pose::AbsolutePoseSacProblem> ransac;
|
||||
|
||||
// create an AbsolutePoseSacProblem
|
||||
// (algorithm is selectable: KNEIP, GAO, or EPNP)
|
||||
std::shared_ptr<sac_problems::absolute_pose::AbsolutePoseSacProblem>
|
||||
absposeproblem_ptr(
|
||||
new sac_problems::absolute_pose::AbsolutePoseSacProblem(
|
||||
adapter, sac_problems::absolute_pose::AbsolutePoseSacProblem::KNEIP ) );
|
||||
|
||||
// run ransac
|
||||
ransac.sac_model_ = absposeproblem_ptr;
|
||||
ransac.threshold_ = threshold;
|
||||
ransac.max_iterations_ = maxIterations;
|
||||
ransac.computeModel();
|
||||
|
||||
// get the result
|
||||
transformation_t best_transformation =
|
||||
ransac.model_coefficients_;
|
||||
\endcode
|
||||
*
|
||||
* These examples are taken from test_absolute_pose.cpp and test_absolute_pose_sac.cpp.
|
||||
*
|
||||
* <li> <b>Non-central absolute pose:</b> The non-central absolute pose problem consists of finding the pose of a viewpoint given a number of 2D-3D correspondences between bearing vectors in multiple camera frames and points in the world frame. The seeked transformation is given by the position \f$ \mathbf{t}_{vp} \f$ of the viewpoint seen from the world frame and the rotation \f$ \mathbf{R}_{vp} \f$ from the viewpoint to the world frame. This is what the algorithms return, and what the adapters can hold as known or prior information.
|
||||
*
|
||||
* \image html absolute_noncentral.png
|
||||
* \image latex absolute_noncentral.pdf "" width=0.8\columnwidth
|
||||
*
|
||||
* The minimal variant is gp3p, and the non-minimal variant is gpnp [3]. UPnP can be used for both the minimal and the non-minimal case [19]. The non-linear optimization variant is still optimize_nonlinear (it handles both cases). Here's how to use them:
|
||||
*
|
||||
\code
|
||||
// create the non-central adapter
|
||||
absolute_pose::NoncentralAbsoluteAdapter adapter(
|
||||
bearingVectors,
|
||||
camCorrespondences,
|
||||
points,
|
||||
camOffsets,
|
||||
camRotations );
|
||||
|
||||
// Kneip's GP3P
|
||||
transformations_t gp3p_transformations =
|
||||
absolute_pose::gp3p( adapter, indices1 );
|
||||
|
||||
// Kneip's GPNP (using all correspondences)
|
||||
transformation_t gpnp_transformation =
|
||||
absolute_pose::gpnp(adapter);
|
||||
|
||||
// UPnP (using all correspondences)
|
||||
transformations_t upnp_transformations =
|
||||
absolute_pose::upnp( adapter );
|
||||
|
||||
// UPnP (using only 3 correspondences)
|
||||
transformations_t upnp_transformations_3 =
|
||||
absolute_pose::upnp( adapter, indices1 );
|
||||
|
||||
// non-linear optimization
|
||||
adapter.sett(initial_translation);
|
||||
adapter.setR(initial_rotation);
|
||||
transformation_t nonlinear_transformation =
|
||||
absolute_pose::optimize_nonlinear(adapter);
|
||||
\endcode
|
||||
*
|
||||
* gp3p can also be used within a sample-consensus context. It remains an AbsolutePoseSacProblem, this one is usable for both the central and the non-central case. We simply have to set algorithm to GP3P:
|
||||
*
|
||||
\code
|
||||
// create the non-central adapter
|
||||
absolute_pose::NoncentralAbsoluteAdapter adapter(
|
||||
bearingVectors,
|
||||
camCorrespondences,
|
||||
points,
|
||||
camOffsets,
|
||||
camRotations );
|
||||
|
||||
// create a RANSAC object
|
||||
sac::Ransac<sac_problems::absolute_pose::AbsolutePoseSacProblem> ransac;
|
||||
|
||||
// create a absolute-pose sample consensus problem (using GP3P as an algorithm)
|
||||
std::shared_ptr<sac_problems::absolute_pose::AbsolutePoseSacProblem>
|
||||
absposeproblem_ptr(
|
||||
new sac_problems::absolute_pose::AbsolutePoseSacProblem(
|
||||
adapter, sac_problems::absolute_pose::AbsolutePoseSacProblem::GP3P ) );
|
||||
|
||||
// run ransac
|
||||
ransac.sac_model_ = absposeproblem_ptr;
|
||||
ransac.threshold_ = threshold;
|
||||
ransac.max_iterations_ = maxIterations;
|
||||
ransac.computeModel();
|
||||
|
||||
// get the result
|
||||
transformation_t best_transformation =
|
||||
ransac.model_coefficients_;
|
||||
\endcode
|
||||
*
|
||||
* These examples are taken from test_noncentral_absolute_pose.cpp and test_noncentral_absolute_pose_sac.cpp.
|
||||
*
|
||||
* <li> <b>Central relative pose:</b> The central relative pose problem consists of finding the pose of a camera (e.g. viewpoint with a single camera) with respect to a different camera given a number of 2D-2D correspondences between bearing vectors in the camera frames. The seeked transformation is given by the position \f$ \mathbf{t}_{c'}^{c} \f$ of the second camera seen from the first one and the rotation \f$ \mathbf{R}_{c'}^{c} \f$ from the second camera back to the first camera frame. This is what the algorithms return (or part of it), and what the adapters can hold as known or prior information.
|
||||
*
|
||||
* \image html relative_central.png
|
||||
* \image latex relative_central.pdf "" width=0.6\columnwidth
|
||||
*
|
||||
* There are many central relative-pose algorithms in the library. The minimal variants are twopt (in case the rotation is known), twopt_rotationOnly (in case there is only rotational change, and using only two points), fivept_stewenius [5], fivept_nister [6], and fivept_kneip [7]. The libary also contains non-minimal variants, namely rotationOnly (in case of pure-rotation change), sevenpt [8], eightpt [9,10] and the new eigensolver [11] methods. All of them except twopt, twopt_rotationOnly, and fivept_kneip can be used for an arbitrary number of correspondences (of course at least the minimal number). The non-linear optimization variant is again called optimize_nonlinear. Here's how to use most of them (we assume a regular situation here, and thus omit the rotationOnly algorithms):
|
||||
*
|
||||
\code
|
||||
// create the central relative adapter
|
||||
relative_pose::CentralRelativeAdapter adapter(
|
||||
bearingVectors1, bearingVectors2 );
|
||||
|
||||
// Relative translation with only two point-correspondences
|
||||
// (no or known rotation)
|
||||
adapter.setR(knownRotation);
|
||||
translation_t twopt_translation =
|
||||
relative_pose::twopt( adapter, true, indices1 );
|
||||
|
||||
// Stewenius' 5-point algorithm
|
||||
complexEssentials_t fivept_stewenius_essentials =
|
||||
relative_pose::fivept_stewenius( adapter, indices2 );
|
||||
|
||||
// Nister's 5-point algorithm
|
||||
essentials_t fivept_nister_essentials =
|
||||
relative_pose::fivept_nister( adapter, indices2 );
|
||||
|
||||
// Kneip's 5-point algorithm
|
||||
rotations_t fivept_kneip_rotations =
|
||||
relative_pose::fivept_kneip( adapter, indices2 );
|
||||
|
||||
// the 7-point algorithm
|
||||
essentials_t sevenpt_essentials =
|
||||
relative_pose::sevenpt( adapter, indices3 );
|
||||
|
||||
// the 8-point algorithm
|
||||
essential_t eightpt_essential =
|
||||
relative_pose::eightpt( adapter, indices4 );
|
||||
|
||||
// Kneip's eigensolver
|
||||
adapter.setR(initial_rotation);
|
||||
eigensolver_rotation =
|
||||
relative_pose::eigensolver( adapter, indices5 );
|
||||
|
||||
// non-linear optimization (using all available correspondences)
|
||||
adapter.sett(initial_translation);
|
||||
adapter.setR(initial_rotation);
|
||||
transformation_t nonlinear_transformation =
|
||||
relative_pose::optimize_nonlinear(adapter);
|
||||
\endcode
|
||||
*
|
||||
* fivept_nister, fivept_stewenius, sevenpt, and eigthpt can also be used within a random-sample consensus scheme. It is done as follows:
|
||||
*
|
||||
\code
|
||||
// create the central relative adapter
|
||||
relative_pose::CentralRelativeAdapter adapter(
|
||||
bearingVectors1, bearingVectors2 );
|
||||
|
||||
// create a RANSAC object
|
||||
sac::Ransac<sac_problems::relative_pose::CentralRelativePoseSacProblem> ransac;
|
||||
|
||||
// create a CentralRelativePoseSacProblem
|
||||
// (set algorithm to STEWENIUS, NISTER, SEVENPT, or EIGHTPT)
|
||||
std::shared_ptr<sac_problems::relative_pose::CentralRelativePoseSacProblem>
|
||||
relposeproblem_ptr(
|
||||
new sac_problems::relative_pose::CentralRelativePoseSacProblem(
|
||||
adapter,
|
||||
sac_problems::relative_pose::CentralRelativePoseSacProblem::NISTER ) );
|
||||
|
||||
// run ransac
|
||||
ransac.sac_model_ = relposeproblem_ptr;
|
||||
ransac.threshold_ = threshold;
|
||||
ransac.max_iterations_ = maxIterations;
|
||||
ransac.computeModel();
|
||||
|
||||
// get the result
|
||||
transformation_t best_transformation =
|
||||
ransac.model_coefficients_;
|
||||
\endcode
|
||||
*
|
||||
* These examples are taken from test_relative_pose.cpp and test_relative_pose_sac.cpp. There are also sample consensus problems for the case of pure-rotation, known rotation, or the eigensolver method. Feel free to explore opengv/sac_problems/relative_pose.
|
||||
*
|
||||
* <li> <b>Non-central relative pose:</b> The non-central relative pose problem consists of finding the pose of a viewpoint with respect to a different viewpoint given a number of 2D-2D correspondences between bearing vectors in multiple camera frames. The seeked transformation is given by the position \f$ \mathbf{t}_{vp'}^{vp} \f$ of the second viewpoint seen from the first one and the rotation \f$ \mathbf{R}_{vp'}^{vp} \f$ from the second viewpoint back to the first viewpoint frame. This is what the algorithms return (or part of it), and what the adapters can hold as known or prior information.
|
||||
*
|
||||
* \image html relative_noncentral.png
|
||||
* \image latex relative_noncentral.pdf "" width=0.8\columnwidth
|
||||
*
|
||||
* There are three non-central relative pose methods in the library, the 17-point algorithm by Li [12], the 6-point method by Stewenius [16], and the new generalized eigensolver [18]. The 17-point algorithm as well as the generalized eigensolver can be used with an arbitrary number of points. The 6-point algorithm is usable with only 6-points exactly. "optimize_nonlinear" is again able to also handle the non-central case. Here's how to use these methods:
|
||||
*
|
||||
\code
|
||||
// create the non-central relative adapter
|
||||
relative_pose::NoncentralRelativeAdapter adapter(
|
||||
bearingVectors1,
|
||||
bearingVectors2,
|
||||
camCorrespondences1,
|
||||
camCorrespondences2,
|
||||
camOffsets,
|
||||
camRotations );
|
||||
|
||||
// 6-point algorithm
|
||||
rotations_t sixpt_rotations =
|
||||
relative_pose::sixpt( adapter, indices );
|
||||
|
||||
// generalized eigensolver (over all points)
|
||||
geOutput_t output;
|
||||
relative_pose::ge(adapter,output);
|
||||
translation_t ge_translation = output.translation.block<3,1>(0,0);
|
||||
rotation_t ge_rotation = output.rotation;
|
||||
|
||||
// 17-point algorithm
|
||||
transformation_t seventeenpt_transformation =
|
||||
relative_pose::seventeenpt( adapter, indices );
|
||||
|
||||
// non-linear optimization (using all available correspondences)
|
||||
adapter.sett(initial_translation);
|
||||
adapter.setR(initial_rotation);
|
||||
transformation_t nonlinear_transformation =
|
||||
relative_pose::optimize_nonlinear(adapter);
|
||||
\endcode
|
||||
*
|
||||
* All algorithms are also available in a sample-consensus scheme:
|
||||
*
|
||||
\code
|
||||
// create the non-central relative adapter
|
||||
relative_pose::NoncentralRelativeAdapter adapter(
|
||||
bearingVectors1,
|
||||
bearingVectors2,
|
||||
camCorrespondences1,
|
||||
camCorrespondences2,
|
||||
camOffsets,
|
||||
camRotations );
|
||||
|
||||
// create a RANSAC object
|
||||
sac::Ransac<sac_problems::relative_pose::NoncentralRelativePoseSacProblem>
|
||||
ransac;
|
||||
|
||||
// create a NoncentralRelativePoseSacProblem
|
||||
std::shared_ptr<
|
||||
sac_problems::relative_pose::NoncentralRelativePoseSacProblem>
|
||||
relposeproblem_ptr(
|
||||
new sac_problems::relative_pose::NoncentralRelativePoseSacProblem(
|
||||
adapter,
|
||||
sac_problems::relative_pose::NoncentralRelativePoseSacProblem::SEVENTEENPT)
|
||||
);
|
||||
|
||||
// run ransac
|
||||
ransac.sac_model_ = relposeproblem_ptr;
|
||||
ransac.threshold_ = threshold;
|
||||
ransac.max_iterations_ = maxIterations;
|
||||
ransac.computeModel();
|
||||
|
||||
// get the result
|
||||
transformation_t best_transformation =
|
||||
ransac.model_coefficients_;
|
||||
\endcode
|
||||
*
|
||||
* These examples are taken from test_noncentral_relative_pose.cpp and test_noncentral_relative_pose_sac.cpp. Simply set SEVENTEENPT to GE or SIXPT in order to use the alternative algorithms.
|
||||
*
|
||||
* <li> <b>Triangulation of points:</b> OpenGV contains two methods for triangulating points. They are currently only designed for the central case, and compute the position of a point expressed in the first camera given a 2D-2D correspondence between bearing vectors from two cameras. The methods reuse the relative adapter, which need to hold the transformation between the cameras given by the position \f$ \mathbf{t}_{c'}^{c} \f$ of the second camera seen from the first one and the rotation \f$ \mathbf{R}_{c'}^{c} \f$ from the second camera back to the first camera frame.
|
||||
*
|
||||
* \image html triangulation_central.png
|
||||
* \image latex triangulation_central.pdf "" width=0.6\columnwidth
|
||||
*
|
||||
* There are two methods, triangulate (linear) and triangulate2 (a fast non-linear approximation). They are used as follows:
|
||||
*
|
||||
\code
|
||||
// create a central relative adapter
|
||||
// (immediately pass translation and rotation)
|
||||
relative_pose::CentralRelativeAdapter adapter(
|
||||
bearingVectors1,
|
||||
bearingVectors2,
|
||||
translation,
|
||||
rotation );
|
||||
|
||||
// run method 1
|
||||
point_t point =
|
||||
triangulation::triangulate( adapter, index );
|
||||
|
||||
//run method 2
|
||||
point_t point =
|
||||
triangulation::triangulate2( adapter, index );
|
||||
\endcode
|
||||
*
|
||||
* The example is taken from test_triangulation.cpp.
|
||||
*
|
||||
* <li> <b>Alignment of two point-clouds:</b> OpenGV also contains a method for aligning point-clouds. It is currently only designed for the central case, and computes the transformation between two frames given 3D-3D correspondences between points expressed in the two frames (here denoted by c and c', although it ain't necessarily need to be cameras anymore). The method returns the transformation between the frames given by the position \f$ \mathbf{t}_{c'}^{c} \f$ of the second frame seen from the first one and the rotation \f$ \mathbf{R}_{c'}^{c} \f$ from the second frame back to the first frame.
|
||||
*
|
||||
* \image html point_cloud.png
|
||||
* \image latex point_cloud.pdf "" width=0.6\columnwidth
|
||||
*
|
||||
* The method is called threept_arun, and it can be used for an arbitrary number of points (minimum three). There is also a non-linear optimization method again called optimize_nonlinear. The methods are used as follows:
|
||||
*
|
||||
\code
|
||||
// create the 3D-3D adapter
|
||||
point_cloud::PointCloudAdapter adapter(
|
||||
points1, points2 );
|
||||
|
||||
// run threept_arun
|
||||
transformation_t threept_transformation =
|
||||
point_cloud::threept_arun( adapter, indices );
|
||||
|
||||
// run the non-linear optimization over all correspondences
|
||||
transformation_t nonlinear_transformation =
|
||||
point_cloud::optimize_nonlinear(adapter);
|
||||
\endcode
|
||||
*
|
||||
* There is also a sample-consensus problem for the point-cloud alignment. It is set up as follows:
|
||||
*
|
||||
\code
|
||||
// create a 3D-3D adapter
|
||||
point_cloud::PointCloudAdapter adapter(
|
||||
points1, points2 );
|
||||
|
||||
// create a RANSAC object
|
||||
sac::Ransac<sac_problems::point_cloud::PointCloudSacProblem> ransac;
|
||||
|
||||
// create the sample consensus problem
|
||||
std::shared_ptr<sac_problems::point_cloud::PointCloudSacProblem>
|
||||
relposeproblem_ptr(
|
||||
new sac_problems::point_cloud::PointCloudSacProblem(adapter) );
|
||||
|
||||
// run ransac
|
||||
ransac.sac_model_ = relposeproblem_ptr;
|
||||
ransac.threshold_ = threshold;
|
||||
ransac.max_iterations_ = maxIterations;
|
||||
ransac.computeModel(0);
|
||||
|
||||
// return the result
|
||||
transformation_t best_transformation =
|
||||
ransac.model_coefficients_;
|
||||
\endcode
|
||||
*
|
||||
* These examples are taken from test_point_cloud.cpp and test_point_cloud_sac.cpp.
|
||||
*
|
||||
* </ul>
|
||||
*
|
||||
* Note that there are more unit-tests in the test-directory. It shows the usage of all the methods contained in the library.
|
||||
*
|
||||
* \section sec_threshold Some words about the sample-consensus-classes
|
||||
*
|
||||
* All the above mentioned Ransac-methods make use of a number of super-classes such that only the basic functions need to be implemented in the derived SacProblem (SampleConsensusProblem). The basic functions are responsible for getting valid samples for model instantiation, model instantiation itself, as well as model verification. <b>SamplesConsensusProblem</b> is the base-class for any problem we want to solve, and contains a virtual interface for the basic methods that need to be implemented. The base-class <b>SampleConsensus</b> is then for the sample-consensus method itself, calling the basic functions. So far only the <b>Ransac</b> is implemented [15].
|
||||
*
|
||||
* \subsection sec_ransac Ransac threshold
|
||||
*
|
||||
* Since the entire library is operating in 3D, we also need a way to compute and threshold reprojection errors in 3D. What we are looking at is the angle \f$ q \f$ between the original bearing-vector \f$ \mathbf{f}_{meas} \f$ and the reprojected one \f$ \mathbf{f}_{repr} \f$. By adopting a certain threshold angle \f$ q_{threshold} \f$, we hence constrain the \f$ \mathbf{f}_{repr} \f$ to lie within a cone of axis \f$ \mathbf{f}_{meas} \f$ and of opening angle \f$ q_{threshold} \f$.
|
||||
*
|
||||
* \image html reprojectionError.png
|
||||
* \image latex reprojectionError.pdf "" width=0.45\columnwidth
|
||||
*
|
||||
* The threshold-angle \f$ q_{threshold} \f$ can be easily obtained from classical reprojection error-thresholds expressed in pixels \f$ \psi \f$ by assuming a certain focal length \f$ l \f$. We then have \f$ q_{threshold} = \arctan{\frac{\psi}{l}} \f$.
|
||||
*
|
||||
* The threshold we are using in the end is still not quite this one, but a value derived from it in analogy with the computation of reprojection errors. The most efficient way to compute a "reprojection error" is given by taking the scalar product of \f$ \mathbf{f}_{meas} \f$ and \f$ \mathbf{f}_{repr} \f$, which equals to \f$ \cos q \f$. Since this value is between -1 and 1, and we actually want an error that minimizes to 0, we take \f$ \epsilon = 1 - \mathbf{f}_{meas}^{T}\mathbf{f}_{repr} = 1 - \cos q \f$. The threshold error is therefore given by
|
||||
*
|
||||
* \f$ \epsilon_{threshold} = 1 - \cos{q_{threshold}} = 1 - \cos({\arctan{\frac{\psi}{l}}}) \f$
|
||||
*
|
||||
* In the ransac-examples in the test-folder, you will often see something like this.
|
||||
*
|
||||
\code
|
||||
ransac.threshold_ = 1.0 - cos(atan(sqrt(2.0)*0.5/800.0));
|
||||
\endcode
|
||||
*
|
||||
* This notably corresponds to the above computation of our "reprojection-error"-threshold, with a focal length of 800.0 and a reprojection error in pixels of 0.5*sqrt(2.0).
|
||||
*
|
||||
* \section sec_multi The "Multi"-stuff
|
||||
*
|
||||
* As you go deeper into the code you might notice that there are a number of elements (mostly in the relative-pose context) that contain the tag "multi" in their name. The adapter base-class used here is called <b>RelativeMultiAdapterBase</b>. The idea of this adapter is to hold multiple sets of bearing-vector correspondences originating from pairs of cameras. A pair of cameras is, as the name says, a set of two cameras in different viewpoints. The correspondences are accessed via a multi-index (a pair-index referring to a specific pair of cameras, and a correspondence-index refering to the correspondence within the camera-pair).
|
||||
*
|
||||
* Subsets of camera-pairs can be identified in a number of problems, such as
|
||||
* <ul>
|
||||
* <li> Non-central relative pose (2 viewpoints): Non-central relative pose problems involving two viewpoints typically originate from motion-estimation with multi-camera rigs. In the special situation where the cameras are pointing in different directions, and where the motion between the viewpoints is not too big (a practically very relevant case), the correspondences are typically originating from the same camera in both viewpoints. We therefore can do a camera-wise grouping of the correspondences in the multi-camera system. The following situation contains four pairs given by the black, green, blue, and orange camera in both viewpoints:
|
||||
*
|
||||
* \image html nonoverlapping.png
|
||||
* \image latex nonoverlapping.pdf "" width=0.8\columnwidth
|
||||
*
|
||||
* <li> Central multi-viewpoint problems: By multi-viewpoint we understand here problems that involve more than two viewpoints. As indicated below, a problem of three central viewpoints for instance allows to identify three camera-pairs as well. The number of camera-pairs in an n-view problem amounts to the combination of 2 out of n, meaning n*(n-1)/2. For the below example, we could have tha camera pairs (c,c'), (c',c''), and (c'',c). The first pair would have a set of correspondences originating from points p1 and p4, the second one from p2 and p4, and the third one from p3 and p4.
|
||||
*
|
||||
* \image html multi_viewpoint.png
|
||||
* \image latex multi_viewpoint.pdf "" width=0.8\columnwidth
|
||||
*
|
||||
* </ul>
|
||||
*
|
||||
* The multi-adapters keep track of these camera-pair-wise correspondence groups. The benefit of it appears when moving towards random sample-consensus schemes. Have a look at the "opengv/sac/"-folder, it contains the <b>MultiSampleConsensus</b>, <b>MultiRansac</b>, and <b>MultiSampleConsensusProblem</b> classes. They employ the multi-indices, and the derived MultiSampleConsensusProblems exploit the fact that the correspondences are grouped:
|
||||
*
|
||||
* <ul>
|
||||
* <li>The <b>MultiNoncentralRelativePoseSacProblem</b> is for non-central, non-overlapping viewpoints with little change, and exploits the grouping in order to do homogeneous sampling of correspondences over the cameras. As an example, imagine we are computing the relative pose of a non-overlapping multi-camera rig with two cameras facing opposite directions. In terms of accuracy, it doesn't make sense to sample 16-points in one camera and one point in the other. We preferrably would like to sample 8 points in one camera, and 9 in the other. This is exactly what MultiNoncentralRelativePoseSacProblem is able to do. It uses the derived adapter <b>NoncentralRelativeMultiAdapter</b>.
|
||||
* <li>In the multi viewpoint case, one could of course solve a central relative pose problem for each camera-pair individually. The idea of <b>MultiCentralRelativePoseSacProblem</b> is to benefit from a joint solution of multiple relative-pose problems. In the above three-view problem for instance, we can exploit additional constraints around the individual transformations such as cycles of rotations returning identity, and cycles of translations returning zero. The corresponding adapter is called <b>CentralRelativeMultiAdapter</b>.
|
||||
* </ul>
|
||||
*
|
||||
* All this stuff is highly experimental, so you probably shouldn't pay too much attention to it for the moment ;)
|
||||
*
|
||||
*/
|
||||
117
thirdparty/opengv/doc/addons/03_matlab.dox
vendored
Normal file
@@ -0,0 +1,117 @@
|
||||
/** \page page_matlab The Matlab interface
|
||||
*
|
||||
* All algorithms are accessed from Matlab via one interface file only. The syntax is as follows:
|
||||
*
|
||||
* <ul>
|
||||
* <li>X = opengv ( method, data1, data2 )
|
||||
* <li>X = opengv ( method, indices, data1, data2 )
|
||||
* <li>X = opengv ( method, indices, data1, data2, prior )
|
||||
* </ul>
|
||||
*
|
||||
* where
|
||||
* <ul>
|
||||
* <li> method is a string that characterizes the algorithm to use. It can be one of the following:
|
||||
*
|
||||
\verbatim
|
||||
absolute pose methods:
|
||||
'p2p', 'p3p_kneip', 'p3p_gao', 'epnp', 'p3p_kneip_ransac', 'p3p_gao_ransac', 'epnp_ransac', 'abs_nonlin_central', 'gp3p', 'gp3p_ransac', 'gpnp', 'abs_nonlin_noncentral', 'upnp'.
|
||||
|
||||
relative pose methods:
|
||||
'twopt', 'twopt_rotationOnly', 'rotationOnly', 'fivept_stewenius', 'fivept_nister', 'fivept_kneip', 'sevenpt', 'eightpt', 'eigensolver', 'rotationOnly_ransac',
|
||||
'fivept_stewenius_ransac', 'fivept_nister_ransac', 'sevenpt_ransac', 'eightpt_ransac', 'eigensolver_ransac', 'rel_nonlin_central', 'sixpt', 'seventeenpt',
|
||||
'ge', 'sixpt_ransac', 'seventeenpt_ransac', 'ge_ransac', 'rel_nonlin_noncentral'.
|
||||
|
||||
point_cloud methods:
|
||||
'threept_arun', 'threept_arun_ransac'.
|
||||
\endverbatim
|
||||
*
|
||||
* <li> data1, data2 are correspondences (each one of dimension 3xn or 6xn). They are 3xn in the central case (only containing normalized bearing vectors or 3D points), and 6xn for measurements in the non-central case,
|
||||
* where they then also contain the position of the camera in the body frame in rows 4:6. Note that there is no camera orientation with respect to the body frame in the matlab syntax, the bearing vectors are
|
||||
* supposed to be prerotated into the body frame (only rotated!).
|
||||
* <li> indices is a subset of correspondences that we plan to use for the computation.
|
||||
* <li> prior is a 3x1 (translation), 3x3 (rotation), or 3x4 ([R t]-transformation) holding a prior value for the transformation to compute.
|
||||
* <li> The return value X is a 3xnxm-matrix, where n is the second dimensionality of the solution space, and m is the number of solutions. n is one for methods that only compute a translation, 3 for methods that only compute a rotation, and 4 for methods that compute both rotation and translation (format: [R t]).
|
||||
* </ul>
|
||||
*
|
||||
* Note that, for Ransac-methods, the indices of the inliers can now also be retrieved. Simply add one return parameter on the left-hand side arguments: [X, inliers] = opengv(...). The Matlab wrapper includes rather exhaustive checking of command validity. More algorithms are planned for inclusion.
|
||||
*
|
||||
* \section Examples
|
||||
*
|
||||
* The interface is probably explained easiest at the hand of a few examples. Let's say that we have a matrix P of size 3xn which contains n world points. Let's also assume that we have a matrix I of size 2xn which contains the corresponding 2D measurements in the image plane. Let us assume that our camera is perspective and that we have a calibration matrix K that contains the intrinsic parameters (standard upper triangular matrix). OpenGV expects normalized coordinates on the unit sphere, so we start by transforming the measurements.
|
||||
*
|
||||
\verbatim
|
||||
temp = K \ [I; ones(1,size(I,2))];
|
||||
I_norms = sqrt(sum(temp.*temp));
|
||||
I_normalized = temp ./ repmat(I_norms,3,1);
|
||||
\endverbatim
|
||||
*
|
||||
* We are now ready to call OpenGV to compute the camera pose. Let's say we want to use the EPnP method:
|
||||
*
|
||||
\verbatim
|
||||
X = opengv('epnp',P,I_normalized);
|
||||
R = X(:,1:3);
|
||||
t = X(:,4);
|
||||
\endverbatim
|
||||
*
|
||||
* Done! Ok, let's make things a bit more interesting, and assume that there are also outliers in the data. We simply have to switch to a Ransac method to take outliers into account!
|
||||
*
|
||||
\verbatim
|
||||
[X, inliers] = opengv('p3p_kneip_ransac',P,I_normalized);
|
||||
\endverbatim
|
||||
*
|
||||
* Note that this will also give use the indices of the inliers.
|
||||
*
|
||||
* Now let us also look at a non-central example to see how this works. We assume that we have a multi-camera system with two cameras. The cameras have the positions t1 and t2 inside the body-frame. The rotation from the camera frames to the body frame is R1 and R2, respectively. Camera 1 has intrinsic parameters K1, and camera 2 has intrinsic parameters K2. Now let us assume that there are correspondences in both views. Camera one measures the image points I1 which belong to the world points P1 (I1 is 2xn1 and P1 is 3xn1). Camera 2 measures the image points I2 which belong to the world points P2 (I2 is 2xn2 and P2 is 3xn2). Now let us start with normalizing the image points into direction vectors on the unit sphere:
|
||||
*
|
||||
\verbatim
|
||||
temp = K1 \ [I1; ones(1,size(I1,2))];
|
||||
I1_norms = sqrt(sum(temp.*temp));
|
||||
I1_normalized = temp ./ repmat(I1_norms,3,1);
|
||||
temp = K2 \ [I2; ones(1,size(I2,2))];
|
||||
I2_norms = sqrt(sum(temp.*temp));
|
||||
I2_normalized = temp ./ repmat(I2_norms,3,1);
|
||||
\endverbatim
|
||||
*
|
||||
* We then can compute the absolute pose of the multi-camera system by simply executing this command
|
||||
*
|
||||
\verbatim
|
||||
X = opengv('upnp',[P1 P2],[ R1*I1_normalized, R2*I2_normalized; repmat(t1,1,size(I1,2)), repmat(t2,1,size(I2,2)) ]);
|
||||
R = X(:,1:3);
|
||||
t = X(:,4);
|
||||
\endverbatim
|
||||
*
|
||||
* In order to handle outliers as well, simply switch to 'gp3p_ransac'. Now that you know how to handle 2D-3D registration in the central and non-central case, the 2D-2D registration case is also easily learned. Simply replace the world points by 2D measurements in another view.
|
||||
*
|
||||
* \section sec_benchmarks Automatic benchmarking of algorithms
|
||||
*
|
||||
* Perhaps the nicest thing about the Matlab-code is that it includes automatic benchmarks for all algorithms. The subfolder matlab/helpers contains useful functions for the benchmarks.
|
||||
* The most important ones are:
|
||||
*
|
||||
* <ul>
|
||||
* <li> create2D2DExperiment.m: Lets you create a random relative pose problem, meaning correspondences in two viewpoints using desired number of cameras, number of correspondences,
|
||||
* outlier ratio, and noise. It returns the observations in both viewpoints, plus the ground truth values for the relative transformation parameters. It automatically returns
|
||||
* measurement data for the central or the noncentral case depending on how many cameras are configured.
|
||||
* <li> create2D3DExperiment.m: Does pretty much the same thing, however for the absolute pose situation.
|
||||
* <li> evaluateRotationError.m/evaluateTransformationError.m: Computes the rotation/transformation error of multiple hypotheses by selecting the one that is closest to ground truth.
|
||||
* <li> perturb.m: puts a random perturbation on a transformation
|
||||
* <li> rodrigues.m / cayley2rot.m / rot2cayley.m: back and forth transformation to minimal rotation representations.
|
||||
* <li> transformEssentials.m: Transforms a set of multiple essential matrices into rotations.
|
||||
* <li> addNoise.m: Adds noise to a bearing vector by assuming a spherical camera and extracting the corresponding tangential plane.
|
||||
* </ul>
|
||||
*
|
||||
* The main benchmark files are finally given by:
|
||||
*
|
||||
* <ul>
|
||||
* <li> benchmark_absolute_pose.m
|
||||
* <li> benchmark_absolute_pose_noncentral.m
|
||||
* <li> benchmark_relative_pose.m
|
||||
* <li> benchmark_relative_pose_noncentral.m
|
||||
* </ul>
|
||||
*
|
||||
* opengv.cpp contains the interface itself. Some other files like opengv_donotuse.cpp are used for timing experiments (named benchmark_xxx_timing.m). They execute each problem 20 times so time can be measured sufficiently accurate without overhead from Matlab. opengv_experimental1.cpp and opengv_experimental2.cpp are used for some specific ransac experiments, they are not as important.
|
||||
*
|
||||
* The benchmarks are fairly well documented and self-explaining. They simply run multiple tests for each algorithm while going through increasing noise-levels, and finally plot the resulting mean and
|
||||
* median errors. Adding an algorithm or changing the set of algorithms for comparison is very easy, you simply have to modify the cell-arrays algorithms, indices, and names. They contain the internal
|
||||
* names of the algorithms that are being evaluated, the indices of the points to use from the experiment (allowing to use different (numbers of) points for each algorithm and random experiment), and
|
||||
* the names of the algorithms for the final plots. Comparing your new algorithm has never been easier :)
|
||||
*/
|
||||
48
thirdparty/opengv/doc/addons/04_how_to_contribute.dox
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
/** \page page_how_to_contribute How to contribute
|
||||
*
|
||||
* You are missing your geometric vision algorithm? You share the feeling that it would be nice to have a common place for all geometric vision algorithms, which then implicitly would offer automatic benchmarking without having to do the overhead everyime? Well, that place is here! Join the community today and add your algorithm(s). The instructions on this page give you some additional hints if you want to participate.
|
||||
*
|
||||
* \section sec_contribute_1 Preparations
|
||||
*
|
||||
* If you haven't done so, please follow the instructions in the "Installation"-section to install the library on your system. We strongly recommend that you are using github's fork/pull request mechanism.
|
||||
* It is also recommended that you first collect some experience with using the library, and notably understand the interface of the library. Please checkout the section "How to use".
|
||||
*
|
||||
* \section sec_contribute_2 Design concepts:
|
||||
*
|
||||
* The library is developped in C++. The interface is based on the adapter-pattern, and you should use this concept in order to keep things as compatible as possible. In essence, it means that you should reuse the base-classes AbsoluteAdapterBase and RelativeAdapterBase, no matter if implementing a new algorithm or if extending the portability by implementing a new adapter. Have a look at the "How to use"-section in order to get more information.
|
||||
*
|
||||
* You should also make yourself familiar with some coding standards. The code written so far doesn't necessarily follow one standard exclusively, but at least reflects the effort of maintaining a reasonable level of consistency. Please try to follow that line, it will substantially facilitate the inclusion of your code. Also have a look at the directory structure, it strictly follows the namespace structure, and this should remain the case. Headers that are only intended for internal use are in sub-folders called "modules", and templated implementation-headers go into sub-directories called "implementation". Also have a look at types.hpp, these are the types used for all geometric vision constructs, and should be reused thoughout the entire library. OpenGV uses two-space indentation, and tries to stick to 80-column width.
|
||||
*
|
||||
* Another property that should be maintened is "independence". The library essentially depends only on Eigen. This is a powerful library that should deliver most of the functionality required for the purpose of opengv. For the sake of simplicity of installation and contribution, we should keep things along these lines, which means that it is appreciated if algorithms do not require the inclusion of any further third-party libraries.
|
||||
*
|
||||
* The files in the library are encoded with UTF-8. It has been mainly developed under Linux, and compilation with gcc currently returns no warnings (hopefully). If you plan to develop under Windows, make sure you use an editor that understands UTF-8 encoding (no, notepad.exe is not a nice editor ;) ).
|
||||
*
|
||||
* \section sec_contribute_3 Todos:
|
||||
*
|
||||
* The following is a non-exhaustive list of things that could be improved.
|
||||
* You may also want to contact kneip.laurent@gmail.com for further information, if you want to
|
||||
* collaborate on one of these points.
|
||||
*
|
||||
* <ul>
|
||||
* <li> The library should easily permit further benchmarks, for instance all the special cases (e.g. planar structure etc.).
|
||||
* <li> The triangulation method needs to be able to handle non-central viewpoints. This would avoid some hacks here and there. Same accounts for the point-cloud alignment methods.
|
||||
* <li> The triangulation methods (and possibly further algorithms) should be included in the opengv-Matlab-interface.
|
||||
* <li> NoncentralRelativePoseSacProblem could decide automatically whether it should process data in a central or non-central way. Same accounts for the MultiNoncentralRelativePoseSacProblem.
|
||||
* <li> Sometimes ransac or iterative methods reset the adapter transformation for instance to compute reprojection errors (search recursively for sett). The original value should always be reset, because other parts of the algorithm potentially want to use it.
|
||||
* <li> Add more adapters to increase the portability. Examples are: OpenCV, Gandalf, VXR, Bundler, libcvd, OpenMVG.
|
||||
* <li> There is an improved version of p3p_kneip lying around somewhere, which could be included.
|
||||
* <li> Richard Hartley's implementation of the five-point should be included (replacing the current one).
|
||||
* <li> Hongdong Li's five-point solver should be included.
|
||||
* <li> Kukelova's polynomial eigenvalue solution could be included.
|
||||
* <li> P4P and DLT should be included.
|
||||
* <li> What about DLS and OPnP? Only Matlab versions are publically available.
|
||||
* <li> The 6-point by Stewenius is extremly difficult to reimplement. The reimplementation I provide is maybe not the best.
|
||||
* <li> Most of the current implementations treat the correspondences equally. The AdapterBase-classes however contain already a virtual function called "getWeight", which could be used to weight the correspondences differently for instance in a non-linear optimization scheme. Most of the adapters currently simply return 1.0 for these calls. Only the CentralRelativeWeightingAdapter has constructors that include the weight of the correspondences.
|
||||
* <li> arun_complete and threept_arun are redundant, we should get rid of one of them.
|
||||
* <li> The polynomial structures are Matlab-like arrays of coefficients, of different types, and sometimes with different conventions (coefficients once stored along the lines, once along the columns).
|
||||
* <li> Add more comments in implementation files such that users can potentially understand what's going on.
|
||||
* <li> Use vector.segment, block...topleftcorner etc.
|
||||
* <li> Theia by Chris Sweeney has an interesting Sturm root finder, it could be transplanted.
|
||||
* </ul>
|
||||
*
|
||||
*/
|
||||
9
thirdparty/opengv/doc/addons/05_contact.dox
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
/** \page page_contact Contact
|
||||
*
|
||||
* For any questions or inquiries, please contact:
|
||||
*
|
||||
\verbatim
|
||||
kneip.laurent@gmail.com
|
||||
\endverbatim
|
||||
*
|
||||
*/
|
||||
42
thirdparty/opengv/doc/addons/06_references.dox
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
/** \page page_references References
|
||||
*
|
||||
[1] L. Kneip, D. Scaramuzza, R. Siegwart, "A Novel Parametrization of the Perspective-Three-Point Problem for a Direct Computation of Absolute Camera Position and Orientation", Proc. of The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Colorado Springs, USA. June 2011.
|
||||
|
||||
[2] X. Gao, X. Hou, J. Tang, H. Cheng. "Complete solution classification for the perspective-three-point problem", IEEE Transactions on Pattern Analysis and Machine Intelligence, 25(8):930–943, 2003.
|
||||
|
||||
[3] L. Kneip, P. Furgale, R. Siegwart, "Using Multi-Camera Systems in Robotics: Efficient Solutions to the NPnP Problem", Proc. of The IEEE International Conference on Robotics and Automation (ICRA), Karlsruhe, Germany. May 2013.
|
||||
|
||||
[4] V. Lepetit, F. Moreno-Noguer, P. Fua. "Epnp: An accurate O(n) solution to the pnp problem", International Journal of Computer Vision (IJCV), 81(2):578–589, 2009.
|
||||
|
||||
[5] H. D. Stewénius, C. Engels, D. Nistér. "Recent developments on direct relative orientation", ISPRS Journal of Photogrammetry and Remote Sensing, 60(4):284–294, 2006.
|
||||
|
||||
[6] D. Nistér, "An efficient solution to the five-point relative pose problem", IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI), 26(6):756–777, 2004.
|
||||
|
||||
[7] L. Kneip, R. Siegwart, M. Pollefeys, "Finding the Exact Rotation Between Two Images Independently of the Translation", Proc. of The European Conference on Computer Vision (ECCV), Florence, Italy. October 2012.
|
||||
|
||||
[8] R. Hartley, A. Zisserman. "Multiple View Geometry in Computer Vision", Cambridge University Press, New York, NY, USA, second edition, 2004.
|
||||
|
||||
[9] H. Longuet-Higgins, "Readings in computer vision: issues, problems, principles, and paradigms", Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 1987.
|
||||
|
||||
[10] R. Hartley, "In Defense of the Eight-Point Algorithm", IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI), 19(6):580–593, 1997.
|
||||
|
||||
[11] L. Kneip, S. Lynen, "Direct Optimization of Frame-to-Frame Rotation", Proc. of The International Conference on Computer Vision (ICCV), Sydney, Australia. December 2013. (Accepted for publication)
|
||||
|
||||
[12] H. Li, R. Hartley, J. Kim, "A Linear Approach to Motion Estimation Using Generalized Camera Models", Proc. of The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Anchorage, Alaska, USA. June 2008.
|
||||
|
||||
[13] K.S. Arun, T.S. Huang, S.D. Blostein, "Least-Squares Fitting of Two 3-D Point Sets", IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI), 9(5), 698-700, 1987.
|
||||
|
||||
[14] A. Cayley. "About the algebraic structure of the orthogonal group and the other classical groups in a field of characteristic zero or a prime characteristic", Reine Angewandte Mathematik, 32, 1846.
|
||||
|
||||
[15] M. Fischler, R. Bolles, "Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography", Communications of the ACM, 24(6):381–395, 1981.
|
||||
|
||||
[16] H. Stewenius, D. Nister, M. Oskarsson, K. Aström, "Solutions to Minimal Generalized Relative Pose Problems", Workshop on omni-directional vision, 2005.
|
||||
|
||||
[17] L. Kneip, P. Furgale, "OpenGV: A unified and generalized approach to real-time calibrated geometric vision", Proc. of The IEEE International Conference on Robotics and Automation (ICRA), Hong Kong, China. May 2014.
|
||||
|
||||
[18] L. Kneip, H. Li, "Efficient Computation of Relative Pose for Multi-Camera Systems", In Proc. of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Columbus, USA. June 2014.
|
||||
|
||||
[19] L. Kneip, H. Li, Y. Seo, "UPnP: An optimal O(n) solution to the absolute pose problem with universal applicability", In Proc. of The European Conference on Computer Vision (ECCV), Zurich, Switzerland. September 2014.
|
||||
|
||||
*
|
||||
*/
|
||||
BIN
thirdparty/opengv/doc/addons/images/absolute_central.dia
vendored
Normal file
1149
thirdparty/opengv/doc/addons/images/absolute_central.eps
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/absolute_central.pdf
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/absolute_central.png
vendored
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
thirdparty/opengv/doc/addons/images/absolute_noncentral.dia
vendored
Normal file
1886
thirdparty/opengv/doc/addons/images/absolute_noncentral.eps
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/absolute_noncentral.pdf
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/absolute_noncentral.png
vendored
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
thirdparty/opengv/doc/addons/images/central.dia
vendored
Normal file
274
thirdparty/opengv/doc/addons/images/central.eps
vendored
Normal file
@@ -0,0 +1,274 @@
|
||||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: /home/laurent/ldevel/geometric_vision/doc/addons/images/central.dia
|
||||
%%Creator: Dia v0.97.2
|
||||
%%CreationDate: Mon Aug 12 11:46:14 2013
|
||||
%%For: laurent
|
||||
%%Orientation: Portrait
|
||||
%%Magnification: 1.0000
|
||||
%%BoundingBox: 0 0 361 325
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
|
||||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
|
||||
/two /three /four /five /six /seven /eight /nine /colon /semicolon
|
||||
/less /equal /greater /question /at /A /B /C /D /E
|
||||
/F /G /H /I /J /K /L /M /N /O
|
||||
/P /Q /R /S /T /U /V /W /X /Y
|
||||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
|
||||
/d /e /f /g /h /i /j /k /l /m
|
||||
/n /o /p /q /r /s /t /u /v /w
|
||||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
|
||||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior
|
||||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf
|
||||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde
|
||||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex
|
||||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring
|
||||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
|
||||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def
|
||||
/cp {closepath} bind def
|
||||
/c {curveto} bind def
|
||||
/f {fill} bind def
|
||||
/a {arc} bind def
|
||||
/ef {eofill} bind def
|
||||
/ex {exch} bind def
|
||||
/gr {grestore} bind def
|
||||
/gs {gsave} bind def
|
||||
/sa {save} bind def
|
||||
/rs {restore} bind def
|
||||
/l {lineto} bind def
|
||||
/m {moveto} bind def
|
||||
/rm {rmoveto} bind def
|
||||
/n {newpath} bind def
|
||||
/s {stroke} bind def
|
||||
/sh {show} bind def
|
||||
/slc {setlinecap} bind def
|
||||
/slj {setlinejoin} bind def
|
||||
/slw {setlinewidth} bind def
|
||||
/srgb {setrgbcolor} bind def
|
||||
/rot {rotate} bind def
|
||||
/sc {scale} bind def
|
||||
/sd {setdash} bind def
|
||||
/ff {findfont} bind def
|
||||
/sf {setfont} bind def
|
||||
/scf {scalefont} bind def
|
||||
/sw {stringwidth pop} bind def
|
||||
/tr {translate} bind def
|
||||
|
||||
/ellipsedict 8 dict def
|
||||
ellipsedict /mtrx matrix put
|
||||
/ellipse
|
||||
{ ellipsedict begin
|
||||
/endangle exch def
|
||||
/startangle exch def
|
||||
/yrad exch def
|
||||
/xrad exch def
|
||||
/y exch def
|
||||
/x exch def /savematrix mtrx currentmatrix def
|
||||
x y tr xrad yrad sc
|
||||
0 0 1 startangle endangle arc
|
||||
savematrix setmatrix
|
||||
end
|
||||
} def
|
||||
|
||||
/mergeprocs {
|
||||
dup length
|
||||
3 -1 roll
|
||||
dup
|
||||
length
|
||||
dup
|
||||
5 1 roll
|
||||
3 -1 roll
|
||||
add
|
||||
array cvx
|
||||
dup
|
||||
3 -1 roll
|
||||
0 exch
|
||||
putinterval
|
||||
dup
|
||||
4 2 roll
|
||||
putinterval
|
||||
} bind def
|
||||
/dpi_x 300 def
|
||||
/dpi_y 300 def
|
||||
/conicto {
|
||||
/to_y exch def
|
||||
/to_x exch def
|
||||
/conic_cntrl_y exch def
|
||||
/conic_cntrl_x exch def
|
||||
currentpoint
|
||||
/p0_y exch def
|
||||
/p0_x exch def
|
||||
/p1_x p0_x conic_cntrl_x p0_x sub 2 3 div mul add def
|
||||
/p1_y p0_y conic_cntrl_y p0_y sub 2 3 div mul add def
|
||||
/p2_x p1_x to_x p0_x sub 1 3 div mul add def
|
||||
/p2_y p1_y to_y p0_y sub 1 3 div mul add def
|
||||
p1_x p1_y p2_x p2_y to_x to_y curveto
|
||||
} bind def
|
||||
/start_ol { gsave 1.1 dpi_x div dup scale} bind def
|
||||
/end_ol { closepath fill grestore } bind def
|
||||
28.346000 -28.346000 scale
|
||||
-7.425651 -12.867500 translate
|
||||
%%EndProlog
|
||||
|
||||
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 13.750000 6.750000 m 11.032949 10.553872 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 10.814984 10.859022 m 10.902170 10.306846 l 11.032949 10.553872 l 11.309037 10.597465 l ef
|
||||
n 10.814984 10.859022 m 10.902170 10.306846 l 11.032949 10.553872 l 11.309037 10.597465 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 13.700000 6.838560 m 19.556597 6.830029 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 19.931597 6.829483 m 19.431961 7.080211 l 19.556597 6.830029 l 19.431233 6.580211 l ef
|
||||
n 19.931597 6.829483 m 19.431961 7.080211 l 19.556597 6.830029 l 19.431233 6.580211 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 13.700000 6.850000 m 13.700000 12.163197 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 13.700000 12.538197 m 13.450000 12.038197 l 13.700000 12.163197 l 13.950000 12.038197 l ef
|
||||
n 13.700000 12.538197 m 13.450000 12.038197 l 13.700000 12.163197 l 13.950000 12.038197 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 13.725000 6.850000 m 12.136646 1.990702 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 12.020136 1.634260 m 12.413110 2.031842 l 12.136646 1.990702 l 11.937855 2.187189 l ef
|
||||
n 12.020136 1.634260 m 12.413110 2.031842 l 12.136646 1.990702 l 11.937855 2.187189 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 13.762400 6.823790 m 15.970656 11.782302 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 16.123215 12.124867 m 15.691426 11.769821 l 15.970656 11.782302 l 16.148179 11.566408 l ef
|
||||
n 16.123215 12.124867 m 15.691426 11.769821 l 15.970656 11.782302 l 16.148179 11.566408 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 13.748100 6.823790 m 19.136690 8.830027 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 19.488123 8.960870 m 18.932317 9.020702 l 19.136690 8.830027 l 19.106774 8.552125 l ef
|
||||
n 19.488123 8.960870 m 18.932317 9.020702 l 19.136690 8.830027 l 19.106774 8.552125 l cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
gsave 19.100000 6.250000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3840 3840 moveto
|
||||
2453 1971 lineto
|
||||
3904 0 lineto
|
||||
3164 0 lineto
|
||||
2053 1509 lineto
|
||||
936 0 lineto
|
||||
192 0 lineto
|
||||
1683 2009 lineto
|
||||
320 3840 lineto
|
||||
1063 3840 lineto
|
||||
2080 2472 lineto
|
||||
3097 3840 lineto
|
||||
3840 3840 lineto
|
||||
end_ol grestore
|
||||
gsave 10.255000 10.057500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2217 -381 moveto
|
||||
1949 -1059 1695 -1265 conicto
|
||||
1441 -1472 1016 -1472 conicto
|
||||
512 -1472 lineto
|
||||
512 -960 lineto
|
||||
882 -960 lineto
|
||||
1143 -960 1287 -833 conicto
|
||||
1431 -706 1606 -233 conicto
|
||||
1719 55 lineto
|
||||
192 3840 lineto
|
||||
834 3840 lineto
|
||||
2035 837 lineto
|
||||
3235 3840 lineto
|
||||
3904 3840 lineto
|
||||
2217 -381 lineto
|
||||
end_ol grestore
|
||||
gsave 12.800000 12.650000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
384 3840 moveto
|
||||
3392 3840 lineto
|
||||
3392 3265 lineto
|
||||
1010 512 lineto
|
||||
3392 512 lineto
|
||||
3392 0 lineto
|
||||
320 0 lineto
|
||||
320 575 lineto
|
||||
2680 3328 lineto
|
||||
384 3328 lineto
|
||||
384 3840 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 13.751800 6.821520 m 7.996715 8.630384 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 7.638969 8.742826 m 8.041002 8.354407 l 7.996715 8.630384 l 8.190924 8.831401 l ef
|
||||
n 7.638969 8.742826 m 8.041002 8.354407 l 7.996715 8.630384 l 8.190924 8.831401 l cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
gsave 13.990000 6.142500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3403 4571 moveto
|
||||
2755 4571 2247 4052 conicto
|
||||
1739 3533 1496 2839 conicto
|
||||
1253 2146 1253 1502 conicto
|
||||
1253 922 1512 589 conicto
|
||||
1772 256 2236 256 conicto
|
||||
2636 256 2987 458 conicto
|
||||
3338 660 3781 1141 conicto
|
||||
3954 1032 lineto
|
||||
3467 414 2992 143 conicto
|
||||
2517 -128 1912 -128 conicto
|
||||
1156 -128 740 302 conicto
|
||||
324 733 324 1508 conicto
|
||||
324 2783 1285 3791 conicto
|
||||
2247 4800 3457 4800 conicto
|
||||
3943 4800 4267 4549 conicto
|
||||
4591 4298 4591 3915 conicto
|
||||
4591 3708 4439 3560 conicto
|
||||
4288 3413 4072 3413 conicto
|
||||
3651 3413 3651 3828 conicto
|
||||
3651 3938 3732 4118 conicto
|
||||
3813 4298 3813 4352 conicto
|
||||
3813 4571 3403 4571 conicto
|
||||
end_ol grestore
|
||||
showpage
|
||||
BIN
thirdparty/opengv/doc/addons/images/central.pdf
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/central.png
vendored
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
thirdparty/opengv/doc/addons/images/multi_viewpoint.dia
vendored
Normal file
1004
thirdparty/opengv/doc/addons/images/multi_viewpoint.eps
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/multi_viewpoint.pdf
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/multi_viewpoint.png
vendored
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
thirdparty/opengv/doc/addons/images/noncentral.dia
vendored
Normal file
739
thirdparty/opengv/doc/addons/images/noncentral.eps
vendored
Normal file
@@ -0,0 +1,739 @@
|
||||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: /home/laurent/ldevel/geometric_vision/doc/addons/images/noncentral.dia
|
||||
%%Creator: Dia v0.97.2
|
||||
%%CreationDate: Mon Aug 12 11:47:36 2013
|
||||
%%For: laurent
|
||||
%%Orientation: Portrait
|
||||
%%Magnification: 1.0000
|
||||
%%BoundingBox: 0 0 845 577
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
|
||||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
|
||||
/two /three /four /five /six /seven /eight /nine /colon /semicolon
|
||||
/less /equal /greater /question /at /A /B /C /D /E
|
||||
/F /G /H /I /J /K /L /M /N /O
|
||||
/P /Q /R /S /T /U /V /W /X /Y
|
||||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
|
||||
/d /e /f /g /h /i /j /k /l /m
|
||||
/n /o /p /q /r /s /t /u /v /w
|
||||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
|
||||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior
|
||||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf
|
||||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde
|
||||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex
|
||||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring
|
||||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
|
||||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def
|
||||
/cp {closepath} bind def
|
||||
/c {curveto} bind def
|
||||
/f {fill} bind def
|
||||
/a {arc} bind def
|
||||
/ef {eofill} bind def
|
||||
/ex {exch} bind def
|
||||
/gr {grestore} bind def
|
||||
/gs {gsave} bind def
|
||||
/sa {save} bind def
|
||||
/rs {restore} bind def
|
||||
/l {lineto} bind def
|
||||
/m {moveto} bind def
|
||||
/rm {rmoveto} bind def
|
||||
/n {newpath} bind def
|
||||
/s {stroke} bind def
|
||||
/sh {show} bind def
|
||||
/slc {setlinecap} bind def
|
||||
/slj {setlinejoin} bind def
|
||||
/slw {setlinewidth} bind def
|
||||
/srgb {setrgbcolor} bind def
|
||||
/rot {rotate} bind def
|
||||
/sc {scale} bind def
|
||||
/sd {setdash} bind def
|
||||
/ff {findfont} bind def
|
||||
/sf {setfont} bind def
|
||||
/scf {scalefont} bind def
|
||||
/sw {stringwidth pop} bind def
|
||||
/tr {translate} bind def
|
||||
|
||||
/ellipsedict 8 dict def
|
||||
ellipsedict /mtrx matrix put
|
||||
/ellipse
|
||||
{ ellipsedict begin
|
||||
/endangle exch def
|
||||
/startangle exch def
|
||||
/yrad exch def
|
||||
/xrad exch def
|
||||
/y exch def
|
||||
/x exch def /savematrix mtrx currentmatrix def
|
||||
x y tr xrad yrad sc
|
||||
0 0 1 startangle endangle arc
|
||||
savematrix setmatrix
|
||||
end
|
||||
} def
|
||||
|
||||
/mergeprocs {
|
||||
dup length
|
||||
3 -1 roll
|
||||
dup
|
||||
length
|
||||
dup
|
||||
5 1 roll
|
||||
3 -1 roll
|
||||
add
|
||||
array cvx
|
||||
dup
|
||||
3 -1 roll
|
||||
0 exch
|
||||
putinterval
|
||||
dup
|
||||
4 2 roll
|
||||
putinterval
|
||||
} bind def
|
||||
/dpi_x 300 def
|
||||
/dpi_y 300 def
|
||||
/conicto {
|
||||
/to_y exch def
|
||||
/to_x exch def
|
||||
/conic_cntrl_y exch def
|
||||
/conic_cntrl_x exch def
|
||||
currentpoint
|
||||
/p0_y exch def
|
||||
/p0_x exch def
|
||||
/p1_x p0_x conic_cntrl_x p0_x sub 2 3 div mul add def
|
||||
/p1_y p0_y conic_cntrl_y p0_y sub 2 3 div mul add def
|
||||
/p2_x p1_x to_x p0_x sub 1 3 div mul add def
|
||||
/p2_y p1_y to_y p0_y sub 1 3 div mul add def
|
||||
p1_x p1_y p2_x p2_y to_x to_y curveto
|
||||
} bind def
|
||||
/start_ol { gsave 1.1 dpi_x div dup scale} bind def
|
||||
/end_ol { closepath fill grestore } bind def
|
||||
28.346000 -28.346000 scale
|
||||
-16.342097 -23.244600 translate
|
||||
%%EndProlog
|
||||
|
||||
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 39.676900 17.127100 m 36.959849 20.930972 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 36.741884 21.236122 m 36.829070 20.683946 l 36.959849 20.930972 l 37.235937 20.974565 l ef
|
||||
n 36.741884 21.236122 m 36.829070 20.683946 l 36.959849 20.930972 l 37.235937 20.974565 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 39.626900 17.177100 m 45.542898 17.188742 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 45.917897 17.189480 m 45.417406 17.438496 l 45.542898 17.188742 l 45.418390 16.938497 l ef
|
||||
n 45.917897 17.189480 m 45.417406 17.438496 l 45.542898 17.188742 l 45.418390 16.938497 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 39.626900 17.227100 m 39.626900 22.540297 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 39.626900 22.915297 m 39.376900 22.415297 l 39.626900 22.540297 l 39.876900 22.415297 l ef
|
||||
n 39.626900 22.915297 m 39.376900 22.415297 l 39.626900 22.540297 l 39.876900 22.415297 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 39.651900 17.177100 m 37.006725 22.479000 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 36.839313 22.814556 m 36.838825 22.255540 l 37.006725 22.479000 l 37.286234 22.478756 l ef
|
||||
n 36.839313 22.814556 m 36.838825 22.255540 l 37.006725 22.479000 l 37.286234 22.478756 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 39.625700 17.177000 m 44.549433 20.119570 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 44.871329 20.311945 m 44.313885 20.270043 l 44.549433 20.119570 l 44.570384 19.840848 l ef
|
||||
n 44.871329 20.311945 m 44.313885 20.270043 l 44.549433 20.119570 l 44.570384 19.840848 l cp s
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
n 39.655700 17.239500 m 42.055008 22.275131 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 42.216309 22.613668 m 41.775550 22.269820 l 42.055008 22.275131 l 42.226932 22.054752 l ef
|
||||
n 42.216309 22.613668 m 41.775550 22.269820 l 42.055008 22.275131 l 42.226932 22.054752 l cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
gsave 44.767600 16.724400 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3840 3840 moveto
|
||||
2453 1971 lineto
|
||||
3904 0 lineto
|
||||
3164 0 lineto
|
||||
2053 1509 lineto
|
||||
936 0 lineto
|
||||
192 0 lineto
|
||||
1683 2009 lineto
|
||||
320 3840 lineto
|
||||
1063 3840 lineto
|
||||
2080 2472 lineto
|
||||
3097 3840 lineto
|
||||
3840 3840 lineto
|
||||
end_ol grestore
|
||||
gsave 36.181900 20.434600 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2217 -381 moveto
|
||||
1949 -1059 1695 -1265 conicto
|
||||
1441 -1472 1016 -1472 conicto
|
||||
512 -1472 lineto
|
||||
512 -960 lineto
|
||||
882 -960 lineto
|
||||
1143 -960 1287 -833 conicto
|
||||
1431 -706 1606 -233 conicto
|
||||
1719 55 lineto
|
||||
192 3840 lineto
|
||||
834 3840 lineto
|
||||
2035 837 lineto
|
||||
3235 3840 lineto
|
||||
3904 3840 lineto
|
||||
2217 -381 lineto
|
||||
end_ol grestore
|
||||
gsave 38.726900 23.027100 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
384 3840 moveto
|
||||
3392 3840 lineto
|
||||
3392 3265 lineto
|
||||
1010 512 lineto
|
||||
3392 512 lineto
|
||||
3392 0 lineto
|
||||
320 0 lineto
|
||||
320 575 lineto
|
||||
2680 3328 lineto
|
||||
384 3328 lineto
|
||||
384 3840 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 23.002600 9.564840 m 19.294824 12.754812 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 19.010553 12.999383 m 19.226533 12.483774 l 19.294824 12.754812 l 19.552628 12.862802 l ef
|
||||
n 19.010553 12.999383 m 19.226533 12.483774 l 19.294824 12.754812 l 19.552628 12.862802 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 22.998600 9.563630 m 16.940703 9.562593 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 16.565703 9.562529 m 17.065746 9.312615 l 16.940703 9.562593 l 17.065661 9.812615 l ef
|
||||
n 16.565703 9.562529 m 17.065746 9.312615 l 16.940703 9.562593 l 17.065661 9.812615 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 22.985000 9.600000 m 22.988474 4.419583 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 22.988725 4.044583 m 23.238390 4.544751 l 22.988474 4.419583 l 22.738390 4.544416 l ef
|
||||
n 22.988725 4.044583 m 23.238390 4.544751 l 22.988474 4.419583 l 22.738390 4.544416 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 23.004800 9.535160 m 20.839856 14.314765 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 20.685130 14.656357 m 20.663703 14.097751 l 20.839856 14.314765 l 21.119159 14.304052 l ef
|
||||
n 20.685130 14.656357 m 20.663703 14.097751 l 20.839856 14.314765 l 21.119159 14.304052 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 22.976400 9.579930 m 18.644927 6.573853 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 18.336851 6.360045 m 18.890158 6.439738 l 18.644927 6.573853 l 18.605081 6.850507 l ef
|
||||
n 18.336851 6.360045 m 18.890158 6.439738 l 18.644927 6.573853 l 18.605081 6.850507 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 22.981400 9.547510 m 26.990474 6.707385 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 27.296470 6.490610 m 27.032992 6.983641 l 26.990474 6.707385 l 26.743958 6.575646 l ef
|
||||
n 27.296470 6.490610 m 27.032992 6.983641 l 26.990474 6.707385 l 26.743958 6.575646 l cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
gsave 19.858400 13.235000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3840 3840 moveto
|
||||
2453 1971 lineto
|
||||
3904 0 lineto
|
||||
3164 0 lineto
|
||||
2053 1509 lineto
|
||||
936 0 lineto
|
||||
192 0 lineto
|
||||
1683 2009 lineto
|
||||
320 3840 lineto
|
||||
1063 3840 lineto
|
||||
2080 2472 lineto
|
||||
3097 3840 lineto
|
||||
3840 3840 lineto
|
||||
end_ol grestore
|
||||
gsave 23.395800 5.143080 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2217 -381 moveto
|
||||
1949 -1059 1695 -1265 conicto
|
||||
1441 -1472 1016 -1472 conicto
|
||||
512 -1472 lineto
|
||||
512 -960 lineto
|
||||
882 -960 lineto
|
||||
1143 -960 1287 -833 conicto
|
||||
1431 -706 1606 -233 conicto
|
||||
1719 55 lineto
|
||||
192 3840 lineto
|
||||
834 3840 lineto
|
||||
2035 837 lineto
|
||||
3235 3840 lineto
|
||||
3904 3840 lineto
|
||||
2217 -381 lineto
|
||||
end_ol grestore
|
||||
gsave 17.578500 9.077910 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
384 3840 moveto
|
||||
3392 3840 lineto
|
||||
3392 3265 lineto
|
||||
1010 512 lineto
|
||||
3392 512 lineto
|
||||
3392 0 lineto
|
||||
320 0 lineto
|
||||
320 575 lineto
|
||||
2680 3328 lineto
|
||||
384 3328 lineto
|
||||
384 3840 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 23.004400 9.564510 m 17.412162 11.336550 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 17.054681 11.449827 m 17.455805 11.060470 l 17.412162 11.336550 l 17.606841 11.537112 l ef
|
||||
n 17.054681 11.449827 m 17.455805 11.060470 l 17.412162 11.336550 l 17.606841 11.537112 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 39.642800 17.182300 m 43.197572 13.449812 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 43.456194 13.178261 m 43.292399 13.712743 l 43.197572 13.449812 l 42.930331 13.367914 l ef
|
||||
n 43.456194 13.178261 m 43.292399 13.712743 l 43.197572 13.449812 l 42.930331 13.367914 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 39.091700 7.333770 m 44.837097 7.327510 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 45.212097 7.327102 m 44.712369 7.577646 l 44.837097 7.327510 l 44.711825 7.077647 l ef
|
||||
n 45.212097 7.327102 m 44.712369 7.577646 l 44.837097 7.327510 l 44.711825 7.077647 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 39.167700 7.323240 m 39.157523 12.163998 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 39.156735 12.538997 m 38.907787 12.038472 l 39.157523 12.163998 l 39.407786 12.039524 l ef
|
||||
n 39.156735 12.538997 m 38.907787 12.038472 l 39.157523 12.163998 l 39.407786 12.039524 l cp s
|
||||
gsave 44.726400 8.291770 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
384 3840 moveto
|
||||
3392 3840 lineto
|
||||
3392 3265 lineto
|
||||
1010 512 lineto
|
||||
3392 512 lineto
|
||||
3392 0 lineto
|
||||
320 0 lineto
|
||||
320 575 lineto
|
||||
2680 3328 lineto
|
||||
384 3328 lineto
|
||||
384 3840 lineto
|
||||
end_ol grestore
|
||||
gsave 39.539100 13.090100 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3840 3840 moveto
|
||||
2453 1971 lineto
|
||||
3904 0 lineto
|
||||
3164 0 lineto
|
||||
2053 1509 lineto
|
||||
936 0 lineto
|
||||
192 0 lineto
|
||||
1683 2009 lineto
|
||||
320 3840 lineto
|
||||
1063 3840 lineto
|
||||
2080 2472 lineto
|
||||
3097 3840 lineto
|
||||
3840 3840 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 39.139800 7.341920 m 43.011821 3.804036 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 43.288662 3.551085 m 43.088175 4.072914 l 43.011821 3.804036 l 42.750907 3.703793 l ef
|
||||
n 43.288662 3.551085 m 43.088175 4.072914 l 43.011821 3.804036 l 42.750907 3.703793 l cp s
|
||||
gsave 41.938200 3.760940 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2217 -381 moveto
|
||||
1949 -1059 1695 -1265 conicto
|
||||
1441 -1472 1016 -1472 conicto
|
||||
512 -1472 lineto
|
||||
512 -960 lineto
|
||||
882 -960 lineto
|
||||
1143 -960 1287 -833 conicto
|
||||
1431 -706 1606 -233 conicto
|
||||
1719 55 lineto
|
||||
192 3840 lineto
|
||||
834 3840 lineto
|
||||
2035 837 lineto
|
||||
3235 3840 lineto
|
||||
3904 3840 lineto
|
||||
2217 -381 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 39.165100 7.314910 m 35.475263 4.187579 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 35.189190 3.945118 m 35.732261 4.077685 l 35.475263 4.187579 l 35.408979 4.459115 l ef
|
||||
n 35.189190 3.945118 m 35.732261 4.077685 l 35.475263 4.187579 l 35.408979 4.459115 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 39.177700 7.326740 m 41.768136 12.079659 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 41.947596 12.408930 m 41.488803 12.089542 l 41.768136 12.079659 l 41.927831 11.850263 l ef
|
||||
n 41.947596 12.408930 m 41.488803 12.089542 l 41.768136 12.079659 l 41.927831 11.850263 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 39.179800 7.304860 m 43.897905 5.002574 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 44.234921 4.838121 m 43.895201 5.282069 l 43.897905 5.002574 l 43.675930 4.832714 l ef
|
||||
n 44.234921 4.838121 m 43.895201 5.282069 l 43.897905 5.002574 l 43.675930 4.832714 l cp s
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
n 39.151800 7.314500 m 34.233942 9.577141 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 33.893269 9.733879 m 34.243007 9.297779 l 34.233942 9.577141 l 34.451992 9.752009 l ef
|
||||
n 33.893269 9.733879 m 34.243007 9.297779 l 34.233942 9.577141 l 34.451992 9.752009 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.000000 0.000000 1.000000 srgb
|
||||
n 31.421900 13.303100 m 34.473903 16.385762 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 34.737739 16.652249 m 34.208299 16.472824 l 34.473903 16.385762 l 34.563615 16.121042 l ef
|
||||
n 34.737739 16.652249 m 34.208299 16.472824 l 34.473903 16.385762 l 34.563615 16.121042 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 31.418000 13.301900 m 26.185095 14.774805 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 25.824121 14.876408 m 26.237684 14.500288 l 26.185095 14.774805 l 26.373155 14.981586 l ef
|
||||
n 25.824121 14.876408 m 26.237684 14.500288 l 26.185095 14.774805 l 26.373155 14.981586 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 31.404400 13.338300 m 31.396427 8.186329 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 31.395847 7.811329 m 31.646620 8.310942 l 31.396427 8.186329 l 31.146621 8.311716 l ef
|
||||
n 31.395847 7.811329 m 31.646620 8.310942 l 31.396427 8.186329 l 31.146621 8.311716 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.627451 0.125490 0.941176 srgb
|
||||
n 31.419900 13.288300 m 38.756560 7.604880 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 39.053014 7.375229 m 38.810843 7.879067 l 38.756560 7.604880 l 38.504641 7.483795 l ef
|
||||
n 39.053014 7.375229 m 38.810843 7.879067 l 38.756560 7.604880 l 38.504641 7.483795 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 31.406600 13.310900 m 39.200326 16.950711 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 39.540099 17.109391 m 38.981282 17.124333 l 39.200326 16.950711 l 39.192855 16.671302 l ef
|
||||
n 39.540099 17.109391 m 38.981282 17.124333 l 39.200326 16.950711 l 39.192855 16.671302 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 31.427900 13.275700 m 23.412157 9.752625 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 23.068853 9.601736 m 23.627185 9.574052 l 23.412157 9.752625 l 23.426000 10.031791 l ef
|
||||
n 23.068853 9.601736 m 23.627185 9.574052 l 23.412157 9.752625 l 23.426000 10.031791 l cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
gsave 24.130000 9.597500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3403 4571 moveto
|
||||
2755 4571 2247 4052 conicto
|
||||
1739 3533 1496 2839 conicto
|
||||
1253 2146 1253 1502 conicto
|
||||
1253 922 1512 589 conicto
|
||||
1772 256 2236 256 conicto
|
||||
2636 256 2987 458 conicto
|
||||
3338 660 3781 1141 conicto
|
||||
3954 1032 lineto
|
||||
3467 414 2992 143 conicto
|
||||
2517 -128 1912 -128 conicto
|
||||
1156 -128 740 302 conicto
|
||||
324 733 324 1508 conicto
|
||||
324 2783 1285 3791 conicto
|
||||
2247 4800 3457 4800 conicto
|
||||
3943 4800 4267 4549 conicto
|
||||
4591 4298 4591 3915 conicto
|
||||
4591 3708 4439 3560 conicto
|
||||
4288 3413 4072 3413 conicto
|
||||
3651 3413 3651 3828 conicto
|
||||
3651 3938 3732 4118 conicto
|
||||
3813 4298 3813 4352 conicto
|
||||
3813 4571 3403 4571 conicto
|
||||
end_ol grestore
|
||||
gsave 38.740000 6.392500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3403 4571 moveto
|
||||
2755 4571 2247 4052 conicto
|
||||
1739 3533 1496 2839 conicto
|
||||
1253 2146 1253 1502 conicto
|
||||
1253 922 1512 589 conicto
|
||||
1772 256 2236 256 conicto
|
||||
2636 256 2987 458 conicto
|
||||
3338 660 3781 1141 conicto
|
||||
3954 1032 lineto
|
||||
3467 414 2992 143 conicto
|
||||
2517 -128 1912 -128 conicto
|
||||
1156 -128 740 302 conicto
|
||||
324 733 324 1508 conicto
|
||||
324 2783 1285 3791 conicto
|
||||
2247 4800 3457 4800 conicto
|
||||
3943 4800 4267 4549 conicto
|
||||
4591 4298 4591 3915 conicto
|
||||
4591 3708 4439 3560 conicto
|
||||
4288 3413 4072 3413 conicto
|
||||
3651 3413 3651 3828 conicto
|
||||
3651 3938 3732 4118 conicto
|
||||
3813 4298 3813 4352 conicto
|
||||
3813 4571 3403 4571 conicto
|
||||
end_ol grestore
|
||||
gsave 39.374405 6.392500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1426 4608 moveto
|
||||
1566 6342 1653 6678 conicto
|
||||
1880 7220 2258 7264 conicto
|
||||
2398 7264 2500 7171 conicto
|
||||
2603 7079 2603 6949 conicto
|
||||
2603 6678 1653 4608 conicto
|
||||
1426 4608 lineto
|
||||
end_ol grestore
|
||||
gsave 39.679114 6.392500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
end_ol grestore
|
||||
gsave 38.864319 16.097905 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3403 4571 moveto
|
||||
2755 4571 2247 4052 conicto
|
||||
1739 3533 1496 2839 conicto
|
||||
1253 2146 1253 1502 conicto
|
||||
1253 922 1512 589 conicto
|
||||
1772 256 2236 256 conicto
|
||||
2636 256 2987 458 conicto
|
||||
3338 660 3781 1141 conicto
|
||||
3954 1032 lineto
|
||||
3467 414 2992 143 conicto
|
||||
2517 -128 1912 -128 conicto
|
||||
1156 -128 740 302 conicto
|
||||
324 733 324 1508 conicto
|
||||
324 2783 1285 3791 conicto
|
||||
2247 4800 3457 4800 conicto
|
||||
3943 4800 4267 4549 conicto
|
||||
4591 4298 4591 3915 conicto
|
||||
4591 3708 4439 3560 conicto
|
||||
4288 3413 4072 3413 conicto
|
||||
3651 3413 3651 3828 conicto
|
||||
3651 3938 3732 4118 conicto
|
||||
3813 4298 3813 4352 conicto
|
||||
3813 4571 3403 4571 conicto
|
||||
end_ol grestore
|
||||
gsave 39.498723 16.097905 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1426 4608 moveto
|
||||
1566 6342 1653 6678 conicto
|
||||
1880 7220 2258 7264 conicto
|
||||
2398 7264 2500 7171 conicto
|
||||
2603 7079 2603 6949 conicto
|
||||
2603 6678 1653 4608 conicto
|
||||
1426 4608 lineto
|
||||
end_ol grestore
|
||||
gsave 39.803433 16.097905 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1426 4608 moveto
|
||||
1566 6342 1653 6678 conicto
|
||||
1880 7220 2258 7264 conicto
|
||||
2398 7264 2500 7171 conicto
|
||||
2603 7079 2603 6949 conicto
|
||||
2603 6678 1653 4608 conicto
|
||||
1426 4608 lineto
|
||||
end_ol grestore
|
||||
gsave 40.108142 16.097905 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
end_ol grestore
|
||||
0.000000 0.000000 1.000000 srgb
|
||||
gsave 30.295100 14.591955 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
4051 3625 moveto
|
||||
4051 3767 3824 3984 conicto
|
||||
3597 4201 3597 4430 conicto
|
||||
3597 4604 3705 4702 conicto
|
||||
3813 4800 3997 4800 conicto
|
||||
4245 4800 4423 4609 conicto
|
||||
4602 4419 4602 4159 conicto
|
||||
4602 3854 4413 3381 conicto
|
||||
4224 2908 3943 2505 conicto
|
||||
3111 1331 2441 569 conicto
|
||||
1772 -192 1566 -192 conicto
|
||||
1469 -192 1469 189 conicto
|
||||
1469 656 1393 1651 conicto
|
||||
1318 2647 1231 3212 conicto
|
||||
1123 3962 993 4179 conicto
|
||||
864 4397 551 4397 conicto
|
||||
346 4397 227 4386 conicto
|
||||
227 4528 lineto
|
||||
605 4593 886 4647 conicto
|
||||
1167 4702 1275 4734 conicto
|
||||
1383 4767 1469 4783 conicto
|
||||
1555 4800 1642 4800 conicto
|
||||
1815 4800 1993 3516 conicto
|
||||
2171 2233 2236 765 conicto
|
||||
2571 1113 lineto
|
||||
3143 1722 3597 2488 conicto
|
||||
4051 3255 4051 3625 conicto
|
||||
end_ol grestore
|
||||
gsave 30.887039 14.591955 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
961 4414 moveto
|
||||
605 4414 lineto
|
||||
583 4570 lineto
|
||||
2247 4800 2268 4800 conicto
|
||||
2322 4800 2322 4758 conicto
|
||||
1977 3589 lineto
|
||||
2452 4243 2873 4521 conicto
|
||||
3295 4800 3824 4800 conicto
|
||||
4396 4800 4731 4434 conicto
|
||||
5066 4069 5066 3437 conicto
|
||||
5066 2140 4034 1006 conicto
|
||||
3003 -128 1826 -128 conicto
|
||||
1469 -128 1113 77 conicto
|
||||
713 -1429 713 -1747 conicto
|
||||
713 -2077 1404 -2077 conicto
|
||||
1404 -2240 lineto
|
||||
-810 -2240 lineto
|
||||
-810 -2066 lineto
|
||||
-670 -2066 -583 -2049 conicto
|
||||
-497 -2033 -410 -1983 conicto
|
||||
-324 -1934 -281 -1874 conicto
|
||||
-238 -1815 -173 -1678 conicto
|
||||
-108 -1542 -70 -1405 conicto
|
||||
-32 -1269 32 -1006 conicto
|
||||
97 -744 156 -487 conicto
|
||||
216 -231 324 190 conicto
|
||||
432 611 540 1026 conicto
|
||||
1307 3955 1307 4119 conicto
|
||||
1307 4217 1188 4315 conicto
|
||||
1069 4414 961 4414 conicto
|
||||
4094 3415 moveto
|
||||
4094 4352 3381 4352 conicto
|
||||
2981 4352 2576 3997 conicto
|
||||
2171 3643 1966 3109 conicto
|
||||
1728 2498 1496 1637 conicto
|
||||
1264 777 1264 505 conicto
|
||||
1264 330 1409 215 conicto
|
||||
1555 101 1782 101 conicto
|
||||
2430 101 2986 690 conicto
|
||||
3543 1279 3818 2030 conicto
|
||||
4094 2782 4094 3415 conicto
|
||||
end_ol grestore
|
||||
showpage
|
||||
BIN
thirdparty/opengv/doc/addons/images/noncentral.pdf
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/noncentral.png
vendored
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
thirdparty/opengv/doc/addons/images/nonoverlapping.dia
vendored
Normal file
995
thirdparty/opengv/doc/addons/images/nonoverlapping.eps
vendored
Normal file
@@ -0,0 +1,995 @@
|
||||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: /home/laurent/ldevel/geometric_vision/doc/addons/images/nonoverlapping.dia
|
||||
%%Creator: Dia v0.97.2
|
||||
%%CreationDate: Mon Aug 12 17:41:41 2013
|
||||
%%For: laurent
|
||||
%%Orientation: Portrait
|
||||
%%Magnification: 1.0000
|
||||
%%BoundingBox: 0 0 1248 632
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
|
||||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
|
||||
/two /three /four /five /six /seven /eight /nine /colon /semicolon
|
||||
/less /equal /greater /question /at /A /B /C /D /E
|
||||
/F /G /H /I /J /K /L /M /N /O
|
||||
/P /Q /R /S /T /U /V /W /X /Y
|
||||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
|
||||
/d /e /f /g /h /i /j /k /l /m
|
||||
/n /o /p /q /r /s /t /u /v /w
|
||||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
|
||||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior
|
||||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf
|
||||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde
|
||||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex
|
||||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring
|
||||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
|
||||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def
|
||||
/cp {closepath} bind def
|
||||
/c {curveto} bind def
|
||||
/f {fill} bind def
|
||||
/a {arc} bind def
|
||||
/ef {eofill} bind def
|
||||
/ex {exch} bind def
|
||||
/gr {grestore} bind def
|
||||
/gs {gsave} bind def
|
||||
/sa {save} bind def
|
||||
/rs {restore} bind def
|
||||
/l {lineto} bind def
|
||||
/m {moveto} bind def
|
||||
/rm {rmoveto} bind def
|
||||
/n {newpath} bind def
|
||||
/s {stroke} bind def
|
||||
/sh {show} bind def
|
||||
/slc {setlinecap} bind def
|
||||
/slj {setlinejoin} bind def
|
||||
/slw {setlinewidth} bind def
|
||||
/srgb {setrgbcolor} bind def
|
||||
/rot {rotate} bind def
|
||||
/sc {scale} bind def
|
||||
/sd {setdash} bind def
|
||||
/ff {findfont} bind def
|
||||
/sf {setfont} bind def
|
||||
/scf {scalefont} bind def
|
||||
/sw {stringwidth pop} bind def
|
||||
/tr {translate} bind def
|
||||
|
||||
/ellipsedict 8 dict def
|
||||
ellipsedict /mtrx matrix put
|
||||
/ellipse
|
||||
{ ellipsedict begin
|
||||
/endangle exch def
|
||||
/startangle exch def
|
||||
/yrad exch def
|
||||
/xrad exch def
|
||||
/y exch def
|
||||
/x exch def /savematrix mtrx currentmatrix def
|
||||
x y tr xrad yrad sc
|
||||
0 0 1 startangle endangle arc
|
||||
savematrix setmatrix
|
||||
end
|
||||
} def
|
||||
|
||||
/mergeprocs {
|
||||
dup length
|
||||
3 -1 roll
|
||||
dup
|
||||
length
|
||||
dup
|
||||
5 1 roll
|
||||
3 -1 roll
|
||||
add
|
||||
array cvx
|
||||
dup
|
||||
3 -1 roll
|
||||
0 exch
|
||||
putinterval
|
||||
dup
|
||||
4 2 roll
|
||||
putinterval
|
||||
} bind def
|
||||
/dpi_x 300 def
|
||||
/dpi_y 300 def
|
||||
/conicto {
|
||||
/to_y exch def
|
||||
/to_x exch def
|
||||
/conic_cntrl_y exch def
|
||||
/conic_cntrl_x exch def
|
||||
currentpoint
|
||||
/p0_y exch def
|
||||
/p0_x exch def
|
||||
/p1_x p0_x conic_cntrl_x p0_x sub 2 3 div mul add def
|
||||
/p1_y p0_y conic_cntrl_y p0_y sub 2 3 div mul add def
|
||||
/p2_x p1_x to_x p0_x sub 1 3 div mul add def
|
||||
/p2_y p1_y to_y p0_y sub 1 3 div mul add def
|
||||
p1_x p1_y p2_x p2_y to_x to_y curveto
|
||||
} bind def
|
||||
/start_ol { gsave 1.1 dpi_x div dup scale} bind def
|
||||
/end_ol { closepath fill grestore } bind def
|
||||
28.346000 -28.346000 scale
|
||||
7.265770 -42.514400 translate
|
||||
%%EndProlog
|
||||
|
||||
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 8.719199 33.691291 m 15.820121 40.781109 l s
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
n 22.502662 33.765953 m 16.176938 40.773747 l s
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
n 22.468149 25.870395 m 16.396151 20.664405 l s
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
n 8.740989 25.821394 m 15.983011 20.646106 l s
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
n 12.956206 29.768438 m 36.226994 33.818062 l s
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
n 27.079236 29.892609 m 36.244364 33.761191 l s
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
n 18.307211 29.752772 m -5.362491 26.129728 l s
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
n 4.168667 29.634295 m -5.364307 26.180905 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.627451 0.125490 0.941176 srgb
|
||||
n 4.598305 29.704152 m 12.467695 29.737648 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 4.987562 29.455806 m 4.486502 29.703676 l 4.985434 29.955802 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 12.078438 29.985994 m 12.579498 29.738124 l 12.080566 29.485998 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 8.740665 25.821442 m 12.973195 22.793161 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 13.278173 22.574956 m 13.017006 23.069215 l 12.973195 22.793161 l 12.726066 22.662577 l ef
|
||||
n 13.278173 22.574956 m 13.017006 23.069215 l 12.973195 22.793161 l 12.726066 22.662577 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 4.168667 29.634295 m -0.140125 28.073404 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n -0.492703 27.945680 m 0.062551 27.880926 l -0.140125 28.073404 l -0.107748 28.351031 l ef
|
||||
n -0.492703 27.945680 m 0.062551 27.880926 l -0.140125 28.073404 l -0.107748 28.351031 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 12.955534 29.768728 m 17.491333 30.565206 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 17.860681 30.630063 m 17.324978 30.789820 l 17.491333 30.565206 l 17.411454 30.297355 l ef
|
||||
n 17.860681 30.630063 m 17.324978 30.789820 l 17.491333 30.565206 l 17.411454 30.297355 l cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 22.467712 25.871477 m 18.785298 22.741097 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 18.499584 22.498214 m 19.042458 22.631581 l 18.785298 22.741097 l 18.718615 23.012534 l ef
|
||||
n 18.499584 22.498214 m 19.042458 22.631581 l 18.785298 22.741097 l 18.718615 23.012534 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 22.499879 33.769065 m 19.496460 37.096818 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 19.245209 37.375202 m 19.394622 36.836522 l 19.496460 37.096818 l 19.765800 37.171524 l ef
|
||||
n 19.245209 37.375202 m 19.394622 36.836522 l 19.496460 37.096818 l 19.765800 37.171524 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 27.079623 29.891701 m 31.316502 31.661287 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 31.662533 31.805811 m 31.104809 31.843800 l 31.316502 31.661287 l 31.297508 31.382424 l ef
|
||||
n 31.662533 31.805811 m 31.104809 31.843800 l 31.316502 31.661287 l 31.297508 31.382424 l cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.627451 0.125490 0.941176 srgb
|
||||
n 8.514452 26.223007 m 8.519208 33.227293 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 8.764715 26.611033 m 8.514376 26.111203 l 8.264716 26.611373 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 8.268945 32.839267 m 8.519284 33.339097 l 8.768944 32.838927 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 18.301064 29.753051 m 12.694340 28.921793 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 12.323395 28.866797 m 12.854653 28.692829 l 12.694340 28.921793 l 12.781324 29.187423 l ef
|
||||
n 12.323395 28.866797 m 12.854653 28.692829 l 12.694340 28.921793 l 12.781324 29.187423 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 8.719201 33.691291 m 11.925207 36.892249 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 12.190581 37.157205 m 11.660112 36.980847 l 11.925207 36.892249 l 12.013386 36.627015 l ef
|
||||
n 12.190581 37.157205 m 11.660112 36.980847 l 11.925207 36.892249 l 12.013386 36.627015 l cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
0.498039 0.498039 0.498039 srgb
|
||||
n -5.610280 26.091800 0.212500 0.212500 0 360 ellipse f
|
||||
n -5.610280 26.091800 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n -5.610280 26.091800 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 36.485800 33.863100 0.212500 0.212500 0 360 ellipse f
|
||||
n 36.485800 33.863100 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 36.485800 33.863100 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 16.196700 20.493400 0.212500 0.212500 0 360 ellipse f
|
||||
n 16.196700 20.493400 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 16.196700 20.493400 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.678431 0.678431 0.678431 srgb
|
||||
gsave 15.771500 21.739800 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2192 4735 moveto
|
||||
2307 4814 2445 4885 conicto
|
||||
2583 4957 2747 5007 conicto
|
||||
2912 5057 3110 5088 conicto
|
||||
3309 5120 3549 5120 conicto
|
||||
4571 5120 5069 4507 conicto
|
||||
5568 3895 5568 2573 conicto
|
||||
5568 1966 5435 1468 conicto
|
||||
5302 970 5025 615 conicto
|
||||
4749 261 4326 66 conicto
|
||||
3904 -128 3325 -128 conicto
|
||||
3043 -128 2772 -93 conicto
|
||||
2501 -59 2208 15 conicto
|
||||
2213 -43 2221 -144 conicto
|
||||
2229 -245 2231 -359 conicto
|
||||
2234 -473 2237 -581 conicto
|
||||
2240 -690 2240 -769 conicto
|
||||
2240 -1856 lineto
|
||||
2968 -1975 lineto
|
||||
2968 -2304 lineto
|
||||
166 -2304 lineto
|
||||
166 -1975 lineto
|
||||
704 -1856 lineto
|
||||
704 4544 lineto
|
||||
160 4663 lineto
|
||||
160 4992 lineto
|
||||
2181 4992 lineto
|
||||
2192 4735 lineto
|
||||
4032 2549 moveto
|
||||
4032 3131 3959 3517 conicto
|
||||
3887 3904 3762 4130 conicto
|
||||
3637 4357 3473 4450 conicto
|
||||
3310 4544 3128 4544 conicto
|
||||
2863 4544 2637 4485 conicto
|
||||
2411 4427 2240 4341 conicto
|
||||
2240 560 lineto
|
||||
2661 448 3118 448 conicto
|
||||
3585 448 3808 976 conicto
|
||||
4032 1504 4032 2549 conicto
|
||||
end_ol grestore
|
||||
gsave 16.584000 21.934800 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2624 960 moveto
|
||||
2624 0 lineto
|
||||
2048 0 lineto
|
||||
2048 960 lineto
|
||||
128 960 lineto
|
||||
128 1376 lineto
|
||||
2229 4288 lineto
|
||||
2624 4288 lineto
|
||||
2624 1408 lineto
|
||||
3200 1408 lineto
|
||||
3200 960 lineto
|
||||
2624 960 lineto
|
||||
2048 3539 moveto
|
||||
2032 3539 lineto
|
||||
488 1408 lineto
|
||||
2048 1408 lineto
|
||||
2048 3539 lineto
|
||||
end_ol grestore
|
||||
gsave 35.395600 34.797700 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2192 4735 moveto
|
||||
2307 4814 2445 4885 conicto
|
||||
2583 4957 2747 5007 conicto
|
||||
2912 5057 3110 5088 conicto
|
||||
3309 5120 3549 5120 conicto
|
||||
4571 5120 5069 4507 conicto
|
||||
5568 3895 5568 2573 conicto
|
||||
5568 1966 5435 1468 conicto
|
||||
5302 970 5025 615 conicto
|
||||
4749 261 4326 66 conicto
|
||||
3904 -128 3325 -128 conicto
|
||||
3043 -128 2772 -93 conicto
|
||||
2501 -59 2208 15 conicto
|
||||
2213 -43 2221 -144 conicto
|
||||
2229 -245 2231 -359 conicto
|
||||
2234 -473 2237 -581 conicto
|
||||
2240 -690 2240 -769 conicto
|
||||
2240 -1856 lineto
|
||||
2968 -1975 lineto
|
||||
2968 -2304 lineto
|
||||
166 -2304 lineto
|
||||
166 -1975 lineto
|
||||
704 -1856 lineto
|
||||
704 4544 lineto
|
||||
160 4663 lineto
|
||||
160 4992 lineto
|
||||
2181 4992 lineto
|
||||
2192 4735 lineto
|
||||
4032 2549 moveto
|
||||
4032 3131 3959 3517 conicto
|
||||
3887 3904 3762 4130 conicto
|
||||
3637 4357 3473 4450 conicto
|
||||
3310 4544 3128 4544 conicto
|
||||
2863 4544 2637 4485 conicto
|
||||
2411 4427 2240 4341 conicto
|
||||
2240 560 lineto
|
||||
2661 448 3118 448 conicto
|
||||
3585 448 3808 976 conicto
|
||||
4032 1504 4032 2549 conicto
|
||||
end_ol grestore
|
||||
gsave 36.208100 34.992700 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2048 256 moveto
|
||||
2921 170 lineto
|
||||
2921 0 lineto
|
||||
596 0 lineto
|
||||
596 170 lineto
|
||||
1472 256 lineto
|
||||
1472 3701 lineto
|
||||
609 3392 lineto
|
||||
609 3565 lineto
|
||||
1874 4288 lineto
|
||||
2048 4288 lineto
|
||||
2048 256 lineto
|
||||
end_ol grestore
|
||||
gsave -7.265770 26.069400 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2192 4735 moveto
|
||||
2307 4814 2445 4885 conicto
|
||||
2583 4957 2747 5007 conicto
|
||||
2912 5057 3110 5088 conicto
|
||||
3309 5120 3549 5120 conicto
|
||||
4571 5120 5069 4507 conicto
|
||||
5568 3895 5568 2573 conicto
|
||||
5568 1966 5435 1468 conicto
|
||||
5302 970 5025 615 conicto
|
||||
4749 261 4326 66 conicto
|
||||
3904 -128 3325 -128 conicto
|
||||
3043 -128 2772 -93 conicto
|
||||
2501 -59 2208 15 conicto
|
||||
2213 -43 2221 -144 conicto
|
||||
2229 -245 2231 -359 conicto
|
||||
2234 -473 2237 -581 conicto
|
||||
2240 -690 2240 -769 conicto
|
||||
2240 -1856 lineto
|
||||
2968 -1975 lineto
|
||||
2968 -2304 lineto
|
||||
166 -2304 lineto
|
||||
166 -1975 lineto
|
||||
704 -1856 lineto
|
||||
704 4544 lineto
|
||||
160 4663 lineto
|
||||
160 4992 lineto
|
||||
2181 4992 lineto
|
||||
2192 4735 lineto
|
||||
4032 2549 moveto
|
||||
4032 3131 3959 3517 conicto
|
||||
3887 3904 3762 4130 conicto
|
||||
3637 4357 3473 4450 conicto
|
||||
3310 4544 3128 4544 conicto
|
||||
2863 4544 2637 4485 conicto
|
||||
2411 4427 2240 4341 conicto
|
||||
2240 560 lineto
|
||||
2661 448 3118 448 conicto
|
||||
3585 448 3808 976 conicto
|
||||
4032 1504 4032 2549 conicto
|
||||
end_ol grestore
|
||||
gsave -6.453270 26.264400 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3008 1168 moveto
|
||||
3008 877 2906 648 conicto
|
||||
2805 419 2612 260 conicto
|
||||
2420 102 2139 19 conicto
|
||||
1858 -64 1499 -64 conicto
|
||||
1184 -64 888 -26 conicto
|
||||
593 12 355 71 conicto
|
||||
320 960 lineto
|
||||
531 960 lineto
|
||||
674 363 lineto
|
||||
732 332 824 300 conicto
|
||||
917 268 1023 244 conicto
|
||||
1130 221 1243 206 conicto
|
||||
1357 192 1453 192 conicto
|
||||
1749 192 1939 266 conicto
|
||||
2129 340 2239 474 conicto
|
||||
2349 608 2390 793 conicto
|
||||
2432 978 2432 1197 conicto
|
||||
2432 1448 2362 1614 conicto
|
||||
2293 1780 2171 1881 conicto
|
||||
2050 1983 1887 2030 conicto
|
||||
1725 2077 1539 2086 conicto
|
||||
1088 2112 lineto
|
||||
1088 2368 lineto
|
||||
1541 2397 lineto
|
||||
1898 2417 2069 2625 conicto
|
||||
2240 2833 2240 3256 conicto
|
||||
2240 3468 2196 3626 conicto
|
||||
2153 3784 2060 3888 conicto
|
||||
1968 3992 1818 4044 conicto
|
||||
1669 4096 1455 4096 conicto
|
||||
1358 4096 1260 4081 conicto
|
||||
1163 4067 1073 4042 conicto
|
||||
983 4018 906 3987 conicto
|
||||
829 3956 772 3924 conicto
|
||||
660 3392 lineto
|
||||
448 3392 lineto
|
||||
448 4215 lineto
|
||||
559 4244 670 4269 conicto
|
||||
782 4295 903 4312 conicto
|
||||
1024 4330 1157 4341 conicto
|
||||
1291 4352 1447 4352 conicto
|
||||
2119 4352 2467 4091 conicto
|
||||
2816 3830 2816 3289 conicto
|
||||
2816 3086 2762 2910 conicto
|
||||
2709 2735 2595 2600 conicto
|
||||
2482 2465 2307 2373 conicto
|
||||
2133 2281 1894 2246 conicto
|
||||
2467 2179 2737 1912 conicto
|
||||
3008 1645 3008 1168 conicto
|
||||
end_ol grestore
|
||||
gsave 15.362500 42.131900 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2192 4735 moveto
|
||||
2307 4814 2445 4885 conicto
|
||||
2583 4957 2747 5007 conicto
|
||||
2912 5057 3110 5088 conicto
|
||||
3309 5120 3549 5120 conicto
|
||||
4571 5120 5069 4507 conicto
|
||||
5568 3895 5568 2573 conicto
|
||||
5568 1966 5435 1468 conicto
|
||||
5302 970 5025 615 conicto
|
||||
4749 261 4326 66 conicto
|
||||
3904 -128 3325 -128 conicto
|
||||
3043 -128 2772 -93 conicto
|
||||
2501 -59 2208 15 conicto
|
||||
2213 -43 2221 -144 conicto
|
||||
2229 -245 2231 -359 conicto
|
||||
2234 -473 2237 -581 conicto
|
||||
2240 -690 2240 -769 conicto
|
||||
2240 -1856 lineto
|
||||
2968 -1975 lineto
|
||||
2968 -2304 lineto
|
||||
166 -2304 lineto
|
||||
166 -1975 lineto
|
||||
704 -1856 lineto
|
||||
704 4544 lineto
|
||||
160 4663 lineto
|
||||
160 4992 lineto
|
||||
2181 4992 lineto
|
||||
2192 4735 lineto
|
||||
4032 2549 moveto
|
||||
4032 3131 3959 3517 conicto
|
||||
3887 3904 3762 4130 conicto
|
||||
3637 4357 3473 4450 conicto
|
||||
3310 4544 3128 4544 conicto
|
||||
2863 4544 2637 4485 conicto
|
||||
2411 4427 2240 4341 conicto
|
||||
2240 560 lineto
|
||||
2661 448 3118 448 conicto
|
||||
3585 448 3808 976 conicto
|
||||
4032 1504 4032 2549 conicto
|
||||
end_ol grestore
|
||||
gsave 16.175000 42.326900 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2880 0 moveto
|
||||
256 0 lineto
|
||||
256 490 lineto
|
||||
587 785 863 1019 conicto
|
||||
1140 1253 1361 1455 conicto
|
||||
1582 1658 1747 1843 conicto
|
||||
1913 2029 2022 2230 conicto
|
||||
2132 2431 2186 2663 conicto
|
||||
2240 2896 2240 3188 conicto
|
||||
2240 3600 2045 3816 conicto
|
||||
1850 4032 1406 4032 conicto
|
||||
1307 4032 1209 4017 conicto
|
||||
1112 4003 1022 3978 conicto
|
||||
933 3954 855 3923 conicto
|
||||
778 3892 718 3860 conicto
|
||||
602 3328 lineto
|
||||
384 3328 lineto
|
||||
384 4151 lineto
|
||||
630 4208 868 4248 conicto
|
||||
1107 4288 1386 4288 conicto
|
||||
2099 4288 2457 4000 conicto
|
||||
2816 3713 2816 3189 conicto
|
||||
2816 2931 2746 2711 conicto
|
||||
2677 2491 2548 2288 conicto
|
||||
2419 2086 2232 1889 conicto
|
||||
2045 1693 1806 1482 conicto
|
||||
1567 1272 1281 1035 conicto
|
||||
996 798 673 512 conicto
|
||||
2880 512 lineto
|
||||
2880 0 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
0.498039 0.498039 0.498039 srgb
|
||||
n 16.004300 40.965000 0.212500 0.212500 0 360 ellipse f
|
||||
n 16.004300 40.965000 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 16.004300 40.965000 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
gsave 6.952130 29.192500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
4051 3625 moveto
|
||||
4051 3767 3824 3984 conicto
|
||||
3597 4201 3597 4430 conicto
|
||||
3597 4604 3705 4702 conicto
|
||||
3813 4800 3997 4800 conicto
|
||||
4245 4800 4423 4609 conicto
|
||||
4602 4419 4602 4159 conicto
|
||||
4602 3854 4413 3381 conicto
|
||||
4224 2908 3943 2505 conicto
|
||||
3111 1331 2441 569 conicto
|
||||
1772 -192 1566 -192 conicto
|
||||
1469 -192 1469 189 conicto
|
||||
1469 656 1393 1651 conicto
|
||||
1318 2647 1231 3212 conicto
|
||||
1123 3962 993 4179 conicto
|
||||
864 4397 551 4397 conicto
|
||||
346 4397 227 4386 conicto
|
||||
227 4528 lineto
|
||||
605 4593 886 4647 conicto
|
||||
1167 4702 1275 4734 conicto
|
||||
1383 4767 1469 4783 conicto
|
||||
1555 4800 1642 4800 conicto
|
||||
1815 4800 1993 3516 conicto
|
||||
2171 2233 2236 765 conicto
|
||||
2571 1113 lineto
|
||||
3143 1722 3597 2488 conicto
|
||||
4051 3255 4051 3625 conicto
|
||||
end_ol grestore
|
||||
gsave 7.544069 29.192500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
961 4414 moveto
|
||||
605 4414 lineto
|
||||
583 4570 lineto
|
||||
2247 4800 2268 4800 conicto
|
||||
2322 4800 2322 4758 conicto
|
||||
1977 3589 lineto
|
||||
2452 4243 2873 4521 conicto
|
||||
3295 4800 3824 4800 conicto
|
||||
4396 4800 4731 4434 conicto
|
||||
5066 4069 5066 3437 conicto
|
||||
5066 2140 4034 1006 conicto
|
||||
3003 -128 1826 -128 conicto
|
||||
1469 -128 1113 77 conicto
|
||||
713 -1429 713 -1747 conicto
|
||||
713 -2077 1404 -2077 conicto
|
||||
1404 -2240 lineto
|
||||
-810 -2240 lineto
|
||||
-810 -2066 lineto
|
||||
-670 -2066 -583 -2049 conicto
|
||||
-497 -2033 -410 -1983 conicto
|
||||
-324 -1934 -281 -1874 conicto
|
||||
-238 -1815 -173 -1678 conicto
|
||||
-108 -1542 -70 -1405 conicto
|
||||
-32 -1269 32 -1006 conicto
|
||||
97 -744 156 -487 conicto
|
||||
216 -231 324 190 conicto
|
||||
432 611 540 1026 conicto
|
||||
1307 3955 1307 4119 conicto
|
||||
1307 4217 1188 4315 conicto
|
||||
1069 4414 961 4414 conicto
|
||||
4094 3415 moveto
|
||||
4094 4352 3381 4352 conicto
|
||||
2981 4352 2576 3997 conicto
|
||||
2171 3643 1966 3109 conicto
|
||||
1728 2498 1496 1637 conicto
|
||||
1264 777 1264 505 conicto
|
||||
1264 330 1409 215 conicto
|
||||
1555 101 1782 101 conicto
|
||||
2430 101 2986 690 conicto
|
||||
3543 1279 3818 2030 conicto
|
||||
4094 2782 4094 3415 conicto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 8.527300 25.974100 0.212500 0.212500 0 360 ellipse f
|
||||
n 8.527300 25.974100 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 8.527300 25.974100 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
0.000000 0.000000 1.000000 srgb
|
||||
n 8.535020 33.507400 0.212500 0.212500 0 360 ellipse f
|
||||
n 8.535020 33.507400 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 8.535020 33.507400 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
1.000000 0.647059 0.000000 srgb
|
||||
n 12.697400 29.723400 0.212500 0.212500 0 360 ellipse f
|
||||
n 12.697400 29.723400 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 12.697400 29.723400 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
0.000000 1.000000 0.000000 srgb
|
||||
n 4.414640 29.723400 0.212500 0.212500 0 360 ellipse f
|
||||
n 4.414640 29.723400 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 4.414640 29.723400 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.627451 0.125490 0.941176 srgb
|
||||
n 19.039466 29.790700 m 26.353334 29.790700 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 19.427663 29.540700 m 18.927663 29.790700 l 19.427663 30.040700 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 25.965137 30.040700 m 26.465137 29.790700 l 25.965137 29.540700 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 22.668096 26.527090 m 22.674804 33.089010 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 22.918493 26.915031 m 22.667982 26.415287 l 22.418493 26.915542 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 22.424407 32.701069 m 22.674918 33.200813 l 22.924407 32.700558 l s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
gsave 20.738000 29.259800 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
4051 3625 moveto
|
||||
4051 3767 3824 3984 conicto
|
||||
3597 4201 3597 4430 conicto
|
||||
3597 4604 3705 4702 conicto
|
||||
3813 4800 3997 4800 conicto
|
||||
4245 4800 4423 4609 conicto
|
||||
4602 4419 4602 4159 conicto
|
||||
4602 3854 4413 3381 conicto
|
||||
4224 2908 3943 2505 conicto
|
||||
3111 1331 2441 569 conicto
|
||||
1772 -192 1566 -192 conicto
|
||||
1469 -192 1469 189 conicto
|
||||
1469 656 1393 1651 conicto
|
||||
1318 2647 1231 3212 conicto
|
||||
1123 3962 993 4179 conicto
|
||||
864 4397 551 4397 conicto
|
||||
346 4397 227 4386 conicto
|
||||
227 4528 lineto
|
||||
605 4593 886 4647 conicto
|
||||
1167 4702 1275 4734 conicto
|
||||
1383 4767 1469 4783 conicto
|
||||
1555 4800 1642 4800 conicto
|
||||
1815 4800 1993 3516 conicto
|
||||
2171 2233 2236 765 conicto
|
||||
2571 1113 lineto
|
||||
3143 1722 3597 2488 conicto
|
||||
4051 3255 4051 3625 conicto
|
||||
end_ol grestore
|
||||
gsave 21.329939 29.259800 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
961 4414 moveto
|
||||
605 4414 lineto
|
||||
583 4570 lineto
|
||||
2247 4800 2268 4800 conicto
|
||||
2322 4800 2322 4758 conicto
|
||||
1977 3589 lineto
|
||||
2452 4243 2873 4521 conicto
|
||||
3295 4800 3824 4800 conicto
|
||||
4396 4800 4731 4434 conicto
|
||||
5066 4069 5066 3437 conicto
|
||||
5066 2140 4034 1006 conicto
|
||||
3003 -128 1826 -128 conicto
|
||||
1469 -128 1113 77 conicto
|
||||
713 -1429 713 -1747 conicto
|
||||
713 -2077 1404 -2077 conicto
|
||||
1404 -2240 lineto
|
||||
-810 -2240 lineto
|
||||
-810 -2066 lineto
|
||||
-670 -2066 -583 -2049 conicto
|
||||
-497 -2033 -410 -1983 conicto
|
||||
-324 -1934 -281 -1874 conicto
|
||||
-238 -1815 -173 -1678 conicto
|
||||
-108 -1542 -70 -1405 conicto
|
||||
-32 -1269 32 -1006 conicto
|
||||
97 -744 156 -487 conicto
|
||||
216 -231 324 190 conicto
|
||||
432 611 540 1026 conicto
|
||||
1307 3955 1307 4119 conicto
|
||||
1307 4217 1188 4315 conicto
|
||||
1069 4414 961 4414 conicto
|
||||
4094 3415 moveto
|
||||
4094 4352 3381 4352 conicto
|
||||
2981 4352 2576 3997 conicto
|
||||
2171 3643 1966 3109 conicto
|
||||
1728 2498 1496 1637 conicto
|
||||
1264 777 1264 505 conicto
|
||||
1264 330 1409 215 conicto
|
||||
1555 101 1782 101 conicto
|
||||
2430 101 2986 690 conicto
|
||||
3543 1279 3818 2030 conicto
|
||||
4094 2782 4094 3415 conicto
|
||||
end_ol grestore
|
||||
gsave 22.044264 29.259800 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1426 4608 moveto
|
||||
1566 6342 1653 6678 conicto
|
||||
1880 7220 2258 7264 conicto
|
||||
2398 7264 2500 7171 conicto
|
||||
2603 7079 2603 6949 conicto
|
||||
2603 6678 1653 4608 conicto
|
||||
1426 4608 lineto
|
||||
end_ol grestore
|
||||
gsave 22.348974 29.259800 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 22.667600 26.041400 0.212500 0.212500 0 360 ellipse f
|
||||
n 22.667600 26.041400 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 22.667600 26.041400 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
0.000000 0.000000 1.000000 srgb
|
||||
n 22.675300 33.574700 0.212500 0.212500 0 360 ellipse f
|
||||
n 22.675300 33.574700 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 22.675300 33.574700 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
1.000000 0.647059 0.000000 srgb
|
||||
n 26.837800 29.790700 0.212500 0.212500 0 360 ellipse f
|
||||
n 26.837800 29.790700 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 26.837800 29.790700 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
0.000000 1.000000 0.000000 srgb
|
||||
n 18.555000 29.790700 0.212500 0.212500 0 360 ellipse f
|
||||
n 18.555000 29.790700 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 18.555000 29.790700 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.000000 0.882353 0.894118 srgb
|
||||
n 9.800000 27.800000 m 21.163201 27.752054 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 21.538198 27.750472 m 21.039257 28.002579 l 21.163201 27.752054 l 21.037147 27.502584 l ef
|
||||
n 21.538198 27.750472 m 21.039257 28.002579 l 21.163201 27.752054 l 21.037147 27.502584 l cp s
|
||||
gsave 15.550000 27.300000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2333 -128 moveto
|
||||
1934 -128 1649 -32 conicto
|
||||
1364 63 1183 230 conicto
|
||||
1002 398 917 628 conicto
|
||||
832 859 832 1130 conicto
|
||||
832 4416 lineto
|
||||
182 4416 lineto
|
||||
182 4776 lineto
|
||||
948 4992 lineto
|
||||
1570 6144 lineto
|
||||
2368 6144 lineto
|
||||
2368 4992 lineto
|
||||
3414 4992 lineto
|
||||
3414 4416 lineto
|
||||
2368 4416 lineto
|
||||
2368 1211 lineto
|
||||
2368 864 2512 688 conicto
|
||||
2656 512 2891 512 conicto
|
||||
3072 512 3250 538 conicto
|
||||
3429 565 3584 597 conicto
|
||||
3584 163 lineto
|
||||
3509 110 3365 57 conicto
|
||||
3222 4 3049 -35 conicto
|
||||
2876 -75 2687 -101 conicto
|
||||
2498 -128 2333 -128 conicto
|
||||
end_ol grestore
|
||||
showpage
|
||||
BIN
thirdparty/opengv/doc/addons/images/nonoverlapping.pdf
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/nonoverlapping.png
vendored
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
thirdparty/opengv/doc/addons/images/point_cloud.dia
vendored
Normal file
951
thirdparty/opengv/doc/addons/images/point_cloud.eps
vendored
Normal file
@@ -0,0 +1,951 @@
|
||||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: /home/laurent/ldevel/geometric_vision/doc/addons/images/point_cloud.dia
|
||||
%%Creator: Dia v0.97.2
|
||||
%%CreationDate: Mon Aug 12 12:08:58 2013
|
||||
%%For: laurent
|
||||
%%Orientation: Portrait
|
||||
%%Magnification: 1.0000
|
||||
%%BoundingBox: 0 0 638 717
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
|
||||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
|
||||
/two /three /four /five /six /seven /eight /nine /colon /semicolon
|
||||
/less /equal /greater /question /at /A /B /C /D /E
|
||||
/F /G /H /I /J /K /L /M /N /O
|
||||
/P /Q /R /S /T /U /V /W /X /Y
|
||||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
|
||||
/d /e /f /g /h /i /j /k /l /m
|
||||
/n /o /p /q /r /s /t /u /v /w
|
||||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
|
||||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior
|
||||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf
|
||||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde
|
||||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex
|
||||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring
|
||||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
|
||||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def
|
||||
/cp {closepath} bind def
|
||||
/c {curveto} bind def
|
||||
/f {fill} bind def
|
||||
/a {arc} bind def
|
||||
/ef {eofill} bind def
|
||||
/ex {exch} bind def
|
||||
/gr {grestore} bind def
|
||||
/gs {gsave} bind def
|
||||
/sa {save} bind def
|
||||
/rs {restore} bind def
|
||||
/l {lineto} bind def
|
||||
/m {moveto} bind def
|
||||
/rm {rmoveto} bind def
|
||||
/n {newpath} bind def
|
||||
/s {stroke} bind def
|
||||
/sh {show} bind def
|
||||
/slc {setlinecap} bind def
|
||||
/slj {setlinejoin} bind def
|
||||
/slw {setlinewidth} bind def
|
||||
/srgb {setrgbcolor} bind def
|
||||
/rot {rotate} bind def
|
||||
/sc {scale} bind def
|
||||
/sd {setdash} bind def
|
||||
/ff {findfont} bind def
|
||||
/sf {setfont} bind def
|
||||
/scf {scalefont} bind def
|
||||
/sw {stringwidth pop} bind def
|
||||
/tr {translate} bind def
|
||||
|
||||
/ellipsedict 8 dict def
|
||||
ellipsedict /mtrx matrix put
|
||||
/ellipse
|
||||
{ ellipsedict begin
|
||||
/endangle exch def
|
||||
/startangle exch def
|
||||
/yrad exch def
|
||||
/xrad exch def
|
||||
/y exch def
|
||||
/x exch def /savematrix mtrx currentmatrix def
|
||||
x y tr xrad yrad sc
|
||||
0 0 1 startangle endangle arc
|
||||
savematrix setmatrix
|
||||
end
|
||||
} def
|
||||
|
||||
/mergeprocs {
|
||||
dup length
|
||||
3 -1 roll
|
||||
dup
|
||||
length
|
||||
dup
|
||||
5 1 roll
|
||||
3 -1 roll
|
||||
add
|
||||
array cvx
|
||||
dup
|
||||
3 -1 roll
|
||||
0 exch
|
||||
putinterval
|
||||
dup
|
||||
4 2 roll
|
||||
putinterval
|
||||
} bind def
|
||||
/dpi_x 300 def
|
||||
/dpi_y 300 def
|
||||
/conicto {
|
||||
/to_y exch def
|
||||
/to_x exch def
|
||||
/conic_cntrl_y exch def
|
||||
/conic_cntrl_x exch def
|
||||
currentpoint
|
||||
/p0_y exch def
|
||||
/p0_x exch def
|
||||
/p1_x p0_x conic_cntrl_x p0_x sub 2 3 div mul add def
|
||||
/p1_y p0_y conic_cntrl_y p0_y sub 2 3 div mul add def
|
||||
/p2_x p1_x to_x p0_x sub 1 3 div mul add def
|
||||
/p2_y p1_y to_y p0_y sub 1 3 div mul add def
|
||||
p1_x p1_y p2_x p2_y to_x to_y curveto
|
||||
} bind def
|
||||
/start_ol { gsave 1.1 dpi_x div dup scale} bind def
|
||||
/end_ol { closepath fill grestore } bind def
|
||||
28.346000 -28.346000 scale
|
||||
-9.888385 -31.647700 translate
|
||||
%%EndProlog
|
||||
|
||||
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 22.640200 30.396000 0.212500 0.212500 0 360 ellipse f
|
||||
n 22.640200 30.396000 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 22.640200 30.396000 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 15.902900 28.523300 0.212500 0.212500 0 360 ellipse f
|
||||
n 15.902900 28.523300 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 15.902900 28.523300 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 19.603100 18.049700 0.212500 0.212500 0 360 ellipse f
|
||||
n 19.603100 18.049700 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 19.603100 18.049700 0.212500 0.212500 0 360 ellipse cp s
|
||||
gsave 16.205400 29.774000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2192 4735 moveto
|
||||
2307 4814 2445 4885 conicto
|
||||
2583 4957 2747 5007 conicto
|
||||
2912 5057 3110 5088 conicto
|
||||
3309 5120 3549 5120 conicto
|
||||
4571 5120 5069 4507 conicto
|
||||
5568 3895 5568 2573 conicto
|
||||
5568 1966 5435 1468 conicto
|
||||
5302 970 5025 615 conicto
|
||||
4749 261 4326 66 conicto
|
||||
3904 -128 3325 -128 conicto
|
||||
3043 -128 2772 -93 conicto
|
||||
2501 -59 2208 15 conicto
|
||||
2213 -43 2221 -144 conicto
|
||||
2229 -245 2231 -359 conicto
|
||||
2234 -473 2237 -581 conicto
|
||||
2240 -690 2240 -769 conicto
|
||||
2240 -1856 lineto
|
||||
2968 -1975 lineto
|
||||
2968 -2304 lineto
|
||||
166 -2304 lineto
|
||||
166 -1975 lineto
|
||||
704 -1856 lineto
|
||||
704 4544 lineto
|
||||
160 4663 lineto
|
||||
160 4992 lineto
|
||||
2181 4992 lineto
|
||||
2192 4735 lineto
|
||||
4032 2549 moveto
|
||||
4032 3131 3959 3517 conicto
|
||||
3887 3904 3762 4130 conicto
|
||||
3637 4357 3473 4450 conicto
|
||||
3310 4544 3128 4544 conicto
|
||||
2863 4544 2637 4485 conicto
|
||||
2411 4427 2240 4341 conicto
|
||||
2240 560 lineto
|
||||
2661 448 3118 448 conicto
|
||||
3585 448 3808 976 conicto
|
||||
4032 1504 4032 2549 conicto
|
||||
end_ol grestore
|
||||
gsave 23.205600 31.135200 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2192 4735 moveto
|
||||
2307 4814 2445 4885 conicto
|
||||
2583 4957 2747 5007 conicto
|
||||
2912 5057 3110 5088 conicto
|
||||
3309 5120 3549 5120 conicto
|
||||
4571 5120 5069 4507 conicto
|
||||
5568 3895 5568 2573 conicto
|
||||
5568 1966 5435 1468 conicto
|
||||
5302 970 5025 615 conicto
|
||||
4749 261 4326 66 conicto
|
||||
3904 -128 3325 -128 conicto
|
||||
3043 -128 2772 -93 conicto
|
||||
2501 -59 2208 15 conicto
|
||||
2213 -43 2221 -144 conicto
|
||||
2229 -245 2231 -359 conicto
|
||||
2234 -473 2237 -581 conicto
|
||||
2240 -690 2240 -769 conicto
|
||||
2240 -1856 lineto
|
||||
2968 -1975 lineto
|
||||
2968 -2304 lineto
|
||||
166 -2304 lineto
|
||||
166 -1975 lineto
|
||||
704 -1856 lineto
|
||||
704 4544 lineto
|
||||
160 4663 lineto
|
||||
160 4992 lineto
|
||||
2181 4992 lineto
|
||||
2192 4735 lineto
|
||||
4032 2549 moveto
|
||||
4032 3131 3959 3517 conicto
|
||||
3887 3904 3762 4130 conicto
|
||||
3637 4357 3473 4450 conicto
|
||||
3310 4544 3128 4544 conicto
|
||||
2863 4544 2637 4485 conicto
|
||||
2411 4427 2240 4341 conicto
|
||||
2240 560 lineto
|
||||
2661 448 3118 448 conicto
|
||||
3585 448 3808 976 conicto
|
||||
4032 1504 4032 2549 conicto
|
||||
end_ol grestore
|
||||
gsave 17.017900 29.969000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2048 256 moveto
|
||||
2921 170 lineto
|
||||
2921 0 lineto
|
||||
596 0 lineto
|
||||
596 170 lineto
|
||||
1472 256 lineto
|
||||
1472 3701 lineto
|
||||
609 3392 lineto
|
||||
609 3565 lineto
|
||||
1874 4288 lineto
|
||||
2048 4288 lineto
|
||||
2048 256 lineto
|
||||
end_ol grestore
|
||||
gsave 24.030600 31.460200 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2880 0 moveto
|
||||
256 0 lineto
|
||||
256 490 lineto
|
||||
587 785 863 1019 conicto
|
||||
1140 1253 1361 1455 conicto
|
||||
1582 1658 1747 1843 conicto
|
||||
1913 2029 2022 2230 conicto
|
||||
2132 2431 2186 2663 conicto
|
||||
2240 2896 2240 3188 conicto
|
||||
2240 3600 2045 3816 conicto
|
||||
1850 4032 1406 4032 conicto
|
||||
1307 4032 1209 4017 conicto
|
||||
1112 4003 1022 3978 conicto
|
||||
933 3954 855 3923 conicto
|
||||
778 3892 718 3860 conicto
|
||||
602 3328 lineto
|
||||
384 3328 lineto
|
||||
384 4151 lineto
|
||||
630 4208 868 4248 conicto
|
||||
1107 4288 1386 4288 conicto
|
||||
2099 4288 2457 4000 conicto
|
||||
2816 3713 2816 3189 conicto
|
||||
2816 2931 2746 2711 conicto
|
||||
2677 2491 2548 2288 conicto
|
||||
2419 2086 2232 1889 conicto
|
||||
2045 1693 1806 1482 conicto
|
||||
1567 1272 1281 1035 conicto
|
||||
996 798 673 512 conicto
|
||||
2880 512 lineto
|
||||
2880 0 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
0.000000 0.000000 1.000000 srgb
|
||||
n 16.144970 36.373257 27.246708 27.246708 268.639210 301.183774 ellipse s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 15.877903 8.871040 m 15.386146 9.136888 l 15.893879 9.370784 l s
|
||||
gsave 20.878100 8.878440 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2752 3008 moveto
|
||||
2752 512 lineto
|
||||
3660 374 lineto
|
||||
3660 0 lineto
|
||||
249 0 lineto
|
||||
249 374 lineto
|
||||
1088 512 lineto
|
||||
1088 6592 lineto
|
||||
180 6726 lineto
|
||||
180 7104 lineto
|
||||
3559 7104 lineto
|
||||
4444 7104 5039 6958 conicto
|
||||
5634 6813 5992 6550 conicto
|
||||
6350 6288 6503 5922 conicto
|
||||
6656 5557 6656 5117 conicto
|
||||
6656 4783 6582 4481 conicto
|
||||
6508 4179 6342 3924 conicto
|
||||
6176 3670 5905 3474 conicto
|
||||
5634 3278 5233 3156 conicto
|
||||
7113 512 lineto
|
||||
7872 374 lineto
|
||||
7872 0 lineto
|
||||
5580 0 lineto
|
||||
3599 3008 lineto
|
||||
2752 3008 lineto
|
||||
4992 5107 moveto
|
||||
4992 5532 4908 5806 conicto
|
||||
4825 6081 4642 6240 conicto
|
||||
4459 6400 4172 6464 conicto
|
||||
3885 6528 3483 6528 conicto
|
||||
2752 6528 lineto
|
||||
2752 3584 lineto
|
||||
3509 3584 lineto
|
||||
3922 3584 4206 3669 conicto
|
||||
4491 3754 4666 3938 conicto
|
||||
4841 4122 4916 4409 conicto
|
||||
4992 4697 4992 5107 conicto
|
||||
end_ol grestore
|
||||
gsave 21.909636 8.878440 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
end_ol grestore
|
||||
gsave 22.266799 8.878440 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
end_ol grestore
|
||||
gsave 22.623961 8.878440 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
5568 2880 moveto
|
||||
5568 2112 lineto
|
||||
512 2112 lineto
|
||||
512 2880 lineto
|
||||
5568 2880 lineto
|
||||
5568 5056 moveto
|
||||
5568 4288 lineto
|
||||
512 4288 lineto
|
||||
512 5056 lineto
|
||||
5568 5056 lineto
|
||||
end_ol grestore
|
||||
gsave 23.438200 8.878440 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2333 -128 moveto
|
||||
2151 -128 1991 -60 conicto
|
||||
1832 7 1717 124 conicto
|
||||
1603 242 1537 398 conicto
|
||||
1472 554 1472 736 conicto
|
||||
1472 913 1537 1071 conicto
|
||||
1603 1230 1717 1347 conicto
|
||||
1832 1465 1991 1532 conicto
|
||||
2151 1600 2333 1600 conicto
|
||||
2516 1600 2672 1532 conicto
|
||||
2829 1465 2946 1347 conicto
|
||||
3064 1230 3132 1071 conicto
|
||||
3200 913 3200 736 conicto
|
||||
3200 554 3132 398 conicto
|
||||
3064 242 2946 124 conicto
|
||||
2829 7 2672 -60 conicto
|
||||
2516 -128 2333 -128 conicto
|
||||
2624 2048 moveto
|
||||
2048 2048 lineto
|
||||
1747 3712 lineto
|
||||
2258 3846 lineto
|
||||
2462 3899 2645 3987 conicto
|
||||
2828 4075 2965 4235 conicto
|
||||
3103 4396 3183 4644 conicto
|
||||
3264 4893 3264 5267 conicto
|
||||
3264 5641 3198 5905 conicto
|
||||
3133 6170 2994 6338 conicto
|
||||
2856 6506 2644 6581 conicto
|
||||
2432 6656 2132 6656 conicto
|
||||
1871 6656 1672 6591 conicto
|
||||
1474 6526 1322 6428 conicto
|
||||
1088 5376 lineto
|
||||
640 5376 lineto
|
||||
640 6940 lineto
|
||||
1052 7046 1466 7107 conicto
|
||||
1881 7168 2372 7168 conicto
|
||||
3576 7168 4188 6701 conicto
|
||||
4800 6234 4800 5294 conicto
|
||||
4800 4941 4704 4619 conicto
|
||||
4609 4297 4413 4033 conicto
|
||||
4218 3769 3921 3571 conicto
|
||||
3625 3373 3228 3263 conicto
|
||||
2767 3136 lineto
|
||||
2624 2048 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 31.055400 13.988800 m 22.982037 29.729517 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 22.810898 30.063189 m 22.816636 29.504201 l 22.982037 29.729517 l 23.261531 29.732386 l ef
|
||||
n 22.810898 30.063189 m 22.816636 29.504201 l 22.982037 29.729517 l 23.261531 29.732386 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 31.055400 13.988800 m 16.443340 28.004902 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 16.172714 28.264490 m 16.360490 27.737954 l 16.443340 28.004902 l 16.706608 28.098790 l ef
|
||||
n 16.172714 28.264490 m 16.360490 27.737954 l 16.443340 28.004902 l 16.706608 28.098790 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 31.005400 14.013800 m 20.308368 17.800067 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 19.954859 17.925193 m 20.342787 17.522686 l 20.308368 17.800067 l 20.509622 17.994031 l ef
|
||||
n 19.954859 17.925193 m 20.342787 17.522686 l 20.308368 17.800067 l 20.509622 17.994031 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0 slj
|
||||
0.100000 slw
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
0.678431 0.678431 0.678431 srgb
|
||||
n 12.847500 23.762500 0.212500 0.212500 0 360 ellipse f
|
||||
n 12.847500 23.762500 0.212500 0.212500 0 360 ellipse cp s
|
||||
0 slc
|
||||
0 slj
|
||||
[] 0 sd
|
||||
n 12.847500 23.762500 0.212500 0.212500 0 360 ellipse cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
gsave 18.885800 19.165300 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2192 4735 moveto
|
||||
2307 4814 2445 4885 conicto
|
||||
2583 4957 2747 5007 conicto
|
||||
2912 5057 3110 5088 conicto
|
||||
3309 5120 3549 5120 conicto
|
||||
4571 5120 5069 4507 conicto
|
||||
5568 3895 5568 2573 conicto
|
||||
5568 1966 5435 1468 conicto
|
||||
5302 970 5025 615 conicto
|
||||
4749 261 4326 66 conicto
|
||||
3904 -128 3325 -128 conicto
|
||||
3043 -128 2772 -93 conicto
|
||||
2501 -59 2208 15 conicto
|
||||
2213 -43 2221 -144 conicto
|
||||
2229 -245 2231 -359 conicto
|
||||
2234 -473 2237 -581 conicto
|
||||
2240 -690 2240 -769 conicto
|
||||
2240 -1856 lineto
|
||||
2968 -1975 lineto
|
||||
2968 -2304 lineto
|
||||
166 -2304 lineto
|
||||
166 -1975 lineto
|
||||
704 -1856 lineto
|
||||
704 4544 lineto
|
||||
160 4663 lineto
|
||||
160 4992 lineto
|
||||
2181 4992 lineto
|
||||
2192 4735 lineto
|
||||
4032 2549 moveto
|
||||
4032 3131 3959 3517 conicto
|
||||
3887 3904 3762 4130 conicto
|
||||
3637 4357 3473 4450 conicto
|
||||
3310 4544 3128 4544 conicto
|
||||
2863 4544 2637 4485 conicto
|
||||
2411 4427 2240 4341 conicto
|
||||
2240 560 lineto
|
||||
2661 448 3118 448 conicto
|
||||
3585 448 3808 976 conicto
|
||||
4032 1504 4032 2549 conicto
|
||||
end_ol grestore
|
||||
gsave 19.698300 19.360300 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1018 2750 moveto
|
||||
1109 2801 1233 2858 conicto
|
||||
1358 2916 1494 2963 conicto
|
||||
1630 3011 1766 3041 conicto
|
||||
1902 3072 2019 3072 conicto
|
||||
2194 3072 2340 3025 conicto
|
||||
2486 2978 2591 2874 conicto
|
||||
2696 2770 2756 2603 conicto
|
||||
2816 2436 2816 2200 conicto
|
||||
2816 256 lineto
|
||||
3179 165 lineto
|
||||
3179 0 lineto
|
||||
1905 0 lineto
|
||||
1905 165 lineto
|
||||
2304 256 lineto
|
||||
2304 2132 lineto
|
||||
2304 2391 2170 2539 conicto
|
||||
2036 2688 1755 2688 conicto
|
||||
1662 2688 1559 2679 conicto
|
||||
1457 2671 1358 2660 conicto
|
||||
1259 2649 1171 2633 conicto
|
||||
1084 2618 1024 2607 conicto
|
||||
1024 256 lineto
|
||||
1429 165 lineto
|
||||
1429 0 lineto
|
||||
152 0 lineto
|
||||
152 165 lineto
|
||||
512 256 lineto
|
||||
512 2752 lineto
|
||||
152 2843 lineto
|
||||
152 3008 lineto
|
||||
990 3008 lineto
|
||||
1018 2750 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 11.550000 9.150000 m 19.068799 17.684431 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 19.316692 17.965809 m 18.798582 17.755900 l 19.068799 17.684431 l 19.173754 17.425376 l ef
|
||||
n 19.316692 17.965809 m 18.798582 17.755900 l 19.068799 17.684431 l 19.173754 17.425376 l cp s
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
n 11.600000 9.150000 m 12.805485 23.065013 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 12.837850 23.438614 m 12.545629 22.962057 l 12.805485 23.065013 l 13.043763 22.918902 l ef
|
||||
n 12.837850 23.438614 m 12.545629 22.962057 l 12.805485 23.065013 l 13.043763 22.918902 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 11.550000 9.100000 m 22.413575 29.752665 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 22.588151 30.084551 m 22.134126 29.758421 l 22.413575 29.752665 l 22.576640 29.525652 l ef
|
||||
n 22.588151 30.084551 m 22.134126 29.758421 l 22.413575 29.752665 l 22.576640 29.525652 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 11.600000 9.150000 m 15.796236 27.835826 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 15.878403 28.201713 m 15.524922 27.768641 l 15.796236 27.835826 l 16.012772 27.659086 l ef
|
||||
n 15.878403 28.201713 m 15.524922 27.768641 l 15.796236 27.835826 l 16.012772 27.659086 l cp s
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
n 31.000000 14.100000 m 13.488591 23.531660 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 13.158434 23.709483 m 13.480095 23.252281 l 13.488591 23.531660 l 13.717193 23.692491 l ef
|
||||
n 13.158434 23.709483 m 13.480095 23.252281 l 13.488591 23.531660 l 13.717193 23.692491 l cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
gsave 10.396600 9.752030 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3403 4571 moveto
|
||||
2755 4571 2247 4052 conicto
|
||||
1739 3533 1496 2839 conicto
|
||||
1253 2146 1253 1502 conicto
|
||||
1253 922 1512 589 conicto
|
||||
1772 256 2236 256 conicto
|
||||
2636 256 2987 458 conicto
|
||||
3338 660 3781 1141 conicto
|
||||
3954 1032 lineto
|
||||
3467 414 2992 143 conicto
|
||||
2517 -128 1912 -128 conicto
|
||||
1156 -128 740 302 conicto
|
||||
324 733 324 1508 conicto
|
||||
324 2783 1285 3791 conicto
|
||||
2247 4800 3457 4800 conicto
|
||||
3943 4800 4267 4549 conicto
|
||||
4591 4298 4591 3915 conicto
|
||||
4591 3708 4439 3560 conicto
|
||||
4288 3413 4072 3413 conicto
|
||||
3651 3413 3651 3828 conicto
|
||||
3651 3938 3732 4118 conicto
|
||||
3813 4298 3813 4352 conicto
|
||||
3813 4571 3403 4571 conicto
|
||||
end_ol grestore
|
||||
gsave 31.452300 14.099700 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3403 4571 moveto
|
||||
2755 4571 2247 4052 conicto
|
||||
1739 3533 1496 2839 conicto
|
||||
1253 2146 1253 1502 conicto
|
||||
1253 922 1512 589 conicto
|
||||
1772 256 2236 256 conicto
|
||||
2636 256 2987 458 conicto
|
||||
3338 660 3781 1141 conicto
|
||||
3954 1032 lineto
|
||||
3467 414 2992 143 conicto
|
||||
2517 -128 1912 -128 conicto
|
||||
1156 -128 740 302 conicto
|
||||
324 733 324 1508 conicto
|
||||
324 2783 1285 3791 conicto
|
||||
2247 4800 3457 4800 conicto
|
||||
3943 4800 4267 4549 conicto
|
||||
4591 4298 4591 3915 conicto
|
||||
4591 3708 4439 3560 conicto
|
||||
4288 3413 4072 3413 conicto
|
||||
3651 3413 3651 3828 conicto
|
||||
3651 3938 3732 4118 conicto
|
||||
3813 4298 3813 4352 conicto
|
||||
3813 4571 3403 4571 conicto
|
||||
end_ol grestore
|
||||
gsave 32.086705 14.099700 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1426 4608 moveto
|
||||
1566 6342 1653 6678 conicto
|
||||
1880 7220 2258 7264 conicto
|
||||
2398 7264 2500 7171 conicto
|
||||
2603 7079 2603 6949 conicto
|
||||
2603 6678 1653 4608 conicto
|
||||
1426 4608 lineto
|
||||
end_ol grestore
|
||||
0.000000 0.000000 1.000000 srgb
|
||||
gsave 21.982000 9.114540 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2060 2752 moveto
|
||||
1667 2752 1360 2444 conicto
|
||||
1053 2136 906 1724 conicto
|
||||
759 1313 759 931 conicto
|
||||
759 588 915 390 conicto
|
||||
1072 192 1354 192 conicto
|
||||
1596 192 1808 312 conicto
|
||||
2021 432 2289 717 conicto
|
||||
2393 652 lineto
|
||||
2099 271 1811 103 conicto
|
||||
1524 -64 1157 -64 conicto
|
||||
700 -64 448 194 conicto
|
||||
196 452 196 916 conicto
|
||||
196 1681 778 2285 conicto
|
||||
1360 2889 2092 2889 conicto
|
||||
2387 2889 2583 2739 conicto
|
||||
2779 2590 2779 2363 conicto
|
||||
2779 2240 2687 2152 conicto
|
||||
2596 2064 2465 2064 conicto
|
||||
2210 2064 2210 2311 conicto
|
||||
2210 2376 2259 2482 conicto
|
||||
2308 2589 2308 2622 conicto
|
||||
2308 2752 2060 2752 conicto
|
||||
end_ol grestore
|
||||
gsave 22.366638 9.114540 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
863 2752 moveto
|
||||
948 3797 1000 3999 conicto
|
||||
1138 4326 1367 4352 conicto
|
||||
1452 4352 1514 4296 conicto
|
||||
1576 4241 1576 4163 conicto
|
||||
1576 3999 1000 2752 conicto
|
||||
863 2752 lineto
|
||||
end_ol grestore
|
||||
gsave 21.982000 8.164540 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2060 2752 moveto
|
||||
1667 2752 1360 2444 conicto
|
||||
1053 2136 906 1724 conicto
|
||||
759 1313 759 931 conicto
|
||||
759 588 915 390 conicto
|
||||
1072 192 1354 192 conicto
|
||||
1596 192 1808 312 conicto
|
||||
2021 432 2289 717 conicto
|
||||
2393 652 lineto
|
||||
2099 271 1811 103 conicto
|
||||
1524 -64 1157 -64 conicto
|
||||
700 -64 448 194 conicto
|
||||
196 452 196 916 conicto
|
||||
196 1681 778 2285 conicto
|
||||
1360 2889 2092 2889 conicto
|
||||
2387 2889 2583 2739 conicto
|
||||
2779 2590 2779 2363 conicto
|
||||
2779 2240 2687 2152 conicto
|
||||
2596 2064 2465 2064 conicto
|
||||
2210 2064 2210 2311 conicto
|
||||
2210 2376 2259 2482 conicto
|
||||
2308 2589 2308 2622 conicto
|
||||
2308 2752 2060 2752 conicto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 31.042600 14.069300 m 30.205166 10.953816 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 30.107822 10.591671 m 30.479044 11.009635 l 30.205166 10.953816 l 29.996184 11.139427 l ef
|
||||
n 30.107822 10.591671 m 30.479044 11.009635 l 30.205166 10.953816 l 29.996184 11.139427 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 31.004100 13.992200 m 28.005745 14.758465 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 27.642422 14.851317 m 28.064952 14.485300 l 28.005745 14.758465 l 28.188754 14.969730 l ef
|
||||
n 27.642422 14.851317 m 28.064952 14.485300 l 28.005745 14.758465 l 28.188754 14.969730 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 31.042600 14.030800 m 30.748078 16.746934 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 30.707653 17.119748 m 30.513011 16.595711 l 30.748078 16.746934 l 31.010097 16.649613 l ef
|
||||
n 30.707653 17.119748 m 30.513011 16.595711 l 30.748078 16.746934 l 31.010097 16.649613 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 11.531800 9.101540 m 11.237279 11.817634 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 11.196853 12.190448 m 11.002212 11.666411 l 11.237279 11.817634 l 11.499298 11.720313 l ef
|
||||
n 11.196853 12.190448 m 11.002212 11.666411 l 11.237279 11.817634 l 11.499298 11.720313 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 11.578400 9.108040 m 14.063630 9.015972 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 14.438373 9.002089 m 13.947971 9.270428 l 14.063630 9.015972 l 13.929461 8.770771 l ef
|
||||
n 14.438373 9.002089 m 13.947971 9.270428 l 14.063630 9.015972 l 13.929461 8.770771 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 11.558900 9.106390 m 10.208691 6.866437 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 10.015098 6.545273 m 10.487332 6.844430 l 10.208691 6.866437 l 10.059113 7.102554 l ef
|
||||
n 10.015098 6.545273 m 10.487332 6.844430 l 10.208691 6.866437 l 10.059113 7.102554 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.117647 0.878431 1.000000 srgb
|
||||
n 11.564700 9.147620 m 30.813873 13.885359 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 30.377177 14.035338 m 30.922437 13.912080 l 30.496675 13.549827 l s
|
||||
gsave 19.557000 13.323000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2333 -128 moveto
|
||||
1934 -128 1649 -32 conicto
|
||||
1364 63 1183 230 conicto
|
||||
1002 398 917 628 conicto
|
||||
832 859 832 1130 conicto
|
||||
832 4416 lineto
|
||||
182 4416 lineto
|
||||
182 4776 lineto
|
||||
948 4992 lineto
|
||||
1570 6144 lineto
|
||||
2368 6144 lineto
|
||||
2368 4992 lineto
|
||||
3414 4992 lineto
|
||||
3414 4416 lineto
|
||||
2368 4416 lineto
|
||||
2368 1211 lineto
|
||||
2368 864 2512 688 conicto
|
||||
2656 512 2891 512 conicto
|
||||
3072 512 3250 538 conicto
|
||||
3429 565 3584 597 conicto
|
||||
3584 163 lineto
|
||||
3509 110 3365 57 conicto
|
||||
3222 4 3049 -35 conicto
|
||||
2876 -75 2687 -101 conicto
|
||||
2498 -128 2333 -128 conicto
|
||||
end_ol grestore
|
||||
gsave 20.034052 13.323000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
end_ol grestore
|
||||
gsave 20.391215 13.323000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
end_ol grestore
|
||||
gsave 20.748377 13.323000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
5568 2880 moveto
|
||||
5568 2112 lineto
|
||||
512 2112 lineto
|
||||
512 2880 lineto
|
||||
5568 2880 lineto
|
||||
5568 5056 moveto
|
||||
5568 4288 lineto
|
||||
512 4288 lineto
|
||||
512 5056 lineto
|
||||
5568 5056 lineto
|
||||
end_ol grestore
|
||||
gsave 21.562616 13.323000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2333 -128 moveto
|
||||
2151 -128 1991 -60 conicto
|
||||
1832 7 1717 124 conicto
|
||||
1603 242 1537 398 conicto
|
||||
1472 554 1472 736 conicto
|
||||
1472 913 1537 1071 conicto
|
||||
1603 1230 1717 1347 conicto
|
||||
1832 1465 1991 1532 conicto
|
||||
2151 1600 2333 1600 conicto
|
||||
2516 1600 2672 1532 conicto
|
||||
2829 1465 2946 1347 conicto
|
||||
3064 1230 3132 1071 conicto
|
||||
3200 913 3200 736 conicto
|
||||
3200 554 3132 398 conicto
|
||||
3064 242 2946 124 conicto
|
||||
2829 7 2672 -60 conicto
|
||||
2516 -128 2333 -128 conicto
|
||||
2624 2048 moveto
|
||||
2048 2048 lineto
|
||||
1747 3712 lineto
|
||||
2258 3846 lineto
|
||||
2462 3899 2645 3987 conicto
|
||||
2828 4075 2965 4235 conicto
|
||||
3103 4396 3183 4644 conicto
|
||||
3264 4893 3264 5267 conicto
|
||||
3264 5641 3198 5905 conicto
|
||||
3133 6170 2994 6338 conicto
|
||||
2856 6506 2644 6581 conicto
|
||||
2432 6656 2132 6656 conicto
|
||||
1871 6656 1672 6591 conicto
|
||||
1474 6526 1322 6428 conicto
|
||||
1088 5376 lineto
|
||||
640 5376 lineto
|
||||
640 6940 lineto
|
||||
1052 7046 1466 7107 conicto
|
||||
1881 7168 2372 7168 conicto
|
||||
3576 7168 4188 6701 conicto
|
||||
4800 6234 4800 5294 conicto
|
||||
4800 4941 4704 4619 conicto
|
||||
4609 4297 4413 4033 conicto
|
||||
4218 3769 3921 3571 conicto
|
||||
3625 3373 3228 3263 conicto
|
||||
2767 3136 lineto
|
||||
2624 2048 lineto
|
||||
end_ol grestore
|
||||
gsave 20.178200 13.522700 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2060 2752 moveto
|
||||
1667 2752 1360 2444 conicto
|
||||
1053 2136 906 1724 conicto
|
||||
759 1313 759 931 conicto
|
||||
759 588 915 390 conicto
|
||||
1072 192 1354 192 conicto
|
||||
1596 192 1808 312 conicto
|
||||
2021 432 2289 717 conicto
|
||||
2393 652 lineto
|
||||
2099 271 1811 103 conicto
|
||||
1524 -64 1157 -64 conicto
|
||||
700 -64 448 194 conicto
|
||||
196 452 196 916 conicto
|
||||
196 1681 778 2285 conicto
|
||||
1360 2889 2092 2889 conicto
|
||||
2387 2889 2583 2739 conicto
|
||||
2779 2590 2779 2363 conicto
|
||||
2779 2240 2687 2152 conicto
|
||||
2596 2064 2465 2064 conicto
|
||||
2210 2064 2210 2311 conicto
|
||||
2210 2376 2259 2482 conicto
|
||||
2308 2589 2308 2622 conicto
|
||||
2308 2752 2060 2752 conicto
|
||||
end_ol grestore
|
||||
gsave 20.562838 13.522700 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
863 2752 moveto
|
||||
948 3797 1000 3999 conicto
|
||||
1138 4326 1367 4352 conicto
|
||||
1452 4352 1514 4296 conicto
|
||||
1576 4241 1576 4163 conicto
|
||||
1576 3999 1000 2752 conicto
|
||||
863 2752 lineto
|
||||
end_ol grestore
|
||||
gsave 20.163500 12.711900 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2060 2752 moveto
|
||||
1667 2752 1360 2444 conicto
|
||||
1053 2136 906 1724 conicto
|
||||
759 1313 759 931 conicto
|
||||
759 588 915 390 conicto
|
||||
1072 192 1354 192 conicto
|
||||
1596 192 1808 312 conicto
|
||||
2021 432 2289 717 conicto
|
||||
2393 652 lineto
|
||||
2099 271 1811 103 conicto
|
||||
1524 -64 1157 -64 conicto
|
||||
700 -64 448 194 conicto
|
||||
196 452 196 916 conicto
|
||||
196 1681 778 2285 conicto
|
||||
1360 2889 2092 2889 conicto
|
||||
2387 2889 2583 2739 conicto
|
||||
2779 2590 2779 2363 conicto
|
||||
2779 2240 2687 2152 conicto
|
||||
2596 2064 2465 2064 conicto
|
||||
2210 2064 2210 2311 conicto
|
||||
2210 2376 2259 2482 conicto
|
||||
2308 2589 2308 2622 conicto
|
||||
2308 2752 2060 2752 conicto
|
||||
end_ol grestore
|
||||
showpage
|
||||
BIN
thirdparty/opengv/doc/addons/images/point_cloud.pdf
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/point_cloud.png
vendored
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
thirdparty/opengv/doc/addons/images/relative_central.dia
vendored
Normal file
1405
thirdparty/opengv/doc/addons/images/relative_central.eps
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/relative_central.pdf
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/relative_central.png
vendored
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
thirdparty/opengv/doc/addons/images/relative_noncentral.dia
vendored
Normal file
2335
thirdparty/opengv/doc/addons/images/relative_noncentral.eps
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/relative_noncentral.pdf
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/relative_noncentral.png
vendored
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
thirdparty/opengv/doc/addons/images/reprojectionError.dia
vendored
Normal file
979
thirdparty/opengv/doc/addons/images/reprojectionError.eps
vendored
Normal file
@@ -0,0 +1,979 @@
|
||||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: /home/laurent/ldevel/geometric_vision/doc/addons/images/reprojectionError.dia
|
||||
%%Creator: Dia v0.97.2
|
||||
%%CreationDate: Tue Aug 13 10:20:48 2013
|
||||
%%For: laurent
|
||||
%%Orientation: Portrait
|
||||
%%Magnification: 1.0000
|
||||
%%BoundingBox: 0 0 513 330
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
|
||||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
|
||||
/two /three /four /five /six /seven /eight /nine /colon /semicolon
|
||||
/less /equal /greater /question /at /A /B /C /D /E
|
||||
/F /G /H /I /J /K /L /M /N /O
|
||||
/P /Q /R /S /T /U /V /W /X /Y
|
||||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
|
||||
/d /e /f /g /h /i /j /k /l /m
|
||||
/n /o /p /q /r /s /t /u /v /w
|
||||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
|
||||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior
|
||||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf
|
||||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde
|
||||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex
|
||||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring
|
||||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
|
||||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def
|
||||
/cp {closepath} bind def
|
||||
/c {curveto} bind def
|
||||
/f {fill} bind def
|
||||
/a {arc} bind def
|
||||
/ef {eofill} bind def
|
||||
/ex {exch} bind def
|
||||
/gr {grestore} bind def
|
||||
/gs {gsave} bind def
|
||||
/sa {save} bind def
|
||||
/rs {restore} bind def
|
||||
/l {lineto} bind def
|
||||
/m {moveto} bind def
|
||||
/rm {rmoveto} bind def
|
||||
/n {newpath} bind def
|
||||
/s {stroke} bind def
|
||||
/sh {show} bind def
|
||||
/slc {setlinecap} bind def
|
||||
/slj {setlinejoin} bind def
|
||||
/slw {setlinewidth} bind def
|
||||
/srgb {setrgbcolor} bind def
|
||||
/rot {rotate} bind def
|
||||
/sc {scale} bind def
|
||||
/sd {setdash} bind def
|
||||
/ff {findfont} bind def
|
||||
/sf {setfont} bind def
|
||||
/scf {scalefont} bind def
|
||||
/sw {stringwidth pop} bind def
|
||||
/tr {translate} bind def
|
||||
|
||||
/ellipsedict 8 dict def
|
||||
ellipsedict /mtrx matrix put
|
||||
/ellipse
|
||||
{ ellipsedict begin
|
||||
/endangle exch def
|
||||
/startangle exch def
|
||||
/yrad exch def
|
||||
/xrad exch def
|
||||
/y exch def
|
||||
/x exch def /savematrix mtrx currentmatrix def
|
||||
x y tr xrad yrad sc
|
||||
0 0 1 startangle endangle arc
|
||||
savematrix setmatrix
|
||||
end
|
||||
} def
|
||||
|
||||
/mergeprocs {
|
||||
dup length
|
||||
3 -1 roll
|
||||
dup
|
||||
length
|
||||
dup
|
||||
5 1 roll
|
||||
3 -1 roll
|
||||
add
|
||||
array cvx
|
||||
dup
|
||||
3 -1 roll
|
||||
0 exch
|
||||
putinterval
|
||||
dup
|
||||
4 2 roll
|
||||
putinterval
|
||||
} bind def
|
||||
/dpi_x 300 def
|
||||
/dpi_y 300 def
|
||||
/conicto {
|
||||
/to_y exch def
|
||||
/to_x exch def
|
||||
/conic_cntrl_y exch def
|
||||
/conic_cntrl_x exch def
|
||||
currentpoint
|
||||
/p0_y exch def
|
||||
/p0_x exch def
|
||||
/p1_x p0_x conic_cntrl_x p0_x sub 2 3 div mul add def
|
||||
/p1_y p0_y conic_cntrl_y p0_y sub 2 3 div mul add def
|
||||
/p2_x p1_x to_x p0_x sub 1 3 div mul add def
|
||||
/p2_y p1_y to_y p0_y sub 1 3 div mul add def
|
||||
p1_x p1_y p2_x p2_y to_x to_y curveto
|
||||
} bind def
|
||||
/start_ol { gsave 1.1 dpi_x div dup scale} bind def
|
||||
/end_ol { closepath fill grestore } bind def
|
||||
28.346000 -28.346000 scale
|
||||
-29.435459 -28.232726 translate
|
||||
%%EndProlog
|
||||
|
||||
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 38.197263 16.964842 m 30.034066 16.964842 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 29.659066 16.964842 m 30.159066 16.714842 l 30.034066 16.964842 l 30.159066 17.214842 l ef
|
||||
n 29.659066 16.964842 m 30.159066 16.714842 l 30.034066 16.964842 l 30.159066 17.214842 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 38.150000 16.950000 m 32.598625 22.360238 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 32.330068 22.621967 m 32.513658 22.093957 l 32.598625 22.360238 l 32.862630 22.452033 l ef
|
||||
n 32.330068 22.621967 m 32.513658 22.093957 l 32.598625 22.360238 l 32.862630 22.452033 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 38.152737 16.917579 m 38.156775 24.092345 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 38.156986 24.467344 m 37.906705 23.967485 l 38.156775 24.092345 l 38.406705 23.967204 l ef
|
||||
n 38.156986 24.467344 m 37.906705 23.967485 l 38.156775 24.092345 l 38.406705 23.967204 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 38.189470 16.992646 m 44.718080 26.288143 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 44.933611 26.595017 m 44.441654 26.329539 l 44.718080 26.288143 l 44.850820 26.042165 l ef
|
||||
n 44.933611 26.595017 m 44.441654 26.329539 l 44.718080 26.288143 l 44.850820 26.042165 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
0.000000 0.882353 0.894118 srgb
|
||||
n 44.511555 22.731154 m 46.197444 22.763575 43.506506 25.357251 41.853037 25.324830 c 40.199569 25.292409 42.825666 22.698733 44.511555 22.731154 c s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 41.366723 25.195146 m 38.157049 16.960225 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 45.030290 22.893258 m 38.124628 16.992646 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.572549 0.000000 0.000000 srgb
|
||||
n 38.155452 17.000775 m 43.470848 26.905984 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 43.648166 27.236413 m 43.191456 26.914052 l 43.470848 26.905984 l 43.632029 26.677629 l ef
|
||||
n 43.648166 27.236413 m 43.191456 26.914052 l 43.470848 26.905984 l 43.632029 26.677629 l cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
gsave 45.218332 26.084337 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
832 4416 moveto
|
||||
82 4416 lineto
|
||||
82 4798 lineto
|
||||
832 5014 lineto
|
||||
832 5542 lineto
|
||||
832 6059 969 6448 conicto
|
||||
1107 6837 1363 7096 conicto
|
||||
1619 7355 1991 7485 conicto
|
||||
2364 7616 2835 7616 conicto
|
||||
2951 7616 3075 7608 conicto
|
||||
3199 7600 3318 7587 conicto
|
||||
3437 7574 3537 7555 conicto
|
||||
3638 7537 3712 7516 conicto
|
||||
3712 6336 lineto
|
||||
3374 6336 lineto
|
||||
3222 6913 lineto
|
||||
3175 6961 3093 7000 conicto
|
||||
3012 7040 2892 7040 conicto
|
||||
2777 7040 2680 6969 conicto
|
||||
2583 6899 2515 6739 conicto
|
||||
2447 6580 2407 6326 conicto
|
||||
2368 6073 2368 5708 conicto
|
||||
2368 4992 lineto
|
||||
3392 4992 lineto
|
||||
3392 4416 lineto
|
||||
2368 4416 lineto
|
||||
2368 448 lineto
|
||||
3176 329 lineto
|
||||
3176 0 lineto
|
||||
293 0 lineto
|
||||
293 329 lineto
|
||||
832 448 lineto
|
||||
832 4416 lineto
|
||||
end_ol grestore
|
||||
gsave 45.665595 26.359337 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1017 2758 moveto
|
||||
1104 2808 1223 2864 conicto
|
||||
1343 2920 1470 2966 conicto
|
||||
1598 3013 1729 3042 conicto
|
||||
1860 3072 1972 3072 conicto
|
||||
2186 3072 2368 2991 conicto
|
||||
2550 2910 2640 2732 conicto
|
||||
2739 2788 2879 2849 conicto
|
||||
3019 2910 3170 2960 conicto
|
||||
3321 3010 3468 3041 conicto
|
||||
3616 3072 3734 3072 conicto
|
||||
3902 3072 4038 3025 conicto
|
||||
4175 2978 4273 2874 conicto
|
||||
4371 2770 4425 2603 conicto
|
||||
4480 2436 4480 2200 conicto
|
||||
4480 256 lineto
|
||||
4866 165 lineto
|
||||
4866 0 lineto
|
||||
3522 0 lineto
|
||||
3522 165 lineto
|
||||
3968 256 lineto
|
||||
3968 2146 lineto
|
||||
3968 2408 3851 2548 conicto
|
||||
3735 2688 3470 2688 conicto
|
||||
3390 2688 3282 2675 conicto
|
||||
3175 2662 3067 2646 conicto
|
||||
2960 2630 2862 2609 conicto
|
||||
2764 2589 2697 2576 conicto
|
||||
2752 2406 2752 2201 conicto
|
||||
2752 256 lineto
|
||||
3201 165 lineto
|
||||
3201 0 lineto
|
||||
1797 0 lineto
|
||||
1797 165 lineto
|
||||
2240 256 lineto
|
||||
2240 2146 lineto
|
||||
2240 2408 2107 2548 conicto
|
||||
1974 2688 1709 2688 conicto
|
||||
1621 2688 1525 2678 conicto
|
||||
1430 2669 1338 2656 conicto
|
||||
1246 2643 1163 2625 conicto
|
||||
1080 2608 1024 2595 conicto
|
||||
1024 256 lineto
|
||||
1473 165 lineto
|
||||
1473 0 lineto
|
||||
133 0 lineto
|
||||
133 165 lineto
|
||||
512 256 lineto
|
||||
512 2752 lineto
|
||||
133 2843 lineto
|
||||
133 3008 lineto
|
||||
992 3008 lineto
|
||||
1017 2758 lineto
|
||||
end_ol grestore
|
||||
gsave 46.337463 26.359337 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
832 1472 moveto
|
||||
832 1416 lineto
|
||||
832 1188 864 978 conicto
|
||||
897 769 993 608 conicto
|
||||
1090 447 1265 351 conicto
|
||||
1441 256 1727 256 conicto
|
||||
1819 256 1920 264 conicto
|
||||
2022 272 2123 284 conicto
|
||||
2225 297 2320 313 conicto
|
||||
2416 329 2496 348 conicto
|
||||
2496 173 lineto
|
||||
2425 127 2324 85 conicto
|
||||
2223 44 2101 10 conicto
|
||||
1980 -24 1843 -44 conicto
|
||||
1707 -64 1567 -64 conicto
|
||||
1204 -64 953 38 conicto
|
||||
703 140 548 340 conicto
|
||||
393 541 324 837 conicto
|
||||
256 1133 256 1518 conicto
|
||||
256 2302 578 2687 conicto
|
||||
900 3072 1496 3072 conicto
|
||||
1731 3072 1935 3007 conicto
|
||||
2140 2942 2293 2789 conicto
|
||||
2446 2636 2535 2379 conicto
|
||||
2624 2122 2624 1739 conicto
|
||||
2624 1472 lineto
|
||||
832 1472 lineto
|
||||
1485 2816 moveto
|
||||
1317 2816 1195 2739 conicto
|
||||
1073 2662 993 2521 conicto
|
||||
913 2380 875 2178 conicto
|
||||
838 1977 838 1728 conicto
|
||||
2048 1728 lineto
|
||||
2048 1977 2022 2178 conicto
|
||||
1997 2380 1932 2521 conicto
|
||||
1867 2662 1759 2739 conicto
|
||||
1651 2816 1485 2816 conicto
|
||||
end_ol grestore
|
||||
gsave 46.722101 26.359337 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1482 3072 moveto
|
||||
1685 3072 1860 3034 conicto
|
||||
2035 2996 2162 2904 conicto
|
||||
2289 2813 2360 2656 conicto
|
||||
2432 2500 2432 2263 conicto
|
||||
2432 256 lineto
|
||||
2805 165 lineto
|
||||
2805 0 lineto
|
||||
1998 0 lineto
|
||||
1939 300 lineto
|
||||
1892 252 1811 188 conicto
|
||||
1730 124 1616 68 conicto
|
||||
1502 13 1352 -25 conicto
|
||||
1202 -64 1018 -64 conicto
|
||||
803 -64 656 2 conicto
|
||||
509 68 420 186 conicto
|
||||
332 304 294 466 conicto
|
||||
256 629 256 818 conicto
|
||||
256 1013 303 1156 conicto
|
||||
351 1300 436 1397 conicto
|
||||
522 1495 637 1556 conicto
|
||||
753 1618 887 1652 conicto
|
||||
1022 1687 1172 1699 conicto
|
||||
1322 1712 1474 1715 conicto
|
||||
1920 1728 lineto
|
||||
1920 2204 lineto
|
||||
1920 2340 1897 2451 conicto
|
||||
1875 2563 1822 2644 conicto
|
||||
1769 2725 1679 2770 conicto
|
||||
1589 2816 1454 2816 conicto
|
||||
1299 2816 1141 2775 conicto
|
||||
984 2735 865 2669 conicto
|
||||
756 2304 lineto
|
||||
576 2304 lineto
|
||||
576 2960 lineto
|
||||
783 3005 1003 3038 conicto
|
||||
1224 3072 1482 3072 conicto
|
||||
1920 1472 moveto
|
||||
1501 1459 lineto
|
||||
1312 1453 1174 1423 conicto
|
||||
1037 1394 947 1322 conicto
|
||||
858 1250 813 1125 conicto
|
||||
768 1000 768 806 conicto
|
||||
768 256 1226 256 conicto
|
||||
1443 256 1601 305 conicto
|
||||
1760 355 1920 431 conicto
|
||||
1920 1472 lineto
|
||||
end_ol grestore
|
||||
gsave 47.106739 26.359337 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2304 840 moveto
|
||||
2304 640 2241 472 conicto
|
||||
2179 305 2044 186 conicto
|
||||
1909 67 1695 1 conicto
|
||||
1481 -64 1179 -64 conicto
|
||||
1028 -64 881 -46 conicto
|
||||
735 -29 609 -4 conicto
|
||||
484 20 391 45 conicto
|
||||
298 71 256 87 conicto
|
||||
256 832 lineto
|
||||
399 832 lineto
|
||||
555 411 lineto
|
||||
654 321 809 256 conicto
|
||||
965 192 1175 192 conicto
|
||||
1471 192 1631 320 conicto
|
||||
1792 448 1792 716 conicto
|
||||
1792 875 1725 978 conicto
|
||||
1659 1082 1551 1152 conicto
|
||||
1444 1222 1306 1268 conicto
|
||||
1168 1315 1024 1362 conicto
|
||||
880 1410 742 1470 conicto
|
||||
604 1531 496 1626 conicto
|
||||
389 1722 322 1865 conicto
|
||||
256 2009 256 2222 conicto
|
||||
256 2426 331 2585 conicto
|
||||
406 2744 540 2852 conicto
|
||||
675 2961 862 3016 conicto
|
||||
1049 3072 1273 3072 conicto
|
||||
1494 3072 1705 3041 conicto
|
||||
1917 3010 2112 2971 conicto
|
||||
2112 2304 lineto
|
||||
1962 2304 lineto
|
||||
1829 2662 lineto
|
||||
1746 2737 1602 2776 conicto
|
||||
1459 2816 1297 2816 conicto
|
||||
1039 2816 903 2689 conicto
|
||||
768 2562 768 2346 conicto
|
||||
768 2200 834 2106 conicto
|
||||
900 2012 1008 1946 conicto
|
||||
1116 1881 1254 1833 conicto
|
||||
1392 1786 1536 1735 conicto
|
||||
1680 1684 1818 1618 conicto
|
||||
1956 1553 2064 1451 conicto
|
||||
2172 1350 2238 1203 conicto
|
||||
2304 1057 2304 840 conicto
|
||||
end_ol grestore
|
||||
0.572549 0.000000 0.000000 srgb
|
||||
gsave 42.235604 27.770226 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
832 4416 moveto
|
||||
82 4416 lineto
|
||||
82 4798 lineto
|
||||
832 5014 lineto
|
||||
832 5542 lineto
|
||||
832 6059 969 6448 conicto
|
||||
1107 6837 1363 7096 conicto
|
||||
1619 7355 1991 7485 conicto
|
||||
2364 7616 2835 7616 conicto
|
||||
2951 7616 3075 7608 conicto
|
||||
3199 7600 3318 7587 conicto
|
||||
3437 7574 3537 7555 conicto
|
||||
3638 7537 3712 7516 conicto
|
||||
3712 6336 lineto
|
||||
3374 6336 lineto
|
||||
3222 6913 lineto
|
||||
3175 6961 3093 7000 conicto
|
||||
3012 7040 2892 7040 conicto
|
||||
2777 7040 2680 6969 conicto
|
||||
2583 6899 2515 6739 conicto
|
||||
2447 6580 2407 6326 conicto
|
||||
2368 6073 2368 5708 conicto
|
||||
2368 4992 lineto
|
||||
3392 4992 lineto
|
||||
3392 4416 lineto
|
||||
2368 4416 lineto
|
||||
2368 448 lineto
|
||||
3176 329 lineto
|
||||
3176 0 lineto
|
||||
293 0 lineto
|
||||
293 329 lineto
|
||||
832 448 lineto
|
||||
832 4416 lineto
|
||||
end_ol grestore
|
||||
gsave 42.682867 28.045226 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2112 3072 moveto
|
||||
2112 2240 lineto
|
||||
1974 2240 lineto
|
||||
1787 2613 lineto
|
||||
1697 2613 1594 2600 conicto
|
||||
1491 2588 1388 2567 conicto
|
||||
1285 2547 1190 2519 conicto
|
||||
1095 2491 1024 2459 conicto
|
||||
1024 256 lineto
|
||||
1537 165 lineto
|
||||
1537 0 lineto
|
||||
133 0 lineto
|
||||
133 165 lineto
|
||||
512 256 lineto
|
||||
512 2752 lineto
|
||||
133 2843 lineto
|
||||
133 3008 lineto
|
||||
990 3008 lineto
|
||||
1018 2619 lineto
|
||||
1092 2680 1220 2758 conicto
|
||||
1349 2836 1499 2906 conicto
|
||||
1649 2976 1798 3024 conicto
|
||||
1948 3072 2064 3072 conicto
|
||||
2112 3072 lineto
|
||||
end_ol grestore
|
||||
gsave 42.970097 28.045226 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
832 1472 moveto
|
||||
832 1416 lineto
|
||||
832 1188 864 978 conicto
|
||||
897 769 993 608 conicto
|
||||
1090 447 1265 351 conicto
|
||||
1441 256 1727 256 conicto
|
||||
1819 256 1920 264 conicto
|
||||
2022 272 2123 284 conicto
|
||||
2225 297 2320 313 conicto
|
||||
2416 329 2496 348 conicto
|
||||
2496 173 lineto
|
||||
2425 127 2324 85 conicto
|
||||
2223 44 2101 10 conicto
|
||||
1980 -24 1843 -44 conicto
|
||||
1707 -64 1567 -64 conicto
|
||||
1204 -64 953 38 conicto
|
||||
703 140 548 340 conicto
|
||||
393 541 324 837 conicto
|
||||
256 1133 256 1518 conicto
|
||||
256 2302 578 2687 conicto
|
||||
900 3072 1496 3072 conicto
|
||||
1731 3072 1935 3007 conicto
|
||||
2140 2942 2293 2789 conicto
|
||||
2446 2636 2535 2379 conicto
|
||||
2624 2122 2624 1739 conicto
|
||||
2624 1472 lineto
|
||||
832 1472 lineto
|
||||
1485 2816 moveto
|
||||
1317 2816 1195 2739 conicto
|
||||
1073 2662 993 2521 conicto
|
||||
913 2380 875 2178 conicto
|
||||
838 1977 838 1728 conicto
|
||||
2048 1728 lineto
|
||||
2048 1977 2022 2178 conicto
|
||||
1997 2380 1932 2521 conicto
|
||||
1867 2662 1759 2739 conicto
|
||||
1651 2816 1485 2816 conicto
|
||||
end_ol grestore
|
||||
gsave 43.354735 28.045226 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
512 2752 moveto
|
||||
170 2843 lineto
|
||||
170 3008 lineto
|
||||
999 3008 lineto
|
||||
1005 2817 lineto
|
||||
1071 2874 1161 2920 conicto
|
||||
1252 2967 1356 3000 conicto
|
||||
1461 3034 1578 3053 conicto
|
||||
1695 3072 1815 3072 conicto
|
||||
2094 3072 2315 2973 conicto
|
||||
2537 2875 2692 2679 conicto
|
||||
2847 2483 2927 2195 conicto
|
||||
3008 1907 3008 1531 conicto
|
||||
3008 1165 2925 870 conicto
|
||||
2843 576 2678 367 conicto
|
||||
2514 159 2266 47 conicto
|
||||
2018 -64 1685 -64 conicto
|
||||
1524 -64 1345 -46 conicto
|
||||
1166 -29 1005 6 conicto
|
||||
1008 -32 1013 -81 conicto
|
||||
1018 -130 1019 -182 conicto
|
||||
1021 -234 1022 -278 conicto
|
||||
1024 -323 1024 -351 conicto
|
||||
1024 -1152 lineto
|
||||
1547 -1239 lineto
|
||||
1547 -1408 lineto
|
||||
132 -1408 lineto
|
||||
132 -1239 lineto
|
||||
512 -1152 lineto
|
||||
512 2752 lineto
|
||||
2432 1541 moveto
|
||||
2432 1867 2378 2097 conicto
|
||||
2325 2327 2222 2472 conicto
|
||||
2120 2618 1972 2685 conicto
|
||||
1824 2752 1638 2752 conicto
|
||||
1487 2752 1315 2725 conicto
|
||||
1144 2698 1024 2647 conicto
|
||||
1024 246 lineto
|
||||
1156 221 1317 206 conicto
|
||||
1478 192 1638 192 conicto
|
||||
2054 192 2243 542 conicto
|
||||
2432 892 2432 1541 conicto
|
||||
end_ol grestore
|
||||
gsave 43.786825 28.045226 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2112 3072 moveto
|
||||
2112 2240 lineto
|
||||
1974 2240 lineto
|
||||
1787 2613 lineto
|
||||
1697 2613 1594 2600 conicto
|
||||
1491 2588 1388 2567 conicto
|
||||
1285 2547 1190 2519 conicto
|
||||
1095 2491 1024 2459 conicto
|
||||
1024 256 lineto
|
||||
1537 165 lineto
|
||||
1537 0 lineto
|
||||
133 0 lineto
|
||||
133 165 lineto
|
||||
512 256 lineto
|
||||
512 2752 lineto
|
||||
133 2843 lineto
|
||||
133 3008 lineto
|
||||
990 3008 lineto
|
||||
1018 2619 lineto
|
||||
1092 2680 1220 2758 conicto
|
||||
1349 2836 1499 2906 conicto
|
||||
1649 2976 1798 3024 conicto
|
||||
1948 3072 2064 3072 conicto
|
||||
2112 3072 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 43.248609 26.397600 m 43.793861 26.206761 44.025241 26.070511 44.284608 25.681460 c s
|
||||
gsave 42.959182 25.811338 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3895 1611 moveto
|
||||
3101 -128 1854 -128 conicto
|
||||
1194 -128 821 392 conicto
|
||||
448 913 448 1849 conicto
|
||||
448 3340 1381 4614 conicto
|
||||
2315 5888 3692 5888 conicto
|
||||
4373 5888 4905 5597 conicto
|
||||
5169 5745 lineto
|
||||
5423 5888 5444 5888 conicto
|
||||
5824 5888 lineto
|
||||
4330 -1170 lineto
|
||||
4267 -1472 4267 -1657 conicto
|
||||
4267 -2170 5011 -2170 conicto
|
||||
5101 -2170 lineto
|
||||
5001 -2624 lineto
|
||||
3031 -2624 lineto
|
||||
3486 -456 lineto
|
||||
3528 -250 3964 1611 conicto
|
||||
3895 1611 lineto
|
||||
4578 5010 moveto
|
||||
4339 5402 3754 5402 conicto
|
||||
2812 5402 2187 4207 conicto
|
||||
1562 3012 1562 1796 conicto
|
||||
1562 553 2250 553 conicto
|
||||
2788 553 3379 1338 conicto
|
||||
3971 2124 4177 3097 conicto
|
||||
4578 5010 lineto
|
||||
end_ol grestore
|
||||
0.000000 0.000000 1.000000 srgb
|
||||
gsave 43.428923 21.194033 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3895 1611 moveto
|
||||
3101 -128 1854 -128 conicto
|
||||
1194 -128 821 392 conicto
|
||||
448 913 448 1849 conicto
|
||||
448 3340 1381 4614 conicto
|
||||
2315 5888 3692 5888 conicto
|
||||
4373 5888 4905 5597 conicto
|
||||
5169 5745 lineto
|
||||
5423 5888 5444 5888 conicto
|
||||
5824 5888 lineto
|
||||
4330 -1170 lineto
|
||||
4267 -1472 4267 -1657 conicto
|
||||
4267 -2170 5011 -2170 conicto
|
||||
5101 -2170 lineto
|
||||
5001 -2624 lineto
|
||||
3031 -2624 lineto
|
||||
3486 -456 lineto
|
||||
3528 -250 3964 1611 conicto
|
||||
3895 1611 lineto
|
||||
4578 5010 moveto
|
||||
4339 5402 3754 5402 conicto
|
||||
2812 5402 2187 4207 conicto
|
||||
1562 3012 1562 1796 conicto
|
||||
1562 553 2250 553 conicto
|
||||
2788 553 3379 1338 conicto
|
||||
3971 2124 4177 3097 conicto
|
||||
4578 5010 lineto
|
||||
end_ol grestore
|
||||
gsave 44.304289 21.349794 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1068 -64 moveto
|
||||
756 -64 602 119 conicto
|
||||
448 302 448 634 conicto
|
||||
448 2752 lineto
|
||||
56 2752 lineto
|
||||
56 2889 lineto
|
||||
454 3008 lineto
|
||||
766 3712 lineto
|
||||
960 3712 lineto
|
||||
960 3008 lineto
|
||||
1645 3008 lineto
|
||||
1645 2752 lineto
|
||||
960 2752 lineto
|
||||
960 680 lineto
|
||||
960 469 1059 362 conicto
|
||||
1158 256 1319 256 conicto
|
||||
1443 256 1565 272 conicto
|
||||
1688 288 1792 307 conicto
|
||||
1792 112 lineto
|
||||
1743 80 1663 48 conicto
|
||||
1584 16 1488 -8 conicto
|
||||
1393 -32 1285 -48 conicto
|
||||
1178 -64 1068 -64 conicto
|
||||
end_ol grestore
|
||||
gsave 44.544059 21.349794 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1024 3233 moveto
|
||||
1024 3188 1022 3123 conicto
|
||||
1021 3059 1019 2990 conicto
|
||||
1018 2921 1013 2856 conicto
|
||||
1008 2792 1002 2750 conicto
|
||||
1092 2801 1220 2858 conicto
|
||||
1349 2916 1489 2963 conicto
|
||||
1629 3011 1769 3041 conicto
|
||||
1909 3072 2025 3072 conicto
|
||||
2198 3072 2343 3025 conicto
|
||||
2488 2978 2592 2874 conicto
|
||||
2697 2770 2756 2603 conicto
|
||||
2816 2436 2816 2200 conicto
|
||||
2816 256 lineto
|
||||
3179 165 lineto
|
||||
3179 0 lineto
|
||||
1906 0 lineto
|
||||
1906 165 lineto
|
||||
2304 256 lineto
|
||||
2304 2150 lineto
|
||||
2304 2410 2171 2549 conicto
|
||||
2039 2688 1761 2688 conicto
|
||||
1669 2688 1566 2679 conicto
|
||||
1463 2671 1361 2660 conicto
|
||||
1260 2649 1171 2633 conicto
|
||||
1083 2618 1024 2607 conicto
|
||||
1024 256 lineto
|
||||
1429 165 lineto
|
||||
1429 0 lineto
|
||||
133 0 lineto
|
||||
133 165 lineto
|
||||
512 256 lineto
|
||||
512 4288 lineto
|
||||
66 4377 lineto
|
||||
66 4544 lineto
|
||||
1024 4544 lineto
|
||||
1024 3233 lineto
|
||||
end_ol grestore
|
||||
gsave 44.976149 21.349794 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2112 3072 moveto
|
||||
2112 2240 lineto
|
||||
1974 2240 lineto
|
||||
1787 2613 lineto
|
||||
1697 2613 1594 2600 conicto
|
||||
1491 2588 1388 2567 conicto
|
||||
1285 2547 1190 2519 conicto
|
||||
1095 2491 1024 2459 conicto
|
||||
1024 256 lineto
|
||||
1537 165 lineto
|
||||
1537 0 lineto
|
||||
133 0 lineto
|
||||
133 165 lineto
|
||||
512 256 lineto
|
||||
512 2752 lineto
|
||||
133 2843 lineto
|
||||
133 3008 lineto
|
||||
990 3008 lineto
|
||||
1018 2619 lineto
|
||||
1092 2680 1220 2758 conicto
|
||||
1349 2836 1499 2906 conicto
|
||||
1649 2976 1798 3024 conicto
|
||||
1948 3072 2064 3072 conicto
|
||||
2112 3072 lineto
|
||||
end_ol grestore
|
||||
gsave 45.263379 21.349794 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
832 1472 moveto
|
||||
832 1416 lineto
|
||||
832 1188 864 978 conicto
|
||||
897 769 993 608 conicto
|
||||
1090 447 1265 351 conicto
|
||||
1441 256 1727 256 conicto
|
||||
1819 256 1920 264 conicto
|
||||
2022 272 2123 284 conicto
|
||||
2225 297 2320 313 conicto
|
||||
2416 329 2496 348 conicto
|
||||
2496 173 lineto
|
||||
2425 127 2324 85 conicto
|
||||
2223 44 2101 10 conicto
|
||||
1980 -24 1843 -44 conicto
|
||||
1707 -64 1567 -64 conicto
|
||||
1204 -64 953 38 conicto
|
||||
703 140 548 340 conicto
|
||||
393 541 324 837 conicto
|
||||
256 1133 256 1518 conicto
|
||||
256 2302 578 2687 conicto
|
||||
900 3072 1496 3072 conicto
|
||||
1731 3072 1935 3007 conicto
|
||||
2140 2942 2293 2789 conicto
|
||||
2446 2636 2535 2379 conicto
|
||||
2624 2122 2624 1739 conicto
|
||||
2624 1472 lineto
|
||||
832 1472 lineto
|
||||
1485 2816 moveto
|
||||
1317 2816 1195 2739 conicto
|
||||
1073 2662 993 2521 conicto
|
||||
913 2380 875 2178 conicto
|
||||
838 1977 838 1728 conicto
|
||||
2048 1728 lineto
|
||||
2048 1977 2022 2178 conicto
|
||||
1997 2380 1932 2521 conicto
|
||||
1867 2662 1759 2739 conicto
|
||||
1651 2816 1485 2816 conicto
|
||||
end_ol grestore
|
||||
gsave 45.648017 21.349794 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2304 840 moveto
|
||||
2304 640 2241 472 conicto
|
||||
2179 305 2044 186 conicto
|
||||
1909 67 1695 1 conicto
|
||||
1481 -64 1179 -64 conicto
|
||||
1028 -64 881 -46 conicto
|
||||
735 -29 609 -4 conicto
|
||||
484 20 391 45 conicto
|
||||
298 71 256 87 conicto
|
||||
256 832 lineto
|
||||
399 832 lineto
|
||||
555 411 lineto
|
||||
654 321 809 256 conicto
|
||||
965 192 1175 192 conicto
|
||||
1471 192 1631 320 conicto
|
||||
1792 448 1792 716 conicto
|
||||
1792 875 1725 978 conicto
|
||||
1659 1082 1551 1152 conicto
|
||||
1444 1222 1306 1268 conicto
|
||||
1168 1315 1024 1362 conicto
|
||||
880 1410 742 1470 conicto
|
||||
604 1531 496 1626 conicto
|
||||
389 1722 322 1865 conicto
|
||||
256 2009 256 2222 conicto
|
||||
256 2426 331 2585 conicto
|
||||
406 2744 540 2852 conicto
|
||||
675 2961 862 3016 conicto
|
||||
1049 3072 1273 3072 conicto
|
||||
1494 3072 1705 3041 conicto
|
||||
1917 3010 2112 2971 conicto
|
||||
2112 2304 lineto
|
||||
1962 2304 lineto
|
||||
1829 2662 lineto
|
||||
1746 2737 1602 2776 conicto
|
||||
1459 2816 1297 2816 conicto
|
||||
1039 2816 903 2689 conicto
|
||||
768 2562 768 2346 conicto
|
||||
768 2200 834 2106 conicto
|
||||
900 2012 1008 1946 conicto
|
||||
1116 1881 1254 1833 conicto
|
||||
1392 1786 1536 1735 conicto
|
||||
1680 1684 1818 1618 conicto
|
||||
1956 1553 2064 1451 conicto
|
||||
2172 1350 2238 1203 conicto
|
||||
2304 1057 2304 840 conicto
|
||||
end_ol grestore
|
||||
gsave 45.985195 21.349794 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1024 3233 moveto
|
||||
1024 3188 1022 3123 conicto
|
||||
1021 3059 1019 2990 conicto
|
||||
1018 2921 1013 2856 conicto
|
||||
1008 2792 1002 2750 conicto
|
||||
1092 2801 1220 2858 conicto
|
||||
1349 2916 1489 2963 conicto
|
||||
1629 3011 1769 3041 conicto
|
||||
1909 3072 2025 3072 conicto
|
||||
2198 3072 2343 3025 conicto
|
||||
2488 2978 2592 2874 conicto
|
||||
2697 2770 2756 2603 conicto
|
||||
2816 2436 2816 2200 conicto
|
||||
2816 256 lineto
|
||||
3179 165 lineto
|
||||
3179 0 lineto
|
||||
1906 0 lineto
|
||||
1906 165 lineto
|
||||
2304 256 lineto
|
||||
2304 2150 lineto
|
||||
2304 2410 2171 2549 conicto
|
||||
2039 2688 1761 2688 conicto
|
||||
1669 2688 1566 2679 conicto
|
||||
1463 2671 1361 2660 conicto
|
||||
1260 2649 1171 2633 conicto
|
||||
1083 2618 1024 2607 conicto
|
||||
1024 256 lineto
|
||||
1429 165 lineto
|
||||
1429 0 lineto
|
||||
133 0 lineto
|
||||
133 165 lineto
|
||||
512 256 lineto
|
||||
512 4288 lineto
|
||||
66 4377 lineto
|
||||
66 4544 lineto
|
||||
1024 4544 lineto
|
||||
1024 3233 lineto
|
||||
end_ol grestore
|
||||
gsave 46.417285 21.349794 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3008 1512 moveto
|
||||
3008 751 2669 343 conicto
|
||||
2330 -64 1613 -64 conicto
|
||||
941 -64 598 340 conicto
|
||||
256 745 256 1512 conicto
|
||||
256 2270 598 2671 conicto
|
||||
941 3072 1638 3072 conicto
|
||||
2317 3072 2662 2679 conicto
|
||||
3008 2286 3008 1512 conicto
|
||||
2432 1514 moveto
|
||||
2432 1822 2391 2065 conicto
|
||||
2350 2308 2254 2474 conicto
|
||||
2158 2641 2000 2728 conicto
|
||||
1843 2816 1613 2816 conicto
|
||||
1380 2816 1229 2728 conicto
|
||||
1078 2641 989 2474 conicto
|
||||
901 2308 866 2065 conicto
|
||||
832 1822 832 1514 conicto
|
||||
832 1202 866 957 conicto
|
||||
901 713 989 543 conicto
|
||||
1078 373 1229 282 conicto
|
||||
1380 192 1613 192 conicto
|
||||
1843 192 2000 282 conicto
|
||||
2158 373 2254 543 conicto
|
||||
2350 713 2391 957 conicto
|
||||
2432 1202 2432 1514 conicto
|
||||
end_ol grestore
|
||||
gsave 46.849374 21.349794 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1152 256 moveto
|
||||
1665 165 lineto
|
||||
1665 0 lineto
|
||||
130 0 lineto
|
||||
130 165 lineto
|
||||
640 256 lineto
|
||||
640 4288 lineto
|
||||
130 4377 lineto
|
||||
130 4544 lineto
|
||||
1152 4544 lineto
|
||||
1152 256 lineto
|
||||
end_ol grestore
|
||||
gsave 47.089144 21.349794 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2324 223 moveto
|
||||
2184 111 1975 23 conicto
|
||||
1766 -64 1483 -64 conicto
|
||||
256 -64 256 1467 conicto
|
||||
256 1840 337 2137 conicto
|
||||
418 2435 587 2643 conicto
|
||||
756 2852 1014 2962 conicto
|
||||
1272 3072 1626 3072 conicto
|
||||
1788 3072 1971 3053 conicto
|
||||
2154 3034 2324 2999 conicto
|
||||
2317 3034 2314 3101 conicto
|
||||
2311 3169 2309 3246 conicto
|
||||
2308 3323 2306 3398 conicto
|
||||
2304 3474 2304 3521 conicto
|
||||
2304 4288 lineto
|
||||
1801 4377 lineto
|
||||
1801 4544 lineto
|
||||
2816 4544 lineto
|
||||
2816 256 lineto
|
||||
3185 165 lineto
|
||||
3185 0 lineto
|
||||
2361 0 lineto
|
||||
2324 223 lineto
|
||||
832 1464 moveto
|
||||
832 1127 891 896 conicto
|
||||
950 666 1058 523 conicto
|
||||
1166 381 1318 318 conicto
|
||||
1471 256 1659 256 conicto
|
||||
1849 256 2017 296 conicto
|
||||
2186 336 2304 392 conicto
|
||||
2304 2762 lineto
|
||||
2170 2787 1995 2801 conicto
|
||||
1821 2816 1659 2816 conicto
|
||||
1236 2816 1034 2473 conicto
|
||||
832 2130 832 1464 conicto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 42.171737 22.676256 m 42.714793 22.255156 42.948720 22.171898 43.453078 21.599383 c s
|
||||
showpage
|
||||
BIN
thirdparty/opengv/doc/addons/images/reprojectionError.pdf
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/reprojectionError.png
vendored
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
thirdparty/opengv/doc/addons/images/triangulation_central.dia
vendored
Normal file
694
thirdparty/opengv/doc/addons/images/triangulation_central.eps
vendored
Normal file
@@ -0,0 +1,694 @@
|
||||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: /home/laurent/ldevel/geometric_vision/doc/addons/images/triangulation_central.dia
|
||||
%%Creator: Dia v0.97.2
|
||||
%%CreationDate: Mon Aug 12 11:38:47 2013
|
||||
%%For: laurent
|
||||
%%Orientation: Portrait
|
||||
%%Magnification: 1.0000
|
||||
%%BoundingBox: 0 0 659 465
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
|
||||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
|
||||
/two /three /four /five /six /seven /eight /nine /colon /semicolon
|
||||
/less /equal /greater /question /at /A /B /C /D /E
|
||||
/F /G /H /I /J /K /L /M /N /O
|
||||
/P /Q /R /S /T /U /V /W /X /Y
|
||||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
|
||||
/d /e /f /g /h /i /j /k /l /m
|
||||
/n /o /p /q /r /s /t /u /v /w
|
||||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
|
||||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior
|
||||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf
|
||||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde
|
||||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex
|
||||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring
|
||||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
|
||||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def
|
||||
/cp {closepath} bind def
|
||||
/c {curveto} bind def
|
||||
/f {fill} bind def
|
||||
/a {arc} bind def
|
||||
/ef {eofill} bind def
|
||||
/ex {exch} bind def
|
||||
/gr {grestore} bind def
|
||||
/gs {gsave} bind def
|
||||
/sa {save} bind def
|
||||
/rs {restore} bind def
|
||||
/l {lineto} bind def
|
||||
/m {moveto} bind def
|
||||
/rm {rmoveto} bind def
|
||||
/n {newpath} bind def
|
||||
/s {stroke} bind def
|
||||
/sh {show} bind def
|
||||
/slc {setlinecap} bind def
|
||||
/slj {setlinejoin} bind def
|
||||
/slw {setlinewidth} bind def
|
||||
/srgb {setrgbcolor} bind def
|
||||
/rot {rotate} bind def
|
||||
/sc {scale} bind def
|
||||
/sd {setdash} bind def
|
||||
/ff {findfont} bind def
|
||||
/sf {setfont} bind def
|
||||
/scf {scalefont} bind def
|
||||
/sw {stringwidth pop} bind def
|
||||
/tr {translate} bind def
|
||||
|
||||
/ellipsedict 8 dict def
|
||||
ellipsedict /mtrx matrix put
|
||||
/ellipse
|
||||
{ ellipsedict begin
|
||||
/endangle exch def
|
||||
/startangle exch def
|
||||
/yrad exch def
|
||||
/xrad exch def
|
||||
/y exch def
|
||||
/x exch def /savematrix mtrx currentmatrix def
|
||||
x y tr xrad yrad sc
|
||||
0 0 1 startangle endangle arc
|
||||
savematrix setmatrix
|
||||
end
|
||||
} def
|
||||
|
||||
/mergeprocs {
|
||||
dup length
|
||||
3 -1 roll
|
||||
dup
|
||||
length
|
||||
dup
|
||||
5 1 roll
|
||||
3 -1 roll
|
||||
add
|
||||
array cvx
|
||||
dup
|
||||
3 -1 roll
|
||||
0 exch
|
||||
putinterval
|
||||
dup
|
||||
4 2 roll
|
||||
putinterval
|
||||
} bind def
|
||||
/dpi_x 300 def
|
||||
/dpi_y 300 def
|
||||
/conicto {
|
||||
/to_y exch def
|
||||
/to_x exch def
|
||||
/conic_cntrl_y exch def
|
||||
/conic_cntrl_x exch def
|
||||
currentpoint
|
||||
/p0_y exch def
|
||||
/p0_x exch def
|
||||
/p1_x p0_x conic_cntrl_x p0_x sub 2 3 div mul add def
|
||||
/p1_y p0_y conic_cntrl_y p0_y sub 2 3 div mul add def
|
||||
/p2_x p1_x to_x p0_x sub 1 3 div mul add def
|
||||
/p2_y p1_y to_y p0_y sub 1 3 div mul add def
|
||||
p1_x p1_y p2_x p2_y to_x to_y curveto
|
||||
} bind def
|
||||
/start_ol { gsave 1.1 dpi_x div dup scale} bind def
|
||||
/end_ol { closepath fill grestore } bind def
|
||||
28.346000 -28.346000 scale
|
||||
-26.375000 -21.049123 translate
|
||||
%%EndProlog
|
||||
|
||||
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 45.850000 17.550000 m 46.150000 4.700000 l s
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
n 27.650000 16.225000 m 49.400000 5.175000 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 27.625000 16.225000 m 30.980637 17.726206 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 31.322944 17.879343 m 30.764443 17.903365 l 30.980637 17.726206 l 30.968626 17.446956 l ef
|
||||
n 31.322944 17.879343 m 30.764443 17.903365 l 30.980637 17.726206 l 30.968626 17.446956 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 27.650000 16.225000 m 27.638993 19.813199 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 27.637843 20.188197 m 27.389378 19.687433 l 27.638993 19.813199 l 27.889376 19.688966 l ef
|
||||
n 27.637843 20.188197 m 27.389378 19.687433 l 27.638993 19.813199 l 27.889376 19.688966 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 27.625000 16.225000 m 30.736892 13.868853 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 31.035864 13.642489 m 30.788144 14.143623 l 30.736892 13.868853 l 30.486325 13.744993 l ef
|
||||
n 31.035864 13.642489 m 30.788144 14.143623 l 30.736892 13.868853 l 30.486325 13.744993 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 27.750000 16.175000 m 33.978894 12.996277 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 34.312914 12.825820 m 33.981192 13.275776 l 33.978894 12.996277 l 33.753916 12.830416 l ef
|
||||
n 34.312914 12.825820 m 33.981192 13.275776 l 33.978894 12.996277 l 33.753916 12.830416 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 45.850000 17.500000 m 47.424821 20.518407 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 47.598284 20.850877 m 47.145354 20.523226 l 47.424821 20.518407 l 47.588647 20.291943 l ef
|
||||
n 47.598284 20.850877 m 47.145354 20.523226 l 47.424821 20.518407 l 47.588647 20.291943 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 45.800000 17.500000 m 49.081575 15.548793 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 49.403901 15.357140 m 49.101902 15.827562 l 49.081575 15.548793 l 48.846364 15.397794 l ef
|
||||
n 49.403901 15.357140 m 49.101902 15.827562 l 49.081575 15.548793 l 48.846364 15.397794 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 45.875000 17.500000 m 44.039660 15.181676 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 43.806897 14.887659 m 44.313260 15.124506 l 44.039660 15.181676 l 43.921237 15.434858 l ef
|
||||
n 43.806897 14.887659 m 44.313260 15.124506 l 44.039660 15.181676 l 43.921237 15.434858 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 45.850000 17.450000 m 45.974184 12.911621 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 45.984442 12.536762 m 46.220672 13.043413 l 45.974184 12.911621 l 45.720859 13.029736 l ef
|
||||
n 45.984442 12.536762 m 46.220672 13.043413 l 45.974184 12.911621 l 45.720859 13.029736 l cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 45.700000 7.575000 0.187500 0.200000 0 360 ellipse f
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
n 45.700000 7.575000 0.187500 0.200000 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 45.387500 7.250000 m 46.137500 7.975000 l s
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
gsave 32.300000 13.102500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1024 5440 moveto
|
||||
97 5440 lineto
|
||||
97 5907 lineto
|
||||
1024 6171 lineto
|
||||
1024 6828 lineto
|
||||
1024 7471 1195 7955 conicto
|
||||
1366 8440 1685 8761 conicto
|
||||
2004 9083 2467 9245 conicto
|
||||
2931 9408 3516 9408 conicto
|
||||
3661 9408 3815 9398 conicto
|
||||
3970 9388 4118 9371 conicto
|
||||
4266 9355 4391 9332 conicto
|
||||
4516 9309 4608 9283 conicto
|
||||
4608 7808 lineto
|
||||
4190 7808 lineto
|
||||
4002 8542 lineto
|
||||
3943 8603 3842 8653 conicto
|
||||
3742 8704 3593 8704 conicto
|
||||
3450 8704 3330 8616 conicto
|
||||
3210 8528 3125 8328 conicto
|
||||
3041 8129 2992 7812 conicto
|
||||
2944 7496 2944 7039 conicto
|
||||
2944 6144 lineto
|
||||
4160 6144 lineto
|
||||
4160 5440 lineto
|
||||
2944 5440 lineto
|
||||
2944 576 lineto
|
||||
3943 422 lineto
|
||||
3943 0 lineto
|
||||
358 0 lineto
|
||||
358 422 lineto
|
||||
1024 576 lineto
|
||||
1024 5440 lineto
|
||||
end_ol grestore
|
||||
gsave 46.275000 15.452500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1024 5440 moveto
|
||||
97 5440 lineto
|
||||
97 5907 lineto
|
||||
1024 6171 lineto
|
||||
1024 6828 lineto
|
||||
1024 7471 1195 7955 conicto
|
||||
1366 8440 1685 8761 conicto
|
||||
2004 9083 2467 9245 conicto
|
||||
2931 9408 3516 9408 conicto
|
||||
3661 9408 3815 9398 conicto
|
||||
3970 9388 4118 9371 conicto
|
||||
4266 9355 4391 9332 conicto
|
||||
4516 9309 4608 9283 conicto
|
||||
4608 7808 lineto
|
||||
4190 7808 lineto
|
||||
4002 8542 lineto
|
||||
3943 8603 3842 8653 conicto
|
||||
3742 8704 3593 8704 conicto
|
||||
3450 8704 3330 8616 conicto
|
||||
3210 8528 3125 8328 conicto
|
||||
3041 8129 2992 7812 conicto
|
||||
2944 7496 2944 7039 conicto
|
||||
2944 6144 lineto
|
||||
4160 6144 lineto
|
||||
4160 5440 lineto
|
||||
2944 5440 lineto
|
||||
2944 576 lineto
|
||||
3943 422 lineto
|
||||
3943 0 lineto
|
||||
358 0 lineto
|
||||
358 422 lineto
|
||||
1024 576 lineto
|
||||
1024 5440 lineto
|
||||
end_ol grestore
|
||||
gsave 46.864442 15.452500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1024 8768 moveto
|
||||
2688 8768 lineto
|
||||
2185 5632 lineto
|
||||
1514 5632 lineto
|
||||
1024 8768 lineto
|
||||
end_ol grestore
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
gsave 42.800000 6.727500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2693 5795 moveto
|
||||
2836 5893 3009 5981 conicto
|
||||
3182 6069 3387 6131 conicto
|
||||
3593 6194 3840 6233 conicto
|
||||
4088 6272 4388 6272 conicto
|
||||
5667 6272 6289 5525 conicto
|
||||
6912 4778 6912 3166 conicto
|
||||
6912 2426 6745 1818 conicto
|
||||
6579 1210 6233 778 conicto
|
||||
5888 346 5360 109 conicto
|
||||
4832 -128 4108 -128 conicto
|
||||
3756 -128 3417 -85 conicto
|
||||
3078 -43 2713 49 conicto
|
||||
2719 -24 2729 -151 conicto
|
||||
2739 -278 2742 -421 conicto
|
||||
2746 -564 2749 -701 conicto
|
||||
2752 -838 2752 -938 conicto
|
||||
2752 -2304 lineto
|
||||
3653 -2458 lineto
|
||||
3653 -2880 lineto
|
||||
165 -2880 lineto
|
||||
165 -2458 lineto
|
||||
832 -2304 lineto
|
||||
832 5568 lineto
|
||||
159 5722 lineto
|
||||
159 6144 lineto
|
||||
2680 6144 lineto
|
||||
2693 5795 lineto
|
||||
4992 3137 moveto
|
||||
4992 3846 4901 4317 conicto
|
||||
4810 4788 4654 5064 conicto
|
||||
4499 5341 4294 5454 conicto
|
||||
4090 5568 3862 5568 conicto
|
||||
3531 5568 3248 5496 conicto
|
||||
2966 5425 2752 5321 conicto
|
||||
2752 713 lineto
|
||||
3278 576 3849 576 conicto
|
||||
4434 576 4713 1219 conicto
|
||||
4992 1863 4992 3137 conicto
|
||||
end_ol grestore
|
||||
gsave 43.784076 6.727500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
6848 3584 moveto
|
||||
6848 2624 lineto
|
||||
640 2624 lineto
|
||||
640 3584 lineto
|
||||
6848 3584 lineto
|
||||
6848 6272 moveto
|
||||
6848 5312 lineto
|
||||
640 5312 lineto
|
||||
640 6272 lineto
|
||||
6848 6272 lineto
|
||||
end_ol grestore
|
||||
gsave 44.790634 6.727500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2941 -192 moveto
|
||||
2711 -192 2510 -107 conicto
|
||||
2310 -22 2165 125 conicto
|
||||
2020 273 1938 470 conicto
|
||||
1856 667 1856 896 conicto
|
||||
1856 1119 1938 1319 conicto
|
||||
2020 1519 2165 1666 conicto
|
||||
2310 1814 2510 1899 conicto
|
||||
2711 1984 2941 1984 conicto
|
||||
3171 1984 3368 1899 conicto
|
||||
3565 1814 3713 1666 conicto
|
||||
3861 1519 3946 1319 conicto
|
||||
4032 1119 4032 896 conicto
|
||||
4032 667 3946 470 conicto
|
||||
3861 273 3713 125 conicto
|
||||
3565 -22 3368 -107 conicto
|
||||
3171 -192 2941 -192 conicto
|
||||
3264 2560 moveto
|
||||
2560 2560 lineto
|
||||
2188 4608 lineto
|
||||
2809 4771 lineto
|
||||
3058 4836 3280 4943 conicto
|
||||
3502 5050 3669 5245 conicto
|
||||
3836 5441 3934 5743 conicto
|
||||
4032 6046 4032 6501 conicto
|
||||
4032 6956 3953 7278 conicto
|
||||
3875 7600 3707 7805 conicto
|
||||
3540 8010 3284 8101 conicto
|
||||
3028 8192 2668 8192 conicto
|
||||
2353 8192 2113 8110 conicto
|
||||
1874 8029 1690 7907 conicto
|
||||
1408 6592 lineto
|
||||
832 6592 lineto
|
||||
832 8547 lineto
|
||||
1339 8680 1849 8756 conicto
|
||||
2359 8832 2964 8832 conicto
|
||||
4445 8832 5198 8261 conicto
|
||||
5952 7690 5952 6542 conicto
|
||||
5952 6110 5834 5716 conicto
|
||||
5717 5323 5474 5000 conicto
|
||||
5232 4678 4866 4436 conicto
|
||||
4500 4194 4009 4059 conicto
|
||||
3440 3904 lineto
|
||||
3264 2560 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
0.000000 0.000000 1.000000 srgb
|
||||
n 44.487500 18.650000 m 39.662500 20.675000 32.812500 19.800000 29.304416 18.179176 c s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 28.963994 18.021893 m 29.522745 18.004656 l 29.304416 18.179176 l 29.313034 18.458552 l ef
|
||||
n 28.963994 18.021893 m 29.522745 18.004656 l 29.304416 18.179176 l 29.313034 18.458552 l cp s
|
||||
gsave 36.150000 19.252500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3392 3712 moveto
|
||||
3392 640 lineto
|
||||
4515 467 lineto
|
||||
4515 0 lineto
|
||||
306 0 lineto
|
||||
306 467 lineto
|
||||
1344 640 lineto
|
||||
1344 8128 lineto
|
||||
221 8296 lineto
|
||||
221 8768 lineto
|
||||
4411 8768 lineto
|
||||
5510 8768 6248 8588 conicto
|
||||
6987 8408 7432 8084 conicto
|
||||
7877 7761 8066 7309 conicto
|
||||
8256 6858 8256 6315 conicto
|
||||
8256 5903 8164 5530 conicto
|
||||
8072 5157 7865 4843 conicto
|
||||
7659 4529 7321 4287 conicto
|
||||
6983 4045 6484 3895 conicto
|
||||
8855 640 lineto
|
||||
9792 467 lineto
|
||||
9792 0 lineto
|
||||
6958 0 lineto
|
||||
4412 3712 lineto
|
||||
3392 3712 lineto
|
||||
6208 6303 moveto
|
||||
6208 6830 6103 7170 conicto
|
||||
5998 7510 5768 7708 conicto
|
||||
5538 7906 5177 7985 conicto
|
||||
4816 8064 4311 8064 conicto
|
||||
3392 8064 lineto
|
||||
3392 4416 lineto
|
||||
4344 4416 lineto
|
||||
4862 4416 5220 4521 conicto
|
||||
5578 4627 5798 4854 conicto
|
||||
6018 5082 6113 5438 conicto
|
||||
6208 5795 6208 6303 conicto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.117647 0.878431 1.000000 srgb
|
||||
n 27.737500 16.200000 m 45.301860 17.416368 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 45.675964 17.442276 m 45.159887 17.657135 l 45.301860 17.416368 l 45.194430 17.158330 l ef
|
||||
n 45.675964 17.442276 m 45.159887 17.657135 l 45.301860 17.416368 l 45.194430 17.158330 l cp s
|
||||
gsave 36.675000 16.477500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2874 -128 moveto
|
||||
2382 -128 2031 -11 conicto
|
||||
1680 106 1457 311 conicto
|
||||
1234 516 1129 799 conicto
|
||||
1024 1082 1024 1414 conicto
|
||||
1024 5440 lineto
|
||||
221 5440 lineto
|
||||
221 5880 lineto
|
||||
1168 6144 lineto
|
||||
1946 7552 lineto
|
||||
2944 7552 lineto
|
||||
2944 6144 lineto
|
||||
4238 6144 lineto
|
||||
4238 5440 lineto
|
||||
2944 5440 lineto
|
||||
2944 1552 lineto
|
||||
2944 1131 3118 917 conicto
|
||||
3293 704 3577 704 conicto
|
||||
3796 704 4012 737 conicto
|
||||
4229 770 4416 809 conicto
|
||||
4416 232 lineto
|
||||
4324 167 4147 101 conicto
|
||||
3970 36 3756 -13 conicto
|
||||
3543 -63 3310 -95 conicto
|
||||
3078 -128 2874 -128 conicto
|
||||
end_ol grestore
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
gsave 26.375000 16.077500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
4208 5632 moveto
|
||||
3407 5632 2779 5000 conicto
|
||||
2151 4369 1850 3526 conicto
|
||||
1550 2683 1550 1898 conicto
|
||||
1550 1194 1870 789 conicto
|
||||
2191 384 2765 384 conicto
|
||||
3260 384 3694 630 conicto
|
||||
4128 876 4676 1460 conicto
|
||||
4889 1327 lineto
|
||||
4288 552 3700 212 conicto
|
||||
3113 -128 2365 -128 conicto
|
||||
1429 -128 915 400 conicto
|
||||
401 928 401 1877 conicto
|
||||
401 3440 1590 4676 conicto
|
||||
2779 5912 4275 5912 conicto
|
||||
4876 5912 5277 5606 conicto
|
||||
5678 5301 5678 4835 conicto
|
||||
5678 4583 5491 4403 conicto
|
||||
5304 4224 5036 4224 conicto
|
||||
4515 4224 4515 4728 conicto
|
||||
4515 4861 4615 5080 conicto
|
||||
4716 5300 4716 5366 conicto
|
||||
4716 5632 4208 5632 conicto
|
||||
end_ol grestore
|
||||
gsave 46.625000 18.442500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
4208 5632 moveto
|
||||
3407 5632 2779 5000 conicto
|
||||
2151 4369 1850 3526 conicto
|
||||
1550 2683 1550 1898 conicto
|
||||
1550 1194 1870 789 conicto
|
||||
2191 384 2765 384 conicto
|
||||
3260 384 3694 630 conicto
|
||||
4128 876 4676 1460 conicto
|
||||
4889 1327 lineto
|
||||
4288 552 3700 212 conicto
|
||||
3113 -128 2365 -128 conicto
|
||||
1429 -128 915 400 conicto
|
||||
401 928 401 1877 conicto
|
||||
401 3440 1590 4676 conicto
|
||||
2779 5912 4275 5912 conicto
|
||||
4876 5912 5277 5606 conicto
|
||||
5678 5301 5678 4835 conicto
|
||||
5678 4583 5491 4403 conicto
|
||||
5304 4224 5036 4224 conicto
|
||||
4515 4224 4515 4728 conicto
|
||||
4515 4861 4615 5080 conicto
|
||||
4716 5300 4716 5366 conicto
|
||||
4716 5632 4208 5632 conicto
|
||||
end_ol grestore
|
||||
gsave 47.409266 18.442500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1763 5632 moveto
|
||||
1937 7764 2044 8177 conicto
|
||||
2324 8842 2792 8896 conicto
|
||||
2966 8896 3093 8783 conicto
|
||||
3220 8670 3220 8509 conicto
|
||||
3220 8177 2044 5632 conicto
|
||||
1763 5632 lineto
|
||||
end_ol grestore
|
||||
0.000000 0.000000 1.000000 srgb
|
||||
gsave 37.500000 19.550000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2866 3840 moveto
|
||||
2320 3840 1892 3401 conicto
|
||||
1465 2962 1260 2375 conicto
|
||||
1055 1789 1055 1245 conicto
|
||||
1055 755 1273 473 conicto
|
||||
1492 192 1883 192 conicto
|
||||
2220 192 2515 363 conicto
|
||||
2811 534 3184 940 conicto
|
||||
3330 848 lineto
|
||||
2920 329 2520 100 conicto
|
||||
2120 -128 1610 -128 conicto
|
||||
973 -128 623 236 conicto
|
||||
273 600 273 1253 conicto
|
||||
273 2329 1082 3180 conicto
|
||||
1892 4032 2911 4032 conicto
|
||||
3320 4032 3593 3819 conicto
|
||||
3866 3607 3866 3285 conicto
|
||||
3866 3110 3739 2985 conicto
|
||||
3612 2861 3430 2861 conicto
|
||||
3075 2861 3075 3212 conicto
|
||||
3075 3305 3143 3457 conicto
|
||||
3211 3609 3211 3655 conicto
|
||||
3211 3840 2866 3840 conicto
|
||||
end_ol grestore
|
||||
gsave 38.034500 19.550000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1201 3840 moveto
|
||||
1319 5303 1392 5586 conicto
|
||||
1583 6043 1901 6080 conicto
|
||||
2020 6080 2106 6002 conicto
|
||||
2192 5924 2192 5815 conicto
|
||||
2192 5586 1392 3840 conicto
|
||||
1201 3840 lineto
|
||||
end_ol grestore
|
||||
gsave 37.475000 18.435000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2866 3840 moveto
|
||||
2320 3840 1892 3401 conicto
|
||||
1465 2962 1260 2375 conicto
|
||||
1055 1789 1055 1245 conicto
|
||||
1055 755 1273 473 conicto
|
||||
1492 192 1883 192 conicto
|
||||
2220 192 2515 363 conicto
|
||||
2811 534 3184 940 conicto
|
||||
3330 848 lineto
|
||||
2920 329 2520 100 conicto
|
||||
2120 -128 1610 -128 conicto
|
||||
973 -128 623 236 conicto
|
||||
273 600 273 1253 conicto
|
||||
273 2329 1082 3180 conicto
|
||||
1892 4032 2911 4032 conicto
|
||||
3320 4032 3593 3819 conicto
|
||||
3866 3607 3866 3285 conicto
|
||||
3866 3110 3739 2985 conicto
|
||||
3612 2861 3430 2861 conicto
|
||||
3075 2861 3075 3212 conicto
|
||||
3075 3305 3143 3457 conicto
|
||||
3211 3609 3211 3655 conicto
|
||||
3211 3840 2866 3840 conicto
|
||||
end_ol grestore
|
||||
0.117647 0.878431 1.000000 srgb
|
||||
gsave 37.450000 16.700000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2866 3840 moveto
|
||||
2320 3840 1892 3401 conicto
|
||||
1465 2962 1260 2375 conicto
|
||||
1055 1789 1055 1245 conicto
|
||||
1055 755 1273 473 conicto
|
||||
1492 192 1883 192 conicto
|
||||
2220 192 2515 363 conicto
|
||||
2811 534 3184 940 conicto
|
||||
3330 848 lineto
|
||||
2920 329 2520 100 conicto
|
||||
2120 -128 1610 -128 conicto
|
||||
973 -128 623 236 conicto
|
||||
273 600 273 1253 conicto
|
||||
273 2329 1082 3180 conicto
|
||||
1892 4032 2911 4032 conicto
|
||||
3320 4032 3593 3819 conicto
|
||||
3866 3607 3866 3285 conicto
|
||||
3866 3110 3739 2985 conicto
|
||||
3612 2861 3430 2861 conicto
|
||||
3075 2861 3075 3212 conicto
|
||||
3075 3305 3143 3457 conicto
|
||||
3211 3609 3211 3655 conicto
|
||||
3211 3840 2866 3840 conicto
|
||||
end_ol grestore
|
||||
gsave 37.984500 16.700000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1201 3840 moveto
|
||||
1319 5303 1392 5586 conicto
|
||||
1583 6043 1901 6080 conicto
|
||||
2020 6080 2106 6002 conicto
|
||||
2192 5924 2192 5815 conicto
|
||||
2192 5586 1392 3840 conicto
|
||||
1201 3840 lineto
|
||||
end_ol grestore
|
||||
gsave 37.400000 15.750000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2866 3840 moveto
|
||||
2320 3840 1892 3401 conicto
|
||||
1465 2962 1260 2375 conicto
|
||||
1055 1789 1055 1245 conicto
|
||||
1055 755 1273 473 conicto
|
||||
1492 192 1883 192 conicto
|
||||
2220 192 2515 363 conicto
|
||||
2811 534 3184 940 conicto
|
||||
3330 848 lineto
|
||||
2920 329 2520 100 conicto
|
||||
2120 -128 1610 -128 conicto
|
||||
973 -128 623 236 conicto
|
||||
273 600 273 1253 conicto
|
||||
273 2329 1082 3180 conicto
|
||||
1892 4032 2911 4032 conicto
|
||||
3320 4032 3593 3819 conicto
|
||||
3866 3607 3866 3285 conicto
|
||||
3866 3110 3739 2985 conicto
|
||||
3612 2861 3430 2861 conicto
|
||||
3075 2861 3075 3212 conicto
|
||||
3075 3305 3143 3457 conicto
|
||||
3211 3609 3211 3655 conicto
|
||||
3211 3840 2866 3840 conicto
|
||||
end_ol grestore
|
||||
showpage
|
||||
BIN
thirdparty/opengv/doc/addons/images/triangulation_central.pdf
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/triangulation_central.png
vendored
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
thirdparty/opengv/doc/addons/images/triangulation_noncentral.dia
vendored
Normal file
918
thirdparty/opengv/doc/addons/images/triangulation_noncentral.eps
vendored
Normal file
@@ -0,0 +1,918 @@
|
||||
%!PS-Adobe-2.0 EPSF-2.0
|
||||
%%Title: /home/laurent/ldevel/geometric_vision/doc/addons/images/triangulation_noncentral.dia
|
||||
%%Creator: Dia v0.97.2
|
||||
%%CreationDate: Mon Aug 12 12:08:05 2013
|
||||
%%For: laurent
|
||||
%%Orientation: Portrait
|
||||
%%Magnification: 1.0000
|
||||
%%BoundingBox: 0 0 679 471
|
||||
%%BeginSetup
|
||||
%%EndSetup
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
[ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
|
||||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
|
||||
/two /three /four /five /six /seven /eight /nine /colon /semicolon
|
||||
/less /equal /greater /question /at /A /B /C /D /E
|
||||
/F /G /H /I /J /K /L /M /N /O
|
||||
/P /Q /R /S /T /U /V /W /X /Y
|
||||
/Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c
|
||||
/d /e /f /g /h /i /j /k /l /m
|
||||
/n /o /p /q /r /s /t /u /v /w
|
||||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright
|
||||
/ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior
|
||||
/acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf
|
||||
/threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde
|
||||
/Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex
|
||||
/Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring
|
||||
/ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
|
||||
/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] /isolatin1encoding exch def
|
||||
/cp {closepath} bind def
|
||||
/c {curveto} bind def
|
||||
/f {fill} bind def
|
||||
/a {arc} bind def
|
||||
/ef {eofill} bind def
|
||||
/ex {exch} bind def
|
||||
/gr {grestore} bind def
|
||||
/gs {gsave} bind def
|
||||
/sa {save} bind def
|
||||
/rs {restore} bind def
|
||||
/l {lineto} bind def
|
||||
/m {moveto} bind def
|
||||
/rm {rmoveto} bind def
|
||||
/n {newpath} bind def
|
||||
/s {stroke} bind def
|
||||
/sh {show} bind def
|
||||
/slc {setlinecap} bind def
|
||||
/slj {setlinejoin} bind def
|
||||
/slw {setlinewidth} bind def
|
||||
/srgb {setrgbcolor} bind def
|
||||
/rot {rotate} bind def
|
||||
/sc {scale} bind def
|
||||
/sd {setdash} bind def
|
||||
/ff {findfont} bind def
|
||||
/sf {setfont} bind def
|
||||
/scf {scalefont} bind def
|
||||
/sw {stringwidth pop} bind def
|
||||
/tr {translate} bind def
|
||||
|
||||
/ellipsedict 8 dict def
|
||||
ellipsedict /mtrx matrix put
|
||||
/ellipse
|
||||
{ ellipsedict begin
|
||||
/endangle exch def
|
||||
/startangle exch def
|
||||
/yrad exch def
|
||||
/xrad exch def
|
||||
/y exch def
|
||||
/x exch def /savematrix mtrx currentmatrix def
|
||||
x y tr xrad yrad sc
|
||||
0 0 1 startangle endangle arc
|
||||
savematrix setmatrix
|
||||
end
|
||||
} def
|
||||
|
||||
/mergeprocs {
|
||||
dup length
|
||||
3 -1 roll
|
||||
dup
|
||||
length
|
||||
dup
|
||||
5 1 roll
|
||||
3 -1 roll
|
||||
add
|
||||
array cvx
|
||||
dup
|
||||
3 -1 roll
|
||||
0 exch
|
||||
putinterval
|
||||
dup
|
||||
4 2 roll
|
||||
putinterval
|
||||
} bind def
|
||||
/dpi_x 300 def
|
||||
/dpi_y 300 def
|
||||
/conicto {
|
||||
/to_y exch def
|
||||
/to_x exch def
|
||||
/conic_cntrl_y exch def
|
||||
/conic_cntrl_x exch def
|
||||
currentpoint
|
||||
/p0_y exch def
|
||||
/p0_x exch def
|
||||
/p1_x p0_x conic_cntrl_x p0_x sub 2 3 div mul add def
|
||||
/p1_y p0_y conic_cntrl_y p0_y sub 2 3 div mul add def
|
||||
/p2_x p1_x to_x p0_x sub 1 3 div mul add def
|
||||
/p2_y p1_y to_y p0_y sub 1 3 div mul add def
|
||||
p1_x p1_y p2_x p2_y to_x to_y curveto
|
||||
} bind def
|
||||
/start_ol { gsave 1.1 dpi_x div dup scale} bind def
|
||||
/end_ol { closepath fill grestore } bind def
|
||||
28.346000 -28.346000 scale
|
||||
-25.759100 -21.049123 translate
|
||||
%%EndProlog
|
||||
|
||||
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 48.470700 14.294200 m 46.150000 4.700000 l s
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slc
|
||||
n 27.322700 12.500000 m 49.372700 5.175000 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 27.625000 16.225000 m 30.980637 17.726206 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 31.322944 17.879343 m 30.764443 17.903365 l 30.980637 17.726206 l 30.968626 17.446956 l ef
|
||||
n 31.322944 17.879343 m 30.764443 17.903365 l 30.980637 17.726206 l 30.968626 17.446956 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 27.650000 16.225000 m 27.657316 19.842598 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 27.658074 20.217597 m 27.407063 19.718103 l 27.657316 19.842598 l 27.907062 19.717092 l ef
|
||||
n 27.658074 20.217597 m 27.407063 19.718103 l 27.657316 19.842598 l 27.907062 19.717092 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 27.625000 16.225000 m 30.736892 13.868853 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 31.035864 13.642489 m 30.788144 14.143623 l 30.736892 13.868853 l 30.486325 13.744993 l ef
|
||||
n 31.035864 13.642489 m 30.788144 14.143623 l 30.736892 13.868853 l 30.486325 13.744993 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 27.318200 12.516100 m 32.458797 10.779687 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 32.814076 10.659679 m 32.420376 11.056542 l 32.458797 10.779687 l 32.260366 10.582837 l ef
|
||||
n 32.814076 10.659679 m 32.420376 11.056542 l 32.458797 10.779687 l 32.260366 10.582837 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 45.850000 17.500000 m 47.424821 20.518407 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 47.598284 20.850877 m 47.145354 20.523226 l 47.424821 20.518407 l 47.588647 20.291943 l ef
|
||||
n 47.598284 20.850877 m 47.145354 20.523226 l 47.424821 20.518407 l 47.588647 20.291943 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 45.800000 17.500000 m 49.081575 15.548793 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 49.403901 15.357140 m 49.101902 15.827562 l 49.081575 15.548793 l 48.846364 15.397794 l ef
|
||||
n 49.403901 15.357140 m 49.101902 15.827562 l 49.081575 15.548793 l 48.846364 15.397794 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 45.875000 17.500000 m 44.039660 15.181676 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 43.806897 14.887659 m 44.313260 15.124506 l 44.039660 15.181676 l 43.921237 15.434858 l ef
|
||||
n 43.806897 14.887659 m 44.313260 15.124506 l 44.039660 15.181676 l 43.921237 15.434858 l cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
n 48.453600 14.287500 m 47.465005 10.106073 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 47.378724 9.741134 m 47.737058 10.170199 l 47.465005 10.106073 l 47.250472 10.285240 l ef
|
||||
n 47.378724 9.741134 m 47.737058 10.170199 l 47.465005 10.106073 l 47.250472 10.285240 l cp s
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 46.247900 6.641120 0.187500 0.200000 0 360 ellipse f
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
n 46.247900 6.641120 0.187500 0.200000 0 360 ellipse cp s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 45.935400 6.316120 m 46.685400 7.041120 l s
|
||||
1.000000 0.000000 0.000000 srgb
|
||||
gsave 30.968700 10.567000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1024 5440 moveto
|
||||
97 5440 lineto
|
||||
97 5907 lineto
|
||||
1024 6171 lineto
|
||||
1024 6828 lineto
|
||||
1024 7471 1195 7955 conicto
|
||||
1366 8440 1685 8761 conicto
|
||||
2004 9083 2467 9245 conicto
|
||||
2931 9408 3516 9408 conicto
|
||||
3661 9408 3815 9398 conicto
|
||||
3970 9388 4118 9371 conicto
|
||||
4266 9355 4391 9332 conicto
|
||||
4516 9309 4608 9283 conicto
|
||||
4608 7808 lineto
|
||||
4190 7808 lineto
|
||||
4002 8542 lineto
|
||||
3943 8603 3842 8653 conicto
|
||||
3742 8704 3593 8704 conicto
|
||||
3450 8704 3330 8616 conicto
|
||||
3210 8528 3125 8328 conicto
|
||||
3041 8129 2992 7812 conicto
|
||||
2944 7496 2944 7039 conicto
|
||||
2944 6144 lineto
|
||||
4160 6144 lineto
|
||||
4160 5440 lineto
|
||||
2944 5440 lineto
|
||||
2944 576 lineto
|
||||
3943 422 lineto
|
||||
3943 0 lineto
|
||||
358 0 lineto
|
||||
358 422 lineto
|
||||
1024 576 lineto
|
||||
1024 5440 lineto
|
||||
end_ol grestore
|
||||
gsave 48.492500 12.207900 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1024 5440 moveto
|
||||
97 5440 lineto
|
||||
97 5907 lineto
|
||||
1024 6171 lineto
|
||||
1024 6828 lineto
|
||||
1024 7471 1195 7955 conicto
|
||||
1366 8440 1685 8761 conicto
|
||||
2004 9083 2467 9245 conicto
|
||||
2931 9408 3516 9408 conicto
|
||||
3661 9408 3815 9398 conicto
|
||||
3970 9388 4118 9371 conicto
|
||||
4266 9355 4391 9332 conicto
|
||||
4516 9309 4608 9283 conicto
|
||||
4608 7808 lineto
|
||||
4190 7808 lineto
|
||||
4002 8542 lineto
|
||||
3943 8603 3842 8653 conicto
|
||||
3742 8704 3593 8704 conicto
|
||||
3450 8704 3330 8616 conicto
|
||||
3210 8528 3125 8328 conicto
|
||||
3041 8129 2992 7812 conicto
|
||||
2944 7496 2944 7039 conicto
|
||||
2944 6144 lineto
|
||||
4160 6144 lineto
|
||||
4160 5440 lineto
|
||||
2944 5440 lineto
|
||||
2944 576 lineto
|
||||
3943 422 lineto
|
||||
3943 0 lineto
|
||||
358 0 lineto
|
||||
358 422 lineto
|
||||
1024 576 lineto
|
||||
1024 5440 lineto
|
||||
end_ol grestore
|
||||
gsave 49.081942 12.207900 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1024 8768 moveto
|
||||
2688 8768 lineto
|
||||
2185 5632 lineto
|
||||
1514 5632 lineto
|
||||
1024 8768 lineto
|
||||
end_ol grestore
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
gsave 43.075000 6.027500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2693 5795 moveto
|
||||
2836 5893 3009 5981 conicto
|
||||
3182 6069 3387 6131 conicto
|
||||
3593 6194 3840 6233 conicto
|
||||
4088 6272 4388 6272 conicto
|
||||
5667 6272 6289 5525 conicto
|
||||
6912 4778 6912 3166 conicto
|
||||
6912 2426 6745 1818 conicto
|
||||
6579 1210 6233 778 conicto
|
||||
5888 346 5360 109 conicto
|
||||
4832 -128 4108 -128 conicto
|
||||
3756 -128 3417 -85 conicto
|
||||
3078 -43 2713 49 conicto
|
||||
2719 -24 2729 -151 conicto
|
||||
2739 -278 2742 -421 conicto
|
||||
2746 -564 2749 -701 conicto
|
||||
2752 -838 2752 -938 conicto
|
||||
2752 -2304 lineto
|
||||
3653 -2458 lineto
|
||||
3653 -2880 lineto
|
||||
165 -2880 lineto
|
||||
165 -2458 lineto
|
||||
832 -2304 lineto
|
||||
832 5568 lineto
|
||||
159 5722 lineto
|
||||
159 6144 lineto
|
||||
2680 6144 lineto
|
||||
2693 5795 lineto
|
||||
4992 3137 moveto
|
||||
4992 3846 4901 4317 conicto
|
||||
4810 4788 4654 5064 conicto
|
||||
4499 5341 4294 5454 conicto
|
||||
4090 5568 3862 5568 conicto
|
||||
3531 5568 3248 5496 conicto
|
||||
2966 5425 2752 5321 conicto
|
||||
2752 713 lineto
|
||||
3278 576 3849 576 conicto
|
||||
4434 576 4713 1219 conicto
|
||||
4992 1863 4992 3137 conicto
|
||||
end_ol grestore
|
||||
gsave 44.059076 6.027500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
6848 3584 moveto
|
||||
6848 2624 lineto
|
||||
640 2624 lineto
|
||||
640 3584 lineto
|
||||
6848 3584 lineto
|
||||
6848 6272 moveto
|
||||
6848 5312 lineto
|
||||
640 5312 lineto
|
||||
640 6272 lineto
|
||||
6848 6272 lineto
|
||||
end_ol grestore
|
||||
gsave 45.065634 6.027500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2941 -192 moveto
|
||||
2711 -192 2510 -107 conicto
|
||||
2310 -22 2165 125 conicto
|
||||
2020 273 1938 470 conicto
|
||||
1856 667 1856 896 conicto
|
||||
1856 1119 1938 1319 conicto
|
||||
2020 1519 2165 1666 conicto
|
||||
2310 1814 2510 1899 conicto
|
||||
2711 1984 2941 1984 conicto
|
||||
3171 1984 3368 1899 conicto
|
||||
3565 1814 3713 1666 conicto
|
||||
3861 1519 3946 1319 conicto
|
||||
4032 1119 4032 896 conicto
|
||||
4032 667 3946 470 conicto
|
||||
3861 273 3713 125 conicto
|
||||
3565 -22 3368 -107 conicto
|
||||
3171 -192 2941 -192 conicto
|
||||
3264 2560 moveto
|
||||
2560 2560 lineto
|
||||
2188 4608 lineto
|
||||
2809 4771 lineto
|
||||
3058 4836 3280 4943 conicto
|
||||
3502 5050 3669 5245 conicto
|
||||
3836 5441 3934 5743 conicto
|
||||
4032 6046 4032 6501 conicto
|
||||
4032 6956 3953 7278 conicto
|
||||
3875 7600 3707 7805 conicto
|
||||
3540 8010 3284 8101 conicto
|
||||
3028 8192 2668 8192 conicto
|
||||
2353 8192 2113 8110 conicto
|
||||
1874 8029 1690 7907 conicto
|
||||
1408 6592 lineto
|
||||
832 6592 lineto
|
||||
832 8547 lineto
|
||||
1339 8680 1849 8756 conicto
|
||||
2359 8832 2964 8832 conicto
|
||||
4445 8832 5198 8261 conicto
|
||||
5952 7690 5952 6542 conicto
|
||||
5952 6110 5834 5716 conicto
|
||||
5717 5323 5474 5000 conicto
|
||||
5232 4678 4866 4436 conicto
|
||||
4500 4194 4009 4059 conicto
|
||||
3440 3904 lineto
|
||||
3264 2560 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[0.200000] 0 sd
|
||||
[0.200000] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
0.000000 0.000000 1.000000 srgb
|
||||
n 44.487500 18.650000 m 39.662500 20.675000 32.812500 19.800000 29.304416 18.179176 c s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 28.963994 18.021893 m 29.522745 18.004656 l 29.304416 18.179176 l 29.313034 18.458552 l ef
|
||||
n 28.963994 18.021893 m 29.522745 18.004656 l 29.304416 18.179176 l 29.313034 18.458552 l cp s
|
||||
gsave 36.150000 19.252500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
3392 3712 moveto
|
||||
3392 640 lineto
|
||||
4515 467 lineto
|
||||
4515 0 lineto
|
||||
306 0 lineto
|
||||
306 467 lineto
|
||||
1344 640 lineto
|
||||
1344 8128 lineto
|
||||
221 8296 lineto
|
||||
221 8768 lineto
|
||||
4411 8768 lineto
|
||||
5510 8768 6248 8588 conicto
|
||||
6987 8408 7432 8084 conicto
|
||||
7877 7761 8066 7309 conicto
|
||||
8256 6858 8256 6315 conicto
|
||||
8256 5903 8164 5530 conicto
|
||||
8072 5157 7865 4843 conicto
|
||||
7659 4529 7321 4287 conicto
|
||||
6983 4045 6484 3895 conicto
|
||||
8855 640 lineto
|
||||
9792 467 lineto
|
||||
9792 0 lineto
|
||||
6958 0 lineto
|
||||
4412 3712 lineto
|
||||
3392 3712 lineto
|
||||
6208 6303 moveto
|
||||
6208 6830 6103 7170 conicto
|
||||
5998 7510 5768 7708 conicto
|
||||
5538 7906 5177 7985 conicto
|
||||
4816 8064 4311 8064 conicto
|
||||
3392 8064 lineto
|
||||
3392 4416 lineto
|
||||
4344 4416 lineto
|
||||
4862 4416 5220 4521 conicto
|
||||
5578 4627 5798 4854 conicto
|
||||
6018 5082 6113 5438 conicto
|
||||
6208 5795 6208 6303 conicto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.117647 0.878431 1.000000 srgb
|
||||
n 27.737500 16.200000 m 45.301860 17.416368 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 45.675964 17.442276 m 45.159887 17.657135 l 45.301860 17.416368 l 45.194430 17.158330 l ef
|
||||
n 45.675964 17.442276 m 45.159887 17.657135 l 45.301860 17.416368 l 45.194430 17.158330 l cp s
|
||||
gsave 36.675000 16.477500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2874 -128 moveto
|
||||
2382 -128 2031 -11 conicto
|
||||
1680 106 1457 311 conicto
|
||||
1234 516 1129 799 conicto
|
||||
1024 1082 1024 1414 conicto
|
||||
1024 5440 lineto
|
||||
221 5440 lineto
|
||||
221 5880 lineto
|
||||
1168 6144 lineto
|
||||
1946 7552 lineto
|
||||
2944 7552 lineto
|
||||
2944 6144 lineto
|
||||
4238 6144 lineto
|
||||
4238 5440 lineto
|
||||
2944 5440 lineto
|
||||
2944 1552 lineto
|
||||
2944 1131 3118 917 conicto
|
||||
3293 704 3577 704 conicto
|
||||
3796 704 4012 737 conicto
|
||||
4229 770 4416 809 conicto
|
||||
4416 232 lineto
|
||||
4324 167 4147 101 conicto
|
||||
3970 36 3756 -13 conicto
|
||||
3543 -63 3310 -95 conicto
|
||||
3078 -128 2874 -128 conicto
|
||||
end_ol grestore
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
gsave 25.759100 16.731800 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
5010 4442 moveto
|
||||
5010 4617 4729 4884 conicto
|
||||
4449 5152 4449 5433 conicto
|
||||
4449 5647 4582 5767 conicto
|
||||
4716 5888 4943 5888 conicto
|
||||
5250 5888 5470 5654 conicto
|
||||
5691 5420 5691 5099 conicto
|
||||
5691 4724 5457 4141 conicto
|
||||
5223 3559 4876 3064 conicto
|
||||
3847 1618 3019 681 conicto
|
||||
2191 -256 1937 -256 conicto
|
||||
1817 -256 1817 212 conicto
|
||||
1817 788 1723 2013 conicto
|
||||
1630 3238 1523 3934 conicto
|
||||
1389 4858 1229 5125 conicto
|
||||
1069 5393 681 5393 conicto
|
||||
427 5393 281 5380 conicto
|
||||
281 5554 lineto
|
||||
748 5634 1095 5701 conicto
|
||||
1443 5768 1576 5808 conicto
|
||||
1710 5848 1817 5868 conicto
|
||||
1924 5888 2031 5888 conicto
|
||||
2244 5888 2464 4308 conicto
|
||||
2685 2729 2765 922 conicto
|
||||
3179 1350 lineto
|
||||
3887 2100 4448 3043 conicto
|
||||
5010 3987 5010 4442 conicto
|
||||
end_ol grestore
|
||||
gsave 26.490913 16.731800 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1189 5392 moveto
|
||||
748 5392 lineto
|
||||
721 5594 lineto
|
||||
2779 5888 2805 5888 conicto
|
||||
2872 5888 2872 5834 conicto
|
||||
2445 4386 lineto
|
||||
3032 5197 3553 5542 conicto
|
||||
4074 5888 4729 5888 conicto
|
||||
5437 5888 5851 5442 conicto
|
||||
6265 4997 6265 4224 conicto
|
||||
6265 2640 4989 1256 conicto
|
||||
3714 -128 2258 -128 conicto
|
||||
1817 -128 1376 123 conicto
|
||||
882 -1752 882 -2149 conicto
|
||||
882 -2560 1737 -2560 conicto
|
||||
1737 -2752 lineto
|
||||
-1002 -2752 lineto
|
||||
-1002 -2547 lineto
|
||||
-828 -2547 -721 -2527 conicto
|
||||
-615 -2507 -508 -2446 conicto
|
||||
-401 -2386 -347 -2312 conicto
|
||||
-294 -2238 -214 -2071 conicto
|
||||
-134 -1904 -87 -1736 conicto
|
||||
-40 -1569 40 -1248 conicto
|
||||
120 -927 193 -612 conicto
|
||||
267 -297 400 218 conicto
|
||||
534 734 668 1242 conicto
|
||||
1616 4830 1616 5031 conicto
|
||||
1616 5151 1469 5271 conicto
|
||||
1323 5392 1189 5392 conicto
|
||||
5063 4174 moveto
|
||||
5063 5312 4181 5312 conicto
|
||||
3687 5312 3186 4882 conicto
|
||||
2685 4452 2431 3804 conicto
|
||||
2137 3062 1850 2017 conicto
|
||||
1563 973 1563 642 conicto
|
||||
1563 429 1743 290 conicto
|
||||
1924 152 2204 152 conicto
|
||||
3006 152 3694 866 conicto
|
||||
4382 1581 4722 2493 conicto
|
||||
5063 3406 5063 4174 conicto
|
||||
end_ol grestore
|
||||
gsave 46.625000 18.442500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
5010 4442 moveto
|
||||
5010 4617 4729 4884 conicto
|
||||
4449 5152 4449 5433 conicto
|
||||
4449 5647 4582 5767 conicto
|
||||
4716 5888 4943 5888 conicto
|
||||
5250 5888 5470 5654 conicto
|
||||
5691 5420 5691 5099 conicto
|
||||
5691 4724 5457 4141 conicto
|
||||
5223 3559 4876 3064 conicto
|
||||
3847 1618 3019 681 conicto
|
||||
2191 -256 1937 -256 conicto
|
||||
1817 -256 1817 212 conicto
|
||||
1817 788 1723 2013 conicto
|
||||
1630 3238 1523 3934 conicto
|
||||
1389 4858 1229 5125 conicto
|
||||
1069 5393 681 5393 conicto
|
||||
427 5393 281 5380 conicto
|
||||
281 5554 lineto
|
||||
748 5634 1095 5701 conicto
|
||||
1443 5768 1576 5808 conicto
|
||||
1710 5848 1817 5868 conicto
|
||||
1924 5888 2031 5888 conicto
|
||||
2244 5888 2464 4308 conicto
|
||||
2685 2729 2765 922 conicto
|
||||
3179 1350 lineto
|
||||
3887 2100 4448 3043 conicto
|
||||
5010 3987 5010 4442 conicto
|
||||
end_ol grestore
|
||||
gsave 47.356813 18.442500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1189 5392 moveto
|
||||
748 5392 lineto
|
||||
721 5594 lineto
|
||||
2779 5888 2805 5888 conicto
|
||||
2872 5888 2872 5834 conicto
|
||||
2445 4386 lineto
|
||||
3032 5197 3553 5542 conicto
|
||||
4074 5888 4729 5888 conicto
|
||||
5437 5888 5851 5442 conicto
|
||||
6265 4997 6265 4224 conicto
|
||||
6265 2640 4989 1256 conicto
|
||||
3714 -128 2258 -128 conicto
|
||||
1817 -128 1376 123 conicto
|
||||
882 -1752 882 -2149 conicto
|
||||
882 -2560 1737 -2560 conicto
|
||||
1737 -2752 lineto
|
||||
-1002 -2752 lineto
|
||||
-1002 -2547 lineto
|
||||
-828 -2547 -721 -2527 conicto
|
||||
-615 -2507 -508 -2446 conicto
|
||||
-401 -2386 -347 -2312 conicto
|
||||
-294 -2238 -214 -2071 conicto
|
||||
-134 -1904 -87 -1736 conicto
|
||||
-40 -1569 40 -1248 conicto
|
||||
120 -927 193 -612 conicto
|
||||
267 -297 400 218 conicto
|
||||
534 734 668 1242 conicto
|
||||
1616 4830 1616 5031 conicto
|
||||
1616 5151 1469 5271 conicto
|
||||
1323 5392 1189 5392 conicto
|
||||
5063 4174 moveto
|
||||
5063 5312 4181 5312 conicto
|
||||
3687 5312 3186 4882 conicto
|
||||
2685 4452 2431 3804 conicto
|
||||
2137 3062 1850 2017 conicto
|
||||
1563 973 1563 642 conicto
|
||||
1563 429 1743 290 conicto
|
||||
1924 152 2204 152 conicto
|
||||
3006 152 3694 866 conicto
|
||||
4382 1581 4722 2493 conicto
|
||||
5063 3406 5063 4174 conicto
|
||||
end_ol grestore
|
||||
gsave 48.240984 18.442500 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1763 5632 moveto
|
||||
1937 7764 2044 8177 conicto
|
||||
2324 8842 2792 8896 conicto
|
||||
2966 8896 3093 8783 conicto
|
||||
3220 8670 3220 8509 conicto
|
||||
3220 8177 2044 5632 conicto
|
||||
1763 5632 lineto
|
||||
end_ol grestore
|
||||
0.000000 0.000000 1.000000 srgb
|
||||
gsave 37.500000 19.550000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2866 3840 moveto
|
||||
2320 3840 1892 3401 conicto
|
||||
1465 2962 1260 2375 conicto
|
||||
1055 1789 1055 1245 conicto
|
||||
1055 755 1273 473 conicto
|
||||
1492 192 1883 192 conicto
|
||||
2220 192 2515 363 conicto
|
||||
2811 534 3184 940 conicto
|
||||
3330 848 lineto
|
||||
2920 329 2520 100 conicto
|
||||
2120 -128 1610 -128 conicto
|
||||
973 -128 623 236 conicto
|
||||
273 600 273 1253 conicto
|
||||
273 2329 1082 3180 conicto
|
||||
1892 4032 2911 4032 conicto
|
||||
3320 4032 3593 3819 conicto
|
||||
3866 3607 3866 3285 conicto
|
||||
3866 3110 3739 2985 conicto
|
||||
3612 2861 3430 2861 conicto
|
||||
3075 2861 3075 3212 conicto
|
||||
3075 3305 3143 3457 conicto
|
||||
3211 3609 3211 3655 conicto
|
||||
3211 3840 2866 3840 conicto
|
||||
end_ol grestore
|
||||
gsave 38.034500 19.550000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1201 3840 moveto
|
||||
1319 5303 1392 5586 conicto
|
||||
1583 6043 1901 6080 conicto
|
||||
2020 6080 2106 6002 conicto
|
||||
2192 5924 2192 5815 conicto
|
||||
2192 5586 1392 3840 conicto
|
||||
1201 3840 lineto
|
||||
end_ol grestore
|
||||
gsave 37.475000 18.435000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2866 3840 moveto
|
||||
2320 3840 1892 3401 conicto
|
||||
1465 2962 1260 2375 conicto
|
||||
1055 1789 1055 1245 conicto
|
||||
1055 755 1273 473 conicto
|
||||
1492 192 1883 192 conicto
|
||||
2220 192 2515 363 conicto
|
||||
2811 534 3184 940 conicto
|
||||
3330 848 lineto
|
||||
2920 329 2520 100 conicto
|
||||
2120 -128 1610 -128 conicto
|
||||
973 -128 623 236 conicto
|
||||
273 600 273 1253 conicto
|
||||
273 2329 1082 3180 conicto
|
||||
1892 4032 2911 4032 conicto
|
||||
3320 4032 3593 3819 conicto
|
||||
3866 3607 3866 3285 conicto
|
||||
3866 3110 3739 2985 conicto
|
||||
3612 2861 3430 2861 conicto
|
||||
3075 2861 3075 3212 conicto
|
||||
3075 3305 3143 3457 conicto
|
||||
3211 3609 3211 3655 conicto
|
||||
3211 3840 2866 3840 conicto
|
||||
end_ol grestore
|
||||
0.117647 0.878431 1.000000 srgb
|
||||
gsave 37.450000 16.700000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2866 3840 moveto
|
||||
2320 3840 1892 3401 conicto
|
||||
1465 2962 1260 2375 conicto
|
||||
1055 1789 1055 1245 conicto
|
||||
1055 755 1273 473 conicto
|
||||
1492 192 1883 192 conicto
|
||||
2220 192 2515 363 conicto
|
||||
2811 534 3184 940 conicto
|
||||
3330 848 lineto
|
||||
2920 329 2520 100 conicto
|
||||
2120 -128 1610 -128 conicto
|
||||
973 -128 623 236 conicto
|
||||
273 600 273 1253 conicto
|
||||
273 2329 1082 3180 conicto
|
||||
1892 4032 2911 4032 conicto
|
||||
3320 4032 3593 3819 conicto
|
||||
3866 3607 3866 3285 conicto
|
||||
3866 3110 3739 2985 conicto
|
||||
3612 2861 3430 2861 conicto
|
||||
3075 2861 3075 3212 conicto
|
||||
3075 3305 3143 3457 conicto
|
||||
3211 3609 3211 3655 conicto
|
||||
3211 3840 2866 3840 conicto
|
||||
end_ol grestore
|
||||
gsave 37.984500 16.700000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1201 3840 moveto
|
||||
1319 5303 1392 5586 conicto
|
||||
1583 6043 1901 6080 conicto
|
||||
2020 6080 2106 6002 conicto
|
||||
2192 5924 2192 5815 conicto
|
||||
2192 5586 1392 3840 conicto
|
||||
1201 3840 lineto
|
||||
end_ol grestore
|
||||
gsave 37.400000 15.750000 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
2866 3840 moveto
|
||||
2320 3840 1892 3401 conicto
|
||||
1465 2962 1260 2375 conicto
|
||||
1055 1789 1055 1245 conicto
|
||||
1055 755 1273 473 conicto
|
||||
1492 192 1883 192 conicto
|
||||
2220 192 2515 363 conicto
|
||||
2811 534 3184 940 conicto
|
||||
3330 848 lineto
|
||||
2920 329 2520 100 conicto
|
||||
2120 -128 1610 -128 conicto
|
||||
973 -128 623 236 conicto
|
||||
273 600 273 1253 conicto
|
||||
273 2329 1082 3180 conicto
|
||||
1892 4032 2911 4032 conicto
|
||||
3320 4032 3593 3819 conicto
|
||||
3866 3607 3866 3285 conicto
|
||||
3866 3110 3739 2985 conicto
|
||||
3612 2861 3430 2861 conicto
|
||||
3075 2861 3075 3212 conicto
|
||||
3075 3305 3143 3457 conicto
|
||||
3211 3609 3211 3655 conicto
|
||||
3211 3840 2866 3840 conicto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.627451 0.125490 0.941176 srgb
|
||||
n 27.665600 16.195700 m 27.350361 12.907781 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 27.314571 12.534493 m 27.611150 13.008351 l 27.350361 12.907781 l 27.113432 13.056071 l ef
|
||||
n 27.314571 12.534493 m 27.611150 13.008351 l 27.350361 12.907781 l 27.113432 13.056071 l cp s
|
||||
gsave 26.153400 14.466900 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
6272 5594 moveto
|
||||
3804 -128 lineto
|
||||
3021 -128 lineto
|
||||
448 5568 lineto
|
||||
0 5722 lineto
|
||||
0 6144 lineto
|
||||
3152 6144 lineto
|
||||
3152 5721 lineto
|
||||
2420 5555 lineto
|
||||
4000 2041 lineto
|
||||
5429 5568 lineto
|
||||
4711 5722 lineto
|
||||
4711 6144 lineto
|
||||
6720 6144 lineto
|
||||
6720 5722 lineto
|
||||
6272 5594 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 45.847000 17.447400 m 48.138831 14.632694 l s
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 48.375607 14.341899 m 48.253770 14.887477 l 48.138831 14.632694 l 47.866042 14.571776 l ef
|
||||
n 48.375607 14.341899 m 48.253770 14.887477 l 48.138831 14.632694 l 47.866042 14.571776 l cp s
|
||||
gsave 46.294800 15.333200 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
6272 5594 moveto
|
||||
3804 -128 lineto
|
||||
3021 -128 lineto
|
||||
448 5568 lineto
|
||||
0 5722 lineto
|
||||
0 6144 lineto
|
||||
3152 6144 lineto
|
||||
3152 5721 lineto
|
||||
2420 5555 lineto
|
||||
4000 2041 lineto
|
||||
5429 5568 lineto
|
||||
4711 5722 lineto
|
||||
4711 6144 lineto
|
||||
6720 6144 lineto
|
||||
6720 5722 lineto
|
||||
6272 5594 lineto
|
||||
end_ol grestore
|
||||
gsave 47.178971 15.333200 translate 0.035278 -0.035278 scale
|
||||
start_ol
|
||||
1024 8768 moveto
|
||||
2688 8768 lineto
|
||||
2185 5632 lineto
|
||||
1514 5632 lineto
|
||||
1024 8768 lineto
|
||||
end_ol grestore
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
0.000000 0.000000 0.000000 srgb
|
||||
n 27.319053 12.479749 m 26.561598 13.239477 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 26.658642 12.788058 m 26.482660 13.318652 l 27.012724 13.141081 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 27.335526 12.470830 m 26.770651 11.520562 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 27.183909 11.726510 m 26.713523 11.424456 l 26.754111 11.981998 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 27.342182 12.479232 m 28.295296 12.902483 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 27.839045 12.973417 m 28.397477 12.947859 l 28.041972 12.516448 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 48.452077 14.280512 m 49.405191 14.703763 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 48.948940 14.774696 m 49.507373 14.749138 l 49.151867 14.317727 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 48.445767 14.271842 m 49.062334 13.326015 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 49.059772 13.787740 m 49.123390 13.232354 l 48.640911 13.514692 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
[] 0 sd
|
||||
0 slc
|
||||
n 48.437506 14.297874 m 47.447121 13.800680 l s
|
||||
0.100000 slw
|
||||
[] 0 sd
|
||||
0 slj
|
||||
0 slc
|
||||
n 47.906218 13.751421 m 47.347202 13.750518 l 47.681889 14.198273 l s
|
||||
showpage
|
||||
BIN
thirdparty/opengv/doc/addons/images/triangulation_noncentral.pdf
vendored
Normal file
BIN
thirdparty/opengv/doc/addons/images/triangulation_noncentral.png
vendored
Normal file
|
After Width: | Height: | Size: 29 KiB |
101
thirdparty/opengv/doc/addons/mainpage.dox
vendored
Normal file
@@ -0,0 +1,101 @@
|
||||
/** \mainpage The OpenGV library
|
||||
*
|
||||
* <b>Important note:</b> If you are only interested in using the library under Matlab, now there is a precompiled mex-library for 64-bit systems available. You can download it from:
|
||||
*
|
||||
\verbatim
|
||||
Windows: http://laurentkneip.github.io/publications/opengv.mexw64
|
||||
Mac OSX: http://laurentkneip.github.io/publications/opengv.mexmaci64
|
||||
\endverbatim
|
||||
*
|
||||
* These versions have been added around March 2016, so please be aware that later additions may not be included in this distribution. You can go immediately to \ref page_matlab "Use under Matlab" to receive further instructions on the Matlab interface.
|
||||
*
|
||||
* The OpenGV library aims at unifying geometric computer vision algorithms for calibrated camera pose computation within a single
|
||||
* efficient C++-library. OpenGV stands for Open Geometric Vision. It contains classical central and more recent non-central absolute
|
||||
* and relative camera pose computation algorithms, as well as triangulation and point-cloud alignment functionalities, all extended
|
||||
* by non-linear optimization and RANSAC contexts. It contains a flexible C++-interface as well as Matlab and Python wrappers, and eases the
|
||||
* comparison of different geometric vision algorithms. A benchmark to compare the various solutions for one particular problem against
|
||||
* each other is included in the Matlab stuff.
|
||||
*
|
||||
* The library is described in the paper (Please cite if you use it for your research!):
|
||||
*
|
||||
* - L. Kneip, P. Furgale, "OpenGV: A unified and generalized approach to real-time calibrated geometric vision", Proc. of The IEEE International Conference on Robotics and Automation (ICRA), Hong Kong, China. May 2014.
|
||||
*
|
||||
* The library has been developped in the context of the following papers.
|
||||
*
|
||||
* - L. Kneip, D. Scaramuzza, R. Siegwart, "A Novel Parametrization of the Perspective-Three-Point Problem for a Direct Computation of Absolute Camera Position and Orientation", Proc. of The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Colorado Springs, USA. June 2011.
|
||||
* - L. Kneip, M. Chli, R. Siegwart, "Robust Real-Time Visual Odometry with a Single Camera and an IMU", Proc. of The British Machine Vision Conference (BMVC), Dundee, UK. August 2011.
|
||||
* - T. Kazik, L. Kneip, J. Nikolic, M. Pollefeys, R. Siegwart, "Real-Time 6D Stereo Visual Odometry with Non-Overlapping Fields of View", Proc. of The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Providence, USA. June 2012.
|
||||
* - L. Kneip, R. Siegwart, M. Pollefeys, "Finding the Exact Rotation Between Two Images Independently of the Translation", Proc. of The European Conference on Computer Vision (ECCV), Florence, Italy. October 2012.
|
||||
* - L. Kneip, P. Furgale, R. Siegwart, "Using Multi-Camera Systems in Robotics: Efficient Solutions to the NPnP Problem", Proc. of The IEEE International Conference on Robotics and Automation (ICRA), Karlsruhe, Germany. May 2013.
|
||||
* - L. Kneip, S. Lynen, "Direct Optimization of Frame-to-Frame Rotation", Proc. of The International Conference on Computer Vision (ICCV), Sydney, Australia. December 2013.
|
||||
* - L. Kneip, H. Li, "Efficient Computation of Relative Pose for Multi-Camera Systems", In Proc. of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Columbus, USA. June 2014.
|
||||
* - L. Kneip, H. Li, Y. Seo, "UPnP: An optimal O(n) solution to the absolute pose problem with universal applicability", In Proc. of The European Conference on Computer Vision (ECCV), Zurich, Switzerland. September 2014.
|
||||
*
|
||||
* Please cite the OpenGV paper as well as the corresponding paper if you use OpenGV to work on a particular problem.
|
||||
*
|
||||
* \section main_sec_2 Getting started
|
||||
*
|
||||
* OpenGV features the following set of algorithms:
|
||||
*
|
||||
* <ul>
|
||||
* <li> Absolute camera pose computation:
|
||||
* <ol>
|
||||
* <li>absolute pose computation with known rotation
|
||||
* <li>two P3P-algorithms (Kneip, Gao)
|
||||
* <li>generalized P3P
|
||||
* <li>the EPnP algorithm by Lepetit and Fua
|
||||
* <li>an extension of the EPnP algorithm to the non-central case (Kneip)
|
||||
* <li>the generalized absolute pose solver presented at ICRA 2013 (Kneip)
|
||||
* <li>non-linear optimization over n correspondences (both central and non-central)
|
||||
* <li>the UPnP algorithm presented at ECCV 2014 (both central and non-central, and minimal and non-minimal)
|
||||
* </ol>
|
||||
* <li> Relative camera-pose computation:
|
||||
* <ol>
|
||||
* <li>2-point algorithm for computing the translation with known relative rotation
|
||||
* <li>2-point algorithm for deriving the rotation in a pure-rotation situation
|
||||
* <li>n-point algorithm for deriving the rotation in a pure-rotation situation
|
||||
* <li>5-point algorithm by Stewenius
|
||||
* <li>5-point algorithm by Nister
|
||||
* <li>5-point algorithm to solve for rotations directly (by Kneip)
|
||||
* <li>7-point algorithm
|
||||
* <li>8-point algorithm by Longuet-Higgins
|
||||
* <li>6-point algorithm by Henrik Stewenius for generalized relative pose
|
||||
* <li>17-point algorithm by Hongdong Li
|
||||
* <li>non-linear optimization over n correspondences (both central and non-central)
|
||||
* <li>relative rotation as an iterative eigenproblem (by Kneip)
|
||||
* <li>generalized reltive rotation for multi-camera systems as an iterative eigenproblem (by Kneip)
|
||||
* </ol>
|
||||
* <li>Two methods for point-triangulation
|
||||
* <li>Arun's method for aligning point clouds
|
||||
* <li>Generic sample-consensus problems for most algorithms useable with Ransac
|
||||
* <li>Math tools:
|
||||
* <ol>
|
||||
* <li>Generic Sturm-sequence implementation for numerical root-finding
|
||||
* <li>Algebraic root finding
|
||||
* <li>Cayley rotations
|
||||
* </ol>
|
||||
* <li>Unit/Benchmarking tests for all algorithms
|
||||
* <li>Matlab interface
|
||||
* <li>Python interface
|
||||
* </ul>
|
||||
*
|
||||
* The aim of OpenGV is to make these algorithms accessible
|
||||
* to real-time computer vision and robotics-related tasks, that require efficient
|
||||
* pose computation of calibrated cameras. It is also intended to serve as a
|
||||
* benchmarking framework for testing and comparing different solutions
|
||||
* to geometric-vision problems. The library realizes a clean separation between
|
||||
* 2D-2D, 2D-3D, and 3D-3D registration tasks. It thus provides
|
||||
* a somewhat missing block between image-processing libraries (e.g. OpenCV) and
|
||||
* more exhaustive non-linear optimization frameworks (e.g. g2o, ceres). By
|
||||
* working exclusively with 3D unit bearing-vectors, it allows to be applied in
|
||||
* conjunction with any optical projection system.
|
||||
*
|
||||
* Please consult the following sub-pages to get a step-by-step introduction to the library:
|
||||
* - \subpage page_installation "Installation"
|
||||
* - \subpage page_how_to_use "How to use"
|
||||
* - \subpage page_matlab "Use under Matlab"
|
||||
* - \subpage page_how_to_contribute "How to contribute"
|
||||
* - \subpage page_contact "Contact"
|
||||
* - \subpage page_references "References"
|
||||
*
|
||||
*/
|
||||
109
thirdparty/opengv/include/opengv/Indices.hpp
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file Indices.hpp
|
||||
* \brief Generic functor base for use with the Eigen-nonlinear optimization
|
||||
* toolbox.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_INDICES_HPP_
|
||||
#define OPENGV_INDICES_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <Eigen/Eigen>
|
||||
#include <Eigen/src/Core/util/DisableStupidWarnings.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace Eigen;
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
|
||||
/**
|
||||
* Index class used internally so we can efficiently access either all or
|
||||
* just a subset of the indices, using the same syntax
|
||||
*/
|
||||
struct Indices
|
||||
{
|
||||
/** Indexing into vector of indices? */
|
||||
bool _useIndices;
|
||||
/** Pointer to a vector of indices (if used) */
|
||||
const std::vector<int> * _indices;
|
||||
/** The number of correspondences */
|
||||
size_t _numberCorrespondences;
|
||||
|
||||
/**
|
||||
* \brief Constructor using index-vector.
|
||||
* \param[in] indices The index-vector.
|
||||
*/
|
||||
Indices( const std::vector<int> & indices) :
|
||||
_useIndices(true),
|
||||
_indices(&indices),
|
||||
_numberCorrespondences(indices.size())
|
||||
{}
|
||||
|
||||
/**
|
||||
* \brief Constructor without index-vector (uses all correspondences).
|
||||
* \param[in] numberCorrespondences The number of correspondences.
|
||||
*/
|
||||
Indices(size_t numberCorrespondences) :
|
||||
_useIndices(false),
|
||||
_numberCorrespondences(numberCorrespondences)
|
||||
{}
|
||||
|
||||
/**
|
||||
* \brief Get the number of correspondences.
|
||||
* \return The number of correspondences.
|
||||
*/
|
||||
size_t size() const
|
||||
{
|
||||
return _numberCorrespondences;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Get an index.
|
||||
* \param[in] i The index.
|
||||
* \return The index (either directly or from the index-vector).
|
||||
*/
|
||||
int operator[](int i) const
|
||||
{
|
||||
if( _useIndices )
|
||||
return (*_indices)[i];
|
||||
return i;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* OPENGV_INDICES_HPP_ */
|
||||
103
thirdparty/opengv/include/opengv/OptimizationFunctor.hpp
vendored
Normal file
@@ -0,0 +1,103 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file OptimizationFunctor.hpp
|
||||
* \brief Generic functor base for use with the Eigen-nonlinear optimization
|
||||
* toolbox.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_OPTIMIZATIONFUNCTOR_HPP_
|
||||
#define OPENGV_OPTIMIZATIONFUNCTOR_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <Eigen/Eigen>
|
||||
#include <Eigen/src/Core/util/DisableStupidWarnings.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace Eigen;
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
|
||||
/**
|
||||
* Generic functor base for use with the Eigen-nonlinear optimization
|
||||
* toolbox. Please refer to the Eigen-documentation for further information.
|
||||
*/
|
||||
template<typename _Scalar, int NX=Dynamic, int NY=Dynamic>
|
||||
struct OptimizationFunctor
|
||||
{
|
||||
/** undocumented */
|
||||
typedef _Scalar Scalar;
|
||||
/** undocumented */
|
||||
enum
|
||||
{
|
||||
InputsAtCompileTime = NX,
|
||||
ValuesAtCompileTime = NY
|
||||
};
|
||||
/** undocumented */
|
||||
typedef Matrix<Scalar,InputsAtCompileTime,1> InputType;
|
||||
/** undocumented */
|
||||
typedef Matrix<Scalar,ValuesAtCompileTime,1> ValueType;
|
||||
/** undocumented */
|
||||
typedef Matrix<Scalar,ValuesAtCompileTime,InputsAtCompileTime> JacobianType;
|
||||
|
||||
/** undocumented */
|
||||
const int m_inputs;
|
||||
/** undocumented */
|
||||
const int m_values;
|
||||
|
||||
/** undocumented */
|
||||
OptimizationFunctor() :
|
||||
m_inputs(InputsAtCompileTime),
|
||||
m_values(ValuesAtCompileTime) {}
|
||||
/** undocumented */
|
||||
OptimizationFunctor(int inputs, int values) :
|
||||
m_inputs(inputs),
|
||||
m_values(values) {}
|
||||
|
||||
/** undocumented */
|
||||
int inputs() const
|
||||
{
|
||||
return m_inputs;
|
||||
}
|
||||
/** undocumented */
|
||||
int values() const
|
||||
{
|
||||
return m_values;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif /* OPENGV_OPTIMIZATIONFUNCTOR_HPP_ */
|
||||
181
thirdparty/opengv/include/opengv/absolute_pose/AbsoluteAdapterBase.hpp
vendored
Normal file
@@ -0,0 +1,181 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file AbsoluteAdapterBase.hpp
|
||||
* \brief Adapter-class for passing bearing-vector-to-point correspondences to
|
||||
* the absolute-pose algorithms.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_ABSOLUTEADAPTERBASE_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_ABSOLUTEADAPTERBASE_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the absolute pose methods.
|
||||
*/
|
||||
namespace absolute_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* The AbsoluteAdapterBase is the base-class for the visitors to the central
|
||||
* and non-central absolute pose algorithms. It provides a unified interface to
|
||||
* opengv-methods to access bearing-vectors, world points, priors or
|
||||
* known variables for the absolute pose, and the multi-camera configuration in
|
||||
* the non-central case. Derived classes may hold the data in any user-specific
|
||||
* format, and adapt to opengv-types.
|
||||
*/
|
||||
class AbsoluteAdapterBase
|
||||
{
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor.
|
||||
*/
|
||||
AbsoluteAdapterBase() :
|
||||
_t(Eigen::Vector3d::Zero()),
|
||||
_R(Eigen::Matrix3d::Identity()) {};
|
||||
/**
|
||||
* \brief Constructor.
|
||||
* \param[in] R A prior or known value for the rotation from the viewpoint
|
||||
* to the world frame.
|
||||
*/
|
||||
AbsoluteAdapterBase( const opengv::rotation_t & R ) :
|
||||
_t(Eigen::Vector3d::Zero()),
|
||||
_R(R) {};
|
||||
/**
|
||||
* \brief Constructor.
|
||||
* \param[in] t A prior or known value for the position of the viewpoint seen
|
||||
* from the world frame.
|
||||
* \param[in] R A prior or known value for the rotation from the viewpoint
|
||||
* to the world frame.
|
||||
*/
|
||||
AbsoluteAdapterBase(
|
||||
const opengv::translation_t & t,
|
||||
const opengv::rotation_t & R ) :
|
||||
_t(t),
|
||||
_R(R) {};
|
||||
/**
|
||||
* \brief Destructor.
|
||||
*/
|
||||
virtual ~AbsoluteAdapterBase() {};
|
||||
|
||||
//Access of correspondences
|
||||
|
||||
/**
|
||||
* \brief Retrieve the bearing vector of a correspondence.
|
||||
* \param[in] index The serialized index of the correspondence.
|
||||
* \return The corresponding bearing vector.
|
||||
*/
|
||||
virtual opengv::bearingVector_t getBearingVector(size_t index ) const = 0;
|
||||
/**
|
||||
* \brief Retrieve the weight of a correspondence. The weight is supposed to
|
||||
* reflect the quality of a correspondence, and typically is between
|
||||
* 0 and 1.
|
||||
* \param[in] index The serialized index of the correspondence.
|
||||
* \return The corresponding weight.
|
||||
*/
|
||||
virtual double getWeight( size_t index ) const = 0;
|
||||
/**
|
||||
* \brief Retrieve the position of a camera of a correspondence
|
||||
* seen from the viewpoint origin.
|
||||
* \param[in] index The serialized index of the correspondence.
|
||||
* \return The position of the corresponding camera seen from the viewpoint
|
||||
* origin.
|
||||
*/
|
||||
virtual opengv::translation_t getCamOffset( size_t index ) const = 0;
|
||||
/**
|
||||
* \brief Retrieve the rotation from a camera of a correspondence to the
|
||||
* viewpoint origin.
|
||||
* \param[in] index The serialized index of the correspondence.
|
||||
* \return The rotation from the corresponding camera back to the viewpoint
|
||||
* origin.
|
||||
*/
|
||||
virtual opengv::rotation_t getCamRotation( size_t index ) const = 0;
|
||||
/**
|
||||
* \brief Retrieve the world point of a correspondence.
|
||||
* \param[in] index The serialized index of the correspondence.
|
||||
* \return The corresponding world point.
|
||||
*/
|
||||
virtual opengv::point_t getPoint( size_t index ) const = 0;
|
||||
/**
|
||||
* \brief Retrieve the number of correspondences.
|
||||
* \return The number of correspondences.
|
||||
*/
|
||||
virtual size_t getNumberCorrespondences() const = 0;
|
||||
|
||||
//Access of priors or known values
|
||||
|
||||
/**
|
||||
* \brief Retrieve the prior or known value for the position.
|
||||
* \return The prior or known value for the position.
|
||||
*/
|
||||
opengv::translation_t gett() const { return _t; };
|
||||
/**
|
||||
* \brief Set the prior or known value for the position.
|
||||
* \param[in] t The prior or known value for the position.
|
||||
*/
|
||||
void sett(const opengv::translation_t & t) { _t = t; };
|
||||
/**
|
||||
* \brief Retrieve the prior or known value for the rotation.
|
||||
* \return The prior or known value for the rotation.
|
||||
*/
|
||||
opengv::rotation_t getR() const { return _R; };
|
||||
/**
|
||||
* \brief Set the prior or known value for the rotation.
|
||||
* \param[in] R The prior or known value for the rotation.
|
||||
*/
|
||||
void setR(const opengv::rotation_t & R) { _R = R; };
|
||||
|
||||
protected:
|
||||
/** The prior or known value for the position of the viewpoint seen from the
|
||||
* world frame. Initialized to zero if not provided.
|
||||
*/
|
||||
opengv::translation_t _t;
|
||||
/** The prior or known value for the rotation from the viewpoint back to the
|
||||
* world frame. Initialized to identity if not provided.
|
||||
*/
|
||||
opengv::rotation_t _R;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_ABSOLUTEADAPTERBASE_HPP_ */
|
||||
229
thirdparty/opengv/include/opengv/absolute_pose/AbsoluteMultiAdapterBase.hpp
vendored
Normal file
@@ -0,0 +1,229 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file AbsoluteMultiAdapterBase.hpp
|
||||
* \brief Adapter-class for passing bearing-vector-to-point correspondences to
|
||||
* the absolute-pose algorithms. Intended for absolute non-central-
|
||||
* viewpoint problems. Access of correspondences etc. via an additional
|
||||
* frame-index referring to the camera.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_ABSOLUTEMULTIADAPTERBASE_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_ABSOLUTEMULTIADAPTERBASE_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/absolute_pose/AbsoluteAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the absolute pose methods.
|
||||
*/
|
||||
namespace absolute_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* See the documentation of AbsoluteAdapterBase to understand the meaning of
|
||||
* an AbsoluteAdapter. AbsoluteMultiAdapterBase extends the interface of
|
||||
* AbsoluteAdapterBase by an additional frame-index for referring to a
|
||||
* camera. Intended for non-central absolute viewpoint problems, allowing
|
||||
* camera-wise access of correspondences. Derived classes need to implement
|
||||
* functionalities for deriving unique serialization of multi-indices.
|
||||
*/
|
||||
class AbsoluteMultiAdapterBase : public AbsoluteAdapterBase
|
||||
{
|
||||
protected:
|
||||
using AbsoluteAdapterBase::_t;
|
||||
using AbsoluteAdapterBase::_R;
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor.
|
||||
*/
|
||||
AbsoluteMultiAdapterBase() :
|
||||
AbsoluteAdapterBase() {};
|
||||
/**
|
||||
* \brief Constructor.
|
||||
* \param[in] R A prior or known value for the rotation from the viewpoint
|
||||
* to the world frame.
|
||||
*/
|
||||
AbsoluteMultiAdapterBase( const opengv::rotation_t & R ) :
|
||||
AbsoluteAdapterBase(R) {};
|
||||
/**
|
||||
* \brief Constructor.
|
||||
* \param[in] t A prior or known value for the position of the viewpoint seen
|
||||
* from the world frame.
|
||||
* \param[in] R A prior or known value for the rotation from the viewpoint
|
||||
* to the world frame.
|
||||
*/
|
||||
AbsoluteMultiAdapterBase(
|
||||
const opengv::translation_t & t,
|
||||
const opengv::rotation_t & R ) :
|
||||
AbsoluteAdapterBase(t,R) {};
|
||||
/**
|
||||
* \brief Destructor.
|
||||
*/
|
||||
virtual ~AbsoluteMultiAdapterBase() {};
|
||||
|
||||
//camera-wise access of correspondences
|
||||
|
||||
/**
|
||||
* \brief Retrieve the bearing vector of a correspondence in a certain frame.
|
||||
* \param[in] frameIndex Index of the frame.
|
||||
* \param[in] correspondenceIndex Index of the correspondence in this frame.
|
||||
* \return The corresponding bearing vector.
|
||||
*/
|
||||
virtual opengv::bearingVector_t getBearingVector(
|
||||
size_t frameIndex, size_t correspondenceIndex ) const = 0;
|
||||
/**
|
||||
* \brief Retrieve the weight of a correspondence. The weight is supposed to
|
||||
* reflect the quality of a correspondence, and typically is between
|
||||
* 0 and 1.
|
||||
* \param[in] frameIndex Index of the frame.
|
||||
* \param[in] correspondenceIndex Index of the correspondence in this frame.
|
||||
* \return The corresponding weight.
|
||||
*/
|
||||
virtual double getWeight(
|
||||
size_t frameIndex, size_t correspondenceIndex ) const = 0;
|
||||
/**
|
||||
* \brief Retrieve the position of a camera seen from the viewpoint origin.
|
||||
* \param[in] frameIndex Index of the frame.
|
||||
* \return The position of the corresponding camera seen from the viewpoint
|
||||
* origin.
|
||||
*/
|
||||
virtual opengv::translation_t getMultiCamOffset( size_t frameIndex ) const = 0;
|
||||
/**
|
||||
* \brief Retrieve the rotation from a camera to the viewpoint frame.
|
||||
* \param[in] frameIndex Index of the frame.
|
||||
* \return The rotation from the corresponding camera back to the viewpoint
|
||||
* origin.
|
||||
*/
|
||||
virtual opengv::rotation_t getMultiCamRotation( size_t frameIndex ) const = 0;
|
||||
/**
|
||||
* \brief Retrieve the world point of a correspondence.
|
||||
* \param[in] frameIndex Index of the frame.
|
||||
* \param[in] correspondenceIndex Index of the correspondence in this frame.
|
||||
* \return The corresponding world point.
|
||||
*/
|
||||
virtual opengv::point_t getPoint(
|
||||
size_t frameIndex, size_t correspondenceIndex ) const = 0;
|
||||
/**
|
||||
* \brief Retrieve the number of correspondences for a camera.
|
||||
* \param[in] frameIndex Index of the camera.
|
||||
* \return The number of correspondences in this camera.
|
||||
*/
|
||||
virtual size_t getNumberCorrespondences( size_t frameIndex ) const = 0;
|
||||
/**
|
||||
* \brief Retrieve the number of cameras.
|
||||
* \return The number of cameras.
|
||||
*/
|
||||
virtual size_t getNumberFrames() const = 0;
|
||||
|
||||
//Conversion to and from serialized indices
|
||||
|
||||
/**
|
||||
* \brief Convert an array of (frameIndex,correspondenceIndex)-pairs into an
|
||||
* array of serialized indices.
|
||||
* \param[in] multiIndices Array of (frameIndex,correspondenceIndex)-pairs.
|
||||
* \return Array of single serialized indices referring uniquely to
|
||||
* (frameIndex,correspondenceIndex)-pairs.
|
||||
*/
|
||||
virtual std::vector<int> convertMultiIndices(
|
||||
const std::vector<std::vector<int> > & multiIndices ) const = 0;
|
||||
/**
|
||||
* \brief Convert a (frameIndex,correspondenceIndex)-pair into a serialized
|
||||
* index.
|
||||
* \param[in] frameIndex The index of the camera.
|
||||
* \param[in] correspondenceIndex The index of the correspondence in the camera.
|
||||
* \return Array of single serialized indices referring uniquely to
|
||||
* (frameIndex,correspondenceIndex)-pairs.
|
||||
*/
|
||||
virtual int convertMultiIndex(
|
||||
size_t frameIndex, size_t correspondenceIndex ) const = 0;
|
||||
/**
|
||||
* \brief Get the frame-index corresponding to a serialized index.
|
||||
* \param[in] index The serialized index.
|
||||
* \return The frame index.
|
||||
*/
|
||||
virtual int multiFrameIndex( size_t index ) const = 0;
|
||||
/**
|
||||
* \brief Get the correspondence-index in a camera for a serialized index.
|
||||
* \param[in] index The serialized index.
|
||||
* \return The correspondence-index in the camera.
|
||||
*/
|
||||
virtual int multiCorrespondenceIndex( size_t index ) const = 0;
|
||||
|
||||
//the classic interface (with serialized indices, used by the opengv-methods)
|
||||
|
||||
/** See parent-class (no need to overload) */
|
||||
virtual bearingVector_t getBearingVector( size_t index ) const
|
||||
{
|
||||
return getBearingVector(
|
||||
multiFrameIndex(index), multiCorrespondenceIndex(index) );
|
||||
}
|
||||
/** See parent-class (no need to overload) */
|
||||
virtual double getWeight( size_t index ) const
|
||||
{
|
||||
return getWeight(
|
||||
multiFrameIndex(index), multiCorrespondenceIndex(index) );
|
||||
}
|
||||
/** See parent-class (no need to overload) */
|
||||
virtual translation_t getCamOffset( size_t index ) const
|
||||
{ return getMultiCamOffset( multiFrameIndex(index) ); }
|
||||
/** See parent-class (no need to overload) */
|
||||
virtual rotation_t getCamRotation( size_t index ) const
|
||||
{ return getMultiCamRotation( multiFrameIndex(index) ); }
|
||||
/** See parent-class (no need to overload) */
|
||||
virtual point_t getPoint( size_t index ) const
|
||||
{
|
||||
return getPoint(
|
||||
multiFrameIndex(index), multiCorrespondenceIndex(index) );
|
||||
}
|
||||
/** See parent-class (no need to overload) */
|
||||
virtual size_t getNumberCorrespondences() const
|
||||
{
|
||||
size_t numberCorrespondences = 0;
|
||||
for(size_t i = 0; i < getNumberFrames(); i++)
|
||||
numberCorrespondences += getNumberCorrespondences(i);
|
||||
return numberCorrespondences;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_ABSOLUTEMULTIADAPTERBASE_HPP_ */
|
||||
122
thirdparty/opengv/include/opengv/absolute_pose/CentralAbsoluteAdapter.hpp
vendored
Normal file
@@ -0,0 +1,122 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file CentralAbsoluteAdapter.hpp
|
||||
* \brief Adapter-class for passing bearing-vector-to-point correspondences to
|
||||
* the central absolute-pose algorithms. It maps opengv types
|
||||
* back to opengv types.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_CENTRALABSOLUTEADAPTER_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_CENTRALABSOLUTEADAPTER_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/absolute_pose/AbsoluteAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the absolute pose methods.
|
||||
*/
|
||||
namespace absolute_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* an AbsoluteAdapter. This child-class is for the central case and holds data
|
||||
* in form of references to opengv-types.
|
||||
*/
|
||||
class CentralAbsoluteAdapter : public AbsoluteAdapterBase
|
||||
{
|
||||
protected:
|
||||
using AbsoluteAdapterBase::_t;
|
||||
using AbsoluteAdapterBase::_R;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
CentralAbsoluteAdapter(
|
||||
const bearingVectors_t & bearingVectors,
|
||||
const points_t & points );
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
CentralAbsoluteAdapter(
|
||||
const bearingVectors_t & bearingVectors,
|
||||
const points_t & points,
|
||||
const rotation_t & R );
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
CentralAbsoluteAdapter(
|
||||
const bearingVectors_t & bearingVectors,
|
||||
const points_t & points,
|
||||
const translation_t & t,
|
||||
const rotation_t & R );
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~CentralAbsoluteAdapter();
|
||||
|
||||
//Access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual opengv::bearingVector_t getBearingVector( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t index ) const;
|
||||
/** See parent-class. Returns zero for this adapter. */
|
||||
virtual opengv::translation_t getCamOffset( size_t index ) const;
|
||||
/** See parent-class Returns identity for this adapter. */
|
||||
virtual opengv::rotation_t getCamRotation( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual opengv::point_t getPoint( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences() const;
|
||||
|
||||
protected:
|
||||
/** Reference to the bearing-vectors expressed in the camera-frame */
|
||||
const bearingVectors_t & _bearingVectors;
|
||||
/** Reference to the points expressed in the world-frame. */
|
||||
const points_t & _points;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_CENTRALABSOLUTEADAPTER_HPP_ */
|
||||
115
thirdparty/opengv/include/opengv/absolute_pose/MACentralAbsolute.hpp
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file MACentralAbsolute.hpp
|
||||
* \brief Adapter-class for passing bearing-vector-to-point correspondences to
|
||||
* the central absolute-pose algorithms. It maps matlab types
|
||||
* back to opengv types.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_MACENTRALABSOLUTE_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_MACENTRALABSOLUTE_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/absolute_pose/AbsoluteAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the absolute pose methods.
|
||||
*/
|
||||
namespace absolute_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* an AbsoluteAdapter. This child-class is for the central case and holds data
|
||||
* in form of pointers to matlab data.
|
||||
*/
|
||||
class MACentralAbsolute : public AbsoluteAdapterBase
|
||||
{
|
||||
protected:
|
||||
using AbsoluteAdapterBase::_t;
|
||||
using AbsoluteAdapterBase::_R;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
MACentralAbsolute(
|
||||
const double * points,
|
||||
const double * bearingVectors,
|
||||
int numberPoints,
|
||||
int numberBearingVectors );
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~MACentralAbsolute();
|
||||
|
||||
//Access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual opengv::bearingVector_t getBearingVector( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t index ) const;
|
||||
/** See parent-class. Returns zero for this adapter. */
|
||||
virtual opengv::translation_t getCamOffset( size_t index ) const;
|
||||
/** See parent-class Returns identity for this adapter. */
|
||||
virtual opengv::rotation_t getCamRotation( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual opengv::point_t getPoint( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences() const;
|
||||
|
||||
protected:
|
||||
|
||||
/** A pointer to the point data */
|
||||
const double * _points;
|
||||
/** A pointer to the bearing-vectors */
|
||||
const double * _bearingVectors;
|
||||
/** The number of points */
|
||||
int _numberPoints;
|
||||
/** The number of bearing vectors */
|
||||
int _numberBearingVectors;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_MACENTRALABSOLUTE_HPP_ */
|
||||
115
thirdparty/opengv/include/opengv/absolute_pose/MANoncentralAbsolute.hpp
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file MANoncentralAbsolute.hpp
|
||||
* \brief Adapter-class for passing bearing-vector-to-point correspondences to
|
||||
* the non-central absolute-pose algorithms. It maps matlab
|
||||
* types to opengv types.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_MANONCENTRALABSOLUTE_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_MANONCENTRALABSOLUTE_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/absolute_pose/AbsoluteAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the absolute pose methods.
|
||||
*/
|
||||
namespace absolute_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* an AbsoluteAdapter. This child-class is for the non-central case and holds
|
||||
* data in form of pointers to matlab-data.
|
||||
*/
|
||||
class MANoncentralAbsolute : public AbsoluteAdapterBase
|
||||
{
|
||||
protected:
|
||||
using AbsoluteAdapterBase::_t;
|
||||
using AbsoluteAdapterBase::_R;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
MANoncentralAbsolute(
|
||||
const double * points,
|
||||
const double * bearingVectors,
|
||||
int numberPoints,
|
||||
int numberBearingVectors );
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~MANoncentralAbsolute();
|
||||
|
||||
//Access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual opengv::bearingVector_t getBearingVector( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual opengv::translation_t getCamOffset( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual opengv::rotation_t getCamRotation( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual opengv::point_t getPoint( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences() const;
|
||||
|
||||
protected:
|
||||
|
||||
/** A pointer to the point data */
|
||||
const double * _points;
|
||||
/** A pointer to the bearing-vectors */
|
||||
const double * _bearingVectors;
|
||||
/** The number of points */
|
||||
int _numberPoints;
|
||||
/** The number of bearing vectors */
|
||||
int _numberBearingVectors;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_MANONCENTRALABSOLUTE_HPP_ */
|
||||
150
thirdparty/opengv/include/opengv/absolute_pose/NoncentralAbsoluteAdapter.hpp
vendored
Normal file
@@ -0,0 +1,150 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file NoncentralAbsoluteAdapter.hpp
|
||||
* \brief Adapter-class for passing bearing-vector-to-point correspondences to
|
||||
* the non-central absolute-pose algorithms. It maps opengv
|
||||
* types back to opengv types.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_NONCENTRALABSOLUTEADAPTER_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_NONCENTRALABSOLUTEADAPTER_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/absolute_pose/AbsoluteAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the absolute pose methods.
|
||||
*/
|
||||
namespace absolute_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* an AbsoluteAdapter. This child-class is for the non-central case and holds
|
||||
* data in form of references to opengv-types.
|
||||
*/
|
||||
class NoncentralAbsoluteAdapter : public AbsoluteAdapterBase
|
||||
{
|
||||
protected:
|
||||
using AbsoluteAdapterBase::_t;
|
||||
using AbsoluteAdapterBase::_R;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/** A type defined for the camera-correspondences, see protected
|
||||
* class-members
|
||||
*/
|
||||
typedef std::vector<int> camCorrespondences_t;
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
NoncentralAbsoluteAdapter(
|
||||
const bearingVectors_t & bearingVectors,
|
||||
const camCorrespondences_t & camCorrespondences,
|
||||
const points_t & points,
|
||||
const translations_t & camOffsets,
|
||||
const rotations_t & camRotations );
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
NoncentralAbsoluteAdapter(
|
||||
const bearingVectors_t & bearingVectors,
|
||||
const camCorrespondences_t & camCorrespondences,
|
||||
const points_t & points,
|
||||
const translations_t & camOffsets,
|
||||
const rotations_t & camRotations,
|
||||
const rotation_t & R );
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
NoncentralAbsoluteAdapter(
|
||||
const bearingVectors_t & bearingVectors,
|
||||
const camCorrespondences_t & camCorrespondences,
|
||||
const points_t & points,
|
||||
const translations_t & camOffsets,
|
||||
const rotations_t & camRotations,
|
||||
const translation_t & t,
|
||||
const rotation_t & R );
|
||||
/**
|
||||
* \brief Destructor.
|
||||
*/
|
||||
virtual ~NoncentralAbsoluteAdapter();
|
||||
|
||||
//Access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual opengv::bearingVector_t getBearingVector( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual opengv::translation_t getCamOffset( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual opengv::rotation_t getCamRotation( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual opengv::point_t getPoint( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences() const;
|
||||
|
||||
protected:
|
||||
/** Reference to the bearing-vectors expressed in the camera-frames */
|
||||
const bearingVectors_t & _bearingVectors;
|
||||
/** Reference to an array of camera-indices for the bearing vectors. Length
|
||||
* equals to number of bearing-vectors, and elements are indices of cameras
|
||||
* in the _camOffsets and _camRotations arrays.
|
||||
*/
|
||||
const camCorrespondences_t & _camCorrespondences;
|
||||
/** Reference to the points expressed in the world-frame. */
|
||||
const points_t & _points;
|
||||
|
||||
/** Reference to positions of the different cameras seen from the
|
||||
* viewpoint.
|
||||
*/
|
||||
const translations_t & _camOffsets;
|
||||
/** Reference to rotations from the different cameras back to the
|
||||
* viewpoint.
|
||||
*/
|
||||
const rotations_t & _camRotations;
|
||||
};
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_NONCENTRALABSOLUTEADAPTER_HPP_ */
|
||||
147
thirdparty/opengv/include/opengv/absolute_pose/NoncentralAbsoluteMultiAdapter.hpp
vendored
Normal file
@@ -0,0 +1,147 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file NoncentralAbsoluteMultiAdapter.hpp
|
||||
* \brief Adapter-class for passing bearing-vector-to-point correspondences to
|
||||
* the non-central absolute-pose algorithms. It maps opengv
|
||||
* types back to opengv types. Manages multiple match-lists for each camera.
|
||||
* This allows to draw samples homogeneously over the cameras.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_NONCENTRALABSOLUTEMULTIADAPTER_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_NONCENTRALABSOLUTEMULTIADAPTER_HPP_
|
||||
|
||||
#include <memory>
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/absolute_pose/AbsoluteMultiAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the absolute pose methods.
|
||||
*/
|
||||
namespace absolute_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* an AbsoluteAdapter. This child-class is for the non-central case and holds
|
||||
* data in form of references to opengv-types.
|
||||
*/
|
||||
|
||||
class NoncentralAbsoluteMultiAdapter : public AbsoluteMultiAdapterBase
|
||||
{
|
||||
protected:
|
||||
using AbsoluteMultiAdapterBase::_t;
|
||||
using AbsoluteMultiAdapterBase::_R;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
NoncentralAbsoluteMultiAdapter(
|
||||
std::vector<std::shared_ptr<bearingVectors_t> > bearingVectors,
|
||||
std::vector<std::shared_ptr<points_t> > points,
|
||||
const translations_t & camOffsets,
|
||||
const rotations_t & camRotations );
|
||||
/**
|
||||
* \brief Destructor.
|
||||
*/
|
||||
virtual ~NoncentralAbsoluteMultiAdapter();
|
||||
|
||||
//camera-wise access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual point_t getPoint(
|
||||
size_t frameIndex, size_t correspondenceIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector(
|
||||
size_t frameIndex, size_t correspondenceIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t frameIndex, size_t correspondenceIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual translation_t getMultiCamOffset( size_t frameIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual rotation_t getMultiCamRotation( size_t frameIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences( size_t frameIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberFrames() const;
|
||||
|
||||
//Conversion to and from serialized indices
|
||||
|
||||
/** See parent-class */
|
||||
virtual std::vector<int> convertMultiIndices(
|
||||
const std::vector<std::vector<int> > & multiIndices ) const;
|
||||
/** See parent-class */
|
||||
virtual int convertMultiIndex(
|
||||
size_t frameIndex, size_t correspondenceIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual int multiFrameIndex( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual int multiCorrespondenceIndex( size_t index ) const;
|
||||
|
||||
protected:
|
||||
/** References to multiple sets of bearing-vectors (the ones from each camera).
|
||||
*/
|
||||
std::vector<std::shared_ptr<bearingVectors_t> > _bearingVectors;
|
||||
/** References to multiple sets of points (the ones from each camera).
|
||||
*/
|
||||
std::vector<std::shared_ptr<points_t> > _points;
|
||||
|
||||
/** Reference to positions of the different cameras seen from the
|
||||
* viewpoint.
|
||||
*/
|
||||
const translations_t & _camOffsets;
|
||||
/** Reference to rotations from the different cameras back to the
|
||||
* viewpoint.
|
||||
*/
|
||||
const rotations_t & _camRotations;
|
||||
|
||||
/** Initialized in constructor, used for (de)-serialiaztion of indices */
|
||||
std::vector<int> multiFrameIndices;
|
||||
/** Initialized in constructor, used for (de)-serialiaztion of indices */
|
||||
std::vector<int> multiKeypointIndices;
|
||||
/** Initialized in constructor, used for (de)-serialiaztion of indices */
|
||||
std::vector<int> singleIndexOffsets;
|
||||
};
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_NONCENTRALABSOLUTEADAPTER_HPP_ */
|
||||
322
thirdparty/opengv/include/opengv/absolute_pose/methods.hpp
vendored
Normal file
@@ -0,0 +1,322 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file absolute_pose/methods.hpp
|
||||
* \brief Methods for computing the absolute pose of a calibrated viewpoint.
|
||||
*
|
||||
* The collection includes both minimal and non-minimal solutions for
|
||||
* computing the absolute pose of a calibrated, either central or non-central
|
||||
* viewpoint.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_METHODS_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_METHODS_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/absolute_pose/AbsoluteAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the absolute pose methods.
|
||||
*/
|
||||
namespace absolute_pose
|
||||
{
|
||||
|
||||
/** \brief Compute the pose of a central viewpoint with known rotation using two
|
||||
* point correspondences.
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vectors, world points, and
|
||||
* known rotation.
|
||||
* \param[in] indices Indices of the two correspondences that are used for
|
||||
* deriving the translation.
|
||||
* \return The position of the viewpoint seen from the world frame.
|
||||
*/
|
||||
translation_t p2p(
|
||||
const AbsoluteAdapterBase & adapter,
|
||||
const std::vector<int> & indices );
|
||||
|
||||
/**
|
||||
* \brief Compute the pose of a central viewpoint with known rotation using two
|
||||
* point correspondences.
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vectors, world points, and
|
||||
* known rotation.
|
||||
* \param[in] index0 Index of the first correspondence used for deriving the
|
||||
* translation (use default value if only two vectors provided
|
||||
* by the visitor anyway).
|
||||
* \param[in] index1 Index of the second correspondence used for deriving the
|
||||
* translation (use default value if only two vectors provided
|
||||
* by the visitor anyway).
|
||||
* \return The position of the viewpoint seen from the world frame.
|
||||
*/
|
||||
translation_t p2p(
|
||||
const AbsoluteAdapterBase & adapter,
|
||||
size_t index0 = 0,
|
||||
size_t index1 = 1 );
|
||||
|
||||
/**
|
||||
* \brief Compute the pose of a central viewpoint using three point
|
||||
* correspondences and Kneip's method [1].
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point correspondences.
|
||||
* \param[in] indices Indices of the three correspondences that are used for
|
||||
* deriving the pose.
|
||||
* \return Poses of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from viewpoint to
|
||||
* world, frame, maximum 4 solutions).
|
||||
*/
|
||||
transformations_t p3p_kneip(
|
||||
const AbsoluteAdapterBase & adapter,
|
||||
const std::vector<int> & indices );
|
||||
|
||||
/**
|
||||
* \brief Compute the pose of a central viewpoint using three point
|
||||
* correspondences and Kneip's method [1].
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point correspondences.
|
||||
* \param[in] index0 Index of the first correspondence used for deriving the
|
||||
* pose (use default value if only three correspondences
|
||||
* provided anyway).
|
||||
* \param[in] index1 Index of the second correspondence used for deriving the
|
||||
* pose (use default value if only three correspondences
|
||||
* provided anyway).
|
||||
* \param[in] index2 Index of the third correspondence used for deriving the
|
||||
* pose (use default value if only three correspondences
|
||||
* provided anyway).
|
||||
* \return Poses of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from viewpoint to
|
||||
* world frame, maximum 4 solutions).
|
||||
*/
|
||||
transformations_t p3p_kneip(
|
||||
const AbsoluteAdapterBase & adapter,
|
||||
size_t index0 = 0,
|
||||
size_t index1 = 1,
|
||||
size_t index2 = 2 );
|
||||
|
||||
/**
|
||||
* \brief Compute the pose of a central viewpoint using three point correspondences
|
||||
* and Gao's method [2].
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point correspondences.
|
||||
* \param[in] indices Indices of the three correspondences that are used for
|
||||
* deriving the pose.
|
||||
* \return Poses of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from viewpoint to
|
||||
* world frame, maximum 4 solutions).
|
||||
*/
|
||||
transformations_t p3p_gao(
|
||||
const AbsoluteAdapterBase & adapter,
|
||||
const std::vector<int> & indices );
|
||||
|
||||
/**
|
||||
* \brief Compute the pose of a central viewpoint using three point
|
||||
* correspondences and Gao's method [2].
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point correspondences.
|
||||
* \param[in] index0 Index of the first correspondence used for deriving the
|
||||
* pose (use default value if only three correspondences
|
||||
* provided anyway).
|
||||
* \param[in] index1 Index of the second correspondence used for deriving the
|
||||
* pose (use default value if only three correspondences
|
||||
* provided anyway).
|
||||
* \param[in] index2 Index of the third correspondence used for deriving the
|
||||
* pose (use default value if only three correspondences
|
||||
* provided anyway).
|
||||
* \return Poses of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from viewpoint to
|
||||
* world frame, maximum 4 solutions).
|
||||
*/
|
||||
transformations_t p3p_gao(
|
||||
const AbsoluteAdapterBase & adapter,
|
||||
size_t index0 = 0,
|
||||
size_t index1 = 1,
|
||||
size_t index2 = 2 );
|
||||
|
||||
/**
|
||||
* \brief Compute the pose of a non-central viewpoint using three point
|
||||
* correspondences and Kneip's method [3].
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point
|
||||
* correspondences, plus the multi-camera configuration.
|
||||
* \param[in] indices Indices of the three correspondences that are used for
|
||||
* deriving the pose.
|
||||
* \return Poses of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from
|
||||
* viewpoint to world frame, maximum 8 solutions).
|
||||
*/
|
||||
transformations_t gp3p(
|
||||
const AbsoluteAdapterBase & adapter,
|
||||
const std::vector<int> & indices );
|
||||
|
||||
/**
|
||||
* \brief Compute the pose of a non-central viewpoint using three point
|
||||
* correspondences and Kneip's method [3].
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point
|
||||
* correspondences, plus the multi-camera configuration.
|
||||
* \param[in] index0 Index of the first correspondence used for deriving the
|
||||
* pose (use default value if only three correspondences
|
||||
* provided anyway).
|
||||
* \param[in] index1 Index of the second correspondence used for deriving the
|
||||
* pose (use default value if only three correspondences
|
||||
* provided anyway).
|
||||
* \param[in] index2 Index of the third correspondence used for deriving the
|
||||
* pose (use default value if only three correspondences
|
||||
* provided anyway).
|
||||
* \return Poses of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from
|
||||
* viewpoint to world frame, maximum 8 solutions).
|
||||
*/
|
||||
transformations_t gp3p(
|
||||
const AbsoluteAdapterBase & adapter,
|
||||
size_t index0 = 0,
|
||||
size_t index1 = 1,
|
||||
size_t index2 = 2 );
|
||||
|
||||
/**
|
||||
* \brief Compute the pose of a central viewpoint using the EPnP method [4].
|
||||
* Using all available correspondences.
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point correspondences.
|
||||
* \return Pose of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from viewpoint to
|
||||
* world frame).
|
||||
*/
|
||||
transformation_t epnp( const AbsoluteAdapterBase & adapter );
|
||||
|
||||
/**
|
||||
* \brief Compute the pose of a central viewpoint using the EPnP method [4].
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point correspondences.
|
||||
* \param[in] indices Indices of the n correspondences that are used for
|
||||
* deriving the pose.
|
||||
* \return Pose of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from viewpoint to
|
||||
* world frame).
|
||||
*/
|
||||
transformation_t epnp(
|
||||
const AbsoluteAdapterBase & adapter,
|
||||
const std::vector<int> & indices );
|
||||
|
||||
/**
|
||||
* \brief Compute the pose of a non-central viewpoint using the gPnP method [3].
|
||||
* Using all available correspondences.
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point
|
||||
* correspondences, plus the multi-camera configuration.
|
||||
* \return Pose of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from viewpoint to
|
||||
* world frame).
|
||||
*/
|
||||
transformation_t gpnp( const AbsoluteAdapterBase & adapter );
|
||||
|
||||
/**
|
||||
* \brief Compute the pose of a non-central viewpoint using the gPnP method [3].
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point
|
||||
* correspondences, plus the multi-camera configuration.
|
||||
* \param[in] indices Indices of the n correspondences that are used for
|
||||
* deriving the pose.
|
||||
* \return Pose of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from viewpoint to
|
||||
* world frame).
|
||||
*/
|
||||
transformation_t gpnp(
|
||||
const AbsoluteAdapterBase & adapter,
|
||||
const std::vector<int> & indices );
|
||||
|
||||
/**
|
||||
* \brief Compute the poses of a non-central viewpoint using the uPnP method.
|
||||
* Using all available correspondences.
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point
|
||||
* correspondences, plus the multi-camera configuration.
|
||||
* \return Poses of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from viewpoint to
|
||||
* world frame).
|
||||
*/
|
||||
transformations_t upnp( const AbsoluteAdapterBase & adapter );
|
||||
|
||||
/**
|
||||
* \brief Compute the poses of a non-central viewpoint using the uPnP method.
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point
|
||||
* correspondences, plus the multi-camera configuration.
|
||||
* \param[in] indices Indices of the n correspondences that are used for
|
||||
* deriving the pose.
|
||||
* \return Poses of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from viewpoint to
|
||||
* world frame).
|
||||
*/
|
||||
transformations_t upnp(
|
||||
const AbsoluteAdapterBase & adapter,
|
||||
const std::vector<int> & indices );
|
||||
|
||||
/**
|
||||
* \brief Compute the pose of a viewpoint using nonlinear optimization. Using
|
||||
* all available correspondences. Works for central and non-central case.
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point
|
||||
* correspondences, the multi-camera configuration, plus
|
||||
* the initial values.
|
||||
* \return Pose of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from viewpoint to
|
||||
* world frame).
|
||||
*/
|
||||
transformation_t optimize_nonlinear( const AbsoluteAdapterBase & adapter );
|
||||
|
||||
/**
|
||||
* \brief Compute the pose of a viewpoint using nonlinear optimization. Works
|
||||
* for central and non-central viewpoints.
|
||||
*
|
||||
* \param[in] adapter Visitor holding bearing vector to world point
|
||||
* correspondences, the multi-camera configuration, plus
|
||||
* the initial values.
|
||||
* \param[in] indices Indices of the n correspondences that are used for
|
||||
* deriving the pose.
|
||||
* \return Pose of viewpoint (position seen from world frame and orientation
|
||||
* from viewpoint to world frame, transforms points from viewpoint to
|
||||
* world frame).
|
||||
*/
|
||||
transformation_t optimize_nonlinear(
|
||||
const AbsoluteAdapterBase & adapter,
|
||||
const std::vector<int> & indices );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_METHODS_HPP_ */
|
||||
161
thirdparty/opengv/include/opengv/absolute_pose/modules/Epnp.hpp
vendored
Normal file
@@ -0,0 +1,161 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
// Note: this code has been downloaded from the homepage of the "Computer
|
||||
// Vision Laboratory" at EPFL Lausanne, and was originally developped by the
|
||||
// authors of [4]. I only adapted it to Eigen.
|
||||
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_MODULES_EPNP_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_MODULES_EPNP_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <Eigen/Eigen>
|
||||
#include <Eigen/src/Core/util/DisableStupidWarnings.h>
|
||||
|
||||
namespace opengv
|
||||
{
|
||||
namespace absolute_pose
|
||||
{
|
||||
namespace modules
|
||||
{
|
||||
|
||||
class Epnp
|
||||
{
|
||||
public:
|
||||
Epnp(void);
|
||||
~Epnp();
|
||||
|
||||
void set_maximum_number_of_correspondences(const int n);
|
||||
void reset_correspondences(void);
|
||||
void add_correspondence(
|
||||
const double X,
|
||||
const double Y,
|
||||
const double Z,
|
||||
const double x,
|
||||
const double y,
|
||||
const double z);
|
||||
|
||||
double compute_pose(double R[3][3], double T[3]);
|
||||
|
||||
void relative_error(
|
||||
double & rot_err,
|
||||
double & transl_err,
|
||||
const double Rtrue[3][3],
|
||||
const double ttrue[3],
|
||||
const double Rest[3][3],
|
||||
const double test[3]);
|
||||
|
||||
void print_pose(const double R[3][3], const double t[3]);
|
||||
double reprojection_error(const double R[3][3], const double t[3]);
|
||||
|
||||
private:
|
||||
void choose_control_points(void);
|
||||
void compute_barycentric_coordinates(void);
|
||||
void fill_M(
|
||||
Eigen::MatrixXd & M,
|
||||
const int row,
|
||||
const double * alphas,
|
||||
const double u,
|
||||
const double v);
|
||||
void compute_ccs(const double * betas, const Eigen::MatrixXd & ut);
|
||||
void compute_pcs(void);
|
||||
|
||||
void solve_for_sign(void);
|
||||
|
||||
void find_betas_approx_1(
|
||||
const Eigen::Matrix<double,6,10> & L_6x10,
|
||||
const Eigen::Matrix<double,6,1> & Rho,
|
||||
double * betas);
|
||||
void find_betas_approx_2(
|
||||
const Eigen::Matrix<double,6,10> & L_6x10,
|
||||
const Eigen::Matrix<double,6,1> & Rho,
|
||||
double * betas);
|
||||
void find_betas_approx_3(
|
||||
const Eigen::Matrix<double,6,10> & L_6x10,
|
||||
const Eigen::Matrix<double,6,1> & Rho,
|
||||
double * betas);
|
||||
void qr_solve(
|
||||
Eigen::Matrix<double,6,4> & A,
|
||||
Eigen::Matrix<double,6,1> & b,
|
||||
Eigen::Matrix<double,4,1> & X);
|
||||
|
||||
double dot(const double * v1, const double * v2);
|
||||
double dist2(const double * p1, const double * p2);
|
||||
|
||||
void compute_rho(Eigen::Matrix<double,6,1> & Rho);
|
||||
void compute_L_6x10(
|
||||
const Eigen::MatrixXd & Ut,
|
||||
Eigen::Matrix<double,6,10> & L_6x10 );
|
||||
|
||||
void gauss_newton(
|
||||
const Eigen::Matrix<double,6,10> & L_6x10,
|
||||
const Eigen::Matrix<double,6,1> & Rho,
|
||||
double current_betas[4]);
|
||||
void compute_A_and_b_gauss_newton(
|
||||
const Eigen::Matrix<double,6,10> & L_6x10,
|
||||
const Eigen::Matrix<double,6,1> & Rho,
|
||||
double cb[4],
|
||||
Eigen::Matrix<double,6,4> & A,
|
||||
Eigen::Matrix<double,6,1> & b);
|
||||
|
||||
double compute_R_and_t(
|
||||
const Eigen::MatrixXd & Ut,
|
||||
const double * betas,
|
||||
double R[3][3],
|
||||
double t[3]);
|
||||
|
||||
void estimate_R_and_t(double R[3][3], double t[3]);
|
||||
|
||||
void copy_R_and_t(
|
||||
const double R_dst[3][3],
|
||||
const double t_dst[3],
|
||||
double R_src[3][3],
|
||||
double t_src[3]);
|
||||
|
||||
void mat_to_quat(const double R[3][3], double q[4]);
|
||||
|
||||
|
||||
double uc, vc, fu, fv;
|
||||
|
||||
double * pws, * us, * alphas, * pcs;
|
||||
int * signs; //added!
|
||||
int maximum_number_of_correspondences;
|
||||
int number_of_correspondences;
|
||||
|
||||
double cws[4][3], ccs[4][3];
|
||||
double cws_determinant;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_MODULES_EPNP_HPP_ */
|
||||
193
thirdparty/opengv/include/opengv/absolute_pose/modules/gp3p/modules.hpp
vendored
Normal file
@@ -0,0 +1,193 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_MODULES_GP3P_MODULES_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_MODULES_GP3P_MODULES_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <Eigen/Eigen>
|
||||
#include <Eigen/src/Core/util/DisableStupidWarnings.h>
|
||||
|
||||
|
||||
namespace opengv
|
||||
{
|
||||
namespace absolute_pose
|
||||
{
|
||||
namespace modules
|
||||
{
|
||||
namespace gp3p
|
||||
{
|
||||
|
||||
void init(
|
||||
Eigen::Matrix<double,48,85> & groebnerMatrix,
|
||||
const Eigen::Matrix<double,3,3> & f,
|
||||
const Eigen::Matrix<double,3,3> & v,
|
||||
const Eigen::Matrix<double,3,3> & p );
|
||||
void compute( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void sPolynomial9( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void sPolynomial10( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow9_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial11( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow10_000010_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow10_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial12( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow11_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial13( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow10_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow12_000010_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow12_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow12_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial14( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void sPolynomial15( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow14_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial16( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow15_010000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow10_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow12_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow15_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow15_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial17( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void sPolynomial18( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow15_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow17_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial19( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow12_010000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow16_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial20( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow12_000001_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow15_000001_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial21( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow19_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow19_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial22( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow19_000010_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow18_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial23( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow19_000001_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow20_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial24( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow15_100100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow16_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow21_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial25( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow15_100010_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow16_000010_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow22_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow15_000010_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial26( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow15_100001_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow16_000001_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow23_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial27( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow12_100100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow24_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial28( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow12_100010_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow25_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial29( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow12_100001_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow10_000001_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow26_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial30( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow28_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow27_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial31( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow29_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial32( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow31_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow30_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow31_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow30_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial33( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow32_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial34( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow32_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow33_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow33_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial35( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow34_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow34_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial36( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow35_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow35_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial37( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void sPolynomial38( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow37_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow36_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow37_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial39( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow38_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow38_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial40( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow39_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow39_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial41( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow40_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow40_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial42( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow32_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow33_000010_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow34_000010_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow33_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow34_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow35_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow37_000010_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow38_000010_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow37_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow38_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow39_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow41_100000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow41_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial43( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow33_000001_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow37_000001_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow42_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial44( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow31_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow30_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial45( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow36_000100_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow36_010000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow44_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial46( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow36_000010_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow45_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial47( Eigen::Matrix<double,48,85> & groebnerMatrix );
|
||||
void groebnerRow36_000001_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow43_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow46_000000_f( Eigen::Matrix<double,48,85> & groebnerMatrix, int targetRow );
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_MODULES_GP3P_MODULES_HPP_ */
|
||||
67
thirdparty/opengv/include/opengv/absolute_pose/modules/gpnp1/modules.hpp
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_MODULES_GPNP1_MODULES_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_MODULES_GPNP1_MODULES_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <Eigen/Eigen>
|
||||
#include <Eigen/src/Core/util/DisableStupidWarnings.h>
|
||||
#include <vector>
|
||||
|
||||
namespace opengv
|
||||
{
|
||||
namespace absolute_pose
|
||||
{
|
||||
namespace modules
|
||||
{
|
||||
namespace gpnp1
|
||||
{
|
||||
|
||||
void init(
|
||||
Eigen::Matrix<double,5,3> & groebnerMatrix,
|
||||
const Eigen::Matrix<double,12,1> & a,
|
||||
Eigen::Matrix<double,12,1> & n,
|
||||
Eigen::Vector3d & c0,
|
||||
Eigen::Vector3d & c1,
|
||||
Eigen::Vector3d & c2,
|
||||
Eigen::Vector3d & c3 );
|
||||
void compute( Eigen::Matrix<double,5,3> & groebnerMatrix );
|
||||
void sPolynomial3( Eigen::Matrix<double,5,3> & groebnerMatrix );
|
||||
void sPolynomial4( Eigen::Matrix<double,5,3> & groebnerMatrix );
|
||||
void groebnerRow3_0_f( Eigen::Matrix<double,5,3> & groebnerMatrix, int targetRow );
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_MODULES_GPNP1_MODULES_HPP_ */
|
||||
75
thirdparty/opengv/include/opengv/absolute_pose/modules/gpnp2/modules.hpp
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_MODULES_GPNP2_MODULES_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_MODULES_GPNP2_MODULES_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <Eigen/Eigen>
|
||||
#include <Eigen/src/Core/util/DisableStupidWarnings.h>
|
||||
#include <vector>
|
||||
|
||||
namespace opengv
|
||||
{
|
||||
namespace absolute_pose
|
||||
{
|
||||
namespace modules
|
||||
{
|
||||
namespace gpnp2
|
||||
{
|
||||
|
||||
void init(
|
||||
Eigen::Matrix<double,10,6> & groebnerMatrix,
|
||||
const Eigen::Matrix<double,12,1> & a,
|
||||
Eigen::Matrix<double,12,1> & n,
|
||||
Eigen::Matrix<double,12,1> & m,
|
||||
Eigen::Vector3d & c0,
|
||||
Eigen::Vector3d & c1,
|
||||
Eigen::Vector3d & c2,
|
||||
Eigen::Vector3d & c3 );
|
||||
void compute( Eigen::Matrix<double,10,6> & groebnerMatrix );
|
||||
void sPolynomial5( Eigen::Matrix<double,10,6> & groebnerMatrix );
|
||||
void sPolynomial6( Eigen::Matrix<double,10,6> & groebnerMatrix );
|
||||
void groebnerRow5_00_f( Eigen::Matrix<double,10,6> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial7( Eigen::Matrix<double,10,6> & groebnerMatrix );
|
||||
void groebnerRow6_00_f( Eigen::Matrix<double,10,6> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial8( Eigen::Matrix<double,10,6> & groebnerMatrix );
|
||||
void groebnerRow7_10_f( Eigen::Matrix<double,10,6> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow7_00_f( Eigen::Matrix<double,10,6> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial9( Eigen::Matrix<double,10,6> & groebnerMatrix );
|
||||
void groebnerRow8_00_f( Eigen::Matrix<double,10,6> & groebnerMatrix, int targetRow );
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_MODULES_GPNP2_MODULES_HPP_ */
|
||||
100
thirdparty/opengv/include/opengv/absolute_pose/modules/gpnp3/modules.hpp
vendored
Normal file
@@ -0,0 +1,100 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_MODULES_GPNP3_MODULES_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_MODULES_GPNP3_MODULES_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <Eigen/Eigen>
|
||||
#include <Eigen/src/Core/util/DisableStupidWarnings.h>
|
||||
#include <vector>
|
||||
|
||||
namespace opengv
|
||||
{
|
||||
namespace absolute_pose
|
||||
{
|
||||
namespace modules
|
||||
{
|
||||
namespace gpnp3
|
||||
{
|
||||
|
||||
void init(
|
||||
Eigen::Matrix<double,15,18> & groebnerMatrix,
|
||||
const Eigen::Matrix<double,12,1> & a,
|
||||
Eigen::Matrix<double,12,1> & n,
|
||||
Eigen::Matrix<double,12,1> & m,
|
||||
Eigen::Matrix<double,12,1> & k,
|
||||
Eigen::Vector3d & c0,
|
||||
Eigen::Vector3d & c1,
|
||||
Eigen::Vector3d & c2,
|
||||
Eigen::Vector3d & c3 );
|
||||
void compute( Eigen::Matrix<double,15,18> & groebnerMatrix );
|
||||
void sPolynomial4( Eigen::Matrix<double,15,18> & groebnerMatrix );
|
||||
void sPolynomial5( Eigen::Matrix<double,15,18> & groebnerMatrix );
|
||||
void groebnerRow4_000_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial6( Eigen::Matrix<double,15,18> & groebnerMatrix );
|
||||
void groebnerRow5_000_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial7( Eigen::Matrix<double,15,18> & groebnerMatrix );
|
||||
void groebnerRow5_100_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow6_100_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow6_000_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial8( Eigen::Matrix<double,15,18> & groebnerMatrix );
|
||||
void groebnerRow4_100_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow7_000_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow3_000_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial9( Eigen::Matrix<double,15,18> & groebnerMatrix );
|
||||
void groebnerRow5_010_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow3_100_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow8_000_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial10( Eigen::Matrix<double,15,18> & groebnerMatrix );
|
||||
void groebnerRow4_010_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow9_100_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow9_000_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial11( Eigen::Matrix<double,15,18> & groebnerMatrix );
|
||||
void groebnerRow10_000_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial12( Eigen::Matrix<double,15,18> & groebnerMatrix );
|
||||
void groebnerRow10_100_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow11_100_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow11_000_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial13( Eigen::Matrix<double,15,18> & groebnerMatrix );
|
||||
void groebnerRow11_010_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow12_010_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow12_100_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow12_000_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial14( Eigen::Matrix<double,15,18> & groebnerMatrix );
|
||||
void groebnerRow13_000_f( Eigen::Matrix<double,15,18> & groebnerMatrix, int targetRow );
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_MODULES_GPNP3_MODULES_HPP_ */
|
||||
145
thirdparty/opengv/include/opengv/absolute_pose/modules/gpnp4/modules.hpp
vendored
Normal file
@@ -0,0 +1,145 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_MODULES_GPNP4_MODULES_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_MODULES_GPNP4_MODULES_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <Eigen/Eigen>
|
||||
#include <Eigen/src/Core/util/DisableStupidWarnings.h>
|
||||
#include <vector>
|
||||
|
||||
namespace opengv
|
||||
{
|
||||
namespace absolute_pose
|
||||
{
|
||||
namespace modules
|
||||
{
|
||||
namespace gpnp4
|
||||
{
|
||||
|
||||
void init(
|
||||
Eigen::Matrix<double,25,37> & groebnerMatrix,
|
||||
const Eigen::Matrix<double,12,1> & a,
|
||||
Eigen::Matrix<double,12,1> & n,
|
||||
Eigen::Matrix<double,12,1> & m,
|
||||
Eigen::Matrix<double,12,1> & k,
|
||||
Eigen::Matrix<double,12,1> & l,
|
||||
Eigen::Vector3d & c0,
|
||||
Eigen::Vector3d & c1,
|
||||
Eigen::Vector3d & c2,
|
||||
Eigen::Vector3d & c3 );
|
||||
void compute( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void sPolynomial5( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void sPolynomial6( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow5_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial7( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow6_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial8( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow7_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial9( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow7_0100_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow8_0100_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow5_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow6_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow7_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow8_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow8_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial10( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow6_0100_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow9_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial11( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow4_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow10_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow4_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial12( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow5_0100_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow11_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial13( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow6_0010_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow4_0100_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow12_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial14( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow5_0010_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow13_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial15( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow14_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow14_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial16( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow13_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow15_0100_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow15_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow15_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial17( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow12_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow16_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow16_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial18( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow14_0001_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow14_0010_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow17_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow17_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial19( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow18_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial20( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow18_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow19_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow19_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial21( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow20_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow20_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial22( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow19_0001_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow19_0010_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow20_0001_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow20_0010_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow21_0010_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow20_0100_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow21_0100_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow21_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow21_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial23( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow20_1100_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow21_1100_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow22_1100_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow19_0100_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow22_0100_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow22_1000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow22_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial24( Eigen::Matrix<double,25,37> & groebnerMatrix );
|
||||
void groebnerRow23_0000_f( Eigen::Matrix<double,25,37> & groebnerMatrix, int targetRow );
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_MODULES_GPNP4_MODULES_HPP_ */
|
||||
250
thirdparty/opengv/include/opengv/absolute_pose/modules/gpnp5/modules.hpp
vendored
Normal file
@@ -0,0 +1,250 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_MODULES_GPNP5_MODULES_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_MODULES_GPNP5_MODULES_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <Eigen/Eigen>
|
||||
#include <Eigen/src/Core/util/DisableStupidWarnings.h>
|
||||
#include <vector>
|
||||
|
||||
namespace opengv
|
||||
{
|
||||
namespace absolute_pose
|
||||
{
|
||||
namespace modules
|
||||
{
|
||||
namespace gpnp5
|
||||
{
|
||||
|
||||
void init(
|
||||
Eigen::Matrix<double,44,80> & groebnerMatrix,
|
||||
const Eigen::Matrix<double,12,1> & a,
|
||||
Eigen::Matrix<double,12,1> & n,
|
||||
Eigen::Matrix<double,12,1> & m,
|
||||
Eigen::Matrix<double,12,1> & k,
|
||||
Eigen::Matrix<double,12,1> & l,
|
||||
Eigen::Matrix<double,12,1> & p,
|
||||
Eigen::Vector3d & c0,
|
||||
Eigen::Vector3d & c1,
|
||||
Eigen::Vector3d & c2,
|
||||
Eigen::Vector3d & c3 );
|
||||
void compute( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void sPolynomial6( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void sPolynomial7( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow6_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial8( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow7_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial9( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow8_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial10( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow9_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial11( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow10_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow6_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow7_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow8_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow9_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow10_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow6_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow7_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow8_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow9_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow10_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow10_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial12( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow9_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow5_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow11_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow5_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow5_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial13( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow8_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow12_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial14( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow7_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow13_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial15( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow14_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial16( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow6_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow15_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial17( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow7_00010_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow5_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow16_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial18( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow6_00010_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow17_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial19( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow15_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow16_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow17_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow18_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow18_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial20( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow14_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow19_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial21( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow8_20000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow9_20000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow10_20000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow20_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial22( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow13_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow21_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial23( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow6_20000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow7_20000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow22_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial24( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow12_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow23_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial25( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow5_20000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow24_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow24_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial26( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow11_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow25_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow25_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial27( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow10_11000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow26_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow26_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial28( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow27_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow27_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial29( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow9_11000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow28_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow28_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial30( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow18_00001_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow24_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow29_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow29_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow29_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial31( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow14_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow8_11000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow18_00010_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow25_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow30_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow30_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow30_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial32( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow14_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow6_11000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow7_11000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow18_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow26_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow31_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow31_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow31_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial33( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow32_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial34( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow32_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow33_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow33_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial35( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow34_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow34_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial36( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow35_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow35_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial37( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow36_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow36_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial38( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow32_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow37_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow37_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial39( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow35_00001_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow36_00001_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow37_00001_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow38_00001_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow38_00010_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow38_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow38_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow38_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow38_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial40( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow36_00010_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow37_00010_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow39_00010_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow39_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow39_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow39_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow39_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial41( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow32_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow38_10010_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow39_10010_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow38_10100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow39_10100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow40_10100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow36_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow37_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow40_00100_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow40_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow40_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow40_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial42( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow39_02000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow40_02000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow41_02000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow38_11000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow39_11000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow40_11000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow41_11000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow37_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow41_01000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow41_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow41_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void sPolynomial43( Eigen::Matrix<double,44,80> & groebnerMatrix );
|
||||
void groebnerRow38_20000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow39_20000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow40_20000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow41_20000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow42_20000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow42_10000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
void groebnerRow42_00000_f( Eigen::Matrix<double,44,80> & groebnerMatrix, int targetRow );
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_MODULES_GPNP5_MODULES_HPP_ */
|
||||
97
thirdparty/opengv/include/opengv/absolute_pose/modules/main.hpp
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_MODULES_MAIN_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_MODULES_MAIN_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <opengv/types.hpp>
|
||||
|
||||
namespace opengv
|
||||
{
|
||||
namespace absolute_pose
|
||||
{
|
||||
namespace modules
|
||||
{
|
||||
|
||||
void p3p_kneip_main(
|
||||
const bearingVectors_t & f,
|
||||
const points_t & p,
|
||||
transformations_t & solutions );
|
||||
void p3p_gao_main(
|
||||
const bearingVectors_t & f,
|
||||
const points_t & p,
|
||||
transformations_t & solutions );
|
||||
void gp3p_main(
|
||||
const Eigen::Matrix3d & f,
|
||||
const Eigen::Matrix3d & v,
|
||||
const Eigen::Matrix3d & p,
|
||||
transformations_t & solutions );
|
||||
void gpnp_main(
|
||||
const Eigen::Matrix<double,12,1> & a,
|
||||
const Eigen::Matrix<double,12,12> & V,
|
||||
const points_t & c,
|
||||
transformation_t & transformation );
|
||||
double gpnp_evaluate(
|
||||
const Eigen::Matrix<double,12,1> & solution,
|
||||
const points_t & c,
|
||||
translation_t & t,
|
||||
rotation_t & R );
|
||||
void gpnp_optimize(
|
||||
const Eigen::Matrix<double,12,1> & a,
|
||||
const Eigen::Matrix<double,12,12> & V,
|
||||
const points_t & c,
|
||||
std::vector<double> & factors );
|
||||
void upnp_fill_s(
|
||||
const Eigen::Vector4d & quaternion,
|
||||
Eigen::Matrix<double,10,1> & s );
|
||||
void upnp_main(
|
||||
const Eigen::Matrix<double,10,10> & M,
|
||||
const Eigen::Matrix<double,1,10> & C,
|
||||
double gamma,
|
||||
std::vector<
|
||||
std::pair<double,Eigen::Vector4d>,
|
||||
Eigen::aligned_allocator< std::pair<double,Eigen::Vector4d> >
|
||||
> & quaternions );
|
||||
void upnp_main_sym(
|
||||
const Eigen::Matrix<double,10,10> & M,
|
||||
const Eigen::Matrix<double,1,10> & C,
|
||||
double gamma,
|
||||
std::vector<
|
||||
std::pair<double,Eigen::Vector4d>,
|
||||
Eigen::aligned_allocator< std::pair<double,Eigen::Vector4d> >
|
||||
> & quaternions );
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_MODULES_MAIN_HPP_ */
|
||||
58
thirdparty/opengv/include/opengv/absolute_pose/modules/upnp2.hpp
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_MODULES_UPNP2_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_MODULES_UPNP2_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <opengv/types.hpp>
|
||||
|
||||
namespace opengv
|
||||
{
|
||||
namespace absolute_pose
|
||||
{
|
||||
namespace modules
|
||||
{
|
||||
namespace upnp
|
||||
{
|
||||
|
||||
void setupAction_gj(
|
||||
const Eigen::Matrix<double,10,10> & M,
|
||||
const Eigen::Matrix<double,1,10> & C,
|
||||
double gamma,
|
||||
Eigen::Matrix<double,16,16> & Action );
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_MODULES_UPNP2_HPP_ */
|
||||
58
thirdparty/opengv/include/opengv/absolute_pose/modules/upnp4.hpp
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef OPENGV_ABSOLUTE_POSE_MODULES_UPNP4_HPP_
|
||||
#define OPENGV_ABSOLUTE_POSE_MODULES_UPNP4_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <opengv/types.hpp>
|
||||
|
||||
namespace opengv
|
||||
{
|
||||
namespace absolute_pose
|
||||
{
|
||||
namespace modules
|
||||
{
|
||||
namespace upnp
|
||||
{
|
||||
|
||||
void setupAction_sym_gj(
|
||||
const Eigen::Matrix<double,10,10> & M,
|
||||
const Eigen::Matrix<double,1,10> & C,
|
||||
double gamma,
|
||||
Eigen::Matrix<double,8,8> & Action );
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ABSOLUTE_POSE_MODULES_UPNP4_HPP_ */
|
||||
165
thirdparty/opengv/include/opengv/math/Sturm.hpp
vendored
Normal file
@@ -0,0 +1,165 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file Sturm.hpp
|
||||
* \brief Class for evaluating Sturm chains on polynomials, and bracketing the
|
||||
* real roots.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_STURM_HPP_
|
||||
#define OPENGV_STURM_HPP_
|
||||
|
||||
#include <memory>
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <list>
|
||||
#include <Eigen/Eigen>
|
||||
#include <Eigen/src/Core/util/DisableStupidWarnings.h>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace of the math tools.
|
||||
*/
|
||||
namespace math
|
||||
{
|
||||
|
||||
class Bracket
|
||||
{
|
||||
public:
|
||||
typedef std::shared_ptr<Bracket> Ptr;
|
||||
typedef std::shared_ptr<const Bracket> ConstPtr;
|
||||
|
||||
Bracket( double lowerBound, double upperBound );
|
||||
Bracket( double lowerBound, double upperBound, size_t changes, bool setUpperBoundChanges );
|
||||
virtual ~Bracket();
|
||||
|
||||
bool dividable( double eps ) const;
|
||||
void divide( std::list<Ptr> & brackets ) const;
|
||||
double lowerBound() const;
|
||||
double upperBound() const;
|
||||
bool lowerBoundChangesComputed() const;
|
||||
bool upperBoundChangesComputed() const;
|
||||
void setLowerBoundChanges( size_t changes );
|
||||
void setUpperBoundChanges( size_t changes );
|
||||
size_t numberRoots() const;
|
||||
|
||||
private:
|
||||
double _lowerBound;
|
||||
double _upperBound;
|
||||
bool _lowerBoundChangesComputed;
|
||||
bool _upperBoundChangesComputed;
|
||||
size_t _lowerBoundChanges;
|
||||
size_t _upperBoundChanges;
|
||||
};
|
||||
|
||||
/**
|
||||
* Sturm is initialized over polynomials of arbitrary order, and used to compute
|
||||
* the real roots of the polynomial.
|
||||
*/
|
||||
class Sturm
|
||||
{
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
/** A pair of values bracketing a real root */
|
||||
typedef std::pair<double,double> bracket_t;
|
||||
|
||||
/**
|
||||
* \brief Contructor.
|
||||
* \param[in] p The polynomial coefficients (poly = p(0,0)*x^n + p(0,1)*x^(n-1) ...).
|
||||
*/
|
||||
Sturm( const Eigen::MatrixXd & p );
|
||||
/**
|
||||
* \brief Contructor.
|
||||
* \param[in] p The polynomial coefficients (poly = p[0]*x^n + p[1]*x^(n-1) ...).
|
||||
*/
|
||||
Sturm( const std::vector<double> & p );
|
||||
/**
|
||||
* \brief Destructor.
|
||||
*/
|
||||
virtual ~Sturm();
|
||||
|
||||
void findRoots2( std::vector<double> & roots, double eps_x = 0.001, double eps_val = 0.001 );
|
||||
/**
|
||||
* \brief Finds the roots of the polynomial.
|
||||
* \return An array with the real roots of the polynomial.
|
||||
*/
|
||||
std::vector<double> findRoots();
|
||||
/**
|
||||
* \brief Finds brackets for the real roots of the polynomial.
|
||||
* \return A list of brackets for the real roots of the polynomial.
|
||||
*/
|
||||
void bracketRoots( std::vector<double> & roots, double eps = -1.0 );
|
||||
/**
|
||||
* \brief Evaluates the Sturm chain at a single bound.
|
||||
* \param[in] bound The bound.
|
||||
* \return The number of sign changes on the bound.
|
||||
*/
|
||||
size_t evaluateChain( double bound );
|
||||
/**
|
||||
* \brief Evaluates the Sturm chain at a single bound.
|
||||
* \param[in] bound The bound.
|
||||
* \return The number of sign changes on the bound.
|
||||
*/
|
||||
size_t evaluateChain2( double bound );
|
||||
/**
|
||||
* \brief Composes an initial bracket for all the roots of the polynomial.
|
||||
* \return The maximum of the absolute values of the bracket-values (That's
|
||||
* what the Lagrangian bound is able to find).
|
||||
*/
|
||||
double computeLagrangianBound();
|
||||
|
||||
private:
|
||||
/**
|
||||
* \brief Internal function used for composing the Sturm chain
|
||||
* \param[in] p1 First polynomial.
|
||||
* \param[in] p2 Second polynomial.
|
||||
* \param[out] r The negated remainder of the polynomial division p1/p2.
|
||||
*/
|
||||
void computeNegatedRemainder(
|
||||
const Eigen::MatrixXd & p1,
|
||||
const Eigen::MatrixXd & p2,
|
||||
Eigen::MatrixXd & r );
|
||||
|
||||
/** A matrix containing the coefficients of the Sturm-chain of the polynomial */
|
||||
Eigen::MatrixXd _C;
|
||||
/** The dimension _C, which corresponds to (polynomial order+1) */
|
||||
size_t _dimension;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_STURM_HPP_ */
|
||||
83
thirdparty/opengv/include/opengv/math/arun.hpp
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file arun.hpp
|
||||
* \brief Arun's method for computing the rotation between two point sets.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_ARUN_HPP_
|
||||
#define OPENGV_ARUN_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <Eigen/Eigen>
|
||||
#include <Eigen/src/Core/util/DisableStupidWarnings.h>
|
||||
#include <opengv/types.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace of the math tools.
|
||||
*/
|
||||
namespace math
|
||||
{
|
||||
|
||||
/**
|
||||
* \brief Arun's method for computing the rotation between two point sets.
|
||||
* Core function [13].
|
||||
*
|
||||
* \param[in] Hcross The summation over the exterior products between the
|
||||
* normalized points.
|
||||
* \return The rotation matrix that aligns the points.
|
||||
*/
|
||||
rotation_t arun( const Eigen::MatrixXd & Hcross );
|
||||
|
||||
/**
|
||||
* \brief Arun's method for complete point cloud alignment [13]. The method
|
||||
* actually does the same than threept_arun, but has a different
|
||||
* interface.
|
||||
*
|
||||
* \param[in] p1 The points expressed in the first frame.
|
||||
* \param[in] p2 The points expressed in the second frame.
|
||||
* \return The Transformation from frame 2 to frame 1 (
|
||||
* \f$ \mathbf{T} = \left(\begin{array}{cc} \mathbf{R} & \mathbf{t} \end{array}\right) \f$,
|
||||
* with \f$ \mathbf{t} \f$ being the position of frame 2 seen from
|
||||
* frame 1, and \f$ \mathbf{R} \f$ being the rotation from
|
||||
* frame 2 to frame 1).
|
||||
*/
|
||||
transformation_t arun_complete( const points_t & p1, const points_t & p2 );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ARUN_HPP_ */
|
||||
84
thirdparty/opengv/include/opengv/math/cayley.hpp
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file cayley.hpp
|
||||
* \brief Functions for back-and-forth transformation between rotation matrices
|
||||
* and Cayley-parameters.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_CAYLEY_HPP_
|
||||
#define OPENGV_CAYLEY_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <opengv/types.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace of the math tools.
|
||||
*/
|
||||
namespace math
|
||||
{
|
||||
|
||||
/**
|
||||
* \brief Compute a rotation matrix from Cayley-parameters, following [14].
|
||||
*
|
||||
* \param[in] cayley The Cayley-parameters of a rotation.
|
||||
* \return The 3x3 rotation matrix.
|
||||
*/
|
||||
rotation_t cayley2rot( const cayley_t & cayley);
|
||||
|
||||
/**
|
||||
* \brief Compute a fake rotation matrix from Cayley-parameters, following [14].
|
||||
* The rotation matrix is missing the scaling parameter of the
|
||||
* Cayley-transform. This short form is useful for the Jacobian-based
|
||||
* iterative rotation optimization of the eigensolver [11].
|
||||
*
|
||||
* \param[in] cayley The Cayley-parameters of the rotation.
|
||||
* \return The false 3x3 rotation matrix.
|
||||
*/
|
||||
rotation_t cayley2rot_reduced( const cayley_t & cayley);
|
||||
|
||||
/**
|
||||
* \brief Compute the Cayley-parameters of a rotation matrix, following [14].
|
||||
*
|
||||
* \param[in] R The 3x3 rotation matrix.
|
||||
* \return The Cayley-parameters.
|
||||
*/
|
||||
cayley_t rot2cayley( const rotation_t & R );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_CAYLEY_HPP_ */
|
||||
67
thirdparty/opengv/include/opengv/math/gauss_jordan.hpp
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file gauss_jordan.hpp
|
||||
* \brief Sparse, fast Gauss Jordan elimination.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_GAUSS_JORDAN_HPP_
|
||||
#define OPENGV_GAUSS_JORDAN_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace of the math tools.
|
||||
*/
|
||||
namespace math
|
||||
{
|
||||
|
||||
/**
|
||||
* \brief Sparse, fast Gauss Jordan elimination on matrices with a left square
|
||||
* invertible block.
|
||||
*
|
||||
* \param[in] matrix The matrix.
|
||||
* \param[in] exitCondition The last row we process when stepping up.
|
||||
*/
|
||||
void gauss_jordan(
|
||||
std::vector<std::vector<double>*> & matrix,
|
||||
int exitCondition = 0 );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_GAUSS_JORDAN_HPP_ */
|
||||
74
thirdparty/opengv/include/opengv/math/quaternion.hpp
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file quaternion.hpp
|
||||
* \brief Functions for back-and-forth transformation between rotation matrices
|
||||
* and quaternion-parameters.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_QUATERNION_HPP_
|
||||
#define OPENGV_QUATERNION_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <opengv/types.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace of the math tools.
|
||||
*/
|
||||
namespace math
|
||||
{
|
||||
|
||||
/**
|
||||
* \brief Compute a rotation matrix from quaternion-parameters. Assumes that the
|
||||
* quaternion has unit norm.
|
||||
*
|
||||
* \param[in] quaternion The quaternion-parameters of a rotation.
|
||||
* \return The 3x3 rotation matrix.
|
||||
*/
|
||||
rotation_t quaternion2rot( const quaternion_t & quaternion);
|
||||
|
||||
/**
|
||||
* \brief Compute the quaternion-parameters of a rotation matrix.
|
||||
*
|
||||
* \param[in] R The 3x3 rotation matrix.
|
||||
* \return The quaternion-parameters.
|
||||
*/
|
||||
quaternion_t rot2quaternion( const rotation_t & R );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_QUATERNION_HPP_ */
|
||||
83
thirdparty/opengv/include/opengv/math/roots.hpp
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file roots.hpp
|
||||
* \brief Closed-form solutions for computing the roots of a polynomial.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_ROOTS_HPP_
|
||||
#define OPENGV_ROOTS_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <Eigen/Eigen>
|
||||
#include <Eigen/src/Core/util/DisableStupidWarnings.h>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace of the math tools.
|
||||
*/
|
||||
namespace math
|
||||
{
|
||||
|
||||
/**
|
||||
* \brief The roots of a third-order polynomial.
|
||||
*
|
||||
* \param[in] p The polynomial coefficients (poly = p[0]*x^3 + p[1]*x^2 ...).
|
||||
* \return The roots of the polynomial (only real ones).
|
||||
*/
|
||||
std::vector<double> o3_roots( const std::vector<double> & p );
|
||||
|
||||
/**
|
||||
* \brief Ferrari's method for computing the roots of a fourth order polynomial.
|
||||
*
|
||||
* \param[in] p The polynomial coefficients (poly = p(0,0)*x^4 + p(1,0)*x^3 ...).
|
||||
* \return The roots of the polynomial (only real ones).
|
||||
*/
|
||||
std::vector<double> o4_roots( const Eigen::MatrixXd & p );
|
||||
|
||||
/**
|
||||
* \brief Ferrari's method for computing the roots of a fourth order polynomial.
|
||||
* With a different interface.
|
||||
*
|
||||
* \param[in] p The polynomial coefficients (poly = p[0]*x^4 + p[1]*x^3 ...).
|
||||
* \return The roots of the polynomial (only real ones).
|
||||
*/
|
||||
std::vector<double> o4_roots( const std::vector<double> & p );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_ROOTS_HPP_ */
|
||||
109
thirdparty/opengv/include/opengv/point_cloud/MAPointCloud.hpp
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file MAPointCloud.hpp
|
||||
* \brief Adapter-class for passing 3D point correspondences. Maps
|
||||
* matlab types to opengv types.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_MAPOINTCLOUD_HPP_
|
||||
#define OPENGV_MAPOINTCLOUD_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/point_cloud/PointCloudAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the point-cloud alignment methods.
|
||||
*/
|
||||
namespace point_cloud
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* a PointCloudAdapter. This child-class is used for holding
|
||||
* data in form of pointers to matlab-data.
|
||||
*/
|
||||
class MAPointCloud : public PointCloudAdapterBase
|
||||
{
|
||||
private:
|
||||
using PointCloudAdapterBase::_t12;
|
||||
using PointCloudAdapterBase::_R12;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
MAPointCloud(
|
||||
const double * points1,
|
||||
const double * points2,
|
||||
int numberPoints1,
|
||||
int numberPoints2 );
|
||||
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~MAPointCloud();
|
||||
|
||||
//Access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual opengv::point_t getPoint1( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual opengv::point_t getPoint2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences() const;
|
||||
|
||||
private:
|
||||
/** A pointer to the points in frame 1 */
|
||||
const double * _points1;
|
||||
/** A pointer to the points in frame 2 */
|
||||
const double * _points2;
|
||||
/** The number of points in frame 1 */
|
||||
int _numberPoints1;
|
||||
/** The number of points in frame 2 */
|
||||
int _numberPoints2;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_MAPOINTCLOUD_HPP_ */
|
||||
117
thirdparty/opengv/include/opengv/point_cloud/PointCloudAdapter.hpp
vendored
Normal file
@@ -0,0 +1,117 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file PointCloudAdapter.hpp
|
||||
* \brief Adapter-class for passing 3D point correspondences. Maps
|
||||
* opengv types back to opengv types.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_POINTCLOUDADAPTER_HPP_
|
||||
#define OPENGV_POINTCLOUDADAPTER_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/point_cloud/PointCloudAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the point-cloud alignment methods.
|
||||
*/
|
||||
namespace point_cloud
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* a PointCloudAdapter. This child-class is used for holding
|
||||
* data in form of references to opengv-types.
|
||||
*/
|
||||
class PointCloudAdapter : public PointCloudAdapterBase
|
||||
{
|
||||
private:
|
||||
using PointCloudAdapterBase::_t12;
|
||||
using PointCloudAdapterBase::_R12;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
PointCloudAdapter(
|
||||
const points_t & points1,
|
||||
const points_t & points2 );
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
PointCloudAdapter(
|
||||
const points_t & points1,
|
||||
const points_t & points2,
|
||||
const rotation_t & R12 );
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
PointCloudAdapter(
|
||||
const points_t & points1,
|
||||
const points_t & points2,
|
||||
const translation_t & t12,
|
||||
const rotation_t & R12 );
|
||||
/**
|
||||
* Destructor
|
||||
*/
|
||||
virtual ~PointCloudAdapter();
|
||||
|
||||
//Access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual opengv::point_t getPoint1( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual opengv::point_t getPoint2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences() const;
|
||||
|
||||
private:
|
||||
/** Reference to the 3D-points in frame 1 */
|
||||
const points_t & _points1;
|
||||
/** Reference to the 3D-points in frame 2 */
|
||||
const points_t & _points2;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_POINTCLOUDADAPTER_HPP_ */
|
||||
161
thirdparty/opengv/include/opengv/point_cloud/PointCloudAdapterBase.hpp
vendored
Normal file
@@ -0,0 +1,161 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file PointCloudAdapter.hpp
|
||||
* \brief Adapter-class for passing 3D point correspondences.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_POINTCLOUDADAPTERBASE_HPP_
|
||||
#define OPENGV_POINTCLOUDADAPTERBASE_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the point-cloud alignment methods.
|
||||
*/
|
||||
namespace point_cloud
|
||||
{
|
||||
|
||||
/**
|
||||
* The PointCloudAdapterBase is the base-class for the visitors to the
|
||||
* point-cloud alignment methods. It provides a unified interface to
|
||||
* opengv-methods to access point correspondences and priors or known variables
|
||||
* for the alignment. Derived classes may hold the data in any user-specific
|
||||
* format, and adapt to opengv-types.
|
||||
*/
|
||||
class PointCloudAdapterBase
|
||||
{
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor.
|
||||
*/
|
||||
PointCloudAdapterBase( ) :
|
||||
_t12(Eigen::Vector3d::Zero()),
|
||||
_R12(Eigen::Matrix3d::Identity()) {};
|
||||
/**
|
||||
* \brief Constructor.
|
||||
* \param[in] R12 A prior or known value for the rotation from frame 2 to
|
||||
* frame 1.
|
||||
*/
|
||||
PointCloudAdapterBase( const rotation_t & R12 ) :
|
||||
_t12(Eigen::Vector3d::Zero()),
|
||||
_R12(R12) {};
|
||||
/**
|
||||
* \brief Constructor.
|
||||
* \param[in] t12 A prior or known value for the position of frame 2 seen
|
||||
* from frame 1.
|
||||
* \param[in] R12 A prior or known value for the rotation from frame 2
|
||||
* to frame 1.
|
||||
*/
|
||||
PointCloudAdapterBase( const translation_t & t12, const rotation_t & R12 ) :
|
||||
_t12(t12),
|
||||
_R12(R12) {};
|
||||
/**
|
||||
* \brief Destructor.
|
||||
*/
|
||||
virtual ~PointCloudAdapterBase() {};
|
||||
|
||||
//Access of correspondences
|
||||
|
||||
/**
|
||||
* \brief Retrieve the 3D-point of a correspondence in frame 1.
|
||||
* \param[in] index The serialized index of the correspondence.
|
||||
* \return The corresponding 3D-point.
|
||||
*/
|
||||
virtual opengv::point_t getPoint1( size_t index ) const = 0;
|
||||
/**
|
||||
* \brief Retrieve the 3D-point of a correspondence in frame 2.
|
||||
* \param[in] index The serialized index of the correspondence.
|
||||
* \return The corresponding 3D-point.
|
||||
*/
|
||||
virtual opengv::point_t getPoint2( size_t index ) const = 0;
|
||||
/**
|
||||
* \brief Retrieve the number of correspondences.
|
||||
* \return The number of correspondences.
|
||||
*/
|
||||
virtual size_t getNumberCorrespondences() const = 0;
|
||||
/**
|
||||
* \brief Retrieve the weight of a correspondence. The weight is supposed to
|
||||
* reflect the quality of a correspondence, and typically is between
|
||||
* 0 and 1.
|
||||
* \param[in] index The serialized index of the correspondence.
|
||||
* \return The corresponding weight.
|
||||
*/
|
||||
virtual double getWeight( size_t index ) const = 0;
|
||||
|
||||
//Access of priors or known values
|
||||
|
||||
/**
|
||||
* \brief Retrieve the prior or known value for the relative position.
|
||||
* \return The prior or known value for the position.
|
||||
*/
|
||||
virtual opengv::translation_t gett12() const { return _t12; };
|
||||
/**
|
||||
* \brief Set the prior or known value for the relative position.
|
||||
* \param[in] t12 The prior or known value for the position.
|
||||
*/
|
||||
virtual void sett12(const translation_t & t12) { _t12 = t12; };
|
||||
/**
|
||||
* \brief Retrieve the prior or known value for the relative rotation.
|
||||
* \return The prior or known value for the rotation.
|
||||
*/
|
||||
virtual opengv::rotation_t getR12() const { return _R12; };
|
||||
/**
|
||||
* \brief Set the prior or known value for the relative rotation.
|
||||
* \param[in] R12 The prior or known value for the rotation.
|
||||
*/
|
||||
virtual void setR12(const rotation_t & R12) { _R12 = R12; };
|
||||
|
||||
public:
|
||||
/** Prior or known value for the position of frame 2 seen from frame 1.
|
||||
* Initialized to zero if not provided.
|
||||
*/
|
||||
translation_t _t12;
|
||||
/** Prior or known value for the rotation from frame 2 to frame 1.
|
||||
* Initialized to identity if not provided.
|
||||
*/
|
||||
rotation_t _R12;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_POINTCLOUDADAPTERBASE_HPP_ */
|
||||
120
thirdparty/opengv/include/opengv/point_cloud/methods.hpp
vendored
Normal file
@@ -0,0 +1,120 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file point_cloud/methods.hpp
|
||||
* \brief Methods for computing the transformation between two frames that
|
||||
* contain point-clouds.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_POINT_CLOUD_METHODS_HPP_
|
||||
#define OPENGV_POINT_CLOUD_METHODS_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/point_cloud/PointCloudAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the point-cloud alignment methods.
|
||||
*/
|
||||
namespace point_cloud
|
||||
{
|
||||
|
||||
/**
|
||||
* \brief Compute the transformation between two frames containing point clouds,
|
||||
* following Arun's method [13]. Using all available correspondences.
|
||||
*
|
||||
* \param[in] adapter Visitor holding world-point correspondences.
|
||||
* \return Transformation from frame 2 back to frame 1 (
|
||||
* \f$ \mathbf{T} = \left(\begin{array}{cc} \mathbf{R} & \mathbf{t} \end{array}\right) \f$,
|
||||
* with \f$ \mathbf{t} \f$ being the position of frame 2 seen from
|
||||
* frame 1, and \f$ \mathbf{R} \f$ being the rotation from
|
||||
* frame 2 to frame 1).
|
||||
*/
|
||||
transformation_t threept_arun( const PointCloudAdapterBase & adapter );
|
||||
|
||||
/**
|
||||
* \brief Compute the transformation between two frames containing point clouds,
|
||||
* following Arun's method [13].
|
||||
*
|
||||
* \param[in] adapter Visitor holding world-point correspondences.
|
||||
* \param[in] indices Indices of the correspondences used for deriving the
|
||||
* transformation.
|
||||
* \return Transformation from frame 2 back to frame 1 (
|
||||
* \f$ \mathbf{T} = \left(\begin{array}{cc} \mathbf{R} & \mathbf{t} \end{array}\right) \f$,
|
||||
* with \f$ \mathbf{t} \f$ being the position of frame 2 seen from
|
||||
* frame 1, and \f$ \mathbf{R} \f$ being the rotation from
|
||||
* frame 2 to frame 1).
|
||||
*/
|
||||
transformation_t threept_arun(
|
||||
const PointCloudAdapterBase & adapter,
|
||||
const std::vector<int> & indices );
|
||||
|
||||
/**
|
||||
* \brief Compute the transformation between two frames containing point clouds
|
||||
* using nonlinear optimization. Using all available correspondences.
|
||||
*
|
||||
* \param[in] adapter Visitor holding world-point correspondences, plus the
|
||||
* initial values.
|
||||
* \return Transformation from frame 2 back to frame 1 (
|
||||
* \f$ \mathbf{T} = \left(\begin{array}{cc} \mathbf{R} & \mathbf{t} \end{array}\right) \f$,
|
||||
* with \f$ \mathbf{t} \f$ being the position of frame 2 seen from
|
||||
* frame 1, and \f$ \mathbf{R} \f$ being the rotation from
|
||||
* frame 2 to frame 1).
|
||||
*/
|
||||
transformation_t optimize_nonlinear( PointCloudAdapterBase & adapter );
|
||||
|
||||
/**
|
||||
* \brief Compute the transformation between two frames containing point clouds.
|
||||
* Using nonlinear optimization.
|
||||
*
|
||||
* \param[in] adapter Visitor holding world-point correspondences, plus the
|
||||
* initial values.
|
||||
* \param[in] indices Indices of the correspondences used for optimization.
|
||||
* \return Transformation from frame 2 back to frame 1 (
|
||||
* \f$ \mathbf{T} = \left(\begin{array}{cc} \mathbf{R} & \mathbf{t} \end{array}\right) \f$,
|
||||
* with \f$ \mathbf{t} \f$ being the position of frame 2 seen from
|
||||
* frame 1, and \f$ \mathbf{R} \f$ being the rotation from
|
||||
* frame 2 to frame 1).
|
||||
*/
|
||||
transformation_t optimize_nonlinear(
|
||||
PointCloudAdapterBase & adapter,
|
||||
const std::vector<int> & indices );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_POINT_CLOUD_METHODS_HPP_ */
|
||||
126
thirdparty/opengv/include/opengv/relative_pose/CentralRelativeAdapter.hpp
vendored
Normal file
@@ -0,0 +1,126 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file CentralRelativeAdapter.hpp
|
||||
* \brief Adapter-class for passing bearing-vector correspondences to the
|
||||
* central relative-pose algorithms. Maps opengv types back to
|
||||
* opengv types.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_RELATIVE_POSE_CENTRALRELATIVEADAPTER_HPP_
|
||||
#define OPENGV_RELATIVE_POSE_CENTRALRELATIVEADAPTER_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/relative_pose/RelativeAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the relative pose methods.
|
||||
*/
|
||||
namespace relative_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* a RelativeAdapter. This child-class is for the central case and holds data
|
||||
* in form of references to opengv-types.
|
||||
*/
|
||||
class CentralRelativeAdapter : public RelativeAdapterBase
|
||||
{
|
||||
protected:
|
||||
using RelativeAdapterBase::_t12;
|
||||
using RelativeAdapterBase::_R12;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
CentralRelativeAdapter(
|
||||
const bearingVectors_t & bearingVectors1,
|
||||
const bearingVectors_t & bearingVectors2 );
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
CentralRelativeAdapter(
|
||||
const bearingVectors_t & bearingVectors1,
|
||||
const bearingVectors_t & bearingVectors2,
|
||||
const rotation_t & R12 );
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
CentralRelativeAdapter(
|
||||
const bearingVectors_t & bearingVectors1,
|
||||
const bearingVectors_t & bearingVectors2,
|
||||
const translation_t & t12,
|
||||
const rotation_t & R12 );
|
||||
/**
|
||||
* \brief Destructor.
|
||||
*/
|
||||
virtual ~CentralRelativeAdapter();
|
||||
|
||||
//Access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector1( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t index ) const;
|
||||
/** See parent-class. Returns zero for this adapter. */
|
||||
virtual translation_t getCamOffset1( size_t index ) const;
|
||||
/** See parent-class. Returns identity for this adapter. */
|
||||
virtual rotation_t getCamRotation1( size_t index ) const;
|
||||
/** See parent-class. Returns zero for this adapter. */
|
||||
virtual translation_t getCamOffset2( size_t index ) const;
|
||||
/** See parent-class. Returns identity for this adapter. */
|
||||
virtual rotation_t getCamRotation2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences() const;
|
||||
|
||||
protected:
|
||||
/** Reference to bearing-vectors expressed in viewpoint 1. */
|
||||
const bearingVectors_t & _bearingVectors1;
|
||||
/** Reference to bearing-vectors expressed in viewpoint 2. */
|
||||
const bearingVectors_t & _bearingVectors2;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_RELATIVE_POSE_CENTRALRELATIVEADAPTER_HPP_ */
|
||||
138
thirdparty/opengv/include/opengv/relative_pose/CentralRelativeMultiAdapter.hpp
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file CentralRelativeMultiAdapter.hpp
|
||||
* \brief Adapter-class for passing bearing-vector correspondences to the
|
||||
* central relative-pose algorithms. Maps opengv types
|
||||
* back to opengv types. For multi-central-viewpoint. Manages multiple
|
||||
* match-lists for pairs of cameras (e.g. pairs of central viewpoints).
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_RELATIVE_POSE_CENTRALRELATIVEMULTIADAPTER_HPP_
|
||||
#define OPENGV_RELATIVE_POSE_CENTRALRELATIVEMULTIADAPTER_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/relative_pose/RelativeMultiAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the relative pose methods.
|
||||
*/
|
||||
namespace relative_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* a RelativeMultiAdapter. This child-class is for the multi-central case and
|
||||
* holds data in form of references to opengv-types. It is meant to be used for
|
||||
* problems involving more than two central viewpoints. This is experimental!
|
||||
*/
|
||||
class CentralRelativeMultiAdapter : public RelativeMultiAdapterBase
|
||||
{
|
||||
protected:
|
||||
using RelativeAdapterBase::_t12;
|
||||
using RelativeAdapterBase::_R12;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
CentralRelativeMultiAdapter(
|
||||
std::vector<std::shared_ptr<bearingVectors_t> > bearingVectors1,
|
||||
std::vector<std::shared_ptr<bearingVectors_t> > bearingVectors2 );
|
||||
/**
|
||||
* \brief Destructor.
|
||||
*/
|
||||
virtual ~CentralRelativeMultiAdapter();
|
||||
|
||||
//camera-pair-wise access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector1(
|
||||
size_t pairIndex, size_t correspondenceIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector2(
|
||||
size_t pairIndex, size_t correspondenceIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t pairIndex, size_t correspondenceIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual translation_t getCamOffset( size_t pairIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual rotation_t getCamRotation( size_t pairIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences( size_t pairIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberPairs() const;
|
||||
|
||||
//Conversion to and from serialized indices
|
||||
|
||||
/** See parent-class */
|
||||
virtual std::vector<int> convertMultiIndices(
|
||||
const std::vector<std::vector<int> > & multiIndices ) const;
|
||||
/** See parent-class */
|
||||
virtual int convertMultiIndex(
|
||||
size_t pairIndex, size_t correspondenceIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual int multiPairIndex( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual int multiCorrespondenceIndex( size_t index ) const;
|
||||
|
||||
protected:
|
||||
/** References to multiple sets of bearing-vectors (the ones from camera 1 of
|
||||
* each pair, and expressed in there
|
||||
*/
|
||||
std::vector<std::shared_ptr<bearingVectors_t> > _bearingVectors1;
|
||||
/** References to multiple sets of bearing-vectors (the ones from camera 1 of
|
||||
* each pair, and expressed in there).
|
||||
*/
|
||||
std::vector<std::shared_ptr<bearingVectors_t> > _bearingVectors2;
|
||||
|
||||
/** Initialized in constructor, used for (de)-serialiaztion of indices */
|
||||
std::vector<int> multiPairIndices;
|
||||
/** Initialized in constructor, used for (de)-serialiaztion of indices */
|
||||
std::vector<int> multiKeypointIndices;
|
||||
/** Initialized in constructor, used for (de)-serialiaztion of indices */
|
||||
std::vector<int> singleIndexOffsets;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_RELATIVE_POSE_CENTRALRELATIVEMULTIADAPTER_HPP_ */
|
||||
133
thirdparty/opengv/include/opengv/relative_pose/CentralRelativeWeightingAdapter.hpp
vendored
Normal file
@@ -0,0 +1,133 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file CentralRelativeWeightingAdapter.hpp
|
||||
* \brief Adapter-class for passing bearing-vector correspondences to the
|
||||
* central relative-pose algorithms. Maps opengv types back to
|
||||
* opengv types. Also contains "weights" reflecting the quality of
|
||||
* a feature correspondence (typically between 0 and 1)
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_RELATIVE_POSE_CENTRALRELATIVEWEIGHTINGADAPTER_HPP_
|
||||
#define OPENGV_RELATIVE_POSE_CENTRALRELATIVEWEIGHTINGADAPTER_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/relative_pose/RelativeAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the relative pose methods.
|
||||
*/
|
||||
namespace relative_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* a RelativeAdapter. This child-class is for the central case and holds data
|
||||
* in form of references to opengv-types. It also includes weights for the
|
||||
* correspondences.
|
||||
*/
|
||||
class CentralRelativeWeightingAdapter : public RelativeAdapterBase
|
||||
{
|
||||
protected:
|
||||
using RelativeAdapterBase::_t12;
|
||||
using RelativeAdapterBase::_R12;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
CentralRelativeWeightingAdapter(
|
||||
const bearingVectors_t & bearingVectors1,
|
||||
const bearingVectors_t & bearingVectors2,
|
||||
const std::vector<double> & weights );
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
CentralRelativeWeightingAdapter(
|
||||
const bearingVectors_t & bearingVectors1,
|
||||
const bearingVectors_t & bearingVectors2,
|
||||
const std::vector<double> & weights,
|
||||
const rotation_t & R12 );
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
CentralRelativeWeightingAdapter(
|
||||
const bearingVectors_t & bearingVectors1,
|
||||
const bearingVectors_t & bearingVectors2,
|
||||
const std::vector<double> & weights,
|
||||
const translation_t & t12,
|
||||
const rotation_t & R12 );
|
||||
/**
|
||||
* \brief Destructor.
|
||||
*/
|
||||
virtual ~CentralRelativeWeightingAdapter();
|
||||
|
||||
//Access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector1( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t index ) const;
|
||||
/** See parent-class. Returns zero for this adapter. */
|
||||
virtual translation_t getCamOffset1( size_t index ) const;
|
||||
/** See parent-class. Returns identity for this adapter. */
|
||||
virtual rotation_t getCamRotation1( size_t index ) const;
|
||||
/** See parent-class. Returns zero for this adapter. */
|
||||
virtual translation_t getCamOffset2( size_t index ) const;
|
||||
/** See parent-class. Returns identity for this adapter. */
|
||||
virtual rotation_t getCamRotation2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences() const;
|
||||
|
||||
protected:
|
||||
/** Reference to bearing-vectors expressed in viewpoint 1. */
|
||||
const bearingVectors_t & _bearingVectors1;
|
||||
/** Reference to bearing-vectors expressed in viewpoint 2. */
|
||||
const bearingVectors_t & _bearingVectors2;
|
||||
/** Reference to an array of weights. Indexing follows _bearingVectors2. */
|
||||
const std::vector<double> & _weights;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_RELATIVE_POSE_CENTRALRELATIVEWEIGHTINGADAPTER_HPP_ */
|
||||
117
thirdparty/opengv/include/opengv/relative_pose/MACentralRelative.hpp
vendored
Normal file
@@ -0,0 +1,117 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file MACentralRelative.hpp
|
||||
* \brief Adapter-class for passing bearing-vector correspondences to the
|
||||
* central relative-pose algorithms. Maps matlab types to opengv types.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_RELATIVE_POSE_MACENTRALRELATIVE_HPP_
|
||||
#define OPENGV_RELATIVE_POSE_MACENTRALRELATIVE_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/relative_pose/RelativeAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the relative pose methods.
|
||||
*/
|
||||
namespace relative_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* a RelativeAdapter. This child-class is for the central case and holds data
|
||||
* in form of pointers to matlab data.
|
||||
*/
|
||||
class MACentralRelative : public RelativeAdapterBase
|
||||
{
|
||||
protected:
|
||||
using RelativeAdapterBase::_t12;
|
||||
using RelativeAdapterBase::_R12;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
MACentralRelative(
|
||||
const double * bearingVectors1,
|
||||
const double * bearingVectors2,
|
||||
int numberBearingVectors1,
|
||||
int numberBearingVectors2 );
|
||||
|
||||
/**
|
||||
* \brief Destructor.
|
||||
*/
|
||||
virtual ~MACentralRelative();
|
||||
|
||||
//Access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector1( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t index ) const;
|
||||
/** See parent-class. Returns zero for this adapter. */
|
||||
virtual translation_t getCamOffset1( size_t index ) const;
|
||||
/** See parent-class. Returns identity for this adapter. */
|
||||
virtual rotation_t getCamRotation1( size_t index ) const;
|
||||
/** See parent-class. Returns zero for this adapter. */
|
||||
virtual translation_t getCamOffset2( size_t index ) const;
|
||||
/** See parent-class. Returns identity for this adapter. */
|
||||
virtual rotation_t getCamRotation2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences() const;
|
||||
|
||||
protected:
|
||||
/** A pointer to the bearing-vectors in viewpoint 1 */
|
||||
const double * _bearingVectors1;
|
||||
/** A pointer to the bearing-vectors in viewpoint 2 */
|
||||
const double * _bearingVectors2;
|
||||
/** The number of bearing-vectors in viewpoint 1 */
|
||||
int _numberBearingVectors1;
|
||||
/** The number of bearing-vectors in viewpoint 2 */
|
||||
int _numberBearingVectors2;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_RELATIVE_POSE_MACENTRALRELATIVE_HPP_ */
|
||||
118
thirdparty/opengv/include/opengv/relative_pose/MANoncentralRelative.hpp
vendored
Normal file
@@ -0,0 +1,118 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file MANoncentralRelative.hpp
|
||||
* \brief Adapter-class for passing bearing-vector correspondences to the
|
||||
* non-central relative-pose algorithms. Maps matlab types
|
||||
* to opengv types.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_RELATIVE_POSE_MANONCENTRALRELATIVE_HPP_
|
||||
#define OPENGV_RELATIVE_POSE_MANONCENTRALRELATIVE_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/relative_pose/RelativeAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the relative pose methods.
|
||||
*/
|
||||
namespace relative_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* a RelativeAdapter. This child-class is for the non-central case and holds
|
||||
* data in form of pointers to matlab-types.
|
||||
*/
|
||||
class MANoncentralRelative : public RelativeAdapterBase
|
||||
{
|
||||
protected:
|
||||
using RelativeAdapterBase::_t12;
|
||||
using RelativeAdapterBase::_R12;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
MANoncentralRelative(
|
||||
const double * bearingVectors1,
|
||||
const double * bearingVectors2,
|
||||
int numberBearingVectors1,
|
||||
int numberBearingVectors2 );
|
||||
|
||||
/**
|
||||
* \brief Destructor.
|
||||
*/
|
||||
virtual ~MANoncentralRelative();
|
||||
|
||||
//Access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector1( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual translation_t getCamOffset1( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual rotation_t getCamRotation1( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual translation_t getCamOffset2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual rotation_t getCamRotation2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences() const;
|
||||
|
||||
protected:
|
||||
/** A pointer to the bearing-vectors in viewpoint 1 */
|
||||
const double * _bearingVectors1;
|
||||
/** A pointer to the bearing-vectors in viewpoint 2 */
|
||||
const double * _bearingVectors2;
|
||||
/** The number of bearing-vectors in viewpoint 1 */
|
||||
int _numberBearingVectors1;
|
||||
/** The number of bearing-vectors in viewpoint 2 */
|
||||
int _numberBearingVectors2;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_RELATIVE_POSE_MANONCENTRALRELATIVE_HPP_ */
|
||||
144
thirdparty/opengv/include/opengv/relative_pose/MANoncentralRelativeMulti.hpp
vendored
Normal file
@@ -0,0 +1,144 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file MANoncentralRelativeMulti.hpp
|
||||
* \brief Adapter-class for passing bearing-vector correspondences to the
|
||||
* non-central relative-pose algorithms. Maps Matlab types
|
||||
* to opengv types. Manages multiple match-lists for pairs of cameras.
|
||||
* This allows to draw samples homogeneously over the cameras.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_RELATIVE_POSE_MANONCENTRALRELATIVEMULTI_HPP_
|
||||
#define OPENGV_RELATIVE_POSE_MANONCENTRALRELATIVEMULTI_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/relative_pose/RelativeMultiAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the relative pose methods.
|
||||
*/
|
||||
namespace relative_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* a RelativeMultiAdapter. This child-class is for the relative non-central case
|
||||
* and holds data in form of pointers to matlab-types. It is meant to be used
|
||||
* for problems involving two non-central viewpoints, but in the special case
|
||||
* where correspondences result from two cameras with equal transformation
|
||||
* to their two viewpoints.
|
||||
*/
|
||||
class MANoncentralRelativeMulti : public RelativeMultiAdapterBase
|
||||
{
|
||||
protected:
|
||||
using RelativeMultiAdapterBase::_t12;
|
||||
using RelativeMultiAdapterBase::_R12;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
MANoncentralRelativeMulti(
|
||||
const std::vector<double*> & bearingVectors1,
|
||||
const std::vector<double*> & bearingVectors2,
|
||||
const double * camOffsets,
|
||||
const std::vector<int> & numberBearingVectors );
|
||||
/**
|
||||
* \brief Destructor.
|
||||
*/
|
||||
virtual ~MANoncentralRelativeMulti();
|
||||
|
||||
//camera-pair-wise access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector1(
|
||||
size_t pairIndex, size_t correspondenceIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector2(
|
||||
size_t pairIndex, size_t correspondenceIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t camIndex, size_t correspondenceIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual translation_t getCamOffset( size_t pairIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual rotation_t getCamRotation( size_t pairIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences( size_t pairIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberPairs() const;
|
||||
|
||||
//Conversion to and from serialized indices
|
||||
|
||||
/** See parent-class */
|
||||
virtual std::vector<int> convertMultiIndices(
|
||||
const std::vector<std::vector<int> > & multiIndices ) const;
|
||||
/** See parent-class */
|
||||
virtual int convertMultiIndex(
|
||||
size_t camIndex, size_t correspondenceIndex ) const;
|
||||
/** See parent-class */
|
||||
virtual int multiPairIndex( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual int multiCorrespondenceIndex( size_t index ) const;
|
||||
|
||||
protected:
|
||||
/** A pointer to the bearing-vectors in viewpoint 1 */
|
||||
std::vector<double *> _bearingVectors1;
|
||||
|
||||
/** A pointer to the bearing-vectors in viewpoint 2 */
|
||||
std::vector<double *> _bearingVectors2;
|
||||
|
||||
/** The offset from the viewpoint origin of each vector */
|
||||
const double * _camOffsets;
|
||||
|
||||
/** The number of bearing-vectors in each camera */
|
||||
std::vector<int> _numberBearingVectors;
|
||||
|
||||
/** Initialized in constructor, used for (de)-serialiaztion of indices */
|
||||
std::vector<int> multiPairIndices;
|
||||
/** Initialized in constructor, used for (de)-serialiaztion of indices */
|
||||
std::vector<int> multiKeypointIndices;
|
||||
/** Initialized in constructor, used for (de)-serialiaztion of indices */
|
||||
std::vector<int> singleIndexOffsets;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_RELATIVE_POSE_MANONCENTRALRELATIVEMULTI_HPP_ */
|
||||
168
thirdparty/opengv/include/opengv/relative_pose/NoncentralRelativeAdapter.hpp
vendored
Normal file
@@ -0,0 +1,168 @@
|
||||
/******************************************************************************
|
||||
* Author: Laurent Kneip *
|
||||
* Contact: kneip.laurent@gmail.com *
|
||||
* License: Copyright (c) 2013 Laurent Kneip, ANU. All rights reserved. *
|
||||
* *
|
||||
* Redistribution and use in source and binary forms, with or without *
|
||||
* modification, are permitted provided that the following conditions *
|
||||
* are met: *
|
||||
* * Redistributions of source code must retain the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer. *
|
||||
* * Redistributions in binary form must reproduce the above copyright *
|
||||
* notice, this list of conditions and the following disclaimer in the *
|
||||
* documentation and/or other materials provided with the distribution. *
|
||||
* * Neither the name of ANU nor the names of its contributors may be *
|
||||
* used to endorse or promote products derived from this software without *
|
||||
* specific prior written permission. *
|
||||
* *
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"*
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE *
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL ANU OR THE CONTRIBUTORS BE LIABLE *
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL *
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR *
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER *
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT *
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY *
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF *
|
||||
* SUCH DAMAGE. *
|
||||
******************************************************************************/
|
||||
|
||||
/**
|
||||
* \file NoncentralRelativeAdapter.hpp
|
||||
* \brief Adapter-class for passing bearing-vector correspondences to the
|
||||
* non-central relative-pose algorithms. Maps opengv types
|
||||
* back to opengv types.
|
||||
*/
|
||||
|
||||
#ifndef OPENGV_RELATIVE_POSE_NONCENTRALRELATIVEADAPTER_HPP_
|
||||
#define OPENGV_RELATIVE_POSE_NONCENTRALRELATIVEADAPTER_HPP_
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <vector>
|
||||
#include <opengv/types.hpp>
|
||||
#include <opengv/relative_pose/RelativeAdapterBase.hpp>
|
||||
|
||||
/**
|
||||
* \brief The namespace of this library.
|
||||
*/
|
||||
namespace opengv
|
||||
{
|
||||
/**
|
||||
* \brief The namespace for the relative pose methods.
|
||||
*/
|
||||
namespace relative_pose
|
||||
{
|
||||
|
||||
/**
|
||||
* Check the documentation of the parent-class to understand the meaning of
|
||||
* a RelativeAdapter. This child-class is for the non-central case and holds
|
||||
* data in form of references to opengv-types.
|
||||
*/
|
||||
class NoncentralRelativeAdapter : public RelativeAdapterBase
|
||||
{
|
||||
protected:
|
||||
using RelativeAdapterBase::_t12;
|
||||
using RelativeAdapterBase::_R12;
|
||||
|
||||
public:
|
||||
EIGEN_MAKE_ALIGNED_OPERATOR_NEW
|
||||
|
||||
/** A type defined for the camera-correspondences, see protected
|
||||
* class-members
|
||||
*/
|
||||
typedef std::vector<int> camCorrespondences_t;
|
||||
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
NoncentralRelativeAdapter(
|
||||
const bearingVectors_t & bearingVectors1,
|
||||
const bearingVectors_t & bearingVectors2,
|
||||
const camCorrespondences_t & camCorrespondences1,
|
||||
const camCorrespondences_t & camCorrespondences2,
|
||||
const translations_t & camOffsets,
|
||||
const rotations_t & camRotations );
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
NoncentralRelativeAdapter(
|
||||
const bearingVectors_t & bearingVectors1,
|
||||
const bearingVectors_t & bearingVectors2,
|
||||
const camCorrespondences_t & camCorrespondences1,
|
||||
const camCorrespondences_t & camCorrespondences2,
|
||||
const translations_t & camOffsets,
|
||||
const rotations_t & camRotations,
|
||||
const rotation_t & R12 );
|
||||
/**
|
||||
* \brief Constructor. See protected class-members to understand parameters
|
||||
*/
|
||||
NoncentralRelativeAdapter(
|
||||
const bearingVectors_t & bearingVectors1,
|
||||
const bearingVectors_t & bearingVectors2,
|
||||
const camCorrespondences_t & camCorrespondences1,
|
||||
const camCorrespondences_t & camCorrespondences2,
|
||||
const translations_t & camOffsets,
|
||||
const rotations_t & camRotations,
|
||||
const translation_t & t12,
|
||||
const rotation_t & R12 );
|
||||
/**
|
||||
* \brief Destructor.
|
||||
*/
|
||||
virtual ~NoncentralRelativeAdapter();
|
||||
|
||||
//Access of correspondences
|
||||
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector1( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual bearingVector_t getBearingVector2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual double getWeight( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual translation_t getCamOffset1( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual rotation_t getCamRotation1( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual translation_t getCamOffset2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual rotation_t getCamRotation2( size_t index ) const;
|
||||
/** See parent-class */
|
||||
virtual size_t getNumberCorrespondences() const;
|
||||
|
||||
protected:
|
||||
/** Reference to bearing-vectors in viewpoint 1.
|
||||
* (expressed in their individual cameras)
|
||||
*/
|
||||
const bearingVectors_t & _bearingVectors1;
|
||||
/** Reference to bearing-vectors in viewpoint 2.
|
||||
* (expressed in their individual cameras)
|
||||
*/
|
||||
const bearingVectors_t & _bearingVectors2;
|
||||
/** Reference to an array of camera-indices for the bearing vectors in
|
||||
* viewpoint 1. Length equals to number of bearing-vectors in viewpoint 1,
|
||||
* and elements are indices of cameras in the _camOffsets and _camRotations
|
||||
* arrays.
|
||||
*/
|
||||
const camCorrespondences_t & _camCorrespondences1;
|
||||
/** Reference to an array of camera-indices for the bearing vectors in
|
||||
* viewpoint 2. Length equals to number of bearing-vectors in viewpoint 2,
|
||||
* and elements are indices of cameras in the _camOffsets and _camRotations
|
||||
* arrays.
|
||||
*/
|
||||
const camCorrespondences_t & _camCorrespondences2;
|
||||
|
||||
/** Reference to positions of the different cameras seen from their
|
||||
* viewpoint.
|
||||
*/
|
||||
const translations_t & _camOffsets;
|
||||
/** Reference to rotations from the different cameras back to their
|
||||
* viewpoint.
|
||||
*/
|
||||
const rotations_t & _camRotations;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* OPENGV_RELATIVE_POSE_NONCENTRALRELATIVEADAPTER_HPP_ */
|
||||