BilateralFilter[data,σ,μ]
空間的拡散 σ と画素値拡散 μ の双方向フィルタを data に適用する.
BilateralFilter
BilateralFilter[data,σ,μ]
空間的拡散 σ と画素値拡散 μ の双方向フィルタを data に適用する.
詳細とオプション
- BilateralFilterは,エッジ保存平滑化に用いられる非線形局所フィルタである.平滑化量は σ と μ の値によって決定される.
- BilateralFilterは,正規化されたガウス行列を重みとして使い,各画素をその近傍の重み付き平均で置換する.
- data は次のいずれでもよい.
-
list 任意階数の数値配列 tseries TimeSeriesやTemporalData等の時間データ image 任意のImageオブジェクトまたはImage3Dオブジェクト audio Audioオブジェクト video Videoオブジェクト - 多チャンネルの音声信号および画像に適用されると,チャンネルベクトル間のユークリッド距離が計算される.
- BilateralFilterは,データの境界ではより小さい近傍を使う.
- 次のオプションを使うことができる.
-
MaxIterations 1 反復の最大回数 WorkingPrecision MachinePrecision 使用精度 - BilateralFilterは空間半径5/2 σ のガウス行列を使う.
- BilateralFilterは常に実数型の画像を返す.
- μ の値が大きい場合,双方向フィルタリングはガウスフィルタリングと同じような結果を返す.
予備知識
- BilateralFilterは,画像を平滑化して,通常,ノイズ,粗いテクスチャ等によって起る局所変化を取り除くためのフィルタである.BilateralFilterは,他の画像解析操作(分割等)を行う前の前処理のステップとして使われることが多い.双方向フィルタリングは,フィルタを掛けられた画像をもとの画像から引き,もとの画像をもう一度加えることによって,アンシャープマスク処理を行う場合にも使われる.
- BilateralFilterは,非線形のエッジ保存の平滑化を行う.平滑化は,各画素をその近傍の重み付きの平均で置き換えることによって行う.重みは,色の値の相似性に基づいて正規化されたガウス(Gauss)分布から取られる.ここでは,ガウス分布の標準偏差 σ と平均 μ は,引数として指定される.
- BilateralFilterは,任意のグレースケールとカラーの画像,および3Dと2Dの画像に使える.多重チャンネル画像に適用された場合には,BilateralFilterはチャンネルごとに操作を行うのではなく,チャンネルベクトル間のユークリッド(Euclid)距離を使う.
- その他のエッジ保存フィルタには,MeanShiftFilterとPeronaMalikFilterがある.エッジ保存ではない類似のフィルタには,MeanFilterとGaussianFilterが含まれる.ガウス分布の平均の大きい値については,双方向フィルタリングは,ガウスフィルタリングに似た結果を返す.
例題
すべて開く すべて閉じる例 (3)
BilateralFilter[ {1, 0, 1, 4, 4, 5, 2, 1}, 3, 1]TimeSeriesにフィルタをかける:
ts = TemporalData[TimeSeries, {{{0., -0.054108337548928784, 0.1280211704499059, 0.28162021808461324,
-0.2057320325139802, -0.4871901025739722, -0.7154387408784426, -0.7399660905024047,
-0.6981022018441507, -0.7178077145466483, -0.8034462541874 ... 7894984276149, 1.8851123992920942, 1.8341759268762767, 2.0335844117979263}},
{{0., 10., 0.1}}, 1, {"Continuous", 1}, {"Continuous", 1}, 1,
{ValueDimensions -> 1, ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, False,
10.];filtered = BilateralFilter[ts, 5, 2]ListLinePlot[{ts, filtered}, PlotLegends -> {"original data", "filtered"}]BilateralFilter[[image], 7, .1]スコープ (8)
データ (8)
{ListLinePlot[data = Table[Sign[i - 1] + RandomReal[{-.2, .2}], {i, 0, 2, 0.01}]],
ListLinePlot[BilateralFilter[data, 10, .5]]}BilateralFilter[(| | | | |
| - | - | - | - |
| 0 | 3 | 2 | 2 |
| 3 | 9 | 9 | 6 |
| 5 | 8 | 7 | 0 |
| 3 | 1 | 1 | 2 |), 2, 2]//MatrixFormTimeSeriesにフィルタをかける:
ts = TemporalData[TimeSeries, {{{0., -0.27267267057145633, -0.6672983789995302, -0.5338541947930846,
-0.6117404489279314, -0.6755527076595494, -0.02125421294486496, -0.10792797291843935,
-0.6138271235477938, -0.3248568606554575, -0.08843449054 ... 2053424, -0.49980440691873723, -0.5388679788215971,
-0.4101602764645551}}, {{0, 1., 0.01}}, 1, {"Continuous", 1}, {"Continuous", 1}, 1,
{ValueDimensions -> 1, ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, False,
10.1];filtered = BilateralFilter[ts, 3, 1]ListLinePlot[{ts, filtered}, PlotLegends -> {"original data", "filtered"}]Audio信号にフィルタをかける:
a = Import["ExampleData/rule30.wav"];b = BilateralFilter[a, 25, 0.5]AudioPlot[{a, b}]BilateralFilter[[image], 2, 0.2]BilateralFilter[Video["ExampleData/fish.mp4"], 3, .5]BilateralFilter[[image], 5, 0.1]BilateralFilter[{a, b, c}, 1, .1]オプション (6)
MaxIterations (2)
i = [image];
BilateralFilter[i, 2, .05, MaxIterations -> 1]BilateralFilter[i, 2, .05, MaxIterations -> 10]TimeSeriesに繰り返しフィルタをかける:
ts = TemporalData[TimeSeries, {{{0., -0.27267267057145633, -0.6672983789995302, -0.5338541947930846,
-0.6117404489279314, -0.6755527076595494, -0.02125421294486496, -0.10792797291843935,
-0.6138271235477938, -0.3248568606554575, -0.08843449054 ... 2053424, -0.49980440691873723, -0.5388679788215971,
-0.4101602764645551}}, {{0, 1., 0.01}}, 1, {"Continuous", 1}, {"Continuous", 1}, 1,
{ValueDimensions -> 1, ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, False,
10.1];filtered = BilateralFilter[ts, 3, .3, MaxIterations -> 100]ListLinePlot[{ts, filtered}, PlotLegends -> {"original data", "filtered"}]WorkingPrecision (4)
デフォルトで,MachinePrecisionは整数配列とともに使われる:
BilateralFilter[{3, 4, 4, 3, 2}, 2, 1]BilateralFilter[{3, 4, 4, 3, 2}, 2, 1, WorkingPrecision -> ∞]BilateralFilter[{1.0000000000000000000, 2.0000000000000000000, 3.0000000000000000000, 4.0000000000000000000}, 2, 1]BilateralFilter[{1.0000000000000000000, 2.0000000000000000000, 3.0000000000000000000, 4.0000000000000000000}, 2, 1, WorkingPrecision -> MachinePrecision]BilateralFilter[{a, b, c}, 1, 1]画像にフィルタをかける場合は,WorkingPrecisionは無視される:
BilateralFilter[[image], 2, .5, WorkingPrecision -> Infinity]ImageType[%]アプリケーション (5)
BilateralFilter[[image], 2, .2]BilateralFilter[[image], 2, .05, MaxIterations -> 10]ImageSubtract[ #, BilateralFilter[#, 4, 0.9]] & [[image]]画像分割のための前処理のステップとしての双方向フィルタリング:
ClusteringComponents[BilateralFilter[[image], 4, 0.3], 5]// Colorizeimg = [image];
ImageAdd[img, ImageSubtract[img, BilateralFilter[img, 5, .2]]]特性と関係 (2)
双方向フィルタリングは,エッジを保存しつつノイズ除去を行う:
data = Table[Sign[i - 1] + RandomReal[{-.2, .2}], {i, 0, 2, 0.01}];
{ListLinePlot[data], ListLinePlot[BilateralFilter[data, 20, .5]]}MeanFilterもノイズ除去を行うが,エッジは保存しない:
MeanFilter[data, 20]//ListLinePlot値が大きいガウス距離の平均で双方向フィルタをかけると,ガウスフィルタと似た結果が返される:
{BilateralFilter[[image], 2, 2], GaussianFilter[[image], 5]}関連するガイド
-
▪
- 画像復元 ▪
- 画像の処理と解析 ▪
- 画像のフィルタリングと近傍処理 ▪
- 3D画像 ▪
- 動画計算機能の更新履歴 ▪
- 線形・非線形フィルタ ▪
- 計算写真学
テキスト
Wolfram Research (2010), BilateralFilter, Wolfram言語関数, https://reference.wolfram.com/language/ref/BilateralFilter.html (2025年に更新).
CMS
Wolfram Language. 2010. "BilateralFilter." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2025. https://reference.wolfram.com/language/ref/BilateralFilter.html.
APA
Wolfram Language. (2010). BilateralFilter. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/BilateralFilter.html
BibTeX
@misc{reference.wolfram_2026_bilateralfilter, author="Wolfram Research", title="{BilateralFilter}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/BilateralFilter.html}", note=[Accessed: 09-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_bilateralfilter, organization={Wolfram Research}, title={BilateralFilter}, year={2025}, url={https://reference.wolfram.com/language/ref/BilateralFilter.html}, note=[Accessed: 09-August-2026]}