画像処理画像処理
バイラテラルフィルタ; Bilateral Filter

概要
バイラテラルフィルタは平滑フィルタの一つで、ガウシアンフィルタに加え色距離による重み付けを加えたものである。アニメ調など輪郭がはっきりした画像のノイズを消すフィルタとしては非常に性能が良い。
空間フィルタについてはこちらを参照のこと。

重み
バイラテラルフィルタにおける重み\(w_{i j}\)は以下で与えられる。\(g_{x \ y}\)は座標\(x, y\)におけるピクセル、\(\sigma_1 \)が大きいほど位置に対するぼかしが大きくなり、\(\sigma_2 \)が大きいほど色差に対するぼかしが大きくなる。

\(\quad \displaystyle w_{i j} = exp \left( -\frac{i^2 + j^2}{2 \sigma_1} \right) exp \left( -\frac{{|g_{x \ y} - g_{x+i \ y+j}|}^2}{2 \sigma_2} \right) \)

結果

pepper
pepper_bilateral

ソースコード

GraphicRGB src_graph, dst_graph;

ImageIO.Read(out src_graph, "graph/pepper.png");

var filter = new FilterAverage(3, (x, y) => Math.Exp(-(x * x + y * y) / 2.5));
Func<double, double> cr_weight = (dist) => Math.Exp(-dist / 0.25);

dst_graph = Filtering.SmoothWithColorWeightFiltering(src_graph, filter, cr_weight);
ImageIO.Write(dst_graph, "graph/pepper_bilateral.png");

関連項目
RGB空間
RGBグラフィックおよびその入出力
フィルタ
グレースケール
ガウシアンフィルタ
モーションブラーフィルタ
微分フィルタ
ソーベルフィルタ
鮮鋭化フィルタ

ライブラリライブラリ
確率統計確率統計
線形代数線形代数
幾何学幾何学
最適化最適化
微分方程式微分方程式
画像処理画像処理
補間補間
機械学習機械学習
クラスタリングクラスタリング
パズルゲーム・パズル
未分類未分類