2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

最近傍補間(Nearest Neighbor Interpolation)

Last updated at Posted at 2023-06-18

最近傍補間とは1次元以上の多変量補間を行う最もシンプルな方法です。最も近くにある既知の値と全く同じ値で補間を行います。噛み砕いて言えば、富士山の地点1が標高$z_1$、地点3が$z_3$の時、その間にある地点2の標高はどのくらいか推定する方法の一種。

理論

補間

補間のゴールは一様サンプリングされた画素$v_{m, n}$を持つ画像$v$が与えられた時、下記の条件を満足する関数$u(x, y)$を見つけることである。

v_{m, n} = u(m, n) \quad for\, all\, m, n\in\mathbb Z

また、線形補間はサンプル$v$を関数$u:=Z(v)$に写す線形演算子$Z$として抽象的に記述することができる。ここで$Z$に二つの性質を定義する。

  • $S_{k, l}:=v_{m-k, n-l}$
    $S_{k, l}$はシフトを表す。ここで全ての$v$と$(k, l)$に対して$Z$はshift-invariantと呼ばれる。
Z(S_{k, l}(v))(x, y)=Z(v)(x-k, y-l)
  • $v^{N}$は$v$に対する集合${-N, ...,+N}^2$の制約で$Z$は全ての$v$と$(x, y)$に対して局所的と言われる。
Z(v)(x, y)=lim_{N\rightarrow \infty}Z(v^N)(x,y)

もし$Z$が線形、shit-invariant、$l^\infty(\mathbb Z^2)$から$L^\infty(\mathbb R^2)$の中で局所的な時、Z(v)が畳み込みとしてかけるような補間カーネル$K$が存在する。

Z(v)(x,y)=\Sigma_{m,n\in Z}v_{m,n}K(x-m, y-n)

最近傍補間

最近傍補間の場合、関数$u(x, y)$は次式で表される。

u(x, y) = v_{[x], [y]} 

ここでvは入力画像でu(x, y)は補間後の関数、[.]は最も近い整数に丸めることを示す。
補間カーネル$K(x,y)$は

K(x,y)=K_1(x)K_1(y),\quad K_1(t)=\left\{
\begin{array}{ll}
1 & if\, -\frac{1}{2}\leq t<\frac{1}{2} \\
0 & otherwise
\end{array}
\right.

スクリーンショット 2023-06-22 21.45.37.png

実装方法

既知のデータを入力

point:地点
height:標高

point = [1, 2, 3, 4, 5]
height = [9, 18, 7, 5, 13]

現状わかっている山の外観

import matplotlib.pyplot as plt
plt.scatter(point, height, c="red", label="known")
plt.xlabel("Point")
plt.ylabel("Height")
plt.legend()
plt.grid()

スクリーンショット 2023-06-18 17.28.08.png

標高を推定する地点の用意

import numpy as np
between = np.linspace(min(point), max(point), 100)

補間

equation = lambda x, y: interpolate.interp1d(x, y, kind="nearest")
interpolation = equation(point, height)

推定した山の標高

plt.plot(between, interpolation(between), c="green", label="estimate")
plt.scatter(point, height, c="red", label="known")
plt.xlabel("Point")
plt.ylabel("Height")
plt.grid()

スクリーンショット 2023-06-18 17.28.24.png
参考文献
Pascal Getreuer(2011). Linear Methods for Image Interpolation

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?