새소식

Perception

Ax=0 을 풀기 위한 SVD (Singular Value Decomposition)

  • -

*이전 포스팅 (https://zzziito.tistory.com/77) 과 이어집니다. 
 

SVD : Singular Value Decomposition

 

SVD(특이값 분해) 란 ?

복잡한 행렬을 간단한 구성 요소로 분해하는 방법. 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데이터처리> 수업 내용을 요약한 것입니다

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.