Ellipse Fitting

Ellipse

타원의 방정식 표준형. (회전 되어 있지 않을 때)

\(\textcolor{Black}{\frac{(x-x_0)^2}{a^2} + \frac{(y-y_0)^2}{b^2} = 1}\)

  • a는 장축, b는 단축. 중심은 (x0, y0).

타원의 방정식 일반형.

\(\textcolor{Black}{Ax^2 + Bxy + Cy^2 + Dx + Ey + F = 0}\)

  • 판별식 \(\textcolor{Black} {B^2 - 4AC < 0}\) 은 타원.
  • 판별식 \(\textcolor{Black} {B^2 - 4AC = 0}\) 은 포물선.
  • 판별식 \(\textcolor{Black} {B^2 - 4AC > 0}\) 은 쌍곡선.
  • 중심은 다음과 같이 계산한다.
    \(\textcolor{Black}{x_0 = \frac{2CD - BE}{B^2 - 4AC}}\) \(\textcolor{Black}{y_0 = \frac{2AE - BD}{B^2 - 4AC}}\)
  • 장축, 단축은 다음과 같이 계산한다.
    \(\textcolor{Black}{a = \sqrt{\frac{-2(A+C)}{B^2 - 4AC}}}\) \(\textcolor{Black}{b = \sqrt{\frac{-2(A+C)}{B^2 - 4AC}}}\)

  • 회전각은 다음과 같이 구한다.
    \(\textcolor{Black}{\theta = \frac{1}{2} \arctan{\frac{B}{A-C}}}\)

  • xy항은 타원의 회전을 나타낸다.
    • xy항이 0일 때(B=0)는 타원의 장축과 단축이 x,y축과 평행한 상태
    • xy항이 0이 아닐 때(B!=0)는 타원의 장축과 단축이 x,y축과 평행하지 않은 상태

Fitting 방법.

  • RANSAC 접근.
  • Fitting할 점들의 집합을 입력받는다.
  • 임의의 5개의 점을 선택한다.
  • 5개의 점으로 타원을 fitting한다. (cv::fitEllipse)
  • 나머지 점들에 대해 타원과의 대수적 거리를 계산한다.
  • 대수적 거리가 임계값보다 작으면 inlier로 간주한다.
  • inlier의 개수가 최대가 되는 타원을 선택한다.
  • inlier들을 이용하여 다시 타원을 fitting한다. (LMS)