HistogramTransformInterpolation[{x1,x2,…}]
変換された値
がほぼ均等に配布されるような関数
を求める.
HistogramTransformInterpolation[{x1,x2,…},ref]
が分布 ref に従って配布されるような関数
を求める.
HistogramTransformInterpolation[{x1,x2,…},ref,n]
等間隔の n 個の分位点を持つ関数を求める.
HistogramTransformInterpolation[image,…]
image のヒストグラムを整形する関数を求める.
HistogramTransformInterpolation
HistogramTransformInterpolation[{x1,x2,…}]
変換された値
がほぼ均等に配布されるような関数
を求める.
HistogramTransformInterpolation[{x1,x2,…},ref]
が分布 ref に従って配布されるような関数
を求める.
HistogramTransformInterpolation[{x1,x2,…},ref,n]
等間隔の n 個の分位点を持つ関数を求める.
HistogramTransformInterpolation[image,…]
image のヒストグラムを整形する関数を求める.
詳細
- HistogramTransformInterpolationは,画像ヒストグラムの形状を変更することによってヒストグラム変換を実行する関数を返す.これは通常,ヒストグラムの均等化またはマッチングに使用される.
- HistogramTransformInterpolationは,各チャンネルについて,それぞれがInterpolatingFunctionで表される関数 f または関数のリストを返す.
- HistogramTransformを使って対応する関数を使ったヒストグラム変換を行う.
- HistogramTransformInterpolation[image]は,事実上,画素値の累積分布(CDF)である.この関数は画素値に適用されるとヒストグラムがほぼ平坦な画像を作成する.
- HistogramTransformInterpolation[image,ref]は,変換された画素値が ref とほぼ同じ分布になるような関数を求める.
- 基準 ref は,他の画像,データ集合あるいは分布でよい.
- HistogramTransformInterpolationは,2Dおよび3Dの画像,また,任意階数のデータ集合のリストに使うことができる.
- HistogramTransformInterpolation[{data1,data2,…},…]はそれぞれのデータ集合に対応する関数のリストを与える.
- HistogramTransformInterpolation[image,ref]では256個の分位点が使われる.
- HistogramTransformInterpolation[data,ref,Automatic]のとき,分位点の数はHistogram[data]で使われるビンの数に等しい.
例題
すべて開く すべて閉じる例 (4)
与えられたデータ集合のサンプルを均等に配布する関数を求める:
data = RandomVariate[RayleighDistribution[1], 2000];
func = HistogramTransformInterpolation[data]Histogram /@ {data, func[data]}データ集合のヒストグラムを正規分布の確率密度関数にマッチするように整形する:
data = RandomVariate[RayleighDistribution[1], 2000];
Histogram[data]dist = NormalDistribution[0, .2];
func = HistogramTransformInterpolation[data, dist]Histogram[func[data], Automatic, "PDF"]HistogramTransformInterpolation[img = [image]]ImageApply[%, img]img = [image];HistogramTransformInterpolation[img]ImageApply[%, img]スコープ (3)
HistogramTransformInterpolation[
Table[RandomVariate[dist, 1000], {dist, {NormalDistribution[.5, .2], UniformDistribution[{0, 1}]}}]]Plot[Quiet[#[t]]& /@ %, {t, 0, 1}]funs = HistogramTransformInterpolation[img = [image]]MapThread[ImageApply, {funs, ColorSeparate@img}]//ColorCombinedata = RandomVariate[NormalDistribution[], 1000];
funs = Table[HistogramTransformInterpolation[data, UniformDistribution[{0, 1}], n], {n, {4, 8, 16, 32}}];Histogram[#[data]]& /@ funsアプリケーション (1)
局所的に適応可能なヒストグラムの均質化 (1)
局所的に適応可能なヒストグラムを完全に均質化することで,さまざまな強度レベルを持つ画像ではより魅力的な結果が与えられることがあるが,より長い時間がかかる:
img = [image];
radius = 10;center = radius + 1;
(full = ImageFilter[
HistogramTransformInterpolation[Flatten@#][#[[center, center]]]&, img, radius])//AbsoluteTiming{full, ImageApply[HistogramTransformInterpolation[img], img]}重なり合わないブロックについて計算された均質化関数間の双一次補間の方がより速く近似できる:
HistogramTransformationWeightedLocalAdaptive[img_, radius_] :=
Module[{funs, nodes, w, h, fun, fi},
funs = Map[HistogramTransformInterpolation, ImagePartition[img, {2 * radius + 1}], {2}];
{w, h} = ImageDimensions@img;
nodes = Map[
Mean@Flatten[N@ImageData[#, Automatic], 1]&,
ImagePartition[
Image[Array[{#1, #2}&, {h, w}], "Bit16"],
{2 * radius + 1}],
{2}];
nodes = ArrayPad[nodes, {{1, 1}, {1, 1}}, "Fixed"];
nodes[[All, {1, -1}, 2]] = {1, w};
nodes[[{1, -1}, All, 1]] = {1, h};
funs = ArrayPad[funs, 1, "Fixed"];
fi = Interpolation[Thread[{Round@Flatten[nodes, 1], Table[f[#], {f, Flatten@funs}]}], InterpolationOrder -> 1];
fun[v_, {r_, c_}] := Evaluate[fi[r, c]]&[v];
Quiet@ImageApplyIndexed[fun, img]
];(partial = HistogramTransformationWeightedLocalAdaptive[img, radius])//AbsoluteTiming特性と関係 (2)
HistogramTransformInterpolationを使ってHistogramTransformで使用する変換関数を求めることができる:
i = [image];
f = HistogramTransformInterpolation[i]ImageApply[f, i] == HistogramTransform[i]HistogramTransformInterpolationの結果は,閉形式の解が存在する場合はこれを近似する:
dist1 = TruncatedDistribution[{0, 1}, NormalDistribution[.5, .2]];
dist2 = WeibullDistribution[1.5, 1];
exact = Composition[InverseCDF[dist2], CDF[dist1]];fun = HistogramTransformInterpolation[RandomVariate[dist1, 10000], dist2];Plot[exact[x] - Quiet@fun[x], {x, 0, 1}]関連するガイド
-
▪
- 色の処理
テキスト
Wolfram Research (2012), HistogramTransformInterpolation, Wolfram言語関数, https://reference.wolfram.com/language/ref/HistogramTransformInterpolation.html (2014年に更新).
CMS
Wolfram Language. 2012. "HistogramTransformInterpolation." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2014. https://reference.wolfram.com/language/ref/HistogramTransformInterpolation.html.
APA
Wolfram Language. (2012). HistogramTransformInterpolation. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/HistogramTransformInterpolation.html
BibTeX
@misc{reference.wolfram_2026_histogramtransforminterpolation, author="Wolfram Research", title="{HistogramTransformInterpolation}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/HistogramTransformInterpolation.html}", note=[Accessed: 15-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_histogramtransforminterpolation, organization={Wolfram Research}, title={HistogramTransformInterpolation}, year={2014}, url={https://reference.wolfram.com/language/ref/HistogramTransformInterpolation.html}, note=[Accessed: 15-November-2026]}