Threshold
詳細
- 閾値処理は,特定の領域の値をゼロに設定し場合によっては領域外の値を減少させる数学的分割操作である.
- Thresholdは,任意階数のデータ配列や2Dおよび3Dの画像に使うことができる.
- Threshold[data]はThreshold[data,{"Hard",10-10}]に等しい.
- 閾値指定 tspec は{tfun,pars}の形式で行う.
- tfun の可能な名前と位置
- 以下は使用可能な閾値関数 tfun およびそのパラメータ(入力データ
を使用する)である: -

{"Hard",δ} ![ 0 TemplateBox[{x}, Abs]<=delta; x TemplateBox[{x}, Abs]>delta; 0 TemplateBox[{x}, Abs]<=delta; x TemplateBox[{x}, Abs]>delta;](Files/Threshold.ja/1.png)

{"Soft",δ} ![ 0 TemplateBox[{x}, Abs]<=delta; sgn(x) (TemplateBox[{x}, Abs]-delta) TemplateBox[{x}, Abs]>delta; 0 TemplateBox[{x}, Abs]<=delta; sgn(x) (TemplateBox[{x}, Abs]-delta) TemplateBox[{x}, Abs]>delta;](Files/Threshold.ja/2.png)

{"Firm",δ,r,p} ![ 0 TemplateBox[{x}, Abs]<=delta-delta p r; 1/(delta r)sgn(x) (delta+delta r-delta p r) (TemplateBox[{x}, Abs]-delta+delta p r) delta-delta p r<TemplateBox[{x}, Abs]<=delta+delta (-p) r+delta r; x TemplateBox[{x}, Abs]>delta+delta (-p) r+delta r; 0 TemplateBox[{x}, Abs]<=delta-delta p r; 1/(delta r)sgn(x) (delta+delta r-delta p r) (TemplateBox[{x}, Abs]-delta+delta p r) delta-delta p r<TemplateBox[{x}, Abs]<=delta+delta (-p) r+delta r; x TemplateBox[{x}, Abs]>delta+delta (-p) r+delta r;](Files/Threshold.ja/3.png)

{"PiecewiseGarrote",δ} ![0 TemplateBox[{x}, Abs]<=delta; x-(delta^2)/x TemplateBox[{x}, Abs]>delta 0 TemplateBox[{x}, Abs]<=delta; x-(delta^2)/x TemplateBox[{x}, Abs]>delta](Files/Threshold.ja/4.png)

{"SmoothGarrote",δ,n} 

{"Hyperbola",
}![ 0 TemplateBox[{x}, Abs]<=delta; sgn(x) sqrt(x^2-delta^2) TemplateBox[{x}, Abs]>delta; 0 TemplateBox[{x}, Abs]<=delta; sgn(x) sqrt(x^2-delta^2) TemplateBox[{x}, Abs]>delta;](Files/Threshold.ja/6.png)

{"LargestValues",k} 最大 k データ点を保持する - すべての場合で
は正の数あるいは
を計算するための閾値化関数 tfunc であると考えられる.各 tfunc[data]は正の数を返す. - "Firm"のパラメータ条件は
が正の実数で
が0から1までの実数というものである. - "SmoothGarrote"のパラメータ条件は
が正の機械整数というものである. - 閾値
は次のメソッドを使って自動的に計算される. -
{"BlackFraction",b} すべての画素を b の割合で黒くする "Cluster" クラスタ分散の最大化(大津アルゴリズム) "Entropy" ヒストグラムエントロピーの最大化(Kapurメソッド) "Mean" 平均レベルを閾値として使う "Median" 中央値の画素レベルを閾値として使う "MinimumError" Kittler–Illingworthの最小誤差閾値化法
例題
すべて開く すべて閉じる例 (3)
Threshold[{1, 10^-1, 10^-2, 10^-8, 10^-11}]Threshold[{-3, 1, -2, 0, 2, -1, 0, 1, -3, 3, 2}, 3 / 2]Threshold[{-3, 1, -2, 0, 2, -1, 0, 1, -3, 3, 2}, {"LargestValues", 3}]Threshold[[image], 0.5]スコープ (14)
データ (7)
data = InverseFourier[Fourier[{1, 1, 0, 0, 0}]]Threshold[data]Threshold[{-3, 1, -2, 0, 2, -1, 0, 1, -3, 3, 2}, 3 / 2]Threshold[Fourier[{1, 1, 0, 0, 0}], 0.5]Threshold[(| | | |
| --- | --- | --- |
| 0 | 0.2 | 0.4 |
| 0.6 | 0.8 | 1 |), 0.5]//MatrixFormThreshold[[image], 0.4]ImageHistogram[%, 64, PlotRange -> {0, 500}]Threshold[[image], 0.4]ImageHistogram[%, 64, PlotRange -> {0, 500}, Appearance -> "Separated"]Threshold[[image], .3]閾値指定 (7)
"Hard"閾値化は絶対値が
より小さいデータ値を0で置換する:
ListPlot[Threshold[Range[-1, 1, 0.03], 0.3], ...]"Soft"閾値化は閾値
より小さいデータ値を0で置換する.他は
によって減少される:
ListPlot[Threshold[Range[-1, 1, 0.03], {"Soft", 0.3}], ...]"Firm"閾値化は"Hard"閾値化と"Soft"閾値化を折衷したものである:
ListPlot[Threshold[Range[-1, 1, 0.03], {"Firm", 0.3, 0.5, 0.}], ...]"PiecewiseGarrote"閾値化は"Firm"閾値化に似ているが,使うパラメータは1つだけである:
ListPlot[Threshold[Range[-1, 1, 0.03], {"PiecewiseGarrote", 0.3}], ...]ListPlot[Threshold[Range[-1, 1, 0.03], {"SmoothGarrote", 0.3, 3}], ...]ListPlot[Threshold[Range[-1, 1, 0.03], {"Hyperbola", 0.3}], ...]"LargestValues"閾値化は絶対値が大きいものから
個のサンプルを保持する:
ListPlot[Threshold[Range[-1, 1, 0.03], {"LargestValues", 50}], Filling -> 0, DataRange -> {-1, 1}]特性と関係 (7)
"Hard"閾値化は,絶対値が特定の閾値
より小さいデータ値をすべて0に設定する:
hardThreshold[x_, δ_] := x UnitStep[Abs[x] - δ]Plot[hardThreshold[x, 0.3], {x, -1, 1}, Exclusions -> None]Manipulate[ListPlot[Threshold[Range[-1, 1, 0.03], {"Hard", δ}], ...], {{δ, 0.2}, 0, 1, Appearance -> "Labeled"}]"Hard"閾値化はChopに似ている:
data = Range[-1., 1., 0.1];
Threshold[data, {"Hard", 0.33}] == Chop[data, 0.33]Plot[Sign[x]Max[0, (Abs[x] - 0.3)], {x, -1, 1}]Manipulate[ListPlot[Threshold[Range[-1, 1, 0.03], {"Soft", δ}], ...], {{δ, 0.2}, 0, 1, Appearance -> "Labeled"}]"Firm"閾値化は"Hard"閾値化と"Soft"閾値化を折衷したものである:
firmThreshold[x_, δ_, r_, p_] := Piecewise[{{0, Abs[x] <= δ - p*r*δ},
{(1/(r*δ))*((δ + r*δ - p*r*δ)*(-δ + p*r*δ + Abs[x])*Sign[x]),
Inequality[δ - p*r*δ, Less, Abs[x], LessEqual, δ + r*δ - p*r*δ]},
{x, Abs[x] > δ + r*δ - p*r*δ}}]"Firm"閾値化は"Hard"閾値化より分散が一様に小さい:
Plot[firmThreshold[x, 1, 1, 0], {x, -3, 3}]Plot[firmThreshold[x, 0.6, 0.5, 1], {x, -1, 1}]Manipulate[ListPlot[Threshold[Range[-1, 1, 0.03], {"Firm", δ, r, p}], ...], ...]極限 β->∞では,"Firm"閾値化は"Soft"閾値化を行う:
Plot[firmThreshold[x, 1, 10], {x, -3, 3}]極限 β->η では,"Firm"閾値化は"Hard"閾値化を行う:
Plot[firmThreshold[x, 1, 1], {x, -3, 3}, Exclusions -> None]piecewiseGarrote[x_, δ_] := Piecewise[{{x - (δ^2/x), Abs[x] > δ}}]これは"Firm"閾値化に似ており,パラメータが1つ(
)である利点がある:
Plot[piecewiseGarrote[x, 1], {x, -3, 3}]Manipulate[ListPlot[Threshold[Range[-1, 1, 0.03], {"PiecewiseGarrote", δ}], ...], {{δ, 0.2}, 0, 1, Appearance -> "Labeled"}]smoothGarrote[x_, δ_, n_] := (x^2n + 1/δ^2n + x^2n)極限 n∞では,"SmoothGarrote"は"Hard"閾値化になる:
Plot[{smoothGarrote[x, 1, 3], smoothGarrote[x, 1, 10], smoothGarrote[x, 1, 60]}, {x, -3, 3}]Manipulate[ListPlot[Threshold[Range[-1, 1, 0.03], {"SmoothGarrote", δ, n}], ...], {{δ, 0.3}, 0, 1}, {{n, 3}, 1, 10, 1, Appearance -> "Labeled"}]hyperbolaThreshold[x_, δ_] := Piecewise[{{Sign[x]Sqrt[x^2 - δ^2], Abs[x] ≥ δ}}]Plot[hyperbolaThreshold[x, 1], {x, -3, 3}]Manipulate[ListPlot[Threshold[Range[-1, 1, 0.03], {"Hyperbola", δ}], ...], {{δ, 0.2}, 0, 1, Appearance -> "Labeled"}]Manipulate[ListPlot[Threshold[Range[-1, 1, 0.03], {"LargestValues", k}], ...], {{k, 30}, 0, 66, 1, Appearance -> "Labeled"}]テキスト
Wolfram Research (2010), Threshold, Wolfram言語関数, https://reference.wolfram.com/language/ref/Threshold.html (2012年に更新).
CMS
Wolfram Language. 2010. "Threshold." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2012. https://reference.wolfram.com/language/ref/Threshold.html.
APA
Wolfram Language. (2010). Threshold. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Threshold.html
BibTeX
@misc{reference.wolfram_2026_threshold, author="Wolfram Research", title="{Threshold}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/Threshold.html}", note=[Accessed: 07-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_threshold, organization={Wolfram Research}, title={Threshold}, year={2012}, url={https://reference.wolfram.com/language/ref/Threshold.html}, note=[Accessed: 07-November-2026]}