1. 算法相关链接
代码仓库: https://github.com/victorprad/InfiniTAM
相关论文: InfiniTAM v3: A Framework for Large-Scale 3D Reconstruction with Loop Closure
2. 测试平台
3. 编译
3.1 clone仓库
git clone https://github.com/victorprad/InfiniTAM
3.2 安装依赖
主要是安装cuda,直接安装最新版本的就可以了,其它的库ubuntu18.04系统都自带了,cuda安装方式如下:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.4.2/local_installers/cuda-repo-ubuntu1804-11-4-local_11.4.2-470.57.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-11-4-local_11.4.2-470.57.02-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu1804-11-4-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
安装完后要重启系统,否则编译时找不到device
3.3 修改cmake文件
将 InfiniTAM/cmake/FindOpenNI.cmake 文件改成如下内容:
# - Find OpenNI
# This module defines
# OpenNI_INCLUDE_DIR, where to find OpenNI include files
# OpenNI_LIBRARIES, the libraries needed to use OpenNI
# OpenNI_FOUND, If false, do not try to use OpenNI.
# also defined, but not for general use are
# OpenNI_LIBRARY, where to find the OpenNI library.
set(OPENNI_ROOT "/usr/local" CACHE FILEPATH "Root directory of OpenNI2")
# Finally the library itself
find_library(OpenNI_LIBRARY
NAMES OpenNI2
PATHS "${OPENNI_ROOT}/lib" "C:/Program Files (x86)/OpenNI/Lib" "C:/Program Files/OpenNI/Lib" ${CMAKE_LIB_PATH}
)
find_path(OpenNI_INCLUDE_DIR OpenNI.h PATH "${OPENNI_ROOT}/include/openni2")
find_library(OpenNI_LIBRARY OpenNI2 PATH "${OPENNI_ROOT}/lib")
# handle the QUIETLY and REQUIRED arguments and set JPEG_FOUND to TRUE if
# all listed variables are TRUE
#include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
#include(${CMAKE_MODULE_PATH}/FindPackageHandleStandardArgs.cmake)
find_package_handle_standard_args(OpenNI DEFAULT_MSG OpenNI_LIBRARY OpenNI_INCLUDE_DIR)
if(OPENNI_FOUND)
set(OpenNI_LIBRARIES ${OpenNI_LIBRARY})
endif()
mark_as_advanced(OpenNI_LIBRARY OpenNI_INCLUDE_DIR)
将 InfiniTAM/cmake/UseOpenNI.cmake 文件修改成如下内容:
###################
# UseOpenNI.cmake #
###################
OPTION(WITH_OPENNI "Build with OpenNI support?" ON)
IF(WITH_OPENNI)
IF(MSVC_IDE)
FIND_PATH(OPENNI_ROOT LICENSE HINTS "C:/Program Files/OpenNI2")
ELSEIF(APPLE)
FIND_PATH(OPENNI_ROOT primesense-usb.rules HINTS ~/Downloads/OpenNI-MacOSX-x64-2.2)
ELSEIF("${CMAKE_SYSTEM}" MATCHES "Linux")
FIND_PATH(OPENNI_ROOT LICENSE HINTS ~/Software/OpenNI2)
ELSE()
MESSAGE(FATAL_ERROR "OpenNI not currently set up to work on this platform.")
ENDIF()
FIND_PATH(OPENNI_INCLUDE_DIR OpenNI.h HINTS "${OPENNI_ROOT}/include/openni2")
FIND_LIBRARY(OPENNI_LIBRARY OpenNI2 HINTS "${OPENNI_ROOT}/Bin/x64-Release" "${OPENNI_ROOT}/lib" "${OPENNI_ROOT}/Redist")
INCLUDE_DIRECTORIES(${OPENNI_INCLUDE_DIR})
ELSE()
ADD_DEFINITIONS(-DCOMPILE_WITHOUT_OpenNI)
ENDIF()
3.4 编译
mkdir build && cd build
cmake ../InfiniTAM/InfiniTAM/ -DOPENNI_ROOT="/usr"
make
4. 运行
4.1 下载数据集:
https://drive.google.com/uc?id=0B1nzrhyFOuT3RVNkcEtIOUtUUHM&export=download
4.2 运行程序
./InfiniTAM/InfiniTAM ~/dataset/reconstruction/Teddy/calib.txt ~/dataset/reconstruction/Teddy/Frames/%04i.ppm ~/dataset/reconstruction/Teddy/Frames/%04i.pgm