본문 바로가기

ComputerScience/ImageProcessing

Computer vision - Homography

728x90

1. Alignment 응용

- alignment의 응용이다. corner, edge처럼 중요한 feature에 대해서 alignment를 수행해서 한장의 사진으로 합칠 수 있다.

- 실제로 샘플 포인트들을 다 넣어서 변환 행렬식을 찾아낸다.

2. Homography

- 이렇게 view point의 차이를 탐지할수도 있다.

- 이런 porjective 변환은 어떻게 align할 수 있을까?

- 이렇게 카메라 각도에 따라 변환행렬을 우측처럼 정의할 수 있다.

- K : 3*3 카메라 내부 파라미터

- Rt : 3*4 짜리 변환 행렬

- X : (x,y,z,1)

- 그럼 X를 소거하면 x' = Hx 를 구할 수 있고 이 말은 영상으로 부터 view point를 찾아내던가 view point가 바뀌었을 때, 영상을 만들 수 있다.

- 이런 projective 변환을 homography 변환이라고 한다.

- x'과 Hxi는 동일 직선상에 있기 때문에 cross product는 0이다. 이 식을 이용해서 h들을 찾는다.

- xiT, h1은 다 1*3짜리 행렬들이다.

- 근데 최종 결과를 보면 1행, 2행을 가지고 3행을 만들 수 있다. 즉 rank가 2라는 뜻이다.

- 따라서 (N개의 점에 대해서) 최종 풀 식은 ((2*N) X9) * (9X1) = 0 이다.

- 우리의 목적은 9X1짜리 h를 구하는 것이 목적이다. svd로 구해라.

3. Image stitching and blending

1. 일단은 keypoint를 찾는다. (SIFT)

2. 두 영상에서 keypoint들을 매칭한다.

3. 이제 동일점 쌍들을 구한셈이다. 이걸 가지고 homography를 구한다.

4. H를 구하면 한 영상을 H변환하여 다른 영상과 합칠 수 있게 된다.

 

- 참고로 H를 구하는 과정에서 RANSAC를 활용한다.

- 총 N개의 점 중에서 무작위로 4개의 점을 사용하여 H를 구한다.

- 그렇게 구한 H가 많은 sample 포인트들에도 적용되는지 확인한다

- 제일 많은 결과를 포함하는 H를 채택한다.

- 매칭된 지점의 histogram 거리를 구해서 색감도 조정할 수 있다.

- 더 감쪽같이 하기 위해 blending을 할수도 있다.

- 색만 활용하는 blending보다 고주파 성분을 활용하는 blending으로 더 감쪽같이 합성을 할수도 있다.

- 참고로 transform을 하면 픽셀중 빈곳이 생기기 마련이다. 왜냐면 x,y는 정수이고 변환하면 소수로 나오기 때문이다. 따라서 텅빈 부분들을 보간해서 더 자연스러움을 줄 수 있다. (aliasing)

728x90
반응형