1. Warping
1) Forward Warping
⎣⎢⎡ac0bd0ef1⎦⎥⎤⎣⎢⎡xy1⎦⎥⎤=⎣⎢⎡x′y′1⎦⎥⎤
⎣⎢⎡ac0bd0ef1⎦⎥⎤⎣⎢⎡111⎦⎥⎤=⎣⎢⎡1.11.31⎦⎥⎤→⎣⎢⎡111⎦⎥⎤
⎣⎢⎡ac0bd0ef1⎦⎥⎤⎣⎢⎡211⎦⎥⎤=⎣⎢⎡2.31.11⎦⎥⎤→⎣⎢⎡211⎦⎥⎤
⎣⎢⎡ac0bd0ef1⎦⎥⎤⎣⎢⎡311⎦⎥⎤=⎣⎢⎡3.61.41⎦⎥⎤→⎣⎢⎡411⎦⎥⎤
위 식과 같이 moving image의 (1,1,1), (2,1,1), (3,1,1) 좌표에 transformation matrix를 곱해 새로운 좌표를 얻은 후 반올림하면 (1,1,1), (2,1,1), (4,1,1)이 나온다. 구한 좌표에 해당하는 moving image의 intensity를 입력하면 된다.
이 때, (3,1,1)이 비게 되는 문제가 발생하게 된다. 이것이 Forward warping의 단점이다.
2) Backward Warping
⎣⎢⎡ac0bd0ef1⎦⎥⎤−1⎣⎢⎡x′y′1⎦⎥⎤=⎣⎢⎡xy1⎦⎥⎤
⎣⎢⎡ac0bd0ef1⎦⎥⎤−1⎣⎢⎡111⎦⎥⎤=⎣⎢⎡2.11.31⎦⎥⎤→⎣⎢⎡211⎦⎥⎤
Backward warping은 반대로 transformed image의 좌표에 transformation matrix의 역행렬을 곱함으로 얻은 moving image 좌표의 intensity를 찾아가는 방법이다. 일반적으로 가장 많이 사용하는 방법이다.
2. Interpolation
1) Bilinear Interpolation
f(x,y1)=x2−x1x2−xQ11+x2−x1x−x1Q21
f(x,y2)=x2−x1x2−xQ12+x2−x1x−x1Q22
f(x,y)=y2−y1y2−xf(x,y1)+y2−y1y−y1f(x,y2)
=y2−y1y2−x(x2−x1x2−xQ11+x2−x1x−x1Q21)+
y2−y1y−y1(x2−x1x2−xQ12+x2−x1x−x1Q22)
위 식에서 f(x,y)는 좌표 (x,y)의 intensity 값을 나타낸다.
2) Bicubic Interpolation
주변 16개의 좌표가 p[i+1,j+1]=f(i,j)로 주어지면 아래 그림과 같이 나타낼 수 있다.
Interpolated surface는 다음과 같다.
f(x,y)=i=0∑3j=0∑3aijxiyj
이때, 16개의 aij를 찾아야 한다. 이를 위해선 16개의 조건이 필요한데 16개의 주변 좌표를 이용해 얻을 수 있다.
-
꼭짓점의 값 (4개)
f(0,0)=a00
f(1,0)=a00+a10+a20+a30
f(0,1)=a00+a01+a02+a03 f(1,1)=a00+a10+a20+a30+a01+a11+a21+a31+a02+a12+a22+a32+a03+a13+a23+a33
-
꼭짓점의 미분계수 (8개)
fx(0,0)=21(f(1,0)−f(−1,0))=a10
fx(1,0)=a10+2a20+3a30
fx(0,1)=a10+a11+a12+a13 fx(1,1)=a10+2a20+3a30+a11+2a21+3a31+a12+2a22+3a32+a13+2a23+3a33
fy(0,0)=21(f(0,1)−f(0,−1))=a01
fy(1,0)=a01+a11+a21+a31
fy(0,1)=a01+2a02+3a03
fy(1,1)=a01+a11+a21+a31+2a02+2a12+2a22+2a32+3a03+3a13+3a23+3a33
-
꼭짓점의 교차 미분계수 (4개)
fxy(0,0)=41(f(1,1)−f(1,−1)−f(−1,1)+f(−1,−1))=a11
fxy(1,0)=a11+2a21+3a31
fxy(0,1)=a11+2a12+3a13
fxy(1,1)=a11+2a21+3a31+2a12+4a22+6a32+3a13+6a23+9a33
위 식 들은 미지수 16개를 갖는 16개의 연립 방정식이므로 해를 구할 수 있다.
v=[a00,a10,a20,a30,a01,a11,a21,a31,a02,a12,a22,a32,a03,a13,a23,a33]T
f=[f(0,0),f(1,0),f(0,1),f(1,1),fx(0,0),fx(1,0),fx(0,1),fx(1,1),fy(0,0),fy(1,0),fy(0,1),fy(1,1),fxy(0,0),fxy(1,0),fxy(0,1),fxy(1,1)]
A=⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎛1111000000000000010111110000000001010202000000000101030300000000001100001111000000010011010111110001000201010202000100030101030300110000002200000001001100020022000100020002000400010003000200060011000000330000000100110003003300010002000300060001000300030009⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎞
A−1=⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎛10−320000−309−620−64003−2000000−96006−40000000030−96−206−400000000009−600−6401−2100000−36−302−4200110000003−300−220000000003−630−24−20000000000−33002−2000010−32−206−410−320000003−200−64003−200000000−103−210−320000000000−32003−2000001−210−24−200−21000000−11002−200−11000000000−12−101−2100000000001−100−11⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎞
f=Av
v=A−1f
구한 결과는 다음과 같다.
a00=p11
a01=−21p10+21p12
⋮
a33= 41p00−43p01+43p02−41p03−43p10+49p11−49p12+43p13+43p20−49p21+49p22−43p23−41p30+43p31−43p32+41p33