Introduction
지난 강에서 3D world를 digital image로 transform하는 camera matrix에 대해서 알아보았다.
그렇다면, 역으로 3D world의 구조를 하나의 이미지만을 가지고 추정할 수 있을까?
Transformations in 2D
Isometric transformation
거리를 보존하는 transformation이다.
가장 basic한 형태로, rotation R 과 translation t 로 표현된다.
3의 자유도를 가지며, 수학적으로 정의하면,
[x′y′1]=[Rt01][xy1]

Similarity transformation
모양(shape)을 보존하는 transformation이다.
직관적으로 보면, isometric transformation에 scaling을 추가한 것이다.
따라서 isometric transformation은 s=1인 similarity transformation의 특별한 경우라고 볼 수 있다.
모양을 보존하기 때문에, 비율이나 각도 등은 보존이 된다.
4의 자유도를 가지며, 수학적 정의는,
[x′y′1]=[SRt01][xy1],S=[s00s]

Affine transformation
점(points)과 직선(straight lines) 그리고 평행성(parallelism)을 보존하는 transformation이다.
벡터 v에 대해서, affine transformation T는
T(v)=Av+t
와 같이 정의된다. (A는 Rn의 linear transformation임)
Homogeneous coordinate으로는, affine transformation을 다음과 같이 정의할 수 있다.
[x′y′1]=[At01][xy1]
식을 보면 알 수 있듯이, 모든 similarity transformation은 affine transformation의 특별한 case이다.
이는 6의 자유도를 갖는다.

A=UDVT=UVTVDVT=(UVT)(V)(D)(VT)
Projective transformation
직선을 직선으로 mapping하기는 하지만, 평행성(parallelism)을 보존하지는 않는다.
Homogeneous coordinate에서 projective transformation은 다음과 같다.
[x′y′1]=[Atvb][xy1]
식을 보면 알 수 있듯이, affine transformation의 좀 더 general 한 버전이라고 할 수 있다.
Parallelism을 보존하지는 못하지만, line을 line으로 mapping 하기 때문에 points의 collinearity는 보존한다.
따라서 4개의 collinear points P1,P2,P3,P4의 cross ratio 는 projective transformation 하에서 invariant하다.
cross ratio=‖P3−P1‖‖P4−P2‖‖P3−P2‖‖P4−P1‖

Points and Lines at Infinity
직선(line)은 이미지의 구조를 파악하는 데 굉장히 중요한 요소이므로, 2D, 3D에서의 정의를 모두 아는 것은 필수적이다.
2D line l 은 homogeneous vector로 다음과 같이 정의된다.
ℓ=[abc]T
이 때, −ab 는 기울기, −cb 는 y-절편을 나타낸다.
조금 더 formal하게 써보면,
∀p=[xy]∈ℓ,[abc][xy1]=0
처럼 표현이 가능하다.
💡 일반적으로, 두 직선 ℓ,ℓ′은 점 x 에서 만나고, 이 점은 ℓ과 ℓ′의 cross product로 정의된다.
증명)
두 교차하는 직선 ℓ,ℓ′이 주어졌을 때, 교점 x는 반드시 두 직선 ℓ,ℓ′ 위에 있어야 한다.
따라서, xTℓ=0 과 xTℓ′=0 을 둘 다 만족한다.
x=ℓ×ℓ′ 이라고 잡으면, cross product의 정의에 따라, vector x는 두 벡터 ℓ,ℓ′과 직교하고,
직교의 정의에 따라, xTℓ=0 과 xTℓ′=0 이 된다.
그러므로, x의 정의가 constraint을 만족한다.
그렇다면 평행한 직선은 어떨까?
교점이 없다라고 생각하겠지만, 두 직선은 무한대에서 만난다고 할 수 있다.
Homogeneous coordinates에서 무한대에 있는 점은 [xy0]T로 표현할 수 있다.
앞서 homogeneous coordinate으로부터 euclidean coordinate을 얻기 위해선 마지막 좌표값으로 나머지를 다 나누면 된다고 했었다.
따라서 0으로 나누게 되면 무한대에 있는 point가 나오게 된다.
두 평행한 직선 ℓ,ℓ′ 은 기울기가 같으므로 ab=a′b′ 이다.
그리고 homogeneous coordinate을 이용해 교점을 찾으면,
ℓ×ℓ′∝[b−a0]=x∞
가 된다. (ℓ,ℓ′ cross product하면 유도 가능)
따라서, 두 평행한 직선은 무한대에서 만난다는 것을 확인할 수 있으며,
이 교점을 ideal point 라고 부른다.
또 하나 ideal point의 흥미로운 성질은, −ab 의 기울기를 가지는 모든 평행한 직선은 ideal point에서 모두 만난다는 것이다.
ℓTx∞=[abc][b−a0]=0
이제 points of infinity 에서 lines at infinity로 사고를 확장해보자.
두 개 혹은 그 이상의 평행한 직선의 쌍들이 있다고 해보자.
각 쌍들은 교점 {x∞,1,...,x∞,n}에서 각각 만날 것이다.
이 무한대의 점을 모두 지나는 직선 ℓ∞는 반드시 ∀i,ℓT∞x∞,i=0 을 만족해야 한다.
이 말인 즉슨, ℓ∞=[00c]T을 만족함을 의미한다.
여기서 c는 임의의 값이므로 이를 그냥 ℓ∞=[001]T이라고 정의할 수 있다.

그렇다면, 무한대의 점 p∞에 generic projective transformation H를 적용하면 어떻게 될까?
p′=Hp∞=[Atvb][110]=[p′xp′yp′z]
잘 보면 p′의 마지막 원소가 더 이상 0이 아님을 알 수 있다.
즉, projective transformation은 points at infinity를 무한대가 아닌 점으로 mapping한다는 뜻이다.
(projective transformation의 성질을 생각해보면, parallelism을 보존하지 못한다고 했으므로)
하지만 affine transformation의 경우는 무한대의 점에서 무한대의 점으로 그대로 mapping함을 유의하자.
p′=Hp∞=[At01][110]=[p′xp′y0]
그러면 projective transformation H를 line ℓ 에 적용해 새로운 line ℓ′을 얻어보자.
직선 ℓ을 지나는 모든 점 x는 xTℓ=0 을 만족한다.
Transformed space에서도 projective transformation은 직선을 직선으로 mapping한다고 했으므로,
x′Tℓ′=0 을 만족해야한다.
Identity property를 이용해 식을 한번 변형해보자.
xTIℓ=xTHTH−Tℓ=0
직선 ℓ 에 projective transformation을 적용했으니 그 위의 모든 점들도 마찬가지로 transform된다.
따라서 x′=Hx 임을 알 수 있다.
xTIℓ=xTHTH−Tℓ=0=x′Tℓ′
이므로
xTHTH−Tℓ=x′Tℓ′
이고, xTHT=(Hx)T이므로
x′TH−Tℓ=x′Tℓ′
즉 ℓ′=H−Tℓ 를 유도해낼 수 있다.
Points at infinity와 비슷하게 line at infinity에 projective transformation을 적용하면 무한대가 아닌 직선으로 mapping될 수가 있다.
(마찬가지로 affine transformation은 lines at infinity를 lines at infinity로 mapping함)

'3D\Multiview Geometry > CS231A' 카테고리의 다른 글
CH03. Epipolar Geometry (1) (0) | 2023.02.12 |
---|---|
CH02. Single View Metrology (2) (0) | 2023.02.09 |
CH01. Camera Models (4) (0) | 2023.02.06 |
CH01. Camera Models (3) (0) | 2023.02.06 |
CH01. Camera Models (2) (0) | 2023.02.05 |