画像処理における非局所的平均フィルタ(Non-Local Means Filter, NLMフィルタ) の原理や計算式について解説します。
非局所的平均フィルタとは
非局所的平均フィルタ (Non-Local Means Filter, NLMフィルタ) は、画像のノイズ除去を行う空間フィルタの1つです。バイラテラルフィルタと同様、輪郭(エッジ)を保持しながらノイズを除去できる特徴があります。
ポイントとしては、各画素に対して類似する画素の重み付き平均を計算してノイズを除去します。
非局所的平均フィルタの計算方法
非局所的平均フィルタの具体的な計算手順は以下のとおりです。
① 注目画素とその周囲にある画素(ミニパッチ、部分画像)を取り出します。そして、その部分画像を中心とした局所的な領域を他の注目画素の部分画像と比較し、類似度を計算します。そして、類似度が高いほど、重みを大きくします。類似度は通常、部分画像間のユークリッド距離やガウシアン関数を使って計算します。以下はユークリッド距離を用いたときの類似度の計算式です。
$$ w(i, j) = e^{-\frac{\| I(i) - I(j) \|^2}{h^2}} $$- $i$: 中心の画素の位置
- $j$: 注目する近傍画素の位置
- $I(i)$: 位置 ( i ) における画素値
- $I(j)$: 位置 ( j ) における画素値
- $h$: フィルタの類似度パラメータ(ノイズ除去の強度に影響)
- $w(i, j)$: 位置$i$ と $j$ の画素間の重み
② 計算された重みを使って、中央の画素値を他の画素値の重み付き平均として更新します。更新された重みを用いてフィルタ処理した後の位置 $i$ における画素値$\hat{I}(i)$は以下の式で計算できます。
$$ \hat{I}(i) = \frac{1}{\sum_{j \in \Omega} w(i, j)} \sum_{j \in \Omega} I(y) \cdot w(i, j) $$- 近傍領域$\Omega$
- 比較する近傍画素の範囲を指定します。範囲を大きくするほど、より多くの周辺画素を考慮して計算するため、計算量が大きくなります。コストが増えます。
- 類似度パラメータ(h)
- 類似度を計算する際のスケール。大きな値ほど平滑化が強くなる反面、輪郭も失われやすくなる。

コメント