RANSAC

Xpert·2024년 3월 1일

Computer Vision

목록 보기
3/10

RANSAC


랜덤하게 n개의 점을 뽑는다. 여기선 2개

두 점을 가지고 선분을 그리고 해당 선분에서 일정 마진을 두어 두개의 평행한 선을 그린다. 그리고 해당 영역 내부에 얼마나 많은 점들이 속해있는지를 count 한다
만약에 점이 n개였다면 일종의 contour가 그려질 것이고, 그 contour의 내부와 외부에 각각 일정 마진을 둔 위치에 비슷한 형상이지만 scale이 다른 contour 두개가 생길 것이고 그 영역 내부의 점들을 셀 것이다

이러한 행위를 일정 횟수만큼 iteration 하여, 가장 속한 점의 갯수가 많은 결과를 취하는 방식이다.
언제 optimal 한 값이 나올지 알 수 없으므로 iteration 횟수를 지정해주어야 하고, 그렇게 나온 결과가 global optima라는 보장이 없지만, robust하게 잘 동작하는 알고리즘이다

Homography

  • Homography Matrix (H) : 한 평면에 있는 객체의 이미지를 다른 시점에서 본 같은 객체의 이미지로 변환할 수 있는 변환입니다. 이 행렬을 사용하여 한 이미지의 좌표를 다른 이미지의 좌표로 매핑할 수 있습니다.
  • Fundamental Matrix (F) : 한 카메라에서 본 장면의 점과 다른 카메라에서 본 동일한 장면의 점 사이의 epipolar constraint를 나타내는 3x3 행렬입니다. 이 행렬은 두 카메라의 상대적인 위치와 방향에 대한 정보를 포함하고 있으며, 두 이미지 간의 점 대응을 찾는 데 사용됩니다.

RANSAC을 이용한 매핑 노이즈 제거

  1. ORB를 이용하여 두 이미지의 descriptor를 얻고 이를 BF Match하여 matches를 얻어낸다
  2. 위 matches를 가지고 Homography를 얻어낸다. 이때 RANSAC을 적용하여 outlier(잘못된 매칭에 영향을 주는 속성)를 제거한다
  3. 하나의 이미지와 H를 가지고 warpPerspective를 수행 -> 좌표를 리매핑하여 다른 이미지의 구도로 변환한다
  4. Kornia를 사용해 구현하거나, DEGENSAC을 이용하여 고도화 할 수 있다
profile
Python, CV, ML, Backend

0개의 댓글