(멀티플 뷰 지오메트리) Lecture 1. 2D and 1D projective geometry

(멀티플 뷰 지오메트리) Lecture 1. 2D and 1D projective geometry

2022, Apr 20    


Multiple View Geometry 글 목차


  • 참조 : https://youtu.be/LAHQ_qIzNGU?list=PLxg0CGqViygP47ERvqHw_v7FVnUovJeaz
  • 참조 : https://youtu.be/gQ7IUS8NKCI?list=PLxg0CGqViygP47ERvqHw_v7FVnUovJeaz
  • 참조 : Multiple View Geometry in Computer Vision
  • 참조 : https://www.cuemath.com/learn/mathematics/conics-in-real-life/


  • 이번 글에서는 2D and 1D projective geometry 내용의 강의를 듣고 정리해 보도록 하겠습니다.





Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing


  • 위 슬라이드에서 line에 직교한 벡터 (a,b)(a,b) 는 다음과 같은 방식으로 도출될 수 있습니다.


  • line: (a,b,c)=ax+by+c=0line: (a,b,c)=ax+by+c=0
  • P=(x1,y1),Q=(x2,y2) P and Q are on the line.P=(x1,y1),Q=(x2,y2) P and Q are on the line.
  • direction vector: d=QP=(x2x1,y2y1)Tdirection vector: d=QP=(x2x1,y2y1)T
  • line equation 1: ax1+by1+c=0line equation 1: ax1+by1+c=0
  • line equation 2: ax2+by2+c=0line equation 2: ax2+by2+c=0


  • line equation 2 - line equation 1: a(x2x1)+b(y2y1)=0line equation 2 - line equation 1: a(x2x1)+b(y2y1)=0
  • (a,b)(x2x1,y2y1)=(a,b)d=0(a,b)(x2x1,y2y1)=(a,b)d=0
  • (a,b)T is perpendicular to d.


Drawing



Drawing



  • 지금 부터는 2D and 1D projective geometry 강의의 후반부로 conics, dual conics와 관련된 내용과 transform 관련 내용에 대하여 다루어 보도록 하겠습니다.


  • projective plane이란 3차원 공간에서 원점을 지나는 모든 직선들의 모임으로 해석할 수 있습니다. 이 관점에서 projective planepoint는 원점을 지나는 각각의 직선 (line)이고 line은 원점을 지나는 3차원 공간 속의 2차원 평면 (plane)으로 정의할 수 있습니다.
  • projective plane은 일반적인 plane과 유사하지만, point at infinity라는 무한대의 점이 존재하여 모든 두 직선이 항상 교차가 되는 특성이 있습니다. 모든 point at infinity 들이 지나는 직선을 line at infinity라고 합니다.





Drawing



Drawing



Drawing



Drawing


  • 위 슬라이드의 C대칭 행렬 형태를 가지며 의미는 3개의 차원이 구성하는 관계를 수치로 나타낸 것을 의미합니다.
  • 예를 들어 (1, 1) 위치는 x1,x1 의 관계를 수치로 나타낸 것이고 (1, 2) 는 x1,x2 의 관계를 수치로 나타낸 것입니다. 따라서 (i,j)(j,i) 의 관계는 같기 때문에 대칭 행렬 형태를 가지게 됩니다.


  • ax21+bx1x2+cx22+dx1x3+ex2x3+fx23=0


  • 위 슬라이드의 C 또한 3개의 차원이 구성하는 관계를 수치로 나타낸 것이며 위 식에서 XTCX=0 을 만족하도록 C 를 구성한 것입니다.
  • 이와 같은 행렬 Chomogeneouse representation of conic이라고 합니다.
  • homogeneouse representation of conic C3개 차원의 경우의 수의 관계를 수치로 나타낸 것이므로 그 관계에 따라서 다양한 기하 형태가 나타납니다. 3개 차원의 경우의 수는 다음을 의미합니다. 아래 행렬에서 xdx 차원, ydy 차원, hd 는 homogeneous 차원을 의미합니다. rel(a,b)a,b 의 관계를 의미합니다.


  • C=[rel(xd,xd)rel(xd,yd)rel(xd,hd)rel(yd,xd)rel(yd,yd)rel(yd,hd)rel(hd,xd)rel(hd,yd)rel(hd,hd)]=[ab/2d/2b/2ce/2d/2e/2f]


  • 그 중 Crank(C)=3 (full rank) 인 경우 , 타원, 포물선, 쌍곡선 형태가 나타나는 반면 Crank(C)<3 인 경우 교차선, 평행선, 단일선, 과 같은 degenerate conic 형태가 나타나기도 합니다. 이 부분은 차례대로 설명할 예정입니다.


  • 따라서 지금부터 다룰 conic C 는 가장 작은 형태인 point를 시작하여 line, circle, ellipse, hyperbola, parabola 등을 모두 포함하는 집합이기 때문에 Multiple View Geometry에서 가장 중요하게 다루는 개념 중 하나입니다.


Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing



Drawing


  • 위 슬라이드에서 lmline을 나타내므로 각각 다음과 같습니다.


  • l=[l1l2l3]T
  • m=[m1m2m3]T


  • 2개의 선 l,m 의 관계 또한 3개 차원의 경우의 수인 9개로 나타내기 위해 outer product를 한 것이고 대칭 행렬로 나타내고자 lmT+mlT 형태로 나타내어 conic C 를 구성합니다.
  • 위 식의 C=lmT+mlT 에서 lmTmlT 각각의 outer product의 rank는 1이기 때문에 outer product의 결합으로 이루어진 lmT+mlT 은 항상 degenerate conic 임을 만족합니다.
  • 위 슬라이드에서는 lmindependent 하여 C=lmT+mlTrank(C)=2 가 만족하는 degenerate conic 상황으로 가정합니다. 따라서 위 예시와 같이 교차하는 2개의 선으로 나타낼 수 있습니다.
  • 슬라이드의 C=lmT+mlT 를 좀더 자세하게 풀어 쓰면 다음과 같습니다.


  • l=[l1l2l3]
  • m=[m1m2m3]
  • lmT=[l1m1l1m2l1m3l2m1l2m2l2m3l3m1l3m2l3m3]
  • C=lmT+mlT=[l1m1l1m2l1m3l2m1l2m2l2m3l3m1l3m2l3m3]+[m1l1m1l2m1l3m2l1m2l2m2l3m3l1m3l2m3l3]=[l1m1+m1l1l1m2+m1l2l1m3+m1l3l2m1+m2l1l2m2+m2l2l2m3+m2l3l3m1+m3l1l3m2+m3l2l3m3+m3l3]


  • 위 식을 살펴 보면 C=lmT+mlT 는 대칭행렬이 됨을 알 수 있습니다.


Drawing


  • 반면 위 슬라이드에서는 l=m 으로 나타내었기 때문에 한 개의 선으로 표현합니다. 따라서 rank(C)=1degenerate conic 상황으로 가정합니다. 따라서 위 예시와 같이 하나의 선으로 나타낼 수 있습니다.


Drawing


  • x=[x1x2x3]
  • y=[y1y2y3]
  • xyT=[x1y1x1y2x1y3x2y1x2y2x2y3x3y1x3y2x3y3]
  • C=xyT+yxT=[x1y1x1y2x1y3x2y1x2y2x2y3x3y1x3y2x3y3]+[y1x1y1x2y1x3y2x1y2x2y2x3y3x1y3x2y3x3]=[x1y1+y1x1x1y2+y1x2x1y3+y1x3x2y1+y2x1x2y2+y2x2x2y3+y2x3x3y1+y3x1x3y2+y3x2x3y3+y3x3]


  • 지금까지 배운 내용 종합하면 Point, Line, Two Lines, Circle, Ellipse, Hyperbola, ParabolaConic을 이용하여 표현할 수 있음을 확인하였습니다. 이번에는 각 항목을 실제 예시를 들어서 어떻게 표현하는 지 살펴보도록 하겠습니다.


  • Point
    • Point3×1 크기의 벡터로 표현이 가능합니다. 예를 들어 inhomogeneous coordinate(2,3) Point는 homogeneous coordinate에서 (2,3,1) 로 표현됩니다. 만약 conic을 이용하여 Point를 표현하려면 degenerate dual conic 형태를 이용해야 합니다. 왜냐하면 점을 표현하려면 2개의 선 (Two Lines)이 한 점을 통과하는 형태를 나타내어야 하기 때문입니다.
    • 따라서 (2,3,1) 을 지나는 두 개의 선 l=(1,0,2)Tm=(0,1,3)T 를 이용하여 degenerate dual conic을 나타내면 다음과 같습니다.


    • C=lmT+mlT=[102][013]+[013][102]=[0131023212]


    • 위 식의 C 는 두 선의 교점을 나타내므로 두 선의 교점인 Point x=(2,3,1) 는 다음식을 만족하여 CPoint를 나타냄을 알 수 있습니다.


    • xTCx=[231][0131023212][231]=0


  • Line
    • Line은 2개의 점을 이용하여 생성할 수 있습니다. 따라서 homogeneous coordiate의 2개의 점을 이용하여 C 를 구성하면 degenerate conic으로 선을 표현할 수 있습니다.
    • 아래 예제는 l=x+2y3(1,2,3) 이라는 식을 표현하기 위하여 2개의 점 a=(3,0,1)b=(0,1.5,1) 을 이용해 보겠습니다. 두 점은 l 상에 존재합니다.


    • C=abT+baT=[301][01.51]+[01.51][301]=[04.534.501.531.52]


    • 위 식의 CLine을 나타내므로 다음과 같이 확인해 볼 수 있습니다.


    • lTCl=[123][04.534.501.531.52][123]=0


  • Two Lines
    • Two Lines를 나타내는 Conic은 앞에서 Point를 나타내는 Conic을 통해 다루었습니다. l=(1,2,3) , m=(2,1,4) 가 있을 때, 이 두 선을 나타내는 degenerate dual conic은 다음과 같습니다.


    • C=lmT+mlT=[123][214]+[214][123]=[432341121124]


    • l 상의 점 x1=(1,2,1)m 상의 점 x2=(2,0,1) 모두 다음과 같이 계산하면 C 이 두 선을 나타냄을 알 수 있습니다.


    • xT1Cx1=[121][432341121124][121]=0
    • xT2Cx2=[201][432341121124][201]=0


  • Circle
    • 앞에서 다룬 Conic 유도식의 ax21+bx1x2+cx22+dx1x3+ex2x3+fx23=0 을 통하여 (h,k) 를 원의 중심으로 가지는 반지름 r 인 원은 다음과 같은 형태를 가짐을 알 수 있습니다.


    • C=[10h01khkh2+k2r2]


    • 예를 들어 원의 중심이 (0,0) 이고 반지름이 1 인 원이라면 다음과 같이 표현할 수 있습니다.


    • C=[100010001]


  • Ellipse
    • 타원 또한 위 식을 통하여 Conic을 유도하면 타원의 중심은 (h,k) 이고 장축의 길이는 a , 단축의 길이는 b 일 경우 다음과 같이 정의할 수 있습니다.


    • (xh)2a2+(yk)2b2=1
    • C=[1/a20h/a201/b2k/b2h/a2k/b2h2/a2+k2/b21]


    • 예를 들어 타원의 중심이 (2,3) 이고 장축의 길이가 4 , 단축의 길이가 2 라면 Conic은 다음과 같이 정의 됩니다.


    • C=[1/1601/801/43/41/83/47/16]


  • Hyperbola
    • 쌍곡선도 타원의 예시와 유사하게 다음과 같이 정의할 수 있습니다.


    • (xh)2a2(yk)2b2=1
    • C=[1/a20h/a201/b2k/b2h/a2k/b2h2/a2k2/b21]


  • Parabola
    • 마지막으로 포물선의 경우 포물선의 꼭지점이 (h,k) 이고 width a 는 다음과 같이 정의 할 수 있습니다.


    • (yk)=a(xh)2
    • yka(xh)2=0
    • $$ C = [0a/2ah a/21k ahkh2]


    • 예를 들어 포물선의 꼭지점이 (2,3) 이고 a=1 이라면 다음과 같이 conic을 구성할 수 있습니다.


    • C=[01/221/213234]


  • 지금까지 살펴본 방식으로 기하학에서 흔히 다루는 7 가지 경우에 대하여 모두 conic으로 나타낼 수 있음을 확인하였습니다.


Drawing



Drawing



Drawing



Drawing



Drawing



Drawing


  • point xi 가 line l 위에 있을 때, lTxi=0 으로 표현할 수 있습니다. 만약 transformed point (projective transformation) 인 xi=Hxil 위에 있다면 lTxi=0 이 되고 ll 두 line의 관계로 나타내면 l=HTl 으로 표현할 수 있습니다. 수식 전개 과정은 아래와 같습니다.


  • xi=Hxi
  • lTxi=0
  • lTHxi=0
  • lTHxi=ltxi
  • lTH=lt
  • HTl=l
  • l=HTl



Drawing




Drawing


  • Similarity Transformationisotropic scaling 으로 구성되며 위 슬라이드의 식 처럼 표현됩니다.
  • isotropic이란 한글로 등방형이며 방향에 상관없이 일정하다는 뜻입니다. 즉, Similarity Transformation은 모든 방향에 동일한 효과를 적용합니다.
  • 위 식에서 sisotropic scaling이라고 하며 Similarity Transformation 적용 시 변환의 크기를 조절합니다.


Drawing


  • Similarity Transformationshape을 보존하기 때문에 equi-form transformation이라고도 합니다.
  • 식에서 나타난 바와 같이 3개의 isometry DoF ( θ,tx,ty )와 isotropic scaling s 를 가지므로 Similarity Transformation은 총 4 DoF를 가지며 DoF가 4개이므로 변환된 2개의 점을 알 때, 이 값들을 추정할 수 있습니다.
  • shape이 보존되기 때문에 Angle, ratio of two lengths, ratio of areas는 보존이되는 성질을 가집니다. 평행선은 평행선으로 유지되는 것 또한 중요한 성질입니다.


Drawing


  • 그 다음으로 Affinity에 대하여 다루어 보도록 하겠습니다.
  • 위 슬라이드에서 설명하는 Affine Transformation 행렬은 non-singular linear transformation으로 간단히 말하면 역행렬이 존재하는 행렬이며 A 부분의 2 X 2 행렬 또한 non-singular matrix로 역행렬이 존재합니다.
  • 앞에서 살펴본 Similarity Transformation과 다르게 6 DoF로 DoF가 2개가 더 추가가 되었습니다. Similarity Transformation에서는 θ 가 정해지면 HS 가 정해졌으나 Affine Transformation에서는 4개의 각 성분이 모두 DoF를 가지기 때문에 DoF가 총 6개가 됩니다.
  • DoF가 6개이므로 기존의 3개의 점이 Affine Transformation 적용 시 어떻게 변환되는 지 관계를 알면 Affine Transformation을 구할 수 있습니다. (Similarity Transformation에서는 점 2개가 필요하였습니다.)
  • Affine Transformation을 적용하더라도 평행선은 그대로 유지되며 평행 선분의 길이 비율과 면적 비율은 유지됩니다. 반면 Similarity Transformation에서는 보존되었던 임의의 선의 길이 비율과 선 사이의 각도는 보존되지 않습니다. 그 이유에 대하여 Affine Transformation Matrix를 분해하여 살펴보도록 하겠습니다.


Drawing


  • 이번 슬라이드와 다음 슬라이드에서는 Affine TransformationSVD (Singular Value Decomposition)으로 분해하였을 때, 각 성분이 가지는 의미를 나타냅니다. 위 슬라이드에서는 먼저 어떻게 분해될 수 있는 지 설명합니다.


  • Affine Transformation의 의미를 기하학적으로 이해하기 위한 방법으로 rotationnon-isotropic scaling 두 가지 선형 변환의 합성으로 생각하는 방법이 있습니다. 먼저 Affine Transformation은 아래와 같이 분해 됩니다.


  • A=R(θ)R(ϕ)DR(ϕ)
  • R(θ),R(ϕ) : rotation byθ,ϕ respectively
  • D=[λ100λ2] : diagonal matrix


  • 위 식과 같이 분해되는 이유는 아래와 같습니다. affine transformation matrix를 Singular Value Decomposition을 하고 SVD 결과의 U,Vorthogonal matrix이므로 U1=UT , V1=VT 임을 이용하여 전개하였습니다.


  • A=UDVT=U(V1V)DVT=U(VTV)DVT=(UVT)VDVT
  • =R(θ)(R(ϕ)DR(ϕ))


  • 회전 행렬 관련 글에서 다룬 바와 같이 orthogonal matrix는 rotation 임을 만족하기 때문에 U=R(θ), V=R(ϕ), VT=R(ϕ) 로 표현할 수 있어서 위 식과 같이 전개됩니다.


Drawing


  • 따라서 식을 위 슬라이드와 같이 시각적으로 나타낼 수 있습니다. 위 슬라이드는 affine transformationA 를 바로 적용한 결과를 R(ϕ) , D , R(θ)R(\-phi) 순서로 나누어서 보여줍니다.
  • affine transformation A 에서의 연산 순서는
    • ϕ 만큼 회전합니다.
    • x,y 방향으로 각각 λ1,λ2 만큼 scaling을 조정합니다. (λ1x1+λ2x2 )
    • ϕ 만큼 역회전 합니다. 즉, ϕ 만큼 회전한 영역에서 주성분 방향으로 scaling을 조정하고 다시 역회전하여 회전을 없앱니다.
    • ④ 마지막으로 θ 만큼 회전합니다.
  • 이와 같은 순서로 연산을 살펴보았을 때, similarity transformation에 비하여 추가된 개념은 non-isotropic scaling입니다. 즉, scaling 조정 방향을 지정하는 각도 ϕ 와 scaling 조정 비율인 λ1,λ2 가 이에 해당합니다.
  • 따라서 affine transformation에서는 특정 각도에 대하여 직교하는 방향으로 scaling을 조정하는 것이 중요합니다.


Drawing


  • 그림으로 나타내면 왼쪽 그림은 최종 R(θ) 에 의한 회전을 나타내고 오른쪽 그림은 R(ϕ)DR(ϕ) 에 의한 변형을 나타냅니다. scaling 방향으로 orthogonal 함을 유심히 살펴보면 이해하는 데 도움이 됩니다.


Multiple View Geometry 글 목차