본문 바로가기
공부/컴퓨터비젼

[컴퓨터비젼] 8. Image alignment

by 맑은청이 2021. 4. 5.
728x90
반응형

지난 시간에 Image Transformation 에 대한 내용을 배웠습니다. 

어떤 종류가 있고 어떤 수학적으로 표현되었는지 배웠는데 이번 시간에는 이제 그걸 어떻게 구하는지에 대해서 배워보겠습니다. 

앞에서 Picture Detection을 하고 Picture Descriptor 을 정의를 하면 이들을 매칭 할 수 있었습니다.

feature들을 일대응 매칭하고 셋들을 구해서 제일 적합한 걸 고르는 게 이번 학습에 핵심입니다. 

예를 들어 translations 으로 사진을 구할 때는 xt,yt 만큼 이동시키니 이 xt,yt 를 구하면 됩니다.

다음과 같이 xi, yi 를 매칭했을 때 이 값들이 일치할까요? 비슷하긴 하겠지만 일치하지 않을 가능성이 높습니다 

그런 노이즈가 있기 때문에 저희는 평균으로 구하게 됩니다.

아래와 같은 linear equations을 구성을 할 수 있게 됩니다. 

사실 이런 equations이 여러 개야 매칭할 때 조금 더 편할 것 입니다. 

그래서 정확한 xt, yt 를 구할 수 없기 때문에 equations을 더 구해야한다는 겁니다. 

이런 경우를 Overdetermined 시스템이라고 할 수 있고 이런 경우 least squares solution을 통해 구하게 됩니다. 

 

 

Least squares formulation은 어떻게 구할 수 있을까요?

각 포인트에 대한 (xi,yi)를 구하고 아래와 같이 residuals 를 정의할 수 있습니다.

저희는 이 값들을 정확하게 모르기 때문에 rxi(xt)와 ryi(yt)를 최소로 하는 값을 구해야합니다. 

 

Least squares formulation의 목적은 앞에서 말한 rxi(xt)와 ryi(yt)를 제곱한 값의 합을 최소화하는 것입니다.

least squares solution에 대해서 알아봅시다.

 

다음과 같이 행렬적으로 formulation을 구할 수도 있습니다. 

 

결국 행렬로 표현하면 다음과 같이 normal equations을 구성할 수 있습니다. 

 

어찌 됐든 least squares는 linear regression을 할 수 있는 가장 쉬운 방식입니다.

앞에서 했던 과정들과 linear regression이 동일하다는 것을 알 수 있습니다. 

이런 Linear regression을 좀 더 일반적인 transformations 에 활용할 수 있습니다. 

아래 열이 0 0 1 이어야 한다고 저번 시간에 이야기 했습니다. 

 

How many unknowns?

저희가 아래 행렬에서 모르는 값은 a,b,c,d,e,f 여섯개에 값입니다.

이 값들을 구해야하는겁니다. 

 

How many equations per match?

x' = ax  + by + c

y' = dx + ey + f

두 개의 equation 존재 

 

How many matches do we need?

3개의 매치만 있으면 되는데 많으면 더 정확 

 

행렬의 결과

 

 

 

trnasformation 된 값들과 실제 값의 차이 
전체를 스퀘어 한 값의 합을 최소화하는 것이 목표

 

이 매트릭스 폼을 아래와 같이 계산을 하여 값을 내게 됩니다. 

이 식을 통해서 앞에서 이야기 했던 normal equation 방식을 사용할 수 있습니다. 

쉽지 않지만 n이 클 경우 연산적으로 힘든 함수가 되고 이론 적으로는 풀 수 있다는 것을 알 수 있습니다. 

 

affine 에 대한 적용 방식을 알아봤습니다. 

 

 

 

위 그림에 affine을 적용할 수 있을까요? 평행하지 않는 것을 보아 할 수 없다는 것을 알 수 있습니다. 

이건 Homographies 가 가능합니다. 

p 에서 p' 을 구하는 것이 두 가지 이미지에 대한 transformation이라고 할 수 있겠습니다.

마찬가지로 w 라는 어떤 scale 한 벡터를 넣고 동일 계수의 H 값을 linear unknown 이라고 볼 수 있습니다. 

H를 풀기 위해 얼마나 많은 포인트를 구해야할까요.

8개 입니다. H에 대한 8개를 구하고 싶으면 한 매치당 2개의 equation이 나온다는 걸 봤기 때문에 이론 적으로는 4개의 포인트만 있다면 구할 수 있습니다. 

하지만 항상 완벽하지 않고 3x3 행렬로 다 표현할 수 없기 때문에 그 이상이 있으면 overdetermined를 통해서 더 잘 구할 수 있습니다.

 

이번에는 마지막 행렬이 0 0 1 이 아니기 때문에 계산을 할 때 고려해주어야합니다. 

그러므로 분모가 xi와 yi 등의  종속적으로 되는데 이렇게 되면 linear 하다고 말 할 수 없게 됩니다. 

Not linear!

이를 정리해보겠습니다 h 로 묶어보죠.

이 행렬을 토대로 n 까지 나눠보면 다음과 같은 행렬이 만들어지게 됩니다.

다음 값을 최소화하는 방향으로 된다

이 때 h 의 값이 scale 에 종속되어 있기 때문에 h 햇 이라는 unit vector 로 구할 수 있게 됩니다. 

 

normal equations으로는 구할 수 없지만 조금 더 복잡한 eigenvector 로는 구할 수 있습니다. 

 

정리를 하자면 아래와 같습니다. 

딴 건 몰라도 Affine 쪽은 정리를 해야한다고 합니다.

피쳐를 구하고 매칭하고 셋을 사용해서 호모그래피를 계산하면 됩니다. 

728x90
반응형