/Visual-Odometry

비주얼오도메트리와증강현실(AIE6660-01)

Primary LanguagePython

Visual-Odometry

비주얼오도메트리와증강현실(AIE6660-01) 중간시험과제: automatic stitching of two images

Project Overview

이 프로젝트는 Sogang University의 두 가지 뷰를 캡처하고, 이 두 이미지를 기반으로 파노라마 이미지를 생성하는 것입니다. 이를 위해 ORB, Ransac 및 homography 알고리즘을 개발하고 적용하였습니다.

Steps

  1. Sogang University에서 두 가지 뷰 캡처.
  2. 두 입력에서 파노라마 이미지를 생성하기 위한 ORB + Ransac + homography 알고리즘 개발.
  3. 결과를 얻기 위해 알고리즘 적용.
  4. Sogang University에서 또 다른 두 가지 뷰 캡처.
  5. 출력 생성.

Submission

  • GitHub Repository Link
    • PDF 보고서: 문제, 알고리즘, 실험 결과에 대한 설명이 포함되어 있습니다.
    • 소스 코드
    • README.md: 보고서의 짧은 버전입니다.

폴더 및 작동법 설명

폴더 설명

data
input 파일, 파노라마를 만들기 위한 한 쌍의 이미지가 저장되어야 함. image{number}_1.jpg 형식으로 저장
keypoint
opencvcv2.ORB_create를 통해 만들어진 각 이미지의 keypoint(특징점의 위치)descriptor(keypoint 주변 위치의 특징 벡터)를 원본에 표시한 이미지
keypoint_matches
Hamming distance를 통한 Bruteforce matching을 수행한 후 Lowe's ratio test를 적용하여 match간 거리 비율이 0.75보다 낮은 match만 원본에 표시한 이미지
ransac_homography_result
RANSAC 알고리즘을 통해 찾아진 내부 데이터 (inliers)를 기반으로 필터링된 keypoint matching만 원본에 표시한 이미지
result
최종 output 파일, 두 input 이미지를 RANSAC 알고리즘을 통해 계산된 homography 행렬(M)을 사용하여 왜곡하고 합성한 파노라마 이미지

작동법

project1.py를 실행한 후 원하는 이미지 쌍의 번호를 입력

> python project1.py
> 이미지 번호를 입력하세요 (예: 1, 2, ...): 3

결과

  1. take two views in Sogang University.

3. develop a ORB + Ransac + homography algorithm to create a panorama image from the two inputs. 3-1. compute ORB keypoint and descriptors (opencv)

3-2. apply Bruteforce matching with Hamming distance (opencv)

3-3. implement RANSAC algorithm to compute the homography matrix. (DIY)

3-4. prepare a panorama image of larger size (DIY) 3-5. warp two images to the panorama image using the homography matrix (DIY)

4. apply the algorithm to get a result.
  1. take another set of two views in Sogang University

  2. produce output
input output

OpenCV를 사용한 결과와 비교

OpenCV DIY