PTAM/PTAMM 컴파일하기

영상처리 2014.04.01 21:17

이 글은 PTAM과 PTAMM 소스코드를 컴파일하는 방법에 관한 글입니다. PTAM/PTAMM에 대한 이론적인 내용에 대해서는 [영상처리] - PTAM(Parallel Tracking and Mapping)과 PTAMM 글을 참조하기 바랍니다.


PTAM/PTAMM은 이것저것 사용하는 라이브러리가 많고 또 대부분 리눅스 계열의 라이브러리라 윈도우즈 환경에서 컴파일하려면 조금 복잡한 과정을 필요로 합니다 (제가 해보니 PTAM의 경우는 비교적 손쉽게 컴파일이 가능했지만 PTAMM은 libpng 때문에 조금 애를 먹었습니다).



먼저, PTAM과 PTAMM에서 공통으로 필요로 하는 공통 라이브러리 빌드 과정을 설명한 후에, PTAM 과 PTAMM 빌드 방법을 하나씩 설명하도록 하겠습니다 (글에 설명된 순서대로 설치).


저의 컴파일 환경은 Windows 7(32비트 시스템)에서 visual studio 2008(with service pack1)을 이용하였지만 다른 윈도우즈 환경 및 visual studio 버전에서도 큰 차이는 없을 것으로 생각합니다.



1. PTAM/PTAMM 공통 라이브러리 세팅


(1) 소스코드 및 메뉴얼 다운로드


(2) 핵심 라이브러리 다운로드(TooN, libCVD, Gvars3)

  • cvs(라이브러리 다운로드 툴) 설치: http://ftp.gnu.org/non-gnu/cvs/binary/stable/x86-woe/ 에서 cvs 최신버전(cvs-1-11-22.zip) 다운로드 후 압축해제하면 cvs.exe 파일이 생성됨
  • cvs.exe 파일이 존재하는 위치에서 도스 명령창 실행(Shift+마우스우클릭 후 '여기서 명령창 열기' 선택)후 다음 3개의 명령어를 하나씩 입력하여 TooN, libCVD, GVars3를 다운로드

cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/toon co -D "Mon May 11 16:29:26 BST 2009" TooN

cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/libcvd co -D "Mon May 11 16:29:26 BST 2009" libcvd

cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/libcvd co -D "Mon May 11 16:29:26 BST 2009" gvars3

  • 한줄씩 복사한 후 도스창에서 마우스 우클릭 '붙여넣기'를 이용하면 편리함
  • 다운로드가 완료도면 현재 폴더 밑에 TooN, libcvd, gvars3라는 3개의 폴더가 생성됨


(3) 폴더 구조 생성

  • ptam_include, ptam_lib, ptam_bin이라는 이름으로 3개의 폴더를 생성
  • ptam_include: PTAM을 컴파일하기 위해 필요한 라이브러리 헤더 파일들을 저장하기 위한 폴더
  • ptam_lib: PTAM을 컴파일하기 위해 팰요한 lib 파일들을 저장하기 위한 폴더
  • ptam_bin: PTAM을 실행하는데 필요한 dll 파일들을 저장하기 위한 폴더

※ 최종적인 폴더 내용

+---ptam_include

    |   jconfig.h

    |   jerror.h

    |   jmorecfg.h

    |   jpeglib.h

    |   lib3ds.h

    |   png.h

    |   pngconf.h

    |   pthread.h

    |   sched.h

    |   semaphore.h

    |   zconf.h

    |   zlib.h

    +---cvd

        |    (lots of cvd files and directories)

    +---GL

        |    glew.h

        |    glxew.h

        |    wglew.h

    +---gvars3

        |    (lots of gvars3 header files)

    +---opencv

        |    (lots of opencv header files)

    +---opencv2

        |    (lots of opencv files and directories)

    +---PGR

        |    (lots of pgr files and directories)

    +---TooN

        |    (lots of toon files and directories)


+---ptam_lib

    |   FlyCapture2.lib

    |   glew32.lib

    |   gvars3.lib

    |   lib3ds-2_0.lib

    |   libblas.lib

    |   libcvd.lib

    |   libjpeg.lib

    |   liblapack.lib

    |   libpng.lib

    |   opencv_core244.lib

    |   opencv_highgui244.lib

    |   pthreadVCE2.lib

    |   zlib.lib


+---ptam_bin

    |   calibrator_settings.cfg

    |   camera.cfg

    |   CameraCalibrator.exe

    |   FlyCapture2.dll

    |   glew32.dll

    |   lib3ds-2_0.dll

    |   libblas.dll

    |   libgcc_s_dw2-1.dll

    |   libgfortran-3.dll

    |   liblapack.dll

    |   liblapacke.dll

    |   libpng12.dll

    |   opencv_core244.dll

    |   opencv_highgui244.dll

    |   PTAM.exe

    |   PTAMM.exe

    |   pthreadVCE2.dll

    |   settings.cfg

    |   zlib1.dll

    +---ARData


(4) 기타 라이브러리 다운로드 및 설치

- Lapack and BLAS: http://icl.cs.utk.edu/lapack-for-windows/lapack/index.html#lapacke (LAPACKE examples)

  . LAPACKE_examples/lib/ 밑의 *.lib 파일들을 ptam_lib 폴더로 복사

  . LAPACKE_examples/Release/ 밑의 모든 *.dll 파일들을 ptam_bin 폴더로 복사


- pthreads: http://sourceware.org/pthreads-win32/ (pthreads-w32-2-9-1-release.zip)

  . Pre-built.2\include\ 에 있는 *.h 파일들을 ptam_include 폴더에 복사

  . Pre-built.2\lib\x86\ 에 있는 *.lib 파일들을 ptam_lib 폴더에 복사

  . Pre-built.2\dll\x86\ 에 있는 *.dll 파일들을 ptam_bin 폴더에 복사


- GLEW: http://glew.sourceforge.net/ (glew-1.10.0-win32.zip)

  . glew-1.10.0/include/ 밑의 GL 폴더 전체를 ptam_include 밑에 복사 (ptam_include/GL)

  . glew-1.10.0/lib/Release/Win32/ 의 *.lib 파일들을 ptam_lib 폴더에 복사

  . glew-1.10.0/bin/Release/Win32/ 의 *.dll 파일을 ptam_bin 폴더에 복사


- lib3ds: https://code.google.com/p/lib3ds/ (lib3ds-20080909.zip)

  . lib3ds-20080909/의 lib3ds.sln를 열어서 release 모드로 컴파일

  . lib3ds-20080909/release/lib3ds-2_0.lib를 ptam_lib 폴더로 복사

  . lib3ds-20080909/release/lib3ds-2_0.dll을 ptam_bin 폴더로 복사

  . lib3ds-20080909/src/lib3ds.h를 ptam_include 폴더로 복사


- libpng: http://gnuwin32.sourceforge.net/packages/libpng.htm (libpng-1.2.37-setup.exe)

  . libpng-1.2.37-setup.exe 실행하여 libpng 설치

  . GnuWin32/include/ 의 png.h, pngconf.h를 ptam_include 폴더로 복사

  . GnuWin32/lib/의 libpng.lib를 ptam_lib 폴더로 복사

  . GnuWin32/lib/의 *.dll 을 ptam_bin 폴더로 복사 (libpng12.dll, zlib1.dll)


(5) TooN 설치

  • TooN 폴더 전체를 ptam_include 폴더 밑에 복사 (ptam_include/TooN)
  • ptam_include/TooN/internals/config.hh 파일을 열어서 다음 줄을 추가

#define TOON_USE_LAPACK 1


(6) libCVD 컴파일

- libcvd/build/vc2005/에 있는 libcvd.sln 프로젝트 파일 오픈 (자신의 visual studio 버전에 맞게 프로젝트 변환이 발생할 수 있음)

- 빌드 설정을 release로 변경

- config.h 파일을 열어서 CVD_HAVE_PNG가 define되도록 29줄, 33줄을 주석처리

//#if 0  // FIXME: compile libz and libpng

#ifndef CVD_DISABLE_PNG

    #define CVD_HAVE_PNG 1

#endif

//#endif

  • libcvd/pnm_src/ 에 있는 pnc.cc, fits.cc, text.cxx, text_write.cc를 프로젝트에 추가
  • 프로젝트 설정에서 ptam_include 폴더를 include path에 추가
  • opencv/3rdparty/libjpeg/ 에서 *.h 파일들을 ptam_include 폴더에 복사 (jconfig.h, jerror.h, jmorecfg.h, jpeglib.h)
  • opencv/3rdparty/zlib/ 에서 zlib.h 파일을 ptam_include 폴더에 복사 (zlib.h)
  • opencv/3rdparty/zlib/zconf.h.cmakein를 zconf.h로 이름을 변경하여 ptam_include 폴더에 복사
  • ptam_include/zconf.h 파일을 열어서 다음의 두 줄을 주석처리:

//#cmakedefine Z_PREFIX

//#cmakedefine Z_HAVE_UNISTD_H

  • 컴파일에 성공하면,

  . libcvd/lib/ 밑에 생성된 libcvd.lib 파일을 ptam_lib 폴더로 복사

  . libcvd/cvd 폴더 전체를 ptam_include 폴더 밑으로 복사 (ptam_include/cvd)


(7) Gvars3 컴파일

  • gvars3/build/vc2005/에 있는 gvars3.sln 프로젝트 파일 오픈 (자신의 visual studio 버전에 맞게 프로젝트 변환이 발생할 수 있음)
  • 빌드 설정을 release로 변경
  • GUI_Fltk2.h, GUI_Fltk2.cc 2개의 파일을 프로젝트에서 제거
  • gvars3/gvars3/config.h.in 파일을 config.h로 이름 변경후, 파일 내용을 아래와 같이 수정

#ifndef GVARS3_INCLUDE_CONFIG_H

#define GVARS3_INCLUDE_CONFIG_H

#define GVARS3_HAVE_TOON 1

#endif

  • 프로젝트 설정에서 ptam_include 폴더를 include path에 추가
  • 컴파일했을 때, error C2064: term does not evaluate to a function taking 0 arguments 라는 에러가 발생하면 gvars3.h 261번째 줄(template<class T> static T& get(const std::string& name, const T& default_val=DefaultValue<T>::val(), int flags=0);)을 아래와 같이 수정

template<class T> static T& get(const std::string& name, const T& default_val=T(), int flags=0);

  • 컴파일에 성공하면

  . gvars3/lib/ 에 생성된 *.lib를 ptam_lib 폴더로 복사 (gvars3.lib, gvars3-headless.lib)

  . gvars3/gvars3 폴더 전체를 ptam_include 폴더 밑으로 복사 (ptam_include/gvars3)



2. PTAM 컴파일 및 실행


(1) PTAM 컴파일

  • PTAM/Build/Win32/ 폴더의 모든 파일들을 PTAM/ 으로 복사
  • PTAM/ 에서 PTAM.sln 프로젝트 파일 오픈 (자신의 visual studio 버전에 맞게 프로젝트 변환이 발생할 수 있음)
  • 빌드 설정을 release로 변경
  • 프로젝트 설정(CameraCalibrator & PTAM 모두)에서 다음을 수정

   . ptam_include 폴더를 include path에 추가

   . ptam_lib 폴더를 library path에 추가

  • 프로젝트 설정(CameraCalibrator & PTAM 모두)에서 library depenency를 다음과 같이 수정

   . 1394camera.lib 제거

   . blas_win32.lib를 libblas.lib로 이름변경

   . lapack_win32.lib를 liblapack.lib로 이름변경


이후 과정은 영상입력장치에 따라 다음과 같이 달라짐(여기서는 opencv를 이용하여 webcam과 연동하는 경우와 Point Grey 카메라를 이용하는 두 가지 경우에 대해서만 설명)


※ 영상 입력장치 세팅 방법

  • http://ewokrampage.wordpress.com/video-sources/ 에서 자신의 카메라에 맞는 비디오 입력소스를 다운로드
  • 1394 카메라(Unibrain Fire-i): 디폴트로 포함된 VideoSource_Win32_CMU1394.cc 파일을 그대로 사용
  • Web 카메라(OpenCV 인터페이스 이용): VideoSource_Linux_OpenCV.cc 다운로드
  • Point Grey 카메라: VideoSource_Win32_PointGrey.cc 다운로드
  • Web 카메라(direct show 이용): VideoSource_Win32_LibVideoInput.cc 다운로드
  • 다운받은 *.cc 파일로 VideoSource_Win32_CMU1394.cc를 대체: CameraCalibrator 프로젝트와 PTAM 프로젝트 모두에서 VideoSource_Win32_CMU1394.cc를 제거한 후 다운받은 *.cc를 두 프로젝트에 추가


(1-1) OpenCV 인터페이스 사용한 웹캠 이용시 이후 과정

  • VideoSource_Linux_OpenCV.cc를 프로젝트에 추가 (기존 VideoSource_Win32_CMU1394.cc은 제거)
  • VideoSource_Linux_OpenCV.cc의 20번째 줄을 주석처리

//#include <cvd/Linux/v4lbuffer.h>

  • opencv 다운로드 및 설치 (필요시): http://opencv.org/downloads.html
  • opencv/build/include/ 밑의 opencv, opencv2 폴더를 ptam_include 폴더에 복사
  • opencv/build/x86/vc9/lib/ 밑의 opencv_coreXXX.lib, opencv_highguiXXX.lib 를 ptam_lib 폴더에 복사
  • opencv/build/x86/vc9/lib/ 밑의 opencv_coreXXX.dll, opencv_highguiXXX.dll 를 ptam_lib 폴더에 복사
  • 이후 PTAM 컴파일해서 성공하면 OK!!


(1-2) Point Grey 카메라 이용시 이후 과정

  • VideoSource_Win32_PointGrey.cc를 프로젝트에 추가 (기존 VideoSource_Win32_CMU1394.cc은 제거)
  • Point Grey 카메라의 FlyCapture2 라이브러리 설치 (필요시)
  • ptam_include 폴더 밑에 PGR 폴더 생성하고 Point Grey Research/FlyCapture2/include/ 폴더에 있는 파일 전체를 PGR 폴더에 복사
  • Point Grey Research/FlyCapture2/lib/의 FlyCapture2.lib를 ptam_lib 폴더에 복사
  • Point Grey Research/FlyCapture2/bin/의 FlyCapture2.dll을 ptam_bin 폴더에 복사
  • 프로젝트 설정(CameraCalibrator & PTAM 모두) library depenency에 FlyCapture2.lib를 추가
  • 이후 PTAM 컴파일해서 성공하면 OK!!


(2) PTAM 실행

  • 컴파일에 성공하면 PTAM/release/의 PTAM.exe와 CameraCalibrator.exe를 ptam_bin 폴더에 복사
  • PTAM/ 밑의 calibrator_settings.cfg, settings.cfg 두 파일을 ptam_bin 폴더에 복사
  • 캘리브레이션 패턴 인쇄: PTAM/calib_pattern.pdf 파일
  • 카메라 캘리브레이션: CameraCalibrator.exe를 실행하여 캘리브레이션 수행 (카메라의 자동초점 기능을 끄고 할 것)
  • PTAM.exe 실행



3. PTAMM 컴파일 및 실행


PTAM의 경우와 거의 유사하지만 조금씩 다른 부분이 있으니 내용을 주의깊게 읽어보기 바랍니다.


(1) PTAMM 컴파일

  • PTAMM/Build/Win32/ 폴더의 모든 파일들을 PTAMM/ 으로 복사
  • PTAMM/ 에서 PTAMM.sln 프로젝트 파일 오픈 (자신의 visual studio 버전에 맞게 프로젝트 변환이 발생할 수 있음, PTAMM.sln이 마우스 더블클릭으로 열리지 않을 경우에는 visual studio를 먼저 실행시킨 후에 프로젝트 오픈)
  • 빌드 설정을 release로 변경
  • 프로젝트 설정(CameraCalibrator & PTAMM 모두)에서 다음을 수정

   . ptam_include 폴더를 include path에 추가

   . ptam_lib 폴더를 library path에 추가

  • 프로젝트 설정(CameraCalibrator & PTAMM 모두)에서 library depenency를 다음과 같이 수정

   . 1394camera.lib 제거

   . blas_win32_MT.lib를 libblas.lib로 이름변경

   . jpeg.lib를 libjpeg.lib로 이름변경

   . lapack_win32_MT.lib를 liblapack.lib로 이름변경

   . zlib.lib 추가

  • opencv/build/x86/vc9/staticlib/에서 zlib.lib, libjpeg.lib를 ptam_lib 폴더에 복사 (자신의 visual studio 버전에 맞게 적절한 파일을 찾아서 복사)


이후 과정은 PTAM 경우처럼 영상입력장치에 따라 다음과 같이 달라짐:


(1-1) OpenCV 인터페이스 사용한 웹캠 이용시 이후 과정

  • VideoSource_Linux_OpenCV.cc를 프로젝트에 추가 (기존 VideoSource_Win32_CMU1394.cc은 제거)
  • VideoSource_Linux_OpenCV.cc의 20번째 줄을 주석처리

//#include <cvd/Linux/v4lbuffer.h>

  • VideoSource_Linux_OpenCV.cc의 30번째 줄에 using namespace PTAMM;을 추가

using namespace PTAMM;

  • opencv 다운로드 및 설치 (필요시): http://opencv.org/downloads.html
  • opencv/build/include/ 밑의 opencv, opencv2 폴더를 ptam_include 폴더에 복사
  • opencv/build/x86/vc9/lib/ 밑의 opencv_coreXXX.lib, opencv_highguiXXX.lib 를 ptam_lib 폴더에 복사
  • opencv/build/x86/vc9/lib/ 밑의 opencv_coreXXX.dll, opencv_highguiXXX.dll 를 ptam_lib 폴더에 복사
  • 이후 PTAMM 컴파일해서 성공하면 OK!!


(1-2) Point Grey 카메라 이용시 이후 과정

  • VideoSource_Win32_PointGrey.cc를 프로젝트에 추가 (기존 VideoSource_Win32_CMU1394.cc은 제거)
  • VideoSource_Win32_PointGrey.cc의 18번째 줄에 using namespace PTAMM;을 추가

using namespace PTAMM;

  • Point Grey 카메라의 FlyCapture2 라이브러리 설치 (필요시)
  • ptam_include 폴더 밑에 PGR 폴더 생성하고 Point Grey Research/FlyCapture2/include/ 폴더에 있는 파일 전체를 PGR 폴더에 복사
  • Point Grey Research/FlyCapture2/lib/의 FlyCapture2.lib를 ptam_lib 폴더에 복사
  • Point Grey Research/FlyCapture2/bin/의 FlyCapture2.dll을 ptam_bin 폴더에 복사
  • 프로젝트 설정(CameraCalibrator & PTAMM 모두) library depenency에 FlyCapture2.lib를 추가
  • 이후 PTAMM 컴파일해서 성공하면 OK!!


(2) PTAMM 실행

  •  컴파일에 성공하면 PTAMM/release/의 PTAMM.exe와 CameraCalibrator.exe를 ptam_bin 폴더에 복사
  • PTAMM/ 밑의 calibrator_settings.cfg, settings.cfg 두 파일을 ptam_bin 폴더에 복사
  • PTAMM/ARData 폴더 전체를 ptam_bin 폴더 밑으로 복사 (ptam_bin/ARData)
  • 캘리브레이션 패턴 인쇄: PTAMM/calib_pattern.pdf 파일
  • 카메라 캘리브레이션: CameraCalibrator.exe를 실행 (카메라의 자동초점 기능을 끄고 할 것, PTAM에서 캘리브레이션한 결과를 그대로 사용해도 됨)
  • PTAMM.exe 실행



4. PTAM/PTAMM용 카메라 캘리브레이션


PTAM에서는 fisheye 카메라 왜곡모델을 사용하기 때문에 흔히 사용하는 polynomial 모델의 카메라 파라미터는 사용할 수 없습니다. 따라서, PTAM에서 제공하는 캘리브레이션 프로그램을 이용해야만 하는데.. 이게 많이 불편합니다. 속도도 너무 느리고 하나라도 이미지를 잘못 획득하면 처음부터 다시 시작해야 합니다. 그래서 편리하게 fisheye 모델 파라미터를 구할 수 있는 프로그램을 직접 구현해 보았습니다 ([개발한 것들] - 카메라 캘리브레이션 프로그램 (DarkCamCalibrator)). 단, 프로그램에서 구한 fx, fy, cx, cy 값을 이미지 해상도로 나눈 후 PTAM/PTAMM에 대입해야 합니다 (fx, cx는 이미지 폭으로 나누고 fy, cy는 이미지 높이로 나눠줘야 함).



5. PTAM/PTAMM 실행파일


혹시 위와 같은 번잡한 컴파일 과정없이 성능 및 동작 여부만 테스트하고자 하는 분들을 위해 제가 컴파일한 PTAM/PTAMM 실행파일을 첨부합니다(실행에 필요한 모든 실행환경 포함). 첨부한 실행파일은 웹캠을 이용한 PTAM, Point Grey 카메라를 이용한 PTAM, 웹캠을 이용한 PTAMM, Point Grey 카메라를 이용한 PTAMM 이렇게 4개 버전입니다.


PTAM_PTAMM.zip



☞ 제가 돌려보니 PTAM, PTAMM 모두 잘 동작합니다. 카메라를 캘리브레이션 할때는 속도가 느리지만 실제 PTAM, PTAMM을 돌릴 때는 실시간으로 동작합니다. 단, PTAMM의 경우 맵을 여러개 사용하는 것은 아직 테스트해보지 못했습니다.


by 다크 프로그래머


'영상처리' 카테고리의 다른 글

영상 특징점(keypoint) 추출방법  (170) 2014.04.10
PTAM/PTAMM 컴파일하기  (26) 2014.04.01
PTAM(Parallel Tracking and Mapping)과 PTAMM  (10) 2014.03.30
Bag of Words 기법  (53) 2014.02.19
  • BlogIcon 한쿡남자 :-) 2014.04.02 16:49 신고 ADDR 수정/삭제 답글

    유익하게 읽고 갑니다.
    블로그 많이 발전 하세요 ^^

  • 수제자 2014.04.09 22:37 신고 ADDR 수정/삭제 답글

    요즘 시간이 없어, 차마 이 글을 읽지 못하겠습니다.
    말타면 경마잡고 싶다고, 읽기 시작하면 막 해보고 싶고, 그러기엔 제가 좀 시간이..^^
    읽어보진 않았지만 미리 좋은 글 감사합니다.
    글 하나 쓴다는게 참 쉬운게 아니고, 그리고 지식을 공유한다는 것도요..
    늘 감사합니다. 항상 건강하세요~^^

  • 메모광 2014.04.10 01:04 신고 ADDR 수정/삭제 답글

    PTAM은 쉽다고 말씀하셨지만, 험난한 과정이었네요!

    • BlogIcon 다크pgmr 2014.04.10 06:52 신고 수정/삭제

      ㅎㅎ 축하! 글에서는 ptam, ptamm 공용으로 라이브러리 세팅을 해서 그런 것임. ptam만 돌린다면 lib2ds, libpng 설치가 필요없고, libCVD는 별도 수정없이 바로 컴파일해서 에러나는 부분만 몇개 잡아주면 됩니다.

  • 지각인생 2014.04.16 08:59 신고 ADDR 수정/삭제 답글

    안녕하세요~ 다크님이 올려주시는 실행파일들은 opencv dll 파일이 없이도 실행이 되던데 어떤방법으로 하는건지 알려주실수 있으신가요?^^

    • BlogIcon 다크pgmr 2014.04.16 09:15 신고 수정/삭제

      네 그건 opencv를 정적라이브러리(static library)로 링크하여 컴파일하기 때문입니다. 자세한 내용은 http://darkpgmr.tistory.com/50 글을 참조하시기 바랍니다.

  • 겨울토끼 2014.06.23 12:46 신고 ADDR 수정/삭제 답글

    안녕하세요~ 이블로그에서 눈팅한지 1여년만에 처음으로 글을 남깁니다!
    PTAM 을 리눅스에서 홀로 빌드해보고 이후 윈도우에서 이글을 보면서 한번더 빌드를 하여보았습니다.
    다크님의 가이드 덕분인지 윈도우가 훨씬 시간이 덜 걸렸네요 ㅎㅎ
    리눅스에서 처음 빌드할때 루트권한으로 가서 직접 헤더도 수정하고.. 참 어려웠는데
    더 어려운 윈도우 빌드를 이렇게 쉽게 해놓으셔서 너무 감사합니다~

    매번 눈팅만 하고 가던지라 이렇게 감사인사라도 남깁니다!

    • BlogIcon 다크pgmr 2014.06.23 13:54 신고 수정/삭제

      안녕하세요. 직접 컴파일도 해보시고 또 도움도 되었다니 저도 기쁘네요. 제가 블로그를 시작한지 1년 조금 넘었는데 그럼 거의 초창기부터 오셨던 분이라니 반갑습니다. 그리고 댓글 감사합니다.

  • 열공열공 2015.07.04 14:30 신고 ADDR 수정/삭제 답글

    안녕하세요 다크프로그래머님!!
    덕분에 캘리블레이션 파라미터를 잘 계산할 수 있었는데요
    제가 이번에는 point grey사의 카메라 2대를 사용해서 stereo calibration을 하려고하는데
    어떻게하면 되나요?(라이브러리 추가 등)
    설명좀 해주시면 감사하겠습니다

    • BlogIcon 다크pgmr 2015.07.06 09:26 신고 수정/삭제

      저는 스테레오 매칭이나 스테레오 캘리브레이션에 대해서는 잘 알지 못합니다.

  • LOOO 2016.05.30 19:36 신고 ADDR 수정/삭제 답글

    안녕하세요~ 이 글을 읽고 질문이 있어서 이렇게 글을 남겨봅니다.
    제 컴퓨터에서 되는지 한번 해보려고 실행파일을 받아서 실행시켜 보았는데요.
    camera.cfg 가 없어서 안된다고 뜨네요. ㅠㅠ 어떻게 해결할 수 있을까요??ㅠㅠ

    • BlogIcon 다크pgmr 2016.05.31 08:55 신고 수정/삭제

      안녕하세요. camera.cfg 파일은 카메라에 대한 캘리브레이션을 수행하면 생성되는 파일입니다. ptam을 돌리기 위해서는 카메라 캘리브레이션이 필수입니다. 첨부된 압축파일내에 있는 CameraCalibrator_XXX.exe 파일을 이용해서 캘리브레이션을 수행하시기 바랍니다. 샘플로 제가 사용하는 카메라에 대한 camera.cfg 파일과 캘리브레이션용 패턴파일을 업로드하였으니 압축파일을 다시 다운로드받으시기 바랍니다.

  • LOOO 2016.05.31 17:38 신고 ADDR 수정/삭제 답글

    친절한 답변 정말 감사합니다~^^ㅎ
    잘되네요~ 저도 한번 처음부터 차근차근 해봐야겠어요 ㅎㅎ

  • 닉네임을뭐라고하지 2016.07.27 14:38 신고 ADDR 수정/삭제 답글

    안녕하세요,
    쉽지않아 보였던 windows에서의 PTAM 구동을 다크님 덕분에 쉽게 할 수 있었습니다.
    소소하지만 설치 과정에서 제가 겪었던 에러와 해결방법을 공유합니다.
    libcvd 빌드 중 "namespace std has no member max"에러 -> 해당 파일에 #include <algorithm> 추가
    libcvd 빌드 중 timespec strutcture 중복 선언 에러 -> pthread.h에서 아래와 같이 timespec선언문 주석 처리
    //struct timespec {
    // time_t tv_sec;
    // long tv_nsec;
    //};

    이번 포스팅 외에도 여러 문제에 대해서 핵심을 쉽게 설명해주셔서 평소에도 많은 도움 받고 있습니다. 감사합니다.

    • BlogIcon 다크pgmr 2016.07.27 22:34 신고 수정/삭제

      이렇게 경험을 공유해 주셔서 감사합니다.

  • Young 2016.10.31 11:55 신고 ADDR 수정/삭제 답글

    안녕하세요
    실제로 PTAM을 구동해보고 싶어서 따라하는데 쉽게 잘 설명해주셨더라구요 ㅎㅎ
    윗 과정은 전부 할 수 있었는데 PTAM을 컴파일 하려고 하니 링커에러가 뜨더라구요...
    제가 아직 초짜라 잘 모르는데 LNK2001 외부기호를 확인할 수 없습니다.

    이부분에 대해서는 어떤식으로 수정해야 하는지 알 수 있을까요?

    • BlogIcon 다크pgmr 2016.10.31 15:35 신고 수정/삭제

      프로젝트 설정의 external library path와 input library dependency가 제대로 설정되었는지 확인해 보시기 바랍니다.

    • Young 2016.11.03 17:22 신고 수정/삭제

      말씀하시는게 추가 라이브러리 디렉토리, 추가 포함 디렉토리 말씀하시는거죠?
      그건 다 설정을 제대로 해 주었습니다.

      그리고 추가 종속성 lib파일도 말씀하신대로 등록 했습니다 ㅠㅠ 근데 해결이 안되네요...ㅠㅠ

    • BlogIcon 다크pgmr 2016.11.03 17:56 신고 수정/삭제

      답답하시겠지만 그외 다른 원인은 저도 알수 없습니다.. 링크 에러가 났다는 것만으로 에러 원인을 다른 사람이 알 수는 없습니다. 어떤 라이브러리 모듈에 대해서 lnk2001 에러가 났는지 확인해 보시고 해당 모듈에 대해 다시 한번 점검해 보는 방법 외에는 없을 것 같습니다.

    • Young 2016.11.03 17:58 신고 수정/삭제

      오래된 글인데도 답변 달아주셔서 감사합니다 ㅎㅎ

      원인을 알아보고 해결한다음에 해결법을 남기러 다시 들르겠습니다!!

  • 제삼라운드 2017.03.05 11:08 신고 ADDR 수정/삭제 답글

    어제 PTAM를 다운받고 컴파일을 어찌해야 할지 몰라서 고민이었는데
    여기 오아시스 같은 내용이 있어서 감사의 글 남김니다

  • 대학원 2018.06.05 14:57 신고 ADDR 수정/삭제 답글

    SLAM 에 대해 좀 여쭤보고 싶은게 있는데요
    혹시 SLAM에 direct method 즉, 특징점에 대한 정보를 사용하지 않고,
    image 에 intensity 에 정보만 가지고 image information 을 결정하고 그것에 대한
    tracking, mapping 하는 것이 Direct SLAM 이라고 알고 있습니다
    혹시 Direct SLAM 에 대해서는 알고 있는게 있으신지 궁금해서 여쭤봅니다ㅠㅠ
    이 주제로 논문 쓰려는데 국내에서 참조할 논문이나 교본이 없고, 외국 논문은
    과정은 생략하고 결과만 써놓은지라 정확히 설명이 안되어 있네요 ㅠㅠ 혹시 아시면 답글 부탁드립니다!

    • BlogIcon 다크pgmr 2018.06.05 20:57 신고 수정/삭제

      direct slam하면 대표적으로 lsd-slam이 있는 것으로 알고 있습니다. 그런데, lsd-slam 논문이 결과만 써놓았나요? 전 안읽어봐서 모르겠지만 그러진 않을텐데요.. 안타깝지만 영문으로 된 논문/자료를 회피할 방법은 없습니다. 특히나 논문을 쓴다면 더욱 어쩔 수 없겠네요..