위치에 따른 값을 추정하는 기법은 크게 보간법(interpolation)보외법(extrapolation)이 있다. 보간법은 관측된 지점 사이의 미관측지점을 추정하는 기법이며, 보외법은 관측된 지점 밖의 미관측지점을 추정하는 기법이다. 내삽과 외삽이라고 표현하기도 한다. 우리는 내삽을 기준으로 생각해보자 한다. 내삽은 우리가 학창시절에 배웠던 비례식 중 내분을 생각해 본다면 이해가 싶지 않을까 한다.  

선형보간법(linear interpolation)

두 점의 값을 알고 있다면, 가장 먼저 떠올리는 보간 방식은 선형 보간일 것이다. 아래와 같이 $x_1$과 $x_2$를 관측값이라고 하고 $x$를 알고자하는 위치라고 하자. $d_1$은 $x$와 $x_1$의 거리, $d_2$는 $x_2$와 $x$의 거리를 의미한다. $f(x)$는 알고자하는 위치의 값이라 한다면 내분을 통해 간단히 계산할 수 있다.

$d_1:d_2=(x-x_1):(x_2-x)$
$d_1:d_2=[f(x)-f(x_1)]:[f(x_2)-f(x)]$
$d_2[f(x)-f(x_1)]=d_1[f(x_2)-f(x)]$
$d_2f(x)-d_2f(x_1)=d_1f(x_2)-d_1f(x)$
$f(x)= {{d_1}\over{d_1+d_2}}f(x_2)+{{d_2}\over{d_1+d_2}}f(x_1)$
$f(x)={{x-x_1}\over{x_2-x_1}}f(x_2)+{{x_2-x}\over{x_2-x_1}}f(x_1)$

그리고 이를 2차원으로 확장한것을 이중선형보간법
(bilinear interpolation)이라고한다.

이중선형보간법(Bilinear interpolation)

선형보간법을 2차원으로 확장한 것을 이중 선형보간법이라 한다고 하였다. 그렇다면 어떤식으로 확장이 될까? $x$축과 $y$축에 대하여 선형보간을 수행하는 과정을 수식으로 나타내면 아래와 같다.

$f(x,y_2)={{x_2-x}\over{x_2-x_1}}f(x_1,y_2)+{{x-x_1}\over{x_2-x_1}}f(x_2,y_2)$
$f(x,y_1)={{x_2-x}\over{x_2-x_1}}f(x_1,y_1)+{{x-x_1}\over{x_2-x_1}}f(x_2,y_1)$
$f(x,y)={{y_2-y}\over{y_2-y_1}}f(x,y_1)+{{y_2-y}\over{y_2-y_1}}f(x,y_2)$

삼차보간법(cubic interpolation)

이러한 보간법은 이미지 해상도를 높이는 연구에서도 많이 활용되는데, 선형보간법은 근사구간의 교점마다 각진 그래프가 나타나는 단점이 있다. 우리는 이미지가 부드럽게 고해상화되는 것을 원한다. 따라서 Spline 곡선을 통한 보간법을 활용하게 된다. Spline은 주어진 점들을 지나는 부드러운 곡선을 의미한다. Cubic Spline은 Spline곡선을 3차 다항식으로하는 보간법이다.

$f(x)=a_1{x^3}+a_2{x^2}+a_3{x}+a_4$
$f'(x)=3a_1{x^2}+2a_2{x}+a_3$

$f'(a_1)=\lim\limits_{x\rightarrow a_1}{{f(x)-f(a_1)}\over{x-a_1}}=\lim\limits_{\Delta x\rightarrow 0}{{f(a_1+\Delta x)-f(a_1)}\over{\Delta x}}$

편의상 $x$ 값 중 0과 1을 알고 있다고 하자. 직관적으로 $a_4$와 $a_3$를 알 수 있다. $f'(x)$는 불연속이므로 아래의 수식과 같이 계산한다면 다항식의 계수를 모두 찾을 수 있다.

$f'(a_1)={{f(a_2)-f(a_0)}\over{a_2-a_0}}$

따라서 스플라인 보간은 전체구간을 소구간으로 나누어 저차수의 다항식으로 매끄러운 함수를 구하는 방법이다. Cubic 스플라인은 가장 인접한 4개의 값을 활용하여 구하고자 하는 위치의 값을 찾아내는 방법이였다. Bicubic interpolation은 이를 2차원으로 확장한 방식에 해당하며, 방정식의 해를 구하기 위해서 16개의 점을 참조한다.

이를 수식으로 나타낸다고 하면 아래와 같다. 이때의 A를 기저행렬이라고 한다.

$$f(x,y)=\begin{pmatrix} 1 & x & x^2 & x^3\end{pmatrix} \begin{pmatrix}
a_{1,1} & a_{1,2} & \cdots & a_{1,n} \\
a_{2,1} & a_{2,2} & \cdots & a_{2,n} \\
\vdots  & \vdots  & \ddots & \vdots  \\
a_{m,1} & a_{m,2} & \cdots & a_{m,n}
\end{pmatrix}\begin{pmatrix} & 1\\ & y\\ & y^2 \\& y^3\end{pmatrix}$$

향후계획) B Spline 보간 및 룽게현상

Runge’s phenomenon - Wikipedia
B-Spline -- from Wolfram MathWorld
A B-spline is a generalization of the Bézier curve. Let a vector known as the knot vector be defined T={t_0,t_1,...,t_m}, (1) where T is a nondecreasing sequence with t_i in [0,1], and define control points P_0, ..., P_n. Define the degree as p=m-n-1. (2) The “knots” t_(p+1), ..., t_(m-p-1)…