두 영상 사이의 perspective 변환은 8개의 매개변수(a,b,c,d,e,f,g,h)에 의해서 다음 식처럼 기술이 된다. (see, http://kipl.tistory.com/86)

또는, 

따라서, 매개변수를 찾기 위해서는 두 영상에서 서로 대응하는 점이 4개 이상 주어져 야 한다. 만약에 N개의 대응점들이 주어진 경우에


위의 식을 각각의 대응점에 넣어서 정리하면 아래의 행렬식을 얻을 수 있다.(좌변행렬의 마지막 열은 전부 -부호가 들어가야 한다) 
 

또는 간단히 

로 쓸 수 있다. 그러나 실제 대응점을 찾을 때 들어오는 noise로 인해서 실제 데이터를 이용하는 경우에는 정확히 등호로 주어지지 않는다. 따라서, 좌변과 우변의 차이의 제곱을 최소로 만드는 x를 찾아야 할 것이다.


에 대해서 미분을 하여서,

를 만족시키는 극값 x*을 구하면 된다. 는 8x8의 대칭행렬이어서 대각화가 가능하므로 역행렬을 구할 수 있다 (주어진 점들 중 한 직선 위에 놓이지 않는 점이 4개 이상이 있어야 한다). 따라서, 최소제곱해는 다음과 같이 주어진다:

.

'Image Recognition' 카테고리의 다른 글

2차원 Savitzky-Golay Filters 응용  (0) 2012.02.28
webcam용 QR code detector  (0) 2012.02.19
Least Square Estimation of Perspective Transformation  (4) 2012.02.15
Perspective Transformation  (2) 2012.02.14
Integral Image을 이용한 Adaptive Threshold  (0) 2012.02.04
Peak Finder  (1) 2012.02.02
Posted by helloktk

댓글을 달아 주세요

  1. 신당기 2013.06.06 01:39  댓글주소  수정/삭제  댓글쓰기

    일단 원근변환까지는 했는데요.....
    즉 주어진 이미지를 원근변환하는데 까지는 성공했습니다. 근데 이미 변환된 이미지와 변환되기전의 이미지를 매칭시키기 위해서는 변환식을 계산해내야 하겠죠. 님이 말씀하신대로 각각 4개의 점을 지정해주면 되겠죠. 이 점을 이용해서 행렬을 만들고 그 역행렬을 계산하여 할 생각을 하고 있었는데 검색하던중에 최소자승법이 검색이 되더군요. 근데 논리적으로 최소자승법이 더 옳은 느낌이 듭니다.
    하지만 문외한인 저로서는 접근이 어렵네요., ....혹 조금 더 자세히 설명을 해주실 수 있을까요.....

    • helloktk 2013.06.06 13:40 신고  댓글주소  수정/삭제

      정사각형의 꼭지점이 변환되는 점이 정확한 점들이라면 굳이 최소자승법을 사용할 필요는 없습니다. 이것을 쓰는 경우는 변환점을 다른 영상처리 알고리즘으로 자동으로 찾는 경우에 잘못 찾을 수도 있는데, 이경우에 4개 이상의 많은 변환점을 사용하면 몇개의 잘못된 변화점을 찾더라도 크게 오차가 나지 않게 할 수 있기 때문에 사용합니다. 이 경우에는 변환행렬을 안다고 하더라도 변환시키려는 점들의 변환결과와 실제로 찾은 변환점들이 항상 일치하지 않을 것입니다. 변환행렬을 잘 조절해서 이 차이를 가장 작게 할 수 있는가를 보는 것이 최소자승법의 원리입니다.

  2. 문채현 2013.09.17 14:22  댓글주소  수정/삭제  댓글쓰기

    ^T : 전치행열을 나타내고, ^-1 : 역행렬을 나타내는 건가요??
    그리고 .(점)은 행렬의 곱이구요??