복잡한 행렬을 간단한 구성 요소로 분해하는 방법. SVD의 핵심은 행렬 A를 구성하는 데이터의 '특징'을 추출하는 데 있다. 여기서 U, V 는 Orthogonal (모든 basis 가 직교하고 크기가 1임) 이다. 또한 sigma 행렬은 1) 대각행렬에 위치한 singular value 를 제외한 요소가 다 0이고, 2) 이 singular value 를 제곱하면 eigen value 가 된다. 3) 이 singular value 들은 내림차순으로 정렬되어 있다.
우리는 Ax=0 의 답을 찾기 위한 방법으로 SVD 를 사용한다고 알고 있습니다. 많은 글들에서, 이 해는 "SVD를 했을 때 V transpose 의 마지막 column 이다" 라고 정의합니다. 그런데 왜 그럴까요 ?
왜 Ax = 0 의 답이 SVD 에서 나올까 ?
"A 는 두 개의 Orthogonal 한 행렬과 그 사이에 Singular Value 를 대각성분으로 가지는 행렬로 분해할 수 있다"는 것이 SVD 입니다.
이때 V 는 Orthonormal 한 행렬입니다. 이는 즉 inverse 가 transpose 와 같다는 뜻입니다. 그러면 AV = U*sigma 가 되겠죠 ?
그래서 결론은 이와 같습니다. 아까 Sigma 행렬에서는 대각성분을 제외하고 값이 전부 0이라고 했었습니다.
따라서 저 노란 부분만 실제 값을 갖고, 나머지가 다 0이 된다는 것입니다. 그런데 아까 대각성분들의 값이 정렬되어 있다고 했으므로, 가장 마지막 요소가 가장 0과 가까운 값을 갖게 됩니다.
그래서 v의 마지막 column vector 만을 사용하게 됩니다.
V를 transpose 해야하므로 이 마지막 행을 3x3으로 바꾼 것이 homography 입니다.
위 내용은 경희대학교 소프트웨어융합학과 황효석 교수님의 2023년 <3D데이터처리> 수업 내용을 요약한 것입니다