2017-02-25 - 2017-04-16 (update) |
|
|
標本化された信号から,極値を計算する方法を説明します.
*1次元データの場合
例えば,図1に示す様なデータが得られたとします.このデータは,ある1次元の軸(横軸)について所定の間隔で標本化した信号を表します.データの極値は,周囲と比べて値の大きい(或いは小さい)位置を見つけることで推定できます.図1の例では,左から3つ目の位置{$p$}が極値であると推定できます.しかし,その位置は標本化の精度でしか得ることができません.
[img:ndvz]
{{small:図1 データと概略的な極値の位置}}
この精度を上げるため,データの元となる信号{$f(x)$}を推定することで極値の位置をできるだけ正確に計算する方法を説明します.
**テイラー展開を利用して2次関数に近似
まず推定したい関数{$f(x)$}は,概略位置{$p$}を原点とした位置{$x$}に関する多項式として定義します.多項式で表現する場合,その式は関数{$f(x)$}を{$p$}の周りにテイラー展開することで得ることができます.
{{small:({$p$}を原点に考える場合,厳密にはマクローリン展開と呼びます.)}}
{$$f(x)=f(0)+\frac{\partial f(0)}{\partial x}x+\frac{1}{2}\frac{\partial^2 f(0)}{\partial x^2}x^2+...$$}
この式は,2次以降にも続きがありますが,2次以降の高次の項は無視します.これは,関数{$f(x)$}は局所的には図2に示す様に2次関数で近似することを意味します.
[img:lczn]
{{small:図2 2次関数(赤線)による近似}}
極値では微分が0になることから,
{$$f'(x)=\frac{\partial f(0)}{\partial x}+\frac{\partial^2 f(0)}{\partial x^2}x=0$$}
ここから極値の位置は次の式で求まります.
{$$x=-(\frac{\partial^2 f(0)}{\partial x^2})^{-1}\frac{\partial f(0)}{\partial x}$$}
ここで,1次,2次偏微分の値は,位置{$p$}とその両隣の値をそれぞれ{$v_p$},{$v_a$},{$v_b$}としたとき,次の式で計算できます.
{$$\frac{\partial f(0)}{\partial x}= \frac{(v_b - v_p) + (v_p - v_a)}{2}$$}
{$$\frac{\partial^2 f(0)}{\partial x^2} = (v_b - v_p) - (v_p - v_a)$$}
なお,元の座標系における極値の位置は,{$p + x$}です.
*2次元データの場合
2次元のデータを扱うコンピュータビジョンの分野では良く利用されます.具体的な例になりますが,何らかの特徴に反応するフィルタを画像に適応し,その応答の強い座標を求めたい時などに役に立つと思います.
基本は1次元データの場合と同じです.まずは離散的なデータを元に,極値の概略位置{$p$}を計算します.この時,{$p$}は2次元の位置を表すベクトルになります.次に,データの元となる信号を推定し,その極値を求めます.
テイラー展開を利用して,極値の位置を求めると1次元の時と同じように次の式が得られます.
{$$x=-(\frac{\partial^2 f(0)}{\partial x^2})^{-1}\frac{\partial f(0)}{\partial x}$$}
ただし,{$x$}は2次元のベクトルです.その要素は{$x=\begin{bmatrix}x_0, x_1\end{bmatrix}^T$}と表すことにします.
また,{$\frac{\partial f(0)}{\partial x}$}と{$\frac{\partial^2 f(0)}{\partial x^2}$}はそれぞれベクトルと行列で,次のように表すことができます.
{$$\frac{\partial f(0)}{\partial x} = \begin{bmatrix}
\frac{\partial f(0)}{\partial x_0} \\ \frac{\partial f(0)}{\partial x_1}
\end{bmatrix}$$}
{$$\frac{\partial^2 f(0)}{\partial x^2} = \begin{bmatrix}
\frac{\partial^2 f(0)}{\partial x_0^2} && \frac{\partial^2 f(0)}{\partial x_0 \partial x_1} \\
\frac{\partial^2 f(0)}{\partial x_0 \partial x_1} && \frac{\partial^2 f(0)}{\partial x_1^2}
\end{bmatrix}$$}
ここで,各要素の1次,2次偏微分の値は,注目する位置{$p$}の周囲にあるデータを元に設定することができます.
*多次元データの場合
基本は1次元,2次元の場合と同じです.なお,{$\frac{\partial f(0)}{\partial x}$}と{$\frac{\partial^2 f(0)}{\partial x^2}$}のベクトル(or行列)サイズは,次元数と同じになります.
>> ご意見・ご質問など お気軽にご連絡ください.info